はてなキーワード: メモリリークとは
X-Code勉強するのがめんどくさかったので、はじめコマンドラインでやろうとしたせいでかなりくだらないところでハマった。このあたりのことを書いたサイトがないので、増田に書いておく。
つけてください。つけないとwarningがいっぱい出るよ。
つけてください。つけなくてもコンパイルできるけど、実行時にメモリリークが起きたと警告が出る。このオプションをつけるとかベージコレクションが有効になるよ。
書いてください。書かないと
warning: no ‘ほげほげ’ method found
warning: (Messages without a matching method signature
みたいのがいっぱいでるよ。よもや文字列や配列を使うだけで、インポートが必要になるとは思わなかったよ。
しかもNSArrayクラスは要素の追加もできないよ。あとから要素を追加するなら、NSMutableArrayね。
上司の自宅での食事会に同期6人が誘われた。
今回で二度目だ。
自宅にお呼ばれして、奥様の手料理とお酒をいただき、小学生のお子さんと遊ぶ、というのが前回の流れ。
正直、楽しむというより色々と気を使うので乗り気ではないが、断れるものでもない。
と思っていたら、3人が欠席。
1人は誘われた時点で既に用事が入っていて、1人は病欠(と思いたい)、あと1人は逃げた。
私も逃げたい。
たぶん今晩もそんな状態だろう。
前回のお食事会はなんと7時間も続いた。
今回は何時に帰れるやら。
体調不良の他にも行きたくない理由は色々あるが、誘われた時点で5人は行けるはずだったのがすでに3人。
ここで私が行けないとなると2人になってしまう。
それは申し訳ない、と思うのは私だけなんだろうか。
逃げた1人は確信犯で、上司には参加できると言いつつ、別の予定を入れやがりました。
しかもメールで、「まだ行かないことを伝えてないけど、大丈夫かなぁ」なんてのたまってるので
「うん、自分も体調不良ってことにしとくわw ごめんよー!あとは頼んだ!m(_ _)m」
キレた。
思わず携帯を壁に投げつけた。
本気で体調悪い人間に向かってそれ言うか。
まぁ、本当のところは逃げる同期がうらやましいんだけど。
面倒なこと全部押し付けて逃げられる同期がうらやましい。
それでたいした罪悪感もない同期がうらやましい。
状況的に逃げれない位置の私
↓
がいるから後はなんとかなるだろうと逃げる同期
↓
逃げられると余計に自分だけは逃げれなくなる私
このループに入社後数年で何度か入ってます。
そのうちメモリリーク起こしますよ。
あたし・・・実は・・・プログラマーなんだ。
ずっと、黙ってて、ごめん。・・・隠してて、ごめん。
でも、どうしても言えなかったの。
あたしがプログラマーだって知ったら、きっとみんな離れていっちゃうって思って。こわくて。
わかってる。わかってるよ。
プログラマーは初級シスアドを通った人だけがなることができる、カスタマーのプロフィットに関わるシリアスなビジネスだって。
でもね・・。
でもね、全然ちがうんだよ。
あたし、みんなが思ってるようなキレイなものじゃないんだよ。
あたしは汚れている。
あたしのキーボードは、汚れているんだよ。
プログラマーになったとき、すごく嬉しかった。知り合いのハッカーになったような気でいたの。
あたし馬鹿だから、お客様のビジネスを作るんだ!なんて、本気で思ってた。
でもね、全然違ったんだよ。
元請から言い渡された Sヨ の詳細設計仕様書は全く別のものだった。
お客様のビジネスを、まるでビル・ゲイツのように平等に助けるようなものじゃなかった。
あたしたちプログラマーに課せられた任務、・・・・それは、デバッグ だった。
そして、それを見守ること。
ねぇ知ってた?
この世界には、あるんだよ。こんな日本のど真ん中にね、平然と、あるの。
プログラマーはね、それを見守るの。
プログラマーは六本木ヒルズのホリエモンで、勝ち組の特権階級の象徴だからね、
そこにあるだけで、まるでビジネスが行われているかのような錯覚を起こさせる。
あたしの仕事は、そうやって、平等にビジネスが行われているかのように見せる暗幕みたいなものだったの。
ソフトウェアなんて、全然、救えなかったよ。
救う義務も権利も、この任務にはなかったの。
例え、その仕様がどうすれば助かるか、明確に解っていたとしても、
あたしたちは元請の命令が無いかぎり、何一つのコーディングもできない。
ただ、ただ、走って火消し屋を呼びに行くだけ。そして伝えるだけ。
でもね、この国の「火消し屋」は非常に貴重な存在。
火消し屋は稀有な存在。
夜なんかになれば、一つのフロアにどこからともなく現われるの。
たくさんのプログラマーたちが、一人の火消し屋に群がっていた。
「先生、コアを吐いている人がいます!」
「先生、表領域が苦しい人がいます!」
懸命にプログラマーたちが叫んでた。
でも火消し屋は一人。
私も声を荒げて「苦しい言い訳をするプログラマーがいます!」って叫んだの。
でも、ここでもふるいわけが始まる。
人員レベル、難度、納期。そんなものが現象と一緒くた になって命令が言い渡される。
と言ったきり、火消し屋は朝までチームのもとに来れなかったの(お客さんのところに言い訳に行った)。
その日、10秒ごとに Mantis の履歴が増えた。
「苦しい、苦しい、まだ苦しい」
「もう少しだけ待ってください、今火消し屋、来ますから・・」
何度も火消し屋のもとに走ったけど・・・。
火消し屋は、今にも心臓の止まりそうなお客さんと仕様と納期の折衝にあたっていた。
あたしは火消し屋に背中側から叫んだ。
「null チェックを入れても、まだぬるぽみたいなんです!」
「ガッ!」
コメントアウトの行数を上げた。でも駄目だった。QA からの質問は止まない。
そのバグだけじゃない。
「トイレに連れて行ってください(コンプライアンス的な意味で」
「基板が焼けたから替えてください」
「エスタロンを飲ませてください」
「ブートが走らないんですが」
「眠れません」
デバッガを走らせる。
忙しさにコードが荒くなる。
月残業時間が 400 越えたプログラマーがエレベーターに乗って外に出て行こうとする。
必死にあたしもふるい分けた。
今、一番検収ハネられる危険があるバグから、一番仕様満たしてないバグから、手を差し伸べなきゃ。
「いつになったら納品されるんだ!」と言われても。
「単価高い」と言われても。
私は頭を下げたり、ちょっと言い争ったりもしながら、
あたしはカーネルだ!と思った。
あたしは火消し屋の指示を待たずにロジックの検査をした。差分プログラミングの extends だった。
急いで火消し屋に連絡した。
「差分プログラミングの extends です。継承元のコードいじっていいですか?!」
「いや、コードを見ないとわからない、ただこっちの処置があるから、10分後に行く」
「待てません!リリースします!」
あたしは火消し屋の指示無くパッチをコミットした。バグの症状はスッと納まった。
それは駄目なことだったけど、一人のバグを救ったことに、あたしは浮かれてたの。
貧相な正義感をぶら下げて、意気揚々と自席に戻ってきたの。
自席の・・・・
でも、亡くなってた。
システムコールも呼べない人だった。
あたしは、その日、目の前の苦しいバグに夢中で、ps なんか見てなかった。
それでもね、・・・あたし、まだ、プログラマーなんだよ・・。
火消し屋は QA に「いつ何があってもおかしくない COBOLer の書かれたコードでしたから・・」と時間稼ぎの工作をしていた。
QA のテスターは「ありがとうございました」と額に青筋を浮かべてバグレポートに「仕様です」と書いて取り下げた。
そして、あたしにも「プログラマーさん、ありがとね」と言ったの。
大好きな、ソフトウェアだった。
このシステムが立ち上がる頃から知っていて、αリリースから知っていて。
「自分は寂しがり屋だから、最期は dankogai に手を握ってもらいながらホッテントリ入りしたい」と言っていた。
あたしが新人の頃から知っていて、vi のカーソル移動が苦手だったのも知っていて、
「Xenix はわしが育てた」が口癖だった。
「まぁ、・・・歳だったし、運用中にも止められないって言ってたからなー」
と火消し屋があたしの背中ごしに言った。
その記録には、波形が Full GC 後もヒープ使用量が右肩上がりとなりメモリリークするさまがしっかりと記録されていた。
高負荷だから死んだんじゃない、そこにはメモリリークで死んでくプロセスがあった。
でも、そんなこと全部まるめこんで、kill んじゃって仕方ないっていうプロセスが、そこにはあったんだ。
似たようなことはざらにあった。
何人ものプログラマーが、自社ビルの屋上の端から零れていったよ。
でも、あたし・・・プログラマーなんだ。
誰も、辞めろって言わないの。
火消し屋は鉄火場にブチ込まれただけだから、言わない。
顧客は実情がわからないから、言わない。
プログラマー同士は実情がわかってるから、言わない。
IPA はきっと、全部知ってて、それ込みで「それが10年は泥のように働けということだ」と言うかもしれないけど。
いや、言わないか。IPA は、何も言わない。きっと。
救えたかもしれないバグを、プログラマーは一番わかってる。見えてしまう。
PM の指示が適してないのも、判断が遅いのも、仕様変更履歴がのってないのも、全部わかってる。
それでも「あの時!」と、自分の行動と判断を何度も振りかえる。
その向こうにはいつも「あのとき、こうしておけば」が、くっきりと見える。
でも、救えなかった責任も、見過ごした責任もプログラマーには問われない。
プログラマーって・・ほんと、なんなんだろうね・・・。
パッチ一粒すら出せないのに、
設計一つ指示できないのに、
テストパターンに関わることなんて、一つも独立してできないのに、
テスト部門が持たされてるのはプログラマーコールだけなんだよ。
どんなに辛くてもプログラマーしか呼べないなんて。
そしてあたしたちは色んなものを抱えて、バグの前に立つ。
火消し屋が来ること、来れないこと、
できるデバッグがあること、ないこと、
色んなことを知りながら、本当の意味で世界を変えられるコーディング力もないままに、
さも救いのギークが舞い降りたかのような顔で。
IT ギョーカイが崩壊していく。
全然止められない速度で。
その日○製作所の城で、あたしは見てるんだ。
沈んでいく汎用機の命を。
----------------
AutoPagerize は1ページにどんどん内容を追加していく形になるゆえに、
メモリ消費量が半端ねぇ。特に Firefox の場合やばすぎる。
メモリリークで固まる。落ちる。
昨日立ち上がらなくなったEclipseは、RDT0.9.0を上書きしなおしたらEclipseが起動するようにはなった。ただ、Rubyの開発でEclipseの導入は諦めた。Javaの環境をこれ以上壊したくない。
Railsがなんだかよくわかっていないので、
【特選フリーソフト】生産性の高いWeb開発環境 Ruby on Rails
http://itpro.nikkeibp.co.jp/article/COLUMN/20060424/236113/?P=3&ST=lin-server
ここらへんをやる。いうとおりにやったら出来なかった。
ruby script/generateでエラー吐いてますよ。
一年前の記事が役にたたないなんて…。
細かいレベルで違うのは合わせられるけどlibレベルでio syntaxとか吐かれると、追う気がなかなかおきない。
Rails 1.2.3、Ruby 1.8.6は相性悪いのかな??
困ったな。このレベルでの導入障害は予想外。
http://japan.zdnet.com/video/screencast/story/0,3800079413,20354695,00.htm
これを見てて思った。この秒読みのおねーちゃん萌え。というのは冗談で、
何かRuby on RailsってColdFusionっぽくない?言語体型というより基本コンセプトというか、そういうのが。
Railsについて新しい記事を探すことにした。
http://japan.zdnet.com/sp/report/story/0,2000056431,20352478,00.htm
なんだ知らないのがいっぱいあるぞ。
Instant Rails http://rubyforge.org/frs/?group_id=904
MySQL/Ruby 2.7.3 (native driver)
Mongrel 1.0.1
ここらへんなんだろ?
さっそく上から追ってみる。
起動させるとWarnigが出て、プロセス強制終了させてもループに入っちゃって消えない。
なんだこれ><
OKボタンだけの無限ループ警告って一番やっちゃいけなよ・・・。
普段400MB程度しかつかってないマシンなんだけどアプリ起動していない状態で800越してる。
もうかなり萎えてます。
素の開発環境立てればよかった…。何かぶつかってるのかな。
昨日の増田。
タグ「delphi」を含む注目エントリー - はてなブックマーク
Delphiアプリケーションのメモリリーク検出法 (山本隆の開発日誌)
http://www.componentsource.co.jp/features/delphi/
TMS Software | Productivity software building blocks
Components > Effects and Multimedia > Video. Torry's Delphi Pages
Components > Effects and Multimedia > Audio. Torry's Delphi Pages
Components > Effects and Multimedia > Voice. Torry's Delphi Pages
Components > Effects and Multimedia > Direct X. Torry's Delphi Pages
eXeScope(Windows95/98/Me / ユーティリティ)
Delphi-ML〓〓〓〓〓〓〓〓〓〓〓??About Delphi
Delphi Q & A 〓f〓〓〓〓 〓〓〓〓〓〓O〓〓(HTML〓o〓[〓W〓〓〓〓)
Delphi WAVEサウンド音を鳴らす/Tips & Tricks
5分ではじめるDelphi - 第1回 簡単なメディアプレーヤの作成(前編)
Controling sound volume from code
lsMicrophone: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT
SwissDelphiCenter.ch : ...set the volume for the microphone/ mute it (enhanced)?
Components > Sound Effects > Mixer. Torry's Delphi Pages
PlaySound('C:\WINNT\Media\start.wav', 0, SND_FILENAME or SND_ASYNC);
Delphi6でプログラミング ビットマップの半透明コピー AlphaDraw
procedure TForm1.Button1Click(Sender: TObject);
bmp1.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FINANCE.BMP');
bmp2.LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\FACTORY.BMP');
Form1.Canvas.Draw(10,10,bmp1);
Form1.Image1.Canvas.Draw(10,10,bmp2);
bmp1.Free;
bmp2.Free;
無料版Delphi6でSTGをつくるためのプログラミング講座 Ver.2005 Jan.
SwissDelphiCenter.ch : ...get the MAC Address?
もっと楽にGUIとの連携がしたい:Python + Delphi = P4D(Python for Delphi) - ふにゃるん
Delphi WindowsのOSのバージョンを取得する/Tips & Tricks
SourceForge.net: Gecko SDK for Delphi
BDS(Delphi/BCB)用SQLiteライブラリ (山本隆の開発日誌)
SwissDelphiCenter.ch : programming tips
ナッキーの「Turbo Delphiはじめて奮戦記」- 第1回 Turbo Delphi のインストール
フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro
フリーのTurbo Delphiで始めるWindowsプログラミング:ITpro
http://torrent.borland.com/turbo_hotfix_rollup.zip
http://torrent.borland.com/prereqs_jp.zip
http://torrent.borland.com/turbodelphi_jp.exe
(1) \dotNETRedist\dotnetfx.exe
(2) \dotNETRedist\langpack.exe
(3) \dotNETRedist\NDP1.1sp1-KB867460-X86.exe
タグの数もいつの間にか1000近くなってしまったんだが、タグの自動補完が非常に重くて困ってる。
どれくらい遅いかっていうと、例えば「あ」と入れて候補一覧が出てくるまでに5秒、その後選択してテキストボックスに入力されるまでに3秒。
タグ一覧から選択するとテキストボックスに入るまでに7,8秒くらい。
ブックマークレットから登録画面表示までに5~10秒くらい。
みんなこれくらい遅いのを我慢して使ってるのね?
起動したての時はそんなに遅くないからメモリリークしてるのかなぁ。
でもJavaScriptでメモリリークなんて起こるものなのかな。
そもそもunDonutなんてブラウザだからダメなのかもしれん。
タグの一覧とかは設定でオフに出来るのは知ってるんだけど、そうするとおすすめタグまで消えてしまうのが嫌でつけてるんだが…。
こう遅いとLivedoorクリップかデリシャスへの移行も真剣に考えてしまうなぁ。
今はてブに必要なのはサーバの増強じゃなくてJavaScriptの動作速度改善だと思った。