クラス設計雑記

最近スクリプト*1に機能追加してプログラム*2を作成する機会があった。 最初はなんとなく実装しながら必要に応じてクラスを追加していったが、途中からロジックをシンプルにするために、あちこちのクラスのメンバーの修正が発生してしまい、結局最初に書いた…

動的型付け・静的型付け

動的型付け...変数の型をプログラムの実行前に規定しない。型宣言が不要。 静的型付け...変数の型をプログラムの実行前に規定する。型宣言が必要。

仕様なし開発

開発では事前に仕様を定義して、その仕様に基づいてプログラムを作成する。しかし中には様々な理由で仕様がない(あってもほとんど意味がない)まま開発する場合がある。 その場合はできた実装が仕様である。こうなると当然テストケースの作成などはできない…

次元の呪い(球面集中化現象)

次元の呪いとは、高次元データの場合データのほとんどが原点から遠い場所に集中していること。 高次元空間の球は体積のほとんどが表面付近に集中。 高次元空間ではメロンパンのほとんどは皮。 mathwords.net

型とは

質問: 型とはなんですか? 回答:値の意味です。 あえてプログラミング言語に限定せず、NW・IO・HW等も含む広義の意味でのコンピュータがやり取りするのは2進数の羅列だけである。そうした2進数の羅列を意味づけし解釈するには「型」が必要となる。この意味…

リファクタリング

リファクタリングにも定義があったのね。。 リファクタリングの定義 リファクタリングとは外から見たときの挙動は変えずに内部のコードだけを変更すること。 リファクタリングには挙動が変わらないことを保証する手段としのテストコードが必要である。 テス…

プログラムカウンタ

プログラムカウンタ用のレジスタは、名前は違えどもどのCPUにも必ず存在する。 ハードウェア的な観点からは、プログラムカウンタの数=同時に実行できるプログラムの数である。 マルチコアCPUには各コアごとにプログラムカウンタが存在する。 Intelのハイパ…

無線LANの帯域

各帯域の特徴をしっかり抑えること!! 2.4GHz帯域 回析するため障害物に強い。 電子レンジなどの家電が利用する帯域と重複し電波干渉の恐れがある。 5GHz帯域 W56帯以外は屋外の利用は法律上認められていない。 W53帯およびW56帯にはDFSおよびTPCの実装が必…

チャンネルボンディング

チャネルボンディングとは 束ねた複数チャネルを用いることで通信速度更新する技術。 11nでは束ねるチャネル数は2つまで 11acでは束ねるチャネル数は4/8/16まで チャネルボンディング時のチャネル幅 chを束ねない場合は20MHz幅 chを2つ束ねた場合40MHz幅 ch…

無線LANのチャネル

本当に自分の頭の中で整理して、一度自分自身の言葉で書き出さないと何もかも忘れてしまう。。 チャネル IEEE802.11nでは2.4GHzおよび5GHz帯域を利用する。帯域という言葉がある通り正確には2.4GHzおよび5GHz近傍の連続する帯域をチャネルという単位に分割し…

無線LANの基本

そもそも 周波数が300GHz~3THzの電磁波を電波という。 周波数と波長 c = fλ より波長と周波数は逆の関係。 波長が長いほど周波数は低く、波長が短いほど周波数が高い。 天候による影響 周波数が高いほど雨天による悪影響が大きい。 雨の日に1kmの減衰は 10G…

AWSの環境構築(EC2)

現在追記中 インスタンスの作成 コンソール画面からGUI経由で5分もかかわらず作成可能! キーペア キーペアをダウンロードは初回しかできないことに注意。 EC2インスタンスの確認 CLIで作成したインスタンスの確認が可能なはずがなぜかできない。 結局コン…

AWSの環境構築(S3)

