今週のまとめ (2017/4/7)
春
プログラミング言語
[Rust] Building Realtime APIs in Rust
Building Realtime APIs in Rust – Robert Lord
Rust を用いたネットワークプログラミング、フレームワークを用いて 認証システムやリアルタイムAPIを構築するデモ。
[JavaScript] BitArray.js
1bitのフラグデータを配列して32bit数値などにパックするビット配列の実装。通常の配列を用いるより高速 (約1.54倍) で メモリ効率は著しく良い (98.75%の削減)
[JavaScript] Using the Chrome devtools new code coverage feature
Chrome Canary の DevTools にコードカバレッジ計測ツールが公開された。これにより環境構築不要で簡単にカバレッジ計測ができるようになりかなり嬉しい。この関連記事には他の DevTools の機能が紹介されているのでそちらも見るとタメになる。
0.30000000000000004.com
ドメイン名で出落ち感があるが、各言語(41個)での浮動小数点計算での計算誤差の違いをまとめた資料となっている。
アルゴリズム
Interesting data structures: the BK-tree
http://signal-to-noise.xyz/post/bk-tree/
距離空間でデータのインデックス化を行うデータ構造である、BK木についての解説。レーベンシュタイン距離を使うと文字列の効率的な検索に使えるようで、この記事もその実例とコードを示している。
機械学習
arxivist
arXiv に投稿されるマシンラーニング関連の論文のキュレーション。説明を読む限り人力で選択・要約を行っている。
数学
Higher-Dimensional Categories: an illustrated guide book
http://cheng.staff.shef.ac.uk/guidebook/guidebook-new.pdf
高次元圏(高階圏) についての解説。図が豊富に使われており丁寧だが、話題自体は難解なので読むのには力がいる。
今週のまとめ (2017/3/31)
プレミアム華金。
プログラミング言語
Alpaca Lang
ML(Meta Language)に似た正格静的型付言語。Erlang の VM (BEAM) 上で動くのが特徴。ロゴが可愛い。
[Rust][C++] Rust from a C++ programmer’s perspective
Rust の人気がアツい。以前に 関数型プログラマーのためのRust を紹介したが、これは C++ ユーザー向けの比較。
Articulate Lisp
Common Lisp を勉強するときに便利な本やサイトなどのリソース集。
AI
Stochastic Program Optimization
確率的プログラム最適化 *1 についての論文についてのまとめと解説。ディープは使われていない。
RankPL
確率モデルの表現と推論をする言語。
Logic Production Systems (LPS)
「Logic Production System」は、命令型プログラミング言語の特性と、宣言型データベースおよび知識表現言語の特性を組み合わせた新しいコンピュータ言語です。
とのこと。
数学
AsciiMath
数式を表記するための新しいフォーマットとそのMathJaxプラグイン。従来のTeX表記に比べ、シンプルで可読性にすぐれている。例として sum_(i=1)^n i^3=((n(n+1))/2)^2
といった感じで書ける。
類似したプロジェクトにMathifyというのもある、こちらのほうがよりミニマルか。 www.mathifyit.com
今週のまとめ (2017/3/24)
はい。
プログラミング言語
A C++14 cheat-sheet on lvalues, rvalues, xvalues, and more
C++14 に登場する(面倒な)概念である *value についてのまとめ。
Structure and Interpretation of Computer Programs (Unofficial)
CSの代表的な教科書 SICP (https://mitpress.mit.edu/sicp/full-text/book/book.html) のスタイルを調整し見やすくした HTML バージョン。具体的にはフォントサイズの調整やシンタックスハイライトが改良されている。
Visualizing Garbage Collection Algorithms
数種のGCについての GIF アニメでのビジュアライゼーションとその解説。2014年。
アルゴリズム
Notes on Lock Free Programming (Part 1)
lock-freeアルゴリズム についての覚書。Part 1 とあるので続くはず。最後の論文も読むのがよさそう。
Paxos in 25 lines
http://nil.csail.mit.edu/6.824/2015/notes/paxos-code.html
分散合意形成アルゴリズム Paxos を 25 行の疑似コードにまとめたもの。詳しい内容は論文などを当たってください。
数学
Immersive Math
線形代数の教科書。図は JavaScript によりインタラクティブにいじることができ、直感的な理解につながる。
機械学習
Hopfield Networks in Go
ニューラルネットワークの一種であるホップフィールドネットワークの解説とGo言語での実装
クラウド
dawson: serverless framework for Node.js on AWS
dawson | a serverless framework for Node.js on AWS
サーバーレスサービスの AWS Lambda の Node 向けの開発&デプロイツール。類似プロジェクトして、Apex がある。
その他
LOOPY: a tool for thinking in systems
ダイナミックシステムのビジュアライゼーションを行うツール。解説によるとインタラクティブにノード間の値の増減などを操作できるらしい。
Interactive Mouth Simulator
Pink Trombone (注:音が出ます)
口腔の断面図をマウスなどでいじることで発声のシミュレーションをするアプリケーション。単純に面白い。
今週のまとめ(2017/3/3)
AWS Lambda で Twitter bot を書き直した
以前は VPS (さくらのクラウド) で docker-compose でとある Twitter bot を動かしていたんですが、偶に謎の死が発生するため代替として AWS Lambda で動かすようにしました。 技術的な詳細については以下とだいたい同じなのでここでは述べません。
ほかに運用している bot として、TwitterやイラストサイトをクロールしてSlackに通知するやつがあるのですが、それも Lambda 化したいと思っています。もしできたらそれについての技術的な手順は別に書こうと思います。
リンク集
数が少ないのでジャンル別で章立てしません。
[プログラミング言語] Rust for functional Programmers
Rust for functional programmers
Rust を Haskell と OCaml と比較し、Rust における関数型プログラミングについて俯瞰します。
[数学] Functional Differential Geometry
SICP の著者の一人が書いた微分幾何学の本です。 Functional とあるように、随所に数式の Scheme 実装が載っており楽しいです。ページの左下にある Open Access から無料で PDF がダウンロードできます。
Multiformats
プロトコルやフォーマットの種類に一意なIDをつけ、それをデータの先頭に付加することによって自己言及的な表現をするという考えをもとに設計されたメタフォーマットです。ハッシュやネットワークアドレス、baseXX、コーデックなどが対象となっています。各言語での実装も提示されています。
gdbgui
GDB の Web フロントエンドです。Chrome の DevTools にインスパイアされている点が多いです。
[C++] Metal
C++14 向けのコンパイルタイム計算ライブラリです。類似したプロジェクトとして、Boost.Hana や Sprout があります。
今週のまとめ (2017/2/24)
機械学習
Generative Adversarial Networks (GANs) in 50 lines of code (PyTorch)
GAN (Generative Adversarial Networks) の minimum な Pytorch での実装 (50行)。
High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis
『マルチスケールニューラルパッチ合成を用いた高画質画像修復』の Torch での実装。論文はこちら。以下の図は論文からの引用。
Deep Learning Applications
ディープラーニングの応用に関する論文やブログ記事などのまとめ。 記事自体は2015年に作られているが、最近の論文も多いので更新されている模様。現在の項目数は200を超えている。
プログラミング言語
Haskell - Marvin
Welcome to marvin’s documentation! — marvin 0.1.5-β documentation
Haskell - Ten Example Uses of Monads
Haskell のモナドの実例集 ( 確率プログラミング・STM・論理プログラミング・スレッドプログラミング etc… ) Haskell初心者がモナドの実際の利用方法を把握するのに良さそう。
Java - Java Libraries you cannnot miss in 2017
モダンな Java 開発において役立つライブラリについての解説。DI、ネットワーク、リアクティブシステムなどのライブラリなどに加え、テストに関するフレームワークが多い。
セキュリティ
Penetration Testing Tools Cheat Sheet
侵入テストで使うツールとその使用方法についての豊富な資料。ツールはほとんどCLIのものである。
アルゴリズム
Wykobi - Computational Geometry Tutorial
計算幾何学ライブラリ Wykobi のチュートリアルだが、図付きで多くのアルゴリズムが解説されているので総覧としても利用できる。 示されているコードはライブラリの使い方なので、実際のアルゴリズムの実装はライブラリの中身を見る必要がある。
近況
「今週のまとめ」は事実上オンラインブックマークと化してしまった。そこで、どうせならオンラインブックマークのシステムを作ってみようかと今考えている。
ブックマークのコンテンツは、awesome のように Github においてテキストベースで管理する。そして、ブックマークの追加・削除は、適当なサーバにWebアプリを置いて REST API でできるようにする ( CLIで作っても良いのだが、スマホからもアクセスしたいので )。あるいは、Twitterのツイートしたリンクからスクレイピングし自動で追加するということもできる。
まだ構想段階だが、そのうちに作り上げたい。その暁には、「今週のまとめ」はお役御免となるかもしれない。
今週のまとめ
Web
hack.css - dead simple css framework
徹底的にシンプルな CSS フレームワーク。フォームヤグリッドなどの必要最低限の定義はされている。
ヘッダの先頭に Markdown のように#
を表示しているのが斬新。
Linux
Rush - コマンドの並列実行
コマンドを並列実行するといえば GNU Parallel *1 が有名であるが、それと似たようなアプリケーション。GNU Parallelは Perl で実装されているが、これは Go 言語で実装されており若干早いらしい。 余談であるが、使用例がバイオインフォっぽいことに気づいた。*2
分散システム
Notes on Distributed Systems for Young Bloods
Notes on Distributed Systems for Young Bloods – Something Similar
分散システム初心者向けへの箴言集。
Thrill - C++で大規模データ処理
C++ で大規模データ処理を扱うためのフレームワーク。C++ なので Java 製の Hadoop などよりもスループットが早いことがウリらしい。スライドが一番概要が掴みやすいか。
インフラ
Beehive - 自前IFTTT
IFTTT のようなレシピベースのオートメーションサービスを自前のサーバーでできるようにするプロジェクト。Golangで書かれており、現在数十のアプレット(bee)が存在する。ユーザーが自由にアプレットを追加できそうだが、ドキュメントが不足してるので今後に期待。
DevOps Bookmark
DevOps に関するサイトを集めたリスト。カテゴリ分けされており、メニューで条件を絞って検索ができる。
サーバーレス・アーキテクチャで構築したシステムの運用はどうやるのか?
AWS Lambda とそのなかまたちだけで構成した動画配信サーバーについての話。当該記事はそのモニタリングシステムについての話。サーバーレスという旨みを活かして料金が下げるという話には感心した。
ソフトウェア工学
10つのソフトウェア工学の誤り
「ビジネスロジックをとにかく再利用可能にする」「何でも汎用的にしようとする」といってソフトウェアエンジニアが陥りやすい誤り「オーバーエンジニアリング」について簡潔かつ痛烈に批判していく。2016年のサンドイッチレイヤーの図を見て笑ってしまった。
統計
The Probability and Statistics Cookbook
確率統計の公式や分布に関する早見表。検定、確率過程、時系列データなど手広く扱っている。最後のページにはおなじみの確率分布相関図がある。
アルゴリズム
Big O CheetSheet
主要データ構造とソートに関しての計算量早見表。競技勢とかはもっと謎のデータ構造とか知ってそうなので作って欲しい(他力本願)
PostgresSQL のクエリ最適化の遺伝的アルゴリズム
最近PostgresSQLを調べ始めたのだが、意外なところでGAが実戦投入されていることを知った。 補足資料としては以下の通り。
近況
iPhone の画面は依然として割れている。
今週のまとめ (2017/2/10)
arXiv を見るビューアーを作った
グラフィックス関連
- Path Graph - Pretty visualizations for ray tracing algorithms.
- BREAKDOWN OF A SIMPLE RAY TRACER
- Fluid Paint
ディープラーニング
- はじめてのGAN
- 最近ホットな Generative Adversarial Network についての論文の紹介を交えた詳しい解説。
- Oxford Deep NLP 2017 course
- オックスフォード大学のディープラーニングを用いた自然言語処理に関する講義のビデオとスライド
その他
- Subresource Integrity - Web security | MDN
- CDNにありがちな
<script>
タグにつくintegrity
属性についての解説
- CDNにありがちな
- Unicorn.js
- JavaScript (emscripten) を用いた ARM, ARM64, M68K, MIPS, SPARC, x86 のエミュレータ
- Software Engineering at Google
近況
iPhoneの画面が割れた