サイトを移動しました。

WordPressに移行しました。http://www.gikogeek.net/wd/

「引数が大きすぎる」を回避するためのxargs

バイト先で、10万ファイルほど置かれたディレクトリ上で下記コマンドを実行したらエラーになりました。 $ mv * ../other_dir/ 引数が多すぎますシェルがワイルドカードを展開した後の引数文字列が長すぎるのが原因でした。シェルがforkした後、mvをexecする…

fgetsがfgetsに見えなくなる時@PHP

PHP

外部プロセスをpopenで起動してfgetsする際、1行単位で文字列取得しなくなるコード例。単なるメモ。PHPプロセス側をノンブロッキング設定する*1のに加えて、外部プロセス側の標準出力行バッファリングが無効になってないといけない*2。PHPコード(code.php)、 …

CAPTCHAが読めません・・・

素で読めませんでした。もうちょっとやさしいのをお願いします。もっとひどいやつはこちらhttp://labaq.com/archives/50932625.html

自宅サーバの電気代

最近、自宅に置いてあるサーバの電気代というリアルマネーコストが気になってきました。そこで、エコワットを使って月額の電気代を調べました。その結果が以下になります(サーバは2台あるので両方の結果を載せてます)。 デスクトップサーバ (FreeBSD) Pen…

各種言語の文法

所用で、各種言語の文法がBNFとかで書いてあるサイトを探しました。 忘れないように、ここにメモります。 C/C++, Java, COBOL, Prolog, SmallTalk http://www.csci.csusb.edu/dick/samples/index.html Python http://www.python.jp/doc/2.3.5/ref/ Ruby http…

英語学習サイトiknow

最近、英語の勉強をしようとiknowを始めました。詳しくは下記リンク先をどうぞ。http://www.iknow.co.jp/個人的には脳トレに近いノリを感じています。導入はスムーズにできますが、継続してやれるかは、私のモチベーション次第ですね(当たり前か・・・)。…

PHPはリファレンスカウントGCを使っているというお話

バイト先でHyper Estraierを使った全文検索機能を実装する機会がありました。そこで、EstraierPureライブラリを使って、PHPスクリプトを通じてHyper Estraierにテキストのインデックスを作成させるようにしたのですが、複数のテキストファイルをインデックス…

tracの移行作業

少し前のことですが、tracの移行作業(subversionのリポジトリ移行も含む)を行いました。今後、同じ作業をどこかでするかもしれませんので、忘れないようにメモ。例として、 trac-projというtracプロジェクト svnrepというsubversionリポジトリ を別マシンに…

XForwardingのやり方

X

ついでに、ssh XForwardingのやり方も調べました。 設定方法 例として、sshdが動いているRemoteマシンと、そこへssh接続するLocalマシンがあり、RemoteマシンでXクライアント(emacsとか)を起動し、LocalマシンのXサーバで表示する場合を考えます。Remoteマシ…

Xアプリをssh越しで起動する

X

