SlideShare una empresa de Scribd logo
1 de 240
Descargar para leer sin conexión
NPCA 合宿講義
2014年夏合宿
アジェンダ
• Linuxをさわってみよう
• Webサーバーを構築してみよう
• Webサーバーを作ってみよう
Linuxをさわってみよう
Linuxとは
• カーネル / オペレーティングシステムの1つ
• Open Source Software 
• だれでも自由に使える
• Linus Torvaldsが1991年から開発を始めた
Linuxディストリビューション
• Linuxをベースとして様々なソフトウェアをまとめたもの
• Linuxカーネル + デスクトップシステムなど
• Androidもディストリビューションの1つという場合もある
Linuxディストリビューション
• Debian
• Debian, Ubuntu, KNOPPIX, ...
• Red Hat Enterprise Linux (RHEL)
• Fedora, CentOS, Scientific Linux, ...
• Gentoo Linux,Arch Linux, ...
今回使う環境
• Ubuntu Server 14.04 64 bit 
• Amazon EC2 t2.micro 
• RAM: 8GB 
• Tokyo Region
SSHをしてみよう
• IP Addresses: http://goo.gl/mCPZSR 
• Username: ubuntu 
• SSH Private Key: http://goo.gl/1mz2Ns 
• Download Credential: npca / ab728b6e
SSHをしてみよう
• Windows 
• Putty → めんどくさいのでPoderosa / TeraTermをいれてください
SSHをしてみよう
• Windows 
• TeraTerm 
SSHをしてみよう
• Windows 
• Poderosa 
SSHをいれてみよう
• Linux / Mac OS X 
• chmod 400 d1ceb583620732b5ff2a037ac2a9e4d6.pem 
• ssh -i d1ceb583620732b5ff2a037ac2a9e4d6.pem ubuntu@<ip addr>
シェルを使ってみよう
• シェルとは
• 様々なプログラム(コマンド)へのインターフェース
• プログラマブル
シェルを使ってみよう
• Linuxでの操作は基本的にシェルをベースにしたもの
• ファイル操作
• 設定変更
• プログラミング
シェルを使ってみよう
• bash (バッシュ)
• 様々なLinuxディストリビューションで使われているシェル
• 今回の環境でもbashが使われている
• 他にもcsh, zshなど
基本コマンドを覚えよう
• 基本コマンドを覚えよう
• これが使えないとなにもできない
基本コマンドを覚えよう
• はじめに - 様々なエイリアス
• . - 現在いるディレクトリを表す
• .. - 現在いるディレクトリの1つ上のディレクトリを表す
• ~ - ホームディレクトリを表す
基本コマンドを覚えよう
• ls - list directory contents 
• ls <ディレクトリ名 / ファイル名>
• ディレクトリの中身を一覧表示
基本コマンドを覚えよう
• ls - list directory contents 
• オプション
• -a .で始まるファイルも表示
• -l 詳細表示
• -h ファイルサイズをわかりやすく表示
基本コマンドを覚えよう
• ls - list directory contents 
• ls -alh ~
total 28K
drwxr-xr-x 4 ubuntu ubuntu 4.0K Aug 14 15:41 .
drwxr-xr-x 3 root root 4.0K Aug 14 15:33 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 9 01:03 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.6K Apr 9 01:03 .bashrc
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:41 .cache
-rw-r--r-- 1 ubuntu ubuntu 675 Apr 9 01:03 .profile
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:33 .ssh
基本コマンドを覚えよう
• ls - list directory contents 
• ls -alh ~
total 28K
drwxr-xr-x 4 ubuntu ubuntu 4.0K Aug 14 15:41 .
drwxr-xr-x 3 root root 4.0K Aug 14 15:33 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 9 01:03 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.6K Apr 9 01:03 .bashrc
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:41 .cache
-rw-r--r-- 1 ubuntu ubuntu 675 Apr 9 01:03 .profile
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:33 .ssh
ディレクトリかどうか
基本コマンドを覚えよう
• ls - list directory contents 
• ls -alh ~
total 28K
drwxr-xr-x 4 ubuntu ubuntu 4.0K Aug 14 15:41 .
drwxr-xr-x 3 root root 4.0K Aug 14 15:33 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 9 01:03 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.6K Apr 9 01:03 .bashrc
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:41 .cache
-rw-r--r-- 1 ubuntu ubuntu 675 Apr 9 01:03 .profile
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:33 .ssh
ファイルサイズ
基本コマンドを覚えよう
• ls - list directory contents 
• ls -alh ~
total 28K
drwxr-xr-x 4 ubuntu ubuntu 4.0K Aug 14 15:41 .
drwxr-xr-x 3 root root 4.0K Aug 14 15:33 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 9 01:03 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.6K Apr 9 01:03 .bashrc
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:41 .cache
-rw-r--r-- 1 ubuntu ubuntu 675 Apr 9 01:03 .profile
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:33 .ssh
最終更新日時
基本コマンドを覚えよう
• ls - list directory contents 
• ls -alh ~
total 28K
drwxr-xr-x 4 ubuntu ubuntu 4.0K Aug 14 15:41 .
drwxr-xr-x 3 root root 4.0K Aug 14 15:33 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 9 01:03 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.6K Apr 9 01:03 .bashrc
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:41 .cache
-rw-r--r-- 1 ubuntu ubuntu 675 Apr 9 01:03 .profile
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:33 .ssh
ファイル / ディレクトリ名
基本コマンドを覚えよう
• ls - list directory contents 
• ls -alh ~
total 28K
drwxr-xr-x 4 ubuntu ubuntu 4.0K Aug 14 15:41 .
drwxr-xr-x 3 root root 4.0K Aug 14 15:33 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 9 01:03 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.6K Apr 9 01:03 .bashrc
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:41 .cache
-rw-r--r-- 1 ubuntu ubuntu 675 Apr 9 01:03 .profile
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:33 .ssh
所有ユーザー 所有グループ
ユーザーとグループとは
• ユーザーは1つ以上のグループに所属する
• 1つ1つのユーザーに対して細かく設定するのはめんどくさい
• ユーザーを1つにグループにまとめてやり
そのグループに対して設定を適用する
ユーザーとグループとは
• id - print real and effective user and group IDs 
• id <username> 
• ユーザのIDやそのユーザーが所属するグループを確認できる
ユーザーとグループとは
• id - print real and effective user and group IDs 
• id ubuntu
uid=1000(ubuntu) gid=1000(ubuntu)
groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),
29(audio),30(dip),44(video),46(plugdev),102(netdev)
ユーザーとグループとは
• id - print real and effective user and group IDs 
• id ubuntu
uid=1000(ubuntu) gid=1000(ubuntu)
groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),
29(audio),30(dip),44(video),46(plugdev),102(netdev)
ユーザー メイングループ
ユーザーとグループとは
• id - print real and effective user and group IDs 
• id ubuntu
uid=1000(ubuntu) gid=1000(ubuntu)
groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),
29(audio),30(dip),44(video),46(plugdev),102(netdev)
所属グループ
基本コマンドを覚えよう
• ls - list directory contents 
• ls -alh ~
total 28K
drwxr-xr-x 4 ubuntu ubuntu 4.0K Aug 14 15:41 .
drwxr-xr-x 3 root root 4.0K Aug 14 15:33 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 9 01:03 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.6K Apr 9 01:03 .bashrc
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:41 .cache
-rw-r--r-- 1 ubuntu ubuntu 675 Apr 9 01:03 .profile
drwx------ 2 ubuntu ubuntu 4.0K Aug 14 15:33 .ssh
パーミッション
パーミッション
• Permission - 許可,承認
• だれがどのリソース(ファイルやディレクトリなど)に
アクセスできるかを設定するもの
• セキュリティの最も基本となる部分
パーミッション
• 所有ユーザー,所有グループ,全員の3項目に対して設定できる
-rwxrw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
所有ユーザーに対するパーミッション
所有グループに対するパーミッション
その他全員に対するパーミッション
パーミッション
• 読み込み権限,書き込み権限,実行権限の3種類がある
-rwxrw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
読み込み許可
書き込み許可
実行許可 読み込み権限 = 4
書き込み権限 = 2
実行権限 = 1
として3桁の数で表すことも
この場合は741
パーミッション
• まとめると,この場合は
-rwxrw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• ユーザーubuntuは読み込み,書き込み,実行ができる
• グループadmに所属するユーザーは読み込み,書き込みができる
• その他のユーザーは読み込みができる
パーミッション
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• これを3桁の数字で表すと?
• このファイルに書き込みができるユーザーは誰?
パーミッション
• クイズ
-r-------- 1 ubuntu adm 220 Apr 9 01:03 file
• これを3桁の数字で表すと?
• このファイルに書き込みができるユーザーは誰?
パーミッション
• クイズ
-r-x--x-wx 1 ubuntu adm 220 Apr 9 01:03 file
• これを3桁の数字で表すと?
• このファイルに書き込みができるユーザーは誰?
基本コマンドを覚えよう
• touch - change file timestamps 
• touch <ファイル名> 
• タイムスタンプの変更とかあるけど
基本的に空のファイルを作るときにつかう
基本コマンドを覚えよう
• touch - change file timestamps 
• testという名前のファイルを作ってlsで確認してみよう
基本コマンドを覚えよう
• echo - display a line of text 
• echo <文字列> 
• 引数で与えた文字列を表示するだけの簡単なお仕事
リダイレクトを使ってみよう
• 基本的にコマンドの出力は表示されるだけ
• ファイルに保存したい時はどうする?
• リダイレクト!!!
リダイレクトを使ってみよう
• コマンド > 保存したいファイル名
• 簡単!
• コマンド >> 保存したいファイル名
• こうすると追記してくれる
リダイレクトを使ってみよう
• 逆にファイルから入力したい時はどうする?
• コマンド < 入力ファイル
• JOIなどで必ず使います!!
リダイレクトを使ってみよう
• echoを使ってtestの中身をhogehogeにしてみよう
• リダイレクトを使うと簡単
• でもどうやって確認しよう
基本コマンドを覚えよう
• cat - concatenate and print files 
• cat <ファイル名> 
• ファイルの中身を出力
基本コマンドを覚えよう
• cat - concatenate and print files 
• testの中身を出力してみよう
基本コマンドを覚えよう
• head - output the first part of files 
• head <ファイル名>
• ファイルの先頭10行を表示
基本コマンドを覚えよう
• head - output the first part of files 
• オプション
• -n <N> 始めのN行を表示 
基本コマンドを覚えよう
• head - output the first part of files 
• head -n 15 /var/log/kern.log 
• cat /var/log/kern.logをしてみると違いがわかるはず
• ちなみに/var/log/kern.logはカーネルが出力したメッセージ
基本コマンドを覚えよう
• tail - output the last part of files 
• tail <ファイル名>
• ファイルの末尾10行を表示
基本コマンドを覚えよう
• tail - output the last part of files 
• オプション
• -n <N> 最後のN行を表示
• -f ファイルを監視して,末尾に追記される度に出力
基本コマンドを覚えよう
• tail - output the last part of files 
• tail -f /var/log/auth.log 
• SSHでもう1接続してみると更新されているのがわかるはず
基本コマンドを覚えよう
• grep - print lines matching a pattern 
• grep <パターン> <ファイル名>
• ファイルの中からパターンにマッチするものを出力
• ファイル名が省略された場合は標準出力から読み込む
基本コマンドを覚えよう
• grep - print lines matching a pattern 
• 正規表現
• パターンに正規表現を使うことでより高度な検索が
• 例えば,IPアドレスの形式にマッチするものを検索とか
基本コマンドを覚えよう
• grep - print lines matching a pattern 
• grep ubuntu /var/log/auth.log 
• auth.logの中でubuntuという文字列を含む行だけ出力
パイプを使ってみよう
• grepはファイル名を省略したときは,標準入力から読み込む
• grep ubuntu < /var/log/auth.log 
• auth.logの先頭10行の中でubuntuという文字を含む
部分を抜き出したい時は?
パイプを使ってみよう
• さっきのheadとリダイレクトを使えばよさそう!
• head /var/log/auth.log > output_file 
• grep ubuntu output_file 
• grep ubuntu < output_file 
• 正解,でももっと簡単に
パイプを使ってみよう
• パイプを使ってみる
• head /var/log/auth.log | grep ubuntu 
• パイプ | を使うと,前のコマンドの出力が
そのまま次のコマンドの入力となる
パイプを使ってみる
• クイズ
• パイプを使って
• grep ubuntu /var/log/auth.logと同じ出力をする
• コマンドを実行してください
パイプを使ってみる
• 答え
• cat /var/log/auth.log | grep ubuntu 
基本コマンドを覚えよう
• cp - copy files and directories 
• cp <ファイル名> <新しいファイル名>
• ファイル / ディレクトリをコピーする
基本コマンドを覚えよう
• cp - copy files and directories 
• オプション
• -r ディレクトリのときはr(ecursive)オプションが必要
基本コマンドを覚えよう
• cp - copy files and directories 
• testファイルをtest_copyファイルにコピーしてみよう
基本コマンドを覚えよう
• mv - move (rename) files 
• mv <ファイル名> <新しいファイル名>
• ファイル / ディレクトリを移動する = ファイル名を変更する
基本コマンドを覚えよう
• mv - move (rename) files 
• testファイルをtest_newに名前を変更してみよう
基本コマンドを覚えよう
• rm - remove files or directories 
• rm <ファイル名>
• ファイル / ディレクトリを削除する
基本コマンドを覚えよう
• rm - remove files or directories 
• オプション
• -r ディレクトリのときはr(ecursive)オプションが必要
• -f 有無を言わさず消す!!
基本コマンドを覚えよう
• rm - remove files or directories 
• test_copyファイルを削除してみよう
基本コマンドを覚えよう
• chmod - change file mode bits 
• chmod <パーミッション> <ファイル名>
• ファイルのパーミッションを変更する
基本コマンドを覚えよう
• chmod - change file mode bits 
• オプション
• -r ディレクトリ以下のすべてのファイルを変更したい時は
 r(ecursive)オプションが必要
