fc2ブログ

書籍をつつく132-実践ハイパフォーマンスMySQL 第2版。色々なパフォーマンスがいい良書。

今日はデータベースに関する良書を思い出したから紹介するピヨ♪
実践ハイパフォーマンスMySQL 第2版
MySQLを実務に使う人は必見♪


【目次】
はじめに

1章 MySQLのアーキテクチャ
1.1 MySQLの論理アーキテクチャ
1.1.1 接続の管理とセキュリティ
1.1.2 最適化と実行
1.2 並行性の制御
1.2.1 読み取り/書き込みロック
1.2.2 ロックの粒度
1.3 トランザクション
1.3.1 分離レベル
1.3.2 デッドロック
1.3.3 トランザクションログ
1.3.4 MySQLのトランザクション
1.4 マルチバージョンの並行性制御(MVCC)
1.5 MySQLのストレージエンジン
1.5.1 MyISAMエンジン
1.5.2 MyISAM Mergeエンジン
1.5.3 InnoDBエンジン
1.5.4 メモリエンジン
1.5.5 Archiveエンジン
1.5.6 CSVエンジン
1.5.7 Federatedエンジン
1.5.8 Blackholeエンジン
1.5.9 NDB Clusterエンジン
1.5.10 Falconエンジン
1.5.11 solidDBエンジン
1.5.12 PBXT(Primebase XT)エンジン
1.5.13 Mariaエンジン
1.5.14 その他のストレージエンジン
1.5.15 正しいエンジンの選択
1.5.16 注意事項
1.5.17 実例
1.5.18 ストレージエンジンのまとめ
1.5.19 テーブル変換

2章 ボトルネックの検出:ベンチマークとプロファイリング
2.1 ベンチマークを実行する理由
2.2 ベンチマーク戦略
2.2.1 何を測定するか
2.3 ベンチマーク戦術
2.3.1 ベンチマークの設計と計画
2.3.2 正確な結果の取得
2.3.3 ベンチマークの実行と結果の分析
2.4 ベンチマークツール
2.4.1 フルスタックツール
2.4.2 単一コンポーネントツール
2.5 ベンチマークの例
2.5.1 http_load
2.5.2 sysbench
2.5.3 Database Test Suiteのdbt2 TPC-C
2.5.4 MySQL Benchmark Suite
2.6 プロファイリング
2.6.1 アプリケーションのプロファイリング
2.6.2 MySQLのプロファイリング
2.6.3 MySQLサーバーのプロファイリング
2.6.4 SHOW STATUSによるクエリのプロファイリング
2.6.5 SHOW PROFILE
2.6.6 MySQLの他のプロファイリング方法
2.6.7 プロファイリングコードを追加できない場合
2.7 オペレーティングシステムのプロファイリング
2.7.1 MySQL接続とプロセスのトラブルシューティング
2.7.2 高度なプロファイリングとトラブルシューティング

3章 スキーマの最適化とインデックス
3.1 最適なデータ型の選択
3.1.1 整数
3.1.2 実数
3.1.3 文字列型
3.1.4 日付と時刻型
3.1.5 ビットデータ型
3.1.6 識別子の選択
3.1.7 特殊なデータ型
3.2 インデックスの基礎
3.2.1 インデックスの種類
3.3 高いパフォーマンスを実現するためのインデックス戦略
3.3.1 列の分離
3.3.2 プレフィックスインデックスとインデックスの選択性
3.3.3 クラスタ化インデックス
3.3.4 カバリングインデックス
3.3.5 ソートのためのインデックススキャンの使用
3.3.6 圧縮された(プレフィックス圧縮された)インデックス
3.3.7 冗長インデックスと重複インデックス
3.3.8 インデックスとロック
3.4 インデックスのケーススタディ
3.4.1 さまざまなフィルタのサポート
3.4.2 複数の範囲条件の回避
3.4.3 ソートの最適化
3.5 インデックスとテーブルの管理
3.5.1 テーブルの破損の検出と修復
3.5.2 インデックス統計の更新
3.5.3 インデックスとデータの断片化の削減
3.6 正規化と非正規化
3.6.1 正規化されたスキーマの長所と短所
3.6.2 非正規化されたスキーマの長所と短所
3.6.3 正規化と非正規化の混合
3.6.4 キャッシュテーブルとサマリテーブル
3.7 ALTER TABLEの高速化
3.7.1 .frmファイルのみの変更
3.7.2 MyISAMインデックスのすばやい構築
3.8 ストレージエンジンに関する注意点
3.8.1 MyISAMストレージエンジン
3.8.2 Memoryストレージエンジン
3.8.3 InnoDBストレージエンジン

