Sinatra with Bundler
俺の少ないrubyの知識だとこうなったけど、これであってる?
Gemfile
source "http://rubygems.org" gem "sinatra"
app.rb
require "bundler/setup" require "sinatra" get "/" do "Hello world!" end
実行
bundle install bundle exec ruby app.rb
俺の少ないrubyの知識だとこうなったけど、これであってる?
Gemfile
source "http://rubygems.org" gem "sinatra"
app.rb
require "bundler/setup" require "sinatra" get "/" do "Hello world!" end
実行
bundle install bundle exec ruby app.rb
職場で2011 MBP15(メモリ8G、SSD256)買ったので、何時ものごとく?geekbenchやってみた。
| Section | Description | Score | Geekbench Score |
|---|---|---|---|
| Integer | Processor integer performance | 7229 | 8801 |
| Floating Point | Processor floating point performance | 13087 | |
| Memory | Memory performance | 5476 | |
| Stream | Memory bandwidth performance | 5954 | |
| Geekbench 2.2.3 for Mac OS X x86 (32-bit) | |||
| Operating System | Mac OS X 10.7.2 (Build 11C74) | ||
|---|---|---|---|
| Model | MCJ Co.,Ltd. P55-SD | Motherboard | MacBook Pro (15-inch Early 2011) |
| Processor | Intel Core i7-2635QM | ||
| Processor | GenuineIntel Family 6 Model 42 Stepping 7 | ||
| Processors | 4 | Threads 8 | |
| Cores | 4 | Memory | 8.00 GB 1333 MHz DDR3 |
| Processor Frequency | 2.00 GHz | Bus Frequency | 100 MHz |
| L1 Instruction | 32.0 KB x 4 | L1 Data Cache | 32.0 KB x 4 |
| L2 Cache | 256 KB x 4 | L3 Cache | 6.00 MB |
| BIOS | Apple Inc. MBP81.88Z.0047.B24.1110141131 | ||
筆者は試していないが、GNU Source-highlightはMacでも利用できるんじゃないかと思うので、Mac方面の人もぜひ試して頂きたいと思う。
これは便利そうだってことで、osxで試す。
brewでinstall
$ brew install source-highlight
自分はlessじゃなくてlvを常用しているけど、とりあえずlessでお試し
$ LESSOPEN='| /usr/local/bin/src-hilite-lesspipe.sh %s' less -R ./server.js
問題なく色づけされてる
俺はlv常用なのでこんな感じに起動して確認。
/usr/local/bin/src-hilite-lesspipe.sh ./server.js | lv -c
んー、LESSOPEN相当が見当たらない、、
幸いにして俺もvimでwombat使ってるのでcolor schemeも使わせて貰おう。(人-)
10ヶ月ぐらい掛けてついにリリースw
kiddyに絡まれてうざかったのと、途中いろいろ忙しかったので馬鹿みたいに期間が空いてしまった。
まぁプライベートで適当にやってるとこんなもんさ(俺は)
忘れそうなのでメモ。
git submodule update
は間違い。
git submodule foreach 'git pull origin master' git commit -a
foreachで全部更新してから、update。
updateは嘘でした、updateしたら戻ってまう。
意外なことに、 gcc が alternativesに登録されてなかったので、手動で登録して切り替え。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 43 --slave /usr/bin/g++ g++ /usr/bin/g++-4.3 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.3 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.4 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 45 --slave /usr/bin/g++ g++ /usr/bin/g++-4.5 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.5 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 46 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.6
–slaveで連動して g++, gcovとかも切り替える。
これで後は
update-alternatives --config gcc alternative gcc (/usr/bin/gcc を提供) には 4 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ 0 /usr/bin/gcc-4.6 46 自動モード 1 /usr/bin/gcc-4.3 43 手動モード 2 /usr/bin/gcc-4.4 44 手動モード * 3 /usr/bin/gcc-4.5 45 手動モード 4 /usr/bin/gcc-4.6 46 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 3
でおk
cocoaypが更新止まってて残念だなーって所でgpypがよさげ、って事で動かそうとするも断念
mac portsは使うのやめたので、homebrewにてトライ。
試した環境:
% uname -ar Darwin crowbar.withgood.net 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:16:10 PST 2011; root:xnu-1504.9.37~1/RELEASE_X86_64 x86_64 ~% gcc -v Using built-in specs. Target: i686-apple-darwin10 Configured with: /var/tmp/gcc/gcc-5666.3~123/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1 Thread model: posix gcc version 4.2.1 (Apple Inc. build 5666) (dot 3) ~%brew info boost gtk+ gtkmm libiconv boost 1.46.1 http://www.boost.org /usr/local/Cellar/boost/1.46.1 (7731 files, 192M) http://github.com/mxcl/homebrew/commits/master/Library/Formula/boost.rb gtk+ 2.24.3 http://www.gtk.org/ Depends on: pkg-config, glib, jpeg, libtiff, gdk-pixbuf, pango, jasper, atk /usr/local/Cellar/gtk+/2.24.3 (975 files, 33M) http://github.com/mxcl/homebrew/commits/master/Library/Formula/gtk+.rb gtkmm 2.18.2 http://www.gtkmm.org/ Depends on: pkg-config, glibmm, gtk+, libsigc++, pangomm /usr/local/Cellar/gtkmm/2.18.2 (1705 files, 60M) http://github.com/mxcl/homebrew/commits/master/Library/Formula/gtkmm.rb libiconv 1.13.1 http://www.gnu.org/software/libiconv/ /usr/local/Cellar/libiconv/1.13.1 (58 files, 2.7M) http://github.com/mxcl/homebrew/commits/master/Library/Formula/libiconv.rb
とりあえずxpとかypmとかのすでにサービス終了している奴らを抜く patch。
*** ./gpyp-3.8.1.org/src/icons/favicon/Makefile.am 2010-02-27 10:25:34.000000000 +0900
--- ./gpyp-3.8.1/src/icons/favicon/Makefile.am 2011-03-29 13:41:44.000000000 +0900
***************
*** 12,19 ****
wget "http://www.google.com/favicon.ico" -O $@ || rm $@
#kp.ico:
# wget "http://kp.podzone.net/favicon.ico" -O $@ || rm $@
! xp.ico:
! wget "http://extremeyp.ath.cx/favicon.ico" -O $@ || rm $@
cp.ico:
wget "http://cp.webhop.net/favicon.ico" -O $@ || rm $@
rp.ico:
--- 12,19 ----
wget "http://www.google.com/favicon.ico" -O $@ || rm $@
#kp.ico:
# wget "http://kp.podzone.net/favicon.ico" -O $@ || rm $@
! #xp.ico:
! # wget "http://extremeyp.ath.cx/favicon.ico" -O $@ || rm $@
cp.ico:
wget "http://cp.webhop.net/favicon.ico" -O $@ || rm $@
rp.ico:
***************
*** 23,30 ****
convert $< $@ || rm $<
#kp.png: kp.ico
# convert $< -delete 0 $@ || rm $<
! xp.png: xp.ico
! convert $< -delete 1 $@ || rm $<
cp.png: cp.ico
convert $< -delete 0 $@ || rm $<
rp.png: rp.ico
--- 23,30 ----
convert $< $@ || rm $<
#kp.png: kp.ico
# convert $< -delete 0 $@ || rm $<
! #xp.png: xp.ico
! # convert $< -delete 1 $@ || rm $<
cp.png: cp.ico
convert $< -delete 0 $@ || rm $<
rp.png: rp.ico
diff -cr ./gpyp-3.8.1.org/src/icons/favicon/Makefile.in ./gpyp-3.8.1/src/icons/favicon/Makefile.in
*** ./gpyp-3.8.1.org/src/icons/favicon/Makefile.in 2010-03-09 21:59:17.000000000 +0900
--- ./gpyp-3.8.1/src/icons/favicon/Makefile.in 2011-03-29 13:41:53.000000000 +0900
***************
*** 421,428 ****
wget "http://www.google.com/favicon.ico" -O $@ || rm $@
#kp.ico:
# wget "http://kp.podzone.net/favicon.ico" -O $@ || rm $@
! xp.ico:
! wget "http://extremeyp.ath.cx/favicon.ico" -O $@ || rm $@
cp.ico:
wget "http://cp.webhop.net/favicon.ico" -O $@ || rm $@
rp.ico:
--- 421,428 ----
wget "http://www.google.com/favicon.ico" -O $@ || rm $@
#kp.ico:
# wget "http://kp.podzone.net/favicon.ico" -O $@ || rm $@
! #xp.ico:
! # wget "http://extremeyp.ath.cx/favicon.ico" -O $@ || rm $@
cp.ico:
wget "http://cp.webhop.net/favicon.ico" -O $@ || rm $@
rp.ico:
***************
*** 432,439 ****
convert $< $@ || rm $<
#kp.png: kp.ico
# convert $< -delete 0 $@ || rm $<
! xp.png: xp.ico
! convert $< -delete 1 $@ || rm $<
cp.png: cp.ico
convert $< -delete 0 $@ || rm $<
rp.png: rp.ico
--- 432,439 ----
convert $< $@ || rm $<
#kp.png: kp.ico
# convert $< -delete 0 $@ || rm $<
! #xp.png: xp.ico
! # convert $< -delete 1 $@ || rm $<
cp.png: cp.ico
convert $< -delete 0 $@ || rm $<
rp.png: rp.ico
diff -cr ./gpyp-3.8.1.org/src/yellowpage.cpp ./gpyp-3.8.1/src/yellowpage.cpp
*** ./gpyp-3.8.1.org/src/yellowpage.cpp 2010-03-02 13:36:29.000000000 +0900
--- ./gpyp-3.8.1/src/yellowpage.cpp 2011-03-29 14:04:12.000000000 +0900
***************
*** 656,666 ****
void YPCollection::on_load_default() {
conf::Collection<YellowPage, YPCollection>::on_load_default();
add_item(IconManager::CP, "CP", "http://cp.webhop.net/");
! add_item(IconManager::XP, "XP", "http://extremeyp.ath.cx/");
add_item(IconManager::YP4G, "TP", "http://temp.orz.hm/yp/");
add_item(IconManager::RP, "RP", "http://retro.servegame.org/");
! add_item(IconManager::YP4G, "SP", "http://bayonet.aa0.netvolante.jp/sp/");
! add_item(IconManager::CP, "YPM", "http://cp.webhop.net/ypm/");
add_item(IconManager::PEERCAST, "YP", "http://yp.peercast.org/", YPTYPE_XML, false);
}
--- 656,666 ----
void YPCollection::on_load_default() {
conf::Collection<YellowPage, YPCollection>::on_load_default();
add_item(IconManager::CP, "CP", "http://cp.webhop.net/");
! //add_item(IconManager::XP, "XP", "http://extremeyp.ath.cx/");
add_item(IconManager::YP4G, "TP", "http://temp.orz.hm/yp/");
add_item(IconManager::RP, "RP", "http://retro.servegame.org/");
! //add_item(IconManager::YP4G, "SP", "http://bayonet.aa0.netvolante.jp/sp/");
! //add_item(IconManager::CP, "YPM", "http://cp.webhop.net/ypm/");
add_item(IconManager::PEERCAST, "YP", "http://yp.peercast.org/", YPTYPE_XML, false);
}
上記patchを当てて、次で一応buildは出来た。
LIBS="-L/usr/local/Cellar/libiconv/1.13.1/lib -liconv " ./configure --disable-ss-xss --disable-dbus LIBS="-L/usr/local/Cellar/libiconv/1.13.1/lib -liconv " make
が、実行するとエラーはいて segfault.
簡単なgtk使ったアプリを試したら一応動いてる。
とここまで記事を書いて、エラーログを書こうと再度実行したら動いた謎。
NSZombieEnabledとかするのって gcc(非xcode環境で)でするのってどうするんじゃーとか色々謎だったのでもう諦めようと思ってたんだが・・・・
で、かなり必死こいて入れてみたけど使ってません。
X11を起動する分には良いんだけど、gtkは(何が悪いんだろうね、まぁフォント綺麗にするとかは後回しでしょう・・・)いくら何でも文字汚すぎ・・・linuxとかでなら良いんじゃないかな、ちょっと見た感じだと機能豊富そう。
一応SS追加
何も考えずに brew install readline gettext だけだと不味かったのでメモ。
brew install readline brew link readline
まず readline は入れただけだと libedit と競合するから brew link readline する。
そのまま brew install gettext だと問題が出るので次のようにして universal binary にしておく(readlineはデフォでuniversal binary)
brew edit gettext
して、systemの前に
ENV.universal_binary
を追加する、こんな感じ
ENV.universal_binary
system "./configure", "--disable-dependency-tracking", "--disable-debug",
"--prefix=#{prefix}",
後はgettext同様に
brew install gettext brew link gettext
これって readline だけの問題じゃなくて、homebrewで作ると大抵のものが universal binaryで出来ないっぽくて、その辺に転がってるソースをbuildすると刺さる、刺さる。
1個か2個ぐらいだろって思ってたけど、結構な数をし直さないと駄目かも・・・
以前書いたServices_OAuthUploaderっていうパッケージ。
Pearにproposalして色々やりとりした結果、名前も改めてやっと出せそうな感じ。
途中でいわゆるkiddyに絡まれてやる気無くしたりもしたけど、tillってメンテナがsupportしてくれたおかげでやっとリリースにこぎつけられそう。
ircでkaepapaがgoogle calendarの新規作成がどうの言ってたので、試してみたら色々はまったのでメモ。
とりあえずprotocol仕様書を眺めながら、自分でphpでcurlを使って実装してみたけど、カレンダーの一覧の取得は出来るけど、新規作成は出来ない(zfの実装も一緒)
ちなみにgoogle data apiはv1、v2が有り、zfの実装はv1。
動かした観想的にv1は色々動かない部分が出てきてるっぽい(新規作成周りとか)。
ドキュメント見ながらやってても限界を感じたので、googleのjava clientを落としてきて、リファレンスをコピペして作って実行=>問題なく毎回作れる。
実行時には google collectionsが必要になるけど、jar無いみたいなので作ったのを置いておきます。 google-collect-snapshot_20110101.jar
仕方ないので、ncを nc -l -p 8080 とかして、リクエスト先を変えてrequestをdumpしてみる。
dumpした結果を見ると、xmlのフォーマットがprotocol仕様書に書いているのと若干違う(仕様書は2005の所がリクエストは2007とか。
取りあえずリクエスト内容とか、cache周りのヘッダとかも全部揃えて送ってみると、返事待つ状態になって無応答で、curlが * Empty reply from server と吐いてプログラムが終了する。(パラメータが不正な場合はエラー画面が帰ってきてました、Content-lengthが無いとか、認証が不正とかはちゃんとエラー画面が返る)
この状態でCookie送るようにしたりとか、色々試しても動作しなかったので、picasaのアルバム作成を作って試してみると問題なく作成完了。
この辺からhttp clientの実装を疑いだして、HTTP_Request2で実装しなおしてみると、無応答では無くカレンダー一覧が帰ってきて終了するようになる(Endpointが一緒なので、リクエストが不正か何かで処理が一覧取得になっちゃうような気がする)
ここで試しに commons-httpclient3を使ってためしに実装してみると、新規作成完了・・・
Location周りが上手く動作してくれないので、自分でレスポンス解析してリクエスト投げてます。
って事で最終的にphpで動いてませんが、まとめ。
rider.withgod.jp – blog is Stephen Fry proof thanks to caching by WP Super Cache
最近のコメント