基本コマンドを覚えよう
• chmod - change file mode bits 
• パーミッションの表記
• 3桁の数字 - 755, 644とか
• 文字列で表記
基本コマンドを覚えよう
• chmod - change file mode bits 
• chmod u=rwx file 
• 所有ユーザーにrwx(読み込み,書き込み,実行)権限を付与
基本コマンドを覚えよう
• chmod - change file mode bits 
• chmod g+rx file 
• 所有グループに所属するユーザーに
いま与えられている権限 + rx(読み込み,実行)権限を付与
基本コマンドを覚えよう
• chmod - change file mode bits 
• chmod o-rx file 
• それ以外のユーザーに対して
いま与えられている権限からr(読み込み)権限を剥奪
基本コマンドを覚えよう
• chmod - change file mode bits 
• chmod a=rwx file 
• すべてのユーザーにrwx(読み込み,書き込み,実行)権限を付与
• すべてのユーザーのときはaを省略できる
基本コマンドを覚えよう
• クイズ
• こういうファイルがあります
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
基本コマンドを覚えよう
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• chmod +rw をするとパーミッションはどうなる?
基本コマンドを覚えよう
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• chmod +rw をするとパーミッションはどうなる?
• 答え 666 (rw-rw-rw-)
基本コマンドを覚えよう
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• chmod g-wx をするとパーミッションはどうなる?
基本コマンドを覚えよう
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• chmod g-wx をするとパーミッションはどうなる?
• 答え 644 (rw-r--r--)
基本コマンドを覚えよう
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• chmod o=wx をするとパーミッションはどうなる?
基本コマンドを覚えよう
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• chmod o=wx をするとパーミッションはどうなる?
• 答え 663 (rw-rw--wx)
基本コマンドを覚えよう
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• chmod u+x をするとパーミッションはどうなる?
基本コマンドを覚えよう
• クイズ
-rw-rw-r-- 1 ubuntu adm 220 Apr 9 01:03 file
• chmod u+x をするとパーミッションはどうなる?
• 答え 764 (rwxrw-r--)
基本コマンドを覚えよう
• chmod - change file mode bits 
• test_newの書き込み権限を剥奪してみよう
• echo hogehoge > test_newってするとどうなる?
• rm test_newはどうなる?
基本コマンドを覚えよう
• chown - change file owner and group 
• chown <ユーザー> <ファイル名>
• ファイルの所有者情報を変更する
基本コマンドを覚えよう
• chown - change file owner and group 
• オプション
• -r ディレクトリ以下のすべてのファイルを変更したい時は
 r(ecursive)オプションが必要