4章 クエリパフォーマンスの最適化
4.1 スロークエリの基礎:データアクセスの最適化
4.1.1 データベースから必要のないデータを取得していないか
4.1.2 MySQLが調査するデータが多すぎないか
4.2 クエリを再構築する方法
4.2.1 複雑なクエリと多数のクエリ
4.2.2 クエリの分割
4.2.3 結合分解
4.3 クエリの実行の基礎
4.3.1 MySQLクライアント/サーバープロトコル
4.3.2 クエリキャッシュ
4.3.3 クエリ最適化プロセス
4.3.4 クエリ実行エンジン
4.3.5 クライアントへの結果の返送
4.4 MySQLクエリオプティマイザの制限
4.4.1 相関サブクエリ
4.5 特定の種類のクエリの最適化
4.5.1 COUNTクエリの最適化
4.5.2 JOINクエリの最適化
4.5.3 サブクエリの最適化
4.5.4 GROUP BYとDISTINCTの最適化
4.5.5 LIMITとOFFSETの最適化
4.5.6 SQL_CALC_FOUND_ROWSの最適化
4.5.7 UNIONの最適化
4.6 クエリオプティマイザのヒント
4.7 ユーザー定義変数
4.7.1 MySQLのアップグレードに関する注意点

5章 MySQLの高度な機能
5.1 MySQLクエリキャッシュ
5.1.1 MySQLがキャッシュヒットをチェックする方法
5.1.2 キャッシュはどのようにメモリを使用するか
5.1.3 クエリキャッシュが役立つ状況
5.1.4 クエリキャッシュの調整と管理の方法
5.1.5 InnoDBとクエリキャッシュ
5.1.6 一般的なクエリキャッシュの最適化
5.1.7 クエリキャッシュに代わるもの
5.2 MySQL内でのコードの格納
5.2.1 ストアドプロシージャとストアド関数
5.2.2 トリガ
5.2.3 イベント
5.2.4 ストアドコードでのコメントの維持
5.3 カーソル
5.4 プリペアドステートメント
5.4.1 プリペアドステートメントの最適化
5.4.2 プリペアドステートメントへのSQLインターフェイス
5.4.3 プリペアドステートメントの制限
5.5 ユーザー定義関数
5.6 ビュー
5.6.1 更新可能ビュー
5.6.2 ビューによるパフォーマンスへの影響
5.6.3 ビューの制限
5.7 文字セットと照合順序
5.7.1 MySQLは文字セットをどう扱うか
5.7.2 文字セットと照合順序の選択
5.7.3 文字セットと照合順序がクエリに与える影響
5.8 全文検索
5.8.1 自然言語の全文検索
5.8.2 ブーリアン全文検索
5.8.3 MySQL 5.1以降での全文検索の変更点
5.8.4 全文検索のトレードオフと次善策
5.8.5 全文インデックスの調整と最適化
5.9 外部キー制約
5.10 マージテーブルとパーティショニング
5.10.1 マージテーブル
5.10.2 パーティションテーブル
5.11 分散(XA)トランザクション
5.11.1 内部XAトランザクション
5.11.2 外部XAトランザクション

6章 サーバー設定の最適化
6.1 設定の基礎
6.1.1 構文、スコープ、動的な変数
6.1.2 変数設定の副作用
6.1.3 変数を設定するための準備
6.2 一般的な調整
6.2.1 メモリの調整
6.2.2 MyISAMキーキャッシュ
6.2.3 InnoDBバッファプール
6.2.4 スレッドキャッシュ
6.2.5 テーブルキャッシュ
6.2.6 InnoDBデータディクショナリ
6.3 MySQLのI/Oの調整
6.3.1 MyISAMのI/Oの調整
6.3.2 InnoDBのI/Oの調整
6.4 MySQLの並行処理の調整
6.4.1 MyISAMの並行処理の調整
6.4.2 InnoDBの並行処理の調整
6.5 ワークロードベースの調整
6.5.1 BLOBワークロードとTEXTワークロードのための最適化
6.5.2 MySQLサーバーの状態変数の調査
6.6 接続ごとの設定の調整

