忍者ブログ
たま~に色々書き込む所
Posted by - 2024.04.21,Sun
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Posted by ユハニ - 2010.08.12,Thu
 最近はよく音楽を聞く時に「Jango」と言うオンラインラジオサービスを使ってます。

好きなバンドを入れるとそれらの曲と似たアーティストの曲を流してくれる。 そのおかげで最近色んな新しいバンドにも出会ってます。音楽好きな方にはとてもお勧めです。

その内Riverside(ポーランドのプログメタル),  pain of salvation(スエーデンのプログメタル)とanathema(イギリスのDoomメタル・アンビエントロック)に出会えました。

最近Anathemaの「re-connect」って言う曲がとても好き。 2:27からの叫びで始める部分が得にいい・・・

PR
Posted by ユハニ - 2010.07.08,Thu
漫画とかは好きです。 認めます! ですが、Amazonの推奨でず~~~っと漫画が出てる。 ってか、興味主に興味がない漫画です。

その理由? 

 4年前にまだ海外に住んでた時に数枚を買ったから。 ローゼンメィデン・ベルセルク・マリみて・ゆびさきミルクティー・げんしけん(ちなみに全部今でもお勧め!)

で、それ以来は一冊もAmazonで買ってない。 今日本に住んでるし、そんなの普通に本屋で買えばいいじゃん。

で、最近はかなりの量で英文の物を買ってる。 殆ど勉強用のものばっかり。



なのにAmazonの推奨でわけのわからない萌漫画が相当推奨される。 

で、それよりも気になるのはなぜこれが推奨される:

TOSHIBA Lacoo コードレススチームアイロン TA-FV61(L) メタリックブルー
Posted by ユハニ - 2010.06.06,Sun
本がたくさんたまっていて、すべてに興味がある。 同時にいくつか呼んでますが、今「リラックス」目的で読んでるのは「Coders at work」。 何人かのすごいプログラマーとのインタビューが記録されてる物です。 まだまだ途中ですが、今まで読んだ中で大抵の人がやっぱり言うのは「他の人のソースを詠むべき」だと。 今までも少々やってますが、大抵は仕事関連、もしくは興味単位で。 

Doug Fitzpatrick(LiveJournalの発明者、今ググル)のインタビューが気になり、結局Memcachedのソースを見る事にした。

http://github.com/memcached/memcached/blob/master/memcached.c

前から使ってる技術だし、自分のプログラムでもローカルなキャッシュとかを作ってますのである程度気になってました。
ロジックは勿論とてもいいけど、それよりもコードは以外とわかりやすい・・・ コメントが結構あるし、スタイル、関数・変数の名称が分かりやすい。 いつも皆が「コメントを書くのはいい事と分かるけど・・・ 結局書かないな」ってのはよくあります。自分でも難しいアルゴリズムよりあんまり書かない。だけど一ヶ月後に読むと「え、これって何やってたっけ?」って思う。 あの時1分でコメントを書いてたら、その悩みはせずに住んだ・・・
Posted by ユハニ - 2010.06.01,Tue
  元々C/C++のプログラマーの私ですが、最近あるプロジェクトの関係でJavaで開発してます。
 
結構いい所もあります!
 
前に作ったドメインのサブドメインを削る簡単な文字列の処理のプログラムがありますが、この同じプログラムをJavaで書いたら、10倍重かった!
 
まあ、普通だったら、全体の内でどうでもいいでしょうが、この場合はその関数は一つのリクエストで何百万回呼ばれる事もありうる。700万行がCで2秒以下で出来た物がJavaで22秒かかりました。 これはまずい。 で、Javaの問題では。 Cのようなポインターアリスメチックは出来ないけど、Javaってそこまで遅くはないよ。
 
最終結果: Cとほぼ同じスピードに削れました!
 
それはどう出来たのでしょう?
 
・まずはEclipseで使えるJavaのプロファイラーをインストールしました。
 TPTPは直接Eclipseの環境にプラグイン出来る高性能のプロファイラー。 セットアップが困難な場合もありますが、入れると助かります。
 
・一回プロファイラーで回してネックの所を探した。
 ・意外な事に一番ネックがロジックの所ではなくスタート時点にあった!?
 ・実はString.splitとString.formatが犯人だった。
 
まず、String.formatの代わりにStringBuilderを使う事で処理が半分になりました! おおお。正直最初からそうするべき物だったけど、そこまで差があるとは思わなかった。
 
そしてString.splitをどうにかしなければならなかった。大変便利な関数ですが、二つの問題があります:
・すべてのサブパーツの文字列を作成する。いらない物も。
・簡単な処理でも一応正規表現を使ってる。
 
その代わりにString.indexOfとlastIndexOfを使って、欲しい部分を見つかり、String.substring出取得する事にすると、何と処理時間がど〜んと落ち、Cとほぼ同じになった。
 
 
覚える事:
 
最適化はプロファイラーから始めよう。 自分がボトルネックになってると思ってる所と実際の問題点がよく違ったりする。 また、よく言われるのは90%のスピードアップが10%のコードの最適化で得られる。
また、「最適化は燃えるぞ!」
 
Posted by ユハニ - 2010.06.01,Tue
これはちょっと前に各つもりの記事です。消えたと思ったけど奇跡的に一時保存され、助かりました。

 一番見るブログはやっぱり開発系の「こうやってこれを直せる」見たいな物。困ってる人がたまたまこっちのブログを見たら、同じように役に立てるといいな〜って思ってますので、これからちょこちょこ困った問題と解決策を書こうと思ってます。
今回の物はあまりこった物ではないが、JavaをリモートでDebugしたかった・・・Tomcatのアプリを、Eclipse環境から。

参考に
http://wiki.apache.org/tomcat/FAQ/Developing#Q2

まず、JVMに -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n こんなパラメーターをパスして、Eclipseなどの環境からリモートデバッグは8000ポートで出来ます。
色んなDeployのやりかたもあるけど、こっちはRPMのTomcatを使っていて、serviceで機動してます。 その環境だとtomcat5.confのファイル(普通のRH系環境だと/etc/tomcat5/tomcat5.conf)に JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" を入れる事でOK ここからEclipseを機動して、 Run->Debug Configurations... Remote Java Applications New Host/Portを設定して(.confで使ったaddressパラメーター)を設定して、Debug押す

じゃじゃ〜ん: ローカルでデバッグしてるようにServletのデバッグが!
カレンダー
バーコード
ブログ内検索
プロフィール
HN:
ユハニ
性別:
非公開
職業:
プログラマー
自己紹介:
サムファクのプログラマーの一人。
C++とかでの最適化などが好き。
後は音楽を聞く・弾く、や漫画読書。

いつかは世界征服を目指したいかも。
Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]