home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

1091 - 1100 / 1320    [|<]  [|<]  [<]  101  102  103  104  105  106  107  108  109  110   [>]  [>|][>|]
タイトル/名前 更新者 更新日
技術/Java/Solaris10のサービス管理とLog4j-syslogd msakamoto-sf 2009-04-04 10:20:51
技術/Java/PostgreSQLと文字コードメモ msakamoto-sf 2009-04-04 10:20:03
日記/2007/02/05/TurboLinux10SでturbopkgからTurboPlusへの移行 msakamoto-sf 2009-04-04 10:11:48
日記/2007/01/23/TurboLinux10のbindのアップデートで嵌った msakamoto-sf 2009-04-04 10:09:18
日記/2007/03/21/蝋印(ろう印):シールスタンプ(SealStamp)について msakamoto-sf 2009-04-04 09:57:20
技術/Linux/xscreensaver msakamoto-sf 2009-04-04 09:46:22
日記/2007/03/28/IEでPOSTの度にルートディレクトリへのGETリクエストも発行される? msakamoto-sf 2009-04-04 09:35:46
日記/2007/03/29/IO::All, File::DirWalk, Path::Class, そしてorz, workyモジュール msakamoto-sf 2009-04-04 09:33:23
日記/2007/03/31/CのerrnoにあたるPerlの$!は、使用前にクリアが必要 msakamoto-sf 2009-04-04 09:30:48
日記/2007/04/03/底数、つまり*進数を変換するモジュール(2進数<>16進数など) msakamoto-sf 2009-04-04 09:28:59
ソート項目 / ソート順     1ページ 件ずつ表示

技術/Java/Solaris10のサービス管理とLog4j-syslogd  

所有者: msakamoto-sf    作成日: 2006-07-02 14:19:21
カテゴリ: Java Solaris 

お仕事で、Javaからsyslogdにログ出力する必要が生じました。しかも、Solaris上のsyslogです。
Log4jのAppenderで、syslogのプロトコルを用いてネットワーク接続で出力するSyslogAppenderがあるとの事なので、Solaris10もどうにかインストールできましたので試してみました。


実験用Javaソース

log4j-1.2.13.jarを使用した。

test.log4j.SyslogSample.java

package test.log4j;

import org.apache.log4j.Logger;

public class SyslogSample {

	public static void main(String[] args) {

		Logger logger = Logger.getLogger("syslog");
		logger.debug("--debug--");
		logger.info("--info--");
		logger.warn("--warn--");
		logger.error("--error--");
		logger.fatal("--fatal--");
	}
}

log4j.properties

log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
log4j.appender.syslog.Facility=local5
log4j.appender.syslog.SyslogHost=192.168.250.50
log4j.appender.syslog.FacilityPrinting=true
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
log4j.appender.syslog.layout.ConversionPattern=AA%5p %c{1} - %m%n
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.rootLogger=console, syslog

実験用Solaris10+syslogd環境整備

Solaris上でのsyslog設定やサービスの再起動は初めてだったので、色々と試行錯誤になってしまった。
ちなみに、ローカルでの確認はloggerコマンドを用いて次のようにした。

logger -p local5.notice -t HOGE abcdefg

syslogd(というよりサービス)の再起動

Solaris10では、"SMF(Service Management Facility)という機能により、様々なサービスの起動・停止・再起動・依存関係を統合して管理できるようになった。今回、設定ファイル変更に伴う再起動を行うsyslogdも、SMFを通じて再起動をする。

起動中のサービスの一覧
[root@basara /]# svcs
STATE          STIME    FMRI
legacy_run     19:21:23 lrc:/etc/rcS_d/S50sk98sol
legacy_run     19:22:23 lrc:/etc/rc2_d/S10lu
...
online         22:21:37 svc:/system/system-log:default
offline        19:21:08 svc:/application/print/ipp-listener:default
offline        19:22:12 svc:/application/print/rfc1179:default
syslogの所属するサービスは何か?

通常なら次のコマンドであるプロセスを対象としているサービス名を取得できる。

[root@basara /]# svcs -p sendmail
STATE          STIME    FMRI
online         19:22:23 svc:/network/smtp:sendmail
               19:22:23      376 sendmail
               19:22:23      378 sendmail

しかし、syslogdに関してはこれが利用できない。

