文字コード超研究

文字コード

文字に振られた番号
文字:システム開発
文字コード(Shift_JIS):8356 8358 8365 8380 8a4a 94ad
文字コード(UTF8):e382b7 e382b9 e38386 e383a0 e9968b e799ba

文字集合

=文字セット
文字の集まり
文字の種類と順番が規定される


あ、い、う、え、お
か、き、く、け、こ
・・・
ア、イ、ウ、エ、オ
・・・

文字コード系

エンコーディングスキーム
文字と文字コードの対応関係
Shift_Jis、UTF-8等

文字化けの原理

8356 8358 8365 8380 8a4a 94ad に対して
Shift-JISで解釈してテキストエディタで開いた結果
システム開発
UTF8で解釈してテキストエディタで開いた結果
�V �X �e �� �J ��

エンコーディング

=符号化
文字 → 文字コード

デコーディング

=複合化
文字コード → 文字

バイナリーファイル

文字コードを含むコンピュータの読み込み用ファイル

テキストファイル

文字コードを文字に変換して読めるファイル

制御文字、図形文字

0 1 2 3 4 5 6 7
0 制御
文字
図形
文字
1
2
3
5
6
7
8
9
A
B
C
D
E
F

制御文字
画面やプリンターを制御(改行や削除)
図形文字
画面やプリンターに表示される文字(a、b、c等)

符号化文字集合

文字 ←→ 符号 の対応表
文字とビットが1対1で紐付けられ重複は無い
コードポイントが定められる
ASCIIUnicode、「JIS X 0208」等

文字符号化方式

文字集合の各文字についての変換方法
文字集合を運別のバイト列に変換する
JIS系
・EUC-JP
・Shift_JIS
Unicode
・UTF-8
・UTF-16
JIS、Unicode=文字集合、≠文字符号化方式
Shift-Jis、UTF-8=文字符号化方式、≠文字集合

コードポイント

文字コード体系におけるコード位置

ASCII

