0x19f (Shinya Kato) の日報

主にプログラミング関連の話をします

【C言語】引数なしの関数には void を書いた方がよいという話

C言語で引数なしの関数を書くときに void を書かないのと書くのとで挙動が違うなんて話を聞いたことはないでしょうか? つまり void func() {} と void func(void) {} で挙動が違うという話ですね。 自分も話だけ聞いたことがあったものの2つがどう違うのか…

自作Cコンパイラで Ken Thompson のログインハックを再現してみた

UNIX 開発者の Ken Thompson が UNIX にバックドアを仕掛けていたという通称 Thompson hack を自作Cコンパイラで再現してみました。ログイン・コマンドのコンパイル時にバックドアを仕掛けるようなコンパイラを作り、さらにコンパイラのソースコードから痕跡…

セキュリティ・キャンプ 2018 (Cコンパイラ自作ゼミ) に参加してきました

セキュリティ・キャンプ全国大会2018の「Cコンパイラを自作してみよう」ゼミに参加して、セルフホスト可能なCコンパイラの自作をしたという話です。

ICPC 2018国内予選に参加してきました

M1の@reminさん、B4の自分、B3の@9071tomatoくんの3人で、チームMohuhu UniversityとしてICPC 2018国内予選に参加しました。 なんとかA〜D問題を解いて全体で31位になることができたので、おそらく国内予選を突破できたはずです。 一応、問題一覧と順位表の…

Cコンパイラ自作チャレンジ(その2・プリプロセッサ編)

字句解析に続いてプリプロセッサ 前回は字句解析器を作るところまでの話でした。 0x19f.hatenablog.com 今回はプリプロセッサのお話です。 先に言い訳をしておくと、WG14/N1570 Committee Draftを読みながらザクザクと実装を進めてそれっぽいマクロ展開など…

Cコンパイラ自作チャレンジ(その1・字句解析編)

2018/06/05追記 続き書きました。 0x19f.hatenablog.com Cコンパイラの自作に挑戦してみる C言語のプログラムを書き始めたのはたしか僕が中学生か高校生の頃でした。 あの頃からなんとな〜く「プログラミング言語というのはどうやってできているんだろう」と…

大学1年から大学3年までの時間割をまとめておく

ちょくちょく「3年の時間割ってどんな感じですか?」みたいなことを後輩に聞かれるので、この際全部まとめて残しておくことにした。 一応説明しておくと、早大理工は基幹理工学部・先進理工学部・創造理工学部の3つの学部に分かれている。 僕が所属している…

山本一成さんの「エレファントな解法」に対抗して動的計画法による「エレガントな解法」を考えてみた

エレファントな解法(?) 先日Ponanza開発者の山本一成さんがブログでこのような記事を書いておられました. note.mu この記事の中では以下の問いが投げかけられています. 問. コインを100回投げて表か裏が10回連続で出る確率は? 山本さんのブログでは「エレ…

【メモ】UNIX V6コードリーディング(メモリ周りの整理/まとめ)

今回の内容 前回まではトラップハンドラについて読み進めていました. 0x19f.hatenablog.com 前回とは大きく内容が変わってメモリ周りの話を整理していきたいと思います(先にシグナルを読んでもよかったかも). 実は先々週あたりの勉強会を思い出して書いてい…

【メモ】UNIX V6コードリーディング(トラップハンドラ/システムコール, p171〜184)

今回の内容 前回は, 主にタイマー割り込みに関連する箇所を読んでいました. 0x19f.hatenablog.com 今回は, トラップハンドラでの処理を見ていきます. システムコールについてもこの辺りに書かれています. トラップハンドラtrap トラップハンドラも割り込みハ…

Code Thanks Festival 2017 参加記

Code Thanks Festival 2017に参加してきました 12/2(土)に行われたCode Thanks Festival 2017に参加してきました. 運良く予選で良いパフォーマンスを出すことができて, 参加権を勝ち取ったという感じです. www.recruit-jinji.jp 会場到着まで 起きると脳が直…

【メモ】UNIX V6コードリーディング(クロック割り込み, p160〜170)

今回の内容 前回までは, 割り込みとトラップが発生してからハンドラが実行されるまでの流れを追っていました. 0x19f.hatenablog.com 今回は, クロック割り込みハンドラのお話です. クロック割り込みによって処理される指定時間実行とsleepシステムコールも一…

【メモ】UNIX V6コードリーディング(割り込み, p154〜159, その2)

今回の内容 前回の続きから. アセンブリで書かれたtrapとcallを詳しく見ていきます. 0x19f.hatenablog.com 前回解決できなかった疑問点 nofaultが設定されている場合の割り込み箇所への復帰方法について, 前回の記事には, もう一つわからないことがあって, …

【メモ】UNIX V6コードリーディング(割り込み, p154〜159)

今回の内容 前回の続きから. アセンブリで書かれたcallとtrapの実行を詳しく見ていきます. 0x19f.hatenablog.com call, trapの実行 書籍ではあまり言及されていない箇所が多くあまり進みませんでした. 以下, ざっくりとした理解です. (間違っている箇所があ…

DDCC2017本戦に参加してきました

11/3(金)にDisco Discovery Channel Code Contest 2017の本戦に参加してきました. 予選ではC問題を解くのが遅めで本戦通らないかと思ったのですが, 19卒枠の繰り上がりで本戦に参加することができました. https://discoverychannel.jp/ddcc/discoverychannel…

【メモ】UNIX V6コードリーディング(割り込み, p144〜153)

勉強会の趣旨 UNIX V6ソースコードを読もうという会です. この本に沿って読み進めてます. はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)作者: 青柳隆宏出版社/メーカー: 技術評論社発売日: 2013/01/09メディア: 単…

