プログラミング 一覧

Cygwin上でPerl+Javaを実行する

大学での研究を行うために、Cygwin上でPerlのスクリプトを実行することにしました。*1
これまではLinux上で動かすだけだったので、PerlからJavaプログラムを呼び出しても
全然問題なかったんですが、Cygwinになるとちょっと厄介な問題が発生します。

その問題というのは、PerlとJavaでパスの指定の仕方が異なるという点です。
Perlでは、よくCygwinでも使われている /cygdrive/c/(以下略) という形式で書くことができます。
また、スクリプトが存在する位置から見た相対パスでももちろん指定することができます。
しかし、このPerlスクリプトからJavaプログラムを呼び出した場合は、Windows形式で
直接指定しないといけません。(例えば、c:/Documents\ and\ Settings/hogehoge/ とか。)
なので、Perlスクリプト用のパスとJavaプログラム用のパスを別々に考えないといけないわけです。

ウェブ上を探してみると、Javaプログラムのためにパスを変換してくれるラッパー
アプリケーションがあるようなんですが、まだ試していません。
これがうまく動作するなら、とても便利そうなんですけどね。
なんとかならないんでしょうか、このCygwinの仕様。

eclipseが「No Plug-in "hogehoge" included at runtime」と表示したときの対処法

eclipseにいろいろとプラグインを追加していると、何かの拍子に突然プラグインが動作しなくなることがあります。そんなときは、次のようなことを試してみてください。

[blog] えくりぷす - Hatena Diary


この問題を解決するために、上記のページを参考にしました。まず、「Help」→「Software Updates」→「Manage Configuration」を選択して、インストールされているプラグインを確認します。

ここで、「Show Disabled Features」と表示されるアイコン(左から3つ目)をクリックしておきます。動作しないプラグインの項目を選択し、「Disable」を選択します。するとeclipseから再起動するように促されるので、再起動します。

再起動したら、再び「Manage Configuration」の画面を表示させ、動作しないプラグインを「Enable」にします。再び再起動することで、プラグインが動作するようになります。(ならなかったらごめんなさい。)

Texlipse

いろんなプログラミング言語が扱える総合開発環境のeclipseでは、texももちろん扱うことができます。その中で、僕が使っているtex用のプラグインが「Texlipse」というやつです。

これは僕が卒論の時から使ってるやつなんですが、なぜかコンパイルが通らず、別のエディタで編集してました。(eclipseではCVSでの管理専門)。で、この度論文を書くことになったので、ひさびさにeclipseで書こうと試してみました。相変わらず大量のエラーが出ました^^;

で、ふとエラーメッセージを見てみると、「このプラグインではpLatexが必要ですが、latex.exeが設定されています(英語)」って書かれているじゃありませんか!設定を見てみるとその通りで、普通のlatexが設定されてました・・・。正直、ちょっとへこみましたね。これがもうちょい前に分かってたら、LabEditorにお金払わなくてすんだのに・・・。

そんなわけで、当分はLabEditorとeclipseを使っての執筆になりそうです。

良いプログラムとは

「Java World」という月刊の本に「良いプログラムの条件」に関して記述があったのでメモしておきます。この本は結構タメになるので、Javaに興味がある方は読んでみるといいかも知れません。

そこにはこんな記述がありました。

「クラスやメソッドが適切な単位で分割されており、それらは命名規則にしたがって(中略)」−実は、こうした事柄は、「良いプログラム」に直結する条件ではありません。(中略)ユーザーの視点で見たときに評価の高いプログラムが「良いプログラム」であり、その評価対象となるポイントがプログラムの価値を決めるポイントだと言えます。

その「ポイント」というのが、ユーザーの目的に合っているか(合目的性)、プログラムによって効率があがるか(生産性)、ユーザーにとって使いやすいか、プログラムの出力が適しているか(クォリティ)、情報の漏洩に対して対策があるか(安全性)などです。

確かにこの記事は的を得ていて、本当なら重要視されるはずのユーザーからの視点がなおざりにされていることの警鐘であるともいえます。

URL : Java World Online http://www.javaworld.jp/

NAH症候群

まじめに書くと、NAH (not applicable here) syndrome。「これには当てはまらない」と考えてしまう症状(?)のことを指します。

