Entries from 2008-01-01 to 1 year

フィボナッチ数

概要 OCamlでフィボナッチ数を計算する関数をつくってみました。 コード # let rec fib n = if (n == 1) || (n == 2) then 1 else fib (n - 1) + fib (n - 2);; val fib : int -> int = <fun> # fib 1;; - : int = 1 # fib 2;; - : int = 1 # fib 3;; - : int = 2</fun>…

MercurialでPythonのフックを実行する方法 / PythonからOutputzにPOSTする方法

概要 Mercurialでは、hgコマンドを実行したときに、Pythonの関数を実行することができます。この記事では、hg pushしたときに、Outputzにhg diffの結果をPOSTする方法について説明します。 MercurialのPythonフック .hg/hgrcで以下のように、[hooks]セクショ…

プログラミング言語のソースコード行数

概要 プログラミング言語のソースコード行数は、数万行から百数十万行です。 はじめに 私はプログラミング言語を作成しているのですが、一体どれくらい書けば一通りの機能を揃えることができるのか、他のプログラミング言語を調べてみました。 行数 計測は、…

ensure, rescue, breakを組み合わせたときの挙動が分かりません。

環境 この記事の内容は、以下の環境で確認しました。 $ ./ruby -v ruby 1.9.0 (2008-08-26 revision 18849) [i686-linux] 分からないところ 以下のコードbar.rbを実行したとき、 while true begin begin break rescue Exception puts "bar" end ensure puts …

デフォルトのpush先リポジトリを設定する方法

概要 Mercurialでは、pushするときの、デフォルトのリポジトリを設定することができます。これを設定しておくと、 $ hg push というように、リポジトリを指定せずにpushすることができます。 環境 この記事の内容は、Mercurial 0.9.5で確認しました。 方法 .…

サンシャインクリエイション41にサークル参加します。

私の同人サークルr2.pyは、サンシャインクリエイション41にサークル参加します。頒布物は、以下の通りです。 誌名 ジャンル 価格 虎食う獣も好き好き ヒャッコ 無料 コイブミ シゴフミ 無料

リポジトリに名前をつける方法

環境 この記事の内容は、Mercurial 0.9.5で確認しました。 概要 Mercurialのリポジトリには、分かりやすい名前をつけることができます。例えば、あるリポジトリにfooという名前をつけたら、 $ hg push foo というコマンドで、そのリポジトリにpushできます。…

__build_class__

環境 この記事の内容は、Python 3.0rc1で確認しました。 概要 クラスは、__build_class__組み込み関数によって作成されます。クラスを作成する、以下の2つのコードは、同じです。 class Foo: bar = 42 def quux(self): print(self) def f(__locals__): __loc…

オブジェクトの__class__属性を得るまでの流れ

環境 この記事の内容は、Python 3.0rc1で確認しました。 まとめ __class__属性には、PyGetSetDescrObjectオブジェクトを介して読み書きします。 クラスに__class__属性を登録するまでの流れ Objects/typeobject.cで、__class__属性の名前と、属性を読み書き…

コミックマーケット準備会からの緊急のお知らせ

コミックマーケット準備会から緊急のお知らせが出ています。 参加者の手荷物確認等のお願い 開催期間中の一部エスカレータ運用停止のお知らせ 詳しくは、以下のサイトを参照してください。 http://www.comiket.co.jp/info-a/C74/C74Oshirase.html

abcdumpがネストした関数をダンプしない。

環境 この記事の内容は、Tamarin changeset 583:6582fd7afc59で確認しました。 問題 以下のように、関数の中に関数があった場合、内側にある関数(以下の例ならbar)を、abcdumpがダンプしません。 function foo(): void { function bar(): void { } } 対策 …

サンシャインクリエイション40にサークル参加します。

私の個人サークルr2.pyは、2008年6月15日に開催されるサンシャインクリエイション40にサークル参加します。以下のものを頒布する予定です。 タイトル ジャンル 価格 頒布予定部数 ショウジョ シゴフミ 無料 10 秋茄子は虎に食わすな ヒャッコ 無料 10 ネオヴ…

冲方丁「冲方丁のライトノベルの書き方講座」宝島文庫

はじめに rakuten:book:12922322:detailは、タイトルこそ「ライトノベルの書き方」となっていますが、マンガといった他の分野でのストーリー作成でも参考になります(というか、そもそもこの本は「冲方式ストーリー創作塾」の文庫版です)。特に「5時間目 こ…

[Linux] 外付けUSBハードディスク全体をext3でフォーマットする方法

手順 デバイスファイルをdmesgで確認する。 fdiskする。 mkfs.ext3する。 デバイスファイルをdmesgで確認する。 $ dmesg : [ 161.590623] usb 4-6: new high speed USB device using ehci_hcd and address 5 [ 161.723932] usb 4-6: configuration #1 chosen…

[Gauche] nkfモジュール

nkfモジュール nkfモジュールは、nkfをGaucheのモジュールとしてポーティングしたものです。 動作環境 Ubuntu Linux 8.04, Guache 0.8.13で動作を確認しています。 ダウンロード 以下のURLからダウンロードできます。 http://nekomimists.ddo.jp/~tom/reposi…

[Gauche] html2textモジュール バージョン0.1公開

