LightsailをIPv6オンリーにしたらLet's Encryptで証明書の更新ができなくなってた

Dev

先日、LambdaからIPv6でアクセスできるようにする で書いたとおり、IPv4アドレス課金を避けるためにLightsailをIPv6 Onlyのインスタンスにしていました。 LightsailをIPv6/IPv4デュアルスタックからIPv6 Onlyにするには、一度停止した上でスナップショットを…

LambdaからIPv6でアクセスできるようにする

Dev

AWSでは各種サービスのグローバルIPv4アドレスが有料化されることになり、EC2などで一部無料枠もあるものの、基本的にはIPアドレスあたり概ね500〜600円程度の課金額がかかるようになりました。 無償版G Suiteが廃止されるのでAWS SESとDockerでメール送受信…

Firebase AuthenticationでLogin with Discordを実現する

Dev

Firebase Authenticationでは様々な認証を簡単に導入することができ、Google、Apple、Faccebookといったよく利用されるサービスを統合した認証のほかに、カスタムの認証システムと統合することもできます。 これを利用して、Discordのアカウントを使ってログ…

mkcertを使用してローカルホストにマルチドメインの環境を作る

Dev

mkcertを使用するとローカルの開発環境であるlocalhostをhttpsにすることができます。[^1] 簡単にやろうとすると、localhostをhttpsにすることになりますが、これだと複数のサービスを扱う場合にCookieやLocalStorageが共有され不具合を起こす場合があります…

M2 MacBook Airに買い換えてIntelから乗り換えたので、最初から環境を再設定した

Mac

M2 MacBook Air(M2, 13インチ)に買い換えました。 前使っていたのは2018年モデルのMacBook Pro 15インチでした。 個人的に5年買い換えサイクルにしていたのと、最近ファンが回る場面が多くなりそろそろintelは限界かと思った次第です。 元々アプリエンジニア…

アクセスキーを使わずにAWS SESを使って、Firebaseからメール送信できるようにする

GCPやFirebaseにはメール関連の現行サービスがなく、外部のメールサービスを使用する必要があります。 そのため、SendGridやAWS SESなどを組み合わせる必要があります。 今回はAWS SESを使うことになったのですが、そのためにアクセスキーやSMTPパスワードを…

別のディスプレイに表示されているウィンドウを強制召還するmacOSアプリを作った

Mac

僕はMacBook ProとPS5を同じディスプレイに繋ぎ、ディスプレイの入力をメニューで切り替えて使っている。 MacBook Proのディスプレイもサブディスプレイとして使っており、PS5を起動してディスプレイに表示しているときはMacBookに攻略サイトを出したりDisco…

macOSで起動中のウィンドウの一覧を列挙する

