POSIX1日1コマンド[part2]: alias
詳細はこちらの記事へ。1日1POSIXコマンドを実行してみようというやつです。
alias
aliasを知る
ざっくりDESCRIPTION
エイリアス(別名)を定義するコマンド。また、定義されたエイリアスを標準出力に出力する。エイリアスは現在のシェルとサブシェルに影響を与える。
ざっくりOPTION
オプションは無い
ざっくりOPERANDS
$ alias alias-name
指定したalias-name別名の定義を標準出力に出力する
$ alias egrep alias egrep='egrep --color=auto'
$ alias alias-name=string
指定したalias-nameに別名を定義する
$ alias hoge="echo 'hoge'" $ hoge hoge
ざっくりまとめ
エイリアスは一般的にもよく使われていますね。 継続1日目
さぁPOSIXを始めよう
こんにちはー
久しぶりの投稿になります..
たまにはてなブログのアクセス数を見たりしてましたが、記事を書くには至りませんでした。(何を言っても言い訳になりそう)
だいたい1日20〜30アクセスはあるようです。もっとPVを増やすとやる気も出てくるのでは??
と思い、seoあげてみるか!とか考えてました!!
が本日は逆行します。
本題
POSIXという言葉を聞いたことはあるでしょうか?
とりあえずウィキペディアのリンクを貼っておきます。
POSIX(ポシックス、ポジックス、英: Portable operating system interface)は、各種UNIXを始めとする異なるオペレーティングシステム (OS) 実装に共通のアプリケーションプログラミングインタフェース (API) を定め、移植性の高いアプリケーションソフトウェアの開発を容易にすることを目的としてIEEEが策定したAPI規格である。
超ハイパーざっくりとした僕の認識は
- どこの環境でも動く
です。
以前に「恐怖!シェルショッカーのPOSIX原理主義 シェルスクリプト」というスライドを見たことがあって、受けた印象です。
www.slideshare.net
(是非見てみてください)
移植性が高いに越したことはないですよね。
名著の「UNIXという考え方-その設計思想と哲学」でも
- 作者: Mike Gancarz,芳尾桂
- 出版社/メーカー: オーム社
- 発売日: 2001/02/01
- メディア: 単行本
- 購入: 40人 クリック: 498回
- この商品を含むブログ (145件) を見る
「効率より移植性」
という定理が書かれています。
(是非読んでください)
#!/bin/sh
と書いていながら
lrwxrwxrwx. 1 root root 4 Oct 28 11:03 sh -> bash
こういうことありますよね。
ここでは動いているのに、僕の環境じゃ動かない!
というのをなるべく個人レベルでも無くしていきたいので、最近はPOSIX準拠したコマンドを使うようにしています。(配列とかもそうですね)
なるべくとかではなく、sh
で動くものを作るようにしています。
POSIXコマンドチートシートをQitaで作成してしている方がいたので、こちらも参考にさせていただいています。
今後の取り組み
POSIX準拠かどうかを調べる方法はいくつかあります。 ですが、そもそもPOSXI準拠のコマンドを知っていないと、何かを作るときに遠回りになる可能性があります。
そこで、私は、1日1shコマンドを心がけて生活していきたいと思います!!
参考にするところはこちらのリンク
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html
ここに記載されているコマンドを1日一つできれば、それなりのPOSIX成長を見込めるのではないでしょうか。
1日一つコマンドを使ってみて、使い方を理解する、活用方法を考える。的な感じでできればと思っています。
まとめ
半年ぐらい記事更新をさぼっていたやつが1日1記事更新するのはおそらく無理なので、各コマンドについて記事を更新するかは闇の中ですが、
できるだけ!できるだけ!やっていこうと思います。
追記
当初は
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html
のページの上から行っていこうと思ったのですが、序盤の方は
Special Built-In Utilities(break, continue等)だったので、そっちの方は時間をじっくりやるべきだと思い、1日1回実行するのは
Utilitiesの方にすることにしました。
アーカイブ
PythonのTrue,False小メモ
Pythonの真偽値として使われるbool型に関するメモ
https://docs.python.jp/3/library/numbers.html#numbers.Integral
常識なのかもしれないが、bool型は整数型の派生型とのこと
>>> True True >>> type(True) <class 'bool'>
整数型の派生なので演算ができる
>>> True + 1 2 >>> True + True 2
おまけ
>>> True == True + True False
真実に真実を加えると、真実じゃなくなる
pythonでランダムに日本語を作る
せっかく配列作ったのでとりあえず使うだけです。
import random import sys jp = ["あ","い","う","え","お","か","き","く","け","こ","さ","し","す","せ","そ","た","ち","つ","て","と","な","に","ぬ","ね","の","は","ひ","ふ","へ","ほ","ま","み","む","め","も","や","ゆ","よ","ら","り","る","れ","ろ","わ","を","ん"] def make_word(length,words): word = "" for i in range(length): word += words[random.randint(0,len(words)-1)] return word def main(): if len(sys.argv) < 2: print("引数を入力してください") return print(make_word(int(sys.argv[1]),jp)) if __name__ == "__main__": main()
python jp_cmd.py 2 よひ
i=1; while [ $i -le 10 ]; do python jp_cmd.py 3; i=$(expr $i + 1);done ろめね さゆへ たふそ めゆろ かめる をねき えほめ になあ るゆを りおあ
これで子供の名前つけます
pythonで50音の配列
メモレベルの内容です。
pythonで50音の配列を作りたかった。
「python 50音 配列」で検索して配列の定義が出てくれば一瞬で解決したと思います。
ですので先に貼っておきます
jp = ["あ","い","う","え","お","か","き","く","け","こ","さ","し","す","せ","そ","た","ち","つ","て","と","な","に","ぬ","ね","の","は","ひ","ふ","へ","ほ","ま","み","む","め","も","や","ゆ","よ","ら","り","る","れ","ろ","わ","を","ん"]
きっとutf-8バイト型の50音からString型に変換するみたいなのを調べると出てくるはずです。
ちょっと調べると
b'\xe3\x81\x82' #バイト型の「あ」 b'\xe3\x81\x84' #バイト型の「い」 b'\xe3\x81\x83' #バイト型の「ぃ」 >>> b'\xe3\x81\x82'.decode('utf-8') 'あ' b'\xe3\x81\x84'.decode('utf-8') 'い'
ここまでわかったのできっとできるはずです。
でも今回は単純に変数を定義する方法。というか作業ログです。
vim jp
50音を検索しても文字一つ一つが連続しているものがなかったのでしかたなく手打ち
あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん
一文字ずつ" "
で囲ってカンマをつける置換
:%s/\(.\)/"\1",/g
中学生ぐらいの私なら一文字ずつ打ってその度に" "
とカンマをつけていたでしょう。今ではこの通り割と早くできました。
作業効率向上のために中学校の必修科目にvimを設けるべきです。
根本的にもっと早い方法があるなら知りたい。
以上です。ご覧いただきありがとうございました。
nginx-unitのansible
ドキュメント見た方が早いかもしれない
対象はCentOS7
roleとして扱う
ディレクトリ構造
. ├── files │ └── unit.repo └── tasks └── main.yml
ファイル群
tasks/main.yml
--- - name: import unit repo copy: src: unit.repo dest: /etc/yum.repo.d/unit.repo - name: install package yum: name: unit state: presen
files/unit.repo
[unit] name=unit repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
軽い説明
unit.repoをコピーしてyum install
断念したこと
nginx unitは
curl -X PUT -d @example.json --unix-socket http://localhost
これで example.json
で指定した内容でアプリケーションを起動することができる。
ということは
ansibleの uriモジュール
を使えば起動もできるのではないかと考えた。ローカルでJSONを更新してデプロイもできるじゃないかと考えた。が、
uriモジュールでunix-socketを使う方法がわからなかった。
ので断念しました。いつか再チャレンジ
積読消化:サーバーレスシングルページアプリケーション:day2
別に毎日するとは宣言していないが、2日続けて投稿。
レビューみたいになるかもしれない。いや、読書感想文か
これまでに「こんなことができるアプリケーションがあるといいな、だれか作ってくれないかな」と思ったことがあるなら、良い知らせがあります。その「だれか」は「あなた」です。
この一文で始まる。いいこと言うぜ
N層アーキテクチャ
Web部分がクライアントとバックエンドのインターフェースになるようなシステム。 アプリケーションサーバ + 1つ以上のバックエンドが層を形成している
シングルページwebアプリケーションをつくることで、アプリケーション部分をブラウザに移せる。
ふむ。確かに。
ブラウザが直接必要なサービスに接続できる設計になる。
クラウド事業者が提供しているバックエンドサービスを部品として使うイメージ
継続大事