タグ

ブックマーク / dankogai.livedoor.blog (29)

  • tips - 動的配列と空要素と要素の列挙 : 404 Blog Not Found

    2012年01月15日18:30 カテゴリLightweight LanguagesTips tips - 動的配列と空要素と要素の列挙 動的配列は便利ですが、言語ごとの違いにはちょくちょく悩まされます。 JavaScript: The Definitive Guide (6th Ed.) David Flanagan 連想配列のlengthプロパティ - 馬鹿と天才は紙一重って使えないんですね。 var array = []; array["a"] = "string a"; array["b"] = "string b"; console.log(array.length); 見事に0が返ってきます。意味が分かりません。 perl5 最も直感的な実装。 要素数:最大の添字+1 列挙:要素が空でもなされる use 5.012; my @fizzbuzz; for my $i (1..30

    tips - 動的配列と空要素と要素の列挙 : 404 Blog Not Found
    walf443
    walf443 2012/01/24
  • #perl and more - $_ とスコープ : 404 Blog Not Found

    2009年11月01日22:30 カテゴリLightweight Languages #perl and more - $_ とスコープ 良記事は補足して育てよう。 現代的なPerlの記述方法一覧 + α - Perl入門〜サンプルコードによるPerl入門〜 補足するのは、$_の使いどころについて。 実はこうすることで、$_の使用は暗示的なものも含めてすべてトラップすることが出来る。 use strict; use warnings; { package _; use Carp; sub TIESCALAR { bless {}, shift } sub FETCH { croak q(Don't you dare get $_) } sub STORE { croak q(Don't you dare set $_) } } tie $_, "_"; $_ = 1; 明示的なものだけでは

    #perl and more - $_ とスコープ : 404 Blog Not Found
    walf443
    walf443 2009/11/24
    tie変数なのでpackage _で上書きすればtrapできるってことっぽい?
  • #perl #regexp - $utf8 =~ /.../i # の傾向と対策 : 404 Blog Not Found

    2009年10月01日18:00 カテゴリLightweight Languages書評/画評/品評 #perl #regexp - $utf8 =~ /.../i # の傾向と対策 というわけで、その傾向と対策を。 [Perl]UTF8-flagged strings affects regexps with the "i" modifier - use GFx::WebLog; Perlではutf8フラグ付きの文字列に対するuc/lc/"i"正規表現修飾子は非常に遅いのだが,H::F::Liteでは/iを使っているので,試しに/iを使わないようにしてみると,速度が改善した id:gfxの主張は、以下のようにして確かに確かめられる。 use strict; use warnings; use Benchmark qw/cmpthese timethese/; { use bytes; m

    #perl #regexp - $utf8 =~ /.../i # の傾向と対策 : 404 Blog Not Found
    walf443
    walf443 2009/10/05
  • #perl - utf8::decode()ではなくEncode::decode_utf8()を使うべき理由 : 404 Blog Not Found

    2009年09月13日13:00 カテゴリLightweight Languages #perl - utf8::decode()ではなくEncode::decode_utf8()を使うべき理由 駄目です。 [を] Perl の utf8 まわりのおまじない 最近良く使うおまじない、というかイディオム。 utf8::decode($text) unless utf8::is_utf8($text); こういう場合は、Encode::decode_utf8()でないと。 以下をごらんください。 #!/usr/bin/perl use strict; use warnings; use Encode; use Devel::Peek; for my $bytes ( "\x2F", "\xC0\xAF", "\xE0\x80\xAF", "\xF0\x80\x80\xAF" ) { my $u

    #perl - utf8::decode()ではなくEncode::decode_utf8()を使うべき理由 : 404 Blog Not Found
    walf443
    walf443 2009/09/22
    utf8::decodeの使いどころについて
  • perl - ネコ演算子と<*glob*>とFile::Glob::Slurp : 404 Blog Not Found

    2009年06月10日07:30 カテゴリLightweight Languages perl - ネコ演算子と<*glob*>とFile::Glob::Slurp それって<*glob*>「メタ演算子」で。 Perl5 でネコ演算子Range Check - id:kazuhookuのメモ置き場 Perl 5 で、ある値が範囲内に入ってるか確認したいことってあるわけで。たとえば、 my $t = time; if ($min <= $t && $t < $max) { ... } みたいな冗長なコードは書きたくない。 こんな感じで。 #!/usr/bin/perl use strict; use warnings; { no warnings 'redefine'; *CORE::GLOBAL::glob = sub{ my $expr = shift; warn $expr; $exp

    perl - ネコ演算子と<*glob*>とFile::Glob::Slurp : 404 Blog Not Found
    walf443
    walf443 2009/06/10
  • 試訳 - コードをセキュアにする10の作法 : 404 Blog Not Found

    2008年01月05日02:45 カテゴリ翻訳/紹介Code 試訳 - コードをセキュアにする10の作法 全コーダー必読。プログラマーだけではなく法を作る人も全員。 Top 10 Secure Coding Practices - CERT Secure Coding Standards 突っ込み希望なので、いつもの「惰訳」ではなく「試訳」としました。 Enjoy -- with Care! Dan the Coder to Err -- and Fix コードをセキュアにする10の作法 (Top 10 Secure Coding Practices) 入力を検証せよ(Validate input) - 信頼なきデータソースからの入力は、全て検証するようにしましょう。適切な入力検証は、大部分のソフトウェア脆弱性を取り除きます。外部データは疑って掛かりましょう。これらにはコマンドライン引数、

    試訳 - コードをセキュアにする10の作法 : 404 Blog Not Found
  • perl - Tie::Array::Lazy : 404 Blog Not Found

    2007年05月26日18:30 カテゴリLightweight Languages perl - Tie::Array::Lazy この点で妥協する、ということであれば、実装はそれほど難しくないはず。 Matzにっき 「長さが決まってないArrayがありえるのか」というツッコミもあるだろう。 が、queueやらstackやらとしての機能までも備える「大クラス主義」のRubyのArrayである。 ある時点でサイズが決まっていないなど些細なことではないだろうか。 アクセスがO(1)である点も、「値が確定している範囲内ではO(1)」で十分だと考える。 と、思って作ったら、簡単にできちゃいました。 demo.pl use 'Tie::Array::Lazy'; use Data::Dumper; local $Data::Dumper::Terse = 1; local $Data::Dumpe

    perl - Tie::Array::Lazy : 404 Blog Not Found
    walf443
    walf443 2007/05/26
  • 404 Blog Not Found:perl - 万能なnewの書き方

    2007年04月23日22:45 カテゴリLightweight Languages perl - 万能なnewの書き方 Perl 5のOOは、慣れてしまうと簡単だ。 継承とか考えずに、普通にクラスを作りたければ、必要なのは以下の二行だけ。 package Klass; sub new { bless {} }; これだけでは何もできないので、とりあえずnameというアクセサーを追加してみる。これだけ。 sub name { my $self = shift; $self->{name} = shift if @_; return $self->{name}; } しかし、上の形式だと、継承をサポートしていない。だから、 package Klass; sub new { bless {} }; package Klass::Sub; our @ISA = qw/Klass/; # new

    404 Blog Not Found:perl - 万能なnewの書き方
    walf443
    walf443 2007/04/26
  • 404 Blog Not Found:perl - to goto or not to goto, that's the continuation

    2007年04月18日06:45 カテゴリLightweight Languages perl - to goto or not to goto, that's the continuation Perlでもgotoを使えば、当の継続(continuation)が可能であることを示す。 継続ってなんのことだかさっぱりわからない一は、以下にあらかじめ目をとおしておいていただきたい。 なんでも継続 なんでも継続、Perl で。 : torus solutions! 404 Blog Not Found:継続は力なり Tociyuki::Diary - Perl 5.8 で似非継続 Perl 5のgotoには、3種類ある。 goto LABEL こちらはCなどで見られるgotoと等価である。 goto END; print "Hello\n"; END: print "Goobye\n"; G

    404 Blog Not Found:perl - to goto or not to goto, that's the continuation
    walf443
    walf443 2007/04/18
  • perl - Dispatch::Table : 404 Blog Not Found

    2007年03月09日19:30 カテゴリLightweight Languages perl - Dispatch::Table これが気になったので。 YappoLogs: Apacheで携帯キャリアのIPアドレス制限をするには Allow from 210.153.84.0/24 Allow from 210.136.161.0/24 ... なぜかというと、この場合条件をリニアサーチしているので、条件判定がO(n)だからだ。私は最近Apacheのsourceを読んでいないので断定は出来ないが、1.xのころの記憶ではそうだ。 こういう場合、Dispatch Tableを使った判定にしたい。それならO(C)だ。 Dispatch Tableというのは、例えば if ($a == 0){ #.... }elsif ($a == 1){ #.... } とか書く代わりに、 my $disp

    perl - Dispatch::Table : 404 Blog Not Found
    walf443
    walf443 2007/03/10
  • perl - B::Deparse : 404 Blog Not Found

    2007年02月11日13:45 カテゴリLightweight Languages perl - B::Deparse 尻馬乗るべし、ということでB::Deparseの紹介。 いやなブログ - スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl スクリプト言語用の CUIのデバッガの使い方を簡単にまとめました。対象言語は Ruby, Python, Perl です。実は私も、デバッガーはperl -de1ぐらいしか使っていない(perl -de1は非常によく使うので、Terminal.appのウィンドウの一つがそれ専用になっている。スクリプト言語のインタラクティブな利用法に関しては以前「404 Blog Not Found:LL Intaractive」にまとめたのでそちらをご覧頂くとして、ここではなぜスクリプト言語では滅多にデバッガーを使わないかをおさらいした

    perl - B::Deparse : 404 Blog Not Found
    walf443
    walf443 2007/02/11
  • perl - .xsを複数.pmで共有するには : 404 Blog Not Found

    2007年02月03日00:30 カテゴリLightweight Languages perl - .xsを複数.pmで共有するには これにはころたまな解決法がある。 ここギコ!: perlモジュールでXSの中に2つのパッケージを入れたい時はどうすればいいのだろう MyModule::MM1、MyModule::MM2を両方useすると、動作は正常にするみたいなんだけど Subroutine MyModule::MM1::increment redefined at /.../XSLoader.pm line 29. Subroutine MyModule::MM2::increment redefined at /.../XSLoader.pm line 29. のようなwarningが出てうざい。 まず、MyModule.pmを作る。 package MyModule; use str

    perl - .xsを複数.pmで共有するには : 404 Blog Not Found
    walf443
    walf443 2007/02/04
  • 404 Blog Not Found:perl - In-Memory File

    2006年11月08日04:30 カテゴリLightweight Languages perl - In-Memory File Perl 5.8以降では、このような場合にin-memory fileが使えます。 【続】やはり Perl はメモリ喰いな言語。データ型の内部構造 :: Drk7jp DB上の全レコードをいったん perl 側の配列に格納して、その結果を返す。ってコードなのですが、当然ながらレコード数が多くなればメモリをうのは当たり前なのですが、以前の記事の内容を完全に忘却してました。ここには落とし穴があるのです。使い方は、簡単です。 my @array = (0x21..0x7e); my $memfile; open my $wfh, '>', \$memfile or die $!; print $wfh chr($_), "\n" for (@array); clos

    404 Blog Not Found:perl - In-Memory File
    walf443
    walf443 2006/11/08
  • javascript - プロトタイプ的継承完全版 : 404 Blog Not Found

    2006年10月18日21:00 カテゴリLightweight Languages javascript - プロトタイプ的継承完全版 Kazuho@Cybozuさま、いつもありがとうございます。 Kazuho@Cybozu Labs: JavaScript の String 型を継承する 結論から言うと、String 型も継承っぽいことができます。こんな感じ。 おかげでプロトタイプ的継承モデルの完全版が出来ました。 AtomicなObjectを継承 これは、以下のように包括的に出来ます。 var Atomic = function(C){ var P = function(v){ this._v = v; }; P.prototype = new C; P.prototype.valueOf = function(){ return this._v.valueOf(); } P.pro

    javascript - プロトタイプ的継承完全版 : 404 Blog Not Found
  • Stiffと偉大なプログラマー達-一般書籍 : 404 Blog Not Found

    2006年09月14日20:45 カテゴリBlogosphere書評/画評/品評 Stiffと偉大なプログラマー達-一般書籍 引き続きSztywny Blog - Stiff asks, great programmers answerの翻訳。 今回の質問はこちら。 プログラミング関連以外の書籍の中でお気に入りは? プログラマー達の解答は以下のとおり。 Dan the Translator Steve Yegge: 一冊だけ?、そりゃないものねだりだよ。一冊にしぼるには、世の中いいが多すぎる。 今月読んだ中で一番気に入ったのは、Neil GaimanのStardustとHofstadter/DennetのMind's I。 お気に入りの作家ということであれば、Kurt Vonnegut, JrとJack Vance。 Linus Torvalds: もうDawkinsのThe Selfi

    Stiffと偉大なプログラマー達-一般書籍 : 404 Blog Not Found
  • 404 Blog Not Found:Stiffと偉大なプログラマー達-電脳関連書籍

    2006年09月14日20:15 カテゴリBlogosphere Stiffと偉大なプログラマー達-電脳関連書籍 引き続きSztywny Blog - Stiff asks, great programmers answerの翻訳。 今回の質問はこちら。 プログラミング関連の書籍の中でお気に入りは? プログラマー達の解答は以下のとおり。 Dan the Translator Steve Yegge: うむむ、厳しい質問。Gödel, Escher, Bachかな。厳密にはプログラミング関連とはいえないけど。「プログラミングに関する」ということならSICPかな。 Linus Torvalds: はあ。最近読書といえば、フィクションや電脳無関連ばかりだなあ(古き佳きRichard DawkinsのThe Selfish Geneとか)。 プログラミングに関して言えば、唯一思い浮かぶのは、古

    404 Blog Not Found:Stiffと偉大なプログラマー達-電脳関連書籍
  • 404 Blog Not Found:Stiffと偉大なプログラマー達-お気に入りの道具

    2006年09月14日19:45 カテゴリBlogosphere Stiffと偉大なプログラマー達-お気に入りの道具 引き続きSztywny Blog - Stiff asks, great programmers answerの翻訳。 今回の質問はこちら。 お気に入りのツール(OS,プログラム/スクリプト言語、テキストエディタ、ヴァージョン管理システム、シェル、DBエンジン、その他なくてはならないツール)は何ですか?他のツールよりそれらが好きな理由は? プログラマー達の解答は以下のとおり。 Dan the Translator Steve Yegge: OS: Unix! 今ではlinux、cygwin、そしてdarwinを同程度に使っている。生産性向上ツールとしてこの上なし。プログラマーたるもの、/binおよび/usr/bin直下のツールの使い方をすべてならうべし。 スクリプト言語:

    404 Blog Not Found:Stiffと偉大なプログラマー達-お気に入りの道具
  • Stiffと偉大なプログラマー達-10倍、100倍の生産性 : 404 Blog Not Found

    2006年09月14日19:00 カテゴリBlogosphere Stiffと偉大なプログラマー達-10倍、100倍の生産性 引き続きSztywny Blog - Stiff asks, great programmers answerの翻訳。 今回の質問はこちら。 プログラマーの中には、生産性が10倍、100倍高いものたちがいるが、その秘訣は? プログラマー達の解答は以下のとおり。 ちなみに回答例:「ソースを赤く塗る。二回繰り返せばほぼ10倍(9倍)、四回で100倍(81倍)となるはず:)もちろん足は不要だし、若さ故のあやまちは極力避けるべきで」 Dan the Translator Steve Yegge: もし立ち止まって、なぜアスリートたちが等しく能力が高いわけではないかを考えれば答えは出ると思う。Thomas Edisonの台詞にも関連するヒントあり。 Linus Torvald

    Stiffと偉大なプログラマー達-10倍、100倍の生産性 : 404 Blog Not Found
  • Stiffと偉大なプログラマー達-最近の技術 : 404 Blog Not Found

    2006年09月14日18:45 カテゴリBlogosphere Stiffと偉大なプログラマー達-最近の技術 引き続きSztywny Blog - Stiff asks, great programmers answerの翻訳。 今回の質問はこちら。 比較的最近の技術の習得のために三ヶ月あるとしたら、どれを学びますか? プログラマー達の解答は以下のとおり。 Dan the Translator Steve Yegge: 実はその三ヶ月が今ある(パートタイムで)。それで今Dojo(ttp://dojotoolkit.org/)と、高度なAJAXとDHTMLを学んでいるところだ。かなり意欲的なWebアプリケーションを実際に作りながらそれを学んでいる。Dojoはほんとクールだし、時とともにさらに改良されることを確信している。 Linus Torvalds: うーん、FPGAをいじりたいなあ。で

    Stiffと偉大なプログラマー達-最近の技術 : 404 Blog Not Found
  • Stiffと偉大なプログラマー達-Next Big Thing : 404 Blog Not Found

    2006年09月14日18:30 カテゴリBlogosphere Stiffと偉大なプログラマー達-Next Big Thing 引き続きSztywny Blog - Stiff asks, great programmers answerの翻訳。 今回の質問はこちら。 次のNext Big Thing(大きな潮流)は?X指向?Y言語?量子コンピューター?一体? プログラマー達の解答は以下のとおり。 Dan the Translator Steve Yegge: Webアプリケーションプログラミングは、最重要のクライアントサイドプログラミングになると思う。その他のクライアントサイドプログラミングは、それにより陳腐化する。GTK, Java Swing/SWT, Qt,そしてクライアントに依存するCocoreや Win32/MFC/その他も。 一夜にしてそうなるわけじではない。十年かけてその

    Stiffと偉大なプログラマー達-Next Big Thing : 404 Blog Not Found