タグ

perlとPerlに関するbasiのブックマーク (81)

  • Amon2+TengとMVC的Modelの実装 | UCWD-Studio

    前回のTengのリファレンスに続き、今度はAmon2でTengを利用するケース。これは amon2-setup.pl を実行する際に flavor に Teng を指定するとすぐに利用できるようになります。以下、一応手順。 Amon2, Teng, Amon2::Setup::Flavor::Teng が入ってない場合はインストール $ cpanm Amon2 Teng Amon2::Setup::Flavor::Teng 任意の場所で Amon2 のスケルトンを作成。この際 flavor に Teng を指定 $ amon2-setup.pl --flavor=Basic,Teng MyApp amon2-setup.pl を実行すると指定したプロジェクト名(上の例では MyApp)のディレクトリとともにスケルトンが作成されます。 use File::Spec; use File::Ba

    Amon2+TengとMVC的Modelの実装 | UCWD-Studio
  • C による Perl 拡張入門(

    現状、稿ははげしくかきかけです。フィードバックをおまちしております。 はじめに† Perl で C の拡張がスラスラと書けたら……。C の拡張がスラスラ書けたら、ネイティブのバインディングもスラスラ書けるし、ホットスポットを C で最適化するなんてこともお手の物。書けたらいいけど、XS ってなんかむずかしそう……。 ちがうんです! 今までの XS の教え方がまちがっていたんです!この教材をつかえば、誰でも簡単に今すぐに XS を書けるようになるんです。Perl の C 拡張を書いて同僚や上司を アッー! と言わせちゃおう! この教材では XS のややこしい機能をつかわずに、Perl の C 拡張を書く方法を伝授!初心者でもすぐに C 拡張が書けるようになるぞ! 前提知識† 稿では一般的な C の知識および Perl の知識を読者がもっていることを想定しています。XS の知識や Perl

    C による Perl 拡張入門(
    basi
    basi 2013/09/25
  • Perlで単体テスト - yokkunsの日記

    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

    Perlで単体テスト - yokkunsの日記
  • しずくくんのAndroidでゲームプログラミングしてみたいなblog : Perlで自分自身のファイル名を取得するメモ

    2011年05月25日23:57 カテゴリPerl Perlで自分自身のファイル名を取得するメモ Tweet とりあえず、nyoro.plというファイルにスクリプトを書いていく。 まず$0で取ってみた #!/usr/bin/perl use strict; use warnings; my $scriptName = $0; if( @ARGV != 1) { die "Usage: $scriptName file" } これを引数なしで実行すると Usage: ./nyoro.pl file カレントディレクトリも含まれちゃった。 うーん。ファイル名だけにしたい… File::Basename を使うと簡単に出来るみたい そこでスクリプトをちょっと変えてみる。 先ほどの$0の部分を変更 use File::Basename; my $scriptName = basename($0,

    basi
    basi 2012/10/27
  • Test::MockTime - 時間にまつわるtest - Articles Advent Calendar 2011 Test

    はい、kawamotoです blogは書いているとはとても言えないぐらいサボっております。 右も左もわからぬひよっこですので奇をてらわずにTest::名前空間のモジュールの紹介をしようと思います。 Test::MockTime は testの最中に実行される time, localtime, gmtime などの時間に関する関数の振る舞いを書き換える便利なモジュールです。 以下のような症状によく効きます。 テストの期待する結果に時刻を入れたいが固定の値を指定できない。 外部のコンポーネントに存在する、時間で変動する要素に依存しないテストを書きたい(たとえば MySQL で時系列のパーティションを使っているなど) テストを実行するたびに経過時間が変動してtestが通ったりこけたりする 使い方はこちらの記事でも説明されていますが、 $ cat ~/test.pl use feature qw(

    Test::MockTime - 時間にまつわるtest - Articles Advent Calendar 2011 Test
  • Vimで保存時の構文チェックを非同期にやるようにする - Csideのダイアリー

    今までは、保存のたびの構文チェックを、.vimrcに function! _CheckPerlCode() exe ":! perl -c %" endfunction command! CheckCode call _CheckPerlCode() autocmd BufWrite *.pl,*pm,*t :CheckCode のように書くことでやっていたのだけれど*1、編集するファイルが1500行くらいを超えたものだと構文チェックに3秒以上かかってしまって、その間Vimの操作がブロックされるのが非常にストレスだった。なので、構文チェックは以下ようにして子プロセスにやらせて、Vimの操作をブロックしないようにした。まず以下のようなスクリプトを適当な場所に作る。これを保存のたびに実行させるように .vimrc に以下のように書く。 =pod function! _CheckPerlCode

    basi
    basi 2012/06/14
  • Perlのメモリリークを見つける方法 - Islands in the byte stream (legacy)

    Perlではメモリリーク検出ツールがいくつか開発されているので、top(1)の結果を眺めるよりそういうツールを使うほうが楽である。 さて、メモリリークが発生しているとき、その可能性としてはだいたい以下の4つが挙げられる。 Perlレベルでの循環参照 グローバル変数に値をどんどん足しているとき*1 XSレベルでリファレンスカウントの管理ミス XSレベルでmalloc()したメモリの管理ミス この1-3についてはすべてPerlインタプリタ内の出来事であり、Test::LeakTraceを使って検出できる。4を検出するのは難しいが、Test::Valgrindが役に立つ。 Test::LeakTraceのSYNOPSISは歴史的経緯によりごちゃごちゃしているが、テストで使うべき関数はno_leaks_ok()とleaks_cmp_ok()だけである。 たとえば、以下のようにして使う*2。 #!p

    Perlのメモリリークを見つける方法 - Islands in the byte stream (legacy)
  • Perl初心者の私が、1人でWebサービスを開発できるようになるまでに役立ったサイトや書籍

    Perl講座 | Smart -Web Maga... / Perl表技集 / Perlメモ他...全8件

    Perl初心者の私が、1人でWebサービスを開発できるようになるまでに役立ったサイトや書籍
    basi
    basi 2012/01/07
  • 2012年はプログラミング言語を作りたい - Islands in the byte stream (legacy)

    当は2011年の1-3月の間にやろうと思っていたのだが、卒業の危機などがあり思うように進まなかった。しかし今年Perl/XS以外にもC++, Objective C++, Java, ActionScript, JavaScript, Rubyなどでコーディングする機会があり、自分が欲しい言語が具体的になってきた。 私が欲しいのは、Perlの次を担えるような言語だ。それは必ずしも私の言語でなくてもいいのだが、とにかく「next Perl」が欲しい。 Perl言語のいいところは何か。それは言語に密結合した正規表現構文とテキスト処理機能、シンボルテーブルなど内部データ構造*1や後付けのOOP*2のような原始的な機能の露出、標準ドキュメントフォーマット*3とビューア*4、RAIIとダイナミックスコープだ。私は、これらすべてを備えている言語をPerl以外に知らない。 一方で、不要な機能もある。特

    2012年はプログラミング言語を作りたい - Islands in the byte stream (legacy)
    basi
    basi 2012/01/02
  • IPC::Open3 の正しい使い方 (re .pl な config ファイルのコンパイルがとおるかチェックしてみる - TokuLog 改メ tokuhirom’s blog) - kazuhoのメモ置き場

    http://d.hatena.ne.jp/tokuhirom/20100813/1281666615 の件ですが、IPC::Open3 の使い方が気になったので、勝手に添削 (c) dankogai。 use IPC::Open3; ... my($wtr, $rdr, $err); my @cmd = ($^X, (map { "-I$_" } grep { !ref $_ } @INC), '-c', $file); my $pid = open3($wtr, $rdr, $err, @cmd); waitpid($pid, 0); IPC::Open3 は子プロセスの標準入出力と標準エラー出力を、親プロセスとパイプでつないでプロセス間通信を行うための仕組みです。 パイプには一定サイズのバッファがあり (Linux だと 4KB)、パイプにこれを超える大きさのデータが書き込まれると、

    IPC::Open3 の正しい使い方 (re .pl な config ファイルのコンパイルがとおるかチェックしてみる - TokuLog 改メ tokuhirom’s blog) - kazuhoのメモ置き場
  • 機械学習超入門IV 〜SVM(サポートベクターマシン)だって30分で作れちゃう☆〜 - EchizenBlog-Zwei

    ニーズがあるのかさっぱりわからない機械学習超入門だけどひっそり続けていきたい。 前回は識別関数の基礎であるパーセプトロンの簡単な説明とPerlによる実装を解説した。実はこの時点でかの有名なSVM(Support Vector Machine、サポートベクターマシン)もほぼ完成していたのだ!というわけで今回はSVMをPerlで作ってしまうお話。 参考: これからはじめる人のための機械学習の教科書まとめ - EchizenBlog-Zwei 機械学習超入門 〜そろそろナイーブベイズについてひとこと言っておくか〜 - EchizenBlog-Zwei 機械学習超入門II 〜Gmailの優先トレイでも使っているPA法を30分で習得しよう!〜 - EchizenBlog-Zwei 機械学習超入門III 〜機械学習の基礎、パーセプトロンを30分で作って学ぶ〜 - EchizenBlog-Zwei さて

    機械学習超入門IV 〜SVM(サポートベクターマシン)だって30分で作れちゃう☆〜 - EchizenBlog-Zwei
  • [kansaipm] Perlでのメモリの開放について

    mishima at momo.so-net.ne.jp mishima at momo.so-net.ne.jp Sun Dec 3 11:29:00 CST 2000 Previous message: [kansaipm] RFC の書き方 Next message: [kansaipm] 12月2日の勉強会おつかれさまでした Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] 福原さん 今日(おっと、もう昨日ですね)の舟木さんちでの Age of Kings 対戦は 楽しかったですね。是非またやりましょう。(^ ^) さて、車の中で話していた、配列を undef すると使用していたメモリは開放 されるか?という問題ですが、perlfaq の How can I free an array or hash so

    basi
    basi 2011/08/30
  • やはり Perl はメモリ喰いな言語。データ型の内部構造

    use Devel::Size::Report qw/report_size/; # 1bit, 1byte, 2byte, 3byte, 4byte(=32bit), 5byte my $b = [ 0, 0xFF, 0xFFFF, 0xFFFFFF, 0xFFFFFFFF, 0xFFFFFFFFFF ]; print report_size($b, { indent => " " }); # null, length=1, 2, 3, 4, 5 my $c = [ '', '1', '10', '100', '1000', '10000' ]; print report_size($c, { indent => " " }); Size report v0.10 for 'ARRAY(0x8c8bc28)': Array ref 192 bytes (overhead: 92 byte

  • DevelSize - Perl変数のメモリ使用量を調べる

    名前¶ Devel::Size - Perl変数のメモリ使用量を調べる 概要¶ use Devel::Size qw(size total_size); my $size = size("A string"); my @foo = (1, 2, 3, 4, 5); my $other_size = size(\@foo); my $foo = {a => [1, 2, 3], b => {a => [1, 3, 4]} }; my $total_size = total_size($foo); 説明¶ This module figures out the real sizes of Perl variables in bytes. Call functions with a reference to the variable you want the size of. If the va

  • 第8回 Perlによる大規模システム開発・設計のツボ(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはmixiの広木大地さんで、テーマは「大規模システム開発・設計のツボ」です。 仕事やOSS(Open Source Software)プロジェクトPerlを用いた多人数開発をするにあたって気をつけるべきことや、品質を維持するためのノウハウを、国内最大級のPerlシステムであるmixiの事例をベースに紹介します。コーディング上の命名に関する考え方から、大規模アーキテクチャの設計や品質の数値化まで、ミクロからマクロに至るポリシーやテクニックを駆け足で解説します。 なお、今回の内容は(⁠株⁠)ミクシィの2010年度の新卒エンジニア技術教育メニューからの抜粋になります。これからPerl をはじめとするLL(Lightweight Language、軽量言語)を仕事で使うというフレッシュエンジニアのみなさんにも、ぜひご一

    第8回 Perlによる大規模システム開発・設計のツボ(1) | gihyo.jp
    basi
    basi 2011/08/06
  • mixi Graph APIを使ったサービスの作り方(Perl, Catalyst, AmzonEC2) - Road to Dream

    mixi Graph API と jQuery Mobile と Perl で 「話題のつぶやきTop10」というのを作った。 ソースも公開。バグあったらごめんなさい。脆弱性あったらこっそり教えてください。 記事は書きかけ ■この記事の目的 大学の授業で「ポインター」や「ハノイの塔」とかやっててもつまらないので、 「Webってこんなコトできるよ」って研究室の後輩に伝えるために書いてみる。 Webの世界を創るの面白いです! ■前提条件 ・root権限のあるサーバ1つ ・AmzonEC2やさくらVPSをオススメ ・mixi Graph APIのアカウントを取得 ※AmazonEC2のセットアップやmixi Graph APIの登録方法は調べてください。 ■作り方 サーバがセットアップされている状態で、以下の手順に従えば mixi Graph APIを使って「話題のつぶやきTop10」を再現でき

    mixi Graph APIを使ったサービスの作り方(Perl, Catalyst, AmzonEC2) - Road to Dream
  • Perl基礎文法最速マスター - Perl入門ゼミ

    Perl › 基礎文法 ITの現場でPerlが必要になって、今勉強しているという方はおられませんか? 他の言語をある程度知っている方が「Perl基礎文法最速マスター」を読めば、Perlの使い方の基礎をマスターしてPerlを書くことができるようになっています。 基礎 文法チェック 文法をチェックを厳しくするために最初に必ず次の2行を書くようにします。 use strict; use warnings; 「use strict」と「use warnings」という2行を加えることで事前に文法チェックが行われるので、ソースコードを記述する作業は速くなり、コードの品質が上がります。 print関数 文字列を出力するにはprint関数を使用します。 print "Hello world"; Perlでは標準関数や事前に定義されている関数で括弧を省略することができます。 コメント Perlのコメントで

    Perl基礎文法最速マスター - Perl入門ゼミ
    basi
    basi 2011/07/19
  • [Perl] 2つの配列の積集合、和集合、差集合を得る: 開発(環境構築)メモ

    Perlは問題点の多い言語と言われますが、やはり実用性は当に高いな、と思う今日このごろ。大きなプログラムを書いても遅くならないし。 さて、2つの配列の積集合(共通する要素)、和集合(いずれか一方または両方に含まれる要素)、差集合(一方にのみ含まれる要素)を求めるには、List::Compare が便利みたいなので試してみた。 #!/usr/bin/perl use List::Compare; # 比較する二つの配列 my @list1 = ('a', 'b', 'c'); my @list2 = ('b', 'c', 'd'); my $lc = List::Compare->new(\@list1, \@list2); # 積集合 (@list1, @list2 両方の配列に含まれる要素) my @intersection = $lc->get_intersection; print

  • PSGI/Plack - [Perl Hackers Hub]

    連載では、第一線のPerlハッカーが回替わりで執筆していきます。記念すべき第1回は、WEB+DB PRESS誌ではVol.2から執筆しており、長らく連載も担当していた宮川達彦さんです。 はじめに PerlでWeb開発をするためのフレームワークは百花繚乱、人気を集めています。稿では、これらのフレームワークが共通して利用するためのインタフェース仕様であるPSGIと、そのエンジンとしての実装であるPlackを紹介します。 PSGIに至る道 PerlとWebアプリケーション開発の親和性 Perlは「インターネットのグルー(糊:のり)言語」とも言われ、CGIによる開発がメインだった1990年代から、Webアプリケーション開発に最も関わりのあるプログラミング言語の一つと言ってよいでしょう。2000年代に入っても、Ruby on RailsPHPなどの他言語からの影響も取り入れながら、Web開発

    PSGI/Plack - [Perl Hackers Hub]
  • Perl OO におけるオーバーヘッド - naoyaのはてなダイアリー

    フレームワークを考えるにあたって、気になる部分のベンチマークを取ってみた。 ポイントは次の3点。 関数の呼び出し方法: Class::func() と Class->func() 形式 クラスを継承した場合のペナルティ: Class->() と SuperClass->() 連想配列への直接アクセスと、アクセサ経由のアクセス Perl における関数型の実装と OO の実装で、関数呼び出し/メソッド呼び出しでどの程度のオーバーヘッドの差があるかをベンチマークした結果。勉強になります。結果としては関数型に対して OO の方が数倍遅い、という結果。 それで、結論の方なのですが 来なら、アプリケーションより下位にあたるライブラリ関連は、オブジェクト化されて mod_perl 上で共有されるメリットはあるかもしれないが、アプリケーションの上位にあたるフレームワークは、mod_perl 上で共有され

    Perl OO におけるオーバーヘッド - naoyaのはてなダイアリー
    basi
    basi 2011/03/06