2011-01-01から1年間の記事一覧

Text::UnicodeTable::Simpleというのを書いてます

まだいい加減なレベルの段階なんですが、とりあえず紹介. 書いた動機 Text::ASCIITableや Text::SimpleTableでは, FullWidthな文字が 扱えなかったためです。 Text::ASCIITableを 2文字幅の文字に対応させる - Life is very short Text::ASCIITableでなかば…

perl-5.14で IO::Prompt::promptが失敗するケース

$ARGVの扱いかが変わったことが原因らしい。 package mainで動かす分には問題ないですが、他パッケージで利用していて Perlのバージョンアップを行う場合は注意が必要です。 Failed IO::Prompt::prompt in Perl-5.14 · GitHub バグレポートが積み重なってい…

c-modeの自動インデントを無効化

emacs C-modeのTAB設定を完全に無効にする - nakayama-blog ここにあるように, デフォルトだと c-modeってコンマとかカッコをタイプしただけで オートインデントされます。自分でスクラッチから書いたような場合は別に これでも問題ないですが、他人の書いた…

GCCの各オプティマイズレベルで有効になる最適化を調べる

gcc

GCC 4.4ぐらいから見たいなのですが、-Qオプションを使うと、 最適化等でどのオプションが有効になるかがわかるみたいです。 具体的には以下のようなコマンドです。 % gcc -O2 -Q --help=optimize # 個々のオプションについて 'enabled' or 'disabled'が確認…

重複しない乱数の生成

Perlで乱数生成 - ハブ君の寝言 を見て、昔自分もそんな感じで書いてたなぁと思い出しつつ、 今の知識で書いてみました。 手法1 0から nまでの配列を生成 0から nまでの乱数を生成 (2)で得られた indexと配列の最後の要素を交換 n = n-1とし, (2)に戻る. こ…

Parse::RecDescentを使って .iniファイルのパーサを書く

Parse::RecDescentを一回ぐらい使っておこうかなということで使ってみた。 書いてみたのは .iniファイルのパーサです。たくさんモジュールがあるし、 実際に使う気があるわけでもなく、ただ練習ということで。 iniの仕様 書くにあたってわかったのですが、.i…

emacsclientを使ったシンタックスハイライトウェブアプリ

[Orgmode] org batch job using emacsclient?を見ていたら、emacsclientの --evalオプションを使うといろいろ遊べそう だなと、いうことでシンタックスハイライトのウェブアプリを書いてみた。 Text::VimColorみたいなことを Emacsでもできないかと思ってた…

Text::ASCIITableを 2文字幅の文字に対応させる

Text::ASCIITableがmulti-width charactersに対応していないようですよ!腕に覚えのあるPerl Mongerにおかれましてはパッチを書いてみてはいかがでしょうか!!2011-06-11 18:46:31 via Tween このようにText::ASCIITableはデフォルトでは半角文字だけで日本…

Perlで NTPを使う

Net::NTPというモジュールがあったので使ってみた。 なんか名前的にデフォルトで入ってそうと思ったけど、 デフォルトでは入ってないですね。 コード get_ntp_response()のみを提供するモジュールです。 #!perl use strict; use warnings; use Net::NTP (); …

画面に80個の「=」でできた罫線を出力する

http://www.usptomonokai.jp/wp/?p=1536 画面に 80個の「=」でできた罫線を出力するワンライナーのシェルスクリプト 末尾は改行 85文字を超えてはいけない( echo ===.....=(80個)はなし ) 書いてみた 考えてみたけどそんなには出なかった。 % perl -le 'prin…

Perlでシンプルなカレンダを作成

Calendar::Simpleと Text::ASCIITableを使って書いてみた。。 プログラム #!/usr/bin/env perl use strict; use warnings; use Calendar::Simple; use Text::ASCIITable; my ($this_mon, $this_year) = (localtime)[4,5]; my $month = shift || ($this_mon +…

Data::Printerを使ってみた。

The Onion Stand: Data::Printer - a colored pretty printer for Perlで紹介されている Data::Printerというのを使ってみた。 例のままですが、一応。 インストール 依存モジュールはそこそこですかね。 % cpanm Data::Printer 使う とりあえずは pメソッド…

Emacs 23.3に付属する whitespace.elについて

たまにしか whitespace.elを使わないので気づかなかったのですが、 それまでの設定では Emacs-23.3で whitespace.elを使ったときに色が つきませんでした。 これは Emacs-23.3に付属する whitespace.elに加えられた変更による ものです。whitespace-styleと…

GlitchIMEの Perl版

勉強のために書いてみた。APIは同じにしてます。 実装もほとんど同じです。 元ネタ GoogleのAPIで仮名漢字変換するGem - ミニマリストhitode909の日記 デベロッパーガイド Google 日本語入力 - CGI API デベロッパーガイド リポジトリ syohex/p5-App-GlitchI…

Capture::Tinyを使う

標準出力、標準エラー出力への書き込みを別々に 取得したい場合に便利に使えます。 ソース #!/usr/bin/env perl use strict; use warnings; use Capture::Tiny qw(capture); my ($stdout, $stderr) = capture { warn "message to STDERR"; print "message to…

