先日emerge -uDN worldでパッケージを最新にしましたけど、その影響かわかりませんが、vmware playerが停止してました。再度起動してみたところ、マウスの挙動がおかしい状態に。どうも640×480を超える場所へ持って行こうとするとgrabが外れてホスト側の操作になってしまうみたいです。
サイズをあわせれば問題ないですけど、小さいウインドだと使いにくいのでぐぐってみると、gtk2-2.18辺りの問題らしい。戻せばいいのでしょうけど、せっかくだから今のバージョンで何とかならないものか?と思って調べると、こんなページを見つけた。
http://blog.creonfx.com/linux/vmware-player-workstation-mouse-grab-input-focus-bug
環境変数を1つ追加してしまえば問題ないらしい。システム全体に入れるのも手ですし、自ユーザーの.bashrcとかでも何でもいいですけど、うちは/opt/vmware/bin/vmplayerのスクリプト内に入れることにしました。アップデートして再発したらまた手を入れる必要が出てくるけどまあいいや。
これでvmware playerを起動すると問題なくマウス操作が出来るようになりましたとさ。めでたしめでたし。
☆
あとは覚書。
・gentoo-sourcesがアップデートされる場合
最初にgentoo-sourcesをアップデートし、カーネルを作成しておく。また、別途モジュールを作るatiやnvidiaのドライバは再度コンパイルする。あと、/usr/src/linuxを参照するパッケージは一応リコンパイルが必要かも。
・SSLがアップデートされる場合
proftpdもリコンパイルする。動作の支障はないけど、起動時にバージョンが違うと警告が出るのでコンパイルすべし。
つまり…
1.emerge –sync
2.emerge -uDNp worldでgentoo-sources、opensslの存在を確認してからemerge -uDN worldでアップデート。
3.上記でgentoo-sourcesがあるなら先に単体でアップデートし、genkernel –menuconfig allでカーネルを作成する。
4.当該アップデートがあればドライバ、proftpdをリコンパイル。
いじょ
「Linux」カテゴリーアーカイブ
MySQL
勉強しようと思ってずっと放置だったけど少しかじってみた。
GentooについてのMySQLの覚書。まずはインストールから使い出す前まで。
●インストール準備
他のディストリではmysqlユーザーを追加するが、Gentooではemergeでmysqlをインストールした段階でユーザーが作成されるので特に不要。
●コンパイルオプション
USEフラグは下記のものが指定可能。(5.0.90-r2の場合)
フラグの後に(L)があるものはローカルフラグ、無いものはグローバルフラグ。
・community(L) – Enables the community features from upstream.
・perl – Adds support/bindings for the Perl language
・ssl – Adds support for Secure Socket Layer connections
・berkdb – Adds support for sys-libs/db (Berkeley DB for MySQL)
・big-tables(L) – Make tables contain up to 1.844E+19 rows
・cluster(L) – Add support for NDB clustering (deprecated)
・debug – Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml
・embedded(L) – Build embedded server (libmysqld)
・extraengine(L) – Add support for alternative storage engines (Archive, CSV, Blackhole, Federated(X), Partition)
・latin1(L) – Use LATIN1 encoding instead of UTF8
・max-idx-128(L) – Raise the max index per table limit from 64 to 128
・minimal – Install a very minimal build (disables, for example, plugins, fonts, most drivers, non-critical features)
minimal(L) – Install client programs only, no server
・profiling(L) – Add support for statement profiling (requires USE=community)
・static – !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically
・test – Workaround to pull in packages needed to run with FEATURES=test. Portage-2.1.2 handles this internally, so don’t set it in make.conf/package.use anymore
test(L) – Install upstream testsuites for end use.
ざっと見た感じ、configureに影響するのはSSLだけかな。あとはコンパイルされるプログラムやライブラリなどの利用形態で決めればいい。デフォルトのままで十分かな?berkdb、perlが利用状況によって指定できるかどうかくらいか。
●インストール
emerge mysqlでインストールされる。(emerge -C mysqlでアンインストール)
●起動前の設定
1./etc/mysql/my.cnfを編集する。(大抵デフォルトで問題ない)
2.emerge –config =mysql-(バージョン) 。rootのパスワードが設定される。
●デーモンの起動
/etc/init.d/mysql startで起動、stopで停止する。
システム起動時に自動起動させるならrc-updateで追加しておく。
●起動後の設定
1.testデータベース、匿名ユーザーの削除
必ずしも必要で無いが、セキュリティポリシーとして不用意に使わせない為にも消す。
自分は消さなくてもいいやって人はやらなくてもいい。
匿名ユーザーはデフォルトで接続と参照しか出来ないので放置しても実害はなさそう。
(でも、見られるって事は何かされるトリガーになるので危険と判断するかは個人の自由)
・testデータベース削除
mysql -u root -pを実行し、パスワード入力してクライアントを起動。
show databases;でデータベースを一覧する。information_schemaとmysql以外がユーザー用なので
デフォルトであるtestを消しておく(drop database test;で消せる)。
・匿名ユーザー削除
ユーザー情報はmysqlデータベースのuserテーブルにある。
select User,host from mysql.user; で一覧できる。
ユーザーがスペースなのは匿名ユーザーなのでこれを消しておく。
delete from mysql.user where User=”;
flush privileges;
これでmysql単体で実行してもエラーとなる。起動は-uでユーザーを指定する。
2.ユーザー登録
mysql -u root -pでクライアントから接続する。
grant all on *.* to ユーザー@localhost identified by ‘パスワード’;
・allはすべての権限なので、個別に権限を与えて利用を限定させることも可能。
・権限の削除はrevokeを使って消す。
・ユーザーの削除はdelete from user where user=’ユーザー’で行う。
・パスワードはset password=password(‘新パスワード’);で変更可能。他人のパスワードはset password for ユーザー=…で行う。
(ここで言うユーザーはシステムのユーザーとは違う。ローカル、ネットワーク越しなどで接続するMySQL用ユーザーを登録する必要がある。ユーザーのマッピングとかも機能であるらしい)
Leeyes
画像ビューワなのですが、いろいろカスタマイズ出来て使えるのにいまさらだけど気づいた。マウス操作もカスタマイズできるとは。
基本はBMPだけなのですけど、Susieプラグインが使えるので放り込めばいろいろと対応される。書庫系もOKなのでZIPとかRARはもちろん、7z等もいけるのでかなり便利かも。
問題はPDFくらいかな?PDFの画像データはライセンス問題で轟沈したマンガミーヤのpdf.dllとxpdfrcを流用すればいいらしい。dllをspiへリネームし、xpdfrc中のAcrobat Readerのパス名を最新のものにあわせるだけっぽい。PDFビューワも兼ねられるのか?なんて期待したのですが、一般的な文書はダメみたいね。手持ちで表示できるサンプルが無かったので放置ですけど、当面このソフトでいけそうな気がする。
閲覧だけでなく、サムネイルでの操作も出来るので整理するのもいいかもね。
VMware on WinXP
かなり古いアプリがWindows98以前の16ビットOS用だったので98環境が急遽必要になりました。ノートPCのHDDを入れ替えてWindows98にすればいいのですけど、VMware Playerで環境を作ってみようと思っての実験です。
まず、本体は本家からダウンロードします。ユーザー登録が必要だったので登録して届いたメールのURLからダウンロードすれば問題ないです。次にHDDイメージはQEMUでと思ったのですが、vmxファイルを編集するエディタを探していたら、http://www.easyvmx.com/ でvmxを作成しつつHDDイメージも作れることが判明。そのサイトでいろいろと設定し、Createするとvmxとvmdkが圧縮されたファイルがダウンロードできるのでそれを解凍すれば準備OKです。
設定は各自自分の環境や利用形態にあわせて作ればいいと思います。うちは物理CD-ROMを利用し、サウンドは特に不要、ネットワークアダプタはvlanceってのを使ってブリッジ設定で行いました。
VMwareを起動し、CD-ROMドライブにWin98のCDを入れてセットアップ。シリアルが本に書いてあるのをすっかり忘れて本を探すのに一番時間がかかったよ。SPとかパッチ類はぐぐれば集めたサイトとか中国のサイトにはSEの最終パッチ集もあるので使い続けたりするなら当てればいいかと。うちはちょっと動かすだけなのでパッチは当てませんでした。
P4-1.7GHzだとセットアップに2時間くらいかったかな?HDDサイズは余裕をもって8GBにしましたけど、これのチェックとフォーマットは一瞬で終わりました。問題はWin自体のインストールにオリジナルでも40分くらいかかると思いますが、処理が重たいのでそれなりにかかるという。最新鋭の環境ならオリジナルに近い時間で済むんでしょうね。
あと、VMware-Toolsですが、先のサイトで作ったときに設定(tools.remindInstall = “FALSE”、tools.syncTime = “TRUE”)があったらしくてVMware本体起動時にダウンロードしてました。ただ、インストールされなかったのですが、ide1:1.autodetect = “TRUE”を追加してIDE/CD-ROMを自動認識させるようにしたらインストールを再度聞かれたときに問題なくセットアップできました。これが入るとSVGAドライバが入るので画面の見栄えがかなりよくなります。また、マウスをウインド外へ持っていくとホスト側のマウス移動になるのでかなり便利です。そうでないとCTRL-ALTを押して抜けないと駄目ですので。まあ、慣れの問題ですけどね。
一昔前は別のOSを入れるには入れなおすかデュアルブートなどが必要でしたが、仮想PCのお陰でメイン環境に手を入れることなく新環境が作れるので便利でいいですよね。問題はCPUパワーとかメモリーサイズくらいですし。便利になるとどんどんいい環境が欲しくなる罠が待ってるけどね。
Analogの設定ツール
調べてみたら本家のページからリンクがあった。
Win、Macからできるシェアウェアが有名らしく、フリーウェアでのツールはいまいちよさそうなのが無かった。ドイツ語と英語で書かれたページでWeb上で設定してanalog.cfgを生成するページがあったけどローカルで欲しいと思った。
そういえば、リクエストレポートの各種ファイルへのリンクを張らせる方法がわかった。htmlやディレクトリは勝手にリンクされてますけど、jpgとかリンクされないので何とかリンクさせたいと思ってたら、「REQLINKINCLUDE」で指定ができた。まあ、INCLUDE、EXCLUDE関係の設定の1つだったわけだ。INCLUDE、EXCLUDE関係も突き詰めると難しくなるし面倒だけどきめ細かく設定すれば使い勝手もよくなるって事らしい。まあ、統計情報は自分で見るだけなので特に整形も詳しくなくていいけど、運営会社などはこれをうまく設定して上役を説得できる資料も設定次第で作れるって事だね。この辺りの設定ツールを作るとかなり使われそうな予感もする。
続analog6
agent_logみてたら結構いろいろなブラウザを使ってるのを見て統計を取ってみようと思ってBROWSERREPとOSREPをONにしてみた。ブラウザレポートは単にエージェントがそのまま出るのであまり面白みが無いのですけど、agent_logを眺めるより統計的にわかりやすいから満足しました。OSレポートを見たら最近増えてる携帯ゲームとかPS3などが不明に含まれてるので分けてみようと思いました。
analogのソースを展開してWindowsでgrepしてみるとtree.cで判定してるのがわかりました。Pnextname関数で判定してるらしく、wholeにagentが入ってくるので、strstr関数で拾えたらOS名とも言える文字列をnameへセットすればいいらしい。とりあえず、Atariの判定の後、Unknownの前に下記を追加。
else if (strstr(whole, “PSP”) != NULL)
*name = “PlayStationPortable”;
else if (strstr(whole, “PLAYSTATION 3”) != NULL)
*name = “PlayStation3”;
else if (strstr(whole, “Nintendo Wii”) != NULL)
*name = “Nintendo Wii”;
あとで気づいたのですが、WindowsとかUnix系はWindows:Windows2000とかで戻せば前の文字列でのサマリー、後者文字列でのサマリーが取れるっぽい。つーことは、”Sony:PSP”、”Sony:PlayStation3″、”Nintendo:Wii”とかにすればPSPとPS3をあわせたカウントを出せるって事ですね。任天堂は別に変更しなくてもいいけどね。
そういえば、コンパイルでちょっとハマった。Gentooは設定ファイルを/etc/analog/analog.cfg、言語ファイルは/usr/share/analog/langに格納してますが、ソースをそのままコンパイルすると/usr/binを参照してしまいました。emergeでパッチを適用したら停止させ、作業ディレクトリをコピーして手直しというのもいいですけど、設定を書き直しました。コンパイルはconfigureは無いので、付属のMakefileの調整とヘッダの手直しです。デフォルトのコンパイルオプションは-O2だったので特に変更なし。コンパイラもデフォルトがgccだった。src/anlghead.hのDEFAULTCONFIGFILEを/etc/analog/analog.cfgへ変更。それとLANGDIRを/usr/share/analog/lang/にしました。後ろのスラッシュが入ってないとlangを無視してしまうので要注意です。いろいろデフォルトを指定できるけど、いじったのはそれだけ。あとはanalog.cfgで上書きすればいいし。
現在調査中はリクエストレポートでアンカーが入るのと入らない差がどの設定かわからん。ソースを読むのは疲れるので設定でいけるなら何とかしたいです。どうもディレクトリへのアクセスとindex.htmlを含むアクセスはアンカーが入るみたいですけど。後日だね。
analog6.0
一応動いてるのですけど、前から日本語表示のうち、JISらしきコードが混じって正常に表示できてない問題を思い出したので対処しました。
問題は、ステータスコードレポート等で文字化け状態になるもので、JISコードの場合、シフトコードにESC$B、ESC(Bを使用しますがESCが?に置き換わっていて表示できないように見えます。また、シフトコードに囲まれた漢字コード部分のうち、大小記号やクォート、アンパーサンド等がHTML表示させようと&xx;に置き換えられてるのもわかりました。
Analog自体の設定で何かあるのか?と思ったのですが、どうやらソースにEUCやSJISなどで吐き出す機能はなく、JISっぽく出てしまうのが仕様らしいです。ソースも覗いてみたけど、処理する関数を構造体配列へセットしてC++みたいなオブジェクト指向風なコーディングなのでいまいち追いかけるのが辛い状態です。関数へのポインタとか使われると最初からどんなデータをどういう風にう処理するのか追わないとわからないので挫折です。業務じゃないので別方向でアプローチを。
で、考えたのが、吐き出されるHTMLを読み込ませて?[Bと?(B、&xx;を置き換えてしまえばという事でCでプログラムを作りました。処理自体は単純で、STDINからfgetsでテキストを取得し、シフトコードを検索して見つかったらその中身のアンパーを処理、シフトコードをまた見つけてたら処理という感じ。アンパーも調べると大量に処理すべき置き換えがあるけど、気づいたものだけ処理という限定仕様。変換漏れとか落ちたら別途対応すればいいやという投げやり仕様ですけど。
一応今の段階でレポートされる範囲では問題なく変換できてます。あとは、検索語レポートがいつの間にか落ちてるのでレポートしたいけど、ApacheのログをCommonで取ってたのでcombinedに設定しなおした後だからまだでない状態。昔AIXで設定したときは取ってたのですけど、Linuxへ移行した時に設定が漏れてたと思う。analogurldecodeを使ってる意味がぜんぜんなかった罠。
Excelのマクロをいじる
ファイルを整理するのに久々にExcelのマクロをいじってみた。見よう見まねで他人が作ったマクロをいじったりしてたけどフルスクラッチは久々です。それでも昔作った別のマクロのソースを見ながら試行錯誤ですけど何とか目的は果たせました。
大量のファイルがXMLで管理されてるのですけど、最新のExcelだとXMLパーサーがあるみたいだけどうちのはExcel2000なので当然無い状態。C言語のパーサーライブラリを持ってきてCで書こうかなとか思いましたけど、Borland Cでは駄目っぽくてMinGWを使わないとコンパイルできないのでCは諦めてExcelかなと。
XMLといっても目的のタグは限られてるのでテキストで読み取って目的のタグを拾い集めて処理するだけなので解析は自前だったり。ハマったのが文字列処理でMid関数はよかったのですけど、LeftとRight関数が使い方のイメージが違っていて予期せぬ結果になった。うちは指定した位置の左側の文字列を取るのがLeftだと思ってたら1桁目から指定文字数という使い方だった。指定文字位置から後ろを取るのにRightと。XMLファイルの先頭がTAB文字が入っていてそれでずれるのか?とか思ってマクロを何度直しても動作がおかしくて少し悩みました。まあ、よく考えれば元の仕様もうなづけるけど、StratusのPL/Iを結構長くやってたのでsubstr、before、afterのイメージで書いたのが敗因でした。Trim系関数もTABを取り除くスイッチとかあればいいのに見当たらなかったので前TAB、スペースでタグが続く場合の処理を考えるのにも時間がかかったよ。結局Forで先頭から文字を調べていく基礎的なやり方ですけど対処できました。
あとチェックするフォルダが13種類もあったので一覧をとってForで処理すれば簡素になったのでしょうけど、考えるのが面倒だったので13多重のIFが続いたとさ。ELSE IFって無いのが問題だよな。なのでTHENとかELSEの中にまたIFがって漢字になる多重だった。Forの多重よりはマシですけどね。(昔、BASICでプログラミングしてたときはForとか多重させる場合制限があったような。VBAはあるのか知らん。業務で使うなら調べるだろうけど趣味だからいいや)
それにしてもファイル処理とか親和性が高くて慣れてくるとExcelから離れられなくなる理由がよくわかった気がした。テキストを吐くような外部コマンドを実行して結果をシートに挿入してしまえれば、外部コマンドを多用して処理するのも可能だね。文字列処理がもっと関数が豊富になってForとかでロジックを組まなくても処理できるようになればもっと便利になりそうな気がする。
そういえば、以前の会社でFTP.EXEを起動させてサーバ上にあるファイルを持ってきて統計を出すようなマクロを書いてた協力会者の人が居たけどDLLとかで拡張せずにWindows標準コマンドでよく作り上げるなぁと関心したものです。そこまで使いこなせると楽しくて仕方ないよね。
Win-Winで特定ユーザーでファイル共有
ファイル共有で大抵問題になるのがユーザーとかアクセス権。うちも家族と同一ネットワークにあるのでGuestの開放はやや危険(勝手にコピーされたり、エロ関係wとか)なのでGuestを排除してます。Windowsは使ってるユーザー名で別コンピュータの共有を参照する場合に同じユーザー名がデフォルトとなユーザー指定が面倒だったりする。正しいのでしょうけど、便利さにかけるのが難点か。
LinuxではURLを書くとき「プロトコル://ユーザー名:パスワード@サーバ名/パス」という書き方でユーザー指定をしますけど、ネットワークコンピュータ経由の参照はどうもユーザー指定が難しいっぽい。ちょっと調べてみると、ネットワークドライブとしてマウントするならユーザー指定ができるのがわかりました。
マイネットワークを右クリックして「ネットワークドライブの割り当て」を選ぶと「異なるユーザー名で接続」ってのがあった。これでドライブレターを与えてマウントすれば問題なく参照できるようになりました。そういえばLinuxでもmountで行うというやり方もあったし基本は同じだね。
受け側は簡易だと駄目かと。セキュリティでGuestを消すか読み込みなどの権限を消せばOK。一覧だけ見せるなら詳細から設定すればいける。一覧だけだと共有できてそうにみえてファイルを参照するとはじかれます。こういう使い方だと知らないとハマるかもね。
あとは、別のやり方としてnet useコマンド接続するやり方でもいける。こちらはドライブを割り当てなくてもいけるけど毎回コマンドをたたくのかリブートしてもいけるのかは知りません。興味ある方は調べてみては?
ちと統合を
日記というか雑記ページがぜんぜん更新できないのでGentoo関係のページと統合しました。最初から分ける必要もなかったのですけどカテゴリというかテーマを根本で分けようと思ったけど手が回らないので根底を覆すことにしました。
☆
A31pを寝る前にちょっとインターネットを覗いたり音楽を聞きながら寝たりするのに使ってましたけど、Linuxでなくてもいいかなと思ってWindowsをリカバリしました。どうもファイル共有でLinuxは融通が利かない所があってちょっと不便だったもので。また不満があったら戻しそうですけど入れなおしです。
XPの再インストールはあまりしてなかったのですが、SP1のCDなのでSP3を適用したCDというかDVDイメージを作りそこから入れなおしました。1GBを超えてしまうのでCDRでは無理だったのでDVDRWに書き込んでの起動です。枯れたハードですので特に問題ないと思ったのですが、ビデオ、ACPI、無線LAN、Bluetoothが自動認識せず。ドライバを本家から拾ってくるハメに。普通にリカバリCDを使えばSP1の状態でドライバも入りますけどこんなものでしょう。通信カードがThinkPadの場合はいろいろ複雑だし。こいつもドーターカードを使う仕様なのでそういうものなのでしょう。メインのEthernetは自動認識してたし。
ドライバを入れて画面がUXGAになると広くなって快適です。文字は確かに小さいですけどこいつのは見やすくていいです。GNOMEのデスクトップから戻したので余計小さく感じる。今ハード的な不満はCPUがP4-1.7GHzってところくらいかな?こいつではゲームをしないので十分ですけどね。当時50万クラスのマシンということもあって未だに現役OKって感じ。あと3年くらいは…って無理かな?
今回のハマりポイントはトラックポイントドライバ。トラックポイントの真ん中を押しながら上下左右にポインタを動かすとスクロールさせることができるのですが、FireFoxを入れたらスクロールしなくて。何が悪いのかわからず苦労しました。調べてみるとtp4table.datというファイルにスクロールさせるアプリが登録されてるらしく、チェックしてみるとFireFoxが入ってなかったという。A31pのドライバはこの定義が古いみたいです。そもそもサポートもしてないのでしょうね。中身はテキストファイルなのでエディタとかメモ帳で編集すればいい。
ファイルはいくつかのフィールドがあってカンマで区切られており、OS名、OSバージョン、アプリ名、トップクラス名、ペアレントクラス名、ウインドクラス名、スクロールタイプ、パス、フラグという感じ。まあ、ファイルの先頭に説明があるのでそれを見ればいいかと。うちは下記のように設定しました。
*,*,firefox.exe,*,*,MozillaWindowClass,WheelStd,0,9
スクロールタイプはWheelVkeyにすれば左右スクロールも可能です。うちは上下だけでいいので上記のとおり。パスはよくわからんので真似て0、フラグも真似ての設定だけど、3ボタンということで問題ないかと思われます。
ファイルを書き換えたらタスクマネージャからtp4servを停止させ、新しいタスクとして起動すれば動くはず。ファイルはブラウザ関係辺りに追加すればいい。一番最後だと少し前にAutoScrollTableというセクションがあってそっちの設定になってしまうので要注意。AutoScrollTableセクション前までなら問題ないと思われます。つか、このセクションって罠すぎ。これに気づくのに時間かかったよ。
ブラウザはChromeも入れたけど適当に使い分けたいと思ってます。IEは恐らくIEしか使えないサイト以外出番ないだろうね。FTPクライアントはFireZillaを愛用。もうFFFTPは時代遅れって思う。(実は2GBを超える転送のリジューム処理が微妙だったりして最近使ってない。ソースを見る限り平気なんだけど微妙すぎ)マルチセッションでがんがんアップ・ダウンロードできたりファイル名の変換も自在なのでお気に入り。端末はTeraTermがベストかな?点滅と表示属性とかコードページの切り替え部分の仕様がもう少し一般的なら最強なんだけどね。(改行して反転が続くと次の行の最後まで反転が続いたりする。Stratusとかで漢字とカナが混在すると化けたりするんだよね。もうStratusは使わないからどうでもいいけど前述の反転はどうにかならんかな?)
あとは使うアプリを適度に入れつつ使っていく予定。コンパイラも入れたいなぁ。