Corredor

ウェブ、プログラミングの勉強メモ。

Homebrew でインストールできる役立つユーティリティを調べてみた

MacOS の Homebrew でインストールできる、お役立ちユーティリティを調べてみた。今回は3つ紹介。

moreutils

便利コマンド一式。

$ brew install moreutils

インストールされたコマンドは以下のように確認できた。

$ find /usr/local/Cellar/moreutils/0.62/bin | sed 's!^.*/!!'
bin
chronic
sponge
ifdata
errno
parallel
zrun
pee
combine
ifne
lckdo
vidir
mispipe
vipe
ts
isutf8

chronic とか isutf8 とか、サッとやりたいけどコマンド覚えてないよ、みたいなヤツのエイリアスとして。

dateutils

日付操作に関するコマンド集。

$ brew install dateutils

インストールできるコマンドは以下で確認できた。

$ find /usr/local/Cellar/dateutils/0.4.3/bin/ -type f | sed 's!^.*/!!'
dateround
dateadd
strptime
datezone
datediff
dateconv
dategrep
dateseq
datetest
datesort

エイリアスもあるので、それも確認しておこう。

$ ls -l /usr/local/Cellar/dateutils/0.4.3/bin/

tldr

man コマンドが長過ぎて読んでらんねえよ!という人に。

$ brew install tldr

試しに ls コマンドを調べてみる。$ man ls との差を比べてみて欲しい。

$ tldr ls

ls

List directory contents.

- List files one per line:
    ls -1

- List all files, including hidden files:
    ls -a

- Long format list (permissions, ownership, size and modification date) of all files:
    ls -la

- Long format list with size displayed using human readable units (KB, MB, GB):
    ls -lh

- Long format list sorted by size (descending):
    ls -lS

- Long format list of all files, sorted by modification date (oldest first):
    ls -ltr

要約!!って感じ。

インストールは npm を使って $ npm install -g tldr でも可能。

以上。コマンドはどんどん入れて便利にしていこうず。

UNIXシェルスクリプトコマンドブック 第3版 (コマンドブックシリーズ)

UNIXシェルスクリプトコマンドブック 第3版 (コマンドブックシリーズ)

Homebrew でインストールできるジョークコマンド

MacOS の Homebrew でインストールできるジョークコマンドを調べてみた。

ベースは以下の記事。

Homebrew のインストール方法については以下の記事をドウゾ。

インストールコマンドごと紹介。

# 牛が出てきて喋る。「$ cowsay HOGE」のように使う
$ brew install cowsay

# ポニーが出てきて喋る。「$ ponysay HOGE」のように使う
$ brew install ponysay

# 格言がランダムで出てくる
$ brew install fortune

# 引数の文字列を AA にしてくれる。「$ figlet HOGE」のように使う
$ brew install figlet

# コレも引数の文字列を AA にしてくれる。なんか汚い。w
$ brew install toilet

# 「ls」を打ち間違えると SL が走る。Ctrl + C ではなく Ctrl + Z で抜けられる
$ brew install sl

# 「cat」コマンドの結果が虹色になる。「$ lolcat Example.txt」のように使う
$ brew install lolcat

# コマンドを実行すると CLI がアクアリウムになる。Ctrl + C で終了
$ brew install asciiquarium

# 映画「マトリックス」みたいな画面が流れる
$ brew install cmatrix

# NyanCat が出てくる
$ brew install nyancat

Homebrew さえ入れてあればすぐ導入できる、というのが楽かな。ジョークコマンド入れるのに手間のかかるインストール作業はしたくないので…。w

100万人が笑った!「世界のジョーク集」傑作選 (中公新書ラクレ)

100万人が笑った!「世界のジョーク集」傑作選 (中公新書ラクレ)

Express サーバで CORS を許可する・PUT や DELETE メソッドの通信を許可する

Express で作った Web API サーバに対し、SPA なアプリから GET 通信を試みたら、以下のようなエラーがブラウザコンソールに出てしまった。

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

異なるドメインへの Ajax 通信を制限する、クロスドメイン制約に引っかかっているようだ。

コレを解消するには、Express サーバの起動時に以下のように CORS を許可するヘッダを設定してやれば良い。

const express = require('express');

// サーバをインスタンス化する
const app = express();

// CORS を許可する
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});

// サーバを起動する
app.listen(port);

GET・POST メソッドの通信についてはコレで上手く行っていたのだが、PUT や DELETE メソッドでの通信時に、次のようなエラーが出た。

Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.

調べてみると、CORS を許可するメソッドを別途指定しないと、PUT や DELETE に対応してくれないようだ。

先程のコードの // CORS を許可する 部分に、以下の1行を追加すると解決した。

// CORS を許可する
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');  // ← コレを追加
  next();
});

以前作った node-js-rest-api-sqlite-db にも反映しておいたので、SPA なアプリからアクセスして使ってもらえるであろう。

その他参考

コマンドライン上でサクッと四則演算をする

以前、以下のような記事を書いた。

neos21.hatenablog.com

この記事で紹介していない手法を見付けたので紹介。

expr コマンド

Bash には expr コマンドという、そのものズバリなコマンドがあった。

$ expr 261 - 215
46

こんな風に四則演算ができる。

bc コマンドにヒアストリングで渡す

bc コマンドで四則演算する際、以前の記事では echo とパイプを併用した書き方を紹介していた。

$ echo 10 + 0.3 | bc
10.3

コレとは別に、ヒアストリングと呼ばれる記法を利用して、より短く書けることが分かったので紹介。

「ヒアストリング」は、小なり記号3つ <<< で表現する。変数を擬似的にファイルのように扱えるので、bc コマンドにファイルを渡したように見せかけられる。

$ bc -l <<< 261-215
46

# スペースを入れると「+」や「-」の記号が評価されてしまうので、クォートで囲む
$ bc -l <<< '10 + 0.3'
10.3

ついでにコレを以下のように Function として定義してやれば、即席 calc コマンドが作れる。

calc () {
  bc -l <<< "$@"
}

# こうやって使える
$ calc 65320/670
97.49253731343283582089

新しいシェルプログラミングの教科書

新しいシェルプログラミングの教科書