画像回転 Webアプリ

Webアプリというものがよくわかっていないのと Plackを使ってみたいという ので、作ってみた。少し知識が広がった気がした. コード #!/usr/bin/env perl use strict; use warnings; use utf8; use Encode; use File::Temp; use Plack; use Plack::Builder; u…

半角カナ混じりの文字幅を数える

文字幅ってどうやって調べるんだろって思って、 使えるモジュールを探してみた。 #!/usr/bin/env perl use strict; use warnings; use utf8; my $str = "リンゴゴリラ"; { use Unicode::Japanese; printf "[%s] length = %d\n", 'Unicode::Japanese', Unicode::J…

さくらサーバに pacoをインストール

さくらサーバに 'make install'で入れるものを管理するために pacoを インストールしようかと思ったのですが、CentOS 5.5の yumでは見つけられなかったので、 ソースからインストールしたので、そのときのメモ. ソース ソースはこちらpaco - a source code p…

JavaScript::Packerを用いたJavaScriptの圧縮

JavaScriptのサイズを減少させるためのモジュール JavaScript::Packerの例。 #!/usr/bin/env perl use strict; use warnings; use autodie; use JavaScript::Packer; my $js = shift; open my $fh, "<", $js; my $js_code = do { local $/; <$fh>; }; close …

blockdiagを使って, コールフローを作成する

http://blockdiag.com/blockdiag-ja/build/html/index.htmlを見て、なにかできないだろうかって考えてみて、cflowの結果から コールフローが作れるなって思って、コードを書いてみた。 準備 cflow, blockdiagをインストールします % sudo aptitude install c…

elispで 「sleep sort」を実装してみた

今流行の sleep sortを emacs lispで書いてみた。 元ネタ 常識を覆すソートアルゴリズム!その名も"sleep sort"! - Islands in the byte stream http://www.yuyak.com/1339 コード deferred.elを使いました (require 'deferred) (defvar sorted '()) (defun…

HTML::TagCloudのサンプル

へぇこんなんのあるんだって思ったらかなり古くあるものだった。 どんなんか知るために、サンプルを書いてみる。 参考 http://search.cpan.org/~robertsd/HTML-TagCloud-0.36/lib/HTML/TagCloud.pm ソース DMMから女優ランキングを取得し、それをタグクラウ…

HTTP::Tinyを使う

Perl 5.14.0が出ました。気になるものとして、新しい標準モジュールに入った HTTP::Tinyがあります。cpanmも使っているモジュールです。 標準モジュールで HTTPクライアントが簡単にかけると、助かる場面と いうのは多いのではないでしょうか。 perl5.14.0 J…

Macで Clipboardを utf-8で使う。

Clipboardモジュールは OS間のクリップボードの違いを埋めてくれるもの なのですが、Macの場合、MacJapanese(Shift_jis + Apple拡張)で encodeしないと ちゃんと日本語が扱えないというのがあって、それだと Linux向けに書いた utf-8の コードをそのまま持っ…

エディタが自動で削除した行末の空白以外の修正を git addする

git

[緩募] gitでdiff -b相当のaddをしたい。つまり、エディタが勝手に実施したホワイトスペースの変更をcommit logに含めたくない。2011-04-24 09:22:22 via Tween これを見たとき、あるあるって思ったので実現のためのコードを書いてみました。今まではこのこ…

ランダム Cプログラムジェネレータ Csmith

はじめに ランダム Cプログラムジェネレータ Csmithの紹介.http://embed.cs.utah.edu/csmith/ コンパイラのテストでランダムテストは効果的であるというのが 昔から言われていまして、いくつかその手のものがあるのですが、 Csmithは GCCや llvm-clangで多く…

常に一定の余裕・ゆとりを持つ

はじめに このエントリは新卒準備カレンダー 2011春 : ATNDの 46日目の記事です。 わりとえらそうに書いているかもしれないですが、ここに書いていることを 私は完全に実践できているわけではありません。自分への言い聞かせも含め書きます。 お前、誰よ? …

PSプリンタで印刷するためのスクリプト

会社で GUI経由だと印刷できないんだけど、コマンドライン経由だと 印刷できることが最近分かりました。でも lp、 lprってオプションが 覚えられないのでそのためのユーティリティ。両面印刷と集約印刷、プリント枚数ぐらいしかいじらないのでそれのみの対応…

pcc(Portable C Compiler)のバグ

はじめに pcc(Portable C Compiler)の 1.0.0がリリースされたということで testgenを使ってテストしてみたんですが、 float周りのテストがえらくこけるなってことでその原因を調べました。 その経緯について記します。 環境 Ubuntu 10.10(32bit) pcc1.0.0, p…

環境変数を設定する elispの生成

Emacsにシェルで使っている環境変数を設定したい。 主に perlbrew関連なんですけど。シェルから Emacsを起動したらそれで 解決なんですけど、どうもシェルから起動すると意味もないのに ミニバッファにフォーカスが移るということが多発しました。 なので 環…