perlのハッシュ(連想配列)のマージについてちょっと調べました。自分用のメモとして記録しておきます。 一番直観的な方法は以下のようなコードでしょう。 %hash = (%hash, %addition); ハッシュ %hash に対して、%addition の内容を追加します。 my %hash = ( 'key1' => 'value1', 'key2' => 'value2', ); my %addition = ( 'key3' => 'value3', 'key4' => 'value4', 'key1' => 'override1', ); %hash = (%hash, %addition); 上述のようなコードを実行すると、%hash の内容は以下のようになります。 'key1' => 'override1', 'key2' => 'value2', 'key3' => '
https://github.com/tokuhirom/node-perl/ ここ最近、プログラミング言語同士の壁が徐々に破壊されている気がします。あるプログラミング言語上で別なプログラミング言語を動くようにしたり、置き換えてしまったりするような類です。今回はその一つ、CPAN moduleをnode.js上で動かすという、かなり無茶な気がしなくもない、そんなソフトウェアnode-perlを紹介します。 var Perl = require('../index.js').Perl; var perl = new Perl(); perl.use('LWP::UserAgent'); var ua = perl.getClass('LWP::UserAgent').new(); var res = ua.get('http://mixi.jp/'); console.log(res.as_
こんにちは!モダンPerlの裏側しか知らないkoba04です。 今日は、少し前まで「続・初めてのPerl」を読んでいた自分が、遅ればせながらその便利さに感動して使うようになったPath::Classについてを。(ってもう使ってますよね。。) 多分Casual Trackの中でも最も初心者向けな内容になっているんじゃないかと思います。。 何が便利かというと、「File::Spec」や「File::Path」、「IO::Dir」、「IO::File」、「File::stat」などのモジュールにある関数を「Path::Class」をインターフェイスとして使うことが出来ます。 とりあえず「use Path::Class」でいいので便利ですね! オブジェクトの作成 まずはファイルオブジェクトの作成。(file) use Path::Class; my $file = file('path', 'to
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Lionを買ったのでせっかくだから、入れてみた。 mysql-5.5.19-osx10.6-x86_64/mysql-5.5.19-osx10.6-x86_64.pkg mysql-5.5.19-osx10.6-x86_64/MySQLStartupItem.pkg mysql-5.5.19-osx10.6-x86_64/MySQL.prefPane MySQLはこんな感じ。 ダウンロードしてクリックするだけ。 my.cnfは適当に/etcに作った。 osx10.6ってなっているけど、動いているみたい。 次はDBD::mysql sudo cpanm DBD::mysql エラー出ました。 libmysqlclient.18.dylibがないよーって。 エラーログを探してけど残ってないからメモできない。 シンボリックリンクを/usr/libに作成。 再度、試す。 エラー出ました。 t/80
以前http://tech.naver.jp/blog/?p=1369の記事を読んだのだけれど、それまでにprocessの知識が無かったりして、まったく理解できませんでした。そこでWorking with UNIX ProcessesやServer::Starterの中身を呼んでようやくhot deployの仕組みを理解できた(気になっている)ので、Server::Starterの実装を追いながら、それをまとめてみます。 hot deployとは hot deployとは「再起動の時にリクエストの処理を続けながら、変更の内容を反映するための手段」です。 通常serverをrestartさせるときは、stop -> startの流れになると思いますが、この場合stopしてから、start出来るまでの期間にリクエストを処理できない期間が発生します。その期間なしにdeployする仕組みがhot
そういえば、実際に256色を表示しているのか確認をしたことがなかった@HIROCASTERでございませう。 WEB関係の開発者ならば、仲良しのターミナル。いつもつかってますよね? でも、そのターミナルは本当に256色表示できるか、確認してますか?もしかしたら設定を正しくおこなっていないため、表示されていないことに気づいてないだけかもしれません。 Terminalまず。普段利用しているターミナルがそもそも256色を表示できるのかを確認します。 256色を表示するPerlスクリプト256色を表示するPerlスクリプトを取得します。 256colors2.pl$ wget http://www.frexx.de/xterm-256-notes/data/256colors2.pl $ perl ./256colors2.pl Perlスクリプトの実行結果 こんな感じで色鮮やかに表示できていれば、
後編を書く前に、YAPC::Asia2011が終わってしまったので、変な勘違いをされるかとやめようかと思ったのですが。。。とりあえず、YAPC::Asia2010の復習として、Plack時代のPerlによるサーバ運用では、わりと一般的なリバースプロクシによる運用を、このブログの実例で報告します。 前置き:plackupはわかったけど、実際どうするの? 「Perlは遅い」の原点だったApacheのcgi時代は終わりを告げ、Apacheに依存したmod_perl時代も終りを告げました。Plackを使えば、CGIだろうとmode_perlだろうとPerlのスタンドアローンサーバーであろうと、かなり汎用的に動かせる時代です。mod_perlとかFastCGI前から使っていれば、あるいは、「Rubyではふんふん、Pythonではふんふん」とか語れれば、いろいろな歴史をしっているからすぐ実践しやすいと
メソッドや関数の引数をバリデーションするときにData::Validatorを使わせて貰っているのですが、 低レベルAPIと高レベルAPIで同じバリデーションルールを適用したい事があって、 そういうときに複数箇所にコピペして使ったりしていると、 低レベルAPIのインターフェースを変えたくなったときにそれに依存している高レベルAPIのバリデーションルールも変える必要があってだるかったり、 そもそもクローンとも言えるオブジェクトが複数ヶ所で静的変数に保持されているのは無駄なのではないか。 あと、そもそも5.10未満では静的変数は使えないので5.8しか使えない環境とかで使いたくなったとき困るのではないか*1とか、そんな事を思ったので、 そんな問題を解消するモジュールを書いてみました。 PrePAN: http://prepan.org/module/429En4oFcf Github: http
Perlの単体テスト、特にMockObjectを使ったテストについての情報が少ない気がするのでまとめてみる。 前提 モジュールは、CPAN形式であると前提。雛形は、Module::Starterで作成すると良い。 テストは、Test::Perl::Criticを入れる。 インストール $ sudo cpan Module::Starter $ sudo cpan Module::Starter::PBP $ sudo cpan Test::Perl::Critic 初期セットアップ $ perl -MModule::Starter::PBP=setup モジュールの作成 $ module-starter --module=Ysm::Example $ cd Ysm-Example $ ls Build.PL Changes MANIFEST Makefile.PL README ignor
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く