20191211のMacに関する記事は9件です。

dotfilesの育て方

dotfilesを育てよう!

dotfilesはエンジニア人生と切っても切れない関係です。
そんなdotfilesを理想の形に育てていく方法について紹介したいと思います。


dotfilesとは
.(ドット)から始まるファイルの総称です。
Unix系OSでは.から始まるファイルは隠しファイルとして扱われ、lsコマンド等にはオプションを指定しないと表示されない仕組みになっています1
古来より、この特徴を利用して、ホームディレクトリ直下に.から始まる設定ファイルを配置するという文化があります。
例えば、筆者のホームディレクトリでlsを実行した場合、下記のような出力となります。dotfiles01.png
隠しファイルも表示する-aオプションを加えて実行した結果は下記のようになります。
dotfiles02.png
.で始まるファイルが大量に表示されています。
要はこれらがdotfilesです。

Lv.1 Gitで管理しよう

まずは最初の一歩として、dotfilesをGit管理するところから始めましょう。
履歴管理やポータビリティの向上等様々な恩恵があります。(草を生やせたりも)

dotfilesというリポジトリを作成し、.bashrc等の各種dotfilesをリポジトリ配下にコミットします。
ホームディレクトリにはlnコマンドを用いてシンボリックリンクで配置します。
シンボリックリンクを作成することで、リポジトリ内のファイルで一元管理できるため、更新や最新化が簡単にできるようになります。

.bashrcのシンボリックリンク作成の例
# リンクの作成
$ cd path/to/dotfiles
$ ln -s .bashrc ~/.bashrc

# リンクを確認
$ ls -l ~/.bashrc
lrwxrwxrwx 1 reireias reireias 59  6月  8 22:30 /home/reireias/.bashrc -> /home/reireias/dev/src/github.com/reireias/dotfiles/.bashrc

なお、GitHubでは実に多くのdotfilesリポジトリが公開されています。
https://github.com/topics/dotfiles

ちなみに、AWS_ACCESS_KEY_ID等の認証情報が公開されてしまわないように注意しましょう

Lv.2 deployを簡単にしよう

シンボリックリンクの作成は、その環境に対して1度しか実施しませんが、対象となるdotfileが増えれば、その作業も効率化したくなるのがエンジニアの性というものです。

簡単なshell scriptで実装することができます。
shell script以外で実装してもよいのですが、クリーンな環境にインストールする際に依存するパッケージが少ないほど楽なので、大抵の環境で利用できるshell scriptがよく採用されています。

以下のスクリプトでは、dotfilesリポジトリ直下の.ではじまるファイル全てのシンボリックリンクをホームディレクトリに作成します。

install.sh
#!/bin/bash -e

IGNORE_PATTERN="^\.(git|travis)"

echo "Create dotfile links."
for dotfile in .??*; do
    [[ $dotfile =~ $IGNORE_PATTERN ]] && continue
    ln -snfv "$(pwd)/$dotfile" "$HOME/$dotfile"
done
echo "Success"

Lv.3 インストールスクリプトを書こう

dotfileによっては、パッケージやライブラリのインストールが必要となるものもあるでしょう。

例えば、

  • .tmux.confがあるので、tmuxをインストールしたい
  • pecoコマンドを利用する自作関数が.bashrcに定義してある
  • vimの特定のプラグインがpythonのライブラリに依存している

等があげられます。

はじめのうちはREADMEに依存パッケージの一覧を記載したりしているでしょう。
やっぱり自動化するのがエンジニアですね。

例えばshell scriptであれば下記のようにシンプルにコマンドを列挙していくだけでも、立派なインストールスクリプトになります。

インストールスクリプトの一例
#!/bin/bash

brew install tmux peco neovim
pip install neovim

Lv.4 インストールスクリプトの冪等性を意識しよう

冪等性を意識したインストールスクリプトにしてみましょう。
何度実行しても同じ結果になるようにすることで、新たにインストールスクリプトで行う処理を追加した場合でも既存の環境に対してインストールスクリプトを実行することが可能です。

簡単な例を下記に示します。

# 冪等性なし
mv config /etc/hoge/config
echo "some setting" >> ~/.hogerc

# 冪等性あり
cp config /etc/hoge/config
if ! grep -q "^some setting$" ~/.hogerc; then
  echo "some setting" >> ~/.hogerc
fi

インストールスクリプトが大きくなるほど、冪等性をshell scriptで担保するのは難しくなってくるので、AnsibleChef等の構成管理ツールを使ってインストールスクリプトを記述するのも良い選択と言えるでしょう。

ただ、shell script以外のツールを利用し始めると、まっさらな環境にインストールする際の手順が多少増えてしまうので、注意が必要です。

Lv.5 CIをまわそう

猫も杓子もCIな世の中です。
dotfilesにおいてもCIを回しましょう。

インストールするパッケージやライブラリのバージョンを指定せず、最新版をインストールするようなスクリプトの場合、非互換な更新によりインストールスクリプトが失敗するようになることもあるでしょう。
インストールスクリプトの実行や適切にファイルが配置されたか等を確認するのがよいでしょう。

GitHub Actionsでのごくごくシンプルなサンプルコードを記載しておきます。

.github/workflows/main.yml
---
name: main

on: [push]

jobs:
  main:
    runs-on: ubuntu-latest # or macOS-latest
    steps:
      - uses: actions/checkout@v1
      - name: install dotfiles
        run: bash install.sh
      - name: test
        run: # some tests

Lv.6 ファイルを分割しよう

dotfilesが順調に成長していくと、.bashrc(.zshrc)や.vimrcなんかはかなり巨大になっていきます。
巨大な1ファイルは条件反射で悪とみなすのがエンジニアの常なので、なんとか分割したいものです。

幸い、.bashrc.vimrc等は別ファイルを読み込む機能を搭載しているので、分割が容易です。

例えば以下のように.bashrcから別ファイルを読み込むことができます。

.bashrc
source ${HOME}/.bash/keybind.sh
source ${HOME}/.bash/alias.sh

Lv.7 READMEを整備しよう

dotfilesは人に見られることでも成長します(?)
READMEを整備し、イケてるdotfilesリポジトリに仕立てましょう。

個人的には以下が記載されていると、パクリたく参考にしたくなります。

  • 対象のエディタ、shell、ツール
  • ターミナルのスクリーンショット
  • コンセプト
  • 依存するパッケージやライブラリ

番外編 様々な環境に対応しよう

LinuxとMac OSの両方を利用することのある変態珍しい人は、両方の環境に対応した設定やインストールスクリプトを用意すると幸せになれるのではないでしょうか?
CIもマトリックスビルド等を活用し、LinuxとMac OSの両方の環境で実行するとよいでしょう。

ちなみに、筆者は最近、AnsibleでLinuxのaptとMac OSのbrewをwhenによる分岐を利用せずに書く方法がなくて困っています。

さいごに

じゃあ、お前のdotfilesはどうなんだよ?と言われそうなので、いちおう掲載しておきます。
そんなに期待しないでくださいね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

マルチOS対応Docker開発環境の作り方【Mac対応編】

この投稿は Magento Advent Calendar 2019 の11日目です。

皆さんDocker使ってますか?

以前はVirtualbox+Vagrantを使って開発環境を整えていたのですが、動きが遅い重い!
当時個人的に気になっていたDockerに(趣味半分で)乗り換えてみたところ、早い軽いで素晴らしいものでした。

私はもっぱらLinux(Ubuntu)をメインで使っているのですが、社内にはMacやWindowsを使っている開発者もいます。

せっかく作ったし他のOSでも使えるようにしよう、まずはMacで試してみよう!と思っていたところ、ある問題に阻まれてしまったのでした。

Docker for Macの欠点

Linuxで使っていたイメージや設定ファイルを移動させ、起動させるところまでは順調でした。
ですが…

明らかに動きが遅い……!!!

実はこの問題、Docker for Macでは有名で、以前私もこの問題を解決しようと悪戦苦闘していました。
Docker Meetup Kansai で発表したスライドがあるので、もし興味があればそちらもご覧ください。

Docker開発環境のMac対応に苦戦した話.jpg
Docker開発環境のMac対応に苦戦した話

このときは1/4程度しか改善されないという、早くはなったが実用的ではないという悲しい結果でした。

今回はその続きの話となります。

その後調べたところ、2つ効果があるかも知れない解決策を見つけることが出来ました。

NFS Sharing Volume

実は、dockerにはVolumeにNFSをマウントする機能があります。
ですが、Docker for Macの遅さはmacOSとLinuxコンテナのファイルシステムの違いが原因なので、NFS越しにマウントしたところで早くなるはず無いだろう…と思っていました。

ところが、

Docker for Mac でも快適な Symfony 開発環境を作りたい

こちらの記事によるとNFS Volumeを使うことでかなり改善されることが判明しました。
なぜ早くなるのかは謎ですが、効果があるかも知れないなら試すしかありません!

Macでnfsdを動かすには、/etc/nfs.conf/etc/exports を設定しておく必要があります。

/etc/nfs.conf
#
# nfs.conf: the NFS configuration file
#
nfs.server.mount.require_resv_port = 0
/etc/exports
/System/Volumes/Data/Users/{USERNAME}/{PASS_TO_PROJECTROOT} localhost -alldirs -mapall={uid}:{gid}

-mapall オプションで指定したUIDとGIDは、NFSでアクセスした際に指定したユーザーのものとして扱われます。

macOS Catalinaをお使いの方には注意点が二点あって、一つは /Users/{USERNAME} で始まるパスを指定してもエラーになってしまいます。
詳しくは以下の記事が参考になるかと思います。

macOS CatalinaからNFS exportsするには

もう一点は、DocumentsやDownloads、Desktop下を使う場合は明示的に権限を付与(?)しなくてはいけないようです。

Docker: the Problem with MacOS Catalina

以上が設定できれば sudo nfsd start で起動するとホスト側の設定は終了です。

docker-compose.ymlの方にもNFSを使う設定をします。

docker-compose.yml
version: "3"
services:
  nfs:
    image: ubuntu:18.04
    volumes:
      - src:/src:nocopy
volumes:
  src:
    driver: local
    driver_opts:
      type: nfs
      device: ":/System/Volumes/Data/Users/{USERNAME}/{PASS_TO_PROJECTROOT}"
      o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3

services下のvolumesに :nocopy を忘れず、driver_optsのdeviceにexportsで指定したパスを書くことを忘れずに!
これでNFS Volumeを使ったコンテナが起動できます✌️

欠点を挙げるとするならば、プロジェクトごとにdocker-compose.ymlにパスを書く必要があって手間という点です。
Gitで管理していたりすると、誤Pushとかがありそうで怖いですよね…。

Docker-sync

もう一つは高速にホストとコンテナ間を同期するためのツール、docker-syncです。

http://docker-sync.io/

このツールは、ホストとコンテナ間でrsyncやunisonなどを使って高速な同期を実現しているようです。
rsyncの方が高速(?)のようですが同期が双方向ではなく一方通行(ホスト→コンテナ)なのがネックなので、今回はunisonを使ってみます。

brew install unison
brew install eugenmayer/dockersync/unox
gem install docker-sync

以上のコマンドでインストールが完了します。
詳しいインストール手順は公式ドキュメントをご覧ください。

docker-syncには docker-sync.yml が必要になります。

docker-sync.yml
version: "2"
syncs:
  src:
    src: '/{PASS_TO_PROJECTROOT}'
    sync_strategy: 'unison'
    sync_userid: '{UID}'
docker-compose.yml
version: "3"
services:
  nfs:
    image: ubuntu:18.04
    volumes:
      - src:/src
volumes:
  src:
    external: true

docker-sync.ymlとdocker-compose.yml間でVolume名を統一しないと正しく起動しないので注意が必要です。
設定ファイルが準備できたら、

docker-sync start

このコマンドで起動してあげると、Volumeを作成して同期が開始されるという仕組みになっています。
Docker-syncを起動した状態でdockerコンテナにVolumeをマウントすると、ホスト-コンテナ間が同期されている状態になる、といった具合です。

Docker-syncの欠点は別途インストールが必要な点と、このコマンドを打つ手間があるところでしょうか。
起動しっぱなしでも良いのかも知れませんが、使い終わったら終わらせておきたい気もしますよね…?

測定

time dd if=/dev/zero of=/benchmark bs=1k count=100000

このコマンドで100MBのファイルを作成する時間を計測するベンチマークを取ってみました。

