ももらぼっ!にっき


2003年06月20日

_ 徹夜。

・・・二日目。

仕事で徹夜って経験はあるが、二日間連続ってのは初体験。着替えたいよ〜〜。

_ あ。

とりあえずカテゴリ増やしてみた。過去分を全てチェックしなきゃいけないからカテゴリの追加はめんどくさい。日記仲間さん達*1のところみたいに、namazu導入した方がいいかもしれないな。

*1 お。全員のURLを覚えてしまったみたいだぞ。

本日のツッコミ(全2件) [ツッコミを入れる]

_ Orator [まさか、昨晩(土曜〜日曜)も徹夜してたんですか?(泣)]

_ 藤代千尋 [7/1 でしたが、どうでした?(^^;)]


2008年06月20日

_ [WM5][Tips] VB.NETで実行ファイル名を取得する。

普通のWindows用アプリとしてVB.NETを使う場合は、 My.Application.Infoあたりを使えば実行ファイル名が取得できたのですが、 Windows Mobile上の場合にどうすればよいか分からず悩んでしまいました。 (My.Applicationが無いんですよね…)

いろいろ試行錯誤したところ、ちょっと面倒ですが、以下のようにすることで実行ファイル名 (…というか、その拡張子を.xmlに変換したもの)を取得できました。

Private Function GetSettingFileName() As String
  Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
  Dim exePath As String = asm.ManifestModule.FullyQualifiedName
  Dim fileName As String = System.IO.Path.ChangeExtension(exePath, "xml")
  Return fileName
End Function

忘れないようにメモとして残しておきます。

_ [WM5][W-ZERO3] ConvUnit Ver.0.90 暫定リリース。

ハードコピー まだまったくドキュメントが無い状態ですが、とりあえず公開します。

これは、海外旅行に行ったときなどに、現地通貨と日本円を相互変換するために使ったりするソフトです。 画面を見てもらうと分かるとおり、直感的に使えるかなーと思っています。 レート登録画面のハードコピーが無いのですが、実際の為替額に合わせなくとも、3万円を$280に両替したよ、なんてことを登録しておけるので、実際に手元にある現地通貨が日本円でいくらの価値なのかが分かるのが強み…だと勝手に思ってます。 お金に限らず、ある単位と単位の相互変換が可能ですので、そのようなことを日常行っている人には重宝されるかな、と。

ずいぶん昔に作って、海外旅行のたびに役に立っていたのですが、レートの登録をXML直編集しないといけない、という万人にとって優しくないソフトだったのでそのまま放置されていました。 やっとこさ重い腰を上げて、レートの登録画面を作成したのでココに暫定ではありますが公開します。

おいおいドキュメント等を整備してVer.1.00とするつもりではいますが、いつになることやら…。

あ、.NET CF 2.0が必要ですので、別途インストールしておいてくださいね。

本日のツッコミ(全2件) [ツッコミを入れる]

_ APO [はじめまして。ショートカットの記事を見にきたら、欲しいなぁと思っていたレート変換ソフトがあったんでConvUnitい..]

_ ももたろ [ご利用いただきありがとうございますーm(_ _)m そうです。為替に限らず、メートル⇔インチの変換とかも設定さえすれ..]


2012年06月20日

_ [環境構築] Joe'sのVPSを借りてみた。

OSC2012 北海道に参加したらJoe'sのVPSを1年間無料で貸してくれるとのことで 早速申し込んでみました。 用途も何も考えてないのでアレですが、いろいろやってみたかった環境を 構築してみようと思っています。

_ [環境構築] gitoliteでgitサーバ環境を作成する

…というわけで、今後git環境を自力で構築する機会がありそうなので、 サーバもあることだしやってみることにしました。 google先生に聞いてみるとgitoliteを使うのが良いらしいので、 その環境作成について記録を残しておきます。

情報もそこそこあるし楽勝かと思ったんですが、最近gitoliteがメジャーバージョンアップした為か、 日本語で解説してくれているブログ等の手法が軒並み使えなかったので結構苦労しました…。

Git、Perl等のインストールについてはここでは割愛します。 適当にyumなりapt-getなりしてください。 また、今回はCentOS6.2で構築してますが、多分他のOSでも同じようにいける…はず。

gitolite用ユーザの作成

まずは、gitolite用のユーザを作成します。 githubにならってgitという名前にしてみました。

# useradd git

gitoliteのインストール

git cloneしてgitoliteをインストールします。

# cd /usr/local/src
# git clone git://github.com/sitaramc/gitolite
# gitolite/install -ln /usr/local/bin
# ls -l /usr/local/bin/gitolite
lrwxrwxrwx. 1 root root 36  6月 19 22:25 2012 /usr/local/bin/gitolite -> /usr/local/src/gitolite/src/gitolite

これで、/usr/local/binにgitoliteコマンドのシンボリックリンクが作成されます。 本体はcloneしたリポジトリ上のファイルなので、インストールしたからといって cloneしたリポジトリを消しちゃダメです。

管理者ユーザ用の公開鍵を配置

次に、管理用ユーザの公開鍵を見えるところに置きます。 その際のファイル名がそのまま管理者のユーザ名になるみたい。

admin$ scp ~/.ssh/id_rsa.pub gitserver:/tmp/admin.pub

公開鍵を作っていなければssh-keygenで適宜作成してくださいな。

gitoliteのセットアップ

作成したgitolite用ユーザにsuしてsetupすると、gitoliteの管理用リポジトリと テスト用リポジトリが作成されます。

# su - git
$ gitolite setup -pk /tmp/admin.pub
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one

公開鍵じゃない?

私の環境ではsetupのところで以下のようなエラーが出てしまってハマりました。