7章 オペレーティングシステムとハードウェアの最適化
7.1 MySQLのパフォーマンスを制限するもの
7.2 MySQLに合わせてCPUを選択する方法
7.2.1 CPUの速さか、CPUの数か
7.2.2 CPUアーキテクチャ
7.2.3 複数のCPUとコアへの拡張
7.3 メモリリソースとディスクリソースのバランス
7.3.1 ランダムI/OとシーケンシャルI/O
7.3.2 キャッシュ、読み取り、書き込み
7.3.3 作業セットは何か
7.3.4 メモリとディスクの効果的な割合の検出
7.3.5 ハードディスクの選択
7.4 スレーブのためのハードウェアの選択
7.5 RAIDのパフォーマンスの最適化
7.5.1 RAIDの障害、復元、監視
7.5.2 ハードウェアRAIDとソフトウェアRAIDのバランス
7.5.3 RAID設定とRAIDキャッシュ
7.6 SANとNAS
7.6.1 SAN
7.6.2 NAS
7.7 複数のディスクボリュームの使用
7.8 ネットワーク設定
7.9 オペレーティングシステムの選択
7.10 ファイルシステムの選択
7.11 スレッディング
7.12 スワッピング
7.13 オペレーティングシステムの状態
7.13.1 vmstatの出力の読み方
7.13.2 iostatの出力の読み方
7.13.3 CPUバウンドのマシン
7.13.4 I/Oバウンドのマシン
7.13.5 スワッピングマシン
7.13.6 アイドルマシン

8章 レプリケーション
8.1 レプリケーションの概要
8.1.1 レプリケーションによって解決される問題
8.1.2 レプリケーションの仕組み
8.2 レプリケーションの設定
8.2.1 レプリケーションアカウントの作成
8.2.2 マスターとスレーブの設定
8.2.3 スレーブの開始
8.2.4 別のサーバーからのスレーブの初期化
8.2.5 推奨されるレプリケーション設定
8.3 レプリケーションの裏側
8.3.1 ステートメントベースのレプリケーション
8.3.2 行ベースのレプリケーション
8.3.3 レプリケーションファイル
8.3.4 他のスレーブへのレプリケーションイベントの送信
8.3.5 レプリケーションフィルタ
8.4 レプリケーショントポロジ
8.4.1 マスターと複数のスレーブ
8.4.2 アクティブ/アクティブモードでのマスター/
   マスターレプリケーション
8.4.3 アクティブ/パッシブモードでのマスター/
   マスターレプリケーション
8.4.4 複数のスレーブを持つマスター/マスターレプリケーション
8.4.5 リングレプリケーション
8.4.6 マスター、分散マスター、スレーブ
8.4.7 ツリーまたはピラミッド
8.4.8 カスタムレプリケーションソリューション
8.5 レプリケーションとキャパシティの計画
8.5.1 レプリケーションが書き込みのスケーラビリティに役立たない理由
8.5.2 利用率を抑える計画
8.6 レプリケーションの管理とメンテナンス
8.6.1 レプリケーションの監視
8.6.2 スレーブの遅延の測定
8.6.3 スレーブとマスターの一貫性の確認
8.6.4 マスターからのスレーブの再同期
8.6.5 マスターの変更
8.6.6 マスター/マスター構成での役割の切り替え
8.7 レプリケーションの問題点と解決策
8.7.1 データの破壊または損失によるエラー
8.7.2 非トランザクショナルテーブルの使用
8.7.3 トランザクショナルテーブルと非トランザクショナルテーブルの混在
8.7.4 非決定的な文
8.7.5 マスターとスレーブでストレージエンジンが異なる
8.7.6 スレーブでのデータの変更
8.7.7 一意でないサーバーID
8.7.8 未定義のサーバーID
8.7.9 複製されていないデータへの依存
8.7.10 一時テーブルの損失
8.7.11 複製する更新の選択
8.7.12 InnoDBのロック選択によるロックの競合
8.7.13 マスター/マスターレプリケーションでの
     両方のマスターへの書き込み
8.7.14 レプリケーションの過度の遅延
8.7.15 マスターからの特大パケット
8.7.16 レプリケーションの帯域幅の制限
8.7.17 ディスク領域の不足
8.7.18 レプリケーションの制限
8.8 レプリケーションの速度
8.9 MySQLレプリケーションの未来

9章 スケーラビリティと高可用性
9.1 用語
9.2 MySQLのスケーリング
9.2.1 スケーラビリティの計画
9.2.2 スケーリング前の時間稼ぎ
9.2.3 スケールアップ
9.2.4 スケールアウト
9.2.5 スケールバック
9.2.6 クラスタ化によるスケーリング
9.3 負荷分散
9.3.1 直接接続
9.3.2 プロキシの導入
9.3.3 1つのマスターと複数のスレーブによる負荷分散
9.4 高可用性
9.4.1 高可用性の計画
9.4.2 冗長性の追加
9.4.2 フェイルオーバーとフェイルバック