プロセス名からサービス名(というのか?)を取得してみる。
[root@basara /]# svcs -p syslogd
svcs: パターン 'syslogd' がどのインスタンスとも一致しません
STATE          STIME    FMRI
manページに載っている場合もある。

そこで、ふとsyslogdのmanを確認していると・・・

$ man syslogd
...
System Administration Commands                        syslogd(1M)

     svc:/system/system-log:default

    Administrative actions on this service,  such  as  enabling,
    disabling,  or  requesting  restart,  can be performed using
    svcadm(1M). The service's status can be  queried  using  the
    svcs(1) command.
サービスの状態と詳細を確認する。

というわけで、

[root@basara /]# svcs -l system/system-log:default
fmri         svc:/system/system-log:default
name         system log 
有効         true
状態         online
next_state   none
state_time   2006年07月02日 (日) 22時21分37秒
logfile      /var/svc/log/system-system-log:default.log
リスタータ   svc:/system/svc/restarter:default
contract_id  109 
dependency   require_all/none svc:/milestone/sysconfig (online)
dependency   require_all/none svc:/system/filesystem/local (online)
dependency   optional_all/none svc:/system/filesystem/autofs (online)
dependency   require_all/none svc:/milestone/name-services (online)

これがsyslogdのようである。下記参照。

syslogd再起動成功

以上より、次のコマンドでsyslogdを再起動できた。

# svcadm restart system/system-log:default

ミスその1

まず、/etc/syslog.confに次のようなエントリを追加してみた。

local5.* /var/log/log4j.log

以下の点で間違い。

  1. レベルに"*"は使用不可。レベル大小によるマッチングがあるのだから、全てを出したいのであれば"debug"を使用する。
  2. "facility.level"と、ファイル名との間がスペース。他のエントリを見てみると基本、TAB区切り。

ちなみに先の間違っているエントリを使用すると、次のようなログが/var/adm/messagesに出る。

Jul  2 22:10:06 basara syslogd: line 18: unknown priority name "* /var/log/log4j.log"

ミスその2

ログファイルを作らずに、loggerコマンドなどで試してみたところ、/var/adm/messagesに以下のログが出力された。

Jul  2 22:18:07 basara syslogd: /var/log/log4j.log: ファイルもディレクトリもありません。

そこでtouchで作成してみたところ、まだ上記ログが出る。syslogdを再起動してみたら直った。

syslogdで外部接続を許可する。

次のファイルで、外部接続の許可を制御できる。

/etc/default/syslogd

デフォルトで「LOG_FORMAT_REMOTE=YES」がコメントアウトされており、また、それがデフォルトである。禁止したい場合はNOを設定する。今回はリモートのJavaからの出力を試みるので、デフォルトのママにしておく。

成功

上記の注意点を参考に、syslog.confの変更およびログファイルをtouchにより作成し、syslogdの再起動を行ったところ、loggerコマンドで以下のようなログを出力できた。

# tail /var/log/log4j.log
Jul  2 22:19:20 basara HOGE: [ID 702911 local5.notice] abcdefg

Log4j + syslogd(Solaris10)

リモートのJavaより、syslogdに飛ばす。

以下に、実際に出力された模様を示す。

# (このタイミングでWindows側のJavaからSyslogSampleを実行) 
Message from syslogd@[192.168.250.100.11.180] at Sun Jul  2 22:23:24 2006 ...
[192.168.250.100.11.180] local5:AAFATAL syslog - --fatal--^M

# tail /var/log/log4j.log
Jul  2 22:21:40 basara HOGE: [ID 702911 local5.notice] abcdefg
Jul  2 22:23:24 [192.168.250.100.11.180] local5:AADEBUG syslog - --debug--^M
Jul  2 22:23:24 [192.168.250.100.11.180] local5:AA INFO syslog - --info--^M
Jul  2 22:23:24 [192.168.250.100.11.180] local5:AA WARN syslog - --warn--^M
Jul  2 22:23:24 [192.168.250.100.11.180] local5:AAERROR syslog - --error--^M
Jul  2 22:23:24 [192.168.250.100.11.180] local5:AAFATAL syslog - --fatal--^M

以下の点がローカルのloggerと異なっている。

  1. リモートIPが記載される。
  2. facilityの表記のみになっている。
  3. Windows上のJavaから出力した為か、末尾改行で"^M"が付いてしまっている。
  4. loggerコマンドの"-t"オプションに相当するパラメータが無い。

