日記に戻る

コンピュータ

プログラミング 19:16

プログラミングは、代入と計算、関数と思考力で、誰でも出来る。

実行することを、全部実行する。

C++は、クラスが多い。

Windows 19:16

Windowsは、オーバーライドでクラスに機能をつけたし、

メッセージでメンバ関数を呼び出す。

Linux 19:16

Linuxは、Cならば、関数を覚える。

C++やJavaならば、クラスを覚える。

Linuxライブラリ 19:16

ライブラリは、おそらく、glibc、カーネルのシステムコール。

Xなら、GTK+/GLIBか、GNOMEか、Qtか、KDE。

ツールチェイン 19:16

ツールチェインは、GCC、Make、Automake、Autoconf。

パッケージは、RPM、YUM、Dpkg、APT。

シェルは、BASH。

エディタは、Emacs、ELisp。

Windows 19:16

Windowsなら、Visual Studio。

VC++、C#、VB。

Javaなら、J2SE、J2EE。

開発は、Eclipse。

Apache 19:16

Apacheは、Perl、PHP、Python、Java。

ブラウザは、HTML、CSS、JavaScript。

動画は、FLASH、Windows Media、Quick Time。

Officeは、ワード、エクセル、パワーポイント。VBマクロなど。

文法と関数 19:16

文法と関数。

Cの文法と関数を覚える。

C++の文法とクラスを覚える。MSDN、他、追加のライブラリ。

Javaの文法とクラスを覚える。公式のドキュメントを参照。

Perl、Python、PHP、C#、Lisp、他にもいくらでも言語がある。

その他 19:16

その他、パソコンには、Googleのもの、Appleのもの、オープンソースのものが多い。

IBMのものも多い。HP、Dell、Sun、Oracle、BSD、など。

オープンソース 19:13

オープンソースは、見た目が悪い。

グラフィカル開発が出来ないのは何でだろう。

標準のクラスが無いからだ。

オープンソース標準クラス 19:13

オープンソース標準クラスを、C、C++、Javaで作って欲しい。

標準クラス 19:13

標準のクラスは、GNOME、KDEに両対応し、

MFC、Javaクラスを超えるものになって欲しい。

Office 19:08

Wikiも悪いが、OpenOffice.orgは悪い。

誰も何も買わなくなる。

GNU/Linux+OpenOffice.orgが良いものになると、

誰も何の購入もなしに全部の機械を手にする。

誰も有料のJustSystemなどのOfficeなんか買わない。

Linuxが良いものになるだけで滅びる。

クラスライブラリ 19:08

LinuxにJavaと同等以上のクラスライブラリを作り

GNOMEと統合すれば、Linuxは皆使うようになるかもしれない。

Linux 19:08

でも、Linux以外は、独占的だ。

コードが読めない。

ブラックボックスで、パソコンが何をしているのかは

Microsoftにしか分からない。

Linuxになれば、実行、配布、コピー、研究、

そういう自由が可能になる。

Linux 19:08

Linuxが流行ると、ラジカセやiPodなんか買わない。

古いパソコンで何でも出来るようになる。

昔速かったはずだから、速くできるはずだ。

マイクロソフト 19:09

マイクロソフトのC++コンパイラを使わなければ、何も作れない。

C++、C#、VBを選ぶしかない。

あるいは、GNU/Linuxである。GCCである。

他のものが無い。マイクロソフトとGNU/OSSしかない。

そこが悪い。ビル・ゲイツに勝てるわけが無い。

IT 19:09

Office以外のものは、OpenOffice.org(LibreOffice)

Visual Studio以外のものは、GCCやEclipse。

IBMが作らないか。Ubuntuが作らないか。

OS 18:52

OSは、いつも実行されているプログラムである。

ハードウェアのデバイス管理をすべてしている。

アプリケーションは、OSとライブラリに命令する。

ウィンドウ 18:52

ウィンドウ管理は、高度であるため、Xが実行する。

ツールキットはさらに高度であり、Xクライアントライブラリを使って実装する。

アプリケーションは、その上で実行している。

Linux 18:52

Linuxカーネルが全てしているのが、GNU/Linuxである。

アプリケーションは、さまざまな方法でLinuxカーネルと標準Cライブラリを実行している。

さらに、Linuxカーネルがアプリケーションを実行している。

KDE, GNOME 18:52

KDE, GNOMEは、独自のコンポーネントシステムを使っている。

Linuxカーネルの上で動作するUNIXアプリケーションだ。

Xを使う。

C言語 18:52

C言語は、機械語よりは高度だが、低水準の言語だ。

あとは、コンパイラだ。

コンパイラによって、ソフトウェアは機械語のバイナリファイルになり、

コンピュータで実行できる。

KDE 18:52

GNOMEはそれくらい。

KDEは、C++言語を使う。オブジェクト指向のクラスベースで作られている。

QtとKDEライブラリが賢い。

Linux 18:52

Linuxは、コマンドラインで使うと普通だ。

