アーカイブ

投稿者のアーカイブ

そんな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 タグ: ,

twitpicへの画像投稿

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

twitter利用時に画像ストレージとして利用されることが多いTwitPic。
以前は、twitterのID、パスワードを投げる仕様でしたが、OAuth対応後は、token、keyを投げる仕様となっていました。
token、keyをまんま投げたら認証キーを削除できる程度で、ID、パスワード投げるのと変わらないんですけどね。

TwitPic Developers – API Documentation – API v2 » upload

v2ではtwitterとOAuth認証で利用するヘッダを「X-Verify-Credentials-Authorization」として、リクエストURIを「X-Auth-Service-Provider」としてヘッダに含めることでAPIを利用できるようになりました。

以下、PEAR::HTTP_Request2とPEAR::HTTP_OAuthを利用したサンプル。

<?php
require_once 'HTTP/OAuth/Consumer.php';

define('OAUTH_CONSUMER_KEY',    'xxxx');
define('OAUTH_CONSUMER_SECRET', 'xxxx');
define('OAUTH_TOKEN',           'xxxx');
define('OAUTH_TOKEN_SECRET',    'xxxx');
define('TWITPIC_KEY',           'xxxx');

try {

  $consumer_request = new HTTP_OAuth_Consumer_Request();
  $consumer_request->accept(new HTTP_Request2());

  $consumer = new HTTP_OAuth_Consumer(OAUTH_CONSUMER_KEY,
                                      OAUTH_CONSUMER_SECRET,
                                      OAUTH_TOKEN,
                                      OAUTH_TOKEN_SECRET);
  $consumer->accept($consumer_request);
  $resp = $consumer->sendRequest('https://api.twitter.com/1/account/verify_credentials.json', array(), HTTP_Request2::METHOD_GET);

  $headers = $consumer->getLastRequest()->getHeaders();

  $http_request = new HTTP_Request2();
  $http_request->setHeader('X-Auth-Service-Provider', 'https://api.twitter.com/1/account/verify_credentials.json');
  $http_request->setHeader('X-Verify-Credentials-Authorization', $headers['authorization']);
  $http_request->setUrl('http://api.twitpic.com/2/upload.json');
  $http_request->setMethod(HTTP_Request2::METHOD_POST);
  $http_request->addPostParameter('key', TWITPIC_KEY);
  $http_request->addPostParameter('message', 'test');
  $http_request->addUpload('media', '/path/to/image');
  $resp = $http_request->send();
  $body = $resp->getBody();
  $body = json_decode($body);

  var_dump($body);

} catch (Exception $e) {

  var_dump($e->getMessage());

}

twitterとのOAuth認証に必要なAuthorizationヘッダを生成するだけでよいので、実際はtwitter側にリクエストする必要はないのですが、ソース読んだところいろいろ面倒なのでとりあえずこんな形で。

カテゴリー: php タグ: ,

Mac OS XにPEARのインストール

2010 年 10 月 29 日 コメントはありません
curl http://pear.php.net/go-pear | sudo php

設定はこんな風にした。

 1. Installation prefix ($prefix) : /Library/Php/Pear
 2. Temporary files directory     : $prefix/temp
 3. Binaries directory            : /usr/bin
 4. PHP code directory ($php_dir) : $prefix/PEAR
 5. Documentation base directory  : $php_dir/docs
 6. Data base directory           : $php_dir/data
 7. Tests base directory          : $php_dir/tests
カテゴリー: macosx タグ: ,

ubuntuのIPv6を切る方法

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

「/etc/sysctl.conf」に以下を追加

net.ipv6.conf.all.disable_ipv6 = 1

ググって上位にくるサイトでallがなかったり、=の両脇にスペースがなかったりしたので。

カテゴリー: linux タグ:

パスワード生成

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

CentOSでパスワード生成するコマンドmkpasswd
debian、ubuntuのmkpasswdとは別物

# yum install expect

大小英数字8文字からなるパスワードの生成

$ mkpasswd -l 8 -d 1 -c 1 -C 1 -s 0
カテゴリー: linux タグ:

Google Developer Day 2010

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

日付 2010年9月4日12:43
件名 Google Developer Day 2010 Japan 審査結果のご連絡

**** 様

このたびは、Google Developer Day 2010 Japan にご応募いただきまして、まことにありがとうございます。

予想を大幅に超える多くの皆様からご応募いただき、主催者側としては大変うれしく思っております。
さて、クイズの解答を審査した結果、誠に残念ながら今回はご意向に沿えない結果となりました。
今後、追加登録を行う予定はございません。また、追加登録に関してお問い合わせいただいた場合も
対応できませんので、何卒ご了承ください。

イベントの最新情報などは、Google Developer Day 2010 Japan ホームページ にて随時更新していますので是非ご覧ください。

日付 2010年9月10日17:39
件名 (お詫びと訂正) Google Developer Day 2010 Japan 採点ミスに関するご連絡

**** 様

このたびは、Google Developer Day 2010 Japan にご応募いただきまして、まことにありがとうございます。

さて、先日行われた Google Developer Day 2010 Japan のクイズ採点結果につきまして、一部採点ミスがありました。ここに深くお詫びいたします。

■ 採点ミスの内容

採点ミスがあったのは、Top Favorites 枠に関する設問です。この設問に対して正しく解答いただいた方のうち、24名の方の採点漏れがありました。

■ 審査結果の訂正について

この結果を受けまして、審査結果の見直しを行いました。その結果、上記24名の方は基準点以上となりましたので、後日、参加証をご登録いただいたメールアドレス宛に送付いたします。今しばらくお待ちください。

今回、チェック体制が甘かったため、このようなご迷惑をお掛けする結果となりました。多大なるご迷惑をおかけすることになりました皆様には心よりお詫び申し上げます。

日付 2010年9月22日0:32
件名 Google Developer Day 2010 Japan 参加のご案内(東京会場)

**** 様

このたびは、Google Developer Day 2010 Japan にご参加いただけますこと、誠にありがとうございます。

本メールは東京会場の「参加証」となります。下記の「Google Developer Day 2010 Japan ご来場にあたってのお願い」をお読みになり、ご来場ください。

また、重要なお知らせもありますので、最後までご一読いただきますようよろしくお願いいたします。

日 時: 2010 年 9月28日(火) 10:00 – 19:00
会 場: 東京国際フォーラム

つまりどういう事だってばよ
上記の24名ってのが自分の名前にかかってて参加できるってこと?

カテゴリー: 日記 タグ:

ヒアドキュメントとリダイレクト

2010 年 9 月 17 日 コメントはありません
$ cat << _EOT_ | sudo tee /etc/apache2/sites-available/example.com > /dev/null
<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Order deny,allow
        Deny from all
    </Directory>
    ErrorLog /var/log/apache2/example.com-error_log
    CustomLog /var/log/apache2/example.com-access_log combined
</VirtualHost>
_EOT_
カテゴリー: linux タグ: