読者です 読者をやめる 読者になる 読者になる

学科に友達がいないと思ったら学科の知らん人からTwitterで馬鹿にされてた

殺すぞ、という気持ちを抑えてやっていきたい。 何が「キーボードカタカタくん」「カタカタオカマ」だ、死ね、という気持ちも抑えてやっていきたいですね。

数字列
  • 788190798944673792
  • 788326317779324929
  • 786237782385569793
  • 783540839423348737

5bCP5bO25b655Lmf くんと 5rKz55Sw56Wl5aSq くんがそういうの言ってるのは把握してるんですが、他にもいるのかな~という感じでイラつきますね

理科大の適切な相談先などわかる方がいれば教えてください

次の講義の教室を忘れがちなので、次の講義の情報をJSONで返すAPIを作った

雑に時間割のJSONを作っておいてExpress使って以下のようなルートを立てていい感じにNginxでルーティングしてます。一応スクリプトそのものはpm2でホニャ~ってしてます。 時間割のJSON作るのはこれのlocalStorageにJSONがあるので適切に情報付加してそのまま拾ってきてVPSにぶん投げました。

http://mysticdoll.com/schedule にアクセスするといい感じにJSONが帰ってきます。これで教室を忘れてもすぐ行ける。

const jsonParser = require("body-parser").json();
const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
const schedule = require("./schedule.json");
const getNext = (index) => {
  let day = index != 6 ? days[index+1] : days[0];
  let ret = schedule.filter(s => s.day === day).sort((a,b) => a.start > b.start ? 1 : -1)[0];
  console.log(ret);
  if(ret) return ret;
  return getNext(index != 6 ? index + 1 : 0);

}
const getSchedule = (dayIndex, time) => {
  let filtered = schedule.filter(s=>s.start > time || s.end > time);
  let tmp = filtered.find(s=>s.day === days[dayIndex]);
  if(tmp) return tmp;
  return getNext(dayIndex);

};

module.exports = function(app, express) {
  app.get("/api/next", jsonParser, function(req, res) {
    let date = new Date();
    let d,l;
    var [dayIndex, time] = [date.getDay(), `${(d = date.getHours()), (d <= 9 ? `0${d}`: d)}${(l = date.getMinutes()), (l <= 9 ? `0${l}` : l)}`];
    res.send(getSchedule(dayIndex, time));
  });
};

そろそろまともな日本語でブログを書く練習をした方がいいのかもしれない

「破滅」「壊滅」という日本語

破滅

( 名 ) スル ほろびること。だめになること。その存立が成り立たなくなること。滅亡。 「身の-」

  • 開発環境が破滅
  • 人間関係が破滅
    • legal(合法)っぽい

似たような言葉

壊滅

( 名 ) スル 組織・機構などがすっかりこわれてなくなること。 「大地震で村が-した」 「 -的な打撃を受ける」

  • 開発環境が壊滅
  • 人間関係が壊滅
    • illegal(非合法)っぽい

こちらからは以上です

AWS Educateで年間75ドルのLABを何にも使わずに終了して破滅しかけたが、5分程度で何とかなった話

学科に友達がいない上に過去の自分の禍根残る発言によりサークルを追い出されたり、なんもしていないのに学科の知らん奴からTwitterで陰口を言われるオタクことみすどです。

AWS Educate

なんかGitHub Educationから招待コード付きのユニークな登録リンクを使うと、年間$75 + αの機能が使えるAWS Educateにクレジットカードなどの登録なしで利用できたりします。

登録できると、https://awseducate.qwiklabs.com/にて、AWS Educate Starter Account 75という、年間$75使えるIAMロールをもらうLABという単位のサービスが受けられます。

自分でやってみるとわかると思います。

START LABを押すことでIAMロールが始まるんですが、一度END LABを押すとそれ以降はいかに時間やお金が残っててももう一度スタートすることはできなくなるんですね。

まあこれをぼくは間違えて押しちゃってキャンセルボタンも押し間違いました…

問い合わせる

こういうクソみたいな英文を書いて、何とかしてもらいましょう

MItsuru Takigahira 
Oct 25, 21:54 EDT 
Now I inadvertently clicked "STOP LAB" button and LAB stopped and quota has been exceeded.
I have never used AWS functions, and if this goes on, I cannot use any AWS Educate services...
Please let me restart this Lab!

