しまなみ海道 と LiveCycling の SQLite

あけましておめでとうございます。今年もよろしくお願いいたします。

現在、母の田舎の尾道に帰っています。今回は輪行でロードバイクを持ってきました。

2011/12/30 向島 - 今治 - 瀬戸田 というコースでしまなみ海道を渡ってきました。

Strava にアップしている情報 ( 速度、位置、ケイデンス、心拍数 )は iPhone アプリの LiveCycling を使用しており、途中で電池が切れてスペアの iPhone に交換したので、記録が2つに分かれています。

後でメインの iPhone にスペア分をコピーするために、スクリプトを書いたので Gist に手順を残しておきました
Gist:1540055

// LiveCycling に .tcx を読み込む機能があれば、こんなことする手間をかけなくて良かったのになー、と思います。

とりあえず普段使いは引き続き LiveCycling ですが、長距離用に Garmin edge 500 をポチりました。東京に帰る頃には手に入ると思います。wktk

おそらくこれによって、次は .tcx から、もしくは Garmin Connect から SQLite へ読み込ませるスクリプトを書くことになる予感です。API も充実してるみたいで楽しみです。

Path x Foursquare x ifttt x Google Calendar

移動中、Path から写真とチェックインを Twitter / Facebook / Foursquare に対して続けてました。

少し前から ifttt で if Foursquare then Google Calendar というタスクを設定していたので、以下の様に細かくどこにいたか記録されていて、今後のスケジュール作成に活用できそうです。

Screen Shot 2012-01-02 at 3.39.38 AM

その他反省点

  • 通行料の料金箱が賽銭箱式で、50円玉がなく、少しずつ損してました。後で知りましたが サイクリングチケット なるものがあったそうです。小銭を探す手間も省けるし、良いですね。( 参考: SHIMAP【サイクリング】料金表 )
  • 日が落ちると、街灯がなく、橋の入り口が分からなくなりました。(幸い迷子になりませんでしたが。。) 今度はゆとりを持って早朝に出発して、日が暮れないように帰ってきます。

Filed under  //   LiveCycling   cycling   ruby   しまなみ海道   尾道  

Converting VMWare .vmdk to VirtualBox .vdi

VMWare で作成した仮想端末を VirtualBox に移行するのに、ハマったのでメモです。

  1. Virtual Machine Library から VM を選択、コンテキストメニューから Settings を選択、もしくは CMD+E で設定画面を表示
  2. HardDisks を選択
  3. Split into 2 GB Files のチェックを外し、Apply ボタンをクリック
  4. Virtual Machine Library から VM を選択、コンテキストメニューから Show In Finder を選択
  5. Q.app をダウンロード + インストール。Q – [kju:]
  6. Terminal.app などを使って cli で、以下のコマンドを実行

    $ cd ~/Documents/Virtual\ Machines
     $ /Applications/Q.app/Contents/MacOS/qemu-img convert $VMMACHINE$.vmwarevm/$VMDISK$.vmdk raw-file.bin
     $ /Applications/VirtualBox.app/Contents/MacOS/VBoxManage convertdd raw-file.bin $VMMACHINE$.vdi
     $ rm raw-file.bin
  7. .vdi ファイルは、自分の管理しやすい場所に移動します。

  8. VirtualBox.app を起動。
  9. ツールバーから、New ボタンをクリック。ウィザードにしたがって、Name / OS / Version / Memory を然るべき値に設定
  10. Virtual Hard Disk の画面まできたら Book Hard Disk はチェック、Use existing hard disk を選択し、プルダウン右にある、参照アイコンをクリックして、.vdi ファイルを選択。ウィザードを完了させます。
  11. cli から、以下のコマンドを実行します。

    $ /Applications/VirtualBox.app/Contents/MacOS/VBoxManage modifyvdi $VMMACHINE$.vdi compact
  12. VirtualBox.appVirtualBox Manager から、VM を選択し、コンテキストメニューから、またはCMD+SSettings を開き、Storage に移動。

  13. SATA Controller の下に、.vdi ファイルが入っているので、選択してコンテキストメニューから Remove Attachment を選択
  14. IDE Controller を選択して、コンテキストメニューから Add HardDisk を選択、Choose existing disk を選択し、.vdi ファイルを選択。OK ボタンで設定完了

以上で移行が完了しました。
Mac OS X 10.6.6 / VMWare Fusion 2.0.6 / VirtualBox 4.0.4、VM は CentOS-5.5 32 bit でした。