ローカルのJavaより、syslogdを飛ばす。

log4j.propertiesを修正し、SyslogHostを"localhost"にしてSolaris10上で実行してみる。

[msakamoto@basara java]$  java -cp .:./lib/log4j-1.2.13.jar test.log4j.SyslogSample 
Message from syslogd@localhost at Sun Jul  2 22:58:05 2006 ...
localhost local5:AAFATAL syslog - --fatal--

実行側のコンソールに、fatalメッセージが割り込んでいるのが分かる。これは正常である。

# tail /var/log/log4j.log
Jul  2 22:58:05 localhost local5:AADEBUG syslog - --debug--
Jul  2 22:58:05 localhost local5:AA INFO syslog - --info--
Jul  2 22:58:05 localhost local5:AA WARN syslog - --warn--
Jul  2 22:58:05 localhost local5:AAERROR syslog - --error--
Jul  2 22:58:05 localhost local5:AAFATAL syslog - --fatal--

こちらがsyslogdの出力しているログである。"AA"以降がJava側で指定しているメッセージフォーマットである。

やはり、ローカルのloggerとフォーマットが異なる。

結論

Log4jのSyslogAppender経由で出力するsyslogは、ローカルでloggerコマンドにより出力するログ形式とはフォーマットが異なる。

ただし、上記は自分で設定したfacilityに出力した場合であり、今回仕事ではuser.errorで固定で出力する。その場合は、まだ実験していない。


余談だが、この実験を終えた後、「今日一日installからここまでずう~~っと動かしっぱなしだったな」と、風呂にはいるのを兼ねて一旦PCを落とした。
その後再起動し、VMwareからSolaris10を立ち上げたら ネットワークカードの初期化に失敗してるし。

急いでグラフィカルログインから(こういうときがあるから迂闊にコンソールにできない。いや、単にLinuxでいうstartxに該当する手順を知らないだけなんだけど)、svcsを叩いてみたら 見事に network/physical:default が offline になってるし。

あわてて /etc/inet/hosts, ipnodes を確認してみたら localhostだけになってて、自分で指定したホスト名のエントリがいつの間にか消去されてるし。

・・・誰だ?自分じゃないはず。・・・まさか、Sun Studio 11とかそのパッチの影響か・・・?確かにSun Studio 11を入れた頃には一通り環境が整いつつあったので、再起動はかけていない。

とりあえず急いで、対応する.savedファイルを確認してホスト名のエントリを書き戻す。

# svcadm enable -r network/physical:default

をやろうとすると*1、maintenanceモードに入っているからと怒られる。
ん?ひょっとして

# svcadm reflesh network/physical:default

したのがまずかったか?もう一度svcsしてみたら確かに"maintenance"と表示されてしまっている。

# svcadm clear network/physical:default

したらmaintenanceモードが消えたので、もう一度 enable してみる。

これで、ようやく"online"になってくれた・・・。念のため再起動かけてみると、無事指定しているIPアドレスが取得できたようで、SSHからもログインできた。

あ~~・・・焦った・・・。


*1: -rというのはdependsするサービスもまとめて起動するオプション

プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 10:20:51
md5:a6329a5abfa629f6a2436e844fd3e054
sha1:7af030af94a8faec4485ef0f86aa8eac271ccc8c

技術/Java/PostgreSQLと文字コードメモ  

所有者: msakamoto-sf    作成日: 2006-03-15 13:28:25
カテゴリ: Java PostgreSQL 

PostgreSQLとJavaの文字コード関連を調べた時のメモ。 2006年3月時点での情報です。

PostgreSQL 8だと、SET NAMESしたら怒られた。

testsuite=> set names to 'UTF8';
ERROR:  unrecognized configuration parameter "names"

Java側で"set client_encoding to XXX"させてみたら、今度は

org.postgresql.util.PSQLException: The server's client_encoding parameter was 
 changed to EUC_JP. The JDBC driver requirs client_encoding to be 
 UNICODE for correct operation.

として怒られた。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 10:20:03
md5:984b36ad8dd1bf401f5e020680b505a1
sha1:9528ef4626e7df55178419568d787a0924add0a8

日記/2007/02/05/TurboLinux10SでturbopkgからTurboPlusへの移行  

所有者: msakamoto-sf    作成日: 2007-02-05 10:10:14
カテゴリ: Linux サイバー日野 

