Explore "Full-Stack" in depth!

情報系の専門学校で、今は機械学習に的を絞って学習中。プログラミングを趣味でやりつつ、IT系のあらゆる知識と技術を身に付けるべく奮闘中。

glibcラッパーからLinuxのシステムコールハンドラまでを読む,まとめる

概要 システムコールの流れ glibcでのシステムコールラッパーの処理 syscall 命令の実行 Linuxのシステムコールハンドラ 概要 IPFactory Advent Calendar 2019 一日目. 急遽開いた弊サークルのカレンダー,既に一日目が終わろうとしている. ここでは日頃勉強…

ELFバイナリに含まれるnullセクション/ヘッダの真実…?

概要 本題 自作アセンブラについて 正解は… 概要 gccの吐くELFバイナリを見てみると、セクションヘッダテーブルの先頭に NULLヘッダ を見つけます。 これってなんだろう? ってずっと疑問だったのですが、今日理由がわかったのでそれについて述べたいと思います。…

Seccamp2019でCコンパイラ実装に取り組みました

概要 応募課題について 問1 問2 問3 集中開発コースについて 成果物とその進捗について 事前学習期間 当日 総評 概要 セキュリティ・キャンプ全国大会2019に参加しました! 集中開発コースの中にある 「Y-Ⅱ Cコンパイラを自作してみよう!」のテーマに応募し、 普…

ABC137にHaskell縛りで参加しました!

概要 随分お久しぶりですね。 数カ月ぶりに記事を更新します。 今回は ABC137 に参加しました。 Haskell縛り ということで参加した本ABCですが、 非常に有意義なものになりました。 ここでは自分が解けた問題、ギリギリ解けなかった問題について取り上げます。 Hask…

オブジェクトファイルのシンボルテーブルを最低限理解する。

目次 目次 概要 対象読者 本題 ELFフォーマット復習 シンボルテーブル シンボル名 name シンボルの情報を格納する info ST_BIND ST_TYPE シンボルの可視性 Other シンボルの実体 Value 総評 概要 お久しぶりです。 最近やりたい事が沢山あってブログをかけず…

IA-32 Architectures Developer's Manual 6章まとめ

目次 目次 概要 プロシージャ・コールのタイプ スタック スタックのセットアップ スタックのアライメント プロシージャのリンクに関する情報 CALLとRETによるプロシージャコール farコール・リターン 総評 概要 IA-32マニュアルを読み始めました。 無料で読める…

IA-32 Architectures Developer's Manual 4章まとめ

目次 目次 概要 基本データ型 各データ型のアライメント 数値のデータ型 整数 浮動小数点 ポインタ型 ビットフィールドデータ型 ストリング・データ型 パックドSIMD データ型 総評 概要 IA-32 マニュアルを読み始めました。 無料で読めるドキュメントとしては…

IA-32 Architectures Developer's Manual 3章まとめ

目次 目次 概要 動作モード 保護モード・プロテクトモード 実アドレスモード・リアルモード SMM( System Management Mode) IA-32における基本実行環境 アドレス空間 基本プログラム実行レジスタ メモリ構成 フラットメモリモデル セグメント化メモリモデル 動…

readelf -S を簡易実装してセクションヘッダを理解する

目次 目次 概要 前提:セクションヘッダとは? 本題1:実装 本題2:セクション名のテーブルについて 総評 概要 drumato.hatenablog.com こちらの記事の続きです。 一応今回でreadelfは最終回になると思います。 今回はセクションヘッダを解析するコードを書きまし…

readelf -lを簡易実装してELFフォーマットの理解を深める。

目次 目次 概要 前提:プログラムヘッダテーブルとは? 本題 コードリーディングで情報集め 実装 総評 概要 こちらの記事の続きです drumato.hatenablog.com ELFヘッダのあとは、 プログラムヘッダの解析 に移るのが自然な流れだと思います。 今回も ソースコー…

バイナリ何もわからない人に送る"ソースコード視点"のELFヘッダ解説

目次 目次 概要 まずはおさらい 本題:readelf 総評 概要 ELFフォーマットを理解するための試み第二弾。 こちらの記事の続きと言ってもいいです。 drumato.hatenablog.com 上記の記事には間違いが多いので注意してください。 本記事バイナリ何もわからない人に送…

readelf -hの簡易版・省略版を作成するミニ記事

目次 目次 概要 本題:ELFヘッダを見る 本題2:GoでELFヘッダを解析する 総評 概要 コンパイラ自作をとても楽しくやっている私ですが、 どうせコンパイラを作るならバイナリ生成までやらせたいものです。 もっと具体的に言うと、 アセンブリから機械語を生成する…

runcのcreateコマンドを読む。

Go

目次 目次 概要 ライセンス 前提:createコマンドとは main.go 定数 コマンド定義 create.go loadSpec() startContainer() notifySocket 総評 概要 DockerでLow-Level runtimeとして現在も活躍している opencontainers/runcの コードを読んで行きたいとおもい…

最近知った深層学習系の知識(一部)をまとめる

目次 目次 概要 Conditioning Augmentation MSGAN(mode seeking GAN) バッチ正規化 AttnGANの優位性-word-level features- Gated Linear Units Residual Block 総評 概要 Cybozu Labs Youth 8th 研究生として、 今は深層生成モデルをテーマに勉強をしています…

Go Compilerの実装を読む3(SSA Readmeを読んだ編)

目次 目次 概要 ライセンス Introduction to the Go compiler's SSA backend Key Concepts Values memory types block Functions compilerの最適化 総評 概要 Go Compilerの実装を読む第3弾。 Introduction to the Go compiler's SSA backendの翻訳をしていき…

