tmytのらくがき

個人の日記レベルです

Twitterのレスポンスは人が理解できるものではなくなったのだよ

TwitterのRESTとStreamingのレスポンスがあまりにも難しすぎて忘れてしまうのでメモ。

  1. RESTでtweet_mode=extendedがついていない場合
    1. 添付画像のURLを含めて140文字以下の場合
      • 今まで通りtext, entities, extended_entities が設定される
    2. 添付画像のURLを含めて140文字を超える場合
      • textには全文表示URLを含んだものが設定される。
      • truncatedフィールドがtrueになる
      • entities, extended_entitiesに画像などは含まれず、全文表示URLのみが含まれる
  2. RESTでtweet_mode=extendedがついている場合
    1. 添付画像のURLを含めて140文字以下の場合
      • textはなくなる。代わりにfull_textが増える
      • truncatedフィールドはfalseになる
      • display_text_rangeフィールドが増えて、本文範囲が明示される
      • entities, extended_entities はこれまで通り
        • 含まれるindicesはfull_textに対して正しい値が格納される
  3. Streamingの場合
    1. 添付画像のURLを含めて140文字以下の場合
      • 今まで通りtext, entities, extended_entities が設定される
    2. 添付画像のURLを含めて140文字を超える場合
      • textには全文表示URLが含まれる
      • entities, extended_entitiesに画像は含まれず、全文表示URLのみが含まれる
      • extended_tweetフィールドが増える
        • ここにfull_text, display_text_range, entities(画像入ってる)がある
        • extended_tweet.entitiesはextended_entitiesと同様に複数枚画像に対応してる

つまるところ、全部のパターンをパースしようと思うと

  1. extended_tweet フィールドを見る
  2. full_text をみる
  3. text をみる

とかしないといけなくてくそめんどい

追記: entities を見るときは

  1. extended_tweet.entities をみる (extended_tweet.entitiesはextended_entitiesを包含しているので単体でOK)
  2. 画像はextended_entities、それ以外はentitiesをみる

で、いけます。こっちもめんどい。

結論

くそめんどい

Windows 10からAndroidのテザリングをONにしてみたい

追記(10/16 11:02): もう少しちゃんと書きました。

TL;DR

背景

Windows 10 Mobileだと、Bluetoothでペアリング済みでPC、電話ともにBluetoothがONになっているとWifiテザリングの設定を端末に触ることなくONにできる機能がありますよね。 macOSiOSでもできるあれです。あれのWindows版。VAIOXperiaのセットでも独自実装されてるやつがありますね。

でも今日はWindows 10の標準実装でMicrosoft拡張のMS-TCCです。詳しいことがEngadgetに書いてました。

japanese.engadget.com

ようするにBluetoothでMS-TCCというプロファイルをサポートしていれば、Windows 10Wifi設定からテザリングを有効にできますよ。という感じ。

MADOSMAをこの機能のためだけに比較的使ってたのですが、よく考えたらこれAndroidでもできるんじゃないかなぁ…と思い、調べてたらこの仕様ってちゃんとドキュメントあるんですね*1

下調べ

MS-TCCのドキュメントを読むとやらないといけないことと、必要な情報がいくつか。

  • 必要なもの
  • やらないといけないこと
    • SDPでGUID {232E51D8-91FF-4c24-AC0F-9EE055DA30A5} を広告
    • リクエストを処理してテザリングを有効にする
  • やったほうがいいこと
    • 端末が圏外かどうかとか見てエラー返す

必要なもののうち、ESSIDとパスフレーズWifiManager#getWifiApConfigurationをリフレクションで叩くと普通に読める。問題はBSSIDで、フィールドはあるけどここに入ってない。BSSIDは通常MACアドレスと同じなのでMACアドレスを読めばいい…のだけど、Android 6.0からWifiMACアドレスが読めなくなってしまった。ので今回はなぜかまだ正しい値を読めるip addrコマンドを実行して結果からMACアドレスを探すことに。

やらないといけないことについては、BluetoothAdapter#listenUsingRfcommWithServiceRecordBluetoothソケットを作るとSDPは広告できるし、リクエストを処理してテザリングを有効にするのはWifiManager#setWifiApEnabledをこれまたリフレクションで叩くと実現できそう。

できました

そんなこんなでやってみたら動いたのでGitHubにソースとかおいておきました。

github.com