コマンドは、UNIXがそのままある。

grepやfindが賢い。

あとは、Emacsが賢い。

あとは、Debianが賢い。

Linux 18:52

Linux、GNOME、他、Javaなどはいろいろと悪いが、一番コンピュータだ。

KDEはさらに賢い。きちんと優れたOSになっている。

GNOME、KDEが複数あるのは、デスクトップもLinuxで色んなものが動くからだ。

Linux 18:52

Linuxは、ひととおり動くものを作っただけ。

KDEは、カーネルと一緒に、歯車のように動く。

1から作っても 18:52

OSは、1から作っても、Windowsと同じになるだけだ。

Linuxで良い。

作りたい部分を作れば良いと思う。

Windows 18:52

むしろ、Windowsで良いが。

Linux 18:52

Linuxよ、統一せよ!

Windows 18:52

Windowsを考えると良く分かる。

システムは違うが、概念は同じだ。

WindowsがWindowsアプリケーションを実行する。

LinuxがLinuxの実行可能ファイルを実行する。

基本 18:46

パソコンの基本。表示、編集、更新、保存、開くと閉じる。

サーバーサイドでは、表示とデーターベースである。

ワープロ 18:46

ワープロは必要ない。

エディタとブラウザがあれば良い。

サーバーサイド 18:46

サーバーサイドは、LAMPだ。

Linux+Apache+MySQL+PHPである。

説明することは無い。

最近はPythonが、特にデスクトップでの設定処理などに流行っている。

ワープロ 18:46

ワープロは、コンポーネントを作って作るしかない。

プログラムとデータ 18:31

要は、プログラムとデータだ。

パソコンは、プログラムがデータを操作しているだけだ。

LinuxよりWindowsのほうが賢いから、Windowsのほうがいい。

Linux 18:31

Linuxは適当にBASHとシェルスクリプトが賢い。

UNIX的なコマンドラインが賢いのかもしれない。

プログラム 18:31

要は、プログラムが動いているだけが、コンピュータだ。

Java 18:31

Javaは初心者向けだ。

一番簡単で、一番分かりやすく、一番コンピュータだ。

Linux 18:19

Linuxは、ファイルシステム、コマンド、設定ファイルを知れば、誰でも出来る。

X, GNOME, KDEは、適当に覚えるのが良い。

ソースコードは、ユーザーのホームディレクトリにコンパイルする方法を学ぶ事。

後は、初期化ファイルや起動スクリプトがある。

ソ連とアメリカ 18:20

パソコンは、ソ連とアメリカみたいなものしかない。

NASAと同じだ。

オリジナルはドイツである。

プログラミング 18:23

プログラミングは、パソコンのやることを全部書けば良い。

全部作るのは馬鹿だから、何か1つのものを作るのがいいが、

良い分野はコンパイラやXぐらいしかない。

頑張ってアプリケーションを作っても、iTunesと同じになる。

そこにげんなりする。

全部作ろうとすると、ストールマンにしかならない。

何年もやっているのに、何も出来ていない。

GNU/Linux 18:26

GNU/Linuxはおかしい。

GTK+は、C言語なのにツールキットだ。

GCJは、VMでないJavaだ。

Emacsは、エディタなのに環境だ。

おかしなものばかり作る。

そのうち、クラウドでないクラウドや

アンドロイドでないアンドロイドを作るだろう。

フリー 18:27

何故フリーになったのかは、誰でも分かる。

コピーすれば、誰でも作れるからだ。

Linux解説 21:12

(昔自分がインターネットに書いた文章を参考にしています。

著作権違反ではありません。著作者本人です。)

以下は元サイト。

2ch-Linux-Beginners - FrontPage

http://www12.atwiki.jp/linux2ch/pages/1.html

ただ、Wikiなので、色んな人が編集しています。

自分も著作者の一人である、と言う風に解釈してください。

このWikiは、コピーレフトでない、著作権フリーのWikiだと思うので、ブログに載せても良いでしょう。

Linuxは無料か 21:12

Linuxカーネルは無料だが、システムは必ずしも無料ではない。

LinuxはGPLライセンスのフリーソフトウェアとして配布されている。

GPLは同一ライセンスでの再配布を許可しているが、

そのため、誰が再配布しても構わないし、その際に料金を取っても構わない。

フリーソフトウェアのフリーは、「無料」ではなく、

入手したプログラムとそれを動かすユーザーのコンピュータが

自由に操作できること、などの「自由」を意味する。

具体的には、プログラムを好きに実行すること、

実行されるソースコードの内容を知って変えること、

コピーや再配布、派生してソフトウェアを作り、配布することを指す。

Linuxを入手するには 21:12

カーネルは、kernel.orgからダウンロードできる。

だが、そこにあるのはカーネルだけで、

OSを形作るほかのソフトウェアは含まれて居ない。

Linuxカーネルと、その上で動作するユーザーレベルのソフトウェアを集めた、

Linuxの動作環境をディストリビューションという。

ディストリビューションは誰でも作成できるが、

そのため様々な形態で配布されている。

使用に当たっては、公式サイトからダウンロードするか、

企業のサポートが必要なら購入する。

ダウンロードに長い時間をかけるのが嫌なら、

雑誌にCDやDVDが付属していることもある。

ディストリビューションとは 21:12

Linuxカーネルと独立したUNIXプログラムのまとめ作業をしている、

色んなプロジェクトや企業が作っている、Linuxの配布版だ。

Linuxは、どこかに環境を裁定している標準組織は存在せず、

それぞれのプロジェクトがソースコードを元に、

ニーズに合うOSを作って提供している。

違いは、GCCなどのツールチェーンのバージョン、

標準ソフトウェアの内容、

ソフトウェアのインストールや設定の仕方などだ。

ディストリビューションのアップデートによるシステムの変化 21:12

アップデートすると、通常は、パッケージの脆弱性とバグが修正される。

ディストリビューションが一旦リリースされると、

その上に機能追加や変更などがかかることは無い。

なぜなら、急にシステムが変わると、

サーバーなどのシステムを構築しているユーザーが困るからだ。

しかし、ディストリビューションによってアップデートの基準は違う。

Gentoo Linuxなど、どんどん新しいバージョンになることもある。

パーティションの分け方 21:12

普通は、/ とswapに2つは必要だ。

あとでディストリビューションを再インストールするなら、

/、/home、swapとすると、

ホームディレクトリだけ保管したままで、

/ にあるファイルをインストールできる。

ただし、再インストール時に /homeを適切にマウントするように

/etc/fstabを書き直すべきである。

/usr、/usr/local、/var、/tmp なども

場合によって分けておくと良いことがある。

パーティションを分けるとどうなるか 21:16

パーティションが / のほかに複数あるときは、

他のパーティションが / 以下にマウントされた状態で、

それぞれのディレクトリにファイルが出来る。

/ に使うパーティションには、

パーティションを分割したディレクトリのファイルはできない。

例えば / と /usrを分けると、

/binや /etcなどのファイルは / 用パーティションの中に、

/usr/binや /usr/shareなどのファイルは /usr用パーティションの中にできる。

よって、/ の下のディレクトリをパーティションに分割すると、

/ に使うパーティションに必要なサイズは小さくなる。

スワップ領域とは 21:12

スワップ領域は、実際のメモリが一杯になったときに、

あまり使わないデータをメモリから移動して空きを作るのに使う、

ハードディスク上の仮想メモリ領域だ。

コンパイルオプション vs 設定ファイル 21:12

Linuxでプログラムの動作を設定する方法には、

コンパイル時にオプションを指定して設定する方法、

設定ファイルで実行時に動作を変える方法の2種類が存在する。

前者の場合、設定しなおすにはプログラムの再コンパイルが必要だが、

後者の場合は同じプログラムを実行し直す度に(場合によっては実行中に)

動作する内容を変更することができる。

主に、単純なコマンド系プログラムでは前者の方式だけ、

シェルやネットワークなどのシステム系の設定では

前者に加えて後者の方式が取られる。

ファイルになっている理由は、単純で柔軟性があるという点であるため、

ユーザーにやさしいフロントエンド系のプログラム、

たとえば、Perlなどの言語で書かれたようなものを使って

ファイルを間接的に操作しても良い。

設定ファイル 21:12

後者の設定ファイルを使ったプログラムとシステムの設定について書いてます。

◇◇

マシンへのアクセスを制御する設定ファイル。

/etc/host.conf IPアドレスの名前解決方法の設定。今は殆ど使われていない。

/etc/nsswich.conf 名前解決等の手段の設定

/etc/hosts IPアドレスとホスト名の対応付け

/etc/hosts.allow アクセス許可設定

/etc/hosts.deny アクセス拒否設定

◇◇

ブート・ログイン時の処理を決定する設定ファイル。

/etc/issue, issue.net ログイン前に表示される注意書き

/etc/rc.d/rc

/etc/rc.d/rc.local ローカル用の起動設定

/etc/rc.d/rc.sysinit システム用の起動時初期化設定

/etc/rc.d/rcX.d ブートアップ時・終了時に実行するスクリプトを入れるディレクトリ、ランレベル別

◇◇

ファイルシステム関連の設定ファイル。

/etc/mtab 現在マウントされているファイルシステムの情報

/etc/fstab マウントするファイルシステムの情報

/etc/mtools.conf DOS用ユーティリティ向け設定

◇◇

システム管理者向けの設定ファイル。

/etc/group グループ設定

/etc/nologin root以外のログインの禁止を示すファイル

/etc/passwd ユーザアカウント情報の設定ファイル

/etc/rpmrc RPMコマンドの設定

/etc/securetty rootがログインできる端末の設定

/etc/usertty

/etc/shadow 暗号化パスワード

/etc/shells シェルとして認識されている物の一覧

/etc/motd ログイン後に表示されるお知らせ

◇◇

