68user's page 掲示板

Prev< No. 2404〜2492> Next  [最新発言に戻る] [過去ログ一覧]
No. 2404 # 68user 2002/01/09 (水) 21:50:33
ん〜、

>>2403 ふくし
> -method=>'form'
post?
> -enqtype=>'multipart/form-data'
enctype?

とか?

No. 2405 # ふくし 2002/01/10 (木) 14:41:14
>>2404 68user
さん、本年もよろしくお願いします。
ん〜、ほんとにそれだけのことでした。;;;
恥の掻き初め(寒)ですね。

最初、-enctype を指定していなかったんです。
そうすると start_form がデフォルトで
application/x-www-form-urlencoded を取るので
失敗していたようです。
(その場合 start_multipart_form を使えばデフォルトが
    multipart/form-data になるようですね)

method も post がデフォルトなので書いていなかったのですが、
html と最大限あわせようと思って質問の直前に書いて、
それで失敗していたのでした。

ハッシュによる名前付け編集の渡しは、
存在しないキーを渡しても無視されるのはなんかわかりますけど、
存在するキーに定義されてない値を渡しても怒られないのは
ちょっと CGI.pm が不便だなあと思いました。
いずれにしても、これらのケースでエラーを出して欲しいです。
(出す方法あったりして、、)

とまれ、ありがとうございました&すいませんでした。
本年もよろしくです。

No. 2406 # 68user 2002/01/11 (金) 17:21:39
proxy サーバに接続後、
    strcpy(request,
                  "CONNECT www2.ggn.net:443 HTTP/1.1\r\n"
                  "Host: www2.ggn.net\r\n"
                  "\r\n");
    write(s, request, strlen(request));
とする。そしたら proxy サーバが
    HTTP/1.0 200 Connection established(CRLF)
    (CRLF)
などと返してくるので、
    read_size = read(s, buf, BUF_LEN);
    write(1, buf, read_size);
でレスポンスを読み取る (↑これは手抜き)。その後は
    SSL_load_error_strings();
して、普通におはなし。

>>2160 Nira
では
    ERR_load_crypto_strings();
    ERR_load_SSL_strings();
    OpenSSL_add_all_algorithms();
を追加する必要がある、ということでしたが、FreeBSD 4.4-RELEASE では
付けても付けなくてもうまくいきました。

お仕事では、Windows+Borland C++ Builder 5.0 でやらなきゃ
いけないのが欝です (C++ 知らんし、Windows でプログラムを
組んだことがないし)。HTTP 用モジュールは用意してあるみたい
だけれど、使い方がさっぱりわからんなぁ。


>>2405 ふくし
> 存在するキーに定義されてない値を渡しても怒られないのは
> ちょっと CGI.pm が不便だなあと思いました。
perl 5.005_03 付属の CGI.pm を見る限りでは、エラー検出する
方法はないようですね。

> 本年もよろしくです。
こちらこそよろしくお願いします。

No. 2407 # 68user 2002/01/11 (金) 17:38:54
>>2406 68user
う、一行目が欠けてしまって意味不明に。

一行目は
    「お仕事で proxy サーバ経由の SSL 通信を行う必要があったので、メモメモ。」
でした。

No. 2408 # ぶちお 2002/01/11 (金) 17:48:49
UNIXを勉強したい人ってはじめは何をすれば良いか教えてください!
ほんとにくだらない質問をしてすいませんが、おねがいします!!

No. 2409 # 68user 2002/01/11 (金) 23:04:07
>>2394 Ka23
> UNIX プログラミング FAQが以下に移転しています。
遅くなりましたが反映しました。ありがとうございました。

>>2408 ぶちお
> UNIXを勉強したい人ってはじめは何をすれば良いか教えてください!
本屋に行ってインストール記事の載っている雑誌か、
インストール本を買うか、あるいは Turbo Linux とかの
商品 (1万程度) を買うのがいいんじゃないですかね。

その後はネット環境を整えたり、プログラミングしたり
好きなことをすると。

No. 2410 # ぶちお 2002/01/14 (月) 21:38:40
68userさんありがとうございました!!助かりました!また質問するときがあると思いますがそのときはよろしくおねがいします!!

No. 2411 # ぶぶ 2002/01/15 (火) 19:03:05
こんにちは。
私はWindowsにActivePerlを入れてCGIやっています。
今回、PPMを使おうと思って、DOS窓でppmと入力したら、
下のようなメッセージが出てきました。

Failed to load PPM_DAT file
Can't use an undefined value as a SCALAR reference at
C:/Perl/site/lib/PPM.pm line 1586, <DATA> line 36.

なんかエラーが出てるようなのですが、PPM.pmというのはいじった
覚えがないし、他のファイルもいじった覚えはなし、上のエラーが
何を意味するのかよく分からないし、Googleなどで検索かけてもみ
たのですが、同じ様な事例は見つからず困っています。

どなたか分かる方いましたら、どうすればいいのか教えてください。
お願いします。

Win98,ActivePerl5.6.0(Binary build 623)

No. 2412 # ふくし [E-mail] 2002/01/15 (火) 22:27:55
>>2411 ぶぶ
さん、こんばんは。

めったに ActivePerl は使わないのですぐにはわからないんですが
手もとの環境では C:/Perl/site/lib/PPM.pm の
1586 行目近傍は以下のようになっていました。

1584:if (defined($location)) {
1585:  if ($location =~ /[^\/]$/) { $location .= "/"; }
1586:  $package = $location . $package . ".ppd";
1587:}

もしぶぶさんの環境でも同じであれば、
とりあえず 1586 行目の直前に

warn "location: $location package: $package\n";

とでも入れてみて、
$location と $package の値を見てみたらいかがでしょうか。

でも、うちの環境(同じ Windows98)で ppm と入れたら
その現象が再現できなかったので、
再インストールでもいいかなという気もしますが。

