adminAudaciousはWinampライクなソフト。UbuntuにインストールしてWinampのスキンを使う。audacious起動したらスキンをWinampスキンに切り替える。winampのクラシックスキンを、winampのサイトからダウンロード、ここではこれをダウンロードした。以下にフォルダ付きで置く。Updates.txt$audaciousを再起動して設定からこのスキンを選択する。スキンはファイルを展開しなくても、.wszのまま、~/.local/share/audacious/Skins/に置けば反映される。admin連載の一覧はここ前回CDなしでGentooが起動できるまでやった。ここからはCDなしで起動できたところから。eth0があることを確認。-a...eth0が表示されない場合は、モジュールをインストールできてない可能性が高い。その場合はカーネル(モジュール)再構築する。eth0...sshdサーバ起動。start...#ネットワークを自動で立ち上がるようにする。defaultsshdを自動で立ち上がるようにする。defaultvmware-toolsのインストール。Player付属のものを使った。toolsのインストールを選択して、vmware-toolsのCDを接続する。マウントして、ファイルを展開して、インストーラを実行する。その前にvmware-toolsの条件を満たすようにいくつか修正。./vmware-install.pl全部デフォルトでエンターを押してインストールした。ここで再起動して、ネットワークが立ち上がるかを確認。これでこんどからVMplaerを触らずに端末から操作できるようになった。admin連載の一覧はここここを参考にGentooをインストールする。Playerを起動して新しい仮想マシンを作る。選べるゲストOSにgentooがないので、Linux2.6.xカーネルを選ぶ。仮想マシンを作成した後、再び編集していくつか変える。メモリを512MにUSBを削除ハードディスクをIDE8Gに(前のファイルは削除)ネットワークアダプタはブリッジ接続にrrgentooのウェブサイトからinstall-x86-minimal-20110809.isoをダウンロードして、CDROMに接続して仮想マシンを起動する。プロンプトが出たらリターンを押す。途中のキーマップのところで22を入力(遅いと勝手に進んでしまう)プロンプトが表示されたら、ルートのパスワード設定、ユーザの追加、ネットワークの立ち上げ、sshdの起動を行う。ifconfig...#sshdの設定を変えてパスワードでのログインを許可する。start...#poderosaでrootでログインパーティションを設定する。ここではパーティションは1つにして、スワップはファイルで行うようにする。VMwareなので後々ディスクを拡張したりするときにこの方がらくだと思われる。#ハードディスクを作成して、スワップ領域も作成した。次にstage3といわれるファイルをダウンロードする。ダウンロードする場所はマウントした/mnt/gentooにする。http://www.gentoo.org/main/en/mirrors.xmlqを押してlinksを終了。stage3-i686-20110809.tar.bz2Portageというソフトウェア情報ファイル一群をダウンロード。/mnt/gentoo/usrchrootの前にリゾルバ情報をコピー。入ってからだと/etc/resolv.confが見えなくなり、dhcpcdもまだ入ってない。#タイムゾーン情報をコピーして、時刻を合わせる。gentoo-sourcesカーネルのコンフィグをする前に自分のマシンの環境を確認するためにpciutilsをインストールして、lspciやlsmodで今の状態を調べる。supportをモジュールとしてインストールことが大切らしい。menuconfigプロセッサファミリーでAthron64を選択あとは適当に選択makeして/bootにコピー。ここでは名前は簡単のためkにした。/boot/kfstabの作成。ここでのハードディスクはパーティションが1つでスワップは/swap/swap0のファイルで行っているので以下のような/etc/fstabを作成。/boot/initramfs-genkernel-x86-2.6.24-gentoo-r5grubのため一時的なmtabを作ってから、grubをインストール。reboot起動できた。chroot内でユーザを作っていなかったのかログインできない。一度CDで起動してchrootしてからpasswdでrootのパスワードを設定(biosでCD起動をHDより前に持ってこないとCD起動できない)リブートしてログインログインできた。/にあるダウンロードしたtarを削除してインストール終了。動かないが今度はCDなしでできるはず。memoryで失敗する。調べてたらただ単にswapメモリがなくてメモリが足りなくなっているだけであった。/proc/swaps...スワップパーティションをさがす。-l...スワップオンする。adminWin32APIにはセキュリティ機構があるがこれはカーネルの機構だけにある。引数にとる関数はどれもカーネルの関数になる。stationがある。Station(WS)と結び付けられる。WSはクリップボードや、アトムテーブル、Desktopを持っている。Desktopは論理的な画面でウインドウとかメニューとかフックとかを持っている。プロセスはCreateWindowStationで作ってあるWSに、SetProcessWindowStationしてデフォルトじゃないWSに結びつくことができる。GetProcessWindowStationで自分のプロセスのWSを取得できる。GetUserObjectInformationでWSの情報を取得できる。adminmonitを調べてみたがシステムがビジー状態の時リブートするようなことをするのがどうやっていいかわからなかった、もしかしたらこういう機能はないのかもしれない、ので、自作してみることにした。このプログラムはcronで定期的に動かして、システムがビジー状態だったらリブートする。ビジー状態の判定は、/proc/loadavgを見ればいいと思う。そこで、C言語で以下のプログラムを作ってみた。0;}/proc/loadavgの出力は左から、1分、5分、15分の平均負荷なので5分後をみて、それが20を越えていたらリブートするようにした。20は適当に決めたので、これくらいでいいのかはよく分からない。リブートは/sbin/rebootを直接実行するようにした。main.c/sbin/rebootはルートしか実行できないので、ルートで実行しないとならない。あとはこれをcronに登録する。/etc/crontabを編集して以下の一行を加えた。/root/bin/busyrebooterログとかは全然とってないので、ちゃんと動いているのか調べられない。adminstd::stringは==で比較すると、大文字小文字を区別する。いまvector<string>があってここからある文字列が存在するかを調べたいが、大文字小文字を無視して比較したいとする。普通にstrcmpiなどでやってしまうのが簡単だが、せっかくなのでstd::stringを調べてこれを改良してやる方法。std::stringは以下のようにtypedefされている。string;basic_stringのテンプレート第2引数のchar_traitsが、文字列の比較の実装などを提供するクラスになっている、==演算でこのクラスのstatic関数compareが呼ばれる。よってこのchar_traitsを自分で実装し、そこでCaseInsensitiveに扱う関数をつくり、basic_stringの第2引数にこれを渡せばいいはず。0;}vectorのfindでも動いた。0;}今回はこれが動いたが実際にはchar_traitsの他の関数が呼ばれるかもしれないのか良くわからないので、注意が必要。アーカイブを取得する必要があります。ディスク容量が消費されます。個のファイルとディレクトリがインストールされています。アーカイブを取得する必要があります。ディスク容量が消費されます。個のファイルとディレクトリがインストールされています。start$インストールされたファイルを確認。monit/./etc/etc/default/etc/default/monit/etc/monit/etc/monit/conf.d/etc/monit/monitrc/etc/init.d/etc/init.d/monit/etc/pam.d/etc/pam.d/monit/var/var/lib/var/lib/monit/usr/usr/sbin/usr/sbin/monit/usr/share/usr/share/man/usr/share/man/man1/usr/share/man/man1/monit.1.gz/usr/share/doc/usr/share/doc/monit/usr/share/doc/monit/README/usr/share/doc/monit/changelog.Debian.gz/usr/share/doc/monit/CONTRIBUTORS/usr/share/doc/monit/monit.html/usr/share/doc/monit/README.Debian/usr/share/doc/monit/contrib/usr/share/doc/monit/contrib/monit-OSX-startup.README/usr/share/doc/monit/contrib/monit-OSX-startup.tar.gz/usr/share/doc/monit/contrib/monit.php/usr/share/doc/monit/contrib/monit.upstart/usr/share/doc/monit/contrib/monit_update/usr/share/doc/monit/contrib/wap.php.gz/usr/share/doc/monit/contrib/rc.monit/usr/share/doc/monit/contrib/monitrc-gentoo.gz/usr/share/doc/monit/copyright/usr/share/doc/monit/changelog.gz/usr/share/doc/monit/FAQ.txt.gz/usr/share/doc/monit/README.SSL.gz/usr/share/doc/monit/CHANGES.txt.gz$/etc/default/monitのstartupを1にして起動してみる。/etc/monit/monitrc.$/etc/monit/monitrcを編集してみる。readonlyufwを止めてブラウザで開いてみた。disableとりあえず開けたので、あとはmonitrcのチェック項目を書いていけばいいのだと思われる。admin大変なことになってるのでメモ。配列の参照をとる関数。0;}aaaはテンプレートにしても書ける。0;}となると__countof_helperは_SizeOfArray個のchar配列のポインタを返す関数の宣言。それをsizeof(*__countof_helper)とすれば、_SizeofArray個のchar配列を返す関数のサイズとなって配列の個数になる。