$ gitolite setup -pk /tmp/admin.pub
FATAL: errors found before logfile could be created
FATAL: die      '/tmp/admin.pub' does not seem to be a valid ssh pubkey file

admin.pubが公開鍵じゃないよって言われていて、 確かに、ssh-keygen -lがエラーを出してしまってます。

$ ssh-keygen -l -f /tmp/admin.pub
/tmp/admin.pub is not a public key file.

いろいろ悩んだ結果、ssh-keygenのバージョンが合ってないのかな? と予想を付け「sudo yum update」したら解決しました。 予想が合っていたのかどうかは定かではないが、解決したのでよしとしています。 SSH難しい。

テスト用リポジトリで動作確認

※ここからは、基本的にgitoliteを構築したサーバではなく、ローカルの環境で作業します。 プロンプトの前のadminとかmomotaroとかはユーザ名だと思ってください。

まずは、テスト用のリポジトリで動作確認してみます。

admin$ git clone git@gitserver:testing.git
Cloning into 'testing'...
warning: You appear to have cloned an empty repository.
admin$ cd testing
admin$ echo "Hello gitolite." > hello.txt
admin$ git add hello.txt
admin$ git commit -m"first commit"
[master (root-commit) e68732c] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt
admin$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 221 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitserver:testing.git
 * [new branch]      master -> master

うまく動いてるっぽいですね。

別のユーザを作成してみる。

管理者用のユーザでリポジトリの操作ができたので、 次は別のユーザを作成してみることにします。

まずは、管理用のリポジトリをcloneします。

admin$ git clone git@gitserver:gitolite-admin.git
Cloning into 'gitolite-admin'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
admin$ cd gitolite-admin
admin$ tree
.
├── conf
│     └── gitolite.conf
└── keydir
       └── admin.pub

2 directories, 3 files

keydir以下に<ユーザ名>.pubという名前で公開鍵を置いて commit&pushするとユーザが登録されます。

admin$ cp /home/momotaro/.ssh/id_rsa.pub keydir/momotaro.pub
admin$ git add keydir/momotaro.pub
admin$ git commit -m"add momotaro user"
admin$ git push origin master

で、このmomotaro.pubを使ってgit cloneやpushすると 無事に作成されていることがわかります。

momotaro$ git clone git@gitserver:testing.git
momotaro$ cd testing
momotaro$ ls
hello.txt
momotaro$ echo "add comment." >> hello.txt
momotaro$ git commit -am"second commit"
momotaro$ git push origin master

リポジトリを追加してみる。

リポジトリを追加するには、conf/gitolite.confを編集するようです。

admin$ vi conf/gitolite.conf
admin$ git diff
diff --git a/conf/gitolite.conf b/conf/gitolite.conf
index 007f160..e915cb0 100644
--- a/conf/gitolite.conf
+++ b/conf/gitolite.conf
@@ -3,3 +3,7 @@ repo gitolite-admin

 repo testing
     RW+     =   @all
+
+repo repotest
+    RW      =   admin
+    R       =   momotaro
admin$ git commit -am "add repotest repository"
admin$ git push origin master
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 428 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /home/git/repositories/repotest.git/
To git@gitserver:gitolite-admin.git
   eae3c06..37ce1c6  master -> master

push時のログからリポジトリが追加されていることが分かります。 また、ついでにユーザ毎のアクセスコントロールもしてみたので、 その辺の検証をしてみることにします。

admin$ git clone git@gitserver:repotest.git
admin$ cd repotest
admin$ echo "Hello repotest." > hello.txt
admin$ git add .
admin$ git commit -m"first commit"
admin$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 223 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitserver:repotest.git
 * [new branch]      master -> master

adminはRWなので、pushできていることが分かります。

momotaro$ git clone git@gitserver:repotest.git
momotaro$ cd repotest
momotaro$ cat hello.txt
Hello repotest.

momotaro$ echo "edit by momotaro" >> hello.txt
momotaro$ git commit -am "second commit"
momotaro$ git push origin master
FATAL: W any repotest momotaro DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

momotaroユーザはRなので、cloneはできてもpushはエラーになっています。 きちんと権限制御が働いていますね。すばらしい。

リポジトリを消してみる。

検証できたので最後にリポジトリを消してみます。 消す場合はconf/gitolite.confを編集するだけじゃダメっぽいです。

admin$ vi conf/gitolite.conf
admin$ git diff
diff --git a/conf/gitolite.conf b/conf/gitolite.conf
index e915cb0..007f160 100644
--- a/conf/gitolite.conf
+++ b/conf/gitolite.conf
@@ -3,7 +3,3 @@ repo gitolite-admin

 repo testing
     RW+     =   @all
-
-repo repotest
-    RW      =   admin
-    R       =   momotaro
admin$ git push origin master
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 369 bytes, done.
Total 4 (delta 1), reused 1 (delta 0)
remote: WARNING: split conf not set, gl-conf present for 'repotest'
remote: WARNING: split conf not set, gl-conf present for 'repotest'
remote: WARNING: split conf not set, gl-conf present for 'repotest'
remote: WARNING: split conf not set, gl-conf present for 'repotest'
To git@gitserver:gitolite-admin.git
   37ce1c6..055e2c7  master -> master

何やら不審なエラーが出てます。 gitoliteを構築したサーバにログインして手でリポジトリを消してやる 必要があるようでした。

admin$ ssh gitserver
$ su -
# su - git
$ rm -rf repositories/repotest.git

これで本当にいいかは不明です…。 よっぽどのことが無い限りリポジトリは消さない方がよさそうです。

本日のツッコミ(全2件) [ツッコミを入れる]

_ moata [can somebody please explain in english why am getting erro..]

_ とり [remote: WARNING: split conf not set, gl-conf present for '..]