[6549] 10月は3冊。じゃあ、11月は何冊読めるかなぁ?このペースだと積読本は今年中には無理ですが… 発言者:kette  投稿日:2007.10.31(水) 23:30:34
今月から(と言ってももう11月になりますが)小説を再び読み始めたketteです。
長かった…。本気で読もうと思うまで1年以上かかるとは…。
というわけで、くじびき3巻まで読了しました。感想はまた後ほど、時間が空いたときにでも書き込もうと思います。
何とか今年中には5巻まで読み終えたいです。
今のままでいけば余裕でいけるはずなんですがね。11月は更に忙しさが増すようなので…。

>今主題になってる品は首突っ込むと混乱しそう
分かる方は極々一部だと思うのでスルーでいいかと思います。
分からないことは首を突っ込まないのが無難です。
まあ、時間があっても今月書き込まなかった理由がこれなんですけどね。

>原産国表示義務
といっても何のことか分からないと思うので、ちょっとだけ説明を。
メガネフレーム、レンズに原産国を表示させることが義務化されました。
俗に言う、「メイドイン○○」というやつですね。
このフレームはどこどこ産のですよ、とお客に教えるものです。

中国産での問題に伴い、行う事になってしまったことなんですが、メガネフレーム、レンズに関してお客はあまり関心がないようです。
というか、表示されていることも気づいていないようです。
ごくたまに「これは中国製ですか?」と聞く方もいますが。しかも聞いてくる人の多くは買わずに帰ってしまいますがね。
私はまだ持ってきたフレームが中国産だったことがないのですが、実際中国産だった場合、買わずにおくのか、それとも気にせず買っていくのか、どっちのなるんだろう?と言う疑問がそれとなくあったりします。人によりけりなんでしょうけどね。

1ヶ月のほとんどが22時上がり、23時帰宅の日々を過ごしているketteでした。
 
管理人より
おやおや。拘束時間的に多忙な毎日をすごされてますね。お疲れさまです。
本。買った翌日までに読まないと、積ん読になりがちですね。雑誌も含めて……。
原産地表示義務。CDでもちゃんとやって欲しいですね。何年頃、どこそこの国(プレス工場)から出荷されたものが、すぐ酸化して聴けなくなるとか、劣化した盤が再生中に割れてプレーヤーを壊すとか情報だけは出回ってるのに、肝心のCDがどれかわかりませんからねぇ。
まあ、それはともかく中国産問題。大きな国なのに十把一からげに扱うのはどうなのでしょう?
地域ごとに問題の多い場所とマジメな場所があると思うのですけどねぇ……。
メイドインUSAも、ハワイ、カリフォルニア、フロリダと表示されることがあるので、そこまでやってもいいのではないかと。

[6548] バタフライ演算なんか大嫌い; 発言者:ブラケット  投稿日:2007.10.30(火) 02:07:36
卒論書きってのがどれほど大変か、体験中のブラケットです。
はっきり言って「ないない尽くし」です(もう、11月入るのに)。
ネタといい、バグ位置といい、こんなんで卒業できるんだろうかと不安で・・・

そのせいかどうか分かりませんが、最近は精神が不安定で、自分が怖い・・・;
一番ひどい時にネット上でうつ診断テストをやったら、危険域だ病的だと言われたので余計に・・・

今主題になってる品は首突っ込むと混乱しそうなので、分かる題目だけ・・・

>透湿性雨合羽
合羽も防水スプレー要るんですね。初めて知った・・・
でもそれだと水が通らなくなって透湿じゃなくなるような・・・そんな都合よく行きましたっけ?

雨にぬれても干しとけば洗わなくても使えそうなイメージあったんですけどね。合羽だし;
しかし一着ウン万円ですか・・・;おいそれと買えぬ品ではないかと思うのですが、
それを何度も買いなおした方も凄いかと。

追伸>
ちゃんと5巻は当日に買いましたよ?感想まだ書けてないですけど・・・人( ̄ω ̄;)スマセン
 
管理人より
バタフライ演算による畳み込み。コンピュータロジックの定番ですね。ソートなどにもありますし。
問題はどうやって処理を畳み込めるか……が、難しいのですけど。
防水スプレー。先日の台風で、そろそろまたカサに吹き付ける頃だと気付きました。雨が布に染み込んできて、柄を伝って手が濡れるぅ〜。

[6547] ぞくほ。 発言者:かどわき  投稿日:2007.10.28(日) 19:42:45
ってことで、ようやっと10.5へアップグレードが終わりました。
つっても何か特別なことをやったわけではないのですが。(^^;)

先の書き込みでも書いたとおり、外付けHDDが途中で止まってしまうのが問題(データが中途半端に書き換えられてしまっている?)かなと思って念のため外付けHDDの電源をOFFにしてインストールしたところ、あっさりと終わってました。(^^;;;) せっかくAppleのディスカッションボードまで見てインストール方法を調べたというのに。(^^;;;)

ところで「ダメージがない」と書いていた各種データですが、そういえば個人サイトのネタファイルがごっそりなくなっちゃってるのに気付きました。(^^;) ま、調子に乗りすぎて脈絡のないサイトデザインになってたので、この機会に書き直しておこうかなっと思います。(ついでにiWebからBiNDに乗り換えちまおうかな、とか思ってるのは秘密です(^^;;)
 
管理人より
あらら、原因は外付けのHDDでしたか。悩ましいですねぇ。
サイト編集ソフト。これは何を使うか悩みますね。DWは高すぎて、BiNDも微妙に高い……。(苦笑)

[6546] まともにインストールできないインストーラって何よ。(^^;) 発言者:かどわき  投稿日:2007.10.27(土) 18:48:15
っつーことで、新し物好きなかどわきもご多分に漏れず(?)MacOSX10.5を購入してきました。
で、さっそくインストール──してみてタイトル参照。(爆)

いつもnobodyさんが書いてることけど、「Macの製品はバージョンが2〜3個上がるまでは地雷」ってのをこのような形で体験することになるとはねえ……。(^^;;;)

ちなみに今のこの書き込みですが、2〜3ヶ月前にバックアップ(ぉぃ(^^;))しておいたシステムからの起動です。
やっておいて良かったよバックアップ。(激苦笑)

現象としてはこんなの(↓):
1)外付けHDDに接続した状態でインストーラを起動→いつの間にか外付けHDDの電源が切れる(本体との接続が切れると電源が切れる仕様なのですよ)→ついでにインストーラも固まる。
2)なので外付けHDDを外してインストーラを起動→インストール*は*成功するけどログインできない。(爆)
3)しかたないのでクリーンインストール後に(外付けHDDを「他のMac」に見立てて)データ移行……するも、「のこり1分未満」のまま固まる。
4)外付けHDDを「他のMac」と見立てる代わりに「同じMacの別ボリューム」と見立てて再トライ→データ移行中に外付けHDDの電源が切れる。(更爆)

