プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2016/12/28

Page で MahApps.Metro を使用する

event_note

2016/12/21

Visual Studio Code のダウンロードとインストール

event_note

いい加減 Atom が重すぎるので Visual Studio Code に乗り換えました。

ちょっと前に Visual Studio Code を触ったときはまだバージョン 0.10.0 でしたが、いつのまにか 1.8.1 まで上がっていたんですね。
調べてみると PlantUML や reStructuredText のライブプレビューを行うプラグインとかも出ていたので、私としてはもはや Atom を使う理由はなくなりました。

ダウンロードとインストール

こちらからダウンロードできます。
Windows の場合はウィザートに従うだけで簡単にインストールできました。

2016/12/20

Jenkins 2 の Pipeline で例外が発生しても "In-process Script Approval" に何も表示されない

event_note

Jenkinsfile に書かれた処理を Pipeline で実行した場合、、スクリプトの中に許可されていないメソッド呼び出しがあると例外が発生します。
この場合、そのスクリプトは管理者による承認待ちの状態になるので、許可してやる必要があります。
「Jenkins の管理」 > 「In-process Script Approval」に承認待ちのメソッドが表示されるので、「Approve」をクリックして許可してあげます。
これで実行できるはずです。

と、ここまではググってみれば見つかる情報なのですが、私の場合、例外発生しても In-process Script Approval に何も表示されませんでした。
わかってしまえば当たり前なことなのですが、自分で例外を catch している場合は、In-process Script Approval の画面には表示されないようです。
この場合、一度 catch しないようにコードを変更してから実行し、スクリプトを許可した後でコードを元に戻しました。

参考URL

2016/12/09

sphinx_rtd_theme の警告ディレクティブがどんな感じが並べてみた

event_note

Sphinx の sphinx_rtd_theme において、警告ディレクティブを使うとどのように出力されるのか並べてみました。

====================================
Sphinx Test
====================================

.. attention::
  attention

.. caution::
  caution

.. danger::
  danger

.. error::
  error

.. hint::
  hint

.. important::
  important

.. note::
  note

.. tip::
  tip

.. warning::
  warning

2016/12/02

Jenkins 2 の Pipeline で "Using the ‘stage’ step without a block argument is deprecated" が表示される

event_note

Jenkins 2 の Pipeline 機能を使っていて、一応正常に完了しているのですが、ログを見ると以下の警告が表示されていました。

Using the ‘stage’ step without a block argument is deprecated

stage の書き方が正しくないようなので、以下のように修正したら直りました。

変更前のコード

stage "hoge"
piyo()

変更前のコード

stage("hoge"){
    piyo()
}

参考URL

2016/11/30

GitLab のソースコードのタブ幅をブラウザのアドオンで変更する

event_note

各ブラウザのタブ幅は 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 ソースを解析して割り出しましたが、もしかしたらもっと良い指定方法があるかもしれません。

参考URL

Qiita にも投稿しています。

2016/11/24

Jenkins 2 の Pipeline でバッチ処理がいつまで経っても終了しない

event_note

Jenkins 2 の Pipeline 機能を試してたのですが、bat コマンドを実行するといつまで経っても処理が終了しないという状況になってしまいました。
環境は Windows 7 で、Jenkins のバージョンは 2.33 です。
何かのプラグインが悪さをしているのかと思い、いろいろ試してみましたが、一向に原因がわからず、かなりはまりました。
しかし、結局は Pipeline に付けた名前に日本語が含まれていることが原因という、しょうもないオチでしたとさ。

2016/11/18

Jenkins 2 に Pipeline が表示されない

event_note

Jenkins 2 で追加された Pipeline の機能を使ってみようと思ったのですが、「新規ジョブ作成」を押しても Pipeline の項目がありません。
いろいろ悩みましたが、以下のようにして解決しました。

原因

Jenkins 2 を新規インストールしたのではなく、1.6 系から 2.0 系にバージョンアップしていたのが原因ではないかと。
Jenkins はバージョンアップ後もいつでも元のバージョンに戻せるようになっているため、Jenkins 2 以降でしか使用できない Pipeline がインストールされていないのだろうと推測します。

解決方法

手動で Pipeline をインストールします。

  1. [Jenkinsの管理]>[プラグインの管理]を選択します。
  2. 「利用可能」タブを選択し、「Pipeline」で検索します。
  3. 「Pipeline」というプラグインが表示されるので、チェックを入れてインストールします。

基本的にはこれで OK だと思うのですが、私の環境ではプラグインインストール時にエラーがでました。
Jenkins のバージョンが 2.26 だったのですが、2.32 がリリースされていたので、一度 Pipeline をアンインストールし、Jenkins アップグレード後に再度 Pipeline をインストールしました。
今のところこれで一応動いています。

2016/11/17

Redmine が落ちる

event_note

環境

  • Windows 7
  • Bitnami Redmine 3.3.0
  • テキストの書式は Markdown を使用

現象

Redmine のテキストが記述できる箇所(例えばチケットの説明など)において、記述内容によっては Redmine が Internal Error となったり、最悪 Redmine が落ちたりします。
バグっぽいので、現状では以下の記述を行わないように注意するしかありません。
もしこのような状況になってしまったら、該当のページは開かずに直接編集ページへ移動して修正します。
例えばチケットであれば、チケットの画面は開かずに、チケットの一覧画面で該当のチケットを右クリックして「編集」を選択すれば、編集画面を開くことができます。

以下にエラーとなったパターンを紹介します。

外部リンクの記述

