だぐざの大釜

データサイエンス他いろいろ学んだ備忘録

よく使うGoogle Chromeのショートカット

インターネットブラウジングをできるだけキーボードだけでできるようにショートカットをまとめてました。

Macにおけるgoogle chromeのショートカット一覧です。

基本操作

操作 キーボードショートカット
ブラウザを更新する Command + R または F5
履歴を戻る Command + [
履歴を進む Command + ]
アドレスバーに移動する Command + L
ページを上にスクロールする Space バーまたは Option + ↑
ページを下にスクロールする Shift + Space バーまたは Option + ↓
ホームページに移動する Command + Shift + H
検索バーに移動する Command + Option + F
開発者ツールを表示する Command + Option + I

タブの操作

操作 キーボードショートカット
新しいタブを開く Command + T
タブを閉じる Command + W
タブを切り替える Control + Tab
左のタブに切り替える Control + Shift + Tab
特定の番号のタブに切り替える Command + [番号]
最後のタブに切り替える Command + 9
最後に閉じたタブを再度開く Command + Shift + T

Gitの初期設定

新しいPCで設定をやり直したら、詰まったので備忘録に残します。

名前とメールアドレスを設定する

$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@example.com"

$ git config -lで設定ファイルを確認します。

[user]
 name = Firstname Lastname
 email = your_email@example.com

SSH keyの設定

SSH keyを作成します。

ssh-keygen -t rsa -C "your_email@example.com"

パスフレーズの入力を求められたりしますが、エンターをおしていけばよいです。

Githubに公開鍵を登録

id_rsa.pubの内容をでコピーして githubのSettings>SSH and GPG keys> New SSH key のkeyに貼り付けます。

コマンドでコピーすると便利です。

$ pbcopy < ~/.ssh/id_rsa.pub

接続の確認

$ ssh -T git@github.com

と入力して、 Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access. とかえってきたら成功です。

参考) https://qiita.com/shizuma/items/2b2f873a0034839e47ce

私が考えた最強のシェルスクリプト設定(zshの設定)

目的

コマンド入力をマウスを使用せずキーボードだけでできるように、シェルスクリプトの設定(主にzshの設定)をカスタマイズする

動作環境

maxOS Monterey(M1)

概要

  1. Homebrewのインストール
  2. iTerm2のインストールと設定
  3. Zshのインストール
  4. Zinitでプラグインをインストールする
  5. さらにカスタマイズする

完成した.zshrcファイル

https://github.com/togeazm/.zshrc/blob/main/.zshrc

手順

1. Homebrewのインストール

詳しくは公式ホームページを参照してください。

既にインストール済みの場合はアップデートをしましょう。

$ brew upgrade

2. iTerm2のインストールと設定

HomebrewからiTerm2をインストールします。

$ brew install --cask iterm2

参考) iTerm2のおすすめ設定〜ターミナル作業を効率化する〜

3. Zshのインストール

※) M1 Macはデフォルトでzshになっているので不要かも

HomebrewからZshをインストールします。

$ brew install zsh

デフォルトのシェルをzshに変更します。

$ chsh -s /bin/zsh

変更を反映させるために、ターミナルを再起動して、再度ログインシェルを確認します。

4. Zinitのインストール

ここからが本題。便利なプラグインをインストールしてコマンド入力を快適するために、Zinitを使用します。次のコマンドを実行してインストールします。

$ sh -c "$(curl -fsSL https://git.io/zinit-install)"
$ source ~/.zshrc
$ zinit self-update

参考) Zinitでターミナルをカスタマイズする

プラグインをインストールする

次のプラグインを使用します。

プラグイン 概要 参考記事
zsh-users/zsh-syntax-highlighting シンタックスハイライト
zsh-users/zsh-autosuggestions 入力補完
zsh-users/zsh-completions Tabキーで入力補完
chrissicool/zsh-256color 入力補完の色を薄くする
romkatv/powerlevel10k Powerlevel10で見た目を変更する

プラグインを読み込むために、.zshrcに書き込んでいきます。

zinit light chrissicool/zsh-256color
zinit light romkatv/powerlevel10k
zinit light zsh-users/zsh-syntax-highlighting
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-completions

# Powerlevel10kの設定ファイルがない場合にのみ読み込む
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

見た目を変更する

先ほど登場したPowerlevel10kですが、使いこなすためには「Meslo Nerd Font」フォントをインストールが推奨されています。こちらからダウンロードします。

iTerms2を再起動すると、Powerlevel10kの設定が始まります。好きな見た目に変更してください。やり直したい場合は、p10k configureでもう一度始めから設定できます。

参考) 【初心者向け】powerlevel10kでMacのターミナルをかっこ良く使いやすくする設定(powerlevel10K編)

5. さらにカスタマイズする

コマンド入力の補完

コマンド入力の補完機能をさらに便利にするために、次の設定を.zshrcに書き込みます。

# 入力補完機能の初期化
autoload -Uz compinit && compinit

