WebAuthenticationBroker便利ですね。特定のURLになったらログイン完了とみなしてURL返してくれる素敵クラスです。
ところでこれ、特定のURLがhttpじゃない何かの時にWebAuthenticationOptions.UseTitle
つけると例外が無慈悲に飛んできます。5分も悩みました。
WebAuthenticationBroker便利ですね。特定のURLになったらログイン完了とみなしてURL返してくれる素敵クラスです。
ところでこれ、特定のURLがhttpじゃない何かの時にWebAuthenticationOptions.UseTitle
つけると例外が無慈悲に飛んできます。5分も悩みました。
いまGoogle I/O 2016に参加してその帰りの飛行機の中です。United Airlinesの機内Wifiがつかえたのでせっかくだからいろいろ試してみました。
このエントリを書いた時点でこのあたりにいます。
まず、United_Wi-FiというSSIDに接続します。すると、172.19.248.0/23なIPが割り当てられます。まぁ乗客が300人程度なので512個あれば足りるはずですね。
とりあえずDNSひいてみたかんじ。
$ nslookup google.com Non-authoritative answer: Server: ns.unitedwifi.com Address: 172.19.248.1 DNS request timed out. timeout was 2 seconds. Name: google.com Address: 172.217.3.14 $ nslookup twitter.com Non-authoritative answer: Server: ns.unitedwifi.com Address: 172.19.248.1 Name: twitter.com Addresses: 199.16.156.70 199.16.156.6 199.16.156.102 199.16.156.230
正しい結果が得られるようです。なるほど。
Webページをリクエストしてみると、全部に対して302 foundが得られるみたいです。
$ curl google.com -v * Rebuilt URL to: google.com/ * timeout on name lookup is not supported * Trying 172.217.3.14... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to google.com (172.217.3.14) port 80 (#0) > GET / HTTP/1.1 > Host: google.com > User-Agent: curl/7.46.0 > Accept: */* > < HTTP/1.1 302 Found < Server: squid/3.4.6 < Mime-Version: 1.0 < Date: Sat, 21 May 2016 21:06:13 GMT < Content-Type: text/html < Content-Length: 0 < Location: http://www.unitedwifi.com < X-Squid-Error: 403 Access Denied < X-Cache: MISS from bc01 < Via: 1.1 bc01 (squid/3.4.6) < Connection: close < 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 * Closing connection 0 $ curl twitter.com -v * Rebuilt URL to: twitter.com/ * timeout on name lookup is not supported * Trying 199.16.156.70... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0* Connected to twitter.com (199.16.156.70) port 80 (#0) > GET / HTTP/1.1 > Host: twitter.com > User-Agent: curl/7.46.0 > Accept: */* > < HTTP/1.1 302 Found < Server: squid/3.4.6 < Mime-Version: 1.0 < Date: Sat, 21 May 2016 21:07:31 GMT < Content-Type: text/html < Content-Length: 0 < Location: http://www.unitedwifi.com < X-Squid-Error: 403 Access Denied < X-Cache: MISS from bc01 < Via: 1.1 bc01 (squid/3.4.6) < Connection: close < 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 * Closing connection 0
C:\>ping 172.19.248.1 Pinging 172.19.248.1 with 32 bytes of data: Reply from 172.19.248.1: bytes=32 time=8ms TTL=64 Reply from 172.19.248.1: bytes=32 time=12ms TTL=64 Reply from 172.19.248.1: bytes=32 time=6ms TTL=64 Reply from 172.19.248.1: bytes=32 time=16ms TTL=64 Ping statistics for 172.19.248.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 6ms, Maximum = 16ms, Average = 10ms
302 Foundで示されているURLへアクセスすると20ドル払えといわれます。
まぁせっかくなので払うとすべてのURLに302 Foundを返すあれがなくなってこうなりました。
$ curl twitter.com -v * Rebuilt URL to: twitter.com/ * timeout on name lookup is not supported * Trying 199.16.156.38... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0* Connected to twitter.com (199.16.156.38) port 80 (#0) > GET / HTTP/1.1 > Host: twitter.com > User-Agent: curl/7.46.0 > Accept: */* > < HTTP/1.1 301 Moved Permanently < content-length: 0 < date: Sat, 21 May 2016 21:12:52 GMT < location: https://twitter.com/ < server: tsa_b < x-connection-hash: 8cf7ac5f78c055ca55106e70cb0b3426 < x-response-time: 3 < Connection: Keep-Alive < Set-Cookie: guest_id=v1%3A146386517242165290; Domain=.twitter.com; Path=/; Expires=Mon, 21-May-2018 21:12:52 UTC < 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 * Connection #0 to host twitter.com left intact
衛星経由なのでPINGはかなり遅め。まぁしかたない。
>ping 8.8.8.8 Pinging 8.8.8.8 with 32 bytes of data: Request timed out. Reply from 8.8.8.8: bytes=32 time=745ms TTL=51 Reply from 8.8.8.8: bytes=32 time=799ms TTL=51 Reply from 8.8.8.8: bytes=32 time=921ms TTL=51 Ping statistics for 8.8.8.8: Packets: Sent = 4, Received = 3, Lost = 1 (25% loss), Approximate round trip times in milli-seconds: Minimum = 745ms, Maximum = 921ms, Average = 821ms
速度は…まぁTwitterぐらいならできるんじゃないですかね
今、Google I/Oでアメリカに来てます。アメリカなんて近いもんで10時間ぐらい飛行機にのってたらぷらーっとこれます。楽ちんなもんです。
ところで、みなさんIIJmio使ってますか?私も使ってます。でもって、アメリカに来ました。でもって、昨年11月に買ったT-MobileのSIMがあったんでIIJmioのSIM刺した電話はほったらかしにしてたんです。ほったらかしに。
そしたら突然電話かかってきたわけですよ。画面をみたら+81xxxxxxxx …えっ?っておもったけども見覚えのある番号だったのでとりあえず出ました。
*「Azure課金サポートの鈴木(仮名)です」
そして思ったわけです。あれこれやばい奴じゃないの。そこで、アメリカの番号に日本から国際電話でかけなおしてもらえないかお願いしたところ、快諾してもらえたのでとりあえずよかったのですが。
ふと気になったのでIIJmioのサポートを見てみました。
音声通話機能付きSIMカードでは、国際電話及び国際ローミングがご利用いただけます。 サービスの利用方法については、NTTドコモのホームページ(新しいウィンドウを開きます)をご確認ください。
ふむふむ。
音声通話(1分あたり) 175円
なるほど175円。
なるほど2分50秒。つまるところ、切り上げて3分なので525円じゃな…?
IIJmioが国際ローミングで音声通話を発着信できるので、うっかりフリーダイヤルから着信するとフリーどころか着信課金で500円も持っていかれた話でした。
デザインと開発の会社silkeyfeelのみつばたんと、ソフトウェアの販売とかをやっているエクセルソフトの田淵さんの主催でHololensを触れる機会を作ってもらったので遊びに行ってきたよ!
大きいのがHololens、小さいのがClickerって呼ばれてるクリックだけできるBluetoothデバイス。たぶんBLEじゃないかな
DEVELOPMENT EDITION。かっこいい
40万のゆたんぽという噂
すごくかっこいい、未来っぽい
中から見るとこういう風にみえるみたい。液晶みたいなのが3枚くらいあるのがみえますね
設定をみんなでみようって、Webカメラでスクリーンに出そう!ってやってるみたい。
エクセルソフトの田淵さん、ホロレンズを被る図
Hololens思ったより軽くて、描画もすごくなめらかでした。Hololensを被ってる人たちみてると現実とは違う別の世界を見てる感じ。スマートフォンを通して違う世界をみていたIngressがもっとすごくなった感じ。
Kinectと同じ仕組みでHololens自体が世界を認識していて、バーチャルとリアルの境界面をしっかり処理しているという雰囲気。これでWindows 10が普通に動いてて、普通にアプリケーションが実行できるなんて すごい時代になったもんだなー。
赤外線でセンシングしているから直射日光とか、屋外とかはだめ(らしい。取説に書いてた。)けど、屋外でも使えるようになったら、すごい時代だよなー。普通の人が触れるようになるのは何年さきなのかしら。
とりあえずアプリデプロイしたいなー…
Windows 10時代のUWPは画面幅を中心にUIを考えろ。というガイドラインですが、やっぱ電話は片手で、PCは広い画面で。でもContinuum for PhoneしたときはPCみたいな広い画面で使いたいわけです。 でもって、Continuum for Phoneしてる時でもDeviceFamilyはMobileなのでそこんところを考慮していろいろやるとこういうXAMLができました。
Continuum for PhoneだとContinuum。電話で表示するとMobile。PCで広い画面だとWide。狭い画面だとNarrow。が表示されるXAMLです。
画面の広い、狭いはAdaptiveTriggerで。それ以外の2個はカスタムのStateTriggerを使ってます。それぞれの実装はこんな感じ。
条件の厳しいものから上にならべるとうまくいきます。実際はContinuumStateTriggerをちょっとカスタムして、Mobileで非Continuum状態というStateTriggerにしてMobileを判定。それ以外は画面幅にフォールバックとかがPCとContinuum for Phone で同じレイアウト、電話だけ違うレイアウトがやりやすいと思います。
OnCreateAutomationPeer
を呼んでくれない)<!-- こうするとSIPが閉じない --> <Button IsTabStop="false" />
Aristeaの電話版とかでInputPaneが開いてる状態でボタンを押そうとすると InputPaneが閉じて操作しづらいとかそういうのがあります。
実際Aristeaでも使いづらくてどうにかしたいと思ってたところ、方法を見つけたので書いておきます。 このコードをプロジェクトに追加して、Button使ってるところで代わりにMenuStyleButtonを使うと、 ボタンを押してもInputPaneが閉じなくなります。
public class MenuStyleButton : Button { public class CustomButtonAutomationPeer : ButtonAutomationPeer { public CustomButtonAutomationPeer(Button owner) : base(owner) { } protected override AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Menu; } } protected override AutomationPeer OnCreateAutomationPeer() { return new CustomButtonAutomationPeer(this); } }
やってることは、Controlに対してAutomationPeerを要求された場合に、カスタムのAutomationPeerを返答し、 さらにカスタムのAutomationPeerの中でAutomationControlType.Menuを返答すると、なんとInputPaneが閉じなくなります。
というのは、MSDNのこのへんにしれっと書いていました。
テキスト入力のコンテキストでフォーカスがテキスト入力フィールドから移動したときにキーボードの表示を持続させるには、カスタム コントロールに適切な UI オートメーションの AutomationControlType を使います。たとえば、テキスト入力シナリオの半ばでメニューを開くときに、キーボードを表示したままにするには、このメニューに Menu の AutomationControlType が必要です。
タッチ キーボードの表示への応答 - Windows app development
Aristeaはたぶん今日夜ぐらいに対応してリリース予定です。https://msdn.microsoft.com/ja-jp/library/windows/apps/mt185611.aspx
表題の通りですが、.
を含むプロジェクトを含んだソリューションをmsbuildを使って
なおかつ/tパラメータでビルドするプロジェクトを指定しようとするとなぜかうまくいきません。
理由は、msbuildが.slnを.metaprojに変換するときにプロジェクト名に含まれる.
を_
に置換してしまうかららしいです。
なので、たとえばこういう古いUniversalプロジェクトで見かけるコマンドライン
msbuild App1.sln /t:App1\App1.Windows
これは
msbuild App1.sln /t:App1\App1_Windows
と書き換えるとうまく動きます。
なぜこうなっているかはよくわかりませんが、MSBuildがうまくいかない時はmetaprojを生成させて、そのファイルを読むとわかるかも。
metaprojを生成するにはmsbuildemitsolution環境変数に1を設定してあげるといいです。たとえばこんな感じ。
> set msbuildemitsolution=1 > msbuild App1.sln
こうすると、App1.slnの隣にApp1.sln.metaprojというファイルができます。こっちがmsbuildが解釈するプロジェクト形式なので ここを見てあげると今回のような実はプロジェクト名が書き変わっていたということに気づけます。というかこれを出力させるまで全く分からなくて1日使いました。