- 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/
- 437 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/03(火) 13:31:30 ]
- ファイルとディレクトリの equality は適当に定義出来
るとして、↓みたいになるかな。 for (File src = each of srcDir) { File dst = dstDir.Find(src); if (dst == null) { // src にしかない } else if (src != dst) { // 違う } } for (File dst = rest of dstDir) { // dst にしかない } each of …は都度 readdir して、Find は保持してるプー ルから探して、無ければ見つかるまで readdir、してプー ルに入れていく感じ。見つかったらプールから削除して おいて rest of …でそれを得る。
- 438 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/03(火) 14:07:34 ]
- 両方コレクションにいれて、ソートして、
先頭二つ、計四つを比較しながら取り出せばいい。 四つになるのはどちらが欠けているかわからないから。 どれも違う場合、四つの中で小さいの二つを捨てればいい。 AB AB AB BC BC AB - AB CD AC BD
- 439 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/03(火) 14:16:00 ]
- >>438
ファイル/ディレクトリの equality と同様に順序付け も定義出来るなら(ソートするからには出来るはずだ)、 先読みする必要はない。マージソートの要領だ。
- 440 名前:名無しさん@お腹いっぱい。 [2009/03/12(木) 19:41:22 ]
- dirp=opendir(".");
printf("1 :%d;\n",telldir(dirp)); printf("2 :%d;\n",telldir(dirp)); printf("3 :%d;\n",telldir(dirp)); closedir(dirp); とすると返す値は1,2,3とどんどんインクリメントしていくだけだし seekdirは無反応rewinddirは巻き戻すばかりかtelldirをひとつ進めるだけ readdirとかはちゃんとできているんだけれど 何か呪文とかいるのかダメダメな関数なのか情報please
- 441 名前:名無しさん@お腹いっぱい。 [2009/03/12(木) 19:51:28 ]
- >>440 OSはFreeBSDです。
- 442 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 20:15:55 ]
- たぶん実装がおかしいんだろう。MacOS Xも同様らしい。
ttp://idm.s9.xrea.com/ratio/2007/09/10/000673.html dirent読むのにtelldirやseekdir使うようなやつはいないから放置されてると想像。
- 443 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 20:24:17 ]
- 追加。このへん関係あるかも。
ttp://www.freebsd.org/cgi/query-pr.cgi?pr=bin/121656
- 444 名前:名無しさん@お腹いっぱい。 [2009/03/12(木) 20:32:49 ]
- >>440です。rewinddirの記述は間違っていました。
rewinddirとreaddirだけが使えます。 で調べたらscandirというのがありました。 mallocしてくれて配列に入れて関数指定すればsortもしてくれるようなので コールバックもsort関数に入れます。 >>435もscandir+lstatでいいのでは? しかしひどすぎるなtelldir+seekdir ファイルの多いディレクトリーでちょろちょろよむもん作りたかったんだけど 一気読みが基本ですか?
- 445 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 20:38:50 ]
- とりあえずコールバック抜きのアルファソートやってみた。
c = scandir(dirname, &namelist, NULL, alphasort); if(c == -1) { puts("not opendir"); return(1); } printf ("%d\n", c); for (i = 0; i < c; ++i) { printf ("%s\n", namelist[i]->d_name); free(namelist[i]); } free(namelist); opendirの苦労は一体....orz
- 446 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 20:40:17 ]
- >>435
opendir -> ディレクトリをファイルとして開く readdir -> ディレクトリのエントリを一つ読み込む(ポインタ一個進む) seekdir -> ディレクトリのエントリを x 番目にセットする telldir -> 今いるエントリ位置を報告する を組み合わせて, 双方のエントリを比較して 1. 対象物の inode が同じなら処理スキップ 2. 対象物が ディレクトリなら, 自分自身を再帰的に呼び出す 3. 対象物がファイルなら中身を比較 すればええんちゃう?
- 447 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 20:46:16 ]
- 既に読んだエントリに戻って読み直すシチュエーションがわからん。
仮にtelldir/seekdirの動作がまともでも、 いちいち物理的にディレクトリ読みに行くような実装だったりしたら、 遅いし最中に誰かがいじらんとも限らんし、いいことなしでは? キャッシュしてるんだとすれば一気読みと何も変わらんし。 というわけで、telldir/seekdirは価値なしなんじゃないかと。
- 448 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 21:00:32 ]
- >>447
再帰して必要物がなくって、バックトラックするときに 変わってしまった状態を元に戻すために必要 recur_dir(... here = telldir(... if (このエントリが dir && 比較対象と違う) if (recur_dir(...) == succeed) return なんとか ここに戻ってきた場合何がどうなってるか保証できない seekdir(here) 続きの処理
- 449 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 21:56:26 ]
- 何がどうなってるか保証できない状態なら
telldirしたところにseekdirしても保証できないだろう
- 450 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/15(日) 11:44:20 ]
- ストリームとしてファイルリストをチェックしていくならseekとかは必須だと思うけれど
telldirもseekdirも機能しないんだから必要でも存在しない事実をどうする。 一旦readdirだかscandirでざっくりと読み込んで それに対して操作するしか方法が無いのが現実。 バックアップとかで完全一致を目指す場合 「ほぼあっている」前提ならば結局ファイル自体の完全マッチをするしかないと思うが 事前にMD5とかSHA1とかとったリストをディレクトリーに入れとけばそれで済む気はする。
- 451 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 11:41:43 ]
- なんだ。ftsとかftwというファイル階層を歩くライブラリーが標準であるんじゃないか。
少なくともperlの「find::file」と同じ事はftwだけでできた。 最低の作り方でもftwのコールバックで配列を構築すればいいわけだし scandirとか使ってバカみたいだった。 何気にファイルユーティリティが固まってきたよ。
- 452 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 14:33:22 ]
- opendir/readdir/closedirは、
fts, ftw辺りを書く人のためのシステムコールなんだよね。 まあ自分で書くのも悪くないけど、 scandir/telldirは使わないことをお勧めする。 >>448に書いてあるようなことは、 "concurrent data structure"と言うべきものだけど、 (Javaのiteratorのremove()のような) UNIXのシステムコールは、"concurrent directory"を 直接的にはサポートしない。 昔、間接的にサポートするために、 update notifyが上がるUNIXenを見たことがあるが、 何だったか忘れてしまった…
- 453 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 15:25:32 ]
- 変な用語持ち出して論理に飛躍のあること言い出す輩が出てきたな
- 454 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 16:33:31 ]
- 用語が理解できないのを論理に飛躍があることにする輩が出てきたな
- 455 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 11:19:17 ]
- >>452
> opendir/readdir/closedirは、 > fts, ftw辺りを書く人のためのシステムコールなんだよね。 ちゃうやろ…と思って見てみたけど、ffs(ftw) って "." を open() してあれこれしてるだけだよ。 ttp://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/fts.c?rev=1.30;content-type=text%2Fplain
- 456 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 11:42:34 ]
- >>455
違う。 open(2)は後から戻る時にfchdir(2)するため。 パスで辿ると別のところに行く可能性あるから。
- 457 名前:名無しさん@お腹いっぱい。 [2009/03/26(木) 19:54:47 ]
- >>456 少なくともFreeBSDでftsもftwもchdirのオプションをつけようがつけまいが起動時のディレクトリーがカレントだった。
つまり子ディレクトリーの階層に移っていても「getenv("PWD")」の返り値は スタートの場所 コールバック書くときにchdirされていると思って組むとはまる。 素直にpathなりを使う。 詳細システムコールの実装はともかくファイルリストの取得も含めて ファイルサイズとか必要なんだったらftwかftsを使えばかなり楽なわけで 組みもしないで妄言はいていないでとりあえず組んで自分なりのベストをみっければいいんじゃないかと思う。 ftwはソートされないので一様に処理する場合以外は使えないかなと思ったけれど コード量がとにかく少ない
- 458 名前:名無しさん@お腹いっぱい。 [2009/03/26(木) 19:56:43 ]
- とにかくディレクトリー内のリストが欲しいならばftwでコールバックで配列に書き込む方法
ツリー取得したいならばftsが良い。 ftwの後腐れのなさは結構魅力 別の選択肢としてpopenでls -lRの返り値もらうという手もある。 perlなら「``」の返り値もらうだけだな。パースは適当にやってくれ
- 459 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/27(金) 09:41:21 ]
- >>455
そのソースを読めばopendir/readdirしていることが分かると思うが? 軽く検索しただけでいい加減なことを言わない方がいい。 NFSで動かないfts(3)を実装するわけがない。
- 460 名前:名無しさん@お腹いっぱい。 [2009/03/28(土) 16:53:22 ]
- >>459は「実際に組んでいない」んだから机上の空論はほどほどにね、
>>455のは客観的なソース評価であるし間違ってはいないし 掲示板でいい加減な事をいっても何の問題もない NFSなんて使わないでしらないけれどtelldir,seekdirすら動かないんだから ftsがNFSで動かないくらい全然あってもおかしくない
- 461 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/28(土) 18:09:18 ]
- >>460
> >>455のは客観的なソース評価であるし間違ってはいないし > 掲示板でいい加減な事をいっても何の問題もない ( ゚д゚)ポカーン
- 462 名前:455 mailto:sage [2009/03/28(土) 22:14:14 ]
- ちゃうやろと思ったのは telldir/seekdir に関してだよ。
452 が opendir/readdir/closedir にしか言及してないってことに 気付いて無かった俺がアホなだけ。
- 463 名前: ◆RubyFahc/I mailto:sage [2009/03/31(火) 15:55:27 ]
- rubyおたく向けのトリップ創りました。
RubyFahc/I : #NcM--Cセ{ Ruby.qKt3Q : #%C/Y:gmk Ruby3r65m. : #h6d|TbE」 RubyWViHDk : #:jV|^?N~ Rubyi8CaTg : #jDt1G4`: RubymzWnxQ : #!N{o6VヲJ Rubyfo02Gg : #ヲYJ)ffn$ Rubyu9svnE : #+T-GT.Ti RubyypieqU : #+,K:ヲ%v[ RubyIoAFuU : #?)V0M]c` RubyNL3l2E : #C^?}8sヲq RubyredCpo : #JU@UkdMy Rubybk3Pyo : #hU@fQm,_ RubyYQ3Jtk : #m\4A?2'e Rubyvjyg76 : #XIQ{N$J3 RubyS4Qmog : #/aKG.b\* RubyPiJzfc : #_jq@zdZh Ruby24.u4U : #l[Lz\Y)h RubyVtS0bk : #pD'y$Zi\ Ruby4dt6ro : #「{Nv@f(0 RubymGCEfc : #9NXi[v|) RubylUmOgY : #+(dK「@X{ RubypDsPgo : #HfLO0Nr8 RubyRlH2oc : #/2)k|Gpu RubyYbNPnc : #シzU2.ヲ.L RubyyRsYeU : #/Spddm+A RubydSrMqw : #mx+9{[)c RubyiMB9bQ : #KMlaIaOr RubyOerZfE : #11J\EXK8
- 464 名前: ◆Ruby.c34.Q mailto:sage [2009/03/31(火) 15:57:16 ]
- Rubyl/JuN. : #{^3l?jM@
RubyMyu4iA : #g{@Sセ,'5 RubysBAU/s : #slubZ7サd RubyeT6Qio : #,)gAzFEX RubyDyS/e. : #サAbV1lG/ RubyRfMLNM : #Wシ」w[8}h Rubytc3JHQ : #Z=o\ib[サ Ruby1lE7L6 : #h1シ{A-kj RubyuUag0Y : #gヲ8!@W$n RubyG6B8e6 : #0+7サ=5VH RubyGguz1Q : #-g5i9\K8 RubyqzNGOo : #~t(mCuXQ RubycQw0oM : #]%}-N(Me RubynWWUBo : #PrU?「シJJ Ruby.c34.Q : #IS+zヲABセ RubyDdsChM : #qVKZI+{= RubyBu2YeQ : #B@[.Q-o2 RubyoIbx4o : #ヲ2:qwsJD RubyaL3Nm. : #k\uS\tFe RubyRGJW9Y : #9)`H%Pc+ RubyKHrqAU : #zrB_X@tC RubydeGFDA : #6「31rNEI
- 465 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 03:46:26 ]
- UNIXとC++どっちがいいでしょうか?
- 466 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 04:00:32 ]
- MACがいいと思います
- 467 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 05:00:56 ]
- マクドってゆえや
- 468 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 18:34:28 ]
- 取り敢えず今「ディレクトリ取得」スレ的な流れだと思うんだけど
NFSってみえないといけないの?あとサン婆 httpかftpとローカルデバイスだけあればいいという考えではだめ?
- 469 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 18:39:46 ]
- 今時ディレクトリをread(2)出来るアホなUFS on UNIXは、
BSDくらいだと思うが、他にもあればリスト化希望。
- 470 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 20:57:02 ]
- プログラマーになりたい・・
作曲家になりたい・・・ フラッシュ職人になりたい・・ 絵師になりたい・・ 俺にできるだろうか?
- 471 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 21:05:01 ]
- なるだけならすぐなれる
- 472 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 21:14:23 ]
- 「プログラムを組む」のと「プログラマーになる」のは違う
「適当な曲を作曲する」のと「作曲家になる」のは違う (以下同) よって、「なるだけ」でもすぐにはなれない
- 473 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 21:27:55 ]
- そうか・・
やはり必要なのはCですよね
- 474 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 21:29:10 ]
- プログラマになりたくてなるんじゃないなってしまう者がプログラマ
貧弱一般人がプログラマになろうとしてもここはUNIX界なので人工的に淘汰されるのが目に見えている
- 475 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 21:37:57 ]
- なってしまう・・とはどういうことかもう少し詳しく聞かしてほしい
- 476 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 21:41:10 ]
- ようするに、才能じゃね?
- 477 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 21:47:36 ]
- このプログラム腐ってやがる→仕方が無い、自分で直すか…
このプログラム良いんだけど、ちょっと機能が足りないな→仕方が無い、自分で直すか… このプログラム良いな、どうやって実装してるんだろう→ソース読むか… 新人プログラマは頑張ってるんだけど、仕事ができねえ→仕方が無い、俺が実装するか… どうも業務の効率が悪いな→一丁、便利スクリプト作ってやるか… 俺は↑こんな感じでプログラムを書く様になったけど、 >>474が言ってるのはまた別の事かな。
- 478 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 21:59:08 ]
- >>474
の言葉のせいで無理なような気がしてきた(´・ω・)
- 479 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/03(金) 22:33:27 ]
- つまり、それほど、重く受け止めてしまうほどの意味深い言葉に聞こえたのです
- 480 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 10:45:18 ]
- >>474はブロントさんだろう。一級プログラマとして
一般人から見ると憧れの的
- 481 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 11:11:11 ]
- >>480
ブロントさん==一級プログラマ ????
- 482 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 11:14:06 ]
- >>477
お前、素質あるな。
- 483 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 12:31:19 ]
- >>477
ハッカー気質をお持ちだね。良いことだ。
- 484 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/05(日) 21:54:37 ]
- 初歩的な質問ですが、
みなさん童貞ですか?
- 485 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/05(日) 22:20:56 ]
- いいえ、妖精です。
- 486 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/05(日) 22:49:29 ]
- 君もウィザードだろ?
- 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のプログラムも必要だな。 ツールキットは何を使う予定?
|

|