MENU

応用情報技術者試験 - tips17


基礎理論

基礎理論

  • 桁落ち(けたおち)
    • 計算誤差のひとつで、絶対値の差が非常に小さい2つの値の差を求めたときに、仮数部の大半が打ち消しあい、計算結果の有効桁数が少なくなることによって生じる誤差

アルゴリズムとプログラミング

  • 分割統治法
    • 大きな問題を同じ構造をもつ複数の小さな問題に分割し、その小さな問題の解を統合することで最終的に元の大きな問題を解決しようとする考え方
    • クイックソートマージソートなど

コンピューターシステム

コンピューター構成要素

  • 誤り検出
    • ハミング符号
      • 情報ビットに検査ビットを付加することで2ビットまでの誤りを検出し、1ビットの誤りを訂正できる手法
    • 奇数パリティ方式
      • データを構成するビット全体の中でビット「1」の数が奇数になるようにパリティビットを付加する方式で1ビットの誤りを検出可能
    • チェックディジット方式
      • チェックディジット方式は、データの合計値を検査用に付加し、誤りが発生しているかを検査する方式
    • 水平パリティ方式
      • データの水平方向を対象としてパリティビットを付加する方式、垂直方向と組み合わせた垂直水平パリティチェックでは1ビットの誤りを訂正

システム構成要素

  • システム構成要素RASIS(レイシス)
    • システムの信頼性を評価する5つの概念の頭文字をとった造語
      • Reliability
      • Availability
      • Serviceability
      • Integrity
      • Security
  • サーバコンソリデーション
    • 仮想化技術を用いることで、複数の専用サーバに分散・非効率化していたアプリケーションや機能を1台(または少数)の物理サーバに整理統合すること
    • コンソリデーション(consolidation)
      • 統合、統一、合併、整理などの意味を持つ言葉
  • メモリインタリーブ
    • メモリアクセス高速化のための技法で、物理的にひとつの主記憶を同時アクセス可能な複数の論理的な領域(バンク)に分け、これに並列アクセスすることで見かけ上のアクセス時間を短縮することができる
  • ディスクバッファ
    • 主記憶と磁気ディスク装置との間にバッファメモリを置いて,双方のアクセス速度の差を補う
  • MIPS(million instructions per second,ミップス)
    • 1秒間の命令実行回数を百万単位で表すCPU性能の指標
  • MTTR(Mean Time To Repair)
    • システムの障害から回復するために要した平均修復時間

ソフトウェア

  • マルチタスクのプログラムを切り替えるときの方式
    • プリエンプティブ
      • OSがCPUやシステム資源を管理し、CPU使用時間や優先度などによりタスクを実行状態や実行可能状態に切り替える方式
    • ノンプリエンプティブ
      • 実行プロセスの切替をプログラム自身に任せる方式で、プログラムが自発的にCPUを開放した時点で他タスクの実行を開始する
    • ペトリネット(Petri Net)
      • プレース、トランジショントークンの3つの要素を使用した有向グラフでシステムの動作を記述する図法
      • 並行して進行する事象間の同期を表す。その構造はプレースとトランジションという2種類の節点をもつ有向2部グラフで表される
  • ページ置換の基本的な流れ
    • ページフォールトが発生する(ページインが発生する)
    • 主記憶に空きがなければ、置換アルゴリズムが主記憶上から仮想記憶に移すページを決定する
    • ↑で決定したページを仮想記憶に移動する
    • プログラムの実行に必要なページを仮想記憶から主記憶に移動する

ハードウェア

技術要素

ヒューマンインタフェース

マルチメディア

データベース

  • E-R図
    • データベース化の対象となる実体(エンティティ)と実体の持つ属性(アトリビュート)、および実体間の関連(リレーションシップ)を表現する図
    • 任意のオブジェクトとその関連をデータモデル化することができる
  • DFD(Data Flow Diagram)
    • データの生成から消滅に至るプロセスを表現する図
  • 多重度
多重度表記 意味
0..1 0か1
1(1..1) 常に1
(0..) 0以上
1..* 1以上

ネットワーク

  • 待ち行列
    • 資源に対する利用要求を抽象化した数理モデルである。
    • 平均待ち時間などを計算する場合には、まず平均サービス時間および利用率を求める
    • 平均サービス時間は"パケット1つがゲートウェイで転送処理を受ける時間"に相当する

