セキュリティの第 1 歩

pan では 2 種類のパスワードがある。 ひとつは電子メールを取り込むときに必要な APOP password、もうひとつは login するときの Login password である。

APOP Password の設定

メールをみるときのパスワードは、 apoppasswd でリニューアル可能である。 万が一忘れたときも、 apoppasswd を実行して、新しいものに変更してしまえばよい。

%apoppasswdEnter
Enter APOP Password:表示されない
Again APOP Password:表示されない
Updated APOP password successfully.successfuly なので成功

Login Password の設定

Login password を変更するコマンドは pswd である。 roy に入ったあと、 Kterm で変更しよう。

古いパスワードを入れたあと、考えてきたパスワードを入力する。 2 回目は確認のためなので、もう一度同じパスワードを入力する。 Login password は忘れないこと! 1, 2 階のパスワードが 同じ パスワードになる。

%pswdEnter

どちらも ときどき 変更しておくとよい。 これらは小さいことながらも、セキュリティの実践の第一歩である。

身近なところで使われているパスワードのしくみが、 どんなものか書き出してみよ。

File の管理について

file を整頓するには、directory を作ると便利である。 Unix に「ゴミ箱」はない。

mkdir [directory 名] directory を作る
rmdir [directory 名] directory を消す
ls -la [directory 名] 指定した directory にどんな file があるか確認する
ls -la [file 名] file があるか確認する
rm [file 名] file を消す
pwd どこにいるかを表示する
cd [directory 名] directory に移動する
which command 名 知っている command を探す

他の Window を開くようなプログラムを使う場合 (= アプリケーションを使う場合)、 プロンプト % に戻って来るためには、 & をつける。 emacs &firefox & は覚えておこう。

ファイルの作り方

Emacs は、指定した directory にファイルを作ることができる Editor である。 一行書き終わったら保存する 癖をつけよう。

Ctrl-x Ctrl-fEmacs でファイルを作る
Ctrl-x Ctrl-sEmacs でファイルを保存する

Interpreter 型のプログラミング言語

プログラミング言語
人間が計算機に計算を命令するために作られた言語
Compiler type (コンパイラ型)C 言語など
Interpreter type (インタプリタ型)Ruby 言語など

Interpreter Type

インタプリタ ruby を用いて、 プログラムを実行するプログラミング言語。 実行できなければエラーを出す。

インタプリタ: プログラムを 1 行ずつ実行するソフトウェア

Object 指向

目的のために、すでにある機能を使いながらプログラミングするという考え方のこと。 例えば、年賀状の印刷には、 ワードプロセッサなどにある、定型印刷機能を使う。 使用時にユーザはソフトウェアの言語を理解している必要は全くない。

Object 指向: 「ユーザは機能の仕組みを必ずしも全て理解しておく必要がない」という考え方

すでにある機能は method と呼ぶ。 他のプログラミング言語で書くと、ソースコードの量は増える。

Ruby 言語の特徴

Ruby 言語は記述する文字数が少なく、 計算機のしくみを知らなくともプログラムが書けるので、初心者向きである。 また、日本人が作ったため、日本語で情報を発信したり、 日本語に関する分析を行うことに長けている。

Ruby, インタプリタ, オブジェクト指向 などの言葉を調べてみよう。

実行場所への移動

Login したときには、 $HOME directory にいる。プログラミングを行うときには、 directory Ruby 内に移動する。

%cd Ruby[˜]
%
[˜/Ruby]

右端に [˜/Ruby] と見える場合は、移動完了。

もし $HOME directory に戻りたい場合には

%cd
[˜/Ruby]%
[˜]

とする。右端に [˜] と見える場合は、移動完了。

プログラムの作成と実行の手順

プログラムの作成と実行は以下の手順で行う。

  1. Kterm を使用する directory に移動させる
  2. Emacs でプログラムを新規作成するとき、使用する directory 内に作る
  3. Ruby 言語のインタプリタを使用することをプログラムで宣言する
  4. Kterm でプログラムを実行可能にする
  5. プログラムを実行する