参考にしたサイト

Filed under  //   centos   macosx   virtualbox   vm   vmware  

node.js の mysql-native を使うと文字化けする

Sequelize を使ってアプリを作っているのですが、どうしても、日本語がうまく入りません。

Sequelize は、mysql-native をドライバとして採用しており、こちらをそのまま、以下の様にシンプルに叩いてみても、やはり文字化けします。

別のモジュールで、node-mysql を使うとうまくいきます。

参考までに DDL です。

Sequelize のコードに手を入れるべきか、mysql-native のコードに手を入れるべきか、もし、正しい解決方法をご存知の方がいらっしゃいましたらご教示ください。


2011-02-23 16:55:00 JST 追記

mysql-native の代わりに node-mysql を使うパッチをコミットしました。 http://bit.ly/eth5WX

Filed under  //   charset   mysql   node.js   problem  

Posterous and Markdown plugin for @snippetsapp

I’ve published 2 scrippets to GitHub.

The first is Posterous. This enables posting entries from Snippets.

We are able to write drafts in Snippets, and publish seamlessly.

However, Text lines don’t break automatically. To solve this, use one of the following two options:

  • Wrap with <markdown></markdown> and write content with markdown syntax
  • or use HTML.

When publishing private posts, links on the last screen may be broken because of Posterous API’s bug.

I mentioned this issue to the Posterous support team, I hope they fix this soon.

The second is Preview Markdown. This enables preview Markdown document.


2つの scrippet を GitHub で公開しました。

1つめは、Posterous です。 Snippets から Posterous にエントリーを投稿出来ます。

下書きを Snippets で書いて、そのまま公開できます。

自動的にされないので、<markdown></markdown> で本文を囲って Markdown 記法で書くか、HTML で書く必要があります。

非公開記事を投稿した場合、Posterous の API のバグが原因で、最後の画面に出てくるリンクは、壊れています。

Posterous サポートチームに問い合わせたので、早く治ればいいな、と思っています。

2つめは、Markdown をプレビュー です。

Markdown 文書をプレビューすることができます。

P.S. 海外の人向けに、ぎこちない英語と、日本の人向けにぎごちない日本語で書いてみました。変なところがあったらご指摘下さい。

Filed under  //   github   markdown   posterous   scrippets   snippets  

Snippets の Gist.scrippet で Private gist したい。

深津さんの、エントリー " iOS開発におけるパターンによるオートマティズム " を読んで、早速私も Amazon で購入しました。

まだ、第一章しか読んでいないので、感想は書けません。

 

このエントリーで、Snippets というソフトウェアに触れられていたので、ダウンロードして、試用しています。

今まで、同じ様な用途に、Evernote を使っていたのですが、こちらは、テキストデータに特化しているので、検索が早く、シンタックスハイライトも付いているので、気に入りました。

メニューバーから、Scrippets という、拡張機能が選択でき、そこから、各種スニペット共有サイトにポストできたり、Placeholder (テンプレートタグみたいなもの) を置換したりできます。画像のものは、バンドルされているものです。

自作や、配布されているものを、新たに追加することも可能です。

この中の、gist.github.com は、ブラウザでログインしている、いない、に関わらず、Anonymous として投稿されてしまいます。もちろん、Private gist も作れません。

なので、恐らく、この bundle の作者の、ベルギーの Simon さんという方のリポジトリを fork して、修正しました。

オリジナルは、Gist Create API : http://gist.github.com/api/v1/xml/new に、データを POST していたのですが、Private gist が仕様が公開されていないか、サポートされていないか、私が見過ごしたか、なので、gist のコマンドラインツール のコードを参考に、Gist の投稿ページ : https://gist.github.com/gists へポストする様に変更しました

一応、Pull request したので、もしかしたらバンドルされるかもしれませんが、もし、同じ悩みをかかえている人がいたら、私のリポジトリから、ソースを落として下さい。

https://github.com/ngs/snippets-gist-scrippet

インストールするとき、" 既に、Gist.scrippet はインストールされてるよ " と怒られるので、その前に、一度 Snippets を終了して、Snippets.app/SharedSupport/Scrippets/Gist.scrippet を、リネームするなり、削除するなりして下さい。

 

Scrippets は、JavaScript / CSS / HTML / Ruby で実装されているので、簡単に作成できます。