セキュリティ

  • フットプリンティング
    • 特定のコンピュータにサイバー攻撃を行う前の事前準備として、攻撃対象を下調べする行為
  • ルートキット
    • システムログに偽の痕跡を加えることによって,攻撃後に追跡を逃れる
  • ディレクトリトラバーサル攻撃
    • ファイル名を要求するプログラムに対してサーバ内の想定外のファイル名(親ディレクトリの移動「../」など)を直接指定することによって、本来許されないファイルの不正な閲覧・取得を狙う攻撃方法
  • レインボー攻撃
    • 平文のパスワードとハッシュ値をチェーンによって管理するテーブルを準備しておき,それを用いて,不正に入手したハッシュ値からパスワードを解読する
  • ポリモーフィックマルウェア
    • パターンマッチングによる検出を免れるため、感染の度に異なる暗号化/復号ルーチンで暗号化を行うなどして、自身のプログラムコードを都度変化させるマルウェア

開発技術

システム開発技術

ソフトウェア開発管理技術

プロジェクトマネジメント

プロジェクトマネジメント

  • フィット&ギャップ分析
    • 企業の業務プロセス,システム化要求などのニーズと,ソフトウェアパッケージの機能性がどれだけ適合し,どれだけかい離しているかを分析する手法

サービスマネジメント

サービスマネジメント

  • 逓減(ていげん)課金方式
    • システムの累積使用量が増加するに従って利用単位当たりの課金額が減っていく、つまり使えば使うほど割安な単価で利用できるようになっていく課金方式
  • サービスレベル管理(Service Level Management)
    • 顧客とサービス提供者の間でSLA(Service Level Agreement)を締結し、サービスレベルを定義,合意及び管理するプロセス

      システム監査

  • システム監査基準
    • アジャイル手法を用いたシステム開発プロジェクトにおいては,管理用ドキュメントとしての体裁が整っているものだけが監査証拠として利用できる

システム戦略

システム戦略

  • 正味現在価値法
    • 一定期間のキャッシュフローを、時間的変化に割引率を設定して現在価値に換算した上で、キャッシュフローの合計値を求め、その大小で評価する手法
    • 割引率5%とすると、1年後に受け取る100万円は「100万円÷1.05」、2年後に受け取る100万円は「100万円÷1.052」、n年後に受け取る100万円は「100万円÷1.05n」
  • SOA(Service Oriented Architecture,サービス指向アーキテクチャ)
    • 業務上の一処理に相当するソフトウェアで実現されている機能や部品を独立したサービスとし、それらを組み合わせ連携させることで言語やプラットフォームに依存せずにシステムを構築するという手法

      システム企画

  • 非機能要件
    • 業務要件を実現するためのシステムに求められる要件のうち、機能要件以外の要件のこと
    • 一般に制約条件や品質要求

経営戦略

経営戦略マネジメント

  • 知識創造プロセス(SECIモデル)
    • 知識には"暗黙知"と"形式知"の2つがあり、それを個人・組織の相互間で絶えず変換・移転することによって新たな知識が想像されるとする考え方を基に"暗黙知"と"形式知"の交換と移転のプロセスを示したもの
  • ターゲットリターン価格設定
    • コスト志向型の価格設定法で、目標とする投資収益率(ROI)を達成するために得るべき金額を計算し、それを原価に加えて販売価格とする方法
  • バランススコアカード
    • 企業のビジョンと戦略を実現するために、「財務」「顧客」「内部ビジネスプロセス」「学習と成長」という4つの視点から業績を評価・分析する手法

      技術戦略マネジメント

      ビジネスインダストリ

  • EDI(Electronic Data Interchange)
    • 異なる組織間で取引のためのメッセージを通信回線を介して標準的な規約を用いて、コンピュータ(端末を含む)間で交換すること又はその仕組みのこと

企業と法務

企業活動

  • 変動費
  • 系統図法
    • 目的を達成するための手段を導き出し,更にその手段を実施するための幾つかの手段を考えることを繰り返し,細分化していく

      法務


to be continued...

ansibleとansible-core - tips16