バイトの関係で、Xアプリを、外部からデーモンとして起動する必要がありました。 やり方を探してみたところ、ssh接続先で以下のコマンド列をうてばOKでした*1。 $ export DISPLAY=:0.0 $ nohup x_program & $ exitようは、ssh接続先のXサーバとXアプリ(Xク…

Bilingual Debuggerプロジェクト紹介(だけしとく・・・)

ひさびさ。実はだいぶ前なんですが、Sourceforge.jpにプロジェクト立ち上げました。 http://sourceforge.jp/projects/bdbgC/C++とRubyという2つの言語のデバッガ(gdbとrdb)を切り替えて使うことを可能にするツールをアップしてあります。VC# 2003以降のデバ…

ブラウザ間のCSS解釈の違い

バイト先で、ブラウザ間のCSS解釈の違いでだいぶはまりました。 参考リンクを貼っとこう。WinIEのバグリスト特に、バイト先ではまったのは以下、 ボックスの幅や高さを算出するときにパディングやボーダーのサイズを含めてしまうブラウザ間の差をバグと呼ぶ…

オープンソースソフトウェアのHTML Help (chmファイル)

オープンソースソフトウェア(autoconf, gcc, perl等)のマニュアルをchm形式に変換してアップしてるサイト http://htmlhelp.berlios.de/wiki/CHM_Bookschmだと、前方一致のキーワード検索ができるので、autoconfのマクロを調べる場合などにとても便利。chmの…

tracプラグインとか

なぜか大学院の授業でtracのプラグインを作ることになった。とりあえずプラグインのtutorialを見てたら、プラグインが表示するHTML用テンプレートの記述に "include header.cs"みたいなのを発見。csファイル*1ってなんだよと思って調べてみたらClearSilverの…

株売買の準備

久しぶりに更新。そろそろ株に手を出そうかと考えているので、株の売買補助ツールについて調べています。ざっと探したところ、株価やチャート表示や、株価を条件に使った自動売買ツールはあるようですが、各株式会社に関連するニュースをチャートと対応づけ…

ocamldebugの調査

ML言語の一種であるOcamlに付属している、ocamldebugというデバッガについて調べたのでメモ。 かなり間違っている可能性があるので、注意。 gdbライクなCUI break,info,helpコマンド等、gdbを知っている人なら何となく使えるようにコマンド名がつけられてま…

Debug.Traceを使ってprintf風デバッグ

Haskell処理系であるGHCにはDebug.Traceモジュールというのが提供されています*1。その中のtrace関数を使うと、C言語のおけるprintfデバッグのようなことができます。ただ、Haskellは遅延評価を行う言語なので、traceが呼び出されるタイミングに注意する必要…

Haskellだってバグるよねっていう話し(C言語の関数をHaskellで呼ぶ)

C言語の関数をHaskellから呼び出すための記述に関する仕様が存在します*1 自分が使っているHaskell処理系のGHCは、この仕様に準拠しています。そこで、この機能を使ってバグったC関数をHaskellから呼ぶことでメモリアクセス違反させてみます*2。 // foo.c #i…

Haskell本の感想とMonad

教養のために「ふつうのHaskellプログラミング」を読みました。Haskellを触ったことがない私のような人が読むのにちょうど良い本でした。ただ、Monad則については読んでも良くわかりませんでした。Maybeモナド等、Monadインスタンスの使い方はわかるのですが…

スレッドの関数一覧(pthread, win32スレッド)

輪講でpthreadについて、ゼミ担当の人の話を聞きました*1。せっかくなので、windowsのスレッド用 apiと大体対応する関数を並べてみます。 なお、個々のスレッドをあらわすデータ構造の型は、pthreadではpthread_t, windowsスレッドではHANDLEです。各関数の…

ゼロ番地を先頭とするページにマップする

mmapのflags引数にMAP_FIXEDフラグを指定することで、OSの実装によってはゼロ番地を先頭とするページにマップできます*1たとえば、i386以降のCPU, Vine Linux 4.0, gcc-4.1.1を使った環境で以下のコードをコンパイルして実行するとゼロ番地にアクセスできま…

最適化のトリビア

以下のコードがあったとします。 #include <stdio.h> int main(int argc, char* argv[]){ int i; if(argc > 1){ i = 10; } printf("i = %d\n", i); return 0; } これをgcc 4.1.1でコンパイルして実行すると以下のようになります。 $gcc -O2 main.c $./a.out 10 <-----</stdio.h>…

static変数に対応するアドレスを探す(ELF format編)

共有ライブラリ上に存在する、あるstatic変数aのプロセス上でのアドレスを知りたいときがあります。apt-getでインストールした共有ライブラリをデバッグしたい時なんかがそうです。 最近、こういったアドレスを探すことが多いので、忘れないようにメモってお…

仕様書等のリンク集

ソフトウェア実装の際、様々な仕様書を参考にすることがありますが、どんな仕様書がどこにあるのか忘れることがあるのでメモっておきます。仕様書だけではなく、複数の仕様書について言及、比較をしている資料も挙げておきます。 オブジェクトファイルに関す…

補足

バックトレースがうまくとれない件ですが、これに対処しようとした場合、test.rbのdebuggerメソッドでbreakした瞬間に、Ruby言語上のstack frameに関するデータ構造をアセンブラ(C言語)レベルで読み込んで解析する必要があると思います。でも、これを言語…

デバッガの実装(Ruby/Python編)

最後に、Ruby,Pythonのデバッガの実装について調べてみました。Pythonには、pdb。 Rubyにはdebug.rbというデバッガが存在します。 これらは、各言語が提供するフック関数を利用して実装されています。フック関数を設定する関数(メソッド)は以下になります…

デバッガの実装(Java編)

次はJavaのデバッガについて調べました。 背景 Javaプログラムの実行は、Java Virtual Machine(以下JVM)上に存在する仮想的なCPUがbytecode(仮想的なCPUが解釈する機械語)を解釈、処理をしていくことによって、行われます。bytecodeはJavaコードをjavacでコ…

デバッガの実装(C/C++編)

デバッガの実装について興味があるので調べてみました。まずは、基本であるC/C++(さらには、アセンブラ)のデバッガについて。 単語の定義 debugger デバッグを行うプロセス。debuggeeの実行制御等を行う debuggee デバッグ対象のプロセス 解説 一般的なOS…

はてなダイアリーへようこそ!

このページはあなた専用の日記(ブログ)です。*1さっそく「日記を書く」をクリックして最初の記事を書いてみましょう。はてなダイアリーの一番簡単な使い方を知りたい方は、以下の動画をご覧ください。(再生ボタンをクリックすると、はてなダイアリーの使…