開発

java.util.ConcurrentModificationExceptionが発生するケース

以前、Javaのコレクションクラス(確かjava.util.ArrayList)とそれから取得したIteratorを使っていたときに、Iteratorを使って見つけた要素を元のコレクションクラスから削除する処理を実装していたときにちょっとはまったので、そのときのメモ。だいぶ前の…

java.util.PriorityQueueで取り出したデータがソートされないケース

今日研究用のプログラムをJavaで書いたときに嵌った問題のメモ。 今、研究の検証用シミュレータをJavaで書いている。簡単にアプリケーションの挙動をシミュレーションするものだけど、ネットワーク部には少し力を入れている。アプリケーション実行ノードがネ…

EclipseでCtrl+HをBackspaceに割り当てる

Emacsのキーバインディングに慣れているので、Eclipseでプログラムを書くときのキー配置もEmacs風にしている。僕はEmacsでは、Ctrl+HをBackspaceに割り当てているのでEclipseでも同様に割り当てたかったんだけど、その方法がわからず、はまってしまったので…

Ruby on Windows をアップデート

約1年ぶりに、WindowsにインストールしていたRubyを1.8.5から1.8.6へとアップデートした。この際、RubyのインストーラもActiveScriptRubyからOne-Click Installerに変更。1.8.6とは言っても、インストーラの最終更新が今年の3月なので、最新のものでは無い様…

未踏成果報告会に参加

今日、学内で開かれた「IPA未踏ソフトウェア創造事業2006年度下期千葉PM採択プロジェクト最終成果報告会」に参加してきた。とはいっても、いろいろとやることがあったので、出たのは午後一のRubyの話だけ。笹田さんの話は過去のSWoPPなどで聞いたことがある…

SubversionでリポジトリURLを変更

この前、サーバのディレクトリを整理したときに、Subversionのリポジトリを移動したため、作業コピーの参照先の修正が必要となった。そのときのメモ。 Subversionでは、リポジトリのURLが変更された場合に、その作業コピーの管理ファイル中の参照先リポジト…

Problem of Installing Ubuntu 7.04

今日、研究用に作ったデスクトップPCにUbuntu 7.04をインストールしたんだけど、ブートできるようにするまでに手間取ったのでそのときのメモ。 今回作ったPCの構成は以下のようになっている。 CPU Intel Core2Duo E6300 マザーボード Intel DG965SSCK HDD Hi…

grepで.svnディレクトリを除外して再帰検索

すごく久しぶりの日記。論文とかで忙しかったので。 前々からSubversionで管理されているディレクトリ以下を再帰的にgrepすると、Subversionの管理ディレクトリ(.svn)以下のファイルまでマッチされちゃってていやだったんだ。まぁ、普段はEclipseで開発し…

Rubyでexpectを用いて複数マシンのssh鍵を収集

今日、あるプロラムを複数のマシン上で走らせるために、あらかじめ各マシンのssh鍵を収集しておく必要ができた。使用するマシンのssh鍵をほとんど持っていなかったため、マニュアルでするとなると毎回sshでログインしてyesって打たなきゃならない。そんなこ…

Rubyでリフレクションを用いてクラス名からインスタンスを生成

この間、C+Rubyで半分必須・半分遊びで作っているライブラリ(研究で必要な(?)実装を、趣味で使いたい技術を使って実装してる)の実装中、Rubyでクラス名を表す文字列からそのクラスのインスタンスを生成する必要が出てきたんだけど、ちょっとはまったの…

Microsoft Network Monitor 3.0の使い心地

2/27の日記でインストールしたMicrosoft Network Monitor 3.0を今日ちょっとだけまじめに使ってみた。なかなか良い感じ。フィルタを設定するときにプロトコルヘッダーのフィールド候補をポップアップしてくれるところが何より気に入った。 気がついたこと、…

Microsoft Network Monitor 3.0

先週公開された、Microsoft公式のネットワークモニタリングツール「Microsoft Network Monitor 3」を研究室のデスクトップマシン(Vista)にインストールした。 Etherealと(おそらく)まったく同じことができるソフトウェアなんだけど、インストールはこち…

Ruby外部プログラム実行でのSIGINTの扱い

system関数を使って外部プログラムを実行しているときに、Rubyスクリプトに対してCtrl-C(SIGINT)を打っても、system関数で実行している外部プログラムを止めるだけで、Rubyスクリプトを止めることはできない。ループでsystem関数を連続的に何度も実行する…

Ubuntu on VMWare

