Everyday FunkiEE!!

全方位型ファンキーSE

需要のなさそうなスクレイパーつくった

川崎市の「ふれあいネット」という公共施設の利用予約サイトがあるんですが、どうにもこうにも使いづらいので思い立ってスクレイピングしてみました。
pythonのmechanize + BeautifulSoupでこんな感じ。
#!/usr/bin/env python
# -*- coding=utf-8 -*-

import mechanize
import re
from BeautifulSoup import BeautifulSoup
import sys

def main():
        browser = mechanize.Browser()
        browser.addheaders = [('User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.29.13 (KHTML, like Gecko) Versio')]
        browser.set_handle_equiv(False)
        browser.set_handle_gzip(False)
        browser.set_handle_robots(False)
        browser.set_handle_referer(False)
        browser.set_handle_refresh(False)
        browser.set_debug_redirects(False)
        browser.set_debug_http(False)

        url = "https://www.fureai-net.city.kawasaki.jp/reselve/k_index.do"
        browser.open(url)
        browser.select_form(name = "searchObjForm")
        browser.form.set_all_readonly(False)
        browser["rsvtyp"] = "1"
        browser.submit()

        browser.select_form(name = "searchObjForm")
        browser.form.set_all_readonly(False)
        browser["rsvptnflg"] = "1"
        browser.form.action = "https://www.fureai-net.city.kawasaki.jp/reselve/k_CtgSelInitial.do"
        browser.submit()

        browser.select_form(name = "searchObjForm")
        browser.form.set_all_readonly(False)
        browser["prptyp"] = "11"
        browser["startindex"] = "0"
        browser["prptypflg"] = "3"
        browser["prpmvflg"] = "0"
        browser.form.action = "https://www.fureai-net.city.kawasaki.jp/reselve/k_PrpCtgSelInitial.do"
        browser.submit()

        browser.select_form(name = "searchObjForm")
        browser.form.set_all_readonly(False)
        browser["prpcod"] = "0005"
        browser["startindex"] = "0"
        browser["prptypflg"] = "3"
        browser["prpmvflg"] = "0"
        browser.form.action = "https://www.fureai-net.city.kawasaki.jp/reselve/k_GovSelInitial.do"
        browser.submit()

        browser.select_form(name = "searchObjForm")
        browser.form.set_all_readonly(False)
        browser["facide"] = "0010309" # 富士見テニスコート
        browser["startindex"] = "0"
        browser.form.action = "https://www.fureai-net.city.kawasaki.jp/reselve/k_ObjSelInitial.do"
        browser.submit()

        browser.select_form(name = "searchObjForm")
        browser.form.set_all_readonly(False)
        browser["objide"] = "001030901" + sys.argv[1] # 富士見テニスコート1 末尾が01〜12にコート毎に変わる
        browser["objtyp"] = "1"
        browser["startindex"] = "0"
        browser.form.action = "https://www.fureai-net.city.kawasaki.jp/reselve/k_ObjRsvListInitial.do"
        browser.submit()
        print_schedule(browser.response())

        for x in xrange(6):
                browser.select_form(name = "searchObjForm")
                browser.form.set_all_readonly(False)
                browser["dateFlg"] = "2"
                browser.form.action = "https://www.fureai-net.city.kawasaki.jp/reselve/k_ObjRsvListInitial.do"
                browser.submit()
                print_schedule(browser.response())

def print_schedule(response):
        soup = BeautifulSoup(response)
        print soup.find('td', {'class': 'HEADINFO'}).string
        schedules = []
        for n in xrange(1, 8):
                schedule = {}
                d1 = soup.find(id='DAY' + str(n))
                values = [v for v in d1.find('div', {'class': 'DAYTX'}).findAll(text=True) if len(v) > 1]
                schedule['date'] = values[0].strip()
                schedule['day']  = values[1].strip()
                idx = 1
                for e in d1.findAll('td', {'class': 'KOMASTS4'}):
                        if e.find('img', {'title':u'申し込み期間外です'}):
                                schedule['t' + str(idx)] = '-'
                        elif e.find('img', {'title':u'予約できません'}):
                                schedule['t' + str(idx)] = 'x'
                        else:
                                schedule['t' + str(idx)] = 'o'
                        idx += 1
                schedules.append(schedule)

        for s in schedules:
                print s['date'], s['day'], s['t1'], s['t2'], s['t3'], s['t4']