# 小文字でも大文字にマッチ
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

# 補完候補をTabや矢印で選択可能
zstyle ':completion:*:default' menu select=1

# cdと同時にlsも行う
function cd () {
    builtin cd "$@" && ls
}

コマンド履歴検索(ctrl + r)

コマンド履歴を検索できるようにpecoをインストールします。

$ brew install peco

もし、tacコマンドとawkコマンドがインストールされていない場合は、次のコマンドでインストールします。

$ brew install coreutils
$ brew install gawk

次にctrl + r でコマンド履歴検索できるように、次の設定を.zshrcに書き込みます。

HISTFILE=$HOME/.zsh-history
HISTSIZE=100000
SAVEHIST=1000000

function peco-history-selection() {
  BUFFER=`history -n 1 | tac  | awk '!a[$0]++' | peco`
  CURSOR=$#BUFFER
  zle reset-prompt
}
zle -N peco-history-selection
bindkey '^R' peco-history-selection

ディレクトリ移動履歴検索(ctrl + f)

ctrl + f で過去に移動したことのあるディレクトリを選択できるように、次の設定を.zshrcに書き込みます。

if [[ -n $(echo ${^fpath}/chpwd_recent_dirs(N)) && -n $(echo ${^fpath}/cdr(N)) ]]; then
    autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
    add-zsh-hook chpwd chpwd_recent_dirs
    zstyle ':completion:*' recent-dirs-insert both
    zstyle ':chpwd:*' recent-dirs-default true
    zstyle ':chpwd:*' recent-dirs-max 1000
fi

function peco-cdr () {
    local selected_dir="$(cdr -l | sed -E 's/^ *[0-9]+ +//' | peco --prompt="cdr >" --query "$LBUFFER")"
    if [ -n "$selected_dir" ]; then
        BUFFER="cd ${selected_dir}"
        zle accept-line
    fi
}
zle -N peco-cdr
bindkey '^f' peco-cdr

参考) zshとpecoでコマンド入力作業を快適に peco_cdr関数のlocal selected_dir変数内をカスタマイズしています。

gitリポジトリ検索・移動(ctrl + g)

リポジトリを管理するライブラリghqをインストールします。

brew install ghq

詳しい設定は こちらを参照してください。

ctrl + g でgitリポジトリ検索・移動できるように、次の設定を.zshrcに書き込みます。

function peco-src () {
  local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
  if [ -n "$selected_dir" ]; then
    BUFFER="cd ${selected_dir}"
    zle accept-line
  fi
  zle clear-screen
}
zle -N peco-src
bindkey '^g' peco-src

lsコマンドの出力

lsコマンドの出力をディレクトリやファイルの種類や権限に応じて色をつけるために、次の設定を.zshrcに書き込みます。

export LSCOLORS=gxfxcxdxbxegedabagacad
alias ll='ls -lGF'
alias la='ls -aGF'
alias ls='ls -GF'

コメント

職場の人に色々と教えてもらいました。ありがとうございます!みなさん一押しの便利設定を教えてください!

『UNIXという考え方』はプログラミングのバイブルである

www.ohmsha.co.jp

UNIX的なものの考え方とは何か? OSの背後にある哲学を、9つの定理と平易な言葉で説く OSを使いこなすためには、その背後にある「哲学」を理解することが必要です。本書では技術的詳細には立ち入らず、その代わりに、今まで文章で表されることが少なかったUNIXの考え方を、9つの「定理」にまとめて平易な言葉で明らかにしています。

150ページほどの薄い本ではあるが、システムのあるべき姿や開発のテクニックが詰まっていた。

Unixというコンピューティングシステムの設計思想や哲学をまとめた本ではあるが、他の分野にも応用できる考え方が多く、それほどプログラムやシェルスクリプトに詳しくなくても読み進めることができた。

定理1:スモール・イズ・ビューティフル

小さなもの同士なら組み合わせが簡単!

定理2:一つのプログラムには一つのことをうまくやらせる

不要な部分を減らせる。実行速度が速く、シンプルで柔軟である。

定理3:できるだけ早く試作を作成する

効率的な設計には欠かせない。良いものを作るには試行錯誤あるのみ

定理4:効率より移植性

効率の良いプラグラムはすばらしい!だが、技術の進化とともに新しいプログラムが出現する。

移植の簡単なプログラムこそ長く使われる。

定理5:数値データはASCIIフラットファイルに保存する

前定理より移植性のあるプログラムは重要であるが、それ以上に移植性のあるデータも重要である。

定理6:ソフトウェアの挺子を有効に活用する

プログラムを再利用することで、比較的短時間に開発することが可能になる

定理7:シェルスクリプトを使うことで挺子の効果と移植性を高める

シェルスクリプト1行でソースコード9353行分が実行できる、つまり、1行で9353倍のパワーを発揮する!!

シェルワンライナー160本ノックという本もあって面白い。 www.amazon.co.jp

定理8:過度の対話的インタフェースを避ける

