SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
恐怖
シェルショッカーのPOSIX原理主義シェルスクリプト
シェルショッカー日本支部
https://github.com/ShellShoccar-jpn
1
2016年3月20日@歌舞伎座.tech#9
全世界
70000000000000000000000人
くらいのプログラマー達よ、
2
お前たちは、
今の開発言語、開発環境に
満足しておるのか?
3
OS、言語、ライブラリー、
ミドルウェア……
毎日飽きもせずver. up、
4
突然動かなくなって、
徹夜で泣きながら修正……
とか...
5
そういう目に遭わずに
済む奴はいるのか?
6
より便利な競合ソフトの登場、
代わりに、消えていくソフト……
7
Developer Survey Results 2016
IV. Trending Tech on Stack Overflow (Losers)
http://stackoverflow.com/research/developer-survey-2016
せっかく勉強したのに
開発現場から消え、
知識が役に立たなくなる……
8
10年後の自分は、
10年分の成長が
できているのか……
9
10
秘密結社シェルショッカー。
POSIX中心主義
プログラミング
(POSIX Centric Programming)
秘密結社シェルショッカーの
11
POSIX中心主義 ― 概要
UNIX系OSの最低限のI/Fを定めた規格、
「POSIX」に極力準拠させる
プログラミング方針
12
POSIX中心主義 ― 概要
POSIX準拠させる理由① ― 準拠OSが多い
 明示的準拠……商用UNIX、 Mac OS Xなど
 暗示的準拠……FreeBSD、 LinuxなどのPC UNIX
→どこへ持っていっても動く
13
POSIX中心主義 ― 概要
POSIX準拠させる理由② ― 殆ど改定しない
 非営利団体の国際規格
 準拠するベンダーが多いので簡単に改定できない
→長年動く (動いてきた)
14
POSIX中心主義 ― 概要
過酷な環境変化に耐える
「ソフトウェアの乾パン」
15
POSIX中心主義 ― 概要
複雑な状態変質がイヤで
Immutable Infrastructure?
16
POSIX中心主義 ― 概要
必要ない!
サーバーよ、好きなだけ変質しろ!
Be mutable! infrastructure
17
POSIX中心主義 ― 実践
3つの方針を導入
18
①
POSIX
原理主義
②交換可能性担保
③
W3C
原理主義
単独ホスト または Webサーバー Webクライアント
POSIX中心主義 ― 実践①POSIX原理主義
1. POSIXコマンドだけで実装
AWK、sed等はチューリング完全。
2. 言語はシェルスクリプト
POSIXにあるのがそれだから。
→ POSIXの範囲で、どんな計算も書ける。
19
POSIX公式情報サイト
http://pubs.opengroup.org/onlinepubs/9699919799/
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
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版
POSIX中心主義 ― 実践①POSIX原理主義
例(3)―その他いろいろ
 非Web系
 乱数、 mktemp相当、 全角・半角文字相互変換、 排他制御……
 Web系
 Cookie、 セッション管理、 MIMEマルチパート作成・解読、Base64、
CGI変数授受……
 主にRFC文書を読みながら作る。
Webアプリ開発に必要なものまで、概ね作れる。
22
POSIX中心主義 ― 実践②交換可能性担保
POSIXの範囲で実現できないもの
バイナリ処理(非現実的処理速度なため)
ネットワーク処理(コマンドが無く、原理的に不可)
一定条件の元、POSIX外コマンドを認める。
23
POSIX中心主義 ― 実践②交換可能性担保
一定条件とは、「交換可能性」の担保
交換可能性
「現在依存している製品が使えなくなっても、同じ機
能を持つ別製品が存在し、交換できる」
(例)
 Apache ←→ nginx ←→ lighttpd 等
 sendmail ←→ Postfix ←→ qmail ←→ exim 等
 cURL ←→ Wget
 そもそもPOSIX準拠OS同士には交換可能性がある。
24
POSIX中心主義 ― 実践②交換可能性担保
例 ― CUI版Twitterクライアント怪人「恐怖!小鳥男」
https://github.com/ShellShoccar-jpn/kotoriotoko
25
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つの書式で書く。
POSIX中心主義 ― 実践②交換可能性担保
その他の例
メール送信コマンド ― sendjpmail
 sendmailコマンドの日本語対応ラッパー
 主要MTAには、必ずsendmailコマンドがある。
 添付ファイルにも対応
 https://github.com/ShellShoccar-jpn/misc-tools/blob/master/sendjpmail
