憂鬱な午後のひととき

11月29日_

ebisu_feature.cpp

@kariya_mitsuruさんによるC++14解説. いろいろ細かいはなしでおもしろかった.

11月28日_

mcl for JavaScript

ペアリングライブラリのwrapperクラスを作ったのでそこそこ使いやすくなった. ブラウザとNode.js両対応. IDベース暗号のデモ. ドキュメントかかなきゃ.

const mcl = require('./mcl.js')

mcl.init()
  .then(() => {
    const a = new mcl.Fr()
    const b = new mcl.Fr()

    a.setStr('123')
    b.setStr('456')
    const ab = mcl.mul(a, b)

    const P = mcl.hashAndMapToG1('aaa')
    const Q = mcl.hashAndMapToG2('bbb')
    const aP = mcl.mul(P, a)
    const bQ = mcl.mul(Q, b)
    const e1 = mcl.pairing(P, Q)
    const e2 = mcl.pairing(aP, bQ)
    assert(mcl.pow(e1, ab).isEqual(e2))

こんな程度にJavaScriptで簡単に扱える.

11月27日_

『宇宙の孤独(SFセレクション3)』(赤木かん子編)

SFの短編集と思ったら最初が手塚治虫のマンガで驚いた. 「安達が原」1972年の週刊少年ジャンプに掲載されたものらしい. 全然古びてないし, ちゃんとSFだし毒消しの薬も伏線になってる. すごいなあ.

11月25日_

正しく怒る

「他人を尊重できないなら出ていけ」米空軍士官学校の校長
掲示板での黒人学生を侮蔑する発言に対するアメリカの空軍の学校校長の発言らしい.

「人として怒るべきだ」
こういうの, 日本ではなかなか見かけない.

11月23日_

ノートPCのファンがおかしい

カラカラといやな音がする.

11月21日_

iPhone 7

会社支給のやつ, 二つ前の世代だけど認証用途が主なので何も問題ない. それよりも内積の秘匿計算デモのベンチマークを見たら, 家で使ってる古いデスクトップ(i3-2120 2.6GHz)のダブルスコアの性能が出ていて衝撃. うひゃあ, そんなに速いのか(今頃).

11月17日_

『POWERS OF TEN』(フィリス・モリソン)

30年以上前の本. 存在は知っていたし一部を見たことはあるけど全体を通して読んだのは初めて. 宇宙の大規模構造の予想や素粒子の部分とか違うとかあるけどすごい.

動画はもっと古い(1977年)のね.

11月16日_

SCIS2018

ここしばらく投稿用論文をひたすら準備していた.

11月14日_

RSA鍵生成脆弱性ROCAの紹介

社内勉強会資料. SlideShareは資料を修正して再アップロードする機能が削除されているようだ. なんだって. 非常に使い勝手が悪くなるのだけど.

11月13日_

ImageMagickのGetImageMagick関数のバグ

sscanfを制限無しで使っていたのでスタックオーバーフローの報告をしたら対応してもらった.

python -c "print('# ImageMagick pixel enumeration:1,1,1,' + ('a'*4400))" > large.txt

で作ったファイルをGetImageMagickを与えると落ちていた.

11月12日_

Microsoft Community Hack Day

たまにはと参加してみた. 予想以上にバラエティに飛んでいておもしろかった. 自分も何か発表してみたいな.

11月10日_

第88回 京都大学丸の内セミナー

数学者をつくろう!―証明の数理科学―

面白かった. 少し前に読んだばかりなのでわかりやすかった. いろんなテーマで毎月やってるらしい. また参加してみようかな.

「不可能性」が示されても, どうすればよいのか, どこまでならできるのかを考えるのがエンジニアリング(というようなこと)を仰っていた. 間違って解釈していたらすいません.

11月8日_

Promise

she.init()がPromiseを返せば便利だよと教えていただいたのだけどWASMのonRuntimeInitializedとどう両立するのかわからない. 結局また@koba04さんに教えていただいた. なるほどPromiseのなかでonRuntimeInitializedを定義すればよいのか. 言われたらああそうかだけど自分では思いつかなかった.

return new Promise((resolve) => {
  mod.onRuntimeInitialized = () => {
    const f = (exportedFuncs) => {
      exportedFuncs.forEach(func => {
        capi[func.exportName] = mod.cwrap(func.name, func.returns, func.args)
      })
      define_extra_functions(mod)
      ...
      resolve()
    }
  }
})

でも大分慣れてきたのでこれからはいけそう.

wasmファイルをfetchしたときModuleをつくるところで{}を削除するとブラウザが落ちるのだが, その原因は{}がないとModuleを返し, そのときModuleがもつthenメソッドが暗黙の内に呼ばれて何か無限ループになってるのではとのこと.

fetch('she_c.wasm')
  .then(response => response.arrayBuffer())
  .then(buffer => new Uint8Array(buffer))
  .then(binary => { Module(mod) }) // {}を取り除くとクラッシュ

fetchの返り値を使ってないので何が違うのか不思議だった.

11月7日_

初めてのnpm

というわけでshe-wasmデビュー.

ドキュメントも何も無いがnpm install she-wasmでnode testだけはできる.

11月6日_

『ゲノム編集の衝撃』(NHK「ゲノム編集」取材班)

2012年に発表されたクリスパー・キャス9によるゲノム編集技術の紹介. 遺伝子組み換えとの違いなどの基本的なところの解説がわかりやすかった.

addgeneというAmazonライクに簡単にゲノム編集ツールを購入できる販売システムがあるというのに驚いた.

倫理面を考えるヒトゲノム編集国際会議, 数百人の研究者のうち日本からは数名だったらしい.

遺伝子組み換えと同等に厳格に扱ってるとますます海外との差が広がりそうだし難しい問題だ.

11月4日_

『研究するって面白い』(伊藤由佳理)

11人のいろいろな分野の理系研究者の体験談. 暗号理論の尾形わかはさんも登場してらして驚いた.

11月3日_

サイボウズ・バグハンター合宿

著名なハンターたちの活動を直接見られてよかった. 1日でどれだけできるのかなと思ったらえらくたくさん見つけていた. みなさんすごすぎる.

11月2日_

SHE for Node.js

Node.jsに初挑戦.

見よう見まねでやってなんとかブラウザとNode.jsで動くshe.jsができた. まだまだ修正すべき箇所は多いけど一山越えた.

emccの出力は-s "MODULARIZE=1"がついてると動かない. このオプションをブラウザと統一できるか調べる.

11月1日_

EXPORTED_FUNCTIONSオプション

emccでbuildするときに

"EXPORTED_FUNCTIONS=[$(EXPORTED_SHE)]"

でexportしたい関数名を列挙していたのだが関数の宣言(or 定義)のところに __attribute__((used))をつけとくと不要らしい(bn.h).

ヘッダファイルから関数を抽出してMakefileに渡すという作業が減るのでありがたい.


御意見は光成滋生<herumi@nifty.com>までお願いします