メランジ雑記帳

2010年2月23日

srpmを使う前に

カテゴリー: LINUX — admin @ 7:01 AM

src.rpmを利用する前にユーザのホームディレクトリにソース管理用のディレクトリなどの設定をしておいたほうがよい。

rpmdev-setuptree

これで、 ${HOME}/rpmbuild/SOURCES, ${HOME}/rpmbuild/SPECS, そして ${HOME}/rpmbuild/BUILD.が作成される。実際にはこのディレクトリを指し示す${HOME}/.rpmmacroという設定ファイルもできる。
http://fedoraproject.org/wiki/Docs/CustomKernelを参考にした)
あとは

rpm -Uvh なんとか.src.rpm

とすると、 ${HOME}/rpmbuild/SOURCESにソースのtarのgzipしたものが、 ${HOME}/rpmbuild/SPECにバイナリrpmを作成するためのspecファイルが、そして ${HOME}/rpmbuild/BUILDには作成したrpmファイルが入る。

rpmbuild -bb

でrpmを作成する。

linux(fedora11)で将棋

カテゴリー: LINUX — admin @ 6:18 AM

デーモン将棋というものがあったので、試してみた。「ソフトウエアの追加と削除」でインストールできる。

daemonshogi-0.5-1.fc12(i686)。

2010年2月18日

NetworkManagerを止めたら

カテゴリー: LINUX — admin @ 9:12 AM

fedora 8,9あたりの頃は、固定IPアドレスをシステム->管理->ネットワークで設定するとゲートウエイのアドレスでネットマスクが置き換えられるという珍事があって、さらに複数のLANカードをさしているとNetworkManagerがどちらか一方だけを使うようにする(これは、ノートブックのように無線LANと有線LANの両方のインタフェースがあって、TPOで使い分ける場合には良い)とかで、一時止めていた。

しかし、もう一方のnetwork serviceを有効にするのを忘れていたことがあった。気をつけよう。

docbookのXMLファイルをopen office (Writer)で開く

カテゴリー: DocBook — admin @ 3:55 AM

OpenOfficeでdocbookのXMLファイルを開くと、それなりに読めるということを書いていなかったので、ここでスクリーンショットを載せておく。ファイル->開くだけでこうなる。

XMLのいろいろなタイプごとにXSLファイルが用意できるようになっていて、docbookはsunが昔SGMLでanswer bookというものでマニュアルを作成していた頃からの流儀であると思われる。

2010年2月17日

podcastとRhythmbox Music Player

カテゴリー: ipod touch/iphone — admin @ 1:42 AM

一時、podcastにはまったことがあるが、fedoraで聴く場合はamaroktというソフトを使っていた。
しかし、題名が英語になってしまうので、現在はRhythmbox Music Playerを利用している。

2010年2月13日

ipod touch とPDFを共有

カテゴリー: ipod touch/iphone — admin @ 10:45 PM

Air Sharing Pro(有料:1200円、Proでないものは600円)のソフトをipod touchに入れて、maximaのcontribにあるPDFマニュアルを表示させてみた。OKであった。無料の似たようなもの(Freesoft)もいろいろあるので、今後研究したい。

ipod touch側のスクリーンショットは上のスリープボタンと下のホームボタンを押してとった。
これが保存された写真というところに入るので、air Sharing ProソフトでSampleディレクトリで+アイコンを押してコピーした。横にしたままでスクリーンショットをとったので横になっている(2010-02-24 あまり見やすくないので90度回転した)。多分Proの付かないAir Sharingでも同様のことができるのではないかと思う。無線LANは便利である。 gfとは有限ガロア体のこと(Galois Field)。エラー訂正符号によく使われる理論である。

ちなみにガロアはどのような代数方程式が解けるかを変換群というあたらな概念との対応で説明できることを発見し、その群を正規部分群の列に書き表した時に巡回群の商群からなる組成列になる場合にSolvable(可解)とよび(これが根号による解に相当する)、それまで証明されていた一般5次方程式の解がない理由を根本的に思索した数学者であるが、20才か21才あたりで決闘で亡くなった天才。根を付加した四則演算可能領域を体とよび、有限個数の要素を持つガロア体を発見した。しかも有限体はそれしかありえないということや、非可換な有限体は存在しないことなどがその後証明された。

