|
ありがとうございます。 運良くFinishedメッセージは解決できました。 その次のAppricationDataの暗号化で質問があるのですが、 SSLCompressedが良く分からないです。 もし、ご存知なら、教えていただけないでしょうか。 お願いします。お願いします。 |
|
やっぱり無理ですか。。。。 代案までありがとうございました。 |
|
tarコマンドで、コマンドの実行ディレクトリからサブディレクトリも含めて、 ワイルドカードで指定したファイル、例えば、「*.txt」の様に指定して、 すべてのファイルを1つのアーカイブにまとめたいのですが、可能なので しょうか。 ディレクトリも含めたかたちにしたいのですが。 tar -cvf aaa.tar *.txt だと、直下のファイルのみ tar -cvf aaa.tar *.* だと、すべてのファイル |
|
>>4435 hagu いくつか方法はあると思いますが、 $ find . -name "*.txt" | xargs tar cvf outfile.tar 等とすればできます。 |
|
>> 4436 ありがとうございます。 試してみます。 |
|
>>4436 zsh Solaris の xargs (だったような気がしますが) は、LINE_MAX の長さがかなり 短くて、たしか 10KB 程度しかなかったような気がします。この使い方だと 複数回 tar コマンドが実行された場合、最後の方しかアーカイブに含まれない ので注意が必要です。 |
|
>>4408 68user 亀レスすいません。 DNS のプログラミングのアドバイスをしていただいたものです。 出張先の住まいがレオパレスでネット環境があると聞いていたので、 すぐに閲覧できると思いましたが、いろいろ問題があり今までかかりました。 今後は普通に対応できると思います。 よろしくお願いします。 |
|
>>4438 68user ご指摘ありがとうございます。 確かに複数回実行された場合の考慮が漏れていました。 ちなみに、Solaris の LINE_MAX の値は 2KB のようです。 |
|
>>4438 68user >>4440 zsh 試して見ました。 ご指摘の通りでした。 標準出力には、すべて出てきましたが、 最後の方しかアーカイブに含まれていませんでした。 どう対応すればよいのですか。 |
|
>>4441 hagu カナリ遅いですが. cat /dev/null>outfile.tar && find . -name "*.txt" | while read F in; do tar rvf outfile.tar "$F"; done |
|
サーバーアドレスの見方はどうすれば??教えてください! |
|
>>4441 hagu 試してませんが、 $ find . -name "*.txt" | xargs tar rvf outfile.tar でいけると思います。 (tar は r を指定すると追記になります。) |
|
>>4439 DNS勉強中 宣言した「今月中」もあと残すところ 6日。一度言ったことは守れよ、と 自分にプレッシャーをかける毎日です。 >>4441 hagu その他。 - tar cf outfile.tar `find . -name "*.txt"` (長すぎると Argument list too long になるが、エラーかどうかがはっきり わかるので使えなくもない) - tar の、ファイル名一覧をファイルから取得するオプションを使う。 >>4443 不明5号 質問の意味がわかりません。 |
|
>>4445 68user >>4444 zsh ありがとうございます。 試してみます。 >tar の、ファイル名一覧をファイルから取得するオプションを使う。 探して見たのですが、使い方がわかりませんでした。 使い方教えてください。 |
|
>>4445 68user >>4444 zsh ゴミすみません。 名前のところに”お”が入ったままで書いてしまった。 ありがとうございます。 試してみます。 >tar の、ファイル名一覧をファイルから取得するオプションを使う。 探して見たのですが、使い方がわかりませんでした。 使い方教えてください。 |
|
>>4447 hagu http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse にあるように、 OS 名を明らかにすれば期待する回答が返ってくる可能性が高まると思われます。 |
|
>>4448 68user すみません。 UNIXで、Solaris8 です。 |
|
>>4449 hagu man tar で出てきますが・・・ http://docs.sun.com/app/docs/doc/816-3518/6m9ptvr58?l=ja&a=view |
|
>>4449 hagu 具体的には % find . -name "*.txt" > filelist.txt % tar cf outfile.tar -I filelist.txt てな感じで。手元に Solaris がないので動くかどうかはわかりません。 |
|
>>4404 DNS勉強中 > resolver-1.pl 互換を目指した Linux 版 > http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1160.zip 今月中にと宣言したのでレビューをしようとしたのですが、上記ファイルが not found になっていて見ることができませんでした。 自宅のマシンには以前ダウンロードしたファイルがあるかもしれませんが、 今は出先なので見ることができません。もたもたしていてすみません。 とりあえず、1関数 1ソースはやめた方がよいとわたしは考えます。普通は プログラム全体 > モジュール > 関数 > ブロック という階層構造があり、例えば変数については - グローバル変数にする - ファイル内で static としてそのソース内 (モジュール) からのみ参照できるようにする - 関数内のローカル変数にする などの選択肢がありますが、1関数 1ソースだと、ここで言うモジュールという 選択肢がなくなってしまいます。 あとは Makefile を書くのがダルい、というデメリットもありますね。 |
|
>>4452 68user すいません。 アップロードしなおしました。 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1374.zip ただこれは1関数1ソースバージョンです。 今出張先でこのソースバージョンしか持っていないです。 それと1関数1ソースのデメリット分かりました。 特にMakefileは書いてて同じ事を感じてました。 |
|
一応1ソースバージョンもアップロードしました。 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1375.zip ただこれは学校に提出したバージョンのため、>>4453のソースの1つ前のバージョンのソースとなります。 |
|
>>4453 DNS勉強中 > http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1374.zip そろそろケチをつけるところもあまりなくて、重箱の隅的ではありますがいくつか。 > char *tc_search(int tc){ > static char tc_result[20]; > ... > return tc_result; > } こういうふうにしてしまうと char *p = tc_search(tc_1); char *q = tc_search(tc_2); という使い方ができなくなります (p が指す内容が上書きされてしまうため)。 スレッドセーフでなくなるのと、利用者のレベルが低ければ余計なバグを生む 危険性があります。 UNIX のライブラリ関数でも、最初は localtime・ctime・strtok・gethostbyname などの 非スレッドセーフ版しかありませんでしたが、localtime_r・ctime_r・strtok_r・ gethostbyname_r などのスレッドセーフ版を用意する羽目になってしまいました。 承知の上でそうしておられるならば問題ないと思います。 > /* フラグ一覧を出力 */ > qr = (DNS_response.int_data[DNS_response.pos] & 0x80) >> 7; > printf(" QR: (Query/Response): %s\n", qr_search(qr)); > > opcode = ((DNS_response.int_data[DNS_response.pos] & 0x40) >> 6) * 8; > opcode += ((DNS_response.int_data[DNS_response.pos] & 0x20) >> 5) * 4; > opcode += ((DNS_response.int_data[DNS_response.pos] & 0x10) >> 4) * 2; > opcode += (DNS_response.int_data[DNS_response.pos] & 0x08) >> 3; > printf(" OPCODE: %s\n", opcode_search(opcode)); わかりやすい変数名を使うこと自体は非常によいのですが、同じ値を繰り返し 使用する場合は、 int flag = DNS_response.int_data[DNS_response.pos]; qr = (flag & 0x80) >> 7; printf(" QR: (Query/Response): %s\n", qr_search(qr)); opcode = ((flag & 0x40) >> 6) * 8; opcode += ((flag & 0x20) >> 5) * 4; opcode += ((flag & 0x10) >> 4) * 2; opcode += (flag & 0x08) >> 3; printf(" OPCODE: %s\n", opcode_search(opcode)); などと一時変数に代入することをお勧めします。狙いは可読性向上と、変更時の 修正ミス防止です。わたしの場合は、 for ( int i=0 ; i<length ; i++ ){ struct *hoge_p = hoge_list.buf[x]; printf("%s\n", hoge_p->foo); printf("%s\n", hoge_p->bar); printf("%s\n", hoge_p->baz); } などと、ループ中でもよく一時変数に代入します。これは、ループ先頭の struct *hoge_p = hoge_list.buf[x]; で、 このループ中で参照するのは hoge_list.buf[x] だけ。hoge_list.buf[x+1] を 参照したりはしないよ。 というメッセージを送っているつもりです (効果があるかどうかは知りませんが)。 > DNS_query->data[0] = DNS_packet->id >> 8; > DNS_query->data[1] = DNS_packet->id & 0xff; > ... > DNS_query->data[11] = DNS_packet->ARCOUNT & 0xff; > for (i=12, j=0; i<12+domain_length; i++, j++) > DNS_query->data[i] = DNS_question_record->Name[j]; この場合は、変更時の作業量削減とマジックナンバ排除のため一時変数を使うべきです。 char *data_p = DNS_query->data; *(data_p++) = DNS_packet->id >> 8; *(data_p++) = DNS_packet->id & 0xff; ... *(data_p++) = DNS_packet->ARCOUNT & 0xff; for ( i=0; i<domain_length; i++) *(data_p++) = DNS_question_record->Name[i]; > FLAG flag_list[] = {{ /* 外側の中括弧は構造体の、内側の中括弧は配列の初期値を示す */ > 0, > ... > }}; > > return ((flag_list->qr * 128 + flag_list->opcode * 8 + .... )); FLAG flag = { 0, ... }; return (flag.qr*128 + flag.opcode*8 ... ); でよいと思います。あと、ビットシフトをしたい場合は乗算ではなく、>> や << で 表現した方が素直かなと思いました。 > int make_question_record(struct DNS_Question_Record *DNS_question_record, > int argc, char *hostname, char *type, char *class){ > /* 照会タイプが何も入力されていなければデフォルトの A を代入する */ > if (argc >= 4) > strcpy(query_type, type); > else > strcpy(query_type, "A"); ここまで argc を引っ張らず、もっと上位の関数で query_type を設定すべきと 思います (preprocessing あたりで)。 argc を引っ張りすぎると、もし引数のインタフェースを変更した場合、ソース 全体を調べて argc 関連の部分を修正することになってしまいます。 > /* DNS_response_before_conv->recv_bufはchar型なので、 > その中に格納されている数字は+127(0000007e)までしか表現できない */ しょーもないことですが、複数行のコメントは /* DNS_response_before_conv->recv_bufはchar型なので、 * その中に格納されている数字は+127(0000007e)までしか表現できない */ などと書けば、grep したときにその行がコメントであることが一目でわかります。 > goto comp2; 再起であれば、これまでの状態を脳内スタックに積んで、新たに呼ばれた関数の 引数と戻り値だけを考えればいいですが、こういう goto は覚えておかなくては ならない状態が多すぎるので、こういう goto はわたしは使いません (というか 頭が混乱してしまうので使えません)。 わたしは、エラー発生時の脱出以外で goto を使わない派です。 1ヶ月以上引っ張ってしまったわりに、たいしたレビューができませんで 申し訳ないです。 |
|
新版 UNIX 由来/読み方辞書 http://X68000.q-e-d.net/~68user/unix/unix-term-dic.html なるものを作ってみました。 元々あったオリジナルが 200個、わたしが追加したのが 60個程度です。 オリジナルの記述を読んでると時代を感じますね…。 |
|
a.outでtypo指摘っす > 実態にそぐわなかくなったが |
|
>>4457 Netboy ありがとうございます。今晩修正します。 追加ネタメモ。 abbrev yum xargs |
|
>>4457 Netboy 修正いたしました。ご指摘ありがとうございました。 |
|
このサイトにはいろいろお世話になっております。 UNIX 用語 由来/読み方辞書 も一気に読ませていただきました。 気になった点をいくつか: ・fgrep と Gimp の解説文が途中で切れてしまっているように 思います。 ・記号の 2 項目め(「"」の項と思われる部分)の見出し行が 抜け落ちてしまってます。 ついでに(思いっきり重箱の隅ですが)、この掲示板の [使い方] ページにある「敬省略」っていうのも気になります… |
|
>>4460 mkt あれ? 全角空白が 4 個に置換されてる…。 |