最近、研究・開発用のLinuxとしてUbuntuを使っている。ラップトップ上のVMWare Workstation内で。基本的に気持ちよく使えているんだけど、なぜか時間が狂う問題が発生した。vmware-toolsはきちんとインストールしているんだけど。 おそらく、原因はDVS(Dyna…

XenでDom0からDomUのCPU使用率を得る方法

仮想マシンモニタXenがインストールされた環境上でDomain0のホストからDomainUのホストのCPU使用率を取得する方法を調べた。 Domain0のホストにおいてRootユーザは「xm」コマンドを用いてDomainUのホストの管理・監視ができる。xmコマンドには「list」という…

JavaでLinuxシステムのCPU使用率を取得

こちらのページを参考に、JavaでLinuxシステムでのCPU使用率を求める方法を調べてまとめた。 手順をまとめるとこんな感じ。 /proc/statの最初の行からユーザモードの実行時間、底優先度のユーザモード実行時間、システムモード実行時間を取得 現在時刻を取得…

JavaでOSチェック

最近、調べた技術的なことを個人wikiにまとめているんだけど、Firefoxの検索バーに対応したはてなダイアリーに書いていくと、もっと検索がしやすくなるんじゃないかなって思い始めた(wikiソフトが検索バーに対応すれば解決しちゃうんだけど)。基本的にここ…

サーモグラフィのようなグラデーション

仕事でサーモグラフィのようなグラデーションを100段階で表示するプログラムが必要になった。そこで、サーモグラフィのような色を生成してくれるようなサンプルコードを探したのだがなかなか見つからない(Google Code Searchも使って「Thermography」で検索…

Rubyでprivateなクラスメソッド その2

昨日の日記で、privateなクラスメソッドは「private_class_mathod」を使って定義すると書いたが、コメントで特異クラスを使う方法を教えていただいた。この方法だと、メソッドとクラスメソッドの定義を分離できるので、ソースが見やすくなるかもしれない。 c…

Rubyでprivateなクラスメソッド

今日、rubyでプログラムを書いてて、クラスメソッドを定義したんだけど、使用条件からしてprivateなメソッドにしたかったんだ。そこで、「private」キーワード(?)を使ってそのメソッドをprivateにしてみた。だけど、クラス外からでもアクセスできてしまう…

sed & awk

こんな感じの内容がいっぱい書かれた複数のXMLファイルから、 <host> <address>192.168.10.1</address> <name>linux-server</name> <information>Windows 2000 Pro</information> <room>My Room</room> <maintainer>me</maintainer> </host> IPアドレスだけを取り出してファイルに出力する、1行シェルスクリプト。 $ grep address 192.168.10.* | sed -e 's/:/ /' | awk '{pri…

Samba on Ubuntu

今日、UbuntuでSambaの設定をした。 最初、GUIメニューの「システム」−>「システム管理」−>「フォルダの共有」をなんとなくクリックしてみたら、自動でSambaのインストールが開始されたし、インストール終了後にはGUI画面で共有するフォルダを選択できたの…

setjmp&longjmp

setjmpとlongjmpが関数をまたいだgotoを実現するってのは概念的にはわかってたんだけど、実際どういうふうに使うのかわからなかったので試してみた。何で急にこんなことをしたのかと言うと、Super Technique 講座〜longjmpと例外をひょんなことから見つけて…

パッチ適応時にバックアップを取る

以前の日記(id:stakizawa:20050531#t1)でプログラムのソースにパッチをあてたときに元ファイルのバックアップがされないって書いたけど、今日その方法がわかった。単に「patch」コマンドに「-b」オプションを付けるだけ。これで変更されるファイルを「.ori…

実行時スタックサイズ変更 on Linux

週末、友達にプログラムについて質問されたときに気になったことを調査した。それは、Linuxでプログラム実行時に利用されるメモリ上のスタックサイズの1)確認方法、2)変更方法。 スタックサイズの確認の場合、bashを使っていれば、bash組み込みの「ulimit」…

ipfilterの統計情報内のmaximum項目

「開発」ってネタでもないんだけど・・・ 研究室で管理しているゲートウェイマシンのファイアウォールの統計情報が僕のメールアドレスまで送られてくる設定になっていたんだけど、今までその統計情報内の項目でよくわからないフィールドがあったのが、今日、…

魔法のコマンド

id:stakizawa:20061006#t1でネットワーク異常について書いたんだけど、そのときに、ipfilterのログを解析するのに使ったコマンドがある。ちょっと長いけどこれ。 # awk '{print $10}' /var/log/ipf.log | sed -e 's/,/ /g' | awk '{print $1}' | sort | uniq…

Install Rails on Windows XP

Ruby on RailsをこんどはWindowsにインストールした。以前Debianにインストールしたんだけど、やっぱり遊ぶのはWindows上のほうが楽そうだったので。 以下に手順をまとめる。 MySQLのページからMySQL本体(mysql-essential-5.0.24a-win32.msi)とMySQLのGUI…

SubversionをEclipseで使う方法

ラップトップ内のファイルを整理していたら、以前日記に書こうと思った原稿が見つかったので、載せてみた。内容、古いかもしれないけど。 僕は研究用のプログラムは主にJavaで書いてる。単純なプログラムだったらRubyやシェルスクリプトで済ましているけど。…

Emacs-Lisp let文でちょっとはまる

Emacs Lispで現在Emacsで編集中のファイルのフルパス名をクリップボードにコピーし、かつミニバッファに表示するっていう関数を書こうとしたところ、ちょっとはまってしまった。 最初僕が書いたプログラムはこんな感じ。 (defun copy-file-path () (interact…