アーカイブ

2010 年 11 月 のアーカイブ

そんなfindで大丈夫か?

2010 年 11 月 25 日 コメントはありません

一番いいのを頼む!

find . -type f -print0 | xargs -0 echo

よろしい、ならば+だ

find . -type f -exec echo {} +

はい、xargs死んだ!

カテゴリー: linux タグ:

Mac OSXでredmine

2010 年 11 月 11 日 コメントはありません

developmentで動く開発環境が欲しかったので準備。
標準で利用できるsvnでいいと思いますが、gitいれてあるので、gitで。
portsは使わない派なので、git-osx-installer – Project Hosting on Google Codeを利用してます。
標準でsqlite3も利用できるようなのでmysqlをわざわざ準備せずこちらを利用。
事前にgemでrails、sqlite3-ruby等インストール済。

$ git clone https://github.com/edavis10/redmine.git
$ cd redmine/
$ vim config/database.yml
development:
  adapter: sqlite3
  dbfile: db/redmine_development.db
$ vim config/environment.rb
config.action_controller.session = { :key => "_myapp_session", :secret => "some secret phrase hoge hoge hoge hoge hoge" }
$ rake db:migrate RAILS_ENV=development
$ rake redmine:load_default_data RAILS_ENV=development
$ script/server -e development

localhost:3000にアクセス。
admin/adminでログイン。

カテゴリー: macosx タグ: ,

Twitterのstatus IDが64bitになったことによる問題と対策

2010 年 11 月 7 日 コメントはありません

Snowflake: An update and some very important information – Twitter Development Talk | Google グループ
TwitterのIDが64bitになるとJavaScript等で問題が出るので対策を – F.Ko-Jiの「一秒後は未来」

事前に告知されていましたが、日本時間で11月5日の朝6時にstatus IDが41bitまでの値を利用するようになりました。

     29535221410 以前
1036396793962496 以後

桁が大分増えましたね。

10月20日からレスポンスにstatus IDの文字列である「id_str」が含まれるようになりました。
2週間という短い期間での移行、そもそも告知自体知らない人も多かったかも知れませんが、対応せず「id」の値を利用していた場合不具合が生じる場合があります。

言語、OSによって内部で利用するstatus IDである「id」の型が異なると思いますが、32bitOS環境のPHPでJSONのデコードにjson_decode関数を利用している場合、「id」はfloat型としていました。
float型、浮動小数点数はマニュアルにあるように、およそ 10 進数で 14 桁の精度であり、新しいstatus IDは正確には扱えず以下のようになります。

$ php -r 'var_dump(1036396793962496);'
float(1.0363967939625E+15)

この値をMySQLのinteger型に保存すると、1036396793962500となります。

対策として、「id」ではなく「id_str」を利用するのですが、修正箇所が多く容易ではなかったため、一時しのぎとして取得したJSONに手を加え、「id」自体を文字列型として扱うことにしました。

$json = preg_replace('/"(id|in_reply_to_status_id)":(\d+)/', '"$1":"$2"', $json);

ツイート文字列にも影響がありますが、まず無いであろうと思われる文字列と、近いうちに「id_str」を利用するよう修正するということで。

カテゴリー: 日記 タグ: ,

ubuntuへvm-toolsのインストール

2010 年 11 月 1 日 コメントはありません

vm-toolsのオープンソース実装のものをインストール

sudo aptitude install open-vm-tools
カテゴリー: linux タグ: ,