macOSのアプリ開発のお話し。 起動中のウィンドウを一覧するには、CGWindowListCopyWindowInfoを使う。 struct Window: CustomStringConvertible { let rawData: [String: AnyObject] var name: String? { get { return rawData[kCGWindowName as String] as…

無償版G Suiteが廃止されるのでAWS SESとDockerでメール送受信システムを作った

Dev

20日木曜、大きなニュースが飛び込んできました。2012年に提供が終了して、そのまま9年近く利用できていた旧無償版G Suiteが7月1日に廃止されてしまいます。 www.itmedia.co.jp 自分も黎明の頃から勉強会のメールアドレスや、友人に独自ドメインアドレスを提…

Apple USB-C Digital AV Multiport アダプタはアップデートされている

使い込まれたUSB-C Digital AV Multiport アダプタ 標題の通りなのですが、Apple USB-C Digital AV Multiport アダプタは、Apple純正のUSB-CからUSB-A、HDMI、USB-Cの充電アダプタに変換してくれるアダプタです。MacBookユーザーなら1本は持っているはずです…

Google Cloud Tasksから呼び出すApp Engine TaskとGAEバージョンの関係

Google Cloud TasksからApp Engine HTTPタスクでバックグラウンド処理をするアプリケーションを作っている。 トラフィック分割で様子を見ながらリリースしたい場合、App Engine HTTPはどのバージョンのタスクを実行するのかがわからなかったので実験してみた…

Automatorアプリケーションでシェルスクリプト+リソースを配りたい

Dev

macOS用のツールアプリケーションをインストールする方法がシェルスクリプトだった。ITエンジニア向けだったら良いんですけど、そうでない人が対象だったのでさすがにGUIが必要で、Automatorで手軽にできないかと思って調べてみました。 実行したいシェルス…

GCFをデプロイするGCPプロジェクトのセットアップ

毎回やって毎回引っかかってる気がするのでメモ。本当はTerraformとか使った方が良いんだろうけど。 とりあえず最低限必要なもの、 前提 TypeScript で GCF を作って cloudbuild.yaml を読ませてデプロイする

Firestoreのフィールドにどうしても.を使いたい

Dev

Firebaseのフィールド、例えばマップのキーにメールアドレスを使いたいパターンはよくあると思う。例えばこういうの。 permissions: { "iseebi@example.com": "read", "admin@example.com": "admin" } で、これをクエリしようとすると permissions.iseebi@ex…

Firebase Hostingでサイト全体をリダイレクトさせる

Dev

サイト全体をリダイレクトさせたいということがあると思う。例えば、wwwでメインサイトをホストしているけど、Apexドメインにアクセスしたときもwwwにリダイレクトさせたい、とかの場合だ。他にもちょっと複雑なリダイレクトさせたりもしたいということもあ…

Google Cloud SDK (gcloud) コマンドの設定切り替え

gcloudで取り扱うプロジェクトの切り替え方法。プロジェクト作るたびに調べてる気がするので。

9年もののiOSアプリのプロダクト改善を1年ちょいやったのでまとめる

Etc

昨年の頭に転職して、ピリカという会社にお世話になっている*2。科学技術の力で環境問題を解決するという目標を元に、ごみ拾いSNS ピリカや、ITに関わらず様々な技術を使った調査プロジェクトなどのプロダクト/プロジェクトを推進している会社だ。

日産のインテリジェントルームミラーが汚れて見えない時

毎年恒例の旅行に来てるのだけど、ちょっと普段と異なる状況で困ったということがあったのでメモを兼ねて。 最近の日産車である程度のグレードになると「インテリジェントルームミラー」なるものがついている。車のルームミラーがカメラになっていて、後部座…

NotificationCenter.addObserver(forName:object:queue:using:) にインスタンスメソッドを渡すとリークする

これまで、NotificationCenterのaddObserverはSwiftでもaddObserver(_:selector:name:object:)で書いていたのだけど、ふと「あー@objc書きたくないな〜」と思った。 そこで単純にaddObserver(forName:object:queue:using:)に置き換えたのだけど、これでリー…

車中泊用のベッドを買い換えた

先日の車中泊装備紹介エントリで書いていたエアーベッドだが、気持ち足下が短くて、もう少し長いものに買い換えたいと思っていた。 しかし、セレナの3列目を片方倒した場合、もう片方と壁の間にできるスペースの幅は65cm程度、シングルサイズのエアーベッド…

ジャパンキャンピングカーショー2020を見てきた

車中泊をはじめてから、キャンピングカーについての情報を見ることがかなり増えた。当然ながら車を乗り換えることは全然考えていないのだけど、将来的にキャンピングカーをベースに生活できないかなという考えも少し頭をよぎることがあったり、単純に憧れる…

セレナe-POWERで行ってきた、2019年の車中泊旅の記録

*1 セレナe-POWER 車中泊ブログ3回目。今回は行ってきた車中泊旅を紹介。 といっても、特に10月11月はひどくて毎週どこかに車中泊に行っていて全部挙げるときりがない。2ヶ月で「常にどこかで車中泊してる人」みたいなイメージが会社内でできあがったくらい…

セレナe-POWERでの車中泊スタイルが固まってきたのでまとめ (2) 装備品

いろんな情報を集めながら何度か車中泊旅をしてきたところ、自分のスタイルが固まりつつあるのでこのあたりで一度まとめてみようと思う連載、今回は車中泊に使っているグッズについてのまとめ。

セレナe-POWERでの車中泊スタイルが固まってきたのでまとめ (1) 車自体について

2018年の年末、セレナe-POWERを買った。カーシェアだと時間に自由が利かないのに不満があったのと、いつかは車中泊旅をしてみたいと思っていたこと、家庭の事情や転職のタイミングが揃ってエイヤ!と購入に至った。 いろんな情報を集めながら何度か車中泊旅…

GAE/Python の 2.7(gen1) から 3.7(gen2) への移行作業メモ

趣味で作った GAE/Python Python 2.7 のサービスを Python 3.7 に移行したときにやったことのまとめです。

Universal LinksのApp ID PrefixがTeam IDでない場合がある

iOSのUniversal Linksを設定していたが、シミュレータでは正しく挙動するものの実機では一切動かないということが起こった。 apple-site-association には、[Team ID].[Bundle ID] の形式でapplinksを記載していた App Search API Validation Tool では Erro…

GoogleドライブのファイルをGoogle Cloud Storageへコピーする

Google Cloud APIの中には、gs://[bucket]/[path]の形式になっているCloud StorageのURLを与えることができるものがある。今回はGoogleドライブに入っているファイルをCloud Storageにコピーしてgs://のURLとして使えるようにしたかった。 streamをうまく使…

シェルで長いコマンドが動いた場合、コマンド終了時に音を鳴らす

ターミナルで作業中、たまに意図せず時間のかかるコマンドを叩いてしまうことがあります。例えば、curlでダウンロード仕掛けたは良いけどファイルサイズが大きかったり、無意識にcarthage update叩いてしまった場合などです。 そうなると、終わるまでちょっ…

今回はプッシュ通知の本 / #技術書典 7にサークル参加します

サークル 伊勢的新常識は2019/09/22(Sun)開催の技術書典7に参加します。スペースはい13Cです。 今回は、これまでのプッシュ通知基板開発の経験を凝縮した1冊をお届けします。

ライブのチケットをAirtableで管理してみたらわりと良かった

Etc

ここ数年は決まった声優さんだけではなく、様々なアーティストのライブに行くことが多くなってきた。ロックバンドのライブは封入先行、オフィシャルHP先行、プレイガイド先行など、予約するタイミングが複数あって、予約先もアーティスト公式/ぴあ/e+だけで…