トップページへ戻る
過去の日記へ


予定


5月23日(月)

 CDC 6600のあのコンソールにあるでかい二つの丸、CRTディスプレイだったのか・・・。なんだろうとずっと思ってたんだ。あれ見るたびに、ファミリーコンピュータロボット思い出すんだよね。

 ファミリーコンピュータロボット、あまり売れてなかったと思うんだけど、おぼろげな記憶では友達の家にあった気がする。その友達のお父さんがたしか工技院かどこかに勤めてる機械系の研究者で、それで買ったのかもしれない。で、そのファミコンロボの発売は1985年、筑波万博の年である。そのセット内容には「ジャイロセット」というコマを題材にしたものがあり、これは万博の東芝館にあった「コマ芸ロボット」を参考にしたとのこと。ここまでが長い前フリである。

 開催時にちょうどつくば市に住んでた僕は、「筑波万博」に強い思い入れがある。その、筑波万博で働いていたロボットたちの特集記事を「日本ロボット学会誌 Vol. 3(1985) No. 4 」で見つけた。どれも面白かったので、つい全部Evernoteに突っ込んでしまった。おそらく誰でも見られるはず。中に「コマ芸ロボット」や「似顔絵ロボット」の技術的な解説がある。日立館の氷の彫刻ロボットでは、汎用機で作成されたデータを、フロッピーディスク(!)でSHOPCON(ショップコンピュータ)に渡し、それがRS-232C(!)でロボットに送られる形になっている。その他の記事も読んでいて面白い。コマ芸ロボットは、いま動画を見ても(プロから見たら簡単なことなのかもしれないが素人目には)すごい技術だな、と思う。

 この頃に企業にいた人は面白かったのではないかな、と思う。いまは一般人が見て「面白そう」と思うことはだいたいGoogleか、PFIみたいなITベンチャーがやっている気がする。


5月22日(日)

 「京」でやった計算を、物性研で再計算+追加計算。「京」では、4096ノードを利用していた。これは500TFLOPSくらい。 物性研では144ノードまで利用可能だが、プログラムの都合でコアに立方体形状でアサインする必要があり、 72ノードを利用。各ノードに24コアあるので、72*24 = 1728 = 12**3。72ノードだと70TFLOPSくらいで、 ちょっと京の計算を再現するのは苦しい。とりあえず小さめの計算を投げてみたところ、ベキの確認にはこれで十分だが、分布関数はちょっと苦しいな。ちゃんとやるには144ノードの利用とリスタート機能の追加が必須か・・・。そんなん組む時間取れるかなぁ・・・。


5月21日(土)

 NOP


5月20日(金)

 セミナー、会議、会議、会議の後始末。今週は本当に何もできておらず、プロジェクトメンバーに申し訳ない。

 論文再投稿のためのデータ解析。なんかParaViewによる可視化がおかしい。計算ミスったか?データ処理がおかしいか?と思って、povrayで可視化したら正しく出てるっぽい。どうもParaViewが古くて、最新のMacで表示がおかしくなるのが原因だったようだ。使っているバージョンは3.6.1だったが、5.0.1が出ているようなので、それを落としてみるが、実行してみると「ParaViewを検証中...」で止まっちゃうなぁ。


