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

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

原因

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