ansibleをインストールしたときのあれやこれや

  • ansible 4.0.0をインストールするとansible 4.0.0とansible--core 2.11.1がインストールされる

    pip install ==4.0.0b1

  • コレクションとしていろいろとインストールされている

    ansible-galaxy collection list

  • pip uninstall ansibleでアンインストールするとansible-coreとしては残るが、先程のコレクションは消える

ansible-coreさえあれば自分でコレクションをインストールして実行可能

ansibleとしてのバージョンは3,4と上がっていくが、モジュール開発をする上ではansible-coreのバージョンを意識した開発をしていけばよい?

なお、anisble-coreはもともとansible-baseという名前だった

基本情報技術者試験 - tips15


基礎理論

n進数の変換

  • 10→2
    • 整数部分
      • 商が0になるまで連続で2で割った時、余りが1になるか0になるかでそれを低い桁から並べていく
    • 小数部分
      • 小数部分が0になるまで2進数の基数2をかけて結果の整数部分(1or0)を取り出し、高い桁から並べていく
    • (100.625)10の例
整数部
100 / 2 = 50 ... 0
50 / 2 = 25 ... 0
25 / 2 = 12 ... 1
12 / 2 = 6 ... 0
6 / 2 = 3 ... 0
3 / 2 = 1 ... 1
1 / 2 = 0 ... 1 #商が0になったため終了
→(1100100)2
小数部
0.625 * 2 = 1.25 → 1
0.25 * 2 = 0.5 → 0
0.5 * 2 = 1 → 1 #小数部が0になったため終了
→(0.101)2
  • 2→8
    • 小数点を基準として適宜0を補いながら、3桁ずつ区切る(2進数の3桁で8進数の桁が1桁繰り上がるから)
    • (100011000101.001100)2の例
n進数
2進数 100 011 000 101 . 001 100
8進数 4 3 0 5 . 1 4
  • 2→16
    • 小数点を基準として適宜0を補いながら、4桁ずつ区切る
    • (100011000101.001100)2の例
n進数
2進数 1000 1100 0101 . 0011
16進数 8 c 5 . 3
  • 補数
    • ある数nに足すことで100...0となる数
    • 補数を使って足し算で引き算をする例
通常→980 - 430 = 550
980 + 570 = 1550 ← 桁あふれを無視する
  • 2の補数の求め方
    • 符号ビットを含めた全てのビットを反転したものに1を加算する
100 - 17
100 + (-17)
100 → 01100100
17  → 11101111
---------------
    (1)01010011

シフト演算

  • 論理右シフト
    • 全ビットをそのまま右へ移動
    • 空いた左端には0が入る
  • 論理左シフト
    • 全ビットをそのまま左へ移動
    • 空いた右端には0が入る
  • 算術右シフト
    • 符号付き2進数の符号ビット以外のビットをそのまま右へ移動
    • 空いた左端には符号ビットの値が入る
  • 算術左シフト
    • 符号付き2進数の符号ビット以外のビットをそのまま左へ移動
    • 空いた右端には0が入る

集合と論理演算

データ構造

  • スタック
    • LIFO
    • データを積み上げる操作をプッシュ
    • 上から取り出す操作をポップ
    • スタックポインタで管理
  • キュー
    • FIFO
    • データを列の最後に格納する操作をエンキュー
    • 列の先頭から取り出す操作をデキュー
  • 2分探索木
    • 各節にデータを格納したもので、どの節についても左<中<右のようになっている

XML文書

  • DTD(Domcument Type Definition)
    • 文書型定義

コンピューターシステム

RAID

  • RAID-0(ストライピング)
    • 複数のハードディスクにデータをブロック単位で分割し、並列に書き込む
  • RAID-1(ミラーリング)
    • 2つのハードディスクに同じデータを書き込む

稼働率

  • 直列→どちらかが故障したらシステム全体が終わる
  • 並列→どちらかが故障してもシステムとしては動く