基本コマンドを覚えよう
• chown - change file owner and group 
• chown ubuntu file 
• 所有ユーザーがubuntuになる
基本コマンドを覚えよう
• chown - change file owner and group 
• chown ubuntu:adm file 
• 所有ユーザーがubuntuになる
• 所有グループがadmになる
基本コマンドを覚えよう
• chown - change file owner and group 
• chown ubuntu. file 
• 所有ユーザーがubuntuになる
• 所有グループがubuntuになる
基本コマンドを覚えよう
• pwd - print name of current/working directory 
• pwd 
• 現在いるディレクトリの名前がわかる
基本コマンドを覚えよう
• wget - The non-interactive network downloader 
• wget <URL> 
• ネットワーク上のファイルを落としてくる
• HTTP / HTTPS / FTP
基本コマンドを覚えよう
• wget - The non-interactive network downloader 
• オプション
• -O <ファイル名> 保存するファイル名を設定
• -r URL以下のファイルを全部取ってきてくれる (便利!!)
基本コマンドを覚えよう
• wget - The non-interactive network downloader 
• wget http://www.npca.jp/ 
• index.htmlをcatしてみよう
基本コマンドを覚えよう
• exit 
• 終了する
エディタを使ってみよう
• SSHで作業するときはコンソールで動くエディタを使う
• vim / nano / emacs / ed / acme 
• この講義ではvim / nanoをおすすめします
エディタを使ってみよう
• とりあえず起動
• vim 
• あとは自分でがんばってくれ
• http://www15.ocn.ne.jp/~tusr/vim/vim_text0.html
エディタを使ってみよう
• vimにはいくつかモードがある
• 挿入モード
• 普通に入力する時のモード
• 押した文字が挿入される
エディタを使ってみよう
• vimにはいくつかモードがある
• コマンドモード
• 「開く」「保存」とか普通のエディタだとマウスで行う部分
エディタを使ってみよう
• vimにはいくつかモードがある
• ノーマルモード
• 起動直後の状態
• ここからコマンドモードや挿入モードに移行する
エディタを使ってみよう
• とりあえず終了する
• :q 
• ノーマルモードで:を打つとコマンドモードになる
• :qはquitの意
エディタを使ってみよう
• もう一回起動する
• vim
エディタを使ってみよう
• 今度は挿入モードに移行する
• i 
• iと打つと下に-- INSERT --と表示されるはず = 挿入モード
• テキストを編集できるように
エディタを使ってみよう
• ノーマルモードに戻る
• Esc 
• 下の-- INSERT --が消える
エディタを使ってみよう
• 文字の削除
• ノーマルモードでxと打つと文字が削除される
• 悪いことは言わないのでとりあえずBackspaceとDelを使っとけ
• 挿入モード中で使えるので楽
エディタを使ってみよう
• カーソル移動
• ノーマルモードでh, j, k, lと打つとカーソルが移動する
• 悪いことは言わないのでとりあえずカーソルキーを使っとけ
• 挿入モード中で使えるので楽
エディタを使ってみよう
• ファイルに保存する
• ノーマルモードに戻ってから
• :w <ファイル名>
• 上書き保存の時はファイル名を省略できる
エディタを使ってみよう
• ファイルを開く
• :o <ファイル名>
• シェルから起動するときにvim <ファイル名>としても一緒
エディタを使ってみよう
• 上書き保存して終了
• :wq 
• 保存せず終了
• :q!
エディタを使ってみよう
• まとめ
• ビジュアルモードとかもある
• ある程度のコマンドを覚えるまで
がんばるのみ
コンパイルしてみよう
• これでコードを書く環境が整った!!
• vim main.cで以下のコードを書いてみよう
#include <stdio.h>
int main(void)
{
printf(“Hello, world!n”);
return 0;
}
コンパイルしてみよう
• コンパイルしてみよう
• どうやって?
コンパイルしてみよう
• gcc - GNU project C and C++ compiler 
• gcc <ファイル名>
• C言語のソースコードをコンパイルする
コンパイルしてみよう
• gcc - GNU project C and C++ compiler 
• オプション
• -o <ファイル名> 出力するファイル名 (指定しないとa.out)
• -O1, -O2, -O3 最適化レベル (つけると自動的に高速化)
• その他にもいっぱい重要なものがある
コンパイルしてみよう
• gcc main.c -o main 
• エラーが出たら修正しましょう
コンパイルしてみよう
• ./main 
• ファイルを実行するときは./などを付けないといけない
• 付けていないとコマンドだと思って探しに行く
• コマンドじゃないことを知らせればいいので
/home/ubuntu/mainとかでも実行できる
休憩
Webサーバーを構築してみよう
そもそもサーバーって?
• サービスを提供するもの
• ビールサーバー→ビールを提供する
• Webサーバー→Webを提供する(?
Webサーバーって?
• Webコンテンツを提供するソフトウェア
• ユーザーからのあるファイルを見たいというリクエストを受け
そのファイルがあれば返す
• HTTPというプロトコルを用いている
Webサーバーって?
• すべてのWebコンテンツはWebサーバーで提供されている
• GoogleにもNPCAにもWebサーバーがあるから
Webサイトが提供できている
• 一般的には80番ポートを使うことが多い
Webサーバーと話してみよう
• NPCAのWebサーバーに接続してHTTPで話してみよう
• nc www.npca.jp 80 
• 繋がったら以下のとおり入力 (最後に改行2回)
GET / HTTP/1.1
Host: www.npca.jp
Webサーバーと話してみよう
• たくさんの文字が流れてきたはず
• 大部分はhttp://www.npca.jp/の中身
• 最初の方にServer:Apacheという文字列があるはず
• NPCAのWebサーバーはApacheというソフトウェア
Webサーバーを構築してみよう
• このApacheを構築してみよう
• とりあえずApacheをインストールしてみよう
aptを使ってみよう
• どうやってインストールする?
• 公式サイトからインストーラーを落としてくる?
aptを使ってみよう
• パッケージマネージャを使ってみよう
• コマンドラインから簡単にインストールできる
システムが用意されている
• ソフトウェアをパッケージにまとめて提供している
aptを使ってみよう
• パッケージマネージャを使ってみよう
• Ubuntuの場合は apt を使うのがメジャー
• ディストリビューションによって異なる
aptを使ってみよう
• apt-get - APT package handling utility 
• apt-get <コマンド> <オプション>
aptを使ってみよう
• apt-get - APT package handling utility 
• apt-get install <パッケージ名>
• パッケージをインストールする
aptを使ってみよう
• apt-get - APT package handling utility 
• apt-get remove <パッケージ名>
• パッケージをアンインストールする
aptを使ってみよう
• apt-get - APT package handling utility 
• apt-get purge <パッケージ名>
• 設定ファイルを含めてアンインストールする
aptを使ってみよう
• apt-get - APT package handling utility 
• apt-get update 
• 最新のパッケージ情報をインターネットから取得する
• どのバージョンのパッケージが入手可能なのかなど
aptを使ってみよう
• apt-get - APT package handling utility 
• apt-get upgrade 
• インストール済みのパッケージを最新のバージョンに更新
aptを使ってみよう
• apt-get - APT package handling utility 
• apt-get autoremove 
• 不要なパッケージを自動的に削除
aptを使ってみよう
• Apacheをインストールしてみよう
• Apacheのパッケージ名はapache2
• apt-get install apache2
aptを使ってみよう
• こんなエラーが出るはず
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
• 管理者権限が必要
rootとは
• 管理者アカウントの名前はroot
• WindowsでいうAdministrator
• システムに変更を加えるときにはrootの権限が必要
rootとは
• sudo - execute a command as another user 
• sudo <コマンド>
• コマンドをrootとして実行できる
rootとは
• sudo - execute a command as another user 
• sudo id 
uid=0(root) gid=0(root) groups=0(root)
aptを使ってみよう
• sudo apt-get install apache2 
• 確認のメッセージが出るので y を押す
• これでインストールができるはず
Webサーバーを構築してみよう
• ブラウザでアクセスしてみよう
• IPアドレスはSSHと一緒
• これで繋がるはず
Webサーバーを構築してみよう
• サーバー構築で一番重要なこと
• 問題解決能力
• 問題の原因を切り分けて修正すること
つながらない問題
• とりあえずサーバーにつながってない状況
• 原因として考えられることは?
• 思いつく限り挙げてみよう
繋がらない問題
• そもそもこの部屋がインターネットにつながってない
• サーバーの電源が落ちた
• サーバーがインターネットにつながってない
繋がらない問題
• Apacheが起動していない
• service apache2 statusで確認してみよう
• ネットワーク設定に何か問題がある
繋がらない問題
• とりあえずサーバー内部から接続してみる
• nc localhost 80 
GET / HTTP/1.1
Host: localhost
繋がらない問題
• なんかいろいろ返ってきた
• サーバー内部からは繋がる
• 外部からは繋がらない
繋がらない問題
• ファイアーウォール
• 外部との接続を遮断するソフトウェア
• 侵入や情報漏洩を防ぐのに重要
繋がらない問題
• ファイアーウォールに対して
Webサーバーは自分が構築したものだから遮断しなくてよいと
設定してやらなければならない
• 現在 Ubuntu で使われているソフトウェアは ufw
繋がらない問題
• sudo ufw allow http 
• これでhttpの接続(tcp 80)を許可する
• もう一回ブラウザからアクセスしてみよう
Apacheの設定を変更してみよう
• とりあえずApacheの設定をいじってみよう
• 公開するディレクトリを変更しよう
Apacheの設定を変更してみよう
• Apacheの設定は/etc/apache2/以下にある
• 基本的な設定は/etc/apache2/apache2.conf
• 細かな機能(モジュール)についての設定は
/etc/apache2/mods-available/にある
• mods-enabled/にシンボリックリンク(ショートカット)を
作ると有効化される
Apacheの設定を変更してみよう
• Apacheの設定は/etc/apache2/以下にある
• それぞれのWebサイトに関する設定は
/etc/apache2/sites-available/にある
• sites-enabled/にシンボリックリンクを作ると有効化される
• 今回変更するのは/etc/apache2/sites-available/000-default.conf
Apacheの設定を変更してみよう
• まずホームディレクトリでmkdir www
• そして~/wwwを公開するディレクトリに設定する
Apacheの設定を変更してみよう
• root権限で/etc/apache2/sites-available/000-default.confを開く
• DocumentRoot /var/www/htmlを
• DocumentRoot /home/ubuntu/wwwに変更する
Apacheの設定を変更してみよう
• root権限で/etc/apache2/sites-available/000-default.confを開く
• DocumentRootの下に以下の項目を追加
<Directory /home/ubuntu/www>
Require all granted
</Directory>
Apacheの設定を変更してみよう
• Apacheに設定を適用する
• root権限でservice apache2 reload
HTMLを書いてみよう
• とりあえずWebサーバーは建てた
• じゃあWebコンテンツを置いてみよう
HTMLを書いてみよう
• HTML - Hyper Text Markup Language 
• Web上のコンテンツは基本的にHTMLで書かれている
HTMLを書いてみよう
• vim /home/ubuntu/www/index.html 
<!DOCTYPE html>
<html>
<head>
<title>Hello, world!</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
HTMLを書いてみよう
• 細かな説明は省略
• 基本的に「<タグ>中身</タグ>」が入れ子構造になっている
• ブラウザでアクセスして表示されているか見てみよう
HTMLを書いてみよう
• <p>となっている部分を<h1>や<h6>にすると大きさが変わる
• <marquee>がアツい
• これ以上の装飾にはCSSを勉強する必要がある
休憩
Webサーバーを作ってみよう
はじめに
• GitHubアカウントは持っていますか
• 持っていない人は1分以内に作ってください
• 持ってる人は2段階認証を有効にすることをおすすめします
今回使う材料がこちらです
• https://github.com/hiromu/simple-web-server 
• とりあえずforkする
• 人のリポジトリに改変を加えて公開したいときは
forkを使うと便利
SSH Public Keyの登録
• サーバーからGitHubにアクセスできるようにSSHキーを登録する
• ssh-keygen 
• cat ~/.ssh/id_rsa.pub → コピー
SSH Public Keyの登録
• SettingsのSSH KeysでAdd SSH Key
• https://help.github.com/articles/generating-ssh-keys
Gitの設定
• git config --global user.name <名前>
• git config --global user.email <メールアドレス>
Git cloneしてみよう
• ソースコードをcloneする
• ホームディレクトリで
git clone git@github.com:<ユーザー名>/simple-web-server.git
Web Serverを起動してみよう
• とりあえずWeb Serverを起動するときにめんどくさいので
ファイアーウォールを無効化する
• sudo ufw disable 
• ※よい子は真似しないでね
Web Serverを起動してみよう
• cd simple-web-server 
• make 
• ./server <適当なポート>
• ブラウザで http://<IPアドレス>:<ポート>/ にアクセスしてみる
makeとは
• makeと打つと自動的にビルドしてくれた
• makeはコンパイルを自動化するソフトウェア
• Makefileに基づいてビルドしてくれる
makeとは
• cat Makefile
CC = gcc
CFLAGS = -Wall
LDFLAGS =
TARGET = server
OBJS = main.o server.o util.o
all: $(TARGET)
server: $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS)
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm $(TARGET) $(OBJS)
設定などを変数に代入
CC: ビルドにはgccを使う
CFLAGS: コンパイル時にはCFLAGSをオプションとする
LDFLAGS: リンク時にはLDFLAGSをオプションとする
デフォルトで$TARGETをビルド
serverをビルドするには$OBJSが必要
.cファイルを.oに変換するには以下の通り
オプションでcleanが指定されたら$TARGETと$OBJを削除
makeとは
• makeの前に./configureを実行することで
環境に合わせたMakefileを自動生成するものも
• make, automake, autoconfなどは便利だけれども闇でもある
Web Serverを作ってみよう
• まずHTTPのプロトコルについて知ろう
• Web ServerはHTTPに則って通信を行う
• プロトコルを知らないとそもそも実装できない
HTTPについて学ぼう
• 基本的にリクエストとレスポンスがある
• ブラウザがリクエストを送り
サーバーがそれに対してレスポンスを送る
Webブラウザ Webサーバー
リクエスト
レスポンス
HTTPについて学ぼう
• リクエストは以下の形式に則っている
• <HTTPメソッド> <URI> <バージョン>
<ヘッダー名>: <ヘッダー値>
<本文>
HTTPについて学ぼう
• HTTPメソッドとは
• GET / POST / HEAD / PUT / DELETE 
• リクエストがどんな内容かということを示している
• 一般的に使うのはGETとPOST
HTTPについて学ぼう
• HTTPメソッドとは
• GET:Web上のリソースを取得(GET)するときに使う
• POST:Webサーバーに情報を送信(POST)するときに使う
• ログインフォームとかファイルアップロードとか
HTTPについて学ぼう
• URIとは
• Uniform Resource Identifier 
• どんなリソースが欲しいかを指定する
HTTPについて学ぼう
• URIとは
• 例えば http://www.npca.jp/about/ にアクセスすると
URIには /about/ が入る
HTTPについて学ぼう
• HTTPバージョンとは
• HTTP/<メジャーバージョン>.<マイナーバージョン>の形式
• 現在は殆どがHTTP/1.1
• HTTP/2.0が策定中
HTTPについて学ぼう
• HTTPヘッダーとは
• 付随する様々な情報を送る
• ここに入る情報はユーザーが偽装できる!!
• 代表的なもののみ紹介
HTTPについて学ぶ
• Hostヘッダー
• Host: <ホスト名>という形式
• http://npca.jp/about/ にアクセスすると
Host: npca.jpとなる
HTTPについて学ぶ
• Cookieヘッダー
• Cookie: <名前>=<値>; <名前>=<値>;という形式
• ログイン情報などユーザーに保存させている情報が送られる
HTTPについて学ぶ
• User-Agentヘッダー
• ユーザーがどのようなブラウザを使っているか送る
• Firefox 15 / Windowsだと
Mozilla/5.0 (Windows NT 6.1;WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1
• ユーザーが偽装できるということをお忘れなく
HTTPについて学ぶ
• HTTPの本文とは
• POSTリクエストのときに送信する内容が含まれる
• ファイルアップロードだとmultipartというものが使われたり
• ヘッダーとは空行で区切られている
HTTPについて学ぶ
• リクエストまとめ
• http://www.npca.jp/about/ にアクセスすると以下のようになる
GET /about/ HTTP/1.1
Host: www.npca.jp
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 Chrome/36.0.1985.125
HTTPについて学ぶ
• クイズ
• http://www.google.com/#q=test にアクセスするとどうなる?
• CookieにSSID:AVK9Q7TrKu7WUyGcNと入っていたら?
HTTPについて学ぶ
• 答え
GET /#q=test HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36
Cookie: SSID=AVK9Q7TrKu7WUyGcN
HTTPについて学ぶ
• レスポンス
• <HTTPバージョン> <ステータスコード> <メッセージ>
<ヘッダー名>: <ヘッダー値>
<本文>
HTTPについて学ぶ
• HTTPバージョン
• さっきと同じ
• HTTP/1.1
HTTPについて学ぶ
• ステータスコードとメッセージ
• 404 Not Foundという文字列に見覚えが...?
HTTPについて学ぶ
• アクセスについての状況を3桁の数字とメッセージで示す
• 100番台 ~ 500番台まで
HTTPについて学ぶ
• 200 OK 
• 問題なくアクセスが完了した
HTTPについて学ぶ
• 301 Moved Permanently 
• 恒久的に移動した
• 302 Found 
• リダイレクト
HTTPについて学ぶ
• 400 Bad Request 
• 不正なリクエスト
• 401 Unauthorized 
• 認証が必要である
• Basic認証などの際に表示される
HTTPについて学ぶ
• 403 Forbidden 
• 禁止されている
• パーミッションの問題などの時
• 404 Not Found 
• 見つからない
HTTPについて学ぶ
• 500 Internal Server Error 
• サーバー内部のエラー
• 503 Service Unavailable 
• サーバーが落ちている
HTTPについて学ぶ
• HTTPヘッダー
• 基本的にリクエストと同じ
• 代表的なもののみ紹介
HTTPについて学ぶ
• Dateヘッダー
• 時刻を返す
• 複数形式での時刻の表現が許容されている
HTTPについて学ぶ
• Serverヘッダー
• Serverのソフトウェア情報などが入っている
• Apache, nginxなど
• ここにバージョンが含まれているとセキュリティ上の
リスクがあると言われている
HTTPについて学ぶ
• Locationヘッダー
• 301, 302, 307などでリダイレクトするときに
リダイレクト先を示す
HTTPについて学ぶ
• HTTP 本文
• HTMLの中身など
• ヘッダーとは空行で区切られている
HTTPについて学ぶ
• レスポンスまとめ
• http://www.npca.jp/about/ にアクセスすると以下のようになる
HTTP/1.1 200 OK
Host: www.npca.jp
Date: Thu, 14 Aug 2014 22:20:09 GMT
Server: Apache
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html lang="ja" xmlns="http://www.w3.org/1999/xhtml">
<!-- id: RS-02~a -->
<head>
<meta charset="utf-8" />
.....
HTTPについて学ぶ
• レスポンスまとめ
• http://www.npca.jp/about_/ にアクセスすると以下のようになる
HTTP/1.1 404 Not Found
Host: www.npca.jp
Date: Thu, 14 Aug 2014 22:20:09 GMT
Server: Apache
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html lang="ja" xmlns="http://www.w3.org/1999/xhtml">
<!-- id: RS-02~a -->
<head>
<meta charset="utf-8" />
.....
HTTPについて学ぶ
• レスポンスまとめ
• http://npca.jp/ にアクセスすると以下のようになる
HTTP/1.1 301 Moved Permanently
Date: Thu, 14 Aug 2014 22:23:50 GMT
Server: Apache
Location: http://www.npca.jp/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
.....
HTTPについて学ぶ
• これで君もバイリンガルだ!!
• HTTPでサーバーと会話してみよう
• ncでGoogleにアクセスしてみよう
• ncでwww.npca.jpにアクセスしてみよう
Web Serverを作ってみよう
• まず挙動を理解しよう
• ソースコードリーディング
ソースコードを読んでみよう
• 3つのファイルからなる
• main.c:Webサーバーとしての基本的な部分
• server.c: アクセスがあるとここが呼ばれる
• util.c: 便利な関数など
ソースコードを読んでみよう
• main.c 
• ちょっと難しいかも
• 基本的には指定されたポートでアクセスを待ち
アクセスがあればhttp_server()を呼ぶ
ソースコードを読んでみる
• server.c 
• まずhttp_server()を見る
• 始めからutil.cのread_until()を読んでいる
ソースコードを読んでみる
• util.c 
• read_until()とはなにか
• 細かい実装は置いておいて
• 指定された文字が来るまで入力を読み込む
ソースコードを読んでみる
• server.c 
• まずスペースに達するまでmethodに文字を読み込む
• 読み込まれた文字がGETかPOSTでなければ
util.cのresponse_header(“Not Implemented”)を呼ぶ
ソースコードを読んでみる
• util.c 
• response_header() 
• まず現在時刻を取得してasctimeで文字列に変換する
ソースコードを読んでみる
• util.c 
• response_header() 
• 引数に応じて
HTTP/1.1 <ステータスコード> <メッセージ>を出力する
ソースコードを読んでみる
• util.c 
• response_header() 
• Date: <現在時刻>を出力する
• Server: <DEFINEされたSERVER_STRING>を出力する
ソースコードを読んでみる
• server.c 
• 次のスペースに達するまでURIに読み込み
• 256文字を超えるか正しく読み込めなければ
response_header(“Request-URI Too Long”)を呼ぶ
ソースコードを読んでみる
• server.c 
• 次のスペースに達するまでHTTPVersionに読み込み
• HTTP/1.1でなければ
response_header(“Version Not Supported”)を呼ぶ
ソースコードを読んでみる
• server.c 
• 空行に達するまでheaderを読み込む
• headerの行に:が含まれていなければ
response_header(“Bad Request”)を呼ぶ
ソースコードを読んでみる
• server.c 
• headerが終わればHTTP Methodに合わせて
get()かpost()を呼ぶ
Webサーバーを作ってみよう
• とりあえず現在の出力の最後にHello, world!と出力されるように
してみよう
• get()を変更してみよう
• 変更した後はmakeしてserverを起動
Webサーバーを作ってみよう
• 150行目に
printf(“Hello, world!n”);を入れればOK
commitしてみよう
• 完成したらgit commitしてみよう
• git commit -a -m <コミットメッセージ>
• コミットメッセージは適当でいい
• でもそのメッセージを見ればどんな変更かわかるように!!!
GitHubにpushしてみよう
• git push origin master 
• これでGitHubに変更が適用されたはず
• ブラウザでリポジトリを見てみよう
Webサーバーを作ってみよう
• アクセスカウンタを実装してみよう
• アクセスがある度にカウンタを+1して表示する
Webサーバーを作ってみよう
• アクセスカウンタを実装してみよう
• アクセスごとにfork()しているので変数だと共有されない
• ファイルを使って記録するなどしないといけない
Webサーバーを作ってみよう
• アクセスカウンタを実装してみよう
• paramsにreset=trueと入っていたらカウンタを
リセットするように変えてみよう
• strstr()などが使えるかも
• 完成したらcommit
Webサーバーを作ってみよう
• アクセスカウンタを実装してみよう
• paramsにreset=%dと入っていたらカウンタを
与えられた数値にリセットするように変えてみよう
• util.cのparse_params()を使ってみよう
• 完成したらcommit
Webサーバーを作ってみよう
• ログインシステムを実装してみよう
• Cookieにadmin: trueと入っていたら別の文字列を
表示するように実装してみよう
• util.cのparse_cookies()を使ってみよう
• 完成したらcommit
Webサーバーを作ってみよう
• ログインシステムを実装してみよう
• POSTアクセスでユーザー名とパスワードを送るように
実装してみよう
• まずformタグをGETリクエストで表示する
Webサーバーを作ってみよう
<form method=‘POST’>
<input type=‘text’ name=‘user’ />
<input type=‘password’ name=‘pass’ />
<input type=‘submit’ value=’login’ />
</form>
Webサーバーを作ってみよう
• ログインシステムを実装してみよう
• 次にpost()の中で送られたデータを受け取ってみよう
• postの中でscanfなどで1行読み取って
parse_params()に投げればよい
Webサーバーを作ってみよう
• ログインシステムを実装してみよう
• 送られてきたユーザー名とパスワードが一致すれば
Set-Cookieヘッダーでadmin: trueを設定する
• その後に302でGETメソッドに転送する
• 完成したらcommit
Webサーバーを作ってみよう
• ログイン認証は難しかったかも
• とりあえずHTTPの仕組みやプロトコルの概念を
わかってもらえればよい
• ”””C言語の文字列処理は闇”””
さいごに
• サーバーを壊してみよう
• sudo rm -rf --no-preserve-root / 
• 貴重な体験!!!
• どういう状況になるのか体感
さいごに
• サーバーを壊してみよう
• -bash: /bin/ls: No such file or directory 
• SSH接続を切ったが最後
二度とつながることはない

Más contenido relacionado

La actualidad más candente

Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークTakuya ASADA
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
はじめてのDockerパーフェクトガイド(2017年版)
はじめてのDockerパーフェクトガイド(2017年版)はじめてのDockerパーフェクトガイド(2017年版)
はじめてのDockerパーフェクトガイド(2017年版)Hiroshi Hayakawa
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
誰得コマンド&オプション35連発
誰得コマンド&オプション35連発誰得コマンド&オプション35連発
誰得コマンド&オプション35連発Yozo SATO
 
Sniffing BitTorrent DHT ~人はBTで何を落とすのか~
Sniffing BitTorrent DHT ~人はBTで何を落とすのか~Sniffing BitTorrent DHT ~人はBTで何を落とすのか~
Sniffing BitTorrent DHT ~人はBTで何を落とすのか~inaz2
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgKentaro Ebisawa
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutTaisuke Yamada
 
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-Kenichiro MATOHARA
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)inaz2
 

