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

「分散 VCS」という名前はよくない

Git は RCS っぽい lifeLOG + REPOsitory: 平等分散リポジトリの見せる夢 ワシもそう思う。Subversion のときはリポジトリを作って http.conf に記述して Apache 起動して…みたいな作業が必要だったけど*1、Git や Mercurial はそういう手間が全然いらない。…

Google が CPU 開発に乗り出す可能性

なんの裏付けもない、まったくの個人的な妄想だけど、Google はそう遠くない未来に、CPU 開発に乗り出すという予想をしてみる。いやいや汎用品を使うからこその Google なんだと言われるだろうけど、それなりに根拠はある。 Google にとっては、CPU の単体性…

App Engine で DI を使うメリットはない?

DIの主なメリットは、テストのしやすさと宣言的トランザクションだと思いますが、AppEngineではモックなしで簡単にテストができ、Bigtableの仕様的に宣言的トランザクションはほとんど使えないので、AppEngineでDIを使うメリットは余りないんじゃないかと思…

Mac OS X でUSBメモリのアンマウントをコマンドラインから行う

mac

$ sudo diskutil umount /Volumes/NO\ NAME Password: Volume NO NAME on disk1s1 unmounted

Google App Engine で Java を使うと起動時間が数秒もかかるらしい

上記3つの対策を施し、詳細は省略しますが約50回の起動で、最小3693ms、最大14303ms、平均6884msとなりました。対策前(平均8895ms)と比較すると2000ms程度の改善です GAE/J、起動時間(spin up時間)短縮の試行錯誤 : CB NANASHI管理人ブログ これ、まじな…

Rails の routes.rb がわかりにくい

Rails の routes.rb と格闘中なんだけど、なんで Rails の routing はこんなにわかりにくいのだろうか。 ## named route は省略 map.with_options(:controller=>'books') do |x| x.connect '/books', :action=>'index', :conditions=>{:method=>:get} x.conn…

jQuery で outerHTML() を実現する

jQuery で、innerHTML じゃなくて outerHTML を実現する方法があった。 jQuery.fn.outerHTML = function(s) { return (s) ? this.before(s).remove() : jQuery("<p>").append(this.eq(0).clone()).html(); } jQuery: outerHTML – Yelotofu わかりやすく書くとこ</p>…

Google App Engine ではプログラムから static ファイルを読みこめない

Google App Engine で、スクリプトから画像ファイルの一覧を取り出そうとしたけど、できなくてはまった。helloworld.py # -*- coding: utf-8 -*- import os, glob print "Content-Type: text/plain" print "" print "hello" imgdir = os.path.join(os.path.d…

WebアプリはDelphiのクライアントサーバ以下

sys

私はもう特定少数で使うアプリはWEBでやらないほうがいいと思っています。まず、Java-WEBが出て来てから10年経ってもなお、WEBブラウザソリューションって難しいものなのだと思わざるを得ません。いやー俺様には簡単だよw、でも世の中では少なくない人々が、…

Python で SyntaxError を自前で投げる

