>>4846 yuki ダメですかねぇ? あっているような気がしますが。 $_POST['adrs']・$check のデータを明示いただければ何かしら回答できるかもしれません。 >>4845 2323 よく理解していないので確認させていただきたいのですが、 「あくまで 5.1-STABLE を追っかけているに過ぎない」 を 「あくまで '5.1 security fix branch' (RELENG_5_1) を追っかけているに過ぎない」 とすれば正確な表現と言えるでしょうか。 |
はじめまして。 突然ですが、ご教授ください。 私は今、大学4年生で卒業研究をしているのですが、ネットワークプログラムを作る必要が出てきてしまいました。 ですが、私はプログラミングは全くの初心者で、どの言語を使えば良いのか、何から始めればいいのかもよく分かりません。 どなたかアドバイスや、参考となりそうなプログラムやサイトを教えて頂けませんか? OSはKNOPPIXで、アドホックモード(OLSR)での動画の転送をしたいです。 転送さえできればいいとのことなので、プログラム自体は簡単なものでいいようです。 場違いな質問かもしれませんがよろしくお願いいたします。 |
>>4848 yino 残念ながら聞いた事もないOSですので、お力になれません。 ただ、この様な場合、ひたすら検索サイトでキーワードを入れて検索してみてはいかがですか? 就職しても、この辺りは変わりません。 まずは、片っ端から検索して自分の目的としている情報が載っているサイトを探してみましょう。 |
>>4849 バンガード OLSR はプロトコルのようです。 >>4848 yino わたしなら 1. まわりに言語の有識者がいるか 2. その言語向けのネットワークプログラミング関連の書籍が出版されているか 3. ネットワークプログラミング向きか 4. プログラミング初心者が扱いやすい言語か という観点で考えます。 1 は、まわりを見渡してください (Java が多いのではないかと想像しますが)。 これが最重要だと思います。 2 は、Java が一番、次点が Perl でしょうか。PHP・Ruby はこの点は弱い。 3 は、本質的にはどの言語でも同じでしょうが、PHP などは無駄にハマりやすそうな 気がします。 4 は、まぁ Java ではないかと。 個人的には、Java がイチオシ、次点が Perl です (自分が書くなら Perl か Ruby)。 |
>>4850 バンガードさん、 >>4849 68userさん ありがとうございました。 とりあえずは周りの人から話を聞いてみたいと思います。 あとはJavaの本を読んでいきたいと思います。 また壁にあたったときはここに来ると思いますので、よろしくお願いします。 |
はじめまして。 いきなりですが教えてほしいことがあります。 大学の課題でサーバの存在するマシンのカレントディレクトリにおけるファ イル一覧を表示する。 <LIST>と打ち込むとファイルの一覧を表示する <GET ファイル名>打ち込むと、ファイルの内容を表示する <PUT ファイル名>でファイルをアップロードする。 <QUIT>と打ち込むとサービス終了。と言うプログラムを作っていたのですが うまく実行できません。どこが間違っているか教えていただけませんか。 #include <netdb.h> #include <stdio.h> #include <fcntl.h> #define BUFMAX 45 #define PORT_NO 10092 #define Err(x) {fprintf(stderr,"server- ");perror(x); exit(0);} static char rmsg[10], smsg[BUFMAX]; static int sofd, nsofd; static struct sockaddr_in sv_addr, cl_addr; static struct hostent *shost; static char shostname[100]; int msgpro(void); int main(int argc, char **argv) { int cadlen; DIR *dirHandle; struct dirent *dirEntry; dirHandle=opendir("."); if(dirHandle){ while(0!=(dirEntry=readdir(dirHandle))){ puts(dirEntry->d_name); } closedir(dirHandle); } sofd = socket(AF_INET, SOCK_STREAM, 0); if(sofd < 0) Err("socket"); if(gethostname(shostname, sizeof(shostname)) < 0) Err("gethostname"); shost = gethostbyname(shostname); if(shost == NULL) Err("gethostbyname"); bzero((char *)&sv_addr, sizeof(sv_addr)); sv_addr.sin_family = AF_INET; sv_addr.sin_port = htons(PORT_NO); memcpy((char *)&sv_addr.sin_addr, (char *)shost -> h_addr, shost -> h_length); if (bind(sofd,(struct sockaddr *)&sv_addr, sizeof(sv_addr)) < 0) Err("bind"); if(listen(sofd, 1) == -1) Err("listen"); while(1){ cadlen = sizeof(cl_addr); if((nsofd = accept(sofd, (struct sockaddr *)&cl_addr, &cadlen)) <0) Err("accept"); if(fork() == 0) if(msgpro()==-1){ close(nsofd); printf("END SERVER\n"); if(shutdown(nsofd, 2) < 0) Err("shutdown"); close(nsofd); exit(1); } close(nsofd); } } int msgpro(void) { int cc, cadlen,nbyte; FILE *fp; DIR *dp; struct dirent *p; char *tmp[100]; int i,f; i=0; close(sofd); if(recv(nsofd, rmsg, 10, 0) < 0){ perror("recv");} printf("%s\n",rmsg); if(strcmp(rmsg,"QUIT:")==0){ return -1;} if(strcmp(rmsg,"LIST:")==0){ printf("LSIT:\n"); dp=opendir("./"); while((p=readdir(dp))!=NULL){ tmp[i]=p->d_name; strcat(tmp[i],"\n"); i++; } closedir(dp); tmp[i]="."; for(f=2;f<=i;f++){ nbyte = strlen(tmp[f]); if(send(nsofd, tmp[f], nbyte, 0) < 0) perror("send"); } }else{ int i; char filename[10]; if(strncmp(rmsg,"GET:",4)==0){ printf("%s\n",rmsg); for(i=4;i<=strlen(rmsg);i++){ filename[i-4]=rmsg[i]; } fp = fopen(filename,"r"); while(fgets(smsg, BUFMAX, fp) != NULL){ nbyte = strlen(smsg); if(send(nsofd, smsg, nbyte, 0) < 0) perror("send"); } fclose(fp); }else{ if(strcmp(rmsg,"QUIT:")==0){ printf("shutdown\n"); return -1; }else{ printf("Command not Fountd.\n"); strcpy(smsg,"Command not Found.\n."); nbyte = strlen(smsg); if(send(nsofd, smsg, nbyte, 0) < 0) perror("send"); } } } if(shutdown(nsofd, 2) < 0) Err("shutdown"); close(nsofd); exit(0); } |
>>4852 aki > うまく実行できません。 何をどうしたらどうなるのか明示してください。 |
>>68userさん すみません。 実行した後にLIST、GET ファイル名、PUT ファイル名、QUITなど打ち込んでもなにも おきないんです。 |
>>4854 aki 提示いただいたプログラムはサーバ側のプログラムであって、 1. サーバを実行する 2. 別途 telnet コマンドなどを用いてクライアント側からサーバにアクセス (telnet localhost 10092 など) 3. そこで LIST などをタイプする というものですが、それは理解した上での質問でしょうか? もし理解していないのであれば、まずはまわりの人に聞くとか、資料を もっと読むなどして概念を理解してからでないと効率が悪いと思います。 プログラム自体については、telnet 上から LIST:(Ctrl-D) などと変な送信の仕方をする必要がありましたが、一応動くようです。 |
>>4855 68userさん ありがとうございます。 よく理解できてなかったみたいなのでもう少し友達に聞いてみます |
今度大学の課題でマルチスレッドサーバを作成することになったので、 http://x68000.q-e-d.net/~68user/net/echo-4.html を参考にマルチスレッドサーバについて勉強している者です。 そこで、素朴に疑問があるのですが、 このページに書いてある内容は、本当にマルチスレッドなのでしょうか? マルチスレッドというと処理が平行して行われるという認識なのですが、 この実装では多数のソケットからデータが到着したソケットを順次選択して 処理をする、というように見られるのですが・・・。 これはマルチスレッドサーバと呼んでもよろしいのでしょうか? |
HTTP1.1でKeepAliveでHTTPSサーバに接続した場合に、サーバからの レスポンスの長さが短い(500バイト以下程度)場合、クライアントが タイムアウトとなりサーバからのレスポンスが読めません。 サーバ・クライアント共にFEDORAを使用しており、クライアントは TCP/IPのソケット、OpemSslを使って作成しています。 対処方法は何かありますでしょうか? |
>>4857 aya どうなんでしょうか。以前に同様の指摘があった場合は >>3223 int >>3224 68user >>3226 Netboy >>3227 68user というところで止まっています。その後、わたしの知識は増えていないため、 まだ疑問のままです。 >>4858 masa ソースを提示願います。 なお、本日より数日〜数週間の間、返事がしにくい状況になりそうなので、 ご了承ください。 |
>>4859 68user さん 解決しました。 読み込もうとしているバッファサイズが大きすぎたようです。 |
remshについて知っている方はご教授願います。 環境:HP-UX 11 今シェルを作成しているのですが、あるAPサーバのシェルの中でremshをして他のDBサーバでミドルのコマンド(HiRDBのスケジューラ) の結果とそのリターン値の標準出力をファイルに吐き出すと言う処理をしています。 $USER_Aでシェルを実行(HOST=DBサーバ) # remsh $HOST -l $USER_B -n ". .profile 2>&- ; \$DIR/bin/HiRDBのコマンド ; echo \$? " > $FILE この場合開発環境ではうまく標準出力の結果をファイルに吐き出せるのですが、 顧客本番環境ではうまくいきません。 結果を見る限り、.profileが読み込めてない、またはミドルのコマンドが読み込めていない、と言った感じです。 ちなみに、DBサーバ側の$USER_Bの.rhostsには[APサーバ $USER_A]が記載されています。 この際remshの後のコマンドが実行されていない原因として疑わしき点を教えていただきたいです。 たとえば.profileに問題ありなど…。 お願いいたします。 |
>>4861 toshi7 思いつくのは - remsh 後のカレントディレクトリが異なる - ログイン後の環境変数が異なる - 出力先のパーミッションが異なる - HiRDB のコマンドの場所が異なる - HiRDB のコマンドがエラーとなっている → HiRDB を実行するのではなく、適当な自作プログラムを実行し、 起動されているかどうかログ等に記録する - 標準エラー出力を閉じているので、HiRDB の標準エラー出力への 出力が出力されていない (もしくは write(2) でエラーになるため 途中でこけている) くらいでしょうか。 |
>>4862 68user 68userさん ありがとうございます。 調査を進めているところですが、HiRDBのコマンドでエラーになっている可能性が大です。 また、今週or来週中にもremshのテストができる予定ですので、 # remsh $HOST -l $USER_B -n ". .profile 2>&- ; \$DIR/bin/HiRDBのコマンド ; echo \$? " > $FILE 2>&1 で標準エラーを出力してみます。 ちなみにサーバ側の"last | more"の結果を見る限りremsh自体は届いているようでした。 また、テストの結果不明点がありましたら、質問させていただいてもよろしいでしょうか? 宜しくお願いします。 |
少しずつですが UNIXの部屋 http://x68000.q-e-d.net/~68user/unix/ の各コンテンツを手始めに、Web 全体のデザインを変更していきます。 もし不具合があれば教えていただければ幸いです。 |
68userさま。いつも、初心者に有り難いサンプルをたくさんご提供いただき ありがとうございます。 HttpClientHttpURLConnectionを走らせたところ、ブラウザで見ると日本語の部分 が、文字化けしています。yahooのページを始め、いくつか試したのですが同じ 状態です。化けないようにするにはどうしたら良いのでしょうか? お忙しい中恐縮ですが、どなたかご教示下さい。 |
>>4867 Ponta http://x68000.q-e-d.net/~68user/net/java-http-url-connection-1.html ですよね? 「ブラウザで見ると」の意味がわかりません。実行例にあるとおり、 コマンドラインからの実行を前提としています。 |
初めて質問させていただきます。 12月から本格的にUNIXの勉強を始めて、現在はHP-UXの業務に就いております。 参考資料を購入したり、netで調べるもどうしても見つからない。。 質問内容: ファイルサイズをbyteで表示させるコマンドが知りたいです。 データ移行作業をしているので、移行前マシンと移行後のマシンでの 容量チェックをしなくてはいけなくて。。。 大変初歩的質問で申し訳ないのですが、ご教授下さい。 ※HP-UX 11iを使用しております。 |
>>4869 しも よくわかりませんが ls(1) の結果は使えないんでしたっけ? あとは cksum・wc・find とか。それ以外なら awk・perl あたりでしょうか。 cksum http://docs.hp.com/ja/B2355-60129/cksum.1.html wc http://docs.hp.com/ja/B2355-60129/wc.1.html find . -ls http://docs.hp.com/ja/B2355-60129/find.1.html |
>>4870 68user ありがとうございます。 ファイル個々のサイズはcksumやwcで確かに確認できました。 ディレクトリのサイズはbyte表示させる事は不可能なのでしょうか? duを使用しましたが、KBだったのとブロック単位でした。 |
>>4871 しも HP-UX に限らず、du ではブロックカウント機能しかないと思います。 http://sonic64.com/2004-05-26.html のように自前でカウントするしかないでしょう。 |
cygwinでbash not find :bash.exeというエラーがでんだけどどうすれば いいか教えろ!!!!!どーせ暇だろ!ニート諸君、俺様の変わりに調べろ! パスの設定はしてある。 俺も暇じゃないから5分やるですぐ調べて返信しろ。貴様らは蛆虫だ。 ./bashrc等も完璧 しかーーーーし動かん。楽勝だて。 |
お世話になります。 質問のときだけ現れてスミマセン。 Perl で、 filename -> title aaa.html -> aaaについて bbb.html -> bbbについて ccc.html -> cccについて みたいなタブ区切りのテキストを読んで処理するとき、カンタンには while (<>) { ($filename, $title) = <>; } のようにすると思いますが、1行目に見出しが入っていて、 これを捨てたいと思います。 今は、 $trash = <>; while (<>) { ($filename, $title) = <>; } のようにしていますが、 $trash が1回しか使われていませんが書き間違いではありませんか、 という警告が出ます。 警告だから無視すればいいようなものですが、 もっとスマートな書き方はあるでしょうか。 |
>>4874 ふくし - <>; - my $trash = <>; - (undef)=<>; のいずれかでどうでしょうか。Perl5.8.8 では問題ありませんでした。 |
>>4875 68user さん、ありがとうございます。 いずれも 5.10.0 でもうまくいきました。 (undef) = <>; というのは自分で思いついていたんですが、 リストコンテクストで評価されて、 全部の行が代入されたのち2行目以降は捨てられる (1行目も undef だから捨てられる) ような気がしていました。 ありがとうございます。 |
>>4876 ふくし ああそうですね。書くなら (undef)=scalar(<IN>); でしょうか。しかし仕事でこのコード見たらイラッとしますねぇ。 |
>>4873 大臣 ご期待に沿えず残念ですが、たぶん多忙で善良なプロの皆さんとかからの 回答になると思います。 どのくらい完璧か晒したら進言あるかもですよ。 |
そういえば(どういえばだ)以前(数年前)Perl で goto FIN; sub foo {} FIN: だとエラーになるけど goto FIN; FIN: sub foo {} または goto FIN; sub foo {} FIN: ; だとダメ、という件があったんだけど、急に思い立って perlbug してみました。 2時間後に返事が来て(すげえな)perlsyn に書いてあるけど それはバグではない、ラベルの後には1個以上の文がなければならないと いうことです。FAQらしいですね。 |
>>4872 68user 返信が遅くなりました。 68userさんの仰るように、自分でツールを作成する必要がある事を理解しました。 awkを使って作成しようと思います。 初めて作るので、時間がかかりそうですが結果はまた報告にきます。 ありがとうございました。 |
>>4883 しも さん、 どっちみち初心者だったら awk より Perl をおすすめします。 汎用性があるし可読性も高くできると思います。 ちょっと書いてみるとこんな感じでしょうか。 ★さしでがましければすみません。ここで読むのやめてください ^^ ★ ★ #! /bin/perl -w # dsize -- カレントディレクトリ以下のファイルサイズを集計 use File::Find; $total = 0; find(\&fileProc, '.'); print "Total\t$size\n"; sub fileProc { return unless -f $_; $size = -s $_; print "$File::Find::name\t$size\n"; $total += $size; } |
初歩的なことなんですが教えてください。 tar.gz な書庫にファイルを追加したい場合、 いちいちgunzipしないといけないんでしょうか? なにかスマートな方法はあるんでしょうか? |
はじめまして、つのりん と呼んでください。 早速ですがx68k専用マウスが故障しました。 症状はとしては、カーソルは全く異常なく動作しますが、クリックが左右ともできなくなりました。原因はボタン下のマイクロスイッチの故障ではないかと思われます。 なにか対策法はありませんか? よろしくお願いします。 |
はじめまして。 http://x68000.q-e-d.net/~68user/unix/pickup?find findの説明のところで、 -atime 4 4日前にアクセスされたファイル -ctime 4 ちょうど4日前にファイルステータスが変更されたファイル -mtime 4 ちょうど3日前に修正されたファイル と、mtimeだけ3日前となっていますが、これは間違いでしょうか? |
findで、検索する文字が複数出てくる場合の 記述について教えてください。 あるディレクトリに、以下の様な「YYYYmmdd」形式の ディレクトリが存在した場合ですが、名前がすべて、 「0〜9」の数字であるディレクトリのみを表示したい のですが、どのように書けばよいのでしょうか。 find . -name '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' -type d で表示されるのですが、 [0-9]を8回書く以外に、違った書き方はないでしょうか。 find . -name '[0-9]*[0-9]' -type d find . -name '[0-9]......[0-9]' -type d find . -name '[0-9]*......[0-9]' -type d find . -name '[0-9]......*[0-9]' -type d とかしてみたのですが。 /tmp配下に、 20080301 20080302 20080303 20080303.bk a0080304 2008030a 200a0306 200080307 |
>>4885 maya > tar.gz な書庫にファイルを追加したい場合、いちいちgunzipしないといけないんでしょうか? r で追加できますが、gzip してある場合はできないようですので、gunzip が必要と 思われます (BSD tar と GNU tar で確認)。 >>4886 つのりん ヤフオクによく出品されているように見えますので、チェックしてみてはどうでしょうか 今は「キーボード & マウス [未使用]」が出てますね。 >>4887 mm > と、mtimeだけ3日前となっていますが、これは間違いでしょうか? ありがとうございます。誤りでしたので修正いたしました。 >>4888 べた Perl の正規表現 (PCRE) であれば [0-9]{8} もしくは \d{8} ですが、POSIX における 基本正規表現や拡張正規表現では上記のような表現はできませんので、find にこだわる のであれば 8回書くしかないです。 あるいは、 ・File::Find を使った perl のワンライナーでがんばる ・シェル変数を使う csh・tcsh の場合: % set x='[0-9]' % find . -name "$x$x$x$x$x$x$x$x" sh・bash の場合: % x='[0-9]' % find . -name "$x$x$x$x$x$x$x$x" など。 |
>>4889 68user ありがとうございます。 |
perlの使い方なのですが、 日付と時間を表示する簡単なものを作りました。 実行したら動いたのですが、ところが、下記のような メッセージが出ました。 ------------------------------------------------------------ perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "ja_JP.PCK" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). ------------------------------------------------------------ このメッセージを表示させないようにするには、どうしたらよいか 教えてください。 環境は、Solari8 以下、perlのシェルスクリプト ------------------------------------------------------------ #!/usr/local/bin/perl # ($day, $mon, $year) = (localtime(time))[3..5]; printf("Today : %04d/%02d/%02d\n",$year+1900,$mon +1,$day); ($sec, $min, $hour) = (localtime(time))[0..2]; printf("Time : %02d:%02d:%02d\n",$hour,$min,$sec); ------------------------------------------------------------ |
>>4889 68user なるほど。ここらへんはzipやrarなどと比べると不便ですね。 ありがとうございました。 |
>>4891 べた 「perl: warning: Setting locale failed」で検索すれば出てきますが、 環境変数 PERL_BADLANG を設定することで回避可能です。詳細は検索願います。 |
>4889 ありがとうございます。ヤフーのオークション で見てみます。 |
>>4893 68user ありがとうございます。 perlのスクリプトを実行時のみ有効にしたいのです。 perlのスクリプト内で記述する場合はどのように 定義すればよいのですか。 |
>>4895 べた perl コンパイルの際の Configure 時に設定する方法があります。 それが無理なら #!/bin/sh PERL_BADLANG=0 /foo/bar/baz.pl と wrapper を作るか、env コマンドで #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl とする手もあります。 |
>>4896 68user ありがとうございます。 #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl # とperlのスクリプト内に記述して、実行したのですが、 処理がとまったというか、何も応答が返ってきません。 |