10章 アプリケーションレベルの最適化
10.1 アプリケーションのパフォーマンスの概要
10.1.1 問題の原因の究明
10.1.2 一般的な問題の調査
10.2 Webサーバーの問題
10.2.1 最適な並行性の模索
10.3 キャッシュ
10.3.1 アプリケーションよりも低いレベルでのキャッシュ
10.3.2 アプリケーションレベルのキャッシュ
10.3.3 キャッシュ制御ポリシー
10.3.4 キャッシュオブジェクト階層
10.3.5 コンテンツの事前生成
10.4 MySQLの拡張
10.5 MySQLに代わるもの

11章 バックアップとリカバリ
11.1 概要
11.1.1 用語
11.1.2 リカバリがすべて
11.1.3 ここで取り上げない話題
11.1.4 全体像
11.1.5 バックアップする理由
11.2 注意点と妥協点
11.2.1 失ってもよいものは何か
11.2.2 オンラインバックアップとオフラインバックアップ
11.2.3 論理バックアップとローバックアップ
11.2.4 何をバックアップするか
11.2.5 ストレージエンジンと一貫性
11.2.6 レプリケーション
11.3 バイナリログの管理とバックアップ
11.3.1 バイナリログのフォーマット
11.3.2 古いバイナリログの安全なパージ
11.4 データのバックアップ
11.4.1 論理バックアップの作成
11.4.2 ファイルシステムのスナップショット
11.5 バックアップからのリカバリ
11.5.1 MySQLへのアクセスの制限
11.5.2 ローファイルの復元
11.5.3 論理バックアップの復元
11.5.4 Point-in-Timeリカバリ
11.5.5 より高度なリカバリ手法
11.5.6 InnoDBのリカバリ
11.6 バックアップとリカバリの速さ
11.7 バックアップツール
11.7.1 mysqldump
11.7.2 mysqlhotcopy
11.7.3 InnoDB Hot Backup
11.7.4 mk-parallel-dump
11.7.5 mylvmbackup
11.7.6 Zmanda Recovery Manager
11.7.7 R1Soft
11.7.8 MySQLオンラインバックアップ
11.7.9 バックアップツールの比較
11.8 バックアップのスクリプト化

12章 セキュリティ
12.1 用語
12.2 アカウントの基礎
12.2.1 特権
12.2.2 グラントテーブル
12.2.3 MySQLが特権を確認する方法
12.2.4 グラントの追加、削除、表示
12.2.5 MySQL特権のセットアップ
12.2.6 MySQL 4.1での特権の変更
12.2.7 MySQL 5.0での特権の変更
12.2.8 特権とパフォーマンス
12.2.9 一般的な問題と解決策
12.3 オペレーティングシステムのセキュリティ
12.3.1 ガイドライン
12.4 ネットワークのセキュリティ
12.4.1 localhostのみの接続
12.4.2 ファイアウォール
12.4.3 DMZでのMySQL
12.4.4 接続の暗号化とトンネリング
12.4.5 TCPラッパー
12.4.6 ホストの自動ブロック
12.5 データの暗号化
12.5.1 パスワードのハッシュ
12.5.2 暗号化ファイルシステム
12.5.3 アプリケーションレベルの暗号化
12.5.4 ソースコードの変更
12.6 chroot環境でのMySQL

13章 MySQLサーバーの状態
13.1 システム変数
13.2 SHOW STATUS
13.2.1 スレッドと接続の統計値
13.2.2 バイナリログの状態
13.2.3 コマンドカウンタ
13.2.4 一時ファイルと一時テーブル
13.2.5 ハンドラ操作
13.2.6 MyISAMキーバッファ
13.2.7 ファイル記述子
13.2.8 クエリキャッシュ
13.2.9 SELECTの種類
13.2.10 ソート
13.2.11 テーブルロック
13.2.12 SSL
13.2.13 InnoDB固有の変数
13.2.14 プラグイン固有の変数
13.2.15 その他の変数
13.3 SHOW INNODB STATUS
13.3.1 見出し
13.3.2 SEMAPHORES
13.3.3 LATEST FOREIGN KEY ERROR
13.3.4 LATEST DETECTED DEADLOCK
13.3.5 TRANSACTIONS
13.3.6 FILE I/O
13.3.7 INSERT BUFFER AND ADAPTIVE HASH INDEX
13.3.8 LOG
13.3.9 BUFFER POOL AND MEMORY
13.3.10 ROW OPERATIONS
13.4 SHOW PROCESSLIST
13.5 SHOW MUTEX STATUS
13.6 レプリケーションの状態
13.7 INFORMATION_SCHEMA

