# 🏆MVP
## Silhouette Coreリリース
以前からずっとやりたかった[[🦉Silhouette]]のコアロジック切り出しがようやくできた。[[🦉Silhouette Core]]としてリリースした。
<div class="link-card">
<div class="link-card-header">
<img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/>
<span class="link-card-site-name">GitHub</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">GitHub - tadashi-aikawa/silhouette-core</p>
<p class="link-card-description">Contribute to tadashi-aikawa/silhouette-core development by creating an account on GitHub.</p>
</div>
<img src="https://opengraph.githubassets.com/62654e7fef7635428ce2ec91891a57396df58351c4138a2afbc7c9470dcd618b/tadashi-aikawa/silhouette-core" class="link-card-image" />
</div>
<a href="https://github.com/tadashi-aikawa/silhouette-core"></a>
</div>
開発は今までほぼ使ってなかった[[Deno]]。最新版のv2を利用。パッケージも[[npm]]ではなく、今回初の[[JSR]]を利用した。
<div class="link-card">
<div class="link-card-header">
<img src="https://jsr.io/logo-square.svg?__frsh_c=7f2d105db1ea0915e56007d608b78aefa87ff00a" class="link-card-site-icon"/>
<span class="link-card-site-name">JSR</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">@tadashi-aikawa/silhouette-core - JSR</p>
<p class="link-card-description">@tadashi-aikawa/silhouette-core on JSR</p>
</div>
</div>
<a href="https://jsr.io/@tadashi-aikawa/silhouette-core"></a>
</div>
また、[[🦉Silhouette Core]]を[[🦉Silhouette.nvim]]にも導入し、v0.4.1としてリリースした。[[🦉Silhouette.nvim]]は[[Denops]]を使っており、一部のハマリポイントについては知見もできた。
- [[📝DenoプロジェクトでローカルのDenoプロジェクトをimportするとimport pathのエラーになる]]
- [[📝denopsで作成したプラグインがImport Mapsを使ってパッケージをインポートしているとRelative import pathエラーになる]]
今後は[[🦉Silhouette]]本体にも[[🦉Silhouette Core]]を適応する予定。コアロジックに手を加えるときは[[🦉Silhouette Core]]を更新し、[[🦉Silhouette]]と[[🦉Silhouette.nvim]]の両方にバージョンアップをかけていくつもりだ。
もちろん、[[🦉Silhouette Core]]がどなたかのライブラリやツール開発の役に立てば本望である。
# 🥈RUP
## Neovimプラグインのテストを導入
[[Neovimプラグイン]]、もとい [[Lua]]の[[ユニットテスト]]をはじめて導入した。[[vusted]]を使っている。
<div class="link-card">
<div class="link-card-header">
<img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" class="link-card-site-icon"/>
<span class="link-card-site-name">minerva.mamansoft.net</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">📜2024-10-27 vustedでNeovimプラグインのLuaファイルをテストしてみる</p>
</div>
<img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" class="link-card-image" />
</div>
<a class="internal-link" data-href="Notes/📜2024-10-27 vustedでNeovimプラグインのLuaファイルをテストしてみる.md"></a>
</div>
%%[[📜2024-10-27 vustedでNeovimプラグインのLuaファイルをテストしてみる]]%%
[[LuaRocks]]を使用するため[[Neovim]]と別の[[インタプリタ]]になり、[[lua-language-server|LuaLS]]の設定でハマったり、[[GitHub Actions]]が素直に動かなかったりとつまずいた点はあったが、他の言語同様、watchモードでテストを流す開発ができるのは快適であり安心感もある。導入が一番大変なので大きな一歩。
# 🪙OPA
## Lua動作確認環境の強化
テストの導入と並行して、気軽に[[Neovim]]で動く[[Lua]]の動作を確認する環境も確立できた。
<div class="link-card">
<div class="link-card-header">
<img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" class="link-card-site-icon"/>
<span class="link-card-site-name">minerva.mamansoft.net</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">📕LuaをインストールせずNeovimだけでターミナルのコマンドラインからluaファイルを実行</p>
<p class="link-card-description">`-l`フラグを使ってNeovim経由でLuaファイルを実行する。</p>
</div>
<img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/prime.webp" class="link-card-image" />
</div>
<a class="internal-link" data-href="Notes/📕LuaをインストールせずNeovimだけでターミナルのコマンドラインからluaファイルを実行.md"></a>
</div>
%%[[📕LuaをインストールせずNeovimだけでターミナルのコマンドラインからluaファイルを実行]]%%
今までは[[Neovim]]上から `:luafile %` コマンドを実行してprintの結果を確認する... みたいな面倒なことをやっていたが、この方法なら[[ホットリロード]]で素早く確認できる。[[vusted]]を使ったテストと使い分けていきたい。
なお、今までは[[Lua]]ファイル単体で[[lua-language-server|LuaLS]]がちゃんと動かなかったので、そちらもあわせて修正した。
<div class="link-card">
<div class="link-card-header">
<img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" class="link-card-site-icon"/>
<span class="link-card-site-name">minerva.mamansoft.net</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">📝単一のLuaファイルをNeovim(nvim-lspconfig)で開くとlua_lsがエラーになる</p>
</div>
<img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" class="link-card-image" />
</div>
<a class="internal-link" data-href="Notes/📝単一のLuaファイルをNeovim(nvim-lspconfig)で開くとlua_lsがエラーになる.md"></a>
</div>
%%[[📝単一のLuaファイルをNeovim(nvim-lspconfig)で開くとlua_lsがエラーになる]]%%
# 🚀Releases
- [[🦉Silhouette Core]]
- [Silhouette Core v1.0.0リリース](https://github.com/tadashi-aikawa/silhouette-core/releases/tag/v1.0.0)
- 初リリース
- [Silhouette Core v1.0.1リリース](https://github.com/tadashi-aikawa/silhouette-core/releases/tag/v1.0.1)
- [Silhouette Core v1.0.2リリース](https://github.com/tadashi-aikawa/silhouette-core/releases/tag/v1.0.2)
- [[🦉ghostwriter.nvim]]
- [ghostwriter.nvim v0.4.1リリース](https://github.com/tadashi-aikawa/ghostwriter.nvim/releases/tag/v0.4.1)
- リンク変換でタイトルがエスケープしているケースに対応
- [[🦉Silhouette.nvim]]
- [Silhouette.nvim v0.2.0リリース](https://github.com/tadashi-aikawa/silhouette.nvim/releases/tag/v0.2.0)
- [[🦉Silhouette Core]]へコアロジックを置き換え
# 👀Reading
## ヘッドレスな補完エンジンをつくりたい話
<div class="link-card">
<div class="link-card-header">
<img src="https://static.zenn.studio/images/logo-transparent.png" class="link-card-site-icon"/>
<span class="link-card-site-name">Zenn</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">ヘッドレスな補完エンジンをつくりたい話</p>
</div>
<img src="https://res.cloudinary.com/zenn/image/upload/s--HxB2Tme7--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E3%2583%2598%25E3%2583%2583%25E3%2583%2589%25E3%2583%25AC%25E3%2582%25B9%25E3%2581%25AA%25E8%25A3%259C%25E5%25AE%258C%25E3%2582%25A8%25E3%2583%25B3%25E3%2582%25B8%25E3%2583%25B3%25E3%2582%2592%25E3%2581%25A4%25E3%2581%258F%25E3%2582%258A%25E3%2581%259F%25E3%2581%2584%25E8%25A9%25B1%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:hrsh7th%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2dkYldzTHM5Ti1WQXJnN01Oa1JIQnRuTXc5V0J4VWlPeTludEczN2c9czI1MC1j%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png" class="link-card-image" />
</div>
<a href="https://zenn.dev/hrsh7th/articles/1d558a56084fe5"></a>
</div>
~~~
nvim-cmp 今の状態で十二分に便利に使わせていただいてるので感謝しかない。プラグイン多くなってしまうのはたしかに初回ハードルは高いけどまあそんなもの。
https://zenn.dev/hrsh7th/articles/1d558a56084fe5
~~~
## @tadashi-aikawa/silhouette-core - JSR
<div class="link-card">
<div class="link-card-header">
<img src="https://jsr.io/logo-square.svg?__frsh_c=7f2d105db1ea0915e56007d608b78aefa87ff00a" class="link-card-site-icon"/>
<span class="link-card-site-name">JSR</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">@tadashi-aikawa/silhouette-core - JSR</p>
<p class="link-card-description">@tadashi-aikawa/silhouette-core on JSR</p>
</div>
<img src="https://jsr.io/@tadashi-aikawa/silhouette-core/og" class="link-card-image" />
</div>
<a href="https://jsr.io/@tadashi-aikawa/silhouette-core"></a>
</div>
~~~
とりあえずJSRでsilhouette-coreを公開した。
v1として公開してしまったのは事故なので注意書き付き。とはいえSilhouetteもv1出ているから今思うとv1でもいいのかもしれない... (timer系がないのでそれ追加してからかな)
https://jsr.io/@tadashi-aikawa/silhouette-core
~~~
## 【Golang】Functional Option Patternで実現する関数のデフォルト引数(オプション引数)の設定方法 - Qiita
<div class="link-card">
<div class="link-card-header">
<img src="https://cdn.qiita.com/assets/favicons/public/production-c620d3e403342b1022967ba5e3db1aaa.ico" class="link-card-site-icon"/>
<span class="link-card-site-name">Qiita</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">【Golang】Functional Option Patternで実現する関数のデフォルト引数(オプション引数)の設定方法 - Qiita</p>
<p class="link-card-description">はじめにGolangには、関数のデフォルト引数(後述します)がありませんこれに対するアプローチの1つとし ... </p>
</div>
<img src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJTkwR29sYW5nJUUzJTgwJTkxRnVuY3Rpb25hbCUyME9wdGlvbiUyMFBhdHRlcm4lRTMlODElQTclRTUlQUUlOUYlRTclOEYlQkUlRTMlODElOTklRTMlODIlOEIlRTklOTYlQTIlRTYlOTUlQjAlRTMlODElQUUlRTMlODMlODclRTMlODMlOTUlRTMlODIlQTklRTMlODMlQUIlRTMlODMlODglRTUlQkMlOTUlRTYlOTUlQjAlMjglRTMlODIlQUElRTMlODMlOTclRTMlODIlQjclRTMlODMlQTclRTMlODMlQjMlRTUlQkMlOTUlRTYlOTUlQjAlMjklRTMlODElQUUlRTglQTglQUQlRTUlQUUlOUElRTYlOTYlQjklRTYlQjMlOTUmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPWJlNTE1YWExZjdhNTEzNTlmNDMwZjJjNmI0Y2IxOGI2&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBrb2dhbW9jaGlkdWtpJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lNDk5NTQ1Mzk3YzFmZTQxYzYwODk4NDVkODIwZjM4ZA&blend-x=142&blend-y=486&blend-mode=normal&s=1d92d73e13aa7fc9bab1f61124a5a23f" class="link-card-image" />
</div>
<a href="https://qiita.com/kogamochiduki/items/946b7b7be1ec75e11cba"></a>
</div>
~~~
他言語に比べて冗長なのであまり好きではないけど、これが今のベストなのは変わらない。optionalもいいけど、key/valueで指定したい気持ちはある。可読性的に。
https://qiita.com/kogamochiduki/items/946b7b7be1ec75e11cba
~~~
## 役職無いのにその対応は求められる「役職的搾取」との向き合い方。 - 笑顔を創りたいWebディレクターの日常
<div class="link-card">
<div class="link-card-header">
<img src="https://toksato.hatenablog.com/icon/favicon" class="link-card-site-icon"/>
<span class="link-card-site-name">笑顔を創りたいWebディレクターの日常</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">役職無いのにその対応は求められる「役職的搾取」との向き合い方。 - 笑顔を創りたいWebディレクターの日常</p>
<p class="link-card-description">こんばんちは、スーパー太っちょWebディレクターです。スーパーは太っちょにかかります。 なんと!前の ... </p>
</div>
<img src="https://ogimage.blog.st-hatena.com/12921228815731546191/6802418398299056507/1729924008" class="link-card-image" />
</div>
<a href="https://toksato.hatenablog.com/entry/yakushoku-sakushu/"></a>
</div>
~~~
良い話。まあ給料は常に後からついてくるもので、給料上がったから頑張らなきゃーみたいなケースは少ないかなと。
https://toksato.hatenablog.com/entry/yakushoku-sakushu/
~~~
## Using Neovim as Lua interpreter with Luarocks
<div class="link-card">
<div class="link-card-header">
<span class="link-card-site-name">zignar.net</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">Using Neovim as Lua interpreter with Luarocks</p>
<p class="link-card-description">Personal weblog about programming, linux, life, the universe and everything</p>
</div>
</div>
<a href="https://zignar.net/2023/01/21/using-luarocks-as-lua-interpreter-with-luarocks/"></a>
</div>
~~~
LuaRocksをNeovim内包側のinterpreterでうまいことできないかなと思ったけど、面倒そうなのでそこは一旦割り切るか。。
https://zignar.net/2023/01/21/using-luarocks-as-lua-interpreter-with-luarocks/
~~~
# 📚New Notes
- [[--import-map (Deno)]]
- [[GITHUB_TOKENの権限 (GitHub Actions)]]
- [[LuaRocks]]
- [[busted]]
- [[cdo (Vim)]]
- [[deno cache]]
- [[deno fmt]]
- [[jsr (npm)]]
- [[jsr.io]]
- [[semantic-release-jsr]]
- [[udd (Deno)]]
- [[vusted]]
- [[ローカルのJSRパッケージをインポート (Deno)]]
- [[直後(行)のフォーマットを無視 (Prettier)]]
- [[直後(行)のフォーマットを無視 (deno fmt)]]
- [[📕LuaをインストールせずNeovimだけでターミナルのコマンドラインからluaファイルを実行]]
- [[📕grepなどで全文検索した結果の全行を置換 (Vim)]]
- [[📕semantic-releaseをローカルでデバッグ]]
- [[📜2024-10-27 vustedでNeovimプラグインのLuaファイルをテストしてみる]]
- [[📝Denoで今まで発生していなかった箇所がimplicitly has an 'any' typeエラーになる]]
- [[📝DenoプロジェクトでローカルのDenoプロジェクトをimportするとimport pathのエラーになる]]
- [[📝GitHub ActionsのNode.jsやnpmのコマンドを実行すると古いバージョン(v18など)が使用されてしまう]]
- [[📝Vue3のコンポーネントでv-bind=$attrsを指定しているのにExtraneous non-props attributesのwarningがでる]]
- [[📝denopsで作成したプラグインがImport Mapsを使ってパッケージをインポートしているとRelative import pathエラーになる]]
- [[📝semantic-release-jsrでGitHub ActionsからJSRにpublishするとThe actor that this request was authenticated for is not authorized to access this resourceエラーになる]]
- [[📝単一のLuaファイルをNeovim(nvim-lspconfig)で開くとlua_lsがエラーになる]]
- [[📰2024年42週 Weekly Report]]