NSTask *task = [NSTask launchedTaskWithLaunchPath:@"/usr/local/bin/SayKana"
                                        arguments:[NSArray arrayWithObjects:@"-s", @"70", @"へいよーぐっつすっす" nil]];
[task launch];
[task waitUntilExit];

関連

ロリポップ!のpaperboy&co.様!

さくらのレンタルサーバーのさくらインターネット様!

マネージド共有サーバーのファーストサーバー様!

@Next Style共有サーバーのWADAX様!

共有サーバーShared PlanのCPI様!

共有サーバーのJoe'sウェブホスティング様!


お願いがあります。


CGIではなく、RubyのRackアプリケーションに対応していただけないでしょうか!!


共有サーバーではメモリの制限が難しいなどの理由があるかもしれません。しかし、国内にそんな共有レンタルサーバーがあったらRubyやRailsの普及の大きな原動力となるに違いありません。Rubyistは使わなくてもとりあえず借りるかもしれません。何か僕に手伝えることがあれば何でもやりますので・・・なにとぞ・・・なにとぞ・・・。

Lokkaのpluginを別リポジトリにするためにgit filter-branch --subdirectory-filterを使ってみました。

Pro Git - Pro Git 6.4 Git のさまざまなツール 歴史の書き換え

最強のオプション: filter-branch

歴史を書き換える方法がもうひとつあります。これは、大量のコミットの書き換えを機械的に行いたい場合 (メールアドレスを一括変更したりすべてのコミットからあるファイルを削除したりなど) に使うものです。そのためのコマンドが filter-branch です。

% git clone git@github.com:komagata/lokka.git
% cd lokka
% git filter-branch -f --subdirectory-filter public/plugin/lokka-hoptoad HEAD
Rewrite cedd2bc6856876f6a51cfbf2cf70f3ceb2b835a9 (1/1)
Ref 'refs/heads/master' was rewritten
% git st
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 1 and 247 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
% git log
commit 34ad15f4435ccc563f48778419fe2d48d7c58161
Author: Masaki KOMAGATA <komagata@gmail.com>
Date: Thu Dec 2 17:26:34 2010 +0900

added hoptoad plugin.
% ls
Gemfile lib views

「やだ、なにこれ・・・」

スゲー変わってる。filter-branch系は歴史を遡って書き換えちゃう系なので新たにcloneしといた方がホント安全っぽいですね。

後はgithubに新たに作ったlokka-hoptoadリポジトリにpushして完了。便利ですね!

Lokkaの標準でないプラグインを別リポジトリにして、lokka.orgにプラグインのページを作りました。

Plugins - Lokka

githubを"lokka"で検索して出てくるものを書いてみました。数が増えたらWordPressのPlugin Direcotryみたいにアップ出来るようにしたい。

他にもっと作るべきものあると思うんですが、ちょっとこのブログに必要だったのでLokkaのHoptoadプラグインとNew Relic RPMプラグインを作りました。

Hoptoad

Hoptoad : p0t Errors

Hoptoadは僕も大好きなshouldaやfactory_girlやpaperclip等のライブラリも作っているthoughtbotのサービス。アプリのエラーを管理するサービスです。最近iOSアプリのエラーにも対応してみたいです。

New Relic RPM

Heroku | docs-komagata-org | New Relic RPM

New Relic RPMはアプリのパフォーマンスを監視してくれるサービスです。

プラグイン

komagata [p0t] - Lokka

プラグイン一覧にHoptoadとNew Relic RPMが増えました。

komagata [p0t] - Lokka

New Relic RPMの方は特はHerokuの場合、Addonを入れただけでプラグインが存在すれば動きますが、HoptoadはAPIキーを上記の設定画面で入力する必要があります。

Herokuの場合、Addonはそれぞれ下記で簡単に追加できます。

% heroku addons:add hoptoad:basic
% heroku addons:add newrelic:bronze