Ruby 言語でプログラムを作るよ

Ctrl -x Ctrl-f で、˜/Ruby/プログラム.rb とし、新規作成する。 プログラムの一番上(第 1 行目)に

#!/usr/koeki/bin/ruby 

と書く。この行を書くことでプログラムにインタプリタ ruby の在処を教えている。


# coding: euc-jp 

は、プログラムの中で日本語を使うことを設定する一文。 Kterm で

%chmod +x プログラム.rb

とすると実行可能なプログラムとなる。実行可能とは

%./プログラム.rb

とKterm に入力するとプログラムが実行されるという意味である。 chmod は、Windows でのプロパティを変更することと同じ なので、 プログラムテスト時に 1 度のみ 必要な作業である。実行可能なプログラムであるか調べるには、

%ls -l プログラム.rb

とする。右端に -rwxr-xr-x と表示されていると実行可能である。 実行文の文法が正しくないプログラムについては、 間違っている行でエラーメッセージを出して止まる。

自己紹介を表示させてみよう

プログラムの構造は次のようにして作る。

  1. インタプリタの在処
  2. 実行文

ここでは自己紹介する実行文をプログラムにしよう。 Emacs で編集し、Kterm で実行する。 Ruby directory の中で、 print_intro.rb というプログラムを新規作成しよう。

#!/usr/koeki/bin/ruby

# coding: euc-jp

print("ルビ緒です。\n")
print("情報系です。\n")
print("スウェーデン語選択です。\n")

Escape Sequence は、文字に色や音をつける効果をもたらす文字列のことである。 \n が抜けると、 文字が出力されたかどうかわからない ので注意する。

もう少し計算機らしく結果を表示するには

計算機に計算をさせるには

計算機に予想をさせよう。 人間があらかじめプログラムに数値を代入しておき、 解答は計算機が行うことにする。

計算機に計算させる手順は以下のとおりである。

プログラムの作り方

プログラムを作ることになった理由は何だろうか。

プログラム
人間がすぐに行うことのできない計算を、 繰り返して実行するときに用いるもの
変数
計算結果をしまうもの

計算結果を繰り返して使うときには、 計算結果をどこかにしまっておく必要がある。 変数の名前はプログラマが勝手につけることができる。ただし、 プログラムは誰がみても分かるように作ることが求められているので、 変数の名前は中身が何なのかすぐ判別できる ものをつける。

繰り返しの計算に必要な実行文

繰り返しには、どのような仕組みが必要だろうか。

while -- end
while 文といい、条件を満たしている間は計算する。反復文のひとつ。
printf
printf 文といい、変数の中身を出力する。変数の種類によって変換指定子は異なる。

変数と変換指定子の数のは同じで、一つの文章内ならば以下のような構造になっている。

2 つ以上 1 行に表示させたいときは、変換指定子を並べ、 , で次々に変数を並べる。 変換指定子の数と変数の数は同じ でなければならない。


		   while 繰り返しを行ってよい範囲
		   
: 繰り返しの動作に関する実行文
end

while のすぐ後に、条件をつける。

メタボリック症候群

少々腹周りが気になるようになった男性サラリーマン。 去年のサイズは 75 cm であったが、今年は 78 cm となっていた。 したがって 1 年間のウェストの増加率は年 4 % となった。

78 / 75 = 1.04 = 104(%)

この生活習慣を続けた場合、 メタボリックシンドロームと判断されるのは、何年後になるか。 男性がメタボリックシンドロームと判断されるのは、 腹周りが 85 cm 以上とされている。 while_meta.rb

#!/usr/koeki/bin/ruby

# coding: euc-jp

year = 0
waist = waist0 = 78
waistmax = 85

while waist < waistmax
printf("%d 年後 \t %f [cm]\n", year += 1, waist *= 1.04)
end printf("%d 年後には 85 [cm] を %f [cm] 越えます。\n", year, waist - 85)

変数の解説は以下のとおり。