ジョルダンという数学者がかれの原稿をCauchyの机で見つけたとかおもしろい話がある。ジョルダンはジョルダンヘルダーの定理などに出てくる人。ジョルダン曲線の定理などでも有名で、ガロアのあとを引き継いで、群論や体論の基礎を作った人。

クライアント側のfedoraから見ると、以下のようにBrowserを通じて普通にサーバのように見える。

季節もののビール

カテゴリー: 浅井さん — admin @ 10:07 PM

SanktGallenのビールを久保の井酒店で2種類購入した。
一つはバレンタインデーにかなり出てしまうバニラスタウトと、湘南ゴールドというみかんをつかったものだが、今年は湘南ベルマーレのJ1昇格を記念してのスペシャルバージョン。

こういうことに詳しいのは、大磯(二ノ宮)の浅井さんである。

2010年2月12日

IPAフォントの奇妙な冒険(Squirrel SQL Clientのフォント)

カテゴリー: LINUX, font — admin @ 12:16 AM

テーブルの内容のフォントがあまりに汚いので、原因を調べた。M+フォントを入れた影響かもしれない。
まず、JAVA_HOMEがopenjdkの方を向いていた。sunのものにしておけば長年の利用実績があるので安心である。

それから、このマシーンのOSやソフトはFedora 7-8あたりからのアップデートであるので、IPAフォントを一旦uninstallし、そしてinstallした。
自然に治ってしまった(原因不明)。また私が変更したのか、squirrel-sql.shがJAVA_HOMEがない場合の処理が誤っていたので、修正した。(これは、もともとのインストーラが作成したものであった。したがって以下のように修正した。)


#! /bin/sh
echo "JAVA_HOME is $JAVA_HOME"
if [ -n ${JAVA_HOME} ] ; then
echo "JAVA_HOME is set." ;
JAVA="${JAVA_HOME}/bin/java";
elif [ -r /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre ] ; then
echo "JAVA HOME is not set but openjdk exists." ;
JAVA=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
else
echo "neither..."
JAVA=java
fi
以下省略
echo " JAVA is $JAVA"

以下がその他フォントをIPAPGothicで利用している様子。

その後確認をしたら、やはりM+フォントを~/.fontsディレクトリ(なければ作成すること)にコピーしたのでそこを調べると、

$ ls
COPYING.font.ja M+2P+IPAG-circle.ttf Makefile.in ipam.ttf
M+1P+IPAG-circle.ttf M+2P+IPAG.ttf ipag.ttf ipamp.ttf
M+1P+IPAG.ttf M+2VM+IPAG-circle.ttf ipagp.ttf
M+1VM+IPAG-circle.ttf Makefile.am ipagui.ttf

という形で入ったのが分かった。

