Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

フェールソフトとフォールバックの違い

フェールソフト」と「フォールバック」という言葉の意味を調べても同じようなことしか書いてないので混乱しがちだが……

フェールソフト
障害等が発生したときでも、「自動的に」一部の機能を停止したり性能を犠牲にしたりして動作を継続させる「機能」のこと(「フェールソフト技術」「フェールソフト機能」)。 RAID の縮退モードとか。ノートパソコンの省電力モードもある意味これなのかな。
フォールバック
障害等が発生したときに「ユーザの命令に従って」一部の機能を停止したり性能を犠牲にしたりして動作を継続「させること」(「フォールバックさせる」)。 Windows のセーフモードとか。 FM ラジオをモノラルにしてノイズを減らすのもこれかな。

IA の先生情報。http://sinzo.web.infoseek.co.jp/joho/kodogozen/02system/006/point006.htm によれば、フェールソフトは「機能縮小」、フォールバックは「縮退運転」。 RAID なんかはフェールソフト機能が働いているときの状態を「縮退モード」と言ったりするので、なおまぎらわしい。

マルチプログラミングとマルチタスキングとタイムシェアリングの違い

これもまぎらわしい。 Computer multitasking - Wikipedia によれば……

マルチプログラミング
実行中プロセスの切り替えは、入出力割り込みが発生した時のみ行われる。バッチ処理(一つのプロセスがずーっと CPU を占有していても OK な環境)向け。
マルチタスキング
実行中プロセスの切り替えは、入出力以外でも発生する。プリエンプティブものではタイマ割り込みを利用することが多い(それ以外の実装はあるのか?)。ノンプリエンプティブなものでは各プログラムが明示的に CPU を解放する。
タイムシェアリング
マルチタスキングを実現するための「方法」を指して言うらしい。また、ノンプリエンプティブマルチタスク(または Cooperative multitasking; 共同マルチタスキング)のことを指して言うこともあるのかな?

あと、「タイムスライシング」という言葉があるけれど、これはタイマ割り込みを利用したプリエンプティブなマルチタスクシステムにおいて、実行中プロセスの切り換えが一定時間(これを「タイムスライス」と呼ぶ)ごとになっていることを指して言うみたい。「タイムスライスマルチプレクシング」とも言うみたいね *1
なお、「マルチプロセッシング」の場合は一つのプロセスを(スレッド化等の方法で?)複数の CPU 上で実行することを言うみたい。

*1:通信で言う時分割多重 (Time Division Multiplexing) と言葉も内容も似ている

SQLite では ALTER TABLE が(ちょっとしか)できない

MySQL なんかでどれくらい柔軟に列の追加・削除を行えるのかは分からないけれど、少なくとも SQLite では表のリネームと列の追加くらいしかできないみたい *1MySQL-front でできるような、「この列とこの列の間に追加」みたいなのは望むべくもない、といった感じ。
サービス停止して、内容を dump して再読み込み、みたいな嘘んこでもいいから、やり方ってないものかなぁ。 Ideas - O'Reilly Media を手順通り実行するときに手間がかかるんだよね。データベースの内容の dump について調べてみようかな。

SQLite ControlCenter

SQLite ControlCenter 日本語版 というものがあって、スクリーンショットを見る限り MySQL-front みたいで便利そう!と思ったんだけど、列を追加・編集したりといった機能はついていないみたいだし、何より落ちまくって使いものにならない感じ。期待してしまった分だけがっかり。