68user's page 掲示板

Prev< No. 3476〜3504> Next  [最新発言に戻る] [過去ログ一覧]
No. 3476 # 2003/12/17 (水) 11:19:43
UNIXでファイルを開かずにファイルの解析を行いたいのですが、
fileコマンドでは実行ファイルなのかどうかなど、詳しいことが
わかりませんでした。
#C言語関連のソースかどうか確認したいのです。

何か、他にいい方法はないでしょうか?
教えていただけるとありがたいですm(__)m

No. 3477 # tomo 2003/12/17 (水) 15:01:54
こんにちは。
以前、こちらで幾らか質問させて頂いた tomo と申します。
今、perlでタイマ処理をする事を考えているのですが、
perlではC言語の様にタイマIDという形で複数のタイマを
識別管理する事は出来ないのでしょうか?

No. 3478 # 68user 2003/12/19 (金) 00:50:36
>>3476
調べたいのは
> fileコマンドでは実行ファイルなのかどうか

> C言語関連のソースかどうか
のどちらですか?

「〜かどうか判定したい」ということなら、何らかの判断基準が
ないと判定できませんので、そこらへんを明確にしてください。

>>3477 tomo
> perlではC言語の様にタイマIDという形で複数のタイマを
> 識別管理する事は出来ないのでしょうか?
C にも perl にもタイマ ID という概念はありません。

そもそも「タイマ ID」とは Win32API (MFC?) のそれですか?

なら、perl で Win32API を利用できるモジュールを探せば
できるでしょうが、あいにく Windows には明るくないので
    http://www.cpan.org
から探してみてください。

No. 3479 # なっち 2003/12/20 (土) 14:14:55
68user 様

UNIXの部屋等、ちょくちょく参考にさせて頂いております。ありがとうございます。

私、現在、DNSまわりのプログラミングを行っておりまして、ネットワークプログラミングの基礎知識の
DNS クライアントを作ってみようのページを、基礎から理解する意味で読ませて頂いたのですが、
この(2)のページ、http://x68000.startshop.co.jp/~68user/net/resolver-2.html
DNSヘッダのフラグの部分の第13〜15bitの3bitがRCODEとなっていますが、これは第13〜16bitの4bit分の
間違いだと思うのですがいかがでしょうか。

細かい部分で申し訳ないのですが、気になりましたのでご報告させて頂きました。お忙しいとは思いますが、
よろしくお願いいたします。

No. 3480 # 68user 2003/12/20 (土) 22:35:38
>>3479 なっち
ご指摘ありがとうございます。修正しました。ついでに
    1…15bit、16…31bit
となっていたものを
    1…16bit、17…32bit
に修正しました。

# http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/resolver-2.html

しかし、一般的には MSB を第 0bit とする場合が多いでしょうか?
「詳解TCP/IP Vol.1」では 0〜31bit となっていましたので、
悩むところです。

No. 3481 # へにか [URL] 2003/12/21 (日) 00:08:07
何をもってして一般的というかによりますが・・・

ハードウェアでは、例えばverilogのバス表記の例にとると、
[15:0] > [0:15] >>> [1:16]という頻度で見かけます。

僕の知っている限りの物理層では、[0]が時間軸で最初に
送受信されるので、[0:15]という表記が現れます。
とはいえ、中身を解釈する際に、[15:0]のように置き換え
ないと、人間には理解し難い事が多々あり、そのような処理
は僕はよくします。

No. 3482 # 2003/12/24 (水) 00:15:56
awkの使い方について教えて下さい。
awkを使用して、以下の出力を、数字は、3桁毎にカンマで区切り、
出力位置を揃えて出力したいのですが、
180 file1.txt
1821 file2.txt
113457 fil3.txt

        180 file1.txt
    1,821 file2.txt
113,457 file3.txt
と出力したいのですが、
数字の部分を揃えることができません。
そのため、たの部分もそろいません。
どうすれば上手くできますか。

-------------------------------
#!/bin/sh
#

cat list.txt | sort -n -r | awk '
        function put_comm(val) {
                if (val < 1000) {
                        printf("%d",val) ;
                } else {
                        put_comm(val / 1000) ;
                        printf(",%03d",val % 1000) ;
                }
        }
        {
                if ($1 < 1000) {
                        printf("%d",$1) ;
                } else {
                        val=$1 ;
                        put_comm(val) ;
                }
        }
        {
                  #printf "\n"
                  printf(" %s\n",$2)
        }'

No. 3483 # tonpei 2003/12/24 (水) 15:15:14
いつも参考にさせていただいてます

dtterm上で動作するC言語のプログラムを作成しています
そのプログラムで、cursesのwaddchとwrefreshを使用して1画面分の描画を1文字ずつ行っているのですが、
その際にカーソル表示がされているため、ちらついてしまいます
カーソルを一時的に消す方法は無いでしょうか?