CPU

  • 制御装置

    • 制御用レジスタを持つ
      • 命令アドレスレジスタ
        • 次に実行するアドレスを記憶する
        • PC(プログラムカウンタ)とも呼ばれる
      • 命令レジスタ
        • 主記憶から呼び出された命令を格納する
    • 汎用レジスタ
      • 様々な用途で使用される
  • 演算装置

    • 演算用レジスタを持つ
      • アキュムレーター
        • 演算結果や演算途中のデータが格納される
      • インデックスレジスタ
        • 命令のアドレス部を指定する値が入る
    • 汎用レジスタ
  • MIPS(CPUが1秒間に実行できる命令数)

    1[秒] / 平均実行命令数 * 106

  • nMIPSのCPUの平均命令実行時間

    1[秒] / (n * 106)

  • 1クロックあたりの時間

    1[秒] / (クロック周波数[MHz]*106)

プログラムの動作の仕組み

  • 命令サイクル
    • 主記憶装置から命令を取り出し、解読する工程
    • 命令アドレスレジスタに格納されているアドレスを主記憶装置へ送るとともに、読み出し信号を読み書き制御部に伝える
    • 主記憶装置は指定されたアドレスから命令を読み出し、CPU内の命令レジスタに格納する
    • 1つの命令の取り出しが終了するとプログラムレジスタの値を次に実行するべき命令のアドレスに変更する
  • 実行サイクル
    • 命令を解読し、解読された命令やアドレスに基づいて、実行、処理結果の書き込みを行う工程
    • 命令レジスタに格納された命令のうち"オペレータ部"をデコーダで解読
    • "オペランド部"をアドレス変換機構に送り、有効アドレスを計算
    • 有効アドレスにより、主記憶装置のデータを取り出す
    • 命令を実行する。
      • 通常の命令→オペランド部で指定されたデータを使用して計算を行う
      • 分岐命令→分岐先の有効アドレスを命令アドレスレジスタに格納
      • SVC命令→有効アドレスを引数として割り出し(OSの機能を呼び出す内部割り込み)を行う
    • 実行された演算結果をレジスタ、または主記憶装置へ格納する

論理回路

  • フリップフロップ回路
  • XOR
  • NAND
    • ANDの否定
  • 文字をビットマップで表示→ドットの集まりで文字を表示
    • 96dpi→1インチあたり96個ドットを並べる
  • 文字の大きさ1ポイント=1/72インチ

ハードディスク

  • 磁気ディスクの容量
    • セクタ < トラック < シリンダ < 磁気ディスク全体
  • アクセス時間

    データ転送時間 = 転送データ量 / データ転送速度
    平均回転待ち時間 = 1/2 * 1回転の時間
    1回転の時間(秒) = 60秒 / 1分間の回転数
    1回転の時間(ミリ秒) = 60秒 * 10 * 10 * 10 / 1分間の回転数
    アクセス時間 = 平均位置決め時間 + 平均回転待ち時間 + データ転送時間

メモリ

  • ページング
    • 使うときに仮想記憶上から実記憶上に読み込まれる(ページイン)
    • 空き容量がなくなったときに実記憶上に存在するページを仮想記憶に書き戻す(ページアウト)
      • どのページを追い出すかをはFIFO,LRU(Least Recently Used),LFU(Least Frequently Used)のいずれかの方式で決まる
    • ページフォールト
      • 実記憶上に存在しないページが参照されると発生する割り込み
      • ページアウトが発生する
  • スラッシング
    • 仮想記憶管理においてページングの多発によりシステム性能が極端に下がる現象
  • キャッシュメモリ
    • ライトスルー方式
    • ライトバック方式

割込み

  • 内部割込み
    • プログラム割込み
      • プログラム実行中のエラーによって発生する
    • SVC割込み
  • 外部割込み
    • 入出力割込み
      • 入出力動作が終了したときに発生する
    • 機械チェック割込み
      • ハードウェアが故障したときに発生する
    • タイマ割込み
      • プログラムの実行時間が設定時間を超過したときに発生する
    • コンソール割込み
      • オペレータが介入したときに発生する

システム構成

  • デュプレックスシステム
    • システムが部分的に故障しても待機しているシステムに切り替えて処理を続行するシステム
  • デュアルシステム
    • 1つの処理を2系統のシステムで独立におこない結果を照合させる方式
  • フォールトレランとシステム
    • 部品が壊れてもその影響を最小限に抑え、システム全体には影響を与えずに処理が続けるようにする
  • フールプルーフ
    • 操作ミスが発生しないような作りにするか、操作ミスが発生しても致命的な誤りにならないように設計する