ネットワーク関係の設定ファイル。

/etc/gated.conf

/etc/gated.version

/etc/gateway

/etc/protocols プロトコル定義。変更禁止

/etc/resolv.conf ネームサーバーなどの設定

/etc/rpc RPC向けデーターベース。NFS用

/etc/exports エキスポートされるファイルシステム。NFS用

/etc/services インターネットサービスリスト

/etc/inetd.conf スーパーサーバ設定ファイル

/etc/sendmail.cf Sendmailの設定(かなり古いバージョンです)

/etc/sysconfig/network 「システムの」ネットワーク関連設定

◇◇

システム関係のコマンドの設定ファイル。

/etc/logrotate.conf ログのロテート(シフト)の設定

/etc/identd.conf

/etc/ld.so.conf ダイナミックリンカーの設定

/etc/inittab ブートアップ時・終了時に実行する処理。UNIXで最初に読まれる設定です。

/etc/termcap 端末設定ファイル

◇◇

デーモンの設定ファイル。

/etc/syslog.conf システムログデーモンの設定

/etc/httpd.conf Apache HTTPサーバーデーモンの設定(旧バージョン)

/etc/modules.conf 読み込むカーネルモジュールの設定ファイル

◇◇

個別ユーザー向け、設定・初期化ファイル。

~/.bash_logout ログアウト時に読み込むBashの後始末ファイル

~/.bash_profile ログイン時に読み込むBashの初期化ファイル

~/.bash_history Bash コマンドの履歴ファイル

~/.bashrc 起動時に読み込むBashの設定ファイル

GUI ツールキット (X ツールキット) とは 21:12

X で GUI アプリを作るためのウィジェット(部品)ライブラリだ。

X では、GUI の仕様が最低限までしか定められていない。

そこで、Xlib 等の低レベルなライブラリを直接触らないですむように、

楽に開発できるようなツールキットが別に作られた。

UNIX では標準的に Motif というツールキットが使われていた。

ただし Motif は商用だったので、

Motif で作ったソフトはそれ自体はフリーでも

Motif を購入しないと使えないという、

非常に馬鹿なものになってしまっていた。

そこで、当時 Motif で作られていた GIMP の開発メンバーが、

代わりに生み出したのが GIMP Toolkit(GTK+) だ。

これが後の GNOME で使われた。

さらに、標準的なツールキットが存在しない

Linux のバラバラな GUI 状況をどうにかしようと、

Trolltech という会社が作ったのが Qt(Q toolkit) だ。

Qt は KDE で採用された。

GTK+ と Qt が現在の Linux における2大ツールキットになっている。

rootユーザー 21:12

rootユーザー(スーパーユーザー)はUNIXに用意されている特別なユーザー。

rootユーザーには、マシンを完全に掌握できるroot権限(管理者権限)が与えられる。

UNIXでは通常、そのユーザーにとって操作できるように

所有権とパーミッションが設定されている

ファイルしか操作することができないが、

root権限の元で実行されたプログラムは、

ファイルの所有権に関わらずあらゆることを実行することができる。

そのため、全てのユーザーにとって共有される

システム一般のファイルでも、rootになれば改変できる。

rootユーザーは非常に強力なので、

常に使っているとあらぬ操作でシステムを

動作不能にさせてしまう可能性がある。

通常は普通のユーザーで操作を行い、

システム全体を調整する必要があるときだけrootユーザーを使おう。

root ユーザーに切り替えるには (su) 21:12

普通のユーザーでログインしてるときに

root や他のユーザーに切り替わりたいときは、

su を実行すると別のユーザーになった上で

新しいシェルを立ち上げる。

$ su -

Password: (root のパスワードを入力)

# (rootのシェルになった)

root のシェルではコマンド入力行の $ が # と表示される。

# exit

$ (ユーザーに戻る)

前のユーザーに戻るときは exit でシェルを終了させる。

シェルとは 21:12

シェル(「殻」という意味)は

コマンドラインからCUIプログラムを実行するソフト。

ライン入力を読み取って、適切なプログラムを適切な呼び出しで実行する。

コンソール端末でも、ターミナルエミュレータでも、

CUIプログラムを起動するときにはまずこれが起動して、

そこに入力を打ち込むことで間接的にCUIプログラムが起動する、

という形になる。

入力したい内容をファイルにまとめて書けば一気に実行もできる。

BashはUNIX標準シェルのshと互換のフリーなシェル。

Linuxで標準的に使われている。

~/.bashrc, ~/.bash_profile, /etc/profile, /etc/bashrcの違い 21:12

全部 bash で読み込まれる初期化設定ファイル。

けど、読み込まれるタイミングが違う。

ホームディレクトリにある .bashrc と .bash_profile は

ユーザーの個人用の設定で、

/etc にある2つはシステムの標準設定だ。

/etc/profile と ~/.bash_profile は

ログイン時のシェル(ログインシェル)で1回だけ読み込まれる設定で、