if __name__ == "__main__":
        main()

実行例

場所は 富士見テニスコート の 富士見テニス場12 です。
5月26日 (日曜日) - - - -
5月27日 (月曜日) - - - -
5月28日 (火曜日) - - - -
5月29日 (水曜日) - - - -
5月30日 (木曜日) x x x x
5月31日 (金曜日) x o x x
6月1日 (土曜日) x x x x
場所は 富士見テニスコート の 富士見テニス場12 です。
6月2日 (日曜日) x x x x
6月3日 (月曜日) x x x x
6月4日 (火曜日) x o x x
6月5日 (水曜日) x x x x
6月6日 (木曜日) x x x x
6月7日 (金曜日) x x x x
6月8日 (土曜日) x x x x
場所は 富士見テニスコート の 富士見テニス場12 です。
6月9日 (日曜日) x x x x
6月10日 (月曜日) x x x x
6月11日 (火曜日) x x x x
6月12日 (水曜日) x x x x
6月13日 (木曜日) x x x x
6月14日 (金曜日) x x x x
6月15日 (土曜日) x x x x
場所は 富士見テニスコート の 富士見テニス場12 です。
6月16日 (日曜日) x x x x
6月17日 (月曜日) x x x x
6月18日 (火曜日) x x x x
6月19日 (水曜日) x o x x
6月20日 (木曜日) x x o x
6月21日 (金曜日) x x x o
6月22日 (土曜日) x x x x
場所は 富士見テニスコート の 富士見テニス場12 です。
6月23日 (日曜日) x x x x
6月24日 (月曜日) x x x x
6月25日 (火曜日) x x x x
6月26日 (水曜日) x x x x
6月27日 (木曜日) x x o x
6月28日 (金曜日) x x x x
6月29日 (土曜日) x x x x
場所は 富士見テニスコート の 富士見テニス場12 です。
6月30日 (日曜日) x x x x
7月1日 (月曜日) - - - -
7月2日 (火曜日) - - - -
7月3日 (水曜日) - - - -
7月4日 (木曜日) - - - -
7月5日 (金曜日) - - - -
7月6日 (土曜日) - - - -
場所は 富士見テニスコート の 富士見テニス場12 です。
7月7日 (日曜日) - - - -
7月8日 (月曜日) - - - -
7月9日 (火曜日) - - - -
7月10日 (水曜日) - - - -
7月11日 (木曜日) - - - -
7月12日 (金曜日) - - - -
7月13日 (土曜日) - - - -

※引数01がコート番号を受け取って富士見のコートの予約を6週分引っこ抜く
※ちなみに富士見のテニスコートの予約検索専用機

Kindle Paperwhiteの隠れた真価

それは「内蔵辞書」です。

というわけで、今回はKindle Paperwhiteの内蔵辞書について書こうと思います。
Kindle Paperwhiteには国語辞書の『大辞泉』や英和辞書の『プログレッシブ英和中辞典』が内蔵辞書として搭載されています。使い方はいたってシンプル。調べたい単語をタップするだけで単語の意味が表示されます。

この内蔵辞書は購入当初は僕自身は大して気に留めていませんでした。
が、以下のKindle本を読んでいてその真価に気づきました。
天地明察 上 (角川文庫) 天地明察 下 (角川文庫)

ご存知「天地明察」は江戸時代が舞台の天文学エンタメ作品です。
映画にもなりましたね。
舞台は江戸時代です。
つまり時代モノです。
江戸時代の偉人だったり、難しい単語などがよく出てます。