システムのスケールアウト

  • スケールアウト
    • 既存のシステムにサーバーを追加導入する
  • スケールアップ
    • 既存サーバーにメモリやCPUの交換により増強する

技術要素

データの保存手法

  • キーバリューストア
    • 保存したいデータと対応する一意の値を設定して"データ"と"識別できる一意の値"をペアで保存
  • グラフ型データベース
    • ノード,リレーションシップ,プロパティによって関係性を表現
  • 関係モデル
    • 集合論に基づいて、行と列からなる2次元の表で表現
      • 選択
        • 表の中から特定の条件を満たす行を取り出すこと
      • 射影
        • 表の中から特定の列を取り出すこと
      • 結合
        • 共通の列をもとに複数の表を結合して新しい表を作ること

セキュリティ

  • ISMS(情報セキュリティマネジメントシステム)→ISO/IEC 27001:2013,JIS Q 27001:2014
    • セキュリティレベルを保つための仕組みや取り組み
    • ISMS適合性評価制度も設けられている
    • 統合的セキュリティ対策が適切になされていることを証明
  • ISO/IEC15408
    • セキュリティ評価基準
    • 日本ではJISEC(ITセキュリティ評価及び認証制度)
  • リスクアセスメント
    • 特定、分析、評価、対応

開発技術


プロジェクトマネジメント


サービスマネジメント


システム戦略

  • BPO(Business Process Outsourcing)
  • 情報システムの調達
    • RFI(Request for Information)を配布して技術情報などの情報提供を求め、RFP(Proporsal)で調達対象システムや調達条件などを示して提案書の提出を求める、そして検討して決定のあと契約を交わす

経営戦略

  • O to O(Online to Offline)
    • オンラインとオフラインで連携して購買活動を促す
    • LINEでクーポンくるやつ

企業と法務

  • 連関図
    • "原因-結果","目的-手段"の因果関係で問題の構造を明らかにしていく手法
  • PDPC法
    • 自体の進展とともに様々な展開が想定される問題について、対応策を検討して望ましい結果に至るプロセスを定める
  • 親和図
    • KJ法に由来する
    • グループ化する
  • いろいろな曲線
    • OC曲線
      • 検査するときに使う
    • ゴンペルツ曲線
      • ある程度テストをしたらバグは収束する
    • バスタブ曲線
      • 故障が発生するときは重ねて起こる
    • ロジスティック曲線
      • 緩やか→急激→緩やか
      • 人口や製品の普及過程

*1:1-Aの稼働率) * (1-Bの稼働率

共有フォルダについて - tips14

VirtualBoxとWindows10の場合

  • Windows10側
    • 適当な場所にshareフォルダを作成
    • Ex.)C:\Users\"ユーザー名"\share
  • VirtualBox
    • VirtualBoxマネージャーから共有したいゲストOSの設定に入る
    • 共有フォルダ→"設定の編集"で作成したフォルダを設定
    • 自動マウントにチェック
    • 永続化はお好みでチェック
  • ゲストOS側
    • 上タブの"デバイス"から"Guest Additions CDイメージの挿入"を選択
      • 必要な拡張ファイルをインストールする
    • /home/"ユーザー名"/shareにshareフォルダを作成
    • コマンドでsudo mount -t vboxsf share /home/"ユーザー名"/share
    • リロード後"なぜか"/media/share/で共有できていることを確認

変数とメモリ - tips13

  • static演算子使い方

    • グローバル変数
      • 記述されたファイル内のみでの使用に制限される
    • ローカル変数
      • 変数は値を保持し続け、関数を呼び出しても初期化されることはない
  • グローバル変数

    • 静的メモリ
    • ずっと保持される
    • 上のようにstaticをつけるべき
  • ローカル変数

    • スタックメモリ
    • 定義された関数内でしか使えない
    • autoが省略されている
  • 初期化について

    • 一般的にC言語では静的メモリは初期化せずとも初期値を0とする
      • 組み込みにおいては例外もあるが、Cの規格が↑
    • スタックメモリは不定であるため初期化する

関数使いどころ - tips12

この関数はこういう時に使う的なメモ

  • memset

    • ポインタ変数の初期化,構造体の初期化,配列の初期化(memset使わなくても普通にchar hoge[] = "テスト"とすることも)
    • 第一引数にアドレスを渡す
      • ポインタなしの変数→&をつける
      • ポインタ変数,配列→そのまま
  • snprintf

    • 文字列を配列の先頭アドレスからいれる
  • strncpy

    • NULL文字が現れたら終了する
    • NULLが途中にある文字列や、ない文字列にはmemsetを使う
  • fgets

    • ファイルの終わりかつ読み取れなかった場合NULLを返す
    • NULLが途中にある文字列や、ない文字列にはmemsetを使う
    • 第一引数にアドレスを渡す
      • 配列の途中から読み込みたい時は&hoge[i]のようにずらした場所のアドレスをいれる
  • strtol

    • 文字列を基数に応じたlong型に変換する
    • scanfとかで配列に入れた文字列としての数値をlong型の変数にいれる
    • 第一引数にアドレスを渡す
      • char hoge[256]だったらhoge,char *fugaだったらfuga
    • 第二引数にダブルポインタを渡す
      • 変換できなかった場合にいれるアドレスを指定
      • NULLを入れると格納しない
    • 第三引数に基数を渡す
      • 0をいれると自動に判定する

マイコン用語 - tips11

  • UART
    • Universal Asynchronous Receiver/Transmitterの略
    • シリアル信号をパラレル信号に変換したり、その逆方向の変換を行うための集積回路
  • シリアル通信
    • 電気通信において伝送路上を一度に1ビットずつ、逐次的にデータを送る
    • コンピュータにおいては、バス上を一度に1ビットずつ、逐次的にデータを送る
    • パラレルの方がシリアルより高速
    • 伝送路間のクロックのずれという問題が起きない
    • ケーブル本数が少なくて済み、場所をとらない。そのため、周囲のノイズを拾わないように対処することが容易
    • 近接する導体が少ないため、漏話が問題になりにくい
    • USB,MIDI,SPI,I2C
  • パラレル通信
    • 何らかの文字や記号を表すビット群が一度に送られる
    • ISA,ATA,SCSI,PCI
  • SPI
    • シリアル・ペリフェラル・インタフェース
    • SPIバスは、単一のマスタと、1つ以上のスレーブの装置で操作する
  • 水晶振動子
    • 水晶の持つ圧電現象を利用し、その機械的共振から一定の周波数を生み出す素子
  • watchdog timer
    • ハードウェアのタイマーのカウンターがタイムアップする前に、プログラムでカウンターをリセットする
    • リセットされたカウンターは再び0から数え始める
    • この動作をプログラムの一部に取り入れ、周期的にカウンターをリセットする
    • プログラムが暴走すると、この周期的なカウンターのリセット行為が行われなくなり、タイマーはオーバーフローしてプログラムをリセットする
  • プログラムカウンター
    • マイクロプロセッサ(MPU/CPU)内部でデータを保持するレジスタの一種
    • 次に実行すべき命令が格納されているメモリ上の番地(アドレス)を保存しているもの
  • bootloader
    • リセット直後に実行が始まり、プログラムでメモリの初期化やHDDなどの外部記憶装置を行う
  • クロック信号
    • 電子基板半導体チップなどの内部で複数の電子回路が信号を送受信するタイミングを揃えるために規則正しく刻まれる電気信号のこと
  • LSI(Large Scale Integration)
    • 多数の集積回路(IC)群に相当する機能を、1枚の基板に集積化したもの
    • 一つの基板に1000~10万ほどの素子が実装されている集積回路
  • CPU(Central Processing Unit)
    • バス幅で64bitや32bitとかが決まる
    • 制御装置と演算装置
    • ダイ(集積回路が焼き付けてあるシリコンウェーハ)の表面に数千〜1億個ほどの数のトランジスター回路を形成したもの
  • Soc(System on a Chip)
    • 集積回路の上に一つの統合されたシステム自体を組み込んだ製品
    • CPUと混同されることがあるが、CPUはメモリやマザーボードビデオチップなどを別に用意しなくてはシステムを動かすことはできない
  • ネットワークプロセッサ

    - ネットワーキングアプリケーションに特化した機能を持つ集積回路(IC)