5月19日(木)

 「人外」と「論外」の話。

 何かに本気で挑戦すると、その分野において飛び抜けてできる人がいることがわかる。もともとの才能の違いに加え、かけた時間も違うんだろうけれど、たとえ自分が時間をかけたとしても到底到達できない感じの人。そういう人を、「もはや人ではない、人を超越した存在」という意味で「人外」と呼んでいる。僕は特にプログラム関連における「人とは思えない存在」を人外と呼ぶ。数学や物理の才能でも飛びぬけた人はいるけれど、そちらで異常に優れた人は、どちらかというと「天才」と呼ぶ方がふさわしい気がする。「天才」は人だが、「人外」は人ではない。

 「人外」のインパクトってわりと強烈で、「すごい人」を見ると「がんばらなきゃ」と思うけれど、「人外」は「もうダメだ」って思う。なんというか、道の真ん中に馬鹿でかいヒグマがいたら、そこを強行突破しようとは思わないわけで、「別の道で行こう=別の分野で勝負しよう」と思う。もちろん、どの分野を見ても、どんなスキルを取り上げても自分よりできる存在がいるわけで、その中で「自分はどうすべきか」なんて考えることになる。

 最近、またすごい人外の存在を知って、なんかもう本当にすごくて、ただただ圧倒されている。それに比べて自分は、と思うと・・・。

 そういう「人外」がいる一方で、「論外」ってのもいる。「論外」ってのは、本当にダメな感じの人。例えば永久機関を作っちゃう人とか、波動がどうとかそういう疑似科学系が「論外」になることが多いんだけど、そういうのの多くはお金儲けと繋がってることが多くて、そういうのはまだ健全だったりする。問題は「本人がこれは科学だと思っており」「金儲けとは関係なく純粋に研究に打ち込んでいるつもりで」「それがまったく科学とは似ても似つかぬ何か」であった場合。

 これは例えばの話なんだけれど、工学部の、しかもかなり応用よりのところで、ZFC公理系を作りなおす的な、かなり数学的な内容の博士論文を提出し、通っている感じの人がいる。その論文を元にした内容がWikipediaに(おそらく本人により)記事として作成されている。その記事や本人の解説を見るに、「あ、これはマジでヤバい」という感じ。おそらく博士論文の審査員はこれを理解できていないと思われる(理解していたら通すとは思えない)。そのヤバい論文で博士をとった人が、なんかさらに全く別の分野で研究者として活躍しているように見える。いずれ大きな問題となるのではないか、と思いつつ、なんというか(少なくとも僕には)「言ったもん勝ち」に見える分野で、明らかに科学的に間違っているとは指摘することができず、具体的にどうすることもできないもどかしさがある。

 「人外」と「論外」。最近知った、その両極端の落差に頭がクラクラしている。

 もう諦めかけてたんだけど、ちょっとだけ。php-imapを入れる。

$ sudo yum install php-imap
<?php
$MAIL_HOST = "hostname";
$MAIL_USER = "username";
$MAIL_PASS = "password";
$mbox = @imap_open("{" . $MAIL_HOST . ":995/service=pop3/ssl/notls}", $MAIL_USER, $MAIL_PASS)
  or exit("error\n");

$headers = imap_headers($mbox);
if($headers == false){
   echo "Failed\n";
}else{
  foreach ($headers as $val){
    echo $val . "\n";
  }
}

imap_close($mbox);
?>
$ php test.php
N        1) 2-May-2016 hoge.ne.jp  test (1737 chars)
N        2) 12-May-2016 hogehoge.ne.jp  test2 (15020 chars)

 できたっぽい。つまりphp-imapは正しく動いている。動いていないのはプラグインPostieだが、そこでデバッグ出力を見ると、サーバのオプションにtlsが指定されている。試しにローカルでtlsを指定すると受信できない。こいつが問題なのか。

 Postieの設定画面をいろいろ調べたが、tlsを殺す方法は見つからなかったので、やむなくハードコーディングする。 具体的にはpostieIMAP.php内の65行目からのoption指定で、 $option .= "/tls";とかあるところをコメントアウトしてしまう。これで動いた。やれやれだ。 ←普通に「トランスポートレイヤーセキュリティを使用 (TLS)」というオプションがあって、そこで設定できた。自分の目の節穴っぷりが嫌になる。

 ジョブの投げミスに続き、今度は操作を誤って結果ファイルを消してしまった。もう手が「rm -f」って勝手に打ちこんじゃうんだよ。自分の不注意さが嫌になる。最近いろいろダメだ。


5月18日(水)

 一日会議とミーティングの日。気ばかり焦る。


5月17日(火)

 NOP


5月16日(月)

 仕事が回っておらず、相当苦しい。焦ってるからかジョブの投げミスをしてしまった。ローカルでの確認を怠ったのが敗因。 もう一度ちゃんと確認して投げ直す。

覚書
手で995(POP3-SSL)をしゃべるには、openssl s_client -connect hostname:995 を使えばよろしい。 つながったらあとはtelnetでPOP3につないだ時と同様なコマンド(USER/PASS/LIST/QUIT)などが使える。