html2textとは何ですか? html2textモジュールは、HTMLで書かれたドキュメントを、それっぽいテキスト形式に変換するモジュールです。例えば、以下のようなHTMLを、 <html> <body> <h1>タイトル1</h1> <h2>タイトル2</h2> <p>段落</p> <ol> <li>foo</li> <ol> <li><a href="baz">bar</a></li> </ol> <li>baz</li> </ol> </body> </html> 以下のようなテキストに変換します。 * タイ…

[Gauche] ウェブページを印刷用に変換するCGI html2prn バージョン0.2公開

はじめに html2prnについては、id:SumiTomohiko:20080418:1208534128を参照してください。 変更点 元のページのヘッダを転用するようにしました。これにより、スタイルが保たれます。 ダウンロード 以下のURLからダウンロードできます。 http://nekomimists.…

[Gauche] ウェブページを印刷用に変換するCGI html2prn バージョン0.1公開

はじめに 大抵のウェブサイトは、本文の他に目次や広告などで構成されており、紙に印刷して閲覧するのには向いていません。 html2prn この問題を解決するため、ウェブページの本文のみを表示し、印刷に向くように変換するCGIを作成しました。 http://nekomim…

[Gauche] extract-contentモジュール バージョン0.1公開

extract-contentモジュールとは何ですか? extract-contentモジュールは、id:SumiTomohiko:20080412:1208014526で公開したスクリプトをパッケージにしたものです。さらに、 Webページの本文抽出 (nakatani @ cybozu labs) (http://labs.cybozu.co.jp/blog/nak…

[Gauche] magicモジュール バージョン0.1公開

概要 magicモジュールは、libmagicのGaucheバインディングです。 動作環境 magicモジュール バージョン0.1は、Ubuntu Linux 7.10, Gauche 0.8.13, libmagic 4.21-1で動作を確認しています。 ダウンロード 以下のURLからダウンロードできます。 http://nekomi…

[Gauche] HTMLから本文を抽出するスクリプト

はじめに zuzaza: ブログの記事本文を抽出するスクリプトをつくってみた (http://blog.zuzara.com/2006/06/06/84/) ブログの本文抽出にチャレンジ - Ceekz Logs (http://private.ceek.jp/archives/002039.html) Webページの本文抽出 (nakatani @ cybozu labs…

playmp3listを日本語に対応させる方法

はじめに playmp3listは、端末ベースでMP3ファイルを再生する便利なソフトですが、日本語が含まれるファイルを表示することができません。この記事では、これを解決します。 環境 この記事の内容は、Ubuntu Linux 7.10, playmp3list 0.95で確認しました。 修…

[Ubuntu] DellのノートPCにUbuntuをインストールして、液晶を閉じると、開いたときに画面が固まる。

環境 この問題は、Dell Latitude x300, Ubuntu Linux 7.10で確認しました。 問題の現象 液晶を閉じてから開くと、画面が固まります。 解決策 ビデオカードのドライバをvesaに変更します。具体的には、/etc/X11/xorg.confを以下のように変更します。 $ diff -…

[Scala] FizzBuzz

Iteratorのforeachメソッドを使用して解いてみました。 object FizzBuzz2 { def main(args: Array[String]): Unit = { (0 to 100).foreach { i => Console.println( if (i % 15 == 0) { "FizzBuzz" } else if (i % 5 == 0) { "Buzz" } else if (i % 3 == 0) …

[Scala] FizzBuzz

ScalaでFizzBuzzを解いてみました。 object FizzBuzz { def fizzbuzz(n: int): List[String] = { def fizzbuzz_internal(n: int, l: List[String]): List[String] = { if (n == 0) { l } else { val s = if (n % 15 == 0) { "FizzBuzz" } else if (n % 3 == …

[Gauche] finallyマクロ

はじめに Gaucheには、Javaのcatch句に相当するguard式はあるのですが、finally句に相当するものはなさそうなので、マクロの練習がてらつくってみました。 finallyマクロ 以下の通りです。finallyの直後の一連の式は、例外が発生しても、しなくても、必ず実…

[Gauche] 簡易SMTPサーバ

Gaucheで簡易SMTPサーバを作成しました。メールの転送はできず、受信したメールは、spoolディレクトリに宛先アドレスのファイルを作成して保存します。同一アドレスに複数のメールを受信したら、上書きします。テスト用に作成したサーバなので、この程度の機…

[Gauche] SMTPクライアントライブラリ

SMTPのクライアントを作成してみました。といっても、単にサーバに接続してコマンドを送っているだけです。エンコードなどは行いません。 #! gosh ;; -*- coding: utf-8 -*- (use gauche.net) (define (gsmtp-sendmail host port from to body verbose) (let…

[Gauche] 簡易HTTPサーバ

Gaucheで簡易HTTPサーバをつくってみました。以下の特徴があります。 GETしかできません(というか、メソッドを判断していません)。 セキュリティに配慮していません。 ソースコードは、以下の通りです。 #! gosh (use file.util) (use gauche.fcntl) (use …

[Gauche] 「プログラミングGauche」出版記念トーク -「Gauche脳」の謎に迫る - 報告

以下では、敬称は省略させていただきます。 概要 出演者 川合史朗 えんどうやすゆき 場所 ジュンク堂書店新宿店8階喫茶 日付 2008年3月12日(水) 時刻 開演 19:00過ぎ 終演 20:00過ぎ 内容 Schemeとの出会い 川合 Lispに目覚めたのは学生時代 Perlの代わり…