サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
ktat.hatenadiary.jp
一年前(2014年5月末の作成日の.goなファイルがあった)くらいにGo Tourを途中までやったけど、ほとんど覚えてなかったです。 ディレクトリとか環境変数とかは、前若干コード書いたので、それっぽく残ってました。emacsのgo-modeも入ってた。 という状況から、ちょうど一週間くらいたった感じです。 作ったもの https://github.com/ktat/go-coloring テキストを正規表現で色付けするもの。そういうツールってあるっけ? https://github.com/ktat/go-pager ↑のやつにlessっぽくしようとしたpagerを組み込んでいたけど、分離した(go-termboxを利用)。 コードは、まぁ、まだまだアレというか間違ってる/分かってない可能性が高いです。 参考にしたところ/したいところ Goチュートリアル http://golang.jp/
CPANまわりのツールたちの開発が活発なので、翻訳しようと前々から思ってたのですが、ようやく翻訳しました。 CPAN::Meta::Spec ... CPANメタデータ仕様 cpanfile ... PerlアプリケーションのためにCPANの依存性を記述するためのフォーマット cpanfile-faq ... cpanfile FAQ Minilla ... CPANモジュールオーサリングツール Minilla::Tutorial ... Minilla チュートリアルドキュメント Dist::Milla::Tutorial ... Milla HOW TO App::cpanminus ... App::cpanminus cpanm ... cpanm コマンド Carton ... Carton plenv plenv-contrib 最初は、cpanfile とMinillaだけの
ちょっと遊んでいたら見つけたのですが、これ簡単ですね。 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($sql); } else { $pty->write("exit\n"); last; } } こんな感じにするだけで、perl から mysql の shell が叩けるよ。 いや、別に誰も嬉しくないけどさ。 top も叩ける。 use IO::Pty::Easy; my $pty = IO::Pty::Easy->new; $pty->spawn("top"); while
最近、Tengを使っていますが、それほど複雑でもないSQLを組み立てるのに、searchメソッドは使いにくいと思う時が割と多い(group by出来ないとか、x = ? or y = ? とか書きにくいとか)。たぶん、方針として、シンプルなSQL以外は、search_by_sqlをっていうことなのだろうと思います。 ですが、SQLを文字列として組み立てるのは、割とめんどくさいので、SQLを組み立てるモジュールを使って、search_by_sqlに渡しています。 O/Rマッパーで、SQLのクエリを組み立てるものが組み込まれてますが、Tengで使われているのは、SQL::Maker、DBIx::Classだと、SQL::Abstract。Tengのsearchメソッドでは、SQL::Makerのselect メソッドを使っていますので、出来ることは、selectメソッドに出来ることに限られます
行きたいなぁーと思いつつ、遠いなーと思っていたのですが、行ってみることにしました。 僕は東京の東の方に住んでるので、会場までは、1時間20分くらいかかりました。交通費は780円。時間とお金で遠さを実感w 迷いやすい会場ということでしたが、方向音痴の僕にしては、珍しく迷わずにいけました。 Hachioji.pmは基本的に飲み食いして、酔いが回ったころにLTするというノリとのことで、最初は雑談と飲み食い…というか、最初から最後まで飲み食いで、途中でLTみたいな感じ。初めての人が多いとのことで(僕も初めて)、自己紹介タイムなどがありました。 LTは、2hくらい経ったところから開始。 ノートPCやらiPadなんかでVNCクライアントを立ち上げて、プレゼンをみんなで眺めるといったやり方でした。紙の人もいました。 みんなで覗き込んでプレゼンを見るっていうのは、なんか良いですね。 でも、飲み食いしながら
とは言え、2日目のみの参加でした。1日目も出たかったなー。 個人スポンサーにもなってんだから、せめて懇親会くらい行きたいなーと思ってたんだけどね。夜に会議入っちゃったから、諦めた。 1日目後 Twitterで眺めてたら、PerlDojoとかいう面白いことをやっていたので、参加。 gfxさんの問題に回答おかしくないですか?と質問したら、自分が問題読んでないことが発覚。すみませんでした m(__)m ツッコミを受けた後、 と言われたので、perldojo を fork。 動作確認してから、pull request したかったので、Arkのインストールから、依存モジュールをいれていると… …Perl 5.12以降でしか動かないことが発覚。 がーん。 で、仕方ないので、Perl 5.14系のコンパイル、依存モジュールのインストールなどなどしているうちに、結構な深夜に。 なんか眠れないし、1日目行け
compizも楽しかったけど、4GBメモリ積んでて通常作業でSwapも結構使っちゃうので、もういいや。 懐かしのblackboxにしようかと思ったけど、さすがに、数年間メンテされてないし、古すぎ感があるので、別のものを試してみた。 なお、Ubuntu 10.04の話です。 最初、Fluxboxを試したのだが、どうにもグラフィックが重い(特にデュアルディスプレイ)。で、他のものを物色していたところ、OpenBoxが目に止まり、何週間か使ってみていますが、かなり良い感じです。 こんにちは、Openbox Openbox も Blackboxからforkされて作られたが、3.0からは全部rewriteされたそうだ。blackboxはC++だが、openboxはC。 ちなみに、下記にX window manger の比較がある。 http://en.wikipedia.org/wiki/Compa
2ヶ月くらい前からか、id:tokuhiromさん作成のAmon2を会社のFrameworkのベースにしています。 Amon2は拡張しやすい感じだし、Flavorをメンテするのは結構だるいし、会社なら共通させたほうがいいなーということで、継承して使ってます(Flavorも使っていますけど)。ORマッパーはid:nekokakさんのTeng、テンプレートはid:gfxさんのText::Xslate。 当分公開できるような状態にはならない気がするので、こんな感じにしてます的な話(実際のコードと同じだったり、全然違ったりするところもあるけど、手を入れたポイント的な話)。仮に、MyWAFていう名前空間で書きます。 コードが断片的なのでよくわかんないかも…しれません。 最近書かれているAmon2に関する記事 id:tokuhriomさん自身の解説 http://blog.64p.org/entry/
バッチ処理がやたらメモリくってると思ったら、なんかおっきいファイルをgetしてたせいでした orz 一旦ファイルに吐き出して、後でopenして使いたいような場合は、LWPでは、 my $ua = LWP::UserAgent->new(); $ua->get('http://example.com/big_file.gz', ':content_file' => '/path/to/big_file.gz'); Furlの場合、write_fileオプションを使います。こちらはファイルハンドル。 my $f = Furl->new(); open my $fh, '>', $filename; $f->request(url => 'http://example.com/big_file.gz', write_file => $fh); Furl::HTTPのドキュメントにあるけど、Fur
こんなんでいいかなぁ。その2。 forkじゃアレなんで、AnyEventで書いてみた(https://gist.github.com/1000223)。 追記: 以下、to_stringですが、Protocol-WebSocket-0.00906 では、Protocol::WebSocket::Handshake は to_bytes に変わっているようです。 #!/usr/bin/perl use utf8; use strict; use warnings; use AnyEvent; use Protocol::WebSocket::Frame; use Protocol::WebSocket::Handshake::Client; use IO::Socket; use constant {READ => 0, WRITE => 1}; $| = 1; run(); sub run
こんなんで良いかなぁ。 #!/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 { my $s = IO::Socket::INET->new(PeerAddr => '127.0.0.1', PeerPort => 50000, Proto => 'tcp'); if ($s->connected) { my $hc = Protocol::WebSocket::Handshake::Client->new(url
キーボード叩いている最中にタッチパッド触ってしまって、イライラすることよくありますよね? 僕の使っている、Inspiron mini 12 はタッチパッドが結構広いので、キーボード叩いてる最中にスクロールして、「うぜーーー!!!!」っていうのが過去何回もあって、その度にイライラしてましたが。(Inspiron mini 12はスクロールが遅いので、更にうざいのです) 別件でpackageながめていて、たまたま見つけた syndaemon。こいつが役に立ちます。 使う前に、/etc/X11/xorg.confの設定を確認してください。 Section "InputDevice" # .... Option "SHMConfig" "on"SHMConfigというのをonにしてやらないといけません。 X 再起動して、さっそく実行。 % syndaemon引数なしで動かすと、キーボード叩いてる最
なんか流行ってるから(違 いろいろ、ごめんなさい。 肯定文の構成 主語 (助動詞) 動詞 他助動詞は基本的に、動詞に対して何らかの意味を付加するもの。 代表的な助動詞。 be動詞 進行形、受身の意味を付加する 進行形は、動詞の現在分詞を取る 受動態は、動詞の過去分詞を取る can 可能の意味を付加する 動詞の原型を取る have 完了の意味を付加する 動詞の過去分詞形をとる will 未来の意味を付加する 動詞の原型を取る do 助動詞を伴わない一般動詞の疑問や否定に使われる 動詞の原型を取る なお、助動詞が使われる場合は、時制は助動詞が引き受ける。 否定文の構成 助動詞の後ろに not をつける。 主語 助動詞 not 動詞 他ただし、be動詞の場合は、be動詞の後ろに not を取る。 主語 be動詞 not 他助動詞がbe動詞を取る場合は、前者の形になる。 疑問文の構成 助動詞を前に
Util::Allですが、終わったというか、キリがないので、そろそろやめる。 CPANにあげようかと思ってるんですが。Allなんて厚かましいのはいいんだろうか。 現在、250以上の関数(まじめに数えてない)を集めました。一部は自分で新たに書いたものや、wrappingしたものもあります。70個くらいのモジュールに依存してます。全部の関数の説明の podは3500行近い(Util::All::Manual)。 なお、ほとんどの説明は自分で書いたものではなく、Pod::Sectionで、抜き出したものを埋め込んでいます。ので、ちょっと見づらいところがあるかも。あと、説明書いてなくて、代わりに関数定義がそのまま埋められてるのもあったりしますが、それはそのうち直します。 一部をのぞいて、script/definition/functions.yml を変更して、script/create_util
perl-casual #2 の ustream を聞いてると、makiさんが、Live Codingしているときに「パスワード見えちゃうなー」みたいなことを言っていたので。 たぶん、ご存知だとは思いますが、パスワードが必要なデモをする時は IO::Prompt 使うといいんじゃないでしょうか。 use IO::Prompt; my $password = IO::Prompt::prompt("input password:", '-echo', '*'); print $password->{'value'}; 打った文字は、-echo で指定した、"*" に変換されて表示されます。 Reviewによると、Windowsじゃ動かないようなのですが、Windowsの場合に使える代替モジュールは...なんかあるのかな?
------------------------------------------- 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 flag utf8 encode_json(JSON) flag byte encode_json(JSON::XS) flag byte decode_json(JSON) byte flag utf8 decode_json(JSON::XS) byte flag utf8 decode(JSON OO) byte f
Unicodeブロック使おうと思ってググってたら。 \p{InHalfwidthAndFullwidthForms} # 半角カナなど(※0-9とかA-Zにもマッチするみたい・・) http://blog.livedoor.jp/sasata299/archives/51194035.html あら、そうなんだ。 perldoc unicodeを読み直すと、Unicodeブロックを組み合わせてユーザー定義の文字プロパティ(User-Defined Character Properties)を作れると書いてあった。In/Isから始まる次のような関数を定義する。 package Hoge; sub InHankakuKana { return <<'END'; +utf8::InHalfwidthAndFullwidthForms -utf8::N -utf8::Ll -utf8::Lu EN
アホな記事は新しい記事で忘れよう。 というわけで、tran、久々に手を入れてみた。 http://github.com/ktat/tran init 死んでたんじゃないかと思います。直したつもり。 backpanから、ソースを取得するようにしました。 他はドキュメントの修正。 CPANには結構ないバージョンが多いので、自動でbackpanから取りたいなーとは思ってたんですが、僕はbackpan.perl.org を見てしまっていて、ここには、Authorからの一覧しかないんです。 で、どうにもならんなーとか、思ってましたが、ちょい前に、IRCで backpan.cpan.org を教えてもらい。こっちなら、module名からの一覧があるので、これを使うようにしました。 依存の多いモジュールはオプションにして、本体は依存少なくても動くようになればいいなぁ。Data::Visitorの依存を切
Tritonが固まるとかいう話を聞いて、どうしようかなぁーと思って、試してみました。 http://sourceforge.net/apps/mediawiki/mysqlftppc/index.php?title=Main_Page インストール方法は、下記に簡単にまとめています。 http://www.rwds.net/wiki?page=MySQL5.1+%2B+full-text+parser+plugin インストールの注意点は、Mecabをutf8対応にするところくらいでしょうか。 64bit環境では、full-text parser pluginを64bitのCFLAGSをつけてコンパイルしろと言うことだったんですが、何つけたらいいかわからず、-m64てのをつけました。あってたのかしらん。 簡単にしか試していませんが、100万点のレコードのtext型のカラムに対して、sele
翻訳で取りたい diff というと オリジナル - 翻訳間 オリジナル - オリジナル 翻訳 - 翻訳 て、感じ。3はおまけかな。 tran diff cpan Mooseとすると、オリジナルと翻訳のdiffが取れます。冒頭が微妙だったので、途中を抜粋。 --- /home/ktat/.tran/original/cpan/Moose/0.93/lib/Moose/Manual.pod +++ /home/ktat/git/github/jpa-translation/Moose-Doc-JA//Moose/Manual.pod @@ -2,49 +2,29 @@ =pod -=head1 NAME +=head1 題名 -Moose::Manual - What is Moose, and how do I use it? +Moose::Manual - Mooseとはなにか、どうやっ
翻訳のためのバージョン管理ツール「tran」ですが、ある程度、動くようになりました。 http://github.com/ktat/tran/ ガチャガチャ変更したりしていて、当初の config やオリジナルはもう使えません。 一旦全部捨ててください。もう構成の変更はしないつもりです。 % rm -rf ~/.tran/んで、 % tran initしていただければと思います。 何を変更したかっていうと、 オリジナルの保存場所に、リソースの名前を入れることにした .tran/original/cpan/DBIx-Class/ みたいに (cpanがリソース名) オリジナルを保存するときに、pod に変換するとかはやめた それは、Translation以下のクラスでやらせて、translation の repository に保存するときに変換するようにした Perl の distribu
明けましておめでとうございます。本年もよろしくお願いします m(__)m 昨年末ころから、Perlのドキュメント日本語訳関係で動きがあったので、前から作ろうと思ったものをちょっと、作り始めてみた。 翻訳作業において、オリジナルがバージョンアップすると、オリジナルのバージョン間のdiffをみつつ、翻訳のバージョンアップをするっていう作業が必要なんですが、以外と邪魔くさい。 というのは、自分で、オリジナルのバージョン管理までやんないといけないハメになっちゃうから(もちろん、モジュール作者がリポジトリを持っている場合はあるけど、各モジュールで違うってのはめんどくさいし)。 なので,古いバージョンから新しいバージョンへのアップデートは一から訳すよりは楽なはずなのに、ちょっとめんどくさい。 svk を使った方法は以前試したものの、それでもめんどくさいので、やはりそれように何かほしい。 というわけで、
svn co http://svn.coderepos.org/share/lang/perl/POD2-JA/ から、どうぞ。 そういえば、そもそもPOD2って何だ、という話を書いてなかったので、ちょっとだけ。 POD2は、ローカライズされた pod を perldoc で読むための仕組みです。 構造はいたって簡単で、-L 言語コード オプションを渡すことで、POD2::言語コード:: という名前空間に通常のモジュール名のついたpodドキュメントがあれば、そちらを表示して、なければ、普通のを表示するっていうだけです。 perldoc -L JA Test::Moreは、下記と一緒。 perldoc POD2::JA::Test::More || perldoc Test::Moreただ、問題として、perldoc は、マルチバイトを扱えない。ので、Pod::PerldocJpに同梱の p
昨日一昨日は、perldocjp/new-perldocjp懇親会行ってきました。 皆様お疲れ様でした。いろいろ話せて有意義でした。 弾さんに「真面目過ぎる」と怠惰分が足りないという指摘を受けましたw その後、なんとなく、POD2に準じた形でいけないかなぁと思って、ちょっとプログラムを書いてみました。 http://coderepos.org/share/browser/lang/perl/POD2-JA 特徴ですが、 JPRP(Japanized Perl Resource Project)のcvsからチェックアウトしたデータを使う ので、最初に、cvs checkout が必要 =encoding がついていないドキュメントにはEncode::Guessで判断して、自動でつける バージョンは同じか直近の新しいバージョンを拾う インストールされていないドキュメントの翻訳はインストールしな
Casual Talks#1 http://perl-casual.org/2009/11/casual-talks1-1.html 行ってきて、話してきました。 色々お話しできて楽しかったです。 みなさまお疲れさまでした。 空気読まずに自分のつくったモジュールの紹介してきました。 Util::Any http://rwds.net/slides/util-any/ 5分は厳しいなぁと思ってましたが、 やっぱり最後まで話せませんでした。 気が向いたら使ってやってください。
気がついたら、何かしら追記してます。Wikiにでも移そうかな... 先日、深夜4時くらいに変なテンションになって、Kindleを注文しちゃいました。 で、昨日、だるくて会社を休んだら、ちょうど届いたので、触って遊んでました。 開けてみたところ、すでに画面に何かが表示されています。 電子ペーパーは表示の切り替えに電力を使うだけで、表示中は電力を使わないそうで。 なので、最初から、表示されている。ちょっと面白い。 Kindleには、ユーザーガイドが入っているので、それを読みますが...結構長い。 あと、なんか似たような話が何回か出て来てるきがするんだけど... と、途中で、読むのをやめて、いろいろ触ってみました。 というわけで、適当なレビューです。 基本操作 各種ボタンはだいたい見たまんまなんですが。 HOME Kindleのホームに来ます。 MENU メニューが表示されます。各場面で表示され
@ARGVには、普通UTF8フラグはつきません。どうやってフラグをつけるのか調べてみました。 その後、ブックマークコメントを見て、モジュール探したら見つけましたんで、追加しました。 -C か環境変数でやる こちらで見つけました. 起動オプション-Cか環境変数PERL_UNICODEにAを与えてやります。 perl -CA -e 'print utf8::is_utf8($ARGV[0]);' あああ PERL_UNICODE=A perl -e 'print utf8::is_utf8($ARGV[0]);' あああ -CやPERL_UNICODEが取れる値は、perldoc perlrun にあります。以下、抜粋。 -C [number/list] The "-C" flag controls some Unicode of the Perl Unicode features. As o
YAPC::Asia 2009で行われた、「記憶」のセッションですが、相変わらず僕の翻訳が拙いので、英語が不得手な人には難しかっただろうと思いまして、訳しました(スライドを理解するために、半分くらいは訳してましたけど)。 http://perldoc.jp/docs/modules/KiokuDB-0.32/KiokuDB/Tutorial.pod ※久々にあげたので、基本EUC-JPって忘れてました。utf-8で読み直していただければと思います。そのうち直るかと思います... とは言え、ぶっちゃけ、あんまり翻訳に自信はないです。 tokuhiromさんが、以前に解説されているので、そちらも見るといいのではないかと思います。 しかし...やたら時間かかってしまったので、ヘコむ。 KiokuDB本体の方を訳す予定は今のところありません。
YAPC::Asia 2009 面白かったです。運営の皆様方、お疲れ様でした&ありがとうございました。 今回、「記憶」のセッションを訳したのですが、相変わらず拙くて申し訳なかったです。 Tutorialを訳し中なので、近々あげたいと思います。 で、YAPCで刺激をもらったので、新しいモジュールに手を付け始めました。 Util::Allというモジュールです。 これは、以前に作ったUtil::Any を使って,色んなモジュールのユーティリティを集めたものになります。 使い方は、Util::Anyと変わりません。 use Util::All -list, -md5; print md5_base64("aaaaaa"); print uniq (1,2,3,1,3,4,5,8); こんな感じ。 今まで手をつけなかった理由として、僕自身がそんなにモジュールのユーティリティ関数を知らないっていうのと
次のページ
このページを最初にブックマークしてみませんか?
『Practice of Programming』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く