タグ

perlに関するrightgo09のブックマーク (322)

  • Big Sky :: Perl6 の無限リストとダイナミックバインディングが最強すぎる

    Perl には x 演算子があり、x 3 といった具合に繰り返し回数を付ける事で連続した文字列を簡単に作り出すことが出来る。 say 1 x 3; # 111 say "foo" x 3; # foofoofoo これは Perl5 でもお馴染み。しかし Perl6 の Range は凄い。 say 1 xx 3; # (1 1 1) say "foo" xx 3; # (foo foo foo) 連続した配列要素が作り出せる。それどころか無限リストが作り出せる。 say 1 xx *; # (...) say "foo" xx *; # (...) もちろん無限数列も作れる。 (1 .. *)[^10].perl.say; # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) fibonacci 数列もこんなに簡単。 (1, 1, *+* ...^ *)[^100].per

    Big Sky :: Perl6 の無限リストとダイナミックバインディングが最強すぎる
  • perl6なので6種類の記号だけでプログラムを書く - すぎゃーんメモ

    Perl6で記号Hello worldする - すぎゃーんメモ という記事を書いたところ なるほど、文字の種類が少なくて簡単 / 他3コメント URL “Perl6で記号Hello worldする - すぎゃーんメモ” URL 2015-10-22 19:30:57 via Hatena というブコメをいただいたけど、あの記事では適当に生成したので 11種類もの記号を使っていて まだちょっと多いかな、という感じがした。 ので最大限に使う文字種類を減らして、6種類の記号だけでHello worldを書いてみた。 ::('('~^(~::('~'~^~(^(''~~''))~':'~^~(^(''~~''))~^'~'~^'('~^')'~')'~^':'~^'~')(')'~^~(^(''~~''))~^'('~'^'~^~(^(''~~''))~^':'~^'~'~'^'~^':'~^'~

    perl6なので6種類の記号だけでプログラムを書く - すぎゃーんメモ
    rightgo09
    rightgo09 2015/10/24
    すごい
  • Go言語でPerlのテストを早くする

    Test::mysqld::Multiというモジュールを書いてみたみたいな涙ぐましい努力により5分で終わるようになったテストですが、 プロジェクトのコードも増えて人も増えた影響で、 テスト時間が約7分まで伸び、テストのキューに10個近く並んで順番待ちさせられるという状況になってしまいした。 この状況を解決すべく go-prove というものを書いてみたので、そのご紹介です。 proveが遅い理由 proveがテストの結果を読むところがブロッキングI/Oになっているらしく、そのせいで遅くなっているらしいです。 Perl-Toolchain-Gang/Test-Harness#30 実際に結果読んでいるところはこの辺ですかね。 selectとか使っていてなるべくブロッキングしないような作りにはなっていそうですが、どこかでブロッキングしてしまっているようです。 今のプロジェクトだと32コアのCP

  • Perlの黒魔術を解説するよ〜〜〜〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    まずはこちらをごらんください。 shinh.hatenablog.com すごすぎる……。恐ろしいですね。 なぜこんなことになるのか、解説していきましょう。まずはPerlの気持ちになりましょう。 Perlの気持ち編 ポイントその1 barewordを数値コンテキストで評価するとどうなるのかということ 件のプログラムは、base64 っぽい文字列が書かれていますが、これを前からPerlコードとして読んでいくと、大きく2つのパートに分かれることに気づきます。というのも、前から一文字ずつ読んでいくと、「+」という演算子にぶつかるわけですね。 それに気づくと、このコードは前半部分 dXNlIE1JTUU6OkJhc2U2NDtwcmludCBlbmNvZGVfYmFzZTY0IGpvaW4nJyw8PjsKX19FTkRfXwo と、 s//v62/e+s//v60/e+s//v44/e+s//v

    Perlの黒魔術を解説するよ〜〜〜〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • perldocべんりってはなし - Qiita

    だいたいどんな内容が見れるのか興味がある方はこちら。 http://perldoc.perl.org/perl.html http://perldoc.jp/docs/perl/5.16.1/perl.pod perldoc.jpとは しれっとperldoc.jpのリンクを滲ませましたがperldocの内容を日語に翻訳するプロジェクトが存在します。それがperldoc.jpです。 有志の方々の努力により保守・運用されている、大変有難いものです。ドキュメントの原文と共に是非活用してください。 http://perldoc.jp/ 便利情報 Perl入学式で講師も務めた @xtetsuji さんがChromeで使える便利テクニックを紹介しています。http://post.tetsuji.jp/2014/01/perldoc-jp-shortcut-to-search/ こちらも是非ご活用下さ

    perldocべんりってはなし - Qiita
  • 細かすぎて伝わらないPerlと$0変数 - コマンド名偽装 - ろば電子が詰まつてゐる

    先日、moznion氏の「実行中のプログラムの進捗度を手っ取り早く確認したい」という面白い記事を読みました。 これに影響されて、Perlと$0のウンチクを id:lesamoureuses に語ったところ地味にウケが良かったので、さらに調子に乗って、細かすぎて伝わらないPerlと$0の関係について語ります。なお、稿の実用性はあまりありませんが、ちょっとだけあります。 概要 上述のmoznion氏のブログは、Rubyで$0をいじるとpsコマンドで見えるコマンド名が変わって便利、という話でした(「アッアッ」)。 Perlでも同様に、$0をいじることでpsコマンドで見えるCOMMAND値を変えることができます(なお時折勘違いする人がいますが、元のファイル名は変わりません。psコマンドで見える値だけです)。ただしこれはOSによって結構動作が違うので、以下しばらくLinux(CentOS)限定の話

    細かすぎて伝わらないPerlと$0変数 - コマンド名偽装 - ろば電子が詰まつてゐる
  • C による Perl 拡張入門(

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

    C による Perl 拡張入門(
  • N10K 掲示板 Mojolicious::Lite app - Tociyuki::Diary

    半分ネタ半分気のウェブ掲示板スクリプトです。名前の通り 1 万件 (N10K) を越えるエントリを投稿・閲覧可能な掲示板です。データは平文のテキスト・ファイルに保存する作りで、掲示板としては、とてもシンプルでたいしたことないのですが、莫大なエントリをわせても余裕で閲覧・投稿・削除をおこなえるのがポイントです。といっても、速度が落ちないからと調子に乗ってわせていくと、データ・ファイルのサイズが数百メガバイトに膨れ上がっていくので、128メガバイトの容量制限と10万件のエントリ数制限をかけています。 このスクリプトはコンセプト・スクリプトでありエラー処理が甘いため、インターネットで公開して使わないでください。ローカルマシンで遊ぶ程度にしておいてくれた方が書いた私も安心します。 投稿制限は、ホワイト・リストによる URL 制限と、行数を漢字60文字を一行分として文字数と改行数から計算し、3

    N10K 掲示板 Mojolicious::Lite app - Tociyuki::Diary
  • Test::Synopsis::Expectationというモジュールをリリースしました - その手の平は尻もつかめるさ

    このたび,Test::Synopsis::Expectationというモジュールをリリースしました. https://metacpan.org/pod/Test::Synopsis::Expectation https://github.com/moznion/Test-Synopsis-Expectation 使い方や仕組み等をid:mackee_wさんの記事で紹介していただいたので,そちらの方も併せてご覧いただくと良いと思います. SYNOPSISのコメントを使ってテストするTest::Synopsis::Expectation - ぱいぱいにっき CPANに上がっているモジュールを使う時,多くの方が何は無くとも真っ先にSYNOPSISを見て使い方をザックリ把握するかと思います.とりあえずSYNOPSISのコードをコピペしてみて,動くかどうか見てみる的な. で,SYNOPSISのコード

    Test::Synopsis::Expectationというモジュールをリリースしました - その手の平は尻もつかめるさ
  • SYNOPSISのコメントを使ってテストするTest::Synopsis::Expectation - ぱいぱいにっき

    この記事はPerl Advent Calendar 2013の16日目の記事です。 Test::Synopsis::Expectation Perlのモジュールを作る際に便利そうな少し変わったモジュール、Test::Synopsis::Expectationを使ってみます。 その前にテスト対象のモジュールを作ります。ひな形作成に便利なMinillaを使ってスケルトンを作成します。 $ minil new AwesomeTargetそこで出来たAwesomeTarget/lib/AwesomeTarget.pmを以下のようにいじります。 package AwesomeTarget; use strict; use warnings; sub plusplus { my ($class, $num) = @_; return ++$num; } 1; なんのことはない、ただ++するだけのクラス

    SYNOPSISのコメントを使ってテストするTest::Synopsis::Expectation - ぱいぱいにっき
    rightgo09
    rightgo09 2013/12/17
    ドキュメント内のコードもテストできるすごい
  • Perl 初心者がとある JavaScript コードを読むための基礎知識 - あらびき日記

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

    Perl 初心者がとある JavaScript コードを読むための基礎知識 - あらびき日記
  • YAPC::Asia Tokyo 2013: 「本当にあったレガシーな話」と最近のlivedoorBlogの改修 : D-7 <altijd in beweging>

    はい、というわけで自分のトークです: 昨年12月頃から関わってるlivedoorBlogのコードを触っていた時の憤りをスライドにぶつけてみました。 追記:スライドに「ログにマーカーをつける」というのは、(コード読んでないけど)多分こちらのエントリにあるLog::Minimal::Indentとだいたい同じ感じのヤツです ところでWeb上で見かける感想の中でこんなのがありました: 今年個人的に一番衝撃的だったのはやっぱ、livedoor blogのPlack化です。技術的な側面もさることながら、ああいう近視眼的には何のメリットもないし、逆にデメリットの方が大きそうな案件にリソースを割くジャッジができる会社としての姿勢が当に凄いなと。 実はビジネス的にも意味はあるんだなー。 なかなか書くことができなかったんだけど、その内容というのがこちらと→ ブログのお引っ越し機能を大幅に強化しました! (

    YAPC::Asia Tokyo 2013: 「本当にあったレガシーな話」と最近のlivedoorBlogの改修 : D-7 <altijd in beweging>
  • perl-5.18で splitの挙動が変わっていた - Shohei Yoshida's Diary

    http://perldoc.jp/docs/perl/5.18.0/perl5180delta.pod#splits32first32argument32is32more32consistently32interpreted 知らなかったのでメモ。Templateのテストが Perl 5.18でこけていたのは これが原因のようです。なおリリースはされていないようですが、すでに修正は マージされているようです. Fix split for Perl 5.18.0 by jonjensen · Pull Request #19 · abw/Template2 · GitHub 変更点 splitの第一引数に空白一つの文字列リテラルを与えたときと 空白一つが代入された変数を指定したときの挙動が今まで違って いたのが同じになったようです。 #!perl use strict; use warni

    perl-5.18で splitの挙動が変わっていた - Shohei Yoshida's Diary
  • 最近のPlack/Starletのパフォーマンス改善まとめ。最大2倍の性能向上 - Hateburo: kazeburo hatenablog

    最近のPlackとStarletにはパフォーマンス改善のため次のような変更が加えられています。 Plackに対する変更 (カッコ内はバージョン) Plack::Request::query_parameters の最適化 (1.0018) Plack::Middleware::AccessLog に Apache::LogFormat::Compilerの導入 (1.0023) Starletに対する変更 local $SIG{..} を無くし、rt_sig* system call が呼ばれる回数を削減 (0.17_01) headerとbodyを結合して一度に出力する閾値を1024から8192に変更 (0.18) ベンチマーク これらの変更の効果を確認するために、次のベンチマークを実行してみます まずアプリケーションはこんな感じ use Plack::Builder; use Plac

    最近のPlack/Starletのパフォーマンス改善まとめ。最大2倍の性能向上 - Hateburo: kazeburo hatenablog
  • 後方互換性についてさいきん考えていることを書く - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    後方互換性を守るべきブロダクトと、そこまで気にしなくていいプロダクトがあると思っている。 後方互換性を守るべきもの これはもうシンプルで、「依存関係の下のほうにあるプロダクト」。下のレイヤーを担うことを狙っているものについては後方互換性を守って行かないとみんなが困る。多くのライブラリがすでに依存してるライブラリとか、あとはまあデータフォーマットとかも変わるとそもそも溜め込んだデータとかが使えなくなったりするので困る。 Perl5 が後方互換性を保つことに熱心なのは、そもそも Perl がシステムツールによく使われていることと無関係ではないはずだ。system perlのversion上げたらシステム動かなくなりましたみたいなことになったら困るからかなり気を使ってる。その点、Python が 2 系から 3 系に移行するときにばっさりと後方互換を捨ててしまったのは失敗だったんじゃないかなと私

    後方互換性についてさいきん考えていることを書く - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • perl - 最速のUTF-8処理法 : 404 Blog Not Found

    2013年03月04日14:45 カテゴリTipsLightweight Languages perl - 最速のUTF-8処理法 Perl Cookbook (English, Kindle Ed.) Christiansen / Torkington [邦訳: Perlクックブック] というわけで解説。 2013/03/04:Unicode::UTF8 がガチ爆速すぎる - bayashi.net encode より decode のが差が大きい感じ。encode だけだと、文字列長くなると Encode の方が速いっぽい。 まずは改めて検証してみましょう。 https://gist.github.com/dankogai/5079930 確かにその通りになっています。Unicode::UTF8はEncodeはおろかPerl組み込みのutf8::decodeより高速なのか(文字列をコピ

    perl - 最速のUTF-8処理法 : 404 Blog Not Found
  • Amon2::Plugin::Web::PageCacheというのを書いた - ダメ人間オンライン

    レスポンスのHTMLをまるっとキャッシュするplugin書いた。書いたというか別のWAFで使ってたやつをAmon2用に書き直した。キャッシュ先はmemcachedです。 dameninngenn/p5-Amon2-Plugin-Web-PageCache · GitHub やりたかったこと requestのpath毎にキャッシュするか否か設定できるようにしたい requestのpath毎にキャッシュのexpire設定できるようにしたい /path/to?p=1 と /path/to?p=2 は別のものとしてキャッシュしたい 想定してないクエリがついてきた場合はスルーしてクエリがついてないものと同じ扱いにしたい requestのpath毎にキャッシュ削除ができるようにしたい HTMLだけじゃなくてJSON返してる場合もキャッシュしたい そこそこお手軽に使えるようにしたい 使い方 モジュールを

    Amon2::Plugin::Web::PageCacheというのを書いた - ダメ人間オンライン
  • Shibu's Diary: PythonのPyPIのパッケージ数がPerlのCPANを抜いた日

    抜かれたとはいっても、Perlも過去2年で7000ぐらい数を増やしてきているわけだし、まだまだアクティブです。僕もお世話になりましたが、アップロードされているソースコードを読んでアルゴリズムの勉強をさせてもらったり、価値の高さは健在です。歴史がある分、ハッカーな人も多くてレベルが高いイメージです。ちょっと前に「エンジニアならgithubのアカウントでソーシャルコーディングで」みたいなバズワードが流行ってましたが、20世紀からsourceforge.netのアカウント持っている人の方が断然オーラを感じるぜ、的な。 そして、PythonPerlを抜いたとはいえ、その立場すでに脅かされています。node.jsのパッケージのnpmです。Google Trendsで見ると、2010年8月ぐらいにできたばかりかな、というところですが、すでに23300。ここ1ヶ月でも1500ぐらい数を伸ばしていますし

  • Moose::RoleはJavaのInterfaceなんかじゃない - Pixel Pedals of Tomakomai

    Moose::RoleはJavaのInterfaceと似たような物だと思ってたんですが、大きな誤解でした。 モダンPerlの世界へようこそを読んで、Moose::RoleはTraits: Composable Units of Behaviorの概念の実装らしいことがわかったので、この論文を読んでみました。*1。非常に面白い内容でした。P.12 の a) と b) を見るだけでも、この概念の面白さが伝わるんじゃないかと。要は、指定した振る舞い(requires)から新しい振る舞い(provides)を作るものが、Traitsってことです。(ただし、ここで言う振る舞いにはアクセサを含みます。) 誤解していたこと Moose::RoleをTraitsとして見なすとすれば、JavaのInterfaceの性質である以下の2点は誤解です*2。 Moose::Roleは、単なるインタフェース(API)

    Moose::RoleはJavaのInterfaceなんかじゃない - Pixel Pedals of Tomakomai
  • おそらくはそれさえも平凡な日々: CPANモジュールのパッケージングの歴史

    最近同僚が次々とCPAN Authorになってて良い流れだなーとか思っています。 ただ、CPANへのモジュールの上げ方がわからないとか、M::Iを使えばいいのか M::Bを使えばいいのか、それらがそもそも何やってるのか分からないという話も 聞くので、僕自身もその辺の知識を整理してアップデートしました。 とりあえず、今はModule::Buildを使っておけば良いんじゃないかと 思っていますが、そこに至る歴史的経緯をまとめてみます。 大体、以下に書いてあることに加えて、最近の動きを書いています。 Module::Build:MakeMakerの後継者を目指して PerlでCPAN形式のモジュールを配布する場合は、Makefile.PLなりBuild.PLなりを モジュール作者が用意して、それがインストールに必要なファイル類を自動生成 するという流れになっています。 既存の雛形を使うと色々ファ