布団が俺を呼んでいる

丘山大一のぶろぐ

ドラッグアプリ

変な現象出た。環境はWin8.1。

現象

いつものように開発している時、ファイルをドラッグ&ドロップしたら、画面上に残像が残りました。


なんぞコレ?
なんか面白いけど邪魔……
しかし消えませんねー……仕方ない、サインアウトしてみますか。
というわけでサインアウトしようとすると


ありゃ?
え、Dragアプリって、マウス操作のドラッグのことですよね?
これってアプリ扱いだったの?
思えばドラッグの仕組みってなにも知らないけど、勝手にマウス操作の入出力の処理結果のことを指すものだと思っていました。

結局どのプロセスやねん、とか色々気になりましたけど、お仕事があったので調査できませんでした……
ドラッグの仕組みについて詳しい人、この現象が何なのか教えてください。


マイクロソフト 【Surface用】アーク タッチ マウス Surface エディション E6W-00008

新品価格
¥6,912から
(2017/11/11 21:49時点)

唐突な敗北感に襲われた

現代のコンピュータを理解する上で必須な2進数。
10001110100111101011001001100001100……

この「2進数」という言葉の中に、


「2」


という数字が出てくる事実に謎の敗北感を覚えた。



デジタル数学に強くなる―2進数のナゼとナルホド (ブルーバックス)

中古価格
¥1,518から
(2017/11/2 02:42時点)

ちょっと一息

私事ですが、ちょっとやらなくてはならないことができたので更新が少なくなりそう。
断じてWindows Mobile の影響ではありません、ええ、違いますとも。

突然ですが本日気になったor面白かった読み物

キネクト、終わっちゃうのか~。

Windows Mobile の今後について。
ある意味でしばらくは安心だよ、という悲しみと安心に満ちた記事。

これを読んで、初めてKPIの意味が分かりました。
これまで腑に落ちたなかったところがストン! と体の中に入ってきた感じ。
素晴らしい。




Windows 10 Mobile Windows Update 後の再起動ににかかる時間(10.0.15063.674)

Windows Phone が死んだ、という意見をチラホラ見ますが、彼らは間違っています。
私は言いたい。


そもそも生きているWindows Phoneを見たことはあるか?

ぜひ、覚えておいて頂きたい。

死ぬためにはな、一度は生きていなきゃいけないんだよ!


というわけで、今回はこんな感じ

アップデートファイルのダウンロードや更新自体は済。再起動にかかる時間だけ……だったんですが。
再起動後、10分ほど経過して電源が落ちる(?)
電源ケーブルをつないで再起動。
再起動後、およそ6分ほどで更新完了。
トータルでは18分ほど。
うう~ん、今回は参考になりませんね。
不安すぎるよ……


バージョン

端末はNuAns Neoです。
本日時点の各バージョンは、
バージョン:1703
OSビルド:10.0.15063.674
ファームウェアリビジョン番号:1028.020.001.95
ハードウェアリビジョン番号:1.0
無線ハードウェアバージョン:1.0
チップSOCバージョン:8952


しばらくはWIndows Mobile ユーザでいますけど、移住先も探さないとなあ……
すすめられたZenFone あたりか、はたまた安心安定のiPhone か……
またトチ狂ってAmazon がスマホ出さないかな……そういう話も春ごろあったような……

移住先選定中↓


ASUS エイスース Zenfone 4 5.5 ZE554KL ブラック(SIMフリー 4GB 64GB 台湾版) (ブラック) [並行輸入品]

新品価格
¥44,220から
(2017/10/11 20:47時点)

MATH POWER 2017

見に行ってきました。
全然分からなかったw


細かいことはいいんだよ

プログラムとは言ってしまえば機械、計算できる・計算するもの。
やはり根本は数学であり、話を聞いていると何か繋がりを感じました。
もっとも、全然応用はできそうにないのですが、それはそれでよいかな、と思っています。
MATH POWER は、どちらかといえば純科学の祭典。
ピュアな科学としての数学を楽しめばよいのです。

ああ、話を聞いても全然理解できなかった負け惜しみだとも!ちくせう。




ベーシック圏論 普遍性からの速習コース

新品価格
¥3,996から
(2017/10/10 07:42時点)

上橋菜穂子と精霊の守り人 展

上橋菜穂子と〈精霊の守り人〉展 に行ってきました。
が、すいません、精霊の守り人読んだことありません(汗)

展示会で気になるものが……

ミラールームがあって、人が入ると対応してモゾモゾゴソゴソ動く何かがありました。
言い方は非常に雑ですが、なにやら幻想的な雰囲気が醸し出されている展示です。
そこでふと上を見てみると!
そこにあったのは!