/etc/bashrc と ~/.bashrc はシェルの起動時に毎回読み込まれる設定だ。

普通は .bashrc か .bash_profile のどちらかに書いておけば大丈夫。

コマンド 21:12

個々のコマンドは多すぎるので、インターネットで探してください。

基本的なコマンドはCoreutilsです。manページもあります。

ファイルシステム構造について 21:12

基本は以下だ。(/ ディレクトリ配下)

/ ルートディレクトリ

/home ユーザーのホームディレクトリ

/root root のホームディレクトリ

/bin 汎用コマンド

/sbin 管理者用コマンド(root専用)

/usr アプリケーションなどのパッケージ

/etc 設定ファイル

/var データファイル

/tmp 一時ファイル

/dev デバイスファイル

/mnt デバイスをマウントするディレクトリ

/proc システム情報

/lib 共有ライブラリ

/boot OSのブート用ファイル

/usr の下は更に以下のようになっている。

/usr/bin アプリケーションによる汎用コマンド

/usr/sbin アプリケーションによる管理者用コマンド (root専用)

/usr/lib アプリケーションのライブラリ

/usr/share アーキテクチャに依存しないファイル (ドキュメントなど)

/usr/include C言語用ヘッダファイル

/usr/local アプリケーションをソースからコンパイルして入れるなど、管理者が自由に使える領域

ホームディレクトリにはユーザーの個人ファイルの他、

ユーザー固有の設定ファイルやデータファイルが

ドットファイルとして置かれている。

このようになっている理由は、

パーティションを分ける際にディレクトリの用途によって

別々の領域に分けやすくするためだ。

(例えば /home とその他のディレクトリを分けておくと、

他のパーティションが障害にあっても /home は被害にあわずに済む)

ディストリビューションによっては

/usr とは別に /opt があったり、

/mnt がなかったり、/boot が /initrd だったりもする。

bin と sbin の違い 21:12

/ や /usr にある bin や sbin ディレクトリには、

ユーザーやシステムから使われるバイナリの実行ファイルを置く。

どんなユーザーからも使われる可能性がある

汎用的なプログラムは bin に、

システム管理者しか使わないような

運用系のプログラムは sbin に置く。

/ と /usr 21:12

/ にはシステムの動作に最低限必要なファイルとプログラム、

/usr にはそれ以外のファイルとプログラムを置く。

/etc と /var 21:12

どちらもプログラムから使用される設定・データファイルを置く。

ただし、一度設定したら変わらないようなファイルは /etc に置き、

/var は使っているたびにサイズが変化するファイルを置く。

ファイル・ディスク操作用のコマンド 21:12

ファイルのリストを表示: ls

カレントディレクトリにあるファイルとディレクトリ一覧を見る。

$ ls

ドットファイルまで見たい時は -a オプション、

ファイルの詳細を表示するには -l オプションをつける。

$ ls -al

ディレクトリ名を指定するとカレントディレクトリ以外を表示する。

$ ls [表示するディレクトリ名]

◇◇

ディレクトリを移動: cd

指定ディレクトリに移動する。(カレントディレクトリを変更する)

$ cd [ディレクトリ名]

◇◇

ファイルをコピー: cp

ファイルをコピーする。

$ cp [コピー元のファイル、ディレクトリ名] [コピー先のファイル、ディレクトリ名]

ディレクトリごとコピーする時は -r オプション。

◇◇

ファイルシステムを検索: find

ファイルを検索する

$ find [探すディレクトリ] -name [名前]

いろんなオプションが使える上、

ディレクトリツリーを調べるのにも使えて便利だ。

◇◇

ファイルを移動: mv

ファイルを移動する。名前の変更にも使える。

$ mv [現ファイル、ディレクトリ名] [新ファイル、ディレクトリ名]

◇◇

ディレクトリを作成: mkdir

新しいディレクトリを作る。

$ mkdir [ディレクトリ名]

一気に深いディレクトリを作る時は -p オプション。

◇◇

ファイルを削除: rm

ファイル、ディレクトリを削除する。

$ rm [ファイル、ディレクトリ名]

ディレクトリ以下をまるごと削除するは -r オプション。

◇◇

ファイルを展開: tar

tar.gz または tar.bz2 形式で圧縮されたファイルの展開。

$ tar xvf [圧縮されたファイル]

◇◇

ハードディスクの使用状況を表示: df

ハードディスクの残り容量(=使用状況)を表示。

$ df

Filesystem 1K-ブロック 使用 使用可 使用% マウント位置

/dev/hda3 14160404 2292192 11148904 18% /

/dev/hda2 101105 6340 89544 7% /boot

none 123728 0 123728 0% /dev/shm

デフォルトだとブロック数で表示するためわかりにくいので、

-h オプションをつけるとよい。

-h は単位を MB や GB で表示させるオプションだ。

$ df -h

Filesystem サイズ 使用 残り 使用% マウント位置

/dev/hda3 14G 2.2G 11G 18% /

/dev/hda2 99M 6.2M 88M 7% /boot

