タグ

ProgrammingとPerlに関するagwのブックマーク (433)

  • 事故発生の間隔(1) - inamori’s diary

    ある工場では1年間に7件事故が発生する。あるとき事故が発生し、その7日後にまた事故が発生したとする。この間隔は非常に短く、非常事態と言えるだろうか。 工場は365日稼動している。また、周期境界、すなわち、1日目に発生していれば、366日目にも発生していることにする。だから、7件事故が発生すれば、7つの間隔があると考える。この前提で、1年間で最も短い事故の間隔は平均何日だろう。 とりあえず、疑似乱数を使って10万回回してみた。 my $nDays = 365; my $nAcc = 7; my @minInterval; for(my $i = 0; $i < $nRep; $i++) { $minInterval[calcMinInterval()]++; } for my $i(0..53) { printf "%d,%d\n", $i, $minInterval[$i]; } sub

    事故発生の間隔(1) - inamori’s diary
  • tips - MD5のコスト : 404 Blog Not Found

    2007年03月27日23:30 カテゴリTips tips - MD5のコスト 同一ファイルかどうかを調べるのにMD5を使うというのは、比較するファイルが両方手元にある場合はおすすめ出来ません。 重複ファイルを消すPythonスクリプト 「ファイル名が違っても中身が同じファイルを探してくれる『NoClone』 | P O P * P O P」と 「404 Blog Not Found:perl - File::Find::Identical」にインスパイヤされた話ですが、 プログラム自体は数年前にPerlとmd5sumで書いて、 去年Pythonで書き直しました。 ダウンロードはこちら。その一番の理由は、コストです。 ファイルどおしの単純比較の倍以上します。 以下は、FreeBSD 6.2、Xeon 2.66GHz x 2、400GB ATAPI 7200rpmにおいて、FreeBSD

    tips - MD5のコスト : 404 Blog Not Found
  • perl - もうやらなくてもいい昔のコーディングテクニック : 404 Blog Not Found

    2009年05月05日13:00 カテゴリLightweight Languages perl - もうやらなくてもいい昔のコーディングテクニック ここに上がっているテクニックは、未だにときどき(確信犯的)に使(う|わざるを得ない中年プログラマーの弾です。 もうやらなくていい昔のコーディングテクニックあれこれ - スラッシュドット・ジャパン 特に、 あとはパンチャーのおばさんにお菓子を持って行くのも、ひとつのテクニックです。 は、 s/パンチャー/プログラマー/g すると現在に至るも最強のテクニックで、我ががこの使い手だというのは我が家で hackerthon に参加された方は一人残らずご存知だと思います。 と前おいた上で、それのPerl編を。 以下、順不同で8つほど。 0. use strict;とuse warnings;なしでスクリプトを書く やはり最初に書いておくべきでしょう。理

    perl - もうやらなくてもいい昔のコーディングテクニック : 404 Blog Not Found
  • Perlのstable quicksort - てきとうなメモ

    stableなquicksortないかなと思っていろいろ探していたらPerlのquicksortがstableな実装だった. perl5.10.0のpp_sort.cより引用. Perlのquicksortについては以下のようなデータ構造を利用している. indir list1 +----+ +----+ | | --------------> | | ------> first element to be sorted +----+ +----+ | | --------------> | | ------> second element to be sorted +----+ +----+ | | --------------> | | ------> third element to be sorted +----+ +----+ ... +----+ +----+ | | ----

    Perlのstable quicksort - てきとうなメモ
  • Wavelet Tree - naoyaのはてなダイアリー

    圧縮全文索引の実装などでしばしば利用される Rank/Select 辞書と呼ばれるデータ構造があります。詳しくは参考文献を参照していただくとして、今回は一般の文字列に対して効率的に Rank/Select を可能とするデータ構造である Wavelet Tree (ウェーブレット木) のライブラリを作りました。 http://github.com/naoya/perl-algorithm-wavelettree/tree/master my $wt = Algorithm::WaveletTree->new("abccbbabca"); is $wt->rank(6, 'a'), 2; is $wt->rank(6, 'b'), 3; is $wt->rank(9, 'b'), 4; is $wt->select(0, 'a'), 0; is $wt->select(1, 'a'), 6;

    Wavelet Tree - naoyaのはてなダイアリー
  • ふつうにPython - 書評 - Pythonポケットリファレンス : 404 Blog Not Found

    2009年04月07日14:00 カテゴリLightweight Languages ふつうにPython - 書評 - Pythonポケットリファレンス 著者より献御礼。 Pythonポケットリファレンス 柏野雄太 日Python がいまいち普及していない理由は、こういうがなかったからかも知れない。カジュアルでフルーガルな、いままでありそうでなかった一冊。 書「Pythonポケットリファレンス」は、「実践Python」の著者の一人が、「習うより慣れろ」のスタンスで書いたPython。 目次 - 書籍案内:Python ポケットリファレンス|gihyo.jp … 技術評論社 Part1 基とルール 01 インストールと環境設定 02 Hello Python 03 Python の特徴と強み 04 Python 入門 05 数値 06 文字列 07 フロー制御 08 リスト

    ふつうにPython - 書評 - Pythonポケットリファレンス : 404 Blog Not Found
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • perl,javascript and more - evalは最後の武器 : 404 Blog Not Found

    2009年02月08日01:00 カテゴリLightweight Languages perl,javascript and more - evalは最後の武器 うーん、そうなのだけど.... メタプログラミングとは - Perl入門〜サンプルコードによるPerl入門〜 メタプログラミングとはソースコードを生成するプログラミングのことです。メタプログラミングによって生成したソースコードは、eval関数で実行することができます。 evalだけがメタプログラミングの技法ではないし、またevalはその威力ゆえ最後の選択肢とすべきだ。 #!/usr/local/bin/perl use strict; use warnings; use Benchmark qw/timethese cmpthese/; cmpthese( timethese( 0, { eval => sub { no warn

    perl,javascript and more - evalは最後の武器 : 404 Blog Not Found
  • Perlゼミ(サンプルコードPerl入門)

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

  • 継続は力なり : 404 Blog Not Found

    2005年08月28日21:42 カテゴリLightweight Languages 継続は力なり LLDN2005、みなさんお疲れさまでした。私は寝不足もあって今日は一日中死んでました。昼の部と夜の部に関してすでにレポートがいくつか上がっています。 Perl6 and Parrot Essentials Randall/Sulgaski/Tötsch blogでは、順不同にLLDN2005では扱いきれなかった「宿題」を片付けて行く事にします。まずは継続について。 会場Kahuaへの質疑問答の中で、継続に関する質問が失礼ながらとんちんかんで、言語屋にとっては常識である継続(continuation)も、まだまだ一般的に理解されているとは言えないことを実感した。すでにgaucheのShiroさんによる「なんでも継続」などのすばらしい解説があるにも関わらず、ここで蛇足的な説明と、そしてPar

    継続は力なり : 404 Blog Not Found
  • Schwartzian transform - Wikipedia

    This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (February 2024) (Learn how and when to remove this message) In computer programming, the Schwartzian transform is a technique used to improve the efficiency of sorting a list of items. This idiom[1] is appropriate for

  • 「モダンPerl入門」書きました。 - D-6 [相変わらず根無し]

    「モダンPerl入門」書きました。 モダンPerl入門 今みたらAmazonでも表紙が入稿されたらしいので宣伝させていただきます。えー、モダンPerl入門というを翔泳社さんから出版させていただくことになりました。でも最初に断っておきます。誤字脱字はある気がします。ごめんなさいごめんなさい。日語不得手なんです(こういう時だけ帰国子女カードを使わせていただきます)。 ともあれ、内容的には自分が普段Perlを使っていて、同僚とかに知っておいてほしいな、って思っている実践的な内容ばかり書きました。このはたとえPerlがメインの言語ではなくともPerl仕事で使っていて、なおかつ初級〜中級のあたりでうろうろしてしまっている人たち向けに書いています。初級者向けの構文説明はほとんどありません。上級者向けのわけわかんないところはXS以外ありません(はい、XSの入門あります)。ほとんどは、Perlで業

  • バイナリファイルを解析する

    Perlといえばテキスト処理や正規表現が得意で、バイナリを扱うような話についてはあまり聞かない印象があります。Perlが持つ関数pack/unpack等でもバイナリ処理は可能ですが、今回はData::ParseBinaryを使ってバイナリファイルを気軽に解析してみましょう。 基 ファイルからストリームを作る 解析したいファイルをData::ParseBinaryで扱えるストリームに変換します。 use Data::ParseBinary; my $stream = CreateStreamReader(File => $file_handle); 解析したい構造を定義する Struct関数で解析したい構造を定義します。Struct以下には基データ型やコンテナ型、ビット/バイトパディング型、制御構文型等を使用できます。各型に指定したラベルが解析結果として得られるハッシュのキーとなります。

  • プログラマーが単一言語にこだわるべきではないN個の理由 : 404 Blog Not Found

    2006年11月29日01:30 カテゴリLightweight Languages プログラマーが単一言語にこだわるべきではないN個の理由 Where N = the number of programming languages ever existed. 確かに今なら「階段を登る」-- ではなく、「階段を下りる」というアプローチの方がよさそうな気がする。 {informa,computa,evolu}tion: プログラマがC言語にこだわるべきでない0番目の理由 新しいプログラミング言語を作りたいと思ったら、そのプロトタイプはCのような低級言語ではなく、高級言語で実装したほうがいいのではないでしょうか。 問題は、高級言語側で「階段を下りる」方にはあまり労力が割かれていないこと。 それでなぜそうなのか、といえば、結局のところ「Cで間に合っています」という答が返ってくることが多いのではな

    プログラマーが単一言語にこだわるべきではないN個の理由 : 404 Blog Not Found
  • 10進数から16進数への変換 - tachikawa844の日記

    perlでは関数splintfを使うと、いろいろな書式で数を文字列に変換できるようで、 my $value = 255; my $str = splintf('%X', $value); print $str; とすれば FF と出力される。 pythonでは関数splintfは無いようなので、 value = 255 str = "%X" %value print str とすれば良いみたい。 0〜255までの16進数の表を作るには、 perlだとforeach文を使って foreach my $value (0..255) { my $str = splintf('%X', $value); print $value, ' -> ', $str, "\n"; } とするようだが、pythonだと for i in range(0, 256): print "%d -> %X" %(i,

    10進数から16進数への変換 - tachikawa844の日記
  • perl, python & ruby - ord() vs. Unicode : 404 Blog Not Found

    2006年11月26日02:45 カテゴリLightweight Languages perl, python & ruby - ord() vs. Unicode というわけで、ord篇はこちら。 404 Blog Not Found:perl, python & ruby - chr() vs. Unicode とりあえずchrが長くなったのでordは別entryということで。 文字から数値へ(ord) まずはPerlの例。 #!/usr/local/bin/perl use strict; use warnings; use utf8; binmode STDOUT, ':utf8'; sub say { print @_, "\n" }; say ord "\x{61}"; say ord "\x{3b1}"; say ord "\x{5F3E}"; say ord "\x{2A6

    perl, python & ruby - ord() vs. Unicode : 404 Blog Not Found
  • sprintf()関数 - libnitsuji.so

    普段Perl使ってて、sprintf()ってよく使うんだけど、Perlの場合、引数の部分に配列を指定して、たとえば以下のように書ける。 my @list = ('foo', 'bar'); my $str = sprintf('%s, %s', @list); これは、 my $str = sprintf('%s, %s', @list); が my $str = sprintf('%s, %s', 'foo', 'bar'); と同じだから、引数の数が書式指定と一致しておkになります。 これ、配列に値を入れといてあとで使えるから便利なんだけど、これってPHPとかRubyとか他の言語だとできないんですね。配列が、Perlでいうところの配列リファレンスなので、sprintf('%s, %s', list);とかやると引数がすくないよ!っていわれるわけです。もちろんPerlでもsprintf(

    sprintf()関数 - libnitsuji.so
  • There's more than one language to cook your problems : 404 Blog Not Found

    2006年11月21日13:30 カテゴリ書評/画評/品評Lightweight Languages There's more than one language to cook your problems 今書いているの資料として両書とも購入したのだけど、よせばいいのに二つとも一気読みしてしまった。 Python Cookbook (2nd Ed.) Ruby Cookbook コンデンスミルクを二缶いっきのみしたような感じ。うぐぐ... Perl Cookbook (English) Christiansen / Torkington [邦訳: Perlクックブック] 見てすぐわかるとおり、"Python Cookbook"も"Ruby Cookbook"も、大好評だった"Perl Cookbook"(404 Blog Not Found:perl - "Hello, world!"

    There's more than one language to cook your problems : 404 Blog Not Found
  • split の研究 - bkブログ

    split の研究 split 関数の挙動が言語ごとに微妙に異なると知人と話題になったので調べてみました。結果はまとめをどうぞ。 Ruby まずはRubyから調べてみます。irb を使って調べました。 % irb ... まずは普通に分割 >> "a,b,c".split(",") => ["a", "b", "c"] 末尾に空要素があると、省略されてしまう >> "a,,c,,".split(",") => ["a", "", "c"] 末尾の空要素を省略しないためには -1 が必要 >> "a,,c,,".split(",", -1) => ["a", "", "c", "", ""] 空文字列だと結果も空 >> "".split(",") => [] -1 をつけても同様 >> "".split(",", -1) => [] 分割パターンを指定しない場合も同様 >> "".split

  • Perl「言語」初心者がモダンなPerlを高速に学ぶ方法 | gihyo.jp

    ほかのプログラミング言語を使える人がPerlを学ぶ際、どのように学んでいけばよいかをまとめたブログ記事です。ブログ筆者は、特にPlaggerのソースを読むことを主張しています。Plaggerのコードリーディングが勉強になることは多くのPerlハッカーが主張しており[1]⁠、Plaggerの作者である宮川達彦氏の書くソースは、Plagger以外のものも、どれもこれ以上ないというくらい整然としており、リーディングに適しています。 ブログ記事では書籍についても述べています。現在オライリー・ジャパンなどの出版社から良質のPerlが多く出ていますが、PlaggerのようなモダンなPerlコードで書かれてない、と注意をうながしています。あくまでもコード例に関してはそのまま鵜呑みにせず、参考程度に読むのがよいようです。 記事では最後にPerlの動向を追いかける方法を紹介しています。現状ではWebフレー

    Perl「言語」初心者がモダンなPerlを高速に学ぶ方法 | gihyo.jp