返信が来る

qwikLABS Agent2 (qwikLABS™ Support) 
Oct 25, 22:02 EDT 
Hi MItsuru,
We removed your lab from quota limit, you should launch lab now. Please make sure to not end lab accidentally before finishing. Any running resources will be lost so we recommend backing up any resources that you do not want to lose. Hope this will help.

雑に訳すと、「権限の制限をなくしたで!ミスってリソースが動いたままLABを止めたり消したりしても、こっちでバックアップとってるから作業消失したりしないから安心してや!(似非関西弁)」 みたいな感じですね。

というかめっちゃすごいですねこれ、優先度1(最高)でリクエスト投げたら5分後には復旧してるんですよ、利用人数とか規模にもよるけどめちゃめちゃ反応早くてびっくりしました。

こういうことよくあるんだろうなとは思うけどさすが天下のアマゾンだな…

熱拡散方程式のシミュレーションがうまくできない(十億年ぶりにC++を書いている) たすけて(追記した)

C++を5年ぶりに書いているんだけど、とあるメッシュの温度が下がり続ける… たすけて・・・ -> なんかメッシュサイズを大きめにしたらマイナスにならなくなった…なんで…計算誤差…?

  • 鉄板 60㎝ x 40㎝
  • 火源は中心から半径10㎝の円で773K ディリクレ条件
  • 初期条件は火源は773Kそれ以外は300K
  • 境界は断熱条件のノイマン条件

的な感じでこちらを参考にして、

f:id:MysticDoll:20161024224443p:plain 的な感じで実装しているんですが、冒頭に書いた通り、無限にメッシュの温度が下がり続ける…

以下クソコード

#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>

// Definition Domain of mesh(m)
const double domainX = 0.40;
const double domainY = 0.60;

// Defintion Delta X/Y (m)
const double deltaX = 0.002;
const double deltaY = 0.002;

// Definition Delta T (sec)
constexpr double deltaT = 1.0;

// Definition Heat Source Cercle Range (m)
const double r = 0.10;

// Definition Mesh Size
constexpr int sizeX() {
  return (int)(domainX / deltaX);
}
constexpr int sizeY() {
  return (int)(domainY / deltaY);
}
constexpr int centerX() {
  return sizeX() / 2;
}
constexpr int centerY() {
  return sizeY() / 2;
}

// Definition Square function
constexpr double square(double x) {
  return x * x;
}

// Definition Dirichlet Condition area(773K or 0)
constexpr double dirichlet(int x, int y) {
  return square((centerX() - x) * deltaX) + square((centerY() - y) * deltaY) <= r*r ? 773.0 : 0;
};

// Definition Thermal Diffusivity as kappa m^2/sec
const double kappa = 12.4e-6;
constexpr double lambdaX(double x) {
  return x * kappa * deltaT / deltaX / deltaX;
}
constexpr double lambdaY(double y) {
  return y * kappa * deltaT / deltaY / deltaY;
}

class Mesh {
  private:
    std::vector<std::vector<double>> meshTable;
  
  public:
    Mesh();
    Mesh(Mesh* m);
    int iter;
    static double eval(int x, int y);
    static double eval(int x, int y, Mesh* m);
    double get(int x, int y);
    ~Mesh();
};

double Mesh::eval(int x, int y) {
  double dirich = dirichlet(x, y);
  return dirich ? dirich : 300.0;
}

double Mesh::eval(int x, int y, Mesh* m){
  double dirich = dirichlet(x, y);
  if(dirich) {
    return dirich;
  } else if(x == 0) {
    return m->get(x+1,y);
  } else if(x == sizeX() - 1) {
    return m->get(x-1,y);
  } else if(y == 0) {
    return m->get(x,y+1);
  } else if(y == sizeY() - 1) {
    return m->get(x,y-1);
  } else {
    double ret = m->get(x,y) +
          lambdaX(m->get(x-1,y) + m->get(x+1,y) - 2*m->get(x,y))+
          lambdaY(m->get(x,y-1) + m->get(x,y+1) - 2*m->get(x,y));
    return ret;
  }
}