サイトには「TurboLinux 10 Server アップデートキットを適用すれば」云々あるけど、そもそもアップデートキットってどこだよ《゚Д゚》ゴラァァァァァァァァァァァァア!!って感じ。
「サポート」の「ダウンロード」も、FTPのディレクトリにしかたどり着けないし。

しょうがないので、lftpコマンドを起動して、

/pub/TurboLinux/stable/tested/Server/10/i586

より手動でパッケージをDLする。

まず、

turbolicense-tlverify-0.3-7.i586.rpm
turbolicensecfg-1.0.0-21.i586.rpm

をDLしてインストールし、ライセンスファイルを取得する。

/etc/turbolicense/celica_license.txt

に、ライセンスファイルがDLされる。

続いて以下のパッケージをDL

turboplus-1.0.0-77.i586.rpm
turboplus-base-1.0.0-77.i586.rpm

(今思えば、turboplus-1.0.0-77.i586.rpmは不要だったかもしれない。gettext用とおぼしきメッセージファイル(*.mo)しか入ってないし。)

[root@murasame root]# rpm -ivh turboplus-base-1.0.0-77.i586.rpm
error: Failed dependencies:
        libpcrs.so.0 is needed by turboplus-base-1.0.0-77
        pcrs is needed by turboplus-base-1.0.0-77
        turbolicensecfg-base is needed by turboplus-base-1.0.0-77

というわけで、更に追加で

pcrs-0.0.3-2.i586.rpm

をDLし、インストール。

[root@murasame root]# rpm -ivh --nodeps turboplus-base-1.0.0-77.i586.rpm
Preparing...                ########################################### [100%]
        file /etc/turboautopkg.conf from install of turboplus-base-1.0.0-77 conflicts with file from package zabom-2.2.1-9
        file /usr/bin/cuickin from install of turboplus-base-1.0.0-77 conflicts with file from package zabom-2.2.1-9
        file /usr/sbin/turboautoupdate from install of turboplus-base-1.0.0-77 conflicts with file from package zabom-2.2.1-9
        file /usr/sbin/turbosetautopkg from install of turboplus-base-1.0.0-77 conflicts with file from package zabom-2.2.1-9
        file /usr/sbin/turbosetautopkggui from install of turboplus-base-1.0.0-77 conflicts with file from package zabom-2.2.1-9
        file /usr/sbin/turboupdateck from install of turboplus-base-1.0.0-77 conflicts with file from package zabom-2.2.1-9

・・・んだよ、それ。むかついたので、/etc/turboautopkg.confだけバックアップしておいて、

rpm -vih --nodeps --force turboplus-base-1.0.0-77.i586.rpm

で無理矢理インストール。

で、"turbo+ --cui"でとりあえず起動できた。

・・・不安だ。zabom入ったままだしなあ・・・。だって、zabom消そうとすると

[root@murasame root]# rpm -e zabom
error: Failed dependencies:
        zabom is needed by (installed) mongoose-2.0-2004092707
        zabom = 2.2.1-9 is needed by (installed) zabom-devel-2.2.1-9

とかいわれるんだもん。怖い。

あ、あと、何かVMware上のTLX10SにはImageMagick-perlが入ってないことが判明。とりあえず動作確認で、turbo+でさくっと入れておいた。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 10:11:48
md5:8d1b100cea7c2a7fd5fc2caf313af51c
sha1:285860aefc2590a10e26125f27f4fdfb956e62c6

日記/2007/01/23/TurboLinux10のbindのアップデートで嵌った  

所有者: msakamoto-sf    作成日: 2007-01-23 20:40:19
カテゴリ: DNS Linux サイバー日野 

どこで嵌ったのかというと、bind-9.2.3-4のRPMのpreuninstallスクリプトが狂ってた為、アンインストールに失敗してしまったところ。

turbopkgでアップデートしてみたら、

[root@murasame root]# rpm -qa | grep bind
bind-9.2.3-9       #<<<<<< 9.2.3-9
ypbind-1.17.3-1
bind-libs-9.2.3-9
bind-utils-9.2.3-9
bind-9.2.3-4       #<<<<<< 9.2.3-4??
bind-chroot-9.2.3-9

こんな感じでbindが二つも登録されてしまった。9.2.3-4の方のアンインストールに失敗したみたい。
しょうがないので、bind-chrootとcaching-nameserverを削った後、bind-9.2.3-9を-eで消して、9.2.3-4については