waist
ウェスト (waist) サイズ[cm] を表す変数
waist0
開始年のウェストサイズ [cm]
waistmax
メタボリックと判断されるウェストサイズ [cm]
year
年 (year) を表す変数

実行文の解説は以下のとおり。

waist *= 1.04
変数 waist に入っている値を 4 % 増加させる
year += 1
変数 year に入っている値を 1 増加させる
printf
変数を変換指定子を使って表示する実行文
%d
整数値を表示する変換指定子
\t
printf 文ですき間を表示させる

実際に手計算して確かめてみよう。

変数を使った表示

変数にしまっておいたメッセージを表示させてみよう。 メッセージは数値ではないので、文字列である。 printf_intro.rb:

#!/usr/koeki/bin/ruby

# coding: euc-jp

name = "ルビ緒"
group = "情報"
lang = "スウェーデン"

printf("%sです。\n",name)
printf("%s系です。\n",group)
printf("%s語選択です。\n",lang)

変数の解説は以下のとおり。

name, group, lang
String(文字列) が代入された変数
文字列
数値でないもの全て。 " (double quotation) で括られている。
printf("変換指定子",変数)
printf 文。 変数を使って表示するときに用いる。
%s
文字列を表示する変換指定子

計算機は " をつけて変数に代入されたもの全てを文字列であると判断する。 変数に入れたものを表示するには、 printf 文を使う。 , (comma) でつないで、 変数を指定する。

上記のプログラムにおいて、 %-10s と変更するとどのように表示が変わるか。 またその表示はどのように使われるだろうか。

ファイルの属性

ファイルには 3 つの許可を持たせることができる。

ファイルの属性は、 ls コマンドをオプションを使って実行すると分かる。 directory Ruby の下で、 ls コマンドを実行してみよう。

%ls -l

とすると r,w,x,- という文字がファイル名の左端に現れる。

%ls -l
-rw-r--r--   1 madoka  users     189 Jun 28  2005 プログラム.rb
-rw-r--r--   1 madoka  users     193 Jun 22  2005 プログラム2.rb
-rwxr-xr-x   1 madoka  users     110 Jun 12  2005 プログラム3.rb*

上記のリストで、どれが実行可能であるだろうか。 根拠とともに答えよ。

ヒント: 自作のプログラムについて、

%ls -l

chmod +x する前後で行い、結果を調べてみる。 なお、 x は実行可能(eXecute)の x を表す。

ls した結果、 * がファイル名の横についていることでも、 実行可能であることがわかる。

それでは r, w は何であるだろうか、予想し、調べよ。

右寄せと左寄せ

名簿の氏名は左寄せであり、簿記では金額は右寄せに記入する。 printf 文では出力方法の工夫が可能である。

printf 文は、 数値や、文字列を表示させるのに使う。語源は、 "PRINT Formatted" すなわち形式を守った出力を行う。

整数値を表示するには

%d には整数(decimal)値を与える。その間に数字を入れると、 その字数だけ桁を空ける。

%3d なら %d の部分の整数値に対して 3 桁用意して表示する。

変数 mice100 を代入する。 printf 文で出力するとき、 %d%5d で出力させるとどのように異なるか、答えよ。

小数値を表示するには

小数点(floating point number)表示したい場合は %f を用いる。


%用意する桁.小数点以下の桁f

という format を使う。 小数第 2 位まで表示させたいなら、

%10.2f

とする。あらかじめ数値を表示するために確保した 10 桁のうち 2 桁を小数のために使う表示を指定したことになる。

整数の桁数は.を除いた 8 - 1 = 7 桁分である。

プログラム while_meta.rb を小数点第 1 位まで結果を見せるよう改良したい。 どこをどのように改良すればよいか、 答えよ。

Escape Sequence

Escape Sequence は出力方法を工夫するためにあるが、まずは代表的なものを学ぶ。

\t Tab を表す Escape Sequence 少し間隔を空けて表示
\n 改行を表す Escape Sequence 改行して表示