none 121M 0 121M 0% /dev/shm

-T オプションをつけるとファイルシステムの種類

(ext2, ext3, Reiserfs, …etc)を併せて表示する。

デーモン (daemon) とは 21:12

PC の起動から常に実行状態でシステムに待機 (常駐) し、

自動で定期的に処理を実行したり、

サーバーとしてクライアントの要求に対して

サービスを提供するためのプログラムの事だ。

ランレベル 21:12

OS の起動・終了時に実行する処理を段階ごとに分類する仕組みである。

SysV系UNIX互換のディストリビューション (Red Hat/Slackware系) での

標準的なランレベルの設定は以下のとおり:

0 停止

1 シングルユーザモード

2 マルチユーザモード(ネットワークなし)

3 マルチユーザモード(ネットワークあり)

4 未使用

5 マルチユーザモード(GUIログイン)

6 再起動

ランレベルの配置は /etc/rc.d で決まっていて、

起動・終了時に init が /etc/inittab の設定をみて実行します。

なので、普段使うランレベルを変更したい時は

/etc/inittab を編集しましょう。

起動スクリプトの配置 21:12

ディストリビューションによって /etc 直下にあったり

/etc/rc.d にあったりという違いはあるものの、

大まかに言えば

/etc/rc.d/init.d にシステムデーモン/サービスを

起動・終了させるための実行スクリプトがある

/etc/rc.d/rc[数字].d に各ランレベルごとに

実行スクリプトへのリンクがある(Sで始まる名前は起動、Kは停止)

たとえば Apache を起動させたければ

/etc/rc.d/init.d/apache start

stop と restart で停止/再起動だ。

RPMとDpkg 21:12

「ソフトをビルドしてファイルにまとめ、

マシンにインストールする」という基本部分は共通しているものの、

いくらか違いが有るので以下に列挙する。

設定ツールの分離 vs 統合 21:12

RPMでは、パッケージシステム自体には、

インストールした設定ファイルを編集する

フロントエンド系の機能は含まれない。

独自アプリとして分離されている。

フロントエンド部分が他のアプリと同じように

独立しているので、製作者が独自の設定ツールを載せられる。

ディストリビューション開発者の意欲次第で工夫が出来る。

RPM系のディストリビューションでは、

Dpkgを採用したものに比べて

設定系のフロントエンドが使いやすく工夫されてるものが多い。

逆に、Dpkgではパッケージシステムに設定機構を搭載し、

パッケージ製作者は簡単なスクリプトを書くだけで

同じ設定機構を再利用できるようにした。

わざわざソフトごとにフロントエンドを作る必要がないし

簡単に対応できるので、ソフト開発者側で対応しやすい。

設定できるソフトはRPM系のディストリビューションよりも多め。

だが、どのソフトも同じインターフェースを再利用する関係から、

ただ値を入れて進めるだけの質素な画面が出てくることが多い。

スクリプトの付属形態 21:12

RPMでは、基本的にソースファイルが入ったtarballと

specファイルを別のディレクトリに入れておいてパッケージを作成する。

これは、ディストリビューション開発者が

いろんなところからソースファイルをとってきた上で、

それぞれに対応するspecファイルを記述するにはやりやすい慣習だが、

ソフト開発者が自らそのディストリビューション用の

パッケージを作ろうと思ったらやや面倒になる。

RPMにする前はコードを編集するたびに

ただmakeだけ実行してればよかったが、

RPMにしようと思ったらまずtar.gzを出力して、

specも編集してrpmを吐く必要がある。

現存のソフトのコードに変更を加える場合、

diffで変更内容をパッチに取ったりする必要があるかもしれない。

Dpkgでは、ソースファイルとパッケージデータを一緒に保持する。

ソースファイルの中にファイルを加えてやるだけで対応でき、

コマンド1つでパッケージが作れるので楽だ。

変更した内容も自動でdiffに加えられる。

srpm vs diff 21:12

RPMではspecファイルを含めたソースパッケージの配布に

src.rpmという独自の形式を使う。

が、Dpkgではオリジナルのtar.gzやdiffをバラに分ける。

RPMの場合、持ち運びしやすくてかさばらない。

Dpkgの場合はいちいちインストールしなくても中身が見れる。

ソースからソフトをインストールする 21:12

ローカル環境向けディレクトリ /usr/local にインストールすれば、

全てのユーザーがソフトウェアを使用できる。

/usr に入れると RPM みたいなパッケージを展開して入るファイルと

ごっちゃになるのでオススメしない。

/usr/[アプリケーション名] みたいに

新しいディレクトリを作っても良い。

作ったら PATH に入れておこう。

または、ユーザのホームディレクトリなどを使う。

そのほうがおすすめかもしれない。

カーネル 21:16

Linuxを簡単に言うと、カーネルとコマンドだ。

あるいは、全部のプログラムだ。

プログラミング 21:41

Linuxとは言うが、僕は何も作っていない。

プログラミングは、難しかった。

