月別アーカイブ: 2010年4月

サーバのメンテ

カーネルが2.6.32-r7になってるみたいですね。portageのアップデートもありましたけど、emerge -uDNp worldして更新されるパッケージを確認してるときにequeryで警告が出てた。
/usr/lib/portage/pym/portage/util/__init__.py:1121: DeprecationWarning: The ‘myroot’ parameter for portage.config.getvirtuals() is deprecated
result = lazy_item.func(*pargs, **kwargs)
まあ、細かいことは気にせずにカーネルを再作成してパッケージの更新が先だな。カーネルを作ったらnVidiaのドライバも更新しないと再起動でモジュールなしで死ぬんだよね。あとはカーネル依存のパッケージはカーネルを先に作らないとコンパイルエラーになるしね。
カーネルが出来上がるまでしばらく待ちです。

PIO

捨てられたと思ってたPIOが出てきた。無いのは準備号の1と3、創刊号である84年4,5月号だけ。当時存在を知らなくて準備号の2をたまたま見つけて購入し、その後ぜんぜん見かけなくて6月号から購入できたという状態です。田舎だからこういうのが辛かった。今ならインターネットで予約とか出来るから便利になったものです。月刊誌でしたが、田舎なので入る冊数も少なかったから発売日は本屋へダッシュしてました。取り置きなんて考えはまったく思いつかなかったし・・・。
84年6月は、当時からすごいプログラムを作っていたぱっくまん氏のKaーGが載ってるのでエミュレータを使って打ち込んでみようかな。
そういえば、BASICマガジンとかマイコンもかなり出てきた。これも整理したいです。PIOはそれほど問題なかったのですが、BASICマガジンとか泥のようなものがついてしまっていて保存状態がよくないです。汚れは落とせますけど、本体へのダメージがあるのが多少あります。なんとも。
あとはI/Oが出てくればいいのですが、これまた厳しいかも。あるならMZ系記事がほとんど揃うのですけどね。あとはOh!MZが出てくれさえすれば。Oh!Xの一部は見つかってるのですけど、THE SENTINELの大半の記事は手元にあるのであればラッキーって感じかも。北斗の男とか出てこないかな?

プロトコルハンドブック

300円だったのでゲットしておいた。まあ、使わないプロトコルばかりだし、既に要らないのですけど、当時欲しかった本だったので…。この本が出てから数年後に、新プロトコルハンドブックとして出ておりそちらは当時7500円で買いましたよ。値段が3倍なら移動速度も3倍ってことで前の会社ではかなり使い込みました。X.25のパケットダンプを解析とか、TCP/IPでリセットの原因追及とか、232Cのハンドシェイクを利用したスイッチBOXの配線とか…今はもう使わないので本棚の肥やしですけど。
今使うならTCP/IP関係でしょうかね。ただ、TCP/IP上で全銀手順とか業務であるでしょうから、基礎知識として覚えるのはいいことかも。そういった手順を知らずに業務をやってる人も居そうだよね。まあどうでもいいけど。

切手とか


小学生のころ切手収集が流行まして、当然うちもはまったその一人だったのですけど、当時集めてたものは処分されたと聞いてました。家族宛に時々郵便物が届いて切手があるのが時々あったから最近のものを地道にに集めてました。お金を出して揃えるというやり方も方法としてはアリですけど、お金は最低限として出来る範疇でやってみようかと。現在B5のスタンプブック4ページくらい集まってました。
使われてない部屋に祖父が残した本があるのですが、ちょっと調べ物をしようと思って入ってみると、処分されたと言われてた当時のスタンプブックが出てきました。古いのは2銭切手とかあるので処分されなくて助かった。1円、2円、3円の100枚分のシートとか昭和53年から64年までのお年玉切手シートなどもあったりして懐かしいです。それ以降は集めてないので当然ありませんけど…。
つーことで、整理する意味も含めて切手カタログを注文しました。集めだすとかけてるのが気になるのですよね。まあ、無いものはいいや。