API リファレンスが見当たらないので、仕様は手探りなのですが、Snippets.app/Contents/Resources/Scrippet.js に実装されているクラスのコードを読めば、JavaScript からアクセシブルな情報は、全て理解できます。

パッケージの構造は、こちらのスライド の 28 ページ目で紹介されています。

また今度、自分オリジナルの Scrippet を作ってみたいと思います。

Filed under  //   gist   github   ruby   scrippets   snippets  

DBIx::Class::Storage::DBI::mysql::backup

先月、CPAN に公開したモジュール DBIx::Class::Storage::DBI::mysql::backup の紹介です。

DBIx::Class::Schema::Versioned にある、backup_directory という設定項目は、設定すると backup メソッドをコールするだけで、設定したディレクトリにバックアップを作成してくれるのだろうな、と思いますが、実は、SQLite など ( 他の DBI は確認してません ) 、DBIx::Class::Storage::DBI のサブクラス側で各々実装するものらしく、MySQL で backup メソッドをコールすると、以下の様に die してしまいます。

Can't locate object method "backup" via package "DBIx::Class::Storage::DBI"
    at /path/to/lib/site_perl/5.xx.x/DBIx/Class/Schema/Versioned.pm line 560.

SYNOPSIS に書いた様に、Storage::DBI::mysql::backup を、Schema.pm ( DBIx::Class::Schema のサブクラス ) の load_components に加えて下さい。

これで backup メソッドをコールしても die しなくなりました。

backup_directory で 設定したディレクトリに、myapp_db-20110202-050441.sql という名前で、ダンプデータが作成されていると思います。

よかったら、是非、使ってみてください。

or checkout from GitHub

 

テストコードを書くに当たって、Test::mysqld というモジュールを使わせて頂きました。

mysql.sock をテスト用に作成して、テストが完了すると、自動的に削除してくれるので、実際動いている DB に干渉せず、安心して開発ができました。

Filed under  //   DBIx::Class   backup   cpan   mysql   perl  

Three20 - extXMLRPC

去年、iBacklog を開発したときに作った、Three20 の XML-RPC 拡張を、私の branch にコミットして、Pull request したままだったのですが、「 Extentions ページを Three20.info に作ったので、そちらに登録してくれ 」とのことで、Pull せずに Close されてしまったので、独立したリポジトリを作って、登録しました。

extXMLRPC | Extensions | Three20

使い方は、上記のページの Breakdown に記載されていますが、去年の 10月に、Facebook の Jeff 氏に言われて、 ( YAPC Asia に参加中に片手間で ) 作ったサンプルも公開しているので、参考になればと思います。

ngs / Samples/tree/master/XMLRPCSample

このサンプルは " はてなキーワード連想語API " を使って、延々と関連ワードを辿ってゆくものです。

Capture

Filed under  //   github   hatena   ios   objective-c   three20   xmlrpc  

ホスティング環境を整理しました。

ブログや Wiki 、Subversion リポジトリ、友達のサイトなど、相乗りで 使えるネット の VPS に構築していましたが、バージョン管理を Git に移行したり、同じ Apache に、モジュールを共存させすぎたのが原因で、負荷が高かったので、メンテナンスが億劫になり、それぞれウェブサービスに移行しました。

個人/会社サイトホーム
GitHub Pages
Wiki
GitHub Wiki / gist にバックアップ、今後は gist に集約させます。
個人ブログ
過去のものは Dreamhost で、blog1.ngsdev.org に移行。
今後は この Posterous に気が向いたら書いていきます。
バージョン管理
Subversion は、一旦 Repository root を tarball にして、Dreamhost に。
終っていない / メンテしている案件は、gitsvn で、Git リポジトリに変換。それ以外は放置です。

これからは、Dreamhost にリモートリポジトリを作っていきます。容量無制限なので安心です。

( ちなみに、iTunes や動画などの大きなデータのバックアップにも使っています。 )

また、新たに会社のプロダクトサイトを開設しました。

こちらも Posterous です。 http://littleapps.jp/

ソフトウェアのリリース / アップデート情報などを流していきます。

それに連動する Facebook Page も作成したので、よかったら Like ! ボタンをクリックして下さい。

現時点では、メンバーが 25 人に満たないので、Custom Username を設定できていません。( 参考: Facebook Help Center )

Filed under  //   blog   dreamhost   facebook   github   hosting   infrastructure   littleapps   posterous   subversion