今週のまとめ
Java
- [プログラミング言語] TeaVM
- Java のバイトコードを JavaScript に変換するツール
- [プログラミング言語] Bytecode Viewer - Java & Android APK Reverse Engineering Suite/Tool
- [プログラミング言語] JVM Anatomy Park
- JVMの内部仕様 (メモリ管理が中心) についてのブログ記事のシリーズをまとめたもの
Others
- [OS] Introduction · Linux Inside
- [OS] Home — Memory Management Reference 4.0 documentation
- メモリ管理についての資料集(辞典、イントロダクション、論文集)、HWレベルから言語レベルのGCの話まで網羅
- [数学][機械学習][アルゴリズム] dlib C++ Library: A Global Optimization Algorithm Worth Using
- 大域的最適化アルゴリズムの評価をした記事
- dlib http://dlib.net/ は、C++ で作られた機械学習のための総合ライブラリ。
- ベイジアンネット、数理最適化・画像処理などが機能としてある。
- [Web] GitHub - kamranahmedse/developer-roadmap: Roadmap to becoming a web developer in 2018
- Web技術の(学習する上での)ロードマップ
- Frontend, Backend, DevOps の分岐がある
まとめ
- [低レイヤ] VisUAL - A highly visual ARM emulator
- [低レイヤ] GitHub - avast-tl/retdec: RetDec is a retargetable machine-code decompiler based on LLVM.
- 無料AVソフトでおなじみの avast が作ったデコンパイラ。
- 前は オンラインで試せたが、Retargetable Decompiler 今は使えない模様
- [数学] Algebra, Topology, Differential Calculus, and Optimization Theory for Computer Science and Engineering
- [OS] Operating System Design Book Series
- [Web] Hyperapp
- 今話題の超軽量フロントエンドフレームワーク。1.0がリリースされた。
- awesome: https://github.com/hyperapp/awesome 、今後エコシステムが増えて欲しい。
- [Web] The State Of JavaScript 2017
- JavaScript に関するアンケート of 2017、(世界で)何のフレームワークやビルドツールが主に使われているかがわかる。
ダイナミックスコープをレキシカルスコープに直す。
2016年に作った Lisp (Scheme) インタプリタ、ダイナミックスコープだったまま放置していたのでレキシカルスコープに直した。
ダイナミックスコープとレキシカルスコープとは。
スコープの変数の参照のやり方の違い。
例を挙げると
(define x 123) (define (f) x) (let ((x 456)) (print (f)))
のようなコードでは、ダイナミックスコープでは 456 、レキシカルスコープでは 123 である。
大体の言語はレキシカルスコープで実装されている。わかりやすいので。
どうしてダイナミックスコープで実装してしまったか。
実行時の関数呼び出しを評価する際になって初めて環境オブジェクトを生成していた。よって外側の参照を行う際、呼び出し元の環境を遡って参照する=ダイナミックスコープになっていた。
kantele/eval.js at d85caa71fb5206f93b0912b9582e07f3bdb2003c · 45deg/kantele · GitHub
修正
関数(あるいはスコープ)が作られる際に環境を埋め込む。いわゆるクロージャを作る。 完全なインタプリタ型で実装していたので思ったよりかなり楽に実装できた(関数オブジェクトのコンストラクタの引数に加えるだけ) *1
Fixed: dynamic scope -> lexical scope · 45deg/kantele@966ec24 · GitHub
デバッガの実装まとめ(仮)
デバッガの内部について調べてるのでまとめ、追記するかも
- Linux の場合 ptrace が昔から使われている
- How Does a C Debugger Work? (GDB Ptrace/x86 example) - (gdb) break *0x972 gdb の内部(英語)
- ptraceシステムコール入門 ― プロセスの出力を覗き見してみよう! - プログラムモグモグ ichyny さんによる入門
- [Debug] ptrace によるデバッグ - th0x4c 備忘録 コード付きの解説
- マルチスレッドで gdb debug についての資料 → Non-stop multi-threaded debugging in GDB | Mentor Graphics Communities
- ptrace を用いたシステムコールをトレースするツールの strace もある
- Mac でも ptrace が使える? Windows は Windows API を使う *1
- ブレークポイントは ptrace の機能ではない
- 該当部分を SIGTRAP を生成するような命令に差し替える → 実行時に書き戻す。
- コード付きの解説 How debuggers work: Part 2 - Breakpoints - Eli Bendersky's website
まとめ
- [セキュリティ] OSSの脆弱性を探すためにやったこと // Speaker Deck
- [セキュリティ] Web Security Log: The proc/self/environ Injection
- procfs を使えば LFI で 環境変数を取れるという話
- CTF では基礎知識?
- procfs - Wikipedia
- [セキュリティ,機械学習*1] Tail attacks on web applications | the morning paper
- 断続的なリクエストによるDDoS攻撃で、その頻度等のパラメータ調整をフィードバック制御(カルマンフィルタ)でやる論文。
- カルマンフィルタについては How a Kalman filter works, in pictures | Bzarg
- [Web] Popmotion - A functional JavaScript motion library
- リアクティブなアニメーションライブラリ
- [プログラミング言語] A primer on Elixir Stream :: ActiveSphere - Bangalore based software consulting
- Elixir の Stream について。
- [プログラミング言語] Reflecting on Haskell in 2017
- 2017年のHaskellについての動向まとめ
- [システムプログラミング] GitHub - davmac314/dasynq: Thread-safe cross-platform event loop library in C++
- [システムプログラミング] GitHub - celrenheit/sandglass: Sandglass is a distributed, horizontally scalable, persistent, time sorted message queue.
- Go製のメッセージキュー
- [プログラミング言語] GitHub - jll63/openmethods.d: Open multi-methods for the D language. OPEN! Multi is cool. Open is great.
- D言語のマルチメソッドライブラリ
今週のまとめ
- [プログラミング言語] Carp | Veit's Blog
- ボローチェッカー付きの Lisp 方言
- [プログラミング言語] The Cell Programming Language
- Reactive Automata という Reactive な計算要素がある言語。C++にトランスパイルされる。
- [セキュリティ]
A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages
- blackhat講演。URLパーサーにある脆弱性について。
- [数学] OSQP solver documentation — OSQP 0.2.1 documentation
- 凸二次計画問題ソルバ
- [アルゴリズム] A Library of Parallel Algorithms
- 並列プログラミングの便覧
- [プログラミング言語] Type-Safe GraphQL with OCaml (part 1) · Andreas Garnæs
- OCaml でつくる型安全な GraphQL ライブラリ
- [プログラミング言語] https://savanni.luminescent-dreams.com/page/haskell-app-monad
今週のまとめ
サボってたらどうして書かないんですか?*1と(暗に)言われたので書きます。
- [プログラミング言語] GitHub - exakat/php-static-analysis-tools: A reviewed list of useful PHP static analysis tools
- PHP の静的解析ツール一覧
- [プログラミング言語] GitHub - szktty/bran: A strongly-typed language with type inference running on Erlang VM, influenced by OCaml.
- [プログラミング言語] GitHub - go-ego/riot: Go Open Source, Distributed, Simple and efficient Search Engine
- Go言語製の分散検索エンジン
- [プログラミング言語] Towards Higher-Order Syntax of C Programming Language
- [プログラミング言語] Perl Regular Expression Matching is NP-Hard
- Perl の正規表現 で 3-CNF-SAT が解ける → NP-hard。 らしい。
- Ruby での翻訳 後方参照のある正規表現の能力 - まめめも
*1: 関係ないんですが、 電話猫 - LINE スタンプ | LINE STORE が発売されました