そんなときに内蔵辞書を使うことで、意味が分からない単語でも数秒で分かります(タップするだけだから)。歴史上の人物であれば略歴も分かるので、作品の人物像と史実の人物像を比べるなんてこともできます。数秒で。
この「数秒で」というのが非常に大事です。iPhoneアプリのKindleでも、知らない単語を選んでコピーしてSafari起動して検索すればいくらでも調べることは可能です。でもさすがに手間がかかりすぎて、分からない単語すべてでやるのかと聞かれると「NO」となります。

内蔵辞書はなくても読書に支障はないのですが、あれば読書の幅を拡げてくれます。小・中学生なんかであれば、読書しながらいろいろな単語の意味を知ることができます。また洋書でも意味の分からない単語を調べながら読むことができるので、洋書を読む心理的ハードルも下がります。単語の意味を知るということで、より多くの文章が自然に読めるようになってきます。

Amazonの「電子書籍端末を売っているのではなくて、快適な読書体験をサービスとして提供している」という謳い文句通り、この内蔵辞書は僕にとって新たな読書体験をもたらしてくれました。
おかげで一気に時代小説を読もうという気分になっています。

さしずめ「のぼうの城」あたりか。。。
のぼうの城 上 (小学館文庫) のぼうの城 下 (小学館文庫)

※ちなみに辞書機能はiPhoneアプリのKindleでも使えます(要ダウンロード)

Kindle Paperwhite でバグったときの対処法

知人のKindle Paperwhiteがバグって困ってたときの対処法をメモしておきます。

まずは不具合の事象は、「拡大表示モード」と言われるモードにした場合に「×」ボタンが効かなくなるということものです。読書モードに戻れないので、ページめくり・メニュー表示など「拡大/縮小」意外のアクションができずいわゆる「詰んだ」状態でした。

拡張表示モード
Kindle本の中には画像や図表の拡張表示を利用できるものもあり、移動と拡大の両方の操作が 可能です。画像や図表をダブルタップするか、長押しすると、拡大鏡アイコンが表示されます。 アイコンをタップすると拡張表示のモードに切り替わります。拡大するには、2本の指を閉じて 画面上においてから、押し広げるように動かします(ピンチイン)。縮小するには、2本の指を少し 離した状態で画面上におき、つまむように動かします(ピンチアウト)。拡大・縮小モードで見たい 箇所を表示するには、指を見たい方向に向かってドラッグしてください。読書モードに戻るには、 図表または画像の右上隅にあるX印をタップしてください。
Kindle Paperwhite ユーザーズガイドより)

初めは、画面のいろんなところをタップしたり、電源落としてもう一度起動したりしたのですが全てダメでした。で、ふと思いついてAmazonのKindleページを見に行くとありました「Kindle Paperwhiteトラブルシューティング」で、そこに書いてあった再起動を試すと不具合が解消されました。

具体的な再起動の方法は以下のようになります。
基本的なトラブルシューティング:Kindleを再起動する
端末を再起動することにより、画面のフリーズやコンテンツのダウンロードに関する問題などが解決する場合があります。

再起動しても、登録が解除されたり、コンテンツが削除されたりすることはありません。

端末を再起動する方法

ホーム画面で「メニュー」、「設定」の順にタップします
再度「「メニュー」をタップし、「再起動」をタップします
上記の方法で再起動できない場合は、電源ボタンを20秒間長押ししてください。電源ボタンを長押しすると、数秒後に画面が点滅しますが、そのまま電源ボタンを押し続けてください。しばらくするとスタート画面が表示されます。

Kindleの再起動には、数分かかる場合があります。


今回の事象だと、初めに書かれているソフトウェア的に再起動する手順は使えないので、後述の電源ボタンを20秒長押しという手順で対応しました。通常の電源落とす手順も電源ボタン長押しなので少し紛らわしい気もしますね。


