明解Java入門編 第2章まとめ
整数リテラル
整数を表す定数のことを整数リテラルと呼ぶ。
例 57(整数リテラル) "57"(文字リテラル)
文字列と数値の連結
()で囲まれた演算は優先的に処理される。
「文字列 + 数値」あるいは「数値 + 文字列」の演算では、数値が文字列に変換された上で連結が行われる。
変数
値を自由に出し入れできる(数値を格納する箱のような)もの。
一旦値を入れるとその箱が存在する限り値が保持される。
なんの箱かわかるように名前をつける際宣言をする。
(例) xという名前の箱である宣言文→ int x;)
「 , 」で区切れば二つ以上の変数を一度に代入できる(分けたほうがコメントや修正は楽だがプログラムの行数は増える)。
代入演算子
(x = 1;)の「=」は右辺の値を左辺の変数に代入するための記号(代入演算子)
変数は必要になった時点で宣言する。
型
int型:整数を表す整数型の一つ。整数定数は整数リテラルと呼ぶ。
double型:実数(浮動小数点数)を表す浮動小数点型の一つ。浮動小数点数は浮動小数点リテラルと呼ぶ。
String型:文字列を表す。
算術演算
加減算より乗除算のほうが優先される。
整数/整数の演算では少数点以下は切り捨てられる。
変数と初期化
値の入っていない変数から値を取り出すことはできない。
変数の宣言時には初期化値を与えて確実に初期化するとよい。
int x = 1(初期化値)
初期化:変数を生成するときに値をいれる
代入:生成済みの変数に値を入れる
キーボードからの入力
標準入力ストリームを利用する。
標準入力ストリームからの文字の読み込みにはScannerクラスのnext...メソッドを使用する。
演算子とオペランド
演算を行う+や-などの記号を演算子と呼ぶ。
演算の対象となる式のことをオペランドと呼ぶ。
オペランドの数により呼び方が違う。
final変数
値を書き換えることのできない変数。
値の管理を一箇所に集約できる、プログラムが読みやすくなるなどのメリットがある。
final変数の名前は大文字とすることが推奨されている。
原則として初期化すべきである。
初期化されていない場合、一度だけ値を代入できる。
乱数
乱数の生成にはRandomクラスのnext...メソッドを使用する。
文字列の読み込み
文字列の読み込みにはnext()を使う。
スペースも含めた一行分の入力を文字列として読み込むためにはnextLine()を使う。
明解Java入門編 第1章まとめ
Javaは数多くの特性を持ち、オブジェクト指向プログラミングをサポートするプログラミング言語。
ソースプログラムとソースファイル
ソースプログラムはクラスの中にmainメソッドが含まれており、その中に文が含まれる。
プログラムを起動するとmainメソッド内の文が順次実行される。
文の終わりは原則 ; である。
ソースファイルはクラスの名前に拡張子.javaをつけた名前にするのが原則。
ソースプログラムをコンパイルしてバイトコードを生成する。
コンパイルにはjavacコードを使う。(拡張子.javaは省略できない)
生成されたバイトコードを実行する。
中身がバイトコードのクラスファイルというものが作られる。
javaコマンドで実行。(拡張子はつけてはいけない)
コンソール画面へ出力される。
コメント
//(行末コメント)または
/*~*/(伝統的コメント)または
/**~*/(文書化コメント)で記述する。
実行したくない部分をコメントにできる(コメントアウト)
"で囲んだ文字の並びを文字列リテラルと呼ぶ。
他に
整数リテラル
文字リテラル
などがある。
文字列リテラルの連結では+を使う。
改行には拡張表記\nを使う。
文字列リテラルの途中で改行してはいけない。
単語の途中にホワイトスペースを入れることはいけない(スペース、ダブ、改行など)。
ストリーム
コンソール画面など、外部への出力の際はストリームを利用する(文字が流れる川のようなもの)。
System.outはコンソール画面と結びつくストリームである(標準出力ストリーム)。
printlnは()の中の内容を表示し、改行する(かっこに何も入れなければ改行だけする)。
printでは改行されない。
メソッド
依頼された処理を行うprintlnなどはプログラムの部品であり、メソッドと呼ばれる。
インデント
左側の余白(インデント)を用いて記述する(インデンテーション)
LPI Level1試験の勉強で役に立った本・サイト
今日LPI Level1取得?しました〜。
101試験から約一ヶ月!
いろいろ忙しく勉強時間がまとまってとれなかったのもあるけど
102試験勉強は101より辛かったです。
試験内容自体はどっちもどっちかな。102の方が簡単という声もあったけど。
まぁどちらもちゃんと勉強していけばこわくないです!(当たり前)
今日はちょっと自分のことを振り返るため&文章を書く練習のために書いていこうとおもいます。
LPI試験に向けての出発地点
一冊目 奈佐原顕郎さん『入門者のLinux』
SQLを勉強していたころ、インストール時にターミナルは使っていたのですが、シェルとかプロンプトもあんまりわかっていなかった記憶があります。
そういう今までよくわからずにやってきたことがこの本でわかってとてもすっきりしました。理解しやすいように書かれているし、本当になんにもわからない人にはおすすめです。知ってる人から見たら、こんな風に説明すると初心者はわかるのかというのがわかっておすすめです。結果的にめちゃくちゃおすすめです。
二冊目 中島能和さん『一週間でLPICの基礎が学べる本第2版』
この本はLPI試験についてググりまくってると何度か目にすると思われます。
内容は101試験に必要な部分が多い気がしました。なのでふんふんと一度読んだくらいです。わたしには一冊目のほうが役に立ちましたが、たぶんこの本を読んだからこそ101試験の勉強にすんなり入れたのだと思います。
101試験
使用教材 Ping-t スピードマスター
101試験の勉強は、細かいことを覚えるのが大変なのかなぁと思います。
コマンドのオプションとか、たくさんあるよね・・・。
私はソフトウェア管理の範囲が点数低かったです。rpmとかdpkgとか。
101はPing-tさんで必死に解いて覚えたけど、やっぱり実際に手を動かした方が覚えるのはやいです。viとかは操作してめっちゃ覚えた!
インストールとかのとこも何回もやればよかったんだなと。
101ではスピードマスターよりPing-tさんを重宝しました(もしかするとスピードマスターだけでも全然いけるのかも)。
102試験
使用教材 スピードマスター
102試験でも私はPing-tさんに頼りたかったのです本当は。
しかしながら、有料なのですよね、102は。
もう腹をくくってスピードマスターさんと仲良くやっていこうと決意しました。(スピードマスターだけでも全然大丈夫です!とても良い本です!)
102はどうも全体像が掴みにくいものが多いといいますか・・・。IPアドレスすらよくわかっていなかった上に大嫌いな計算(実際簡単)もあるし、クラスがなんちゃらプライベートアドレスがなんちゃらで投げ出しちゃおうかと思いました。
わからない単語ばかりですしね。
それで、一旦落ち着いて、躓いたらなんとなくでもいいからイメージを掴めるようにしました。
用語のイメージをつかむために参考にしたサイト
『「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典』
・http://wa3.i-3-i.info/index.html
cupsにつまずいたとき
『インフラ周りのプロになりたい』
・http://ayufishing.blog.fc2.com/blog-entry-8.html
IPアドレスの計算がわけわからないとき
『IPアドレスの基礎知識』
・http://qiita.com/mogulla3/items/efb4c9328d82d24d98e6
whileの細かいオプションがわからなくなったとき(leとか)
・http://linux.just4fun.biz/?逆引きシェルスクリプト/whileループのサンプル#i9d6272d
あとは自分で集めた知識をもとに図を書いて考えてみるとか。
するとあらふしぎ!IPアドレスでつまずいていた部分がすっきりわかる!
わかった時の感動は半端じゃないですね。勉強しててよかったと思えます。
102はコマンドのオプションとかは少ないですが、コマンドやディレクトリ名を入力させられることが多いので、私は手で書いたり、実際に打ち込んで中身を見たりして覚えてました。
全体振り返り
Level1試験の勉強は根詰めてやればそんなに時間はかからないと思います。
私はオラクルマスターでめっちゃ立ち止まったひとだからそう思うのかも?
試験に受かっても、まだ理解仕切れていない部分が多いと思うので、今後使っていくなかで覚えていかなければならないことがたくさんありそうです。
特にセキュリティのところ!
Linuxはお仕事始めたら使わない日はないよと言われたので頑張ります。
ちなみに101も102も710点でした!よかった!
次はJavaのお勉強をします!
お疲れ様でした〜。
Ubuntuでroot権限使用のために
rootユーザーになるコマンドが紹介されていて
$ su -
Password:
#
#pwd
/root
こういう風に、ちゃんとできたらカレントディレクトリがrootユーザーのホームディレクトリになるらしい。
でも、Ubuntuだと基本suじゃなくてsudoコマンドを使うらしくて
$ sudo -s
これでrootユーザーになる
問題点
これだとカレントディレクトリがrootユーザーのにならない
つまり
$ su
Password:
# pwd
/home/ユーザー名
と同じ状態に。。。
これだとrootユーザー用コマンドの多くが使えないらしい
解決策
sudo su -
こうするとカレントディレクトリが/rootになってくれる
元のユーザーに戻るためには
# exit
カレントディレクトリの謎について
わたしが理解できなかったのは、なぜカレントディレクトリが変えられるパターンと変えられないパターンのsu(またはsudo)があるのか
実務で考えてみる
たとえばなにかのファイルを書き換えたいけど、自分には権限がないとき
sudo -s
を使うと
そのファイルがあるディレクトリまで移動
↓
権限がない!
↓
rootユーザーになればいいじゃん!
↓
sudo -s
↓
そこのディレクトリのままで作業続けられる
一方
sudo su -
を使うと
そのファイルがあるディレクトリまで移動
↓
権限がない!
↓
rootユーザーになればいいじゃん!
↓
sudo su -
↓
ホームディレクトリがrootユーザーのものになってしまったから、そのファイルがあるディレクトリに移動し直し・・・
ということらしい(わかりにくい)
suの -(ハイフン)の意味は、そのユーザーのホームディレクトリにログインするということで、ちょこっとここでroot権限が必要だ〜ってなったときにはディレクトリが変わらないほうがありがたいみたいな感じらしい。
ちなみにホームディレクトリが変わるほうの必要性は、rootユーザー用のコマンドがちゃんと使えるからっぽい
勉強中なので理解が間違ってたら教えてほし
お世話になった引用元2つ
・中島能和 1週間でLPICの基礎が学べる本 第2版
入門者のLinux 終章 まとめ
奈佐原顕郎さん「入門者のLinux」より
・Linuxにはいろいろなディストリビーションがあり、一つのディストリビーションの中にもいろいろなバージョンや派生系があり、インストール方法がある。それらをいろいろなハードウェアに試し、Linuxの多様性を肌で感じること
・多くのスタイルのLinuxに共通する概念や仕組みに関しても理解が深まる
うまくいかないときややり方がわからないときは、思いつく方法をどんどん試すこと
一見無駄に思えることが大切
・答えはコンピュータから自分自身が引き出す
・トラブルを解決する際は、参考にする情報の鮮度に注意すること(バージョンチェックやサイトの更新日時に注意するなど)
以上でこの本のまとめはおしまい!
とてもわかりやすいし手も動かせて楽しいのでオススメです。
個人的には見たこと、聞いたこと、使ったことはあったけど意味はよくわかってなかったみたいなところがわかってスッキリでした〜
次はLPICの勉強がんばります〜
入門者のLinux 13章 まとめ
奈佐原顕郎さん「入門者のLinux」より
文字置換のコマンド
sed
大文字小文字変換でよく使うコマンド
tr
単語を辞書順に並べ替える
sort
単語を数える
uniq -c
出現回数の多い順に並び替える
sort -n -r
・nオプションは辞書順でなく、数字の小さい順に並べる
・rオプションは順序をひっくり返す
まとめ
・様々な細々とした仕事について、それぞれのためのソフトウェアをいちいち用意するのはきりがないし、効率も良くない。
・Unixは、「その仕事のためのソフト」ではなく「その仕事を構成する部品」たちを提供する(wgetコマンドやconvertコマンドなど)。それらを使いユーザーは自分で「その仕事のためのソフト」をワンライナーやシェルスクリプトで組み立てる
・UnixのCUIは相手の大きさによって怯んだりしない。このことが小さいものから大きいものまでいろいろなコンピュータに搭載されている理由のひとつ
・Unixは論理的な整理が可能で、大量のデータを対象とし、自動化が望まれるような仕事に大きな力を発揮する
この章は実践が多いので大変でしたけどその分面白かったです〜
結構この本の中では応用章というかコマンドが少し複雑でした。
入門者のLinux 12章 まとめ
奈佐原顕郎さん「入門者のLinux」より
マルチタスク
・同時に複数の処理をする
$ ps au
・ユーザーのLinuxマシンが今まさに処理している仕事を1行に1つという単位で示している
・個々の行で示されている仕事をプロセスという
・最初の行が表の項目名
・左端のUSERという項目は、そのプロセスを実行したユーザー名
・2番目の項目PIDはプロセスIDで、たくさんあるプロセスを互いに区別するためにある
・3番目の%CPUはCPUの性能のうちどのくらいがそのプロセスに使われているか
・4番目の%MEMはメモリがどのくらいそのプロセスに使われているか
コンピュータの速度が異様に遅いときは3.4番あたりの数値が極端に大きいプロセスがないかどうかチェックするとよい
・9番目のSTARTはそのプロセスが開始された時刻
・10番目のTIMEはそのプロセス実行のためにCPUが費やした時間
・11番目のCOMMANDはそのプロセスを起動したコマンド
バックグラウンドとフォアグラウンド
・シェルでコマンドを走らせるとき、普通はそのコマンドが終わるまでそのシェルでは他のことができない
$ sleep 10
10秒後にプロンプトが出る
ところがこのコマンドの最後に&をつけると
$ sleep 10 &
何か1行表示が出てすぐにプロンプトに戻る
・このときsleep 10というコマンドがシェルの画面の中ではなく、別のところで動いている
コマンドの末尾に&をつけてシェルの画面外で走らせることをバックグラウンドという
$ fg
・fgはフォアグラウンドの略称。シェルの画面の中で実行する
・コマンドを&をつけずに走らせるとフォアグラウンドで実行される
「CTRL」キーを押しながら「z」
↓
^zと表示され、その次の行に[1]+ 停止 と表示されプロンプトが戻る
このときコマンドは一時停止に入る
bgというコマンドを打つとバックグラウンドで再開される
ジョブとプロセス
・sleepのとき、&をつけた場合、結果に[1]というのが出るが、この数値はジョブIDと呼ばれるもの
・ジョブとはまとめて実行されるプロセスの集まり
$ コマンドA | コマンドB | コマンドC のとき
これら全体が1つのジョブであり3つのプロセスの集まりとみなされる
・ジョブの数を増やすとジョブIDも増える
$ sleep 10 & というコマンドを間髪入れずに3回実行すれば
[1]5324
[2]5325
[3]5326
というようにジョブIDの値が1,2,3というふうに増えていき、プロセスIDの値も増えている
・プロセスとジョブは管理するところが違う
・OS全体で統一的に管理されるため多くのプロセスを同時に動かす。それら全てに対し、重複しないようなプロセスIDがつけられるのでしばしば大きな値になる
・そのジョブを実行するシェルで管理されるので大抵コマンドのジョブIDは1番から始まる
プロセス強制終了
・UnixやLinuxはとても安定したOSだが特定のコマンドやアプリケーションがフリーズすることがある。そのときは強制終了する
・ターミナルの中でシェル上で動いているコマンドなら[ctrl]+[c]で強制終了できることが多い
kill プロセスID
・[ctrl]+[c]ができないときに、別のターミナルを開いて実行中のコマンドのプロセスIDを調べkillする
・別のターミナルすら開けないとき
・GUIのウィンドウ全体が停止し、画面全体が1つのCUIのターミナルになる
・そこでログインし、ps auコマンドを実行してプロセスIDを確認し、killコマンドを打つ
・終わったらログアウトし[ctrl]+[alt]+[F7]を押すと元のGUIの画面に戻る
・SSHというやり方でトラブルの起きたコンピュータにログインし、ps auしてkillする
$ kill -kill プロセスID