pep8 - tips10
pep8
- pythonでコーディングをするときの規約
タブorスペース
- タブを使う、もともとスペースが使われていたら混ざらないようにスペースにあわせる
冷凍庫の霜取り - debris 3
いつかしなければ、、と思ってなかなかできないことの一つに冷凍庫の霜取りがある。
小さいお下がりの冷凍庫は勝手に自らの容積をじりじりと減らしていくのだ。
素麺の季節が終わって薬味の冷凍ネギがなくなったので、冷凍庫が空になった。
まさに今がチャンスだということで平日にも関わらず、霜取りを始めてみた。
何でも調べるのも、と思いまず冷凍庫の電源を落とす。
そして扉を開けっぱなしにする。
これで放置すればいいだろうと思ったが、積もり積もった氷は一向に溶けてくれない。
PCに向かう背中が妙に涼しいのは季節の変わり目というだけではなさそうだ。(冷蔵庫は背後に設置してある。)
温めればいいのではと思い立って、沸騰させたお湯をかけてみた。
底面は溶けたが、強敵は上底なのだ(上底という言葉は台形の公式でしか使わないと思っていた)。
仕方なく手近似合ったフォークで突いてみた。
これが意外に上手く行って大きな氷の塊がガサッと削れてくれた。
誰にも教わらなくてもなぜか上手くいくことが自分に向いていること、と聞いたことがあるが、 作曲もエンジニアもなぜか上手くいくことなんて一つもないので氷を削る人にでもなった方がいいのかもしれない。
今日は冷凍庫は開けたまま眠る。
iPhone Xから楽天unlimitedに繋がらない - tips9
ネットワーク - tips7
メモ
読んだ本
OSI認証モデル
- アプリケーション層
- 通信に使うサービス
- プレゼンテーション層
- データの表現方法を通信に適した形式にする
- セッション層
- 通信するプログラム間で会話をする
- コネクションの開始、終了、同期など
- トランスポート層(Ex.TCP,UDP)
- コンピュータ内でどのアプリケーションと通信をするのかを管理する
- 通信網の品質の差を補完し、通信の信頼性を確保する
- ネットワーク層(Ex.IP)
- データが始点から終点まで届くように管理する
- データリンク層
- ネットワーク上でデータが直接接続された通信機器まで配送されるように管理する
- この層で作成されるパケットをフレームと呼ぶ
- フレームが実際に通信路を流れるデータとなる
- 物理層
- 物理的な接続を管理する
- デジタルを光に変換したりする
音について
- 標本化
- 音声信号を一定の間隔をおいてサンプリングすること
- 標本化定理
- ある周波数のアナログ信号をデジタル化するときアナログで信号に復元するためには、その周波数の2倍のサンプリング周波数が必要という定理
通信で使われるデータ
- 文字で表すことのできるデータをテキストデータ
- 画像や音声などテキストデータ以外のものをバイナリデータ
- 一般的にトランスポート層まではバイナリデータ、アプリケーション層ではテキストデータを扱う
サーバースペックについて
- 何の要素が何に影響を与えるか
システム構成
- クラスタ
- 複数のコンピュータを結合してひとまとまりにしたシステム
- シンクライアント
- 仮想化、処理のほとんどをサーバー側で行う
- P2P
- 端末同士で対等に通信を行う方式
- 分散処理システム
- 複数のプログラムが並列に処理をするシステム
- 利用者は其のことを意識せずに使用可能(アクセス透過性)
- CDN(Contents Delivery Network)
- 動画や音声などの大容量データを利用する際に、回線の負荷を軽減するようにサーバーを分散配置する手法
通信方式
オクテット
- 8bitのこと
- 1byteとほぼ同じだが、正確に8bitを表すときに使われる
ブロードキャストアドレス
通信サービス
IPv4アドレス
- ユニキャスト
- 相手を一つのホストに限定した1:1の通信
- ブロードキャスト
- 同一ネットワークの全てのホストにパケットを送信するためのアドレス
- マルチキャスト
- 必要としているグループのみにパケットを送信する仕組み
- 最長一致法(ロンゲストマッチ)
- ルーティングテーブルに複数ある場合にはネットワークアドレスのプレフィックスが長い方が優先される
- /16,/24があったら/24
ICMP(Internet Control Message Protocol)
- IPで通信するするときに必要になる
- PCのデフォゲの設定が間違っていたときにルータが正しいゲートウェイを知らせるためにICMPリダイレクトパケットが利用される
- 種類
- 情報メッセージ
- 障害対策などで診断を行うために情報の問合せを行う
- エラーメッセージ
- エラーが起きたときにエラー通知を行う
- 情報メッセージ
ARP
NATトラバーサル
IPv6アドレス
Cメモ - tips5
気になったことメモ
読んだ本
主にポインタ
- %pに入れる時はvoid*でキャストする必要がある
#include <stdio.h> int main(void) { int hoge = 5; printf("&hoge : %p\n", (void*)&hoge); return 0; }
- void型のポインタ宣言注意
#include <stdio.h> int main(void) { int hoge = 5; void *hoge_p; hoge_p = &hoge; // アドレスの値だけ渡している状態 // hoge_pのままだと型が定まっていないためエラー // どの型で取り出していいか分からない printf("%d\n", *(int*)hoge_p); return 0; }
- ポインタに加算をするとそのポインタの型の大きさバイト分だけアドレスが増加する
#include <stdio.h> main(void) { int hoge; int *hoge_p; hoge_p = &hoge; *hoge_p++; // +1でint分(4バイト)だけ増加する printf("hoge_p : %p\n", (void*)hoge_p); return 0; }
- NULLについて
int *p = 3; // これは警告、型が違う int *p = 0; // 0という定数はポインタとして扱うべき時はヌルポインタとして扱われる
- 配列について
- 宣言で使われる""と式の中で使われる""は別物
- 式の中で使われる"[]"は*(p + i)のようなポインタpからiだけずらした位置を示すシンタックスシュガー
- 関数の仮引数の宣言においてだけ、配列の宣言はポインタに置き換えられる
int func(int a[]) → int func(int *a)
- アライメントについて
- 構造体のサイズを求める時にメンバーのサイズを足し算して求めるのは誤り
- CPUによってメンバーが入るアドレスは異なる
- 例えばcharの後のメンバーの型がdouble型でCPUがdouble型を8の倍数のアドレスにしか配置しない場合、charのうしろにはパディングが入る
*1:Continue...