布団が俺を呼んでいる

丘山大一のぶろぐ

岳南鉄道 に 乗った

工場夜景で有名(らしい)岳南鉄道にのってきました。
通称「岳ちゃん」

夜景の見方

鉄道夜景電車が月に1回程度運行されています。2両編成。
1両目は通常通りですが、2両目は電気を非常灯にし、暗い車内から夜景を見られます。
ちなみに、解説のガイドつきでした。(専門の方がいらっしゃるようで)
運賃は一日フリー券を700円で購入。昔懐かしい硬い紙キップで、富士山の写真入り。

写真は撮るには撮ったのですが、走行中はフラッシュが使えないためピンぼけしまくりでした。
ので、どんなところ?
という方は、
「岳南鉄道 夜景」
あたりで検索してください。画像検索すると結構キレイな写真が拝めます。

なお、始発駅である岳南鉄道「吉原駅」はJRの駅のさらに奥にあり、ぶっちゃけ見つけづらいですw
もし行く人はちょっと余裕をもって行くことをお勧めします。

昔は

工場夜景のよさなんて全然理解されませんでしたが、いい時代になったもんだ……。


鉄道コレクション 岳南電車ED40形(ED402)

新品価格
¥1,700から
(2016/9/25 20:38時点)

Delphi プロジェクトファイルのコードの中で無名メソッドを使うとメモリリークが発生する

なんか Delphi 話多いなー。
無名メソッド、anonymous methods とか言われるヤツです。
正直、可読性が落ちると思っているのですが、サクッと書くときに便利なのでちょいちょい使います。

現象

下記のようなコードを書くと、メモリリークが発生します。
program Project1;
uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
var
  b :Boolean;
begin
  ReportMemoryLeaksOnShutdown := True; // メモリリークを検出
  b :=
    (function : Boolean
    begin
      Result := True;
    end
  )();
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

対応

無名メソッドを使わないようにするしか思いつきませんでした……
program Project1;
uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
function hoge : Boolean;
begin
  Result := True;
end;
var
  b :Boolean;
begin
  ReportMemoryLeaksOnShutdown := True; //メモリリークを検出
  b := hoge;
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

原因予想

全然分かりません。
・Delphiの無名メソッドはインターフェースでどうたかこうだか、
・インターフェースは参照カウントがどうたかこうだか、
・でもってインターフェースの破棄のタイミングはEnd 節の実行時でどうたかこうだか、
・でもプロジェクトファイルにあるのは「end.」(ピリオド)であって「end;」(セミコロン)じゃないなー
とか妄想してみた。

似たような事例はStackoverflow で見かけるので、きちんと探せば原因が分かると思うのですが。
探すのめんどい(ぇ)

若干ですが仕様という名のバグじゃないか疑惑もあったりなかったり。

え、無名メソッドを使うなって?

だって楽なんだもん。
特にメソッド名を考えなくて済むあたりが楽。
……命名苦手なんよ……


blogengine net で Runtime Error

かなり焦った。

経緯

拡張機能入れたらエラー。
その後、アクセスしたらRuntime Error が表示されるように。

対応

Azure ポータルサイト上での修正方法がぱっと思いつかなかったので、Web Matrix をインストール。
サイトをDLして、Extensions フォルダに入っている「拡張機能.cs」を削除。
サイトを発行。
これで直った。

正しい対応