fc-listでは問題がなかったのに、大変不思議である。エンコードとかの問題であるかもしれないので、font-forgeで調べようと思う。
mplus(http://mix-mplus-ipa.sourceforge.jp/)を入れる前後でのフォントの全種別(http://www.javadrive.jp/tutorial/font/index3.htmlを参考にしました。)の様子:

最初のほうの画面にはIPA関係のフォントが入っていない。

IPA関係のフォントが入っている。

javaで検証するには、

 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
 Font fonts[] = ge.getAllFonts();

でフォントの配列を取得すればいい(懐かしい!)。

このM-PLUSのほうのipag.ttfはビットマップフォントが3種類(12,14,16point?)入っていた。
ttfの方はUnicodeBmpというタイプでotfのファイルの方はUnicodeFullというような区別がされていた。

以下はFontForgeで2つのフォントのUnicode範囲を調べている画面である。

ipag.ttfの場合:

ipag.otfの場合

2010-02-14 後書
ge.getAllfonts() 部分を -Dsun.java2d.debugfonts=true でデバッグ’してみました。

Feb 14, 2010 9:35:24 AM sun.font.FontManager initialiseDeferredFont
INFO: Opening deferred font file /usr/share/fonts/ipa-mincho/ipam.otf
Feb 14, 2010 9:35:24 AM sun.font.FontManager registerFontFile
WARNING: Unusable font: /usr/share/fonts/ipa-mincho/ipam.otf java.awt.FontForma\
tException: Bad native name /usr/share/fonts/ipa-mincho/ipam.otf
Feb 14, 2010 9:35:24 AM sun.font.FontManager findFont2D
INFO: Search for font: Lucida Sans Regular
Feb 14, 2010 9:35:24 AM sun.font.FontManager initialiseDeferredFont
INFO: Opening deferred font file /usr/share/fonts/dejavu/DejaVuSansMono-BoldObl\
ique.ttf
Feb 14, 2010 9:35:24 AM sun.font.TrueTypeFont open
INFO: open TTF: /usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
Feb 14, 2010 9:35:24 AM sun.font.FontManager addToFontList
INFO: Add to Family DejaVu Sans Mono, Font DejaVu Sans Mono Bold Oblique rank=2
Feb 14, 2010 9:35:24 AM sun.font.FontManager registerFontFile

このようにBad native nameという例外が発生しているようなのだ。うまくいっているフォントのほうはaddToFontList処理に進んでいる。
実は、gnuの方のjavaになっていたので以上のエラーが発生していた。しかし、それを修正しても、やはりaddtoFontListにまではすすんでない。

以下は別問題であると思う。

たしかにfontforgeでこれらのoftフォントを開いた時にエラーがでていたようだ。

名前に関係していると思われる部分。

一見うまくいっていると思われるnplus側のほうだが、

またその名前関係の表示

どうもotfファイルを処理していないのではないか?と疑ってみた(javaのj2seのソースにそれを扱うところがなかったので)。そこで、このfontforgeの機能を使ってotf==>ttfの変換をしてみた。
TTC/OTFからTTFへの変換
に詳しい。ひとつだけ変換してみた。ipag.otf ==>IPAGothic.ttfになったが、これは認識して問題がなかった。きちんとフォント選択ダイアログに表示された!
実際にはこのfontforgeの変換の際にいろいろと規格にあっていないと文句を言われるが…
今まではfallbackというディレクトリを作成し、あるフォントが見つからないとかという場合にそこから見つけるようにシンボリックリンクをはって設定をしていた。

2010年2月9日

Fedora 12でpostgreSQLの移行

カテゴリー: DB, LINUX — admin @ 7:45 PM

以下のように、昔のハードディスクの.var/lib/pgsqlをコピーしてpostgresを起動させると
1. initdb
2. copy
3. /etc/initd.d/postgres restart
古いバージョンのデータベースフォーマットがみつかりましたと言う。
なるほど、昔から、pg_dumpをとるようにお客さんのマシーンは設定してきたが、弊社は能天気なものであった。

それと、UTF8が最近ではデフォルトになっているので、

initdb -D /var/lib/pgsql/data/ --encoding=UTF8 --no-locale

のようにして初期化をすることが大事である。
そして、

createdb -E EUC-JP -T template0 あるデータベース

のようにDBを作成する。-Tを指定しないと、以下のようなエラーが発生する。

createdb: データベースの生成に失敗しました: ERROR: new encoding (EUC_JP) is incompatible with the encoding of the template database (UTF8)
HINT: Use the same encoding as in the template database, or use template0 as template.

こうすると、いろいろなエンコードの昔のDBをもってくることができる。

以下がバックアップの例(O君の例)

echo "DB backup start at `date`"
dbname=なんとかdb
fdir=${HOME}/db_backup"
days=30

# バックアップディレクトリがなければ作る
if [ ! -e $fdir ]
then
echo "$fdir ディレクトリを作成しました。"
mkdir $fdir
fi
#日付をもとにバックアップファイルの名前を決める
fname="$fdir/$dbname.`date '+%y%m%d%H%M%S'`.dump"
echo "$dbname DB のバキュームをしています。 "
# deleteされた穴を消す
vacuumdb $dbname
echo "$dbname Dbを$fnameにバックアップしています。"
# これが本当にバックアップを作る肝心なコマンド
pg_dump -Ft -o $dbname > $fname
# 圧縮する
gzip $fname

echo "$days 日以上経過したバックアップファイルは消す "
find $fdir -mtime +$days -name "${dbname}*.gz" -print -exec rm -f {} \;
echo "DB バックアップは `date`に終了"

リストアは以下のように(あらかじめ圧縮を解いておく)。

echo "ファイル " $1 " からリストアします。よろしいですか?(y/n) "
read sw
if [ $sw = 'y' ]
then
echo "DB リストアを開始しました: `date`"
dbname=あるデータベース
# 以下はデータを全部消去するもの
psql -e -f /home/ユーザ/db_backup/deleteAllRecords.sql -U ユーザ $dbname
 # ここが肝心の部分
pg_restore -Ft -d $dbname < $1
echo "DB リストアを終了します: `date`"
fi

ちなみにmysqlの場合には、(全部と個別)

mysqldump --all-databases > mysql_all_databases.sql

mysqldump database >mysql_aDataBase.sql

リストアは(全部と個別)、

mysql < mysql_all_databases.sql

mysql database < mysql_aDataBase.sql

psqlだと、EUC_JPのファイルをUTF-8の端末で見ると「…続く…]の部分は読めるが、漢字の部分は読めないので急遽、端末のエンコードをEUC_JPにすると、漢字のところが見える。