$ openssl s_client -connect hostname:995
+OK hogehoge
USER ユーザ名
+OK User name accepted, password please
PASS パスワード
+OK Mailbox open, 12 message(s)
QUIT
DONE

 最初に何ビットの鍵をつかってどんな方式で繋いだかが表示されるので、デバッグ(何の?)に利用できる。

 995だの443だのになってからtelnetでなんかすることなくなったなぁ、と思ったけど、結局コマンド名が telnetからopenssl s_client -connectに変わっただけでやることは同じなのであった。 もうtelnetにaliasしたろか。

 学会講演申し込んだ。


5月15日(日)

 なんかいろいろ仕事がつっかえてどうにもならない状態になっている。焦っても仕方ないが・・・。 数独講演準備や学会の準備もあって苦しいのだが、まずは論文再投稿の準備。

 僕のメインリポジトリはsvnなんだけど、開発ではgitを使いたくて、git-svnを使っていた。 しかし、いまgit svnとしたら

git: 'svn' is not a git-command. See 'git --help'.

と怒られてしまった。どこかでgit-svnが外れてしまったらしい。ローカルはmacportsのgitが入っているので、 それにsvnをつける。

$ port variants git 
git has the variants:
   bash_completion: Completion support for bash
[+]credential_osxkeychain: Install git credential-osxkeychain utility from
                           contrib
[+]doc: Install HTML and plaintext documentation
   gitweb: Install gitweb.cgi
[+]pcre
[+]perl5_22: Use MacPorts perl5.22
   python26: Use Python 2.6
     * conflicts with python27
[+]python27: Use Python 2.7
     * conflicts with python26
   svn: Bi-directional subversion repository support
   universal: Build for multiple architectures

$ sudo port install git +svn 
$ git svn rebase 
Current branch master is up to date.

 ちゃんと入ったっぽい。最初使えなくて焦った。

 論文再投稿のための再計算の準備の一環として、Gordon Bell挑戦用に切ったブランチをmasterにマージする作業をしてた。 SC16のGordon Bellに挑戦するために、かなり無茶な最適化というか高速化をしていたのだが、もうこんなコードは使わない。 なので記録としてはリポジトリに入れておくけど、masterにはそのコードは取り込まなかった。ただ気泡生成などの物理の計算のコードその他だけ取り込む。

 で、その過程で大量にあった「#ifdef FX10 〜 #endif」ブロックを削除してた。「FX10」となっているのは、もともと物性研システムC(FX10)で組んでチェックし、「京」にもっていったから。数年前は「京」でないと難しかった計算が、いまならなんとか物性研の新システムでできちゃうので、もうこのコードは不要になった。そういうコードを整理していると、なんとも言えない気持ちになる。

 もともと僕が名古屋やめてポスドクになった目的の一つには、Gordon Bellへの挑戦もあった。いろんなことがあったし、悔いが残る結果ではあったけれど、挑戦することができてよかったと思う。また将来挑戦する機会はあるだろうか。もし機会があったとして、挑戦する気力は残っているだろうか・・・。

 そーいや、「京向けの無茶な最適化」にはここに書いてあったような問題を回避するためのコードもあった。他に方法もあったんだろうけど、結局運動量と座標の配列の実体をグローバルに逃し、クラスにはそこへのポインタを入れておくことで他のコードが動くようにして、かつ力の計算ではグローバル変数を参照していた。まぁー、これを「チューニング」とか「最適化」と呼ぶのは無理があると思うよね・・・。

 「ソフトウェアパイプライニングが阻害されるのはalignの問題ですか?」と聞かれた。doubleが一個宣言されているため、アラインメントがおかしくなるせいか?ということだが、多分違う。例えば、doubleが一個宣言されたままでも、後ろの配列が一次元なら問題なくソフトウェアパイプライニングできる。

//----------------------------------------------------------------------
const int N = 20000;
const int D = 1;
const int X = 0;
//---------------------------------------------------------------------
class Variables{
  public:
    double C0;
    double q[N][D],p[N][D];
};
//----------------------------------------------------------------------
void
calcforce(Variables *vars){
  double (*q)[D] = vars->q;
  double (*p)[D] = vars->p;
  for(int i=0;i<N-1;i++){
    const double qx = q[i][X];
    double px = p[i][X];
    for(int j=i+1;j<N;j++){
      double dx = q[j][X] - qx;
      double dy=0;
      double dz=0;
      double df = (dx*dx + dy*dy + dz*dz);
      px += df*dx;
      p[j][X] -= df*dx;
    }
    p[i][X] = px;
  }
}
//----------------------------------------------------------------------
int
main(void){
  Variables *vars = new Variables();
  calcforce(vars);
  delete vars;
}
//----------------------------------------------------------------------

 アラインメント不整合が原因なら、これもソフトウェアパイプライニングできないはずなので。 仮にこれでアラインメント不整合でソフトウェアパイプライニングできないのなら、パディングくらいして欲しい気もするし。


