cover
December 6, 2023
Next.jsからAstro.jsへの移行を断念
Astro.jsへの移行から断念に至るまでの経緯を共有します
cover
November 15, 2023
Go言語の型埋め込みがデシリアライズにおいて持つ巧妙な利用と落とし穴
Go言語における構造体の埋め込みの使用法と技術には、フィールドタイプの置換やJSONの逆シリアライズ処理が含まれます。ネストされた構造体のJSON逆シリアライズを扱う際には、いくつかの落とし穴に注意する必要があります。
cover
June 18, 2023
Telegram のリッチテキストレンダリングメカニズムについての簡単な分析
Telegram の TDLib API の分析について、リッチテキストデータのデータ構造とレンダリングスキームを含む。
cover
January 24, 2022
gRPCを使ってフロントエンドとのインタラクション
gRPCを使ってフロントエンドとのインタラクション。gRPC-Gatewayは、RESTとgRPCの両方のインターフェースをサポートし、既存のシステムがRESTからgRPCへスムーズに移行できるように適しています。gRPC-Webは、フロントエンドとバックエンドが直接gRPCプロトコルで通信するために使用され、HTTP/1.xをサポートしています。UnaryとServer Streamingはサポートしていますが、Bi-directional StreamingとClient Streamingはサポートしていません。
cover
January 12, 2022
サーバーサイドリアルタイム「アニメーション」レンダリング
本文では、著者がウェブページ上でリアルタイムにデータの一部を更新する方法を共有しています:multipart/X-Mixed-Replace 形式を使用してMJPEG画像をレンダリングします。著者は、サーバーサイドで「ライフゲーム」をレンダリングするサービスを実装することで、この方法の実現可能性を示しています。
cover
January 1, 2022
プロダクション環境でのgRPCの使用
本稿では、本番環境でgRPCを使用する過程をまとめています。これには、gRPC-Gatewayを使用してHTTP/JSONインターフェースとの互換性を確保すること、ProtoBuf RPCインターフェースのマッピングを定義すること、gRPC-Gatewayをマウントすること、フロントエンドにインターフェースを提供することなどが含まれます。また、多態性の型やnull値の扱いなど、遭遇する可能性のあるいくつかの落とし穴についても触れています。
cover
December 29, 2021
カスタムな即刻 Yellow Page ドメイン
Cloudflare Workerを使用して即刻Yellow Pageのカスタムドメインを実現し、自分自身の達成感を味わいましょう。このプロセスは、実際にはCloudflare Workerを使用してリバースプロキシを実装する一般的な手順です。
cover
December 20, 2021
Go1.18を試してみよう
Go1.18beta1のインストール方法と、vscodeがジェネリックを含むコードを解析できない問題の解決方法について理解しましょう。
cover
December 11, 2021
ProtoBuf のオプションと必須フィールドについて考える
ProtoBuf のオプションと必須フィールド、特に optional キーワードの再導入は、拡張性の考慮と型安全の保証にどのような変化をもたらしたか。この記事では、TypeScript と Go を使用した gRPC で行ったいくつかの実験をまとめ、オプション フィールドの 2 つの実装方法を提案します。比較することで、optional の役割と意味をより深く理解することができます。
cover
December 3, 2021
ブログのウェブページのロードサイズを最適化するためのいくつかの方法
この記事では、ブログのウェブページのロードサイズを最適化する方法について紹介しています。これには、Syntax Highlighter、lodash、Chakra UIの最適化、およびNEXT_DATAのサイズを制御する方法が含まれます。これらの最適化により、ウェブページのサイズが顕著に減少し、初回のウェブページのJSサイズが200+KBから70+KBに削減されました。
cover
October 25, 2021
Go singleflight の例外処理を理解する
Go singleflight の異常処理を理解する。Go の singleflight ライブラリの使い方と異常処理の方法を紹介する。
cover
September 26, 2021
MacOS上でPodmanをDockerの代わりに使用する
MacOS で Podman を Docker の代わりに使用
cover
September 23, 2021
Go Comparable Type を深く理解する
本稿では、Go言語のComparable型について詳しく紹介しています。これには、Goの組み込み型の比較ルール、reflectパッケージの実装方法、関連する落とし穴と応用が含まれています。記事では、Map、Slice、Funcを除く、Goのほとんどの型がComparableであることを指摘しています。StructとArrayは、メンバー型がサポートしているかどうかによります。関連する問題を避けるために、偽造不可能なポインタ型またはStruct型をContextのKeyとして使用することを推奨します。
cover
September 11, 2021
Go sync.Once の原理
Goのsync.Onceの動作原理を理解する。atomicとMutexを使用してダブルチェックロックのシングルトンパターンを実装し、あるタスクが一度だけ実行されることを保証する。
cover
August 29, 2021
gRPC と『拡張指向プログラミング』
本文では、gRPC を使用して後方互換性と拡張性を実現する方法について探求しています。これには、すべてのフィールドがオプショナルであること、UnimplementedServer の使用、入出力は構造体でなければならないこと、各 RPC 専用の入出力タイプなどが含まれます。この記事の目的は、よりメンテナンスしやすく、拡張可能なインターフェースを作成する手助けをすることです。
cover
August 21, 2021
Go の String Interning
GoのString Interning技術について紹介します。これは特定のシナリオでメモリ使用量を削減し、パフォーマンスを向上させることができます。String Interningの技術は広く使用されており、例えばeasyjsonはデシリアライズ時にString Interningを導入することができます。
cover
July 31, 2021
Vercel でエレガントに Go マイクロサービスを構築する
本記事では、Vercel上でGoマイクロサービスを構築する方法について紹介しています。コードの記述、カスタムルーティング、Monorepo、RPC、定期的なタスク、ログ監視、データベース、Integrationsなどが含まれます。自前でK8SクラスターやAWS Lambdaを構築するよりも、Vercelのクラウド関数を使用することで、多くのメンテナンスコストを削減できますが、Vercelの機能には限りがあることに注意が必要です。
cover
May 29, 2021
Server-Side Events: シンプルで効率的なサーバーサイドプッシュ
Server-Side Eventsは、従来のポーリングやロングポーリングよりもリアルタイムで、ネットワークの負荷が少なく、HTTPを使用して実装される、シンプルで効率的なサーバーサイドプッシュメカニズムです。サーバー側の実装がより簡単で軽量であるため、フロントエンドでのメッセージ購読に適しています。
cover
March 19, 2021
Go Echo のエラーを正しく処理する方法
この記事では、Go Echo でエラーを正しく処理する方法について紹介しており、Echo でのエラー処理の流れ、HTTPErrorHandler とエラーハンドルミドルウェアの違い、ミドルウェアの順序などの問題に触れています。記事では、エラーが HTTP/500 エラーを引き起こすのを避け、最終的なレスポンスが期待通りになるようにする方法を詳しく説明し、ミドルウェアを正しく使用するためのいくつかの提案も提供しています。
cover
March 1, 2021
🏗️
Golangによる即刻バックエンドの実践
本記事では、即刻バックエンドサービスのリファクタリングプロセスと実践、そしてリファクタリング後の成果と解決策について紹介しています。Go言語の利点と即刻バックエンドサービスの最適化により、新しいバージョンのサービスのコストが大幅に削減されました。また、リポジトリ構造、継続的インテグレーションとビルドの実践経験についても説明しています。
cover
October 31, 2020
新しいキーボードを買った
著者が新しいキーボードを購入した経験を紹介し、いくつかの選択肢を比較した結果、最終的にNiz 66を選びました。このキーボードはBluetooth接続とデュアルモードをサポートしており、キー配置が豊富で静音性があり、タイピング感も良いです。まとめ:新しいキーボードの購入。
cover
July 5, 2020
🔩
GSuiteをプロのように使いこなす
Google App Scriptを使ってもっと多くのことを。Google App ScriptはJavaScriptに基づいたプログラミング言語で、G SuiteアプリケーションのAPIに簡単にアクセスできます。この記事では、Google App Scriptの長所と短所、そしてそれを使ってより強力なアプリケーションを構築する方法について紹介しています。
cover
May 1, 2020
Goプログラミング哲学に対するいくつかの理解
Goプログラミング哲学:明示的なエラー、厳格な型付け、シンプルなソースコード、ジェネリクスなし、低い認知負荷。
cover
April 4, 2020
Go言語におけるstructの初期化
この記事では、Go言語におけるstructの初期化方法、様々なデータ型と構造体の組み合わせ方について説明しています。異なる初期化方法とその違いをまとめ、内蔵された構造体の初期化や、slice、map、channelなどmakeを必要とする型の初期化方法について紹介しています。
cover
October 10, 2019
MongoDB 読み書き分離の落とし穴
MongoDBの読み書き分離の落とし穴。マスタースレーブレプリケーションにより書き込み操作がリアルタイムで返されない問題があり、解決策にはWrite Concernメカニズムなどが含まれます。詳細は記事をご覧ください。
cover
September 10, 2019
ドキュメントとしてのPlantUML
Markdown文書内でPlantUMLを使用してUML図を描画します。PlantUMLはDSLに依存してUML図を描画するツールです。このツールは多くの種類の図をサポートしており、中国語の文書で関連資料を見つけることができます。PlantUMLサーバーを使用して画像をレンダリングし、フロントエンドに表示を提供することができます。このツールはコードと同期してGitで管理されており、エンジニアリング文書の管理に非常に適しています。
cover
September 6, 2019
Googleパスポートから1Passwordへの切り替え
Google Passwordsから1Passwordへの切り替えにより、パスワード管理の問題点が解決され、さらに多くの機能が追加されました。しかし、古いパスワードを削除する際に問題が発生し、スクリプトを使って一つずつ削除するしかありませんでした。
cover
August 22, 2019
JWTに関するいくつかの考察
JWTの長所と短所、設計思想と実装方法について、AccessToken+RefreshTokenの組み合わせ、AccessTokenとRefreshTokenに含めるべき情報、さらに異なるKeyPairを使用する必要があるかどうかについても述べています。また、一連のTokenをブラックリストに登録し、遅延なしで強制的にログアウトさせる方法についても議論しています。
cover
March 14, 2019
dotfiles を使って Windows を管理する
dotfiles を使って Windows を管理し、設定プロセスをデータ化し、Git とシンボリックリンクを通じてデバイスの迅速なバックアップと移行を実現します。dotfiles を使って PowerShell のスタイルファイル、起動スクリプト、Telegram のフォント設定ファイル、VSCode の設定ファイルなどを管理することをお勧めします。私の dotfiles リポジトリのアドレスを添付します。
cover
February 8, 2019
個人プロジェクト構造の考察
個人プロジェクトのアーキテクチャについての考察:マイクロサービスやフロントエンドとバックエンドの分離が流行している今、なぜそうする必要があるのでしょうか?個人開発においては、そもそも分業の問題が存在しないため、そのようなことをすると余計な手間をかけることになります。シンプルな個人プロジェクトにおいて、フロントエンドがバックエンドデータの基本的なCRUD表示のみであれば、分離する必要はありません。システム全体を「圧縮」した後、一つのコマンドでプロジェクト全体をdockerイメージにパッケージ化したり、直接AppEngineでオンラインにしたりすることができ、その後のメンテナンスに頭を悩ますことはありません。
cover
February 6, 2019
エレガントに即時メッセージをTelegramの友達に共有する
エレガントに即刻メッセージをTelegramの友達に共有しましょう。Jikeview Botを使用して即刻リンクを解析し、Telegramユーザーに最もフレンドリーな画像付きテキストコンテンツに変換します。動画、ビデオ、複数画像にも対応しています。ぜひ体験してください!
cover
February 1, 2019
Surface Go のファーストインプレッション
「Surface Go 上手」はSurface Goの使用体験を紹介する記事で、その軽量さやバッテリー持続力などの長所に焦点を当てていますが、タッチスクリーンの体験やパフォーマンスの問題にも触れています。記事では購入時の経験や使用のコツを紹介し、Surface Goがオフィスや学習用の携帯デバイスが必要なユーザーに適していると結論づけています。
cover
January 21, 2019
リアルタイムで「スクリーンショット」をレンダリングする試み
本文では、HTMLとCSSを使用して記事内でスクリーンショットをリアルタイムにレンダリングする方法について紹介します。HTMLとCSSのレンダリング方法について詳しく説明し、インラインスタイル、`<style>`タグ、CSSファイルの読み込み、そして実例デモを行います。
cover
January 17, 2019
Notionを使ってブログを構築する
Notionを使ってブログを構築することで、他のプラットフォームにある問題点を解決しました。それには、カスタムドメインが設定できない、ユーザー体験が悪い、静的ブログが面倒などが含まれます。NotionのAPIは半公開であり、APIを通じてウェブページを作成し、Wordpressと同じようにCMSとしてブログを管理することができます。バックエンドレンダリングとCDNサービスを利用してページのロード速度を向上させ、さらにCloudflareのサービスを使用してSEO効率を高めました。Table Pageを設定し、対応する列とビューを構築して、記事の内容と表示をコントロールします。これにより、Notionを使用してブログを構築する目標を最終的に実現しました。
cover
January 9, 2019
「リファクタリングについて」
リファクタリングの理念と、日常的にコードをリファクタリングする方法について紹介します。記事で特に印象的なのは、著者がリファクタリングの理念について強調している点で、リファクタリングは大規模なプロジェクトであるとしつつも、このプロジェクトを日常開発に組み込むべきだとしています。これにより、将来のシステムが強固になることを保証します。同時に、開発プロセスは機能開発とコードリファクタリングの二つの側面に分ける必要があると記事では述べていますが、これら二つは同時に行うべきではありません。この点は非常に重要で、両者の目的が異なるため、同時に行うとコードが混乱の塊になってしまうからです。
cover
January 8, 2019
Google Cloud の封鎖体験記
Google Cloud でのアカウント停止経験について、Docker Image を使用している際に認証ファイルが公開され、プロジェクトが停止されました。認証ファイルの管理方法とプロジェクトディレクトリ内に秘密鍵を置くリスクに注意する必要があります。
cover
January 1, 2019
2018年に気に入ったいくつかの製品
2018年に気に入ったいくつかの製品:Windows Subsystem for LinuxとNotion。
cover
November 23, 2018
Bitbucket Pipeline + Docker + Gradle による自動デプロイ実践
Bitbucket Pipeline + Docker + Gradle による自動デプロイ実践。Bitbucket Pipeline サービスを利用して継続的インテグレーションを実現し、プロジェクトをDockerイメージにパッケージングし、最新のイメージをプルしてコードを更新します。Gradle Docker Build を使用してDockerのパッケージングを処理し、GCRでイメージをホスティングし、VPSインスタンスでデプロイします。Pipelineスクリプトを記述して自動デプロイを実現します。
cover
September 12, 2018
浙江大学ルーター設定ガイド
浙江大学のルーター設定ガイドでは、キャンパスネットワーク環境でルーターを使用する方法について説明しています。Linuxクライアントの使用と模擬ログインの2つの方法、およびキャンパスネットワーク認証スクリプトの使用方法が含まれています。
cover
August 10, 2018
Github Pages でのリバースプロキシによるクロスドメイン対応実践
nginxリバースプロキシとletsencryptを使用して設定し、Github Pages上のwebアプリのクロスドメイン問題を解決します。フロントエンドのトラフィックをnginxサーバーに転送し、その後nginxリバースプロキシを介してフロントエンドをGithub Pagesに、APIをバックエンドサーバーにプロキシします。同時に、letsencryptのcertbotを設定して、Httpsへのリダイレクトを実現します。
cover
August 9, 2018
GitHub Pagesへのデプロイについて
この記事では、著者がReactを使用して作成した小さなアプリケーションをGithub Pagesにデプロイする方法について主に説明しています。デプロイプロセスで遭遇した問題とその解決策について詳しく紹介されており、自分のプロジェクトをGithub Pagesにデプロイしたい開発者にとって非常に実用的です。
cover
November 16, 2016
RxActivityResult 原理の簡単な分析
この記事では、RxActivityResult ライブラリの原理とソースコード分析について紹介しています。プロキシ Activity を起動して、2つの Activity 間のデータ交換を実現します。Intent とコールバックインターフェースをパッケージングし、HolderActivity を起動してリクエストを提供します。その後、HolderActivity が目的の Activity を起動し、戻り値を受け取り、最終的にコールバックを通じて結果をサブスクライバーに伝えます。また、同様のライブラリである RxPermissions についても言及しています。