2017年12月4日月曜日

🍺について

この記事はBeer Advent Calendar 2017の12月4日です。 ビールについてならなんでもOKらしいので、🍺について話します。

この記事を読んでいる皆さんは「🍺」がどう見えているでしょうか?

  1. ジョッキに注がれたビールに見える
    • あなたはモダンブラウザでこの記事を読んでいますね
  2. ビールに見えるが白黒
    • まだAndroid 4.3使ってるんですか
  3. 「�」に見える
    • 文字化けとるやん

2と3の方は今すぐ使っているPCかスマホを更新しましょう。

さて、1の方は具体的にどんなふうに見えているでしょうか? そして、あなたが見ている🍺は他の人も同じ🍺に本当に見えているでしょうか。

PCやスマホで表示される絵文字は結局はただの書体の一つに過ぎないので、環境によって表示が異なります。 次のURLにはいろんなメーカーやアプリでの🍺の表示リストが載っています。 https://emojipedia.org/beer-mug/

いろんな絵がありますが、いずれも「ジョッキに入ったビール」として認識できると思います。 この絵文字はUnicodeで「beer mug」として定義されており、 その指針に従ってどのプラットフォームも 表示を実装している からです。

また「🍻」という絵文字もありますね。 こちらは「clinking beer mugs」です。

しかし、絵に過ぎないので、度々不幸なミスも発生 します。

Android 8.0での🍺の絵文字は泡とビールの間に謎の空間が出来てしまっています。 この不具合はAndroid 8.1で修正されています。

他の 絵文字にはさまざまな問題が起きていますが、幸いながら🍺については上記のちょっとした表示ミス程度しか問題が起きていません。 皆さん、安心して🍺を使っていきましょう。飲んでいきましょう。

2017年8月30日水曜日

ページ右下に熱盛を出すだけのUser Styleを書いた

ものすごく邪魔。

@mazamachiさんの「たまに熱盛が出てしまうextension」が面白そうだったので作った。

中身はコレ。

StylishといったUser Styleを設定できる拡張機能を利用したりして使う。

transitionやらanimationやら設定して忘れた頃に「熱盛!」ってドンと出る実装はできそうだけど、ここまでやって満足してしまった。

問題があって、Stylishでやるとiframeの中にまで熱盛するので、Twitterのタイムライン中の埋め込み動画やBloggerの画像アップロードダイアログの中にも熱盛が出てしまい、笑いをこらえながらこの記事を書いています。

2017年8月29日火曜日

cron.yamlのdescriptionに日本語を書いてはいけない

TL;DR

Google App Engineのcron.yamlのdescriptionに日本語を書くと、アップロード処理がInternal Server Errorになることがある。
なので、基本的に英語で書いておくのが無難。

確認したのはGo言語のStandard Environment。

なにが起きたか

既存のプロジェクトでcron.yamlに記述している6つの設定のdescriptionを全て日本語に書き換えた。
CIで自動デプロイしているのだが、何故かcron.yamlのアップロードだけInternal Server Errorのため失敗しているログが出ていた。
デプロイスクリプトのexit statusがnon-zeroにならないという別の問題も発生しており、気付かないうちにcron.yamlのアップロードに失敗したり成功したりを繰り返している謎の挙動になっていた。
失敗したり成功したりはサーバー側で発生しており、デプロイを行うのがgcloudコマンドでもappcfgでも同じ状況。

どうやら次の繰り返しになっていた。

  1. cron設定が無い状態
  2. cron.yamlをアップロード → これは成功し6つすべて反映される
  3. 別のCIでcron.yamlをアップロード → Internal Server Errorが発生し、6つのcron設定のうち3つだけが何故か残っている状態に
  4. 更に別のCIでcron.yamlをアップロード → Internal Server Errorが発生し、残り3つも消えて、cron設定がない状態に
  5. 0に戻る

cron設定が3つ以下の場合は、上の挙動の3番目が抜けるだけで成功と失敗を繰り返しすのは一緒。

今回の現象が起きる前から6つのcron設定を 同じCIで常にデプロイしていたが、失敗はしていなかった。
1つ日本語のdescriptionも混ざっていたが アップロード出来ていた。
おそらく6つすべて日本語に書き換えたため発生した。

推測と対応

cron.yamlを書き換えつつ gcloud app deploy cron.yaml --project foobar を何度か実行した結果から、次のような現象だと推測している。

  • cron.yamlのアップロード処理は既存の設定を一旦全てクリアするため、3つずつ削除している
  • そこに日本語のdescriptionが含まれていると失敗しInternal Server Errorになる
  • 消し損ねたものは 次にcron.yamlをアップロードする時に削除される
  • そのためcron設定が4〜6つある場合は、2回アップロードに失敗して(3つずつ削除して)全て消しこんでからでないとアップロードに成功しない
  • 既存の設定のdescriptionに日本語が含まれている時に発生するので、一旦すべて削除したから英語のdescriptionだけのcron.yamlをアップロードすると成功するし、その後も英語のdescriptionであれば問題ない