「困った時の再起動」とはよく言った?もので、Windows以外でも通用するんだなぁと感心してしまいました。とはいえ、不足の事態になったときに再起動の方法を覚えておくと安心ですね。
(ユーザーズガイドに再起動の方法記載してありますけど、真面目に読む人少ないんじゃないかなぁと思います。。。)


シンプルだけども収納力たっぷりのボビーワゴンが届いた

PCデスク周りが散らかっていたので整理整頓用にボビーワゴンを購入。ボビーワゴンは棚数、トレー数が自由に組み合わせることができるキャビネットです。
購入したのは下の2段2トレーホワイト。
ボビーワゴン 2段2トレー (ジョエ コロンボ) ホワイト
ボビーワゴン 2段2トレー (ジョエ コロンボ) ホワイト
クチコミを見る


配送されてきた段ボールを開けてみると、驚くほど梱包がシンプルでした。上部4隅に緩衝剤、キャビネット全体を包むビニール、そして下部に少し大きめの緩衝剤とこの3つのみ。あとは薄い保証書・説明書が添えられていただけです。キャビネット自体も完成品がそのままの状態で届くので、組み立ての必要もありません。箱から出せばすぐに使えます。過剰包装だと梱包材を捨てるのが面倒なので、非常に好感がもてます。

届いてからは早速散らかっていたデスク周りを整理しました。WinノートPC、会社のノートPC、ScanSnapなどなど大きなものをボビーワゴンへ突っ込みます。あれだけスペースのなかったデスクの上に広大なスペースを取り戻すことができました!
Evernote Camera Roll 20121110 205340

キャビネットの天板には会社のノートPCが丁度いい感じにハマりました。アダプタは側面のポケットへ収納。当初天板に置くつもりだったScanSnapは残念ながらスペースが足らず、下の空きスペースへ。自炊用ノートPCも収納するつもりだったんですが、デスク上のスペースができたのでそちらに配置。その他小物たちをトレーに収納して整理整頓が完了です。
1つだけ残念なのは、トレーにA4サイズの書類が収まらないことです。A4が入る/入らないは結構重要だと思うので、ここは改善を期待したいところ。

あと購入前に「後からパーツ追加できる?」とお店の人に聞いてみたところ「できない」とのこと。工場(みたいなところ)で完成品に組み上げてから発送するようになってるということ。なので今から購入を検討される方は、何段何トレーが最適かよく考えることをオススメします(当たり前か)。

限られた筐体スペースにいくつもの収納があるので、自分のアイデア次第で整理整頓が工夫できそうです。移動用にローラーが付いてるので、デスク下に収めて必要な時に引き出すのも楽チン。お値段は高めですが、その分納得の一品です。

刑務所編遂に完結 - ウォーキング・デッド3 -

当初の予定からおよそ1ヶ月遅れで入手しました。
2回も発売延期てどゆことよアマゾンさん。
ウォーキング・デッド3
ウォーキング・デッド3
クチコミを見る


テレビドラマも絶好調な「ウォーキング・デッド」の原作コミット日本語訳の第3巻。
ゾンビ云々というよりも最早 人間VS人間 での弱肉強食の様相を呈してきています。
2巻ではウッドベリーの指導者「総統」に殺されかけながらも、なんとか仲間の待つ刑務所へ帰ってきた主人公リックたち。ウッドベリーの襲撃を恐れながらも再び平穏な時期を過ごす。グレンとマギーは結婚し、ローリはお腹の子を出産する。一方、ウッドベリーでは女剣士ミショーンに瀕死の重傷を負わされながらも一命を取り留めた総統が淡々とリックたちへの復讐の機会を狙っていた。。。

3巻のあらすじはこんな感じ。