ところで、MS-TCCのドキュメントを読んでいただければわかるとおもいますが、この仕様、テザリングをONにすることはできるのにOFFにすることはできないんですよ。なのでテザリングの自動OFF機能がついてる機種以外はONになりっぱなし。最後OFFだけ手動でやってください。

いまのところAPKなしでソースだけなので各自ビルドしてください。あとBluetoothがOFFだった時のエラー処理が何も入ってないのでたぶんやばいです。 BluetoothがOffだったりOn/Offされたときにおかしくならないようにして、APKにしました。GitHubのReleasesからどうぞ*2

これできたからRobinのテザリングWindows 10からリモートでONにできるようになったのでますますMADOSMAの出番が減ってしまいそうだなーって…

ドメインレジストリが逮捕されてしまったら

追記 (8:39 AM): よく読んだらレジストリでした。

背景

僕はKA.TJというドメインを101domainで購入し、優先度の低いメールアドレスのために運用していました。 このドメインは、今年の4月が有効期限となっていたので2月に更新手続きをしていました。

ところが、いつまでたってもPending Approbal(保留中)という状態から一向に進みません。 サポートチケットを何回か作って、どうなってるんだ、レジストリをせっついてくれ。と言っていたのですが、まったく状況は改善しません。 まぁそんなに急いでなかったので割と放置してたというのもあるんですが、ぶっちゃけ放置してました。

ちなみにTJドメインタジキスタンドメインです。タジキスタンは2016年10月11日現在の外務省海外安全情報によると”レベル2: 不要不急な渡航は止めてください”ですね。

事件

そういやあれ、いまだにPendingだしいい加減払い戻ししてもらいたいなぁ…と最近ふと思い出し、そのうちサポートにまた問い合わせようかな。 と思っていたところ、たまたま今朝チャットサポートが使える時間に思い出したのでチャットサポートに問い合わせてみることに。

またレジストリせっついとくって言われるだけかなー。と思いきやここで驚きの返答が。

22:14 Corey K: The TJ registry has been unavailable to the world. Apparently the people running the registry were arrested.
22:15 Yutaka: !? It is really?
22:15 Corey K: Apparently
22:17 Corey K: I recommend you open a support ticket, our account manager that handles .TJ will respond

ざっくりこういうかんじ。

僕「なーなーなんでいまだにPendingなん
サポート「TJレジストリが世界的に利用できなくなってる。たぶんだけどレジストラを運用してた人間が逮捕されたっぽい
僕「まじすか
サポート「まじっぽい

学び

Bash on Windowsのtmuxセッションが終了して悲しくならないために

Bash on Windowsって、bash.exeがホストしてるLinuxサブシステムで動いてます。複数のbash.exeを起動してもそこはなんかいい感じになっていて*1プロセスごとにインスタンスを作ってLinuxサブシステム用のプロセスをそのインスタンスの中で起動するという動きだそうです。

で、bash.exeが終了した時点でセッションへの参照がデクリメントされて、最終的にセッションへの参照が0個になった時点でLinuxサブシステムが終了したみたいな動きになります。困ったものです。

通常困らないのですが、tmux起動してその中で作業やっていて、ウィンドウ閉じちゃったりするとLinuxサブシステムごと終了してtmuxインスタンスはなかったことに。結果悲しみに包まれるということが起こりえます。

そこで先行研究もせずに、COMパワーを駆使してLinuxサブシステムのインスタンスを作るだけ作ってほったらかし。あとはタスクトレイに常駐する。というツールをこしらえておきました。

github.com

Bash on Windowsでウィンドウ閉じるとtmux終了して悲しみに包まれる人たち向けです。

*1:システムのデフォルトのセッションを使ってる

IIJmioのKDDIプランSIMが届いたよ!

IIJmioKDDI回線が10月スタートしています。昨日やっと受け取ることができたので手持ちの端末にいろいろ刺してみました。

契約はSMS付き契約で、音声はありません。音声通話できるかは未確認です。

端末 通信できたか 備考
Nextbit Robin × 設定変えたりしてもだめ
Xperia Z4(KDDI版) CPA設定でAPNを入力する
Nexus 5X
iPhone SE docomoと同じプロファイルをインストール
MADOSMA Q501 × 14936.1000、圏外
NuAns NEO × 14393.189、圏外
Zenfone 5 × そもそも電波つかまない
Xperia Z Ultra KDDI版+UKROM+Unlocked

Moto G4 PlusあたりのDSDSな端末でところですね

ANAのプレミアムポイントがたまった