ちなみに、waddchで画面編集後、最後にwrefreshを1回呼ぶ方法ですと、
一気に1画面分を表示できるのですが、編集時間が長く感じられるため、
1文字ずつパラパラと表示したいと考えています。

No. 3484 # zsh 2003/12/24 (水) 18:16:33
>>3482
桁数の上限がわからないと駄目ですが
こんなのでどうでしょ?(下では8桁まで)

------
$ cat list
123 file1.txt
123456 file2.txt
1234567 file3.txt
$ cat test.awk
#!/bin/nawk -f
{
                i = sprintf("%d",length($1) / 3) ;
                j = sprintf("%d",length($1) % 3) ;
                if ( i > 1 ) {
                                if ( j == 0 ) j = 3 ;
                                str_buf = sprintf("%s",substr($1,0,j)) ;
                                for ( k=0 ; k<i ; k++ ) {
                                                cut_str = substr($1,j+(k*3)+1,3) ;
                                                if ( cut_str == "" ) break ;
                                                str_buf = sprintf("%s,%s",str_buf,cut_str) ;
                                                cut_str = "" ;
                                }
                } else {
                                str_buf = $1 ;
                }
                printf("%10s %s\n",str_buf,$2) ;
}

$ ./test.awk list
              123 file1.txt
      123,456 file2.txt
  1,234,567 file3.txt

No. 3485 # 68user 2003/12/24 (水) 19:01:30
>>3481 へにか
> 僕の知っている限りの物理層では、[0]が時間軸で最初に
> 送受信されるので、[0:15]という表記が現れます。
なるほど。ネットワークプログラミングでは当然ネットワーク
バイトオーダで MSB が先になるわけなので、
      [0:15] か [1:16]
のどちらかで決まりですね。

個人的には「プログラマたるもの数えるときは 0 から」という
ことで、そのうち [0:15] に修正しておこうと思います。


>>3483 tonpei
curses はよくわかってませんが、curs_set(0) ですかね。

capability 的には cursor_invisible (vi) っぽいです。