リンクテキストの後に URL を記述していなかった場合、エラーとなってしまいます。

  • NGパターン
    [リンクテキスト]()
  • OKパターン
    [リンクテキスト](http://hoge/)

メールアドレスの記述

Redmine ではメールアドレスを記述すると自動でリンクを作成してくれますが、以下のような記述をした場合、エラーとなってしまいます。

  • NGパターン
    社員番号@example.com
  • OKパターン(エラーにはならないが、リンクも貼られない)
    社員番号+@example.com

2016/11/16

Jenkins のジョブの設定の変更履歴を残す

event_note

Jenkins のジョブの設定内容を変更した際に、ビルドに失敗するようになってしまったときのために変更履歴を残しておくためのプラグインです。

インストール方法

  1. Jenkins にログインします。
  2. 「Jenkinsの管理」>「プラグインの管理」を選択します。
  3. 「利用可能」タブを選択します。
  4. フィルダーに「Job Configuration History Plugin」と入力して Enter を押します。
  5. 「Job Configuration History Plugin」が表示されるはずなので、チェックを入れ、インストールを行います。

これでサイドバーに「設定の変更履歴」が表示されるようになります。

参考URL

2016/11/15

C# 6.0 におけるシングルトンの実装

2016/11/04

Sphinx で出力フォーマットに応じて処理を分ける

event_note

Sphinx には only ディレクティブというのがあり、これを使用することで出力フォーマットに応じて処理を分けることができます。
これを使用し、以下のように出力フォーマットに応じて処理を分けてみます。

  • HTML で出力する場合には SVG の画像を読み込む
  • LaTeX 経由で PDF を出力する場合には分割された PNG の画像を読み込む

Sphinx のコードは以下のようになります。

.. only:: html

   .. image:: img/01.svg

.. only:: latex

   .. image:: img/01.png
   .. image:: img/01_001.png
   .. image:: img/01_002.png

うーん、面倒ですね。
他にも AutoImage という拡張もあるのですが、出力フォーマットに応じて読み込む画像を変えるということはできなさそうでした。

参考URL

2016/11/03

PlantUML で出力フォーマットに応じて処理を分ける

event_note

PlantUML にはプリプロセッサの機能があり、C言語と同じように定数定義や ifdef などが使用できます。
これを使用し、以下のように出力フォーマットに応じて処理を分けてみます。

  • PNG で出力する場合には newpage により画像を分割して出力する
  • PNG 以外で出力する場合には画像を分割しない

定数の定義の仕方

PlantUML のコード上では、以下のように定義します。

!define _PROJECT_NAME_ ProjectName

また、コマンドライン引数でも定数は定義できます。

> plantuml.jar -DPNG="png" hoge.puml

-D が定数定義するオプションで、その後に続く文字が定義する文字列です。
つまり、上記は以下の定義と同じ意味です。

!define PNG "png"

これで、上記のようにコマンドライン引数で定数を定義しつつ、PlantUML 内のコードに以下のように記述すれば、PNG で出力するときのみ画像が分割されることになります。

!ifdef PNG
newpage
!endif

参考URL

2016/11/02

Sphinx の sphinx_rtd_theme をカスタマイズする

event_note

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"

以上で完了です。

参考URL

2016/10/31

C# で GitHub からリリースバージョンを取得する

event_note

C# で GitHub の特定のプロジェクトのリリースバージョンを取得するコードを書いてみました。
HTML は HtmlAgilityPack を使用してパースしています。

環境

  • Visual Studio Express 2015 for Windows Desktop

サンプルコード

参考

2016/10/30

GitHub Gist にコードをコピーした際のインデントを調整する方法

event_note

GitHub Gist ではソースコードのインデントをスペースにするかタブにするか、スペースの場合は何マス分かを設定できます。
しかし、エディタ上のソースコードを貼り付けた後で Indent mode と Indent size を変更して保存しても、もとのタブ幅に戻ってしまいます。
これ検索しても対処方法が全く見つからなかったのですが、皆さん困っていないのでしょうか?
それともコードスニペットにコードをコピーしてくるのが間違っているのでしょうか?
とりあえず試行錯誤の結果、解決方法が見つかったので載せておきます。

解決方法

例として、エディタ上はインデントがタブのものを、GitHub Gist ではスペース4つ分に置き換えます。

  1. エディタ上のソースコードをコピーします。
  2. ソースコードを GitHub Gist にペーストします。
  3. Indent mode を Spaces に変更し、Indent size を 4 に変更します。
  4. GitHub Gist にコピーしたソースコードのうち、インデントされている範囲を全選択します。
  5. Shift + Tab キーを押して、インデントを1つ左に移動します。
  6. Tab キーをおして、インデントを1つ右に移動します。
  7. 保存する

これできちんとインデントの設定が反映されます。

2016/10/28

英語で「詳細は以下を参照してください」

event_note

ドキュメントを書いていると「詳細は以下を参照してください」という表現は多々必要になってくると思います。
これを英語で書くとするならば、とりあえずは以下のような感じですかね。
following ではなく below を使う表現もあるようです。

  • The following are the details
  • Please see the following links for details

参考URL

2016/10/26

クラス名とプロパティ名では同じ名前を使用できる

event_note

C# の命名規則に従ってプログラムを書いていると、クラス名とプロパティ名が同じになることが多いと思います。
例えばこんな感じです。

public Hoge Hoge { get; set; } = new Hoge();

これ、私はエラーになると思い込んでいたのですが、普通にコンパイル通るみたいです。
ちょっと驚きでした。
しかし、例外がありまして、クラス Hoge が内部クラスの場合はエラーになります。
つまり、プロパティ Hoge が定義されているクラスの内部でクラス Hoge が定義されている場合です。

この場合はどうすればいいんでしょかね。

参考URL

2016/10/23

ViewModel における Model のインスタンスの共有

event_note

WPF + MVVM でアプリケーションを作成していくにあたり、まずは View と ViewModel の関係について勉強してきました。
そして、いざ Model を実装しようとしたのですが、ネット上にあるサンプルプログラムなどを見てみると、 Model のインスタンスを ViewModel で作成しているのです。
私が最終的に作成したいと思っているアプリケーションは、複数の画面に同じ状態を表示したり、GUIなしで動作する場合もあるようなものなので、ViewModel で Model をインスタンス化するのはどうなんだろうと思いました。

んで、軽くググってみると同じような質問が teratail にありました。
このような場合、Singleton にするのが一般的なようです。

2016/10/19

Sphinx に PlantUML のコードを埋め込む

event_note

PlantUML のコードを Sphinx ドキュメントに埋め込むための方法です。
ただし、Atom を使用したプレビュー機能が使えなくなるので、微妙かもしれません。

sphinxcontrib.plantuml のインストール

easy_install sphinxcontrib-plantuml

conf.py の設定

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?

参考

2016/10/15

WPF + MVVM の勉強4:コマンドの実装をラムダ式で

event_note

2016/10/13

Sphinx で PDF 出力する際にエラーになる

event_note

Sphinx で作成したドキュメントを latexpdfja を使用して PDF に出力する際にエラーが発生しました。
ちなみに HTML には正しく変換できています。
かなりはまってしまったのですが、結論としてはとても単純で、機種依存文字をを使用していたのが原因でした。
Latex 経由で PDF に変換するため、機種依存文字を使っていると失敗するようです。

さらに言えば、PlantUML を使用して図を作成していたのですが、その図中でも機種依存文字を使用し、SVG で出力していたため、それもエラーの原因でした。

2016/10/12

Sphinx ドキュメントに日時を埋め込む

event_note

Sphinx で作成するドキュメントに現在の日時を埋め込む方法です。
日時を埋め込みたい場所に |today| と書きます。

フォーマットの指定は conf.py に記述します。
例えば以下のような感じです。

today_fmt = '%Y/%m/%d %H:%M:%S'

2016/10/07

Windows Embedded Standard 7 初期セットアップ時のエラー

event_note

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 を交換する予定でした。

2016/10/04

Redmine でウォッチしているのにメールが来ない

event_note

Redmine のフォーラムでウォッチしているのにメールが来なくておかしいなぁと思っていました。
チケット更新時にはちゃんとメールが来るので、メールの設定は正しく出来ています。

原因

管理者メニューのメール通知の設定で、メール送信対象に「メッセージの追加」にチェックが入っていなかったことが原因です。
メッセージの追加ってなんやねんって思ってたのですが、「フォーラムのメッセージ追加」ということだったみたいです。

2016/09/30

GitLab を docker-compose で動かしてみる

event_note

2016/09/19

定義済みデリゲート

event_note

私は最初に猫でもわかるC#プログラミングという本でC#の勉強をしましたが、その中で唐突に Func やら Actionやらが登場し、ほとんど説明がなかったのでちんぷんかんぷんでした。
ネットで調べてやっとわかったのですが、ラムダ式を活用するためにも、ここらへんはしっかり説明しておいたほうがいいんじゃないかと思いました。
ラムダ式自体の説明は結構わかりやすかったんですけどね。
というわけで、ここに調べたことを自分なりにわかりやすくまとめておきます。

定義済みデリゲートとは?

デリゲート自体の理解は C における関数ポインタと同じだと考えればすぐに理解できました。
ただ、関数ポインタもそうですが、デリゲートの宣言というのはとても面倒です。
そのため、型パラメーターを使用し、汎用的に使用できるデリゲートが最初からいくつか定義されているようです。
これらのデリゲートのことを、定義済みデリゲートというようです。

どんなのがある?

いろいろあるようですが、よく使用するのは FuncAction だと思います。
簡単に言えば、

  • Func: 戻り値を持つメソッドのデリゲート
  • Action: 戻り値を持たないメソッドのデリゲート

となります。
どちらも引数の数に応じてオーバーロードされているようです。
詳細は参考URLを参照してください。

参考URL

2016/09/18

WPF + MVVM の勉強3:コマンドを実装する

event_note

2016/09/16

ナイーブソリューションとは何ぞや?

event_note

リーダブルコードを読むと書いてある以下の文章。

例えば、「ヒューリスティック」・「ブルートフォース」・「ナイーブソリューション」などがそうだ。コメントが長くてくどいと感じたら、こうした表現を使えないか確かめよう。

ヒューリスティックはコードコンプリートで何度も出てきましたし、ブルートフォースもよく聞きます。
しかし、ナイーブソリューションは初めて聞きました。
意味がわからなかったので検索してみると、日本語のページでは回答が見つかりませんでした。

仕方ないので、"naive solution" でググってみます。
英語苦手なんですけどね・・・。

いくつか見つけた中では、以下のページがそれっぽい回答でした。

「経験豊富なプログラマーが最初に思い付く解決手段」や「愚直な(安易な)解決手段」とでも言えばいいのでしょうか。
あまり自信がないので、原文を読まれたほうがよろしいかと思います。

2016/09/13

GitHub Gist のコードをブログへ埋め込むいろいろな方法

event_note

ブログなどにソースコードを載せる際、GitHub Gist を利用するととても便利です。
ここでは GitHub Gist のコードのいろいろな埋め込み方法をまとめてみます。

ファイル名を指定

ファイル名の最後に ?file=ファイル名 を追加すると、そのURLの中の特定のファイルだけを埋め込むことができます。
以前は1ファイルごとに New Gist から作成していたのですが、この方法を知ってからは出来る限りファイルをまとめて登録するようになりました。

しかし、デフォルトで出来るのはこれだけのようです。
その他の埋め込み方をするために gist-embed というのがあるようです。
これを使えば、例えば特定の行だけ埋め込んだり、ハイライトしたり、いろいろな埋め込み方ができます。

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"

2016/09/12

WPF + MVVM の勉強2:プロパティの変更通知を実装する

event_note

2016/09/11

WPF + MVVM の勉強1:データバインディング

event_note

2016/09/03

blockdiagのインストール

event_note

blockdiag シリーズはテキストからブロック図などの画像を生成する画像生成ツール群です。
以下の図が作成できます。

  • blockdiag:ブロック図
  • seqdiag:シーケンス図
  • actdiag:アクティビティ図
  • nwdiag:論理ネットワーク図

インストール

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

これでインストールできました。

参考URL

2016/09/01

デリゲートとイベントの違い

event_note

C#のデリゲートとイベントについて勉強していて、以下の疑問が残りました。

イベントってデリゲートと何が違うの?
event キーワードを付けることで何が変わるの?

猫でもわかるC#プログラミング 第3版という本を読んで勉強していたのですが、この点についてこの本では全く触れていません。
というわけで、ネットで調べていたら、丁寧に解説してくれている方がいました。

なぜ event キーワードを指定するのか?

詳細な説明はそちらをみていただくとして、簡単にまとめると以下の2点のようです。

代入演算子が使用できなくなる

event キーワードを指定すると、加算代入演算子 += と減算代入演算子 -= しか使用できなくなります。
間違えて代入演算子を使用してしまい、それまでに追加したメソッドがクリアされてしまうのを防ぐことができます。

直接デリゲートをコールできなくなる

イベントハンドラはイベントが発生したときのみにコールして欲しいものです。
event キーワードを指定することで、直接デリゲートをコールできなくなります。

2016/08/24

GitBucketのコミットログのアイコンが表示されない

event_note

プロフィール画面などではちゃんとアイコン(アバター)が表示されているのに、コミットログでは表示されないことがあります。
これは、GitBucketのアカウントに登録してあるメールアドレスと、ローカルのGitのメールアドレスが異なっていることが原因です。
メールアドレスの設定を揃えることで解決します。
尚、これはGithubでも同様です。

Gitのメールアドレスは以下のコマンドで確認できます。

git config --global user.email

メールアドレスを設定する場合は以下のコマンドを入力します。

git config --global user.email hoge@example.com

2016/08/17

プラグイン「redmine_issue_evm」をインストール

event_note

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を再起動すれば完了です。

2016/08/13

テーマ「farend_basic」をインストール

event_note

テーマのダウンロード

テーマ「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の管理画面からテーマを変更します。

2016/08/11

テーマ「redmine-theme-flat」をインストール

event_note

テーマのダウンロード

テーマ「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の管理画面からテーマを変更します。

2016/08/09

Bitnami Redmine のバックアップとリストア

event_note

2016/08/02

GitBucketでダウンロードしたZIP内の日本語ファイル名が文字化けする

event_note

GitBucketでダウンロードしたZIPファイルを解凍すると、日本語のファイル名が文字化けしていました。
Cloneしたときは問題なかったのですが。

おそらくタグを作成したときに、ファイル名がUTF-8でエンコードされているため、この場合、Windows7の標準解凍昨日では文字化けしてしまいます。
Windows8以降であれば問題ないようです。

対策

Windows7であっても修正プログラム(http://support.microsoft.com/kb/2704299/ja)を適用することで直ります。
適用後は再起動が必要です。

参考URL

2016/07/30

プラグイン Backlogs をアンインストール

event_note

2016/07/28

docker-composeのコマンドメモ

event_note

2016/07/27

Docker のプロキシ設定

event_note

2016/07/25

Linux での Git のインストールと初期設定

event_note

2016/07/24

Docker のコマンドメモ

event_note

2016/07/20

libstlport.so がないと言われたとき

event_note

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です。

2016/07/18

GitBucketのrootのパスワードを忘れたので再設定する

event_note

GitBucketのrootのパスワードを忘れてしまった場合、H2 Databaseを直接変更してパスワードを再設定する必要があるみたいです。
H2 Databaseなんて全く触ったことありませんが、がんばってみました。
Windows環境でのお話です。

H2 Databaseのインストール

H2 Databaseが必要となるので、公式サイトからダウンロードしてきます。
ダウンロードしたら、ウィザードに従ってインストールします。

GitBucketの停止

データベースを操作するにはGitBucketを停止する必要があります。
今回の環境ではTomcatを使用してGitBucketを動作させているので、Tomcatを停止します。

データベースファイルのある場所

GitBucketのデータの保存先はこちらを参照してください。
ここにある data.mv.db というファイルがデータベースのファイルのようです。

H2 Databaseの編集

「スタートメニュー」→「H2」→「H2 Console」を起動します。
ブラウザが起動し、H2 Consoleの画面が表示されます。

以下のように入力して接続します。(※画像中のJDBC URLはダミーです。)

項目
JDBC URLjdbc:h2:C:/Windows/System32/config/systemprofile/.gitbucket/data
User Namesa
Passwordsa

接続が完了したら、テキストエリアに SELECT * FROM ACCOUNT WHERE USER_NAME='root' と入力し、Run を押します。

SQL文が実行され、rootアカウントの情報が表示されます。
画面下部にあるEditボタンを押すとテーブルの編集ができます。

編集したい行(ここではrootアカウントの行)の鉛筆マークを押すと、その行の内容が編集できます。

パスワードを変更します。
注意点として、パスワードはSHA-1のハッシュ値を入力する必要があります。
ハッシュの計算はググればオンラインツールなどがいろいろあるので、検索してみてください。
編集が終わったらレ点のボタンを押すと変更が完了します。

画面左上にある以下のアイコンを押すと、データベースとの接続が解除されます。

接続を解除しておかないとGitBucketがデータベースに接続できません。
または、タスクトレイからH2 Consoleを終了してもOKです。

GitBucketを起動し、データベースの変更が反映されているか確認します。

参考URL

2016/07/16

GitBucketのデータの保存先

event_note

Windows環境でGitBucketを動かしている場合、GitBucketのデータは以下の場所に保存されるようです。

ログイン中のユーザーで実行した場合

C:\Users[ユーザー名].gitbucket

サービスとして登録した場合

C:\Windows\System32\config\systemprofile\.gitbucket

2016/07/13

Linux Mint 17.3にdocker-composeをインストールする

event_note

Linux Mint 17.3にdocker-composeをインストールしてみました。
あらかじめDockerをインストールしておく必要があります。

curlのインストール

curlがインストールされていない場合は以下のコマンドでインストールします。

$ sudo apt-get install curl

docker-composeのインストール

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

参考URL

2016/07/12

DockerでGitBucketを動かしてみる

event_note

Dockerをインストールしてみて、とりあえず何かテストしてみたいと思い、GitBucketを動かしてみることにしました。
Dockerイメージはtakezoeさん本人が公開されているものを使用しました。

Dockerイメージのダウンロード

Docker HubからPullします。

$ docker pull takezoe/gitbucket

GitBucketの実行

以下のコマンドを実行します。

$ docker run -d -p 8080:8080 takezoe/gitbucket

ブラウザから以下のURLにアクセスしてみます。

http://localhost:8080/

GitBucketの画面が表示されればOKです。

初めてDockerを使ってみたわけですが、正直感動しました。
会社のWindows7でGitBucketを動かしたとき、Java入れて、Tomcat入れて、Apacheの設定を変更して、ってやっていたのがたったコマンド2つで出来るなんて。

2016/07/11

Dockerをインストールして動かそうとしたら「Cannot connect to the Docker daemon.」と表示される場合

event_note

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です。

2016/07/10

Linux Mint 17.3にDockerをインストールする

event_note

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 ユーザー名

参考URL

2016/07/08

Atomのショートカットキー

event_note

個人的によく使うAtomのショートカットキーです。
適宜更新していきます。

その他

  • マークダウンのプレビュー:Ctrl+Shift+M
  • PlantUMLのプレビュー:Ctrl+Alt+P (要plantuml-viewer)
  • reStructuredTextのプレビュー:Ctrl+Shift+E (要rst-preview-pandoc)

2016/07/06

CentOSからWindows PCにコンピュータ名でアクセスする

event_note

環境は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 コンピューター名

2016/06/30

Sphinxにテーマ「sphinx_rtd_theme」をインストールする

event_note

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()]

参考URL

2016/06/29

Linuxの後にWindowsをインストールしてデュアルブートにする

event_note

2016/06/27

TortoiseGit でリモートリポジトリのタグを削除する

event_note

2016/06/24

PowerShellでブレークポイントが設定できない場合

event_note

結構はまったのでメモ。 PowerShell ISEでF9を押すとブレークポイントが設定できるはずなのですが、何故か設定できませんでした。
ネットで検索しても、保存されていないスクリプトファイルにはブレークポイントは設定できないという内容は見つかるのですが、今回は既に保存されているスクリプトファイルです。

原因

スクリプトファイルのあるパスに角括弧[]が含まれていることが原因でした。
PowerShellでは角括弧は正規表現で使用されるため、これがパスに含まれていると、PowerShell ISE自体が実行中のスクリプトファイルのパスを正しく判別できないようです。
そのため、ブレークポイントが設定できなくなっていました。

結論

私が把握している限りでは、以下の場合にブレークポイントが設定できないようです。

  • スクリプトファイルが保存されていない
  • パスに角括弧[]が含まれている

2016/06/23

TortoiseSVNでクリーンアップに失敗した場合

event_note

2016/06/22

C言語でUnicodeを扱う

event_note

長年マルチバイト環境でプログラミングしていたため、ちょっとはまってしまいました。
Windows環境でのお話です。
とりあえずTCHAR型を使用すればOKみたいです。

ヘッダーファイルのインクルード

以下の2つが必要になります。

#include <tchar.h>
#include <locale.h>

ロケールの設定

まずは以下のコマンドでロケールの設定を行っておかないと日本語が出力されません。

_tsetlocale(LC_ALL, _T("Japanese"));

文字列操作関数

詳細は参考URLを参照してもらえばわかると思いますが、strcpyやprintfなど、文字列操作系の関数は基本的に全て_t系の関数に代わります。

文字列リテラル

_Tで括る必要があります。

TCHAR hoge[] = _T("hogehoge);

参考URL

2016/06/21

[Sphinx]プロジェクトの新規作成

event_note

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.

参考URL

2016/06/20

Atomのプラグイン

event_note

私がAtomにインストールしているプラグインです。
Atomに限った話ではありませんが、私は基本的にカスタマイズはしたくありません。
というか、カスタマイズしなくても使いやすいことが洗練されたアプリだといえるのではないかと考えています。
とはいっても、やはりデフォルトだといろいろ使いづらいところもあるので、最低限のカスタマイズくらいは行っています。

file-icons

ファイルアイコンをカラフルなものに変更してくれます。

japanese-menu

メニューバーなどを日本語化してくれます。

language-plantuml

PlantUMLのテキストをハイライト表示してくれます。

language-reStructuredText

reStructuredTextのテキストをハイライト表示してくれます。

plantuml-viewer

PlantUMLのプレビューを表示してくれます。

plantuml-viewer

PlantUMLのプレビューを表示してくれます。

rst-preview-pandoc

reStructuredTextのプレビューを表示してくれます。
別途pandocをインストールしておく必要があります。

show-ideographic-space

全角スペースを可視化してくれます。

2016/06/18

デュアルブート環境でWindows10にアップグレードしたらOSが起動しなくなった

event_note

2016/06/15

Windows7の無駄な視覚効果を無効にする

event_note

Windows7の視覚効果は結構重いみたいで、グラフィック描画機能の貧弱なPCではパフォーマンスに影響がでます。
そんなときは無駄な視覚効果を無効にしてみましょう。
パフォーマンスが改善されるかもしれません。

視覚効果の変更方法

スタートメニュー→「コンピュータ」→「システムのプロパティ」→「システムの詳細設定」からパフォーマンスの欄の設定ボタンを押します。
「視覚効果」タブでカスタムを選択し、不要な項目のチェックを外し、適用を押します。
個人的には必要なのは以下の4つだけでした。

項目理由
ウィンドウとボタンに視覚スタイルを使用するWindows7として最低限の外観を保つため。
クラシックのデザインはあまり好きではありません。
スクリーンフォントの縁を滑らかにするフォントがギザギザになり見づらいので。
デスクトップコンポジションを有効にする重なりあっているウィンドウを切り替えたときに画面が乱れるため。
デスクトップのアイコン名に影を付ける壁紙によっては影がないと見づらいため。

2016/06/10

Sphinxのインストール

event_note

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

2016/06/09

wmicを実行すると「無効なクエリ」ですと表示される

event_note

最近、WMICというコマンドを使ってシステムに関する様々な情報を取得できることを知りました。
参考URLの記事を参考にして次のコマンドを入力してみたところ

WMIC PATH Win32_PerfFormattedData_PerfProc_Process GET /FORMAT:LIST

以下のようなエラーが表示されました。

エラー:
説明 =

原因不明です・・・。
ネットで検索しても全く情報が見つかりませんでした・・・。

参考URL

2016/06/02

Atomで「Open with Atom」を選択してもアプリケーションが見つからない

event_note

Windows版のAtomにおいて、ファイルを右クリックしたときに表示される「Open with Atom」を選択しても、アプリケーションが見つからずにファイルを開くことができませんでした。
その修正方法です。

原因

レジストリのatom.exeへのパスが変更されていないことが原因でした。

修正方法

  1. Windows+Rを押して、「regedit」と入力し、レジストリエディタを起動します。
  2. Ctrl+Fを押して、「atom」で検索を行います。
  3. 検索して引っかかった箇所のうち、atom.exeへのパスが記述されている箇所が古いバージョンのままだったので、修正を行いました。
    ※該当箇所をダブルクリックすると編集できます。

これで右クリックメニューの「Open with Atom」からアプリケーションを起動することはできるようになりました。
しかし、「Open with Atom」の横に表示されているAtomのアイコンは直りませんでした。
そこで、一旦Atomをアンインストールし、再度インストールし直すと直りました。

2016/06/01

Atomのインストール(Windows)

event_note

テキストエディタのAtomのWindows環境へのインストールと設定手順です。
個人的には重くてあまり好きではないのですが、PlantUMLを使うときなど一部の用途では便利なため使用しています。

インストール

以下のサイトからダウンロードしてインストールします。
Atom

プロキシの設定

社内などのプロキシ環境下ではプロキシサーバーの設定を行わないとプラグインのインストールなどが行えません。
コマンドプロンプトを開き、以下のコマンドで設定を行います。

apm config set https-proxy http://example.com:8080
apm config set http-proxy http://example.com:8080

参考URL

2016/05/30

[C/C++]タスクバーとスタートボタンの表示・非表示を切り替える

タスクバーとスタートボタンの表示と非表示を切り替えるプログラムです。
Windows XPまではスタートボタンはタスクバーの中にあったため、タスクバーを非表示にしたらスタートボタンも消えていましたが、Windows Vista以降では、スタートボタンはタスクバーの中ではなくデスクトップに移動していたため、別途処理してやる必要があります。
尚、スタートボタンを消していてもキーボードのWindowsボタンからスタートメニューを表示することはできるため、それも非表示にしたい場合は"DV2ControlHost"も非表示にします。

2016/05/29

Visual Studioのショートカットキー

event_note

個人的によく使うVisual Studioのショートカットキーです。
適宜更新していきます。

検索

  • クイック検索:Ctrl+F

ブックマーク

  • 設定 or 削除:Ctrl+F2 or Ctrl+K + Ctrl+K
  • 次へ:Ctrl+K + Ctrl+N
  • 前へ:Ctrl+K + Ctrl+P

ソースコードの整形

  • ファイル全体:Ctrl+K + Ctrl+D
  • 選択範囲:Ctrl+K + Ctrl+F

デバッグ

  • ブレークポイントの設定 or 解除:F9
  • ステップイン:F10
  • ステップオーバー:F11
  • ステップアウト:Shift+F11

参考URL

2016/05/25

[Excel]Findメソッドで数式が入力されたセルを検索する場合

event_note

Findメソッドで検索したときに、画面の表示上には一致するセルがあるはずなのに見つからないということがありました。
これは、Findメソッドの引数で、「LookIn」を省略していたのが原因でした。
検索対象のセルには数式が入力されていため、「数式そのもの」を検索するのか、「数式の計算結果=表示されている値」を検索するのかで、結果が変わります。
今回は「数式の計算結果=表示されている値」を検索したかったのですが、引数の「LookIn」を省略していたため、デフォルトの設定である「数式そのもの」を検索し、一致するセルが見つからないという結果になっていました。

参考URL

2016/05/24

Windows でいろんなことができるコマンドラインツール NirCmd

2016/05/19

[Windows]スクリーンキーボードの起動がとても遅くなった時の原因を追求したお話

Windows Embedded Standard 7を使用した製品を開発中に、ある時点からスクリーンキーボードの起動がとても遅くなってしまいました。
通常2、3秒で起動するところが、30秒ほどかかるようになってしまいました。
ネットで検索しても、英語キーボードと日本語キーボードの違いくらいしか見つかりません。
その時に、何が原因か追求した時のお話です。

まずは、その重くなった前後で何をしたかです。
私の場合、DISMを使用してパッケージの追加を行いました。(具体的にはPremium Codecsのパッケージを追加)
ですので、これに原因があるであろうことは容易に想像できました。
しかし、具体的に何が悪かったのはわかりません。

まずはリソースモニターなどでCPUの使用率などを見てみますが、まだまだ余裕があったので、処理に負荷がかかっているわけではなさそうです。

次に疑ったのが、パッケージの追加により追加されたサービスが影響しているのでないかということです。

というわけで、パッケージを追加する前と後で、実行中のサービスを比較し、パッケージ追加後に追加されたサービスを調べました。
サービスの表示は、「ファイル名を指定して実行」より「msconfig」と打ち、「サービス」のタブより確認できます。

この結果、パッケージ追加後に追加されたサービスは以下の4つでした。

  • Application Experience
  • Offline Files
  • WinHTTP Web Proxy Auto-Discovery Service
  • Windows Search

そして、この4つのサービスを停止させると、スクリーンキーボードの起動が早くなったので、この中のどれかが原因であることがわかりました。
あとは1つずつ停止させて確認するだけです。

結論を言うと、「WinHTTP Web Proxy Auto-Discovery Service」が原因でした。
内容を見ても停止させても問題なさそうなので、これを停止させることで解決です。
各サービスの解説は以下のサイトを参考にさせていただきました。

尚、上記のサイトを参考にすると、「Application Experience」以外は不要そうなので、結局3つ停止しました。

これはあくまで私の例であり、実際の状況は様々だと思いますが、何か起動に時間がかかるようになったアプリケーションがある場合に、何が原因かを探る際の参考になればと思います。

2016/05/18

[Jenkins] エラー 1069: ログオンに失敗したため、サービスを開始できませんでした。

event_note

2016/05/16

GitHub に人間じゃないと言われたら

event_note

2016/05/15

Bloggerのカスタマイズ部分のメモ

event_note

デザインテンプレートを変更した際などに紛失しては困るので、私のサイトでのカスタマイズ部分を記録しておきます。
「HTMLの編集」で、</head>の直前に挿入します。

2016/05/13

USB起動ディスクの初期化

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 を終了しています...

2016/05/05

LAN内の機器のIPアドレスとMACアドレスの一覧を表示する

event_note

いろいろ方法はあるみたいですが、nmapを使用するのが一番簡単そうです。

nmapのインストール

nmapがインストールされていない場合はインストールします。

$ sudo apt-get install nmap

nmapコマンドを打つ

例えば、192.168.0.0/24の機器を調べたい場合は以下のコマンドを打ちます。

sudo nmap -sP 192.168.0.0/24

2016/05/03

本に書き込みを行いながら勉強してみる

event_note

GWを利用してプログラミングの本を一冊読みたいなと思い、以前からちゃんと基礎から勉強しようと思っていたC#の勉強のため、「猫でもわかるC#プログラミング」という本を買って読んでいます。

本の内容についてはまだ読み終わってないので書きませんが、読んでいるといろいろ疑問点が沸いてくるため、自分なりにコードを打って確認したり、ネットでいろいろ調べたりしながら読み進めています。
そこでふと思ったのですが、それでわかったことをどこかにメモでもしておかないと、また後で同じことを調べるはめになったりして困るよなぁと。
でも本と別のところにメモしても、それを探す手間があるし、付箋とかは貼りたくない。 というわけで、本に直接書き込みを行うことにしました。

今まで学校の教科書以外に本に書き込みを行ったことがないので、ちょっと抵抗がありましたが、ネットで調べてみるといろいろメリットがありそうですね。

本なんて売ってもほとんど金にならないので、開き直ってどんどん書き込みしていってます。

2016/04/30

Visual Studio Express 2015 のインストールでエラーが発生

event_note

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)では何もエラーが表示されず正常にインストールできました。

2016/04/29

Visual Studio 2015 Express for Desktopのインストール

event_note

ダウンロードとインストール

以下からインストーラーをダウンロードして実行します。
https://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx

exeファイルはどこ?

VC2015を起動するexeは以下になります。
ちょっとわかりづらかったので一応書いておきます。

C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\WDExpress.exe

2016/04/26

[Bitnami Redmine] Rubyで書いたCGIを動かす

event_note

Bitnami RedmineをインストールしたらApacheとRubyもインストールされるので、Webサーバーとして使用できます。
ここではRubyをCGIプログラムとして動作するように設定を行います。
もはやBitnami Redmineは関係ありません。
Apacheのお話です。

環境

Windows 7 Professional 32bit
Bitnami Redmine v2.6.7

httpd.confの編集

「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] Webサーバーとしても使用する

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と同じです。