5月14日(土)

 NOP


5月13日(金)

 僕が個人的に「水戸黄門症候群(シンドローム)」と呼んでいる現象というか、心理状態がある。 これは「何かにおいて極めて優っている人に、他の人がそうと知らずにその分野で大きな態度に出て、後で恥をかく」というテンプレートとなる。 水戸黄門では、その「何か」とは「身分」である。他にもその「何か」には肩書が使われることが多い。

 このパターンが、自分にあてはまることを期待している人、わりと多い気がする。要するに自分がなんらかの専門家であることを知らず、その専門についてぺらぺら上から話してくる人を期待する、みたいな。そういうシチュエーションになった時に、その「話してきた人」を笑い者や晒し者にするの、大人気ないなぁ、と思う。

 まぁ、「私は学長です」的な奴を見るに、みんなそういうの好きなんだと思うし、それが「水戸黄門」や「暴れん坊将軍」の人気の秘密なんだと思う。

 まぁ「学長」とか「将軍」「副将軍」クラスならともかく、「それで飯食ってる」くらいで「水戸黄門症候群」を発症するのはちょっとイタいよね・・・。


5月12日(木)

 ずっと書き物をしているんだけど、もうMacのWordが極めて不安定で、かつLatexを使うのもしんどいのでMarkdownで書きたい、ということでAtomを入れた。Kobitoとも迷ったが、技術文書ではないのでAtomで。書き物が嫌になっての現実逃避とも言う。

 うーん、Markdownで書くのはだいぶ快適になったんだけど、最終生成物はMS Wordなので、なんらかの方法でmd→docxを実現しないとならんのだよな・・・。

 Rubyの配列がデフォルトで浅いコピーになるのをよく忘れてバグる。深いコピーを簡単に書く文法をサポートして欲しかったなぁ。 「a <= b」が「a = Marshal.load(Marshal.dump(b))」の糖衣構文になってる、みたいな。


5月11日(水)

打ち合わせ3つ(うち1つは予定がバッティングして不参加)+研究室セミナー+ゼミ。以上、よろしくお願い致します。

 研究室セミナーは自分が発表担当。頑なに「黒板+チョークによる板書」による発表にこだわる私。 数値計算屋だし、様々な作業はどんどん自動化すべきだし、便利なものは使うべきだけど、物理は黒板でやるべきものと思う。


5月10日(火)

 調べ物をしているとWikipediaにぶつかり、そのままリンクを辿って読みふけってしまった、という経験は誰しもあると思う(特に書類書き中とかは)。その際、たまに「人の狂気」を感じることがある。「あれ?文体がおかしいな」と思うと狂気のサイン。何に狂気を感じたか書くと、まかり間違って書いた人に捕捉されてしまうかもしれないのであまり具体的には書かない(怖くて書けない)。

 思うに、狂気の本質とは「固執」と「繰り返し」にあるように思う。注意されて逆ギレし、ノートで長々と議論になった挙句にブロック→追放となる人は、まだ人間味があるというか、狂気度が低い。注意されても全く反応せず、ブロックされるギリギリのラインで、ただ淡々とディスプレイに向かって編集作業を続ける姿勢を想像するに、本当に怖い。

 僕がスタッフだった第45回物性若手夏の学校のウェブサイト跡地を見つけた。写真に当時の僕もいる。若い・・・。当時のスタッフを見るといろいろ感慨深い。


5月9日(月)

 よーしおじさん、もう少しF社コンパイラの話をしちゃうぞ。随分前に報告したんだけど、(FX100では直ってるかもしれないけど、少なくともFX10では) 未だになおってない奴。 こんなコードを考える。