No. 2413 # ふくし 2002/01/15 (火) 22:47:49
>>2412 ふくし
自己レスれす。(寒

>とりあえず 1586 行目の直前に
>warn "location: $location package: $package\n";

これ、自分でもやってみましたけど、
C:\> ppm
と打っただけではココは通らないみたいでした。

ぶぶさん、
PPM.pm の 1586 行目はぼくと同じですか?
(バージョン、レベルは同じなんだけどなァ)

あと、ほんとに
C:\> ppm

と打っただけで怒られます?
それともなんか実のあること(パッケージのインストールとか)を
やろうとしてます?
後者の場合は入れたコマンドを教えてください。

No. 2414 # ぶちお 2002/01/16 (水) 00:22:40
たびたびすいません!!今学校でパソコン同士のデータのやり取りを、Cプログラムでなんとかやろうとしているのですがわからんのですー!先生はfopenとか使えばできるだろー!!というのですが本を見てもかいてないようなかんじで(_m_!)なにしろ未熟者でわからんのですー!よろしければおしえてもらえますか?

No. 2415 # 68user 2002/01/16 (水) 03:52:02
>>2414 ぶちお
> 今学校でパソコン同士のデータのやり取りを、Cプログラムで
> なんとかやろうとしているのですがわからんのですー!
さて困ったものですね。あまりにもひどい質問の仕方です。
    http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse
は読んでいただけましたか?

パソコンって何ですか? UNIX ですか? Windows ですか?
それ以外ですか? 具体的な OS 名とそのバージョンは?

データのやり取りって具体的に何をしようとしていますか?
フロッピーからデータを読み込むことですか? LAN 経由で
ファイルを読むことですか? RS-232C 経由でデータを
やりとりすることですか?

今後、こういう調子の質問を続けるつもりでしたら、僕は
お相手を致しかねますのでよろしく。

No. 2416 # ぶぶ 2002/01/16 (水) 13:47:46
ふくしさん、お返事ありがとうございます。

PPM.pmの1586行目付近は、下のようになっていました。

1577:unless ($PPDfile && $$PPDfile) {
1578: foreach (keys %repositories) {
1579: my $location = $repositories{$_}{'LOCATION'};
1580: if ($location =~ /[^\/]$/) { $location .= "/"; }
1581: $$PPDfile = $location . $package . ".ppd";
1582: return %PPD if (%PPD = getPPDfile('package' => $$PPDfile,
1583: 'parsertype' => $parsertype, 'PPDfile' => \$$PPDfile));
1584: undef $$PPDfile;
1585: }
1586: return unless $$PPDfile;
1587:}

ちょっと違うみたいですよね。こちらの方が行が短いのでしょうか。

ちなみにDOS窓に入力したのは、

C:\>ppm

これだけです。
PPM のシェルでパッケージのinstallをしようと思っているのですが、
とりあえずPPMを起動するため、入力しているのはppmという文字だけ
です。そして、ppmとだけ入力すると、例のエラーが出るのです。
少ない情報ですが、何か分かりますでしょうか?
やはりActivePerlを入れ直してみた方が良いのでしょうか?

よろしくお願いします。

No. 2417 # 68user 2002/01/16 (水) 14:25:46
>>2416 ぶぶ
先ほど、Windows2000 に ActivePerl を入れる必要が
あったので試してみたのですが、ppm とだけ
打つと
    PPM interactive shell ...
と出てエラーは出ませんでした。

インストールしたのは最新の build 631 (perl-5.6.1) です。
再インストールは悪くない選択肢ではないかと思います。

No. 2418 # ふくし 2002/01/16 (水) 14:35:51
>>2416 ぶぶ
さん:

いま会社で ActivePerl の環境がないのでテストできませんが、
>return unless $$PPDfile;
ここで
>>Can't use an undefined value as a SCALAR reference
(スカラーの参照として、未定義値は使えません)
ですよね。

$$PPDFile というのは、
$PPDFile というスカラー変数に
スカラーへの参照(別のモノを指し示すもの)が入っていると考えて、
そのスカラーの値を返そうとしているわけですが、
そのとき $$PPDFile に undef が入っているのでくだんのエラーが
出ています。

たぶん $PPDFile という変数にもっと上の方でスカラーへの参照を
セットすることを期待して動いていたのですが、
その期待が裏切られているようです。

(その上でいろいろしているのも、$$PPDFiles つまり
    $PPDFiles が指し示すスカラーメモリに対してで、
    $PPDFiles にどのような論理で何が入っているかは
    下のコードからは不明です)

・・・という風にさかのぼって研究しても勉強になると思いますが、
(意外ともうちょっとでパキッとわかったりして)
いずれにせよこんなアンフレンドリーなメッセージが出て中断するのは
作者の意図と違う動作なので、再インストールでもいいと思います。

No. 2419 # ぶぶ 2002/01/16 (水) 15:10:06
ふくしさん、68userさん、お返事ありがとうございます。

build631をインストールしてみましたら、何の問題もなくPPMの
シェルが起動しました。

インストールしてから、PPM.pmを覗いてみると、1586付近は、
ふくしさんが書かれたものと同じになっていました。

前に入れていたものがおかしかったのでしょうか。入っている
pmファイルがおかしいとは夢にも思わなかったので再インスト
ールを試さずに質問してしまってごめんなさい。

これでやっとパッケージのinstallができます。ありがとうご
ざいました。

PS.
ふくしさん、エラーに関する説明ありがとうございます。
エラーの出る仕組みがよく分かりました。

No. 2420 # 初心者 2002/01/20 (日) 14:29:35
ボーランドC++コンパイラーでC言語のCGIを作ろうと思っているのですがどうしたら良いのでしょうか?
bcc32 -o CGI名 ソース名 でいけるのでしょうか?
よろしくお願いします

No. 2421 # 68user 2002/01/20 (日) 19:06:19
>>2420 初心者
> …でいけるのでしょうか?
試してみた結果どうなりましたか?

No. 2422 # 橋本 [E-mail] 2002/01/21 (月) 15:31:41
メール受信時に"newaliases"コマンドを実行したいのですが、上手くいきません。

方法としては、特定のアドレスにメールが届いた時点でシェルスクリプトを実行するようエイリアスファイルにて設定しており、シェルスクリプトにはsudoで"newaliases"を実行するよう書いています。
また、sudoersにて"newaliases"コマンドをroot権限で実行できるようにも
設定しています。

"newaliases"コマンドではなく、他のコピーコマンド(cp)などは動作するのですが、"newaliases"コマンドは動作しません。

同じような方法を取られている方がいらっしゃいましたら
設定方法を教えていただけませんでしょうか。
宜しくお願いいたします。

No. 2423 # 橋本 [E-mail] 2002/01/21 (月) 16:41:43
申し訳ありません。環境を全く書いていませんでした。
RedHat Linux7.1.J、Sendmail8.11.5
です。

宜しくお願いします。
本文↓
メール受信時に"newaliases"コマンドを実行したいのですが、上手くいきません。

方法としては、特定のアドレスにメールが届いた時点でシェルスクリプトを実行するようエイリアスファイルにて設定しており、シェルスクリプトにはsudoで"newaliases"を実行するよう書いています。
また、sudoersにて"newaliases"コマンドをroot権限で実行できるようにも
設定しています。

"newaliases"コマンドではなく、他のコピーコマンド(cp)などは動作するのですが、"newaliases"コマンドは動作しません。

No. 2424 # 68user 2002/01/21 (月) 16:58:44
>>2423 橋本
どのユーザが「newaliases を root 権限で実行できる」ような
設定になっていますか?

また、sudo のログには何と記録されていますか?

No. 2425 # 68user 2002/01/21 (月) 17:18:01
>>2424 68user
だけでは情報が不十分かな…。

sudoers に書いた内容と、「特定のメールアドレスにメールが
届いたらコマンドを実行する」というのをどうやって実現して
いるか (/etc/aliases とか /home/foo/.forward とか) も
書いてください。

No. 2426 # 橋本 [E-mail] 2002/01/21 (月) 19:10:37
>>2424 68user
newaliasesをroot権限で実行できるユーザは"deamon"に設定しています。
理由は、メール受信時に実行されるシェルスクリプトが一体どのユーザで
実行されるか分からなかったため、シェルスクリプト内にメールを送信
するコマンドも記述したところ、"deamon"という送信者名でメールを送信
したため、deamonでシェルスクリプトは実行されると思い設定しました。

ですが、実際はdeamonが実行しているようではないようです。
>>2423 にてcpコマンドなど他のコマンドは動作する。
と記述しましたが、私の勘違いで動作していませんでした。
申し訳ありません。

また全てのユーザに"newaliases"、"cp"コマンドをroot権限で
実行できるよう設定したところ、正常に動作しました。
ですが、全てのユーザに許可してしまうわけにはいかないので、
どうにかして特定のユーザにのみ許可して動作するようにしたいのですが
・・・。

以下設定ログ・設定内容です。
●メール受信時のログ↓
Jan 21 18:20:16 test sudo(pam_unix)[19079]: authentication failure; logname= uid=0 euid=0 tty= ruse
r= rhost= user=daemon
Jan 21 18:20:23 test sudo(pam_unix)[19079]: 2 more authentication failures; logname= uid=0 euid=0 t
ty= ruser= rhost= user=daemon
Jan 21 18:20:23 test sudo[19079]: daemon : 3 incorrect password attempts ; TTY=unknown ; PWD=/ ;
USER=root ; COMMAND=/usr/bin/newaliases

●sudoersに追加↓
deamon ALL= NOPASSWD: /usr/bin/newaliases
deamon ALL= NOPASSWD: /bin/cp

●メール受信時に動作するシェルスクリプト↓
#!/bin/sh
sudo cp /etc/mail/123.txt /etc/mail/456.txt
sudo newaliases
mail -s test mailuser@****.co.jp < /etc/mail/456.txt
exit

長文で申し訳ありませんが宜しくお願いします。

No. 2427 # 橋本 [E-mail] 2002/01/21 (月) 19:21:39
>>2425 68user
「特定のメールアドレスにメールが届いたらコマンドを実行する」は、
(/etc/mail/aliases)に mailuser :"|/etc/mail/mail-program"
と記述しています。

よろしくお願いします。

No. 2428 # 68user 2002/01/21 (月) 19:48:29
>>2427 橋本
> ●メール受信時に動作するシェルスクリプト
で /usr/bin/id > /tmp/id.result などとすれば、どの権限で
動いているのかがわかります。

一般的には、/etc/mail/aliases に
    mailuser :"|/etc/mail/mail-program"
とあるなら、/etc/mail/mail-program というファイルの権限で動きます。

例えば
    % ls -l /etc/mail/mail-program
    -rw-r--r-- 1 hoge wheel 46632 Sep 19 02:30 /etc/mail/mail-program
ならば hoge 権限で動く、ということです。

No. 2429 # 橋本 [E-mail] 2002/01/21 (月) 21:31:13
>>2428 ですが、
mail-programの権限は以下のようになっています。↓
-rwxr-xr-x 1 root root 165 1・21 19:55 mail-program

また /usr/bin/id > /tmp/id.resutl の結果は以下になりました。↓
uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp)

