サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Appleイベント
tech.buty4649.net
Ubuntu 24.04 LTSリリースめでたい 🎉 discourse.ubuntu.com gihyo.jp 早速Ubuntu 22.04からdo-release-upgradeして24.04にしようとしたら新しいLTSバージョンはないと表示される… $ do-release-upgrade Checking for a new Ubuntu release There is no development version of an LTS available. To upgrade to the latest non-LTS development release set Prompt=normal in /etc/update-manager/release-upgrades. mantic(23.10)とjammy(22.04 LTS)からのアップグレードは現時点ではアンロック
[!IMPORTANT] この記事を執筆時点での情報です。正式リリース後のLTSバージョンでは修正されているかもしれません。 Ubuntu 24.04(beta)が降ってきたので早速手元のWSL環境をアップデートした。 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu Noble Numbat (development branch) Release: 24.04 Codename: noble $ wsl.exe --version WSL バージョン: 2.2.2.0 カーネル バージョン: 5.15.150.1-2 WSLg バージョン: 1.0.61 MSRDC バージョン: 1.2.5105 Direct3D バージョン: 1.611.1-815285
この記事はmrubyファミリー Advent Calendar 2023の22日目の記事です。 昨日は@kurod1492(黒谷 明大)さんのPicoRubyでMatz葉がにロボコンに挑戦でした。 私はrfというRubyで書けるCLIのテキストフィルタツールを作っています。 詳しくは昨日の記事を参照してください。 tech.buty4649.net このrfはほぼmrubyで作っています。 今日はrfを作っているときに得られたmrubyでCLIツールを作るときのTipsについて書こうと思います。 なぜmrubyでCLIツールを作るか? 1番のモチベーションはRubyでかけることです。 しかし、Rubyを使いだけならRubyのスクリプトファイルでも良いと思うかもしれません。 Rubyスクリプトを実行するためにはRubyのコードを実行する環境(CRubyなど)や、そのスクリプトが利用しているg
GitHubに追加された警告記法が便利だったので実装してみた。 ↓こんな感じ > [!NOTE] > Highlights information that users should take into account, even when skimming. --- > [!TIP] > Optional information to help a user be more successful. --- > [!IMPORTANT] > Crucial information necessary for users to succeed. --- > [!WARNING] > Critical content demanding immediate user attention due to potential risks. ---- > [!CAUTION] > Negative p
自宅サーバを運用していると突発的なリブートや設定ミスによるアクセス不能などなどが起こり、そのたびにリモートKVMが欲しくなる…。 しかし、リモートKVMは主にエンタープライズ向けで対応した筐体や装置が高額でなかなか手が出づらい…。 そこでどこのご家庭にもある余ったラズパイとPiKVMを使って安価にリモートKVMを作ろうというのがこの記事の趣旨。 PiKVMとは PiKVMは、Raspberry Pi(ラズパイ)を用いて遠隔地から物理的なコンピュータにキーボード、ビデオ、マウス(KVM)スイッチとしてアクセス可能にするオープンソースプロジェクトである。 この記事を書いている現在(2024/03/24)では、DIY PiKVM V1~v4の4つのバージョンがある。 V3とV4はラズパイ内蔵の完成品になっていて、これらのバージョンを自作することはできない?ので今回の選択肢からは外す。 V1とV2
私は普段VSCodeを使っていて、拡張機能としてvscode-nvimを使っていて、そしてこの拡張の設定でnvimはWSL上で実行するようにしている。 この設定にしてほとんど困ることはないのだが、唯一困るのがクリップボードが使えないことである。 理由は簡単でnvimがWSL上で実行されるために、クリップボード操作をしてもWindowsへ反映されないからである。 この問題をGoogle検索するとpowershell.exeを使ってクリップボードをコピーする方法が見つかる。 見つかった方法で解決はするのだが、WSLからexeを実行する関係でものすごく遅い。 これは厳しい…っとなってたが解決する方法を見つけたので備忘として残しておく。 解決策: WSLgを使う 解決方法は至ってシンプルでWSLgを使うことである。 どういうことかというのを簡単に説明すると、WSLgはWaylandというプロトコル
この記事はRuby Advent Calendar 2023の21日目の記事です。 Rubyでワンライナーでテキストの処理をしたいと思ったことはありませんか?ありますよね! そういったときに便利に使えるCLIツールのrfを作ったので紹介します。 モチベーション 具体例 インストール方法 rfの仕様 フィルタ レコードとフィールド コマンドと評価結果 特殊変数 定義済みメソッド match / match? メソッド at_exitメソッド 言語拡張 StringとInteger/Floatを直接計算、比較できる Hashのキーをメソッド名として扱える 未定義の変数にInteger/Float/String、Arrayへの要素追加ができる おわりに モチベーション 普段のオペレーションの中で、ファイルの特定の文字列を含む行を出力するにはgrepを使うと思います。 grepより複雑なことをやら
rfではLinux/Mac/Windows向けのバイナリを提供している。 LinuxとMac向けのバイナリについてはZigを使ってクロスビルドしている。 では、Windows向けはどうしているかというとgccを使ってクロスビルドしている。 何故かというと、rfのWindows対応を開発していた当初もZigを使ったクロスビルドを試していていたのだが、うまくいかなかった。 そのままWindows対応を見送るのはなんとなく嫌だったので、gccを使った方法に舵を切ったという経緯がある。 最近rfのビルド環境を見直していて、ついでにWindows向けのバイナリもZigを使う方法がないか再度調査していた。 結果としてはビルドはできたが意図した通り動かず、そしてそれがどうすればいいかわからなかったので失敗に終わった…。 失敗はしたがまたチャレンジした時の参考にするために備忘として残しておく。 なぜZig
基礎からの新しいストレージ入門 基本技術から設計・運用管理の実践まで 作者:坂下幸徳ソシムAmazon 本書を読むきっかけは、会社のSlackで本書が進められていて気になったからだった。 ストレージについては今までの経験から知識として備えているつもりだったが、いざ体系的に説明しろと言われると網羅性が怪しかった。 しかし、本書ではストレージの歴史から物理的なインターフェイスやプロトコル、アーキテクチャなどの説明も網羅されていて、改めて知識の整理ができてよかった。 また、用語の説明だけではなく実際にストレージを使う手順についての解説や、ストレージの選定や設計についても書かれていて、今まで私が設計するときに勘に頼っていた部分が言語化されていてとても学びになった。 本書は新しいストレージ入門とうたっているだけあって、オブジェクトストレージやSDS、Kubernetes、Cloud Nativeとい
以前にstarship+asdfでプロンプトの表示が遅くなるのを改善するという記事を書いた。 この時はdirenvを使うことで解決したのだが、どうも最近再発していた。 さすがに、プロンプトの表示が遅いのはストレスなので、他のものに乗り換えるかasdfをやめるかって思っていたら、asdfをRustで再実装したというrtxというのが流れてきたので試してみた。 github.com rtxを使ってみた感想 結論としてはstarship+asdfで起こっていたプロンプトの表示が遅くなる問題が解決した。 どのくらい早くなったのかを数値で示したいところなのだが、どうもstarship explainで取れない部分*1で遅くなっていたようで数値で測れないのであった…。 (2023/02/06追記:) Enterキーを押し続けたたときの表示差をスクリーンキャプチャしてみた。 youtu.be (追記ここま
mruby APIのオンラインドキュメントをDocset化した。 DocsetはDashやZealで閲覧できる。 オフラインでmrubyのAPIを参照できるので便利。 なお、私はMacを持っていないのでDashでの動作確認はしていないのであしからず…。 ↓のFeed URLから追加できるはず(Zealでは確認した)。 https://raw.githubusercontent.com/buty4649/mruby-api-docset/main/mruby-3.2.0-api.xml Dash向けはこちら*1。 github.com Docsetの作り方 Docsetの作り方は公式のページに書いてある。 kapeli.com 簡単に書くと、以下のようなディレクトリ構成とファイルを作成してtarballにすればよい。 ディレクトリ構成はこんな感じ。 (Docsetの名前).docset └─
github.com モチベーション 私は普段ソフトウェアのバージョン管理にrtxを使っている。 大抵のソフトウェアは有志によりプラグインが作られているので rtx plugin add すればインストールすることができる。 しかしながら、プラグインがないソフトウェアも存在する。 その場合プラグインを作るのがいいのだけど、さすがに手間である。 そこで、任意のURLからダウンロードを行うだけのプラグインを作った。 使い方 rtx plugin add するときに $ASDF_PLUGIN_DOWNLOAD_URL 環境変数を設定する必要がある。 この環境変数にはダウンロードを行うバイナリを含んだtarballかzipファイルのURLを指定する。 $ export ASDF_PLUGIN_DOWNLOAD_URL=https://example.com/example-software-1.0
前の記事でUbuntu 23.04 on WSLにしても問題は起こっていない!っと書いた直後に、WindowsのEXEが実行できないことに気がついた…しょぼーん。 EXEを実行すると以下のようなエラーを吐く。 ❯ wslview . grep: /proc/sys/fs/binfmt_misc/WSLInterop: No such file or directory WSL Interopability is disabled. Please enable it before using WSL. grep: /proc/sys/fs/binfmt_misc/WSLInterop: No such file or directory [error] WSL Interoperability is disabled. Please enable it before using WSL. /
今年のはじめにAlacrittyからkittyに移行しているという記事を書いてそれ以来kittyを使っていたのだが、色々あって結局Alacritty + tmuxな元の環境に戻ってきてしまった。 それまでの変遷とか思ったことを書いておく。 kittyとの出会いと別れ kittyとの出会いは↑に書いた以前の記事のとおりなのだが…。 ハマりどころがあれど順調に使っていたのだけど、Ctrl+Lでターミナルをクリアするとスクロールバッファが消えるのがどうしても厳しかった…。 一応、issueにて改行コードを複数発行して回避するワークアラウンドが紹介されているが、そこまでして対応するのもなぁ…という気持ちになり別のにするかとなった。 github.com そしてZellijへ ある日Twitterを眺めていたらZellijが良さそうというツイートを見かけた。 調べたところRust製でtmuxの置き換
前回の記事でrfというツールを作っていることを書いた。 記事を書いた時点ではテストコードが一切なかった。 さすがに、テストコードがないのは今後開発を続けていくのは不安なのでArubaを使ってテストコードを書いた。 github.com Arubaはあまり使い方を紹介しているサイトが少なく情報に困ったので、この記事が参考になれば幸いである。 Arubaの始め方 Aurbaはそれ単体で使うわけではなく既存のRubyのテストフレームワークに組み込む形で使用する。 ドキュメントを見ると、RSpec、minitest、Cucumberに対応しているとのこと。 私はRSpecを使ったので、この記事でもRSpecとArubaを使った方法で説明する。 gem install arubaしArubaをインストールしたらarubaコマンドを実行して、初期ファイルを生成する。 $ aruba init --te
Rubyのコードでplain text/JSON/YAMLを整形できるrfコマンドを作っている。 このrfコマンドのv1.0.0をリリースした。 といいつつも、前回のv0.2.0から大きく機能を増やしたということはなく、バグの除去やテスト環境の構築のみになっている。 だが、v0.3.0、v0.4.0…っとバージョンを上げていっても延々と正式バージョンにならない感じがありモチベーションが上がらないのと、v1.0.0以上になっていないと開発版のような感じがして利用者が増えなそうなのでv1.0.0にした。 機能不足だが、これから頑張って増やしいこう 💪 以下変更点などを記載。 READMEを書いた 前回のブログで書いたような内容を基にREADMEを作成した。 github.com なお日本語で書いた後に、ChatGPT/BingAIをつかって英訳した。便利~ github.com インストール
github.com 2023/05/15追記: リポジトリのリンクを追加(thx: id:k1low !!) モチベーション 私はcliでテキストを編集するときはawk/sedを使い、JSONはjq、YAMLはyqを使っている。 それぞれ単純な処理ならあまり苦労せず使えるのだが、複雑な処理をしたい場合スクリプトを組んだりしないといけない。 そういったときにRubyでガっと書いてしまいたいのだけど、ruby -ane '〜' だとそれはそれで書くコードが長くなってめんどくさい。 そこで、コードゴルフしやすいようなメソッドなどを追加してコードが長くなるのを防ぎつつ、Rubyのコードでフィルタ処理をかけるようなcliツールがあると便利そう!というのがモチベーション。 また、mrubyで何かしらのcliツールを作りたいというのもモチベーションの1つ。 インストール方法 今回作成したrfはzigを
先月に引き続きWEB+DR PRESS Vol.134を読んだ。 月末に駆け込みで読む習慣になっていて良くないね。 gihyo.jp 以下気になった記事と感想。 サバンナ便り 第6回 自動テストのサイズダウン戦略 テスタブルを活用することで自動テストのサイズダウンを行うことができる。 テストダブルが提供する「互換性」の種類を把握しすることが大切だと感じた。 また、そもそもテストダブルを導入する前にサイズダウンができないかという検討もするべきだと学んだ。 ちょっと気になる隣の技術畑 第11回 プラットフォームを超えるWebAssembly 最近個人的に気になっているWebAssembly。 この特集ではWebAssemblyの成り立ちや優位性、ユースケースなどについてインタビュー形式で紹介されている。 WebAssembly v1.0の仕様がシンプルなものらしいので今度読んでみたり、実装して
Shopifyが出しているRuby LSPのVSCode拡張をrtx(asdf clone)で動かしてみようというのがこの記事。 code.visualstudio.com 結論 以下の実行ファイルをasdfという名前にしてPATHの通っているディレクトリに配置すれば動くはず。 #!/bin/bash if [[ "$1" == "exec" ]]; then shift command=$1; shift set - exec $command -- $command "$@" fi exec rtx "$@" 動かない場合はrtxを最新バージョンにするとよさそう。 rtxではエラーになる Ruby LSPではRubyのバージョンマネージャを利用することを前提に設計されている*1。 プロジェクトごとにRubyのバージョンを変更できるようにする措置であると思われる。 使用できるバージョンマ
発売されたのは先月だったのだが、積読してしまったので(よろしくない)読んだ。 gihyo.jp 気になった章の感想 特集1 識者がたどり着いた最適解 TypeScript最新活用 リンタ,バンドラ,ランタイム,エッジ TypeScriptの今を解説した特集。TypeScriptは全然キャッチアップできていないのでなるほど~?っとなっていた。 第5章のWebアプリケーションにおけるエッジは気になる内容だった。Cloudflare Wokerなどのエッジ環境についての解説とユースケースがわかりやすかった。個人的にはエッジ環境のランタイムはWasmになってほしいなぁ~っと思っていたりw 特集2 コミッター直伝!速習Ruby 3.2 Wasm対応,ReDoS対策,性能改善 Ruby3.2の新機能などの解説。 Wasm対応やReDos対策は抑えていたが、新機能や新しいメソッドの追加、仕様変更などは把
毎度忘れてそのたびに色々検索するのでブログにメモしておく。 結論から書くとoffset modifierを使うと実現できる。 prometheus.io 例えば、exampleサーバの5分間のCPUの%idleを取りたい場合は以下のように書くと思う。 sum by (mode)(irate(node_cpu_seconds_total{mode="idle", instance="example"}[5m])) 7日前の同じデータを取りたい場合は、 offset 7d を付与する。 sum by (mode)(irate(node_cpu_seconds_total{mode="idle", instance="example"}[5m] offset 7d)) グラフの横軸が6/20(この記事の投稿日)になっていて分かりづらいが、7日前のグラフになっている。 実際にoffset modi
Zigで簡単クロスコンパイル 2022を読んでZigを使えばクロスコンパイルできることを知る -> Zigを使えばWASMバイナリが作れる ->つまりmrubyでWASMバイナリが作れるのでは?っと思いついたのでやってみたら、条件付きでWASMバイナリにクロスコンパイルできたのでメモしておく。 WASMバイナリのビルドの手順 まず冒頭に書いた条件付きとなっている理由に着いて説明する。 詳しくは後述するのだがWASMにクロスコンパイルするためにはWASMのexception handling機能を使う必要がある。 この機能は2023/02/20時点ではすべてのWASMランタイムで動くわけではないため、今回はこの機能に対応したNode.jsをランタイムとして使用する。 また、exception handling機能に絡んでもう1つ制約がある。 ここで紹介する手順ではRubyのraise〜cat
WSLになってからssh-agentのパスフレーズ入力をどうするか悩んでいた。 毎回パスフレーズを入力するのはめんどくさいし、ssh-agentはプロセスを再起動すると再度パスフレーズの入力を求められる。 今までだましだまし使っていたが、最近WSL上でGNOME Keyring動くことに気がついたのでこれにパスフレーズを記憶させることでこの問題を解決した。 環境 Windows11 WSLバージョン 1.0.3.0 WSLの詳細 > wsl --version WSL バージョン: 1.0.3.0 カーネル バージョン: 5.15.79.1 WSLg バージョン: 1.0.47 MSRDC バージョン: 1.2.3575 Direct3D バージョン: 1.606.4 DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hy
バックアップデータのrsyncなど長時間かかるコマンドは、待っているあいだに他の作業も行いたい。 だけど、他の作業に夢中になってしまいコマンドの実行がかなり前に終っていたなんてことがある。 そういうときは、コマンドが終了したら takosan にPOSTしてSlackに通知するなんてことを良くする。 が、これをよく忘れる。。。orz コマンドを実行してすぐならば止めて、もう一回やり直す…なんてこともできるが、 少し経って「ああ、これは時間かかるな…」ってことがよくある。 そんな時には以下のようなオペレーションをする Ctrl-z でプロセスをサスペンドする fg && curl -d "channel=#channel&message=test message" http://takosan.example.com:4979/privmsg を実行する fg コマンドを使うとは個人的にとて
最近RISC-Vは熱いらしいというのを見たので[どこで?]、キャッチアップしなくてはと思いRISC-VとChiselで学ぶ はじめてのCPU自作を買って読んだ。 この本を選んだ理由はRISC-VとCPU自作で検索したときに一番最初にヒットしたからという単純な理由。 gihyo.jp そもそもCPUとは何ぞや?といったところから始まり論理回路、コンピュータアーキテクチャっと続く。 ここらへんは基本情報処理の範囲なので流し読みしつつ復習していく。 その後、RISC-Vのアーキテクチャ、そしてChiselの説明に移っていく。 一通りの説明が終わると、Chiselを使ったRISC-V CPUの自作が始まる。 Chisel*1は、ScalaのDSLで実現されていることもありとっつきやすかった。 また、本書では開発環境としてDockerを利用するため環境が作れなくてリタイアする…というのがなくてよかっ
rustup doc --std したときにうまくFirefoxが起動せず別のアプリが起動してしてしまった。 こういう場合以下のコマンドを打つと、Firefoxに変更できる。 ❯ xdg-mime query default text/html ferdi.desktop 👈 text/htmlを開くのにferdiが選択されている 👇Firefoxに変更する ❯ xdg-mime default firefox.desktop text/html ❯ xdg-mime query default text/html firefox.desktop 同じ要領で特定のMIMEで任意のアプリケーションを開けるようにできそうだ。 出典: users.rust-lang.org
この記事はMackerel Advent Calendar 2022の12/21の記事です。 昨日はid:stefafafanさんのMackerelのサービスメトリックを簡単に投稿するためのGitHub Actionsを作ったでした。 GitHub Actionsを使ってMackerelにサービスメトリックを投稿するという内容でした。 実際のユースケースやGitHub Actionsでテクニックが紹介されいてとても参考になる記事でした! 明日はid:genkiroidさんです! 業務においてサーバインベントリを収集する必要性が出てきた。 サーバインベントリを収集する方法はいくつか考えられるが、今回はちょうどよく対象のサーバ群にMackerelがインストールされていたので、Mackerelを使ってインベントリを収集しようということになった。 mkr_inventory.rb gist.git
この記事はRuby Advent Calendar 2022の12/6の記事です。 最近、Ruby on Railsを使って初めて1からWebシステムを作っている。 Railsではデフォルトで*1Minitestのテストコードが生成される。 システムを作成しはじめた当初はデフォルトであるMinitestで書いていたのだが、作業を進めていくうえでRspecのようにテストのコンテキストによりテストコードをブロックで分けたほうが書きやすいと思い始めてきた。 調べるとどうやらMinitest::SpecでRSpec風に書けることがわかったので、備忘録的にブログに残しておく。 Minitest::Spec 公式ドキュメントに書いてあるとおりrequire "minitest/autorun"するだけでよい。便利。 github.com contextとdescribed_classが使えない Rsp
AWSからくるメンテナンスのお知らせがUTCだったり、ときどきログやグラフのタイムゾーンがUTCになっていたりする。 そんなときにJSTへシュッと変換したくなる。 dateコマンドは現在設定されているタイムゾーンで表示できるのと、-d オプションを指定することで任意の日付を設定できる。 この2つを使ってタイムゾーンの変換ができる。 UTCからJST ❯ date -d "8:00 UTC" 2022年 2月 7日 月曜日 17:00:00 JST ❯ date -d "2022/02/04 8:00 UTC" 2022年 2月 4日 金曜日 17:00:00 JST -d オプションで指定する日付にUTCをつけるだけ。 また、RFC1123形式もパースできる。 ❯ date -d "Wed, 21 Oct 2015 07:28:00 GMT" 2015年 10月 21日 水曜日 16:28
次のページ
このページを最初にブックマークしてみませんか?
『tech.buty4649.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く