La actualidad más candente (20)

Linux Namespace
Linux NamespaceLinux Namespace
Linux Namespace
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
 
Fn project爆誕
Fn project爆誕Fn project爆誕
Fn project爆誕
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
はじめてのDockerパーフェクトガイド(2017年版)
はじめてのDockerパーフェクトガイド(2017年版)はじめてのDockerパーフェクトガイド(2017年版)
はじめてのDockerパーフェクトガイド(2017年版)
 
Unixアレコレ調べたい2
Unixアレコレ調べたい2Unixアレコレ調べたい2
Unixアレコレ調べたい2
 
Scapy presentation
Scapy presentationScapy presentation
Scapy presentation
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
誰得コマンド&オプション35連発
誰得コマンド&オプション35連発誰得コマンド&オプション35連発
誰得コマンド&オプション35連発
 
sshdのお話
sshdのお話sshdのお話
sshdのお話
 
Sniffing BitTorrent DHT ~人はBTで何を落とすのか~
Sniffing BitTorrent DHT ~人はBTで何を落とすのか~Sniffing BitTorrent DHT ~人はBTで何を落とすのか~
Sniffing BitTorrent DHT ~人はBTで何を落とすのか~
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
 
SSH Tips & Tricks
SSH Tips & TricksSSH Tips & Tricks
SSH Tips & Tricks
 
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
 