本を読まないと出来ない。

Linux 22:41

Linuxは悪い。

給与を払わない。馬鹿にインターネットで作っている。

左翼だ。レッドハットは、左翼のホワイトハットだ。

Windowsが良い。

給与を払う。自由だ。

発展する。

ビル・ゲイツだ。賢い。

プログラミング 23:26

プログラミングは、真面目に考えないほうが良い。

適当に、やっていることを考えるのが良い。

コード 23:26

コードである。

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=summary

http://git.savannah.gnu.org/cgit/coreutils.git

http://git.gnome.org/browse/

http://lxr.kde.org/search

ジョブズ 15:18

ジョブズはすばらしかった。

オリジナルを全部作って、ピクサーまで出来る。

ああいう人間が良い。

Windows 15:36

Windowsは賢い。

Windows 95で完成させたビルゲイツが悲惨だ。

よくある、最初の作品で完成だ。

あとのシリーズに意味が無い。

Vista、7は、かなりの馬鹿だ。

意味のない部分を変えても、何も得することが無い。

ただ、もう一度考えて、覚えなおすだけで

初心者が躊躇する。

さらに言えば、アップデートだけで儲けるのはおかしい。

古いパソコンは切り捨てる。

どんどん買うが、ビルゲイツに貢いでいるだけだ。

最近 15:41

最近好きなものは、iPhoneだ。

iPodタッチを使っていると、使える。

はてなに投稿、と、音楽を聴く、しかしないが。

ゲームは入れたくない。

僕はGoogleにつく。

Androidが好きだ。

ロボットにはなりたくない。

パクリ 17:27

パクリは、悪い。

Linuxは、コピーして、無料にして、オリジナルを滅ぼす。

Microsoftは、コピーして、自己資本にして、オリジナルを滅ぼす。

Appleは、最近の機械を全部作っているのに、分からない。

Appleが賢くは無い。ビルゲイツも独自に見える。

Emacs 20:34

悲惨に、Emacsは賢い。

僕も、xyzzyを使う。

一番賢いエディタが、Emacsだ。

発展 20:34

発展はつまらない。

馬鹿に、標準になる。

誰もが、Wikiしか見ない。

誰もが、Windowsしか使わない。

それ以前の多様な文化が消えた。

賢くなったから良いか。

はてな 21:40

はてなは悲惨だ。

ブログなんか、儲かるわけが無い。

ブログユーザーが多いから、消すわけにいかない。

放っておくと、倒産する。

借金地獄になる。

アナログ・デジタル 16:16

アナログな機械は、直せるのが良い。

デジタルになると、何も直せない。

機械 16:16

機械を綺麗にしても、意味がないと思う。

iPod 17:59

iPodが嫌いになった。

変なことが起きて、壊れる。

動かなくなる。

治し方 18:02

iOS 5.1にしたときに、

アルバムがアーティストの項目の中に表示されなくなったときは、

アルバムアーティスト名を確認して、

無いものにiTunesで入力する。

ビルゲイツ 18:26

ビルゲイツは賢い。

Windows 7は、誰でも使えるほどわかりやすくなった。

パワーシェルは、きちんと賢い。

Officeでは、ワードで数式が表示できるようになった。

Officeは、作りこまれている。

アップルとグーグル 18:27

アップルは、オリジナルを作り

グーグルは、賢いサーバーサイドを作っている。

グーグル 18:30

グーグルの賢い点は、AndroidをJavaとLinuxにしたこと。

誰でもわかる点がいい。

その点、アップルはObjective-Cだ。

囲い込みはつまらない。

Google 18:32

GoogleのGo言語は悲惨だ。賢い人間がやっている。

Oracle(もとはSun)のJava坊や、Dukeは悲惨だ。ストールマンだ。

Wiki 18:34

Wikiは賢い。自由で平等で、民主主義で社会主義だ。

賢くなりすぎて、英語版は全世界に勝っている。

悪い点は、給与を払わない、誰も何も買わない、インターネットを征服した。

しかし、買ったパソコンでWikiを全部見れるのはいい。

世界はそういう風に終わった。

IBM 18:35

IBMは、製品名が悪い。

Cell(細胞)やBlue Gene(青い遺伝子)だ。

人間を作りたいのだ。

Google 18:39

Googleは、悪い。

人間をロボットにしたり、違法コピーを蔓延させている。

検索エンジンは、あまり高度でない。

広告は、インターネットを全部わが物にして儲けている。

Google 18:41

Googleは、あまり悪くない。

パクリは普通だ。ライブドアよりは、はるかに賢い。

Windows 18:53

ビルゲイツのWindows 7で、WikiとOfficeとGoogleを使う。

それがパソコンだ。

WindowsとWiki 18:53

WindowsとWikiは、標準になったのが悪い。

それ以外の豊富な文化がなくなった。

なぜか、Linuxは、Windowsも、Macも、スマートフォンも、NeXTすらパクっている。

GNOME、KDE、UbuntuのUnity、WindowMaker、fluxboxである。

