投稿

ISUCON10 予選通過しました #isucon

イメージ
チーム名 hidekiy で、 @kotaroy と ISUCON10 予選に参加して、何とか通過しました。 ブログ記事の募集期間が終わらないうちに、当日の行動について記録しておきます。 タイムライン 12:20 予選開始 仕様把握、なぞって検索が本丸っぽい予想。 不要そうな node_modules, target を抜いて、コードを Git 管理する。SSH のエージェント転送で連れてきた鍵を使って、サーバーから直接 GitHub にアクセスしてデプロイとかやる事にする。 サンプルの SSH の設定ファイルに、8081~8083 でそれぞれのサーバーのポート80を開けるようにする設定を入れた LocalForward を追加してチーム内に共有した。 14:00 去年のISUCON予選1位チームのありがたい記事  ISUCON9 予選を全体1位で突破しました  で学んだ Cloud Trace, Cloud Profiler をまず設定する。New Relic はプロファイルが取れれば不要と思ったんで、入れない事とする。リソース監視は top を更新間隔1秒で目視確認して行う事にした。 いずれ問題になってくると思ったんで、nginx.conf でのボット対策を依頼した。 15:00 検索機能がクソ重い事分かったんで、ソート用にいくつかインデックスを追加 (EXPLAIN 確認してない) MySQL サーバーのスレーブ追加を依頼 16:00 なぞって検索のN+1クエリについて、1段目のクエリのWHERE条件に、後段の条件を追加する感じで修正して対応した。 SELECT  * FROM  estate WHERE   latitude <= ?  AND  latitude >= ?  AND  longitude <= ?  AND  longitude >= ?    AND  ST_Contains(ST_PolygonFromText(%s), ST_GeomFromText( CONCAT ( 'P...

Google Trust Services 用の CAA レコードを追加しました

イメージ
当ブログで使っている独自ドメイン hidekiy.com では、学習用で無駄に CAA レコード  を設定して証明書発行が出来る認証局を制限しているのですが、 Google Trust Services (GTS)  についてのレコードを追加した事についての記事です。 2018年に設定した当初は、 Blogger の独自ドメイン用証明書には Let's Encrypt が使われていたので、以下のような CAA レコードを設定していました。 0 issue "letsencrypt.org" 0 issuewild "letsencrypt.org" その後、巷の Blogger のブログでは GTS へ変更されているのに、何故か自分のブログだけ GTS に切り替わらないのが気になって調査した結果、GTS の証明書発行が出来るような CAA レコードを設定する必要がある事が分かり、 Google Trust Services, Certificate Policy などを参考に、 0 issue "pki.goog" 0 issuewild "pki.goog" を追加したところ、無事 GTS 発行の証明書に置き換わりました。  Blogger 側の挙動としては、GTS、Let's Encrypt の順で発行可能な証明書が発行されているような雰囲気があります。 関連記事 [blogger] ブログの HTTPS 化が完了しました

Intel Dual Band Wireless-AC 7260 付属の Bluetooth がデバイス記述子要求の失敗となる

Windows 10 の PC にて、インテル® ドライバー & サポート・アシスタント というツールを使って、Intel 製のドライバを色々更新していたら、使用していた Intel Dual Band Wireless-AC 7260 付属の Bluetooth 部分が正常に認識されなくなり、デバイス記述子要求の失敗 コード43 というエラーがデバイスマネージャー上で出るようになりました。 再起動、シャットダウン、シフトキーを押しながらシャットダウン、ドライバを削除と色々試したのですが、特に変化なく、途方に暮れていたところ、こちらの記事 圏外恐怖症: デバイス記述子要求の失敗 コード43 なんじゃこれ!! を参考にして、PC の電源をコンセントより抜いて、しばらく放置してから起動したところ、正常に認識され動作するようになりました。 こちらの方法は試していないのですが、同様なエラーを別の方法で解決されているようでした。 超絶はらへ('A`) - USB機器がエラーコード43を返してきた場合の対処方法 詳しく調査していないのですが、必要な何らかのリセット処理が正常に行われておらず、デバイス側とホスト側が矛盾した状態になり、復旧出来なくなる不具合があるのではと想像しています。

ASUS TPM-L R2.0 のファームウェアを 5.63.3144 に更新しました

Windows 10 Version 1803 に更新したところ、Windows Defender セキュリティセンターにて、TPM チップのファームウェアの更新が必要という警告が出るようになったので、さっそく更新してみました。作業内容についてメモしておきます。 更新手順 1. 更新元バージョンを調べて USB ストレージを準備 2. ASUS のマニュアルの指示の通り、以下を実行 2.1. UEFI の設定で、Security Device Support と Launch CSM を Disable 2.2. USB ストレージから起動して、EFI シェルで更新手続きを実行 2.3. UEFI の設定を元に戻して再起動 3. Microsoft の指示の通り TPMのクリアを実行 補足 更新手順はマニュアルの通りで上手くいきましたが、更新元のバージョンに合わせたファイルをダウンロードして使用することが必要でした。 更新元のバージョンによっては、ASUS のダウンロードページで Show all を押すと出てくるもう一つの方を使う必要がある場合があります。 TPM チップのバージョンを確認するには、 Windows Defender セキュリティセンター > デバイスセキュリティ > セキュリティプロセッサ > セキュリティプロセッサの詳細 を見ると良いようです。 EFI シェルに入る方法は、配布されているファイルを、X:\EFI\Boot\BOOTX64.EFI というパスになるように USB ストレージに展開して、起動すれば良いようでした。 UEFI の設定変更や、TPM のクリアを行う際は、BitLocker の保護の中断を行ってから作業をすると回復キーを何度も入れなくて済むので便利です。 リンク セキュリティ プロセッサ (TPM) ファームウェアを更新する - Windows Help TPM-L R2.0 Driver & Tools | Motherboard Accessory | ASUS Global - 2018年5月現在、更新元バージョンの異なる2種類のファイルがダウンロード出来るようになっています。 TPM-L R2.0 Manual | Motherboa...

[blogger] ブログの HTTPS 化が完了しました

Blogger のカスタムドメイン用 HTTPS 対応がリリースされたので、さっそく有効にしてみました。特に追加費用は発生せず、証明書は Let's Encrypt の DV (Domain Validation) 証明書が自動で設定されるようで、大変便利でした。 証明書が設定されたことで、GFE (Google Front End) の配信方式が、HTTP 1.1 から、HTTP 2, QUIC 39 に変更され、やけに最先端感があります (2018/04/01 時点)。また、HTTPS 有効化前からですが、当たり前のように IPv4, IPv6 のデュアルスタックになっています。 ブログ内の http:// な画像は親切なことに Blogger 側で用意してくれたプロキシで https:// な URL に変換されるので、mixed content 問題も回避してくれるようです。 Google App Engine のカスタムドメイン用 HTTPS 機能でも同じように Let's Encrypt + GFE で設定されたので、どうやら同じ仕組みを使っているようです。 特に問題はないと思うので、HTTP サイトの表示変更が予定されている、2018/07 の Chrome 68 リリースまでに、HTTPS リダイレクトまで有効化しておくと良いと思います。 Marking HTTP As Non-Secure - The Chromium Projects

So-net フレッツ回線を IPv6 + DS-Lite に変更して劇的に速度改善しました

イメージ
最近、毎晩8時~12時くらいの時間帯で、So-net フレッツ光マンションタイプのインターネット回線のダウンロード速度が非常に遅くなる (0.1~1Mbps程度) 現象に見舞われており、大変困っていました。 具体的には、YouTube の 1080p や、AbemaTV の最高画質はダウンロードが追い付かず、低ビットレートのモヤモヤした画面を見させられ、アプリの更新やデータダウンロードでもやたら時間がかかるという感じで、この回線に繋がる Wi-Fi よりも、ドコモ Xi の 4G+ の方がずっと速いという、いったい何にお金払っているんだろうかという状況でした。 切り分け用に NTT 東日本の用意してくれている フレッツ速度測定 では、十分に高速 (90Mbps 以上) な速度になっているので、おそらくボトルネックは So-net 用の PPPoE 部分にあるようで、先駆者のブログでの改善報告も参考にして、以下のページより IPv6 接続オプションを申し込みました。 「IPv6」ご利用のご案内 | 会員サポート | So-net 申し込み数時間後、手続きが完了したようで、ルーター広告 (RA) でグローバル IPv6 アドレスが降ってきて IPv6 で通信できるようになり、Google, Facebook, YouTube, Netflix など、IPv6 接続性のあるサイトの速度が改善しました。 この調子で IPv4 の速度も改善するため、So-net での IPv4 over IPv6 トンネリング (IPv6 ネットワーク上で IPv4 の通信を行う技術) のために必要な DS-Lite に対応した無線LANルーター WXR-1751DHP2 を導入してみました。セットアップ自体は PPPoE の設定すら必要なく、有線で繋いで電源を入れるだけで、あとは IPv6 と IPv4 (DS-Lite) の接続性が得られました。 速度測定結果は以下のように、混み合っていた時間帯でも安定してダウンロード 60Mbps 以上は出るようになって、非常に快適になりました。 プロバイダを So-net に変えてから、遅延がひどくてやらなくなっていた、FPS も試しにやってみたところ、ちゃんと敵の居場所が反映されるようになって、レイテンシーも安定し...

[adtech] 行動ターゲティング広告を最大限強化するには

イメージ
インターネット広告について、もし広告ブロッカーなどは使わず、広告を受け入れるポリシーなのであれば、完全に最適化してもらうのも面白いと思います。行動ターゲティング広告という仕組みはご存知であっても、具体的に最適化を強化するには何をすれば良いかは、各社気持ち悪がられることを恐れてか、あまり明確な説明をしていないように思います。そこで、広告の最適化をより進め、広告の配信が楽しみになるアイディアをご紹介します。 まず、Google, Facebook, Twitter, Yahoo! JAPAN など、広告配信に直結したアカウントで、モバイルを含む普段使うすべてのブラウザにログインしましょう。クッキーを受け入れていれば、すでにブラウザごとに履歴が蓄積しているのですが、アカウント経由で全ての行動履歴が統合されることでより正確なプロフィールが仕上がります。 Safari のデフォルトの設定は広告最適化上よろしくないものがあるので、サードパーティークッキーは受け入れる、サイト越えトラッキングも防がない設定に変更すると良いです。 次に、所持しているモバイル端末全てに、各社のモバイルアプリをインストールし、ログインしましょう。これにより、デバイス単位で存在する IDFA (iOS), AdID (Android) の広告用識別子と、ユーザープロフィールが統合され、モバイルアプリ内の広告も最適化が完了します。追加で、位置情報も定期送信しておくと良いです。 これらのユーザーごとに広告配信を最適化する仕組みは、必ずしもリアルタイムではなく、日次~週次ほどのバッチ処理で随時更新されるような雰囲気です。すぐに面白い広告が出なくともしばらく放置してみると良いと思います。 以上の対応により、例えば、 Google 広告設定 を見てみると、以下のように収集された興味関心が一覧で表示されると思います。 現状の分析 現状どれくらい正確なユーザーの情報を得られているかについて、Google は Google Chrome により、SDK の埋め込みがなくても、全ての閲覧履歴を収集する仕組みを持っているので、格段に優位な状況にあると思います。 Facebook のモバイルアプリも、標準ブラウザでログイン済みかどうかを定期的に確認し、ログインさせる機能を有しているので、広告...