Ubuntu 11.04にAudaciousをインストールしてWinampのスキンを使う

AudaciousはWinampライクなソフト。UbuntuにインストールしてWinampのスキンを使う。

バージョン確認。

Audaciousをインストール

起動したらスキンをWinampスキンに切り替える。
Audacious

winampのクラシックスキンを、winampのサイトからダウンロード、ここではこれをダウンロードした。

ダウンロードした.wszファイルを展開して(これはzipファイル)、~/.local/share/audacious/Skins/ 以下にフォルダ付きで置く。

audaciousを再起動して設定からこのスキンを選択する。

スキンはファイルを展開しなくても、.wszのまま、~/.local/share/audacious/Skins/に置けば反映される。

vmware player 3.1.3にgentooをインストール その2

連載の一覧はここ

前回CDなしでGentooが起動できるまでやった。
ここからはCDなしで起動できたところから。

ネットワークの確認。eth0があることを確認。

eth0が表示されない場合は、モジュールをインストールできてない可能性が高い。その場合はカーネル(モジュール)再構築する。
ネットワーク立ち上げ

sshdサーバ起動。(パスワードでログインできるようにするのは前回と同じ)

ネットワークを自動で立ち上がるようにする。

sshdを自動で立ち上がるようにする。

vmware-toolsのインストール。
emergeにもvmware-toolsがあるが、ここではVMWare Player付属のものを使った。
VMWare PlayerのメニューからVMWare toolsのインストールを選択して、vmware-toolsのCDを接続する。マウントして、ファイルを展開して、インストーラを実行する。

その前にvmware-toolsの条件を満たすようにいくつか修正。ここを参考にした。

ファイルを展開してインストール

全部デフォルトでエンターを押してインストールした。
ここで再起動して、ネットワークが立ち上がるかを確認。

これでこんどからVMplaerを触らずに端末から操作できるようになった。

vmware player 3.1.3にgentooをインストール その1

連載の一覧はここ

ここを参考にGentooをインストールする。
VMWare Playerを起動して新しい仮想マシンを作る。
新しい仮想マシン ウィザード

選べるゲストOSにgentooがないので、Linux2.6.xカーネルを選ぶ。
ゲストOSの選択
仮想マシンの名前を指定
ディスクのサイズの指定
準備完了

仮想マシンを作成した後、再び編集していくつか変える。

  • メモリを512Mに
  • USBを削除
  • ハードディスクをIDE8Gに(前のファイルは削除)
  • ネットワークアダプタはブリッジ接続に

仮想マシン設定

rr

gentooのウェブサイトからinstall-x86-minimal-20110809.isoをダウンロードして、CDROMに接続して仮想マシンを起動する。

CDから起動してboot: のプロンプトが出たらリターンを押す。途中のキーマップのところで22を入力(遅いと勝手に進んでしまう)

プロンプトが表示されたら、ルートのパスワード設定、ユーザの追加、ネットワークの立ち上げ、sshdの起動を行う。(dhcpを使わない場合は net-setup eth0 でマニュアル設定できる)

sshdの設定を変えてパスワードでのログインを許可する。

ここで
PasswordAuthentication no

PasswordAuthentication yes
に変える。

sshdの起動

poderosaでrootでログイン
ポデローザ

パーティションを設定する。ここではパーティションは1つにして、スワップはファイルで行うようにする。VMwareなので後々ディスクを拡張したりするときにこの方がらくだと思われる。

ext3を作成

マウントしてswapファイルの作成

ハードディスクを作成して、スワップ領域も作成した。次にstage3といわれるファイルをダウンロードする。ダウンロードする場所はマウントした/mnt/gentooにする。

linksでjaistへ

stage3ゲット
stage3GETTOOO
qを押してlinksを終了。ファイルを展開

Portageというソフトウェア情報ファイル一群をダウンロード。

portabe latest GET

展開

chrootの前にリゾルバ情報をコピー。入ってからだと/etc/resolv.confが見えなくなり、dhcpcdもまだ入ってない。

procとdevをマウントしてからchroot

タイムゾーン情報をコピーして、時刻を合わせる。以下の例は8/29 11:00。

Portageをアップデート

Linuxカーネルソースをインストール

カーネルのコンフィグをする前に自分のマシンの環境を確認するためにpciutilsをインストールして、lspciやlsmodで今の状態を調べる。ここも参考になる。とくにAMD PCnet32 PCI supportをモジュールとしてインストールことが大切らしい。

カーネルコンフィグ

プロセッサファミリーでAthron64を選択

あとは適当に選択

makeして/bootにコピー。ここでは名前は簡単のためkにした。