vmware playerでマウスが…

先日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をリコンパイル。
いじょ

MySQLその2

超基本的なSQL文とか。
●概念的な構成というか
MySQLでは、データベースという塊を管理し、データベースはテーブルという塊で構成される。テーブルは列(カラム)で構成され、列にデータが保管される。列は、数値型、文字列型、ENUM型、BLOB型、日付・時刻型、ビット型などがある。
スーパーで果物の価格表を作ろうとした場合、”ショップ”というデータベースを作成し、”果物”というテーブルを作成する。テーブルは、文字列型の”フルーツ名”の列と数値型の”価格”の列を持つことになる。
●データベースの作成・削除
CREATE DATABASE shop; で作成できる。
DROP DATABASE shop; で削除となる。
SHOW DATABASES; でデータベースの一覧を表示できる。
●データベースの使用
明示的に使用するデータベースを指定しておくとSQL文中にデータベース名を省略できる。
USE データベース名; で使用するデータベースを変更する。
●テーブルの作成・削除
CREATE TABLE テーブル名 (列1…); で作成する。
列は、列名 属性のペアで指定する。名前だけ指定することも出来るらしいが明示的に作っておくのがいいかも。
DROP TABLE テーブル名; で削除となる。
SHOW TABLES; でテーブルを一覧できる。
SHOW COLUMNS FROM テーブル名; でテーブルを構成する列の一覧を表示できる。
●データの挿入
INSERT INTO テーブル名 (列…) VALUE (値…); で1行挿入する。
列に該当する値を指定する。
REPLACE文でも挿入となる。使い方が若干違うので用途に応じて使う。
●データ検索
SELECT 列 FROM テーブル名;
データベースの肝とも言える検索処理。記述は用途によっていろいろ指定がある。
基本は上記のようにテーブル内の列を取得する。条件は続けて指定するようになる。
まあ、この辺りが勉強の肝になるでしょう。
●データ更新
UPDATE テーブル名 SET 列 = 値 [WHERE 条件];
WHEREなしだと列全体の値が書き換わる。大抵は条件に一致するデータを書き換えると思われる。
これも用途次第。
●データの削除
DELETE FROM テーブル名 WHERE 列 = 値;
これも用途次第でいろいろと指定されると思われる。基本は列の値に一致するデータでしょうね。

後は適材適所なSQL文を書けるようになれば使いこなせる。それからトランザクション、ロックの仕組みと制御方法も理解しおかないとオンラインストアなどのアプリは作れないよね。管理面だとバックアップとか最適化とか運用面のやり方も勉強しておく必要がある。プログラミングだけなら管理面は不要かもしれませんけど、障害調査でログの見方とか状態を把握できないと調べられないしね。
設計面だとレプリケーションのやり方や注意事項も調べないといけない。覚えるべきことは山とあるけどとりあえずは上記の調べたところまで覚えて使いこなせるようにならないとダメかもね。

Leeyes

画像ビューワなのですが、いろいろカスタマイズ出来て使えるのにいまさらだけど気づいた。マウス操作もカスタマイズできるとは。
基本はBMPだけなのですけど、Susieプラグインが使えるので放り込めばいろいろと対応される。書庫系もOKなのでZIPとかRARはもちろん、7z等もいけるのでかなり便利かも。
問題はPDFくらいかな?PDFの画像データはライセンス問題で轟沈したマンガミーヤのpdf.dllとxpdfrcを流用すればいいらしい。dllをspiへリネームし、xpdfrc中のAcrobat Readerのパス名を最新のものにあわせるだけっぽい。PDFビューワも兼ねられるのか?なんて期待したのですが、一般的な文書はダメみたいね。手持ちで表示できるサンプルが無かったので放置ですけど、当面このソフトでいけそうな気がする。
閲覧だけでなく、サムネイルでの操作も出来るので整理するのもいいかもね。

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用ユーザーを登録する必要がある。ユーザーのマッピングとかも機能であるらしい)