AngularJS勉強ノート

世界観

  • DOMツリーの操作を隠蔽してくれる。
    • AngularJSで開発する上では、開発者は安易にDOMツリーを操作するのを避けるべき。

用語

  • ディレクティブ
    • テンプレート({{foobar}})で利用できるAngularJSの命令。
    • <img ng-src="https://example.com/{{filename}}.{{ext}}">
  • コントローラ
    • スコープの設定を処理する
  • サービス
    • アプリ固有のビジネスロジックを処理する。
    • サービスを登録するには、value、constant、factory、service、providerのいずれかのメソッドを使う。
  • プロバイダー

ツール

Grunt
Bower
  • パッケージ管理ツール
    • アプリで利用しているライブラリを管理
    • クライアントサイド用(サーバサイドはnpm)

システムアーキテクト試験の勉強ノート

午後2対策のネタ帳

「題意に沿って」「具体的に(規定文字数を埋めるくらい)」書ければおk。

要件定義 (2009)
  • ユーザ要求を正しく理解するために,どのような点に留意してユーザ要求をヒアリングし,どのように要件としてまとめた?
    • 矛盾がないか?
    • 手順・制約が自明なものとして省略されていないか?
  • 要件をまとめる際,ユーザとの認識の相違をなくすために,重要と考え工夫した点は?
    • UML、表、フロー図
システムの段階移行 (2009)
  • 運用期間中の課題をどのように想定し,その課題に対してどのような対応方法を選んだ?
    • 同期:一度の変更で新旧両方のマスタファイルを更新する機能の追加
    • ミーンタイムに旧システムの機能差異を埋めるための暫定的な対応を行う
  • 実施する上で,重要と考え工夫した点は?
    • 暫定的な対応のために追加する機能は,あとで削除する際にほかの機能に影響を与えない方法で実装する。
    • 暫定的な対応を行うとき,{基幹業務システム|EUC|運用}による対応などを組み合わせて,工期・工数を最小限にとどめる。

「○○って××の必要条件ではありますけど十分条件ではないですよね?」みたいなセリフを吐くには

+------------------------+
| +----------+           |
| |          |           |
| | 父である -> 男である |
| |          |           |
| +----------+           |
+------------------------+
  • 以上の関係が成立する(逆は成立しない)ような状況のときに使える。
  • 逆が成立するような素振りを誰かが見せたときに使える。
必要条件
  • 「男である」は「父である」の必要条件である。
    • 右(上位集合、スーパーセット)側の命題のこと。
      • 「それに対しては、必ずそれだと導ける」側。
    • ○○にスーパーセット側を当てはめたときにはこっちを使う。
      • 「『お金を得ること』は『ポルシェに乗ること』の必要条件であるが十分条件ではない。」
十分条件
  • 「父である」は「男である」の十分条件である。
    • 左(部分集合、サブセット)側の命題のこと。
      • 「それに対しては、今回たまたま当てはまっているかもしれないけど、必ずそうとは限らない(他にも候補がある)」側。
    • ○○にサブセット側を当てはめたときにはこっちを使う。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10163405880
https://oshiete.goo.ne.jp/qa/3191432.html

データベース勉強メモ

言葉

関係モデル SQL ファイルシステム
属性(アトリビュート) フィールド(項目)
タプル レコード
関係(リレーション) 表(テーブル) ファイル
● 外部キー
  • そのテーブルにおいて、他のテーブルとのリンクの役割をするキー。
  • そのテーブルから他のテーブルへのジャンプ先。
    • 「ちゃんとジャンプ先がないと駄目」っていうのが「外部キー制約(参照制約)」。
      • 外部キー制約:
        • 表に外部キーがあると、その外部キーの値は、参照する候補キーのどれかの値か、NULL値でなければならない。
● インデックス (索引)
  • Select 文のための補助ツール。
    • Where 句で効いてくる。
    • ヒット率が関係ある。
    • 検索時の性能が上がるが、データ追加時の性能が下がる可能性がある(インデックスを更新するため)。
● 導出項目
  • 他の情報から補完できる項目
相関副問合せ
  • 呼び出し元の情報を参照するようなサブクエリ。
select *
from TABLE_A
where exist (
    select *
    from TABLE_B
    where TABLE_A.ATTR = TABLE_B.ATTR
)

