torutkのブログ

ソフトウェア・エンジニアのブログ

2009-01-01から1年間の記事一覧

シンボリックリンクの実パス取得しJAVA_HOMEを設定する

Javaで作られたプログラムでは、環境変数JAVA_HOMEを要求するものがあります。Linuxの場合、標準で搭載されるGCCのGCJはバージョンが古い、互換性の問題で実質はSunのJDKをダウンロードしてインストールするのがほとんどでしたので、JAVA_HOMEはほぼ固定(/u…

HudsonのRPMパッケージをCentOS 5にインストール

「継続的ビルド」ツールのHudsonについてのメモです。以前、自動ビルド環境とHudson - torutkのブログで、Hudsonの最初の一歩について書きました。その後、Red Hat系OS向けにRPMパッケージ形式で提供されるようになり、今回RPMパッケージを入れて稼動させる…

チケット駆動と分散バージョン管理

実は、チケット駆動開発はいいなぁと思いつつ、チケット駆動開発は習慣化が必要で、習慣化するまでは非常に努力を要するため、今までちっとも実践できずにいました。最近、地理的に離れた複数拠点で、しかもネットワークが断絶に近い状態で、同一ソフトウェ…

[Linux]USBメモリの着脱を検出する方法

Linuxで、USBメモリが挿されたことを検出して処理を実行したく、調べてみました。 GNOMEが立ち上がっていると自動でマウントするので、マウントポイント(一般的には/media/disk)をポーリングする dmesgのログを解析する(/var/log/messagesに出されるkerne…

今度のJava読書会BOFは、Scalaです

Java読書会BOFは、10月で「Filthy Rich Clients」が読了したので、11月からの読書会の課題図書を選出し、以下の書籍に決まりました。11月14日(土)が第1回目となります。申し込みはJava読書会BOFのWebサイト上からどうぞ。 http://www.javareading.com/bof/…

ccacheでビルド時間短縮

CentOS5.3にccacheを入れてみました。EPELサイトにバイナリパッケージがあるので、/etc/yum.repos.d/にepelのrepo設定ファイルを置いていれば、yum install ccacheでOKです。実際、どの程度早くなるのかを試すべく、log4cpp-1.0をビルドして測ってみました。…

Windows上でPython,paramikoでSSH

Pythonでライブラリparamikoを使ってSSH接続を行う際、Windows上で以下の問題が発生しました。 WindowsXP, ActivePython2.6, paramiko 1.7.5での問題 C:\>python ActivePython 2.6.3.7 (ActiveState Software Inc.) based on Python 2.6.3 (r263:75183, Oct …

PythonとWindowsOS

ActivePython 2.6付属のPythonWin応答なし問題解消 いきなり固まった。ここに回避方法があります。メモhttp://noritan-micon.blog.so-net.ne.jp/2009-02-28 MeadowでPython編集 あれ、拡張子.pyのファイルを開いてもFundamental-modeのままだ。M-x python-mo…

bazaarと外部diff・mergeツール

Bazaarを使い始めて、diff・mergeにGUIなツールがほしいと思っていたところ、meldというツールがあるのを知りました。また、bazaarのコマンドからmeldを起動する方法があります。 Meld CentOS 5/RedHat Enterprise Linux 5では、EPELリポジトリにmeldがあり…

来月から読む書籍の投票開始

Java読書会BOFは、今月の読書会で「Filthy Rich Client」を読了し、来月(11/14開催)から読む新しい書籍の投票に入りました。開かれた読書会を目指すべく、常連だけに固まらないよう配慮してきたつもりですが、今年に入って新しい人の参加が少なくなってき…

Bazaarのリポジトリビューア loggerhead

CVSやSubversionにおけるViewVCのように、Bazaarのリポジトリ情報をWebブラウザで可視化するツールが、loggerheadです。https://launchpad.net/loggerhead/+download 依存パッケージのインストール pythonで書かれており、以下のpythonパッケージが必要です…

RedmineでPDFの文字化けを解消

以下の組み合わせでは、Redmine.JPサイトのFAQRedmine.JP | PDFおよびCSVの文字化けを回避するにある設定をしても、日本語の文字化けが解消されません。 CentOS 5.3(LANG=ja_JP.UTF-8) Ruby 1.8.5 Redmine 0.8.5 解決策は、Rubyのバージョンを上げることで…

distccによる分散コンパイルでビルド時間を短縮

C++

背景 C++は、コード規模の増分に対して指数的にコンパイル・リンク時間が増大します。 以前、C++とJavaのビルド時間比較で調査したデータid:torutk:20071104と、id:torutk:20071107から、C++のコード規模によるビルド時間の違いをまとめ直したのが以下の表で…

SELinuxとWebとSamba

UNIXの伝統的なセキュリティ制御では立ち行かない今日では、SELinuxによるセキュリティが不可欠ですが、使わないと覚えないので、あえて有効のままにしています。 いつの間にか、apacheのWebディレクトリにsambaからアクセスできない 当初、Web用ディレクト…

Sun JDKをalternativesに登録するJPackage Project

id:torutk:20090301 の最後で少し言及したJPackage、これは少々理解が間違っていたようです。SunのJDK(RPMバイナリ)をLinuxにインストールした後、JPackage(RPM)をインストールすると、alternativesの仕組みに沿ってJDKの切り替えができるようになります…

自動ビルド環境とHudson

「継続的インテグレーション」ツールHudsonを使った最初の一歩です。新しいツールは使いはじめるのに敷居があるので、Hudsonにおける敷居を越える参考にと日記をしたためてみました。 前置き 現在のプロジェクトでは、毎週リリースを行っているのですが、有…

ある日突然Python

仕事で担当している今のプロジェクトは開発も大詰めを向かえ、試験に入っていく今後、いろいろなツールを作っていくことになると予想されます。そこで、各自が好き勝手な言語でツールを作ってしまうと人の作ったツールはいじれない、中が分からなくなる、な…

レガシーデータベースの複合キーとscaffold

Grailsでレガシーデータベース(既に作られているリレーショナル・データベース)を扱うWebアプリケーションを作る際に出てくる課題の1つが、複合キーの扱いです。Grailsの売りである(Ruby on Railsが発祥の地ですが)scaffoldを使おうとすると、主キーとし…

「Grailsをマスターする:Grailsのイベント・モデル」を読みながら動かしてみる

Grails をマスターする: Grails のイベント・モデルの記事に沿ってGrailsの習得を進めます。id:torutk:20090726の続きです。 ビルド・イベント 記事の記述にある、GRAILS_HOME/scripts/Clean.groovyを実際に見ると、内容が違っています。Grails 1.1で変更に…

「Grailsをマスターする:Grailsとレガシー・データベース」を読みながら動かしてみる

Grails をマスターする: Grails とレガシー・データベースの記事に沿ってGrailsの習得を進めます。id:torutk:20090725の続きです。 一つ記事を飛ばしました Grailsをマスターするシリーズは、前回読んだGrails をマスターする: Grails サービスと Google Map…

「Grailsをマスターする:GrailsサービスとGoogle Maps」を読みながら動かしてみる

Grails をマスターする: Grails サービスと Google Mapsの記事に沿ってGrailsの習得を進めます。id:torutk:20090722の続きです。 サービスのクラス生成 Grailsは、MVC(Model/View/Controller)に相当する、ドメイン、ビュー、コントローラの3つに分割する…

「Grailsをマスターする:Ajaxをほんの少し加えた多対多の関係」を読みながら動かしてみる(Part2)

id:torutk:20090720の続きです。Flightのcreate.gspに、IATAコード入力フォームを追加する作業でページを表示するとエラーが発生していましたが、再度 grails generate-views Flight でGSPを生成しなおしてから変更作業をしたところ、エラーが発生しなくなり…

「Grailsをマスターする:Ajaxをほんの少し加えた多対多の関係」を読みながら動かしてみる

Grails をマスターする: Ajax をほんの少し加えた多対多の関係の記事に沿ってGrailsの習得を進めます。id:torutk:20090719の続きです。 ドメインクラスFlightを追加し、多対多のモデルを構築する 今までの記事で扱っていたサンプルアプリケーションtrip-plan…

「Grailsをマスターする:Groovy Server Pagesによるビューの変更」を読みながら動かしてみる

Grails をマスターする: Groovy Server Pages によるビューの変更の記事に沿ってGrailsの習得を進めます。id:torutk:20090718の続きです。 コントローラとビューの生成を実行時に動的ではなく事前生成に変更し、生成された内容を読む 前回までは、Grailsの簡…

「Grailsをマスターする:GROM:おかしな名前の真面目な技術」を読みながら動かしてみる(Part 2)

id:torutk:20090714:p1の続きです。残っていた「GrailsのORM DSL」(レガシーデータベースの使用)と「DataSource.groovy」を読みながら動かしてみます。 GrailsのORM DSL ドメインクラスにstatic mapping = {...} と記述して、ドメインクラスがマッピングす…

「Grailsをマスターする:GROM:おかしな名前の真面目な技術」を読みながら動かしてみる

Grails をマスターする: GORM: おかしな名前の真面目な技術の記事に沿ってGrailsの習得を進めます。id:torutk:20090711:p2の続きです。 ドメインクラスAirlineの追加 先に作成したドメインクラスTripと1:多の関係となるAirlineクラス作成します。ドメインク…

gwenn版SQLite3用JDBCドライバのビルド(詳細)

先日、GrailsのDBをSQLiteに対応させようといろいろ試したときに、メジャーな(?)SQLiteのzentus版では2回目のGrails起動でドライバが未実装のメソッドを叩いて例外がスローされ停止する問題がありました。 id:torutk:20090711gwenn版SQLiteJDBCドライバは…

SQLite3データベースをGrailsから使う

id:torutk:20090622の続きで、GrailsからSQLite3データベースを使う方法の模索です。GrailsはデータベースマッピングにHibernateを使っています。Hibernateは残念ながらSQLiteをサポートしていません。そこで、HibernateにSQLiteを扱わせるため、org.hiberna…

[Grails] 「Grailsをマスターする:初めてのGrailsアプリケーションのビルド」を読みながら動かしてみる

Grails をマスターする: 初めての Grails アプリケーションのビルドの記事に沿ってGrailsの習得を進めます。最初はGrailsのインストールです。 インストール Javaはいつでも最新版(現時点ではJDK 1.6.0_14)を入れているので、Grailsだけインストールします…

新しい技術の取り組み方ーGrails編

Grailsを使ってみることにしたので、その取り組みを日記に残します。 きっかけ 自分ですべて面倒見れる規模のアプリケーションなら、RDBMSなんてまず使わないのですが(オンライン系、あるいは監視・制御系システムが多い)、今回はアーキテクチャが決まった…