2011年5月29日日曜日

git-upload-pack: not found のとき

自分でgitをインストールしたサーバーにレポジトリを作って、ローカルからgit+sshでcloneしたら怒られた。そんな時の対策。

現象
$ git clone ssh://username@server/~/myrepo.git
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

サーバーにログインして確認してみると、git-upload-packへのパスはちゃんと通っている。
$ which git-upload-pack
/home/username/local/bin/git-upload-pack

なぜ?
それは、ssh経由でログインした場合、PATHを.bashrcに設定したとしても読み込まれないのが原因。

対策A
--upload-packオプションで毎回指定する

git clone --upload-pack=/home/username/local/bin/git-upload-pack ssh://username@server/~/myrepo.git


対策B
git-configでサーバーのgit-upload-packのパスをconfigに書きこむ
git config remote.origin.uploadpack /home/username/local/bin/git-upload-pack

2011年5月22日日曜日

さくらのスタンダードプランでWebSocket

さくらインターネットのスタンダードプランで、WebSocketサーバーを実行してみたらうまく行った、という話。

使う物
  1. Ruby 最新版でいいだろう。

  2. RubyGems これも最新版でいいだろう。

  3. rev-websocket



手順
  1. node.jsのインストール → 失敗
  2. 定番WebSocketサーバーのnode.jsはport絡みのファイルの書き込み権限の問題で断念。
    きっとVPSならそんな心配はないのだろう。
  3. ローカルへのRubyのインストール

  4. $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.bz2
    $ tar jxvf ruby-1.9.2-p180.tar.bz2
    $ cd ruby-1.9.2-p180
    ホームディレクトリ直下のlocalにインストールする。
    $ ./configure --prefix=$HOME/local
    $ make
    $ make install

  5. インストールしたRubyへのパスを設定する

  6. .bash_profile(.bashrc派の人もいるかな)に以下を記述
    前略
    export PATH=$HOME/local/bin:$PATH

    $ . .bash_profile

  7. RubyGemsをインストール

  8. $ wget http://rubyforge.org/frs/download.php/74886/rubygems-1.8.3.tgz
    $ tar zxvf rubygems-1.8.3.tgz
    $ cd rubygems-1.8.3
    $ ruby setup.rb

  9. rev-websocketをインストール

  10. $ gem install rev-websocket


    以下は動作テスト。

  11. rev-websocketのサンプルを~/wwwにコピー

  12. $ cp -r ~/local/lib/ruby/gems/1.9.1/gems/rev-websocket-0.1.3/examples/public ~/www
    $ cd ~/www/public

    エディタでecho.htmlを開く
    WS_URL = "ws://localhost:8081"; を WS_URL = "ws://サーバーのホスト名:8081"; に修正

  13. rev-websocketのサンプルのechoサーバーを起動

  14. $ ruby ~/local/lib/ruby/gems/1.9.1/gems/rev-websocket-0.1.3/examples/echo.rb
    start on 0.0.0.0:8081

  15. Webブラウザーでrev-websocketのサンプルにアクセス

  16. http://ホスト名/public/echo.html
    こんな表示が出ればOKだ。
    server: Hello, world!
    client: hello
    Sun May 22 2011 09:41:40 GMT+0900 (JST)connecting to ws://ホスト名:8081...
    Sun May 22 2011 09:41:40 GMT+0900 (JST)connected.
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message sent: client: hello
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message received: server: Hello, world!
    Sun May 22 2011 09:41:40 GMT+0900 (JST)message received: client: hello
    Sun May 22 2011 10:17:32 GMT+0900 (JST)disconnected...


さて、何を作ろうか?

2011年2月24日木曜日

スウェーデンでTeliaのプリペイドSIMカードを使う


スウェーデンに行って、SIMロックフリーのNexus Oneに現地のキャリアTeliaのプリペイドSIMカードを買って使った時のメモ。