やはり"deamon"で実行されているようです。sudoresにも正しく設定して
いるつもりなのですが、シェルスクリプトは動作しません。
deamonに関してはsudoが使えないのでしょうか。

何かよい方法ありましたら教えてください。
宜しくお願いします。

No. 2430 # 68user 2002/01/21 (月) 21:34:18
>>2429 橋本
…ふむ。

deamon でなく daemon です。sudoers を修正してみて下さい。

No. 2431 # 橋本 [E-mail] 2002/01/21 (月) 21:52:17
>>2429 橋本

どうもありがとうございます。
deamonではなく"daemon" に修正したところ上手くいきました!

とてもお恥ずかしいですが、すごくうれしかったです。
ありがとうございました。

No. 2432 # ふくし [E-mail] 2002/01/23 (水) 17:20:59
こんにちは。ヒサブリに質問です。

下のような CGI で euc、sjis の文字列をブラウザに表示します。

#! perl -w
# ~/public_html/cgi-bin/moji.cgi

use CGI;
use Jcode;

my $q = CGI->new;
print $q->header();
print $q->start_html();
print $q->start_form(-action=>'./answer.cgi');

$str_euc = 'こんにちは';
$str_sjis = $str_euc;
Jcode::convert(\$str_sjis, 'euc', 'sjis');