使いやすいかもしれないが、ユーザーを拘束することになる。移植性が損なわれる。

定理9:すべてのプログラムをフィルタにする

ソフトウェアの本質はデータを処理することである。

いろいろなことを修正するgitコマンド

歴史を戻る

  • 変更前に戻るときに使う。コミットハッシュ値を指定する。
git reset --hard <コミットハッシュ値>

コンフリクトを解消する

  • mergeする際に、別のブランチがmergeした変更部分が同じときにコンフリクトが起こり、以下のように表示される
<<<< HEAD
  - 別のブランチでmergeされた変更
======
  - 今回mergeしようとしている変更
>>>>fix
  • 内容を吟味して変更する

コミットメッセージを修正する

  • 直前のコミットメッセージを修正できる
git commit --amend

commitをまとめる

  • commitしたあとでtypoなどに気づいて修正したときに、typo修正のコミットをまとめてしまうときなどに使える
  • commitをまとめて確認しやすくできる

例) ReadMe.mdファイルにfaeture-2を加えました。faetureのタイポを修正します。

# タイポしています
$ cat ReadMe.md
  - feature-1
  - faeture-2

# タイポを修正します。-amでaddとcommitをまとめてできます
$ git commit -am "Fix typo"

# faeture-2の追加とfeature-2への変更commitをまとめる
$ git rebase -i HEAD~2
  • vimエディタが立ち上がる
pick 7a11111 Add feature-2
pick 7a2222 Fix typo

# Rebase ~~ 以下略
  • 「Fix typo」のcommitを「Add feature-2」にまとめるには、7a2222の左隣のpickを削除し、fixupと書き換える
pick 7a11111 Add feature-2
fixup 7a2222 Fix typo

# Rebase ~~ 以下略

いろいろなことを確認するgit コマンド

リポジトリの状態を確認する

  • 現在のブランチ、変更が進んでいるかを確認できる
git status

コミットログを確認する

  • 誰がいつcommitやmergeをして、どのような差分が発生したかを確認できる
git log

コミットメッセージを1行のみ表示する

  • 複数のcommitを確認するときに便利
git log --pretty=short

指定したディレクトリ、ファイルのみのログを表示する

  • ReadMe.mdファイルのルグを確認するには以下の通り。
git log ReadMe.md
  • ファイルの差分を表示する場合は、-pをつける
git log -p ReadMe.md

ステージ領域との差分を確認する

  • ステージ領域、つまりgit addした変更分が確認できる
git diff

最新コミットとの差分を確認する

  • HEADとは作業しているbranchの最新のコミットを参照するポインタ
git diff HEAD

ブランチを視覚的に確認する

  • グラフでわかりやすく表示される。視覚的に確認できる。
git log --graph

会社選びの7つのポイント

科学的な適職を読んでみて、適職選びの7つの項目が 自分の会社選びの判断軸とよく似ていたのでまとめます

1, 裁量権はあるか(自由)

  • どれくらい自分の判断で仕事が進められるか
  • フレックス制度やリモートワークは可能か

調子の悪い時は早く切り上げ、調子のいい時はちょっと長めに、集中したい時は自宅で、状況に合わせて仕事ができる今の職場は控えめに言って最高です。

2, 進歩している感覚はあるか(達成)

  • 適切なフィードバックはもらえるか
  • 1on1など上司との面談の頻度はどのくらいか

フィードバックは自分の仕事に自信を与えてくれる。

3, 自分のモチベーションタイプに合っているか(焦点)

  • どのような役割や仕事が期待され、それが自分に適しているか

適職を探すのに役立つ唯一の性格テストとして、「制御焦点」が紹介されていた。

自分は防御型だった。

  • ゆっくりと着実に物事を進めていく
  • 最悪の事態を想定して動く
  • 時間の余裕がない状況ではストレスが激増する
  • 分析や問題解決力が高い

4, 会社として目指すところや評価軸ははっきりしているか(明確)

  • 会社のビジョンは明確か
  • どのようなことを目指し、そのために今なにをしているのか
  • 人事評価制度は整備されているか

MVPに選ばれて、ボーナス査定が下がっていたら納得できないだろう?

5, 業務内容はバラエティに富んでいるか(変化)

  • プロジェクトのはじめからおわりまでどのくらい関われるのか
  • 自分のスキルを活かして様々なチャレンジができるか

ずっと同じことをしているのは退屈である。ある程度の変化がほしい。

6, 自分と似た人が多いか(仲間)

  • 一緒に働く人たちはどのような人たちか(年齢層、バックグラウンド、雰囲気)

退職理由のほとんどは人間関係。協力的に仕事ができるって素晴らしい。

7, どれだけ世の中の役に立つのか(貢献)

  • どのようなことで貢献できそうか

いわゆる達成感、仕事の意味などを見出せる。 キレイ事のようだが、役に立っていることが実感できると仕事に対するモチベーションは上がる

読んだ本

www.amazon.co.jp