http://www.kt.rim.or.jp/~kbk/zakkicho/index.html - 11/21/09 07:05:07 - 10/07/08 13:59:44
2009年11月01日
・日本シリーズ なんですかそれ?(笑)
・Interface 隔月で連載しているらしい「 新・組み込みソフトへの数理的アプローチ」 ってのがなかなか面白くて連載の前のほうのも読んでみたいのだけど、 どっかにバックナンバーないかしらん。 昔だったら会社で買ってたんだけどねえ。 まあ、買えばいいのなら置いてる店はあるんだけど。 2009年12月号 目次|Interface
■_ わけわからん
いろんな人がいますねえ。
限界です -OKWave ~.jp/a.php? → ~.jp/a/ に httacsessの書き方3つ補足してください。 ・カテゴリ「その他(プログラミング)」と「~.jp/a.php? → ~.jp/a/ に httacsessの書き方」の関係は? ・質問の内容は? ・何が「限界」なの?>>・カテゴリ「その他(プログラミング)」と「~.jp/a.php? → ~.jp/a/ に httacsessの書き方」の関係は? 物理的なもですか又は論理的或いは定義の様なものですか。 一言「関係性」と言われましても何がどのように或いはどのような関係性を知りたいか又はどん な根拠で何を聞くことが目的なのか又は逆に関係性がないと意図することが目的の場合は何が違 うのかを明確且明朗に記載後でないとこちらとしてもお答えできません。 まずはここの点追記お願いいたします。 さて次ですけど>>・質問の内容は? については質問の内容が理解できていないと言う意味合いで解釈させていただきますけどでは逆 に質問内容が理解できていない状況で「教えてGOO」と言う理解者が理解者の判断でお答えす る場所で強制的ではない質問に対しましてなぜに分からない質問に答えたのかまずはここの点に 関しましてお答えいただきたいです。 えっと次ですけど>>・何が「限界」なの? これですけど「限界」と言うものの意味或いは個々の理解力や育った環境により人により様々な 捕らえ方をされるとは思いますけど私が言う「限界」とはいわゆる一般的な「限界」と思ってい ただければと思います。まことに申し訳ありませんけど「限界」と言うものの詳しい説明はお控 えさせていただきたいと思います。なぜならサイト上質問が解決すると言う場所での或いは趣旨 に対しましての「限界」の意味合いと言うものをお答えすることにより質問が解決するかと言い ますとこれは非常に低いからです。 あくまでも個人的見解になります。 またサイトの性質上論争などをする場所ではありませんからぜひここは一歩大人になり争いを望 むようなそのような無礼なご回答は避けていただきたいと感じます。#1です。 補足を読ませていただきました。 その上で、 ・なぜ、「httacsessの書き方」を「その他(プログラミング)」というカテゴリに投稿するのか? (プログラマなら当然「httacsessの書き方」に詳しいと思っているのか?) ・「~.jp/a.php? → ~.jp/a/ に httacsessの書き方」を読んで、どれだけの人が内容を理 解できると思いますか?どこまで出来て、どこまで出来ないかも記載されていない。1から書き 方の説明をしてという要望でしょうか? 回答者達は超能力者でも神様でもありませんので、この文章から質問をくみ取らなければいけな いのでしょうか?定義付けも根拠も記載のない或いは出来ない状況で他人批判はあまりに幼稚です。 補足について一言も明確なお答えできていませんよね。 まあの流れを見たらどちらが負けか明らかでしょう。 不明朗なご回答有り難う御座いました。そして予想外の結末を迎えたこれ。
fgetsのエラー -OKWave C言語でテキストファイルをfgetsで読み込み、for文でfgetsを繰り返しているのですが、テキス トファイルの15003行目でfgetsのエラーが出てしまい、止まってしまいます。 20000行まで読み込みたいのですが出来ません。 繰り返しが悪いのかと思い、for文を(i=0;i<10000;i++)と(i=10000;i<20000;i++)で分け ても読み込んでも同じ結果でした。 テキストファイルが13880行までの場合はうまくいきました。 ↓Cプログラム↓ FILE *fpo; char line[4096]; for (i=0; i<20000; i++) { if (fgets(line, sizeof(line), fpo) == NULL) return(0); sscanf(line, "%d %lf %lf %lf %lf %lf %lf", &typep[i], &x[0][i], &x[1][i], &v[0][i], &v[1][i],&p[i], &n[i]); //lineのデータを1つ1つ読み込む } ↓エラー文↓ Debug Assertion Failed! File: f:\dd\vctools\crt_bld\self_x86\crt\src\fgets.c Line:57 Expression:(str!=NULL) なにが原因なのか分かりません。 よろしくお願いします。ソースコードを見直していたら、for文の繰り返し数よりも、配列の個数が少なく止まっていました。 (forは20000回、x[15000]で足りませんでした) fgetsの関数の原因ではなく、すごく初歩な原因でした。 改めて、勝手な思い込みは良くないと思いました。ずこーっ(AA略
■_ 理屈がおかしいとは思わないんだろうか
知恵袋編。
2分探索木の問題を高校2年の実習でやらされてるんですが、よく分かりません。 課題... - Yahoo!知恵袋 2分探索木の問題を高校2年の実習でやらされてるんですが、よく分かりません。 課題... yosiko_0121さん 2分探索木の問題を高校2年の実習でやらされてるんですが、よく分かりません。 課題内容は2分探索木へのデータの追加です。 15のノードを持つ階層3まである2分探索木がある。この2分探索木を大きな15の配列「nodes」で表 現する。そして、新たにデータを追加したときに、適切な要素に適切な情報(追加データやそれに繋 がる左部分木や右部分木)が格納されるようなプログラムを作成せよ。 条件(1)2分探索木のノードを以下のような構造体で定義せよ。それを、大きさ15の配列「nodes」 で宣言して使用せよ。 struct node{ int data; struct node *left; struct node *right: }; (2)2分探索木の初期設定はnodes[0]が20、[1]が10、[2]が40、[3]が5、[4]が15、[5]が30、 [6]が50、残りはNULLです。 (3)変数名は以下の通りにする。 ●15個のノードを表す配列:nodes ●配列nodesの制御変数:i ●追加データ格納領域:indata ●ポインタ処理用のワーク領域:p(struct node型) その他、必要に応じて各自で宣言せよ。 (4)データを1個追加するごとに、現在の配列nodesの状態を表示せよ。 (5)データを1個追加するごとに、データ追加処理を継続するのかどうかの確認をせよ。 この条件で、課題のプログラムを作成してください お願いしますっ(汗) 補足 学校のことは関係ありません やり方を教えてもらいたいんです「やり方」を教えてもらいたい、ではなく現物が欲しいと書いてますが… 丸投げをやってくれる人もいますが不快に思っている人もいます。 課題の丸投げは某巨大掲示板に請け負っているところがあるので、そこに投げてください。 http://pc12.2ch.net/tech/> 2分探索木の問題を高校2年の実習でやらされてるんですが、よく分かりません。 > この条件で、課題のプログラムを作成してください 「やらされている」と感じるのではつらいでしょう。 プログラミングの勉強をする気もないようですし、親御さんに相談して、プログラミングがない 学校への転入などを考えるのがいいのでは? > やり方を教えてもらいたいんです 作成依頼をするつもりはなかったし、勉強する気もあるのだが、文章を書き間違えたということ? きちんと学費を払っているなら、「やり方」を教えるのは、学校の先生のメインの「お仕事(義 務)」でしょうから、学校の先生に聞くのが一番かと。。。実装には様々あるでしょうし、下手 な回答を鵜呑みにして悪いプログラミングスタイルが身についてしまう危険を冒すより、きちん としたプログラミングスタイルを先生から学ぶほうがいい。 各人の実力を知りたいための課題なら締め切り後には教えてくれるでしょうし、そうではなく実 力アップのための課題なら少なくともヒントくらいはもらえるでしょう(そうでないなら、怠慢 教師だと、学校にクレームを言うべきだ)。 先生に作成依頼したら、断られるでしょうけどね。丸投げじゃないけど、参考にしたいのでソースくださいってのは割りとよく見るパターンですね。
■_ 今日の2ch
例の大規模ホスト規制のせいか、どのスレもあまり伸びていないような。
この会社辞めようと思ったソースコード#1B [chaika] 906 仕様書無しさん [sage] 2009/10/31(土) 20:42:45 ID: Be: 隣の先輩のコードが if (memcmp(・・・) == TRUE) と、なってて、そりゃねーだろと思ったけど、定義をみてみたら、 #define TRUE 0 #define FALSE -1 で、まあ、気持ち悪いけど、これなら動くなと思ってたら if (memcmp(・・・) == FALSE) って、書いてるところもあって、やっぱこりゃだめだと思った。 何日かしたら、やっぱり「なんでこれ、こんな動きなんだ!」みたいに騒ぎだして、 わかってる人から、「そこは != 0 だよ」みたいに教えてもらってた。 「あれ、おれ、なんでこんな書き方してるんだ、ほかのソースはちゃんと書けているのに」 って言い訳をはじめたけど、たしかに、その先輩は基本的に人のソースをマネして 書く人なんで、どうしてそんなところだけ独自に書いてバグってんだって感じ。 それから memcmpを検索して、順番に == TRUE だったら == 0 に == FALSE だったら != 0 に 書き直していってたけど、そんな修正してたらミスらねーか? って思ってたらやっぱり何箇所か == FALSE を == 0 って修正ミスしてた。 俺には関係ないから黙ってたけど。 907 仕様書無しさん [sage] 2009/11/01(日) 04:29:27 ID: Be: 行き当たりばったりか。 そのまま行き倒れりゃいいんだけどな。TRUEが0ってはなんか怖いなw
Emacs Lisp にも「モダンな書き方」とかあるんですかね。
Emacs Part 32 164 名無しさん@お腹いっぱい。 [sage] 2009/10/31(土) 16:44:29 ID: Be: 外国では(add-to-list 'load-path "path")の書き方が普通なのに 日本では(setq load-path (cons "path" 'load-pat))と書く人が多いね。 明らかに前者の方が簡潔だと思うけど後者の書き方には何かメリットがあるのかな? 165 名無しさん@お腹いっぱい。 [sage] 2009/10/31(土) 16:59:09 ID: Be: 代々伝わる秘伝のタレの味。 166 名無しさん@お腹いっぱい。 [sage] 2009/10/31(土) 17:07:05 ID: Be: >>164 > (cons "path" 'load-pat))と書く人が多いね。 まあ、そんな短いS式の中で2つも間違いを犯すような君はコピペで我慢してなさいってこった。 167 名無しさん@お腹いっぱい。 [sage] 2009/10/31(土) 17:08:21 ID: Be: 昔add-to-listはなかった。ただそれだけのこと。 168 名無しさん@お腹いっぱい。 [sage] 2009/10/31(土) 19:10:19 ID: Be: じゃあ後方互換性のためにconsを使うべきだな 169 名無しさん@お腹いっぱい。 [sage] 2009/10/31(土) 19:41:36 ID: Be: push派は少ないのだろうか。 170 名無しさん@お腹いっぱい。 [sage] 2009/10/31(土) 19:58:01 ID: Be: nconc派 176 名無しさん@お腹いっぱい。 [] 2009/11/01(日) 08:18:07 ID: Be: >>167 > 昔add-to-listはなかった。ただそれだけのこと。 あと、無意味に重いので忌避されていた。 177 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 10:58:50 ID: Be: へ? 178 Zeno ◆5nZQbNmQPs [] 2009/11/01(日) 11:03:44 ID: Be: >>168->>171 add-to-list は重複チェックをしてくれる。 そのことを知らない初心者に cons や push を使った やり方を勧めるのは推奨されない。 つまり貴様等頭は普通に add-to-list を使っていれば良いということだ。 179 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 11:21:47 ID: Be: そういえば昔は、「空白連ねるな、タブに変換しとけ」だったんだよな。 ファイルサイズを縮小するために。 180 Zeno ◆5nZQbNmQPs [] 2009/11/01(日) 11:40:37 ID: Be: >>179 ソース内でタブを使うことは推奨されない。 181 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 11:52:19 ID: Be: >>178 なるほど、勉強になる。 .emacs なんて、web上のものを切り貼りすることしかできないので、 その辺が全然統一されてないわ。 とりあえず、add-to-list を使っておくのが安全なんですね。 182 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 14:42:57 ID: Be: 勉強になるとか言って勉強する気ない奴の典型 183 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 15:04:47 ID: Be: 何かいやなことでもあったのか? 184 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 16:22:14 ID: Be: ちょっとな 185 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 18:47:24 ID: Be: >>180 なぜだ? 186 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 19:08:34 ID: Be: add-to-listの重複チェックとか常識すぐる 187 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 19:19:43 ID: Be: 「知ってる奴にとっては」な 188 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 22:22:54 ID: Be: listにaddする、と聞いた時点で「重複チェックは?」と思い至るようでないと emacsは難しい。 189 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 22:53:59 ID: Be: 重複チェックするだけなのに無意味に重いってこたないだろ。 add-to-listはループ内で使うのが普通とかならともかく。 190 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 23:11:01 ID: Be: センス無い人ってほんと徹底してセンス無いよな 191 名無しさん@お腹いっぱい。 [sage] 2009/11/01(日) 23:47:33 ID: Be: emacsで重いって起動時だけでしょ? 前の方のレスにも起動が遅くなったとかレスがあるけど どうせPC立ち上げてすぐemacs起動したらずっとそのままだし全然気にならん。
- Twitter / なぎせゆうき: @wtnabe はプレゼンうまいな。聞いていて面白い ...
- 涼宮ハルヒ エンドレスエイト1と2 仕入数はどのくらい違うの? - アキバBlog
アキバのいくつかのお店に、エンドレスエイト1と2の仕入れ数がどのくらい違うか聞いてみたら、今回のエンドレスエイト2(涼宮ハルヒの憂鬱 5.285714)は、 エンドレスエイト1コ目の6割前後の仕入れ数というお店が複数で、お店によってはもっと減らしたというところもあった。- HIMA & 忘年会 - あどけない話
- Twitter / Hiroki Fukagawa: @hiratara モナドで悟りを得たかったら、層圏 ...
- Hexenkessel - 都心の大型書店やアマゾン・コムを使い慣れている人は、たとえ少部数しか出版されていなくても、自分の求める...
- Hexenkessel - GoogleにしろAmazonにしろ、マネタイズに成功するということは他者に儲けられる方法を提供するこ...
- パソコンはどうやって作られる? - Yahoo!知恵袋
- 【250枚】rhinosugarさん この関数をお願いしたいです(他の方でもいいですよ!) - Yahoo!知恵袋
折角ご指名にあずかりながら恐縮ですが、このケースで意味もなく試作品をお見せする事は単なる「無駄」ですので、ご遠慮申上げます。あしからず御了承ください。- Twitter / 梶本裕介: PHPって初心者にも使いやすいふりして世の中にゴミコ ...
- LET OVER LAMBDA - hidemonの日記
Lispのマクロにちょっとでも似たものが他の言語にあるとすれば,C++のテンプレートだと思うのだが.LisperにとってはC++は論外なのだろうか?
たぶん。- 「制作会社に採用されなくてよかった」原作者・竜騎士07の挫折と下克上(後編) - 日刊サイゾー
- AIXの勉強方法について -OKWave
- 配列とポインタの奇妙な関係
- Twitter / やのつとむ: またモナドの話だけど、群論が分からんでも足し算が使い ...
- Twitter / やのつとむ: IOモナドって一種の詐欺みたいなもんだから,真剣に考 ...
■_ mawk
mawk の正規表現エンジンについてちょっとだけ書いておくと
/* returns start of first longest match and the length by reference. If no match returns NULL and length zero */ char *REmatch(str, machine, lenp) char *str ; PTR machine ; unsigned *lenp ; { register STATE *m = (STATE *) machine ; register unsigned char *s = (unsigned char*)str ; unsigned char *ss ; register RT_STATE *stackp ; int u_flag, t ; unsigned char *str_end, *ts ; /* state of current best match stored here */ unsigned char *cb_ss ; /* the start */ unsigned char *cb_e ; /* the end , pts at first char not matched */ /*printf("REMatch");*/ *lenp = 0 ; /* fprintf(stdout, "in REmatch()\n");*/ /* check for the easy case */ if ((m + 1)->type == M_ACCEPT && m->type == M_STR) { if (ts = str_str(s, (unsigned char*)m->data.str, m->len)) *lenp = m->len ; /* fprintf(stdout, "out REmatch()\n"); */ return ts ; } u_flag = U_ON ; cb_ss = ss = str_end = (char *) 0 ; stackp = RE_run_stack_empty ; goto reswitch ; refill : if (stackp == RE_run_stack_empty) { if (cb_ss) *lenp = cb_e - cb_ss ; /* fprintf(stdout, "out REmatch()\n"); */ /* fprintf(stdout, "len = %d\n", *lenp); */ return cb_ss ; } ss = stackp->ss ; s = stackp--->s ; if (cb_ss) /* does new state start too late ? */ { if (ss) { if (cb_ss < ss) goto refill ; } else if (cb_ss < s) goto refill ; } m = (stackp + 1)->m ; u_flag = (stackp + 1)->u ; reswitch : switch (m->type + u_flag) { case M_STR + U_OFF + END_OFF: if (strncmp(s, m->data.str, m->len)) goto refill ; if (!ss) { if (cb_ss && s > cb_ss) goto refill ; else ss = s ; } s += m->len ; m++ ; goto reswitch ; case M_STR + U_OFF + END_ON:内部表現にコンパイルしたあとのマッチングで、こんな感じの switch 文 + goto でぐるぐる回ってくのですね。 んで、一文字 == 1byte って決め打ちしているようなところがあるので、 途中でマッチングに失敗してバックトラックするときの動作をマルチバイト文字に 対応させるのがちょっと大変と。