print "euc: $str_euc <br>";
print "sjis: $str_sjis <br>";
print "unpacked euc: ".unpack("H10", $str_euc)."<br>";
print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>";
print "eq:".($str_euc eq $str_sjis)."<br>";

コード自体は EUC で書きました。
ブラウザの設定を EUC にすると、
当然のように、EUC 部分は正しく、sjis 部分は文字化けになります。
(本当は sjis 部分は半角カナになりました)

http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: こんにちは
sjis: 、ウ、・ヲヒ、チ、マ
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

これ、ブラウザの設定を sjis にすると、
euc も sjis も文字化けになります。
これはなぜでしょう?

http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: 、ウ、・ヲヒ、チ、マ
sjis: 痔宍痔・ヲ射痔蔀痔煮
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

で、下のように出力する文字列を URL から取得します。

#! perl -w
# ~/public_html/cgi-bin/moji.cgi

use CGI;
use Jcode;

my $q = CGI->new;
print $q->header();
print $q->start_html();
print $q->start_form(-action=>'./answer.cgi');

$str_euc = $q->url_param('greeting');
$str_sjis = $str_euc;
Jcode::convert(\$str_sjis, 'euc', 'sjis');

print "euc: $str_euc <br>";
print "sjis: $str_sjis <br>";
print "unpacked euc: ".unpack("H10", $str_euc)."<br>";
print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>";
print "eq:".($str_euc eq $str_sjis)."<br>";

こうすると、ブラウザの設定を euc にすると、
なんと、euc も sjis も正しく表示されます。

http://www/~fukushi/cgi-bin/moji.cgi?greeting=こんにちは の表示)
euc: こんにちは
sjis: こんにちは
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

ブラウザの表示を sjis にすると、euc 部のみ正しく表示されます。

http://www/~fukushi/cgi-bin/moji.cgi?greeting=こんにちは の表示)
http://www/~fukushi/cgi-bin/moji.cgiの表示)
euc: こんにちは
sjis: 、ウ、・ヲヒ、チ、マ
unpacked euc: a4b3a4f3a4
unpacked sjis: 8ea48eb38e
eq:

これはなぜでしょう?
サーバーの OS は FreeBSD 2.2.8-RELEASE、
言語は jperl5.005_03-990612 EUC Version(Latin モードで使用)、
クライアントの OS は Windows 2000 server、
ブラウザーは Netscape Navigator 4.75 です。

No. 2433 # ミング [E-mail] 2002/01/23 (水) 17:33:53
今日は。

Awkで

{AA [$1]++}
END {for (BB in AA) ...........}

とやると、AAの中に有る同じ名前のものが幾つあるか数えてくれると思うの
ですが、Perlではどうやったら同じことが出来ますか?

例えば
@array=(9, 9, 9, 3, 3, 3, 2, 2, 1)
とすると、

9は3個、3は3個、2は2個1は1個あるので、

9=3
3=3
2=2
1=1

としたいのですが、宜しくお願いいたします。

No. 2434 # ふくし [E-mail] 2002/01/23 (水) 18:47:10
>>2433 ミング
さん:

なんとなく似せて書くと

#! perl

@array = (9,9,9,3,3,3,2,2,1);

for (@array) {
        $array2{$_}++;
}

for (reverse sort keys %array2) {
        print "$_=$array2{$_}\n";
}

とか。
「ハッシュ」の機能を使っています。

@array の順番には関係なく、
常に大きな数字から出力していますがいいでしょうか。
(ハッシュを使うと、順不同になるので、、)

No. 2435 # 68user 2002/01/23 (水) 19:31:20
>>2432 ふくし
> Jcode::convert(\$str_sjis, 'euc', 'sjis');
逆ですよー。
    Jcode::convert(\$str_sjis, 'sjis', 'euc');

No. 2436 # Bourbon 2002/01/23 (水) 19:51:30
だれか、solaris8intel_platformをAT互換機で動作する、LANカードを
知っている方いらっしゃいますか?

No. 2437 # ふくし [E-mail] 2002/01/23 (水) 20:04:59
>>2435 68user
あ、ほんとだ、、すみませんいつもいつも、、(_ _)

で、

#! perl -w

use CGI;
use Jcode;

my $q = CGI->new;
print $q->header();
print $q->start_html();
print $q->start_form(-action=>'./answer.cgi');

$str_euc = 'こんにちは';
$str_sjis = $str_euc;
Jcode::convert(\$str_sjis, 'sjis', 'euc');

print "euc: $str_euc <br>";
print "sjis: $str_sjis <br>";
print "unpacked euc: ".unpack("H10", $str_euc)."<br>";
print "unpacked sjis: ".unpack("H10", $str_sjis)."<br>";
print "eq:".($str_euc eq $str_sjis)."<br>";

だと
euc モードで、どっちの「こんにちは」も正しく表示されるのは
なぜでしょうか?

No. 2438 # 68user 2002/01/23 (水) 20:05:45
>>2436 Bourbon
どの程度「使える」資料なのかは知りませんが、
    ハードウェア互換リスト (HCL)
        http://soldc.sun.com/support/drivers/hcl_ja/
というのがあります。

No. 2439 # 68user 2002/01/23 (水) 20:11:54
>>2437 ふくし
> euc モードで、どっちの「こんにちは」も正しく表示されるのは
> なぜでしょうか?
    http://x68000.startshop.co.jp/~68user/tmp/moji.cgi
を見ても「こんにちは」が正しく表示されますか?

