2011-09-01から1ヶ月間の記事一覧

RETVAL経由の AV*, HV*の return

'perldoc perlxs'に 'Returning SVs, AVs and HVs through RETVAL'という 項目があって、ここに書いている通りにやると sub ret_av { ... return @array; } sub ret_hv { ... return %array; }みたいになるのかなと思って試してみたら違ったということのメモ…

List::UtilsBy::XSを書いてます。

XSの勉強ということで, List::Utilや List::MoreUtilsに 似ている List::UtilsByの XS版を書いています。 リポジトリ syohex/p5-List-Utils-By · GitHub ベンチマーク まだすべてが実装できているわけではないんですが、 sort_by, nsort_by, max_byについて…

Emacsで blockdiagをプレビューする

http://meme.efcl.info/2011/09/quickrunvimblockdiag.html 上記の Emacs版を書いてみた。 コード (defun blockdiag-buffer () (interactive) (let ((blockdiag-output "/tmp/blockdiag-buffer.png") (current-file (buffer-file-name (current-buffer)))) (…

H8300用クロスコンパイラの作成

コンパイラテストツールが 16bitコンパイラでも使用できるか ということを確かめたかったので作って見ました。 基本的にその他のクロスコンパイラと同様です。 以下とほとんど同じです。 v850用クロス開発環境の構築 - Life is very short ビルド環境 Ubuntu…

__builtin_return_addressについて

__builtin_return_address関数の紹介。簡単にいうとある関数が どこから呼び出されたか知ることができる関数です。厳密には 該当の関数を終えたときにどの番地に戻るかということなの ですが、たいてい call命令などの次の命令を示すので、呼び出した 場所の…

IO::Prompt::Simpleを少しいじってみた

にひりずむ::しんぷる - IO::Prompt::Simple 書いた 会社の印刷のために IO::Promptを使ったスクリプトがあったんですが、 IO::Promptが Perl 5.14で動かない問題があったので, 自分で適当に書いたコードを使っていました。 そんな中 @xaicronさんが IO::Pro…

call-processで標準出力と標準エラー出力を分離する

call-processのドキュメントには書いているんだけど 試したことがなかったので試してみました. BUFFER 引数にリストを与えるというだけのものです。 テストのために使うプログラムは以下のとおりです。 #!perl use strict; use warnings; print "This messag…

カレントバッファを Postscriptとして出力する

Emacsはデフォルトで Postscriptへの変換 ps-spool-*関数(ps-spool-buffer等) があるんですが、デフォルトだと日本語が文字化けしたり、見た目も個人的に いまいちなので、u2psを使って Postscriptに変換する elispを書きました。 毎回毎回手打ちするのが面…

Perlに予約語ってあるのだろうか?

某ソースコード解析ツールを見ていると、各言語の予約語の定義という ものがあり、そういや Perlの予約語ってなんだろうって思った。 予約語の定義とは Wikipediaによると 予約語(よやくご)とは、プログラミング言語において字句的には識別子(変数名、関…

アクティブなウインドウを四隅に移動させる

いろいろと作業をしていると別のウインドウを見つつしたいから, ちょっと 隅まで移動させたいということがあります. マウスで移動させてもいいのですが, キーボード操作で移動できた方がいいかな, ということで書いてみました. 利用したコマンド wmctrl xpro…

attribute packedに関するコード生成

各 OSの IPヘッダ構造体を見ていると, attribute packedを使っているのと 使っていないのがあってなんでだ、って思って生成するコードを調べてみた。 attribute packedをつけているのは NetBSD, FreeBSD. つけてないのが Linux, OpenBSDです. 各 OSの定義 Fr…