[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 23:36 / Filesize : 219 KB / Number-of Response : 879
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミング質問すれ Part1



1 名前:名無しさん@お腹いっぱい。 [2005/09/22(木) 20:29:34 ]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

過去スレ(プログラム技術板)
Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 pc2.2ch.net/tech/kako/992/992057422.html

Part3ミラー makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2ミラー makimo.to/2ch/pc5_tech/1055/1055110889.html

関連スレ
Cygwin使っている人いますか? その14 (UNIX板)
pc8.2ch.net/test/read.cgi/unix/1107587275/
Cygwin使っている人いますか? 3 (Windows板)
pc8.2ch.net/test/read.cgi/win/1090131123/

関連板
Linux板 pc8.2ch.net/linux/
プログラム技術板 pc8.2ch.net/tech/

487 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/05(日) 23:06:39 ]
Perlのモジュール WWW::Mixi でのログインを http ではなく https にして
安全にパスワードを送信するように改造するには何を使えばいいのでしょうか?
この辺をこういじってみたら?など詳しい方アドバイスを頂ければ幸いです。


488 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/05(日) 23:28:16 ]
いいえ、ワイザードです

489 名前:名無しさん@お腹いっぱい。 [2009/04/06(月) 12:47:12 ]
41で童貞です

490 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/06(月) 17:06:36 ]
>>487 WWW::MixiはしらないけれどNet::SSLeayかCrypt::SSLeayが入っていれば
lwpでhttpsが使えるはずだから
今httpsが使えないとしたらどちらか入れて同じコードで試してみたら?

491 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/06(月) 17:19:05 ]
とりあえずFlashがやりたいならば
java +flex4 SDK
wine+Flashの適当なバージョン
flasm swfmillそしてエディターとxtermがあればかなりのことができる。
mtascだってつかえる。

CでcairoとSDLとffmpegを駆使すればFlash 用の絵描きツールも作れるよ

まぁとりあえずhtmlでアドベンチャー見たいなものを作る程度の技能がないとだめだね、
絵はローグとかつくーるじゃないけれどとりあえず借り物でもいいんじゃないの

492 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/09(木) 01:40:40 ]
プログラミングからは少し外れますが・・・

HogeHugaはキャメルケースって言いますが、hoge_hugaは何と言うのですか?

493 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/09(木) 12:56:25 ]
>>492
パスカル

494 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 16:28:13 ]
>>492
snake case

495 名前:名無しさん@お腹いっぱい。 [2009/04/24(金) 07:19:05 ]
underscore styleというのもどっかで見たような気がしなくもない



496 名前:名無しさん@お腹いっぱい。 [2009/04/25(土) 12:15:33 ]
PF_UNIX/SOCK_DGRAMにデータを送る時、FreeBSDでは
送り元が無名になってしまい、受け取った側が
返答を送り返すことができない。(PF_INETだともちろんソースポートが付くが)
だから、間に合わせのファイル名をbindしてから送信する必要あり。
あとでunlinkしないと行けないし、美しくない。
Linuxだと、PF_UNIX/SOCK_DGRAMでも、bindしなくても
勝手に名前を割り当ててくれて、不要なソケットファイルも作成されないんだが、
そういうことはできないの?

497 名前:名無しさん@お腹いっぱい。 [2009/05/02(土) 13:06:49 ]
C++のtemplateで、templateの展開先を限定することってできますか?

template <class T> void func(T arg) {
// argが HOGE型またはFOO型の場合の処理
}

template <class T> void func(T arg) {
// argが BOKE型またはHAGE型の場合の処理
}

みたいなことをやりたいのです。関数名は func()で同名にしたいのです。

たとえば、template <class T={HOGE,FOO}> みたいなことが実現できませんか?

498 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 13:57:48 ]
>>497
template <class T> void funcHOGEFOO(T arg) {
// argが HOGE型またはFOO型の場合の処理
}

template <class T> void funcBOKEHAGE(T arg) {
// argが BOKE型またはHAGE型の場合の処理
}

void func(HOGE arg) { funcHOGEFOO(arg); }
void func(FOO arg) { funcHOGEFOO(arg); }
void func(BOKE arg) { funcBOKEHAGE(arg); }
void func(HAGE arg) { funcBOKEHAGE(arg); }

499 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 14:01:28 ]
>>498
だから、そうは書きたくないので、
templateを使って奇麗にまとめる方法を質問してるんですが。。

他にわかる方お願いします