もしそうなら、Netscape4 が自動変換しているのでしょう。Netscape4 は、
文字単位か行単位か知りませんが、ファイルの一部についても自動認識/
自動変換を行っています。

FreeBSD+Netscape4、FreeBSD+Mozilla nightly build で上記 URL を
見ると、必ず片方は化けています。

No. 2440 # Bourbon 2002/01/23 (水) 20:19:26
68userさん
HCLは知っていましたが、見落としている部分がありました。
じっくり読んでみます。ありがとうございます。

No. 2441 # ぶぶ 2002/01/23 (水) 20:21:38
たびたびお世話になります。

おかげさまで、この前使えるようになったPPMで、ImageMagickモジュ
ールをinstallして、使おうと思ったら、何にも反応なしで困っていま
す。いろいろサイトを見て回りましたが、類似問題は見あたらず・・・。

環境は、Perl5.6.1(build631) Windows98です。

この環境に、PPMで、install Image-Magick してImageMagickを入れ
ました。

C:\>ppm
PPM>install Image-Magick
です。

その結果、c:\perl\site\libにはimageディレクトリができていて、
その中にはちゃんとMagick.pmというのもあるようです。

それで、下のを実行してみたのです。

use Image::Magick;

$i = Image::Magick->new;
$i->Read('test.jpg');
$i2 = $i->Clone();

$i->Scale(width=>100, height=>100);
$i->Write('test2.jpg');

すると、Perlそのものは正常に終了する(エラーは出ない)のですが、
test2.jpgはできてないのです。


ちなみに下のようなのも実行してみました。

use Image::Magick;

$img = Image::Magick->new;
$img->Read('test.jpg');
($w,$h) = $img->Get('width','height');

print "Content-type: text/html\n\n";
print "<html><head><title>TEST</title></head>\n";
print "<body bgcolor=\"\#ffffff\">\n";
print "$w / $h\n";
print "<br></body></html>\n";
exit 0;

こちらも、$wも$hも空でした。

test.jpgは存在しているし、どうしてうまく行かないのか、まった
く見当もつかないので、これだけの情報では不足かもしれませんが、
何か分かる方おられましたら、ご指導ください。どうかよろしくお
願いします。

No. 2442 # ふくし [E-mail] 2002/01/23 (水) 20:27:36
>>2439 68user
さん、どうも。

たしかに両方化けずに見えています。
FreeBSD 版では片方化けるんですね。

なるほど、Windows 版 NC はファイルの一部も自動変換、、
しかもブラウザーが渡す URL の文字列は必ず sjis。
これがわかんなくてホボ一日ハマりました。
パラメタはあらかじめ変換しておくのを原則にすればよかったのですが、
表示を見て正しく EUC で入ってくるものと思い込んでいたのです。

No. 2443 # ふくし [E-mail] 2002/01/23 (水) 22:44:03
>>2441 ぶぶ
さん:

1本目のプログラムですけど動きましたよ、、;;;
test.jpg がなくてもちゃんと動きますね。
その場合はおっしゃるような症状になります。
ということで、test.jpg があるディレクトリが
カレント ディレクトリな状態で実行してないとか、、。
test.jpg を C:\test.jpg とかフルパスで指定するとどうなります?

#これ便利だなー^^

No. 2444 # ぶぶ 2002/01/23 (水) 23:34:16
ふくしさん、お返事ありがとうございます。

C:\〜\test.jpg のように、フルパス指定したら動きました。
あと、DOS窓では./test.jpgでもうまくいきました。

でも、CGIとしてAN-HTTPD(ver1.37c/PerlISを利用)を通して
動作させると、CGI(test.cgi)と同じディレクトリにtest.jpg
がある時に、フルパスならうまくいくのに./test.jpgでは、やっ
ぱりうまくいきませんでした。

で、いろいろやっていると、PerlIS.dllを使うとうまくいかず、
Perl.exeを使うとうまくいくことが分かりました。
PerlISの問題だったようです。

でも、とりあえず動作させることができたので、解決です。
ありがとうございました。

#ちなみに同じような処理(画像の縮小拡大)はGDでもできますが、
#jpeg画像を縮小したときの画質はGDよりImageMagickの方が、
#なめらかできれいでした。

No. 2445 # 68user 2002/01/23 (水) 23:40:09
>>2444 ぶぶ
解決したようですが、ふつーは
    $i = Image::Magick->new or die "$!";
    $i->Read('test.jpg') or die "$!";
    $i2 = $i->Clone() or die "$!";
などと、エラーチェックをするものです。

と書こうと思ったら、Read は存在しないファイルを開いても
0 を返さないから、die じゃあダメなんですね。
    $ret = $i->Read('a.gifs');
とかして、$ret を調べて、
    Warning 330: Unable to open file (a.gifs) [No such file or directory]
とかを解析しないといけないらしいです。Image::Magick、ダメすぎ。

>>2443 ふくし
> しかもブラウザーが渡す URL の文字列は必ず sjis。
    http: //host/dir/hoge.cgi?ほげ
とかですか?

No. 2446 # ふくし 2002/01/24 (木) 01:22:45
>>2445 68user
            さん:

>> しかもブラウザーが渡す URL の文字列は必ず sjis。
> http: //host/dir/hoge.cgi?ほげ
> とかですか?

http://host/dir/hoge.cgi?hoge=ほげ
とかです。
CGI には sjis で渡るのに、表示は正常に行なわれます。

No. 2447 # yuji 2002/01/24 (木) 19:12:18
どうも、ご無沙汰しております。yujiです。^^
お世話になっております。

現在、windows2000+apache+activeperlの環境において、
CGI(perl)からapacheの再起動等を行いたいのですが、
apacheのパスにスペースが入っているためか、
コマンドを実行できず、困っております。^^;

具体的には、
パスが、
d:\Program Files\Apache Group\Apache\Apache.exe
のような形です。
実行部分は、
$cmd="d:\\Program Files\\Apache Group\\Apache\\Apache.exe -w -n \"Apache\" -k restart";
system($cmd);
のような形です。
パスのスペース部分をアンダースコアに変更して試してみたりも
したのですが、うまくいかないようでして。^^;

