第42回Template Toolkit:Perl製テンプレートエンジンのデファクトスタンダード 石垣憲一 2011-06-30
perlを本気で勉強しようと思い、emacsを使った便利な設定をwebからリストアップしてみた。 perltidy インデント整形ツール。 選択したリージョンを一気に整形してくれるので、昔誰かが作ったインデントなしのプログラム等を一気に整形してくれる。 (defun perltidy-region () "Run perltidy on the current region." (interactive) (save-excursion (shell-command-on-region (point) (mark) "perltidy -q" nil t))) (defun perltidy-defun () "Run perltidy on the current defun." (interactive) (save-excursion (mark-defun) (perltidy-r
Raycastを使い始めて1年経ったので、どういうことに使っているかを振り返ってみる。去年書いた AlfredからRaycastに移行した - oinume journal の記事から少し使い方が変わっているところもあるのでメモがてら。 基本的な使い方 Cmd + QをRaycast起動のショートカットとして割り当てている。Pro版は使っていないのでAI機能などは使ったことがない。 ブラウザのブックマーク検索など、よく使うけどHotKeyを割り当てるほどでもないRaycastコマンドはbmのようにAliasを設定している。 Cmd + QでRaycastを起動してbmと入力するとブックマークの検索ができるので楽ちん アプリケーションランチャー機能 アプリケーションを起動するときのランチャーとして使っている。よく使うアプリにはHot Key(ショートカット)を割り当ててる。 Clipboar
2010年10月03日02:00 カテゴリLightweight Languages perl - Acme::Akashic::Records 0.01 Released アカシックレコードをPerlから読みたいのですがモジュールありますか。 CPANを軽く捜しましたが見当たりません。 - 人力検索はてなアカシックレコードをPerlから読みたいのですがモジュールありますか こちらをお使い下さい。 /lang/perl/Acme-Akashic-Records/trunk - CodeRepos::Share - Trac dankogai's p5-Acme-Akashic-Records at master - GitHub Dan Kogai / Acme-Akashic-Records - search.cpan.org (Coming Soon) アカシック・レコードとは、このよ
Shibuya Perl Mongers テクニカルトーク#14 に行ってきました。諸々面白かったですがパネルディスカッション、LT ともに id:kazuhooku さんの発表が良かったですね。 さて、Scripting Layer for Android (SL4A) を使って、Perl で Android を hack する話をしてきました。SL4A は jRuby、Perl、Python、PHP などの言語を Android で使えるようにするアプリ。それぞれの言語からは AndroidFacade API と呼ばれる API で、Android のUIやカメラを操作できるというものです。 発表資料は以下です。 Scripting Layer for Android + Perl (SlideShare) http://www.slideshare.net/naoya1977/sc
Perlの乱数についてIRCで盛り上がったのでまとめておく。 結論からいうと、srand()はPerl5組み込みのものでよい。乱数の生成はMath::Random::MTがよいとおもう。 Perlのrand()の実装はConfigure時に選べるようだが*1、ふつうはdrand48()がつかわれる。これは下位ビットがまったくランダムでないことで知られるrand(3)よりはましだが、しょせん線形合同法なのでセッションIDなどを作るのには安全ではない。安全な乱数を作るためにtime()やSHA1を混ぜ込んだりするほうほうもよくつかわれるが、そのくらいならはじめからM::R::MTを使ったほうがいいとおもう。 なお、srand()はあれば/dev/urandomを読むので、自前でsrand(time)などとするのはよくない。また、最初にrand()を呼ぶときに自動的に呼ばれるので、ふつうは明示的
2010年08月12日09:45 カテゴリLightweight Languages perl - AnyEventで超速分散ダウンローダー これ見てたらついムラムラと。 Perl 非同期プログラミング 初出2010.08.11; 08.12 追記time perl mirrorget.pl cpan.yml http://www.cpan.org/src/perl-5.12.1.tar.bz2 # Stage 0: checking headers Elapsed: 0.358819961547852 sec. Last-Modified: Sun, 16 May 2010 22:40:16 GMT Content-Length: 12296076 URLs: http://ftp.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.12.1.tar.bz2
たとえばこんな。 Rakudo Star ではどれも実装済み。今すぐ使えます。 強化された正規表現 Perl 6 の公式なパーサ自体も Perl 6 の正規表現で書かれています。 ……は置いといて。10行ちょっとで CSV をパースする正規表現が書ける。クォートされた値にも複数行にまたがる値にも対応。 # CSV クラスは以下のものを修正して使っています # http://github.com/masak/csv/blob/master/lib/Text/CSV.pm # 正規表現をまとめた grammar (クラスの一種) grammar CSV { regex TOP { ^ <line> ** \n <empty_line>? $ } regex line { <value> ** ',' } regex value { | <pure_text> | \s* \" <quoted_
一般的な OSX 環境および Linux 環境における、モダンな Perl 開発環境の構築方法についてまとめてみたよ。 perlbrew のインストールperlbrew をつかうことにより、簡単に最新版の Perl5 を利用することができるようになる。 perlbrew をいれる。% curl -L http://xrl.us/perlbrew | perl - install % ~/perl5/perlbrew/bin/perlbrew init ~/.bashrc (または ~/.zshrc)に source ~/perl5/perlbrew/etc/bashrc を追記。あたらしいシェルをたちあげる。最新版の perl をインストールする。% perlbrew install perl-5.12.1 % perlbrew switch perl-5.12.1 ここまできたら、she
Perl › 基礎文法 ITの現場でPerlが必要になって、今勉強しているという方はおられませんか? 他の言語をある程度知っている方が「Perl基礎文法最速マスター」を読めば、Perlの使い方の基礎をマスターしてPerlを書くことができるようになっています。 基礎 文法チェック 文法をチェックを厳しくするために最初に必ず次の2行を書くようにします。 use strict; use warnings; 「use strict」と「use warnings」という2行を加えることで事前に文法チェックが行われるので、ソースコードを記述する作業は速くなり、コードの品質が上がります。 print関数 文字列を出力するにはprint関数を使用します。 print "Hello world"; Perlでは標準関数や事前に定義されている関数で括弧を省略することができます。 コメント Perlのコメントで
PODを読んでもよくわからない、あるいは、そもそもPODがちゃんと書かれていないモジュールの挙動を知りたい場合、perldoc -mを使いまくることがよくあると思います。単にperldocを読みたい場合は、id:IMAKADOさんによる素晴しいperl-completion.el(これも当然必須です)が非常に便利なのですが、perldoc -mの表示をバッファを作って表示させたい場合、以下のような設定を書いておくと、これはこれで便利だと思います。というか使いまくってます。 ポイントがある位置のモジュール名、あるいはなんにもなければプロンプトでモジュール名を指定して、ウィンドウをポップアップしてperldoc -mを表示 perldoc-mコマンドを実行したバッファが、既にperldoc-mコマンドで開いたバッファなら、その場で表示 多分これ、どこかからもらってきたのを改造したのだと思うけど
共用サーバ 普通、1つのサーバには複数のユーザが登録されています。 そのため、1つのサーバでは同時に複数の CGI プログラムが実行される可能性があります。 共用サーバで、速度が遅くメモリを喰う CGI プログラムを動かすと すぐにマシンパワーが飽和してしまいます。 なるべく負荷のかからず実行速度が短い CGI プログラムを作らなければいけません。 ということを言い始めると、そもそも perl で CGI プログラムを書くこと自体 あまり お勧めできないのですが、perl を使いつつ なるべく負荷のかからない プログラムを書く方法を説明します。 実行頻度を考える ここでは掲示板を例にあげましょう。 掲示板というのは、発言回数よりも閲覧回数の方が圧倒的に多いものです。 例えばウチの掲示板を例にあげると、 1日あたり書き込みは 0〜3件程度ですが、閲覧は1日に100件以上あります。 つまり、発
この記事は,日経ソフトウエア2006年9月号,連載「簡単実装で学ぶWeb技術2006」の第3回「Catalyst――Perl向けWebアプリ・フレームワーク」の再録です。記事は執筆時の情報に基づいており,現在では異なる場合があります。 こんにちは,結城浩です。今回はPerlのWebアプリケーション・フレームワーク「Catalyst」を解説し,簡単なメモ帳プログラムを作ります。 Catalyst(カタリスト)は,Perlで作られたWebアプリケーション・フレームワークです。Catalystを使うと,Webアプリを簡単に作成・テスト・配布することができます。catalystという単語のそもそもの意味は,「触媒」あるいは「促進させるもの」です。Perlのモジュール同士を触媒のようにうまく結びつけて,Webアプリ作成を促進させるという意味の名前なのでしょう。 Catalystのオフィシャルページは
さて、作りたいものはあるけどどうしたらいいかわからない。ということで、手近なサンプルのトレースをして、流れを身につけることにする。id:naoyaがやってた*1tinyurlもどきをさらに再トレース。Perl 5.8Catalyst 5.8それぞれversionは上記のとおり。下準備mysqlの準備もする。 $ sudo vi /etc/my.cnf [mysqld] default-character-set = utf8 // 追加 [mysql] // 追加 default-character-set = ut8 perlモジュールのインストースのときに、mysqlにroot@localhostパスなしでテストするものがいくつかあるので、root@localhostのログイン方法を設定するのは後回しにした。現在CatalystのModelにCDBIは推奨されていないらしいのでDBIx
Just another butcher’s weblog Home About Catalyst - フレームワークのオーバーヘッドを測る May 21, 2006 Posted by butcher in : Perl , trackback 前回紹介したPerlのフレームワークCatalystのオーバーヘッドを測ってみたいと思います。 一般的に、フレームワークを使うと、主に機能のロジック部分を作ればよく、その他の連携部分等は内部で色々やってくれるので、その分フレームワークのオーバーヘッドが余分にかかってしまいます。そこで、前回作ったTinyURLと同じ機能を持つアプリケーションをmod_perlで作り、前回のものと比較することにより、Catalystのオーバーヘッドを測定をしようと思います。 環境は前回と全く同じなので、詳しくはこちらを参照ください。 まずは画面です。前回と同様に、
Catalyst - 簡単なアプリケーションの開発 April 30, 2006 Posted by butcher in : Perl , trackback PerlのMVCフレームワークCatalystについて紹介します。 Catalystについてはこちらを参照ください。 今回は、インストールから、簡単なDBアプリケーションの開発、mod_perl上での実行の手順を紹介します。 開発環境は、FedoraCore4, perl v5.8.6, Apache 2.0.55, mod_perl 2.0.2, mysq l 4.1.18 です。 まずはインストール。 インストールは非常に簡単で、”Task::Catalyst”モジュールを入れるだけです。(依存関係のある他のモジュールもインストールされます。) $ perl -MCPAN -e 'install Task::Cat
push %hash, key => "value"; push %hash, @ary; みたいに、ハッシュに対してもpush()を使えたら便利じゃないだろうか。とりあえず以下のコードで期待通りに動くはず。 use subs qw(push); sub push (\[@%]@) { my $targ = shift; my $type = ref $targ; if ($type eq 'ARRAY') { CORE::push @$targ, @_; } elsif ($type eq 'HASH') { while (my ($k, $v) = splice @_, 0, 2) { $targ->{$k} = $v; } } }
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く