Go Compilerの実装を読む2(Readmeを読んでgcの概観をする編)

目次 目次 概要 ライセンス Introduction to the Go compiler Parsing Type-checking and AST Transformations Generic SSA Generating machine code 総評 概要 Go Compilerの実装を読もう第二弾。 今回は cmd/compileに記載された、 Introduction to the Go c…

Gopaz第二弾・前回の記事から10日間で追加した仕様紹介

目次 目次 概要 前回からの追加機能 定数定義 変数定義時に型情報を保持 関数定義 配列の要素の型チェック ハッシュのキー/値型チェック 総評 概要 Gopaz第二弾。 前回から機能拡張した部分がいくつかあるので そのお話をしていこうと思います。 前回の記事を…

生成モデルにおけるKL DivergenceとInception scoreについて調べた。

目次 目次 概要 TL;DR 前提知識・エントロピー 本題1:カルバック・ライブラー情報量とIS カルバック・ライブラー情報量 具体例 参考:StackGAN-v1における正則化項 Inception Score おまけ: Image distributionという表現 総評 概要 久しぶりの機械学習系記事で…

自作インタプリタ言語「Gopaz」の紹介(鋭意開発・拡張中)

目次 目次 概要 前提:monkey-patch 本題 Gopaz 出来ること 変数宣言・代入 コメント If「式」 数値計算 比較演算子 文字列処理 配列処理 組み込み関数 実装上の工夫 Lexer マルチバイト文字対応 Parser テスト駆動開発・CI 総評 概要 自作のインタプリタ言語を作…

UNIX/V6における実行プロセス切り替えのsleep()→swtch()を最低限理解する

目次 目次 概要 前提 UNIX V6とは PSW(Processor Status Word) 汎用レジスタ プロセスとは 並列処理 user構造体 proc[]とproc構造体 仮想アドレス空間 本題 並列処理におけるプロセスのフロー sleep() sleep()まとめ swtch() 実行プロセスの選択アルゴリズム…

「マスタリングTCP/IP」は言わずと知れた名著。しかしインプットの取捨選択は必要。

目次 目次 概要 TL;DR 私のネットワーク知識 オススメ読者 オススメ勉強法 一部の所感 1章 2章 4章 総評 概要 マスタリングTCP/IP 入門編を読みました。 マスタリングTCP/IP 入門編 第5版作者: 竹下隆史,村山公保,荒井透,苅田幸雄出版社/メーカー: オーム社発…

「Go言語でつくるインタプリタ」は前提知識無しで取り組める言語処理系のチュートリアル

目次 目次 概要 本題 私がこの本を購入した理由 数ある言語処理系の技術書でも恐らく最も初歩的 Goは現在恐らく最も可読性が高い言語 何故オススメ? プログラミングの本質が見えるから 単純にコード量が多いのでやってて楽しい テスト駆動開発 読者の為に残…

Go Compilerの実装を読む(トークン編)

目次 目次 概要 対象読者 本題 トークン 総評 概要 私は過去にプログラミングでいくつかのツールを作ってきました。 www.resume.id ここにいろいろ載せてます。 github.com ここにも。 しかし、より大きなものを、本気で作りたい!と考えた私は、 かねてよりめちゃ…

「Python機械学習プログラミング」はまさに"理論と実践"を学ぶのに最適な本

Python機械学習プログラミングの書評を熱く語りました。

DirtyCOW(CVE-2016-5195)を最低限理解する。

目次 目次 概要 前提知識 本題 Linuxとプロセスの関係 PoCを見てみる レースコンディションの仕組み まとめ 概要 LinuxKernelに存在した脆弱性のDirtyCOW 今は完全にパッチが当てられていますが、その仕組みはとても奥深く、 理解にはLinuxKernelの挙動の理解…

入門者に捧ぐ機械学習の勉強法&決定木の内部解説

目次 目次 概要 機械学習における理論と実践 本題:決定木 参考:実行できないcreate_png()の解決策 決定木の理論的側面 ジニ不純度 エントロピー 総評 概要 昨日このようなツイートをしました。 単純に凄い気になるのだけれど、機械学習系の記事書く時って・数…

決定木のmax_depthを直感的に理解する@ミニ記事

目次 目次 概要 基本 おまけ:実装 総評 概要 ※かなり短い記事です。 今更ながら決定木のやっていることがわかってきたので簡単にまとめておきます。

最近人気なNumbaを深く考察する。

目次 目次 概要 まずはコードの書き方を変える 参考:実行時間の計測 各要素全てを合計する。 組み込み関数sum()を使う(速度:普通) np.sum()を使う(速度:高速) フィボナッチ数列を求める。 非JIT(実行速度:遅い) JIT(実行速度:爆速) 明示的型付けJIT(実行速度:…

局所領域に対して一次微分でエッジ検出する(ノイズの有無も)

目次 目次 概要 前提知識 一次微分によるエッジ検出 本題:実装 局所領域に対して一次微分でエッジ検出(withノイズ無し) 局所領域に対して一次微分でエッジ検出(withノイズあり) ノイズに弱いか検証 総評 概要 画像認識 (機械学習プロフェッショナルシリーズ)…

Pythonのアノテーションを使ったアイディアの提案

目次 目次 概要 ->とは、:とは 戻り値のアノテーション 引数のアノテーション アノテーションを__annotations__で取得する 実用例 総評 概要 ちっちゃめの記事です。 この前過去コンペのWinners Solutionを見ていたら、 気になる関数定義の方法を見つけました。 …