タグ

ブックマーク / odz.hatenablog.com (16)

  • isset と array_key_exists - odz buffer

    昨日の続き。 2. array_key_existsよりハッシュを使え array_searchは、毎回全データを検索するので遅いです。 データに配列の順序が関係ないなら、連想配列 + issetを使うほうが高速です。 連想配列の場合ハッシュの仕組みが使われるのでその分高速です。 同様に、array_key_existsよりissetのほうがはるかに高速です。 array_search が遅いのはそのとおりだが、array_key_exists だってハッシュを使った検索じゃないかな。 実際、ベンチマーク(コードと結果は後述)を取ると確かに isset のほうが3倍ぐらい速いのであるが、高々3倍であることを考えると array_key_exists だってコストは定数時間な訳で配列の要素数などは関係ないように思える。 そもそも、isset と array_key_exists は配列が n

    isset と array_key_exists - odz buffer
    joan9
    joan9 2010/05/16
    benchの取り方とかも
  • Pythonはダメなところは信者がアレすぎるところ - odz buffer

    ref:http://d.hatena.ne.jp/kwatch/20080415/1208274736 まぁ、わからないでもないなぁ。 print 文がよけいな空白と改行を出力してしまう。 わかるなぁ。複数のオブジェクトを空白区切りなしで出力だとこんなのか。 print ''.join(map(str, [a, b, c])) print ''.join(str(x) for x in [a, b, c]) print ('%s' * 3) % (a, b, c) いやだこんなの。 まぁ、そもそも print なんて使うな派もいるというウワサをどこかで聞いたこともある。 ちなみに、コメントにある最後にカンマを追加する案はあまり解決になっていない。 list や dict や str が大文字で始まっていない。 これもわかるけど、正直あまり困らないなぁ。 built-in type のオブ

    Pythonはダメなところは信者がアレすぎるところ - odz buffer
    joan9
    joan9 2010/03/20
  • locate-library - odz buffer

    つーか、twittering-mode.elをどこに置いたのかすら忘れていてだめだめである。/usr/share/emacsのどこかに置いたかと思うのだけど全然見つからない。 てな事が書いてある。行きがけの駄賃でxml.elまで行ってしまおう。わたしの環境(Ubuntu 8.04)のEmacs 22.1 だとxml.elクリックするだけでソースコードまで連れていってくれた。find /usr/share/emacs|grep xml.elなどとして力づくで検索してもいい。 いまどきの Emacs なら M-x locate-library RET twittering-mode RET とかすればいいと思う。あと find-function なんかも便利。

    locate-library - odz buffer
    joan9
    joan9 2010/03/20
  • Emacs22 付属の python-mode - odz buffer

    Emacs22 からは python.el が付いてきてて、pycomplete なしでも補完ができるのだけど、補完機能が中途半端なのが残念。使うなら結局 pycomplete と組み合わせることになるかな。まぁ、そもそも python-mode.el と何が違うのかも良くわからんけど。 とりあえず導入メモ。 インストール pyreadlineと、ctypesをインストール。 Emacsのインストール先の etc\emacs.py を C:\Python24\Lib\site-packages\ あたりにコピー。 使い方 M-TAB 補完 C-c C-c バッファの内容を Python で実行 C-c C-r リージョンの内容を Python で実行 C-c C-s 任意の式を Python で実行 C-c C-z Python の出力を表示

    Emacs22 付属の python-mode - odz buffer
  • odz buffer - Meadow で python-mode pymacs pycomplete を使う

    Meadow で pycomplete を使うメモ。 Pymacs のインストール http://pymacs.progiciels-bpi.ca/ から Pymacs-0.22.tar.gz をダウンロードしてきてインストールする。 % cd Pymacs-0.22 % python setup.py installpymacs-services を起動するためのバッチファイル pymacs-services.bat を作って、 PATH の通ったところにおいておく。 % type C:\Python24\pymacs-services.bat python C:\Python24\scripts\pymacs-servicespymacs.el は load-path の通ったところにコピーする。 python-mode のインストール http://python-mode.sourc

    odz buffer - Meadow で python-mode pymacs pycomplete を使う
  • PHPのイテレーションの話とか - odz buffer

    ウノウラボ Unoh Labs: PHPのちょっとしたコツ 一時期PHPで飯をっていた身*1として、軽く突っ込みを。 4. if文は「===」を使う PHP勉強会で、Dinoのhnwさんに教わったことですが、'0.00' == '0'は真です。 もし、仮に、パスワード処理でデータ側でMD5などのハッシュ化してない場合に、上記が真になっては非常にまずいのではないでしょうか。 さらにいえば、もっといろいろな形で、真となる場合があるので「==」は使わず、「===」を使いましょう。 if ($str === 'hoge') { if (! ($str === 'hoge')) { if (is_null($null) === false) {書いてあること自体はまったくそのとおりなのだが、例がちょっと変。普通に以下のように書けばいい。 if ($str !== 'hoge') { if (!is

    PHPのイテレーションの話とか - odz buffer
    joan9
    joan9 2010/01/27
    ベンチマークのとりかたとか
  • 相変わらず - odz buffer

    ref:Perl, Python, Ruby の比較 以前の指摘で、一部訂正されたみたいなんだけど、相変わらずだったりするようで。 Perl: 引数をフラットなリストに変換して値渡し。参照渡しをするにはプロトタイプを用いる。少し複雑。 Python: 参照渡し。ただし、変更不能なオブジェクトは実質的に値渡し。 つまり、配列は、呼び出した関数内で変更を加えるともともとの配列も変更されてしまうが、数、文字列、タプルなどは変更されない。 レストパラメータ、オプショナルパラメータ、キーワードパラメータをサポート。 詳しくは Python チュートリアル 4.6 関数を定義する や Python 早めぐり 5. 関数定義 を見てください。 Ruby: Python と同じ。 まず、Perl について。簡単なスクリプトを書いて確認してみよう。 sub f { $_[0] = 10; } my $a =

    相変わらず - odz buffer
  • 壮大な車輪の再発明を見た - odz buffer

    ref:http://labs.unoh.net/2009/01/ccelisp.html ウノウラボのネタは久しぶりだな。 とりあえず、M-x describe-function RET ff-find-other-file RET とやってみることをおすすめする。多分、それだけで全部足りる。

    壮大な車輪の再発明を見た - odz buffer
    joan9
    joan9 2009/01/06
  • 「Perl, Python, Ruby の比較」があまりにもいい加減な件 - odz buffer

    ref:Perl, Python, Ruby の比較 ref:はてなブックマーク - Perl, Python, Ruby の比較 ref:はてなブックマーク - Perl, Python, Ruby の比較 ちょっと遅くなったが以前宣言したとおり、書いておく。 「Perl, Python, Ruby の比較」はどうも調査が足りないのか、結果的にかなり嘘のまじった文章になっている。あくまで、初心者の私見ですので気軽に聞き流してください。とはあるものの、はてブのコメント等で「参考になる」とか言っている人もいる*1ので一応指摘しておこうと思う。 3.2 次に Python 変数はデフォルトで局所変数となるので、 Perl のように my で宣言する必要はありません。 my を強制することで変数の typo を防げるという視点が抜けるのは若干フェアではないですね。 それから、Python には

    「Perl, Python, Ruby の比較」があまりにもいい加減な件 - odz buffer
  • XML2JSON for MyMiniCity - odz buffer

    ref:404 Blog Not Found:今日のMyMiniCity - 2007.12.21 + 野良API ref: 勝手に添削 - myminicity を Web::Scraper - Bulknews::Subtech - subtech XML を返す API(?) があるのになんでわざわざ scrape してんの? #!/usr/bin/perl use strict; use warnings; use XML::Simple; use LWP::Simple; use JSON::Syck; use URI::Escape; use CGI; use CGI::Carp qw(fatalsToBrowser); my $q = CGI->new; my ($city, $callback); if ($q->path_info =~ m{^/([^/]+)/(.*)}

    XML2JSON for MyMiniCity - odz buffer
  • 簡易HTTPサーバ - odz buffer

    ref:naoyaグループ - naoyaの日記 - 指定したパスをルートにして公開する httpd とりあえず実体参照変換はいれたほうがいいんじゃないかとか。 --- httpd.pl.orig 2007-05-14 00:46:06.000000000 +0900 +++ httpd.pl 2007-05-14 00:53:34.000000000 +0900 @@ -24,6 +24,7 @@ use Socket; use IO::Handle; use HTTP::Status; +use CGI; use POE qw( Sugar::Args @@ -215,8 +216,8 @@ my $out; for (dir($dir)->children) { $out .= sprintf "<li><a href=\"/%s\">%s%s</a></li>", - $_->re

    簡易HTTPサーバ - odz buffer
  • GPL と system call - odz buffer

    ref:ASIPの徒然なるままに: Linuxは何故GPLでありながら商用利用されるのか?(当たり前のこと) もうね、ASIP さんは当、こういういい加減なことを書くのを止めてほしい。 LinuxやGLIBC自体はGPLですが、POSIXやISO Cで標準化されている インターフェイスでアプリを記述する限り、そのアプリをGPLで公開する 必要がないのです。 えと、まず1点。Linux カーネルは GPL だけど glibc は LGPL です。POSIX 準拠だとか ISO C 準拠とか関係なく、dynamic link する分には何の問題もない。 で、上記記述だと Linux にしかない epoll なんかの system call を使ったアプリケーションを頒布する場合は GPL にするしかないのか、という話になるけど、そんな馬鹿な話はない。説明するのは面倒なので、リンク参照。 re

    GPL と system call - odz buffer
  • それ Regexp::Assemble - odz buffer

    ref:ここギコ!: 安易なループは慎むべきですね ref:jnaoyaのはてな日記 - 添削その2 ref:404 Blog Not Found:perl - 勝手に添削^2 - loop control ん?ループ云々を抜きにして、こういうのは Regexp::Assemble の出番じゃないの?添削だから?それともパフォーマンスとか? use Regexp::Assemble; my %analyze = ( qr/Pattern 1/ => 'Pattern 1', qr/Pattern 2/ => 'Pattern 2', qr/Pattern 3/ => 'Pattern 3', ); my $re = Regexp::Assemble->new; $re->track->add(keys %analyze); while (my $log = $logs->readline)

    それ Regexp::Assemble - odz buffer
    joan9
    joan9 2007/04/24
  • sudo

    ref:ウノウラボ Unoh Labs: 専用サーバを構築するときにまず行う4つの設定 む。 /etc/sudoers の編集には visudo を使いましょう。文法チェックもしてくれる /etc/shadow の編集には sudo vipw -s としましょう。まぁインストール直後だと問題ないだろうけど su を禁止するのはいいけど、この設定だと sudo -u user -s とか、sudo sh -c su とやってしまえば通過できてしまう。まぁ、su を禁止することで類似する行為をするな、というメッセージにはなるので、まったくの無意味だとは言わないが。sudo で実行したコマンドはログに残るし つうか、半端に一部のユーザに su 出来るようにするのは変でないかい?postgres の権限で実行したいなら % sudo -u postgress commandsで十分。root と

    sudo
  • NDA 違反な件について - odz buffer

    ref:y-kawazの日記 - 珍しく間違った批判をしている高木先生 もしこのエントリを書いた人が携帯端末向けコンテンツの開発をしているとしたら、キャリアとのNDA(守秘義務契約)に抵触することを書いてますよね。どこが該当するのか明言するのは避けますが。いや、そもそも「携帯端末の個体識別情報(uid)取得方法」からしてあれか。 題の携帯端末向けコンテンツの認証に関してはソースIPアドレスの詐称が不可能であればそれほど間違っていないかも知れないが、そうではないわけでして。IP詐称された時点でアウトではあるな。 まぁ、携帯端末向けコンテンツで認証セッションを実現しようと思うと、端末が「端末固有IDとドメインを組み合わせたハッシュ」を送ってくれるとか、ちゃんと Cookie(もしくはそれに類する仕組み) に対応するとかそういうのが必要ではある。現状では頑強な仕組みはちょっと難しいかも知れない

    NDA 違反な件について - odz buffer
  • shell のちょっとしたテクニック - odz buffer

    後輩が cat README | tr ' ' '\n' | sort | uniq -c | sort -nr | head てなテクニックを見て、びっくりしたみたいな話をしていたのだが、こういうパイプラインを利用するテクニックを学んでいないのは色々損な気がする。 ていうか、サーバで丸一日以上かかるような処理を実行するのもしょっちゅうなのに、GNU screen も nohup も知らないってのはいろいろ支障があるような気もするのだが、だれも教えないものかなぁ。 ということで、bash or zsh のちょっとしたテクニックとか*1。リダイレクトとかパイプラインは略。 連続実行 単純に連続実行。 % foo; barfoo が正常終了したときだけ bar を実行 % foo && barfoo が正常終了しなかったときだけ bar を実行 % foo || bar&&、||は来は論理演

    shell のちょっとしたテクニック - odz buffer
  • 1