それぞれのフォルダ名にスペースを含めないようにすれば、
解決できるのかもしれませんが、スペースがあった場合に
対応できないものか、と思いまして。

みなさんなら、どうされますか?
もしよかったら、アドバイスを、
どうぞよろしくお願いいたします。

No. 2448 # 68user 2002/01/24 (木) 19:54:35
>>2447 yuji
Windows で perl スクリプトを作ったことがないのでアレですが、
    $cmd="\"d:\\Program Files\\Apache Group\\Apache\\Apache.exe\" -w -n \"Apache\" -k restart";
はどうですか?

>>2448 68user
> http://host/dir/hoge.cgi?hoge=ほげ
まぁ、規格で定まっていない部分ですから仕方ないですね。
IE だと (設定次第ですが) UTF-8 で送ることもありますし。

No. 2449 # 68user 2002/01/24 (木) 19:59:20
>>2448 68user
初めて ActivePerl といふものでプログラムを組んでみました。
やはり "" で囲めばよろしいようで。

DOS 窓から
    C:\> d:\\Program Files\\Apache Group\\Apache\\Apache.exe
とするとダメだけど、
    C:\> "d:\\Program Files\\Apache Group\\Apache\\Apache.exe"
なら OK、というのと同じですね。

No. 2450 # ふくし [E-mail] 2002/01/24 (木) 20:39:18
>>2448 68user
            さん:

>> http://host/dir/hoge.cgi?hoge=ほげ
>まぁ、規格で定まっていない部分ですから仕方ないですね。
>IE だと (設定次第ですが) UTF-8 で送ることもありますし。

えーそうなんだ、、それは困るな。
やっぱり世間の検索エンジンみたいに
hoge=%A4%BD%A4%B2 とかすべきですね。
日本語キーにするなって話もありますが。

No. 2451 # yuji 2002/01/24 (木) 23:10:53
68userさん、アドバイスありがとうございます。^^
おかげさまで、無事コマンドを実行することができました。

DOS窓でもスペースがある場合、実行できなかったため、^^;
スペースを、区切りではなく文字列の一部と認識させるために、
"で括る方法、とても勉強になりました。^^

No. 2452 # 68user 2002/01/28 (月) 05:54:06
>>2451 yuji
Windows 2000 とかだと、エクスプローラーでフォルダをドラッグし、
コマンドプロンプトにドロップすれば、
    "c:\WINNT\program files\"
などと "" 付きでフルパスが展開されます。エクスプローラーで
ファイルのフルパスを簡単に取得する方法はないのかなぁ。

>>2450 ふくし
> hoge=%A4%BD%A4%B2 とかすべきですね。
そうですね。ただ、詳しくは知らないんですが、遷移先にどんな文字
コードを使っているかを伝えられるような送信方法もあったはずです。
RFC になってたかなぁ。


今日の大発見:
    cd - で一つ前にいたディレクトリに戻れる! (sh, csh, tcsh で確認)
    これは知らんかったなぁ。

No. 2453 # 宮村 2002/01/28 (月) 18:40:51
file.1 file.2 ... file.9を一括で
file-1 file-2 ... file-9に変換したいのですがどうすればよいでしょう?
稚拙な質問で申し訳ありません
使ってるのは tera term です。

No. 2454 # 2002/01/28 (月) 21:59:57
>>2453 宮村
TeraTermにそんな機能はないだろ。

No. 2455 # CZ 2002/01/28 (月) 23:25:59
No. 2453 # 宮村
ここなど参考にしてみては。
http://www.nurs.or.jp/~asada/FAQ/UNIX/section2.6.html

No. 2456 # 68user 2002/01/29 (火) 07:06:40
>>2454
そういう物言いをしたいなら、2ch へどうぞ。

No. 2457 # 宮村 2002/01/29 (火) 14:56:23
できました。教えてくれた方、ならびにカキコ有無にかかわらず少しでも考えてくれた人とてもありがとうございました。これで単位がもらえます。

No. 2458 # とっしー 2002/01/29 (火) 19:21:26
はじめまして、とっしーです。
知っている人がいたら、何かいいお知恵をお願いします。

CGI上でソケット通信をして、他のサーバからデータを取り込み
ブラウザ上にてデータ表示をしているのですが。
ソケット通信をするサーバが2個あり1番目のサーバタイムアウト後
2番目のサーバに対してソケット通信をしたいのですが、
sub aaa{
    $SIG{ALARM} = sub{exit 1;};
    alarm($timeover);

    $socket = IO::Socket::INET->new();
            〜
}
上記のようなタイマでタイムアウトを検出しても、このサブルーチンの
起動元までリターンしません。(T_T)
起動元までリターンするような、プログラム方法等があればお教えください。

No. 2459 # 68user 2002/01/29 (火) 21:02:34
>>2458 とっしー
うーん、まずは exit してプロセスが終了してるんだから、
どこにも戻りようがない、というところから始めましょうか。

で、どう書くのが正しいのかなぁ。

No. 2460 # かいと [E-mail] 2002/01/29 (火) 21:25:35
はじめまして。かいとです。
こちらのサイトにある「HTTPクライアントを作ろう(C言語版)」を利用させていただきました。
ありがとうございます。そこで、1つ質問なのです・・・・
connect()でタイムアウト時間を指定したいのですが、できるのでしょうか?
ちなみにOSはSolaris2.7、コンパイラはWorkshopのccを使ってます。
どうぞよろしくお願いします。

No. 2461 # 68user 2002/01/29 (火) 21:42:36
>>2460 かいと
ノンブロッキングソケットを使うと、connect を呼ぶとすぐに
制御が帰ってきます。僕はノンブロッキングソケットを使った
ことがないので、これをキーに検索してみて下さい。