GNOMEは、スマートフォンとレジストリ、COMと.NETをパクった。

KDEは、Windows 7をパクった。

Unityは、Macをパクっている。

WindowMakerはNeXTSTEPをパクった。

fluxboxは、適当にシンプルで軽快である。

カーネルとコマンドライン、BASHは、UNIXをすべてパクった。

Xは、DOSとWindows 3.1のままである。

遅くて、不安定だが、いつかはまともなものになるのだ。

Linux 18:55

Linuxは、カーネルを改良するだけで良いのが賢い。

GPLだから、誰も金儲けができない。

全部無料だから、いくらでもアプリケーションが使える、という発想だ。

Linux 18:56

Linuxは、サーバーサイドとプログラミング言語が賢い。

GCCとEmacsが使えるほか、

Perl、Apache、Java、SQL、が誰でもフリーで使える。

自宅サーバーに使える。

オープンソース 18:58

オープンソースの発想は普通だ。

無料かつ共有して、インターネットで共同して作れば、

きちんと賢いものが、ゆっくり出来ていく。

金儲けと同じだ。金は、いくらでも研究ができるが、

Linuxは、そこらへんをインターネットでやっているだけだ。

Linux 19:01

パクリとは言うが、結構オリジナルなのがLinuxだ。

GNOME 3、Unity、KDE 4が結構独自で、綺麗だ。

Windows 19:05

Windowsよ、発展せよ!

永遠に発展し、すべてを統一するのだ。

発展 16:46

そろそろ、アップルなどのおかげで

発展は、出揃った。

Windowsも、成熟した。

次は、ロボットだ。

でも、誰も作れない。

日本人に、コードは書けない。

数学は、出来ないのだ。

人工知能 17:00

僕のホームページに、

人工知能のコードがある。

繰り返し、ランダムに、思う。

記憶や、考える力がない。

オブジェクトに記憶を保存したり、

人工知能を乗せると良いと思う。

クラス 20:08

パソコンは、C++では、クラスである。

クラスで考え、クラスが動く。

その通り、JavaもC#も同じだ。

C 20:09

Cでは、クラスでない。

オブジェクト指向をしない。

そのままの構造体とポインタを、

オブジェクトとして使うのだ。

オブジェクト 20:10

オブジェクトを使用し、

オブジェクトを表示し、

オブジェクトを処理する。

C++ 20:13

C++コンパイラは、public、protected、privateを保持したまま

C++言語をポインタと関数に変換する。

コンパイラは、CとC++の機能をきちんと把握して、

継承やオーバーライドをきちんと実行できるようにする。

パソコンは、そのように動いている。

C++ 20:14

C++のオブジェクトは、その通りCでプログラムに変換される。

そのプログラムの集合体が動いているのが

現代的なOSである、Windowsである。

CとJava 20:16

Javaは、そのC++をVMにして、どこでも実行可能にした。

Javaのライブラリは、C/C++/Javaで書かれている。

それを、よりWindowsに近いものにしたのが、.NETである。

コンパイラ 20:18

コンパイラを実現可能にするためには、

基本となる基礎プログラムを作り、それをVMにする。

つまり、Javaである。

あるいは、Cで実現する。そのように、完全にCに変換する。

中間コードを作るのもいい。

マクロを全てライブラリ化 20:20

C++からCに変換し、

そのマクロを全てライブラリに移行すれば良いように見える。

リンカ 20:46

リンカで繋げれば良い。

アセンブラ 20:49

あとは、アセンブラである。

Cをアセンブルするためには、

さらに低機能な方が良い。

表示 21:11

表示部分は、オブジェクトの表示を

繋ぎ合わせて表示する。

マルチタスク 21:18

それぞれのアプリケーションの空間を作って

現在実行中のものをそこに全て保存する。

いらないもの、もう終わったものを消す。

そのように、マルチタスクが実現できる。

メモリ 21:19

メモリの部分は、独立して使う。

CPU 17:06

CPUは常に同じことをしている。

プログラムも、常に同じ命令を実行させる。

プログラム言語で記述されたソースコードは、

機械語の命令に変換されて実行させられる。

計算 17:06

計算は、おそらく、論理和と論理積を使って

代入や四則演算をしている。

パソコン 18:02

パソコンは、難しくない。

コードを見て、代入を考えれば出来るはずだ。

コンピュータ 16:28

コンピュータには、UNIXの作り出したファイルという概念を使って

色んな性質のファイルとメモリバッファを処理する。

HTML、CSS、JavaScriptを処理するのがブラウザである。

UNIXとOffice 16:29

UNIXは、コマンドラインとデーモン、Xであり

Windowsは、WindowsとOfficeである。

Xの周辺では、オブジェクト指向なデスクトップ環境を提供する。

デスクトップ 16:35

デスクトップ環境は、メッセージでプログラムが動く。

クリックすれば、それをOSがプログラムに伝達して、

そのプログラムの一部のメソッドが実行されるのである。