Explore "Full-Stack" in depth!

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

Go

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

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

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

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

コンパイラが構文解析してからアセンブリを出力するまで。

目次 目次 概要 本題 return 2+3*4;のケース 構文解析・ASTノード生成 中間表現への変換 レジスタの確保 アセンブリコード出力 総評 概要 この前上げたこちらの記事について、 より深く解説をしていく記事です。 drumato.hatenablog.com 具体的には、 字句解析後…

rui314さんの9ccをGoで再実装しはじめた

目次 目次 概要 本題 今できること 整数一つ・それ以上の加減算をコンパイル Token定義 Lexer定義 再帰下降構文解析器によりASTのAdd-Subノード生成 ASTノード コード生成 中間表現の変換とレジスタの選択 総評 概要 最近、こんな記事書きました。 drumato.hate…

runcのcreateコマンドを読む。

Go

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

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第二弾。 前回から機能拡張した部分がいくつかあるので そのお話をしていこうと思います。 前回の記事を…

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

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

言語仕様を拡張する流れ(文字列演算)withTDD

目次 目次 概要 前提 本題 総評 概要 もうそろそろこの本も読破しそうです。 読み終わったら書評上げますね。 過去取り組んだ本でも最も評価は高いです。 Go言語でつくるインタプリタ作者: Thorsten Ball,設樂洋爾出版社/メーカー: オライリージャパン発売日: 2…

字句解析と構文解析をMonkey言語を題材に最低限理解する。

Go

目次 目次 概要 1章:字句解析 tokenパッケージ lexerパッケージ 2章:構文解析 astパッケージ Statement Expression parserパッケージ RPPL(Read Parse Print Loop)から見るParserの挙動 総評 概要 Go言語でつくるインタプリタ作者: Thorsten Ball,設樂洋爾出…

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

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

Goのtestingを扱いたい。

概要 今時プログラミングでテストを書かないということは無いと思います。 CI/CDやDevOpsという言葉が流行しているように、 開発フローの自動化・一貫したパイプラインの構築というのは 今の開発技術においてかなり重要です。 でもテストなんて書いたこと無いん…

Goの最強TUIパッケージ"tview"で高機能ファイルビューアーを作成した(プロトタイプ)。

目次 目次 概要 注意 tviewとgocui tview基礎 本題 思ったこと 概要 tviewというGolangのパッケージがあります。 めちゃくちゃ強くて、正直gocuiより好きだったので紹介します。 テキストファイルの内容表示(catコマンド的な) パケット情報の表示(今の所IPだけ)…

gocuiの設計を考える-ミニ記事-

Go

目次 目次 概要 本題 メイン処理 構造達定義 gui.go パネル 考察 概要 プログラミングやっててテキストエディタ作れなきゃダメみたいな記事をどこかで見たので 作ってみようと思いました。 私が使っているエディタのVimを作りたい。 ソースコードはこちらに落…

GoogleBookAPIを「自身の引き出し」から持ってきたコードで遊ぶandおまけでQiitaAPI@ミニ記事

Go

Google Books API と Qiita API、 2つのRESTful APIを使って遊ぶ記事。 コードスニペットの重要性。

はてなテクノロジーのニュースをCUIに表示@ミニ記事

目次 目次 概要 コード 総評 概要 ※正直ブラウザで見たほうが綺麗だし便利です。 ただ、Goでスクレイピングやりたかっただけの記事。 私は毎日3、4回以下のニュースを調べています。 技術系のニュースが集まっているのでとても助かっています。 b.hatena.ne.jp 普…

私の思うRubyのメリットデメリット&プログラミング言語に対するあれこれ

目次 目次 概要 注意 何故このような記事を? 本題:Rubyのいいところ 組み込み関数が強い・簡潔に書ける 動的型付けならではのコーディング プロトタイプが特に強い 本題2:Rubyの悪いところ 書き方が自由すぎる 本題3:Rubyは初心者に向いているか? 静的型付け…

疑似シェルからコーディング戦略を考察する。

Go

目次 目次 概要 ファイル構成 コード詳細 コマンド待ち受け コマンドの呼び出し 各コマンド側の実装 ここまでのまとめ メリット デメリット 総評 おまけ 概要 前回こんな記事を書きました。 drumato.hatenablog.com 現在もコマンドを書き進めている最中なので…

Golangによる擬似シェル「IGOsh」を自身に課したい。@ミニ記事

目次 目次 概要 注意:読んでください 本題 個人的な制約 総評 概要 Golangによってプログラミングの楽しさがとどまる事を知らない私です。 しかし JSON受け取って綺麗に出力 CSVを管理するツール 画像全取得するスクリプト 等々、 細々としたツールしか作って…

書籍管理ツールのユーティリティ強化(Go再実装シリーズひとまず完結)

つい最近こんな記事を上げました。 drumato.hatenablog.com この続きです。 この時実装されてなかった機能の実装と、 クロスコンパイルによる複数プラットフォーム対応を行いました。 これによりGoの処理系の環境が立っていない人も利用できると思います。 是非使…

Rubyで書いたお天気APIツールをGoで実装し直した@ミニ記事

目次 目次 概要 本題 参考:コマンド化 今後やりたいこと 総評 概要 以前、JSON APIを使うという記事を書きました。 drumato.hatenablog.com これはWeather HacksというJSON APIのサービスを、 Rubyの標準ライブラリを駆使していい感じに出力するというものです。…

Rubyで作った書籍管理ツールをGo実装で書き直した(+Goの勉強で気になったこと、プログラミング勉強方法の話も)

Go

目次 目次 概要 前提 参考:技術書の勉強法?(プログラミングに限らず全ての専門書で使える) 本題 実行してみる おまけ Go と配列とポインタ 解決策1:配列のポインタを渡す 総評 概要 このブログは下記の記事を投稿したことが始まりでした。 drumato.hatenablog…