プログラムを中心とした個人的なメモ用のブログです。
タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。
いい加減 Atom が重すぎるので Visual Studio Code に乗り換えました。
ちょっと前に Visual Studio Code を触ったときはまだバージョン 0.10.0 でしたが、いつのまにか 1.8.1 まで上がっていたんですね。
調べてみると PlantUML や reStructuredText のライブプレビューを行うプラグインとかも出ていたので、私としてはもはや Atom を使う理由はなくなりました。
こちらからダウンロードできます。
Windows の場合はウィザートに従うだけで簡単にインストールできました。
Jenkinsfile に書かれた処理を Pipeline で実行した場合、、スクリプトの中に許可されていないメソッド呼び出しがあると例外が発生します。
この場合、そのスクリプトは管理者による承認待ちの状態になるので、許可してやる必要があります。
「Jenkins の管理」 > 「In-process Script Approval」に承認待ちのメソッドが表示されるので、「Approve」をクリックして許可してあげます。
これで実行できるはずです。
と、ここまではググってみれば見つかる情報なのですが、私の場合、例外発生しても In-process Script Approval に何も表示されませんでした。
わかってしまえば当たり前なことなのですが、自分で例外を catch している場合は、In-process Script Approval の画面には表示されないようです。
この場合、一度 catch しないようにコードを変更してから実行し、スクリプトを許可した後でコードを元に戻しました。
Sphinx の sphinx_rtd_theme において、警告ディレクティブを使うとどのように出力されるのか並べてみました。
==================================== Sphinx Test ==================================== .. attention:: attention .. caution:: caution .. danger:: danger .. error:: error .. hint:: hint .. important:: important .. note:: note .. tip:: tip .. warning:: warning
Jenkins 2 の Pipeline 機能を使っていて、一応正常に完了しているのですが、ログを見ると以下の警告が表示されていました。
Using the ‘stage’ step without a block argument is deprecated
stage の書き方が正しくないようなので、以下のように修正したら直りました。
変更前のコード
stage "hoge" piyo()
変更前のコード
stage("hoge"){ piyo() }
各ブラウザのタブ幅は 8 がデフォルトなので、ブラウザ上でソースコードを見るととても見づらかったりします。
GitHub でタブ幅を変える方法はいろいろ見つかりますが、GitLab でタブ幅を変える方法は意外と少なかったので記事にしてみました。
GitLab 側の設定を変更することでタブ幅を変更することもできるようですが、タブというのはただのインデントで、その幅がどのくらいかは個人で好きなように設定できるべきだと思うので、ここではブラウザのアドオンで変更する方法について述べます。
私が使用しているブラウザは Firefox ですので、Firefox で説明していますが、CSS の書き方自体は他のブラウザのアドオンにも適用できると思います。
Firefox では Stylish というアドオンがあるので、これを使います。
アドオンをインストールしたら画面右上に Stylish のアイコンが表示されます。
アイコンをクリックし、「新しいスタイルを書く」からスタイルを作成します。
例えば、以下のようにスタイルを記述することで GitLab のタブ幅を変更できます。
@-moz-document url-prefix("http://example.com/") { code, .tab-content{ -moz-tab-size: 4 !important; -webkit-tab-size: 4 !important; -o-tab-size: 4 !important; tab-size: 4 !important; } }
書き方についての詳細はググってください。
code のタグはファイルを単体で表示したとき用に指定しています。
tab-content のクラスはマージリクエスト時など、ソースを差分表示したとき用に指定しています。
ここらへんは GitLab のページの HTML ソースを解析して割り出しましたが、もしかしたらもっと良い指定方法があるかもしれません。
※ Qiita にも投稿しています。
Jenkins 2 の Pipeline 機能を試してたのですが、bat
コマンドを実行するといつまで経っても処理が終了しないという状況になってしまいました。
環境は Windows 7 で、Jenkins のバージョンは 2.33 です。
何かのプラグインが悪さをしているのかと思い、いろいろ試してみましたが、一向に原因がわからず、かなりはまりました。
しかし、結局は Pipeline に付けた名前に日本語が含まれていることが原因という、しょうもないオチでしたとさ。
Jenkins 2 で追加された Pipeline の機能を使ってみようと思ったのですが、「新規ジョブ作成」を押しても Pipeline の項目がありません。
いろいろ悩みましたが、以下のようにして解決しました。
Jenkins 2 を新規インストールしたのではなく、1.6 系から 2.0 系にバージョンアップしていたのが原因ではないかと。
Jenkins はバージョンアップ後もいつでも元のバージョンに戻せるようになっているため、Jenkins 2 以降でしか使用できない Pipeline がインストールされていないのだろうと推測します。
手動で Pipeline をインストールします。
基本的にはこれで OK だと思うのですが、私の環境ではプラグインインストール時にエラーがでました。
Jenkins のバージョンが 2.26 だったのですが、2.32 がリリースされていたので、一度 Pipeline をアンインストールし、Jenkins アップグレード後に再度 Pipeline をインストールしました。
今のところこれで一応動いています。
Redmine のテキストが記述できる箇所(例えばチケットの説明など)において、記述内容によっては Redmine が Internal Error となったり、最悪 Redmine が落ちたりします。
バグっぽいので、現状では以下の記述を行わないように注意するしかありません。
もしこのような状況になってしまったら、該当のページは開かずに直接編集ページへ移動して修正します。
例えばチケットであれば、チケットの画面は開かずに、チケットの一覧画面で該当のチケットを右クリックして「編集」を選択すれば、編集画面を開くことができます。
以下にエラーとなったパターンを紹介します。
リンクテキストの後に URL を記述していなかった場合、エラーとなってしまいます。
[リンクテキスト]()
[リンクテキスト](http://hoge/)
Redmine ではメールアドレスを記述すると自動でリンクを作成してくれますが、以下のような記述をした場合、エラーとなってしまいます。
社員番号@example.com
社員番号+@example.com
Jenkins のジョブの設定内容を変更した際に、ビルドに失敗するようになってしまったときのために変更履歴を残しておくためのプラグインです。
これでサイドバーに「設定の変更履歴」が表示されるようになります。
Sphinx には only ディレクティブというのがあり、これを使用することで出力フォーマットに応じて処理を分けることができます。
これを使用し、以下のように出力フォーマットに応じて処理を分けてみます。
Sphinx のコードは以下のようになります。
.. only:: html .. image:: img/01.svg .. only:: latex .. image:: img/01.png .. image:: img/01_001.png .. image:: img/01_002.png
うーん、面倒ですね。
他にも AutoImage という拡張もあるのですが、出力フォーマットに応じて読み込む画像を変えるということはできなさそうでした。
PlantUML にはプリプロセッサの機能があり、C言語と同じように定数定義や ifdef などが使用できます。
これを使用し、以下のように出力フォーマットに応じて処理を分けてみます。
PlantUML のコード上では、以下のように定義します。
!define _PROJECT_NAME_ ProjectName
また、コマンドライン引数でも定数は定義できます。
> plantuml.jar -DPNG="png" hoge.puml
-D が定数定義するオプションで、その後に続く文字が定義する文字列です。
つまり、上記は以下の定義と同じ意味です。
!define PNG "png"
これで、上記のようにコマンドライン引数で定数を定義しつつ、PlantUML 内のコードに以下のように記述すれば、PNG で出力するときのみ画像が分割されることになります。
!ifdef PNG newpage !endif
Sphinx でドキュメントを作成する際、テーマを設定することができます。
デフォルトで用意されているテーマは一応全て試してみましたが、どれも気に入りませんでした。
なので、私はいつも Read the Docs のテーマ (sphinx_rtd_theme) を使用しています。
しかし、sphinx_rtd_theme にも気に入らない点がいくつかあります。
見出しのレベルによる違いが文字の大きさだけなので、どこが見出しの境目なのか分かりづらいと思います。
ちなみに Docker のドキュメントも sphinx_rtd_theme を使用していますが、こちらはカスタマイズされているようで、見出しにアンダーラインが引かれています。
これは分かりやすくなっていて良いと思います。
レスポンシブ対応のためか、sphinx_rtd_theme は PC のブラウザで閲覧したときに横幅が MAX まで広がりません。
PC でしか閲覧しないなら横幅 MAX まで広げたいところです。
レスポンシブ対応のためか、テーブルでセル内の文字数が多い場合に自動改行されず、横スクロールバーが表示されてしまいます。
こちらも PC でしか閲覧しないなら折り返して全体を表示してほしいところです。
これは sphinx_rtd_theme ではなく Sphinx の仕様ですが、テーブル作成時に widths 属性を設定しなかった場合、各カラムは等幅になります。
HTML 作成後に CSS を上書きするようにしてやります。
以下のような内容で _static/css/my_theme.css を作成します。
@import url("theme.css");
.wy-nav-content {
max-width: none;
}
h1,h2,h3,h4,h5,h6 {
border-bottom: 1px solid #ccc;
}
.wy-table-responsive table td, .wy-table-responsive table th {
white-space: normal;
}
colgroup {
display: none;
}
conf.py に以下の設定を追加します。
html_style = "css/my_theme.css"
以上で完了です。
C# で GitHub の特定のプロジェクトのリリースバージョンを取得するコードを書いてみました。
HTML は HtmlAgilityPack を使用してパースしています。
GitHub Gist ではソースコードのインデントをスペースにするかタブにするか、スペースの場合は何マス分かを設定できます。
しかし、エディタ上のソースコードを貼り付けた後で Indent mode と Indent size を変更して保存しても、もとのタブ幅に戻ってしまいます。
これ検索しても対処方法が全く見つからなかったのですが、皆さん困っていないのでしょうか?
それともコードスニペットにコードをコピーしてくるのが間違っているのでしょうか?
とりあえず試行錯誤の結果、解決方法が見つかったので載せておきます。
例として、エディタ上はインデントがタブのものを、GitHub Gist ではスペース4つ分に置き換えます。
これできちんとインデントの設定が反映されます。
ドキュメントを書いていると「詳細は以下を参照してください」という表現は多々必要になってくると思います。
これを英語で書くとするならば、とりあえずは以下のような感じですかね。
following ではなく below を使う表現もあるようです。
C# の命名規則に従ってプログラムを書いていると、クラス名とプロパティ名が同じになることが多いと思います。
例えばこんな感じです。
public Hoge Hoge { get; set; } = new Hoge();
これ、私はエラーになると思い込んでいたのですが、普通にコンパイル通るみたいです。
ちょっと驚きでした。
しかし、例外がありまして、クラス Hoge が内部クラスの場合はエラーになります。
つまり、プロパティ Hoge が定義されているクラスの内部でクラス Hoge が定義されている場合です。
この場合はどうすればいいんでしょかね。
WPF + MVVM でアプリケーションを作成していくにあたり、まずは View と ViewModel の関係について勉強してきました。
そして、いざ Model を実装しようとしたのですが、ネット上にあるサンプルプログラムなどを見てみると、 Model のインスタンスを ViewModel で作成しているのです。
私が最終的に作成したいと思っているアプリケーションは、複数の画面に同じ状態を表示したり、GUIなしで動作する場合もあるようなものなので、ViewModel で Model をインスタンス化するのはどうなんだろうと思いました。
んで、軽くググってみると同じような質問が teratail にありました。
このような場合、Singleton にするのが一般的なようです。
PlantUML のコードを Sphinx ドキュメントに埋め込むための方法です。
ただし、Atom を使用したプレビュー機能が使えなくなるので、微妙かもしれません。
easy_install sphinxcontrib-plantuml
conf.py に以下の設定を追加します。
plantuml.jar のパスは適宜変更してください。
# sphinxcontrib.plantuml モジュールを読み込む extensions = ['sphinxcontrib.plantuml'] # PlantUML の起動方法を設定する plantuml = 'java -jar BAT/plantuml.jar'
尚、他のモジュールを読み込んでいる場合は、以下のように記述します。
extensions = ['rst2pdf.pdfbuilder','sphinxcontrib.plantuml']
UML ディレクティブを使用して記述します。
.. uml:: Alice -> Bob: Hi! Alice <- Bob: How are you?
Sphinx で作成したドキュメントを latexpdfja を使用して PDF に出力する際にエラーが発生しました。
ちなみに HTML には正しく変換できています。
かなりはまってしまったのですが、結論としてはとても単純で、機種依存文字をを使用していたのが原因でした。
Latex 経由で PDF に変換するため、機種依存文字を使っていると失敗するようです。
さらに言えば、PlantUML を使用して図を作成していたのですが、その図中でも機種依存文字を使用し、SVG で出力していたため、それもエラーの原因でした。
Sphinx で作成するドキュメントに現在の日時を埋め込む方法です。
日時を埋め込みたい場所に |today| と書きます。
フォーマットの指定は conf.py に記述します。
例えば以下のような感じです。
today_fmt = '%Y/%m/%d %H:%M:%S'
Windows Embedded Standard 7 のイメージを SSD に書き込んで起動したところ、初期セットアップ時に以下のエラーが発生したことがありました。
Install Windows The computer restarted unexpectedly or encountered an unexpected error. Windows installation cannot proceed. To install Windows, click "OK" to restart the computer, and then restart the installation.
原因は不明ですが、再度イメージを SSD に書き込んだところ、正常に起動しました。
書き込み後のベリファイで何故異常にならなかったのか不思議でしたが、とりあえずイメージの書き込み失敗ということなのでしょうかね。
これでもダメなら次は SSD を交換する予定でした。
Redmine のフォーラムでウォッチしているのにメールが来なくておかしいなぁと思っていました。
チケット更新時にはちゃんとメールが来るので、メールの設定は正しく出来ています。
管理者メニューのメール通知の設定で、メール送信対象に「メッセージの追加」にチェックが入っていなかったことが原因です。
メッセージの追加ってなんやねんって思ってたのですが、「フォーラムのメッセージ追加」ということだったみたいです。
私は最初に猫でもわかるC#プログラミングという本でC#の勉強をしましたが、その中で唐突に Func やら Actionやらが登場し、ほとんど説明がなかったのでちんぷんかんぷんでした。
ネットで調べてやっとわかったのですが、ラムダ式を活用するためにも、ここらへんはしっかり説明しておいたほうがいいんじゃないかと思いました。
ラムダ式自体の説明は結構わかりやすかったんですけどね。
というわけで、ここに調べたことを自分なりにわかりやすくまとめておきます。
デリゲート自体の理解は C における関数ポインタと同じだと考えればすぐに理解できました。
ただ、関数ポインタもそうですが、デリゲートの宣言というのはとても面倒です。
そのため、型パラメーターを使用し、汎用的に使用できるデリゲートが最初からいくつか定義されているようです。
これらのデリゲートのことを、定義済みデリゲートというようです。
いろいろあるようですが、よく使用するのは Func と Action だと思います。
簡単に言えば、
となります。
どちらも引数の数に応じてオーバーロードされているようです。
詳細は参考URLを参照してください。
リーダブルコードを読むと書いてある以下の文章。
例えば、「ヒューリスティック」・「ブルートフォース」・「ナイーブソリューション」などがそうだ。コメントが長くてくどいと感じたら、こうした表現を使えないか確かめよう。
ヒューリスティックはコードコンプリートで何度も出てきましたし、ブルートフォースもよく聞きます。
しかし、ナイーブソリューションは初めて聞きました。
意味がわからなかったので検索してみると、日本語のページでは回答が見つかりませんでした。
仕方ないので、"naive solution" でググってみます。
英語苦手なんですけどね・・・。
いくつか見つけた中では、以下のページがそれっぽい回答でした。
「経験豊富なプログラマーが最初に思い付く解決手段」や「愚直な(安易な)解決手段」とでも言えばいいのでしょうか。
あまり自信がないので、原文を読まれたほうがよろしいかと思います。
ブログなどにソースコードを載せる際、GitHub Gist を利用するととても便利です。
ここでは GitHub Gist のコードのいろいろな埋め込み方法をまとめてみます。
ファイル名の最後に ?file=ファイル名 を追加すると、そのURLの中の特定のファイルだけを埋め込むことができます。
以前は1ファイルごとに New Gist から作成していたのですが、この方法を知ってからは出来る限りファイルをまとめて登録するようになりました。
しかし、デフォルトで出来るのはこれだけのようです。
その他の埋め込み方をするために gist-embed というのがあるようです。
これを使えば、例えば特定の行だけ埋め込んだり、ハイライトしたり、いろいろな埋め込み方ができます。
以下のページに使い方とサンプルがあります。
以下、個人的によく使うものを抜粋しておきます。
<code data-gist-id="ID"></code>
data-gist-file="ファイル名"
data-gist-hide-footer="true"
data-gist-line="2" data-gist-line="2-4" data-gist-line="1,3-4"
data-gist-highlight-line="1,3,5"
blockdiag シリーズはテキストからブロック図などの画像を生成する画像生成ツール群です。
以下の図が作成できます。
Windows の場合、Sphinx のスタンドアロン版があるので、それをインストールすると自動で blockdiag もインストールされるようです。
しかし、私の場合、Sphinx をインストールしても blockdiag が入っていませんでした。
なので、pip を使用してインストールを試みました。
※ Python のインストールと環境変数の設定が完了している必要があります。
$ pip install sphinxcontrib-actdiag sphinxcontrib-blockdiag sphinxcontrib-nwdiag sphinxcontrib-seqdiag
しかし、これも途中でエラーとなり失敗してしまいました。
仕方ないので、blockdiagの公式にある通り、easy_install を使用してインストールしました。
尚、Pillow が依存している「Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ」がインストールされていない場合は、そちらもインストールする必要があるようです。
32ビット版と64ビット版が存在するため、環境に合わせて適切なものをダウンロードし、インストールしてください。
$ easy_install pillow
$ easy_install actdiag blockdiag nwdiag seqdiag
これでインストールできました。
C#のデリゲートとイベントについて勉強していて、以下の疑問が残りました。
イベントってデリゲートと何が違うの?
event キーワードを付けることで何が変わるの?
猫でもわかるC#プログラミング 第3版という本を読んで勉強していたのですが、この点についてこの本では全く触れていません。
というわけで、ネットで調べていたら、丁寧に解説してくれている方がいました。
詳細な説明はそちらをみていただくとして、簡単にまとめると以下の2点のようです。
event キーワードを指定すると、加算代入演算子 += と減算代入演算子 -= しか使用できなくなります。
間違えて代入演算子を使用してしまい、それまでに追加したメソッドがクリアされてしまうのを防ぐことができます。
イベントハンドラはイベントが発生したときのみにコールして欲しいものです。
event キーワードを指定することで、直接デリゲートをコールできなくなります。
プロフィール画面などではちゃんとアイコン(アバター)が表示されているのに、コミットログでは表示されないことがあります。
これは、GitBucketのアカウントに登録してあるメールアドレスと、ローカルのGitのメールアドレスが異なっていることが原因です。
メールアドレスの設定を揃えることで解決します。
尚、これはGithubでも同様です。
Gitのメールアドレスは以下のコマンドで確認できます。
git config --global user.email
メールアドレスを設定する場合は以下のコマンドを入力します。
git config --global user.email hoge@example.com
Bitnami RedmineにEVM(Earned Value Management)の計算を行ってくれるプラグイン「redmine_issue_evm」をインストールします。
スタートメニュー->BitNami Redmine Stack->Use BitNami Redmine Stack でコマンドプロンプトを起動します。
「C:\BitNami\Redmine\apps\redmine\htdocs\plugins」に移動します。
※パスは環境に応じて適宜変更してください。
cd .\apps\redmine\htdocs\plugins
プラグインをダウンロードします。
git clone https://github.com/momibun926/redmine_issue_evm.git
「C:\Bitnami\redmine\apps\redmine\htdocs」に移動し、以下のコマンドを入力します。
bundle exec rake redmine:plugins:migrate NAME=redmine_issue_evm RAILS_ENV=production
Redmineを再起動すれば完了です。
テーマ「farend_basic」をインストールします。
スタートメニュー->BitNami Redmine Stack->Use BitNami Redmine Stack でコマンドプロンプトを起動します。
「C:\BitNami\Redmine\apps\redmine\htdocs」に移動します。
※パスは環境に応じて適宜変更してください。
cd .\apps\redmine\htdocs
テーマをダウンロードします。
git clone https://github.com/farend/redmine_theme_farend_basic.git public/themes/farend_basic
Redmineの管理画面からテーマを変更します。
テーマ「redmine-theme-flat」をインストールします。
スタートメニュー->BitNami Redmine Stack->Use BitNami Redmine Stack でコマンドプロンプトを起動します。
「C:\BitNami\Redmine\apps\redmine\htdocs」に移動します。
※パスは環境に応じて適宜変更してください。
cd .\apps\redmine\htdocs
テーマをダウンロードします。
git clone https://github.com/tsi/redmine-theme-flat.git public/themes/flat
Redmineの管理画面からテーマを変更します。
GitBucketでダウンロードしたZIPファイルを解凍すると、日本語のファイル名が文字化けしていました。
Cloneしたときは問題なかったのですが。
おそらくタグを作成したときに、ファイル名がUTF-8でエンコードされているため、この場合、Windows7の標準解凍昨日では文字化けしてしまいます。
Windows8以降であれば問題ないようです。
Windows7であっても修正プログラム(http://support.microsoft.com/kb/2704299/ja)を適用することで直ります。
適用後は再起動が必要です。
CentOSであるプログラムを実行しようとしたら下記のエラーが表示されました。
error while loading shared libraries: libstlport.so.5.2: cannot open shared object file: No such file or directory
libstlport.so.5.2がないようです。
これを解決するには、STLportをインストールする必要があります。
以下のサイトからRPMパッケージをダウンロードします。
http://rpm.pbone.net/index.php3/stat/4/idpl/11327304/com/STLport-.2.1-1.el5.pp.i386.rpm.html
ダウンロードしたら右クリックし、「パッケージインストーラで開く」を選択し、インストールします。
以上でOKです。
GitBucketのrootのパスワードを忘れてしまった場合、H2 Databaseを直接変更してパスワードを再設定する必要があるみたいです。
H2 Databaseなんて全く触ったことありませんが、がんばってみました。
Windows環境でのお話です。
H2 Databaseが必要となるので、公式サイトからダウンロードしてきます。
ダウンロードしたら、ウィザードに従ってインストールします。
データベースを操作するにはGitBucketを停止する必要があります。
今回の環境ではTomcatを使用してGitBucketを動作させているので、Tomcatを停止します。
GitBucketのデータの保存先はこちらを参照してください。
ここにある data.mv.db というファイルがデータベースのファイルのようです。
「スタートメニュー」→「H2」→「H2 Console」を起動します。
ブラウザが起動し、H2 Consoleの画面が表示されます。
以下のように入力して接続します。(※画像中のJDBC URLはダミーです。)
項目 | 値 |
---|---|
JDBC URL | jdbc:h2:C:/Windows/System32/config/systemprofile/.gitbucket/data |
User Name | sa |
Password | sa |
接続が完了したら、テキストエリアに SELECT * FROM ACCOUNT WHERE USER_NAME='root' と入力し、Run を押します。
SQL文が実行され、rootアカウントの情報が表示されます。
画面下部にあるEditボタンを押すとテーブルの編集ができます。
編集したい行(ここではrootアカウントの行)の鉛筆マークを押すと、その行の内容が編集できます。
パスワードを変更します。
注意点として、パスワードはSHA-1のハッシュ値を入力する必要があります。
ハッシュの計算はググればオンラインツールなどがいろいろあるので、検索してみてください。
編集が終わったらレ点のボタンを押すと変更が完了します。
画面左上にある以下のアイコンを押すと、データベースとの接続が解除されます。
接続を解除しておかないとGitBucketがデータベースに接続できません。
または、タスクトレイからH2 Consoleを終了してもOKです。
GitBucketを起動し、データベースの変更が反映されているか確認します。
Windows環境でGitBucketを動かしている場合、GitBucketのデータは以下の場所に保存されるようです。
C:\Users[ユーザー名].gitbucket
C:\Windows\System32\config\systemprofile\.gitbucket
Linux Mint 17.3にdocker-composeをインストールしてみました。
あらかじめDockerをインストールしておく必要があります。
curlがインストールされていない場合は以下のコマンドでインストールします。
$ sudo apt-get install curl
releaseを参考にdocker-composeをインストールします。
$ curl -L https://github.com/docker/compose/releases/download/1.7.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
書き込み権限がないという旨が表示された場合は、sudo -iを実行してからcurlを実行します。
今回は1.7.1のdocker-compose-Linux-x86_64をインストールしました。
$ sudo -i $ curl -L https://github.com/docker/compose/releases/download/1.7.1/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
実行権限を付与します。
$ chmod +x /usr/local/bin/docker-compose
インストール後の確認を行います。
$ docker-compose --version docker-compose version 1.7.1, build 0a9ab35
Dockerをインストールしてみて、とりあえず何かテストしてみたいと思い、GitBucketを動かしてみることにしました。
Dockerイメージはtakezoeさん本人が公開されているものを使用しました。
Docker HubからPullします。
$ docker pull takezoe/gitbucket
以下のコマンドを実行します。
$ docker run -d -p 8080:8080 takezoe/gitbucket
ブラウザから以下のURLにアクセスしてみます。
http://localhost:8080/
GitBucketの画面が表示されればOKです。
初めてDockerを使ってみたわけですが、正直感動しました。
会社のWindows7でGitBucketを動かしたとき、Java入れて、Tomcat入れて、Apacheの設定を変更して、ってやっていたのがたったコマンド2つで出来るなんて。
Dockerをインストールしていざ動かしてみると以下のエラーが表示されました。
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
現在のホストではDockerデーモンに接続できない(デーモンが起動していない?)みたいです。
この場合、sudoで実行すればOKみたいですが、毎回sudoするのも面倒です。
以下のコマンドにより、Dockerグループにユーザーを追加すると、Dockerのコマンドをsudoなしで使えるようになります。
$ sudo usermod -aG docker ユーザー名
このあと一度ログアウトして再度ログインすればOKです。
Linux Mint 17.3にDocker(docker-engine)をインストールしてみました。
Ubuntu 14.04と同様の手順みたいです。
まずはパッケージのデータベースをアップデートします。
$ sudo apt-get update
リポジトリの鍵を登録します。
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Dockerのリポジトリをパッケージリストに追加します。
テキストエディタで/etc/apt/sources.list.d/docker.listを開きます。
$ sudo gedit /etc/apt/sources.list.d/docker.list
ファイルを開いたら以下の一行を追加して保存します。
deb https://apt.dockerproject.org/repo ubuntu-trusty main
もし過去のパッケージがインストールされていたらpurgeします。
$ sudo apt-get purge lxc-docker
パッケージのデータベースをアップデートし、インストールします。
$ sudo apt-get update $ sudo apt-get install docker-engine
以下のコマンドを入力し、バージョンが正しく表示されていたらインストールできています。
$ docker version
最後に、Dockerグループにユーザーを追加し、Dockerのコマンドをsudoなしで使えるようにしておきます。
$ sudo usermod -aG docker ユーザー名
個人的によく使うAtomのショートカットキーです。
適宜更新していきます。
環境はCentOS 6.8です。
まずwinbindをインストールします。
$ sudo yum install samba-winbind
/etc/nsswitch.conf を編集し、wins を追加します。
$ sudo gedit /etc/nsswitch.conf
以下の行に
hosts: files dns
wins を追加します。
hosts: files wins dns
Windows PC に ping を打って確認します。
$ ping コンピューター名
Sphinxにデフォルトで組み込まれているテーマはどれもださいので、sphinx_rtd_themeをインストールします。
コマンドプロンプトから以下のコマンドを実行します。
pip install sphinx_rtd_theme
conf.pyを開き、html_themeの記述を以下に変更します。
import sphinx_rtd_theme html_theme = "sphinx_rtd_theme" html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
結構はまったのでメモ。
PowerShell ISEでF9を押すとブレークポイントが設定できるはずなのですが、何故か設定できませんでした。
ネットで検索しても、保存されていないスクリプトファイルにはブレークポイントは設定できないという内容は見つかるのですが、今回は既に保存されているスクリプトファイルです。
スクリプトファイルのあるパスに角括弧[]が含まれていることが原因でした。
PowerShellでは角括弧は正規表現で使用されるため、これがパスに含まれていると、PowerShell ISE自体が実行中のスクリプトファイルのパスを正しく判別できないようです。
そのため、ブレークポイントが設定できなくなっていました。
私が把握している限りでは、以下の場合にブレークポイントが設定できないようです。
長年マルチバイト環境でプログラミングしていたため、ちょっとはまってしまいました。
Windows環境でのお話です。
とりあえずTCHAR型を使用すればOKみたいです。
以下の2つが必要になります。
#include <tchar.h> #include <locale.h>
まずは以下のコマンドでロケールの設定を行っておかないと日本語が出力されません。
_tsetlocale(LC_ALL, _T("Japanese"));
詳細は参考URLを参照してもらえばわかると思いますが、strcpyやprintfなど、文字列操作系の関数は基本的に全て_t系の関数に代わります。
_Tで括る必要があります。
TCHAR hoge[] = _T("hogehoge);
Sphinxでは作成するドキュメント毎にプロジェクトを作成する必要があります。
まずは以下のコマンドを入力し、質問に答えながら雛形を作成します。
以下、「c:\work\sphinx\test」をワークエリアとした場合の例です。
c:\work\sphinx\test>sphinx-quickstart
以下のメッセージが表示されます。
Welcome to the Sphinx 1.4.1 quickstart utility. Please enter values for the following settings (just press Enter to accept a default value, if one is given in brackets). Enter the root path for documentation. > Root path for the documentation [.]:
既にワークエリアにいるため、何も入力せずEnterを押します。
You have two options for placing the build directory for Sphinx output. Either, you use a directory "_build" within the root path, or you separate "source" and "build" directories within the root path. > Separate source and build directories (y/n) [n]:
ソースとビルド結果のフォルダを分けるかどうか聞かれています。
デフォルトのままでいいと思うので、何も入力せずEnterを押します。
Inside the root directory, two more directories will be created; "_templates" for custom HTML templates and "_static" for custom stylesheets and other static files. You can enter another prefix (such as ".") to replace the underscore. > Name prefix for templates and static dir [_]:
テンプレートや静的フォルダのプレフィックスについて聞かれています。
デフォルトのままでいいと思うので、何も入力せずEnterを押します。
The project name will occur in several places in the built documentation. > Project name: learning
プロジェクト名です。
これは必ず入力する必要がありますので、入力してEnterを押します。
> Author name(s): yourname
作成者です。
これも必ず入力する必要がありますので、入力してEnterを押します。
Sphinx has the notion of a "version" and a "release" for the software. Each version can have multiple releases. For example, for Python the version is something like 2.5 or 3.0, while the release is something like 2.5.1 or 3.0a1. If you don't need this dual structure, just set both to the same value. > Project version: 0.1
プロジェクトのバージョン番号です。
これも必ず入力する必要がありますので、入力してEnterを押します。
> Project release [0.1]:
リリース番号です。
バージョン番号と同じでよければ、何も入力せずEnterキーを押します。
If the documents are to be written in a language other than English, you can select a language here by its language code. Sphinx will then translate text that it generates into that language. For a list of supported codes, see http://sphinx-doc.org/config.html#confval-language. > Project language [en]: ja
言語の設定です。
「ja」と入力してEnterキーを押します。
※これ以降は全て何も入力せずにEnterを押していけばOKです。
The file name suffix for source files. Commonly, this is either ".txt" or ".rst". Only files with this suffix are considered documents. > Source file suffix [.rst]: One document is special in that it is considered the top node of the "contents tree", that is, it is the root of the hierarchical structure of the documents. Normally, this is "index", but if your "index" document is a custom template, you can also set this to another filename. > Name of your master document (without suffix) [index]: Sphinx can also add configuration for epub output: > Do you want to use the epub builder (y/n) [n]: Please indicate if you want to use one of the following Sphinx extensions: > autodoc: automatically insert docstrings from modules (y/n) [n]: > doctest: automatically test code snippets in doctest blocks (y/n) [n]: > intersphinx: link between Sphinx documentation of different projects (y/n) [n]: > todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: > coverage: checks for documentation coverage (y/n) [n]: > imgmath: include math, rendered as PNG or SVG images (y/n) [n]: > mathjax: include math, rendered in the browser by MathJax (y/n) [n]: > ifconfig: conditional inclusion of content based on config values (y/n) [n]: > viewcode: include links to the source code of documented Python objects (y/n)[n]: > githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]: A Makefile and a Windows command file can be generated for you so that you only have to run e.g. `make html' instead of invoking sphinx-build directly. > Create Makefile? (y/n) [y]: > Create Windows command file? (y/n) [y]:
全ての入力が完了すると、以下の画面が表示されます。
Creating file .\conf.py. Creating file .\index.rst. Creating file .\Makefile. Creating file .\make.bat. Finished: An initial directory structure has been created. You should now populate your master file .\index.rst and create other documentation source files. Use the Makefile to build the docs, like so: make builder where "builder" is one of the supported builders, e.g. html, latex or linkcheck.
私がAtomにインストールしているプラグインです。
Atomに限った話ではありませんが、私は基本的にカスタマイズはしたくありません。
というか、カスタマイズしなくても使いやすいことが洗練されたアプリだといえるのではないかと考えています。
とはいっても、やはりデフォルトだといろいろ使いづらいところもあるので、最低限のカスタマイズくらいは行っています。
ファイルアイコンをカラフルなものに変更してくれます。
メニューバーなどを日本語化してくれます。
PlantUMLのテキストをハイライト表示してくれます。
reStructuredTextのテキストをハイライト表示してくれます。
PlantUMLのプレビューを表示してくれます。
PlantUMLのプレビューを表示してくれます。
reStructuredTextのプレビューを表示してくれます。
別途pandocをインストールしておく必要があります。
全角スペースを可視化してくれます。
Windows7の視覚効果は結構重いみたいで、グラフィック描画機能の貧弱なPCではパフォーマンスに影響がでます。
そんなときは無駄な視覚効果を無効にしてみましょう。
パフォーマンスが改善されるかもしれません。
スタートメニュー→「コンピュータ」→「システムのプロパティ」→「システムの詳細設定」からパフォーマンスの欄の設定ボタンを押します。
「視覚効果」タブでカスタムを選択し、不要な項目のチェックを外し、適用を押します。
個人的には必要なのは以下の4つだけでした。
項目 | 理由 |
---|---|
ウィンドウとボタンに視覚スタイルを使用する | Windows7として最低限の外観を保つため。 クラシックのデザインはあまり好きではありません。 |
スクリーンフォントの縁を滑らかにする | フォントがギザギザになり見づらいので。 |
デスクトップコンポジションを有効にする | 重なりあっているウィンドウを切り替えたときに画面が乱れるため。 |
デスクトップのアイコン名に影を付ける | 壁紙によっては影がないと見づらいため。 |
SphinxとはPython製のドキュメント作成ツールです。
reStructuredTextという軽量マークアップ言語で記述し、HTMLやPDFに出力できます。
通常の方法だと、Sphinxの前にPythonをインストールし、環境変数の設定などを行うなどの準備が必要なので面倒です。
しかし、Windowsの場合はそれを全て一つにパッケージしたインストーラーがあるので、それを使用すると楽です。
インストーラーは以下のページからダウンロードできます。
インストール自体はウィザードに従って行うだけなので、特に問題ないと思います。
システム環境変数 Path に以下2つを設定します。
C:\Program Files\Sphinx\python; C:\Program Files\Sphinx\python\Scripts;
以下を実行してそれっぽく動いたらsphinxはインストールOKです。
sphinx-quickstart
pythonの環境変数が正しく設定されているか確認するため以下を実行します。
それっぽく動いたらOKです。
python
python拡張用のコマンドpipが動くかも確認します。
それっぽく動いたらOKです。
pip
最近、WMICというコマンドを使ってシステムに関する様々な情報を取得できることを知りました。
参考URLの記事を参考にして次のコマンドを入力してみたところ
WMIC PATH Win32_PerfFormattedData_PerfProc_Process GET /FORMAT:LIST
以下のようなエラーが表示されました。
エラー: 説明 =
原因不明です・・・。
ネットで検索しても全く情報が見つかりませんでした・・・。
Windows版のAtomにおいて、ファイルを右クリックしたときに表示される「Open with Atom」を選択しても、アプリケーションが見つからずにファイルを開くことができませんでした。
その修正方法です。
レジストリのatom.exeへのパスが変更されていないことが原因でした。
これで右クリックメニューの「Open with Atom」からアプリケーションを起動することはできるようになりました。
しかし、「Open with Atom」の横に表示されているAtomのアイコンは直りませんでした。
そこで、一旦Atomをアンインストールし、再度インストールし直すと直りました。
テキストエディタのAtomのWindows環境へのインストールと設定手順です。
個人的には重くてあまり好きではないのですが、PlantUMLを使うときなど一部の用途では便利なため使用しています。
以下のサイトからダウンロードしてインストールします。
Atom
社内などのプロキシ環境下ではプロキシサーバーの設定を行わないとプラグインのインストールなどが行えません。
コマンドプロンプトを開き、以下のコマンドで設定を行います。
apm config set https-proxy http://example.com:8080 apm config set http-proxy http://example.com:8080
タスクバーとスタートボタンの表示と非表示を切り替えるプログラムです。
Windows XPまではスタートボタンはタスクバーの中にあったため、タスクバーを非表示にしたらスタートボタンも消えていましたが、Windows Vista以降では、スタートボタンはタスクバーの中ではなくデスクトップに移動していたため、別途処理してやる必要があります。
尚、スタートボタンを消していてもキーボードのWindowsボタンからスタートメニューを表示することはできるため、それも非表示にしたい場合は"DV2ControlHost"も非表示にします。
個人的によく使うVisual Studioのショートカットキーです。
適宜更新していきます。
Findメソッドで検索したときに、画面の表示上には一致するセルがあるはずなのに見つからないということがありました。
これは、Findメソッドの引数で、「LookIn」を省略していたのが原因でした。
検索対象のセルには数式が入力されていため、「数式そのもの」を検索するのか、「数式の計算結果=表示されている値」を検索するのかで、結果が変わります。
今回は「数式の計算結果=表示されている値」を検索したかったのですが、引数の「LookIn」を省略していたため、デフォルトの設定である「数式そのもの」を検索し、一致するセルが見つからないという結果になっていました。
Windows Embedded Standard 7を使用した製品を開発中に、ある時点からスクリーンキーボードの起動がとても遅くなってしまいました。
通常2、3秒で起動するところが、30秒ほどかかるようになってしまいました。
ネットで検索しても、英語キーボードと日本語キーボードの違いくらいしか見つかりません。
その時に、何が原因か追求した時のお話です。
まずは、その重くなった前後で何をしたかです。
私の場合、DISMを使用してパッケージの追加を行いました。(具体的にはPremium Codecsのパッケージを追加)
ですので、これに原因があるであろうことは容易に想像できました。
しかし、具体的に何が悪かったのはわかりません。
まずはリソースモニターなどでCPUの使用率などを見てみますが、まだまだ余裕があったので、処理に負荷がかかっているわけではなさそうです。
次に疑ったのが、パッケージの追加により追加されたサービスが影響しているのでないかということです。
というわけで、パッケージを追加する前と後で、実行中のサービスを比較し、パッケージ追加後に追加されたサービスを調べました。
サービスの表示は、「ファイル名を指定して実行」より「msconfig」と打ち、「サービス」のタブより確認できます。
この結果、パッケージ追加後に追加されたサービスは以下の4つでした。
そして、この4つのサービスを停止させると、スクリーンキーボードの起動が早くなったので、この中のどれかが原因であることがわかりました。
あとは1つずつ停止させて確認するだけです。
結論を言うと、「WinHTTP Web Proxy Auto-Discovery Service」が原因でした。
内容を見ても停止させても問題なさそうなので、これを停止させることで解決です。
各サービスの解説は以下のサイトを参考にさせていただきました。
尚、上記のサイトを参考にすると、「Application Experience」以外は不要そうなので、結局3つ停止しました。
これはあくまで私の例であり、実際の状況は様々だと思いますが、何か起動に時間がかかるようになったアプリケーションがある場合に、何が原因かを探る際の参考になればと思います。
デザインテンプレートを変更した際などに紛失しては困るので、私のサイトでのカスタマイズ部分を記録しておきます。
「HTMLの編集」で、</head>の直前に挿入します。
USB起動ディスクを作成するにあたり、まずはUSBメモリの初期化を行う手順です。
環境:Windows7 Professional 32bit
コマンドプロンプトを開き、以下のコマンドを入力します。
diskpart
ディスクの一覧を表示します。
DISKPART> list disk ディスク 状態 サイズ 空き ダイナ GPT ### ミック ------------ ------------- ------- ------- --- --- ディスク 0 オンライン 232 GB 0 B ディスク 1 メディアなし 0 B 0 B ディスク 2 メディアなし 0 B 0 B ディスク 3 メディアなし 0 B 0 B ディスク 4 メディアなし 0 B 0 B ディスク 5 メディアなし 0 B 0 B ディスク 6 オンライン 14 GB 0 B
USBメモリのディスクを選択します。(この場合はディスク6がUSBメモリ)
DISKPART> select disk 6 ディスク 6 が選択されました。
ディスクをクリーンな状態にします。
DISKPART> clean DiskPart はディスクを正常にクリーンな状態にしました。
パーティションを作成します。
DISKPART> create partition primary DiskPart は指定したパーティションの作成に成功しました。
パーティションをアクティブにします。
DISKPART> active DiskPart は現在のパーティションをアクティブとしてマークしました。
フォーマットします。
※FAT32では4GBを超えるデータを1つのファイルとして扱えないので、今回はファイルシステムをNTFSとしています。
※普通にフォーマットすると時間がかかるので、クイックフォーマットにしています。
※ラベルは適当なものをつけてください。
DISKPART> format fs=ntfs quick label=WES7 100% 完了しました DiskPart は、ボリュームのフォーマットを完了しました。
終了します。
DISKPART> exit DiskPart を終了しています...
いろいろ方法はあるみたいですが、nmapを使用するのが一番簡単そうです。
nmapがインストールされていない場合はインストールします。
$ sudo apt-get install nmap
例えば、192.168.0.0/24の機器を調べたい場合は以下のコマンドを打ちます。
sudo nmap -sP 192.168.0.0/24
GWを利用してプログラミングの本を一冊読みたいなと思い、以前からちゃんと基礎から勉強しようと思っていたC#の勉強のため、「猫でもわかるC#プログラミング」という本を買って読んでいます。
本の内容についてはまだ読み終わってないので書きませんが、読んでいるといろいろ疑問点が沸いてくるため、自分なりにコードを打って確認したり、ネットでいろいろ調べたりしながら読み進めています。
そこでふと思ったのですが、それでわかったことをどこかにメモでもしておかないと、また後で同じことを調べるはめになったりして困るよなぁと。
でも本と別のところにメモしても、それを探す手間があるし、付箋とかは貼りたくない。
というわけで、本に直接書き込みを行うことにしました。
今まで学校の教科書以外に本に書き込みを行ったことがないので、ちょっと抵抗がありましたが、ネットで調べてみるといろいろメリットがありそうですね。
本なんて売ってもほとんど金にならないので、開き直ってどんどん書き込みしていってます。
C#を勉強するために Visual Studio Express 2015 for Windows Desktop をインストールしてみました。
しかし、「Microsoft NuGet - Visual Studio Express 2015 for Windows Desktop」で「パッケージの実行は失敗しました」というエラーが出てしまいました。
OSはWindows 10 Home 64bitです。
再インストールしても同じ。
一応普通に使えますが、NuGetが必要になったときに困りそうなので、どうにかして解決したいのですが・・・。
ちなみに会社のPC(Windows 7 Professional 32bit)では何もエラーが表示されず正常にインストールできました。
以下からインストーラーをダウンロードして実行します。
https://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx
VC2015を起動するexeは以下になります。
ちょっとわかりづらかったので一応書いておきます。
C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\WDExpress.exe
Bitnami RedmineをインストールしたらApacheとRubyもインストールされるので、Webサーバーとして使用できます。
ここではRubyをCGIプログラムとして動作するように設定を行います。
もはやBitnami Redmineは関係ありません。
Apacheのお話です。
Windows 7 Professional 32bit
Bitnami Redmine v2.6.7
「C:\Bitnami\redmine-2.6.7-0\apache2\conf」にあるhttpd.confを編集します。
まずはアクセス許可に関する設定を行います。
<Directory "設定したいフォルダのパス"> # .htaccessを有効にする(無効にする場合はNoneを指定) AllowOverride All # CGIの実行を許可 Options +ExecCGI # アクセス許可(許可しない場合はdeniedを指定) # ※Apache v2.3以降ではこの書き方に変わったらしい Require all granted </Directory>
次に、index.rbをデフォルトのファイルとして認識できるようにします。
以下の箇所を探します。
<IfModule> DirectoryIndex index.html index.php </IfModule>
以下のようにindex.rbを追加します。
<IfModule> DirectoryIndex index.html index.php index.rb </IfModule>
最後に、拡張子がrbのファイルをCGIプログラムとして扱うように設定します。
以下の箇所を探します。
#AddHandler cgi-script .cgi
このコメントアウトを解除し(#を消す)、以下のように.rbを追加します。
AddHandler cgi-script .cgi .rb
以上でApacheの設定は完了です。
変更を保存してApacheを再起動させて下さい。
拡張子rbのファイルの先頭に以下を記述する必要があります。
(-Kuは文字コードに関するオプションです。)
#!C:\Bitnami\redmine-2.6.7-0\ruby\bin\ruby.exe -Ku
しかし、全てのファイルに上記の記述をすると、パスが変わった場合などに大変なので、環境変数を設定しておくと良いかもしれません。
環境変数Pathに以下の設定を追加します。(他の値を消さないように注意してください。)
※Windows7の場合、環境変数の設定は「コンピュータ」→「システムのプロパティ」→「システムの詳細設定」→「環境変数」で行います。
C:\Bitnami\redmine-2.6.7-0\ruby\bin
これで拡張子rbのファイルの先頭に記述する内容は以下で済むようになります。
#!ruby -Ku
Bitnami RedmineをインストールするとApacheもインストールされるので、そのままWebサーバーとしても使用できるようになります。
ドキュメントルートは「C:\Bitnami\redmine-2.6.7-0\apache2\htdocs」で、ここが「http://localhost/」となります。
※インストール先によって異なります。
Apacheの設定などは「C:\Bitnami\redmine-2.6.7-0\apache2\conf」にあるhttpd.confを編集します。
あとは普通のApacheと同じです。
以下のサイトからダウンロードしてきます。
https://git-for-windows.github.io/
基本的にはウィザードに従ってインストールするだけですが、改行コードだけは自動変換しないように、「Checkout as-is, commit as-is」を選んでおきます。
インストール先はデフォルトのままでいいと思います。「Next」を押します。
コンポーネントを選択し、「Next」を押します。(後で書きます)
スタートメニューへの登録はデフォルトのままでいいと思います。「Next」を押します。
環境パスに関する設定です。
「Use Git from the Windows Command Prompt」を選択して「Next」を押します。
改行コードに関する設定です。
改行コードをGitで自動変換されるといろいろ面倒なことになりかねないので、「Checkout as-is, commit as-is」を選択して「Next」を押します。
ターミナルに関する設定です。
特にこだわりがなければデフォルトのまま「Next」を押します。
拡張オプションに関する設定です。
そのまま「Next」を押します。
一応以下のサイトの説明がわかりやすかったので参照してみてください。
参考にさせていただいたサイト
GitBucketを3.10から3.13にバージョンアップしてみました。
基本的にはgitbucket.warを差し替えるだけです。
Githubから最新版のgitbucket.warファイルをダウンロードします。
https://github.com/gitbucket/gitbucket/releases
GitBucketをTomcatで動作させているため、まずはTomcatを停止します。
「スタートメニュー」→「Apache Tomcat 9.0 Tomcat9」→「Configure Tomcat」を起動し、「Stop」をクリックします。
GitBucketをサービスとして実行している場合、リポジトリを含むGitBucketのデータは以下に保存されていますので、一応バックアップしておきます。
C:\Windows\System32\config\systemprofile\.gitbucket
「C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps」にあるgitbucket.warファイルを最新のものに差し替えます。
Tomcatを再開します。
「スタートメニュー」→「Apache Tomcat 9.0 Tomcat9」→「Configure Tomcat」を起動し、「Start」をクリックします。
GitBucketをWindows7にインストールしてみました。
Bitnami RedmineをインストールしているとApacheもインストールされているので、ApacheとTomcatを連携させて、Windowsサービスとして実行しています。
以下のサイトを参考にさせていただきました。
GitBucketはJAVAで動作するので、JREが必要です。
以下のサイトからダウンロードしてインストールを行います。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
以下のページから最新版のWindowsインストーラーをダウンロードします。
http://tomcat.apache.org/download-90.cgi
基本的にはウィザードに従ってインストールするだけです。
http://localhost:8080/にアクセスできればインストールは成功です。
Apache経由でAJPプロトコルでアクセスするための設定を行います。
まずはmod_proxy_ajpモジュールを有効化するため、httpd.confに設定されているmod_proxy_ajpモジュールの設定を有効にします(コメントアウトの削除)。
httpd.confはBitnami Redmineの場合は「C:\Bitnami\redmine\apache2\conf」にあります。
httpd.confの以下の行の#を消します。
#LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
次に、httpd.confにmod_proxy_ajpモジュールの設定ファイルを参照するパスを記載します。
今回は「C:\Bitnami\redmine\apache2\conf\extra」ディレクトリ配下に「gitbucket.conf」ファイルを設置しました。
httpd.confの一番下に以下の行を追加します。
Include conf/extra/gitbucket.conf
続いて、gitbucket.confに以下の転送ルールを記述します。
「http://[コンピュータ名]/gitbucket」にアクセスしたら、「Tomcatのdocsディレクトリ」配下に転送されることを表します。
8009は、Tomcat側の連携コネクタのポート番号です。
環境に応じて適宜変更してください。
<Location /gitbucket/ > ProxyPass ajp://[コンピュータ名]:8009/gitbucket/ </Location>
ポート番号が8009になっていることを確認します。
Tomcatのインストールディレクトリにある「conf\server.xml」を開き、以下の記述になっているかどうかを確認します。
Tomcatのデフォルトのインストール先は「C:\Program Files\Apache Software Foundation\Tomcat 9.0」でした。
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
また、Apache経由でアクセスするため、Tomcatのデフォルトのポート番号8080が有効になっている場合は、コメントアウトし無効にします。
<!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> <!-- A "Connector" using the shared thread pool--> <!-- <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -->
Githubから最新版のgitbucket.warファイルをダウンロードします。
https://github.com/gitbucket/gitbucket/releases
Tomcatのインストールフォルダの「webapps」フォルダにgitbucketのwarファイルを置きます。
Tomcatのデフォルトのインストール先は「C:\Program Files\Apache Software Foundation\Tomcat 9.0」でした。
「スタートメニュー」→「Apache Tomcat 9.0 Tomcat9」→「Configure Tomcat」を起動し、「Start」をクリックします。
尚、Tomcatが起動すると、webappsフォルダ内にgitbucketというフォルダが自動で作成されます。
Bitnami Redmineの場合は、以下からApacheの再起動ができます。
「スタートメニュー」→「Bitnami Redmine Stack」→「Bitnami Redmine Stack Manager Tool」
「http://[コンピュータ名]/gitbucket/」にアクセスし、GitBucketの画面が表示されれば成功です。
会社で使用しているWindows7のPCで、Firefoxをバージョンアップして45.0にしたら、1日最低1回はOSごとフリーズするようになってしまいました。
1~2分くらい待つと復旧するのですが、アドオンを無効にしたりしても直らず、調べてみても原因がよくわかりません。
そういう場合は以下のサイトより、Firefoxのリフレッシュを行ってみると良いかもしれません。
https://support.mozilla.org/ja/kb/refresh-firefox-reset-add-ons-and-settings
リフレッシュを行うと設定やアドオンなどは初期化されてしまいます。
でもまぁSyncを使用して同期していればすぐに元に戻せると思います。
追記
リフレッシュしてもフリーズする現象は直りませんでした(><)
Bitnami Redmineにredmine_maintenanceをインストールします。
スタートメニュー->BitNami Redmine Stack->Use BitNami Redmine Stack でコマンドプロンプトを起動します。
「C:\BitNami\Redmine\apps\redmine\htdocs\plugins」に移動します。
※パスは環境に応じて適宜変更してください。
cd .\apps\redmine\htdocs\plugins
プラグインをダウンロードします。
git clone https://github.com/ameya86/redmine_maintenance.git
Redmineを再起動すれば完了です。