//----------------------------------------------------------------------
const int N = 20000;
const int D = 3;
const int X = 0;
const int Y = 1;
const int Z = 2;
//---------------------------------------------------------------------
class Variables{
  public:
    double C0;
    double q[N][D],p[N][D];
};
//----------------------------------------------------------------------
void
calcforce(Variables *vars){
  double (*q)[D] = vars->q;
  double (*p)[D] = vars->p;
  for(int i=0;i<N-1;i++){
    const double qx = q[i][X];
    const double qy = q[i][Y];
    const double qz = q[i][Z];
    double px = p[i][X];
    double py = p[i][Y];
    double pz = p[i][Z];
    for(int j=i+1;j<N;j++){
      double dx = q[j][X] - qx;
      double dy = q[j][Y] - qy;
      double dz = q[j][Z] - qz;
      double df = (dx*dx + dy*dy + dz*dz);
      px += df*dx;
      py += df*dy;
      pz += df*dz;
      p[j][X] -= df*dx;
      p[j][Y] -= df*dy;
      p[j][Z] -= df*dz;
    }
    p[i][X] = px;
    p[i][Y] = py;
    p[i][Z] = pz;
  }
}
//----------------------------------------------------------------------
int
main(void){
  Variables *vars = new Variables();
  calcforce(vars);
  delete vars;
}
//----------------------------------------------------------------------

 なんか距離の自乗に比例するような力がお互いにかかる三次元の粒子の力の計算をO(N^2)でやるループ。 Variablesクラスに、使われていないメンバ変数double C0が定義されているのに注目して欲しい。 SoA/AoSがどうとか力の形が変だとか言わないのが大人です。i粒子の情報を一時変数に逃がしているのは、そうしないと 最適化できないから。 さて、これを「FCCpx -Kfast -Koptmsg=2 -Ksimd=2 -Krestp=all」というオプションでコンパイルしてみると、 最内ループをソフトウェアパイプライニングできない。

 で、このVariablesクラス定義のdouble C0の宣言の位置を入れ替えてみる。

(snip)
class Variables{
  public:
    double q[N][D],p[N][D];
    double C0;
};
(snip)

 本当に入れ替えただけ。

$ diff force1.cc force2.cc
10d9
<     double C0;
11a11
>     double C0;

 これはソフトウェアパイプライニングができる。実行速度も倍近く違う。

$ time ./force1.out  
./force1.out  2.15s user 0.02s system 99% cpu 2.185 total

$ time ./force2.out
./force2.out  1.10s user 0.01s system 98% cpu 1.125 total

 誤解しないで欲しいんだけど、僕は決して「F社コンパイラは馬鹿だ」と主張したいわけではない。 ここで主張したいことは二つ。まず、「このループはソフトウェアパイプライニングできるはずだ」という確信がなければ、こういうことに気づけない。これは実際にあった事例を単純化したものなので、決して特殊な事例を持ってきたわけではない。「この石ではソフトウェアパイプライニングされなければ性能は出せない」「そしてこのループはソフトウェアパイプライニングできるはずなのにできていない」という知識が、「現時点でも」必要とされている。それだけで性能が「倍」違ってしまう。チューニングとかやってると、必ず「そのうちコンパイラがやってくれるからそういうのは無意味」と言う人が出てくるんだけど、「そのうちコンパイラがやってくれるから」という理由で、一行入れ替えるだけで2倍早くなるコードを、そのまま国策スパコンに流して良いか、というとやっぱりダメだと思う。

 もう一つは主張というか希望なんだけど、こういった事例が「京」稼働後何年もたってからじゃなくて、稼働当初から活発にユーザ間で情報交換される環境が構築できたらよかったな、と。どうすればそういう雰囲気にできるのか/できたのかはわからないけれど。


5月8日(日)

 NOP


5月7日(土)

 NOP

 今年の自動車税払った。ウェブ支払いなので領収書は届かないはず。


5月6日(金)

 ここに書いたこんなコードが、富士通コンパイラでSIMD化されないと書いた。

const int N = 10000;
double a[N], b[N];
void func(void) {
  for(int i=0; i<N; i++){
    if (b[i] > 0.0) {
      a[i] += b[i];
    }
  }
}

 これは誤りで、オプション-Ksimd=2をつければちゃんとSIMD化される。嘘書いてすみません>F社の中の皆様

 でもね、言いたいことがあるんだ。普通に時間計測するとN=10000じゃ小さすぎるんで、100000000くらいにしておく。 あと初期化処理が面倒なので、空リストで初期化することに。main関数も書くとこんなコードに。このmain関数だと初期化処理いらないけど気にしないこと。

