飴屋

開発日記/2022年の日記

2022/11/3

Google Search Console から久しぶりに指摘を受けて対応しました。

主な問題

・代替ページ(適切な canonical タグあり)

インデックス登録されたページのURLと同内容のページがあって、canonical URLと齟齬があるってことっぽいのですが、インデックス登録するためのsitemap.xmlと突き合わせてみても問題なさそうでした。なんだこれ?って思ってSearch Console画面をよくよく見てみると指摘されたURLのクエリ文字列部分のパーセントエンコーディング部分が全部大文字表記になってました。最初はGoogle的な仕様なのかと思ったんですが、RFC3986にばっちりURLを正規化する場合は大文字を使えって書いてありました。(知らなんだ)perlのunpackでパーセントエンコーディングしてたので、ずっと小文字でしたよ・・・。

unpack('H2',$char);
# 返ってくるのは小文字

大文字で返す書式が見当たらなかったので、

uc(unpack('H2',$char));

とりあえずこうしておきました。今からこれを全サイトに適用して様子をみてみます。

2022/9/10

Twitterに定期ツイートするボットを作ろうと久しぶりにTwitter APIを叩こうとしたらどうも去年バージョンが2.0に上がってたみたいです。OAuthも2.0に対応するとかで、昔作ったモジュールが使えなくなるのかとビビりました。とりあえずAPI keyが欲しかったのでアプリ作成の申請を出そうとしたら、どんなアプリを作るのか英作文を提出しなくちゃならなくなってて、ここでもビビりました。

3-legged、BearerなどOAuthで耳慣れない単語も出てきたのでザックリ調べたりしてみましたが、ボットを作るだけならアクセストークンをTwitterのデベロッパープラットフォームから振り出しちゃえばいいよね、とアクセストークンを用意してver.1.*のときのように呟こうとしたら権限が足りないと怒られました。あっ、ちなみにAPI ver.2ではJSONでやり取りするようになってました。

このアクセストークンだとダメなのかと思って、request_token -> authorize -> access_token のステップを踏んでその都度有効なアクセストークンを振り出そうと実装を初めてしばらくして、デベロッパープラットフォームのアクセストークンに「Read」専用って思いっきり書いてあるのに気が付きました。これにWrite権限を付与してあげればいいんじゃない?

思った通りで、ちゃんとみてなかったアプリの設定画面で必要な権限の設定とか、サイトのURLとか、コールバック先とか設定した上で、アクセストークンを振り出しなおしたら「Read Write」権限がつきました。ついでにOAuth 2.0用の謎のクライアントキーとシークレットのペアももらいましたが、これは一旦忘れます。

新しいアクセストークンを使えばあっさりツイートできました!エンドポイントが変わったくらいで使い勝手はそんなに変わらなそうです。スペースとか使い道が思いつかないけど、新しいAPIならではのことも考えてみるかな?

2022/6/19

VS Codeの設定方法をすぐ忘れるのでメモ。ソース上でテキストにマウスカーソルを合わせると、関連情報がツールチップ的に表示され便利ですが、前後のソースを隠してしまうのでちょっと困ります。デフォルトで300ミリ秒、マウスがホバーするとツールチップが出現するようなので、これを10倍くらい遅延させたい。

Settings > Editor > Hover: Delay
-> 3000

今、試したら設定などをmicrosoftアカウントかgithubアカウントに紐づけて同期できるようになってた。良き時代です。

2022/3/9

Wordpressのタグ機能ってあんまり必要になる案件がなかったんですが、いざ使ってみるといろいろ提案できそうだなって思ったこの頃です。あんまり触ってなかった部分でもあるので、今日思いっきりドツボにはまったのでここにメモとして残します。

タグ別一覧ページというのが作れるはず、と思ってテンプレートにtag.phpを追加しましたが、該当ページにアクセスしてみると記事が0件しかないと、何も表示されませんでした。have_posts関数もfalseを返します。
一覧表示前に、何らかの操作をしちゃってメインのループが壊れてるのかな?と思って怪しい処理を一通りコメントアウトしても解決せず。
さっき入れたプラグインの不具合かな?って思って、一旦プラグインを停止してみてもダメ。
わけがわからなすぎて、wp-config.php にて

define('SAVEQUERIES',true);

↑これを指定して、$wpdb->queries の中身を覗いてみることにしました。投稿を検索しているクエリーを探して、読むと文字通り投稿(post)を探しています。なるほど、タグ別一覧ページは標準ではpost しか読みだしてくれないんですね。今回、カスタム投稿タイプの記事をピックアップしてほしかったのですが、投稿タイプによらず全記事を表示してくれるものと勝手に思ってました。あー、そういえばWordpressに標準でついているタグ機能はタクソノミー名がpost_tag でしたっけ。

別途カスタム投稿タイプ用にタグを用意するより、標準のタグをそのまま使ってしまおうと思ってpre_get_posts にアクションを追加して、

if (is_tag()) {
    $query->set('post_type','custom_post_type_dayo');
}

タグ別一覧の検索条件を変更して事なきを得ました。

2022/1/29

Android Studio のBumblebee版がStableになったとの通知が入ったので早速インストールしました。これで実機にQRコードを読ませてWi-Fi接続のペアリングができるようになるんかなーってやり方をググったんですが、うまくみつけられなくて、英語サイトで「やり方はここに書いてあるぜ!」って紹介されていたページ(Android developer向け公式サイト)を読んでも何にも書いてなくてどうしたことかと悩んでました。

Androidの公式サイトは日本人(日本語マシン)がアクセスすると勝手に日本語ページに飛ばしてくれるじゃないですか。あれやっぱり日本語ページは更新が遅くて、まだBumblebeeがらみの記事が間に合ってなかったようで、表示言語を英語に変えたら目的の内容がちゃんと書いてありました。

デバッグ端末の選択ボックスの中の「Pair devices over Wi-Fi」を選ぶとちゃんとQRコード出てきました。

なお、英語ページの該当部分で画像がリンク切れがあったり、日本語だけじゃなく英語以外の言語のページはみんなまだ未更新という感じでした。そういうもんかと納得しつつ、まず英語で調べるに限るなってなりました。

開発日記