25
1 ををを をををを ををを slsl

Slを読まずにsl userを名乗るな!

Embed Size (px)

Citation preview

1

 を読まずに ユーザーを 名乗るな!

slsl

桜木 優斗

2

←タイトルは これを模倣

3

目次

0. 自己紹介 (p4)1.sl とは (p5 ~ p10)2.ソースコードを読んでみよう!

(p11 ~ p15)3. 今後の展望 (p16)4.Sl コマンドの入手方法 (p17 ~p18)5. 最後に… (p19 ~ p20)

4

目次

0. 自己紹介 (p4)1.sl とは (p5 ~ p10)2. ソースコードを読んでみよう!

(p11 ~ p15)3. 今後の展望 (p16)4.Sl コマンドの入手方法 (p17 ~p18)5. 最後に… (p19 ~ p20)

5

目次

0. 自己紹介 (p4)1.sl とは (p5 ~ p10)2. ソースコードを読んでみよう!

(p11 ~ p15)3. 今後の展望 (p16)4.Sl コマンドの入手方法 (p17 ~p18)5. 最後に… (p19 ~ p20)

6

1. sl コマンドとは

UNIX 系 OS のコマンドの一つ。

コンソール画面をアスキーアートで描かれた蒸気機関車 (SL) が走り抜ける。

7

1. sl コマンドとは ( 歴史 )

PS C:\> historyYear Event----

------------------------------1987 歌代和正によって開発・投稿1992 豊田正史によってより派手に

改造1990s ~ ディストリビューションに搭載2000s ~ GUI デスクトップ環境の発展に

より 軽視の風潮を受ける

Windows PowerShell – sl コマンドの歴史

8

1. sl コマンドとは ( 歴史 )

Year Event----

------------------------------2013 豊田正史によってソースコード

が GitHub に設置される。 (2014/06/03

ver5.02)現在 いくつかの UNIX 系フリー OS で

は 標準のパッケージに含ま

れている

PS C:\> |

Windows PowerShell

9

1. sl コマンドとは(実演)

実際に見てみよう!オプションとしては、 -a,-l,-F,-c の4つ

10

1. sl コマンドとは ( オプション )

option

ls の場合 sl の場合

-a ドット・ファイルを含んだすべてのファイルを表示する .

車内の客が「 HELP! 」と叫んでいる .

-l ファイルの詳細も同時に表示する .

細長い SL が走る .

-F ファイル名にファイル・タイプを表す記号を付けて表示する。

空 ( 画面の上のほう ) へ飛んでゆく .

-c ファイル・ステータスを変更した時間順にソートして表示する。

国鉄 C51 形蒸気機関車が走る .( 通常は D51)

11

弁慶号機関車( 7100形蒸気機関車)

国鉄 D51形蒸気機関車(愛称:デゴイチ)

国鉄 C51形蒸気機関車(愛称:シゴイチ)

モデルと違いについて

12

目次

0. 自己紹介 (p4)1.sl とは (p5 ~ p10)2. ソースコードを読んでみよう!

(p11 ~ p15)3. 今後の展望 (p16)4.Sl コマンドの入手方法 (p17 ~p18)5. 最後に… (p19 ~ p20)

13

2. sl のソースコードを読む!

Sl コマンドのプログラムの構成を簡単に解説!この2つのソースコードで作られる。

sl.c (メイン) sl.h ( AA のデータ)

14

2. sl のソースコードを読む!

sl.c (メイン)

重要なヘッダーファイルがcurses.h である。

これはコンソール上でのカーソルの位置やスクリーンの大きさ、スクリーンの状態などを整理してくれるヘッダーファイル。

ヘッダーファイル• <curses.h>• <signal.h>• <unistd.h>• “sl.h”

15

2. sl のソースコードを読む!

そのヘッダーファイル書かれている関数を利用して作ったものが以下の関数群である。

関数名 データ型 処理内容

add_smoke void 煙を出力する。

add_man coid Help と叫ぶ乗客を出力する

add_C51 int シゴイチの AA を出力させる。

add_D51 int デゴイチの AA を出力させる。

add_sl int 弁慶号機関車の AA を出力させる。

option voidコマンドライン上のオプションをチェックし、フラグを変更する

my_mvaddstr int

座標位置とその位置で出力する文字列を受け取り、カーソルを動かして出力する。

16

コマンドラインでどんなオプションなのかチェック!あったら、フラグを立てる

ここが sl を走らせる処理!オプションによりフラグが立ったif-else 文に入って処理を行う。

sl が画面外に行ったとき、 break文を実行し繰り返し文を抜ける。

Main 関数を読む!

17

2. sl のソースコードを読む!

optionの読み取り

スクリーンやシグナルの前処理

走らせる機関車を選ぶ

機関車を走らせる

[機関車が画面内にいる場合]

スクリーンを整理して、カーソルの位置を元に戻す

[機関車が画面外にいる場合]

簡単にフロー図を描くとこんな感じ( UMLアクティビティ図)

18

目次

0. 自己紹介 (p4)1.sl とは (p5 ~ p10)2. ソースコードを読んでみよう!

(p11 ~ p15)3. 今後の展望 (p16)4.Sl コマンドの入手方法 (p17 ~p18)5. 最後に… (p19 ~ p20)

19

3.今後の展望

1.別の言語で sl を実装してみる。2.curses.h を利用して CUI 上で何かしてみ

る。3.UNIX 系の仕組みに少しふれてみる。4.sl をやめて、ほかのコマンドを読んでみる。

20

目次

0. 自己紹介 (p4)1.sl とは (p5 ~ p10)2. ソースコードを読んでみよう!

(p11 ~ p15)3. 今後の展望 (p16)4.Sl コマンドの入手方法 (p17 ~p18)5. 最後に… (p19 ~ p20)

4. sl の入手方法

21

• debian 系$ apt-get install sl• RedHat 系$ yum install sl

• Windows の場合Cygwin または MinGW を導入して、sl のソースコードを GitHub からダウンロードしてmake してください

• Mac の場合$ curl -O http://www.tkl.iis.u-tokyo.ac.jp/%7Etoyoda/sla/sl.tar$ tar xvf sl.tar$ cd sl$ make$ sudo cp -p sl /usr/local/bin/

4. sl の入手方法(もっと sl 入れたい)

22

• ブラウザにおいてhttp://creazy.net/2008/02/sl_js.htmlを参照してみてください。検索: sl コマンド javascript

• R においてhttp://www7b.biglobe.ne.jp/~homunculus/r/sl.htmlを参照してみてください。検索: R 版 sl コマンド sl

23

目次

0. 自己紹介 (p4)1.sl とは (p5 ~ p10)2. ソースコードを読んでみよう!

(p11 ~ p15)3. 今後の展望 (p16)4.Sl コマンドの入手方法 (p17 ~p18)5. 最後に… (p19 ~ p20)

24

5 . 最後に…

<感想>かなりくだらないコマンドだけど、読んでみると(個人的には)ちょっと大変だった特に英語のサイトを読むときが…

コマンドのソースコードを読むのは勉強になると思う。今後も別のコマンドを読んでいきたい。

重要なことですが、

SLマニアではないです

25

6 . 参考サイト

・< curses.h>http://pubs.opengroup.org/onlinepubs/7908799/xcurses/curses.h.html

・ curseshttp://www.kushiro-ct.ac.jp/yanagawa/ex/2-game/doc/curses.html

・ ncurseshttp://www.kis-lab.com/serikashiki/man/ncurses.html