27
POSIX中心主義 ― 実践③W3C原理主義
WebアプリではWebブラウザー側でも開発必要
WebブラウザーはUNIXではない。
 HTML/CSS/JavaScript
W3C勧告に準拠
W3C勧告は、いわば「POSIXのWebブラウザー版」
28
POSIX中心主義 ― 実践③W3C原理主義
W3C勧告のHTML/CSS/JavaScript仕様のみ使用
 https://www.w3.org/TR/
 個々のWebブラウザーの独自仕様は使用禁止。
独自ライブラリーも禁止
 jQueryその他
 W3C勧告の範囲でフルスクラッチ
29
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('サーバーが不正な応答を返しました。');
}
}
POSIX中心主義 ― 実践③W3C原理主義
動作例―Ajax Clock(ボタンを押すたび時刻文字列だけ更新)
 http://lab-sakura.richlab.org/AJAX/CLOCK.HTML
31
POSIX中心主義 ― 戦歴
(1) 郵便番号から住所を検索
 http://lab-sakura.richlab.org/ZIP2ADDR/public_html/
全国のたかが14万レコードなど、一瞬で探せる。
32
POSIX中心主義 ― 戦歴
(2) ショッピングカート(組織の資金源)
 https://richlab.org/coterie/
商品・在庫データをテキストファイルで管理
Cookie等で
買い物カゴ実装
クレカ決済
(Web API)も対応
WordPressも、はてなブログも
ショッピングサイト化可能
「恐怖! シェルショッカー 1号男」
→ http://www.slideshare.net/tomoyukimatsura/1-php-con2014-40134119
33
POSIX中心主義 ― 戦歴
(3) 鉄道運行状況表示プログラム
http://metropiper.com
東京メトロのWeb APIから車両の現在位置を取得
何駅前まで列車が来ているかわかる
34
POSIX中心主義 ― 戦歴
(3) 鉄道運行状況表示プログラムは、
東京メトロのコンテストに送り込んだ怪人
 https://developer.tokyometroapp.jp/
 オープンデータ活用コンテスト
 2014年開催
35
POSIX中心主義 ― 戦歴
コンテストは東京五輪を意識していた、
らしい。
2020年(=コンテストの6年後)
観光客の利便性向上のため、
スマホアプリまで広く募集。
受賞作品は、スマホアプリが
大半を占めた。
http://car.watch.impress.co.jp/docs/news/20150220_689397.html
36
POSIX中心主義 ― 戦歴
審査員達よ・・・
その受賞作、2020年の
本番まで動くのか?
Android、iOSアプリって6年ももつのか?
37
POSIX中心主義 ― 戦歴
我らが送り込んだ怪人(作品)は、
2020年に動くことを最優先に
作ったのだがな・・・・・・
38
結論
低水準領域を学べ
39
低水準領域を学べ
この男も言っているぞ
「人体を理解するとよい」と。
40
報道ステーション 2016.03.17スペシャル対談2016
イチロー×稲葉篤紀 より引用
低水準領域を学べ
ウェイトトレーニング(シーズン前)で筋力増
↓
春先、打てない!
↓
シーズン中、トレーニングできず痩せる
↓
スイングスピード上がる
41
低水準領域を学べ
この男も学習したぞ
「ハンマーの柄の方を振り回すと強い」
ことを。
42
映画「少林寺三十六房」より
低水準領域を学べ
重いハンマーを振り回す。
↓
先端が重くて動きが鈍く、反撃される。
↓
僧侶に言われ、柄を相手に向けて振り回す。
↓
撃退に成功
43
低水準領域を学べ
POSIX中心主義では、
比較的低水準領域を学習する。
44
ハードウェア ハードウェア ハードウェア
カーネル
シェル
言語 言語
アプリ アプリ アプリ
アプリ アプリ
POSIX中心主義と高級言語の学習範囲のイメージ
高級言語の学習領域
POSIXの学習領域
低水準領域を学べ
同じこと。
頭でっかちは不利。
45
低水準領域を学べ
道具を探し回るな!
使いこなせ!
46
低水準領域を学べ
コンピューターの本質を
理解するのだ。
47
低水準領域を学べ
POSIXシェルスクリプトは
本質に近い。
48
低水準領域を学べ
「シェルスクリプトなんてクソだ!」
だと?
49
低水準領域を学べ
お前は、シェルスクリプトや
UNIXを、
何も理解していない!!
50
低水準領域を学べ
「シェルスクリプトは
OS依存が激しい」
だと?
51
低水準領域を学べ
POSIXの仕様を読まずに
書くからだ!
52
低水準領域を学べ
依存性回避のために
他言語やソフトを、OSや環境依存に苦しみながら、
コンパイル・インストール・バージョンアップしてたら、
意味がなかろうが!
53
まとめ
54
まとめ
基礎から学べ!
55
まとめ
シェルスクリプトを使え!
56
まとめ
POSIX原理主義の
聖典を買え! (宣伝)
57
本の形をした怪人
「すべてのUNIXで20年動くプログラムは
どう書くべきか」
C&R研究所 発行
https://richlab.org/coterie/pfb.html
を、全国書店に送り込んだ!
まとめ
ついでに、授業も受けろ
(宣伝)
58
「シェルスクリプト言語論」
金沢大学@大学コンソーシアム石川で
2016年4月開講
(社会人も受講可)
組織の幹部を送り込む!
今日はこれくらいに
しといてやる!
59