$ rpm -q --scripts bind-9.2.3-4

でpreuninstallスクリプトを見てみたところif~fiの最後のfiの位置がおかしかったことが判明。手動でpre/postのuninstallスクリプトを動かしておき、

$ rpm -e --noscripts bind-9.2.3-4

でスクリプトを動かさずに削る。

・・・bindとbind-chrootはupdateサイトから再取得。caching-nameserverについてはInstallサイトから再取得。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 10:09:18
md5:faa840b27b6268a1f7a80542b6feb262
sha1:4fdfc211ebd38b713e087bc2e06d530e451148c2

日記/2007/03/21/蝋印(ろう印):シールスタンプ(SealStamp)について  

所有者: msakamoto-sf    作成日: 2007-03-21 09:54:22
カテゴリ: セキュリティ 

サーバ引っ越しでrootユーザのパスワードを郵送する事にしてみたのだが、開封されていないことを確認するにはどうしようということで、格好付けと見栄えで蝋印を使ってみようと思った。

が、現状入手するには輸入物を扱う文房具ショップでないと難しい。カテゴリも探しづらく、レター用品でカテゴライズしているところもあれば、普通に印鑑として扱っているところもあるし、輸入雑貨としてまとめているところもある。

楽天やおしゃれな大きめの文房具ショップでは、
RUBINATO(ルビナート)
ムッハ社
の二社のシールスタンプを主に扱っている。

http://www.rakuten.ne.jp/gold/yosii/index-b.html
http://www.rakuten.ne.jp/gold/nagasawa/main-top/main-top1.htm
http://www.itoya-store.jp/store/Top.do

この三店の他にも、輸入文具を扱っているところであれば結構見かけることは見かける。

RUBINATOはかなりのブランドらしい。
http://www.rubinato.it/
イタリアを本拠地としている。特にe-shopを経営しているわけでもないようだ。シールスタンプについて言えば、記念品や観光地のおみやげ品をターゲットにカスタマイズデザインも請け負ってるみたい。・・・個人で注文できるかは不明。聞いてみるか。

ムッハ社はよく分からない。

今回はまあ、初手なので、ルビナートのフクロウのセットをヨシイから購入。送料込みで4800円強。まあまあだろう。フクロウのデザインを選んだのは、知恵の神様だから。あるいは、不正なログインはその眼で捉えて逃さない、という意味も込み。クローバーも良かったんだけど、四つ葉のクローバの花言葉って「真実の愛」とか「私のものになって」とかいう意味だから、rootユーザのパスワードが入っている封筒には明らかに似合わないので見送った。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 09:57:20
md5:015f8f6f7cc479ceff9828ca5dc57b4c
sha1:48d12d579ffe88e6d56b4e3f9ff24ad3038059b9

技術/Linux/xscreensaver  

所有者: msakamoto-sf    作成日: 2007-03-23 09:40:02
カテゴリ: Linux UNIX 

※2007/03前後、TurboLinux Server 10 を使っていた当時のメモ

RPMは

xscreensaver

というパッケージそのまま。で、manとかも入ってる。
ざっと眺めると

xscreensaver-demo

というGUI設定プログラムが同梱されており、基本的にそれを使って設定することを推奨している。実際やってみたら、とても手動じゃ作れなさそうな

$HOME/.xscreensaver

が出来上がった。

GLSlideShowとかいうスクリーンセーバを選べば、"Advance"タグで選択したディレクトリ中の画像をランダムで表示してくれるみたい。
→使ってみたら、OpenGL使ってるだけあって派手なんだけどCPU食い過ぎ。どうしてこういうのばっかしなんだ。

結局ブランクスクリーンセーバにして、しかも30分後に。これじゃあ、VMwareじょうなので、ホストのWindows側で勝手にDisplayをOFFってくれる。実質無効。

他、下記リンク参照。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 09:46:22
md5:7e67dc68a5b02c0ed9659c6290d17814
sha1:7f43858edf56a2ea2412e37c58726ff4c83d2013

日記/2007/03/28/IEでPOSTの度にルートディレクトリへのGETリクエストも発行される?  

所有者: msakamoto-sf    作成日: 2007-03-28 09:34:18
カテゴリ: Windows ネットワーク 

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37122&forum=11

要は、通常はPOST遷移するはずが、ログ見てみると間にGETを挟むクライアントが超低確率で存在するけどこれってなんなの?という話。

