2020-01-01から1年間の記事一覧

LSP 実装メモ(gopls cache `Snapshot` 編)

前回 tennashi.hatenablog.com 先週はやる気が消失したためお休みした。 前回のまとめ ひたすらに (*Session).NewView() からの呼び出しを追っていった。 今回は残った (*snapshot).load() メソッドの処理を読む。 が、全て詳細に読むと長くなりすぎてしまう…

LSP 実装メモ(gopls cache `View` 生成詳解編)

前回 tennashi.hatenablog.com 引き続き、gopls の cache 実装を読む。 前回のまとめ View 実装のフィールドとその生成タイミングを見ることで、ディレクトリ単位で何かしらの cache をしていることが分かった。 View の初期化処理をもう少し詳しく追ってい…

LSP 実装メモ(gopls cache `View` 生成編)

前回 tennashi.hatenablog.com 引き続き、gopls の cache 実装を読む。 前回のまとめ gopls で採用されている cache は 3 層で前回読んだのは Cache/Session の 2 層だ。 Cache 素朴な OS ファイルシステム上のファイルの cache cache 自体の実体は source.F…

facebook/ent を使ってみた

Go

最近 GraphQL の素振りのため、シンプルな Web アプリケーションを作ることを考えていた。 で、どうせなら最低限の機能はシングルバイナリ + いくつかのファイルを用意するだけで動作させようと思い、以下のような構成だけなんとなく考えた。 フロントアプリ…

k8s 上での Redis の永続化戦略

Redis を起動すると次のようなログが出力されることがある。 1:M 31 Aug 2020 12:36:07.554 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sy…

LSP 実装メモ(gopls cache `Cache` `Session` 編)

前回 tennashi.hatenablog.com 今回から少し gopls の cache 機構を集中して読んでいく。 というのも結局 LSP サーバの実装の肝は クライアントから受け取った TextDocument の中身をいつパースするか どのようにパースするか どのように保持するか どうやっ…

LSP 実装メモ (Text Document Synchronization `textDocument/didClose` 編)

前回 tennashi.hatenablog.com 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja 引き続き、Text Document Synchronization 周りの仕様について書いていく。 textDocument/didOpen 通知 <- done textDocument/didChan…

LSP 実装メモ (Text Document Synchronization `textDocument/didSave` 編)

前回 tennashi.hatenablog.com 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja 引き続き、Text Document Synchronization 周りの仕様について書いていく。 textDocument/didOpen 通知 <- done textDocument/didChan…

LSP 実装メモ (Text Document Synchronization `textDocument/willSave` `textDocument/willSaveWaitUntil` 編)

前回 tennashi.hatenablog.com 週刊 LSP 第三号 前回 gopls で見つけた Issue は無事 merge された 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja 引き続き、Text Document Synchronization 周りの仕様について書…

LSP 実装メモ (Text Document Synchronization `textDocument/didChange` 編)

tennashi.hatenablog.com 週刊 LSP 第二号。 Language Server Protocol に従ったサーバを実装するためのメモ 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja 前回に引き続き、Text Document Synchronization 周りの…

LSP 実装メモ (Text Document Synchronization `textDocument/didOpen` 編)

Language Server Protocol に従ったサーバを実装するためのメモ 仕様: Language Server Protocol Specification - 3.15 訳したやつ: tennashi/lsp_spec_ja まずは Text Document Synchronization の実装から調査する。 Text Document Synchronization とは T…

ご家庭 k8s はじめました

ずっと電源すら入れてなかった Core i7 第4世代の PC、最近家で作業してるし置いとくのももったいなかったので k8s で遊ぶ用に整備した ESXi 7.0 をインストールして、その上の仮想マシンで 1 master + 2 worker 構成で k8s を立てた この構成の作成手順は無…