500 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 14:53:03 ]
何が不満なのか言えよ。

どうしても template だけのコードにしたいんなら、 boost の enable_if に
is_same とか突っ込んで使えばいいかもしれない。

501 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 16:53:57 ]
>>498 の方法では、func()の一方のargの型の種類が不定の時対応不能。

つまり、
片方の func() は argが HOGE型またはFOO型の場合
もう片方の func() は argが「HOGE型またはFOO型」以外の場合すべて

だったとしたらどうする?

502 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:06:02 ]
>>501
template <class T> void funcHOGEFOO(T arg) {
// argが HOGE型またはFOO型の場合の処理
}

template <class T> void func(T arg) {
// argが「HOGE型またはFOO型」以外の場合すべて
}

template<> void func(HOGE arg) { funcHOGEFOO(arg); }
template<> void func(FOO arg) { funcHOGEFOO(arg); }

503 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:13:52 ]
>>502
「HOGE型またはFOO型」というのが、2種類だけじゃなくて10種類くらいあったら
template本体以外に void func(HOGE arg) とかを全部列挙するのが
すごくダサイんですが。

あと、本来の関数名以外に funcHOGEFOO()という関数名をつけなければいけないのも
名前がぶつかるかも知れないし美しくない。

504 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:18:14 ]
なんで人にコード書かせて後から条件増やして文句つけるの?
そういう遊びなの?
アホなの?

505 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:19:35 ]
>>503
何がしたいのかわからんが、ごちゃごちゃ言わずにさっさと boost::enable_if で好きに片付けろよ。



506 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:21:22 ]
アホなんだろ。

507 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 00:15:37 ]
どうしてこんなことに

508 名前:名無しさん@お腹いっぱい。 [2009/05/03(日) 10:24:12 ]
同じコードが、Cだとコンパイルできるけど、
C++だとエラーになる。

struct A { int i, j; };

void hoge()
{
struct A a = { .i = 123, .j = 456 };
}

構造体を初期化したいのだが、メンバーの順序を気にしなくていいように
メンバー名指定で初期化したい。

A a = {123, 456};
にすればC++でもOKになるけど、これだとメンバーの順序が変わった時困るから、
.i = や .j = の指定を入れたいのだが。

わかる方お願いします。

509 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 12:33:58 ]
CでもC99じゃないとダメじゃないの?それ

510 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 13:03:34 ]
C++だったら普通コンストラクタ

511 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 13:10:29 ]
>>510
コンストラクタにしても、メンバの順序(コンストラクタの引数の順序)を考えなくて
いいように >>508 の要求を満たすことはできないのでは?

メンバの型が違えば方法はあるけど、型が同じならできないでしょ。

512 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 13:51:41 ]
>>510
コンストラクタだと実行時に「代入」されるからプログラム的に無駄でしょ。
「代入」じゃなくて、静的データで初期化したい。
あるいはテーブルのようなconstデータを持ちたい場合、
コンストラクタじゃなくて「初期化宣言」したい。

513 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 14:37:22 ]
>>512がオート変数の初期化を、「代入」以外の方法(静的データ?)で行う、
画期的に効率的な方法を開発したようです。

514 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 14:54:15 ]
>>513
>>508 では確かに auto変数だが、
関数外に const static で持ちたい場合もあるしね。

そういう場合、struct member指定で順不同で初期化するのはどうするのかね?

やっぱ C++じゃ無理なのかい?

515 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 16:14:47 ]
なんかさー、そこまでこだわるなら
struct A a;
a.i = 123;
a.j = 456;
でいいじゃんって感じ。
元々auto構造体変数のメンバ初期化自体邪道だったんだし。



516 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 16:23:57 ]
>>515
すでに指摘されてるように、それだと「代入」。
質問は「初期化」の方法。

auto変数じゃなくて、staticの時、どうするよ?

517 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 16:30:14 ]
C++の規格上出来ないんだから、どうしてもやりたいならC99で記述してリンクすればいい。

518 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 16:34:57 ]
なんだ、できないのか。しょぼいな。

519 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 17:59:22 ]
コンストラクタ的にしとかないとメンバ変数増えたときに困りそうだけど。

520 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/03(日) 23:59:36 ]
>>519
まあこんなしょうもないところにこだわる人にそんなことが理解できるはずもなく。

