サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
www.masatom.in
ユーザ入力値は必ずValidateする必要がありますが、Actionクラスに入力チェック処理などを書くと、ビジネスロジックと入力チェック処理が混在し、あまりキレイとはいえません。また入力した内容はActionForm?が責任を持つべきだという思想(?)からか、ActionForm?にはvalidateする統一的なI/Fを持っています。ちなみにこの方法はStruts1.0までのもので、1.1以降はValidatorプラグインが主流となるようです。 ロジックの実装 † まずはActionForm?にチェックロジックを実装します。ActionForm?にはvalidateメソッドが定義されているのでこのメソッドをオーバーライドします。下の例ではユーザ入力値が空だったり、パラメータがリクエストにのってこなかったりしたときに、エラーを表示しています。 public ActionErrors vali
2024-08-03 VMware/ESXi/バックアップ運用 2024-07-30 Struts/アプリケーションのモジュール化 2024-07-26 Struts/Tilesの基礎 2024-07-25 Subversion/削除してしまったファイルを元に戻す 2024-07-18 GitHub/ローカル・リモートブランチとoriginのはなし 2024-07-09 Struts/プルダウンの作り方 2024-07-02 AWS/TIPS集 2024-05-23 Java/暗号化 2024-05-15 PukiWikiにBasic認証をつける 2024-04-15 Java/Jenkins/プラグイン開発のTIPS集/Jenkins CLI 2024-03-09 OpenOffice.org/Linuxで常駐させる 2024-03-03 Java/Direct Web Remoting
たとえばLog4jのライブラリなど、どのプラグインでも使用したいjarがあります。そのjarを個々のプラグインディレクトリで重複して持ってたらプラグインのサイズがどんどんでかくなってしまうし、なんかムダな感じがしますね。きっと同じjarファイルを参照する方法があるんだろうと思って調べてたんですが「プラグイン化」してそのプラグインを必須プラグインにする、とやればよいようですね。 Log4jでやってみる † たとえばlog4jをプラグイン化するには、 このようなディレクトリ構成にし、plugin.xmlは <?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin id="nu.mine.kino.log4j" name="%pluginName" version="1.2.9" provider-name=
Strutsのメッセージ処理機構について † Strutsのメッセージ処理を行うActionMessage?の機能について見ていきたいと思います。 ActionMessage?とはActionクラスで発生したエラー情報(とかなにかメッセージ)をJSPに伝達するための機構です。Actionクラスで発生したエラーをActionMessage?というインスタンスに格納することで、JSP側で格納した内容を参照することができます。ActionMessage?の機能は以下のモジュールから成っています。。 各エラー情報*1を格納するActionMessage? ActionMessage?のリストを格納するActionMessages? request,sessionなどのスコープ上に存在するActionMessages?内の情報をJSP上で表示するためのタグライブラリ<html:messages>,<
以下のような親子モデルで、ネストしたオブジェクトが正しく変換されるか、配列やListやSetなどが正しく変換されるか試してみます。 public class Parent { private String name; private int id; private Child child; public Child getChild() { return child; } public void setChild(Child child) { this.child = child;} public int getId() { return id;} public void setId(int id) { this.id = id;} public String getName() { return name;} public void setName(String name) { this
ExcelシートとJavaBeans?の指定 † また、Excelの行のIStockのリストとして返すStocksクラスも定義します。 import java.util.List; import net.java.amateras.xlsbeans.annotation.HorizontalRecords; import net.java.amateras.xlsbeans.annotation.Sheet; @Sheet(name = "株価情報") public class Stocks { private List<IStock> stocks; public List<IStock> getStocks() {return stocks;} @HorizontalRecords(tableLabel = "現在値一覧", recordClass = Stock.class) pub
Eclipse/プラグイン開発のTIPS集/ソースコードを解析するパーサASTParserやEclipse/プラグイン開発のTIPS集/org.eclipse.jdt.core.ICompilationUnitでもちょっとやりましたが、パッケージ・エクスプローラからSelection経由でICompilationUnit?*1を取得することができました。その Javaソースは、何とかっていう名前のJavaプロジェクトに属しているわけですが、Javaプロジェクト自体を操作するインタフェースもEclipseに用意されています。Javaプロジェクトを作成したり、削除したり、ソースを生成したりすることができるわけですね。以下にJavaプロジェクトを操作する方法をまとめておきます。 パッケージ・エクスプローラを見てもわかるとおり、Javaプロジェクトはツリー構造になってるわけで、よくあるコンポジット
.htaccessを有効にする † ディレクトリ(とそのサブディレクトリ)単位のアクセス権などを設定するのに、.htaccessというファイルが用いられる。詳しくはhttp://www.mikeneko.ne.jp/~lab/web/htaccess/index.htmlを参照。 デフォルトの設定では、.htaccessは無効となっていた。 有効にする方法は、 <Directory "/var/www/html"> のAllowOverride? をallに変更して、.htaccessを有効にする 最終的には、httpd.confは以下のようになった。 <Directory "/var/www/html"> # # Possible values for the Options directive are "None", "All", # or any combination of: #
HttpComponentsはApacheが提供する、HTTPをつかって通信をおこなうプログラムを書くときに便利なJavaのライブラリです。これを用いると簡単にHTTPリクエストを送信したり、レスポンスを受信して処理したり出来ます。 ダウンロード † http://hc.apache.org/downloads.cgi より httpcore-4.0.jar httpclient-4.0-beta2.jar をダウンロードします。上記ライブラリはまた下記のCommonsのライブラリに依存しているのでココより commons-logging-1.1.1.jar をダウンロードします。 ↑ サンプル † GoogleのGoogle AJAX Search APIに対してリクエストを行い、JSON形式のStringを取得してみました。 import java.io.IOException; im
このWikiを更新したときに、自動的にPingサーバにPingを打ってくれるプログラムを書きたくて、XML-RPCをちょっと調べてみました。XML-RPCとはHTTP経由でXMLをやりとりして、リモートプロシージャコールを実現するモノみたいです。 JavaでXML-RPCを使うには、Apache XML-RPCを使うのがよいようです。これを使うことで、めんどくさいXMLを組み立てることなしに、サーバ側のプログラムを呼び出すことができます。楽です。 今回サンプルを書いてみましたが、以下のモジュールをダウンロードしました。 commons-codec-1.3.tar.gz xmlrpc-current.tar.gz 用語 † エンドポイント クライアントのリクエストを受け付けるURLです。たとえばココログのPingサーバのエンドポイントはhttp://ping.cocolog-nifty.co
CSVを読み込むJavaライブラリ † 仕事ではよくCSVファイルを読み込んで云々といった業務処理が結構必要になったりしますが、Javaのライブラリを探していたところ、よさげなライブラリが見つかりました。opencsv - an open source csv parser for Java です。 ちょっと触ったところ非常にシンプルで使いやすかったのでメモっておきます。 ↑ 使ってみる。 † Eclipseのプロジェクトとしてアップしました。 http://www.masatom.in/viewvc/trunk/CSVReaderSamples/?root=Examplesよりダウンロード可能です。 サンプルは以下のような感じです sample.csv 姓,名,年齢 とうきょう,たろう,33 東京,太郎,15 プログラム public class Main { public static
うちのサーバ群も仮想化環境としておせわになってるVMware ESXiですが、バックアップの運用を真剣に考えなきゃと思い、着手し始めました。 いろいろググってみると ゲストOSをなるべく止めないで、ホットバックアップしたい できれば自動化 できれば無償で などを実現している方もいらっしゃるようですね。 いろいろ調べながら、うちでもやってみることにします。 ホットバックアップの基本的な考え方 † さてホットバックアップの方法ですが、そもそもVMwareの仮想マシンはOS起動中はロックされていてコピー(バックアップ)することができないのですが、スナップショットを取ることによって、スナップショット時点までのファイルはロックが解放されファイルコピーができるようになります。スナップショットを取れば、それまでのファイルとそこからの変更分みたいなファイル形式になるって感じでしょうね。 なので、スナップシ
2024-05-23 Java/暗号化 2024-05-15 PukiWikiにBasic認証をつける 2024-04-15 Java/Jenkins/プラグイン開発のTIPS集/Jenkins CLI 2024-03-31 GitHub/ローカル・リモートブランチとoriginのはなし 2024-03-09 OpenOffice.org/Linuxで常駐させる 2024-03-03 Java/Direct Web Remoting(DWR)をつかう 2024-02-20 Linux/sudoを使う 2024-02-14 Struts/リンクの作り方 2024-02-10 Linux/.forwardでメール受信時いろいろな処理をする。 2024-01-31 Subversion/削除してしまったファイルを元に戻す 2024-01-29 Struts/ActionMessagesによるエラ
いままで Epson Endeavor ST110というPCにCentOS 5.2をインストールし、そのOS上にVMware Serverをインストールして、さらにそのVMware上で複数のCentOSを運用していました。 今回ESXiに移行するにあたって、VMware Serverで使用していたVMをそのまま持ってきたいわけですが、ただコピーしただけではうまく動かないようです。 VMware Serverで使用していたVMをESXiで稼働させるための手順をメモしておきます。 流れとしては いままでVMware Serverで使用していた仮想マシンを cd /var/lib/ tar cvzf vmware.tar.gz vmware などでアーカイブしてWindows上に持ってくる Windows上のVMware ConverterでVM(*.vmx)を Virtual Applianc
MavenはApacheが開発しているプロダクト管理ツール(?)です。Antの用にビルドしたり、プロジェクト用のサイトを作成したり、JavaDoc?を作成したり、JUnitを実行したりできる何でもありツールですね。 Install † http://maven.apache.org/download.html よりダウンロードし、適当なところに解凍しておけば完了です。パスを通しておけば完璧です。 ↑ プロジェクトを作る † まずはプロジェクトの作り方です。 mvn archetype:create -DgroupId=nu.mine.kino.mavensample -DartifactId=kino-app で、以下のプロジェクト構成ができあがります。 bash-3.2$ pwd /cygdrive/t/workspace3.2 bash-3.2$ mvn archetype:creat
概要 † Eclipseのプラグインを勉強しているついでに、Eclipse3.0で導入されたRCPを使ってみました。RCPとはEclipseベース(ワークベンチベースっていったほうがいいかもしんない)のアプリケーションを作成するためのフレームワークです。今まではプラグインを作って、Eclipseにプラグインしてたわけですが、プラグインが単体で稼働するようになったと考えればよいと思います。 前々からEclipseをベースにして、開発ツール(WebSphereStudio?みたいなパターン)だけでなく普通のアプリケーションもこの上で構築できるんでないのってかんがえてたんですが、まさにそのためのフレームワークみたいですね。 手順はプラグインを作るのと基本的に一緒です。必ず作らなくちゃいけないモノは org.eclipse.core.runtime.IPlatformRunnable? の実装クラ
例となるモデル † あるサービスの顧客(Customer)とその担当者(User)というモデルを例にして考えてみます。担当者は複数の顧客を担当しています。逆に顧客にはひとり、担当者がついています。ついていない場合もあるとしましょう。 ↑ テーブル定義 † describe USER; +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | NAME | v
ST110の内蔵SATAコントローラをESXiに認識させる手順です。ESXiは起動時にoem.tgzというファイルを参照しているようで、そのファイルを編集することで、デフォルトでは認識しないデバイスを認識させることができるようです。 ハードの情報確認 † まずは ESXiサーバにSSHでログイン しておきます。 ハードの情報を確認するため以下のコマンドを実行します。 ~ # lspci -v | grep IDE 00:03.02 IDE interface Mass storage controller: Intel Corporation 00:31.01 IDE interface Mass storage controller: Intel Corporation ~ # lspci -v 00:03.02 IDE interface Mass storage controller
プラグイン用Eclipseプロジェクトを作る † mvn archetype:create -DgroupId=nu.mine.kino.plugins \ -DartifactId=maven-hoge-plugin \ -DarchetypeArtifactId=maven-archetype-mojo cd maven-hoge-plugin/ mvn eclipse:eclilpse pom.xmlは以下の物が生成されました。 <project xmlns="http://maven.apache.org/POM/4.0.0" \ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 \ http://maven.apac
Eclipse(Ganymede) に Subversion プラグイン Subversive をインストールする - Tosshi Note このサイトを参考に、Eclipse Ganymede(3.4)にSubversiveをインストールしました。しかし最近リリースされたSR2に移行したところ、GanymedeのUpdate SiteからSubversiveが消えてしまったようです。 Ganymede Update Site から Subversive が消えている - 回り道日記@はてな を見させていただいた限り、別のUpdate Siteを追加する必要がある模様。具体的には以下の通り。 Help >> Software Updates.. を選択 Available Software で Add Sites..をクリック Locationを http://download.ecli
Tracでは、Wikiとチケット、Subversionのソースリポジトリとそこへのコミットログなどというドキュメントを管理・閲覧することが出来ますが、これらのドキュメントで相互にリンクを張りたいときがあります。Tracにはあらかじめ便利な変数が備わっていて、その変数を埋め込むことでリンクを張ることができます。 具体的には † 具体的には以下のようなシーンを想定しています。 Eclipseでsvnにコミットしたときに、そのコミットのトリガとなったチケット*1に、コミットログを追記したい。その追記した文言にはそのコミットのチェンジセットへのリンクが張られる。 つまりチケットからチェンジセットへのリンクですね。ちなみにコミットログでチケットを更新したり、チケットを閉じたりする方法は「コミット時に処理を行う」が参考になると思います。 Wikiである機能に関するチュートリアルを書いていて、チュートリ
2024-08-15 GitHub/ローカル・リモートブランチとoriginのはなし 2024-08-03 VMware/ESXi/バックアップ運用 2024-07-30 Struts/アプリケーションのモジュール化 2024-07-26 Struts/Tilesの基礎 2024-07-25 Subversion/削除してしまったファイルを元に戻す 2024-07-09 Struts/プルダウンの作り方 2024-07-02 AWS/TIPS集 2024-05-23 Java/暗号化 2024-05-15 PukiWikiにBasic認証をつける 2024-04-15 Java/Jenkins/プラグイン開発のTIPS集/Jenkins CLI 2024-03-09 OpenOffice.org/Linuxで常駐させる 2024-03-03 Java/Direct Web Remoting
メールサーバの転送機能.forward † Fedoraなどのディストリビューションには、メールサーバとしてPostfixが標準でインストールされていることが多いと思います。 このPostfixには*1メールを転送するための仕組みとして.forwardファイルというのがあります。このファイルに宛先を書いておけば、その宛先にメールが転送されるという仕組みです。 [fuga@www ~]$ cat ~/.forward hogehoge@foo.com [fuga@www ~]$ と書いておけば、このアカウントにメールが来たらhogehoge@foo.com にメールが転送される、ってことですね。 で、この機構なのですがパイプを使って「転送先としてプログラムを指定する」ことができます。具体的には [fuga@www ~]$ cat ~/.forward "| /home/fuga/test.p
クラスパス設定 <path id="project.class.path"> <pathelement path="${class.dir}" /> <fileset dir="${jar.dir}"> <include name="**/*.jar" /> </fileset> </path> タスク定義 <taskdef classpathref="project.class.path" resource="tasks.properties" /> テスト対象のコンパイル <target name="javac.src" depends="init" description="ソースをビルドします"> <mkdir dir="${class.dir}" /> <!-- リソースファイルなどをコピーしている --> <copy todir="${class.dir}" preservel
VMware Infrastructure Remote CLIとは † VMware ESXiは VMware Infrastructure Clientというクライアントソフトからサーバに接続して色々オペレーションを行いますが、コマンドラインからのインタフェースもサポートされています。具体的には # vmkfstools --createvirtualdisk 200m /vmfs/volumes/[datastore]/hogehoge.vmdk などと入力して仮想ディスクを作成する、などですね。 コマンドラインからオペレーションするにはVMware Infrastructure Remote CLI(Command Line Interface)というライブラリをインストールする必要があります。中身はPerlでできているようで、Perlなどの実行環境(Active Perlとか)が
英語モードでvSphere Clientを起動する † 引数に -locale en_US を指定。なんでこのTIPSが必要だったって、日本語モードで起動したら文字列チェックでエラーになるのかローカルのでDataStore?をマウントできなかったからです。 ↑ SnapShot?をとって、で削除してみた † wwwという仮想マシンに対して、スナップショットをとって、で、削除してみました。 # vim-cmd vmsvc/getallvms| awk '/www/ {print $1;}' 176 # vim-cmd vmsvc/snapshot.create `vim-cmd vmsvc/getallvms| awk '/www/ {print $1;}'` forBackup Create Snapshot: # vim-cmd vmsvc/get.snapshotinfo `vim-c
最近はルータなどにもVPN機能がついているヤツがあって、外部からセキュアにアクセス可能!なんてのをちょくちょく見かけます。うちも外部から自宅のNASにアクセスできたら便利だなーと思って、うちのFedoraにVPNを入れてみました。OpenVPNなんで、正確にはSSL-VPNですね。 構成: サーバ側のネットワーク: 192.168.0.0/24 VPNサーバ(兼、ブリッジ機能、CA認証局): 192.168.0.3 VPNクライアントのIP範囲 192.168.0.150〜160 として話を進めます。 ライブラリのインストール † openvpn,sysfsutils,bridge-utils,lzo をyumでインストールします。 [root@www etc]# yum install openvpn Package Arch Version Repository Size openvp
次のページ
このページを最初にブックマークしてみませんか?
『www.masatom.in』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く