SIMカード自体はストックホルムのアーランダ空港にある売店で購入。
店番のおばちゃんにプリペイドSIMカード下さい、と言ったらいろいろあるけどどれがいい?と聞かれたので、一番メジャーそうなTeliaを選んだ。

金額はカード本体100SKRと50SKRのチャージ、合わせて150SKR。

APNは、Nexus Oneに刺してデフォルトAPNを選択にしたら勝手に設定された。
おばちゃん曰く、実際に使えるようにするには、レシートに記載されている*125*と#と14桁の番号に電話しろとの事。

結果的には、下記に電話すると通話が出来るようになった。
*125*XXXXXXXXXXXXXX# (XXXXXXXXXXXXXXはレシートに記載されていた14桁の番号)

この組み合わせがちゃんと理解してないと曲者。
上記のように*125*XXXXXXXXXXXXXX#の順序で連続して入力した番号に電話しなければいけないのだ。が、話を聞きそびれて、全て組み合わせてる必要があることが分からなかった。想像を働かせて個別に*125*とか14桁の番号とか#とかを間を置いてバラバラに入力してみたところ、この番号は使われていません的なアナウンスが流れるばかり。ホームページを見てもスウェーデン語は意味不明。

結局なんだかんだとやってるうちに正解を見つけるまでに3日もかかってしまった。
一旦繋がった後は地下鉄でもどこでも利用可能だった。この辺は日本より自由度が高い。
ただし連続したデータ転送を開始すると3GからすぐにEDGEになることから、帯域の連続使用時間がある程度を超えると速度制限がなされる模様。

料金の方はと言うと、Web見たりしまくっていたにもかかわらず消費したのは当初のチャージの範囲で20SKR程度で済んだ。

もし次回利用することがあれば、買ったらすぐに店内で設定するようにして分からなかったらすぐに店員に聞こうと思った。

Refillは Ladda med laddningscheck からが一番簡単っぽい。
残高確認は *120# に電話すると結果が返ってきて画面に表示される。


追記: レシートの画像をアップしました。赤丸の部分が14桁の番号が書かれている部分です。

2010年9月9日木曜日

特定の名前のファイルに含まれる特定の文字列を置換する


$ find . -name FILENAME -print0 | xargs -0 sed -i SUFFIX s/REGEXP/REPLACEMENT/


filenameにsuffixをつけてバックアップしながら置換する。


例えば、
$ find . -name foo.txt -print0 | xargs -0 sed -i .bak 's/ABC/DEF/g'

2010年7月9日金曜日

Xcodeで.dylibを.appに含める方法

Xcodeでのビルド時に、.dylibを.appに含めるには、次の通り。

左側「グループとファイル」ツリー→「ターゲット」→ターゲット名→「追加」→「新規ビルドフェーズ」→「新規スクリプトを実行」→「シェル」/bin/sh→「スクリプト」→
cp -f DIR/FILENAME.dylib "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/FILENAME.dylib"
install_name_tool -change ./FILENAME.dylib @executable_path/FILENAME.dylib "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME"

2010年4月22日木曜日

I felt a great nostalgia

Going straight home :-) Discovery will return to Florida Mond... on Twitpic
Going straight home :-) Discovery will return to Florida Monday morning.

2010年2月27日土曜日

Debian系パッケージ管理

インストールしたパッケージの再設定
# dpkg-reconfigure
Debianでのパッケージ管理コマンド一覧
dashをbashに切り替える時などに使う。

RedHat系のchkconfigのようなことをする

  • 方法1. update-rc.d
# update-rc.d
デフォルトでインストールされているコマンド。

# update-rc.d
name defaults
runlevel 2 3 4 5に起動リンクを追加。runlevel 0 1 6に停止リンクを追加

# update-rc.d
name remove
リンクを全て削除

  • 方法2. sysv-rc-conf
# sysv-rc-conf
メニューからインタラクティブに設定出来る。要追加インストール。

出典:
Linuxな生活
wps-B