ローカルネットワーク向けgit公開サーバ(HTTP)

HTTPを使ったローカルネットワーク環境でのgitリポジトリの公開方法についてまとめる。ローカルネットワーク向けなのでセキュリティやリポジトリへのアクセス速度は気にしないことにする。なお、以下の作業はDebian 7.1 (Wheezy)のインストールオプションに "Web server" を指定した場合を前提としている。
/etc/apache2/sites-enabled/000-defaultを見ると

DocumentRoot /var/www

となっているので、この下に公開用gitリポジトリを置くことにする。

まずはApacheWebDAVBASIC認証の設定を行う。/etc/apache2/conf.d/git.confを作成し、以下のように編集する。

<Location /git>
  Options -Indexes
  DAV on
  AuthType Basic
  AuthName "Git repository"
  AuthUserFile "/var/www/git/.gitusers"
  Require valid-user
</Location>

BASIC認証用のパスワードファイルを用意する。

# mkdir /var/www/git
# cd /var/www/git
# htpasswd -c .gitusers username(ユーザ名)

WebDAVを使えるようにするため、以下のコマンドを実行。

# a2enmod dav_fs
# a2enmod dav       # dav_fsだけでよいかも

Apacheを再起動する。

# service apache2 restart

webブラウザhttp://localdomain/gitにアクセスして正しく認証できることを確認する。
公開用のgitリポジトリを設置する。

# cd /var/www/git
# git clone --bare ~/hoge hoge.git
# cd hoge.git
# touch git-daemon-export-ok
# git update-server-info
# mv hooks/post-update.sample hooks/post-update
# chown -R www-data:www-data /var/www/git

以上で設置完了。クライアントからcloneできることを確認する。

$ git clone http://username@localdomain/git/hoge.git          # ユーザ名を指定する場合
$ git clone http://username:password@localdomain/git/hoge.git # ユーザ名:パスワードを指定する場合
$ 何か編集
$ git commit -m "comment on modification"
$ git push

Common Lisp

Emacsでカーソルポイントの前にあるS式をSLIME上のREPLに送るための設定