プロキシの設定

event_note

一時的な設定

コマンドプロンプトから以下のコマンドを打ちます。

set http_proxy=http://proxy.example.co.jp:8080
set https_proxy=http://proxy.example.co.jp:8080

常にプロキシを有効にする

上記の値を環境変数として登録します。
Windows7の場合は「コンピュータ」→「システムのプロパティ」→「システムの詳細設定」→「環境変数」で新規に以下の変数を登録します。

2016/04/25

TortoiseGit のインストール

Git for Windowsのインストール

event_note

ダウンロード

以下のサイトからダウンロードしてきます。
https://git-for-windows.github.io/

インストール

基本的にはウィザードに従ってインストールするだけですが、改行コードだけは自動変換しないように、「Checkout as-is, commit as-is」を選んでおきます。

インストーラーを起動し、「Next」を押します。

「Next」を押します。

インストール先はデフォルトのままでいいと思います。「Next」を押します。

コンポーネントを選択し、「Next」を押します。(後で書きます)

スタートメニューへの登録はデフォルトのままでいいと思います。「Next」を押します。

環境パスに関する設定です。
「Use Git from the Windows Command Prompt」を選択して「Next」を押します。

改行コードに関する設定です。
改行コードをGitで自動変換されるといろいろ面倒なことになりかねないので、「Checkout as-is, commit as-is」を選択して「Next」を押します。