Mais conteúdo relacionado

Mais procurados

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方歩 柴田
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介Yuma Ohgami
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話Yuta Shimada
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Takahiko Ito
 
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたAnsibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたKeijiUehata1
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 

Mais procurados (20)

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
GitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみたGitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみた
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
 
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたAnsibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみた
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 

Destaque

恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男Tomoyuki Matsuura
 
TeX vs Wordの不毛な争い
TeX vs Wordの不毛な争いTeX vs Wordの不毛な争い
TeX vs Wordの不毛な争いHidetsugu Tamura
 
【企画書】ReceReco:新規事業討議用社内資料
【企画書】ReceReco:新規事業討議用社内資料【企画書】ReceReco:新規事業討議用社内資料
【企画書】ReceReco:新規事業討議用社内資料Find Job Startup
 
P2 P 奨学金プロジェクト Ver3 5
P2 P 奨学金プロジェクト Ver3 5P2 P 奨学金プロジェクト Ver3 5
P2 P 奨学金プロジェクト Ver3 5Daisuke Miyoshi
 
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料Find Job Startup
 
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)Keita Takizawa
 
PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料Find Job Startup
 
【企画書】チャットワーク:社内検討用資料
【企画書】チャットワーク:社内検討用資料【企画書】チャットワーク:社内検討用資料
【企画書】チャットワーク:社内検討用資料Find Job Startup
 
Cyta.jp_サービスEC説明資料
Cyta.jp_サービスEC説明資料Cyta.jp_サービスEC説明資料
Cyta.jp_サービスEC説明資料Find Job Startup
 
【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料Find Job Startup
 
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料Find Job Startup
 
BASE_プレゼン用サービス説明資料
BASE_プレゼン用サービス説明資料BASE_プレゼン用サービス説明資料
BASE_プレゼン用サービス説明資料Find Job Startup
 
創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」Find Job Startup
 
メルカリ_サービス説明資料
メルカリ_サービス説明資料メルカリ_サービス説明資料
メルカリ_サービス説明資料Find Job Startup
 
ストリートアカデミー_ローンチ前企画書
ストリートアカデミー_ローンチ前企画書ストリートアカデミー_ローンチ前企画書
ストリートアカデミー_ローンチ前企画書Find Job Startup
 

Destaque (15)

恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男恐怖!シェルショッカー1号男
恐怖!シェルショッカー1号男
 
TeX vs Wordの不毛な争い
TeX vs Wordの不毛な争いTeX vs Wordの不毛な争い
TeX vs Wordの不毛な争い
 
【企画書】ReceReco:新規事業討議用社内資料
【企画書】ReceReco:新規事業討議用社内資料【企画書】ReceReco:新規事業討議用社内資料
【企画書】ReceReco:新規事業討議用社内資料
 
P2 P 奨学金プロジェクト Ver3 5
P2 P 奨学金プロジェクト Ver3 5P2 P 奨学金プロジェクト Ver3 5
P2 P 奨学金プロジェクト Ver3 5
 
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
【企画書】UIscope:MOVIDA JAPAN_Demo Day用資料
 
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
T TIME 滞在時間割キャンペーン(第4回販促会議企画コンペティション)
 
PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料PIXTA_シードラウンド用事業プラン説明資料
PIXTA_シードラウンド用事業プラン説明資料
 
【企画書】チャットワーク:社内検討用資料
【企画書】チャットワーク:社内検討用資料【企画書】チャットワーク:社内検討用資料
【企画書】チャットワーク:社内検討用資料
 
Cyta.jp_サービスEC説明資料
Cyta.jp_サービスEC説明資料Cyta.jp_サービスEC説明資料
Cyta.jp_サービスEC説明資料
 
【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料
 
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
 
BASE_プレゼン用サービス説明資料
BASE_プレゼン用サービス説明資料BASE_プレゼン用サービス説明資料
BASE_プレゼン用サービス説明資料
 
創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」創業時の「nanapiのナマ企画書」
創業時の「nanapiのナマ企画書」
 
メルカリ_サービス説明資料
メルカリ_サービス説明資料メルカリ_サービス説明資料
メルカリ_サービス説明資料
 
ストリートアカデミー_ローンチ前企画書
ストリートアカデミー_ローンチ前企画書ストリートアカデミー_ローンチ前企画書
ストリートアカデミー_ローンチ前企画書
 

Semelhante a 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト

AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?Masamitsu Maehara
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習x1 ichi
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用純生 野田
 
TerraformでECS+ECRする話
TerraformでECS+ECRする話TerraformでECS+ECRする話
TerraformでECS+ECRする話Satoshi Hirayama
 
cocos2d-xハンズオン勉強会 in 名古屋
cocos2d-xハンズオン勉強会 in 名古屋cocos2d-xハンズオン勉強会 in 名古屋
cocos2d-xハンズオン勉強会 in 名古屋Tomoaki Shimizu
 
Twitterのデータを取得する準備
Twitterのデータを取得する準備Twitterのデータを取得する準備
Twitterのデータを取得する準備Takeshi Arabiki
 
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!Tomoaki Shimizu
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう Shuhei Iitsuka
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kKenji Aoyama
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
Unity C#3からC#6に向けて
Unity C#3からC#6に向けてUnity C#3からC#6に向けて
Unity C#3からC#6に向けてonotchi_
 
Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Tomoaki Shimizu
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asioTakatoshi Kondo
 
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Recruit Technologies
 
Firefox DevTools
Firefox DevToolsFirefox DevTools
Firefox DevToolsdynamis
 
Oculus Quest 2 on Mixed Reality Toolkit V2.5.0~ ハンドトラッキングする方法 ~
Oculus Quest 2 on Mixed Reality Toolkit V2.5.0~ ハンドトラッキングする方法 ~Oculus Quest 2 on Mixed Reality Toolkit V2.5.0~ ハンドトラッキングする方法 ~
Oculus Quest 2 on Mixed Reality Toolkit V2.5.0~ ハンドトラッキングする方法 ~Takahiro Miyaura
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSTomoki Hasegawa
 

Semelhante a 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト (20)

SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
 
TerraformでECS+ECRする話
TerraformでECS+ECRする話TerraformでECS+ECRする話
TerraformでECS+ECRする話
 
cocos2d-xハンズオン勉強会 in 名古屋
cocos2d-xハンズオン勉強会 in 名古屋cocos2d-xハンズオン勉強会 in 名古屋
cocos2d-xハンズオン勉強会 in 名古屋
 
Twitterのデータを取得する準備
Twitterのデータを取得する準備Twitterのデータを取得する準備
Twitterのデータを取得する準備
 
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88k
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
Unity C#3からC#6に向けて
Unity C#3からC#6に向けてUnity C#3からC#6に向けて
Unity C#3からC#6に向けて
 
Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
 
Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築Dockerを活用したリクルートグループ開発基盤の構築
Dockerを活用したリクルートグループ開発基盤の構築
 
Firefox DevTools
Firefox DevToolsFirefox DevTools
Firefox DevTools
 
Oculus Quest 2 on Mixed Reality Toolkit V2.5.0~ ハンドトラッキングする方法 ~
Oculus Quest 2 on Mixed Reality Toolkit V2.5.0~ ハンドトラッキングする方法 ~Oculus Quest 2 on Mixed Reality Toolkit V2.5.0~ ハンドトラッキングする方法 ~
Oculus Quest 2 on Mixed Reality Toolkit V2.5.0~ ハンドトラッキングする方法 ~
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
 

恐怖!シェルショッカーの POSIX原理主義シェルスクリプト