今週のまとめ (2017/4/21)
今週のまとめのリンクは iCloud のメモ帳で管理しています。iPhone からの保存が楽なので…
プログラミング言語
cmacro – Lisp macros for C
C言語で高機能な衛生的マクロを実現する(前)処理系。記法は sweet.js (JSにマクロを導入するもの) ( の以前のバージョン *1 ) のものに近い。
Why ML/OCaml are good for writing compilers?
Why ML/OCaml are good for writing compilers
なぜ ML や OCaml でコンパイラが書かれているかの理由についての投稿。1998年の文章だが、2017年の今でもそれらコンパイラの実装言語としてよく使われており、その理由はここに書かれているものとほとんど変わらないと考える。
目次?: 1. ガベージコレクション 2. 末尾再帰の最適化 3. MLのデータ型はコンパイル処理において扱いやすい。 4. MLのデータコンストラクタは AST の扱いを楽にする。 5. 安全性 6. MLは再帰的構造が特徴である問題領域(定理証明等)に対して設計された 7. 例外 8. 型推論 9. 構文解析器ツールキットの存在 (yacc/lex/burg) *2 10. 実行速度 11. サポート *3 12. ライブラリ 13. モジュールシステム
Ruby 2.4 のハッシュテーブル高速化を理解する
Ruby 2.4 のハッシュテーブル高速化を理解する // Speaker Deck
題意の通り。ハードウェアでのデータの局所性に着目し高速化を行ったとのこと。
機械学習
Paperspace Machine Learning
機械学習(主に深層学習)に特化したクラウド計算サービスで、GPUを提供している。時間毎課金。競合として AWS [pg]2.xlarge との比較表が載っている。*4
インフラ
aws-fpga
AWS には FPGA を提供する F1 インスタンス ( https://aws.amazon.com/jp/ec2/instance-types/f1/ ) がある。これはそのための HDK (Hardware Development Kit) と SDK。合成の部分は vivado を使っているのでライセンス?が必要。
AWS Codestar
New- Introducing AWS CodeStar – Quickly Develop, Build, and Deploy Applications on AWS | AWS Blog
AWS 上でのアプリケーションに対する統合された コード管理 & CI サービス。
- EC2, Lambda などのいろいろなサービス・言語に対応
- Django や Express (Node) などの blueprint からすぐにアプリケーションを作れる。
- AWS上でのコード管理、テスト、デプロイの一元管理が可能。
- Eclipse や VS、JIRA との連携。
が注目すべき点。
アルゴリズム
500 Data structures and Algorithms interview questions and their solutions
500 Data structures and algorithms interview qu... - Techie Delight - Quora
プログラマの採用面接で聞かれるような、アルゴリズムとデータ構造に関する一問一答集。それぞれの問いには、時間・空間計算量別に複数の回答(C/Java)が載っている。
Competitive Programmer’s Handbook
Competitive Programmer's Handbook
IOI や ICPC に出場する学生に向けた競技プログラミングの無料 e-book。グラフアルゴリズムが三章のうち一章まるごと割かれている。
類似した競技プログラミングの本(で無料に手に入るもの)としては、 Competitive Programming Book Companion Website がある。(一部有料)
その他
Nintaco - NES Emulator
NESエミュレータ。C, C#, Java, Lua, Python の API が提供され、メモリや入出力などが制御できる。例えば、ゲームのAIを作るなどの用途が考えられる。
Kakoune Code Editor
VimにインスパイアされたTUIのエディタ。Sublime Text にあるような Multiple Selection や 複数人で編集する Collaborative edit などが主な機能となる。Vim のモードの概念や hjkl による移動等の一部のキーバインドなどが継承されている。今後少しずつ使ってみて慣れてきたら記事を上げたいと思う。
今週のまとめ (2017/4/14)
すた丼
プログラミング言語
Dale - Lisp Flavored C
Lisp のような S式で記述されたコンパイラ型言語。Lisp風Cとあるが、C言語へのトランスレータではなくLLVMをバックエンドとしている。 また、macro や module や concept などの C言語を超えた言語機構もある。
LowLevelProgramming-University
低レベルプログラミングについての資料集。 アセンブリ、C言語、ハードウェア、ファームウェア、Linuxカーネル・デバイスドライバなどの資料が載っている。
Functional Language Research Compiler
Intel製の関数プログラミングのコンパイラフレームワーク。これを用いると
[GHC フロントエンド] ↓ Ext Core [HRC (Haskell Research Compiler)] ↓ MIL IR [FLRC] ↓ C files [Intel C Compiler] → Executable binary
のようにしてCコードが出力され、iccでコンパイルされるらしい。
セキュリティ
Detecting ROP with statistical learning of program characteristics
ROP( Return-oriented programming - Wikipedia )検出の手段として統計的手法が用いられることがあり、そこでは異常検知による物が多いが、新たな統計的尺度を用いることによって検出率を改善した…という論文をまとめているブログ記事。
人工知能
Best Practices for Applying Deep Learning to Novel Applications
[1704.01568] Best Practices for Applying Deep Learning to Novel Applications
ディープラーニングを実際のアプリケーションに応用するためのベストプラクティス集。論文の最後には実際の応用例として arXiv のリンクが会ってうれしい。
以下の流れで説明されている
今週のまとめ (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のツイートしたリンクからスクレイピングし自動で追加するということもできる。
まだ構想段階だが、そのうちに作り上げたい。その暁には、「今週のまとめ」はお役御免となるかもしれない。