Destacado

セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメセキュリティ・キャンプのススメ
セキュリティ・キャンプのススメHiromu Yakura
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料SECCON Beginners
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料SECCON Beginners
 
Ctfのためのpython入門
Ctfのためのpython入門Ctfのためのpython入門
Ctfのためのpython入門shiracamus
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…Hiromu Yakura
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)kikuchan98
 

Destacado (7)

CTFとは
CTFとはCTFとは
CTFとは
 
セキュリティ・キャンプのススメ
セキュリティ・キャンプのススメセキュリティ・キャンプのススメ
セキュリティ・キャンプのススメ
 
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 
Ctfのためのpython入門
Ctfのためのpython入門Ctfのためのpython入門
Ctfのためのpython入門
 
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
 

Similar a NPCA夏合宿 2014 講義資料

Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jAkira Yoshiyama
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Nobuto Murata
 
NGS速習コース:UNIXの基礎の理解/Linux導入
NGS速習コース:UNIXの基礎の理解/Linux導入NGS速習コース:UNIXの基礎の理解/Linux導入
NGS速習コース:UNIXの基礎の理解/Linux導入Takeru Nakazato
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作アシアル株式会社
 
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Emma Haruka Iwao
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜Taro Matsuzawa
 
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)Kazuhiro Nishiyama
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたatk1234
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作Yuki Okamoto
 
