2007-01-01から1年間の記事一覧

Lua本

入門Luaプログラミング 書店をチェックしてきたら、Lua本が出版されていた。内容はなかなか良さそうだったが、すでにLuaに興味ないので購入はしなかった。とりあえずPythonとRubyに集中するつもり。 Rubyist Magazine出張版 Ruby on Windows あとは、Ruby on…

関数の実行時間計測

ひきメモ: コードの実行時間を計測する (http://d.hatena.ne.jp/yumimue/20071225/1198616465) 関数の実行時間を計測する場合は、セットアップ文に、"form __main__ import 関数名"を指定します。そうしないと、timeitモジュールが関数にアクセスできないよ…

モジュール

モジュールを少し勉強した。 module Trig PI = 3.141592654 def Trig.sin(x) # .. end end requre 'trig' y = Trig.sin(Trig::PI/4) reqireで文字列で渡すのはまあ良いとして、定数アクセスの"::"と、メソッドアクセスの"."を区別しているのは気に入らない。…

Rubyの学習

昨日ピッケル本第2版で少し勉強していたがRubyはPythonよりも覚えることが多い。覚えることが嫌いな人はRubyは好きになれないかもと思った。バイナリ本家サイトに置いてないし。 昨日面倒だと思ったのは、同値判定に==、===の2種類(も含めて3種類?)あったり…

拡張スライス

odz buffer: 拡張スライス (http://d.hatena.ne.jp/odz/20071228/1198860930) なるほど。基本的には循環参照を表すためだと思っていたが、Rubyの範囲オブジェクト風なものも作れそう。Ellipsisというタイプがあるのは初めて知った。 cozeのPython日記: 循環…

Ruby 1.9.0 Windowsバイナリ

http://www.garbagecollect.jp/ruby/mswin32/ja/download/develop.html 見つけた!置いてある場所が分かりにくい…。明日は有給で明日から休みなので年末はピッケル本第2版でRubyを勉強するつもり!e = [1,2,3].eachで、ブロックを与えなければeが外部イテレ…

文字列結合 (2)

ひきメモ: 文字列の結合 (http://d.hatena.ne.jp/yumimue/20071226) 以下のような実行時間計測をしていた。 from timeit import Timer setup = 's = "xxxxxxxxxx"' add_stmt = "s + s + s + s + s" join_stmt = '"".join((s, s, s, s, s, s))' join( )の方が…

1.9.0

本家サイトからダウンロードしたらバイナリじゃないやん!one click installerが出るまでやる気なくなった…。

Tenjin

Rubyist Magazine 22号の「RubyKaigi2007: C より速い Ruby プログラム」という記事を見ていてTenjinというテンプレートエンジン?を初めて知った。LL Spiritでも発表していたみたいだが全く意識していなかった。ベンチマーク結果を見るとかなりすごい。とい…

Ruby 1.9.1

Ruby 1.9がとうとうリリースされる模様。Matzさんのプレゼン資料を見たが、1.9は互換性をなくすらしい。すばらしい!M17Nやブロックパラメータまわりを改善するらしく期待が持てる。Rubyに一時的に興味がなくなっていたが、リリースをきっかけに勉強してみた…

easy_install

easy_installとは easy_installはRubyのgemにあたるもので、パッケージ管理システムからPythonのモジュールを自動で検索してインストールしてくれるツール。RubyのRubyGems、PerlのCPANにあたるものはPythonでは、Python Package Index、通称Python Cheese S…

Enumerator

面白い記事があった。 まめめも: Enumerator とブロックの省略 (http://d.hatena.ne.jp/ku-ma-me/20071129/p1) Enumeratorの3つのメリットとして、外部イテレータとして使える、Enumerable#with_indexが使える、Enumerable#zipの引数に渡せるというのがあっ…

ワイルドカードを使ったイミュータブル

色々検索していたら、ワイルドカードを使ったイミュータブルという面白そうな話題を見つけた。以下で紹介されている本は、洋書の『Java Generics And Collections』という本みたいだが結構面白そう。 るいもの戯れ言: Java Generics and Collections (http:/…

sort (3)

今までのまとめ。パフォーマンスのために複雑さを犠牲にした狂気の沙汰言語Java。C++もよく分からないが、GCと文字列クラスによりC++よりだいぶマシなのだと思う。C#との比較は気になるところ。 配列は要素数が固定となるが、使用メモリが少ない。 ArrayList…

sort (2)

import java.util.*; class test { public static void main(String[] args) { ArrayList L = new ArrayList(); L.add("a"); L.add("c"); L.add("b"); System.out.println(L); } } /* 実行結果 */ [a, c, b] また少しだけ調べた。今日は出張で時間ないので少…

sort

Javaをこれから再勉強しようと思っている。『Head First Java 第2版』のサンプルPDFを見たのをきっかけに、sortを少し調べたが、sortはArrayListクラスには存在せず、2つのクラスメソッドを使う。配列の場合java.util.Arrays.sort()で、コレクションの場合…

viewオブジェクト

jijixi's diaryより PEP 3106 - Revamping dict.keys(), .values and .items() (http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071208#p02) immutableのようで実際はそうではないviewオブジェクト (http://jijixi.azito.com/cgi-bin/diary/index.r…

3.0a2

ぱいそにすたん!: Python 3.0 alpha2 (http://d.hatena.ne.jp/c-yan2/) 3.0a2が出たらしい。明日テストしてみるつもり。 追記(2007/12/10):会社のパソコンにインストールしたら起動時にエラーが出てできなかった。残念。 追記2:jijixiさんのブログを見て追…

Java 3D API

最近あるソフトを見たのがきっかけでJavaでGUIを作ることに対して肯定的な見方になっている。3Dグラフィックをやる場合もPython-Ogreも良さそうだが、信頼度や情報の多さを考えるとJava3Dを使うのは結構良いのではないだろうか? 以下、気になった書籍。 『P…

3.0a1の新機能 (2)

What's New in Python 3.0 (http://docs.python.org/dev/3.0/whatsnew/3.0.html) まとめの第2弾。不明な箇所は訳していない。あと間違いの指摘大歓迎。 問題のあった機能 unicode型、str型がstr型、bytes型になる。 テキストファイルはエンコードを強要する…

無限オブ無限 (2)

okagawaの日記: Re:無限オブ無限 (http://d.hatena.ne.jp/okagawa/20071204/1196801706) okagawaさんのテストのプログラムを使って自分のflattenでテストしてみたら結果が違っていて自分の実装の間違いに気がついた(汗)。正しいものに書き換えて、ついでに、…

スコープと名前空間

Effective Python: スコープと名前空間 (http://morchin.sakura.ne.jp/effective_python/scope.html) の第一版を公開。ビルトイン名前空間を書き換えればあらゆるモジュールで有効になる変数が定義できると思うが、今のところ研究途中。内容は適宜更新予定。…

アキュムレータ

pythonco(ぱいそんこ)の日記: アキュムレータを作ろう (http://d.hatena.ne.jp/pythonco/20061009#p1) クロージャを使わずに、関数の属性の名前空間を表す暗黙の属性func_dictを利用。 >>> def foo(n=0): ... def bar(i): ... bar.func_dict['v'] = bar.func…

Immutable Set

setは可変(Mutable)なので辞書のキーにできない。辞書のキーにするには不変(Immutable)なsetを使用すれば良い。ビルトインfrozensetは『Python Phrasebook』のなか見!検索で見ていて今日初めて知った。 >>> mt_s = set([1,2,9]) >>> im_s = frozenset([1,2,9…

無限オブ無限

d.y.d: 無限オブ無限 (http://www.kmonos.net/wlog/80.html#_0950071204) ナナメに列挙するやり方で書いてみた。 from itertools import count def flatten(L): D = {} cnt = 1 while True: for i, gen in enumerate(L): g = D.setdefault(i, iter(gen)) yie…

ハッシュ値の計算方法 (2)

odz buffer: list の hash (http://d.hatena.ne.jp/odz/20071202/1196602935) list の __hash__ が TypeError を投げるで間違いなさげ。 やはり挙動から推測した通り。しかし一般には、実装==仕様ではないが、公式サイトにある「Python Reference Manual」が…

ハッシュ値の計算方法

西尾泰和のはてなダイアリー: __hash__ (http://d.hatena.ne.jp/nishiohirokazu/20071130/1196442062) なるほど。__hash__も__cmp__、__eq__も定義されていなければid(obj)が使われるのか。 なんで「tp->tp_compare == NULL && RICHCOMPARE(tp) == NULL」っ…

__mro__

西尾泰和のはてなダイアリー: 多重継承時のメソッドの解決順序について (http://d.hatena.ne.jp/nishiohirokazu/20071129/1196334522) そうそう、「すべての親クラスを探索し終わってから祖父クラスを探す」という理解をしている人が多い(僕も含めて)ようだ…

エラーでなくワーニング (4)

Delegator (http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071129#p02) 『Pythonクックブック』を調べたが、AutoDelegatorというのが見つかった。重要なポイント以外を"..."で略す。 class AutoDelegator(object): ... def __getattr__(self, key)…

エラーでなくワーニング (3)

http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071129#p01 class << h def [](k) begin self.fetch(k) rescue print "key not found\n" end end end Rubyリファレンスマニュアルより: fetch(key[, default]) fetch(key) {|key| ... } key に関連づ…