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 なアプリからアクセスして使ってもらえるであろう。

その他参考