f:id:tmyt:20161008104618j:plain

なんとなく今年はちょっと50000PP貯めてみるか…!と思い立ったので、比較的頻繁にANAに乗ったりしてました。9月中頃に急きょインドへ行ったりしたのでそこで50000PPたまってプラチナ事前サービス基準に到達したけど、id:c-mitsuba と沖縄いこーという話をしてたのでエクストラステージ。 ちなみにこんな感じで飛行機にのりました。

日付 便名 From To 運賃 マイル PP
3/11 NH623 HND KOJ プレミアム株主優待 826 1902
3/14 NH630 KOJ HND プレミアム株主優待 826 1902
4/30 NH39 HND ITM 特割C 231 820
5/4 NH40 ITM HND 特割C 231 820
5/16 UA838 NRT SFC エコノミー: Q 3591 3591
5/22 UA837 SFC NRT エコノミー: Q 3591 3591
6/4 NH630 HND CTS プレミアム株主優待 796 1675
6/5 NH72 CTS HND プレミアム株主優待 796 1675
6/18 NH583 HND MYJ プレミアム株主優待 683 1495
6/19 NH592 MYJ HND プレミアム株主優待 683 1495
7/1 NH57 HND CTS 株主優待 477 1165
7/3 NH70 CTS HND プレミアム株主優待 796 1675
7/8 NH415 HND UKB 特割C 262 820
7/10 NH20 ITM HND プレミアム特割A 437 1100
7/23 NH469 HND OKA プレミアム株主優待 1537 2860
7/23 NH1771 OKA ISG 特割C 231 770
7/23 NH1770 ISG OKA 特割C 231 770
7/23 NH476 OKA HND プレミアム株主優待 1537 2860
8/6 NH35 HND ITM ビジネスきっぷ 406 960
8/18 NH35 HND ITM ビジネスきっぷ 406 960
8/21 NH28 ITM HND 特割C (プレミアム) 507 1100
8/27 NH28 ITM HND 特割C 304 820
9/3 NH995 HND OKA プレミアム株主優待 1783 2860
9/3 NH1725 OKA MMY 特割C 191 665
9/4 NH1730 MMY OKA 特割C 191 665
9/4 NH478 OKA HND プレミアム株主優待 1783 2860
9/18 NH829 NRT BOM エコノミー: U 4263 4411
9/21 NH830 BOM NRT エコノミー: U 4263 4411
  • 合計マイル: 31859
  • 合計PP: 50698

合計28便、うち国際線が4回。国際線はQ運賃とかU運賃とかだったけど両方出張なのでらっきーという感じでした。50000PPたまった後も沖縄いったり、キャンペーンでプレミアムポイントが5%積算されたり、11月にシアトルいったりするので最終的には63000PPくらいになりそう。でもさすがに10万はちょっとなー……

いつの間にかWindowsストアにアプリを提出するAPIが使えるようになってました

Build2016あたりでアナウンスされていた、ストアにアプリを提出するAPIがいつの間にか使えるようになっていたみたいです。と言ってもまだ全員ではないみたい。

このドキュメントの更新日が2016/9/6なので、この時点ではまだFeedbackからAPIつかいたいお!!!!って申告した人に順次APIが利用できるフラグを立てていっているようです。 僕のDevCenterアカウントはこのフラグが有効になっているので、このAPI経由でAristeaの毎日更新チャネルというのを作ってごくごく一部のユーザさんに提供しています。*1

で、Aristeaは今現在VSTSで毎日午前3時から自動ビルドされているのですが、その成果物を自動でDevCenterになげたいですよね。っていうわけで作ったのがこれです。

Azure ADを設定したりうんぬんいろいろすると使えます、がいつのまにか公式でVSTS対応のアドオンがリリースされていたのがこちら。

このアドオンにいま勝てるところといえば、Package Flightに提出できます!!ってところだけです。しかしここも

まもなく実装されるようです。もうなんだか早くもいらない子です。

一応インストールの仕方だけ書いておきます。インストールにはnodeが必要ですが、お手元のWindows 10 AUBash on WindowsでもOKです。

; nodeない人むけ
$ git clone https://github.com/isaacs/nave.git
$ cd nave
$ ./nave use latest
$ cd ..
; ここからインストール
$ git clone https://github.com/tmyt/wspublish-task.git
$ cd wspublish-task
$ npm install
$ npm run tfx-upload

*1:ご希望あればTwitterあたりでご連絡くださいませ