……てか、いっくらなんでもデータ移行中にデータの送り元の電源を切っちゃあまずいでしょ。(^"^#)

とりあえず家計簿データはサルベージできたから良かったけど(というかこれ以外には別になくなって困るファイルがない、ってのが救いっちゃ救いなんだけど(苦笑))、インストールするときに使うツールと、インストールした後に使うツールが揃って使い物にならないってことは、OSのアップグレードができないってのと同義なんじゃないでしょうかと、さすがにこれはアメリカのサンフランシスコだかクパチーノだかそっちの方向を向いて吠えてみる。(^^;)

……癪だからとりあえずセカンドマシン(Mac Book)と退役iBookにだけでもインストールしてみようかしら。(^^;;)

P.S.
僕は新宿のヨドバシカメラで購入しましたけど、銀座のAppleStoreの前はさすがにというかやはりというか、長蛇の列ができてました。(笑) < それが見えたからこそヨドバシカメラへ行ったのな、オレ(^^;)
 
管理人より
あ〜、トラブルが起きましたか。Leopard用のアップデータを出したソフトの方でもいろいろ不具合が出てるようですね。
ということがあるので、私は最初のアップデータが出るまで手を出さない人です。
それはともかくIntelMacにして気付いたこと。USB接続の外付けのHDDが認識されないことがありませんか?
この原因がIntelMacにあるのか、それとも外付けHDDにあるのかはわかりませんけど。

[6545] 無題 発言者:元霧雨  投稿日:2007.10.23(火) 22:40:03
>キャノピー
英国ではフードですね。
アクリルのお化け、傷と汚れがつきやすく整備兵の最大の敵らしいです。
ウチでは単発練習機にしかなかったかと。
柵の外に有るもので一番近いのは窓が壊れたトヨタ・セラ(分かる人いるかな?)だとか。間違ってもロードスターみたいな爽快な乗り物ではないそうです。
日除けに一応カーテンはありますが、殆ど役に立たないようです。
そういやヘリにも天窓あったような。

ウインドシールドといえば、Fー2開発時に原型から改設計されたところでもあります。
何でも、低空を飛ぶのでF-16のままだとバードストライクで陥没の恐れがあったので現在の3分割方式に変更したとか。

>透湿性合羽
自転車乗ってる分には凍結しませんし。
経年劣化(いわゆるシミテックス化)をくい止めるにはきちんとラベル通り洗うのと、撥水スプレーコートが一番です。
テキトーに洗って乾かして撥水スプレーかけないと半年で滲みてきます。
それで何枚もダメにした陸の方が居るとかいないとか。
1枚ウン万円もする雨衣をですよ?
 
管理人より
呼び方イロイロ。まさにところ変わればというか、品物変わればというか……。
高額の合羽を何枚も……。最近は無駄遣いに神経質になってますけど、多少は無駄遣いをしないと経済がまわらないんですよねぇ。

[6544] あれをプロの仕事というのならいっそ…… 発言者:かどわき  投稿日:2007.10.23(火) 07:17:44
この業界から足を洗ってやる! と言いたいところなんですが。(^^;) < けど結構まじ。

>実は無問題
「個人的」には認識していますが、いくら無問題だし客が怒らない程度の品質とはいっても、「プロとしてやっちゃならない限界」ってのがあると思うのですよ。そりゃまあ自分も時おりしでかしますから「よく見てみたらファイル閉じ忘れてるよね」みたいなのは許さないでもないですが(ぉぃ)、ここまであからさまなのはプロの仕事としてどうよと。

ちなみに僕自身は、あのコードが「どうせ無問題だから」と手を抜かれたコードだとはこれっぽっちも信じちゃいません。(知ってて手を抜いているのなら最後のfreeもかけないでしょ。少なくとも僕がコードを書くならそうします(爆) < 書かないけどね(更爆))

……けどま、ブー垂れてばかりでも建設的ではないので方向転換です。

>最低ライン
アジャイルモデル駆動開発というのが興味深いです。
「ドキュメントなんて相手に言いたいことが伝わればいい」「ドキュメントをまとめる暇があればコーディングしろ」と、「以前どこかでよく聞いたこと」と同じキーワードを使っているのに、まったく見えてくる世界が違うんですよね。(微苦笑 & 笑)

このアジャイルモデル駆動開発、ISO9000sのような「官僚的」な管理手法とどの程度相性がいいのか(or悪いのか)についても興味があります。(^o^)
 
管理人より
プロとしてやるべきでないこと。マンガ家なら表現として以外のコピーや切り抜き。小説家なら文章丸々のコピペですかねぇ。
つい楽をしようと、平気で限界を突破する人は多々いると思いますけど。
最低ラインマニュアル。まあ、マニュアルはないでしょうけど、これはかなり危険と隣り合わせですよ。運用開始直後は問題なくても、すぐに劣化が始まって最低ラインをすぐ越えますから。事件事故を起こした企業って、だいたい発端はこの最低ラインマニュアルの運用開始だったりします。

[6543] 割り切りの問題 発言者:nobody  投稿日:2007.10.22(日) 03:42:47
他人に、多くを期待してはいけません。
以前も書きましたが、客が怒らない程度の品質で納品し、利益を出すのがプロです。
※なお、自分で作るときは漏れなく作ります。手を抜いても大丈夫と判っていても、ね。

●詳細設計書を後から作成
 多いです。というか、そっちの方が多い。
 外部設計書までは先に作るし、結合テストの手順書も先につくるけど、細かい部分は後回し。
 優先順位は「納期 > 模擬本番テスト > 結合テスト > ドキュメント」ですね。

 スケジュールを無視して仕様変更を出す客が大半を占めますので、本来の手順を守っていたら納期に間に合いません。
 詳細はリリース後に作成して別途納品、です。
 時間がなくて、一部ダミーを納品した事も…… (後日、メンテの際に差し替えたけど)

・最近の仕事での納品物は「クラス設計書まで」が多いです。
 あまり意味がない事に気付いている客が多くなったので、その分割り引くと言えば……

●メモリ解放・ファイルのクローズ
 exitする場合、まともなOSなら必要ありません。
 共有メモリなど、一部の例外を除けば、プロセス終了で全部解放される『筈』ですから。
 実際には解放してくれない欠陥OSが普及しているため……

●DBのトランザクション処理中にいきなりプログラム終了
 これも実は問題なし。
 たいていのDBで、ロールバックされる事になってます。
 一部、困ったDBがありますが……(愚痴:だからOracleかDB2使おうよ、その方が結果的に安いって)

■異常終了時の動作を重要視しない かつ OSを定期的にリブートする環境ならば、資源解放がイイカゲンでも問題ないのです。
 多くの場合、使っているOSが欠陥品だから: OS単体でもメモリリークする、論外な奴なので、
 アプリでリークする量がOSでリークする量より少なければ問題なし、です。
 
管理人より
客が怒らない程度の品質。それはくじびき5番札の、蘊蓄暴走のことですかぁ???(苦笑)
まあ、それはともかく。時間と仕事量の制約を考えると、ほとんどの仕事は品質の最低ラインをどの部分に設定するかが大切ですね。自己満足で最高の品質を目指すのは勝手ですが、それでは多くの場合は仕事になりませんから。
ところがそのせいで規格を無視しても動いてれば大丈夫……は、困ったことに昔から日本人の技術者の間にはびこってますね。おかげでパソコンの周辺機器の中には動くかどうか、システムとの相性問題という変な現象も起きてますし……。
私が経験した中ではあるメーカーの出したパソコンの通信信号。処理速度が遅いのを誤魔化すために、受信側からの応答をいっさい確認してないというものがありました。データ垂れ流しでノイズによる再送信要求を無視してたんですよねぇ。信号の波形を見ると、応答信号を受ける前に次のデータの最初のビットが出されてましたし……。

[6542] ふたたびブーたれ。(ぉ 発言者:かどわき  投稿日:2007.10.21(日) 17:15:03
>お断り
今回の書き込みは、プログラミングを知らない人を完っ璧に置き去りにして突っ走りますのでご承知置きを願います。<(__)>

……てことで。

この前は「関数内のグローバル変数」について擬似コードを書いたわけですが、ポインタを介したグローバル変数なんて凶悪な技を使われて非常に鬱です。(↓)こんな感じなんですが。ちなみにコメントの入ってなさっぷりとか、改行の付けてなさっぷりとか、空行の入ってなさっぷりについては「ほぼ元ソースのまま」です。(--;)

typedef struct {
  SomeType *pSomeType;
  OtherType *pOtherType;
  AnotherType *pAnotherType;
} TheiryStruct;

int main(...)
{
  TheirStruct aStruct;

  if (someFunc(&aStruct) != OK) exit(1);
  // 何かの処理
  if (otherFunc(&aStruct) != OK) exit(1);
  // 何かの処理
  if (makeAnother(&aStruct) != OK) exit(1);
  // 何かの処理

  if (aStruct.pSomeType != NULL) free(aStruct.pSomeType);
  if (aStruct.pOtherType != NULL) free(aStruct.pOtherType);
  if (aStruct.pAnotherType != NULL) free(aStruct.pAnotherType);

  exit(0);
}

ちなみにこのプログラム(の元ネタ)ですが、先日、「結合試験まで終わったのでプログラム機能設計書を起こしている」ところです。順序が違ってるだろと突っ込まれそうですが、「ここのやりかたはそうだ」ってところで開発体制や品質レベルを察してください。(言い換えると上記コードはテストまで完了した上で、客からお金を貰って納品するプログラムのコードなんだ……ってことなんですが、その事実が僕を余計に鬱にしています(--;))(ちなみに客も客でプログラム設計書はほとんど読んでないそうです。じゃあ僕の書いてるこのドキュメントって何だろうと思うと、これがさらに僕を鬱に……(略))

そんなわけで、デスマーチを容認するつもないし、深夜残業は死んでも嫌と思ってるんですが、そういった職場の方が遥かに高品質なコードを生産してるんじゃないかと今更ながらに思ってます。(--;)

……この前も書いたけど、契約期間が終わったら二度とやらねえやこんな仕事。(--;)

P.S.
ちなみに上記コードのようなメモリの解放忘れの他、ファイルの閉じ忘れから、果ては「DBのトランザクション処理中にいきなりプログラム終了」なんて大技もかましてくれてます。常駐プログラムでないので大事にならないことが救いなんですが、この辺のいい加減さもやっぱり僕をうt(りゃ < 木亥 火暴 )
 
管理人より
あとから設計書。実際、テストでものが動き始めてから、仕様変更、機能追加が始まりますからねぇ。動かしてみて初めて、実際の運用とプログラムでやろうとしてる方向がズレてると発覚することもありますし……。
理想はともかく、受注開発の現実はそんなものでしょうね。
mallocしたメモリをfreeで解放しないプログラムは、市販のソフトにも数多く見られますね。私はジャ○トシステムが一○郎5以降、Mac版を作らなくなった理由の一端には、このバグが見付からなかったんじゃないかと思ってます。なんせ1時間に1度はファイルを閉じて再読み込みが必要(それをしないと編集ができなくなっていきなり落ちる)とか、数時間ごとに一度プログラムを落として再起動が必要(メモリを解放しないからOSそのものが動かなくなる)なんて雑誌に書かれたほどですから。
それにしてもexit関数の引き数にマクロではなく直接0か1をコーディングするって……。ちゃんとEXIT_SUCCESSかEXIT_FAILUREを使わないと……。

[6541] あれ? ウィンドシールドの和訳は「フロントガラス」では?(^^;) 発言者:かどわき  投稿日:2007.10.17(水) 00:26:33
……もちろん知っててぼけてますよ? ほんとですってば。(笑)
ちなみに自動車のワイパーですが、法律としては「フロントガラスの払拭装置は必須」となってますけど「そもそもフロントガラスがない場合」については何の規定もないそうですね。(^^;)(なのでフロントウィンドウを倒したジープを公道で走らせても合法、という解釈ができちゃうわけで……。< 実際は違法と扱われてるようですが(^^;))

>通勤時間
自転車通勤なので自動的に体力作りの時間と化してます。(^^;)
4週間ほど前に心拍計を購入して、心拍数トレーニングなんてのもやってます。
今のところ、片道平均40分中、目標心拍数(おおよそ140〜155拍/分──最大心拍数の70〜80%)で10分程度走行しています。誰かと比べたわけじゃないけど、たぶん同年代の人と比べると新肺機能がしっかりしてるかなっと。(140拍/分から1〜2分で100拍/分程度に脈拍が下がります)

どうでもいい話ですが、今日の帰り道は雨が降っていたためあまりスピードが出せず、最高でも心拍数が100拍/分ちょい──かるい小走り程度にしか上がらず、寒かったです。(T^T) しかもスピードが上がらないってことは自転車に乗ってる時間が長いってことでですね……いつもは「暖まること前提」でカッターシャツ1枚で自転車に乗ってるので……あー、えーと……こんな時間まで起きてて何ですが、まじで「頭痛が痛い」です。(涙)

>グローバル変数
適切にファイルを分割して、static修飾子を付けてアクセス制限をかける+アクセスはかならずアクセッサ経由にするとすればそれなりに使えるかと。(^^;) やや(かなり?)不正確な表現をすれば、オブジェクト指向のクラス変数やインスタンス変数なんかもグローバル変数の変種ですし。(同じクラス、同じインスタンス内でならどこからでもアクセスできる、という意味で、ね(^.^;))

>バグが出るまでテストしろ!
ありますよね、そういうの。(^^;)
バグが出ないなら出ない理由をレポートしろとか、逆に出過ぎてる場合もなぜそうなったのかレポートしろとか言われてひーひーいってる現場リーダーを何度か見たことがあります。(後者の理由と対策については根本理由の解決より、心構えや精神論でオチを付けてしまうことが多い気がしますけどね(^^;;;))(上位工程から下りてくる仕様が不完全だ、とか、遅い、なんてことはなかなか言いにくいでしょうし(^^;;))
 
管理人より
自転車で片道40分の通勤時間ですか。運動はゆっくりと汗をかかないぐらいが身体の奥まで鍛えられて、一番健康に良いそうですね。
バグが出るまで。本当はテストの回数と見付かったバグの数をグラフに取って、そこで描かれたロジスティック曲線(ないし飽和曲線)から残りのバグの数を推定するはずなんですけどねぇ。明らかに統計の意味を取り違えて……というか、ほぼ間違いなく統計学に関して無学な人の考えたテスト基準でしょうね。やってることが形骸化してるというか、本末転倒というか……。

[6540] 風防にキャノピーとルビが振ってあると気になりますよね、という事で 発言者:歩々  投稿日:2007.10.10(水) 00:00:32
連続での投稿となります。
なんといーますか、先月の仕事が見事にポシャりまして、今月からまったく違う仕事をしております。
仕事内容はプログラムの設計なので先月とそんなに変わらないのですが。
考えてみたら、1年近くコードを書いてないぞ。
こういう日本語文章を主に相手にしていると、バージョン管理ソフトのお世話になることが多いですね。
私の場合は、VSSを使用する事が多いですが・・・
今回の現場では、通勤時間が長くなった分、本の消費量が増えているのが一番の悩みだったり・・・


>風防はキャノピーの訳語ですが
風防はウィンドシールド、この単語をヒネり出した人は天才じゃないかと思います。
キャノピーは日本語では「天蓋」といいます。
操縦席はコクピットですよね。

日本での場合、プラモで風防とキャノピーを一体化して部品化して
「キャノピー」と部品図に記述されたのが間違いが広まった原因、
とかいう説がありますが実際どーなんでしょうか?

一応実機を例として説明しますと、
例えば「F86セイバー」という飛行機で、操縦席の前側の横から見て三角形の部分が風防、
搭乗する為に、ガバッと開く部分がキャノピーとなります。
ただし例外もありまして、F16のように一体部品(ワンピース)で出来ているものは、飛行機ごとに風防と言ったり、キャノピーと言ったりまちまちです。F16の場合はキャノピーというようですね。
 
管理人より
なるほどね。飛行機の用語で使うキャノピーには、そういう細かい違いがありましたか。
私は気象用語のキャノピー効果(訳語は風防効果、ないし風除け効果)から入ったので、何がおかしいのだろうと思いました。(苦笑)
ちなみに気象のキャノピー効果は、物が密集してる場所の周辺では風が弱まるというもの。だから風防なのですが、現象を街や森を覆うと捉えれば天蓋効果という訳もありですね。これは目からウロコが落ちました。
仕事がポシャる。これは作家でも良くありますね。原稿を書いている途中で企画がポシャるとか、大幅な軌道修正を求められて結果的にゼロからやり直しとか。勤め人ならポシャっても収入は保障されてるのですが、作家の場合は本が出ないことには……ねぇ。

[6539] 風防とキャノピーはちがうのですぅ 発言者:歩々  投稿日:2007.10.8(月) 23:53:13
お久しぶりでございます。
タイトルは5番札を読んでいて出た飛行機好きの心の声という事で・・・

さて本日は、散歩のついでに近所の並木で「銀杏拾い」をしてみました。
並木といっても街路樹なので通行車両を気にしながら、となりましたが、自分としては結構大量に採れたので、これをお酒の肴にするのが今から楽しみだったりします。

>ISO9000
関連書類を書いているだけで時間が取られて、設計書やコードを書いている時間が無くなる、という現場泣かせの管理方法ですね・・・。
管理者のほうでは、これのみをチェックして仕事が進んでいると思い込む為の資料、というモノではあります。(ホントは違うのですが、導入した事で勘違いしている現場は多いので困ったものです。)


あぅぅ、すいません寝落ちしそうです。本日はこれくらいで・・・
 
管理人より
おろろ。タイトルが何を言いたいか気になりますねぇ。
風防はキャノピーの訳語ですが、操縦席をキャノピーと呼ぶ人がいたり、頭の上の覆い部分だけをキャノピーと呼ぶ場合があったり、ガラス製の風防はキャノピーと呼ばないという意見もあったり(じゃあ、なんて呼ぶの?)、といろいろありますから……。(微笑)
書類。日本人は必要最小限という言葉を知らない(実行できない)ので、余計な書類を作って、それの直しに余計な時間を奪われると言いますね。まあ、その犯人はだいたい使いもしないのに「こんな書類が欲しい」「こんな資料も作ってくれ」と言い出す無責任な経営陣と、必要最小限だと漏れを心配して書き足してしまう現場の責任者。で、そのツケを部下が払わされるわけですねぇ。

[6538] 無題 発言者:nobody  投稿日:2007.10.7(日) 03:26:31
■雨合羽
>ただ、この手の透湿素材の物は気温が零下になる所では表面が凍りつき
 自転車用の雨合羽の話なので……
(普通の人が、氷点下で自転車に乗る事は少ないと思います。)

■プログラミング
>プラグマ
 プラグマを使わずに、複数の処理系で動作するコードを書く場合、
 最も移植性が高いのが ファイルを可変長テキストで吐き出す方法です。(内部では構造体で保持)
 バイナリを 吐き出すのは宜しくないです。(いまどき、記憶容量をケチらなきゃならないケースは滅多にないから)

 通信で、パケット代が問題になる場合のみバイナリで流しますが…… 滅多にないですね。
(httpsで接続するのが主流になってますから。)

>コードレビュー
 最初に形式チェックから入るので、コメントの日付が違うとか、内容が仕様書と合ってないとか、
 ど〜でもいいような事から点検がはじまります。
 逆に、そこが直っていない箇所は「普通じゃないレビューをした」って事なので品質が違う筈……
 ・品質を均一にすることが最重要課題らしいです。バグの少ないコードを書くと、規定数のバグが「発見」されるまで延々とテストをやらされる羽目になります。

>グローバル変数
 ファイル数が千を超えるプロジェクトで変なグローバル変数を使われると収拾がつかなくなります。
 ローカル変数で馬鹿やられた場合、被害は局所的ですが、グローバル変数で馬鹿やられると……

・10年以上も経つのに、まだ夢に見ます。
 同一のグローバル変数を複数のファイルで定義した事に起因する、訳の判らない現象。
(警告すら出さないリンカも問題ですけど)

 担当モジュール全てで、グローバル変数のinclude時に「実体を定義する#defineを定義」してincludeしていた馬鹿が居たのです。
 その後の、システムテストのやり直しとか、スケジュール調整のゴタゴタについては……


>出来上がったコードにはできるだけ手を入れるな
 こ〜ゆ〜書き方をしてます。
 もとの処理は名前しか変わっていないので単体テストの手間が省けます。
 最初の1回目の名前の付け替えのとき、詳細設計書の修正が面倒ですけど2回目以降は楽になります。

 static someType *ある関数_追加された処理(someType *pData);
 static someType *ある関数_元の処理(someType *pData);

 /* entry at 'ある関数' */
 someType *ある関数(someType *pData){
  someType *rc;
  /* additional function 20071231 */
  rc = ある関数_追加された処理(pData);
  if (rc != null) return rc;
  /* call original function */
  return ある関数_元の関数(pData);
 }

 /* 20071231 nobody rename function name 'ある関数' to 'ある関数_元の処理' */
 static someType *ある関数_元の処理(pData){ .... }

 /* additional process for 'ある関数' important! : 追加されたケース以外ではnullを返す */
 static someType *ある関数_追加された処理(someType *pData){....}

※ 新規で作るときは、最初からエントリ関数をダミーで作っておくとドキュメント作業が楽だったり...
 
管理人より
氷点下の雨合羽。その前に6℃以下では雪になりますねぇ。何度か雨氷にあった経験はありますけど。
プラグラム開発。敵はグローバル変数ではなく、コンパイラという経験があります。システムのデバッグと一緒に、コンパイラのデバッグをした経験がありましたねぇ。そのために中間生成コードのニーモニックを何度も追ったことが……。
それでコンパイラ起因のバグが生まれるパターンを見付け出して、プログラマにそのパターンを回避するように指示を出すのですが、面倒なのか、それとも理解する気がないのか(たぶん他人〜コンパイラの尻拭いはしたくないという意識なのでしょうね)、ほとんどの人が無視してくれましたねぇ。
一番面白かったのは、間にコメントだけの行、それも2バイト文字が使われてる場合に限定されますが、次の命令で変数を間違える(正しくは変数のアドレスを計算ミスする)というものでした。いったい、どういう原理で発生したのやら……。
IBMよ、PL/1のデバッグを日本の企業ユーザー任せで放置するのはやめてくれ。(当時最初に日本で使って、問題がなくなってから米国内でも使い始めるって……)

[6537] いやいや実際は…… 発言者:かどわき  投稿日:2007.10.4(木) 21:04:36
>関数の中で閉じていて別の関数からは呼び出せないので、グローバル変数とは見做さないのでしょうね。

疑似コードが長くなってしまうので省略しましたけど、外から「ポインタで渡ってきた構造体」にデータを詰め込む関数なんですよ、くだんのコードは。(--;) しかもご丁寧に「構造体のポインタをそのまんま孫関数に渡して」さらにデータを書き換えやがります。(爆)

で。(↑)この辺のも入れた「よりもともとの関数」に近い形の疑似コードも作ったんですけど、ざっと45行ほどになってしまったのと、ここも技術系掲示板じゃないわけですから、そのうち自分の個人サイトででも晒しておきます。(更爆)
 
管理人より
あらあら、ポインター渡しでの処理ですか。それはややこしいことになりますね。

[6536] ちょっと(?)ブーたれ。 発言者:かどわき  投稿日:2007.10.4(木) 07:27:37
「グローバル変数はどこでどう変更されるか分からないから使うな」とはどこのプログラミングのクラスででも真っ先に教えることだし、今の職場でもそういわれてる(個人的には少々考えが違ってますが…)んだけど、こういうの(↓)は「グローバル変数じゃない」から構わない、ってことなのかなあ。(--;)(やってることはグローバル変数の弊害そのまんまなんだけど(--;;))

ある関数() {
  someType data = デフォルトの値;

  if (何かの条件) {
    data = 新しい値;

    if (さらに特殊な条件) {
      data = 特殊な値;
    }

    if (新規の条件) {
      data = 新規の値;
    }
  }

  // この辺にその他の処理。
  // やりかたは似たり寄ったり。(爆)
  // で、最後の地雷。(↓)
  // ちなみに疑似コード中の「data」は
  // 先ほどの変数と同じものを指します。(--;)

  if (ところで別件) {
    data = 別件の値;
  } else if (もしかしてこっち) {
    data = こっちの値;
  } else if (それともそっち) {
    data = そっちの値;
  }
}

で、どうやらこれ、「出来上がったコードにはできるだけ手を入れるな」(修正──たとえインデントの調整であっても──があれば必ずテストしなければならないから)という考えがあってのことらしいですが……、メンテナンス性とその場で楽ができるのと、どっちが大切なんだろうねえ。(--;) しかもそのテストですが、「単体テストには明確なルールなし」、「結合テストのやり方も個人マター」(仕様書はあるけどそれを実現するためのテスト方法が文書化されていないので、試験者によってテストの品質にばらつきがある、というかありまくり)なんていう、素晴らしい品質──ISO9000? なにそれ美味しいの?(^o^;;)てなもんだ──だったりします。

……「コードを解析してデータ編集仕様を起こしてくれ」というのが今の仕事なんですけど、先に書いたようなコード(が他にも2〜3本ある)ですので、すでに2〜3回仕様書を書き直しています。(爆)(最後の最後に「さっきのまるごと全取っ替えだよん♪(^_-)」なことをしまくってるコードですからねー)

…………契約期間が終わったら二度とやらねえやこんな仕事。(--;)
 
管理人より
うわぁ〜、その手で初期値を入れるコード書いて、関数を1回だけ呼び出す単体テストで「問題なし」にしてた人、いましたねぇ。2〜3回呼び出せば、明らかに不具合が見付かるのですが……。
でも、関数の中で閉じていて別の関数からは呼び出せないので、グローバル変数とは見做さないのでしょうね。
ISO9000。形だけの管理はISO9002かISO9003でしたっけ? 今も認められてるかわかりませんけど。
一番厳しいISO9000は管理が煩雑になるので、マジメに管理すると一度書類を作ったら、その後の修正が手間取るためにバグが見付かっても簡単にソースを直せないなんて変なことがありましたねぇ。申請やら何やらがあって……。
部品が生産中止になった時も、別会社の同規格の部品に切り替えられないということもありましたし……。