521 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/05(火) 10:21:50 ]
そういうエディタ内でのお遊びはム板でやればよろし。
>>517 >>520 で正解でてるからいうこた特に無いけれど
それ以前に
基本は「ある仕様を覚えろ」じゃないかと思う。
「書き方」にこだわりがあるなら
そのコーディングを無難にコンパイルできるマクロツール作ればいいまでのこと
テキストレベルの問題だ。

522 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/05(火) 14:51:47 ]
おいおい、途中から話の噛み合っていないバカ共が増えてるけど

元々の質問は、
「メンバの順序を気にしなくて良いように、メンバ名指定で初期化したい」
   例:struct A a = { .i = 123, .j = 456 };
なんだろ?
で、傲慢にも「同じコードをC++でも通るようにしたい」と…

はっきり言えば>>509>>517が全てで、この書き方だとC99でしか通らず
そのままではC++0x準拠のC++コンパイラですら通らないわけだが
何を勘違いしたのか、初期化と代入の区別もついていないバカ共とか
Designed Initializersの話してるのに、エディタ内でのお遊びとか言ってるバカが話をややこしくしてる
本当バカって救いようないな、分からないなら黙っていれば良いのに…

似たような疑問をもっていて、たまたまこのスレを訪れた人は、>>509>>517以外の
>>508からここまでのレスは、全くのゴミレスなので読み飛ばしてほしい

523 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/06(水) 13:33:15 ]
X Window Systemのプログラミングの参考になる書籍
で現在も通用するものってどんな者が有りますか?
具体的にはC言語からXlibなどをつかってツールキットを使わずに
プログラムを作成する方法を解説した書籍があればお教えください。
tclやgtkやqtの経験は有るのですが、ちょっとしたプログラムを
作るのにあまり重たくしたくないのでC言語で直接利用したく思います。

524 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 10:40:39 ]
>>523 書籍はしらないけれど
ttp://xjman.dsl.gr.jp/X11R6/X11/
ttp://www-yano.is.tokushima-u.ac.jp/~mituhara/software_e/
あとりを参考にしてみては?あとめぼしいportsのソースが参考になる。
ただxlibとSDLと使用メモリとか大してかわらんよ。
描画面も考えると
xlib→cairo→pango
ないしは
SDL→cairo→pango
とやっていくと軽くて学習効率が高く見栄えのする結果が得られると思う。
それと「コマンドとして呼び出して結果をもらう」とか
「perlやshを呼び出す」事も選択肢に入れるとコードと使用リソースが小さくできる。

525 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 10:46:27 ]
>>524でcairoを出しているのはxlibだときれいなテキストが書きにくいので
freetypeを叩くより楽だからの意味合いが強い。



526 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 17:08:06 ]
>>524-525
ありがとう御座います。
がんばります。SDLはいろんなOSで使えるようですね。
いろいろ勉強してみようと思います。


527 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 09:35:24 ]
>>523
亀レスだがそういう解説書なら
Xアプリケーション・プログラミング1 Xlib編

しかし書籍の方が現在では流通していないかも。
どこかの図書館にはあるだろうからその場合は最寄りの図書館で取り寄せてもらって。

528 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 17:16:58 ]
下図のように自己交差しているリージョンを、
┏━┓
┃  ┃
┗━╋━┓
   ┃  ┃
   ┗━┛
交点で個別のリージョンに分けたいんですけど、
┏━┓
┃  ┃
┗━┛┏━┓
     ┃  ┃
     ┗━┛
簡便な方法ってないものでしょうか。よろしくお願いします。

529 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 17:23:20 ]
すみません、スレ違だったようです。取り下げます。

530 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:10:34 ]
# ping -c 1 -t 10 www.yahoo.co.jp
って実行すれば以下のような結果が表示されると思うのだが

PING www.yahoo.co.jp (124.83.139.192) 56(84) bytes of data.
64 bytes from f1.top.vip.ogk.yahoo.co.jp (124.83.139.192): icmp_seq=1 ttl=57 time=9.06 ms

--- www.yahoo.co.jp ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.068/9.068/9.068/0.000 ms

平均値だけを出力させることってできますか?
#ping -c 1 -t 10 www.yahoo.co.jp
9.068

って感じにです。

531 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:11:25 ]
すみません、スレ違だったようです。取り下げます。

532 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:13:06 ]
>>531
勝手に取り下げないで下さい

533 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:19:19 ]
>>530
えっと、そういう機能を持った pingコマンドの別種を自分でプログラムしたい、
って質問だよな?
pingのようにICMPを送受信するには、
SOCK_RAWを使ったソケットプログラムが必要だが、
その辺は理解してるのか?

