読書ノート
ファイルの先頭からレコードを物理的に記録されている順番にアクセスすることである。これは直接アクセスとも言われる。 常に記憶媒体の先頭からアクセスするのはシーケンシャルアクセスと呼ばれる。 ランダムアクセス - Wikipedia 昔読んだ本にランダムアク…
HPTS 2011: The NoSQL Ecosystem from Adam Marcus Not Only SQL(RDBMSじゃないSQL) データベース側に隠蔽されていた操作をアプリケーションの設計側に押し出した システムアーキテクトの立場で考えると、これらのシステムの仕組みをより深く知っておく必要…
Berkeley DB このモジュールは、独立したコンポーネントたちをとりまとめてトランザクショナルなACID特性を提供する ACID 原子性(Atomicity) 一つのトランザクションで実行するすべての操作をひとまとめにして扱う。データベースにすべて反映されるかひとつ…
Berkeley DB ログマネージャ ログマネージャーは、構造化された追記限定のファイルを抽象化したものである ログの概念は極めてシンプルである。不透明なバイト文字列を受け取り、それをシーケンシャルにファイルへ書き出し、各レコードに一意な識別子を付与…
Berkeley DBの続き ファイル→ページ→レコードという階層構造が存在する Mpoolと同様、ロックマネージャーも汎用コンポーネントとして作られた Mpoolの場合と同様、他のアプリケーションからもまったく違う方法でロックマネージャーを使えるという点が重要 ロ…
BerkeleyDBの続き Berkeley DB Mpoolサブシステムについて Man page of MPOOL ファイルページを扱うインメモリのバッファプール ソフトウェアを実行する際、使用するプログラムやデータのすべてをメモリ上に読み込み、ハードディスクなどの外部記憶装置を使…
BerkeleyDBの話。 4つのサブシステム バッファマネージャ ロックマネージャ ログマネージャ トランザクションマネージャ すべて自前のAPIを有する 独立して使うこともできるが、共通のオブジェクトハンドルであるenvironmentハンドルを共有するようになった …
Oracle資料 http://www.oracle.com/technetwork/jp/ondemand/db-new/ord-seminar-bdb-v1-20101027-251331-ja.pdf Berkeley DBの5つの特徴 • 組み込みに適した小型データベース • KVS型のAPIとSQLの2種類のAPIをサポート • オープンソース • 各種プラットフォ…
bashの開発で学んだこと ChangeLogを詳しく書く(そのとき変更したことを後から思い出せる) 回帰テストをプロジェクトの立ち上げ時から組み込んでおくべき(非対話的な処理はすべてカバーしている) 標準規格は重要。ソフトウェアの標準化作業も重要(さまざま…
コマンドの実行その2 単純なコマンドの実行 シェルの変数への代入(つまり、var=value形式の単語)は、それ自身が単純なコマンドの一種 指定したコマンド名がシェルの関数や組み込みコマンドにないものであった場合、bashはファイルシステムから、その名前の…
コマンドの実行その1 bashの内部パイプラインにおけるコマンド実行ステージは、実際のアクションが発生する場所である コマンド名の部分が読み込んで実行するファイルとなり、残りの単語はargvの残りの要素となる(ls -al hogeでいうと、lsがコマンドで、-al…
パースが終わったら、実行の前に、パース段階で生成された単語の多くを展開することになる。つまり、(たとえば)$OSTYPEを文字列"linux-gnu"に置き換えたりするような処理だ 変数は、わずかな例外を除いて文字列として扱われる(型付けが存在しない) シンタ…
パース パースエンジンが最初にする仕事は字句解析、つまり文字のストリームを単語に区切ってそれに意味を与えるということだ エイリアスは完全な単語なので、エイリアスを使えば文法をも変えられる エスケープを使えば特殊な意味をもたせることもできる 字…
入力の処理 入力処理は行単位で行われる コマンドラインの編集はreadlineライブラリを使って行われる キーシーケンス(カーソル移動や行削除などのキーバインド) マクロ Readlineの構造 ループで構成されている 管理する文字バッファや文字列はCのcharだけ…
AOSA 3 The Bourne-Again Shell その1 #read_aosa プリミティブ bash 3つのトークン 予約語(while) 演算子(=) 単語(それ以外) 変数およびパラメータ 変数の値は文字列 何も代入されていない変数はunset扱い $で始まる単語は変数あるいはパラメータへの参照…
"1つのソフトウェアについて、オープンソース版と商用パッケージ版という異なるライセンスを提供する形態は「デュアルライセンス」と呼ばれています" http://t.co/rpmxOxI0jr— 炭鉱ハッカー shigemk2 (@shigemk2) 2014, 8月 29 この本、もうNoSQLだけじゃな…
"言う整合性(Consistency)とは、何らかのオペレーションが実行されたあとに、複製(レプリケーション)されたデータ間に矛盾がない状態にあることを意味します。" http://t.co/RPYngJN6Uk— 炭鉱ハッカー shigemk2 (@shigemk2) 2014, 8月 26 RDBでは整合性…
今流行りのリバースエンジニアリングが出てるね。 動的解析と静的解析の違いについては、Ruby Hacking Guideの序章に詳しく書いてあったりする。 序章 導入 "レジスタとはCPUが内部に持つ記憶領域です。その記憶領域にはそれぞれEAX、ECX、EDX、EBX、ESP、EB…
システムがダウンする原因は、機械の故障、ソフトウエアの不具合、操作ミス、アクセス量の急増などさまざまです。しかもたいていは、1つの不具合が別の不具合を引き起こし、複数の不測の事象が数珠つなぎに発生します。 これはわかる。 ダウンの根本原因を突…
パッケージ 名前の衝突を気にせずにプログラムを再利用できる 例外 特別なエラーを返す可能性があることをメソッドで宣言する GC いっぱい作ったインスタンスは言語側で勝手に削除してくれる
クラス サブルーチンとグローバル変数などをまとめる クラスの内部だけで使う変数やサブルーチンを隠す 1つのクラスからインスタンスをたくさん作る ポリモーフィズム 共通メインルーチンをつくるための仕組み プログラムを簡単に書く 継承 クラス定義の重複…
何ページだ 基本三構造 順次実行 条件分岐 繰り返し GOTOレスプログラミング GOTOがあると(多用されると)非常に読みづらい サブルーチン 関数、プロシージャとも呼ばれる。 これによりプログラムの独立性が強化される。 残された課題 グローバル変数問題 貧…
追記 + 感想 手法そのものがWeb系全般のノリである「とりあえずβ版を出してフィードバックを得て改善する」を地でいく方法だからなのか、はたまた著者がエンジニアの経験があるからなのか、 「アジャイル」とか「デプロイ」とかエンジニアの用語がちょくちょ…
例によってCentOS 6.5 typoによりbad file descriptorが出たりして悲しかった エラーの詳細(JP1/Advanced Shell固有の場合) /* cp1.c * cpのバージョン1 uses read and write with tunable buffer size * 使い方 cp1 src test */ #include <stdio.h> #include <unistd.h> #inc</unistd.h></stdio.h>…
フレームワークで開発するときって、 基本的には MVC という順番になる。 Controllerを書くためにViewを定義して、渡す値を決めておく必要がある。 Viewをつくるうえでは一覧を表示したりフォームを表示したりする必要があるので そのまえModelを定義する必…
1つのことを、しっかりやる バイナリデータではなく文字列を扱う 文字列がデータ形式として普遍的な役割をはたす。 正規表現を扱う 使いこなせば、使いこなせることが出来れば、スクリプトの作成を大幅に簡略化できる 特に指定がなければ標準入力と標準出力…
雑な感想 同僚から借りて読むことにした。 曰く「微妙」らしいが、僕は微妙というか地味だと思った。良い意味で。 Puppetで自動化したりとか、AWSでスケーリングしたりとか、 Seleniumでテストしまくったりとかっていうのではなく、 かといってなれるSEみた…
forkシステムコールはプロセスを生成する 子プロセスは親プロセスのコピーである waitシステムコールは子プロセスの処理完了を待つためにスリープし、子プロセスが終了すると子プロセスの後始末を行う execシステムコールは実行プログラムファイルをメモリに…
プロセスは実行中のプログラムを管理する単位 実行プロセスを随時切り替えることで複数のプログラムを並行して実行 proc構造体とuser構造体が各プロセスの制御・状態情報をあらわす proc構造体はメモリに常駐。user構造体はスワップアウトの対象 各プロセス…
UNIX V6とは1975年にベル研究所からリリースされた UNIX V6とは最新OSの始祖ともいうべきOS UNIX V6はシステム構築に最低限必要なサービスを提供する ハードウェアを使う処理やシステムに影響を与える処理はカーネル内に隠避される ユーザープログラムはシス…