「 2015年07月 」一覧

Gitリポジトリに巨大ファイルを追加してみる


Git リポジトリってバイナリファイルが苦手(ソースコード類に比べれば)という話と、巨大なバイナリファイルがまずいという話が効いたことがあっので確認してみました。

確認した環境は Windows 上の 1.9.5-preview20141217 版の git と tortoiseGit でです。以下の内容は特に git vs tortoiseGit で差が無かったので、本体の問題(仕様)だと思います。

  • 600M くらいのバイナリファイルを追加
  • 2GB弱のバイナリファイルを追加
  • 4GB弱のバイナリファイルを追加

これでどうなるか、見てみました。 続きを読む


Gitlab (7.13.1) のその他の項目確認


メールサーバーの設定

新規にローカルのユーザーを作成した際にはメールで通知がいくようで、それがないとそのユーザーはパスワードを設定できないようです。
そのためにもメールサーバーの設定は済ませておく必要がありそうです。

これもまた /etc/gitlab/gitlab.rb ファイルに設定があるので適当なエディタで開きます。すると以下のような行が見つかるので、この部分を編集していきます。

これらをざっくりと以下のような感じにします

各設定項目は、メールサーバーの状態に合わせて設定します。
問題がなければユーザーを作成したりグループを作成したりといったタイミングでメール通知が飛ぶようになるかと思われます。

自分の環境ではメールが確認できず苦戦しましたが、外部メールサーバーを使う前提でローカルの Postfix を停止させたところうまくメールが飛ぶようになりました。同じような現象に出遭っている人はもしかするとコレで改善するかもしれません。

リポジトリの一覧

GitBucket 導入後に、公開リポジトリの一覧が見れたらいいなと思っていたので、 GitLab ではどうか確認してみました。
ここでは適当に2ユーザーくらい作ってそれぞれにリポジトリを作ってみました。

サインインしない状態で一覧みることができるかも気になりましたが、以下の画面に示すリンクから飛べるようです。

gitlab-search-repo-1

そこから All Projects というメニューを選ぶと以下のように既にあるリポジトリをリストとして見ることが出来ました。この画面を見るとさらに検索が出来るようなので多くのリポジトリがあっても大丈夫そうに見えます。(あくまでプロジェクト名での検索の模様です)

gitlab-repos-list

グループでのリストの様子もうかがえますし、さすがに機能がそろっているなと感じました。

リポジトリの操作

リポジトリへのプッシュ種別

HTTP でも SSH でもプッシュが可能なようです。プロキシのこととか考えると、httpが対応してくれているのはありがたいですね

リポジトリのフォーク

ちゃんとforkして作業が出来るようでした。fork元がどのくらい fork されたのかを正しく把握するのは難しそうです。フォークされた数がわかるようです。また forkした側は、どこからフォークしたのかが表示として出てくるみたいです。

マージリクエスト

いわゆるGitHubのプルリクエスト相当の機能で、マージリクエストと呼ぶリクエストを出すことが出来ます。forkしたブランチで何かしらの実装を行い、それを fork 元にマージしてもらって本家に反映する、というフローをするために使われます。
 マージリクエストを出されると、ちゃんとメールで通知が行われました。GitBucket のときのリクエストはメールが飛ばないような感じだったので、こちらはちゃんと使えそうな印象です。


Gitlab (7.13.1) でユーザー認証に LDAP を使う


タイトルの通りですが、認証に LDAP というか Active Directory を使えるかどうかを試してみました。Enterprise Edition だと間違いなく LDAP の機能を備えているのですが、 Community Edition でもこの機能が使えるかどうかがとても気になりました。

LDAPを使うように設定する

WebUI の画面からは設定することが不可能でした。
そこで、設定ファイルを編集して LDAP 認証を有効化します。

/etc/gitlab/gitlab.rb ファイルがあるのでこれを適当なエディタで開きます。すると以下のような行が見つかるので、この部分を編集していきます。

先頭の # がコメントの意味なので必要な部分をコメントから外します。このとき、後続の EOS の行もコメントになっているので外します。忘れがちなので注意します。この部分を見ると GitLab は2つめの LDAP サーバーを設定できるようですね。
コメントを外したら各項目を設定します。

設定したら、 reconfigureを実行します。
# gitlab-ctl stop
# gitlab-ctl reconfigure
# gitlab-ctl start

Webブラウザでアクセスして、再びログイン画面を開いてみます。するとログイン入力する箇所で以下のように変更されているかと思います。つまりこの画面にならなかったら、まず LDAP が有効化されていないので、設定を見直す必要があります。