ただ、端末エミュレータにカーソルを消す機能があるかという
問題があるかもしれません。うちの FreeBSD の /etc/termcap に
      xterm-basic|xterm common (XFree86):...:vi=\E[?25l:...
とあったので xterm で
      % printf "\033[?25l"
とするとカーソルが消えましたが、kterm-6.2.0_5 では消えません
でした。kterm にカーソルを消す機能がないような感じがします。

でもまぁ dtterm なら多分大丈夫だとは思います。

No. 3486 # 2003/12/25 (木) 09:56:04
>>3484 zsh
環境も書かずに質問して申し訳ありません。
HP-UX11.00です。
nawkが入っていないので、awkに変えて実行しました。
一応、上手く動きました。

cat list.txt $1 | sort -n -r | awk '
{
        i = sprintf("%d",length($1) / 3) ;
        j = sprintf("%d",length($1) % 3) ;
        if ( i > 1 ) {
                if ( j == 0 ) j = 3 ;

                str_buf = sprintf("%s",substr($1,0,j)) ;
                for ( k=0 ; k<i ; k++ ) {
                        cut_str = substr($1,j+(k*3)+1,3) ;
                        if ( cut_str == "" ) break ;

                        str_buf = sprintf("%s,%s",str_buf,cut_str) ;
                        cut_str = "" ;
                }
        } else {
                str_buf = $1 ;
        }
        printf("%10s %s\n",str_buf,$2) ;
}'

No. 3487 # 2003/12/25 (木) 10:09:10
>>3486
以下の様に、数字が5桁、4桁は正しくでませんでした。

123 file1.txt
1234 file2.txt
12345 file3.txt
123456 file4.txt
1234567 file5.txt

No. 3488 # 2003/12/25 (木) 11:10:38
>>3487
    if ( i > 1 ) {

    if ( i >= 1 ) {
です。

No. 3489 # zsh 2003/12/25 (木) 13:02:59
>>3488
すみません、その部分のif文自体不要でした。
(不要になるように修正してたのを忘れてました。)
-----
$ cat list
1 file1.txt
12 file1.txt
123 file1.txt
1234 file2.txt
12345 file3.txt
123456 file4.txt
1234567 file5.txt
$ cat test.sh
#!/bin/sh

sort -n -r $1 | awk '{
                i = sprintf("%d",length($1) / 3) ;
                j = sprintf("%d",length($1) % 3) ;
                if ( j == 0 ) j = 3 ;
                str_buf = sprintf("%s",substr($1,0,j)) ;
                for ( k=0 ; k<i ; k++ ) {
                                cut_str = substr($1,j+(k*3)+1,3) ;
                                if ( cut_str == "" ) break ;
                                str_buf = sprintf("%s,%s",str_buf,cut_str) ;
                                cut_str = "" ;
                }
                printf("%10s %s\n",str_buf,$2) ;
}'

$ sh test.sh list
  1,234,567 file5.txt
      123,456 file4.txt
        12,345 file3.txt
          1,234 file2.txt
              123 file1.txt
                12 file1.txt
                  1 file1.txt

No. 3490 # tonpei 2003/12/25 (木) 16:41:01
68Userさん、回答ありがとうございました

またまた質問がありますので、どなたか回答よろしくお願いします

環境:HP-UX Ver.11.0

1.XWindowのログイン後、言語選択の画面が表示されますが、この画面を出さずに、デフォルトで
    ATOKを選ぶ方法は?
2.XWindowの起動後、ウインドウ内に、ツールバー(端末起動、エディタ起動などのボタン郡)が
    表示されますが、これを非表示(アイコンも無くす)にする方法は?

以上、2件についてご存知でしたら、回答お願いします

No. 3491 # みの 2003/12/26 (金) 02:16:59
HP-UXですが、シェルについて教えて下さい。
printfを使用して書式で、変数の中身を出力しているのですが
上手くできません。

-----------------
#!/bin/sh
name1="yamada"
name2="taro"

printf "%s %s --> %s\n",${name1} ${name2} NG

exit 0
------------

とすると

yamada NG -->
,taro

となってしまいます。

No. 3492 # 68user 2003/12/26 (金) 02:27:02
>>3490 tonpei
http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse
      「回答をもらったら結果を報告する」
をよく読んでください。なお、>>3490 の質問については
わかりません。

>>3491 みの
> printf "%s %s --> %s\n",${name1} ${name2} NG
カンマが余分だと思います。
    printf "%s %s --> %s\n" ${name1} ${name2} NG

> yamada NG -->
> ,taro
> となってしまいます。
本当ですか?
    taro NG -->
    ,yamada
になりませんか?

No. 3493 # 68user 2003/12/26 (金) 02:27:11
http://x68000.startshop.co.jp/~68user/net/
    ネットワークプログラミングの基礎知識

    http://x68000.startshop.co.jp/~68user/net/crypt-1.html 暗号化のお話 (1) 共通鍵暗号方式
を更新し、
    http://x68000.startshop.co.jp/~68user/net/crypt-2.html 暗号化のお話 (2) 公開鍵暗号方式
    http://x68000.startshop.co.jp/~68user/net/crypt-3.html 暗号化のお話 (3) 署名
    http://x68000.startshop.co.jp/~68user/net/crypt-5.html 暗号化のお話 (5) まとめ
を追加しました。

No. 3494 # tonpei 2003/12/26 (金) 11:36:15
>>3492 68user
安易な回答をしてしまい申し訳ありませんでした。
利用規約を読ませていただきましたので、改めて回答させてください。

御指摘頂いた、curs_set(0)使用することで、dtterm上でカーソルの消去ができました。
また、printfの方法でも可能でした。

ありがとうございました

No. 3495 # みの 2003/12/26 (金) 12:35:38
>3492
すみません
カンマが余分でした。
ありがとうございます。

No. 3496 # ブラウン 2003/12/26 (金) 12:47:15
HP-UXでのawkについて質問なのですが、
awkを使用してファイルのENDを判断できるのですか。

例えば、
cat date.txt
aaa
aaa bbb
aaa bbb ccc

111
111 222
111 222 3333

とあった場合、

------------------------
#/bin/sh

awk '
function sub() {
}
        getline ;
        処理省略
{
        if (NF == 0) next ;
        if (NF >= 1) sub() ;
        ※
}' data.txt
----------------------

※の場所でファイルのENDか判断したいのですができるのでしょうか。

No. 3497 # zsh 2003/12/29 (月) 09:51:28
>>3496 ブラウン
ファイルのENDというのが最後の行の事なのか
EOFの事なのか不明ですが、最終行であれば以下のように。
ちなみに環境はSolarisです。
------
#!/bin/sh

max_line=`wc -l $1 | awk '{ print $1 }'`
awk '{ print ;
              if ( NR == max_line ) printf "END\n" }' max_line=$max_line $1
------
行数を取得する為だけにawk使うのはどうかと思いますが。

No. 3498 # ポッしブル 2003/12/29 (月) 22:27:36
はじめましてです。C言語を勉強しているものです。
質問なんですが、ネットワークプログラミングで
チャットを使ったゲームみたいなものを作りたいなと思っておりまして、
具体的にチャットではサーバーがクライアント全員にメッセージを送る
形になりますが、このゲームではクライアントが
メッセージを送る人を選ぶことができるようにしたいのです。
たとえば会話しているのは5人いるけどそのうち3人に送ろうという
感じです。クライアント側で、全ユーザーの名前が表示され
その中から送る人を選ぶみたいなかんじのゲームなんですが。

チャットにおいて選んだユーザーにだけメッセージを送るというのは
一体どうすれば可能なのですか?

No. 3499 # ブラウン 2003/12/30 (火) 10:37:54
>>3497 zsh
ありがとうございます。

説明不足ですみません。
ファイルのENDというのは、最終行ではなく、EOFのことです。
また、行数を取得するためにawkを使用していません。
awkを使用して、ファイルから1レコードづつよみこみ条件
毎に処理を行い、EOFだったら終了と考えていたのですが。

No. 3500 # zsh 2003/12/31 (水) 13:11:47
>>3499 ブラウン
取得したいのがEOFだとすると
getlineの戻り値見るくらいしか思いつきません。
普通にENDに記述じゃダメですか?
或いは行数+フィールド番号でファイルの最後をチェックするとか。

>また、行数を取得するためにawkを使用していません。
すみません、行数を取得するためだけにawkを使うのはどうか
というのは自分に対して言ったものです。

No. 3501 # けんおお 2004/01/02 (金) 07:07:10
あけましておめでとうございます。
朝早くから失礼いたします。

このページは、EmacsLipsでネットワークプログラミングについて
ぐぐっていたら、たどり着きました。

早速一つ質問させてください。
telnetでウェブサーバからファイルを取ってこようとしたところ、
GET /hoge.rdf HTTP/1.0
で、404になってしまいます。ブラウザやwgetだと取ってこれます。
こういう場合は、どのようにすればいいのでしょうか?

# あと、私事で恐縮なのですが、SEGA BBSのログを発見したので、
# ためしに名前を入れてみたらおもいっきりヒットしました。(^_^;)
# いやー懐かしい。とにかく懐かしいです。(;_;)ホロホロ
# ちなみに、SEGA BBSのトップにあるsagabitoへのリンクって
#「くにおにく」さんのページですよね?
# 当時、「くにおにく」さんに大変世話になった記憶があります。
# 無事で過ごされているようでしたらなによりです。
# 以上、私事で失礼しました。

No. 3502 # けんおお 2004/01/03 (土) 00:30:54
>>3501 けんおお
すみません。自己解決しました。
GET /hoge.rdf HTTP/1.1
Host:hoge.jp
Connection:close
でいけました。
最近は、HTTP/1.0ではファイルを取ってこれなくなったんでしょうか?
それでは、失礼します。

No. 3503 # ShinoP 2004/01/05 (月) 10:20:47
はじめまして。
検索辿ってこちらを拝見させていただきました。

早速質問させていただきたいのですが、
SunのUltra10 SPARKマシンで、SunOSのデスクトップに
ファイルを配置するためにデスクトップの絶対パスを調べたいのですが、
Windowsのデスクトップのようにショートカットの絶対パスを辿ろうと
しても一向に見つかりません。

もしかしてSunOSのデスクトップ(ワークステーション?)上のショートカットは実体のない参照(リンク)でしかなくて、デスクトップの絶対パスなんてものは存在しない(ファイルを置くことはできない)のでしょうか。

よろしくご教示お願いします。

No. 3504 # 68user 2004/01/05 (月) 15:23:45
>>3498 ポッしブル
> チャットにおいて選んだユーザーにだけメッセージを送るというのは
> 一体どうすれば可能なのですか?
名前と IP アドレスの一覧のテーブルを内部に持っておいて、選択
された名前から対応する IP アドレスを得て、その IP アドレス宛に
メッセージを送信すれば可能でしょう。

要は、そういう動作をするように、あなたがプログラムを組まなく
てはならないということです。


>>3501 けんおお
>>3502 けんおお
GET /hoge.rdf HTTP/1.0 が 404 not found なのは、
バーチャルホストな web サーバだったからでしょう。
    http://x68000.startshop.co.jp/~68user/net/http-4.html
        さらなる改善点・バーチャルホストに対応
を読んでください。

HTTP/1.1 で OK だったのは、HTTP/1.1 だと Host ヘッダが
必須なため、結果的にバーチャルホストに対してホスト名を
提示することができたからだと思われます。

> # ちなみに、SEGA BBSのトップにあるsagabitoへのリンクって
> #「くにおにく」さんのページですよね?
そうです。でも今は公開されていないようですね。1年ほど前に
BBS があることは確認しましたが、今は見つけられません。


>>3503 ShinoP
CDE ですか? CDE をまともに使ったことはありませんが、
Solaris2.6+CDE 環境で試してみると、
    ~/.dt/Desktop/.!dtdesktop
    ~/.dt/sessions/current/.!dtdesktop
などのファイルに、リンク先のフルパスが保存されているような
気がします。

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