@kariya_mitsuruさんによるC++14解説. いろいろ細かいはなしでおもしろかった.
@kariya_mitsuruさんによるC++14解説. いろいろ細かいはなしでおもしろかった.
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で簡単に扱える.
『宇宙の孤独(SFセレクション3)』(赤木かん子編)
SFの短編集と思ったら最初が手塚治虫のマンガで驚いた. 「安達が原」1972年の週刊少年ジャンプに掲載されたものらしい. 全然古びてないし, ちゃんとSFだし毒消しの薬も伏線になってる. すごいなあ.
正しく怒る
「他人を尊重できないなら出ていけ」米空軍士官学校の校長
掲示板での黒人学生を侮蔑する発言に対するアメリカの空軍の学校校長の発言らしい.
「人として怒るべきだ」
こういうの, 日本ではなかなか見かけない.
ノートPCのファンがおかしい
カラカラといやな音がする.
iPhone 7
会社支給のやつ, 二つ前の世代だけど認証用途が主なので何も問題ない. それよりも内積の秘匿計算デモのベンチマークを見たら, 家で使ってる古いデスクトップ(i3-2120 2.6GHz)のダブルスコアの性能が出ていて衝撃. うひゃあ, そんなに速いのか(今頃).
『POWERS OF TEN』(フィリス・モリソン)
30年以上前の本. 存在は知っていたし一部を見たことはあるけど全体を通して読んだのは初めて. 宇宙の大規模構造の予想や素粒子の部分とか違うとかあるけどすごい.
動画はもっと古い(1977年)のね.
SCIS2018
ここしばらく投稿用論文をひたすら準備していた.
社内勉強会資料. SlideShareは資料を修正して再アップロードする機能が削除されているようだ. なんだって. 非常に使い勝手が悪くなるのだけど.
ImageMagickのGetImageMagick関数のバグ
sscanfを制限無しで使っていたのでスタックオーバーフローの報告をしたら対応してもらった.
python -c "print('# ImageMagick pixel enumeration:1,1,1,' + ('a'*4400))" > large.txt
で作ったファイルをGetImageMagickを与えると落ちていた.
Microsoft Community Hack Day
たまにはと参加してみた. 予想以上にバラエティに飛んでいておもしろかった. 自分も何か発表してみたいな.
数学者をつくろう!―証明の数理科学―
面白かった. 少し前に読んだばかりなのでわかりやすかった. いろんなテーマで毎月やってるらしい. また参加してみようかな.
「不可能性」が示されても, どうすればよいのか, どこまでならできるのかを考えるのがエンジニアリング(というようなこと)を仰っていた. 間違って解釈していたらすいません.
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の返り値を使ってないので何が違うのか不思議だった.
『ゲノム編集の衝撃』(NHK「ゲノム編集」取材班)
2012年に発表されたクリスパー・キャス9によるゲノム編集技術の紹介. 遺伝子組み換えとの違いなどの基本的なところの解説がわかりやすかった.
addgeneというAmazonライクに簡単にゲノム編集ツールを購入できる販売システムがあるというのに驚いた.
倫理面を考えるヒトゲノム編集国際会議, 数百人の研究者のうち日本からは数名だったらしい.
遺伝子組み換えと同等に厳格に扱ってるとますます海外との差が広がりそうだし難しい問題だ.
『研究するって面白い』(伊藤由佳理)
11人のいろいろな分野の理系研究者の体験談. 暗号理論の尾形わかはさんも登場してらして驚いた.
サイボウズ・バグハンター合宿
著名なハンターたちの活動を直接見られてよかった. 1日でどれだけできるのかなと思ったらえらくたくさん見つけていた. みなさんすごすぎる.
SHE for Node.js
Node.jsに初挑戦.
見よう見まねでやってなんとかブラウザとNode.jsで動くshe.jsができた. まだまだ修正すべき箇所は多いけど一山越えた.
emccの出力は-s "MODULARIZE=1"がついてると動かない. このオプションをブラウザと統一できるか調べる.
EXPORTED_FUNCTIONSオプション
emccでbuildするときに
"EXPORTED_FUNCTIONS=[$(EXPORTED_SHE)]"
でexportしたい関数名を列挙していたのだが関数の宣言(or 定義)のところに __attribute__((used))をつけとくと不要らしい(bn.h).
ヘッダファイルから関数を抽出してMakefileに渡すという作業が減るのでありがたい.