当然のことながらまた仲間が一人二人と死んでしまう。それも作品中ではゾンビに噛まれての死者よりも人間同士の争いに起因することの方が多く描かれています。ドラマ版でもそうですが、ゾンビは完全に脇役で末期的な世界での人間同士のドラマが主眼ですね。仲間との別れと再会、そして新たな仲間との出会い。刑務所編は終わり、次なる舞台が始まるようですが、先の展開が早速が気になって仕方ありません。


それはそうとドラマと原作コミットだと登場人物や話の展開に差があります。例えばドラマで大活躍中のダリル(お兄ちゃんのメリルも)は原作コミットには登場しないし、ドラマで近未来的な研究所が出てきたけど、コミットではそれもなし(もしからしたら次の舞台とか?)。コミックとドラマとどちらも面白いし、二つの違いを比べるのも新たな楽しみになるので是非両方見るのをオススメします!

ウォーキング・デッド Blu-ray BOX
ウォーキング・デッド Blu-ray BOX
クチコミを見る

3300円でWindows 8入れてみた

Mac OS の価格破壊に吊られて、MSも低価格でのOS提供に踏み出しましたね。

Windows8はXP以降であればどのバージョンからでもアップデート可能ということです。しかも今の期間中は3300円という安さでそれが可能ということで、これは試すしかなかろうというわけです。というわけで、主に自炊用の作業マシンに成り下がったDELLのノートPCに話題の新OS Windows8をインストールしてみました。

先ずは更新前にマシンがWindows8に対応してるかなどをチェック。画面解像度が少し足りなかったり、タッチパネル非対応だったりとどうでもいい部分で不足はあったものの、メモリやCPUの性能は問題なし。アプリの対応状況も、自炊用のAcrobatとスキャンスナップは対応してたので問題なしと判断しました。

インストール開始してから暫く(といっても30分程度か)放ったらかしにしてたら、呆気なく完了。初期セットアップを済ませると、あのカラフルなタイル画面が。どうやらこのタイル画面がすべての起点となるよう。一瞬戸惑うけどもシンプルなUIに統一されているし、動きも軽快なので問題なし。従来通りのデスクトップも使用可能なので、タイルに慣れない人はこっちに逃げそう。ただ、デスクトップにも変更はあって、お馴染みのスタートメニューがないのだ。これまでのWindows8OSではすべてがこのスタートメニューから始まっていたので多くのユーザーはこれに戸惑いそう。僕も戸惑った。コンパネ何処?ってなった。
じゃれあってるうちに気づいたけど、どうやら古いWindows OSの情報は丸々残ってるみたい。Cドライブ直下の「Windows.old」て名前のフォルダがあって10Gbyteくらい食ってる。ググると、ディスククリーンアップで消せるとのこと。これで不要なゴミを一掃。清々しい気持ちで生まれ変わったWindowsマシンを使い始めることができた。

総評として、安価で最新OSにアップデートできる点。動作も予想より軽快な点。これまでに比べてユーザーフレンドリーになったタイルベースUI。これらの点で十分試す価値があると思う。家で眠ってるWindowsマシン(XP以降)があれば尚よし。

新OSの真価は何なのかは、ボチボチ触りながら探してみよう。

pogoplug mobileを3日使ってみた感想

既にいろんなトコロでレビューはされてますが、一応自分の感想など。

SoftBank パーソナルクラウド Pogoplug Mobile(SB-PG01-MBLE)
SoftBank パーソナルクラウド Pogoplug Mobile(SB-PG01-MBLE)
クチコミを見る


自宅にはiMac/Winノート/外付けHDDがある。外付けHDDはメインのiMacに繋げてるけど、たまにWinノートに繋げたくなる(またはその必要がでる)。このときにわざわざUSBケーブル外して/付けてってするのが面倒でイラっとする。ささいなことと言えばそうなんだけど、イラっとする。

これがpogoplug使うと、WinでもMacでもケーブルの付け替えなしで自由にアクセスできる。しかも外出先からでもアクセスできちゃう。