14章 ハイパフォーマンスのためのツール
14.1 インターフェイスツール
14.1.1 MySQLのビジュアルツール
14.1.2 SQLyog
14.1.3 phpMyAdmin
14.2 監視ツール
14.2.1 非対話型の監視システム
14.2.2 対話型ツール
14.3 解析ツール
14.3.1 HackMySQLツール
14.3.2 Maatkitの解析ツール
14.4 MySQLユーティリティ
14.4.1 MySQL Proxy
14.4.2 DormandoのProxy for MySQL
14.4.3 Maatkitユーティリティ
14.5 その他の情報源

付録A 大きなファイルの転送
A.1 ファイルのコピー
A.1.1 安直な方法
A.1.2 ワンステップの方法
A.1.3 暗号化のオーバーヘッドの回避
A.1.4 その他のオプション
A.2 ファイルのコピーのベンチマーク

付録B EXPLAINの使用
B.1 EXPLAINの実行
B.1.1 非SELECTクエリの書き換え
B.2 EXPLAINの列
B.2.1 id列
B.2.2 select_type列
B.2.3 table列
B.2.4 type列
B.2.5 possible_keys列
B.2.6 key列
B.2.7 key_len列
B.2.8 ref列
B.2.9 rows列
B.2.10 filtered列
B.2.11 Extra列
B.3 ビジュアルなEXPLAIN

付録C MySQLでのSphinxの使用
C.1 概要:一般的なSphinx検索
C.2 Sphinxを使用する理由
C.2.1 効率的でスケーラブルな全文検索
C.2.2 WHERE句の効率的な適用
C.2.3 結果を上位のものから順に検索する
C.2.4 GROUP BYクエリの最適化
C.2.5 結果セットの並行生成
C.2.6 スケーリング
C.2.7 シャードデータの集計
C.3 アーキテクチャの概要
C.3.1 インストールの概要
C.3.2 パーティションの一般的な用途
C.4 特別な機能
C.4.1 フレーズ近傍ランキング
C.4.2 属性のサポート
C.4.3 フィルタリング
C.4.4 SphinxSEストレージエンジン
C.4.5 高度なパフォーマンス制御
C.5 実装の実例
C.5.1 Mininova.orgの全文検索
C.5.2 BoardReader.comでの全文検索
C.5.3 Sahibinden.comでの選択の最適化
C.5.4 BoardReader.comでのGROUP BYの最適化
C.5.5 Grouply.comでのシャードJOINクエリの最適化
C.6 まとめ

付録D ロックのデバッグ
D.1 サーバーレベルでのロック待ち
D.1.1 テーブルロック
D.1.2 グローバル読み取りロック
D.1.3 名前ロック
D.1.4 ユーザーロック
D.2 ストレージエンジンでのロック待ち
D.2.1 InnoDBのロック待ち
D.2.2 Falconのロック待ち

索引


これは題名通りの本で、MySQLに特化したパフォーマンスに関する広範囲な情報が載っている本ピヨ♪ボクが読んだのは第1版なんだけど、ページ数が少なく、突っ込んだ情報がないものの、広範囲にMySQLのパフォーマンスを検討する際に役に立ったピヨ。
それで、第2版が出版されたのを知り、オライリーのサイトを見て吃驚したんだ。第1版よりも2倍近くページ数が増えているピヨっ!第1版の弱点は、突っ込んだ情報が足りない事だったから、これは期待できるピヨ♪ しかもこの本は価格もそれ程高くなく、コストパフォーマンスが優れた本ピヨ♪ パフォーマンスが悪いという事はシステムにのバグといえるピヨ。実務でMySQLを使用する人は、パフォーマンス不足というバグを未然に防ぐためにもこの本を読むべきだとボクは思う。
それと、実務で使用しないホビープログラマやプログラマを目指す人もこれを読むといいと思う。何故ならば、パフォーマンスをUPさせる事は楽しいからね♪娯楽目的で買うのもよし


【追加情報】
もっと本が知りたいという本好きは書籍レビュー目次書籍レビューを見ると良いピヨ♪
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

