SlideShare a Scribd company logo
1 of 51
秀スクリプトの話
徳丸 浩
徳丸浩の自己紹介
• 経歴
– 1985年 京セラ株式会社入社
– 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍
– 2008年 KCCS退職、HASHコンサルティング株式会社(現社名:EGセキュアソリューションズ株式会社)設立
• 経験したこと
– 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当
– その後、企業向けパッケージソフトの企画・開発・事業化を担当
– 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当
Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿などを開始
– 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立ち上げ
• 現在
– EGセキュアソリューションズ株式会社 代表 https://www.eg-secure.co.jp/
– 独立行政法人情報処理推進機構 非常勤研究員 https://www.ipa.go.jp/security/
– 著書「体系的に学ぶ 安全なWebアプリケーションの作り方」(2011年3月)
「徳丸浩のWebセキュリティ教室 」(2015年10月)
– 技術士(情報工学部門)
2
なぜ秀スクリプトを作ろうと思ったか?
• テキストエディタとして普段秀丸を使っているのですが…
• なんとなく、秀丸のことを見下されているような気がするわけですよ
– 気のせいかもしれないけど
• vimは賞賛されるのに、秀丸は賞賛されない、この違いはなんだ…
• vim にはVim Scriptがあるが、秀丸には秀丸スクリプトがない…
– 秀丸マクロならあります
• ないなら作ってしまえ、格好いいやつを…
• それが、私の、秀丸愛の証明だ…
• (うっそー、と思われたかもしれませんが、これが本当の理由です)
3
言語処理系とわたし
• 実は若い頃からコンパイラ作りを趣味としていた
• 代表作は Pascal コンパイラ Cabezon (カベソン)
– Cabezon 自体でコンパイラが記述され、自身をコンパイルできる
– MS-DOS上で動作
– MASM 等のアセンブリ言語を生成
– 自分自身の記述のみを目標においていたので、「実用」は考えていなかった
– しかし、いくつかの大学で Pascal演習用に使われたらしい
• Cabezon使ってましたという方にお会いしたことも…
– 東欧でも、「マシンパワーが貧弱でも動くPascalコンパイラ」として教育機関
で使われたらしい(お礼のメールから)
– (もう少しちゃんと作っておけば)
• お仕事でも、JavaScriptに似たGreenScriptという処理系を作った経験
4
秀丸マクロのサンプル
#n=1; // コメント形式1 #で始まる識別子は数値型変数
while (#n <= 10) { /* コメント形式2 while や if が使える */
call fib #n; // 関数・サブルーチンは call で呼び出す
insert str(##return) + "n"; // 関数の戻り値は、##return あるいは $$return
#n = #n + 1;
}
endmacro // マクロを停止する。これがないと関数の中身に突っ込む
fib: // 関数 fib の定義
if (##1 <= 2) { // ##1 は一番目の引数(数値)
return 1;
}
call fib ##1 - 2; // 再帰呼び出しが可能
##temp = ##return; // 戻り値を覚えておく。## で始まる識別子は数値型ローカル変数
call fib ##1 - 1;
return ##temp + ##return; // return 式; で値を返す
5
秀丸マクロのイケテナイ点
• 全体的に独自仕様が強く、いかにも昔のマクロという感じ
• 変数に型があり、一文字が $ か # で決まる
• 関数の戻り値を疑似変数 $$return または ##return で受けとる
• 変数の宣言は必要ないので、変数名をタイプミスすると、わかりづら
いバグの原因となる
• サブルーチン・関数はただのラベルなので、上から「なだれ込む」
• 組み込みのサブルーチンは「文」と呼ばれ、ユーザー定義のサブルー
チンと呼び出し方が違う
• 組み込みの関数は、値をダイレクトに受け取れる
• サブルーチンの呼び出しネストが最大20までと厳しい
6
関数の戻り値を疑似変数 $$return または ##return で受けとる
• 以下のように書きたいが書けない
while (foo() > 0) {
// 色々な処理
}
• こうなる(辛い)
call foo;
while (##return > 0) {
// 色々な処理
call foo;
}
7
目標を決める
• 少なくとも外見上は、今風の言語仕様に見えること
• 当初は以下の目標を考えていたが…
– 秀丸マクロを生成するトランスパイラ型の処理系
– コンパイラ自体は秀丸マクロで記述
• 秀丸マクロで開発は辛い…
• 自分自身が書けると格好良い
• なので、以下を目標とする
– 秀丸マクロを生成するトランスパイラ型の処理系
– 秀スクリプト自身で自分自身を記述できる
8
ブートストラップ方針
• 一般に言語Aの処理系を言語A自体で開発するためには、「最初はどう
するのだ」という、鶏が先か卵が先かというジレンマが生じる
– ブートストラップ問題という
• 考えられる方法は以下の2つ…
A) 秀スクリプトを既存言語のサブセットとして定義し、その既存言語のコンパ
イラでコンパイルする
B) 最初は秀丸マクロでコンパイラを書き、次に秀スクリプトでコンパイラを書
き直す
• B)案はめんどうなので、A)案を採用
• だが、既存言語(以下、親言語と記載)として何を選ぶか?
9
親言語を決める
• 秀スクリプトの記述言語(親言語)として何を選択するか?
• 求められる条件は下記の通り
– 親言語は、秀スクリプトのスーパーセットになるので、親言語を決めることは、
秀スクリプトの言語仕様を決めることに近い
– 秀丸マクロを生成することから、秀丸マクロと極端に異なるパラダイムの言語
は選択しにくい
– 秀丸マクロは変数に型があるので、親言語も変数に型があるものが望ましい
– グローバル変数を多用せざるを得ないのでグローバル変数が使いやすいもの
– Windows上のコンソールアプリケーションが開発できるもの
• 変数に型があるスクリプト言語ということで、TypeScriptを採用
– それまでTypeScriptもnode.jsも書いたことはなかったw
10
秀スクリプトの言語仕様
• TypeScriptに似た言語仕様を持つ…と言っても高度な機能はないので、
昔のBASIC程度の機能
• 変数、関数の宣言時には型を直接または間接に指定すること
var x: number; // 明示的な型指定
var s: string; // 同上
var a = x + 1; // 間接的な型指定(型推論?)
function factorial(x: number) : number { … } // 関数定義
• 数値(整数)型と文字列型、これらの配列をサポート
• if、while、do … whileの制御構造
• 関数のサポート
11
Demo
秀スクリプトコンパイラをコンパイルしてみる
1. node.js で
2. 秀丸で
12
配列について
• 数値型と文字列型配列が可能
var a1 : number[]; // 整数型の配列変数
var a2 : number[] = new Array(); // 同上
// TypeScriptとしても動作させたい時はこの記述とする
var a3 : string[]; // 文字列の配列変数
var a4 : string[] = new Array(); // 同上
// TypeScriptとしても動作させたい時はこの記述とする
• = new Array() はTypeScriptとの互換性のために用意していて、秀
スクリプトコンパイラは単に読み捨てる
• 配列の添字は整数のみで、文字列を添え字とする配列(連想配列)は
ない
13
Inside 秀スクリプト(1) 構文解析
• 手書きコンパイラの構文解析は、再帰下降型が主流…かと
• EBNF (拡張バッカスナウアーフォーム)をそのままプログラミング
• 掛け算と足し算のみの文法の構文解析の例
14
primary : Identity
| number
multiply : primay { "*" primary }
add : multiply { "+" multiply }
function primary() {
if (sym == IDENT) {
getsym();
return identity;
} else if (sym == NUMBER) {
getsym();
return number;
} else
error();
}
function multiply() {
primary();
while (sym == "*") {
getsym();
primary();
}
}
function add() {
multiply();
while (sym == "+") {
getsym();
multiply();
}
}
JavaScript(TypeScript)は演算子の優先順位が複雑…
15
演算子の種類 対応する演算子
メンバ . []
インスタンスの呼び出し/作成 () new
否定/インクリメント ! ~ - + ++ -- typeof void delete
乗算/除算 * / %
加算/減算 + -
ビットシフト << >> >>>
関係 < <= > >= in instanceof
等値 == != === !==
ビット論理積 &
ビット排他的論理和 ^
ビット論理和 |
論理積 &&
論理和 ||
条件 ?:
代入 = += -= *= /= %= <<= >>= >>>= &= ^= |=
コンマ ,
演算子の優先順位が複雑だと関数の呼び出しネストも深くなる
logicalOrExpression
logicalAndExpression
bitwiseOrExpression
bitwiseXorExpression
bitwiseAndExpression
equalityExpression
relationalExpression
shiftExpression
additiveExpression
multiplicativeExpression
unaryExpression
primaryExpression
16
これは、
やっておれん
式の構文解析に演算子順位構文解析を併用する
• 演算子順位構文解析とは、演算子の優先順位を元にテーブル駆動で構
文解析する手法
• 教科書的にはこんな表を使うが…
• 秀スクリプトでは2次元データ構造は難しいので1次元にしたい
• 簡単にするため、2項演算子のみ演算子順位構文解析を使うことに
17
秀スクリプトの演算子順位表
operators[0] = "!"; opPriority[0] = 2; hidePriority[0] = "5";
operators[1] = "*"; opPriority[1] = 3; hidePriority[1] = "1";
operators[2] = "/"; opPriority[2] = 3; hidePriority[2] = "1";
operators[3] = "%"; opPriority[3] = 3; hidePriority[3] = "1";
operators[4] = "+"; opPriority[4] = 4; hidePriority[4] = "2";
operators[5] = "-"; opPriority[5] = 4; hidePriority[5] = "2";
operators[6] = "<"; opPriority[6] = 5; hidePriority[6] = "3";
operators[7] = "<="; opPriority[7] = 5; hidePriority[7] = "3";
operators[8] = ">"; opPriority[8] = 5; hidePriority[8] = "3";
operators[9] = ">="; opPriority[9] = 5; hidePriority[9] = "3";
operators[10] = "=="; opPriority[10] = 6; hidePriority[10] = "3";
operators[11] = "!="; opPriority[11] = 6; hidePriority[11] = "3";
operators[12] = "&"; opPriority[12] = 7; hidePriority[12] = "1";
operators[13] = "^"; opPriority[13] = 8; hidePriority[13] = "1";
operators[14] = "|"; opPriority[14] = 9; hidePriority[14] = "1";
operators[15] = "&&"; opPriority[15] = 10; hidePriority[15] = "4";
operators[16] = "||"; opPriority[16] = 11; hidePriority[16] = "4";
18
演算子順位構文解析の様子(初期状態)
19
5
4
3
2
1
0
a * b + c * d
スタック(空)
演算子順位構文解析の様子(a をプッシュ)
20
5
4
3
2
1
0 #a
a * b + c * d
スタック
演算子順位構文解析の様子(* b をプッシュ)
21
5
4
3
2 #b
1 *
0 #a
a * b + c * d
スタック
スタックトップと次の演算子の優先順位を比較
22
5
4
3
2 #b
1 *
0 #a
a * b + c * d
演算子の優先順位を比較
→乗算の方が優先なので還元処理
スタック
演算子順位構文解析の様子(還元処理)
23
5
4
3
2
1
0 (#a*#b)
a * b + c * d
スタック
演算子順位構文解析の様子( + c をプッシュ)
24
5
4
3
2 #c
1 +
0 (#a*#b)
a * b + c * d
スタック
スタックトップと次の演算子の優先順位を比較
25
5
4
3
2 #c
1 +
0 (#a*#b)
a * b + c * d
演算子の優先順位を比較
→乗算の方が優先なので還元しない
スタック
演算子順位構文解析の様子( * d をプッシュ)
26
5
4 #d
3 *
2 #c
1 +
0 (#a*#b)
a * b + c * d
式の処理が終わったので、この後は
スタックの中身を還元処理していく
スタック
演算子順位構文解析の様子(スタックトップを還元処理)
27
5
4 #d
3 *
2 #c
1 +
0 (#a*#b)
a * b + c * d
5
4
3
2 (#c*#d)
1 +
0 (#a*#b)
還元
スタック スタック
演算子順位構文解析の様子(スタックトップを還元処理)
28
5
4
3
2 (#c*#d)
1 +
0 (#a*#b)
a * b + c * d
5
4
3
2
1
0 ((#a*#b)+(#c*#d))
還元
スタック スタック
生成コードが括弧だらけになるのはちょっといや
• 人が見るソースではないので「気にしない」という選択はあり
• 僕はいやだった
• 秀スクリプト(TypeScript)と秀丸マクロは式の優先順位が異なる
• a * b | c * d は、 #a * #b | (#c * #d) とコンパイルするのが望ましい
29
式の意味解析とデータ形式
• 意味解析とコード生成では、式のコンパイル結果をデータとして保持
する必要がある
– ツリーなどの形式が一般的だが
– 秀スクリプトは構造体的なものがないので苦しい
• 以下の文字列形式とした( a*b+c/d のコード)
30
2nR#a*#b+#c/#d
トップレベル演算子の優先順位
このケースは加算で 2
式の型
n: 数値型
s: 文字列型
N: 数値配列
S: 文字列配列
左辺値または右辺値
L: 左辺値
R: 右辺値
秀丸マクロ形式の式
+
* /
#a #b #c #d
秀丸マクロのいやらしいところ
特に注意!
「!」の優先順位が「||」や「&&」と同じなので、例えば
if( #a || !#b)
if( !#a || #b)
のような表記はうまくいきません。このような表記は、
if( #a || (!#b) )
if( (!#a) || #b )
のように記述する必要があります。それと、「||」と
「&&」の優先順位も同じになってしまってるので、例えば
if( #a || #b && #c )
のような表記もC言語とは意味が違ってしまいます。このような表記は、
if( #a || ( #b && #c ) )
のように、必要な箇所をカッコで囲むなどして優先順位をはっきりさせるのがお勧めです。
31
この式は、実行時警告が表示される(うざい)
秀丸マクロのヘルプより引用
2項演算子のコード生成
function genBianryOp(code1: string, op: string, code2: string): string {
var bopPriority = getHidePriority(op); // 演算子の優先順位
var priority1 = getCodePriority(code1);
var type1 = getCodeType(code1);
code1 = getCodeBody(code1);
var priority2 = getCodePriority(code2);
var type2 = getCodeType(code2);
code2 = getCodeBody(code2);
var etype = checkBinOpType(op, type1, type2); // 式の型
if (priority1 > bopPriority || ((priority1 == "4") && (bopPriority == "4")) )
code1 = "(" + code1 + ")";
if (priority2 >= bopPriority)
code2 = "(" + code2 + ")";
return bopPriority + etype + "R" + code1 + op + code2;
}
32
第1オペランドの優先順位、型、式の中身
第2オペランドの優先順位、型、式の中身
秀丸の「いやらしいところ」
の対処として括弧をつける
関数の前方参照
• JavaScriptやTypeScriptは、関数の前方参照ができる
– まだ関数が定義されていない状態で関数を呼び出せる
foo(); // 関数の呼び出し…この段階ではまだ関数は定義されていない
….
function foo() { … } // 関数の定義
• 秀スクリプトはワンパスコンパイラなので、前方参照は難しい
33
// エラーになる例
function bar() {
var x = foo(3); // この段階では foo()が未定義なのでエラーになる
}
// ...
function foo(x: number): number { ... } // 関数fooの定義
bar();
関数の前方参照…関数の前方宣言の導入
• TypeScriptと秀スクリプトのつじつまを合わせる形で、関数の前方宣
言をサポートした
34
// アロー演算子を使って関数の前方宣言を行う
var foo: (x: number) => number;
function bar() {
var x = foo(3); // 前方宣言があるのでエラーにならない
}
// ...
foo = function (x: number): number { ... } // 関数fooの定義
bar(); // bar()経由でfoo()を呼び出す
コード生成の例
• 以下の秀スクリプトは
function foo():number { }
while (foo() > 0) { }
• 以下のようにコンパイルされる
goto _end_foo
foo:
// ここに関数の中身
return 0;
_end_foo:
goto _LL1
_LL0:
// ここにループの中身
_LL1: // continue用ラベル
call foo ;#_0=##return; // 関数を呼び出し、一次変数 #_0 に受ける
if (#_0>0) goto _LL0 // 秀丸マクロにも while はあるが一次変数を使うためにgotoで
_LL2: // break用ラベル
35
TypeScriptと秀スクリプトの両方でコンパイルする工夫
• 秀スクリプトはTypeScriptと互換性があるので、コンパイラはどちら
でもコンパイルできるようにしたい
• できるだけTypeScriptと秀スクリプトの共通部分でコンパイラを書く
• しかし、各処理系固有の記述も現実には必要になる
• 同一ソースで、どうやって処理を切り替えるか?
• TypeScriptには条件付きコンパイルはないようだし…
36
TypeScript 秀スクリプト
できるだけTypeScriptと秀スクリプトの
共通部分でコンパイラを書く
TypeScriptと秀スクリプトの両方でコンパイルする工夫
37
• 以下のようにした
if (version() > 0) { // version()は秀丸マクロでは 正の値を返す
… // 秀スクリプト固有の処理
}
//EOF //EOFは秀スクリプトのEOFであり、これ以降を無視する
… // TypeScript 固有の処理 (TypeScript は //EOF を無視する)
… // この内容は秀スクリプト処理系は見ないので好きに書ける
// version()の定義。TypeScriptは関数の前方参照が可能
// TypeScriptとして動かした場合、version()は 0 を返すように定義
function version() : number {
return 0;
}
サブルーチンのネスト制限問題(1)
• 秀丸マクロには、サブルーチンのネスト回数の厳しい制限がある
– callされたサブルーチンからさらにサブルーチンを呼ぶこともできます。最高
20回程度重複可能です。
• 20ネストで十分と思うでしょ? 再帰下降型構文解析だと苦しいのよ
• 色々試みたがギブアップ
38
サブルーチンのネスト制限問題(2)
• 秀シリーズサポートフォーラムでお願いしてみた
• ockeghem さん
…「callされたサブルーチンからさらにサブルーチンを呼ぶこともできます。最高20回程度重複可
能です。」という制限にひっかかってしまい、関数呼び出しの三重にネストした程度の式でエ
ラーになってしまいます。
他ではあまりニーズはないことと思うので恐縮ではあるのですが、この 20回という制限を緩和し
てはいただけないでしょうか?
• 秀丸担当さん
サブルーチンのネストの上限は確かに20回の制限があります。
無制限にするとしたらプロセスをまたぐなどの都合があって面倒になるのですが、単純に上限の
数を増やすだけであれば簡単な修正でできると思います。
別言語からマクロを生成するというのはすごいですね。
三重ネストで20回消費するようなマクロが生成されるということだとしたら、約7倍(140回)以上
あればいいでしょうか。
それでよければ140回か、きりのいいところで200回くらいにしてみようかと思います。
39
http://www.maruo.co.jp/hidesoft/1/indexg.html より引用
秀スクリプトのコンパイル・実行方法
(1) TypeScript+Node.jsとして実行する
– hidescript.ts をTypeScriptコンパイラによりコンパイルする。hidescript.jsが生成される
– hidescript.js をNode.js上で実行する
C:> node hidescript.js foo.hs
– foo.mac ができるので、秀丸で実行する
※ 環境変数 hidemacrodirに秀丸マクロ用フォルダ名をセットしておくと、
そのフォルダにfoo.macが書き込まれます。
(2)秀丸マクロとして実行する
– hidescript.mac を hs.mac にリネームして秀丸上でマクロ登録しておく
– foo.hsを秀丸で開く
– ショートカットキー等によりhs.macを実行する
– foo.macのウィンドウが開き、コンパイル結果が挿入、保存される
– foo.macをショートカット等で実行する
40
テストについて
41
当初、テストはなかった (ぼそっ)
42
,、,,,、,,,
_,,;' '" '' ;;,,
(rヽ,;''""''゛゛;,ノr)
,; i ___ 、___iヽ゛;, テスト書いてないとかお前それ@t_wadaの前でも同じ事言えんの?
,;'''|ヽ・〉〈・ノ |゙ ';,
,;''"| ▼ |゙゛';,
,;'' ヽ _人_ / ,;'_
/シ、 ヽ ⌒⌒ / リ \
| "r,,`"'''゙´ ,,ミ|
| リ、 ,リ |
| i ゛r、ノ,,r" i _ |
| `ー――-----------v ⌒´ )
(ヽ _____________ ,, _´)
(_⌒_______________ ,, ィ
T |
| |
43
すっ、すまん…儂が悪かった
44
テストを書くにはどうしたらよいか?
• 秀スクリプトはNode.js上で動くので、Node.jsに対応したテストシス
テムを使えば良いが…
• 実機テストとしては秀丸を起動しないといけない
• 秀丸上でコンパイル、実行結果などを把握する必要がある
• 既存のテストシステムでもやりようはあるのだろうけど、調べるのが
面倒くさい
• 作ってしまえ
45
秀スクリプト・テストシステムの概要(1)
ディレクトリ構成
hs-test hs-test.js hs-test.cmd が置かれている
|
+-- Test テストコード
|
+-- TestRef テストの基準データ
|
+-- TestResult テスト結果(hs-testが生成する)
起動方法
起動には、同梱の hs-test.cmd を用います。
C>hs-test [テストファイル名 ...]
テストファイル名は省略可能で、省略した場合は、Test フォルダ内の全ての .hst ファイルがテストされ
ます。
46
秀スクリプト・テストシステムの概要(2)
テストファイルの構成
テストコード(拡張子は .hst)は、秀スクリプトのコードに以下のテスト指令を追加したものです。
//status=0 または 1 [省略不可; コンパイラのステータス 正常:0 エラー:1]
//message=メッセージ [省略可; コンパイラのエラーメッセージ]
//diff=1 [省略可; diff=1 の場合、コンパイル結果をTestRefフォルダ下の .macファイルと比較する]
//exec=1 [省略可; diff=1 の場合、秀丸マクロの実行結果をTestRefフォルダ下の .outファイルと比較]
//expected=1 [省略可; expected=1 の場合、予定されたエラーであることを示す]
//
秀スクリプトのコード
テストの例
//message=breakできません
//status=1
//
if (1) {
break;
}
insertln("done");
quit();
47
テスト・システムは作って本当によかった
• 自分自身をコンパイルできるとは言え、それは正常系が一応動くとい
うこと
• コンパイラは、異常系の処理(構文エラー、意味的なエラー)の処理
が割合としては多い
• テストも、異常系のテストが多い
• テストを作成して動かしてみると、多くのバグが見つかった
• @t_wada さんに感謝
48
Demo
49
まとめ
• TypeScriptに似た文法を持ち、秀丸マクロを生成する「秀スクリプ
ト」という言語処理系を作成した
• 秀スクリプトは秀スクリプト自身で記述されており、(やろうと思え
ば)秀丸上で自分自身をコンパイル可能…
– ただし、すごく遅い… Node.js の 3000倍くらい遅い!
• 秀スクリプトは、秀丸マクロの制限からデータ構造が弱く、コンパイ
ラ開発は苦労した
– 昔のBASICでコンパイラを書く気分
– …がそれが楽しいともw
• 秀スクリプトが完成した時点で満足してしまって、秀スクリプトの応
用例が少ない…が、今後頑張りますw
50
謝辞
秀スクリプトの開発にあたり、秀丸マクロのサブルーチンのネスト回数
が20回までという制限が厳しく、サポートフォーラムにて制限の緩和を
要望したところ、200回までに緩和いただきました。この仕様緩和で、
秀スクリプトを秀丸上でコンパイルできるようになりました。ご担当い
ただいた「秀丸担当」様、サイトー企画様にあつくお礼申し上げます。
ありがとうございました。
51

More Related Content

What's hot

セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くHiroshi Tokumaru
 
Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門Hiroshi Tokumaru
 
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則Hiroshi Tokumaru
 
今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010Hiroshi Tokumaru
 
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
 Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編) Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)Hiroshi Tokumaru
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)Hiroshi Tokumaru
 
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようHiroshi Tokumaru
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011Hiroshi Tokumaru
 
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門Hiroshi Tokumaru
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかHiroshi Tokumaru
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまでHiroshi Tokumaru
 
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりHiroshi Tokumaru
 
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせphpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせHiroshi Tokumaru
 
安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013Hiroshi Tokumaru
 
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったかHiroshi Tokumaru
 
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかWebアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかHiroshi Tokumaru
 
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みHiroshi Tokumaru
 
とある診断員とSQLインジェクション
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクションzaki4649
 
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~Hiroshi Tokumaru
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014Hiroshi Tokumaru
 

What's hot (20)

セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
 
Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門Railsエンジニアのためのウェブセキュリティ入門
Railsエンジニアのためのウェブセキュリティ入門
 
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
 
今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010今日こそわかる、安全なWebアプリの作り方2010
今日こそわかる、安全なWebアプリの作り方2010
 
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
 Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編) Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
 
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみようデバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
 
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
 
ウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かりウェブセキュリティの最近の話題早分かり
ウェブセキュリティの最近の話題早分かり
 
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせphpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
 
安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013
 
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
 
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかWebアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいか
 
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試み
 
とある診断員とSQLインジェクション
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクション
 
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
 

Similar to 秀スクリプトの話

Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングTanUkkii
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験Toshio Ehara
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門伸男 伊藤
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 
知って得するC#
知って得するC#知って得するC#
知って得するC#Shota Baba
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perlJiro Nishiguchi
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチTomoharu ASAMI
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編陽平 山口
 
Enumはデキる子 ~ case .Success(let value): ~
 Enumはデキる子 ~ case .Success(let value): ~ Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~Takaaki Tanaka
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_publicKazuaki Ishizaki
 

Similar to 秀スクリプトの話 (20)

Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験
 
Processing
ProcessingProcessing
Processing
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
知って得するC#
知って得するC#知って得するC#
知って得するC#
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
Write good parser in perl
Write good parser in perlWrite good parser in perl
Write good parser in perl
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
 
Enumはデキる子 ~ case .Success(let value): ~
 Enumはデキる子 ~ case .Success(let value): ~ Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 

More from Hiroshi Tokumaru

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するHiroshi Tokumaru
 
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証するHiroshi Tokumaru
 
徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入するHiroshi Tokumaru
 
introduction to unsafe deserialization part1
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1Hiroshi Tokumaru
 
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方Hiroshi Tokumaru
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題Hiroshi Tokumaru
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)Hiroshi Tokumaru
 
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座Hiroshi Tokumaru
 
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうHiroshi Tokumaru
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Hiroshi Tokumaru
 

More from Hiroshi Tokumaru (11)

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
 
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
 
徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する徳丸本VMに脆弱なWordPressを導入する
徳丸本VMに脆弱なWordPressを導入する
 
introduction to unsafe deserialization part1
introduction to unsafe deserialization part1introduction to unsafe deserialization part1
introduction to unsafe deserialization part1
 
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
 
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
 
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
 
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介
 

Recently uploaded

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

秀スクリプトの話