会津大学競技プログラミング合宿2017に参加してきました

いろんな人の参加記を見ていたら自分も書きたくなったので書きます. 9/18〜20で会津大学の競技プログラミング合宿に行ってきました.3日間の日程があってそれぞれ立命館大学, 会津大学, 北海道大学が作問した問題をICPC同様のチーム戦で解くという感じでした.…

9/10 PyCon JP 2017に参加してきました

9/8, 9に行われたPyCon JP 2017に参加してきました. pycon.jp正直あまりPython書いたことないのですが, 今年は思い切って行ってみることにしました. というのも, なんと参加枠に早稲田大学生という枠があって, しかも参加費無料だったんですね. おまけに開催…

8/21 サマーウォーズを見てRSA暗号について調べた

普段テレビはほとんど見ないのだけれど, 先日は金曜ロードショーのサマーウォーズを見てました. 相変わらずいつ見てもいい作品だなぁとか夏希先輩かわいいなぁとか思いつつ, Twitterでわいわいしてました.サマーウォーズが放送されると必ず話題に上がるのが…

8/11 AtCoder Regular Contest 080

この前うっかり寝過ごしてで損ねたARC080を解いた. C: 4-adjacent - AtCoder Regular Contest 080 | AtCoder [解答] 数列の要素を自由に並び替えて隣り合う要素の積が4の倍数になるようにできるか判定する問題. Aiが奇数, (4の倍数でない)偶数, 4の倍数で隣…

8/8 束の間の夏休み

8/3で無事に春学期の期末試験を全て終えて夏休みに突入した. しばらくは休養がてらアニメ見たりして過ごしてた. 昨日から大学の夏期集中講座でまた学校に来ている. なんだかオープンキャンパスで高校生がいっぱいいたり, 何かのイベントで小学生がいっぱいい…

7/30 ISUCONの練習始めました

今年こそISUCONに出たい 前々からISUCONにチャレンジしてみたいなぁーと思っていたのもあって, 今年こそはちゃんと練習しようと思っています. 夏休みに入って時間も取れるようになってきたので. とりあえず, Vagrant使って過去問を触ってみる. ISUCON過去問…

7/29 ARC079

AtCoder Regular Contest 079 C, Dを解いて2完. Eはにぶたんとかいろいろ試したけれどダメだった. Fは問題さらっとしか読んでないです. C: Cat Snuke and a Voyage - AtCoder Regular Contest 079 | AtCoder [解答] 島1から繋がっている島すべてに対して, N…

7/27 久々に.vimrcを整理したい

今までずっと補完というものを使わずにプログラムを書いてきた. なのだけれど, 英単語のスペルミスがあまりにも多かったり, 特定の単語を特定の間違い方することが多いので補完を使ってみることにした. とりあえず, vimの標準の補完機能(ctrl + p)を使ってみ…

7/24 AGC018とか

AtCoder Grand Contest 018 安定の1完(). A問題が難しくて普通にお葬式になるところだった. Bは言われれば貪欲だなぁ〜って感じ. A: Getting Difference - AtCoder Grand Contest 018 | AtCoder [解答] A問題なのに難しい. A[i]が{ dm | m = 1, 2, 3, ... }…

7/23 OS自作をしていたらWindowsが起動しなくなっていた

ここ最近結構時間を費やしてOS自作入門を読んでHaribote OSを写経したりしていたのだけれど, せっかくだから実機でも動かしてみたいなと思ってUSBにディスクイメージを書き込んで起動させようとしたら, Windowsが起動しなくなっていたことに気づいた. 代わり…

7/22 ソフトウェア工学と言語処理系の期末おわり

ソフトウェア工学は微妙, 言語処理系はぼちぼち(?). ソフトウェア工学は正直ただの暗記ゲーで内容的にもそんなに面白いものではないので退屈だった. 言語処理系はちゃんと勉強してみると面白かったのだけれど, もう少しちゃんとしたレジュメ配って欲しいっ…

7/19 Haribote OSにファイルシステムを作る

OSの授業の自由課題で『OS自作入門』のHaribote OSに簡単なファイルシステムを作ることにした. (なお, 書籍自体は23日目までしか終えてない.) ファイルシステムと言っても, ディスクI/Oのやり方がわからないのでメモリ上にディレクトリツリーがあるだけだけ…

7/17 School Daysを1話からちゃんと見た

ニコ動でSchool Daysが無料配信になっていたので見ていた. 実は最終回しか見たことなくて, 1話からちゃんと見るのは初めてだったりする. 1話見るごとに「誠死ね」という思いがどんどん募っていく作品だった. もう少し誠に葛藤とか苦悩とかがあればそんなに胸…

7/16 期末の勉強をせねば

そろそろ期末試験の勉強をしないとまずいのだけれど, もちろん全く手をつけていない. とりあえず, 今週の教場試験ってOSA, ソフ工, 言語処理系だけって認識であってますかね. yukicoder contest 169 No.542 1円玉と5円玉 - yukicoder [解答]制約的に全部の…