Xbox One Kinect センサー

新品価格
¥13,952から
(2017/9/18 20:12時点)


xboxのマークがついているううう。
kinect だぁ。


精霊の守り人にもMSの技術が使われていたのか……



増補改訂版 「守り人」のすべて

新品価格
¥1,080から
(2017/9/18 20:17時点)

Windows 10 Mobile Windows Update 後の再起動ににかかる時間(10.0.15063.608)

リンゴさんの発表がありましたが、それはそれとしてUpdate.
そういやシアトルMS本社にも遊びに行きましたが、みんなiPhone使ってた気がします。がっでーむ。


今回はこんな感じ

アップデートファイルのダウンロードや更新自体は済。再起動にかかる時間だけです。
合計17分程度で更新が完了しました。
前回同様、ちょっと時間がかかった感じ。
状況によって時間は大きく前後すると予想されますので、目安の一つとして。


バージョン

端末はNuAns Neoです。
本日時点の各バージョンは、
バージョン:1703
OSビルド:10.0.15063.608
ファームウェアリビジョン番号:1028.020.001.95
ハードウェアリビジョン番号:1.0
無線ハードウェアバージョン:1.0
チップSOCバージョン:8952



mouse SimフリーWindowsPhone (Simフリー/Windows10 Mobile/Office Mobile/大画面 6型フルHD/3GBメモリ/保護シート付) MADOSMA Q601

新品価格
¥20,175から
(2017/6/18 00:01時点)

シアトル行ってきました

本業の研修+旅行です。
前後の準備期間とか合わせると10日ほどもっていかれました。
この頃、更新していなかった理由はこれ、ということで。

シアトルについて

シアトルにはMS、Amazonの本拠地があります。私はMS信者なので参拝にも行っています。
御布施/初穂料はストアでの買い物(おみやげ)で代替。
スタバの一号店もありますが、余裕のスルーかましました。
※個人的に喫茶店の一号店に特に有難みを感じませんでした。周りの人は結構行っていました。
とりあえず曇りすぎですね、現地。


観光とか

スペースニードルとかいう宇宙世紀に出てきそうな塔や、ボーイングの工場やダウンタウンなんかをウロチョロしてまいりました。あと人生初の野球観戦とかね。
個人的にはボーイングの工場が面白かったかな。大型航空機は日本国内では工場がありませんから、見られる機会は貴重です。

Jアラート

Windows 10 Mobile + 格安simの私は鳴りませんでした。
アプリを入れろ、ていう声もあるけどWindows 10 Mobile 対応したアプリってあるのかしらん?
未調査です。
 

生き延びるために

iPhoneを持っているお友達と一緒にいることにしよう!



超図解でよくわかる! 現代のミサイル (綜合ムック)

新品価格
¥1,296から
(2017/8/29 21:04時点)

Delphi 戻り値色々

関数の戻り値の指定とその時の戻り値。
適当な実装をした場合、戻り値は不定になるのか? というか不定って何?
というような適当実験。
今回長い。


その1

function TForm1.Hoge: string; 
begin

end; 

実装
無名メソッドではなく、普通のメソッド。
実装は空っぽ。

結果
空文字。


その2

function TForm1.Hoge: string;
begin
  Result := (function : string
             begin

             end)();

  if not Result.IsEmpty then Exit('123');

  Result := (function : string
               begin
                 Result := 'abc';
             end)();
end;

実装
「実装が空っぽ」の無名メソッドを呼び出し、
その時の戻り値が空かどうか調べ、(空でないならExit)
最後まで到達したら無名メソッドで「abc」を返します。

結果
abc

考察
「実装が空っぽ」の無名メソッドであっても、変な値を返すわけではないようです。


その3

function TForm1.Hoge: string;
var
  i : Integer;
begin
  for i := 0 to 1 do
  begin
    Result := (function : string
               begin

               end)();

    if not Result.IsEmpty then Exit('123');

    Result := (function : string
               begin
                 Result := 'abc';
               end)();
  end;
end;

実装
「実装が空っぽ」の無名メソッドを呼び出し、
その時の戻り値が空かどうか調べ、(空でないならExit)
最後まで到達したら無名メソッドで「abc」を返します。
上記をループで2回実行します。

結果
123

考察
デバッグすると分かりますが、一回目のループでのResultは
・Result := 空
・Result := abc
であり、
二回目のループで
・Result := abc のまま!
・Exit句で123 で抜ける
という動作をします。
一個目の無名メソッドが「何もしない何か」あるいは「abcを返す」ようです。


その4

function TForm1.Hoge: string;
var
  i : Integer;
begin
  for i := 0 to 1 do
  begin
    Result := (function : string
               begin
                 Result := '';
               end)();

    if not Result.IsEmpty then Exit('123');

    Result := (function : string
               begin
                 Result := 'abc';
               end)();
  end;
end;

実装
「空文字を返す」の無名メソッドを呼び出し、
その時の戻り値が空かどうか調べ、(空でないならExit)
最後まで到達したら無名メソッドで「abc」を返します。
上記をループで2回実行します。

結果
abc

考察
一個目の無名メソッドで「Result := '';」を明示すれば、きちんと空文字を返すようになり、本体メソッド結果はabcになります。


その5

function TForm1.Hoge: string;
var
  i : Integer;
begin
  for i := 0 to 1 do
  begin
    if i = 1 then
    begin
      Result := (function : string
                 begin

                 end)()
                 +
                (function : string
                 begin

                 end)();
      Exit;
    end;

    Result := (function : string
               begin
                 Result := 'abc';
               end)();
  end;
end;

実装
1回目のループではResult にabcを入れて、
2回目のループで実装が空っぽの無名メソッドの戻り値をくっつけてExit。

結果

考察
ループさせた時の「実装が空っぽ」の無名メソッドは、先ほどみた限りでは「何もしない何か」or「abcを返す」でしたが、今回は「空」が返ってきます。


その6

function TForm1.Hoge: string;
type
  TAct = reference to function : string;
var
  act : TAct;
begin
  act := (function : string
          begin

          end);

  Result := (function : string
             begin
               Result := 'abc';
             end)();
end;

実装
無名メソッドの代入先を宣言してみます。
宣言だけして、使用しません。

結果
abc

考察
まあ当たり前ですね。


その7

function TForm1.Hoge: string;
type
  TAct = reference to function : string;
var
  act : TAct;
begin
  act := (function : string
          begin

          end);

  Result := (function : string
             begin
               Result := 'abc';
             end)();
  Result := act;
end;

実装
無名メソッドの代入先を宣言してみます。
一度別の値を無名メソッドで入れて、
最後に空っぽのメソッドを呼び出します。

結果
abc

考察
またしても「何もしない何か」or「abcを返す」となりました。


その8

function TForm1.Hoge: string;
type
  TAct = reference to function(n :Integer) : string;
var
  act : TAct;
  i : Integer;
begin
  act := (function(n :Integer):string
          begin
            if n = 0 then Exit('あいうえお');
            if n = 1 then Exit;
          end);

  for i := 0 to 1 do
  begin
    Result := act(i);
  end;
end;

実装
引数に応じて戻り値を返す無名メソッドです。
n = 0 の時は「あいうえお」
n = 1 の時は特に戻り値を指定しません。
この無名メソッドをループで2回呼び出します。

結果
あいうえお

考察
2回目の結果が「何もしない何か」or「あいうえおを返す」となりました。


その9

function TForm1.Fuga(n: Integer): string;
begin
  if n = 0 then Exit('あいうえお');
  if n = 1 then Exit;
end;

function TForm1.Hoge: string;
var
  i : Integer;
begin
  for i := 0 to 1 do
  begin
    Result := Fuga(i);
  end;
end;

実装
無名メソッドを止めてみた

結果
あいうえお

考察
2回目の結果が「何もしない何か」or「あいうえおを返す」となりました。


その10

function TForm1.Fuga(n: Integer): string;
begin
  if n = 0 then Exit('あいうえお');
  if n = 1 then Exit;
end;

function TForm1.FugaFuga(n: Integer): string;
begin
  if n = 0 then Exit('かきくけこ');
  if n = 1 then Exit;
end;

function TForm1.Hoge: string;
begin
  Result := Fuga(0);
  Result := FugaFuga(1);
end;

実装
似ている二つのメソッドを実装、呼び出してみた。
引数0の時は戻り値を指定して返す。
引数1の時は戻り値を指定しない。

結果
あいうえお

考察
2回目の結果が「何もしない何か」or「別メソッドの結果を返す」となりました。



というわけで


なんとなくわかると思いますが、
・メソッドの戻り値にはデフォルト値がある(今回はstringなので空文字)
・戻り値を明示しない場合、「何もしない」
・戻り値を明示せず、かつメソッドの戻り値を直参照するとデフォルト値を返す
のような動きをします。
「不定」というのは変な値になることではなく、戻り値として参照できる値を返す、といった結果になるようです。
Resultに格納されているアドレスや関数の呼び出し順序なんかに依存してるんでしょう。たぶん。
(ここにきて超絶適当)

Result を初期化するクセをつけておけばいいというだけの話でした。



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

新品価格
¥6,480から
(2017/8/16 20:52時点)