一番大きな理由はケーブルの付け替えがメンドイです。あまりクラウドストレージである必要はなかったんですが、面白そうだからということで購入に至りました。

pogoplugの特徴を列挙すると
  • セットアップが簡単
  • 自宅の外付けHDDやSDカードが外でも見れる
  • LAN内では普通の外付けHDDみたいに使える
  • ストレージは自由に交換可能(USB接続 or SDカード)
  • アクティベート後のインデックス作成処理が長い
  • 割と遅い。。。(LAN内でアクセスする場合でもサーバーを経由するから)


LAN内でのアクセスがもう少し早くなれば及第点ですね。まだ使い始めて数日ですが、感想としてはイマイチです。まあ普通にNAS買ったほうが安定してると思う。NAS持ってないけどコレとか。
BUFFALO 高速モデル NAS(ネットワークHDD) 2TB LS-V2.0TLJ
BUFFALO 高速モデル NAS(ネットワークHDD) 2TB LS-V2.0TLJ
クチコミを見る



(おまけ)
pogoplugでもopenpogoというものをインストールしsambaサーバー立てればLAN内アクセス時にNASとして動作するとのこと。

自分向けにopenpogo化+samba関連の情報をまとめとこう。
Pogoplug に OpenPogo をインストールしてみました〜
PogoplugをOpenPogo化する
Pogoplug MobileのOpenPogo化
動画
Twitterで見かけた情報http://twitter.com/#!/superdog_k/status/231075919920504832

余裕あればopenpogoってまた報告したいです。

アホアホゾンビ映画3選 - 君はゾンビに恋してる、東京残酷警察、吸血少女対少女フランケン -

最近見たアホアホなゾンビ映画3本をご紹介します。
君はゾンビに恋してる■ [DVD]
君はゾンビに恋してる■ [DVD]
クチコミを見る

内容は一番アホアホwww
ゾンビ大好きな女子高生が、根暗男子高校生を殺害・ゾンビ化しちゃうという話。ゾンビなのに意思を持っていて街の人とも触れあうし、CMのオファーも受けちゃう、サインもする。冷静に見るとつまんないで終わってしまいますが、アホなもんだと思ってみるとそれはそれで楽しめます。むしろ突っ込みどころを探して友達同士でゾンビトークで盛り上がるというのが正しい楽しみ方かと。
支離滅裂・ジャンル分け不能な逸品で、一度は見たらいいと思う。

東京残酷警察 [DVD]
東京残酷警察 [DVD]
クチコミを見る

民営化された警察と異能力者:エンジニアとの闘いを描く正当派なゴアシーン満載ホラー。
主役のおねーちゃんスタイルよくってムンムンと色気を出します。ホラーとエロの相性の良さって何だろね。見物はラストの戦闘シーン。ちょいちょい笑わせようとしてくるのが適度に脱力できてよかった。真面目なホラーってのもずっとだと疲れちゃうよね。

吸血少女対少女フランケン BLOOD STAINED EDITION [DVD]
吸血少女対少女フランケン BLOOD STAINED EDITION [DVD]
クチコミを見る

一番最近見た。内容は言わなくてもわかるよね。以上。
ただこれだけは言いたい。
「切り過ぎません動脈までは」
リストカット部部長の発言がツボったwww
主役よりも、脇役のほうが見ていて面白かった。
あと出演者が「東京残酷警察」と若干カブッてた。


3本をオススメ順で並べると、
1.君はゾンビに恋してる
2.東京残酷警察
3.吸血少女対少女フランケン
かな。
見た順もこの順だな。

あー、やっぱホラー映画はアホなのがいいわ。
すみませんゾンビ映画1本だけだった。。。

CodeSprint 2012 Japanに参加してみた

