ブックマーク / zenn.dev/kawarimidoll (11)

  • Rust3000行でテキストエディタを作るチュートリアルをやった

    想定よりだいぶ大変でした。 hecto 成果物はこれ↓ 参考サイトはこれです↓ インスパイア元↓ 感想 Rustはこのチュートリアルが初体験 ずっと勉強したいとは思っていたので良い機会だった チュートリアルを進めていくなかで所有権とかライフタイムとかを少しずつ導入していき説明も挟んでくれるので助かった しかし3000行の経験を積んだ程度ではまだまだエラーの読み解きは難しいな〜という印象 https://bsky.app/profile/kawarimidoll.bsky.social/post/3l3znqvdbx42q パターンマッチ、ResultやOptionといった概念は先にGleamをやっていたおかげで問題なく理解できた 外部依存ナシのC言語版が1000行程度だったので外部ライブラリを使えるRust版は行数が少ないのかしらと思ったが結果的に3000行になった C版は1週間ほどで完成

    Rust3000行でテキストエディタを作るチュートリアルをやった
    yug1224
    yug1224 2024/09/25
  • Homebrew管理下のGUIもNixに移してみる nix-darwin篇

    macOSにおけるパッケージマネージャといえばHomebrewが定番ですね。 ところで、最近は純粋関数型パッケージマネージャのNixが流行りで激アツです。Nix関連ツールのnix-darwinを使うと、Homebrewのようなパッケージ管理ができるということを知り、やってみました。 前回の記事で作ったファイルを書き換える形で進めていくので、先に以下の記事をご確認ください。また、Apple Silicon Mac環境での作業を基に書いています。 導入 nix-darwinはNix経由でmacOSの設定をできるツールです。 今回はHomebrewで入れるGUIアプリをこのnix-darwinの管理下に移します。 都度brew installを実行するのではなく、設定ファイルにアプリ一覧を記述できるというのが嬉しいポイントです。 前回作ったflakeにnix-darwinを導入します。

    Homebrew管理下のGUIもNixに移してみる nix-darwin篇
    yug1224
    yug1224 2024/08/25
  • Homebrew管理下のCLIをNixに移してみる Home Manager篇

    macOSにおけるパッケージマネージャといえばHomebrewが定番ですね。 ところで、最近は純粋関数型パッケージマネージャのNixが流行りで激アツです。Nix関連ツールのHome Managerを使うと、Homebrewのようなパッケージ管理ができるということを知り、やってみました。 前回の記事で作ったファイルを書き換える形で進めていくので、先に以下の記事をご確認ください。また、Apple Silicon Mac環境での作業を基に書いています。 導入 前回作ったflakeにhome-managerを導入します。 inputsに追加 outputsの引数に追加 outputsの体にhomeConfigurationsを追加 また、 homeConfigurationsでinputsを使いたい(home-managerの設定にinputsを渡したい)ので、outputsの引数部分に@ in

    Homebrew管理下のCLIをNixに移してみる Home Manager篇
    yug1224
    yug1224 2024/07/31
  • Homebrew管理下のCLIをNixに移してみる

    macOSにおけるパッケージマネージャといえばHomebrewが定番ですね。 ところで、最近は純粋関数型パッケージマネージャのNixが流行りで激アツです。HomebrewのようにグローバルなCLIツールの管理もできるということを知り、やってみました。 記事はApple Silicon Mac環境での作業を基に書いているので、他環境の場合は適宜読み替えてください。 導入 とりあえずNixの基礎的な部分はこちらで勉強できます。 上記のzero-to-nixを管理しているDeterminateSystemsが公式のインストーラをラップしたnix-installerというものを提供しています。これでインストールするのが便利です。 curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh

    Homebrew管理下のCLIをNixに移してみる
    yug1224
    yug1224 2024/07/27
  • HTMLのデフォルト機能だけでパーシャルHTMLを埋め込む

    最近発表されたこちらに衝撃を受けました。 htmzは、iframeを利用してhtmlの一部を書き換えるアイデアです(記事ではhtmzの詳細な解説はしません)。 リポジトリはこちら。 かなり古いブラウザ環境でも動きそうなミニマルなスニペットで、個人的に非常に好みです。なぜいままで現れなかったのでしょう…。 感動したので自分でいろいろ試していたところ、パーシャルHTMLの埋め込みを思いついたので記事にしました。 やりたいこと 以下のhtmlファイルがあるとしましょう。 管理の単純化や再利用性の向上のために、ページ要素を分割しているイメージです。

    HTMLのデフォルト機能だけでパーシャルHTMLを埋め込む
    yug1224
    yug1224 2024/03/01
  • 日本語入力Vimプラグインを作ったので自慢します

    また、Shiftキーを押しながらのキー入力が負担になることの対策として、stickyという仕組みも用意されています。 このキーを押すと、次のキーがShiftされた扱いになります。以下は;をstickyとした例です。 コンセプト 上でSKKライクと書いていますが、tuskkはあくまで日本語入力補助プラグインを指向しており、SKK実装を作ることを目的としていません。 他のSKK実装でできることを諦めている部分があるため、既存のSKKに慣れ親しんでいるひとは違和感を覚える点があるかもしれません。 以下のような点が特徴的だと思います。 辞書の読み込み tuskkは SKK辞書ファイルの読み込みを行いません 。 変換を呼び出したときにripgrepを利用して辞書を検索し、それをパースして候補リストに表示します。 入力中文字の表示 SKKといえば変換開始位置を▽で表示しているイメージですが、tuskk

    日本語入力Vimプラグインを作ったので自慢します
    yug1224
    yug1224 2023/12/31
  • ニコニコ大百科IME辞書をSKK辞書化する

    先日、Vim-jp slackにて以下のように呟いたところ、 すでに辞書ファイルを作っている方がいらっしゃることを教えてもらいました。 こちらのサイトでは単に記事タイトルを収集するだけではなく、辞書として相応しくないワード(「〇〇の一覧」など)は除いてまとめているようです。すごい。 SKK用の辞書は用意されていませんでしたが、ダウンロードしてみたところ、単純なテキストファイルで提供されていたので、自分でSKK用に変換することにしました。 Atok用とMS IME用がありましたが、Atok用のファイルを元ファイルとします。 ファイル冒頭を以下に示します。 !!ATOK_TANGO_TEXT_HEADER_1 !!一覧出力 !!対象辞書;nicoime.dic !!単語種類;登録単語(*) 自動登録単語($) !!読み範囲;(読みの先頭) → (読みの最終) !!出力日時;23/11/22 0

    ニコニコ大百科IME辞書をSKK辞書化する
    yug1224
    yug1224 2023/11/26
  • Vim scriptで現在の選択範囲を取得する

    現在、最新のVimおよびNeovimでは、getregion()が使用できます。 https://github.com/vim/vim/commit/3f905ab3c4f66562f4a224bf00f49d98a0b0da91 https://github.com/neovim/neovim/pull/27578 getregion()は引数で始点・終点の座標を指定して取得することができるので、記事で紹介しているものよりも柔軟です。とくに理由がなければこちらの使用をおすすめします。 getregion()が定義されていないバージョンを考慮し、記事はそのまま残しておきます。 function! s:get_current_selection() abort if mode() !~# '^[vV\x16]' " not in visual mode return '' endif "

    Vim scriptで現在の選択範囲を取得する
    yug1224
    yug1224 2022/12/29
  • `deno -V`と`deno --version`は出力が違う

    deno -h deno 1.16.2 A modern JavaScript and TypeScript runtime (中略) OPTIONS: -h, --help Prints help information -L, --log-level <log-level> Set log level [possible values: debug, info] -q, --quiet Suppress diagnostic output --unstable Enable unstable features and APIs -V, --version Prints version information ❯ deno --help deno 1.16.2 A modern JavaScript and TypeScript runtime (中略) OPTIONS: -h, -

    `deno -V`と`deno --version`は出力が違う
    yug1224
    yug1224 2021/12/05
  • DenoとVimで簡単ローカルPlayground

    先日、以下の記事を公開しました。 こちらで紹介したのがdexというツールです。これを利用したVim(Neovim)用のDexというコマンドも併せて紹介しています。 このコマンドを使って、以下の記事で紹介されているローカルPlaygroundを作ってみようと思います。 playjsコマンド こちらのスクリプトに実行権限をつけ、パスの通ったディレクトリに配置してください。 #!/bin/bash # 開発用設定の整っているディレクトリへ移動 # cd ~/ghq/github.com/kawarimidoll/deno-dev-template/ # JSファイル名 filename="playground.js" # ファイル作成 echo 'console.log("Playground start");' > "$filename" # 作ったファイルを開き、:Dexコマンドで自動実行を

    DenoとVimで簡単ローカルPlayground
    yug1224
    yug1224 2021/12/05
  • Deno 1.16が来たぞ

    2021年11月9日にDeno 1.16がリリースされました。 記事では、上記のリリースノートの内容をざっと紹介していきます。 fetchがfile URLをサポートした React17のJSX変換がサポートされた Signal Listener APIが追加された Error.causeがコンソールに表示されるようになった TLS接続のハンドシェイクを明示的に実行できるようになった Web Streams APIに機能が追加された Deno.startTlsが安定化された Per-test permissionsが安定化した localStorageの使用に--locationが不要になった AbortSignalに理由が指定できるようになった dntがリリースされた V8が9.7にバージョンアップした fetchがfile URLをサポートした fetchメソッドの引数にファイルパス

    Deno 1.16が来たぞ
    yug1224
    yug1224 2021/11/13
  • 1