No. 2462 # snow 2002/01/29 (火) 23:14:02
初めまして。snowと申します。
今、8ビットJISで作成されたファイルをSJISのファイルに変換しようと思っているのですが、中々上手く行きません。どなたか教えて下さい。お願いします。
因みに今までは、Pro*Cのプログラム上で、単語毎にjis8touj関数を使用していました。

No. 2463 # 68user 2002/01/30 (水) 00:29:20
>>2462 snow
jis8touj って何かと思ったら
    http://ecip01.cc.kurume-it.ac.jp:8888/ab2/coll.141.9/JFPDEV/@Ab2PageView/2444?
これですか?

Solaris only の、しかもあまり利用者が多そうでない
ライブラリの話なのですから、何がどううまくいかないか
書かないと回答はもらえないでしょう。

No. 2464 # Bourbon 2002/01/30 (水) 09:38:42
基本的なことで、ほんとにすいません。どなたか、solaris8のGUIで
Windowsのような[Print]、[Alt]+[Print]のようなハードコピーを
するやり方をご存知の方は教えてください。よろしく

No. 2465 # CZ 2002/01/30 (水) 12:52:07
>>2464 # Bourbon
まったく知らない領域のことなのですが、恥を忍んで。

「Solaris ハードコピー」で検索をかけた限りでは
http://www.advac.co.jp/download/gpr_dl.htmlのような
プリントサーバソフトウェアにはそういった機能が
付いていることが多いようです。

こんなのも見つかりましたが、参考になるでしょうか。
http://www.aitech.ac.jp/ie/~milabo/unixmanual/man0.html#19

No. 2466 # ふくし [E-mail] 2002/01/30 (水) 14:06:07
>>2464 Bourbon
            さん:

solaris じゃなくって Linux でしたけど、
やはりハードコピーが必要になって gimp というペイントソフトの
機能を使ったらできました。
solaris で gimp は走ったかなー?

No. 2467 # ふくし [E-mail] 2002/01/30 (水) 14:09:50
Perl の質問です。
わけあって、プログラムの終端に goto で飛んでいます。
(CGI なので、exit だと、mod_perl に移植したときに
    mod_perl ごと死んでしまうと聞いたので)

で、

goto FIN if(事情);
...
FIN:

sub サブルーチン {
...
}

と書くと、サブルーチン定義のところで syntax error になるんですが、

goto FIN if(事情);
...

sub サブルーチン {
...
}

FIN:

だと大丈夫です。なぜでしょうか〜?

No. 2468 # 68user 2002/01/30 (水) 21:17:14
>>2464 Bourbon
xwd とかじゃあダメですか? あるいは Solaris と Windows
両方に VNC を入れて、Windows 側から Solaris の画面を
キャプチャ、とか。Solaris 標準の CDE でキャプチャする
方法は知りません。

