C

ptraceシステムコール入門 ― プロセスの出力を覗き見してみよう!

他のプロセスを中断せずに、その出力をミラーリングして新しくパイプで繋ぐ、そんなことはできるのでしょうか。 straceやgdbといったコマンドは一体どういう仕組みで動いているのでしょうか。 ptraceシステムコールを使い、プロセスが呼ぶシステムコールを調…

2bfコマンド作った 〜 入力文字列を出力するBrainfuckのコードを吐くコマンド

標準入力から入ってきた文字列を出力するような、Brainfuckのコードを吐くコマンド、2bfを作りました。 https://github.com/itchyny/2bf インストール方法 $ git clone https://github.com/itchyny/2bf $ cd ./2bf $ autoreconf -i $ ./configure $ make $ s…

camコマンド作った 〜 端末で画像を表示しよう

私の中で, 画像を見るコマンドを作る計画は2012年8月に発足しました. 数時間程度で基本的なことをするコードは書けたのですが, UNIXのコマンドとしての質を高めるための試行錯誤にかなり手間取りました. 夏休みの間も様々なUNIXコマンドのソースコードを読み…

mazeコマンド作った 〜 端末で迷路で遊ぼう

どうしても迷路で遊びたくなったので, 自分で作りました. リポジトリは itchyny / maze-c - GitHub です. インストール git clone https://github.com/itchyny/maze-c cd ./maze-c autoreconf -i ./configure make sudo make install autotoolsを使ってみた…

円周率を1億桁計算しました! ― その試行錯誤の詳しい経緯と結果 ー

C

春休み暇ですし, 円周率を計算してみることにしました. エントリーが長くなりましたがお付き合いください. はじめにお断り 私は円周率計算に関しては全くの素人です. もっとスケーラブルなコードの書き方があると思いますので, あまりここばかりあてにしない…

平方根なんてビット演算ですればいいじゃない

C

まぁ何も言わずに次のコードを実行してみましょう... #include <stdio.h> #include <math.h> int mysqrt(unsigned int); int main(){ int i, arr[] = {0, 15, 53, 193, 456, 46340}; for(i = 0; i < 6; ++i){ unsigned int temp = pow(arr[i], 2); printf("%d = sqrt(%d) = %d</math.h></stdio.h>…