Unix コマンド入門
Unix コマンド入門Unix コマンド入門
Unix コマンド入門Sho A
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presenKouhei Maeda
 
Debug Hacks Conference 2009
Debug Hacks Conference 2009Debug Hacks Conference 2009
Debug Hacks Conference 2009Hiro Yoshioka
 
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small serverTatsumi Naganuma
 
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会ConoHa, GMO INTERNET
 

Similar a NPCA夏合宿 2014 講義資料 (20)

20170124 linux basic_1
20170124 linux basic_120170124 linux basic_1
20170124 linux basic_1
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 j
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
 
NGS速習コース:UNIXの基礎の理解/Linux導入
NGS速習コース:UNIXの基礎の理解/Linux導入NGS速習コース:UNIXの基礎の理解/Linux導入
NGS速習コース:UNIXの基礎の理解/Linux導入
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
 
Unix
UnixUnix
Unix
 
LinAction Theme Docker
LinAction Theme DockerLinAction Theme Docker
LinAction Theme Docker
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
 
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)
 
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみたOSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 
Unix コマンド入門
Unix コマンド入門Unix コマンド入門
Unix コマンド入門
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
 
20230128.pptx
20230128.pptx20230128.pptx
20230128.pptx
 
Debug Hacks Conference 2009
Debug Hacks Conference 2009Debug Hacks Conference 2009
Debug Hacks Conference 2009
 
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small server
 
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
 