gitlab-signin-ldap-7_13_1

当たり前ですが、ログインユーザーの種別に応じたタブでサインインしないと認証が通らないようです。

まとめ

LDAP (Active Directory) が認証に使えることがわかり、やりたいことの1つがクリアできました。Enterprise版だけの機能かと内心思っていただけに使うことが出来てよかったです。


CentOS6.5 に Gitlab 7.13.1 をインストール


GitBucket にほしい機能があったのですが、 GitLab にはあるかなと思ったので久しぶりにインストールしてみることにしました。欲しい機能というのは、リポジトリの横断的な探索機能とか一覧機能とかです。メンバーで寄って集ってコードを置くような場所だと一覧や検索は欲しい機能です。

CentOS7ではあまりにシステム周りが変わっているようなので、手慣れている CentOS 6.5 でまずは試してみることにしました。
ちなみにインストールタイプは Minimal として設定しています。
定番の SELinux無効化 も行っておきます。

Gitの更新

CentOS 6.5 の yum で Git インストールすると今となっては古いバージョンなので比較的新しいバージョンを入れることにします。

新しい git のために、古い git でソースリポジトリを clone して make します

こんな感じでやろうとしたら git がまだ入っていなかったようなので、以下のようにしてもうまとめて実行(Minimalインストールだからだと思います)

これをやってから再び git の clone を実行してソース類を取得します。

なにやら途中でエラーが出たので、別のパッケージを追加

改めて make all を実行します。

インストールが終わったので古い方を削除

GitLab本体のインストール

昔は1つ1つ手作業でインストールおよび設定していて、大変な思いをした記憶がありますが、最近はパッケージ化されて随分とインストールしやすくなりました。公式のページにもその手順は書いてあるので、スムーズに入れることが出来ると思います。
以下の手順は公式ページのものほぼそのままだったりしますが、問題なくインストールすることが出来ました。

こんな感じとなります。回線がやや遅いようで、320M程度といってもそこそこの時間がかかります。

日本語化

日本語化パッチを作っている方がいらっしゃるのでそれも利用させてもらうことにしました。英語のまま使う場合にはこの手順は不要です。
現時点においては 7.9.4 までのバージョンに対応しているようなので、その範囲で日本語化を行えるような印象です。英語が直接コーディングされているようなので、バージョンが変更になるとうまく日本語化できない箇所も多くあるようです。

うまくパッチを当てられる部分だけあてるので、このあと Y や Enter 連打だったりします。

Gitlab起動

それでは以下のコマンドを実行して起動してみます。最初はそこそこ時間がかかります。

なんかエラーが出てしまったのですがもう1回実行してみます。

サーバーの IP アドレスをいれて最初の画面が出るか確認します。問題なければ以下のような画面が出ると思います。ここでデフォルト管理者のID/パスワードでログインします(この情報は公式ページを参照)

gitlab-home-7_13_1

gitlab-signin-7_13_1

まとめ。次回へ続く

長くなってきたので1回ここらで区切りとします。昔は大変だった GitLab のインストールも随分とやりやすくなりました。さすがにコンテナ1つ配備して終了できる GitBucket 並ではありませんが、手こずる部分はなくなったと言えると思います。
 次回は GitLab の操作や設定そのものをチェックしてみたいと思います。



AMD で DirectX12


先日 AMD のドライバも Windows10 正式ドライバが出たとのことで、別件での実験過程もあったので以前作成した DirectX12 のプログラムを実行させてみました。
新ドライバの方をAMDのサイトからダウンロード&インストールして、デバイスマネージャーで確認してみたところ、 Engineering Sample のメッセージが消えていました。 Windows Update で降ってくるドライバだとまだ残っていたようですが・・・。 続きを読む


OpenGL でデュアルディスプレイのフルスクリーン


なかなかやっている人も少ない OpenGL のフルスクリーンの話になります。さらにそれのデュアルディスプレイ版となるとほぼ皆無といっていい内容かと思います。ちなみに先日の Windows 10 では使えるのか?と試した話の延長です。

OpenGL では DirectX とは違い、それぞれの画面で OpenGL のコンテキストを作り、必要に応じてリソースを共有できるようにします。あとはコレを wglMakeCurrent で切り替えつつ描画を行う、といった感じで処理するので、別段難しいことはここにはないです。
フルスクリーン化するAPIは OpenGL にはないため、 Windows API で最前面で全画面をおおうウィンドウを作ります。

最大の問題点