プログラミングコンテストのCodeSprintが6月9日土曜日に日本向けに開催
腕に自信があるプログラマーだったら今週の土曜日、6月9日の予定はCodeSprintにチャレンジするのもいいかもしれない。以前に紹介したInterviewstreetが開催するCodeSprintはプログラマーのスキルを競うプログラミングコンテストの大会で、いまでは毎週のように開催されている。ただ、その出題は英語で出されていた。しかし、日本向けに開催される今回の大会はグリーやジンガがスポンサーとなっていて、出題が日本語で提供されるんだそうだ。


というわけで前準備なしで、参戦してきました。
以前にTopCoderは少しだけかじったことがありましたが、英語で出題されるので問題の読解で力を使い果たしてしまうので気持ちが長続きせずに止めてしまいました。その点今回のCodeSprintであれば日本語で出題されるので安心!

と思ってましたが、考えが甘かった。。。

問題は全4問。各問題には難易度に応じて配点されており、提出したプログラムで規定のテストパターンをクリアできたかどうかで採点される。
僕の場合は一番難易度低い問題ですら満点とれず。。。どうしても効率的でなく、大量データをテストするパターンで時間が掛かりすぎていました。解法導き出せたとして、そこからが真のプログラミングコンテストスタートといった感じでした。
とにかく点数をとらなくてはと、次の問題に移っみましたが、こちらは解法すら導き出せず撃沈。あえなく1問目を満点とる作戦に変更するも、何度トライしてもパフォーマンスが悪い。。。
結局1問目が(たしか)8/20点のみが最終結果となりなんとも残念な結果に。

凹んだけども、自分の実力の再認識の場としては有意義だった。
アルゴリズムの勉強まじめにやろうかな。。。
アルゴリズムクイックリファレンス
アルゴリズムクイックリファレンス
クチコミを見る

SubversionからMercurialへの移行手順まとめ(Mac版)

最近Macを始めたこともあって、これを機に何か新しいことを始めようと思い立ちました。
そこで、前々から興味を持っていた分散リポジトリを扱おうと。
有名どころはGitだけど、天の邪鬼な僕はMercurialを選択。Pythonやってるし、無料でprivateリポジトリ作れるしいいよね。

さくらVPSに立てたSubversionリポジトリからBitbucketへの移行を試みました。が、Bitbucket備え付けの移行ツールではどうもダメだったので全て手動で移行させました。以下そのまとめです。

1.Mercurialインストール
何はともあれMercurialをインストールしないことには始まらない。
sudo port install mercurial

2.Subversionインストール
移行元のSubversionリポジトリにアクセスするために必要。
既にMacにはデフォルトでSubversion入ってますが、最新のを入れます。MacPortsで入れると、既存のやつが邪魔するのでググって退避なりします。
sudo port install subversion

3.SubversionのPython bindingsインストール
Mercurialの変換拡張機能を使うのにこれが必要になります。py27の部分は使用するPythonの実行環境に合わせてpy26なりpy25なりに読み替えてください。
sudo port install subversion-py27bindings

4.SVNリポジトリをMercurial用に変換
Mercurialに付属してくる変換拡張機能を有効にします。
.hgrcファイルを開いて以下を追加します。
[extensions]
hgext.convert = 
これを書いたらいざSVNリポジトリをMercurial用に変換かけます。以下のコマンドを実行してしばし待つ。
hg convert http://XXX.XXX.XXX.XXX/repos/hoge/
終了すると/hoge-hgのようなディレクトリができているはずです。
5.Mercurialリポジトリにpush
4.でできた変換後のファイルをリポジトリにpushしてしまえば完成です。
cd hoge-hg
hg push https://user@bitbucket.org/user/hoge


これで立派な分散リポジトリによる開発ができる!
分散する必要性はほぼゼロですが気にしない!
プロフィール
はてブ
カテゴリ
合わせて読みたい
あわせて読みたいブログパーツ
記事検索
Flickr
www.flickr.com
訪問者数

    ブログランキング
    人気ブログランキングへ
    RSS登録
    • ライブドアブログ