例えば、ある集団に対して注意などをするとしましょう。「歩きタバコはやめなさい」とか「大声でしゃべらない」とか、なんでもよいです。ですが、その集団の大部分の人は、きっと上記のような感じで「自分には当てはまらない」と考えてしまうようです。

それがソフトウェアなどの世界で展開されるとどうなるか。「読みにくいソースを書くのはやめましょう」とか「パスワードは解読されにくいものを使いましょう」とか言われても、なかなか改善されない。むしろ反発されてえらい目に遭うってこともありえそうです。

なかなか難しいですが、解決するためには常に謙虚な姿勢を心がけるか、「○○よりはマシ」と思って忠告をしっかり聞くか。受け手の考え方次第になるようです。

ショートサーキット演算子

ショートサーキット演算子というのは「&&」や「||」のことを指します。これらは、左右の被演算子から全体の式の値を決定します。一見すると論理演算子と違いがないかのように見えます。

通常の論理演算子(例えば、「&」や「|」など)の場合は、左右の被演算子の値を評価してから式の値を決定します。そのため、「 a < b & b < c 」は「a < b < c」と等価です。

ショートサーキット演算子の場合は、左の被演算子の値で式の値が決定できるようなら、右の被演算子を評価しません。そのため、「a < b && b < c」は、a < bなら上記と同じ結果ですが、a > bなら「a < b」だけ評価するので、順序関係までは判定されません。

インクリメント演算子などを使用する際には、注意して用いる必要があります。

AWK

ファイルを簡単に編集する言語としてAWKという言語があります。これを使えば、Javaなんかだと何十行と書かないといけない操作でも、10行くらいで簡単に書けてしまいます。さくさくと処理してしまいたいときなどには便利な言語です。
http://aoki2.si.gunma-u.ac.jp/Hanasi/Algo/awk.html

詳細は上のURLを参照してほしいですが、これを使えばCSVファイルなどからデータを取り出して、各列の演算を一気にしてくれます。シェルの強力版として使えるようになると、作業が早くなるかもしれません。

入出力を別スレッドにするのはどうか

今、研究関連でプログラムを組み始めてます。CSVファイルを読み込んで、そのデータにPAA(=Piecewise Aggregate Approximation)を適用するんですが、その際にCSVファイルを読むスレッドと、計算に回すスレッドは分けるべきか考えてます。

分けたときのメリットとして、ファイルを読みながら計算をできる点があります。つまり、普通の場合より早い時点で計算を開始できるので、ちょっとだけ時間を短縮できます。ですが、もちろんデメリットもあって、入出力スレッドと計算用スレッドと同期を取る必要があって、その処理にCPUを使ってしまう点。また、2つに分割することで処理がやや複雑になってしまう点。

ファイルを読んでる間に、他の初期化を全部すませておいて、一気に処理するとかいう言い訳も思いつくんですが、なんだか分けない方がいいような気がしてきました。

JavaとPHPのforeach

Javaの拡張for文と、PHPのforeach文では使い方がけっこう違うことに気づきました。(今さらな話ですが・・・。)

Javaの5.0から導入された拡張for文は以下のような記述をします。

for($var : $collection){
    ・・・・
}

それに対して、PHPでは以下のようになってます。

foreach($array as $var){
    ・・・・
}
foreach($array as $key => $val){
    ・・・・
}

ちょっと油断すると忘れるんですよね?。ってことで、メモっときます。

flashの基本を覚える

本来ならもう少し早くから勉強しとけばよかったのですが、なんとか最近flashが扱えるようになってきました。とはいっても、全ての機能を使えるようになったわけではなくて、基本操作がなんとなく分かってきたところです。

Photoshopとかの画像編集ソフトなんかは、いろいろな機能がついてて便利な反面、知ってないと使えないとか、何を使ったら効率がいいかとかは分かりにくいものがあります。よくあるチュートリアルでは、サンプルみたいなものは作れても、実際に作りたいものにどういうふうに反映していくかは、作者次第です。このあたりのテクニックは、どこかの講習会にでも行けばいいんでしょうが、それではあまりにお金がかかります。

さて、これからflashの詰めをしていくわけですが、この結果が明日にすぐ試されるかと思うと、やや緊張します。

このページの上部へ

About

tetsuの日記・雑記です。
日々経験したことを記録していきます。

広告

サイト内検索

最近のピクチャ

  • リアディレーラ

月別アーカイブ

最近のコメント