Google Analytics, Hoptoad, New Relic RPMの三つをこのブログに入れてみてわかったことは、1日250PVぐらいしかないのに、レスポンスに1〜3秒ぐらいかかっていて、特に不具合は発生してないが、Herokuから"Backlog Too Deep"のエラーが130も起きてるとのメールが来ることです。

2dynosにしたら$36/monthかかるんですが、性能はあんまり期待出来そうにありません。

先日、日曜日だけど決算のための経理処理があったのでオフィスに行きました。machidaさんもたまたまお客さんと打ち合わせをやってました。

お客さんも帰られて、僕も経理処理が一段落付いたので何となくソファに深く座っているとmachidaさんが「コレありましたよ」といってチータラ(チーズを鱈で挟んだアレ)をテーブルの上に置きました。

数秒、微妙な間が・・・。

machidaさん:「ビール、飲みたくないですか?」

僕:「んーーーーー、どうしようかなーーーー」

machidaさん:「この時のために・・・あるのかもしれないですよ?」

僕:「ビールって、この時の為にあるのかもしれないですね・・・?」

美味かったです・・・。

なんだかんだでMac使い始めてから1年半ぐらい立ちますが、WebサービスやLinuxのアプリばかり使っていてMacのGUIアプリって全然詳しくなっていません。

ググって出てくるMacアプリ紹介系のエントリーだと僕らプログラマーが使うアプリとちょっと嗜好が違ってたりして、Macのプログラマーは実際どんなアプリ使ってるのか気になってました。

MAKES THISパクリリスペクト元である、ナードな人達にどんなハードとソフト使ってるのかのインタビューを集めたサイト、THE SETUPに我らがイケメン大王defunktことChris Wanstrathが登場したのをきっかけに、プログラマーが実際に使ってると言っているMac GUIアプリを8個選んでみました。(1byte的な意味で)

Aquamacs

/Users/komagata/Library/Application Support/Aquamacs Emacs/scratch buffer

テキストエディタ。フリー。

Carbon Emacs自体Common Lisp勉強時しか使ってなかったので詳しい使用感はわかりません。イケメン大王も使ってるらしいから使わなきゃですね?

LaunchBar

quicklook-zoomed.png

ランチャー。€24。

"terminal"でターミナル.appが出るのがSpotlightより良かったです。デフォルトのショートカットがUSキーボードの日本語変換と同じCmd+SPACEなのでビビる。

Caffeine

Lighthead - Caffeine

指定した時間MacをSleepしないようにするツール。フリー。

ちょっとだけ嬉しいツール。

Arq

Arq Setup Assistant

Amazon S3にバックアップするツール。$29。

万が一家が高波に攫われたりしたらTimeMachineも危ない。ディザスター系障害にも備えたい方へ。

Soulver

General Examples.soulver

スプレッドシートよりスマートな計算ソフト。$24.95。

この妙な使用感は一見の価値あり?意外にもUIは日本語対応しててビビりました。

Acorn

Acorn, the image editor for humans.

ペイント系画像編集ソフト。$49.95。

プログラマーなのでPhotoshopを買うほどでもないけどGIMPは辛い・・・という方、まあ僕なんですが、そういう人には良さそうです。もうちょっと使ってみて問題なければ買ってみます。

Divvy

Divvy · Window management at its finest.

ユニークなUIのウィンドウ管理ツール。$14。

升目を選んで設定する面白いUIです。ショートカットも設定出来るし使い易いですね。

Skitch

SkitchUI_MainWindow.png

スクリーンキャプチャ。フリー。

お馴染みのツール。Webサービスと連携してるところ、ウィンドウの背景を指定したり、影の有り無しを選べたりするところが便利です。

herokuのpg_dump.sqlしかバックアップが無い状態からDBを復旧させるため、適当なpostgres環境が必要になったんですが、$ brew install postgresql はv9.0とか未来的な感じが面倒そうだったので簡単にVirtualBoxの仮想環境が作れるという噂のVagrantを使ってみました。

Vagrant - Welcome

Vagrant - Welcome

Vagrantとは?

VirtualBoxの仮想環境をCUIから操作するツールです。数回コマンドを叩くだけで環境が作れるのでとても便利。rubyで書かれたシンプルな設定ファイルを元に面倒な仮想環境構築を自動化してくれます。

VM自体はVagrantfileという設定ファイルで設定し、VMの中身はchefで設定するという感じです。僕はchef使ったこと無いので今回はVM作成したあとはsshで入ってpostgresをインストールしちゃいました。それだけでもOSのCDイメージ落としてきて、インストールして・・・って面倒だったのが簡単になったし、バックグラウンド動作してくれるし、環境がキモくなったらすぐ削除して作り直せるのが精神衛生上良いですね。

Ubuntu 10.04 (Lucid Lynx) 環境を作る

$ gem install vagrant
$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
$ vagrant box list
lucid32

OSイメージをダウンロードするので結構時間かかります。lucid32ってのがbox名です。

$ mkdir env
$ cd env
$ vagrant init lucid32
create Vagrantfile
$ ls
Vagrantfile

適当なディレクトリを作ってvagrant initでVagrantfileを作ります。RakefileとかCapfileとかGemfileとかあるので分かると思いますが、このディレクトリで実行するvagrantコマンドがこの設定ファイルを参照します。

# Vagrantfile
Vagrant::Config.run do |config|
config.vm.box = "lucid32"
end
$ vagrant up

vagrant upで同ディレクトリのVagrantfileを元にVMイメージを作ってバックグラウンドで起動します。(2回目からは単に起動します)

$ vagrant ssh
Warning: Permanently added '[localhost]:2222' (RSA) to the list of known hosts.
Linux vagrantup 2.6.32-24-generic-pae #39-Ubuntu SMP Wed Jul 28 07:39:26 UTC 2010 i686 GNU/Linux
Ubuntu 10.04.1 LTS

Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
Last login: Wed Aug 11 17:42:46 2010

vagrant sshでVMにvagrantユーザーでsshで接続します。(デフォルトではlocalhost:2222をVMの22にforwardします)

sudoできるので後は普通のubuntuです。通常、設定はchefでやるみたいです。

忙しい人のためのVagrant

これだけだと何がどうなってるのか解かり辛いのでもう一個環境を作ってみます。

$ mkdir env2
$ cd env2
$ vagrant init lucid32
$ vagrant up

この状態でVirtualBoxの設定画面を見てます。

Oracle VM VirtualBox

ちゃんと2個のVMが実行中です。何にも設定してないですが実際はどうなってるんでしょう?vagrant haltでVMを停止して設定を見てみます。

仮想メディアマネージャ

$ tree ~/Library/VirtualBox/HardDisks
/Users/komagata/Library/VirtualBox/HardDisks
├── lucid.vmdk
├── lucid_1.vmdk
└── windows_xp_ie6.vmdk

HDDイメージはそれぞれ別々に作ってくれています。

% tree ~/.vagrant 
/Users/komagata/.vagrant
├── boxes
│   └── lucid32
│   ├── Vagrantfile
│   ├── box.mf
│   ├── box.ovf
│   └── lucid.vmdk
├── logs
└── tmp

box(CDイメージとVMのデフォルト設定)の方は共通です。

$ vagrant destroy
$ cd ..
$ rm -rf env2
$ ls ~/Library/VirtualBox/HardDisks
lucid.vmdk windows_xp_ie6.vmdk

vagrant destroyで綺麗に消えるので気軽に作成・削除が出来ます。

作りがシンプルで気に入ってしまいました。当初の目的だったpostgresはデータを救い出したあと要らないのでVMごと消してしまいました。そのぐらい気軽に環境が作れるところがいいですね。

Lokkaでメタディスクリプションとメタキーワード設定出来るようにしました。

komagata [p0t] - Lokka

これは簡単なんですが、そろそろLokkaのDBアップデート時のmigrationやimport/exportデータのフォーマットを決めないと面倒になってきました。xmlが無難なのかなあ・・・。