Mesh::Mesh() {
  iter = 0;
  meshTable = std::vector<std::vector<double>>(sizeY(), std::vector<double>(sizeX(), 300.0));

  std::stringstream filename;
  filename << "./csv/" << iter << ".mesh.csv";

  std::ofstream ofs(filename.str());

  for (int i = 0; i < sizeY(); i++) {
    for (int j = 0; j < sizeX(); j++) {
      meshTable[i][j] = Mesh::eval(j,i);
      ofs << std::to_string(meshTable[i][j]);
      if(j != sizeX() - 1) ofs << ",";
    }
    ofs << std::endl;
  }
}

Mesh::Mesh(Mesh* m) {
  iter = 1 + m->iter;

  std::stringstream filename;
  filename << "./csv/" << iter << ".mesh.csv";

  std::ofstream ofs(filename.str());

  meshTable = std::vector<std::vector<double>>(sizeY(), std::vector<double>(sizeX(), 300.0));
  for (int i = 0; i < sizeY(); i++) {
    for (int j = 0; j < sizeX(); j++) {
      meshTable[i][j] = Mesh::eval(j,i, m);
      ofs << std::to_string(meshTable[i][j]);
      if(j != sizeX() - 1) ofs << ",";
    }
    ofs << std::endl;
  }
}

Mesh::~Mesh() {
}

double Mesh::get(int x, int y) {
  return meshTable[y][x];
}

int main(int argc, char const* argv[])
{
  Mesh* m = new Mesh();
  for (int i = 0; i < (500 / deltaT) - 1; i++) {
    Mesh* _m = new Mesh(m);
    delete m;
    m = _m;
  }
  return 0;
}

17日に誕生日を迎え(21)になった

ロリになりました

プレゼントなど待ってます

20歳になってから昨日までの1年であったこととか

  • ECMA262とか読むようになった
  • 進級
  • はてなインターンの面接に行った(落ちた)
  • はてなのオフィスに遊びに行った
    • Vimと芝生の話くらいしか記憶にない(最悪)
  • いつの間にか女装をしていた
    • フォロワーが優秀すぎるっぽい
  • 昼から飲酒
  • Symfony2 とかをバイトでやるようになった

深いですね。

21歳のうちにやりたいことは、なんかいい感じの企業にエンジニアとして雇ってもらうことです。みなさんお願いします。 セキュリティキャンプとかも来年がラストチャンスなので受かれたらいいなとか

以上です。

ゴルスタ的インターネット歴の浅い、思慮深くない方へのコミュニティ空間の必要性

みなさんはゴルスタを覚えていますか?

ゴルスタ、ゴール☆スタート、だったでしょうか。株式会社SPRIXが運営していた、中学生/高校生向けの教育アプリです。
こちらのサービスでは、利用規約に違反などをしたユーザが運営担当者に晒されるなどの問題により炎上騒ぎとなりサービス停止に至ったことは記憶に新しいかと思います。

インターネット黒歴史のスタック

皆さんはこれまでのインターネットでどのような失敗、恥ずかしい経験、間違った行為を経験してきましたか?

ぼくは小学3年生くらいからインターネットで検索したり面白フラッシュ倉庫を見たり、えっちなサイトを探したり、好きなゲームのRTAやTASの情報サイトを閲覧、また個人サイト/ブログへの書き込みをしていました。
小学生時代のブログはさすがに見つからないと思いますが、彼女に中学生時代のブログとかいうゴミを発見されてそれを伝えられた時は正直非常に苦しい気持ちになりました。割と死にたいです。

皆さん種々の黒歴史を抱えていると思います。ニコ生で生放送をするも30分の独り言タイムになったり、凸待ち生放送にスカイプ凸をしてお話ししてたら「独り言うるせえ」と独り言の多さを指摘されキレられたり、スカイプでお話ししていたインターネットの女の子に声が低いと馬鹿にされて女声を練習し始めたり、そういった異常者はたくさんいます。*1それは何もインターネットに限った話ではありませんが。

インターネットの普遍化、ライト層の流入

ここ数年、とりわけ2011年代ごろからでしょうか、スマートフォンの普及やTwitterなどのミニブログサービスの普及に伴い、インターネットはTwitterが初めて、という方も少なくないと思います。 そういった方を見ていると、「パクリツイート」や所謂「クソリプ」、また「パクリツイートや業者スパムアカウントのツイートのRT」などの常識に欠ける行為や、無防備に個人情報を公開する行為など、多くの危うい行動を見かけることもしばしばありますよね。

