タグ

ブックマーク / 0xcc.net (9)

  • Ruby, Pythonで並列に逆引きを行う - bkブログ

    Ruby, Pythonで並列に逆引きを行う ウェブサーバのログを解析するときなど、IPアドレスからホスト名を引く処理 (逆引き) を大量に行いたいときがあります。DNS への逆引きの問い合わせには場合によっては数秒待たされることがあるため、大量の IP アドレスをひとつづつ順に処理していくとかなり時間がかかります。 記事では Ruby または Python でマルチスレッドで並列に逆引きを行う方法を紹介します。 Ruby の場合 Ruby で逆引きを行うには socket ライブラリを使う方法と、Resolv ライブラリを使う方法があります。マルチスレッドで並列に逆引きを行うには Resolv ライブラリを使う必要があります。 socket ライブラリを使った場合、 Socket.gethostbyaddr か Socket.getaddrinfo を使って逆引きを行います。これらは同

  • いやなブログ: UTF-8 への移行計画

    UTF-8 への移行計画 以前からやろうやろうと思っていた、 UTF-8 への移行計画を実施し ました。これまで手元のテキストファイルの類はすべて EUC-JP で 保存していたのですが、これを UTF-8 にしようという計画です。 Emacs の設定 まずは Emacs の設定です。これまで euc-jp となっていた部分を utf-8 に置き換えました。 (set-language-environment "Japanese") (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8) (setq default-buffer-file-coding-system 'utf-8) 新規に作成したファイルの文字コードを UTF

  • 横着プログラミング 第3回: 履歴マニア

    最終更新日: 2002-05-18 (公開日: 2002-05-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 コンピュータの方がうまくできることに人間を使うな。 -- Tom Duff *1 私の見る限り、プログラマという人種は決まって事務作業が嫌いな ようである。同じような書類を何枚も書かされたり、1つ誤字があ るから書き直せと言われたりすると、異常にストレスがたまる。 同様に、計算機を使っていても、同じような作業を何度も繰り返し たり、ちょっとでも間違えたら最初からやり直し、というのは耐え られない。そこで、今回は履歴を活用して作業の再利用をするノウ ハウを取り上げる。 シェルの履歴 Unixを使い始めて間もない初心者が作業しているところを見ると、 打ち間違えたコマンドを律儀に最初から打ち直しているのに気づく

    Stingray
    Stingray 2006/01/09
  • prelink の効果を測定する - bkブログ

    prelink の効果を測定する prelink は大量の共有ライブラリをリンクしたプログラムの起動時間を短縮するためのツールです。最近の Linux で利用できます。Gentoo Linux Prelink ガイドによると「典型的なKDEプログラムの起動時間は50%も短縮することができます」とのことです。このエントリでは簡単なプログラムを書いて prelink の効果を調べる実験を行ってみます。 通常、動的リンクされたプログラムはシンボルの参照時に再配置およびシンボルのルックアップなどを行う必要があります。prelink は実行ファイルと依存する共有ライブラリを書き換えて、これらの処理を行う必要性を減らします。また、prelink されたプログラムはリロケーションによって発生する共有不可能ページが減るため、プロセス間で共有できるページが増えるというという効果もあります。 prelink

  • 読解いやな法則: 何もやらないよりはだらだらやった方がまし - bkブログ

    読解いやな法則: 何もやらないよりはだらだらやった方がまし 読解いやな法則の第5回です。今回はとりわけ怠け者にぴったりな法則である「何もやらないよりはだらだらやった方がまし」を取り上げたいと思います。 「何もやらないよりはだらだらやった方がまし」という言葉には、いかにも消極的な響きがあります。大抵のことは集中して作業した方がだらだらやるよりも断然はかどります。仕事であれば「だらだらやる」という発想自体がとがめられそうです。 それでは、自主的に専門書を読んだり英語を勉強したりといった場面ではどうでしょうか。このようなことはやらなければいけないわけでもなく、締め切りもないので、さぼるのは簡単です。こんなときに役立つのが「何もやらないよりはだらだらやった方がまし」の法則です。この法則によれば、何も読まないよりはだらだら 1ページ読んだ方がまし、となります。 1日に1ページというと相当少ない気がし

  • 読解いやな法則: 現実逃避の方が生産性が高い - bkブログ

    読解いやな法則: 現実逃避の方が生産性が高い 読解いやな法則の第4回です。今回は前回の「横着をするための労力を惜しんではいけない」に続く法則として「現実逃避の方が生産性が高い」を取り上げたいと思います。 現実逃避というと学生の特権のようなもので、社会人になってまで現実逃避がどうこうといっているはどうかという気もします。しかしながら、私の知人などをみるかぎり、社会人になっても現実逃避ドリブンの気質が根強く残り、業とは関係ないハックの方が高い生産性をあげているという例は相変わらず見受けられます。 現実逃避は、やらなければならない (ときに、あまり気乗りのしない) 事柄から逃れて、(相対的に) もっとやりたいことに集中して取り組むという状況を生み出します。やる気と集中力が重なるのですから、生産性が高いのは明らかです。 私の学生のときの先輩の一人は、論文を書き始めたかと思うとすぐに人を捕まえて雑

  • 普通のやつらの下を行け: Cで動的コード生成・実行 - bkブログ

    普通のやつらの下を行け: Cで動的コード生成・実行 スクリプト言語には動的にコードを生成して実行する機能を持ったものが多くあります。 普通のやつらの下を行けの第3回として、今回は C による動的なコード生成と実行に取り組んでみたいと思います。 今回書いたコードの main() 関数は以下のようなものです。 int main(int argc, char **argv) { assert(argc == 2); define(int, add, (int x, int y), "{ return x + y; }"); define(int, mul, (int x, int y), "{ return x * y; }"); define(int, add_argv1, (int x), "{ return x + %d; }", atoi(argv[1])); printf("%d\n"

    Stingray
    Stingray 2005/10/28
  • 普通のやつらの下を行け: assert_caller() - bkブログ

    普通のやつらの下を行け: assert_caller() 以前に、低レベルプログラミングを愛好する知人が「普通のやつらの下を行け」を口癖にしていました。当時は何を言っているのかと聞き流していましたが、自分も最近になってようやく低レベルプログラミングのおもしろさがわかってきました。今回は「普通のやつらの下を行け」企画の第一弾として assert_caller() なるものを作ってみたいと思います。 assert_caller() とは assert_caller() とは、特定の関数からの関数呼び出しだけを通すためのアサーションです。たとえば、次のように foo() の先頭で assert_caller(main) と書いた場合、 foo() は main() からしか呼び出せなくなります。他の関数から foo() を呼び出した場合はエラーメッセージとともに異常終了します。 void foo

    Stingray
    Stingray 2005/10/24
  • いやなブログ: 配列操作の比較表: Ruby, Python, JavaScript, Perl, C++

    配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ プログラムを書いていると、他のプログラミング言語の記憶とごっちゃになって、「配列の後ろに要素を追加するのは push だっけ、 append だっけ」などと混乱することがあります。特に Ruby, Python, JavaScript はコードの書き方が似ているので、この問題が起きがちです。 そこで、備忘録として、 Ruby, Python, JavaScript, Perl, C++ の配列操作の比較表を作りました。一番慣れている Ruby を基準にしています。間違いなどがあったらご指摘いただけると助かります。他の言語のもあるといいなあ。 Ruby (Array) Python (list) JavaScript (Array) Perl (@) C++ (std::vector)

  • 1