Más de Hiromu Yakura

Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Hiromu Yakura
 
How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021Hiromu Yakura
 
機械学習を"良く"使うには
機械学習を"良く"使うには機械学習を"良く"使うには
機械学習を"良く"使うにはHiromu Yakura
 
自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会Hiromu Yakura
 
Python 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたPython 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたHiromu Yakura
 
Robust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackRobust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackHiromu Yakura
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみたHiromu Yakura
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」Hiromu Yakura
 
Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Hiromu Yakura
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようHiromu Yakura
 
機械学習コン講評
機械学習コン講評機械学習コン講評
機械学習コン講評Hiromu Yakura
 
イタリアでパスタを食べた話
イタリアでパスタを食べた話イタリアでパスタを食べた話
イタリアでパスタを食べた話Hiromu Yakura
 
Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?Hiromu Yakura
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?Hiromu Yakura
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティHiromu Yakura
 

Más de Hiromu Yakura (20)

Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
Human-AI communication for human-human communication / CHAI Workshop @ IJCAI ...
 
How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021How to make good use of AI technologies? @ Tsukuba Conference 2021
How to make good use of AI technologies? @ Tsukuba Conference 2021
 
機械学習を"良く"使うには
機械学習を"良く"使うには機械学習を"良く"使うには
機械学習を"良く"使うには
 
