サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
tennashi.hatenablog.com
最近 GraphQL の素振りのため、シンプルな Web アプリケーションを作ることを考えていた。 で、どうせなら最低限の機能はシングルバイナリ + いくつかのファイルを用意するだけで動作させようと思い、以下のような構成だけなんとなく考えた。 フロントアプリは build 結果を rakyll/statik で Go のバイナリに埋め込む データベースはデフォルトで SQLite を使い、必要に応じて利用者が用意した RDBMS を利用できる ところで、facebook/ent をご存知だろうか。 entgo.io これは facebook connectivity の中の人が書いている ORM で以下のコンセプトを持つ。 // facebook connectivity はどうやらネットワークの会社っぽい...? Schema As Code DB スキーマは Go のオブジェクトとして
前回 tennashi.hatenablog.com 今回から少し gopls の cache 機構を集中して読んでいく。 というのも結局 LSP サーバの実装の肝は クライアントから受け取った TextDocument の中身をいつパースするか どのようにパースするか どのように保持するか どうやって TextDocument の中身にアクセスするか なはずで、gopls の場合この cache 機構を読み解くことがこの大部分の理解に繋がると思われるからである。 cache 機構に関連して参考になるドキュメントは以下である。 github.com gopls の cache は 3層になっており、それぞれ Cache Session View と名付けられており、各々が互いに参照及び構築できる。 各々について、もう少し詳細を見ていく。 Cache cache の最下層にある構造。 ファイ
前回 tennashi.hatenablog.com 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja 引き続き、Text Document Synchronization 周りの仕様について書いていく。 textDocument/didOpen 通知 <- done textDocument/didChange 通知 <- done textDocument/willSave 通知 <- done textDocument/willSaveWaitUntil リクエスト <- done textDocument/didSave 通知 <- 今日ここ textDocument/didClose 通知 textDocument/didSave 通知 前回の willSave willSa
前回 tennashi.hatenablog.com 週刊 LSP 第三号 前回 gopls で見つけた Issue は無事 merge された 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja 引き続き、Text Document Synchronization 周りの仕様について書いていく。 textDocument/didOpen 通知 <- done textDocument/didChange 通知 <- done textDocument/willSave 通知 <- 今日ここ textDocument/willSaveWaitUntil リクエスト <- 今日ここ textDocument/didSave 通知 textDocument/didClose 通知 前回は、次
tennashi.hatenablog.com 週刊 LSP 第二号。 Language Server Protocol に従ったサーバを実装するためのメモ 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja 前回に引き続き、Text Document Synchronization 周りの仕様について書いていく。 textDocument/didOpen 通知 textDocument/didChange 通知 <- 今日ここ textDocument/willSave 通知 textDocument/willSaveWaitUntil リクエスト textDocument/didSave 通知 textDocument/didClose 通知 textDocument/didChan
Language Server Protocol に従ったサーバを実装するためのメモ 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja まずは Text Document Synchronization の実装から調査する。 Text Document Synchronization とは Text Document Synchronization は LSP サーバ/クライアント間で Text Document、つまり補完などの処理をする対象のテキストファイル内のデータを同期するための仕様群である。 LSP で定義されたこれに関連するメソッドは以下である。 // 今となってはどうでもいいが、ちょっと前まで仕様書には textDocument/open textDocument/cha
この記事は Go3 Advent Calendar 2019 13日目の記事です qiita.com TL;DR x/sync/errgroup はいいぞ 本編 最近よく書くサーバの起動部分のコードを紹介します 分かる人には見るのが一番早いと思うので、早速コード全体を載せます やりたいことは localhost:8888 で HTTP サーバを起動 SIGINT を受けると HTTP サーバを graceful shutdown 各所での ctx.Done() のハンドリング これらを混乱しないように記述したかったのが最初のモチベーションです package main import ( "context" "fmt" "net/http" "os" "x/sync/errgroup" ) func main() { os.Exit(run(context.Background())) }
このページを最初にブックマークしてみませんか?
『tennashi.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く