こういう混在環境で活躍するのが、Squirrel SQL Clientである。File->Global->FontでOthersのところのファントを豆腐のような白い箱が4つとか6つとかのフォントを選べば、以下のように表示される(これは先日の郵便番号DB)

vncの使いかた

カテゴリー: LINUX, vnc — admin @ 4:07 PM

WindowsからLINUXにグラフィカルにログインできると大変便利なことがある。
LINUX側はソフトウエアの追加と削除でvncサーバを選択し、インストールする。
Window側はhttp://www.vector.co.jp/soft/win95/net/se324464.htmlがいいだろう。

そのようなことができるのがvncというシステムである。お決まりのサーバ、クライアントの方式であるので、サーバ側がlistenし、クライアント側がconnectするポート(おなじ番号)が利用可能にしなえればならない。この作業を穴あけというらしい。
準備として、ファイアーウォールの設定では、いくつかのvncポートを空けておく。

-A INPUT -m state –state NEW -m tcp -p tcp –dport 5901:5905 -j ACCEPT

になっていると、
5901が最初のポートに5905が5番目のポートに割り当てられる。

また、サーバ側はユーザごとにvncウインドウの番号を指定してサーバプログラムを動かすために、以下のようなコマンドを用意しておく。(何度もつかうので、~/bin/startvnc.shというファイルにおいておく)。

[vinci@jazz ~]$ more bin/startvnc.sh
vncserver -depth 24 -geometry 1280×1024 :2
そして、以下のように起動する。

$ startvnc.sh

You will require a password to access your desktops.

Password:
Verify:
A VNC server is already running as :2
$

そして、windows側でクライアント側を起動する。

パスワードが一致していない場合には、vncpasswdというプログラムで設定しなおすこと。
最初にログインできると、

しかし、これでは、昔のPC9801でのPANIXに近い画面である。
~/.vncにxstartupというスクリプトファイルがあるので、これを修正する。

xsetroot -solid grey
#vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
# melange commented-out
#twm &
kinput2 &
exec gnome-session &
# gnome-session &

これらの設定を変更したら、~/bin/stopvnc.shに以下の内容を書いておいて起動する。

$ more ~/bin/stopvnc.sh
vncserver -kill :2

そして、startvnc.shで再起動。

古い投稿 »

Powered by WordPress