EMSで肝を冷やした話
EMS(国際スピード郵便)は、世界各国の郵便事業が連携したサービスで、追跡番号によりウェブ上で進捗を確認でき、最速の郵便サービスを謳っている。当然、料金もかなり高い。初めてEMSを利用したときはとても快適で、ウェブの進捗追跡もタイムリーで、2日で日本に届いた。今回、会社が僕に在留資格認定証明書を送ってくれた際もEMSだったのだが、今回も2〜3日で届くだろうと高を括っていた矢先、悲劇が起きた。
EMS(国際スピード郵便)は、世界各国の郵便事業が連携したサービスで、追跡番号によりウェブ上で進捗を確認でき、最速の郵便サービスを謳っている。当然、料金もかなり高い。初めてEMSを利用したときはとても快適で、ウェブの進捗追跡もタイムリーで、2日で日本に届いた。今回、会社が僕に在留資格認定証明書を送ってくれた際もEMSだったのだが、今回も2〜3日で届くだろうと高を括っていた矢先、悲劇が起きた。
数ヶ月前、Golangで環境変数を設定する方法についての記事を書いた。環境変数をいかにエレガントに設定するかは非常に重要なことなので、それを実現するための簡単な関数を書いた。当時の考えはシンプルで、対応するconfigファイルが提供されていれば、その中のkey/valueをos.Setenvで設定するというものだった。その後、アプリ全体で…
この記事は「Implementing a pin-to-bottom scrolling element with only CSS」を読んだ後、JavaScript を使った実装方法も交えてまとめたものだ。最近のウェブサイトでは、新しいコンテンツが追加されるたびにスクロール位置を最下部に自動調整するUIをよく見かける。例えば Twitch…
ある日ページを開発していたとき、リクエストヘッダーの項目が正しいか確認するために開発者ツールを開いたところ、リクエストに見慣れない不審なヘッダーがいくつか増えていることに気づいた。不審な点に気づいただろうか?よく見てみると、Sec-Fetchから始まる3つの…
Golang では、初期化時に値を代入しないと zero value が使われる。しかし、しばらく使っていると、毎回 zero value で代用していると、ユーザーが値を入力しなかったために zero value になったのか、それともユーザーが元々 zero value を入力したのかが分からなくなってしまうことに気づく。このとき、Email や Name…
この記事は「How to collect, standardize, and centralize Golang logs | Datadog」を読んだまとめである。ログを使用する際、通常いくつか注意すべき点がある:ログを引数として渡し、必要な時に渡す方法、context で統一してラップし…
Go言語において、interface{} 型に対しては型アサーションを行うことで、その interface が特定の型であると仮定し、その型が持つメソッドを操作できるようになる。このコードは元の interface を…
最近、プロジェクトを Ruby on Rails から Go 言語へと徐々に移行している。少し不恰好な構文を書いてみてどんな感じか試してみたいというのもあるし、Go 言語の威力や、既存のフレームワークがない状況でどのようにコードを構成すべきかを体感してみたいという思いもある。今回は goworker を紹介する。これを選んだ理由は「go worker」で検索して…
多くのWebページではさまざまなスクリプトを実行する必要があり、当然それらには優先度が存在する。例えばUIのレンダリング、インタラクションイベントの登録、APIを呼び出してデータを取得することなどは優先度の高いタスクだ。一方で、アナリティクスのスクリプト、遅延読み込み(lazy loading)、それほど重要でないイベントの初期化などは優先度の低いタスクとなる。何をもってIdle(アイドル)とするのか…
数か月前あたりから、僕の Google Chrome で原因不明の connection refused が頻繁に発生するようになった。特定のウェブページが開かないことがあるのに、他の端末から開くと正常に表示される。変だなとは思いつつも、サーバー側の設定の問題かもしれないし、そこまで大きな困り事でもなかったので、そのまま使い続けていた。カスタムドメインを設定…
フロントエンドにおいて、リクエストを送信する方法は主に2つある。XHRとFetchだ。XHRは、うーん…、かなり昔からあるAPIだ。ただ設定がとても面倒なため、jQueryのgetJSON、axios、RxJSのAjaxObservableといった、より高レイヤーのAPIにラップされて使われることが多かった…
CORSとCookieはフロントエンドにおいてかなり重要な問題だが、開発時はフロントとバックエンドのドメインが同じであることが多いため、あまり気にしないことが多い。あるいはバックエンドにAccess-Control-Allow-Originを…
現在人気のあるsqlパッケージを調べてみたところ、connection lostが発生した際に即座にエラーを通知してくれるような機能がほとんどないことに気づいた。例えばNode.jsのmysqlであれば、connection.on(‘error’)でエラーをリッスンできる。しかしgolangでは…
あまりにも特有の語彙が多すぎて、見かけるたびに調べるのは本当に骨が折れるし、何よりコンテキストスイッチが多すぎる…。
プロジェクト開発では異なる環境を切り替えることがよくあり、そのため通常は環境変数を設定する。だが、コード内に直接ハードコードしてしまうと毎回修正するのが非常に面倒だ。動的に環境変数を渡すことができれば、不要な修正を大幅に減らせてコードも比較的クリーンになる。golangでは一般的にflagパッケージを利用して…
最近のプロジェクトで Vue を使って開発を行っており、複雑なデータフローや状態を管理する場合、通常は Single Source of Truth のストアとして Vuex を利用する。Vue でストアを構築する際は、すべてのモジュールを書き終えた後、Vue のルートにまとめて配置するのが一般的だ…
Golangにはmakeとnewという2つの予約語があり、Goを学び始めた頃に混同しやすいところでもあるため、ここに簡単なメモを残しておく。newは型のメモリを割り当てて初期化し、ポインタ(メモリアドレス)を返す。そのため通常はポインタ変数でnewされた型を受け取る。特に注意すべき点として、newは自動的にゼロ値(zeroed value)で初期化するため…
誕生日のパラドックスは、統計学を学び始めた頃に先生がよく学生を驚かせるために使う定番ネタだ。たいてい先生は財布からゆっくりと100元を取り出し、教室の中に同じ誕生日の人が2人いるか学生に問いかける。直感的には、確率はかなり低いと思いがちだが、実際には23人を超えると、2人が同じ誕生日である確率は50%以上になる…
みなさんこんにちは、2018年あけましておめでとう 🎉。昨日は彼女とごく平凡な年越しを過ごした。朝はそれぞれ自分のことをし、夜は家で自炊してご飯を食べ、一緒にランニングをして、最後はプログラミングをしながら紅白を見て2017年を終えた。
フロントエンドエンジニアは、チーム内で最も頻繁にプルリクエストを出す人になりがちだ。自分のPRがテストされやすく、レビュアーにとってもレビューしやすくなるよう、いくつかの注意点をまとめた。プルリクエストの説明、このプルリクエストの目的。例えば:レイアウトの修正…