目次
- 目次
- はじめに
- 書評メモ
- 参考資料
- MyEnigma Supporters
はじめに
冒頭の書籍を読んだ書評メモです。
続きを読む
WebSocket: Lightweight Client-Server Communications (English Edition)
以前、通常のHTTPを使った、
簡単なプロセス間通信の方法を記事にしましたが、
通常のHTTPでは、
通信方式request-response型なので、
クライアントがサーバに話しかけないと、
サーバが、クライアントに話しかけることができませんでした。
そこでウェブアプリケーションにおいて、
双方通信によく使われるのがWebSocketです。
今回はこのWebSocketについて概要と
各言語でのサンプルコードを紹介したいと思います。
続きを読むこれまでPythonでやってきたことを、
Juliaで置き換えようとすると、まず初めにぶつかるのが、
Juliaのコードにおけるライブラリのロードや、
初めて使う関数の計算が遅いなど、
いわゆる初回実行が遅い問題が気になってきます。
(英語ではこの問題をlatencyと呼んでいるそうです
)
Juliaは基本的に初回実行時にコードをJITコンパイルして実行するため、
動的言語でありながら、高速な実行を実現できているので、
この初回実行が遅いのはある程度はしょうがないのかなと思います。
しかし、
毎回使うライブラリのロードや
変更が不要な関数が、
毎回遅いのはなんとかならないのかなと思っていました。
そこで、この問題の一つの解決策がPackageCompiler.jlです。
概要はこちらの動画を参照していただけるとわかると思いますが、
sysimageと呼ばれるJuliaのセッション保存機能を使って、
いつも利用するライブラリをロードした状態や、
関数のJITコンパイル結果を保存することにより、
そのsysimageを使って、juliaコードを実行したときに、
初回実行を高速化することができます。
(Julianのsysimageに関しては、こちらを参照ください
今回の記事では、このPackageCompiler.jlとsysimagesを使うことで、
Juliaのコードの初回実行を高速化する方法を簡単に紹介したいと思います。
続きを読むOSSにとってドキュメントは、
出来るだけ多くの人に使ってもらうために重要です。
近年のOSSでは、
ソースコードと同じgitリポジトリに
テキストベースでドキュメントの元のデータを管理し、
Sphinxや
Documenter,jl
のようなドキュメント作成ライブラリを使って、
htmlベースのドキュメントを自動生成し、
そのデータをインターネット上に公開するのが一般的です。
このようにドキュメントをgitで管理すると、
ドキュメントの改善を通常のコードと同様に
プルリクエストベース(PR)で、レビューして
改善することができます。
このような、
PRベースでドキュメントの変更をレビューするのは便利なのですが、
一つ面倒なのが、
他人のドキュメントのPRをレビューするときに、
そのPRのブランチを手元にチェックアウトし、
ドキュメントをビルドしないと、
最新のドキュメントの見た目などを確認できないことです。
また、レビューの結果を反映した、
各コミット毎にこの作業をしないといけないので
以前から非常に面倒だなと感じていました。
昔からこのフローを改善したいなと思っていたのですが、
最近開発に参加している、SciPyが非常に良い方法を利用しているのに気がつきました。
この方法では、
PRの各コミット毎にCIが回るので、
そのCIの一環として、最新のコードでドキュメントをビルドし、
そのドキュメントをそのままブラウザ上で確認出来るようになります。
もう少し具体的には、
下記のように、PRでコミットすると
GitHubのCIの画面に、
build_doc artifactという項目が表示され、
この項目のDetailsをクリックすると、
下記のように、CIで生成された最新のドキュメントを
ブラウザ上で確認することができます。
これを見ながら、
簡単に最新のドキュメントの結果をレビューすることができます。
今回の記事では、
こちらの設定方法について説明します。
続きを読む本日、
自分が開発者のメンバーとして参加している
SciPyの新しいバージョン1.5.0がリリースされました🎉
今回は、1.5.0の新機能や特徴を、
連続ツイートでまとめてみたので、
そちらを、あとから参照しやすいように
記事としてまとめておきます。
続きを読む
NumPy&SciPy数値計算実装ハンドブック (Pythonライブラリ定番セレクション)
ロボティクスにおいて、
最近傍点探索はよく使われる計算です。
例えば、衝突検知や、センサ情報の対応点探索などに
最近傍点探索は使われます。
最近傍点探索を使う時に、
一番よく問題になるのが、計算量です。
単純にbrute forceで最近傍点を探すと、
計算時間は探索する点の数に応じて増加してしまいます。
そこで、よく使われるのがkd-treeです。
このkd-treeを使うことで、大量のデータがあっても、
比較的、高速に最近傍点探索を計算することができます。
このkd-treeを使うには、
様々なライブラリがすでに存在しています.
例えば、以前紹介したFLANNも
kd-treeをデータ構造に利用しています。
今回の記事では、
Pythonの科学技術計算のライブラリであるSciPyの中にある、
scipy.spatial.KDTreeというモジュールの使い方を紹介したいと思います。
続きを読む
Spacex Tシャツ 半袖 メンズ ワンポイント カットソー 日常 マルネック 薄手 シンプル 防汗 伸縮性 通気
SpaceXのソフトウェアエンジニアの人たちがredditに降臨して、
すごく細かい内容について、色々答えていたので、
Twitterでメモしながら、呼んでみました。
そのメモ用記事です。
続きを読む
しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識
Dockerなどのコンテナシステムを管理するシステムとして、
コンテナオーケストレーションシステムがあります。
このコンテナオーケストレーションツールの中で、
ほぼデファクトスタンダードなのが、Kubernetesです。
今回の記事では、こちらの書籍を元に
自分が、k8sについて学んだ内容をまとめておきたいと思います。
しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識
続きを読む
ロボティクスにおいて、幾何学処理、
特に三次元の回転は基本的な処理です。
上記の記事で、ROSのtfを使った場合の三次元回転処理や、
C++のEigenを使った場合の三次元回転処理を紹介しましたが、
Pythonで三次元回転を扱う場合には、
scipy.spatial.transform.Rotationを使うのが便利です。
今回の記事では、
このscipy.spatial.transform.Rotationの使い方について
簡単に紹介したいと思います。
続きを読む
先日の記事で、
Pythonにおけるロギングの方法を紹介しましたが、
ロギングで一番よく実施するのが、
ある変数名と変数値を出力することです。
例えばPythonで、
あるxという変数があり、その変数の値が100である場合、
通常のprint関数を使うと、
100
と表示されます。
しかし、そのときにはその表示された値がxのものであることを覚えているため、
問題ありませんが、後日アプリケーションのデバックをするときには、
その出力がどの変数であるかはおそらく覚えていないので、
最低では、ログや標準出力には
x = 100
と表示させておきたくなります。
上記のような処理は、プログラミング中には大量にコーディングすることになるので、
できるだけ、簡単にコーディングしたいものです。
そこで、今回は自分がよく使用しているプログラミング言語において、
上記の内容を簡単に実施する方法をまとめておきたいと思います。
続きを読む