結果は…

  • 通常のVolumeが約25秒
  • NFS Volumeが約2.5秒
  • Docker-syncが約0.35秒

と、Docker-syncの圧倒的勝利となりました!
NFS Volumeもかなりはやいのですが、Docker-syncはほぼネイティブと変わらない速度ですね。

まとめ

いかがだったでしょうか?(殴)

NFSでもかなり早くで感動したのですが、Docker-syncはさらに早くてこんなにも違うのかと驚きました。

ここまでMagento Adventcalendarっぽく無い内容でしたが、Magento2はプロジェクトのファイル数がどうしても多くなってしまうので、読み書きのスピードはとても大事になってきます。
今回のこの結果を踏まえて次回、どうマルチOSに対応したdocker-compose.ymlを書くといいのかを書いていこうかと思います。

次 → マルチOS対応Docker開発環境の作り方【docker-compose編】

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOS CatalinaでSwiftLintが"zsh: illegal hardware instruction"というエラーで利用できない場合の対処法

macOS CatalinaでSwiftLintを利用しようとした際にエラーが出て、対処しようとしたもののエラーメッセージが分かりにくくて時間がかかってしまったので、メモしておく

環境

  • macOS 10.15.1
    • シェル: zsh (デフォルト)
  • Xcode 11.3

結論

xcode-selectでXcodeアプリに含まれるデベロッパーツールを選択していなかったことが原因であった

詳細

XcodeとSwiftLintをインストールした後でLintコマンドを実行すると、以下のようなエラーが吐かれていた

% swiftlint
Fatal error: Loading sourcekitd.framework/Versions/A/sourcekitd failed: file /private/tmp/swiftlint-20191203-72607-1br7cj0/.build/checkouts/SourceKitten/Source/SourceKittenFramework/library_wrapper.swift, line 39
zsh: illegal hardware instruction  swiftlint

xcode-selectで利用するデベロッパーツールのディレクトリを確認すると、以下のようになっていた

% xcode-select -p
/Library/Developer/CommandLineTools

上記にはSwiftの解析ツール等が含まれていないため、SwiftLintがエラーを吐いて停止していた模様
以下のようにXcode.appの中のデベロッパーツールを選択することで、SwiftLintが正常に実行されるようになった

% sudo xcode-select -s /Applications/Xcode_11.3.app/Contents/Developer

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Medisのインストール時で詰まったこと

はじめに

MacでRedisのGUIクライアントを求めていて、以下の記事の通り対応してみました。
https://qiita.com/rsuzuki/items/ff0891e4ae7e44ab7946

PC情報

・ MacBook Pro macOS Mojave バージョン 10.14.6
・ npm バージョン 6.13.1
・ node.js バージョン 13.2.0

実行してみて起きたエラー

・ npm startを実行して起きたエラー

> medis@1.0.3 start /Applications/medis
> electron .

/Applications/medis/node_modules/electron/index.js:14
    throw new Error('Electron failed to install correctly, please delete node_modules/electron and try installing again')
    ^

Error: Electron failed to install correctly, please delete node_modules/electron and try installing again
    at getElectronPath (/Applications/medis/node_modules/electron/index.js:14:11)
    at Object.<anonymous> (/Applications/medis/node_modules/electron/index.js:18:18)
    at Module._compile (internal/modules/cjs/loader.js:1121:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1160:10)
    at Module.load (internal/modules/cjs/loader.js:976:32)
    at Function.Module._load (internal/modules/cjs/loader.js:884:14)
    at Module.require (internal/modules/cjs/loader.js:1016:19)
    at require (internal/modules/cjs/helpers.js:69:18)
    at Object.<anonymous> (/Applications/medis/node_modules/electron/cli.js:3:16)
    at Module._compile (internal/modules/cjs/loader.js:1121:30)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! medis@1.0.3 start: `electron .`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the medis@1.0.3 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/XXXXX/.npm/_logs/YYYY-MM-DDTXX_XX_XX_XXXZ-debug.log

なんかErectron正しくインストールできてへんで。
インストールし直してや。
みたいなことを言われているような。

対応したこと

$ node node_modules/electron/install.js

結果

