タグ

Perlに関するrosiroのブックマーク (27)

  • Perl 初心者がとある JavaScript コードを読むための基礎知識 - あらびき日記

    この記事は abicky.netPerl 初心者がとある JavaScript コードを読むための基礎知識 に移行しました

    Perl 初心者がとある JavaScript コードを読むための基礎知識 - あらびき日記
  • JavaScript のテストを Perl から実行できるようにした話

    わかば (id:wakabatan) 2013年1月24日 自己紹介 わかば id:wakabatan JavaScript は15年目くらい 株式会社はてな アプリケーションエンジニア ( ) 仕事では1年くらい JavaScript 書いてない 概要 HatenaStar.js Ten.js JSAN PhantomJS Wight / Poltergeist Travis CI JavaScript のテストを Perl から実行できるようにした話です。 HatenaStar.js http://s.hatena.ne.jp/js/HatenaStar.js はてなスターの Web ページ用公式クライアント (2007-) ブログ記事に ボタンを付ける ほとんどのはてなサービス、いくつかの社外のサイト、 いくつかのブラウザ拡張で利用されている Ten.js id:jkondo 作の

  • Unicode::UTF8 がガチ爆速すぎる

    あんまり深読みしてないんだけど、Unicode::UTF8 が超速い。 おなじみ Encode との比較で、PODには 600% 速いって書いてあるけど、手元で試す感じだとだいたい 350~650% 速い。つまり、マジ速い。 Benchmark: timing 350000 iterations of Encode, Unicode::UTF8... Encode: 5 wallclock secs ( 4.41 usr + 0.00 sys = 4.41 CPU) @ 79365.08/s (n=350000) Unicode::UTF8: 0 wallclock secs ( 0.72 usr + 0.00 sys = 0.72 CPU) @ 486111.11/s (n=350000) Rate Encode Unicode::UTF8 Encode 79365/s -- -84%

    Unicode::UTF8 がガチ爆速すぎる
    rosiro
    rosiro 2013/03/04
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • インターネット広告とPerl、ここ数年の歩み

    1. インターネット広告と Perl、ここ数年の歩み 2012.10.19 Yokohama.pm #9 nekoya 2012年10月19日金曜日

    インターネット広告とPerl、ここ数年の歩み
  • 生のハッシュリファレンスを return したら遅い

    ハッシュリファレンスは畳み込み的に定数扱いじゃなかったのね、ってのに気づいて驚いた(というのが当に遅い原因か確定させて無いけど)(【追記2】参照)。 #!/usr/bin/perl use strict; use warnings; use Benchmark qw/timethese cmpthese/; my $HASH = { foo => 123, bar => 456, baz => 789, }; my $result = timethese (750_000, { 'VAL' => '&logic1;', 'RAW' => '&logic2;', }); cmpthese $result; sub logic1 { _logic1()->{foo}; } sub _logic1 { return $HASH; } sub logic2 { _logic2()->{foo};

    生のハッシュリファレンスを return したら遅い
    rosiro
    rosiro 2013/01/13
  • 近頃の開発環境 : Mosh、z、tmux、Emacs、Perl について - naoyaのはてなダイアリー

    昨日は年始の挨拶ついでに ELPA について脈絡もなく突然書きましたが、引き続き近頃の開発環境についてもだらだらと書いてみよう。 Mosh mosh というと一部の人間はひげなんとかさんが開発しているモナー的なあれを思い浮かべるかもしれないがそうではなく、mobile shell のことである。 思い切り簡略化して言うと「快適なssh」。回線が不安定な所でもエコー遅延など全く気にせず使えるし、Mac をスリープさせて復帰させたときもリモートホストにそのまま繋がりっぱなしのように見せかけてくれたりする。 詳しくはこの辺を。 mosh: MITからモバイル時代のSSH代替品 - karasuyamatenguの日記 インストールはリモートとローカル両方に必要ですが、まあ大概パッケージがあると思います。EC2 の Amazon Linux でも yum レポジトリの EPEL を有効にすれば y

    近頃の開発環境 : Mosh、z、tmux、Emacs、Perl について - naoyaのはてなダイアリー
  • HTML::Packer - もう一つの HTMLコードクリーナ - perldoc.jp

    use HTML::Packer; my $packer = HTML::Packer->init(); $packer->minify( $scalarref, $opts ); To return a scalar without changing the input simply use (e.g. example 2): my $ret = $packer->minify( $scalarref, $opts ); For backward compatibility it is still possible to call 'minify' as a function: HTML::Packer::minify( $scalarref, $opts ); First argument must be a scalarref of HTML-Code. Second argumen

  • LinuxでIPやポート単位で簡単にトラフィックをコントロールしよう

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 研究でcgroupやCFSを調査しているんですが、トラフィックをコントロールするtcコマンドやqos周りを復習がてら、ツールを作ってみました。簡単という所が重要です。何をするツールかというと、「Linuxサーバ上でinboundとoutboundのトラフィック帯域をIPやプロトコル単位で好きなようにコントロールし管理する」ためのツールです。 これまでのトラフィックコントロールツールを改良 とにかく複雑でわかりにくかった印象があります。その結果、トラフィックコントロールを運用に持ち込んでも、うまく管理することができなかったのは容易に想像できます。最初はtcコマンド、次にcbq.initが使われてきました。 tcコマンドはわかりにくいので tcコ

    LinuxでIPやポート単位で簡単にトラフィックをコントロールしよう
  • #03 insert / fast_insert - Articles Advent Calendar 2011 Teng

    昨日でTengを利用するのに必要なクラス定義は終了しているので早速 次のステップとして新しいレコードをデータベースに登録する INSERTの方法を紹介します。 insertメソッド SQLのINSERT文を実行するには以下のようにします。 my $row = $teng->insert('user', +{id => 1, name => 'nekokak'}); このようにすると、 INSERT INTO user (id,name) VALUES(1,'nekokak'); というようなSQLが実行され、データベースに新しい行が登録されます。 Tengのinsertメソッドの返り値として、insertしたtableに対応するRowクラスでインスタンス化された Rowオブジェクトがかえってきますので、 $row->id; # 1 $row->name; # nekokak といったように

  • Perlの環境構築 - あと味

    こなれてきたので、Perlの環境構築についてまとめる。出尽くされてる感は半端ないけど。 導入するツール perlbrew cpanm(App::cpanminus) Carton perlbrew perlbrewはユーザー領域に複数のPerlのバージョンをインストールして使えるツール。Rubyのrvm相当。 インストール 公式ドキュメントに書いてある手順で簡単に導入できる。 $ curl -kL http://install.perlbrew.pl | bashこれでインストール終わり。 設定 次はperlbrewの設定。でも最初から付いてくる。 $ echo source ~/perl5/perlbrew/etc/bashrc >> ~/.bash_profileインストールした際のログに書いてあるが、perlbrew用のbashrcが添付されてるので、それを読み込む設定を.bash_

    Perlの環境構築 - あと味
    rosiro
    rosiro 2012/04/09
  • App::MadEye

    App::MadEyeとはPerlでかかれた監視フレームワークである。 基ドキュメントを見ても一切使い方がわからないであろう このモジュールをちょっと解説してみる。 ちなみにYAPC::Asia 2010の省サーバ運用の発表の際、 「監視とかどうしてますか?」 という質問があったが、私はこのApp::MadEyeを使っている。 使用理由としては、基的に監視したいと思う項目が網羅されている事、 使ったことがあること、nagiosとかめんどくさそう(使ったこと無いだけです) ということ、そして最大の理由はそれがPerlで書かれていることであろう。 早速解説というか使い方 App::MadEyeを起動するスクリプトを用意する。 今回は指定のサーバにpingを打ってみる例である。 #! /usr/bin/perl use strict; use warnings; use App::MadEy

  • お手軽に死活監視をPerlのCPANモジュールApp::MadEyeで行う | hirobanex.net

    去年のYAPC::Asia2011では、運用の話が活発に行われており、監視周りの話も多かったように記憶しています。そこで、監視の基となる死活監視について、今回は私が普段使っているtokuhiromさん作の死活監視ツールApp::MadEyeを紹介しつつまとめたいと思います。 「死活」の通り、「死んでいるか、活きているか」について監視することです。具体的には、サーバーにPingを飛ばして死んでいるか活きているか確認したり、サーバーのハードディスクが一定量を超えているかどうか確認したりすることです。つまり、継続的に「1/0」で確認し続けることが、死活監視です。実務的な用途としては、「サイトが落ちている!」っていう状況に素早く対応するための準備となります。 リソース監視 一方で、リソース監視は、システム特定リソースの状態の変化を確認し続けることといえます。例えば、サーバーのロードアベレージの推

  • Plack アプリで遅延ロードされるモジュールを見る

    アプリケーションで利用するモジュールは、できる限り先読み(preload)しておきたい。先読みしておけば、アプリケーション全体のメモリ消費が抑えられるし、遅延ロード(Lazy Load)のコストがなくなります。 モジュールの先読みは、例えば以下のように行います。 starman --preload-app MyApp app.psgi or starman -MFoo -MFoo::Bar -MBaz::DBI app.psgi あえて遅延ロードするという場合を除いて、先読みは行って損はないはず(小さいアプリだと、効果は小さいですお ^-^)。 Plack::Middleware::Debug::LazyLoadModules 明示的に use するモジュール群のピックアップはたやすい。なにせ明示されているから。しかし、暗黙に遅延ロードされてるモジュールやライブラリは調べてみると多く見つか

    Plack アプリで遅延ロードされるモジュールを見る
  • Data::Dumper に代わる Data::Printer - 理系学生日記

    LL でデバッグと言えばデバッガではなく print デバッグ、という人は多いと思います。ぼくはもっぱら print デバッグです。 いまこのタイミングでこのオブジェクトはどんな値を持っているんだろう、というときは、Perl だったらもっぱら Data::Dumper を使って、 sub p { print Dumper @_ } p $object; なんてのを良く書いてたんですけど、$object がクソみたいにデカいモジュールのオブジェクトだったりすると、ターミナルが溢れて(ぼくが)死んだりしてました。DateTime とか HTTP::Request あたりとか大変ですね。 で、ちょっと Data::Printer 良いよって声を聞いたので試してみたのでした。Class::MOP 依存だがな!!! 基的な使い方 Data::Printer を use すると、p っていう関数がデ

    Data::Dumper に代わる Data::Printer - 理系学生日記
  • UserAgent判定器 Project Woothee はじめました - たごもりすメモ

    UserAgent判定ライブラリはCPANに数多くあるし他の言語でも似たようなものだと思うが、ライブラリや言語をまたがって一致した結果を返してくれるようなものは存在しない(と思う)。が、特にHadoopを使うようになってJavaの事情をある程度無視できなくなってくると、これがたいへん問題に思えてきた。Javaで書かれたUserAgent判定ロジックが欲しいが、普段書くコードはJavaではない*1ので、他の言語でも全く同じように判定してくれるライブラリが欲しい。結果がい違っていたり、新しいUserAgentを判定したいときに片方だけ対応されて片方は置き去りになったりすると大変困る。 ということで、作った。v0.1.0。現状ではJavaPerlの実装がある*2。 https://github.com/tagomoris/woothee https://github.com/tagomori

    UserAgent判定器 Project Woothee はじめました - たごもりすメモ
  • App::ExtractUsed というものを書いている話 - punitan (a.k.a. punytan) のメモ

    CPAN形式で開発していると避けて通れないのが依存モジュールの炙り出しと Makefile.PL へ requires を書き出す作業。これは意外と面倒なのでもっと怠惰に楽をしたいところ。 たとえモジュールが要求するperlのバージョンを決めていたとしても「どれがコアモジュールでどれが違うのか」「parent.pm は 5.10.1 からコアモジュールになった」など、漏れなく抽出しないと新しい環境でインストールする時に悲しいことになってしまう。 こんな面倒事はコマンド叩くだけで済ませてしまいたい、というわけで GitHub - punytan/p5-App-ExtractUsed をでっち上げた。 使い方 extractused コマンドがインストールされるので、基的にはこれを叩くだけで lib/ と t/ を走査して requires, test_requires が出力される感じ。

    App::ExtractUsed というものを書いている話 - punitan (a.k.a. punytan) のメモ
  • Xslate+Locale::Maketext::Lexiconを考える - Islands in the byte stream (legacy)

    前提:Locale::Maketext::Lexicon を Xslate でつかう (by tokuhirom) L::M::SimpleよりもL::M::Lexiconのほうが使いやすいというのはそのとおりなんですが、うまく使うにはもうちょい工夫が必要かなと。 具体的には以下のようなことに対応したいです。 *.poに書く値はHTMLタグが含まれるかも知れない。つまり「raw文字列」とみなすべき。 一方maketext($fmt, @args)の@argsはユーザー入力なのでエスケープしないとまずい 最終的にmaketextはraw文字列を返すべき これを反映させ、二つの関数を用意するのがいいのではないかと考えました。まずl()は普通の関数として動作するので入力値が最終的にエスケープされます。l_raw()は特殊バージョンで、@argsをエスケープし、raw文字列を返します。このl_ra

    Xslate+Locale::Maketext::Lexiconを考える - Islands in the byte stream (legacy)
  • Perl でつくった web サイトを L10N する方法 - tokuhirom's blog

    Perl でつくった web サイトを L10N する方法について簡単に説明します。今回は、日語のサイトを英語でも表示できるようにするケースをあつかいますよ。今回は L10N の対象は Amon2 をつかったサイトとします。 基的な翻訳機能は Locale::Maketext::Lexicon を利用します。これはなんだかんだで出来がいいのでいいとおもいます。他にもいろいろあるけど、これが一番実績もあるし安定しているようにおもいます。また、一時期はメンテが放棄されてましたが、最近またメンテされるようになったようです。 メッセージのマークアップでは、まず、Perl コード中の日語のリソースを $c->loc(); でくくりましょう。 printf("ほげ\n"); みたいになってるところを printf($c->loc("ほげ\n")); みたいにするってことです。 つぎにテンプレート

    rosiro
    rosiro 2011/11/09
    [Text::Xslate][amon2]
  • Idea of Data::Validator - Islands in the byte stream (legacy)

    Smart::Argsは無駄がなくて使いやすいのですが、欠点はXSモジュール(PadWalker)への依存があることと、Perlの作法を完全に無視していることです。 そこで、試みにData::Validatorというモジュールを書いてみました。 https://github.com/gfx/p5-Data-Validator コンセプトは以下の通り: 機能的にはSmart::Args + X Pure Perlでも動く Perlの作法に則る 十分に速い 使い方は以下の通り #!perl -w use 5.010_00; use strict; use Data::Validator; sub request { state $rule = Data::Validator->new( url => { isa => 'Str', xor => [qw(schema host path_que

    Idea of Data::Validator - Islands in the byte stream (legacy)
    rosiro
    rosiro 2010/11/12