特にTwitter上では「アルファアカウント」というような人気ユーザに類するような「強烈な個性を持った面白ユーザ」という存在が多く、Twitterをする若者アカウントを見ていると安直なキチガイキャラクターなどの浅いアイテンティディの確立を目指す行動も良く見られます。

そういった個性の強いユーザ、仲間内から面白いと称されるようなユーザを目指すうちに行き過ぎた行動をしてしまったりするなど、炎上をしてしまうアカウントもまれにいるように感じます。

中学生/高校生のインモラルなTwitterユーザ

これはぼく個人の経験で、もう相手のツイートは残っていないしスクショするのも無断転載になるので話だけにとどめますが。

「ユニットを組みました。メンバーは ○○(@...) ○○(@...) みすど(@MysticDoll)」という内容の間違いのメンションが飛んできたんですね。ぼくも「みすど」なんてありきたりな名乗りをしているもんですから、間違われるのも仕方ない気はするんですが。 それに相手側が気づいてツイートを消して、訂正した、そこまではいいんですが、相手方はメンションなどでこちらに対する直接のフォローは一切せず、「間違えたwwww」などとたくさんの草を生やし、こちらに迷惑が掛かったなどとは一切思っていないような感じで、そもそも我々とは文化圏が違うんだなあなどと思い癇癪に任せたツイートをしそうだったので友人@RlyehText761とSlackでクソみたいな会話しながら代わりにクソみたいな文句ツイートをしてもらったりなど最悪なことをしていました。

友人とも話していたんですが、彼ら「全く悪いことをしたと思ってない」んですね、それがたとえクソどうでもいいオタク相手のミスだとしても、よく知らない相手に失礼な行為をしたなあと思うのが常識ある人間だと思うんですね。(ましてや間違えただけでなくヘラヘラ笑ってるっていうのはあまりよくない)

こういったインモラルな感じも文化圏が違う異国人みたいなものといえばそれまでですが、こういった思慮ない行動っていうのもある程度過去に黒歴史をストックしておけば回避できそうなものだと思うんです。少なくとも黒歴史ストック太郎の皆さんはそう思うでしょう?

余談ですが、たぶんTwitterからインターネット始めた人は「@みすど」と入力してから出てきた候補を選んでメンションを送るみたいですね。ちなみにみすどをユーザ検索すると自分が一番上に出たりでなかったりします。

ゴルスタ的空間

ぼくは所謂00年代ごろのインターネット個人サイト黎明期みたいな環境が好きだったクソ老害もどきなんですが、非公開で行われる招待制コミュニティだったころのmixiみたいな空間があるといいと思っています。

ゴルスタは運営上の悪質なエスカレートが原因で消滅しましたが、そういった点を除けばユーザの中学生や高校生の安全面に留意したコミュニティ運営ができることや、閉鎖空間でありユーザが低年齢層に固定化されることから、インターネットリテラシーの啓蒙の場として十分に機能すると考えていました。

実際運営担当者のエスカレートも各メディア上の炎上騒ぎにおける「悪いことをしたやつには何をしてもいい」ともとれる風潮をそのままサービス運営に持ち込んでしまうような運営担当者の思慮の浅さが問題だと思いますし、そういった影響を受けやすくなるのもインターネット歴の浅いころにはよくあることで、それもかなり問題だと思います。

最後に

インターネットにしろ現実にしろ挨拶、謝罪、感謝ができないやつはゴミなので、正々堂々と徒党を組まず正面からぶん殴ってやりたいのが人情ですが、そういった人間を生まないように努めるのもまた人間ひいては人間の作るコミュニティの役割だと思います。

ぼくもインターネットにサークル運営への愚痴とかサークル上級生への文句とかを癇癪に任せてツイートしてサークルを追い出されるような人間なので人のことは全く言えないのですが*2、社会的信用のあるお金のある企業がそういった教育的コミュニティというかインターネットコミュニティ入門用コミュニティみたいなものを作ってくれると平和なインターネットができそうでいいなあと妄想しています。

余談

完全に脇道ですが、ぼくが「みすど」などと名乗っているのは、「MysticDoll」を略すと「みすど」になるし、「MysticDoll」って響きかっこよくね?みたいな中学生時代の自分のセンスのまま名乗り続けているからです

*1:俺の痛い中学生時代の話はやめろ

*2:過去記事参照