534 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:26:55 ]
単にパイプで適当なワンライナーにつなげば済む程度の話じゃね?

535 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:32:39 ]
>>534
それだとプログラミングじゃないからやっぱりスレ違い。取り下げなければならない。



536 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:58:32 ]
>>533
muninで出力結果をグラフにしたいだけです

537 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:01:43 ]
>>536
じゃあ、Xのプログラムも必要だな。
ツールキットは何を使う予定?

538 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:37:33 ]
>>537
必要ねぇだろ?嘘教えるなよww

539 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:40:19 ]
ここはプログラミング質問すれだよ。
muninの出力みたいな表示を行なうプログラムを自作したいんだろ?
pingのソースを参考にソケットプログラムとXのプログラムが必要だな。

540 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 13:14:14 ]
グラフィックスにXのプログラムはいらないな。
グラフというのが「画像」であるならばcairoを使うのが定番
cairoで作ったコンテキストはファイルとして保存できる他
GDK,xlibのpixbuf、SDLみたいなメモリコンテキストから簡単に扱える。
ImageMagickもいいんだけれどcairoのが良いと思うね、

コマンドプロンプトのコントロールもpipe使ったりsytem使ったりで使うのは有りだから
無理に実装せずpopenとかで呼ぶのも有りだし
perlやpythonでの実装という選択肢もある。

で>530 の場合は無理にICMPの使い方をマスターしないで
perlの「``」かCのpopenでpingを使ってデータを取って
ソートなり平均値を出すという部分をまず作ることが大事なんじゃないかな。

ping部分を作りたかったら別で作ればいいさ。

541 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 13:34:45 ]
>>540
perlを使うと「スクリプティング」
(シェルスクリプトも同様)

ここは「プログラミング」
よって、スレ違い。

542 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 19:03:06 ]
>>541
スレ違いじゃないと思うけど。
別に何使ったっていいじゃん、こだわること無い。

543 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/17(金) 02:10:39 ]
アクションゲームプログラミングって本を参考に
プログラミングしようと思ってるんですけど
ひとつ疑問が、
Directx SDKのバージョンが違うんですけど
最新版でも問題はありませんか?

544 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/17(金) 08:13:33 ]
この板では回答は得られません

545 名前:名無しさん@お腹いっぱい。 [2009/07/18(土) 14:10:53 ]
まぁそう言わずに

>>543
君には無理



546 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:14:09 ]
>>541 プログラムの意味分かってないね、


547 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:16:18 ]
>>543 ここはUNIX板、最小公倍数はwine使用時のdirectXかSDL+OpenGL

アクションゲームは素直にFlashで作った方がいいんじゃない。
アスキーアートでも写真でもいいから
とりあえずキャラ画像そろえるのが先決

548 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:17:58 ]
>>541 cairoもImageMagickもperlバインディングもあるけれど
Cでの実装は常識の範疇だよ。ちなみに、

549 名前:名無しさん@お腹いっぱい。 [2009/07/21(火) 20:21:55 ]
すいませんちょっと質問させてください。
いま、データのインポートをする簡単なプログラムをCで書いているところなのですが、原因のよくわからないエラーが出てしまっています。

このあとfloat型ポインタのpにデータをいれていきたいのですが、何故かfloat *pのコメントアウトを外すと、
unnkoを二回出力したあとセグメンテーションエラーになるのです。コンパイルは通ります。
float *pを米アウトした状態だと普通に動きます。
float型以外の型の変数やポインタを用意しても同じようなエラーがでていまい、これ以上変数を増やせないんです。

開いてるファイルは8kぐらいの大きさだし、変数の数も多いわけではないのでスタックを食いつぶしてるようにも思えません。
誰か間違いに心あたりありませんか?

ちなみにosはScientificLinux5.3でコンパイラはGNUの4.1です
↓ソースコードはこちら

550 名前:名無しさん@お腹いっぱい。 [2009/07/21(火) 20:24:24 ]
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
char *inbuf;
int i,j;
char c;
FILE *fp;
//float *p;
printf("unnko\n");
if((fp = fopen(argv[1], "r")) == NULL ) {
printf("ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}
printf("unnko\n");

for(i=0;i<126;i++){
if( fgets(inbuf,128,fp)==NULL){
printf("%s Can't read\n",argv[1]);
}
printf("%s",inbuf);
}
fclose(fp);
printf("\n");
return 0;
}


551 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:30:54 ]
>>550
char *inbufがタダのポインタのままで、メモリ確保してないのが原因。
//float *p; のコメントとかコメントアウトについては、
たまたまそれでメモリ配置が変わってたまたま動いたり動かなかったりしてただけ。

