clapを使って、Subcommandをネストする
やりたいこと
こういう感じで、hoge <subcommand> <sub-subcommand>なCLIを作りたかった。
hoge fuga piyo
こうすれば行けた
clapのCookbookを読めば解決した。
最小構成はこうなった。
use clap::{Args, Parser, Subcommand}; #[derive(Parser, Debug)] #[command(name = "hoge")] struct Cli { #[command(subcommand)] command: HogeCommands, } #[derive(Debug, Subcommand)] enum HogeCommands { Fuga(FugaArgs), } #[derive(Debug, Args)] struct FugaArgs { #[command(subcommand)] command: FugaCommands, } #[derive(Debug, Subcommand)] enum FugaCommands { Piyo, } fn main() { let args = Cli::parse(); match args.command { HogeCommands::Fuga(fuga_args) => match fuga_args.command { FugaCommands::Piyo => { println!("piyo"); } }, } }
helpコマンドを実行してみる
./target/debug/hoge Usage: hoge <COMMAND> Commands: fuga help Print this message or the help of the given subcommand(s) Options: -h, --help Print help
./target/debug/hoge fuga Usage: hoge fuga <COMMAND> Commands: piyo help Print this message or the help of the given subcommand(s) Options: -h, --help Print help
./target/debug/hoge fuga piyo --help Usage: hoge fuga piyo Options: -h, --help Print help
Learn Next.jsをやる - Chapter1 Getting Started
やること
プロジェクトの初期化
npx create-next-app@latest nextjs-dashboard --use-npm --example "https://github.com/vercel/next-learn/tree/main/dashboard/starter-example"
Voltaでnodeとnpmのバージョンを固定する
ローカルのNode.jsはVoltaでバージョン管理をしているので、volta pinを使ってNode.jsとNpmのバージョンを固定する。
volta pin node && volta pin npm
さよならESLint、さよならPrettier、こんにちはBiome
最近ESLintとPrettierを卒業してBiomeの傘下に下ったので、
- ESLintとPrettierをアンインストール
- 代わりにBiomeをインストール
npm uninstall eslint eslint-config-next eslint-config-prettier prettier prettier-plugin-tailwindcss
npm install -D @biomejs/biome
そしてbiome.jsonを作る
npx biome init
具体的なbiome.jsonの設定はこれを使わせてもらう。
初期化後のディレクトリ構造を読む。
- とりあえず、ビジネスロジックやらUIやら、アプリケーションに含まれるものは
/appに入れればいいみたい。 - 画像とかの静的アセットは
/publicに入れるらしい。 - DBのシードとかは
/scriptsに入れてる(これはこのプロジェクト限定かな?)
Placeholder data
DBのデータがまだ用意できてない時に、固定データを用意する話。
mockAPIというサービスが紹介されているが、他にはどんな手段あるんだろう?
TypeScript
まぁ...勉強する...
Running the development server
こういうのはプロジェクト初期化後に一度チェックしておかないと、ローカル環境がイカれてるのか自分の独自設定がイカれてるのかわからなくなるよね。
[Rust] Arc
勉強した内容
Arc
- スレッドセーフに使えるリファレンスカウンタ。
- ヒープに確保したデータを、スレッド間で共有できる様になる。
std::sync::Arc::clone()でArcのインスタンスを作ると、カウントが1増える。- カウントがゼロになると、ヒープに格納したデータを破棄してメモリを解放する。
Arcを単独で使って共有できるのはあくまで不変参照なので、可変参照が必要ならMutexやRwLockやAtomicを使う。Rcよりもメモリアクセスのコストがデカいので、あえてArcを使いたい意図がない場合はRcを使ったほうがいいらしい。
[新人研修系]後で読みたい記事まとめ(随時更新)
これ何
Twitterやブラウザで自分がブックマークした記事のまとめ
企業が公開している新人研修系の記事が中心
記事貼ってく
[フロントエンド全般]後で読みたい記事まとめ(随時更新)
これ何
Twitterやブラウザで自分がブックマークした記事のまとめ
フロントエンド全般が中心
記事を貼っていく
General
React
useEffectの良さが分からない人はこれを10回ぐらい読むといいよ pic.twitter.com/m0V4stJ6dr
— 'use react'; (@yuta0801_) September 30, 2022
⚛️ React Hooks Master Cheatsheet ↓ pic.twitter.com/GSr2VlFiOy
— George Moller (@_georgemoller) December 28, 2022
How to pass data from the child component to its parent in React?
— Alex Sidorenko (@asidorenko_) March 17, 2023
Lift the state up. Pass the updater function down. pic.twitter.com/p3jTEOyy24
Next.js
How I use Tailwind in Next.js 👇 pic.twitter.com/VPgl4wbHxm
— shadcn (@shadcn) January 15, 2023
Vue.js
Bundler
Testing
Figma
Security
UI/UX
💅 5 Form design best practices that will help you build better forms pic.twitter.com/UGTtSHLchA
— George Moller (@_georgemoller) February 24, 2023
Practical tips to design clean UI ⚡️💡 pic.twitter.com/PpiRGTroEd
— Jan Mraz (@janm_uiux) August 6, 2023
Caching
Performance
Accessibility
Design System
[Rust]後で読みたい記事まとめ(随時更新)
これ何
Twitterやブラウザで自分がブックマークした記事のまとめ
Rust周りが中心
記事貼ってく
[アルゴリズム系] 後で読みたい記事まとめ(随時更新)
これ何
Twitterやブラウザで自分がブックマークした記事のまとめ
アルゴリズム周りが中心
記事貼ってく
[HTML/CSS]後で読みたい記事まとめ(随時更新)
これ何
Twitterやブラウザで自分がブックマークした記事のまとめ
HTMLやCSSなどが中心
記事を貼っていく
影を主張するのではなく要素を際立たせるのが大切 pic.twitter.com/574Iewe0yG
— 小林 I Webデザイナー (@pulpxstyle) September 14, 2022
CSS: nth-child Selector Cheatsheet⚡⚡ pic.twitter.com/LzNsBcayMv
— Pradeep Pandey (@Div_pradeep) August 13, 2023
✨CSS infographics and Cheatsheets ✨
— Adarsh Gupta⚡ (@Adarsh____gupta) August 10, 2023
[ Bookmark it now ]
1. CSS CheatSheet pic.twitter.com/ZMdCPQdAgh
予期せぬ余白や横スクロールが生じた際に全称セレクタ+outline指定で確認している人が多いけど、デベロッパーツールのConsoleに以下のスクリプトをコピペしたほうが速いと思ってます
— TAK (@tak_dcxi) October 29, 2021
枠線の表示だけでなく、実際に横スクロールを起こしている要素も出力可能です
サンプル: https://t.co/gkFmFg6ZCk pic.twitter.com/tsRwkQqZ7h
💅 5 Form design best practices that will help you build better forms pic.twitter.com/UGTtSHLchA
— George Moller (@_georgemoller) February 24, 2023
【CSSのtransformを用い、画像のぼやけ・ちらつきが発生した際の対処法】
— STUDIO DETAILS "4989" (@details_4989) November 25, 2022
CSSのtransformを用いたことで、画像がぼやけたり、ちらついたりした際は以下のコードのどちらかを足すことで解決します。
by 多田 pic.twitter.com/wwesEg5c4n
[DB/SQL]後で読みたい記事まとめ(随時更新)
これ何
Twitterやブラウザで自分がブックマークした記事のまとめ
RDBMSやNoSQL、SQLなどが中心
記事貼ってく
General
PostgreSQL
PostgreSQLの凄さはこのスライド1枚に表れてると思う。これだけ継続的に改善を続けていることは本当に素晴らしい。#pgconfjp pic.twitter.com/kAVuaUu7S5
— こば @再出発のDBエンジニア (@tzkb) November 7, 2022