Practice of Programming

プログラム とか Linuxとかの話題

Teng::Plusing::SearchBySQLAbstractMore 0.07リリース

Teng::Plusing::SearchBySQLAbstractMoreTeng内で用意されている_executeメソッドを使うようにしましたので、エラーメッセージが改善されています。 というか、普通のTengが出すエラーメッセージになりました。# なんで、素のexecuteを使うようにしちゃって…

IO::Pty::Easy が簡単・便利

ちょっと遊んでいたら見つけたのですが、これ簡単ですね。 use IO::Pty::Easy; my $pty = IO::Pty::Easy->new; $pty->spawn("mysql -u root"); while ($pty->is_active) { while (my $o = $pty->read(1)) { print $o; } if (my $sql = <>) { $pty->write($sq…

SQL の Query Builder についてのとりとめのない話

誰か、ココが嫌だよQuery Builder的なエントリを書いてくれないかな。 使いどころ 動的に条件を組み立てるところ(whereに与えるカラムが変わったりする) 使わなかったら、複雑な条件を動的に組み立てる場合は、sprintfでSQLを組み立てるみたいなことになって…

Teng::Plugin::SearchBySQLAbstractMore リリース

ケースによりますが、最近のプロジェクトだと、searchメソッドじゃ足りないことが多かった(50%くらい)ので、SQL::Abstract::Moreをクエリービルダーに使えるようにしました。 Teng::Plugin::SearchBySQLAbstractMoreリリースしたらblog書こうと思ってたら、…

Text::Parts 0.08 をリリース

先日リリースしました。 https://metacpan.org/module/Text::Partswrite_files の性能がちょい上がってます。それだけ。Text::Parts::Partオブジェクトを作るときに、file open & seek しているのですが、write_filesの場合は、頭からファイルをreadして書き…

Text::Parts 0.07 をリリース

Text::Parts 0.07 0.06も上げたのですが、微妙なところがあって、すぐに0.07をリリースしてしまった。変わったところ。Text::Partsにwrite_filesメソッド追加。 $s->write_files('file%d.csv', num => 4); みたいな感じ。 # 0.06で追加したけど、0.07でイン…

SQLを組み立てるもの

最近、Tengを使っていますが、それほど複雑でもないSQLを組み立てるのに、searchメソッドは使いにくいと思う時が割と多い(group by出来ないとか、x = ? or y = ? とか書きにくいとか)。たぶん、方針として、シンプルなSQL以外は、search_by_sqlをっていうこ…

[Linux][vim] samba上のファイルをvimで編集する時のtimestampの問題を回避する設定

どうも、samba上でvimでファイルを編集していると、変更してないのに変更されていると文句を言ってくる。 WARNING: The file has been changed since reading it!!! 警告: 読込んだ後にファイルに変更がありました!!!こいつです。 ググってみたところ、samba…

Hachioji.pm #10 に行ってきた

行きたいなぁーと思いつつ、遠いなーと思っていたのですが、行ってみることにしました。 僕は東京の東の方に住んでるので、会場までは、1時間20分くらいかかりました。交通費は780円。時間とお金で遠さを実感w 迷いやすい会場ということでしたが、方向音痴の…

YAPC Asia 2011行ってきた

とは言え、2日目のみの参加でした。1日目も出たかったなー。 個人スポンサーにもなってんだから、せめて懇親会くらい行きたいなーと思ってたんだけどね。夜に会議入っちゃったから、諦めた。 1日目後 Twitterで眺めてたら、PerlDojoとかいう面白いことをやっ…

Text::Parts てのを書いた

githubにおいてます。テキストファイルを複数のパーツに分けるものです(実際に分割するわけではなく、分けた部分を読むためのオブジェクトを返します)。 各パーツは、行頭から始まって行末で終わる感じになります。行の途中で分けられるということはありませ…

ログを監視して怪しげな文字列を見つけたら何かする

Parallel::ForkManagerを訳しました(nekokakさんの0.7.5の翻訳からの差分だけなので楽でした)。 で、複数のエラーログファイルがあって、そのログファイルを tail(File::Tailを使って)しつつ、Errorを見つけたら、何かするっていうスクリプト。 例として、そ…

Amon2を継承して自分のWAFを作る

2ヶ月くらい前からか、id:tokuhiromさん作成のAmon2を会社のFrameworkのベースにしています。 Amon2は拡張しやすい感じだし、Flavorをメンテするのは結構だるいし、会社なら共通させたほうがいいなーということで、継承して使ってます(Flavorも使っています…

巨大なファイルをgetする場合のLWP::UserAgentとFurlの場合

バッチ処理がやたらメモリくってると思ったら、なんかおっきいファイルをgetしてたせいでした orz 一旦ファイルに吐き出して、後でopenして使いたいような場合は、LWPでは、 my $ua = LWP::UserAgent->new(); $ua->get('http://example.com/big_file.gz', ':…

Perl で WebSocket クライアント(AnyEvent)&サーバ(psgi)

こんなんでいいかなぁ。その2。forkじゃアレなんで、AnyEventで書いてみた(https://gist.github.com/1000223)。 追記: 以下、to_stringですが、Protocol-WebSocket-0.00906 では、Protocol::WebSocket::Handshake は to_bytes に変わっているようです。 #!/u…

Perl で WebSocket クライアント

こんなんで良いかなぁ。 #!/usr/bin/perl use strict; use warnings; use POSIX ":sys_wait_h"; use Protocol::WebSocket::Handshake::Client; use Protocol::WebSocket::Frame; use IO::Socket; use open ':utf8'; use open ':std'; $| = 1; run(); sub run…

podの原文に=begin original =end originalを挿入する関数

perlのドキュメントを翻訳する際に原文残す場合は、該当部分を =begin original 〜 =end original で囲むことが推奨されています。以下みたいな感じ。 =begin original 原文 =end original 翻訳 手で書くのは面倒なので、以下のような関数作ってます。 (defu…

MMM for multiple cluster

These days, I'm using MMM(Multi-Master Replication Manager). MMM is for the cluster which has one writer role and some reader roles. If you have some master databases, you have to separate configuration file for their master databases like…

Gnomeを捨て、OpenBoxに変えてみた

compizも楽しかったけど、4GBメモリ積んでて通常作業でSwapも結構使っちゃうので、もういいや。 懐かしのblackboxにしようかと思ったけど、さすがに、数年間メンテされてないし、古すぎ感があるので、別のものを試してみた。 なお、Ubuntu 10.04の話です。 …

日本語入力メソッド Sekkaのインストール

sekka は kiyokaさんが作っている日本語入力メソッドです。下記参照。 http://oldtype.sumibi.org/show-page/Sekkasekka のインストールは下記のとおりです http://oldtype.sumibi.org/show-page/Sekka.Setupとりあえず僕の環境(Ubuntu 10.04)では...以下の…

Applications

I bought Motorola xt720 about 2 months ago. My using applications are the following. Applications LinkPush Tell links from PC to Mobile using Google Chrome/Firefox Extention. LauncherPro Alternative HOME application. Enable to resize widge…

オンライン番号

あっ、下書きのつもりだったのに、保存しちゃってたwSkypeのオンライン番号を取得すると、発信者番号を表示できるとのことだったので、試しにやってみました。 僕は、もともとSkypeの月額料金を払ってます。固定電話に実質無制限にかけられるというやつ。 そ…

Vostro 1000 & overheating

PC

I have 2 Dell note PC, Vostro 1000. one is at my home and another is at our office. They works as Linux server.About 1 year ago, Vostro at our office overheated and shutdown. In that case, I called Dell service and he fixed it. He said the…

Util::All だいたい終わった

Util::Allですが、終わったというか、キリがないので、そろそろやめる。 CPANにあげようかと思ってるんですが。Allなんて厚かましいのはいいんだろうか。 現在、250以上の関数(まじめに数えてない)を集めました。一部は自分で新たに書いたものや、wrappingし…

select some sections from Module's POD

Pod::Section Usage: % podsection Catalyst SYNOPSIS # as text % podsection -u Catalyst SYNOPSIS # as plain pod % podsection Catalyst req # show pod of req methodExamle: %podsection Catalyst req res $c->req Returns the current Catalyst::Requ…

デモでパスワードが必要な時は

perl-casual #2 の ustream を聞いてると、makiさんが、Live Codingしているときに「パスワード見えちゃうなー」みたいなことを言っていたので。 たぶん、ご存知だとは思いますが、パスワードが必要なデモをする時は IO::Prompt 使うといいんじゃないでしょ…

Util::Any 0.20

In this version, 2 features are added. able to specify default kind of exports. able to define the kind which doesn't export anything, but executes code. default exports example: package Your::Utils; use Util::Any -Base; our $Utils = Clone…

逆引きにはまる

DNS

VMで動かしているWebアプリの反応が尋常じゃなく遅かったので、調べていた。 構成は以下のようになっている。 [自機] -- [開発機(ルータ)] -- [VM(開発機内)]VM内でWebアプリたたく分には速かったのですが、外から叩くと異様に遅い。 traceroute も遅い...け…

JSON, YAML & utf8 flag

------------------------------------------- JSON ------------------------------------------- SUBROUTINE INPUT OUTPUT ENCODE to_json(JSON) byte flag latin1 to_json(JSON) flag flag utf8 from_json(JSON) byte flag latin1 from_json(JSON) flag f…

compare Sub::Install/Data::Util/ExportTo for installing subroutine

To install subroutine, you can use Data::Util, Sub::Install or ExportTo. Rate sub_install export_to data_util_pp data_util sub_install 17980/s -- -65% -83% -90% export_to 51200/s 185% -- -50% -71% data_util_pp 103357/s 475% 102% -- -42% da…