#include <stdio.h>
const int N = 100000000;

double a[N] = {};
double b[N] = {};

void
func(void){
  for(int i=0;i<N;i++){
    if(b[i] > 0.0) {
      a[i] += b[i];
    }
  }
}

int
main(void){
  for(int i=0;i<N;i++){
    a[i] = i;
    b[i] = (i%2)*2.0-1.0;
  }
  func();
  printf("%f\n",a[N/2]);
}

 これをF社コンパイラでコンパイルするとえっらく時間がかかるし、実行もなぜかsystemがえらくかかっている。で、ふとa.outのサイズを見ると、1601064392バイト、つまり1.5GBある。ちなみに配列の初期化処理をやめて、

#include <stdio.h>
const int N = 100000000;

double a[N];
double b[N];

 とすると、1064392バイト(1.1MB)になって、コンパイルもあっという間に終わる。で、初期化ありが1601064392バイト、初期化無しが1064392バイトということで、要するに配列がそのままバイナリに突っ込まれている。オブジェクトファイルをobjdumppx -hしてみる。

$ objdumppx -h test2.o

test2.o:     file format elf64-sparc

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .text         00000ac0  0000000000000000  0000000000000000  00000040  2**6
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 .data         5f5e1020  0000000000000000  0000000000000000  00000b00  2**4
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  0000000000000000  0000000000000000  5f5e1b20  2**0
                  ALLOC
  3 .comment      0000043a  0000000000000000  0000000000000000  5f5e1b20  2**0
                  CONTENTS, READONLY
  4 .rodata       00000720  0000000000000000  0000000000000000  5f5e1f60  2**4
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
  5 .eh_frame     00000038  0000000000000000  0000000000000000  5f5e2680  2**3
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA

 .dataセクションに突っ込まれているようですね。

 これ、配列に初期化子が与えられた場合には全部オブジェクトの.dataセクションに突っ込むという方針らしくて、それはほとんどの場合において問題にはならないであろう。また、こうして問題に気がついた場合でも、初期化子のせいであろうことは想像がつくので、ユーザ側で対応するであろう。というわけで報告するか迷ってるんだけど、うーん。

 馬鹿でかい配列をこの形で宣言すると、ディスククォータにひっかかってコンパイル失敗したりするので、一応報告しておくか・・・。


5月5日(木)

 NOP


5月4日(水)

 NOP


5月3日(火)

 泡論文の査読レポート返ってきた。査読者二人ともその道のプロに渡ったらしく、ちゃんと読んでくれていてありがたい。一人はわりと好意的、一人は「全部書き直せ!」かなり手厳しい。が、どちらもまったくおっしゃる通りという感じなので、粛々と直して再投稿だな。ただ、再計算を提案されているので、それもやると準備に時間がかかりそう。

 しかし、今回のEditorからのメールにはこんなことが書いてある。前回はこんなのなかった。

For each comment from each reviewer, please respond in three ways: 1) reproduce the comment; 2) respond to the comment (even if you are not making any changes); and 3) indicate what changes (if any) you have made and where they appear (by page in the revised manuscript). In addition, please show all revisions made to the manuscript in color.

 いやまぁ、レフェリーへの返事はちゃんとそうするつもりだけど、修正点を全て色付けせよって、かえって読みづらくないかなぁ・・・。

 どうでもいいけど「査読者ふたりともその道のプロに渡ったらしく」というのは、決して自明なことではない。以前「一応読んだけど、専門家じゃないのであんまり自信ないなぁ」という査読レポートが届いたことがある。当時は「そんなレポート採用するなよ」と思ったけど、今考えてみると、せっかく読んでコメントをくれたわけだし、内容もちゃんとしてたし、Editorとしてもボツにするわけにはいかなかったのだろう。まぁでも「専門家じゃないから自信ない」のなら、査読レポートじゃなくてEditorだけに行くメッセージにその旨を書くのが良いと思うな。


5月2日(月)

 論文書きのためのサーベイ。GW中に初項をあげて共著者に送りたかったが、厳しめ。


5月1日(日)
sudo port upgrade outdated  467.65s user 126.98s system 102% cpu 9:41.54 total

 しばらく積んでたWordpressの設定。以下作業記録。


トップページへ戻る