拡張機能を入れる前に、バックアップをとりましょう。
サボったからいけなかったのです、(ノД`)・゜・。
blogengine net の勉強をさぼっていたので、他にどのようなファイルに影響があったのか、またこれが正しい対応だったのか不明。




BUFFALO USB3.0 外付けハードディスク PC/家電対応 2TB HD-LC2.0U3/N [フラストレーションフリーパッケージ(FFP)]

新品価格
¥8,480から
(2016/9/19 23:03時点)

RadStudio では、generics<generics> ができない?

このごろDelphi と Firebird の記事ばかりなような。
で、今回は Delphi というか Rad Studio というかのお話。

Generics の中に Generics はダメ?

なんか変だな、とは思っていたんですがようやく原因が分かりました。
こんな感じのfunctionを宣言をすると、「Ctrl + Shift+ C」でエラーが出て、スケルトン生成できなくなります。
function hoge : TList<TList<string>>;
スケルトン生成できないだけで、手でゴリゴリ書けばちゃんとコンパイルは通ります。

もちろんというかなんというか、下記はOK.
function hoge : TList<TStringList>;

まあ、 TList<string> だったら TStringList で置き換えちゃえば大体いけるのでいいですけど、他の場合はどうすれば……。
IDE側のバグだとしか思えないんですが……
検証しているXE5がダメなだけで、新しいヤツだと直ってるのかな?

結論

VS + C# を使えば全部解決。





OBJECT PASCAL HANDBOOK―マルチデバイス開発ツールDelphiのためのプログラミング言語完全ガイド

新品価格
¥6,480から
(2016/9/6 08:13時点)

Windows Phone (Windows Mobile) デバイス'USB Composite Device'を停止できません。 への対応

USB接続しているものを外す際、ハードウェアを安全に抜こうとするとこのワーニングが出ることがあります。

対応

タスクマネージャーか何かで、動作中のサービス一覧を表示し、「IpOverUsbSvc」を停止させれば突破できることがあります。
たしかこのサービスはUSB実機デバッグで必要になるサービスだったと記憶しているので、必要ならもう一度起動させましょう。


リッツ・カールトンが大切にする サービスを超える瞬間

新品価格
¥1,620から
(2016/9/3 16:06時点)

Delphi BOM無しでテキスト保存

ISQL.exe に食わせるスクリプトを、なぜかDelphi経由で吐き出す必要が出てきました。
で、そのためにはBOMを外してテキスト保存する必要がありました。

やり方はこんな感じ

  sl := TStringList.Create;
~sl に文字列を突っ込む
  sl.WriteBOM := False;
  sl.SaveToFile(ファイル保存先, TEncoding.UTF8);

要はsl.WriteBOM := False; が必要、ということですね。

……このやり方を全然知らなかったんで、バイト操作の方法を調べようとしていたのは内緒です……


OBJECT PASCAL HANDBOOK―マルチデバイス開発ツールDelphiのためのプログラミング言語完全ガイド

新品価格
¥6,480から
(2016/9/6 08:13時点)

Firebird Embededのお勉強 ISQLの使い方 スクリプトファイルのSQLを実行できない

解決? まで3時間ほどかかりました。

結論!

ISQL.exe で「-i」オプションをつけて読み込ませるファイルには、BOM (Byte Order Mark) をつけてはいけないらしい。

細かい話

isql.exe - i hogehogeScript.fmq -user SYSDBA -password masterkey -charset UNICODE_FSS 'HOGE.FTB';
とやったら、何回やっても最初のクエリの実行で失敗する。
接続する文字セットを変えたらうまくいくかな? と思いましたが、それでも失敗。
「最初だけ失敗する……?」
「最初にだけあるもの/ないもの ってなんだ……?」
「BOMだ!」
「とりあえずBOM外せ!」
「なんか知らんが動いたぞちくしょー」

根拠

やってみてダメだった、BOM外したらうまくいった……というだけです。
根拠となるドキュメントを発見できていません。

・私の検索能力が低い説。
・そもそもISQL の使い方間違ってんだよ説。
・BOM がダメなんて常識だろ説。
・Windows でスクリプト系ファイルを書く情弱なんて、我々Firebird 業界にはいらんのだよ説。
・はぁ? 何言ってんの? お前の環境おかしいよ説
etc. 

諸説ありますが、とりあえず誰か正解を教えてください。

思うに

BOMがダメだとしたら、MS信者、WIndows 万歳な人間には辛い仕様だぜよ。


Firebird 徹底入門

新品価格
¥4,104から
(2016/8/31 20:45時点)

Windows Phone (Windows Mobile) アップデートがかかってた……(trinity) 201609

気が付いたら更新されていました……
ぐぬぬ。

バージョン
OSのビルドバージョンは 10.0.10586.545 で変わっていません。
ファームウェアリビジョンは、 1028.020.001.92 になっていました。
本日時点の各バージョンは、
  • バージョン:1511
  • OSビルド:10.0.10586.545
  • ファームウェアリビジョン番号:1028.020.001.92
  • ハードウェアリビジョン番号:1.0
  • 無線ハードウェアバージョン:1.0
  • チップSOCバージョン:8952
ファームウェアリビジョンが上がっている=trinity側の更新のはずだ、ということでタイトルにはtrinityをくっつけてます。
違ったら記事をなおそう。



Firebird Embededのお勉強 ISQLの使い方 DBの作り方

公式ドキュメントにも詳しく書いてありますし、検索すれば色々出てきます。

これは単なる自分メモ

isql.exe
CREATE DATABASE 'HOGE.FTB' USER 'SYSDBA' PASSWORD 'masterkey'' PAGE_SIZE = 8192 DEFALUT CHARACTER SET UTF8;

CREATE後は、そのままそのDBに接続されている状態なので、クエリを実行できます。


達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

新品価格
¥2,808から
(2016/8/31 20:45時点)

SQL Server BCPユーティリティ 空文字はNULL文字として出力される

恥ずかしながら知りませんでした。

ココで確認

>bcp ユーティリティは、データを抽出するときに、空文字列を NULL 文字列で、NULL 文字列を空文字列で表すことに注意してください。
NULLをNULL文字 で、ではなく、NULL なら空文字。
空文字なら NULL文字。
直感と逆なんですね。

なんでコレに困ったか

bcpで吐き出したファイルを別プログラムで処理しようとしました。
んが、途中でNULL文字が入っているため、本当なら空文字として取り扱いところが、終端文字として扱われてしまってうまく処理できなかった、という。

SQL Server 2016の教科書 開発編

新品価格
¥3,888から
(2016/8/27 22:22時点)

布団が俺を呼んでいる | Windows Mobile

布団が俺を呼んでいる

丘山大一のぶろぐ

NuAns NEO Anniversary Update配信 遅れる模様

ぐぼあ(吐血)https://neo.nuans.jp/news/20160817/まあ配信されてから問題が起きても困るしね。きちんとテストされているということが分かって何より。 [もっと読む]

Windows Phone (Windows Mobile) Windows Update 後の再起動ににかかる時間(10.0.10586.545)

バタバタしているので、ちょっと更新のタイミングをずらしました。今回はこんな感じいつものごとく、アップデートファイルのダウンロードや更新自体は完了しているので、再起動にかかる時間だけです。画面上に歯車が [もっと読む]

ポケモンごぉ~

流行っているらしいですね。Windows 10 Mobile 日本ストアでさっそく検索してみましょうおや、おかしいですね。なんかGoぽさを感じない検索結果ですが。ありていにいって見つからないのですが。 [もっと読む]

Windows Phone (Windows Mobile) Windows Update 後の再起動ににかかる時間(10.0.10586.494)

手動再起動。今回はこんな感じいつものごとく、アップデートファイルのダウンロードや更新自体は完了しているので、再起動にかかる時間だけです。画面上に歯車が出てきてクルクル回るのがほぼ10分。ロゴが表示され [もっと読む]

Windows Phone (Windows Mobile) アップデートの再起動ににかかる時間(trinity) 201606

近頃体調不良でどうにも……さて、本日更新しました。再起動を手動でかける画面の歯車がクルクル回るのが約5分。プログレスバーが約5分。合計10分弱くらいでした。前回よりわずかですが短い印象。アップデート終 [もっと読む]

Windows Phone (Windows Mobile) Windows Update 後の再起動ににかかる時間(10.0.10586.420)

いい加減、今回からタイトルを「Windows Mobile」をメインに変えるべきだろうか。OSはWindows 10 Mobileだしなあ……でもWindows Phoneの方が通りがよくて、なかなか [もっと読む]

Windows Phone (Windows Mobile) アップデートの再起動ににかかる時間(trinity) 201605

「電話の更新」が昨日来ていました。すぐに更新したかったのですが、寝る直前で気が付いた => 計測のためには起きてなくてはいけないだったので、更新を延期。本日更新しました。再起動を手動でかけるというわけ [もっと���む]

UWPアプリが、Windows Phone (Windows Mobile)  に配置できなくなった

最後に配置してから間が結構あったので、何がトリガーだったのか分かりません。色々見ていると、・OSのビルドバージョンが上がったから・ストア申請用のパッケージを作成したからあたりが原因ぽいですが、確証には [もっと読む]

Windows Phone (Windows Mobile) Windows Update 後の再起動ににかかる時間(10.0.10586.318)

OSのビルドバージョンが10.0.10586.318に上がりました。いつものように、更新後の再起動を手動でかけてみる手動再起動GO!今回はこんな感じでしたアップデートファイルのダウンロードや更新自体は [もっと読む]

Windows Phone (Windows Mobile) edge は shift jis 未対応?

文字化けじゃー(ぎゃー)要約会社から送られてきたhtmlファイルをedgeで開いたら文字化けした。エンコードの設定をいじればいいだろ、と思ったら見つからず。クライアントデスクトップのedgeでは文字化 [もっと読む]