サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
a-kawashiro.hatenablog.com
はじめに 2024年8月28日に『Binary Hacks Rebooted―低レイヤの世界を探検するテクニック89選』という本の販売が開始されました。 著者の一人として、この本の紹介をします。 お持ちでない方は、Amazon や、楽天、お近くの書店などで購入が可能です。 購入していただけると大変嬉しいです。 どうぞよろしくおねがいします。 どのような本か 『Binary Hacks Rebooted』は2006年に発売された『Binary Hacks』の再構築版です。 再構築版と聞くと『Binary Hacks』とどれくらい異なるのが気になると思いますが、ほぼすべてが異なります。 詳細な目次はこちら で確認できますが、『Binary Hacks』からそのまま引き継いだ Hack は一つもなく、全てが新しい Hack です。 『Binary Hacks Rebooted』は低レイヤプログラ
GNU製のLinux向け動的リンカld-linux.so には環境変数 LD_AUDIT 経由で使える監視APIがあります。このAPIを使えば、ld-linux.soの様々な挙動にフックして、その挙動を監視・干渉することができます。また、興味深いことにLD_AUDITを有効にするとGOT(Global Offset Table)周りの挙動も変化します。 PLT(Procedure Linkage Table)やGOTについて知らない場合はこちらの記事が分かりやすいです。この記事のglibcはすべてコミット 137ed5ac44を参照しています。 動作例 LD_AUDITを使ってltrace(1)まがいのものを作ってみます。以下の3つのファイルを作ります。なお、このサンプルはLinux glibcで、LD_AUDIT機能による関数トレースを参考にしました。 audit.c #define _
そろそろ学生も終わるので、1年前の失敗と反省を書き留めておこうと思います。私達(@a_kawashiroと@gky360)は2018年度の未踏プロジェクトで分野限定型検索エンジンを複数組み合わせた分散型検索エンジンとして採用され、9ヶ月間を検索エンジンの作成に費やしました。この記事ではプロジェクトの紹介と、作成した検索エンジンが満足な性能を出せなかった原因について述べます。 膨大なインターネットの情報の海の中で目的の情報に辿り着くためには、検索エンジンが必要不可欠です。しかし世の中のメジャーな検索エンジンは大企業が提供してくれているものばかりで、ユーザが自分で管理・設定できるものはほとんどありません。それなら一つ作ってみるか、ということで始めたのがこのプロジェクトでした。 検索エンジンは大まかに言って3つの機能で構成されます。 クロール: インターネット上からウェブページをダウンロードして
概要 WebAssemblyを出力するMinCamlコンパイラml2wasmをフルスクラッチで実装しました。 github.com マンデルブロ集合を計算するこんな↓感じのMinCamlのソースコードが マンデルブロ集合を出力するMinCamlソースコード こんな↓感じのWebAssemblyに変換されて 出力されたWebAssembly 実行して、適切にプロットするとこんな↓感じになります。 作成したコンパイラでコンパイルし実行・プロットしたもの 導入 WebAssemblyとは WebAssemblyとはブラウザで実行可能な低級プログラミング言語であり、仮想的なスタックマシン上で動作します。 また、JavaScriptに比べて構文解析が容易であり高速に動作します。 WebAssemblyは最近のほとんどのブラウザで動かすことができます。*1 ;; WebAssembly のテキスト表現
概要 2018年3月11日から4月14日まで楽天技術研究所でEgisonの型システムの設計 & 型検査器を書くインターンをしていた。 もうインターンから半年も経ってしまったが、何も書かないよりはましというわけでブログ記事を書くことにした。 実装した型検査器はここにある。 まだまだ不完全ではあるが、一応動くのでよかったら試してみてほしい。 Egisonとは Egisonとは江木さんという方が開発しているLisp likeなプログラミング言語で、非常に強力なパターンマッチ機構を持つ言語である。 江木さんは2007年からほぼ一人でEgisonを開発し続けており、その歴史はここで見ることができる。 最近ではパターンマッチ機構を活かして、数式処理システムの制作に使われている(江木さんがつかっている)。 インターンが始まるまで 楽天技術研究所では,現代数学を簡潔に記述するためのプログラミング言語Egi
#動機 研究で行列計算ライブラリを使っているのですが、numpyはなぜか異なる型の行列同士を足せてしまいます。 このせいでデバッグがめちゃくちゃ大変でした。 こんな単純な間違いはコンパイル時に弾いてくれればいいのにと思ったので、違った型の行列は足せないようなちょっとしたライブラリを作ってみました。 ※行列を安全に計算したい人のためには Numeric.LinearAlgebra.Static ↑のライブラリが既に存在しました。不勉強ですみません。この記事は「型レベル自然数ってこんなに簡単に(僕でも)使えるんだ」、程度に読んでください。 型レベル変数 最近のGHCでは、自然数をパラメーターとするデータ型を定義できる。固定長リストの長さを型に持たせるとか、行列の大きさを型に持たせるとか、そういうことができる 引用元:Haskell (GHC) の型レベル自然数とリフレクションを試してみる 行列
夏休みがあまりに暇なのでインベーダーゲームまがいの物を作ってみました。 ゲーム全体の状態を持つ変数をIORefで包み 一定時間毎に更新することでゲームの状態を変更・保持しています。 (IORefを使うとIOモナドの中で変数が更新できます。(実はよく分かってないのですが…)) 基本的な四角形の描画、テクスチャの貼り付けは↓のコピペです。 HaskellとOpenGLを使って四角形を描画しテクスチャを貼り付ける - 春まで冬眠します スクリーンショット↓ import Graphics.UI.GLUT hiding (Bitmap) import qualified Graphics.Rendering.OpenGL.GL as GL import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) import Data.
このページを最初にブックマークしてみませんか?
『a_kawashiroのブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く