Downloading tmp-86876-1-SHASUMS256.txt-4.2.12
[============================================>] 100.0% of 4.79 kB (4.79 kB/s)
$ npm start

> medis@1.0.3 start /Applications/medis
> electron .

うまくいったみたい
以上、現場からお伝えしました。

参考情報

https://github.com/electron/electron/issues/20731

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

dein.vim + syntastic + flake8 で vim上でpythonの文法チェックする for Mac

flake8

https://pypi.org/project/flake8/
Pythonの文法チェックツール。
以下の3つのライブラリのラッパーとなる

  • PyFlakes
  • pycodestyle
  • Ned Batchelder’s McCabe script

dein.vim

https://github.com/Shougo/dein.vim
dein.vim は vimプラグインマネージャー

syntastic

https://github.com/vim-syntastic/syntastic
vim における汎用シンタックスチェッカー

flake8のインストール

$ pip install flake8
$ flake8 --version
3.7.9 (flake8-docstrings: 1.5.0, pydocstyle: 5.0.1, mccabe: 0.6.1, pycodestyle: 2.5.0, pyflakes: 2.1.1) CPython 3.7.1 on Darwin

dein.vimとsyntasticのインストール

$ cd /tmp
$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh ~/.cache/dein
$ vim ~/.vimrc

vimのバージョンがの場合、バージョンを1.5に落とす

Note: If you use Vim 7.4, please use dein.vim ver.1.5 instead.

$ vim --version | head -n1
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jun 28 2019 13:59:14)
$ cd /.cache/dein/repos/github.com/Shougo/dein.vim
$ git checkout -b 1.5 1.5

既存の~/.vimrc 下記を追記

~/.vimrc
"----------------------------------------------------------
" Vim/Neovim plugin manager
" https://github.com/Shougo/dein.vim
"----------------------------------------------------------
"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('~/.cache/dein')
  call dein#begin('~/.cache/dein')

  " Let dein manage dein
  " Required:
  call dein#add('~/.cache/dein/repos/github.com/Shougo/dein.vim')

  " Add or remove your plugins here like this:
  "call dein#add('Shougo/neosnippet.vim')
  "call dein#add('Shougo/neosnippet-snippets')

  " syntax checking plugin
  " https://github.com/vim-syntastic/syntastic
  call dein#add('scrooloose/syntastic')

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------

"----------------------------------------------------------
" syntastic
"----------------------------------------------------------
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

"----------------------------------------------------------
" flake8
"----------------------------------------------------------
let g:syntastic_python_checkers = ["flake8"]

実際に使用してlintしてくれるか確認する。

vim /tmp/test.py
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PCの高速化と作業効率化 Tips v1.0 【 Speeding up the PC and improving work efficiency】

Google

Google Photo

  • 全ての写真や動画をPOOL(プール)する。
    • HDDに残さなくても良いもの。
    • 整理や思い出はWebで完結しよう。(現代移行)

Google Drive

  • クラウドストレージ 15GB
    • USBやDropboxの代わり。
    • 複数アカウント作成と起動

Gmail

  • 検索フィルタ
    • size: 1m サイズ1mbを超えるメール

Google Keep

  • 無制限容量のメモ。どんどんアイディアを書き込む。

Google Slide

  • スライド埋め込み,自動保存, ファイル(データ)をローカルで所有することが不要

Chromeウェブストア

拡張機能

  • uBlock Origin 広告コンテンツフィルタリング
  • SearchPreview サムネイルを表示する
  • (Full Page Screen Capture ブラウザ1ページスクリーンショットする。場合に応じてON/OFF)
  • (Perapera Chinese Popup Dictionary 中国語ピンイン表示。)

テーマ

  • 単色のテーマ 黒。たまに切り替えることで気持ちをリセット。

YouTube

  • ピクチャ・・イン・ピクチャ
    • 最前面。YouTubeの講座系の動画。疲れたらながら作業をすることもある。
    • スクリーンショット 2019-12-11 10.24.22.png

検索設定

ページあたりの表示件数 20~30(任意)

ブックマークバー

  • ブックマークバー非表示(人による)
  • 一つのフォルダにストックする(mixされる)
  • 全履歴削除
    • URL検索候補の削減

上級者

Chrome高速化 chrome://flags [1]


