Node学園 30時限目に行ってきた
背景
学園祭はここ数年参加してるけど、通常?の学園はもう2年以上も前に参加したきりだったのかあ https://t.co/csI3nqnjrn
— kjunichi (@kjunichi) 2018年4月27日
当日早速ブログ上げられてる方がいるけれど、自分の備忘録がてら記事にする。
🍕きてもーたのでメモ書きはこれにて終了です #はてなブログ
— りぃ (@leader22) 2018年4月27日
Node学園 30時限目 に行ってきたメモ #tng30 - console.lealog();https://t.co/QSPSHNrQzS
Node学園 30時限目会場までの道のり
数日前、GW中に俺だけ起きて子供たちと奥さんが沖縄の方に出かけるので、残り数人だったけど枠が空いていた Node学園 30時限目に申し込んでよいかお伺いを立てて、無事承認されることで嫁Authをクリア!
当日までの間、いつも以上に細かな俺の素行を参加を人質に取ったように脅され続けるなど。
昨年の東京Node学園祭2017の2日目に行った会場と同じ場所かつ、常駐先からも近いので、 大分早く、会場周辺に着いた。
19時になって、会場のビルの2Fに行って受付の方からカードをもらい、エレベーター。 乗り換えを去年経験してなかったら、ちょっとあたふたしたと思われるが、2台目のエレベーターも スムーズに乗れた。
41Fに到着、が、どっちに行くんだっけ?っとまごついていたら、こっちですよと、親切な方が、 よくよく見たら、古川会長(@yosuke_furukawa)でした。会長の案内で無事会場に入れました! ありがとうございました。
発表内容と感想など
祝Node-v10リリース。これまでのNodeの振り返り by Shigeki Ohtsu
始めは、Qiitaで自分をフォローしてくださっている大津 繁樹(@jovi0608)さんの発表
事前に資料公開して頂いていましたが、やはり会場で発表を聞いたらより理解が深まりました。 OpenSSLがらみでPerlが使われているなど初めて知りました!
V8の話を聞いて
Node.js v10.0.0で使用しているV8のバージョンがv6.2系から6.6系へアップデートされたと聞いて、 ついこの前、自分がWindows対応のプルリクを出して、1年ちかくかかって公式が対応してくれた plv8の事を思い出した。
plv8のV8のバージョンは6.4なのでNode.jsに負けてるのかぁwなど。
off the main thread with workers by Mariko Kosaka
続いて、ちょっとまえにRebuild.fmにも出演されていたMariko Kosaka(@kosamari) さんのお話。
始めの方は、大津さんの発表と若干かぶることもあったりしましたが、 WebWorkerをいざ本格的に使いだしたら、使い勝手が悪く、これをもっと便利するには どうするとよいのか検討しているとのことでした。
昔、WebWorkerを動的に使って楽しんでましたが、動的な生成方法だと、デバッガを使うのが難しくなるなど デメリットがあること知ることができました。
#tng30 で今話されてるworkerってコレのことだっけ? / “Web Workers で魚眼レンズ風な画像処理 - https://t.co/5XxHhQP0EA - Share JavaScript, HTML5 and CSS” https://t.co/ROOKAlmGeS
— kjunichi (@kjunichi) 2018年4月27日
LAPIs by Jxck
3番目の発表はMozaic.fmのJxck(@Jxck)さん。低レイヤーと高レイヤーの中間的なAPIを低レイヤーのAPIを 使って実装するAPIの ことで、ポリフィルが確実に作れて、標準化を進めていく段階で試せるなど、しかし、これが仇となって標準化後の実装と ポリフィルの実装がずれるリスクがあるなどの課題があるなど。
自分の立場としては、標準化できる箇所は極力標準化してほしいなぁとIEのここで言えないバージョンの対応したり しているので切実w。
Jxckさんこの発表に関してのブログ記事も公開されたようです。
LT 10分で、SSRを高速化してみる by shibukawa
4番目の発表はReal World HTTPを書かれている渋川 よしき()さん というNext.jsでisomorphic-unfetchを使ってみたところ、
といった問題が分かり、これを改善するためにshadow-fetchを作られたというお話でした。 SSR始めて早い段階で問題点を見つけられ、それを改善する実装まで作成されてただただ凄いなぁと感心しました。
LT BigInt あれこれ by shimataro
最後の発表は、京都から来られた小田島 太郎(@shimataro999)さん。先日関西Node学園を立ち上げられたとのこと。
v10.0.0からはharmonyオプションが必要ながらも、任意桁数の整数が扱えるようになったというお話。 2の倍数だと滅茶苦茶処理が速いが、そうでないと数時間かかったり。
以前のNode.jsで大きな数を扱う記事を思い出した
これをやってみた
10^210 / (10^10 + 3) の整数部分の桁数と、 一の位の数字を求めよ。 ただし 3^21 = 10460353203 を用いてよい。
λ node --harmony-bigint > a=10n**210n 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000n > b=10n**10n+3n 10000000003n > a/b 99999999970000000008999999997300000000809999999757000000072899999978130000006560999998031700000590489999822853000053144099984056770004782968998565109300430467209870859837038742048888377385333486784399n > (a/b).toString().length 200
ということで、東大の入試問題もv10.0.0からは追加のnpmモジュールなしで解けるようになった。
ちなみに、自分の記事で取り上げたモジュールは現在のv10.0.0ではビルド出来なかった。
懇親会
Jxckさんには3月のMonthly webが4月公開だったので、4月のMonthly webの予定をお聞きした。 4月分は収録済みとのことでした。
2番目の発表のkosamariさんの隣に去年のNode学園祭で発表されたShirley Wuが座わられており、 ツイッターにアップされていた以下の
When I was a child, I lived in Japan for 6 years. I still vividly remember a street lined with 🌸, pink as far as I can see. Its been almost 2 decades, but this past week I got to relive those memories and it’s been more beautiful and emotional than I could have ever imagined. pic.twitter.com/CWPeQO6D8u
— Shirley Wu (@sxywu) 2018年3月30日
桜の動画に関して尋ねたり、rebuild.fmで@ChromiumDev中の人やってると言われていたkosamariさんが以下の写真撮られているのを 目撃したり
Hello from hot🔥 and humid💦 Tokyo👋
— Chrome Developers (@ChromiumDev) 2018年4月27日
I found our Google Developer Expert @Jxck_ and @sxywu at 東京Node学園(JavaScript meetup in Tokyo✨)
Next week, we all fly to Mountain View for Google I/O ✈️ ^@kosamari pic.twitter.com/WJQcwckwW4
そのあと、古川会長にkjunichiさんもなにかLTなどしてくださいと言われて、ネタとして
を実演するなどw。
とにかく、いろいろ参加出来て楽しいく知識を広げることができました。
関連記事
1年前の記事
陰関数の仮想3D空間へのプロットあるいは、ラズパイ版マインクラフト(mcpi)にたけのこの里を出す
おはようございます。この4月から小学校生活の始まった長男。早速呼び出しがかかり先日保健室へ引取りに行った@kjunichiです。
陰関数とは
x2+y2+z2=1
のような形をしてy=で表現していない形式の関数をそう呼んでいるようです。 Wikipediaの説明読んでも数学を専門的にやってないので、記事の書く際の説明の 参考にならなかった。。
どうすればプロットできるのか
答え:数値を代入して試す
そうはいってももう少し説明すると
上の例だと、x2+y2+z2-1=0と式を変形した、 左辺=0 にして、左辺が正、負が変化するx,y,zをプロットして つなげれば、おおよその式が満たす曲面が描画される。
仮想3D空間にプロットする
曲面を構成する点から面をつくるのは難しい
曲面を構成する点から面をつくるのは、特許がきれたマーチングキューブ法を用いるのが 常套手段の模様。
しかし、これ、自前で実装するの面倒。
仮想3D空間にプロットする
立方体でプロットすればなめらかな面は表現できないが、数式のおおよその概形は 掴めるのでは?
マインクラフトPi版はPythonでブロックを任意の座標における。 具体的には以下の様にPythonで記述することで実現できる。
setBlock(x,y,z,id,[data])
陰関数の良さげな式を見つけた
TLでたけのこの里を数式にされた方の以下のツイートを見かけた。
たけのこの里 数式化 pic.twitter.com/8bU5DWWOUQ
— ぺん! (@tompng) 2018年3月15日
実はこの式が陰関数形式であって、これを自前でプロットしてみたくなり、試行錯誤している最中に Minecraft Pi Editionでプロット出来るのでは?となりやり始めた。
成果物
遊び方
git clone https://github.com/kjunichi/mcpi-takenoko.git cd mcpi-takenoko python3 takenoko.py
そのままPlotをクリックするとたけのこの里の式のプロット結果が出現する。
- preset 1:たけのこの里
- preset 2:球
- preset 3:ローマ曲面
応用編
preset以外にもいろいろな数式を試して描画してみるとなにか発見があるかも!?
学べたこと
Raspberry Piでの画面キャプチャー
Raspberry Pi版マインクラフトの画面をキャプチャーするには普通のXの画面キャプチャーツールだと、ウィンドウが真っ黒になってしまう。 これはRaspberry Pi版マインクラフトがGPUを使って描画している為と思われる。
このツールで無事キャプチャー出来た。
入力された数式のチェック
astモジュールを使って、 構文中に文字列を含んだらNGにすることで、
import os os.system('rm ./daijinafile.txt')
のような危険な入力を防ぐ工夫をしてみた。
関連記事
- Maximaでリーマン予想のゼータ関数をプロットした
- BlenderでPython使って最速降下曲線を描いてみる
- 1/7がつくる楕円をJulia言語でプロットする
- シェルスクリプトのかわりにPythonでマルチプラットフォームで動かそうとして学んだこと
- Raspberry Piの温度をgRPCを使ってElectronで作ったデスクトップマスコットに表示させた
- Minecraft Win10版にnode.js以外でGo言語でもつなげた
- Juliaでゼータ関数を直接jupyterにプロットしたり、マインクラフト(MCPI)にプロットした - non vorrei lavorare
13年前の記事
6年前の記事
150行の量子コンピューターのシミュレーターのコードを知って学んだこと
おはようございます。4月から次男は一人で保育園に通ってます。しかし、登園前に長男と保育園からの同級生と一緒に小学校そばまで一緒に行ってから登園してます。@kjunichiです。
Interface(インターフェース) 2019年 03 月号
- 出版社/メーカー: CQ出版
- 発売日: 2019/01/25
- メディア: 雑誌
- この商品を含むブログを見る
背景
ハッカーニュースでPythonで書かれた150行の量子コンピューターのシミュレーター知った
表題日本語で訳してツイートしたら、思った以上にTLでの反響があった
Pythonで書かれた150行の量子コンピューターのシミュレーター。README下にRustで書かれたやつも紹介されてるなぁ / “GitHub - adamisntdead/QuSimPy: A Multi-Qubit Ide…” https://t.co/5TwuqsT2YM
— kjunichi (@kjunichi) 2018年4月10日
学んだこと
いきなり、手元の環境では以下のエラーが出力されて動かない
Traceback (most recent call last): File "examples.py", line 45, in <module> print('NOT Gate: |' + NOT.measure() + '>') File "/Users/junichi/work/python/QuSimPy/QuSim.py", line 147, in measure self.numQubits File "/Users/junichi/.pyenv/versions/3.6.1/lib/python3.6/site-packages/numpy/core/numeric.py", line 2039, in binary_repr binary = bin(num)[2:] TypeError: only integer scalar arrays can be converted to a scalar index
でも、WindowsのAnacondaでは動いた。
ちょっと調べたらNumpyのバージョンが古いと動く模様
使用しているnumpyのバージョンを調べるには
import numpy as np print(np.version.version)
ということを以下のURLで知った。
自力でエラーに対応した
numpy#binary_reprでとうもスカラ値を入れれば良さそうな事が 察知できたので、以下の様にnp.random.choiceで得られる配列の 先頭を取得するように修正した。
np.random.choice(results, 1,p=self.probabilities)[0],
さらに良い方法
ハッカーニュースで紹介されたからか、同様の事象がすぐにIssue挙げられて、
翌日みたら、以下のように
np.random.choice(results, p=self.probabilities),
random.choiceの第二引数の指定が消されていた、これで、 ランダムに1つだけ選択してスカラ値が取れる模様。
参考資料
もう一年くらい前かIBMがクラウドで量子コンピューターを一般公開していた 事を思い出し、ちょっとググったら、当時は英語だった気がするが、日本語のページを発見
TLで「量子コンピューター」で検索したら日銀の公式で論文紹介していたヤツ
記事書いて大分たつけど面白そうな記事を見つけたので備忘録も兼ねて
まとめ
当初は、動いたり、動かなかったりするのが量子コンピューターなのかも?そこも含めて シミュレーションしているのかなどとも考えたりした。
学べたこと
- numpyのバージョンの調べ方
- numpy#binary_reprの引数の指定方法
- numpy#random.choiceの結果をスカラ値で取得する方法
関連記事
- BlenderでPython使って最速降下曲線を描いてみる
- mruby-juliaでPythonもmrubyから呼び出せるようになった
- シェルスクリプトのかわりにPythonでマルチプラットフォームで動かそうとして学んだこと
- Windowsで64ビットなPythonでPython-Fuが動くgimpをビルドした
- PYTHONビルド時の--enable-frameworkと--enable-sharedの違い
- pyenvにはCONFIGURE_OPTSではなくPYTHON_CONFIGURE_OPTSだった件
- WindowsでソースからビルドしたGimpでPYTHONPATHを指定せずにPython Fuを使うには
- 15歳の天才少女が書いたPython3のコードを読んで学んだこと
- シェルスクリプトのかわりにPythonでマルチプラットフォームで動かそうとして学んだこと
10年前の記事
Interface(インターフェース) 2019年 03 月号
- 出版社/メーカー: CQ出版
- 発売日: 2019/01/25
- メディア: 雑誌
- この商品を含むブログを見る