というわけで、一旦空のcron.yamlを 2回アップロードして(2回Internal Server Errorにして)から英語だけのdescriptionのcron.yamlを 何度かアップロードしているが、今のところエラーは発生せず反映されている。
また、コメントに日本語入っているのは問題ない様子。

TODO issue登録

2017年8月5日土曜日

えいえんのケチャガールへの道&C92宣伝 #Splatoon2

Splatoon2のはじめてのフェスでしたね!
今回はマヨネーズvsケチャップで、ケチャップ側につきました。

2017/08/05のお昼頃からはじめて休憩はさみつつ2時間半弱で、フェス称号のカンストである「えいえん」まで行きました。
ちょうど30戦やって勝ったのは18戦でした。勝率60%でしたが、正直もっとうまく立ち回らないとガチマッチで上にいけないなー、という気持ちになりました。

戦績をメモっていたので簡単に振り返ってみます。

最初N-ZAPを使っていて何度か黒が付いたので、遠目から着実に立ち回ろうとジェットスイーパーに切り替えましたが、むしろ近づかれて倒されるシーンが増えてしまいました。
あとで確認したら、N-ZAPでは7割弱だった勝率が、ジェットスイーパーでは6割に落ちていました。
もう少し近距離にも対応できるようデュアルスイーパーに切り替えましたが、そこから連敗してもっとひどい状態に。
そろそろデュアルスイーパーに慣れて勝ち星が付き始めたところで、「えいえん」に到達しました。

ブキ別勝率 N-ZAP ジェットスイーパー デュアルスイーパー
勝率 69.23% 60.00% 42.86%
回数 13 10 7

ステージ別の勝率を見ると、母数が違うので一概には言えませんが、海女美術大学が一番勝てています。
海女美術大学は侵攻ルートが限られていて守りやすいので堅実に立ち回っていれば巻き返せるステージです。

一方でバッテラストリートの勝率は芳しくありません。
押し込みまくっって勝つか、その逆をやられて大敗するか5分5分な感じでした。味方の状態を見てもっと堅実に立ち回って前線を確保できていれば勝率は改善できそうだと思います。

ステージ別勝率 コンブ ミステリー タチウオ 海女美術大学 バッテラ
勝率 0.00% 66.67% 66.67% 71.43% 50.00%
勝ち星/回数 0/1 6/9 2/3 5/7 5/10

30戦全体の戦績は次のとおりです。

勝敗ステージ称号のタイミング備考
1loseコンブふつう12:30開始, N-ZAP
2winミステリー
3winミステリーまこと
4winタチウオ
5winミステリー
6winタチウオスーパー
7loseタチウオ
8win海女美術大学13:00ステージ変更
9lose海女美術大学
10winミステリー
11winバッテラ
12winバッテラ
13loseバッテラ
14winミステリーカリスマジェットスイーパーに変更
15loseバッテラ
16loseバッテラ
17winバッテラ
18winミステリー
19win海女美術大学
20win海女美術大学
21win海女美術大学
22loseバッテラ
23loseミステリー
24loseバッテラデュアルスイーパーに変更
25lose海女美術大学
26loseミステリー
27win海女美術大学身内戦
28winバッテラ
29winバッテラ
30loseミステリーえいえん14:48えいえん到達


おまけ(宣伝)

今夏もコミケ(C92)に行くんですが、一緒に出展するvvakameさんが「負けたくない!Splatoon2」という出すそうです。
レビューで読ませてもらいましたが、チームプレイの心構えといったところから書かれていて、Splatoon2を知らなくてもある程度楽しめる内容になっています。この本自体の入稿体験記も載っています。

俺も「Edge of Android 8」という本に「ツは通知のツ」というタイトルでAndroid 8 Oで大きく変わるNotification関係について書いてます。

2017年6月18日日曜日

ng-japan 2017に行ってきた

ng-japan 2017に行ってきました。
ツイートとスライドをまとめただけの記事です。

Keynote: How to Think About Angular



RxJSを活用したアプリケーション開発

CQRSを学ぶために「.NETのエンタープライズアプリケーションアーキテクチャ第2版 .NETを例にしたアプリケーション設計原則」という本を使っているそう。

You need to know SSR

 

Angularアプリのテストについて

Web Payments + Credential Management API

これはAngularのトークではなく、ブラウザでの支払いフォームなどの改善や新機能の紹介。
※スライドのURLを見つけられなかった。

Apple Pay JSをPayment Request APIと同じように使えるwrapper
https://github.com/GoogleChrome/appr-wrapper

Angular, Firebase, Cloud Functions for Firebase

スライド


関数型はモテる。

Advanced Component styling with Angular (v4+)



Best practices for modules in Angular



Angular Animations

スライド

What's New in Angular Material

Autocomplete や Datepickerふえたよー。今後も対応部品増やしていくよー。というトーク。