Desktop

  • 壁紙自動収集と切り替え(FreshBackMac or Dynamic Theme)飽き性の方向け
  • 何も置かない
  • タスクマネージャー or ターミナルでKill
  • キャッシュクリーナーを不定期で実施(CCleaner等)
  • ファイル全検索ソフトを使用する(Everything(Windows), Easyfind(Mac))
  • セキュリティソフトは不要
  • Dropbox(もしくはGoogleDrive等)はスタートアップ時に起動
    • ファイルの安全保証。後々停止しても良い。

Windows10な私

  • 初期不要アプリアンインストール
  • 常駐プロセスの停止
    • Cortana(コルタナ)停止
  • あまり使わないアプリケーションの削除

Macな私

  • ダークモード (Mojave~)
  • メモの同期がスムーズ(iPhoneとMac)
  • Dock、メニュバーを隠す(表示領域の拡大)
  • ズーム機能
  • Night Shift(ブルーライトカット)
  • 通知センターOFF
  • PCが遅いと感じたらセーフモード実行 (Shift + 起動)
  • Finderの表示結果が反映されなかったら
    • cmd killall Finder
  • あまり使わないアプリケーション(app)の削除
  • Chromeの立ち上げが遅いとき、起動が早いSafariを開く。

インターネット

  • WIFI DNS 8.8.8.8
  • 有線接続(通信距離に応じて)

アウトプット

日頃からSNS、ブログ、メモ(Webサービス)、動画等で必要な情報を公開する。

  • 日々の物事が定着する
  • アクセス解析やマーケティングを学ぶ(時代)
  • 自分を残す。

上級

  • 深層ウェブ・ダークウェブで更なる情報収集
    • ハッカー、真相、例のアレなどの裏情報(No good)。[2]
  • VPN・IP、アドレス偽造
    • 位置情報の匿名化
    • アクセス制限の回避

最後に

他にも最適な方法があったらコメント下さい。出来るだけ不要なソフトは入れずに。


【参考】

[1] 手軽なのに効果絶大『Chrome』を高速化する14の設定(flags)
[2] 【深層web】深層ウェブの歩き方、教えてやるよ【第一回

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PCの高速化と作業効率化 Tips 【 Speeding up the PC and improving work efficiency】

Google

Google Photo

  • 全ての写真や動画をPOOL(プール)する。
    • HDDに残さなくても良いもの。
    • 整理や思い出はWebで完結しよう。(現代移行)

Google Drive

  • クラウドストレージ 15GB
    • USBやDropboxの代わり。
    • 複数アカウント作成と起動
    • 画像→Google Document OCR

Gmail

  • 検索フィルタ
    • size: 1m サイズ1mbを超えるメール

Google Keep

  • 無制限容量のメモ。どんどんアイディアを書き込む。

Google Slide

  • スライド埋め込み,自動保存, ファイル(データ)をローカルで所有することが不要

Chromeウェブストア

拡張機能

  • uBlock Origin 広告コンテンツフィルタリング
  • SearchPreview サムネイルを表示する
  • (Full Page Screen Capture ブラウザ1ページスクリーンショットする。場合に応じてON/OFF)
  • (Perapera Chinese Popup Dictionary 中国語ピンイン表示。)

テーマ

  • 単色のテーマ 黒。たまに切り替えることで気持ちをリセット。

YouTube

  • ピクチャ・・イン・ピクチャ
    • 最前面。YouTubeの講座系の動画。疲れたらながら作業をすることもある。
    • スクリーンショット 2019-12-11 10.24.22.png

検索設定

ページあたりの表示件数 20~30(任意)

ブックマークバー

  • ブックマークバー非表示(人による)
  • 一つのフォルダにストックする(mixされる)
  • 全履歴削除
    • URL検索候補の削減

上級者

Chrome高速化 chrome://flags [1]


Desktop

  • 壁紙自動収集と切り替え(FreshBackMac or Dynamic Theme)飽き性の方向け
  • 何も置かない
  • タスクマネージャー or ターミナルでKill
  • キャッシュクリーナーを不定期で実施(CCleaner等)
  • ファイル全検索ソフトを使用する(Everything(Windows), Easyfind(Mac))
  • セキュリティソフトは不要
  • Dropbox(もしくはGoogleDrive等)はスタートアップ時に起動
    • ファイルの安全保証。後々停止しても良い。

Windows10な私

  • 初期不要アプリアンインストール
  • 常駐プロセスの停止
    • Cortana(コルタナ)停止
  • あまり使わないアプリケーションの削除

Macな私

  • ダークモード (Mojave~)
  • メモの同期がスムーズ(iPhoneとMac)
  • Dock、メニュバーを隠す(表示領域の拡大)
  • ズーム機能
  • Night Shift(ブルーライトカット)
  • 通知センターOFF
  • PCが遅いと感じたらセーフモード実行 (Shift + 起動)
  • Finderの表示結果が反映されなかったら
    • cmd killall Finder
  • あまり使わないアプリケーション(app)の削除
  • Chromeの立ち上げが遅いとき、起動が早いSafariを開く。

インターネット

  • WIFI DNS 8.8.8.8
  • 有線接続(通信距離に応じて)

アウトプット

日頃からSNS、ブログ、メモ(Webサービス)、動画等で必要な情報を公開する。

  • 日々の物事が定着する
  • アクセス解析やマーケティングを学ぶ(時代)
  • 自分を残す。

上級

  • 深層ウェブ・ダークウェブで更なる情報収集
    • ハッカー、真相、例のアレなどの裏情報(No good)。[2]
  • VPN・IP、アドレス偽造
    • 位置情報の匿名化
    • アクセス制限の回避

最後に

他にも最適な方法があったらコメント下さい。出来るだけ不要なソフトは入れずに。


【参考】

[1] 手軽なのに効果絶大『Chrome』を高速化する14の設定(flags)
[2] 【深層web】深層ウェブの歩き方、教えてやるよ【第一回

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Windows歴12年/Mac歴7年】が厳選する音楽(再生,ダウンロード,変換) PC版ソフト&サイト

長年PCを使ってきて音楽の編集に便利なソフト、サイトをまとめた。(メモ)
PC版

動画編はこちら↓
【Windows歴12年/Mac歴7年】が厳選する動画(再生,ダウンロード,変換) PC版ソフト&サイト

音楽

音楽再生ソフト

.flac, .m4aをはじめとする多数の音楽ファイル形式に対応
Windows → AIMP3
Mac → VOX

音楽(mp3)ダウンロードソフト

Youtube
Windows & Mac → MediaHuman YouTube To MP3 Converter
https://www.mediahuman.com/ja/

・プレイリスト丸ごとダウンロード可能、YouTube MP3ダウンローダーの中で最強
・各種設定、タグ、ビットレート、ターボ機能。
・プレイリストのURLで複数ダウンロード可能(いくらでも,1000~)
・アルバムアート取得(YouTubeの動画サムネイル)、タグ編集

稀にURL先がエラーが起こる場合は、mp3ダウンロードを利用する

音楽(mp3)ダウンロードサイト

YouTube

ClipConverter.cc: YouTube変換
https://www.clipconverter.cc/jp/
Search Keyword 「cc converter」「cc youtube」

・10時間かかる動画も変換可能
使い方に難あり
・YouTube再生中の動画は、Converterでエラーが起こることもある

昨今YouTubeからMP3へ変換&ダウンロードにおいては多くのダウンロードサイトが
新しく生まれたり、潰れたりするが、音質にこだわりがなくなった自分にとっては、
基本的にどれを使っても変換プロセスの役割を果たす。

niconico動画

offliberty
http://offliberty.io/
音質指定は出来ないが、使える。nicozonは詐欺。
スクリーンショット 2019-11-02 08.42.20.png

変換

Windows
AIMP:flac → mp3, m4a等
Xrecode: mp3(320kbps)→mp3→mp3(128kbps)

Mac
QuickTime
MP4→AAC, MP3を書き出せる

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac wifiをワンキーでON/OFFする

はじめに

記事を書くに至った経緯

  • 「wifi on/offするたびに右上にカーソル持っていく人生辛い」
  • 「Launchpadの起動とかトラックパッドでやるし、このキーでwifi切り替えられたらええな」
  • 「Automatorでwifi切り替えのショートカットつくれるじゃん!」(別記事)
  • 「でも環境設定からだとLaunchpadとかのキーが割り当てられないな。。」
  • 「Karabiner-Elements使うと、ワンキーでwifi ON/OFFできる!最高!」
  • 「てか、この方法論知れば、ワンキーで任意のスクリプトが実行できるしすごい便利じゃない?」
  • 「書かねば」

前提

  • python3.6以降
  • Karabiner-Elements

pythonはsubprocessを使うのに3.6以降が必要。バージョンが合わなければ、スクリプトを各自用意。

概要

  1. wifi on/offするコマンドを確認
  2. Automatorでアプリ化
  3. Karabiner-Elementsでショートカットを割り当て

wifi on/offするコマンドを確認

以下のコマンドで、wifiの接続状態とON/OFFができる

/usr/sbin/networksetup -getairportpower en0
/usr/sbin/networksetup -setairportpower en0 on
/usr/sbin/networksetup -setairportpower en0 off

networksetupコマンドについてはこの記事が参考になる。一次情報はman networksetup
networksetupコマンドの使い方:ヘルプのみかた

余談。このコマンドは、接続先のアクセスポイントも指定できるみたい。

/usr/sbin/networksetup -setairportnetwork en0 <ssid> [password]

(パスワード直書きするのはいいのかな?実用するなら、読み込み権限を制限したパスワードファイルを作って、それを読み込む方法がいい気がする?)

Automatorでアプリ化

この記事を参考にアプリ化。

今回はwifiのon/offを一つのキーでスイッチさせたいので、スクリプトをpythonで書いた。(shell scriptで文字列処理は苦行でした。)

手順は、

  1. Automatorを起動して、新規作成でアプリケーションを選択
  2. 左上から「シェルスクリプトを実行」というアクションを選択
  3. 以下のコマンドをコピペ
  4. 右上の実行ボタンでチェック
source="
import subprocess
cmd = '/usr/sbin/networksetup -getairportpower en0'.split(' ')
ret=subprocess.run(cmd,capture_output=True,encoding='utf-8')
en0_state=ret.stdout.splitlines()[0].split(' ')[-1]
if en0_state.startswith('On'):
    cmd = '/usr/sbin/networksetup -setairportpower en0 off'.split(' ')
    ret=subprocess.run(cmd)
else:
    cmd = '/usr/sbin/networksetup -setairportpower en0 on'.split(' ')
    ret=subprocess.run(cmd)
"
/usr/local/bin/python3 -c $source

/usr/local/bin/python3は、python3のインストール先によって適宜変更してください。pythonのバージョンが合わない方は、subprocessモジュールの使い方や、使わなくてもいい方法を調べてください。

実行ボタンで確認できたら、好きな場所に保存しましょう。自分は/Applications/SwitchWifi.appに保存。

Karabiner-Elementsでショートカットを割り当て

みんなだいすきKarabiner-Elements。キーボード沼ならぬ、キーバインド沼がここにある。

設定の仕方を確認

設定ファイルの形式について

Karabiner-Elements全体の設定は、JSONファイルで保存されており、実際のファイルは~/.config/karabiner/karabiner.jsonです。

任意のキーにコマンド実行を割り当てる

この設定を行う場合、"to"の"shell_command"に実行したいコマンド文字列を設定します

他にもいろんな機能があります。

実際の設定

135行目ぐらいを以下に編集

~/.config/karabiner/karabiner.json
                {
                    "from": {
                        "key_code": "f3"
                    },
                    "to": {
                        "shell_command": "open '/Applications/SwitchWifi.app'"
                    }
                },

これでワンキーでwifiをON/OFFできるようになりました!

さいごに

一つ注意があります。Karabiner-Elementsは任意のコマンドを実行できるので、正直アプリ化は必須ではないです。今回、自分はプログラムがアプリとして独立する方法を選びました。特に理由がなければ、この記事の方法をおすすめします。人によっては、任意の場所にスクリプトを置いて、直接それを実行するように"shell_command"を設定するかもしれません。その方が、アプリの起動を省略できているので動作は早いと思われます。(記事の方法でも十分実用的でした。)

この記事を応用すると、ワンキーで任意のアプリ・スクリプトの実行ができます。なにかいい応用を思いついたら教えてください。記事を引用してくれると嬉しいです。

参考記事

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む