正しくは char inbuf[128]; でちゃんとメモリ確保しろ。

552 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:36:01 ]
>>551
早いレスありがとう
メモリ確保は既にやった気がするけど夢だったかもしらん。ちょっとやってみる

553 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:43:13 ]
>>551
キターーーーーーーーーー
ちゃんと動きました。ほんとありがとう

554 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:45:10 ]
とりえあえず
char *inbuf = malloc(128);
…fgets(inbuf,128,fp)…

char inbuf[128];
…fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)…
の違いが分かるようになるくらいは勉強しなよ。

555 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:51:54 ]
>>554
解決した後に蛇足なこと書くなよ。>>551 の回答者とは別人の人よ。

> …fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)…

おいおい、FILE *fp; に対して &fp[0] って意味ないだろ。
(コンパイルすれば単に fp と同じになるにしても)

書きたかったのは &inbuf[0] じゃないのか?



556 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/23(木) 00:37:06 ]
>>530
スレちレス

$ ping -c 1 -t 10 host | tail -1 |awk -F/ '{print $5}'

557 名前:名無しさん@お腹いっぱい。 [2009/09/04(金) 00:52:32 ]
Linux の RAW ソケットで送信パケットをキャプチャし
ないのってどうすんだっけ? どっかのサイトで見たんだ
けどキーワードが悪いのか見つからない…。

558 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 12:09:44 ]
libpcap使いなさい。

559 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 12:13:41 ]
すみませんが詳しい方のみ回答をお願いします

560 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 18:21:06 ]
回答まだでしょうか?急ぎです。

561 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 19:31:34 ]
みんな自分が詳しくないということを自覚しているから何も
言わないコトにしたんだと思うよ。(ということにしておく)

562 名前:557 mailto:sage [2009/09/05(土) 00:33:12 ]
>>560
> 回答まだでしょうか?急ぎです。
実際急ぎだったんだがお前は俺じゃないだろ(w

キーワードは PACKET_OUTGOING だった。

563 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/10(木) 20:16:00 ]
>>560
出てこいよ池沼

564 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/21(月) 18:30:40 ]
すみませんが詳しい方のみ回答をお願いします

565 名前:名無しさん@お腹いっぱい。 [2009/09/22(火) 21:06:47 ]
libhoge.so.* という共有ライブラリがあった時、
gcc -o prog prog.c -lhoge
ってやると、progから libhoge.so.*に動的リンク(lddで確認)されますが、
prog.cで、実際にはlibhoge.so.*の関数をひとつも使っていなくても
動的リンクされた状態でコンパイルされてしまいます。

一方、libhoge.aという静的ライブラリがあって、
gcc -o prog prog.c libhoge.a
ってやったような場合は、prog.cの中でlibhoge.aの関数をひとつも使っていなければ、
libhoge.aの中身は使われず、libhoge.aを付けずに
gcc -o prog prog.c でコンパイルしたのと同じバイナリができて、
無駄になりません。

動的リンクの場合でも、関数を使っていないなら、
-lhoge を付けても結果的には動的リンクしないバイナリが作成されるように
できませんか?



566 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 22:53:19 ]
使ってないなら -lhogeつけなきゃいいのに

567 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:05:07 ]
>>566
じゃなくて、使うかどうかわからない場合でも、
-lhogeとか付けておいて、実際に使われなかったらリンクしないようにしたいんだが。
(別の関数から間接的に呼び出されたりして、ライブラリの関数を使ってるかどうか
簡単には判断できないことがある)

静的ライブラリ(libhoge.a)なら可能なのに、
動的ライブラリの場合のみ不可能なのは納得いかないんだが。

ldが、本当に関数を使ってるかどうかチェックするのをさぼってるとしか
思えないんだが、これバグじゃないの?

568 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:33:53 ]
何でバグって思うのか分からない。わざわざ -lhoge を付けてるのに
付けてないことにしてほしい、って方がワガママでしょ


569 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:35:59 ]
気に入らなくても、ldはそのように作られているのだから、不要なライブラリを
リンクしないようにするしかない。

570 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:41:42 ]
>>569
じゃあ、なぜ ldはそのように作られたのか?
関数を(というかシンボルを)使ってるかどうかのチェックぐらい、
簡単にできそうなのになぜしないのか?

571 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:41:52 ]
>>567
実行時までシンボル解決出来ないんだから、そのライブラリが
本当に呼び出されないかどうかは ld にも分からないんだよ。
だから ld は悪くない。

572 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:46:17 ]
>>567
そんなことはない。
「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge ..
みたいなエラーが出るから、コンパイル時にも判断できるはず。

573 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:47:04 ]
>>571
そんなことはない。
「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge ..
みたいなエラーが出るから、コンパイル時にも判断できるはず。

574 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:51:29 ]
>>571
とりあえず、コンパイル時の判断で不要と思われるライブラリは
(動的)リンクしないのをldのデフォルトにしておいて、

コンパイル時のシンボルレベルの判断では使っていないように見えて、
実際には実行時に使われるような特殊なライブラリの場合のみ、
--force-link みたいなオプションを新設して強制リンクさせればいいだろ。

デフォルトではシンボルを使ってなければリンクしないことにして。

575 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:54:54 ]
バイナリパッケージでインストールされたコマンドとか見てると、
実際には使ってない動的ライブラリがリンクされてたりするね。
(C++とかXの関係のライブラリにそういうのが多い)

そのソースのMakefileから、-lxxx を外してもコンパイルできたりする。
これって無駄だし、ldが適切にリンク判断してれば
もっと効率の良いバイナリができていたはずなのに。



576 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:56:33 ]
リ1「こいつ使ってないライブラリをリンクしようとしてるぜ」
リ2「あちゃー、何だそれ」
リ1「でもわざわざ余計な事をするんだから何か考えがあるんだろう」
リ2「リンクする必要が無いなら最初から省けば良いからな」
リ1「仕方が無い、面倒くさいけどリンクしてやるか」
リ2「これでバグとか言われたら最悪だな」

577 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:00:37 ]
>>576
同じソースでも環境によってライブラリが必要だったり不要だったりする場合がある。
そういう場合、共通ソースでは念のため -laaa が付けられている。

リンカーが「使ってないライブラリをリンクしようとしてる」と判断できるなら
それをリンクしないようにするべき。

578 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:01:28 ]
>>573
それはライブラリが足りない場合だろ。
ちゃんと場合分けして考えようぜ。

シンボルが呼び出されないかどうかは保証出来ないんだよ。
別の動的ライブラリから呼び出されるかもしれないし、
動的ライブラリは差し替え可能だから何でもありだ。
ツールは人間様の指示を無視する事は出来無いの。

579 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:02:19 ]
>>576
それと同じ理屈を libxxx.a に適用すると論理破綻。

580 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:05:06 ]
>>578
だから「保証はしなくてよい」
ldのデフォルト動作として、リンクしないようにして、
それでまずい場合(レアケース)のみ、--force-linkみたいなオプションで
強制リンクすればいいだけ。

実際、知らず知らずのうちに使ってるバイナリが
不要なライブラリをリンクしてるんだよ。
ldの動作をちょっと改良するだけで、
それらがすべて改善できるだろ。

581 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:07:46 ]
>>579
動的と政敵の違いを考えることが無いお前の頭の中が破綻してる。

582 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:08:33 ]
>>573
・それは、ライブラリが足りてない事がわかる事を意味していて、
 ライブラリが余分だという事は意味してないよな。
・ldがそのようなライブラリをリンクしないと、dlsym(NULL, ...)が困るかもしれない。

583 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:09:13 ]
>>578
場合わけじゃない。同じ場合だ。
「ライブラリが足りない場合」ではない場合はリンクしない。
で問題ないだろ。

別の動的ライブラリから呼び出されるような場合でも、
ld時にそのライブラリも -lxxx2 で指定するのだから、
結局ldがすべて判断できる。

dlopen()の場合は考慮しないということで。

584 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:09:30 ]
>>580
残念ながら改悪だと思われ。

585 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:10:24 ]
>>583
考慮しろよww



586 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:11:14 ]
>>579
だから場合分けして考えろって。
違う物に同じ理屈で挑むなよ…

もし良いアイデアだと思うなら、自分で実装してみな。
俺等は使わないけど、君みたいな人が他にもいるかもしれん。

587 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:11:24 ]
>>582
dlopen()するようなプログラムなら、
そのプログラムの「実行時の責任」で必要なライブラリを
プログラムでロードするから、今の議論とは関係なし。(考えなくて良い)






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<219KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef