homebrewでMacにインストール
$ brew install sbcl
$ brew install sbcl
Commit c6954984dca64cbc02ee28f63ec4f7ce56bec1b4 to komagata's lokka - GitHub
ktkr! 神降臨! > @yagi_
IRC(#lokka-ja)で適当に話してたことが既に実装されとる!
テーマAPIとプラグインAPIは超大切なのでプラグイン規約はちょっと悩みますね。@yagi_さんが書かれている通りですが、現状helloというプラグインを作るとするとこんな感じです
規約とは殆どが配置と命名の事です。配置はこんな感じです。
LOKKA_ROOT/
plugin/
lokka-hello/
lib/
lokka/
hello.rb
URLの/helloにアクセスするとhelloと表示し、helloというhelperを追加するhelloプラグインの中身はこんな感じです。
module Lokka
module Hello
def self.registered(app)
app.get '/hello' do
'hello'
end
end
end
module Helpers
def hello
'hello'
end
end
end
簡単なルールでいいかもですね。
Lokkaの@yagi_さんのforkのplugin autoloadを辛抱たまらず勝手にマージしてみた。
$ git fetch git://github.com/yagitoshiro/lokka.git master:plugin-patch $ git merge plugin-patch
Commit c01380f5d6d5ddf4145fa990c7d3d1ca03ed8bce to komagata's lokka - GitHub
サンプルのHelloプラグインが動いてないので明日もっとよく見る。今日は寝る。
(MacPortsで入れたzshをログインシェルにしてると裏世界でひっそり幕を閉じる。が、Terminal.appのshells option with:を/bin/shにすれば助かる。)
Homebrewをインストール。(Xcodeはその前に必要)
$ sudo chown -R `whoami` /usr/local
$ ruby -e "$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)"
gitをインストール。
$ brew install git
情報処理推進機構:プレス発表:記事:「2010年度日本OSS貢献者賞・日本OSS奨励賞」受賞者を選定
IPA(独立行政法人情報処理推進機構、理事長:藤江 一正)は、このたび、優れたオープンソースソフトウェア(OSS)の開発及び普及に貢献した個人等を表彰する「2010年度日本OSS貢献者賞」および「2010年度日本OSS奨励賞」の受賞者を選定しました。
今回発表された日本OSS貢献者賞2010に日本語プログラミング言語なでしこの作者、酒徳 峰章さんが受賞されていました。おめでとうございます。
以前、尊敬するエンジニアは誰?と聞かれたときに、DHHですかねー?などと適当に答えてしまったんですが、本当は酒徳さんだなあーと。
どれが良い悪いではなく、プログラマーを
の3つに分けるとしたら酒徳さんは0を1にするタイプの人だなあと思っていました。
酒徳さんを初めて見たのは確かオープンソースカンファレンス2005だか2006で、なでしこの発表をされている時でした。その頃僕はプログラマーというと早口で捲し立てる完璧主義者というイメージを持っていたので、(プログラマーにもこんなにゆっくりしゃべってくれる優しそうな人がいるのか)と驚いたことを覚えています。
その後ウノウで働く中で数回ペアプロやったり、酒徳さんの活動をウォッチしてたんですが、とてもユニークな人で、僕もこういう風になりたいなと思うようになりました。(社内で聞こえてきた会話の断片などを元に記憶を掘り起こしているので事実と違うところをがあるかもしれません。)
ウノウで開発合宿をしたとき、WindowsのGUIアプリを誰か(ココイチさんかな?)が作っていて、「よくあるこういう処理ってどうすればいいんでしたっけ?」と聞いたときに酒徳さんが「それならいいのがありますよ」といって取り出した自作ライブラリの名前が"BenriUtil"。「BenriUtilっていい名前ですね!」というと「これ、便利なんですよ・・・」と言っていました。
また別の時は、「女子高生にプログラミングをしてもらうには携帯しかない!」と言って、FlashLiteのプログラムを良く知るためにActionScriptを始めていました。(Web開発環境"葵")
「Delphi好きの我々にとっては馴染み易いですね」(変数宣言の名前と型の順番が同じ)と言って勉強のために作ってたのがHello, Worldではなく、1マス1マスが人の形の画像を使ったライフゲーム。
僕自身も、上手い下手は兎も角、(ご飯が食えて、死ぬまでプログラミングが出来ればそれでいいや・・・)と考えてるクチなんですが、それでも酒徳さんよりプログラミングが好きか、楽しんでやっているかと問われると自信がありません・・・。
元々、酒徳さんが"日本語プログラミング言語ひまわり"を作ったのは会社のアルバイトの人の業務自動化のためだそうです。
ウノウでCTOの尾藤さんがペアプロの時に、酒徳さんがプログラミング言語やコンパイラを作るときには普通必ず使うであろう技術やツールを知らないことに驚いていました。「今までどうやっていくつも言語を作ってきたんですか?」って。
酒徳さんはというと「おお、こんな便利な物があったんですね!これは凄いですね!」と言っていました。
しかし、その後、周りの人に聞いたり、定番の書籍(ドラゴンブック等)を読んであっという間に習得していました。
「これで次からはプログラミング言語がもっと楽に作れる!」とか言ってました。
0を1にするには極端に独善的である必要があります。しかし、酒徳さんはそういった欲望を他人に迷惑の掛からない自分のソフトウェアのコードの中だけで爆発させているように見えます。
僕自身は上記3種類でいったら1を10にするタイプかなあ・・・と思っているので直接的には真似出来ませんが、常々、酒徳さんをリスペクトしている次第です。
MacでTerminal.appから起動したアプリとFinder/Spotlightから起動したアプリの環境変数が違う。(厳密にはFinderとSpotlightも違う)
MacVimから色々やろうとしたときにかなりウザイ。
:!rvm
zsh:1: command not found: rvm
shell returned 127
:!echo $PATH
/Applications/MacVim.app/Contents/MacOS:/usr/bin:/bin:/usr/sbin:/sbin
・・・ほう(イラッ
/etc/launchd.confでsetenvすればいいそうです。(なんでcshみたいな書き方なんだろう?)
# /etc/launchd.conf
setenv PATH /Applications/MacVim.app/Contents/MacOS:/Users/komagata/.rvm/gems/ruby-1.8.7-p299@ruby1.8.7/bin:/Users/komagata/.rvm/gems/ruby-1.8.7-p299@global/bin:/Users/komagata/.rvm/rubies/ruby-1.8.7-p299/bin:/Users/komagata/.rvm/bin:/Users/komagata/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
できた。
(/etc/pathsやenvironment.plistで設定する方法もあるみたいですが、Finder/Spotlightの両方共設定することが出来なかったのでこの方法です。)
Lokka 0.1.0をリリースしました。これはPyhaからLokkaに名前が変わってから最初のリリースです。
ダウンロードはこちらから。
PyhaはPython製であるように見えてしまって紛らわしい説があった(あたりまえ)のでGoogleグループで投票で新しい名前、Lokka(ロッカ)になりました。
公式サイトもlokka.orgになりました。改めて調べてみると北欧の地名?ってPyから始まるものが結構多いんですよね。Pythonのソフト作るときにいいかもです。
msakamoto-sfさんからマルチプラットフォームで外部プロセス実行とそのプロセスとのプロセス間通信が簡単にできるQProcess(Qt)を教えてもらったので勉強の為にCUIアプリのSayKanaをQtのGUIアプリから叩くqtalk.appというのを作ってみました。
komagata's qtalk at master - GitHub
#include <QApplication>
#include <QMainWindow>
#include <QLabel>
#include <QPocess>
#include <QTextCodec>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QMainWindow mainWindow;
mainWindow.setWindowTitle("QTalk");
mainWindow.resize(200, 30);
mainWindow.show();
QProcess process;
process.start("/usr/bin/env SayKana -s 70 なにかすごいきのうがあるとおもったの?。ばかなの?。しぬの?");
return app.exec();
}
しかしTerminalから
% open qtalk.app
みたいに実行すると動くんですが、Finderから起動すると動きません。GUIアプリからCUIコマンドを実行するには普通どうするんでしょうか・・・?
2010月10日10追記:
/usr/local/bin/SayKanaとしたらFinderからでも動きました。/usr/local/bin/saykanaだと上記の状態になってました。僕のzshの設定のせいっぽいです。
newしないでクラス変数ってどうやってテストするのかな?と思ってたら貰ったパッチに書いてあった。
class Foo
@@foo = 'foo!'
end
puts Foo.send(:class_variable_get, '@@foo') # foo!
なるほどー、これは簡単!
pyhaのGUIランチャー(一般の方やデザイナーの方には黒い画面必須はありえないから)を作ろうとしてるんですが、コードベースが共通でwindows, mac, linux対応のGUIランチャーを作るとすると何を使えばいいのか悩んでました。やはり各種環境でネイティブの見た目がいいということでQtを使い始めたんですが、そもそも各種環境で共通のやり方で外部プロセス(要はruby pyha.rb)を実行するやり方がよく分かりませんでした。
よく考えたらforkが出来ないってのはMinGWとか使えば解決じゃんということに考えが至りませんでした。とにかく「Windowsではforkが使えない」という先入観にやられてました。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
char cmd[] = "ruby -e \"puts 'ruby!'\"";
system(cmd);
return 0;
}
Windows(MinGW), Mac OS X, Linuxで上記のコードはフツーに動きました。何と素晴らしいんでしょう!
Qtの方は単なるランチャーで対したことしないのでそれ程大変じゃ無さそうです。(アイコンをどうやって設定するのかぐらい?)
ただ、そのGUIランチャーを同伴すると、Qtのライセンス(GPLv3 or LGPL)の影響でPyhaがMITライセンスで居られなくなるのかもしれません。どうなんだろう?