てぃぐれのプログラマwiki

ワクワクに従う

知らなかった副問合せ【ORACLE】

ANY

ANYはなかなか使わないけど、selectしたもののうち一つでも条件に合えば返す

 

X > ANY(select Y from Z) → ZのYのうちのひとつを上回ればtrue

 → X > select MIN(Y) from Z で良さそう

 

速さはANYの方が速そう

 

ALL

select したもののうち全ての条件に合えば返す

Y > ALL(select Y from Z) → ZのYの全てを上回ればtrue

 → Y > select MAX(Y) from Z でよさそう

 

速さはALLの方が速そう

 

複数一致

select * from A  where (b,c) = select b,c from Dというふうに複数列の条件を一度にかける。これは知らなかった。多分、これを使うべき時はあったんじゃないかな。

不覚。

 

 

OSI参照モデル 各層の特徴【ネットワーク】

アプリケーション層

メールやブラウザなどで使われるプロトコルを規定する層

ユーザーが触れる層である。

 

プレゼンテーション層

文字コードや圧縮形式を標準化してくれる層

この層のおかげで、ほかの環境のサーバーにデータが行っても、文字化け等を防いでくれる。標準化してくれるのだ。日本人とアメリカ人の間にエスペラント語を話す人が仲介してくれる感じかもしれない。

 

セッション層

セッション(データの論理的な経路)を管理してくれる。この層のおかげで、あなたと私のデータが迷子にならずに届くことができる。

 

トランスポート層

ノード(機器?)間の論理的な経路を確保してくれる。データ伝送の信頼性を提供する。

TCP/UDPという二つのプロトコルを使う。

 TCP 信頼性があるけど、遅い。→スリーウェイハンドシェイク

 UDP 速いけど、信頼性が落ちる。

ポート番号の割り当ても規定する。

 トランスポート層でポート番号を見る。

  IPアドレスが住所であるなら、ポートは部屋である。

【CCENT/CCNA 合格講座】OSI参照モデル #6「トランスポート層」 - YouTube

 

ネットワーク層

エンドツーエンドの通信をIPアドレスで行う。

ルータがIPアドレスを元にデータの行き先を決める。

 

データリンク層

ひとつのネットワーク上で直接接続されたノード同士の通信を規定。

 

データリンク層

MACアドレスを使って通信を行う。狭い範囲で通信を行う。

広い範囲で通信を行う場合はIPアドレスで行う。

 

物理層

ネットワークの物理的な接続や伝送方式を規定。

各層から来たデータを0-1の電気信号に変える。

なるほど物理層なのかもしれない。

 

 

PDU プログラムデータユニット 【ネットワーク】

PDU 

プログラムデータの単位(ユニット)は層によって異なる。

 

トランスポート層 - セグメント

ネットワーク層 -  パケット

データリンク層 - フレーム

 

層が深くなるにつれてカプセル化されていくので

フレーム > パケット > セグメント という大きさになる。

部品を均等に並ばせたい【Android】アプリを作りたい Part6

部品を均等に並べたい chainの使いかた

【AndroidStudio】ConstraintLayoutで、部品を均等に並べる方法(chain) - YouTube

縦に並べる vertical 

 

横に並べる horizontal

 

CSSよりよっぽど楽や。。



 

OSI参照モデルの画期的な覚え方【ネットワーク】

アプセトネデブ

7層 ー アプリケーション層

6層 ー プレゼンテーション層

5層 ー セッション層

4層 ー トランスポート層

3層 ー ネットワーク層

2層 ー データリンク層

1層 ー 物理層

 

いやいや、アプセトネデブは意味わからんやろとなるだろう。自分の中ではなぜか馴染みがあったのだ。

白鳥座のα星がデネブだから?

聖書のネブカドネザルの名前が忘れられないから?バビロン捕囚した王?

とにかく、アプセトネデブ、覚えたぞ!

 

CTASとUNUSED【ORACLE】

CTAS

CTAS create tabls as select

selectを使い他のテーブルからデータと構造をコピーしてテーブルを作ることができる。

移される制約はnot nullだけである。

where句を指定することでコピーしたいデータや、件数を0にするような条件句でテーブルだけ作るということもできる。これで一時表とかも作れるなら便利そう?

 

カラムのUNUSED

カラムをDROPするには時間がかかる。そこでset unused を使うと速く向こうにすることができる。しかし、dropもそうだが、一度、unusedすると元に戻すことができない。

その後、drop unusedをすることでリソースを解放できる。

外部キー制約があるときは cascade constraints をセットしてあげる。

onlineで実行するとunusedにしている途中でもDMLを実行できる。

 

MOVE tableの表領域の変更

移動中の表へのDMLは待機させられる。設定されていた索引はunusableになる。なので、移動後に索引の再構築を行わないといけない。

 

シーケンスとシノニム【ORACLE】

知らなかったシーケンスの使い方

シーケンスなんてORACLEを使ってる人からすれば、なんてことはない、連番を採番するオブジェクトだ。SQL SERVERのidentityのような動きをする。

しかし、別々のテーブルの主キーに使い、IDを被らせないという方法ができるのだ。あまり使う用途はないと思うけど。たまに考えたりする時がある。

AレポートテーブルとBレポートテーブルがあり、その履歴みたいなものを管理するときに、それぞれのIDを持つとかぶることがあるからなーというときに使えそう。なんかアンチパターンっぽい気もするが。

 

シノニム

昔よくシノニム作ってたなー。

あまりなんで使っていたのか覚えてないかど、権限絡みである。

別のユーザー(スキーマー)からの操作を管理するために作っていた。

 

知らなかったシノニムの使い方として、AテーブルにinsertするSQLがあり、とある日からBテーブルにしたいというとき、A に Cというシノニムをつけておいて、とある日から BにCというシノニムを付け替えれば、テーブル内容が同じであれば、SQLを書き換える必要がないのである。