Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発環境&shell芸晒す会 / kzrb_meetup#107
Search
muryoimpl
July 17, 2021
Programming
0
2.3k
開発環境&shell芸晒す会 / kzrb_meetup#107
Kanazawa.rb meetup#107 の 開発環境&shell芸晒す会 での LT です。
https://meetup.kzrb.org/107/
muryoimpl
July 17, 2021
Tweet
Share
More Decks by muryoimpl
See All by muryoimpl
Kanzawa.rbのLT大会を支える技術の裏側を変更する Ruby on Rails + Litestream 編
muryoimpl
0
440
Kanazawa.rb LT大会用/kzlt コマンドの説明 2024/01版
muryoimpl
0
2.6k
kzltコマンドの新たなソリューションについて
muryoimpl
0
2.5k
俺とTODOアプリ~Linearの変~
muryoimpl
0
2.1k
POSIX文字クラスでの躓き
muryoimpl
0
2.1k
/kzlt コマンドとは
muryoimpl
0
880
meetup.kzrb.org の更新を考える 事前激闘編
muryoimpl
0
1.5k
meetup.kzrb.org の更新を 考える ゆるふわ編
muryoimpl
0
1.5k
最近のデスク周りの diff / kzrb meetup#108-2
muryoimpl
0
24
Other Decks in Programming
See All in Programming
家族・子育て重視/沖縄在住を維持しながらエンジニアとしてのキャリアをどのように育てていくか?
ug
0
180
PHPでお金を扱う時、終わりのない 謎の1円調査の旅にでなくて済む方法
nakka
1
700
CSC486 Lecture 14
javiergs
PRO
0
140
令和トラベルにおけるコンテンツ生成AIアプリケーション開発の実践
ippo012
1
230
オレを救った Cline を紹介する
codehex
16
16k
体得しよう!RSA暗号の原理と解読
laysakura
3
460
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
670
Identifying and Analyzing Fake OSS with Malware - fukuoka.go#21
rhykw
0
420
爆速スッキリ! Rspack 移行の成果と道のり - Muddy Web #11
dora1998
0
120
OpenTelemetryを活用したObservability入門 / Introduction to Observability with OpenTelemetry
seike460
PRO
0
140
高セキュリティ・高耐障害性・サブシステム化。そして2億円
tasukulab280
2
540
研究開発と実装OSSと プロダクトの好循環 / A virtuous cycle of research and development implementation OSS and products
linyows
1
170
Featured
See All Featured
Designing Experiences People Love
moore
140
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
The Invisible Side of Design
smashingmag
299
50k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Thoughts on Productivity
jonyablonski
69
4.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
2k
Building Your Own Lightsaber
phodgson
104
6.3k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Become a Pro
speakerdeck
PRO
26
5.2k
Transcript
開発環境&shell芸晒す会 ~ muryoimpl software編 ~ 2021-07-17(Sat) Kanazawa.rb meetup#107 #kzrb muryoimpl
おしながき • 自己紹介 & 環境の概要 • アプリ、ターミナル周りの設定管理 • よく使っている自作 shell
script • さいごに
自己紹介 & 環境の概要 • 石川県金沢市在住のフルリモートワーカー • 普段は、Desktop Linux (Arch Linux)
を使って作業をしています。 • デスクトップは、i3wm (Tiling window manager) + Polybar (ツールバー) を使って います。 ◦ Tiling window manager であること、マルチディスプレイに強い 、ディスプレイ毎に表示の出し分け が簡単なところが気に入って使っています ↑縦に配置しているモニタには、ツールバーの要素全部を表示できないため • キーマップはキーボードのファームウェア側(QMK Firmware)で制御しているため、 それ用のユーティリティは使っていません。
アプリ、ターミナル周りの設定管理 • アプリの設定は https//github.com/muryoimpl/dotconfig に、 dotfiles は https://github.com/muryoimpl/dotfiles に保存して、ホームディレクト リにシンボリックリンクを作成して利用しています。
• dotconfig には、グローバルな gitignore である git/ignore や、i3wm、 Polybar、 peco、tig、starship 等の設定ファイルがあります。 • dotfiles には、zsh、tmux、gitconfig、vim 等の主にターミナルで使うものの設定 ファイルがあります。 • 設定ファイルの配置は、次のRuby 製のスクリプトを実行してシンボリックリンクを目 的の場所に作成しています。
シンボリックリンク作成スクリプト require 'fileutils' IGNORE_FILES = %w(. .. .DS_Store .git .config
install.d) current_dir = Dir.pwd dotfiles = Dir.glob('.*').reject {|f| IGNORE_FILES.include?(f) } dotfiles.each do |dotfile| # 毎回強制上書きする。src/dest の変数に入れればよかったな FileUtils.ln_s("#{current_dir}/#{dotfile}", "#{ENV['HOME']}/#{dotfile}", force: true) puts "#{current_dir}/#{dotfile} -> #{ENV['HOME']}/#{dotfile}" end
実行結果 dotconfig もだいたい同じような symlink.rb が用意されています。 FileUtils.ln_s に force: true が設定されているので、毎回強制上書きされます。
dotfiles の管理について 私はオールドタイプな感じで自力で管理していますが、 https://wiki.archlinux.org/title/Dotfiles を見るといろいろと管理ツールがあるみたいな ので、そちらを使うのが実はビッグウェーブなのかもしれませんね。 今のところ、複雑なものを持ち込む気力がないので永遠のTBDになってます
よく使っている自作 shell script $HOME/local/bin に PATH を通して、そこに自作 shell script を配置して利用すること
が多いです。 日々のメモ作成スクリプトとして、daily-memo.sh を使っています。仕様的には以下のよ うなものです。 • 年ごとにディレクトリを分ける • ファイルがなければ、%Y/%Y%m%d.md 形式でファイルを作成する 例) 実行日が 2021年7月17日 ならば、 2021/20210717.md を作成する • ファイルがあれば、そのファイルを vim で開く • ファイルは クラウドストレージアプリで監視し、変更検知でクラウドストレージに保存 されるようにしている(MEGA https//mega.io を使用)
daily-memo.sh の中身 #!/bin/bash today=$(date "+%Y%m%d") year=$(date "+%Y") basedir=~/local/MEGAsync/memo # MEGA(
Cloud Storage app) の監視下に保存先を設定する mkdir -p $basedir/$year if [[ ! -e $basedir/$year/$today.md ]]; then cat - << EOS > "$basedir/$year/$today.md" # $today EOS fi vim $basedir/$year/$today.md # vim は $EDITOR がいいかも
daily-memo.sh のいい点 • 重複したファイルが作成されない、ファイル名考えなくてよい ◦ 引数不要にしているので、思考停止で実行できるのがよい • 複数台マシンでメモを共有できる、クラウドで共有しないも選択可能 ◦ 業務的な内容のメモはクラウドで共有しないほうがいいよ
• 手に馴染んだエディタでメモを書ける ◦ エディタによっては、途中で落ちてもエディタの機能でバックアップが取得される • 好みの検索コマンド(grep, ag, pt, rg 等) で高速に検索できる • 日付がファイル名に入っているので、検索時にいつ書いたものかがわかる
daily-memo.sh のよくない点 • 自分で環境をわざわざ設定しなければならない ◦ (不満がなければ)チャットの分報、Obsidian 等のほうが手軽ですね • 専用アプリではないので、開いているエディタが他のバッファに埋もれがち •
検索時は、ディレクトリ移動もしくは指定が必要である ◦ 検索用の実行ファイル作れば解決しますけどね … • クラウド共有する/しないをディレクトリで判断しているので、共有する/しないメモを 混在させる場合は、実行するshell自体を分ける必要がある ◦ スクリプトに判定入れて、 alias で引数渡すって手もアリ
さいごに • 私は環境構築は面倒だけど、仕組みが単純であることに振った管理の仕方をして います。 • Tiling window manager いいよ!私は好きよ! •
各種設定は GitHub で管理し、公開しているので何使ってる?どんな設定してる? はそちらを見て! • daily-memo.sh 気に入って使ってます。カジュアルなものは分報、がっつり調べた り考えたりするときはdaily-memo.sh を使っています。 更にまとめて残しておきたい/共有したいときは、esa.io のページにまとめていま す。