こんにちは

いつも、興味深く読ませて頂いています。ちなみに、私の一番興味のあるのは、妹さん関連のものですが、最近は、頻度が少なくなっているみたいで、ちょっと、寂しい感じです。

ところで、私も、プログラムを書くことがたまにあるのですが、片手間プログラマの悲しさで、なかなか、時間をきちんと確保することが難しい状況です。

インドリさんは、10年ぐらいのキャリアがあるということですが、どういう環境でお仕事をされてきたのでしょうか(チームの人数とか、期間とかの観点で)?

私は、ほとんど、一人での作業ばかりなので見積もりにしても技術にしても、他の人からのフィードバックが無いもので、インドリさんのように詳しくはないのです。なので、インドリさんのような技術者がどのような環境でお仕事をされてきたのか?ということにとっても興味があります。

インドリさんのブログはいろいろと読ませて頂いているのですが、私の探し方が良くないのか、そういった内容の記事は残念ながら、見つけられませんでした。

なので、もし、よろしければ、参考までに教えて頂けると嬉しいです。

では、寒くなりましたが体調に気をつけて、楽しく役に立つ記事を今後ともよろしくお願いします。

Re: こんにちは

おはようございます。

> インドリさんは、10年ぐらいのキャリアがあるということですが、どういう環境でお仕事をされてきたのでしょうか(チームの人数とか、期間とかの観点で)?
>
私はキャリアの半分ぐらいがフリーなので、多種多様な環境で働いております。
なので毎回違い、それ故にチームの人数は把握しておりません。
一番少ない時は私一人でシステムを開発/納品で、多い時は数社で構築するシステムに参加した事もあります。
数社合同の時は残念ながら人数が分かりません。
期間については、自分ひとりの時は大体一システム3月から6か月で仕上げますが、
数社が絡む時は最長で3年近く要した事もあります。
大半の仕事は並行して行っておりますので余計に把握し辛い状態です。

Re: こんにちは

お忙しいところ、ご回答ありがとうございます。
(済みません。記事までおねだりしてしまいました)

さて、やはり、いろいろな環境でお仕事をされているのですね。
正直、ちょっと、羨ましいです。

ところで、インドリさんは複数の案件を並行してこなされているということですが、作業場所はご自宅?なのでしょうか?

私の知っている範囲(とっても狭いです)では、在宅の技術者と一緒に業務をするということは無いので、とっても不思議な感じです。

最近は、不況の影響があるのかもしれませんが、海外に業務を委託するオフショアが流行っていますが、なかなか上手く進まないということを良く耳にします。

なので、結構、複数の案件を並行に進めて(なおかつ客先常駐ではない)行くことはかなり難易度が高いように思います。

これは、きっと、インドリさんならではのプロセスがあってこそだと思いますが、何か、コツみたいなものとかあるのでしょうか?

個人的には、どんな業務であっても、技術はもちろんのこと、その技術を生かすためには、技術以外の面(例えば、プロセスなど)をおろそかに出来ないと思っています。

インドリさんのブログを拝見する限り、技術に対する強いこだわりがあるように受け取れるのですが、その技術を使ってフリーで活躍をされているということですので、きっと、技術以外の面でもインドリさんなりのこだわりがあると思っています。

そういう意味で、技術以外の面でのインドリさんのお考えなんかを是非聞いてみたいと思っています。

あ、もちろん、インドリさんが気乗りしなかったら無理になんてことは思っていませんので、もし、良かったら。ということでお願いしたいと思います。

Re: Re: こんにちは

glanada さんこんにちは。

> ところで、インドリさんは複数の案件を並行してこなされているということですが、作業場所はご自宅?なのでしょうか?

はい。現在は自宅もしくは好きな場所です。
その理由は「作業効率がいいから」と「契約上そうなるから」です。
自宅にしておかないと、オリジナルの開発ツールが使えません。
何故ならば窃盗されるからです。
何度か窃盗された事がありましたので、会社常駐では自作のツールは使いません。
また、何社かの仕事を引き受ける際、秘密保持契約を結びますので、おのずと自宅で作業する事になります。
無論他社の事はどうでもいいから自社へ来てくれと強要される事もありますが、
その様な自己中心的な要望を飲んでも私に何一つメリットがありませんので、
その時は仕事を断っております。
フリーでやっていくには、断る勇気を持つ事が肝心なのです。
品質が良いシステムを作るために最善を尽くすのが私のモットーです。
プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター