恐怖!シェルショッカーの posix原理主義シェルスクリプト
TRANSCRIPT
![Page 1: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/1.jpg)
恐怖 シェルショッカーのPOSIX原理主義シェルスクリプト
シェルショッカー日本支部
https://github.com/ShellShoccar-jpn
1
2016年3月20日@歌舞伎座.tech#9
![Page 2: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/2.jpg)
全世界
70000000000000000000000人
くらいのプログラマー達よ、
2
![Page 3: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/3.jpg)
お前たちは、
今の開発言語、開発環境に
満足しておるのか?
3
![Page 4: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/4.jpg)
OS、言語、ライブラリー、
ミドルウェア……
毎日飽きもせずver. up、
4
![Page 5: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/5.jpg)
突然動かなくなって、
徹夜で泣きながら修正……
とか...
5
![Page 6: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/6.jpg)
そういう目に遭わずに
済む奴はいるのか?
6
![Page 7: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/7.jpg)
より便利な競合ソフトの登場、
代わりに、消えていくソフト……
7
Developer Survey Results 2016 IV. Trending Tech on Stack Overflow (Losers) http://stackoverflow.com/research/developer-survey-2016
![Page 8: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/8.jpg)
せっかく勉強したのに
開発現場から消え、
知識が役に立たなくなる……
8
![Page 9: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/9.jpg)
10年後の自分は、
10年分の成長が
できているのか……
9
![Page 10: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/10.jpg)
10 秘密結社シェルショッカー。
![Page 11: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/11.jpg)
POSIX中心主義
プログラミング (POSIX Centric Programming)
秘密結社シェルショッカーの
11
![Page 12: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/12.jpg)
POSIX中心主義 ― 概要
UNIX系OSの最低限のI/Fを定めた規格、
「POSIX」に極力準拠させる
プログラミング方針
12
![Page 13: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/13.jpg)
POSIX中心主義 ― 概要
POSIX準拠させる理由① ― 準拠OSが多い 明示的準拠……商用UNIX、 Mac OS Xなど
暗示的準拠……FreeBSD、 LinuxなどのPC UNIX
→どこへ持っていっても動く
13
![Page 14: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/14.jpg)
POSIX中心主義 ― 概要
POSIX準拠させる理由② ― 殆ど改定しない 非営利団体の国際規格
準拠するベンダーが多いので簡単に改定できない
→長年動く (動いてきた)
14
![Page 15: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/15.jpg)
POSIX中心主義 ― 概要
過酷な環境変化に耐える
「ソフトウェアの乾パン」
15
![Page 16: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/16.jpg)
POSIX中心主義 ― 概要
複雑な状態変質がイヤで
Immutable Infrastructure?
16
![Page 17: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/17.jpg)
POSIX中心主義 ― 概要
必要ない!
サーバーよ、好きなだけ変質しろ!
Be mutable! infrastructure
17
![Page 18: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/18.jpg)
POSIX中心主義 ― 実践
3つの方針を導入
18
① POSIX
原理主義
②交換可能性担保
③ W3C
原理主義
単独ホスト または Webサーバー Webクライアント
![Page 19: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/19.jpg)
POSIX中心主義 ― 実践①POSIX原理主義
1. POSIXコマンドだけで実装 AWK、sed等はチューリング完全。
2. 言語はシェルスクリプト
POSIXにあるのがそれだから。
→ POSIXの範囲で、どんな計算も書ける。
19
POSIX公式情報サイト http://pubs.opengroup.org/onlinepubs/9699919799/
![Page 20: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/20.jpg)
POSIX中心主義 ― 実践①POSIX原理主義
例(1)―XMLパーサ(parsrx.sh) https://github.com/ShellShoccar-jpn/Parsrs/blob/master/parsrx.sh
XML→行列指向フォーマット(XPath - value)への変換 sed, AWK等、26個のコマンドをパイプで連結し生成。 JSON, CSVパーサも同様に実装済。
20
<文具購入リスト 会員名="文具 太郎">
<購入品>はさみ</購入品>
<購入品>ノート(A4,無地)</購入品>
<購入品>シャープペンシル</購入品>
<購入品><取寄商品>替え芯</取寄商品></購入品>
<購入品>クリアファイル</購入品>
<購入品><取寄商品>6穴パンチ</取寄商品></購入品>
</文具購入リスト>
/文具購入リスト/@会員名 文具 太郎
/文具購入リスト/購入品 はさみ
/文具購入リスト/購入品 ノート(A4,無地)
/文具購入リスト/購入品 シャープペンシル
/文具購入リスト/購入品/取寄商品 替え芯
/文具購入リスト/購入品
/文具購入リスト/購入品 クリアファイル
/文具購入リスト/購入品/取寄商品 6穴パンチ
/文具購入リスト/購入品
/文具購入リスト ¥n ¥n ¥n ¥n ¥n ¥n ¥n
![Page 21: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/21.jpg)
POSIX中心主義 ― 実践①POSIX原理主義
例(2)―RDBMS的操作 データは半角空白区切りのテキストファイル持ち AWK, grep, sort, join等の組み合わせでselect文相当が実現
→ SQL文(RDBMS)など要らぬ!
21
SELECT MEM."会員ID", MEM."会員名" FROM blacklist AS MEM RIGHT OUTER JOIN members AS BL ON BL."会員名" = MEM."会員名" WHERE BL."会員名" IS NOT NULL ORDER BY MEM."会員ID" ASC;
cat blacklist.txt | # 第1列:BL会員ID # sort -k 1,1 | ←会員IDで並替え uniq > sorted_bl.txt cat members.txt | # 第1列:会員ID 第2列:名前 # sort –k 1,1 |←会員IDで並替え join -1 1 -2 2 -v 2 sorted_bl.txt - ←BLの会員IDで joinできない行 のみを抽出
ブラックリストに掲載された会員「以外」を表示するデータ操作
SQL版 POSIX版
![Page 22: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/22.jpg)
POSIX中心主義 ― 実践①POSIX原理主義
例(3)―その他いろいろ 非Web系
乱数、 mktemp相当、 全角・半角文字相互変換、 排他制御……
Web系
Cookie、 セッション管理、 MIMEマルチパート作成・解読、Base64、
CGI変数授受……
主にRFC文書を読みながら作る。
Webアプリ開発に必要なものまで、概ね作れる。
22
![Page 23: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/23.jpg)
POSIX中心主義 ― 実践②交換可能性担保
POSIXの範囲で実現できないもの
バイナリ処理(非現実的処理速度なため)
ネットワーク処理(コマンドが無く、原理的に不可)
一定条件の元、POSIX外コマンドを認める。
23
![Page 24: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/24.jpg)
POSIX中心主義 ― 実践②交換可能性担保
一定条件とは、「交換可能性」の担保
交換可能性 「現在依存している製品が使えなくなっても、同じ機能を持つ別製品が存在し、交換できる」 (例) Apache ←→ nginx ←→ lighttpd 等 sendmail ←→ Postfix ←→ qmail ←→ exim 等 cURL ←→ Wget
そもそもPOSIX準拠OS同士には交換可能性がある。
24
![Page 25: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/25.jpg)
POSIX中心主義 ― 実践②交換可能性担保
例 ― CUI版Twitterクライアント怪人「恐怖!小鳥男」
https://github.com/ShellShoccar-jpn/kotoriotoko
25
![Page 26: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/26.jpg)
POSIX中心主義 ― 実践②交換可能性担保
Twitter APIアクセスでcURL、Wget両対応にする。
26
: s=$(mime-make -m) ct_hdr="Content-Type: multipart/form-data; boundary=¥"$s¥"" eval mime-make -b "$s" $mimemake_args | if [ -n "${CMD_WGET:-}" ]; then case "$timeout" in '') : ;; *) timeout="--connect-timeout=$timeout";; esac cat > "$Tmp/mimedata" "$CMD_WGET" ${no_cert_wget:-} -q -O - --header="$oa_hdr" --header="$ct_hdr" --post-file="$Tmp/mimedata" $timeout "$API_endpt" elif [ -n "${CMD_CURL:-}" ]; then case "$timeout" in '') : ;; *) timeout="--connect-timeout $timeout";; esac "$CMD_CURL" ${no_cert_curl:-} -s $timeout -H "$oa_hdr" -H "$ct_hdr" --data-binary @- "$API_endpt" fi :
[注意] Wgetには、ファイルアップロード機能がないため、cURLにあっても使わない。 →POSIX原理主義で実装 (使ったら交換不可能に
なるではないか!)
Wget用、 cURL用、 2つの書式で書く。
![Page 27: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/27.jpg)
POSIX中心主義 ― 実践②交換可能性担保
その他の例
メール送信コマンド ― sendjpmail sendmailコマンドの日本語対応ラッパー
主要MTAには、必ずsendmailコマンドがある。
添付ファイルにも対応
https://github.com/ShellShoccar-jpn/misc-tools/blob/master/sendjpmail
27
![Page 28: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/28.jpg)
POSIX中心主義 ― 実践③W3C原理主義
WebアプリではWebブラウザー側でも開発必要
WebブラウザーはUNIXではない。 HTML/CSS/JavaScript
W3C勧告に準拠 W3C勧告は、いわば「POSIXのWebブラウザー版」
28
![Page 29: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/29.jpg)
POSIX中心主義 ― 実践③W3C原理主義
W3C勧告のHTML/CSS/JavaScript仕様のみ使用
https://www.w3.org/TR/
個々のWebブラウザーの独自仕様は使用禁止。
独自ライブラリーも禁止
jQueryその他
W3C勧告の範囲でフルスクラッチ
29
![Page 30: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/30.jpg)
POSIX中心主義 ― 実践③W3C原理主義
Ajax処理ごとき、40行足らずでフルスクラッチ可能。
(例)https://github.com/ShellShoccar-jpn/Ajax_demo/blob/master/CLOCK.JS
30
// 1.Ajaxオブジェクト生成関数 function createXMLHttpRequest(){ if(window.XMLHttpRequest){return new XMLHttpRequest()} if(window.ActiveXObject){ try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){} try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){} try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){} } return false; } // 2.Ajax通信関数 function update_clock() { var url,xhr,to; url = get_homedir()+'CLOCK.CGI'; xhr = createXMLHttpRequest(); if (! xhr) {return;} to = window.setTimeout(function(){xhr.abort()}, 30000); xhr.onreadystatechange = function(){update_clock_callback(xhr,to)}; xhr.open('GET' , url+'?dummy='+(new Date)/1, true); xhr.send(null); }
つづく→
→つづき // 3.コールバック関数 function update_clock_callback(xhr,to) { var str, elm; if (xhr.readyState === 0) {alert('タイムアウトです。');} if (xhr.readyState !== 4) {return; } window.clearTimeout(to); if (xhr.status === 200) { str = xhr.responseText; elm = document.getElementById('clock'); elm.innerHTML = str; } else { alert('サーバーが不正な応答を返しました。'); } }
![Page 31: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/31.jpg)
POSIX中心主義 ― 実践③W3C原理主義
動作例―Ajax Clock(ボタンを押すたび時刻文字列だけ更新)
http://lab-sakura.richlab.org/AJAX/CLOCK.HTML
31
![Page 32: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/32.jpg)
POSIX中心主義 ― 戦歴
(1) 郵便番号から住所を検索 http://lab-sakura.richlab.org/ZIP2ADDR/public_html/
全国のたかが14万レコードなど、一瞬で探せる。
32
![Page 33: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/33.jpg)
POSIX中心主義 ― 戦歴
(2) ショッピングカート(組織の資金源) https://richlab.org/coterie/
商品・在庫データをテキストファイルで管理 Cookie等で 買い物カゴ実装 クレカ決済 (Web API)も対応 WordPressも、はてなブログも ショッピングサイト化可能 「恐怖! シェルショッカー 1号男」 → http://www.slideshare.net/tomoyukimatsura/1-php-con2014-40134119
33
![Page 34: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/34.jpg)
POSIX中心主義 ― 戦歴
(3) 鉄道運行状況表示プログラム http://metropiper.com
東京メトロのWeb APIから車両の現在位置を取得 何駅前まで列車が来ているかわかる
34
![Page 35: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/35.jpg)
POSIX中心主義 ― 戦歴
(3) 鉄道運行状況表示プログラムは、
東京メトロのコンテストに送り込んだ怪人 https://developer.tokyometroapp.jp/
オープンデータ活用コンテスト
2014年開催
35
![Page 36: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/36.jpg)
POSIX中心主義 ― 戦歴
コンテストは東京五輪を意識していた、
らしい。
2020年(=コンテストの6年後)
観光客の利便性向上のため、 スマホアプリまで広く募集。 受賞作品は、スマホアプリが 大半を占めた。 http://car.watch.impress.co.jp/docs/news/20150220_689397.html
36
![Page 37: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/37.jpg)
POSIX中心主義 ― 戦歴
審査員達よ・・・
その受賞作、2020年の
本番まで動くのか?
Android、iOSアプリって6年ももつのか?
37
![Page 38: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/38.jpg)
POSIX中心主義 ― 戦歴
我らが送り込んだ怪人(作品)は、
2020年に動くことを最優先に
作ったのだがな・・・・・・
38
![Page 39: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/39.jpg)
結論
低水準領域を学べ
39
![Page 40: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/40.jpg)
低水準領域を学べ
この男も言っているぞ
「人体を理解するとよい」と。
40
報道ステーション 2016.03.17スペシャル対談2016 イチロー×稲葉篤紀 より引用
![Page 41: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/41.jpg)
低水準領域を学べ
ウェイトトレーニング(シーズン前)で筋力増 ↓ 春先、打てない! ↓ シーズン中、トレーニングできず痩せる ↓
スイングスピード上がる
41
![Page 42: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/42.jpg)
低水準領域を学べ
この男も学習したぞ
「ハンマーの柄の方を振り回すと強い」
ことを。
42
映画「少林寺三十六房」より
![Page 43: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/43.jpg)
低水準領域を学べ
重いハンマーを振り回す。 ↓ 先端が重くて動きが鈍く、反撃される。 ↓ 僧侶に言われ、柄を相手に向けて振り回す。 ↓
撃退に成功
43
![Page 44: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/44.jpg)
低水準領域を学べ
POSIX中心主義では、
比較的低水準領域を学習する。
44
ハードウェア ハードウェア ハードウェア
カーネル
シェル 言語 言語
アプリ アプリ アプリ アプリ アプリ
POSIX中心主義と高級言語の学習範囲のイメージ
高級言語の学習領域
POSIXの学習領域
![Page 45: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/45.jpg)
低水準領域を学べ
同じこと。
頭でっかちは不利。
45
![Page 46: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/46.jpg)
低水準領域を学べ
道具を探し回るな!
使いこなせ!
46
![Page 47: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/47.jpg)
低水準領域を学べ
コンピューターの本質を
理解するのだ。
47
![Page 48: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/48.jpg)
低水準領域を学べ
POSIXシェルスクリプトは
本質に近い。
48
![Page 49: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/49.jpg)
低水準領域を学べ
「シェルスクリプトなんてクソだ!」
だと?
49
![Page 50: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/50.jpg)
低水準領域を学べ
お前は、シェルスクリプトや
UNIXを、
何も理解していない!!
50
![Page 51: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/51.jpg)
低水準領域を学べ
「シェルスクリプトは
OS依存が激しい」
だと?
51
![Page 52: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/52.jpg)
低水準領域を学べ
POSIXの仕様を読まずに
書くからだ!
52
![Page 53: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/53.jpg)
低水準領域を学べ
依存性回避のために
他言語やソフトを、OSや環境依存に苦しみながら、
コンパイル・インストール・バージョンアップしてたら、
意味がなかろうが!
53
![Page 54: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/54.jpg)
まとめ
54
![Page 55: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/55.jpg)
まとめ
基礎から学べ!
55
![Page 56: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/56.jpg)
まとめ
シェルスクリプトを使え!
56
![Page 57: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/57.jpg)
まとめ
POSIX原理主義の 聖典を買え! (宣伝)
57
本の形をした怪人 「すべてのUNIXで20年動くプログラムは どう書くべきか」 C&R研究所 発行 https://richlab.org/coterie/pfb.html
を、全国書店に送り込んだ!
![Page 58: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/58.jpg)
まとめ
ついでに、授業も受けろ (宣伝)
58
「シェルスクリプト言語論」 金沢大学@大学コンソーシアム石川で 2016年4月開講 (社会人も受講可)
組織の幹部を送り込む!
![Page 59: 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト](https://reader030.vdocuments.mx/reader030/viewer/2022021417/586f713f1a28ab10258b4eaf/html5/thumbnails/59.jpg)
今日はこれくらいに しといてやる!
59