>>2467 ふくし
perl の構文解析のバグなんでしょうね。

    FIN:
    ;
    sub サブルーチン {

なら OK のようです。

No. 2469 # へにか [URL] 2002/01/30 (水) 23:23:29
ちょっと脱線A^^;
>>2466 ふくし
会社のSolaris(多分8)では、gimpが立ち上がりました(親切な方がコンパイルしてくれたっぽい)。
とはいえ、
>>2467 ふくし
CDEは嫌いなので使ってないので、CDEの標準な方法は知りません・・・

No. 2470 # へにか [URL] 2002/01/30 (水) 23:25:44
>>2469 の、
>>2467 ふくし
は、
>>2468 68user
の間違いです。汚してしまって、すみません。

No. 2471 # ふくし 2002/01/31 (木) 02:07:24
>>2468 68user
                    さん:
お、バグですか!^^
最新バージョンで試してレポートしちゃる!^^

>>2469 へにか
                    さん:
gimp 走りますか! 最近 solaris が増えてきたので、
役に立つかも。Alt+ScreenShot 系のキャプチャーは
gimp に限ります。そぅとぅ〜便利です。
そのまま流れるように編集できるし。
最近なんか solaris の仕事多いんだけど気のせいかな?
ココの問い合わせも増えてますよね。

No. 2472 # 2002/02/02 (土) 21:40:44
>>2467 ふくし
http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl1.html
ここの・・・


8. exit()は使用できない

exit()は使用できません。代わりに Apache::exit()関数が用意されています。 以下の判定でexit関数を他の関数にオーバライドできます。

use subs qw(exit);

*exit = $ENV{MOD_PERL} ? \&Apache::exit : sub { CORE::exit };

No. 2473 # ふくし 2002/02/04 (月) 05:47:44
>>2472
                さん:
ありがとうございます! それは使えそうですね。
use Apache するのかな。(あ、調べますしらべます ^^)

No. 2474 # fairytale 2002/02/04 (月) 11:52:21
いつもお世話になります。
solarisでマシンにSICIカードを取り付けテープデバイスに装着させる場合、マウントするにはどのようにすればよいでしょう?
簡単でよいので教えてください。

No. 2475 # 68user 2002/02/04 (月) 12:38:10
>>2474 fairytale
テープって mount できるんでしたっけ。

僕はいつも mount せずに
    % tar cf /dev/rmt/0 .
とかやってますが。

No. 2476 # tarbo 2002/02/04 (月) 19:00:04
tar cvf - . | ...と書いてある‘-‘の意味を教えて下さい。

No. 2477 # 68user 2002/02/04 (月) 19:08:09
>>2476 tarbo
標準入力 or 標準出力です。

大抵、man tar の -f オプションのところに書いてあります。

No. 2478 # まい 2002/02/06 (水) 19:43:27
始めまして。ツバサと申します。
さっそくですが、質問させて下さい。
こちらのネットワークプログラミングの基礎知識を元にFTP送信処理をC言語で作成しています。
あるマシンへの送信が上手く行かないのです。
PORTコマンドのレスを読み込む時にread関数でエラーになってしまいます。
レスが返って来ないという事があるのでしょうか?
ユーザーの認証などでは問題なくレスを取得できているようなのです。
それも、そのエラーが出るのはある特定のマシンへの時だけです。
何かお分かりになる事がありましたら、お願いします。
あいまいな質問で申し訳ありません。

No. 2479 # ツバサ 2002/02/06 (水) 19:46:28
すみません。
No.2478の書き込み時に遊び用のHNで送信してしまいました。
なので、内容で名乗っている名前と表題に出ている名前とが
違っています。
こんな理由なので、ご容赦下さい。

No. 2480 # ui 2002/02/07 (木) 11:51:20
質問があります。
solaris2.6で例えば自マシンの/dev以下に、他マシンの/etc以下を
mountする時の、書式を教えてもらえないでしょうか?すみません

No. 2481 # 68user 2002/02/07 (木) 12:12:02
>>2478 まい
> PORTコマンドのレスを読み込む時にread関数でエラーに
> なってしまいます。
「エラー」って具体的に何が起こるんですか?

>>2480 ui
> solaris2.6で例えば自マシンの/dev以下に、他マシンの/etc以下を
> mountする時の、書式を教えてもらえないでしょうか?すみません
NFS を使いたいわけですか? ならばこちらなど。
    http://www.google.com/search?hl=ja&q=mount+solaris2.6+nfs&lr=lang_ja

でも、/dev に /etc を mount するのは多分うまくいかないと
思いますよ。デバイスにアクセスできなくなるし。

No. 2482 # ui 2002/02/07 (木) 13:10:05
68userさん
ありがとうございます。
勉強します。

No. 2483 # まい 2002/02/08 (金) 13:39:50
68userさん、ありがとうございます。
read関数の戻り値が-1だったのですが、errnoを刈り取っていなかったので、
実ははっきりとしたエラー原因がわかっていないのです。
今、そのエラーが出るマシンでのテストができない状況にあるので、確認する
事もできずにいます。
何か情報がつかめましたら、また質問させていただきたいと思っていますので、
よろしくお願いします。

No. 2484 # 68user 2002/02/09 (土) 03:53:02
>>2483 まい
> read関数の戻り値が-1だったのですが、errnoを刈り取って
> いなかったので、実ははっきりとしたエラー原因がわかって
> いないのです。
そうですね。errno の値に加えて、再現性があるかどうかなども
はっきりしないので、もうちょっと調べてみて下さい。

No. 2485 # yuusuke 2002/02/11 (月) 09:06:06
いつも、お世話になっています。質問があるんですが・・・
「Solaris2.6」の環境で動画ファイル(.aviなど)をファイルに落とす
方法がありますか?
「spilt」をやってみても、膨大なファイルの量になってしまいます。
何か、良い方法があったら、教えてください。

No. 2486 # usr 2002/02/12 (火) 16:14:54
(質問)
テープ装置がない端末でテープ装置がある端末のテープ装置にマウントするにはどうしたらよいでしょうか?
どなたか教えてください、よろしくお願いします。
なお、端末同士の、mountは一応出来ます。

No. 2487 # ふくし [E-mail] 2002/02/12 (火) 16:39:06
いつもお世話になっています。質問です。
perlbug コマンドを使って Perl エンジンのバグを起票したのですが、

    Connected to ???.???.???.??? but sender was rejected.
    Remote host said: ???.???.???.??? Your site is blacklisted as a spam haven.

と言われて生成したメールが受け取られませんでした。

お前が使っているサーバーは spam の踏み台になるサイトとして
ブラックリストされているので、メールを受信しないということのようですが、
    http://www.ordb.org
で調べてもどこにも使っているサーバーを発見できませんでした。

また、サーバーの管理者にも連絡を取りましたが(Microsoft Exchange です)
そのようなクレームは見当がつかないと主張していました。

perl.com がどのような論理で上の拒否を行っているか知りたい、
できれば担当者にメールして聞きたいのですが、
どうすればいいかお分かりでしたらご教示ください。

No. 2488 # 名無し 2002/02/12 (火) 17:34:11
いくら現在は大丈夫だと主張していても、過去にそんなことが
あったのかもしれません。。

管理人に、不正中継をしないことをよーく確認してから、
削除要求を出すように言うしか方法はないと思うんだな。

どこかの不正中継リストに登録されちゃっているから拒否されるんだから、
perlbugやらのMLを探したら、どこを見ているかがわかるのかな・・

No. 2489 # 68user 2002/02/12 (火) 17:37:37
>>2485 yuusuke
> 動画ファイル(.aviなど)をファイルに落とす方法がありますか?
「動画ファイルをファイルに落とす」ってどういう意味ですか?

「動画ファイル」というからには既にファイルになっていると思うのですが、
split が出てくるところを見ると「フロッピーディスクに落とす方法」を
知りたいのですか?


>>2486 usr
mount する必要はなくて、
    http://www.wakhok.ac.jp/~maruyama/Super/section2.10.3.html
じゃあないでしょうか。


>>2487 ふくし
http://dbforums.com/archive/95/2001/08/1/116085
によると、perlbug@perl.org に手動で送ればよいのではないでしょうか。

http://archive.develooper.com/perl5-porters@perl.org/msg06972.html
によると、
    http://www.mail-abuse.org/
じゃないでしょうか。

# どちらもちゃんと英文を読んでいないので、違ったら失礼。

No. 2490 # CZ 2002/02/12 (火) 23:56:50
解答ではないですが。

>>2485 yuusukeさんの質問は、恐らくは動画から静止画を
抜き出したいということではないでしょうか。

No. 2491 # yuusuke 2002/02/13 (水) 11:26:55
>>2489すみません。その通りです。フロッピーに落とす方法を教えてください。
いろいろとご迷惑をお掛けしてすみません。(CZさんを含み)

No. 2492 # 68user 2002/02/13 (水) 22:53:32
>>2491 yuusuke
> フロッピーに落とす方法を教えてください。
ならば、split すればいいと思います。

「膨大なファイルの量」になってしまうのは、元ファイルが
大きければそれは仕方がないでしょう? 何に困っているのか
まだわからないです。

Prev< No. 2404〜2492> Next  [最新発言に戻る] [過去ログ一覧]