S3(Simple Storage Service)へのファイルのアップロードはCLI経由で行うため、最初にCLI環境の構築が必要。 S3の概要 S3はその名前の通りオブジェクトストレージ。 99.999999999%(ナイン・イレブン)の耐久性を実現する。 S3は単純なKVS(Key-Value型デー…

AWSのアカウント管理

AWSのアカウント管理は複数機能あるためまとめた。現在加筆中。 ベスト・プラクティス ルートアカウントはアクセスキーおよびシークレットアクセスキーを利用しない(ルートアカウント自体を普段利用しないため問題ない)。

認証の種類

記載中 ベーシック認証 IDとパスワードをサーバに送信することで認証する。 IDとパスワードが漏洩した場合は第三者によるなりすましが可能となる。 パスワードを暗号化した場合でもリプレイアタックの恐れがある。 チャレンジ・レスポンス認証 サーバ側から…

Gitコマンドチートシート(commit/push取り消し)

Git

焦らず少しづつマスターしていこう!! commitの取り消し resetとrevertの2通りが存在する。revertのほうが安全ではあるが不要な履歴がログに残ってしまう。resetはその逆。 resetはcommit履歴および修正履歴自体が削除される。 revertはcommit履歴および修…

汚いソースコードの分類と対策

「綺麗なソースコードはどれも似ているが、汚いソースコードは千差万別だ」by トルストイ 「良いソースコードは短いけど理解に時間がかかるソースコードではなくて、長くても理解するまでにかかる時間が短いソースコード」というのが私の哲学です。 たまには…

AWSの環境構築(VPC)

現在加筆中。 VPC(Virtual Private Cloud) VPCの構築自体では料金は発生しない。 VPNおよびNatGateway利用時に料金が発生する。 リージョン・AZ AWS → 複数リージョン → AZ(Availability Zone) サービス単位 サービス毎にスコープが異なる。 グローバル…

PEP8(命名方法)

一番知りたかったところ。実装時にここに最も頭を使います。 原則 公開されている API の一部としてユーザーに見える名前は、実装よりも使い方を反映した名前にすべきです。 l(小文字L),O(大文字O),I(大文字I)を変数に利用しない。 実践されている命名…

AWSの環境構築準備(ユーザの作成まで)

AWS

qiita.com とりあえず設定は完了した。MFAは初回登録時以降は入力数値は1パターンのみでよい。 次回以降はいよいよ実際にクラウド上に環境の構築!!! IAM (AWS Identify and Access Management ) AWSのユーザ管理やリソースのアクセス管理を行うサービス…

PEP8(import関連)

読んでみたらプログラムの書き方の参考になりました。これから実装するときはコーディング規約の公式ドキュメントも参考にしよう! 以下に気になったことをまとめました。 はじめに — pep8-ja 1.0 ドキュメント import import文は通常は行を分けるべき。 #OK…

AWSの料金確認

AWS

超重要なので基本毎日確認すべき。 docs.aws.amazon.com

AWSの環境構築準備(ルートアカウントの作成まで)

AWS

クラウド上にマシンを作成するまでの道のりがそもそも長かったりする。。。 1.メールアドレスの取得 Gmailアカウントを作成した。 2.AWSアカウントの作成 マネージメントコンソールにログインできるところまで確認した。 特に難しいことはなく流れにそってい…

変数・メソッドの命名法

順次加筆予定 原則1:抽象的な命名は避ける 例1(Memoryとは?) writeMemoryのMemoryが何を指すのかが不明瞭。USBメモリ?キャッシュメモリ?メインメモリ? メモリという名前のつく単語はコンピュータ関連では複数あるため不明瞭になってしまう。 個別の…

コメントの書き方

順次加筆予定 コメントの減らし方 そもそもコメントを大量に書く必要がある場合は何かが間違っている可能性を疑う コメントのためのコメントは書かない 変数やメソッド名から内部処理がある程度推測できる名前を利用する 何をコメントとするか ソースコード…

エラーの分類

大きく分けてコンパイルエラーとランタイムエラーからなる。 実際問題としてはソフトウェア試験で問題になるのはランタイムエラーに対して適切なエラー処理の実装がなされているかである。 コンパイルエラー(シンタックスエラー) コンパイル時に発生するエ…

メモリ管理(セグメント)

セグメント(セクション) 通常プログラムやデータはメインメモリの連続した領域を単位として管理される。 このプログラムやデータの管理単位となる連続した領域のことをセグメントと呼ぶ。 Programセクション(Pセクション) プログラムコードが格納される…

x86系CPU

「x86系CPU」といった場合インテル製の CPU に加えアスロンなどのインテル互換CPU も含まれる x86のここがすごい 世界中のPCとサーバの90%以上で使われているx86系 1970年代後半のコンピューティング技術で残っているのはコンピュータの命令セット でもスマ…

CPUのbit数

CPUのbit数の定義 CPUに関連するbit数は多岐に渡る。 CPUを表現する場合のビット数の意味は以下の通りである。 - アドレス幅(内部のアドレスレジスタ幅、外部アドレスバス幅) - データバス幅(内部データ幅、外部データバス幅) - 内部演算幅(=演算装置…

教師あり学習の分類

どれも昔大学院でお世話になった懐かしい名前です。ベイズ推定とかもう一度勉強しなおしたいなぁ。 決定木 遺伝的手法 ニューラルネットワーク サポートベクターマシン ⇒分類境界とデータの距離が最大になるようにするモデル ベイズ学習