Windows10でストア配布じゃないPythonのパスを通す
TL;DR
以下の2行を、デフォルトで定義されている~~Microsoft\WindowsApps
よりも上位に定義しておきましょう
C:\Users\<username>\AppData\Local\Programs\Python\Python39 C:\Users\<username>\AppData\Local\Programs\Python\Python39\Scripts
Windows10のPython
当然初期状態のWindowsにはPythonは入っていませんが、なぜかコマンドのパスが通っており、cmd.exe
でpython
と打つと、Microsoftストアが開きダウンロードを促されます。公式のPythonをインストールしていても同じ挙動になります。めんどくさい仕様ですが文句を言ってても仕方ないので迂回します(ちゃんとパスを通します)。
別にストア経由でPython入れても良いんですが、普通に配布されているものをストア経由で持ってくる必要もないので、公式からインストールしたいですね。
原因と対処は本記事冒頭のとおりで、デフォルトで通されているパスにWindowsApps
なるものがあるんですが、ここでPythonコマンドを認識しているのでしょう(やめてほしいけど)。この定義自体消しても良いんですが、ほかに不都合あったらそれはそれで面倒なので、これよりも上位に公式からインストールしたPythonのパスを追加します。
Python39
はPython本体のパスを通すため、Scripts
はpipのためです。
JavaScript(Node.js)とWASMの処理速度比較
はじめに
WASMとはWebAssemblyのこと。最近のブラウザで実行可能なバイナリデータです。 そもそもJavascript(Node.js)は軽量言語にしては速いです。なので通常の用途において、WebAssemblyに置き換えるケースというのはあまり多くないでしょうが、単純な計算を繰り返し実行する必要があり、かつその速度を改善したい場合には、有効な手段と言えるでしょう。
今回はJavaScript(Node.js)とWASMで同じ関数を実行し処理速度を比較してみます。 ブラウザでも使えますが、速度比較の環境を作るのがめんどくさかったのでNode.jsと比較します(たぶんNode.jsの方がブラウザより速いでしょうから、WASM>Node.jsならWASM>ブラウザでしょう)。
WASMのつくりかた
wasm-pack + Rustで作ります(targetはnodejs)
実行する関数
フィボナッチ関数の第x項を求める関数です。メモ化などしていない素朴な実装。 第30項までを単純なループで実行し、その所要時間を比較します。
// Rust pub fn fibo(x: u32) -> u32 { if x < 3 { return 1; } fibo(x - 1) + fibo(x - 2) }
//JavaScript const fiboJs = (idx) => { if (idx < 3) return 1 return fiboJs(idx - 1) + fiboJs(idx - 2) }
結果
# WASM finish wasm 8.863149046897888 finish wasm, including init 13.06051504611969
# JavaScript finish js 18.82902693748474
結論
- 単純な計算速度の比較だけならWASMが2倍以上速い
- WASMの初期化で多少のオーバーヘッドが発生する(それでも今回の処理ではWASMの方が速い)
おわりに
- 関数の実行回数が増えれば増えるほどWASMが有利(WASMの初期化のロスの影響が小さくなるので)
2020年度の振り返り(エンジニア1年目)
はじめに
公務員をやめて2020年4月にエンジニアになってからちょうど1年経ったので振り返りつつ技術の棚卸しでも。個人開発と業務ごちゃまぜです(業務系は当然守秘義務を厳守)。
1年間やったこと
つくったもの
ほか多数
- Pythonモジュール
ほか多数
- npmモジュール
Webアプリケーション
業務の6割くらいはこれ
Vue.js + Mapbox GL JSの組み合わせにかなり知識と自信がついたその他
こちらのジオコーディング部分を開発
業務で触った言語たち
- Python: たくさん書いた
- JavaScript/TypeScript(Node.js) ハゲるほどたくさん書いた
- Rust: ほぼ趣味
ライブラリ・フレームワーク
- GDAL
- QGIS-API
- PyQt
- OpenCV
- Vue.js
- React
- Mapbox GL JS
- OpenLayers
その他身についたこと
アウトプット
人気あったやつで選出
PyQtのsignalとconnectとlambda式について - Qiita
Pythonの数値計算をRustに置き換えて速度比較してみた - Qiita
地理院タイルとdeck.glで3D地図をつくろう - Qiita
Vue3.0 + TypeScript + Mapbox GL JSの環境構築 - Qiita
3D地図ライブラリ「harp.gl」でベクタータイルを描画する - Qiita
Vue+Vue router+AxiosによるAPIエラーハンドリングとページ遷移の実装パターン - Qiita
ラスタータイルのつくりかた(2021年版) - Qiita
登壇
www.slideshare.net
www.slideshare.net
感想
全てを書けてる訳じゃないですが、見返すといろんなことやったなぁと思いました。VueとMapbox GL JSでフロント開発しながらベクタータイル作りまくったり、Pythonでクソデカラスターをたくさん処理したり、LTとか登壇とかたくさんしたり、濃かったですね。ただいかんせん、物理的な出会いはほぼなく、なんなら1年でたぶん30日くらいしか出社してません。在宅率も高く、来年度の課題は健康維持でしょう。そんな感じで脳への刺激は足りない感じでしたが、楽しい年でした。
来年度はもっと良い年度になるよね、ハム太郎!