珍しく素早く解決されているが、要はMicrosoftのIE6の"コンテンツアドバイザ"という機能の仕様。全く・・・。

http://support.microsoft.com/kb/924456/ja

本当に何を考えているんだ?本当、余計な事しかしないよな・・・。IE系は。まあ、MS系のサイトやMSの血を引くWebアプリはそれをデフォにしてるのが多いから、IE使う方がむしろ却って気楽なんだけど。

ただ、どうもデフォじゃ上記機能は無効化されているみたい。自分も個人のWinXPProで確認。コレ、弄った記憶も無いし。というかこの機能、今じゃセキュリティソフトやプロバイダなどの、別の上位レイヤーで実装されている機能だよな。コンテンツ内容を判別してるなんて。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 09:35:46
md5:ad711757914189785e1337a2352582d9
sha1:61042e01b87f7ea724211776d46b510b68d723db

日記/2007/03/29/IO::All, File::DirWalk, Path::Class, そしてorz, workyモジュール  

所有者: msakamoto-sf    作成日: 2007-03-29 09:32:06
カテゴリ: Perl 

メモ。

http://blog.livedoor.jp/dankogai/archives/50795362.html
ここら辺から始まった、「ディレクトリ中のファイル取り出しと処理」系で派生。

http://d.hatena.ne.jp/nekokak/20070324/1174746102
で、File::DirWalkが紹介。続いて
http://blog.livedoor.jp/dankogai/archives/50796757.html
で、IO::Allが紹介。さらに、どっかの関連エントリで
http://d.hatena.ne.jp/tokuhirom/20070325/1174800458
でも、File::DirWalkに続いて Path::Class が紹介。さらにここのサイトの
http://d.hatena.ne.jp/tokuhirom/20070325/1174824272
で、Inline::* というモジュールの存在を知る。

→Inline::のCPAN
http://search.cpan.org/~ingy/Inline-0.44/Inline.pod
すげえ。で、作者のIngyというのは何者か?

http://search.cpan.org/~ingy/
・・・すげえ。で、すごいのが
http://search.cpan.org/~ingy/orz-0.12/lib/orz.pm
http://search.cpan.org/~ingy/worky-0.10/lib/worky.pm
・・・ジョークCPAN?ジョークRFCってあるけど。

というわけで色々すごかったメモ。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 09:33:23
md5:f551fd2582c77dfe47cb5f14ddd222dc
sha1:2827d67010acca3f9e90f9bc054d4f949dd075d3

日記/2007/03/31/CのerrnoにあたるPerlの$!は、使用前にクリアが必要  

所有者: msakamoto-sf    作成日: 2007-03-31 09:29:34
カテゴリ: C言語 Perl 

errno自体がもともと、Cのレベルでそうした処理が必要。
これを忘れると、他のモジュール内で発生した(しかし理由があって故意にスルーした)errnoなどがクリアされずに残っていて、自分で呼んだシステムコールは正常なのに、errnoが残っている為、$!がセットされているように見える場合が有る。

errnoの判定が必要なシステムコールの呼び出し前には、errnoクリア。これは、CもPerlも同じようである。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 09:30:48
md5:b52b6531a46c0164e044df6f199c87d2
sha1:01df1cca872d5e12868a39636a2c3859d7bb06b0

日記/2007/04/03/底数、つまり*進数を変換するモジュール(2進数<>16進数など)  

所有者: msakamoto-sf    作成日: 2007-04-03 10:25:29
カテゴリ: Perl 

CPANには Math-BaseCalc というのが挙げられている。おおよそこれで用が足りるかも知れない。ソースも一本のみなので、わざわざcpanをインストールせずとも、適当にPODを削ってパッケージ名を弄ればローカルでも適当に動かせそう。

ちなみにActivePerlのPPMには、他にも、
Math-Base36 : 36進数、つまり0-9, A-Z.
Math-Base85 : RFC1924に基づく85進数
Math-BaseArith : よくわかんない。
Math-Roman : ローマ数字に変換(すげえ。)
Math-BaseCnv : よく分かんないけど、Math-BaseCalcのお手軽・スピード優先タイプみたい。

なんかが入ってた。CPANに移植してくれないかな。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 09:28:59
md5:4f47486a4568c892528310e44723b3d9
sha1:06e6c63e8a21f0f8e83d9a4eac5554ba1d5565c5