Mac のファインダでカットペーストをしたい
コピーペーストはできるんだろうけど、カットペーストはちょっとコツが必要。
option + command + V:移動:クリップボードに配置したファイルを、元の場所から現在の場所に移動します。
コピーして貼り付けるときに、移動して貼り付けになる。 先にカットしないところがポイント。
コピーペーストはできるんだろうけど、カットペーストはちょっとコツが必要。
option + command + V:移動:クリップボードに配置したファイルを、元の場所から現在の場所に移動します。
コピーして貼り付けるときに、移動して貼り付けになる。 先にカットしないところがポイント。
2018 年からCertbotのワイルドカード発行が可能になっている。
ワイルドカードを使うことで、サブドメインをまるっとTLS化できて便利。
ワイルドカードのやりかたは以前書きました。 http://takuya-1st.hatenablog.jp/entry/2018/10/25/163040
前回、作成した証明書から90日くらい経過して、更新が必要になったので、さらなる進化を目指します。
ワイルドカード証明書の発行には、TXTレコードの書き換えが必要です。
これを各API経由で自動化することができます。
今回は、これに加えDebianのAPTのCertbotと競合しないようにVirtualEnvを使うことにしました。
最新版のCertbotを持ってきます。
git clone https://github.com/certbot/certbot cd certbot
virtualenv 環境に入ります。
virtualenv certbot-test source ./certbot-test/bin/activate
もしvirtualenv がない場合は pip でインストールします。 pip install --upgrade pip && pip install virtualenv
わたしは pyenv 環境で作っているのでpyenv コマンドとvirtualenvを使っています。
acme をインストール
cd acme python setup.py install cd ..
certbot をインストール
cd certbot python setup.py install cd ..
dns プラグインをインストール。今回は cloudflare を採用します。
cd certbot-dns-cloudflare python setup.py install cd ..
これで、Certbot側の準備は終了です。
Cloudflareにログインし、プロフィールを表示、Global API Key を閲覧しコピーします。
api キーを保存しました。
dns_cloudflare_email = takuya**************@gmail.com dns_cloudflare_api_key = *********************
sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg
これで、APIとキーの準備は終わりです。
mydomain=example.com sudo /home/takuya/certbot/certbot-test/bin/certbot \ certonly \ -n --dry-run \ --cert-name $mydomain \ --dns-cloudflare \ --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg \ --server https://acme-v02.api.letsencrypt.org/directory \ -d "*.$mydomain" \ -d $mydomain
mydomain=example.com sudo $( which certbot ) \ certonly \ --cert-name $mydomain \ --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg \ --server https://acme-v02.api.letsencrypt.org/directory \ -d "*.$mydomain" \ -d $mydomain
sudo service nginx restart
次回以降は次のようにすると早いですね
cd ~/certbot git pull virtualenv certbot-test source ./certbot-test/bin/activate suod ./certbot-test/bin/certbot certonly
ワイルドカード証明書は管理コストが減って便利。
こんかいは、Virtualenvを使ったのでsystemd に登録される自動更新のプログラムが使えないので、数ヶ月ごとに手作業で実行する必要はある。
この辺はそのうちAptレポジトリに含まれるCertbotが更新されるであろうから大丈夫だと思う。
ワイルドカードの証明書を使うのもいいけど、自動更新もあるわけだしランダムなドメイン名を無数に使わないなら、ワイルドカードは使わないで、Certbot-autoで自動更新のほうがいいかもしれない。
複数のドメインの証明書を1枚にすると同時にワイルドカードもまとめられたら嬉しい。試してみたい。
記述追加
iproute2 以前なら、何も考えずに、次のようなコマンドを打ち込んでいたところではある。
ifconfig eth0 down && ifconfig eth0 up
ip コマンドになって一番困ったのがこれ。
ip link set eth0 down ip link set eth0 up
これで、ネットワークのインターフェースを指定した再起動ができます。
ip l set eth0 up
link は l に省略できます。 ip a が ip addr の略なのと同じです。
sudo dhclient -v -r eth0
なととしてもいいわけです。
iproute2 で検索したいので、みんなip コマンドじゃなくて iproute2 で記事書いてほしい
nmcli でもいいんだろうけど、あっちはMacのnetworksetup みたいに接続名で識別するからめんどくさそう.
takuya@:~$ nmcli connection show '有線接続 1' takuya@:~$ nmcli connection down '有線接続 1' takuya@:~$ nmcli connection up '有線接続 1'
nmcli は更に使いにくいな。。。ifconfig で良かったんじゃ・・・感
Linux Force DHCP Client (dhclient) to Renew IP Address - nixCraft
設定は、アクセシビリティ→ タイピング。(( まぁUbuntuのことだから、 18.04 ではこうだけど、すぐ場所変わるんだろうけど)
上部は、キーリピートが開始するまでの時間。つまりリピートウエイト
左に行くほど時間間隔が小さい、つまり左ほど早い
下部は、キーリピートが発生するまでの時間。つまりリピート間隔
左に行くほど時間間隔が小さい、つまり左ほど早い。したがって左に行くほど入力回数が多くリピートが多い
右に行くほど、時間間隔が大きい。つまり右ほど遅い。したがって右に行くほど入力回数が少ないキーリピートが少ない。
左に行くほど大きいと思いがちなので、一瞬混乱する。→に行くほど時間が大きい。
つまり「右=遅い」
たぶんGNOMEのデスクトップでも同様だと思います。
UbuntuのインストーラーのUSBディスクで起動して、なにかやりたときにどうするか。
たとえば、SSD/HDDをリカバリしたいとか、ちょっとつかいたときにコマンドがなくて困ったりする。
Ubuntu/Debian などをUSBディスクにインストールしてもっておけばいいんだろうけど、そこまではめんどくさいし、とりあえずDVDやインストールUSB一つで済ませたいよね。
ddrescue がUbuntuのインストールメディアには搭載されてないのでそれをインストールしたい。
そうしておけば、HDDのコピーが行なえますよね。
ターミナルを開いて、universeを有効にしてあげると
sudo add-apt-repository universe
これで準備が完了
sudo add-apt-repository universe sudo apt install gddrescue
コマンドを覚えておけば、ubuntu のインストールUSBをひとつ作っておくだけで、ちょっとしたメンテ作業も楽なるに違いない。
takuya@~$ xcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates
そういえば、しばらくソフトウェアの更新をしてないと思いました。でもapt に慣れきった身体には、Mac App Storeを開いて更新するのがめんどくさいんです。
コマンドから出来ないのかなと思って調べてたら、こんなものを見つけた
takuya@~$ softwareupdate -i -r Software Update Tool Finding available software Downloading Safari Downloading セキュリティアップデート2018-003
https://stackoverflow.com/questions/34617452/how-to-update-xcode-from-command-line
aria2c で同時多重ダウンロードをする。 物理回線以上には早くならないけど、回線の限界まで速度を上げる。
私は、単なるダウンローダー代わりに使っている
なにもオプションつけないと、単なる curl -LJO と同じ。
takuya@Desktop$ aria2c https://example.com/out.50MB.img 12/06 16:38:14 [NOTICE] Downloading 1 item(s) 12/06 16:38:15 [NOTICE] Allocating disk space. Use --file-allocation=none to disable it. See --file-allocation option in man page for more details. [#378d63 5.9MiB/50MiB(11%) CN:1 DL:167KiB ETA:4m28s]
Ctrl-C で接続を止めたり、不意に再起動しちゃったりとかの場合でも、「同じマンドを再度実行すると、レジュームされる。
Status Legend: (INPR):download in-progress. aria2 will resume download if the transfer is restarted. If there are any errors, then see the log file. See '-l' option in help/man page for details.
takuya@Desktop$ aria2c -x2 https://example.com/out.50MB.img
2本でダウンロードするので1本より早くなる。
TCPの帯域を専有すると少し早くなりますね。かといって、本数を大きくしすぎると却って遅くなる気がする。
企業が展開するミラーサーバとかCDNとか強いサーバー相手なら遠慮なく言ってもいいと思うけど、ボランタリーベースで行われてるサーバーに深かけるの良くない。
sudo apt install aria2
追記
raspi などで resize して expand file system と書かれているアレ
sudo gdisk /dev/whatyouwant
sudo gdisk /dev/whatyouwant
sudo partprobe
lsblk
この辺はよくわかってないけど、lsblk で確認する情報は、partprobeを回さないと、更新されない。
python のファイルをvim で編集しようとしていたら、すごく読みづらい。 カラーテーマが原因ですが、カラーテーマをpythonのためだけにぜんぶを変えるのもめんどくさい。
python のときだけ、他の言語と違う設定が必要。インデントや補完などpython は他の言語の設定と共通だと問題が多い。
vim を特定種類のファイルだけ設定を変えることが出来ないか。
vim には ftplugin ( file type plugin ) がビルトインされているのでソレを使うと簡単に設定ができる.
ファイルを作る。
mkdir -p .vim/ftplugin/ vim .vim/ftplugin/python.vim
このときに、python.vim としたらpython だけに適用される設定ファイルが書ける。
color elford set expandtab set autoindent
インデントとかをpython に合わせて書くことにする。
うん、見やすい。
vim で ft を見るときは、なにも値をセットせずに set すると現在の設定がecho される。
:set ft
素のvim を起動したいとき
vim -u /dev/null
なんでもいいから、ファイル名を指定したらいいよね。
vim -u NONE nvim -u NONE
これは、ファイルを指定してるだけなので、
nvim -u /dev/null
などとしたり、空っぽのファイルを読み込んだりしても同じことが得られる
touch a nvim -u a
新規ファイルや空ファイルなど、別の設定ファイルを使うテクニックは vim だけじゃなく curl などひろくコマンド一般で使えるテクニックですよね。知っておきたい老人の知恵ですね。
最新版のChromeは Google の配付サイトに用意されている。
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo apt update
もし、手作業でAPTのURLをいれるとき( /etc/apt/sources.list.d/google-chrome.list )を更新するか新規作成する。
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' > /etc/apt/sources.list.d/dl.google.com.list
apt update
apt search google-chrome-beta apt search google-chrome-unstable
takuya@~$ apt search google-chrom Sorting... Done Full Text Search... Done google-chrome-beta/stable 69.0.3497.57-1 amd64 The web browser from Google google-chrome-stable/stable 68.0.3440.106-1 amd64 The web browser from Google google-chrome-unstable/stable 70.0.3534.4-1 amd64 The web browser from Google
takuya@sakura:~$ apt show google-chrome-unstable Package: google-chrome-unstable Version: 70.0.3534.4-1 Priority: optional Section: web Maintainer: Chrome Linux Team <chromium-dev@chromium.org> Installed-Size: 204 MB Provides: www-browser Pre-Depends: dpkg (>= 1.14.0) Depends: ca-certificates, fonts-liberation, libappindicator3-1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.1.4), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libstdc++6 (>= 4.6), libuuid1 (>= 2.16), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, lsb-release, wget, xdg-utils (>= 1.0.2) Recommends: libu2f-udev Download-Size: 57.1 MB APT-Sources: http://dl.google.com/linux/chrome/deb stable/main amd64 Packages Description: The web browser from Google Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.
ヘッドレスを使うためには。、いくつかのパッケージをいれる必要がある。
sudo apt-get install -y libappindicator1 fonts-liberation
headless-chrome は、xvfb にくらべて必要なモジュールも減ってるしすごく楽だよね。
headless chromeを使ってスクショをとるなら、フォントを持っていたほうがいい。
使ってみてわかったけど、フォントがないとスクショ取ると期待通りにならない。
sudo apt-get install msttcorefonts
この記事を書くために幾つかブログを見てたんだけど。
apt のソースが HTTP なのでセキュリティ的にやばい
などと嘘を書いているブログが散見されました。
apt-key で最初に「鍵」を登録しているので、HTTP通信で転送されたとして署名検証つまり改竄は検出できます。*1
HTTPSじゃないとセキュリティ基準が満たせない。
とかいてた人がいて、ちょっと何言ってるわからない。
HTTPはセキュリティ基準を満たせないとか、それでセキュリティを語れるんだと疑問を投げかけたいが人のブロクなので自重した。
そもそもapt-keyで何のために最初にキーを取得してんだろう。ほんの少し考えてほしかった。
https://dl-ssl.google.com/linux/chrome/deb/
杓子定規にセキュリティ基準を「満たせばいい」というのはどうなんだろうね。セキュリティ基準としても、ルールを守る側としても、どちらも思考停止していてるように感じた。
HTTPSで通信されちゃうと、何をインストールしてるか追跡不能になって、むしろめんどくさいと思うんだけど・・・
*1:この記述で理解できないひとはこの業界を引退したほうがいい
npm を入れた状況や入れ方にもよるんですけど、npm って ユーザーローカルなどを使えないよね。
まぁグローバルだから、当たり前と言われれば当たり前です。
takuya@~$ npm config --global get prefix /usr/local
わたしのmacOS の場合は /usr/local/
でした。
Linuxで、例えばグローバルに入れている場合。
curl -L https://npmjs.org/install.sh | sudo sh
いまどき、Linux のFHSに従って /usr/lib とか /usr/local/lib にいれる必要ってある?
macOS は ユーザー空間のホームディレクトリ空間で良くないか。
現在の設定を確認するには、これを使う。
npm config --global list
デフォルト設定を含めてすべて表示するときは、次のようにする。
npm config ls -l
このコマンドを見ると、次のようなおもしろそうな、ファイル名も見つかる。
prefix = "/usr/local" cache = "/Users/takuya/.npm" globalconfig = "/usr/local/etc/npmrc" globalignorefile = "/usr/local/etc/npmignore" init-module = "/Users/takuya/.npm-init.js" userconfig = "/Users/takuya/.npmrc"
npm には グローバルとローカルがあり、ローカルはフォルダごとに、グローバルはシステム全体。
システム全体をどう定義するか難しいところではあるが、「グローバル=ユーザー個人空間」と解釈して利用するほうがより現代的じゃないかなと感じた。
npm config set prefix
インストール先を変更するとができるのでそれを使うことにする。
わたしは、rubyのrbenv の gems を ~/.lib/ruby に突っ込んでいるので、そこを使うことにする。
npm config set prefix $( echo ~/.lib/node )
または、先程の config ls -l
の結果に見える npmrc を使って
NPM_PREFIX=$( echo ~/.lib/node ) echo "prefix = $NPM_PREFIX" >> ~/.npmrc
などとしても良さそう。
takuya@Desktop$ npm config --global get prefix /Users/takuya/.lib/node
node
コマンドが node_module をどこから探すかを知っておく必要がある。
Modules: CommonJS modules | Node.js v21.0.0 Documentation
node コマンドを起動したときに次の場所から探すようになっている。
つまり、 シンボリックリンクなどでぱぱっとやることで、npm コマンドだけでなく、 node コマンドからも簡単に変えることができる。
ln -sr ~/.lib/node/lib/node_modules/ ~/.node_modules
なぜグローバルのインストールを変えたほうがいいのでしょうか。
わたしは、sudoなどの権限管理とユーザー単位の管理が楽だからやりました。
パスワードを聞かれるのは不便だし、パーミッションの管理もめんどくさいのです。
/usr/lib のグローバルでのライブラリの共有は確かに便利だしディスクの容量節約になります。でも現代に置いてはDLL地獄にあるような、ライブラリの依存関係プロパティの地獄を味わうだけです。docker や openVZ のchrootアプローチも同じようなものです。
~/.npm はただのキャッシュ
~/.npm にnode_modulesがたくさんあります。それを見ると~/.npm
にインストールされるように見えてしまいます。しかし .npm はキャッシュでそこにファイルはそのまま使うことはないようです。これの根拠は初期設定を見るとわかりました。
初期設定が次の箇所になっていました、
prefix = "/usr/local" cache = "/Users/takuya/.npm"
上は、私の設定場合です。設定を解釈すると、globalの npm のライブラリは /usr/local/node_modules
にインストールされます。
~/.npm はキャッシュですね。
つまり、"/Users/takuya/.npm"
にあるファイルはキャッシュです。ローカルインストール時に使われるようです。
私の npm i
コマンドの実行時に取得した npm をキャッシュ保存していて、ここからローカルに配置するようです。開発ディレクトリを含むローカルインストールの高速化と負荷低減のためでしょうか、
windows です Windowsで npm を使うときです。今回紹介した設定を使ってフォルダを移動させる手法は、Windowsでとても役に立つのです。
nvm を利用しているときは、prefix を利用していると、nvm が使えないので、nvm を使おうとすると怒られます。
nvm のときの注意点
パスの記述を修正