布団が俺を呼んでいる

丘山大一のぶろぐ

Windows Server に Git環境を構築 (GitBucket導入)

空いているパソコンサーバ(使わなくなったデスクトップPCにサーバOSを突っ込んだヤツ)があったので、
そこにGitBucketを入れてみました。
一応運用実績のあるサーバ=色々環境が入っているサーバ
ですので、下記手順で足りない・多いものがあってもご容赦ください。
OSはWIndows Server 2012 です。
また、ローカルイントラネットでの運用を想定しているのでセキュリティなどはとくに考慮していません(ホントはダメだよ!)

GitBucket のインストール

Javaで動作しているので、JREが必要です。
あたりで落としてきます。
WIndows Server でブラウザを開いて作業するのが面倒な場合は、先にクライアントマシンでファイル落としてからコピーするのが楽です。

つづいて、GitBucket本体です。
からwarファイルを落としてきます。
これを実行する形になるので、今後のことも考えそこそこの階層に配置することにします。
C:\GitBucket\gitbucket.war

配置はこれだけで完了。起動するコマンドは
java -jar C:\GitBucket\gitbucket.war
となります。適当なスクリプトを組んでおけば便利。
バッチファイルで実行した場合、DOS画面を閉じるとGitBucket自体も終了してしまうので、終了しないように。

この後、外部からアクセスできるようにするため、ポート8080を開けておきます。
ファイアウォールの受信の規則で、ポート指定で「8080」を開放します。

アクセス

インストールしたサーバ自身から参照するとき:「http://localhost:8080/」
外部クライアントマシンから参照するとき:「http://<IPアドレス>:8080/
初期ユーザは、root 
初期パスワードも root
のようです。

ユーザの追加

rootだけで運用するわけにはいかないので、ユーザを作ります。
ログイン後、画面右上のアイコンから「System administration」を選択。
画面左側から「User management」を選択。
ここでユーザとグループの追加・管理ができます。
使いそうな人はとりあえず登録してしまいましょう。

リポジトリの追加とこれ以後

リポジトリの追加は画面右上のアイコンの「New Repository」から。
サクッとカンタンにできます。
リポジトリの実態ですが、デフォルトでは
C:\Users\<ユーザ名>\.gitbucket
にできるようです。
保存先のドライブを変更する場合は、早めにやっておいた方がよさそうです。


独習Git

新品価格
¥3,542から
(2016/6/11 20:25時点)

コメントを書く

布団が俺を呼んでいる | 空文字を判定する最も効率のいいやり方は? (Delphi編)

布団が俺を呼んでいる

丘山大一のぶろぐ

空文字を判定する最も効率のいいやり方は? (Delphi編)

現在いるプロジェクトではDelphiなる言語を使っています。
んで、他の人のソースを読んでいると、空文字かどうかの判定の仕方には色んな書き方があるのだなあと思います。
代表的なのは、
(1) Result := s.IsEmpty;
(2) Result := s = '';
(3) Result := s.Length = 0;
(4) Result := s = EmptyStr;
等でしょうか。
ちなみに、私は基本的にIsEmptyメソッドをなるべく使う派です。
「''」と記述すると、後で読み返した時に
「これは本当に空文字で判定したいのだろうか?
 それとも実は半角スペースと比較するべきところを間違えてしまったのだろうか?」
等と疑わせてしまうこと、また本当にそのように間違える可能性が出てきてしまうためです。
 あとIsEmptyを使った方がコード上からカッコが減りやすいというのもある。IDEが貧弱なRadStudioではこれが割と重要。
 
さて、そうは言っても、「IsEmpty使おうぜ!」と主張しても使ってくれる人はなかなか増えません。
わざわざ書くのが面倒+間違いやすい「''」で書く人がほとんどです。

むう。何故だ。

と思っていると、MSDNの中で、(C#ですが)空文字判定方法について記述してある箇所を見つけました。
https://msdn.microsoft.com/ja-jp/library/ms182279.aspx?f=255&MSPPError=-2147217396
な、なるほど!
きっと速度差があるからみんな「''」を使うんだ!
理由があったんだね!

というわけで、それぞれの実行時間はどれくらいなのか。

2147483647 回ループを回してテストしてみました(適当な値をとるのが面倒だったので、Integer.MaxValue)。
以下、単位はミリ秒。
(1) IsEmpty
①37430
②37197
③37296
(2) 「''」
①36414
②36193
③36258
(3) Length
①40755
②40704
③40771
 
最速と最遅で比較すると、
(2) Result := s = '';
が最遅に比べ4578ミリ秒早いという結果になりました。
一回当たりおよそ
4578 / 2147483647 ≠
5000 / 2000000000 ≠
5 / 2000000 ≠ 0.0000025 ミリ秒早い。
ということになります。

おおー、なるほど、確かに早い。
なるほど、同じ結果が出るなら早い方を採用するのは理に適っている。
うん……正しい……
いや、たしかに正しいんだが……

全然変わんねえよ (´・ω・`)

実質0秒だよコレ。
これ以上速度を気にしなければならない要件なら、そもそもDelphi使わないわな。
それこそCとかアセンブラとか、もっと高速な言語を採用するわ。
やっぱり「''」と比較するコーディングは、昔から書いている人の単なる惰性な気がするなあ……。
一応、「早い」ということは分かったから、無暗にIsEmptyを進めるのは止めるけど……
やっぱり私はIsEmptyでいこう……。

※注意!
私の開発環境での結果+面倒だったのでデフォルト設定のDebugビルド結果です。
ロジックや書き方によってなんぼでも結果は変わることをお断りしておきます。



Delphi XE2プログラミング入門

新品価格
¥4,104から
(2016/1/18 20:58時点)

コメントを書く