Python で SyntaxError を自前で raise するには次のようにする。 raise SyntaxError("エラーメッセージ", (ファイル名, 行番号, カラム桁数, ソース行)) やってみる。 >>> raise SyntaxError("ERROR MESSAGE", ('foo.py', 123, 2, 'x = 999')) Traceback (m…

import 文を使わずにモジュールを作成する

import 文を使わずに、任意の Python スクリプトをモジュールとして読み込む方法。こうすると、拡張子が「.py」じゃなくても読み込み可能。 import os file = 'foo.py' name = 'foo' module = type(os)(name) # (*1) module.__file__ = file execfile(file, …

はじめての Kay Framework 体験記

Google App Engine 専用フレームワークというふれこみの『Kay』を試してみる。 なお環境は Mac OS X 10.6、Python 2.6.2 (自前コンパイル)、GAE SDK 1.3.2。

Python で現在のファイル名と行番号を調べる。

Python では、現在のファイル名を表す __file__ はあるけど、行番号を表す __line__ がない。現在の行番号を調べたかったら、スタックフレームオブジェクトを触る必要があるみたい。以下がサンプルコード。__LINE__ and __FILE__ functionality in Python? -…

Ruby の落とし穴: 実は and と or の優先順位が一緒

こんなん今の今まで知らんかったわ。 irb> true || true && false #=> true irb> true or true and false #=> false irb> true || false && false #=> true irb> true or false and false #=> falseまじですかー! 何やねん、これ。マニュアル見ると、and と …

RubyKaigi2010 に応募するネタがない

RubyKaigi2010 のセッション応募が開始されてた。締め切りは4/28。 基本的に、1 発表 60 分くらいを目安に考えています http://rubykaigi.org/2010/ja/CallForPresentationProposals.html 60分かよ。応募したいけど、そんなに長く話せるネタはないなあ。 は…

アクセッサの速度を計測する in PHP

php

PHPで、「$obj->var」と「$obj->get_var()」にどのくらい速度差があるのかを調べてみた。 またjQueryのようにgetterとsetterを同じメソッドで行うようにしたいとき、引数があるかどうかを調べるのにfunc_num_args()を使った場合と使わない場合との速度差も測…

Rails3 (beta2) のインストール

「Ruby on Rails 3.0 Release Notes」を参考に、Rails 3 をインストールしてみる。なお現時点ではまだ正式リリース前 (beta2) であることに注意。

ファイルの改行コードが "\r\n" と "\n" のどちらなのかを判定する

## ファイルの先頭1KBを読みこんで、"\r\n" があれば CR+NL と出力する $ ruby -e 'puts ARGF.read(1024)=~/\r\n/ ? "CR+NL" : "NL" ' file.txt CR+NLまあ最初の一行目で判定すればいいんじゃね?という意見もあるが、二行目以降だけがCR+NLというファイルを…

jQuery のドキュメントをオフラインで参照する

jQuery のドキュメントは充実してるんだけど、オンラインでないと読めない。近所の喫茶店とか、ネットの繋がってないオフライン環境で参照したい場合は困る。 と思ってたら、Alternative Resourcesというページに、PDF版とCHM版へのリンクがあったので、紹介…

重大発表

今日、この流れならいえる!

Enumerable#select と #collect を同時に行いたい

せっかくなので小ネタを。Python でのリスト内包表記は、for と if を同時に書ける。これはループを1回まわるだけで、選択 (select) と写像 (collect) を一度に行えることを意味する。 >>> L = ['foo', 'bar', 'baz'] >>> [ x.upper() for x in L if x.start…

あれ、気がついたら年度末が終わろうとしてる?

ひさしぶりの日記。ずっと取りかかってたソフトウェアが、ようやく陽の目を見そうです。近いうちに発表するぞー。・・・発表できるはず。発表したい。発表できたらいいなあ。

developerWorks の記事にある Python コードを修正してみた

IBM が運営している技術サイト developerWorks には Python の記事がちょくちょく載っているんだけど、Python コードのインデントが崩れていて大変悲しい (最初は日本語版だけかなと思ったら、もとの原文からしてインデントが崩れまくってた)。 そこで、勝手…

日本語基礎文法最速マスター

もう何番煎じか知らんけど、日本語の文法についてさらっと説明してみる。 日本語といっても、技巧的になる詩や小説とかじゃなく、説明的な文章を対象とする。(追記: 2010-02-06: 全体的に文章を見直し、細部を修正) 主語はおまけ、述語こそ主役 英語では「…

助けて! CarbonEmacs で文字化けしたファイルを復活させたい

CarbonEmacs で、文字コードを間違えて保存してしまったらしく、はてなダイアリーの下書き用ファイルが全部文字化けしてしまいました。たとえば: 一方、ロシアは Kernel#empty? を定義した。 というテキストが \347\255\235\200\346\357\277\275\273\200\30…

RubyがPHPに勝つにはメソッド呼び出しのための新しい演算子が必要

PHPerがRubyを触り始めて最初に不機嫌になるのは、空文字列が偽ではないことだ。つまり、PHPなら「if ($var)」で済むのが、Rubyだと「if !var.empty?」と書かなければならない。これでPHPerは不機嫌になる (まあ気持ちは分かる)。 if ($var) ... # PHP if !v…

Javaは『end of life』なのか?

一方で、バージョン管理ツールのSubversionが後退し、それと入れ替わるように分散バージョン管理(Distributed version control)が前進しています。ホワイトペーパーでも「GitやMercurialといった分散バージョン管理はこの数年で大きな注目を集め始めており…

オラクル社社長が○○○○に似てる

米オラクル社社長が不倫相手から報復を受けたというニュース。 オラクル社長とその愛人とのツーショット写真が描かれた巨大ビル広告、米国3都市に掲出される (Slashdot J) オラクル社長、不倫の清算をミスったばかりに… (IBTimes) オラクルのC・フィリップス…

__builtins__ はモジュール? 辞書?

__builtins__ って必ずモジュールだと思ってたけど、そうでもないらしい。foo.py: import sys print "(foo.py): __builtins__: ", type(__builtins__) print "(foo.py): sys : ", type(sys) bar.py: import foo import sys print "(bar.py): __builtins__: "…

OracleがSunを買ったのはMySQLを潰すため?

db

【海外IT動向】 MySQL開発者がOracleからの救済を呼びかけ――反応は賛否両論 (2009/12/15) (CIO Online) Monty が MySQL ユーザに支援要請 (sakaikの日々雑感〜(C)編) これ読んで初めて気づいたけど、OracleがSunを買収した本当の目的はMySQLを手に入れること…