ターミナルに関する設定です。
特にこだわりがなければデフォルトのまま「Next」を押します。

拡張オプションに関する設定です。
そのまま「Next」を押します。
一応以下のサイトの説明がわかりやすかったので参照してみてください。

参考にさせていただいたサイト http://opcdiary.net/?page_id=27065

2016/04/11

GitBucketのバージョンアップ

GitBucketを3.10から3.13にバージョンアップしてみました。
基本的にはgitbucket.warを差し替えるだけです。

環境

  • OS:Windows7 Professional
  • サーバー:Apache+Tomcat

GitBucketの最新版をダウンロード

Githubから最新版のgitbucket.warファイルをダウンロードします。
https://github.com/gitbucket/gitbucket/releases

Tomcatの停止

GitBucketをTomcatで動作させているため、まずはTomcatを停止します。
「スタートメニュー」→「Apache Tomcat 9.0 Tomcat9」→「Configure Tomcat」を起動し、「Stop」をクリックします。

GitBucketのデータのバックアップ

GitBucketをサービスとして実行している場合、リポジトリを含むGitBucketのデータは以下に保存されていますので、一応バックアップしておきます。
C:\Windows\System32\config\systemprofile\.gitbucket

GitBucketのアップデート

「C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps」にあるgitbucket.warファイルを最新のものに差し替えます。

Tomcatの開始

Tomcatを再開します。
「スタートメニュー」→「Apache Tomcat 9.0 Tomcat9」→「Configure Tomcat」を起動し、「Start」をクリックします。

2016/04/09

GitBucketのインストール

GitBucketをWindows7にインストールしてみました。
Bitnami RedmineをインストールしているとApacheもインストールされているので、ApacheとTomcatを連携させて、Windowsサービスとして実行しています。

参考URL

以下のサイトを参考にさせていただきました。

JREのダウンロードとインストール

GitBucketはJAVAで動作するので、JREが必要です。
以下のサイトからダウンロードしてインストールを行います。
http://www.oracle.com/technetwork/java/javase/downloads/index.html

Tomcatのダウンロードとインストール

以下のページから最新版のWindowsインストーラーをダウンロードします。
http://tomcat.apache.org/download-90.cgi

基本的にはウィザードに従ってインストールするだけです。
http://localhost:8080/にアクセスできればインストールは成功です。

Apacheの設定

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>

Tomcatの設定

ポート番号が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" />
-->

GitBucketのダウンロード

Githubから最新版のgitbucket.warファイルをダウンロードします。
https://github.com/gitbucket/gitbucket/releases

GitBucketのインストール

Tomcatのインストールフォルダの「webapps」フォルダにgitbucketのwarファイルを置きます。
Tomcatのデフォルトのインストール先は「C:\Program Files\Apache Software Foundation\Tomcat 9.0」でした。

Tomcatの起動

「スタートメニュー」→「Apache Tomcat 9.0 Tomcat9」→「Configure Tomcat」を起動し、「Start」をクリックします。
尚、Tomcatが起動すると、webappsフォルダ内にgitbucketというフォルダが自動で作成されます。

Apacheの再起動

Bitnami Redmineの場合は、以下からApacheの再起動ができます。
「スタートメニュー」→「Bitnami Redmine Stack」→「Bitnami Redmine Stack Manager Tool」

接続確認

「http://[コンピュータ名]/gitbucket/」にアクセスし、GitBucketの画面が表示されれば成功です。

2016/04/07

Firefoxのリフレッシュ

event_note

会社で使用している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を使用して同期していればすぐに元に戻せると思います。

追記
リフレッシュしてもフリーズする現象は直りませんでした(><)

2016/03/25

[Bitnami Redmine] プラグイン「redmine_maintenance」をインストール

event_note

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を再起動すれば完了です。

[Bitnami Redmine] プラグイン「WorkTime」をインストール

event_note