しばらく勉強日記に更新が途絶えてました。勉強の方はぼちぼち進んでましてネットワークのチャプターの後半まで行きました。7月中に「やさしく学ぶソフトウェア開発技術者」を終える予定でしたが、遊びすぎのため無理でした。まぁまだ時間あるし大丈夫だと思います。

ネットワークはデータベースに比べると個人的にわかりやすいのですが、細かい用語の意味とか曖昧になってる部分が多かったです。しかしテキストの内容と過去問を比較しても、「やさしく学ぶソフトウェア開発技術者」の内容ではちょっと中身薄いかなぁと思いました。ここら辺は別の文献をあたるか、過去問の研究をした方がよさそうですね。

いろいろ勉強したところをまとめておく。

デジタル信号変調方式
  • 振幅変調方式:AM(デジタル信号のアナログ信号の振幅の大小によって伝送)
  • 周波数変調方式:FM(デジタル信号をアナログ信号の周波数の高低によって伝送)
  • 位相変調方式:PM(デジタル信号をアナログ信号の位相の違いによって伝送)
伝送の多重化
  • 周波数分割多重化方式:FDM(異なる周波数の波を合成して信号を伝送)
  • 時分割多重化方式:TDM(伝送路を一定時間ごとに切り替えて多重化)
  • 波長分割多重化方式:WDM(波長が異なる光を用いて多重化)
回線制御方式
  • コンテンション方式(対等な端末が早いもの勝ちで送信権を獲得)
  • ポーリング・セレクティング方式(制御局とそれに従属する端末の制御方式)
OSI参照モデル
  1. 物理層(電気的、物理的レベルの)
  2. データリンク層(誤り検出など)
  3. ネットワーク層(通信経路の選択)
  4. トランスポート層(通信の信頼性)
  5. セッション層(通信の開始、終了)
  6. プレゼンテーション層(データ形式の管理、圧縮、暗号化)
  7. アプリケーション層(アプリケーションに対応)

今日でとうとうデータベースの章の終りまできました。一通り学んだのですが、なんかわからないところが多すぎだった。これは要復習だなぁ。実際、Windows用のフリーソフト作家はデータベースなんて操作しないもんなぁ。ここらへんがホビープログラマの限界といったところでしょうか。

わかりにくかったところをまとめておく。

トランザクションの性質(ACID属性)
  • 原子性(トランザクションがコミットまたはロールバックのいずれかで終わる)
  • 一貫性(トランザクションの実行の前後でデータベースに矛盾が発生しない性質)
  • 独立性(複数のトランザクションを実行した場合でも逐次実行した結果になる)
  • 耐久性(一度完了したトランザクションの内容は障害が起きても損なわれない)
障害管理
  • ロールフォワード(障害発生時に手続きが完了してるトランザクションの復旧)
  • ロールバック(障害発生時までに手続きが完了してないトランザクションの復旧)

あとはなんだろ2相コミットとかなんとかとか、わけわからん。とりあえずテキストを進めたいので、軽く復習して、次のネットワークのチャプターに進むことにする。

やさしく学ぶソフトウェア開発技術者」もやっとこさデータベースのSQLの章まで行きました。行ったのですが、章末の過去問にあたってみたところ、さっぱりわからなかったことをここに報告します。

テキスト中のサンプルは非常に簡略化されててわかりやすい例なのですが、実際の問題だと、「GROUP BY ~」とか「NOT EXISTS ~」とか構文が連続で出てきてわけわからーん。

7月中にテキストを終える予定だったのですが、こんなペースじゃ全然進みません。データベースの次には「ネットワーク」と「システム開発」のチャプターがあるしどうしましょう。やっぱ8月にRO休止しちゃおうかなぁなんてことも考えています。

最近ちょっと勉強にまんねり気味でペースが落ちています。試験までまだまだあると思って油断してると、あっという間に日にちが進んでしまいますね。

アルゴリズムのチャプターもいまいち消化不良なのですが、また今度復習することにして、今日からデータベースのチャプターに進みました。データベースのモデルについてまとめておくと、

データベースのモデル
  • 概念モデル(現実世界をそのまま分析したモデル。ER図など)
  • 論理モデル(実際のデータベースを表現。階層モデル、ネットワークモデル、関係モデル)
  • 物理モデル(ハードウェアに依存した部分までを含むデータベースの構造)
データベースのスキーマ
  • 概念スキーマ(データベースの論理的な構造に基づくデータを定義)
  • 外部スキーマ(アプリケーションから見たデータを定義。アプリケーションとデータベースを論理的に独立)
  • 内部スキーマ(ハードウェアを意識したデータを定義。データベースとハードウェアを物理的に独立)

ここらへんがややこしくてよくわからない。あとは正規化ですね。

データベースの正規化
  • 第一正規形(繰り返し項目がないようにする)
  • 第二正規形(主キーよって項目が決まるように分割する)
  • 第三正規形(主キー以外によって他の項目が決まることがないように分割する)

正直、第一正規形はわかるのですが、他の2つの区別がよくわからない。テキストのサンプルをしっかり読んで理解しないとなぁ。

今日はコンビニ振込にてソフトウェア開発技術者の試験の申込に行きました。しっかり払ってきましたよ、5100円+手数料。これでもう後には引き返せません。

今日は探索と整列のアルゴリズムについて勉強しました。しかし、使用してる「やさしく学ぶソフトウェア開発技術者」には簡単な説明しか載ってなくて不安。というわけで、学生時代に買った、「アルゴリズムとデータ構造」という本を引っ張り出してきました。まだまだ要点がよくわかってないので、しっかり復習しなくては。

アルゴリズムは最初から手順を順に追って行って、処理の流れと変数の変化を追っていくことが重要ですね。複雑な処理も最初からしっかりと。

今日は朝と昼に出かけていたため、あまり進まなかった。「やさしく学ぶソフトウェア開発技術者」もついにアルゴリズムのページまで進みました。ここらへんは基本情報処理技術者の試験ともかぶっているため、知っていることが多かった。計算量のオーダ記法の問題とか出てくるのかなぁ。

あとは、データ構造として配列とリストの勉強。こういうのってテキストで見て勉強するよりも、実際のプログラムを書いて学習した方がわかりやすいと思う。そしてC言語に手を出して、ポインタでつまづく人とかも出てくるんだろうなぁ(笑

今日はあまり進まなかったけど、夜に勉強すると目が冴えて寝れなくなるために、軽く復習するていどにしておこーっと。

今日はハードウェアの残りの項目である、「周辺機器」と、ソフトウェアの項目の「プロセス」の勉強をした。周辺機器については身近なものであるため、知っていることも多かった。ビデオメモリの容量の計算とかがネックかなぁ。まぁこれはそんなに難しくない。周辺機器の接続方法でIDEやらPCIやらの単語が出てきたが、これは自作経験にある人にとって、馴染みが深そう。

ソフトウェアの項目ではOSやらプロセスやらが出てきた。プロセスの処理についてまとめておこう。

プロセスの3つの状態
  1. 実行可能(実行可能だが、CPUが割り当てられてない状態)
  2. 実行(CPUが割り当てられ、実行されている状態)
  3. 待機(入出力の終了を待機している状態)
プロセスの状態遷移
  • 実行可能→実行(ディスパッチャによってCPUが割り当てられた)
  • 実行→待機(入出力の要求、スーパーバイザーコール)
  • 待機→実行可能(入出力動作が終了)
  • 実行→実行可能(プロセスに割り当てられた時間を使い果たした。優先順位の高いプロセスが実行可能状態になった)

プロセスの選択方法であるスケジューリングアルゴリズムについてもまとめておく。

スケジューリングアルゴリズム
  • 到着順方式(先に起動したプロセスを先に実行)
  • 処理時間順方式(処理時間の短い順に実行)
  • ラウンドロビン方式(プロセスに一定時間割り当てて実行)
  • 優先度順方式(優先度の高いプロセスから実行)
  • 多重待ち行列方式(ラウンドロビン方式に優先度順方式を取り入れた方式)

スケジューリングアルゴリズムを利用した計算問題なんかも出るみたいだから、しっかり復習しなくては。次からはいよいよアルゴリズムのページに突入です。

ハードウェアの項目の続きでメモリと補助記憶装置の勉強をした。RAMやらROMやら、フルアソシアティブやらセットアソシアティブなど似たような単語が連続で出てきて混乱しそう。ちょっとまとめておこう。

キャッシュメモリの高速化方法
  • ライトスルー方式(キャッシュメモリとメインメモリに書きこむ)
  • ライトバック方式(キャッシュメモリだけに書きこむ)
キャッシュメモリの割り付け方法
  • ダイレクトマッピング(メインメモリのブロックをキャッシュメモリの決められたブロックに割りつける)
  • フルアソシアティブ(メインメモリのブロックをキャッシュメモリのどの場所にでも割りつける)
  • セットアソシアティブ(メインメモリのブロックを決められたセット内でどこにでも割りつける )

こんな感じかなぁ。あーもう覚えることが多くていやになっちゃう。あとはキャッシュメモリのヒット率の計算とか、補助記憶装置の容量の計算とか、基本情報で勉強した項目も押さえておかないと。そろそろ過去問に手を出したいけど、まだ全然基礎ができてないからがまんがまん。

7月中になんとか「やさしく学ぶソフトウェア開発技術者」の本を終えて、8月にデータベースとネットワークの勉強を集中的に勉強したいと思います。間に合うかなぁ。

10月21日の試験に向けて勉強を開始しました。俺みたいなホビープログラマはプログラムが書けるだけで、コンピュータの理論なんてあまり理解してない人が多いと思いますが、俺も例にはもれていません(笑
そんなわけで結構がんばって勉強をしています。新しくカテゴリーを作って勉強日記を書いていこうかと思っています。そんなわけなので気になる人は毎日チェックしてみてください。

勉強にあたってテキストは以下の物を利用しています。

とりえず昔に買ってあったり新しく買ったりで3冊のテキストを用意しました。今のところ「やさしく学ぶソフトウェア開発技術者」というテキストを最初からノートにまとめつつ読んでいます。情報理論のページは終えて、現在はハードウェアのところを勉強しています。メモリがどうとかハードディスクがどうとか、そういうところですね。

また、午後試験対策でデータベースとネットワークが苦手なので、以前から持ってたものを合わせて、以下のテキストを用意しました。

SQLなんて趣味でもまるで触ったことがないのですが、「SQL書き方ドリル」は付属のソフトがなかなか面白そうなので買ってみました。なんか本に書き込みながら勉強できるみたいですね。「ここが知りたいTCP/IP FAQ」と「速習TCP/IP」の2冊についてはかなり昔に趣味で勉強した時に購入したのですが、ソフ開の勉強でも役に立ちそうなので本棚から引っ張り出してきました。

というわけで、勉強に使用してるテキストなどの紹介をさせてもらいました。勉強するからには1発で合格したいので頑張りたいと思います。