fstabの作成。ここでのハードディスクはパーティションが1つでスワップは/swap/swap0のファイルで行っているので以下のような/etc/fstabを作成。

必要なものインストール

grubをインストールしてgrub.confを設定

grubのため一時的なmtabを作ってから、grubをインストール。

chrootから抜けてunmountしてreboot

起動できた。
gentoo起動成功

しかしchroot内でユーザを作っていなかったのかログインできない。もう一度CDで起動してchrootしてからpasswdでrootのパスワードを設定(biosでCD起動をHDより前に持ってこないとCD起動できない)

リブートしてログイン

ログインできた。
/にあるダウンロードしたtarを削除してインストール終了。
多分色々動かないが今度はCDなしでできるはず。

genkernelでlzma : Can not allocate memory

gentooでカーネルを構築するgenkernelコマンドでlzmaがcan not allocate memoryで失敗する。いろいろ調べてたらただ単にswapメモリがなくてメモリが足りなくなっているだけであった。

スワップメモリの確認

スワップパーティションをさがす。

スワップオンする。

C#でファイルをクリップボードに「切り取る」

ここここより要約

window stationとdesktop

Win32APIにはセキュリティ機構があるがこれはカーネルの機構だけにある。SECURITY_ATTRIBUTES を引数にとる関数はどれもカーネルの関数になる。ユーザオブジェクト(ウインドウとか)やGDIオブジェクトでのセキュリティ機能としてWindow stationがある。

プロセスがユーザAPIを呼ぶとデフォルトのWindow Station(WS)と結び付けられる。WSはクリップボードや、アトムテーブル、Desktopを持っている。Desktopは論理的な画面でウインドウとかメニューとかフックとかを持っている。

プロセスはCreateWindowStationで作ってあるWSに、SetProcessWindowStationしてデフォルトじゃないWSに結びつくことができる。

GetProcessWindowStationで自分のプロセスのWSを取得できる。
GetUserObjectInformationでWSの情報を取得できる。

Ubuntuでシステムがビジー過ぎたときリブートする

monitを調べてみたがシステムがビジー状態の時リブートするようなことをするのがどうやっていいかわからなかった、もしかしたらこういう機能はないのかもしれない、ので、自作してみることにした。

このプログラムはcronで定期的に動かして、システムがビジー状態だったらリブートする。ビジー状態の判定は、/proc/loadavgを見ればいいと思う。そこで、C言語で以下のプログラムを作ってみた。

/proc/loadavgの出力は左から、1分、5分、15分の平均負荷なので5分後をみて、それが20を越えていたらリブートするようにした。20は適当に決めたので、これくらいでいいのかはよく分からない。リブートは/sbin/rebootを直接実行するようにした。

コンパイル

/sbin/rebootはルートしか実行できないので、ルートで実行しないとならない。
あとはこれをcronに登録する。/etc/crontabを編集して以下の一行を加えた。

ログとかは全然とってないので、ちゃんと動いているのか調べられない。あとで直したい。

std::stringで大文字小文字を無視して比較する

std::stringは==で比較すると、大文字小文字を区別する。いまvector<string>があってここからある文字列が存在するかを調べたいが、大文字小文字を無視して比較したいとする。

普通にstrcmpiなどでやってしまうのが簡単だが、せっかくなのでstd::stringを調べてこれを改良してやる方法。

std::stringは以下のようにtypedefされている。

basic_stringのテンプレート第2引数のchar_traitsが、文字列の比較の実装などを提供するクラスになっている、==演算でこのクラスのstatic関数compareが呼ばれる。

よってこのchar_traitsを自分で実装し、そこでCaseInsensitiveに扱う関数をつくり、basic_stringの第2引数にこれを渡せばいいはず。

vectorのfindでも動いた。

今回はこれが動いたが実際にはchar_traitsの他の関数が呼ばれるかもしれないのか良くわからないので、注意が必要。

ubuntuにmonitをインストール

インストールされたファイルを確認。

/etc/default/monitのstartupを1にして起動してみる。

/etc/monit/monitrcを編集してみる。以下のところを編集。

ufwを止めてブラウザで開いてみた。


とりあえず開けたので、あとはmonitrcのチェック項目を書いていけばいいのだと思われる。続く。

MSのC++の_countof

大変なことになってるのでメモ。
stdlib.hからコピペ

これを調べるために実験
配列の参照をとる関数。

aaaはテンプレートにしても書ける。

となると__countof_helperは_SizeOfArray個のchar配列のポインタを返す関数の宣言。

それをsizeof(*__countof_helper)とすれば、_SizeofArray個のchar配列を返す関数のサイズとなって配列の個数になる。