git-flow で 「リリースを完了」 「ホットフィックスを完了」 させようとすると、 master にマージされずに失敗する

Git における、有名なブランチの運用モデルのひとつに、 "A successful Git branching model" (日本語訳) というものが存在する。

内容については、「サルでもわかる Git 入門」さんの、以下の解説がわかりやすい。

上記のブランチの運用モデルを簡単に行うための git-flow 拡張が存在し、 Git for Windows 2.5.3 以降に標準で同梱されている。
また、 Git GUI クライアントの SourceTree では、 上記の git-flow が使いやすい UI にまとめられている。

そんな便利な git-flow だが、あるときふと気づいたら、私の手元の環境でうまく動かなくなってしまっていた。

具体的には、
リリースブランチ を完了させた場合、
160625_1
本来であれば、以下のように release/* の内容が masterdevelop ブランチにマージされて タグが作成されるはずが、
160625_2
なぜか master ブランチにマージされずに、 変な場所に タグ が作成されてしまう。
160625_3

リリースを完了させた時だけではなく、ホットフィックスを完了させた場合も同様になる。

不便きわまりない!

原因は 身に覚えのない git config の設定

続きを読む

System.Data.SQLite の NuGet パッケージ のうち どれをインストールするべきか

この記事は、(この記事が初公開された日を基準にして) 4年前に投稿された

の記事のフォロー記事だ。

Visual Studio 2012 に標準で含まれて以降、 NuGet を使ってライブラリパッケージをインストールすることが標準的になった。
しかし、 System.Data.SQLite に於いては、 NuGet パッケージの方も相変わらず多くのパッケージが公開されているので、 これらについてもどれをインストールすべきか解説してみようと思う。 160620_1

Entity Framework Core について書いたひとつ前の記事の

とは異なり、 こちらの記事は Full .NET で SQLite を使う場合で、 特に Entity Framework 6.x と組み合わせる際に有用な内容となっている。
(残念ながら、 System.Data.SQLite は .NET Core では使えないのだ。)

公開されている NuGet パッケージ

続きを読む

DI っぽく EF Core 1.0 + SQLite を Full .NET と .NET Core のコンソールアプリケーションで使ってみる [Entity Framework Core]

しばやん御大の Entity Framework Core についての以下の記事を読んで、


コンソールアプリでも、 ソースコードに 接続文字列 や ログの設定を書かずに、設定ファイルから Dependency Injection (依存性の注入: 以下DI) するにはどうしたらよいのかな? と思ったので、 ASP.NET Core の流儀を参考にしながら やってみようと思う。

データベースは、扱いが簡単な SQLite にする。

記事の最後に、 Visual Studio 2015 ですぐに使えるサンプルプロジェクトを用意しているので、 手っ取り早く結果を見たければ、 そのサンプルプロジェクトを見てみてほしい。

実現すること

まずは、何を実現させるのかをハッキリさせておこう。

  1. 接続文字列と ログ表示の設定を、外のファイルから指定すること
  2. マイグレーションなどを行うため、 EF Tools からも、上記設定が利用されるようにすること

ここで言う EF Tools とは、Entity Framework Core の コマンドラインツール のことだ。
このツールを使うと、 パッケージマネージャーコンソールから Add-Migration とか Update-Database と実行したり、 dotnet.exe から dotnet ef コマンドを 実行することで、 コード生成やマイグレーションなど を利用することができる。

EF Tools でデータベースを取り扱う際、その接続文字列は DbContext に設定されたものが使用される。
コード内に接続文字列を書いてしまうと、マイグレーションするためのデータベースファイルが決め打ちになってしまい、変更ができなくなる。
このため、 EF Tools を実行した際も、依存性の注入が行えるようにしたい。

前準備

続きを読む

PDF のページを好きなサイズの png 画像に変換する たった1つのステップ

document.location = document.getElementById('page1').toDataURL();

Firefox で PDF 開いて任意のサイズで表示し、 開発者コンソール (F12キー) で上記のコード実行すれば、png 画像になって表示される。
あとはその画像を「名前をつけて保存」すればいい。

続きを読む

npm config -g でプロキシの設定をしているのに electron-quick-start や electron-prebuilt でコケる

プロキシ環境下で、 electron-quick-start レポジトリを npm install しようとしたり、 npm で electron-prebuilt モジュールをインストールしようとすると、 npm config set https-proxy "http://proxy.example.com:8080/" とプロキシを設定しているのにもかかわらず、

Error: connect ECONNREFUSED 192.30.252.128:443
    at Object.exports._errnoException (util.js:949:11)
    at exports._exceptionWithHostPort (util.js:972:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)

などとエラーが出てしまうことがある
特定の通信に、 npm のプロキシの設定が使われていないのだ。

などでは、 netsh winhttp import proxy source=ie のコマンドを実行するといった解決方法が紹介されているが、 これは WinHTTP を使った通信全体に、 IE の proxy の設定をコピーするものであって、今回の問題の本質ではない。

あくまで、 npm config の https-proxy や proxy で設定したプロキシで、エラーとなっている通信を実行させたい場合の解決方法について述べよう。

解決方法

結論を先に言うと、 npm config --global https-proxy ではなく、 npm config https-proxy を使って プロキシを設定する のだ。

続きを読む

VS Express で .NET Core の xUnit.net を使ったテストのデバッグを行う

.NET で 単体テストと言えば、いまや xUnit.net が事実上の標準となっている。
ASP.NET Core や .NET Core のドキュメントでも、単体テストは xUnit.net を使うように案内されている。

ところが Visual Studio の Express Edition 系列 の テストエクスプローラは、 xUnit.net に対応していない。
それでも Full .NET Framework や dnx では、そのままテストプロジェクトを「実行」してしまえば、とりあえずデバッグ実行はできていた。
しかし、 .NET Core + dotnet-test-xunit では、それすらもできなくなってしまい、 dotnet test コマンドの出力を確認するしかなくなってしまった。

デバッグ実行ができないのは流石に不便… ということで、デバッグ実行を行うハックを紹介しよう。

# ライセンス的に Visual Studio Community 使えるのなら、そちらを使うべき。
# ただ、たとえ Express ではなくても、 この方法を使うと xUnit.net の出力が文字化けする問題も防げるぞ。

エントリーポイントを作成し、コンソールプロジェクトにする

続きを読む

.NET Core での コンソールアプリの文字化けを直す

だいぶ予定が遅れたようだが、 .NET Core 1.0 の RC2 が5月中旬にリリースされた。

2000年に初めて .NET がリリースされてから、 mono が登場したりといったことはあったものの、 16年越しでついに クロスプラットフォームのアプリケーションを作成できる環境が、マイクロソフト公式から提供された。

ということで、さっそく .NET から VS2015 DotNetCore Tools Preview 1 をインストールして、 Hello World を書いてみよう。

using System;
using System.Text;

namespace netcore_console_test_01 {
    public class Program {
        public static void Main(string[] args) {
            Console.WriteLine("はろー わ~るど!");
        }
    }
}

160530_1

…文字化けするぞ!!?

続きを読む

Visual Studio Code 1.1.1 と その zip 版 (Portable 版)

Visual Studio Code 1.1.1 がリリースされた。

先日の 「Visual Studio Code が ついに 1.0 に!! しかし、とんでもローカライズでおかしなことに」 の記事で紹介した不具合が修正されたり、 日本語フォントがだいぶマシになったり、 Markdown のプレビューを横に表示させるコマンドが増えたり、いろいろな変更点が入っている。

その中でも特に私が気に入った変更点は、ユーザ設定で以下のようにウィンドウ幅での折り返し設定にしたときなどが特にわかりやすいのだが、

 {
+    "editor.wrappingColumn": 0,
 }

中日韓の文字が スペースで区切られた部分以外でも、ちゃんと折り返すようになったこと。
文字の幅によっては、少し隙間が空いてしまうことがあるが、それでもかなり見やすくなった。
おかげで、テキストエディタとしてだいぶ優秀になった。

Visual Studio Code 1.0.0

Visual Studio Code 1.0.0

Visual Studio Code 1.1.1

Visual Studio Code 1.1.1

atom エディタなどはこれができなくて、 ところどころ半角スペースの混じった日本語を書いた時の表示が微妙なのよね。

さて、このように複数のバージョンが公開されていくと、古いバージョンを取得したり、その古いバージョンをインストールせずに使用したりしたくなる。
Visual Studio Code は GitHub にて オープンソース で公開されているので、そこから自分でビルドすることもできるが、それはめんどくさい。

過去バージョンについては公式では案内されていないものの、 Win32用 zip アーカイブ版 (いわゆる Portable版 のようなもの) を取得する方法があるようなので、それを紹介しよう。

続きを読む

ふるさと納税を使って、熊本地震の義援金の寄付を行う4つのステップ

このたびの熊本地震により、被災された皆さまに心よりお見舞いを申し上げる。
一日も早い復旧、復興を重ねて心よりお祈り申し上げる。

さて、ただお祈りするだけではなく、実際に行動を起こしてこそナンボのモンだ。
そこで、手軽にできて、そして効果の高い ふるさと納税の制度を使った義援金による寄付を行う方法 をステップバイステップで紹介してみようと思う。
「これくらい簡単にできるなら私も…」 と感じて、義援金を送るきっかけにしてもらえれば幸いだ。

先に断っておくが、 「ふるさとチョイス」 というサービスを使って、 「クレジットカード決済」で行う手順を紹介している。
「直接振り込んだ方が、中抜きされず全額義援金として使われて良いのではないか?」という話も一理あるだろう。
しかし、手軽にできることによって寄付してくれる人が増えるのであれば、わずかな手数料が サービス提供会社やクレジットカード会社にいってしまうことなど、 さして問題にする必要はないと考えている。

上記サービスのまわし者ではないことを、宣言しておく。

0. そもそも ふるさと納税 とは?

続きを読む

マザーボードが GA-P55-UD3R のPC を Win 10 アップグレードしたら、ネットワークにつながらない!

来たる 7月29日 に Windows 10 の 無料アップグレードが終了してしまうので、 後回しにしていた 自作のデスクトップPC を Windows 7 から Windows 10 にアップグレードしてみた。

実はこの デスクトップPC は、一度 Windows 8 に更新したあと、使いにくかったのと、当時載せていたグラボとの相性が悪かったのもあって、 Windows 7 に戻した経緯がある。
その後、 グラボは新しいモノに取り替えていたので、 Windows 8.x と互換性がよい Windows 10 なら、なんの問題も発生しないだろうと考えていた。
アップグレード前の互換性チェックも問題なく、更新をダウンロードして長いこと待てば問題なく更新される… はずだった。

ところが、Windows 10 へのアップグレードが完了したあと、OS にサインアップしたら、ネットワークに繋がらないではないか!

Realtek の ネットワークドライバが Win 10 に対応していなかった?

起動後のアクションセンターの通知で、ご丁寧にも 「Realtek の ネットワークアダプター が Win 10 に対応していないから、機能を無効にした」 などと通知をしてくれていた。
お節介な奴め。

このネットワークアダプターは、 GIGABYTE の マザーボード GA-P55-UD3R のオンボードのものだ。
GA-P55-UD3R は 7年前の M/B なので、当然サポートはとっくに切れており、 Windows 10 はおろか Windows 8 のドライバすら提供されていない。
ただ、それは GIGABYTE サポートサイト上での話だ。

GIGABYTE のサポートサイトによると、 GA-P55-UD3R は Realtek RTL8111D のチップセットを載せている。
幸い、 Realtek のサポートサイトには、このチップセットの Windows 10 用のドライバーが提供されているので、それを USB メモリか何かを経由して、インストールすれば良いのだ。

2016/05/15 現在、 Realtek のサポートサイト上の、 RTL8111D を含めた Network Interface Controllers チップセットのドライバーのダウンロードページはこちら↓
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=4&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false

ドライバーをインストールしても、ネットワークに繋がらない?

ドライバーのインストールが完了しても、すぐにネットワークが繋がるわけではない。
Windows 10 アップグレード時に 無効にされたネットワークアダプタは、 ドライバーを更新しても自動で有効にならないからだ。

ご丁寧に、ネットワークアダプタの各項目一つ一つの項目が無効になっているので、必要な機能を有効にしよう。
ローカルエリア接続の各機能の項目を有効にする

これで、ネットワークが有効になったはずだ。

しかし… このデスクトップPCは、 7年間使い続けていることになるのか。
SSD を交換したり、 メモリを積みましたり、 グラフィックボード、 Blu-ray ライターをを交換したりはしているものの、それ以外はそのままだ。
Core i5-750, メモリ 6GB, SSD 128GB (+HDD) の構成だが、現状性能に全く不足を感じず、極めてサクサク動いてくれる。(PC上で、リッチなグラフィックのゲームをしないってのもあるが)
2~3年ごとくらいに H/W を刷新しないと 動作がもたついて使い物にならなかった、 2000年代中盤までは考えられなかったことだ。