OpenGL APIでフルスクリーン化する機能を備えていないため、 Windows API で何とかする感じになっています。つまりは OpenGL はフルスクリーンについて何も考慮をされていないといってもよいでしょう(言い過ぎかもしれませんが・・・)
試しに近年の Windows OS でこれらの挙動を確認してみました。以下に示すようにデバイスとOSと依存して使えない環境もあるようです。
(機材の関係で、環境をそろえることが出来なかったり、ばらばらだったりしますがご了承下さい)。

OS デバイス 判定
Windows7 Geforce650Ti OK
Windows8 Geforce750Ti NG
Windows8.1Update Geforce750Ti OK
Windows10(build10240) Geforce750Ti OK

ここでの使えないというのは、他方のウィンドウに描画される内容がとても低フレームレートになってしまい、なめらかな描画更新ができないという状況を意味しています。
そもそもそれぞれの画面内をクリックするような操作を行うと、一瞬おかしな映像が見えてしまったりするのですが・・・。
試したドライバは、現在の最新版 353.30 でした。NVIDIA というと OpenGL 対応を積極的に行っているメーカーのような印象があり、うまく動くと思っていただけに今回の件は残念でした。

続いて AMD (RADEON) で同じことを確認してみました。

OS デバイス 判定
Windows7 RADEON HD 7750 未チェック
Windows8 RADEON HD 7750(14.4) OK
Windows8.1Update RADEON HD 7750(14.4) OK
Windows10(build10240) RADEON HD 7750(15.7) OK

こちらの場合にはそれぞれの画面内をクリックするような操作を行っても、一瞬おかしな映像が見えたりしませんでした.

まとめ

OpenGL でデュアルディスプレイのフルスクリーン対応は Windows8 が例外的な動きをするようなので、難しそうです。もしかしたらいつか NVIDIA ドライバが更新されて正常に動くかもしれませんが、今となっては比較的古い Windows8 なので見込みは薄そうです。


Windows10 で OpenGL 使えるのか?


Windows10 の正式なリリースが間もなくとなってきました。この Windows10 で DirectX 12 が使えるようになるというのは、各所で語られていて有名な話ですが、それと対を成す OpenGL は生きてるんだろうかと思って、まずは軽く調べてみました。

opengl-capture-win10

軽くといいつつ、デュアルディスプレイでそれぞれにフルスクリーンとなる OpenGL アプリケーションを動かしてみました。上記の図は その時の様子を PrintScreen でキャプチャしたものです。本来は同じクリアカラーおよび同じような位置で三角形を書いているのですが、なんかおかしなことになっています。実際のモニターでは2つの画面でこのようなズレはないので、不思議なところです。
ちなみに、2つのディスプレイ解像度が違うため、アスペクト比がずれているので全く同じ絵にはなりません。

このときの OpenGL コンテキストの情報を出してみるとこんな感じでした。

今のドライバだと NVIDIA で OpenGL 4.5 が使用可能なようです。ドライバが入っていなくて、OpenGL のエミュレーションというかリファレンスドライバで動く、なんて状況ではなさそうです。

まとめ

とりあえず NVIDIA ドライバでは OpenGL はそのまま使えそうです。他の AMD や Intel のほうで DirectX12 & OpenGL が両方サポートされるかどうかは、徐々に調べてみようと思います。
それと、 PrintScreen ってこんな挙動だっけと不思議な部分があるので、Windows7, 8.1 あたりで同じだったかも調査してみたいと思います。

その他

OpenGL でフルスクリーンは調べるとよく出てくるのですが、そこ止まりで、複数ディスプレイで OpenGL をやっている例を見かけませんでした。相当マイナーな部分なのでしょうか。こうも事例が見つからないと、たまたま動いているだけ感を感じます。



タスクマネージャで32/64bit見分け方(Windows8以降


普段 Windows7 を使っているので、長らく気付きませんでした。 Windows8 以降ではタスクマネージャーで、プロセス名に *32 など付かないようです。そのため、プロセスが 32bit, 64bit なのかを見分ける際にどうするの?と気になったので調べてみました。

タスクマネージャーでは表示する列を選択することができます。 32bit, 64bit の区別も新たに別の列として昇格したようです。その列の名前は「プラットフォーム」。
ということで表示させるためには、列のタイトル部分で右クリックして、「列の選択」を選び、その中の「プラットフォーム」というものにチェックを入れれば OK です。また列自体はドラッグして順序入れ替えも可能なので、従来の見方に慣れている人はプロセス名の隣に持ってきた方が馴染むかと思います。

windows8_taskmgr

ちなみにこれは Windows10 でも同様でした( Build 10130 にて確認)。