;;; Common lisp
(setq inferior-lisp-program "d:/bin/ccl/wx86cl64.exe")
(push (expand-file-name "~/script/elisp/site-lisp/slime-2012-09-26") load-path)
(require 'slime)
;(slime-setup '(slime-repl)) ; contribのREPLのみ設定
(slime-setup '(slime-fancy)) ; 大抵はslime-fancyを設定すれば十分
;(slime-setup '(slime-fancy slime-banner)) ; バナーもつける

;;; ポイントの前にあるS式をREPLに送る
(defun slime-send-sexp-to-repl (arg)
  (interactive "P")
  (let ((sexp (replace-regexp-in-string "^[\t\n ]+\\|[\t\n ]+$" "" 
					(slime-last-expression))))
    (set-buffer (slime-output-buffer))
    (unless (eq (current-buffer) (window-buffer))
      (pop-to-buffer (current-buffer) t))
    (goto-char (point-max))
    (insert sexp)
    (if arg (progn
	      (slime-repl-return)
	      (other-window 1)))))

(define-key lisp-mode-map "\C-ce" 
  '(lambda () (interactive) (slime-send-sexp-to-repl t)))

Android開発環境

OSはMicrosoft Windows 7とします。
必要なもの

JDKのインストール

http://www.oracle.com/technetwork/java/javase/downloads/index.html
からjdk-7u7-windows-x64.exeをダウンロードしてインストールします。
Android SDKのインストール時にJAVA_HOMEにJDKのインストールディレクトリが設定されている必要があるので、下記のように設定します。

JAVA_HOME=C:\Program Files\Java\jdk1.7.0_07

Android SDK(SDK Tools, Revision 20.0.3)

http://developer.android.com/sdk/index.html
の"Download the SDK for Windows"からinstaller_r20.0.3-windows.exeをダウンロードして実行します。
Android SDK ManagerでインストールするPackagesを選択します。ここではとりあえず最新版のAndroid 4.1 (API 16)に加えて実機での動作確認用にAndroid 2.3.3 (API 10)を選択しました。


また、Android 2.3.3のエミュレータを高速化するために、Intel Atom x86 System ImageとIntel Hardware Accelerated Execution Managerもインストールしておきます。これはC:\Program Files (x86)\Android\android-sdk\extras\intel\Hardware_Accelerated_Execution_ManagerにインストールされるのでIntelHaxm.exeを実行します。コマンドプロンプトから

sc query intelhaxm

を実行し、STATEがRUNNINGであればOKです。

Apatch Ant(1.8 or later)

コマンドラインでビルドできるようにするため、
http://ant.apache.org/
からapache-ant-1.8.4-bin.zipをダウンロードして適当なディレクトリに展開します。

環境変数PATHの設定

PATH=C:\Program Files (x86)\Android\android-sdk\platform-tools;C:\Program Files (x86)\Android\android-sdk\tools;D:\bin\apache-ant-1.8.4\bin

プロジェクトの作成

適当なディレクトリにて下記を実行します。

> android create project --target android-10 --name HelloWorld --activity HelloWorldActivity --path HelloWorld --package org.sample.HelloWorld

HelloWorldディレクトリが作成され、その中にソースコードとビルド環境が自動生成されます。

プログラムの作成

まずはとりあえずHello, worldを表示させることにします。src\org\sample\HelloWorld\HelloWorldActivity.javaを以下のように編集します。

package org.sample.HelloWorld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloWorldActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("Hello, world!");
        setContentView(tv);
//      setContentView(R.layout.main);
    }
}

ビルド

下記を実行してBUILD SUCCESSFULが表示されればビルド成功です。

ant debug

ビルドした結果はbin\HelloWorld-debug.apkに作成されるので、これをエミュレータにインストールして実行します。

仮想デバイスの作成

ADV(Android Virtual Device) Managerでエミュレータ上で動作させる仮想デバイスを作成します。Intel VT-xを利用してエミュレーションを高速化させるため、TargetはIntel Atom x86 System Imageを選択します。

Startで指定した仮想デバイスエミュレータが実行されます。

プログラムの実行

ADB(Android Debug Bridge)を使って仮想デバイスにプログラムをインストールします。

adb install .\bin\HelloWorld-debug.apk

エミュレータのLauncherにHelloWorldMainActivityが追加されます。Launcher上から実行してもいいですが、下記のようにadbコマンドから実行したほうが効率がいいです。

adb shell am start -n org.sample.HelloWorld/org.sample.HelloWorld.HelloWorldMainActivity

実行結果は次のようになります。

インストールしたプログラムはadbコマンドでアンインストールすることも可能です。

adb uninstall org.sample.HelloWorld

実行スクリプトの作成

ビルド、インストール、実行のサイクルを効率的に回すために一連のコマンドをスクリプト化すると便利です。以下はその一例です。

ant debug
adb uninstall org.sample.HelloWorld
adb install .\bin\HelloWorld-debug.apk
adb shell am start -n org.sample.HelloWorld/org.sample.HelloWorld.HelloWorldActivity

シフォンケーキ

いつもの喫茶店に行くと、今日はマーブルのシフォンケーキがありますよ、と女将さん。じゃあそれで、と。大きめにカットしましたよ、と差し出されたシフォンケーキは女将さんお手製のケーキらしい。

ブレンドコーヒー

昼。行きつけの喫茶店だが、お客がいつもより多くほぼ満席だった。天気がいいのも要因だろうか。お気に入りの窓辺の席は埋まっていたので、奥の中央の席を選ぶ。席につくと何も注文しなくても女将さんが「ブレンドでいい?」と言って持ってきてくれた。今度はもっと早く来て頂戴、と先日言われたばかりだが、今日も遅くなってしまった、なんてことを思いつつ本を広げる。

零の軌跡

ようやくクリアした。空の軌跡に続く本作は発売日が2010年9月30日。購入してから1年以上経過してしまったことになる。今ではその続編である碧の軌跡も出ており、新たな軌跡シリーズである那由多の軌跡も発表されている。簡単に言ってしまえばクロスベル警察の新米捜査官奮闘物語であるが、幾多の謎を残したままエンディングを迎えてしまい、ぶっちゃけクリア後の消化不良感満載である。多くの伏線は続編で回収されるとのことなので実質的には碧の軌跡とセットということになる。このあたり、さすがFalcomである。前作同様、サブクエストや実績集め、登場人物の細やかな会話の変化など、やりこみ要素も多く何度でも楽しめる作品になっている。
まあ、何が言いたいのかというと、要するにエリィのドレス姿が見れるだけでもこの作品をプレイする価値があるということである。
21:52。宮越屋珈琲