ローカルBeanとリモートBean 樋口研究室 スマートなサーバ・サイドJava(1) ベストなeビジネス・アプリケーションを実現するためのノウハウを、あなたの仕事にも活かしてみよう!
吉岡さんが釣り糸を垂れているので、釣られてみるよ。 デバッグ方法論 と言っても、多分、僕の気力が続くのは、こんなトピックがあるよ、って事までかな。 細かい話が気になるって人達は、スターとか、ブクマとかで催促すると、 書く気になるかもしれないし、どっかの宴会で、続き喋れって言われれば喋るかもしれない。 前提として、Javaで書かれたコードをデバッグすると考えてクダサシ。 ある程度実行環境やコードの種類に依存しないデバッグの方法論ってのもあるんだろうけど、 僕が気付かないウチに、Javaに強く依存したデバッグの方法論を抱え込んでるって事もあるだし。 まず、デバッグと言う作業が、どの様な構造を持っていると、僕が理解しているか、書いてみる。 バグの定義 静的デバッグ 動的デバッグ フォースを感じる この4つだに。 ちなみに、コードを修正する事は、デバッグでは無いものとするよ。 それぞれは、作業手順
"The realization came over me with full force that a good part of the remainder of my life was going to be spent in finding errors in my own programs." Last changed on $Date: 2003/04/15 04:18:55 $. A practicing programmer inevitably spends a lot of time tracking down and fixing bugs. Debugging, particularly debugging of other people's code, is a skill separate from the ability to write programs in
「わたしがprintf()デバッグをしない理由」http://d.hatena.ne.jp/hyoshiok/20090322#p1 は思いのほか注目をあびた。せっかくなので、その続編とも言うべきことを書き記してみる。 ところで、皆さんは、誰にデバッグ方法を教えてもらったのだろうか?テストの方法を誰に教えてもらったのだろうか。あるいは、ソフトウェア開発方法論を誰に教えてもらったのだろうか。学校でならったのは、プログラミング言語の文法であり、アルゴリズムであり、コンピュータアーキテクチャであった。デバッグ方法は誰も教えてくれなかったので、見よう見まねで行っていたのが学生時代だったような気がする。 バイト先のちっちゃいソフトハウスでは、トラブルシューティングは二分検索でやるということを教えてもらったが、デバッグ方法についての、コーチはなかった。別のバイト先では、厳密なテスト方法について学んだが
2023年06月(1) 2014年03月(1) 2013年08月(1) 2012年12月(1) 2011年12月(1) 2011年07月(6) 2011年06月(1) 2011年03月(1) 2011年01月(1) 2010年10月(1) 2010年09月(1) 2010年07月(2) 2010年06月(3) 2010年04月(2) 2010年01月(1) 2009年12月(1) 2009年11月(2) 2009年10月(5) 2009年09月(2) 2009年08月(2) プログラムを書いてみて思ったのは、とてもじゃないがSPEを使ったプログラミングはペイしない、ということです。高速化に掛かる開発コストが計算コストと比較して高すぎます。計算インテンシブなタスク(今回のタスクは計算量がO(n^2)で通信量がO(n)です)でこうなのですから、通信が大きくなるに従いさらに厳しくなるでしょう。シ
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
ロジスティック回帰(logistic regression)の学習が,確率的勾配降下法(SGD: stochastic gradient descent)を使って,非常に簡単に書けることを示すPythonコード.コメントや空行を除けば十数行です. リストの内包表記,条件演算子(Cで言う三項演算子),自動的に初期化してくれる辞書型(collections.defaultdict)は,Python以外ではあまり見ないかも知れません. リストの内包表記は,Haskell, OCaml, C#にもあるようなので,結構メジャーかも知れません. [W[x] for x in X] と書くと,「Xに含まれるすべてのxに対し,それぞれW[x]を計算した結果をリストにしたもの」という意味になります.sum関数はリストの値の和を返すので,変数aにはXとWの内積が計算されます. Pythonでは,三項演算子を条
※ 画像は公式サイトのサンプルより 個人的にはあまり複雑なグラフは好きではない。複雑であればあるほど、本質が遠ざかってしまうような気がするからだ。とは言え、複雑にせざるを得ない場合や複雑さの中からはじめて価値ある情報が見いだせることもあるだろう。 サンプル1。このような複雑な描画も可能とする 簡易的なグラフを描くライブラリを使っていて苦労した経験があるならば、複雑なグラフをも描けるProtovisを使ってみてよう。 今回紹介するオープンソース・ソフトウェアはProtovis、JavaScript + Canvasによるグラフライブラリだ。 大は小をかねる。Protovisは簡単なグラフから、複雑なグラフまで難なくこなせるライブラリだ。欠点としてはCanvasを使っていることでFirefox3、Chrome、Safari4のみがサポート対象となってしまうことだろう。 サンプル2 使う場面は選
今回は、高速に移動する方法について紹介します。 今回も、入力モードにはならないまま操作の練習をしますよ。 set number $ vim bingo.plでbingo.plを開いたら、 set numberとタイプしてみましょう。これで、行番号を表示してくれます。 行末へ移動 まず、行の末尾に移動してみましょう。 $おもむろに$とタイプです。 キーボードで4をタイプできるところです。それをシフトキーと同時に押すと、$です。 わかっとるわーい となりそうですが、シフトキーを押し忘れることがはじめて習うときにはあって、「あれ? viぜんぜんわからん」となる可能性があります。 日本語のキーボードならこの↑キーですね。 行頭へ移動 行の先頭にいくのは、 ^です。 そうなんです。正規表現とおなじ記号をタイプすればそこへ移動できるのです。 3行目に飛ぶ さてさて、せっかく set numberとして
はじめに ソースコードを読むとき検索する術を身に着けておくことが重要です。 関数を呼び出す箇所がわかったとしても、その関数の中身を読もうと思うならコーディングされている位置を探しだす必要がありますし、特定の変数を追跡するときも 探すという行為が繰り返されます 。 ときにはコードリーディングの対象となるソフトウェアそのものを見つけなければなりません。 そのような場合、 様々なソフトウェアを知っている という経験も必要になってきます。 この文書ではコード リーディングにつきまとう検索行為を助けてくれるツールを紹介します。 slocate slocate はあらかじめ作成されたシステム上のファイル一覧データベースから、指定した文字を含むファイルやディレクトリを検索して表示してくれます。 筆者はあるとき AWK スクリプトについて知りたくて、.awk 拡張子をもつファイルを探すために slocat
この投稿では、「TypeScriptの文法や用語がよく分からない」という問題を解消してくれそうなツールを紹介します。 勉強しながらの見切り発車 最近はTypeScript未経験でも、TypeScript案件にアサインされることが増えてきているように思います。 運がいいと着手前にTypeScriptをじっくり学習する時間を与えられることがあります。しかし、多くのケースでは、見切り発車で開発に参加するのではないでしょうか。 コードリーディングから始まる TypeScript案件は、理解すべき既存のTypeScript/JavaScriptコードがあるケースが多いです。 そのため、 読んで理解すべき既存のTypeScriptコードがある しかし、TypeScriptの知識が乏しい状態でスタート といった事態がよく起きます。 新規プロジェクトでは既存コードがありませんが、ググって出てきたサンプルコ
Working with hugedomains.com was a quick and easy process. We got to speak to multiple real people located in Colorado without having to wait on hold! Our only complaint was we felt we had to overpay more than this particular domain was worth, and we weren't able to negotiate it down to a level that we felt was fair. However, payment and delivery were seamless, and within a few hours we had all of
ここでは、通信方法の一つであるマルチキャストについて説明をしたいと思います。 マルチキャストはインターネット初期から存在していました。 例えば、経路制御プロトコルであるOSPFでは経路情報を作成するためにマルチキャストを利用しています。 しかし、経路制御の方法が難しかったり、マルチキャスト対応機器が少なかったため、マルチキャストはあまり一般には普及はしていませんでした。 最近は、経路制御の方法が洗練され、ルータやスイッチの性能も向上したため、徐々にマルチキャストが利用されるようになってきました。 マルチキャスト概要 マルチキャストとは、「誰かがデータを送り、必要な人にだけデータが届けられる」という通信方法です。 マルチキャストの送信者はどこに居ても良いことになっており、受信者は複数存在するという状況が想定されています。 TCPなどによるユニキャストは1対1の通信と呼ばれますが、マルチキャス
マルチキャストを使った通信を実現するには,アドレッシング,IGMP,マルチキャストルーティングプロトコルに関する知識が必要です。その中でIGMPは,ルーターがネットワーク内にどこにマルチキャストを利用しているホストが存在するかを知る上で欠かせない「マルチキャストグループ」を確認するために使います。今回はIGMPを学びましょう。 マルチキャストグループ マルチキャストを使った通信では,マルチキャストを送受信するホストはマルチキャストグループに所属します。このことを「マルチキャストグループのメンバである」と言います。ホストはIGMP(internet group management protocol)を使ってマルチキャストグループに参加し,メンバになります。 ホストはIGMPを使ってマルチキャストグループへの参加を通知しますが,その通知を受け取って管理するのはルータです。ルータは自分が接続し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く