ログ

トランザクションログ。

  • ロールフォワード
    • データベースの媒体障害からの復旧時に使用する。
      • 更新「後」ジャーナルを利用する。
  • ロールバック
    • トランザクション処理が異常終了したときに使用する。
      • Revert みたいなもん。「やっぱやめる」。
      • 更新「前」ジャーナルを利用する。

正規化

Q: そもそもなんで正規化するの?
A: 正規化されたテーブルじゃないと、レコードの Insert, Delete, Update ができないため。

● 第1正規化
+----+---------+       +------+---------+
| 01 | Pikachu |       | 01-1 | Pikachu |
|    | Kairyu  | ----> | 01-2 | Kairyu  |
| 02 | Yadoran |       | 02   | Yadoran |
+----+---------+       +------+---------+
● 第2(3)正規化
+----+-----+---------+        +----+-----+
| No | Id  | Name    |        | No | Id  |
+----+-----+---------+        +----+-----+
| 01 | 025 | Pikachu |        | 01 | 025 |
| 02 | 149 | Kairyu  | --+--> | 02 | 149 |
| 03 | 080 | Yadoran |   |    | 03 | 080 |
+----+-----+---------+   |    +----+-----+
                         |
                         |    +-----+---------+
                         |    | Id  | Name    |
                         |    +-----+---------+
                         |    | 025 | Pikachu |
                         +--> | 080 | Yadoran |
                              | 149 | Kairyu  |
                              +-----+---------+
  • 「Id が決まれば Name も決まる」ような状態は、正規化できる。
  • Id 列が主キーだった場合は第2正規化
  • Id 列が非主キーだった場合は第3正規化

その他

  • 更新可能なビューにするためには、一つの表からのデータを選択するときに加工を行ってはいけない。
  • デッドロック
    • 複数のトランザクションが、テーブルの複数行を異なる順序で相互に更新する可能性があるときに発生する。
  • カーソル
    • SQL を使うとクエリの結果がまとめて返ってくるけど、アプリケーションからは 1 行づつ扱いたいことがある。
    • これを叶えるもの。

Windows10の「スタートアップ」フォルダの場所

ここ

C:\Users\<ユーザ名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

エクスプローラのアドレス欄に以下のように入力すると、すぐアクセスできる

shell:startup

参考

PowerShellで短めのタイムスタンプ文字列を作る

Qiitaに書いたけど、自分で使ってみて使い勝手が悪かった(ファイル名で並べると順序がばらばらになってしまう)のでボツにした記事。

手順

  1. Get-Date の Ticks をとる(整数値化する)
  2. これを 16 進数に変換する
  3. さらに、これの先頭 2 桁と末尾の 5 桁を削る
[Convert]::ToString((Get-Date).Ticks, 16).SubString(2, 8)

結果

426be317
元の時間を得るには
filter Get-DateFromShortenedHexTicksString { [Convert]::ToInt64("8d" + $_ + "00000", 16) | Get-Date }
"426be317" | Get-DateFromShortenedHexTicksString

結果

2016年12月17日 20:49:28

JavaScript勉強メモ

DOMとは

  • 表示したHTML文書の要素をプログラミング言語から操作する仕組み。
  • DOMの仕組みを備えたブラウザは、HTML文書を読み込むと、その構造を基に「documentオブジェクト」をルートにしたオブジェクトのツリー(DOMツリー)を生成する。

scriptタグの位置に注意!

  • ブラウザは、HTML文書を先頭から順に解析していく。
  • そして、scriptタグを見つけると、その中に書かれたJavaScriptコードを実行する。
  • ここで、scriptタグを置く位置が悪いと、「未解析の部分を操作しようとして失敗」といったことが起こりうる。
  • この類のエラーを避けるには、scriptタグをbody要素の最後に記述しておくとよい。
    • ただし、この書き方はHTML文書の可読性の低下を招くことがある。
      • これを避けるには、「onload」イベント(=要素の読み込みが終わった時点で指定した処理を実行できるイベント)を使用する。

コア言語

  • どんな実行環境でも動くJavaScriptの基本的な部分。
  • ECMAScript」という名前で標準化されている。
  • WSHWindows Script Host)ではconsoleオブジェクトが定義されていないので、ブラウザ用に書いたコードが動かなかったりする。