自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会自己紹介@名状しがたいお茶会
自己紹介@名状しがたいお茶会
 
Python 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみたPython 3のWebシステムでDDDに入門してみた
Python 3のWebシステムでDDDに入門してみた
 
Robust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical AttackRobust Audio Adversarial Example for a Physical Attack
Robust Audio Adversarial Example for a Physical Attack
 
新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた新しいライブ映像再生システムを研究してみた
新しいライブ映像再生システムを研究してみた
 
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」GAME ON 特別イベント 「ゲームってなんでプログラミング?」
GAME ON 特別イベント 「ゲームってなんでプログラミング?」
 
Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編
 
Arduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみようArduinoでプログラミングに触れてみよう
Arduinoでプログラミングに触れてみよう
 
機械学習コン講評
機械学習コン講評機械学習コン講評
機械学習コン講評
 
イタリアでパスタを食べた話
イタリアでパスタを食べた話イタリアでパスタを食べた話
イタリアでパスタを食べた話
 
Why don't you learn programming?
Why don't you learn programming?Why don't you learn programming?
Why don't you learn programming?
 
CTF, What's in it for me?
CTF, What's in it for me?CTF, What's in it for me?
CTF, What's in it for me?
 
Arrow Judge
Arrow JudgeArrow Judge
Arrow Judge
 
ぃぬ速@LKML
ぃぬ速@LKMLぃぬ速@LKML
ぃぬ速@LKML
 
プラトン
プラトンプラトン
プラトン
 
How to lick Miku
How to lick MikuHow to lick Miku
How to lick Miku
 
ICTのちから
ICTのちからICTのちから
ICTのちから
 
ナウいAndroidセキュリティ
ナウいAndroidセキュリティナウいAndroidセキュリティ
ナウいAndroidセキュリティ
 

Último

論文紹介: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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
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
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介: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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
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
 
論文紹介: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
 

Último (9)

論文紹介: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」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介: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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
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
 
論文紹介: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...
 

NPCA夏合宿 2014 講義資料