Posts

IIJmio タイプA(au網)に変更した

携帯回線はちょこちょこ乗り換えつつ、今はIIJmioのタイプD(docomo網)に落ち着いていた。 しかし最近docomoがつながりにくい問題が起きていて、とくに昼時はまともに使えない状態になっていた。 職場のある渋谷だけでなく、家の近所でもまるでダメなときもあり、さすがにどうしようもないので乗り換えを検討した。 今回の原因が上記記事の通りであれば、MVNOを乗り換えても同じdocomoだと意味がないので、IIJmioのままタイプA(au網)に変更することで他キャリアの回線を試すことにしてみた。

Hugo PaperModでネストしたリストのマージンが不揃いなのを調整する

このブログではHugoのテーマとしてadityatelange/hugo-PaperModを利用している。 以前書いたToDoで、<ul><li><ul>のようにリストをネストしたとき、子要素のulにmargin-bottomが適用されて、マージンが不揃いになってしまうのが気になっていたので直した。 もともと.post-content内のul,ol要素にmargin-bottomが指定されているため、以下のCSSをカスタムCSSとして記述する。 assets/css/extended/override.css .post-content li ol, .post-content li ul { margin-bottom: 0; } これで、ネストしたリストでもマージンが揃っていい感じになった。

Blueskyのハンドルネームにカスタムドメインを設定する

同僚からBlueskyの招待コードをもらったので登録してみた。 https://bsky.app/profile/shimoju.jp どうやら現状はログインしていないとプロフィールすら閲覧できないっぽい。招待コードは2つ余っているのでTwitterなどで声をかけていただければ。 いまのところ見た目はまんまTwitterという感じ。非中央集権型SNSを実現するプロトコルとしてもActivityPubという先例があるので、AT Protocolがどのように差別化を図っていくのか気になる。 Twitterの雲行きが怪しい昨今、Mastodonなど含め色々試しつつ、複数の発信手段を確保しておきたい気持ち。このブログを整備し直したのもその一環だし。

HugoとCloudflare Pagesでブログを作り直した

このブログはNode.js製の静的サイトジェネレーターであるHexoで作っていたけど、放置しすぎて(最新の記事が3年前…)Node.jsやnpmがだいぶ古くなっており、アップデートが面倒な状態になっていた。 最近はScrapboxにシュッと書いてしまうことが多いものの、やっぱりすべてをコントロールできる自分のサイトを持ちたいよなーということで作り直した。 静的サイトジェネレーター 前回の構築時にも比較に上がっていたHugoを採用。 以前と比べて、Markdownとアセットをまとめて管理できるPage Bundles機能などが追加されて順調に進化していることや、Hexoから大きくディレクトリ構成やfront-matterを変えなくてもよかったのが理由。

Kaigi on Railsでリモートワークについて発表しました

Kaigi on Railsにて「快適なリモートワークを実現するために〜RailsでSSOを実現する3パターン」というタイトルで発表しましたshimojuです。無事燃え尽きていましたが、遅ればせながら感想ブログを書きました。 資料はこちらです。動画については順次公開中なのでそのうちアップされるはずです。 快適なリモートワークを実現するために〜RailsでSSOを実現する3パターン 当日の配信環境について Kaigi on Rails 発表動画 初めてのオンライン登壇ですが、特にトラブルなく終えられて一安心でした。当日の配信環境については上に書いてありますが、事前に練習会があり、Zoomの画面共有やYouTube配信側でどう見えるかのテストができたのがよかったです。これがなかったら当日かなり焦っていました。

2019年にやったゲーム:ポケモン、モンハン、そしてスマブラ

GMOペパボ Advent Calendar 2019の7日目の記事です。 今回はまったく技術と関係なく、今年やったゲームについて書きます。 ポケットモンスター ソード・シールド 買ってもうたわー pic.twitter.com/CsOdLYvYQS — Hiroshi Shimoju (@shimoju_) November 20, 2019 部署のみんながポケモン大好きなので買っちゃいました。SUZURI Advent Calendarでもポケモンの話が出るんじゃないかと思います。 ポケモンは第三世代(ルビー・サファイア)までしかやってないので久しぶりのポケモンです。一応ピカブイも買ってましたがあれは初代のリメイクだしシステムだいぶ違うし…。 とはいえ技が4つなのは変わりないし、「もちもの」はもう第二世代にあったし、「とくせい」「せいかく」も第三世代からだし、システムとしてはあまり変わってないですね。その組み合わせがとてつもなく増えたって感じ。

2019年、SUZURIの怪事件

SUZURI Advent Calendar 2019の5日目の記事です。ちょっと遅れました。 SUZURIでエンジニアをしているしもじゅーです。最近はSUZURIのAndroidアプリを開発するために目下勉強中で、Android何もわからない…となっています。 今年自分が担当したのは目に見えない裏側部分や長い調査を必要としたものが多かったです。謎の不具合にも悩まされたのでそこからいくつか紹介します。 ご迷惑をおかけしたものもありますが、裏側ではこんなことやっているんだ、と感じていただければ幸いです。

Herokuでzip_code_jp gemの郵便番号データを定期更新したい

日本の郵便番号データを扱うRuby gemとしてはzip_code_jpが有名です。ECサイトなどでは郵便番号から住所を補完する機能はもはや当たり前になっていますが、そのような機能を作りたいときに便利なライブラリです。 この郵便番号データはZipCodeJp.export_jsonで更新できますが、このときgemのdata/zip_codeディレクトリ内にあるJSONファイルを直接更新します。 一般的なサーバ環境であればcronで回すなどすれば普通に更新できますが、Herokuの場合はローカルにファイルを書き込んでも再起動のタイミングで自動で消滅します。Heroku Schedulerなどで定期実行しても、既にパッケージされたslug内のデータは変更できないので意味がありません。 Release Phaseでいけないかな?とも思いましたが、Release Phaseはslugのビルド後に実行されるのでこれも使えません。

Sidekiq + Heroku RedisでERROR: ERR max number of clients reachedと言われたら

Redisの同時接続数制限が原因です。 Sidekiqのconcurrencyのデフォルトは25となっており、Redisにもその数だけ接続するため、デフォルトのままだと一気に25接続を消費します。Heroku RedisのHobby Dev(接続数制限20)のような低価格なプランでは、concurrencyの設定をせずにデプロイすると一瞬でログがエラーまみれになってしまうので注意しましょう……。 上記Wikiにもあるように、変更するにはsidekiq.ymlに以下のように書きます。RAILS_ENVごとに切り替えることもできます。

HerokuのRelease PhaseでDBマイグレーション忘れを防ぐ

HerokuにはRelease Phaseという機能があります。 これはアプリケーションのビルドが終わってリリースする直前に任意のコマンドを実行するもので、DBのマイグレーションやキャッシュの削除といった用途に使えます。 設定方法はProcfileにrelease: commandの形式で書くだけです。例えば、Railsでmigrateとseed-fuを実行するのであれば以下のようになります。 Procfile release: bin/rails db:migrate db:seed_fu web: bundle exec puma -C config/puma.rb DBマイグレーションを忘れて500エラーはあるあるな話ですが、これで防ぐことができます。 コマンドが失敗したとき(0以外のステータスで終了したとき)はもちろんデプロイは行われません。