コンピューターの歴史上初の標準文字コード
7ビット(128種類)の文字コードを持つ
アルファベットや一部の記号(#、$、/等)のみ
現在でもほぼ全てのPC/OSで対応

0 1 2 3 4 5 6 7
0 NUL
(null文字)
DLE
(データリンクエスケープ)
(空白) 0 @ P ` p
1 SOH
(ヘッダ開始)
DC1
(装置制御1)
! 1 A Q a q
2 STX
(テキスト開始)
DC2
(装置制御2)
" 2 B R b r
3 ETX
(テキスト終了)
DC3
(装置制御3)
# 3 C S c s
4 EOT
(転送終了)
DC4
(装置制御4)
$ 4 D T d t
5 ENQ
(照会)
NAK
(受信失敗)
% 5 E U e u
6 ACK
(受信OK)
SYN
(同期)
& 6 F V f v
7 BEL
(警告)
ETB
(転送ブロック終了)
' 7 G W g w
8 BS
(後退)
CAN(とりけし) ( 8 H X h x
9 HT
(水平タブ)
EM
(メディア終了)
) 9 I Y i y
A LF
(改行)
SUB
(置換)
* : J Z j z
B VT
(垂直タブ)
ESC
(エスケープ)
+ ; K [ k {
C FF
(改頁)
FS
(フォーム区切り)
, < L \ l |
D CR
(復帰)
GS
(グループ区切り)
= M ] m }
E SO
(シフトアウト)
RS
(レコード区切り)
. > N ^ n ~
F SI
(シフトイン)
US
(ユニット区切り)
/ ? O _ o DEL
(delete)
ISO646

ASCIIの国際化Ver
アルファベット部分はそのままに、記号部分を各国で入れ替えている
ASCII:# → ISO646:£
「ISO646準拠」等と表記される

JIS X 0201

ISO646の日本Ver
ASCII:\ → ISO646:¥
7ビットを拡張し、半角カナも使用可能に

Shift-JIS

日本のスタンダード
JIS X 0201をベースに改良

Unicode

世界中の文字を収録する文字コード規格(符号化文字集合)
Unicode用の文字符号化方式として、
UTF-8、UTF-16等がある
コードポイントの表記を特別に「U+16進数」で表す
例:U+200D

UCS

Universal multipul-octet coded Character Set
全世界的、複数のオクテットを使用した符号化文字集合
=Unicode用文字集合に番号を振ったもの
※この番号は文字コードではない

Unicodeでは、
・Unicode用の文字コード(UTF-8、UTF-16等)と、
・Unicode用の文字コード用の文字集合(=UCS)
を厳密に定義・区別している

UCS-2
=2オクテット=2バイト=16ビット
=65,536種類の文字集合
UCS-4
=4オクテット=4バイト=32ビット
=約21億種類の文字集合
※31ビットのみ使用する

Unicodeの使用

・Windowsのメモ張では「文字コード」として「Unicode」を指定して保存できる。
・Javaでは「Unicode」が使用される。
等について。
Unicodeは(符号化)文字集合であって文字コードではないハズでこれは矛盾しているのでは?
文字符号化方式」参照
⇒メモ張やJavaでいうUnicodeは「UTF-16」と決められているそうです。

Webを支える技術

概要


HTTP、URI、HTML、そしてREST
実戦的なWebサービスの設計指針
なぜWebはこんなにも成功したのか

WEBのアーキテクチャスタイル

新システム設計時には下記、RESTアーキテクチャスタイルから必要な機能を選択する。

機能 内容 利点
クライアント/サーバ クライアント:ユーザインタフェース
サーバ:データストレージ
に役割を分離する
マルチプラットフォーム
(PC、携帯、ゲーム機)
サーバの助長化
ステートレスサーバ サーバ側でクライアントの状態を管理しない サーバの実装を簡略化できる
Cookieを用いると複雑化する
キャッシュ リソースを再利用する 通信量・回数低減
統一インタフェース GET、POST等8つのメソッドに固定 シンプル
独立性向上
断層化システム システムを断層化(分離)する ロードバランサ、プロキシ等の別システムを拡張できる
コードオンデマンド スクリプトプログラムをサーバからダウンロードしてクライアントで実行する クライアント側のみでの複雑な処理が可能

URI

URIを変わりにくくするためには
プログラミング言語に依存した拡張子、パスを含めない


https://office-yone.com/servlet/LoginServlet

メソッド名、セッションIDを含めない
https://office-yone.com/login.do?action=show

https://office-yone.com/login.jsp?jsessionid=99999

リソースを名詞に

URIのユーザビリティ
URIをシンプルに短くする事で、
・タイプミスの軽減
・メディアでの露出のし易さ
・経費削減
等が見込める

不透明性


想像


本来アクセスされたくないリソースにアクセスされる恐れが高まる

HTTP

TCP/IP

HTTPはTCP/IPが動作する事を前提に動作する

プロトコル 処理内容
アプリケーション層 HTTP、SSH、SMTP、DNS 接続~送受信~切断
セッション層
トランスポート層 UDP、TCP IPから送信されたパケットの到達処理
ネットワーク層 IP パケットを宛先へ送信
物理層/データリンク層 イーサネット 電気信号を伝達

同期型

HTTPは以下の方式を採用しており、レスポンスを取得するまでは待機し続ける。
クライアント/サーバ方式
リクエスト~レスポンス

リクエスト/レスポンスメッセージ

HTTPリクエストメッセージ
HTTPプロトコル/HTTPリクエスト」参照
HTTPレスポンスメッセージ
HTTPプロトコル/HTTPレスポンス」参照

ステートレス

ステートフル ステートレス 備考
クライアントの状態
アプリケーション状態
記憶する 記憶しない
通信量
差分のみリクエストする

常に状態をリクエストする
負荷 認証時等
スケールアウト ×
実装 複雑 単純

メソッド

メソッド 処理内容 べき等 安全性
GET リソースの取得
POST リソースの作成、追加、他 × ×
PUT リソースの更新、作成 ×
DELETE リソースの削除 ×
HEAD リソースのヘッダ(メタデータ)取得
OPTIONS リソースがサポートするメソッドの取得
TRACE 試験用
CONNECT プロキシ接続設定

べき等
常に取得できる結果が同一である事
PUT、DELETEを複数回実行した場合、1回目で更新対象が変化して2回目で更新が失敗したとしても、更新したという結果が得られる
安全性
リソースが変化しない事

ステータスコード

HTTPプロトコル/HTTPリクエスト」参照

HTTPヘッダ

メタ情報を記述する部分(≠body)
ヘッダ情報からプログラムの挙動を決定する
(主にサーバ)

メディアタイプ

bodyの内容の種類を示す
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

ファイル形式 一般的な拡張子 MIMEタイプ デフォルト文字コード
charset未指定時
テキスト .txt text/plain ISO 8859-1
※英数字、記号から成る
(日本語無し)
テキスト .csv text/csv
HTML文書 .htm .html text/html
スタイルシート .css text/css
JavaScript .js text/javascript
VBScript .vbs text/vbscript
CSS .css text/css
XML文書 .xml text/xml(非推奨)
GIF画像 .gif image/gif 無し
JPEG画像 .jpg .jpeg image/jpeg
PNG画像 .png image/png
JSON文書 .json application/json
CGIスクリプト .cgi application/x-httpd-cgi
Word文書 .doc application/msword
PDF文書 .pdf application/pdf
JavaScript .js application/javascript
XML文書 .xml application/xml 無し
XML宣言部での定義推奨
<?xml version="1.0" encoding="utf-8" ?>
XHTML文書 .xml application/xhtml+xml

エンコーディング

charset=utf-8
charset=sjis

Javaでなぜつくるのか

概要


「10年後も通用する基本を身につけよう」のコンセプトで出版された「なぜ~」シリーズのJava版。
クラス、配列、例外等、
お作法として書いていた、
・コンパイル、リリース方法
・プログラムコードの理由、仕組み
をより理解できる様になります。

Javaの仕様

JVM

・JVMを介する事でほぼ全てのコンピュータ上でJavaプログラムを動かす事ができる。
ハードウェアベンダーはJVMを動作させる試験に合格して初めてJavaマークを表示する事ができる
・JVMを介する事でほぼ全てのOS上でJavaプログラムを動かす事ができる。
JVMは各OSの極めて基本的な機能のみに対応
JVMはほぼ全てのコンピュータ上で動作する様に作られている
JAVA 重要用語/JavaVM」参照
現在、新しいハードが作られた際にはハードウェアメーカーは新しいJVMを開発せざるを得ない様な状況になっている。

実行方式

Javaは中間言語(classファイル)にコンパイルし、
JVMが中間言語をインタープリタ方式で実行する。
この為、純粋なコンパイラ言語より処理速度は劣るが、インタープリタ言語には勝る
しかしインタープリタ言語と同等の互換性を保てる。

方式 コンパイラ インタプリタ Java
実行形式 マシン語 言語のまま Mix
実行速度 速い 遅い 中間
命令種類 多い 少ない 中間
互換性 ×
コンパイラ
ハード毎に異なる
インタープリタ
ハード毎に異なる
JVM
ハード毎に異なる
利用者がコンパイルする必要がある そのまま利用可 そのまま利用可
インストール 不要 インタープリタが別途必要 JVMが別途必要

辞書/インタープリタ」参照

互換性

Javaの特徴
・互換性が高い
・ソフトウェア寿命が長い

Javaが普及した理由

本書発行時だけでなく2016年現在でも、Javaは業界内でトップの互換性を持っている。
それは結果的にそうなっただけでありJava言語やJVMの仕様が他のものよりも画期的に優れているという訳では無い(と思います)
似た様な仕組みで互換性を高めようとした例は多いが全て失敗ている。
とは言えJavaは以下の理由により上述の互換性、ソフトウェア寿命の長さを実現している。
・オブジェクト指向言語である為に企業からの参画が多かった
・JCPの仕組みにより(一企業や一個人でなく)社会的に認められた機能だけが標準化される為、全ての機能に無駄が無い。
Java重要用語/JCP」参照
・多くの人間がJavaに関わっているからこそ大手ソフトウェアベンダーがJavaの使用を中止してもJavaの使用を継続する人間が多数居る事でJavaの社会性は保たれる。
・たまたまハード面の性能向上、価格低下が急激に進んだ時期だった
等の理由により徐々にJVMに対応するハードウェアベンダーが多くなり、
多くなると対応していないベンダーは弱みになる為にそこも対応せざるを得なくなり今に至る
という流れです。
もっとも現在、PC上でプログラムを動作させるニーズは減っており、
多くはサーバー上で動作、クライアントはブラウザで操作するという形が一般的です。
クライアントにJVMは必要無い
インターネットやフロントエンド技術の普及が進んだ結果ですが、
昔からこの状況であればJavaがここまで浸透する事は無かったかも知れません。

メモリ管理

stack_heap

スタック領域

stack:積み重ね
メソッド呼び出し時、
・メソッドへの引数
・メソッドからメソッドを呼ぶ場合の戻り値
・そのメソッド内で宣言されるローカル変数
等の最低限必要なデータを確保する
そのメソッドを抜けると削除される(上書きされる)
メソッドを終了すると使えない(システムが自動管理)
大量のデータを扱えない

ヒープ領域

stack:積み重ね
Java、.Netではインスタンスが置かれるメモリ領域
・メソッド間で引き渡し可能
・大量操作可能
・削除可能

プログラム領域

・ソースコード
・リテラル
等が保存される領域

他言語との違い

C言語 Java
オブジェクトの作成場所 ・スタック
・ヒープ
どちらにでも置ける
ヒープのみ
オブジェクトのポインタ操作
P* p = ~;
p += 100;
×
オブジェクト変数への代入値 別の型:○
P* p = "Java"
別の型:×
オブジェクトの破棄 手動 自動(ガベージコレクション)

ポインタの問題点」参照

配列

stack_heap2

C言語 Java
扱い 自由 オブジェクト
=ヒープ領域にしか置けない
=ガベージコレクションの対象
index数を超えた操作 ×
IndexOutOfBoundsException

プロになるためのWeb技術入門

JavaでのWEBアプリを作成するに当たって読みました。
JSP,サーブレットといった技術はまさに理解したかった項目だったので良かったです。
過去、ネットワーク越しに文書を共有したいというニーズがあってHTTPが生まれた。

クライアントの操作によって対象を動作させたいというニーズがあってCGIが生まれた

CGIを高速に大量に動作させる為にServletが生まれた

Servletのモジュールをクライアント側とサーバ側で分離させる為にJSPが生まれた
という様に時系列に沿って各技術を説明してくれています。
結果、アプリケーションサーバ(Tomcat)、JSP、サーブレット
に多くのページを割いていますが、非Javaエンジニアに取っては分かり難くないでしょうか?
大丈夫でしょうか? PHPやRubyエンジニアに取ってもこれらは有用でしょうか?
.Net限定エンジニアに取っては難しいと思います。
ただここを理解すればIISの設定等も格段にやりやすくなるとは思いますが。
WEBの技術がPerl→Javaを経て現在に至る事の証左とも言えるでしょう。

他、以下について説明しています。
サーバ, クライアントモデル
HTTPプロトコル
IPアドレス
URL, URI
GET, POST
CGI
Cookie
Session
Web システム構成
WEB サーバ
DB サーバ
アプリケーションサーバ
Webアプリーション
フレームワーク
Web アーキテクチャ
MVC Pattern
layer Pattern

本サイトの参照記事
[JAVA]

ネットワークはなぜつながるのか

概要

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

ユーザーがブラウザでWEBを閲覧する際の技術的なデータのやり取りを解説する本。
WEBアプリを作成していて、「当然こうするもの」とされている言わゆるオマジナイについて、
何故そうするべきなのか?が理解できる。

ブラウザにおけるデータの流れ

OSI参照モデル アプリケーション/プレゼンテーション層」参照

クライアントとサーバーの接続~送受信~切断の流れ

OSI参照モデル セッション層」参照
なお、ブラウザに入力されたホストのIPアドレスは自動的にDNSサーバーに問い合わされる。
DNSサーバー」参照

送信~受信、再送/中止等の流れ

OSI参照モデル トランスポート/ネットワーク層」参照

イーサネット内を流れるパケットの動き

・LANドライバ
・LANアダプタ
・ツイストペア・ケーブル
・リピータ・ハブ
・スイッチング・ハブ

パケットを中継・遮断する動き

・ルーター
・プロバイダ
・ファイアウォール
・キャッシュサーバー
・プロキシサーバー
プロバイダを通じてインターネットを利用する仕組み」参照
ルーター」参照
プロキシサーバー」参照

Windowsはなぜ動くのか

概要

Windowsはなぜ動くのか
2002年、WindowsXP発売後の書籍。
「10年後も通用する基本を身につけよう」のコンセプトで出版された「なぜ~」シリーズ2作目。
CPUのアーキテクチャ、プログラムに対するメモリ管理、ウィンドウ管理、デバイスマネージャ、プロセス管理等、10年経った今でも有用な知識を学べます。
初心者向けを謳ってますが分かりやすく書いてあるものの十分深いです。
基本情報技術者資格等で出てくる仮想記憶等の技術について、
「これを勉強して何になるんだ?」
という疑問がこの本を読んで今更解消されました。
しっかりWindowsでも使われてました。
OS、デバイス、メモリ管理の話は非同期処理や排他処理、プログラム連携を行う際に有用です。
と言うよりここを理解している前提で技術書が書かれているので必須です。
古い本ですがもっと早くに読んでおけば良かったです。

オペレーティング・システムとは

システムコール(WindowsAPI)

OSが、OS上で動くプログラムの為に呼び出す命令。
・メモリの確保、解放
・プロセス、スレッドの切り替え
・入出力装置の制御
等、個々のプログラムが勝手に行うと問題がある処理についてOSに依頼してやってもらう。

ライブラリ

システムコールが動作する実行ファイル。

マルチタスクのふしぎ

メモリー管理

リロケータブル

単一のプログラムだけが動作する前提のOSでは、プログラム領域・データ領域の開始位置を固定していた。
これに対し、OS上で複数のプログラムを起動させる前提で、プログラム領域・データ領域の開始位置を動的にずらして動作させる仕組み。

セグメント

CPUが一度にアクセス可能なメモリ領域。
CPUの性能により大きさが違う。

(ローカル)ディスクリプタテーブル(LDT)

32bitCPU以降で利用されるメモリ領域。
プログラムがメモリ領域においてどこからどこまで使用するのか?
を記憶しておき、例えプログラムによって命令されたとしても範囲外の領域に書き込む事はできない構造になっている為、
マルチタスク環境における安定性が保障させる。
また、存在フラグによって仮想記憶も実現される。

仮想記憶

メモリ領域の不足に対して、ハードディスクをメモリとして扱う技術。
OS上で動作するプログラムが使用するメモリ領域の一部を仮想記憶へコピーし、必要になった場合にはまた戻す。
スワップ方式/ページング方式がある。

存在フラグ(P:Presentフラグ)

仮想記憶利用の為のフラグ。
本来のメモリ領域にはデータが無い場合、存在フラグはOFF。ある場合はON。
ON/OFFに応じて仮想記憶からのデータの復元が行われる。

セグメント不在割り込み

プログラムを実行する際、読み込み先メモリ領域にプログラムが無い場合(仮想記憶領域にページアウトされている場合)、
OSはセグメント不在割り込みを発生させ、あらゆる処理に優先してメモリ領域にプログラムを復元させる。

スワップ

(スワップイン/スワップアウト)
仮想記憶利用の方法。
プログラム(セグメント)単位でプログラムを仮想記憶領域に退避、復元する。
32bitCPUではセグメントが大きい為ページングが使用される。

ページング

(ページイン/ページアウト)
ページ(4KB)のメモリ領域単位で仮想記憶領域にプログラムを退避、復元する。
この際、プログラムにおけるどの部分をページアウトしているか?はページテーブルで管理する。

DLL

通常のコンパイル・リンク手順(StaticLinkLibrary方式)
・ソースファイル
↓(Byコンパイラ)
・オブジェクトファイル
・ライブラリ
↓(Byリンカ)
・実行ファイル
DLLを利用する手順(DynamicLinkLibrary方式)
・ソースファイル
↓(Byコンパイラ)
・オブジェクトファイル
・ライブラリ
・スタブ
↓(Byリンカ)
・実行ファイル
※DLLは実行ファイルとしては取り込まれない。
スタブを用いて参照経路を確保するだけで、実行時に(動的に)初めて取り込まれる。

スタブ

実行時にDLLを呼べる様に、リンクの際に作成されるプログラム。
オブジェクトファイルからDLLの呼び出しを仲立ちする。

マルチウィンドウ

ウィンドウハンドル

Windows上で各ウィンドウを識別する為の番号
厳密には一つのウィンドウ内でもボタンやメッセージ領域等で別の数字が割り当てられおり、
これにより各オブジェクト、各イベントに応じたイベントハンドラを発生させる事が可能になる。

イベントハンドラ

ボタン押下やマウスクリック等、ユーザーの操作に対してプログラムする特定の処理。
イベントが発生する度に処理を分岐させるのではなく、イベント発生前にイベント毎に処理内容を登録しておく。
=ウィンドウ・プロシージャ

イベントドリブン

イベントハンドラを実行するに当たって、プログラムがユーザーの操作を常に監視する必要はない。
マルチタスク実行中で、他のプロセスが実行中であっても、
自プロセスに対する操作があればイベントを検知するのはOSの仕事。
OSが検知が行う事を前提にしたシステムやプログラミング言語の事をイベントドリブン型、イベント駆動型言語等と呼ぶ。

ハードウェア・サポート

I/Oポートアドレス

Windows上で各ハードウェアを識別する為の数字
プラグ&プレイにより重複しない番号が自動で割り振られる。

デバイスドライバ

OSが行う、ハードウェアに対する操作を仲介するソフトウェア。
本来ハードウェア毎に仕様が異なり、これを操作する為には個別の操作プログラムが必要になるが、
ハードウェアメーカーが、OSの操作命令に対応するプログラムを作成・提供する事によってOS側はプログラムを変更する事なくハードウェアを操作できる。

プラグ&プレイ

ハードウェアをOSに接続した際に自動でOSから操作可能にする機能。

プログラム連携

プロセス間通信

別々のプロセス同士が自プログラムのデータ領域以外のメモリ領域を使ってデータ連携を行う事。
プロセスはプログラム領域に加えデータ領域を持ち変数やスタックに利用する。
しかし他プロセスからデータ領域にアクセスする事はOSにより禁止されている。

ファイルマッピング

プロセス間通信の一手法。
他OSでは共有メモリと呼ばれる。
ファイルをメモリ上に作成(マッピング)し、プロセス同士でこのファイルにアクセスする事でデータを連携する。
例:クリップボード

名前付きパイプ

プロセス間通信の一手法。
他OSではメッセージ・キューと呼ばれる。
ネットワークを介して他コンピュータからも共有されるメモリ領域。
ファイルの様にCreate/Read/Write/Close命令を用いてアクセスでき、Closeすると消滅する。
匿名パイプもあるがOSによって自動的にランダムなパイプ名が付けられるだけで仕組みは同じ。
パイプが勝手に消えたり、他アプリケーションによって上書きされたりする事が無い。
共用メモリー方式より少量のデータを連携する場合、プロセス間で同期を取る必要がある場合に使用。

ミューテックス

プロセス間通信の一手法。
CreateMutex()関数でメモリ空間にミューテックスオブジェクトを作成。
この際、所有者名、オブジェクト名を引数として渡す。
外プロセスから同名のミューテックスオブジェクトが作成されている場合、
OSは既存のミューテックスオブジェクトを探して所有者情報を返すので同名のオブジェクトが複数作られる事は無い。
OpenMutex()
所有者情報を取得
WaitForSingleObject()
所有権が空くまで待機。
ReleaseMutex()
所有権を離す。

セマフォ

プロセス間通信の一手法。
ミューテックスが1プロセスの所有しか認めないのに対し、複数の所有が認められる。
複数のプロセスの同時処理は可能だが、負荷を軽減する為にその数を制限したい場合等に使用。
制限数を1にしてミューテックスと同機能の使い方も可能。
作成、開始、待機、終了はミューテックスとほぼ同じ
CreateSemaphore()
OpenSemaphore()
WaitForSingleObject()
ReleaseSemaphore()

ネットワーク

ポート番号

ネットワーク上でコンピュータを識別するIPアドレスに付加するサブアドレス
IPアドレス+ポート番号をソケットと呼び、コンピュータ上の各アプリケーションを区別する。
Windows上で起動するアプリケーションはデフォルトで使用するポート番号が決まっている。
※メールサービス:110等
起動時に別のアプリによってその番号が使用されている場合は空いている別の番号を使用する。

徹底攻略OracleMasterBronze DBA問題集

特徴

実務経験積みにくい
範囲広い
会場受験のみ
結論
難しい
参考書や問題集を1冊やるだけでは完全に不十分。
他の試験以上に勉強する必要があります。
同時に、ORACLEを業務で扱う以上、DBAの試験範囲の一部を勉強する事は避けられないので、
この資格を取る事の見返りは十分にあります。
頑張りましょう。

復習ポイント

プロセス
SMON
PMON
RMAN
データベース起動の流れ
SHUTDOWN → NOMOUNT → MOUNT → OPEN
それぞれの状態で読み込まれるファイル、アクセスできる権限

バックアップ/リカバリ種類
一貫性/非一貫性バックアップ
ARCHIVE/NOARCHIVEモード
インスタンス/メディアリカバリ
完全/不完全リカバリ

SQLアドバイザ
SQLチューニングアドバイザ
SQLアクセスアドバイザ

資格証明書
oracle_master_bronze
OracleMasterBronze SQL基礎も合格して初めてOracleMasterBronzeの資格取得となる。

徹底攻略OracleMasterBronze SQL基礎問題集


 

概要

Oracle認定資格(OracleMsterBronzeSQL基礎)の為の問題集。
解説が大半で2~3割が問題集
後述する理由により問題集の割合を増やしてほしい所
解説については今は別に本でなくてもどこでも調べられるし・・・
問題の少なさをカバーする為にも複数冊で問題を解く事が必要だと思います。

OracleMaster資格試験の特徴

・PC上で受験
・範囲が広い
・問題数が多い
・業務で慣れていても試験問題は別
ギリギリ業務に必要無い様な所を付いてくる
・とは言うものの、これに受かるくらい勉強していると業務も楽
・広い範囲の勉強を継続する為には本を読むだけでは理解した気になっただけで危険。
問題を説いて間違った所を勉強するの繰り返しがモチベーション的にも良い。

受験テクニック

・短い問題から順にやる
長い問題は適当に答えを選択して「レビュー」チェックを入れ、後で再度考える
・とは言え、ほぼ全ての問題を自信を持って答えられるくらいでないと合格できない。
実力を証明する為の資格
実力無しで、運やテクニックで合格しても最終的に業務で使う場合に実力を証明できないと意味が無い。
・複数選択式問題(チェックボックス)は合計何個選ぶのが正解なのか分からないので最初に全てチェック
→2~3つ選択して「上限越え」の警告が出して判断する

資格証明書
oracle_master_bronze
OracleMasterBronze DBAも合格して初めてOracleMasterBronzeの資格取得となる。


 

徹底攻略Java SE 7 Silver問題集

概要

徹底攻略Java SE 7 Silver問題集[1Z0-803]対応 (ITプロ/ITエンジニアのための徹底攻略)

Oracle認定資格(SE7 Silver)の為の問題集。
・構文(if文、for文)
・変数(型)
・オブジェクト指向(カプセル化、継承等)
・例外処理
等、個別の問題とその解説からなる。

資格試験の為の勉強の有用性

プログラム経験が長かったり、業務でJAVAを使っている方でも試験用に勉強は必要だと思います。
そんな書き方ができるのか!?
とか、
そんな書き方する奴おらんやろ!!
という様な問題が紹介、解説されており、そして実際に試験でも出ます。
しかしこれがあくまで試験用であって業務の役に立たないか?というとそんな事はない。
この一連の資格試験用勉強を通して自分があやふやに理解していた所をかなり深くまで勉強できてとても有意義です。
解説が丁寧です。
当然人によるでしょうが、私はこの本の問題をやるに当たって、実際にプログラムを書いてみたり、他のサイト等で調べたりする必要は少なかったです。
でも調べないといけないところが弱い所であり、そこを強制的に学ばされるのが資格試験の為の勉強の良いところだと思います。
最後に試験形式の問題集が2セット。
実際の試験と全く同じ問題も5つはありました。

以下、備忘録。
試験内容はここに書いてあるくらいレベルです。
構文


 “>

Oracle認定資格

・Bronze
・Silver
・Gold
があり、GoldはSilverの資格が無いと受けられない。
Silverの受験費用は3万円弱。
法人契約等で割引があるので人により変動有り。
2015/04/05現在、一度落ちても無料で1度だけ再試験が受けられる。
JAVAのバージョンSE6、SE7、SE8等それぞれの資格がある。

試験

Bronzeはオンライン受験可能。Silverは2015/04/05現在不可。
(※オンライン受験は約半額)
非オンライン(会場試験)と言っても試験会場では10人一度に、一人一台PCの前に座らされて、問題をやる事になる。
免許証、保険証等2種類の身分証明書の提示が求められる所に権威を感じます。
カンニングはやろうと思ったらできるかも知れませんが、監視カメラとかあるだろうし、問題数が多いのでそんな暇無い。
素直に勉強した方が楽。

証明書

※資格証明書(日本語版)
JAVA Silver資格証明書

※資格証明書(英語版)
JAVA Silver資格証明書2


なれるSE

なれる!SE 文庫 1-12巻セット (電撃文庫)

作者は元技術者でネットワークエンジニアらしいです。
他にもやってたと思いますが。
そして元いた会社、業界、職種そのものにも不満がある。
未経験者を研修無しで実務に付かせる。
重労働、長時間、低賃金で・・・とか。

(1)会社にはスキルの高い人間が居ない

(2)営業は納期が短い、報酬が安い等の無茶な案件しか受注できない

(3)社員は契約を果たす為に無茶な勤務を強いられる

(4)社員辞める

(1)に戻る
私も経験ありますが、
上記の様な悪循環は業界全体にはびこっています。
そして上記の様な会社は、
この様な重労働下でもなぜか辞めない、
もしくは一時的にでも在籍する社員によって成り立っています。
作中の表現で言うと「一輪車操業」。
こういう会社を支えている、何故か辞めない社員の一人が上司(若くて美人)で、
そこに新卒で入社したのが主人公という設定。
前述の通り、主人公は無茶な仕事を振られますが、
根性で頑張ってみると意外とやりがいがあったというのが1巻。
しつこいですが作者は会社や業界に不満があり、
主人公もそれは同様ですが、結局辞めた作者と違って、
主人公は不満を抱きつつもまあまあ楽しそうに頑張ります。
(作中の時点では。と言ってもまだ数か月ですが)
理由としては
(1)尊敬できる上司、同僚がいる事。
(2)一部を除いて上司、同僚は自分と似たような待遇である事。
(3)仲の良い同僚、顧客がいる事。
(4)成長できている実感がある事。
(5)仕事の成果を出せている事、認められている事。

確かに上記の様な理由があれば、毎日終電、休日もほとんど無しでも1~2年は続ける人も居るでしょう。
薄給でも。
20代前半ならほんの一部を除いてどんな会社でも大して給料は変わらない。
であれば数年後への投資としてスキルを磨いておくのは全く理に適っていない訳ではありません。
程度問題ですが。
そんな訳で主人公は文句を言いながらも何とか働き続けます。
しかし11巻。
個人的な理由により重労働を受け入れていた超有能な上司が会社に来れなくなり、
会社の処理能力が低下、顧客からは不満をぶつけられ、同僚間の関係も悪くなる。
クレーム対応ばかりで技術的成長も無く、労働条件は更に悪くなる。
結局、一輪車操業も主人公の会社への在籍理由もギリギリのバランスで成立していただけで、
前述の(1)~(5)のうちのいくつかは崩れ、一気に退職に近づきます。
作中では結局その問題は解決するのですが、現実世界ではそう上手くはいきません。
そもそも超有能な社員が喜んで長時間薄給で働く事もない。
会社の運営というのは本当に難しいなと思います。
結局、不満を抱えてたまま辞めてしまった作者には、
ブラックで悪循環な会社を正常化する答えを持っていないと感じます。
実際無いと私も思いますが。
それはともかく、
運用(保守)の難しさ、面白さについての話の2巻
提案(営業)の難しさ、面白さについての話が3、8巻
プロジェクト運営の難しさ、面白さについての話が4巻
時間契約の常駐案件の難しさ、面白さについての話が7巻
新規開発の難しさ、面白さについての話が9巻
等(ほとんど全部ですが)はとても面白く読めます。
一部の有能な社員が問題を無理矢理解決してしまう所、
前述の通り、そういう超有能な社員が超悪環境の会社を辞めないところが、
現実的にあり得ないですが。
IT業界のイメージが低下しているらしい昨今。
これを読むと更に悪くなると思いますが、それでも覚悟を決めてこの業界に就職する人が読むのは凄く良いことだと思います。
その上で入社した会社が本当に成長できるか?等のメリットを見極め、ブラックな会社から少しでも良い会社に移ってもらいたいです。
くれぐれも鬱になったり、別の業界に行ってしまったりして欲しくないです。