変数として duck = 100, weight = 0.7 を用いる。 次の文章を、printf 文をうまく使って表示せよ。


あひるが 100 羽いると、70 kg の人間を持ち上げることができることができる。
このとき、あひるは平均
0.7 kg/羽
分を持ち上げていることになる。

実行結果をレポートに貼りつけるには

カットアンドペーストは、Kterm の実行結果を貼りつけるときに使う。 マウスを Kterm に持っていき、ドラッグし、範囲を選択する。 Emacs で中央のボタンを押すと、貼りつけることができる。 もしも貼りつける場所を間違えた場合は

Ctrl-x u
とする。Undo! と表示されれば成功。
Undo!

プログラムをレポートに貼りつけるには

Emacs でカーソルを貼りつけたい

Ctrl-x i

を実行すると、 ミニバッファに貼りつけたいファイル名を指定するよう指示される。 プログラムを貼りつけるので、

Insert file:˜/Ruby/プログラム.rb

とする。 プログラムは $HOME の下の directory Ruby の下にあるので、directory と file 名を指定する必要がある。

課題プログラムを書くには

Emacs では以下の方法が確実である。

  1. 課題名のプログラムを Ctrl-x Ctrl-f で新規作成。
  2. Ctrl-x i で、もとにしたいプログラムを貼りつける。
  3. 課題向けに変更していく。

部分的な複製

部分的に必要な場合は、もう一枚 Emacs を増やし、それをコピーする。

  1. もとにする Emacs を用意する。
  2. Ctrl-x 5 2 でもう一枚 Emacs を増やす。
  3. Ctrl-x Ctrl-f で作成したい Emacs の画面にする。
  4. Ctrl-1 で Emacs の切り替え。もとのプログラムで、範囲指定。
    • Ctrl-Space で範囲指定の開始。
    • M-w で範囲指定の終了。
  5. Ctrl-1 で、作成したいプログラムに切り替え、 Ctrl-y を押して貼り付ける。
  6. もしも貼りつける場所を間違えた場合は Ctrl-x u とする。

作業用 Emacs を増やす

出席課題をするのに Emacs での実行が必要、あるいはレポートを書くために、 もとにしたいプログラムがある、などの理由で Emacs を増やしたいときには、 ミニバッファで、

Ctrl-x 5 2

とすると、Emacs が増える。

便利なキーバインド

何度も実行するときに便利である。

Ctrl-1Emacs
Ctrl-2Kterm
Ctrl-3Console
Ctrl-4Firefox

複合代入演算子

変数に数値を代入するとき、


変数 "代入演算子"= 数値

を使うことがある。これは、


変数 = 変数 "代入演算子" 数値

と等価である。前者で使われる代入演算子を複合代入演算子、 後者で使われる代入演算子を単純代入演算子と呼ぶ。

代入演算子の種類

代入演算子は、足し算、引き算、かけ算、割り算、余りの 5 種類がある。

x += 10 x = x + 10
x -= 10 x = x - 10
x *= 10 x = x * 10
x /= 10 x = x / 10
x %= 10 x = x % 10

複合代入演算子の解説は以下のとおり。

+=
もとの数にいくつか加えたものを代入したいときに使う
-=
もとの数からいくつか引いたものを代入したいときに使う
*=
もとの数に何倍かしたものを代入したいときに使う
/=
もとの数を割った商を代入するときに使う
%=
もとの数を割ったあまりを代入したいときに使う

よい考察を行なうには

計算機は、人間が入力した計算をそのまま実行する。 複雑な計算や大きな数字も人間の手計算に比べると簡単に済む。 しかし、ここには大きなワナがある。

ということで、手計算で実行を追いかけるのは当たり前である。 方法はいくつかあるが、 まずは UNIX で計算するコマンドを体験してみよう。

%bc -l
3 * 2 + 2 * 4
14
quit

終了は quit である。 実行した計算を検証することは、考察では大事なことである。 べき計算のときには hat ^ を使う。3 のべきを計算すると次のようになる。

%bc -l
3^2
9
3^3
27
quit