merb.jpを取得してmerb wiki for japaneseを開始しました
なんかmerbが0.5だったときのエントリが地味にはてブされていて、しかもgoogleでググったらそのエントリがかなり上位に来てしまっていたので、今のうちにmerbを本格的に取り扱おうと思い、merb.jpを取得しました。
http://wiki.merb.jp/
今後merbに関する情報はこっちを中心に書いて、ブログにはちょっとしたメモ程度を書いて行こうと思います。
gyazoはてなフォトライフ版でもpostした画像をクリップボードにコピーするようにしてみた
はてなフォトライフにpostするgyazoを書いた on Mac OSX - Post-itみたいなで書いたものをちょっと改造してみた。
改造箇所
- idファイルは不要なので削除
- オリジナルサイズの画像URLをクリップボードにコピー
- オリジナルサイズの画像URLを開く
ソース
#!/usr/bin/env ruby require 'rubygems' require 'atomutil' tmpfile = "/tmp/image_upload#{$$}.png" imagefile = ARGV[1] if imagefile && File.exist?(imagefile) then system "sips -s format png #{imagefile} --out #{tmpfile}" else system "screencapture -i #{tmpfile}" end imagedata = File.read(tmpfile) File.delete(tmpfile) atom_uri = 'http://f.hatena.ne.jp/atom/' post_uri = atom_uri + 'post' userid = '****' pass = '****' entry = Atom::Entry.new({ :title => 'post by gyazo', :updated => Time.now, :content => Atom::Content.new { |c| c.body = [imagedata].pack('m') c.type = "image/png" c.set_attr(:mode, "base64") }, }) auth = Atompub::Auth::Wsse.new :username => userid, :password => pass client = Atompub::Client.new :auth => auth res = client.create_entry(post_uri, entry, "post by gyazo") # アップした画像のURIを作成する head = userid.slice(0,1) date = res.slice(-14,8) num = res.slice(-14,14) url = "http://img.f.hatena.ne.jp/images/fotolife/#{head}/#{userid}/#{date}/#{num}_original.png" system "echo #{url} | pbcopy" system "open #{url}"
gyazo.app/Contents/Resources/scriptの中身をこれに置き換えて、Mac標準のRubygemsでatomutilをインストールすると使えます。
もしサイズの関係でオリジナルサイズを使用したくない場合は、最後辺りのurlにある"_original"を削除してください。
Apache 2 + mod_dav_svnでSVNParentPath以下の特定レポジトリにのみBasic認証を噛ます方法
アホみたいに1時間ぐらい時間をつぶしてしまったので、忘れないようにメモメモ。
構造
- repos
- project1
- project2
この状態でproject2にのみBasic認証を噛ます。 http://svn.hogehoge.jp/ にアクセスすると repos 以下のレポジトリ一覧が見れて、ここには大本のBasic認証を噛ましてある。でも特定レポジトリにのみユーザーを追加したい、という場合。
Locationを増やす
<VirtualHost *:80> ServerName svn.hogehoge.jp <Location /> DAV svn SVNListParentPath on SVNParentPath /opt/svn/repos AuthType Basic AuthName "Authorization Realm" AuthUserFile /opt/svn/repos/.htpasswd Require valid-user </Location> <Location /project2> AuthType Basic AuthName "Authorization Zone" AuthUserFile /opt/svn/repos/.htpasswd.another Require valid-user </Location> </VirtualHost>
Locationの中身は / で終わらせない。終わらせるとやっかいなことになる。
DAV svnやSVNPathを書かない。書くとやっかいなことになる。
AuthNameを変更しておいた方がどっち読んでいるのか分かりやすいと思って変更している。特に他意はない。
project2 のみ読み書きできるユーザーを /opt/svn/repos/.htpasswd.another に追加する。ただこの方法だと大本の .htpasswd と .htpasswd.another に重複しているユーザーが出てくるはずなのでちょっと管理しづらいなー、とか思っているところ。仕方がないのかな。
iPhotoからGoogle Picasaに写真をアップロードする
なんかあっさり出来たのでエントリ書くまでもないかなー、とか思いつつ手順を残す。
Picasa Web Albums Uploaderのダウンロード
http://picasa.google.co.jp/intl/ja/web/mac_tools.htmlからdmgファイルをダウンロードしてくる。
Picasa Web Albums Uploaderのインストール
dmgファイルをマウントするとPicasaWebAlbumsUploader.mpkgが入っているので、こいつを実行して手順通りに進めていく。基本はすべて「続ける」でOKだと思う。
iPhoto起動
インストールが終了すると /Applications ディレクトリに Picasa Web Albums Uploader.appが入っているけど、こいつを無視してiPhotoを起動する。
書き出し
おもむろにメニューのファイルから「書き出し」を選ぶ。
出てきたウィンドウの"Picasa Web Albums"を選ぶとIDとPassを入力するよう促される。何度も入力したくなければ"Remember password in keychain"にチェックを入れる。
複数svnレポジトリをgit-svnで使用する
今までdotfilesの類いをcodereposにコミットしていたのですが、codecheck.inにもコミットしたくなりました。でも複数svnレポジトリをトラックとかできんの?ということでとりあえずmanpageを見る事に。
man git-svn
- svn-remote
Specify the [svn-remote "
git-svn(1)"] section to use, this allows SVN multiple repositories to be tracked. Default: "svn"
という事が書いてあったので、できそうな気がします。
git-svn initしてみる
何も考えずにgit svn initしてみよう。
git svn init http://hogehoge.com/
git svn init http://fugafuga.com/ --svn-remote another-svn
この時点で .git/config を覗いてみる。
[svn-remote "svn"]
url = http://hogehoge.com/
fetch = :refs/remotes/git-svn[svn-remote "another-svn"]
url = http://fugafuga.com/
fetch = :refs/remotes/git-svn
2種類の設定ができている。でもfetchの部分がどちらもgit-svnなので、ちょっと問題あり?
git-configで設定を弄る
という訳でconfigファイルを設定する。直接変更した方が早い気もするけど、git-configを使ってみる。
git-config --unset svn-remote.another-svn.fetch git-config --add svn-remote.another-svn.fetch :refs/remotes/another-svn
この時点で .git/config を覗いてみる。
[svn-remote "svn"]
url = http://hogehoge.com/
fetch = :refs/remotes/git-svn[svn-remote "another-svn"]
url = http://fugafuga.com/
fetch = :refs/remotes/another-svn
これで良さげ?
Subversionを$HOME以下にビルドする(またはmod_dav_svnをビルドしない)
管理権限を持っていないサーバでsvnを使いたいなー、とか考えていたのですが、どうもsvnが入っていないご様子。なのでsvnを$HOME以下にビルドしようと考えました。
subversion-1.5.2.tar.gzとsubversion-deps-1.5.2.tar.gzの取得
wget http://subversion.tigris.org/downloads/subversion-1.5.2.tar.gz wget http://subversion.tigris.org/downloads/subversion-deps-1.5.2.tar.gz tar xvf *.tar.gz
Subversionと、依存パッケージ詰め合わせを持ってきて展開する。subveresion-1.5.2といディレクトリができる。
configure
./configure --prefi=$HOME/local --without-apxs --without-apache
オプションを見ると、--disable-mod-activationとかいうそれっぽいオプションがありますが、これはhttpd.confにmod_dav_svnを書かないというだけで、mod_dav_svn自体インストールしようとします。書き込み権限を持っていなければ当然Parmissionうんたらとかいうエラーが出てインストールが止まります。
configure中にmod_dav_svnをコンパイルするには --with-apsx か --with-apacheが必要だよー、とかいうWARNINGが出ます。どちらかでいいのかなー、と思ってひとつしか指定しなかったら見事にmod_dav_svnをインストールしようとしやがったので両方指定します。
make && make install
make && make install
注意
svn: 'http://svn.hogehoge.com/fugafuga' 用の URL スキームを認識できません
subversion-deps-1.5.2.tar.gzを展開し忘れるとこのようなエラーが出たりします。svnでhttp(s)のレポジトリにアクセスするにはNeonとかSerfとかいうライブラリが必要なようです。subversion-deps-1.5.2.tar.gzにどちらも含まれているので、ちゃんと入れておきましょう。
INSTALLにはこう書いてあります。
* libneon or libserf (OPTIONAL for client)
The Neon and Serf libraries both allow the Subversion client
to send HTTP requests. This is necessary if you want your
client to access a repository served by the Apache HTTP
server. There is an alternate 'svnserve' server as well,
though, and clients automatically know how to speak the
svnserve protocol. Thus it's not strictly necessary for your
client to be able to speak HTTP... though we still recommend
that your client be built to speak both HTTP and svnserve
protocols. Your client can be compiled against either
libneon or libserf (or both), as they offer competing
implementations.