Access-Control-Allow-Origin と Access-Control-Allow-Headers について

Slim3 で JSON を受け取るために、久しぶりに Ajax のデータを受け取る処理を記述していたら、(Chrome 上で)下記のエラーが発生した。 XMLHttpRequest cannot load http://localhost:8888/api/json/... Origin http://localhost is not allowed by Access-Co…

Slim3 で JSON を利用する

参考 Slim3 JSON 機能の説明(非公式) GAE + Slim3 で JSON 出力 Model での記述例。 基本的には JSON を利用するのに既存の Model をそのまま使える。 しかし、JSON アノテーションで Model が保持するエンティティ内のプロパティを操作したい場合は、下記の…

任意の日のタイムスタンプの範囲を取得する

結局使わなかったけれど。 日付のパースには Apache のライブラリを利用。 import java.util.Date; import org.apache.commons.lang.time.DateUtils; public class MySample { private Date _startDatetime; private Date _endDatetime; private void setTim…

WWW::Mechanize と文字コード

WWW::Mechanize は、 HTTP レスポンスヘッダ部分の Content-type で設定されている charset HTTP レスポンスのボディに記述されている文字コードmeta 要素で設定されている Content-Type の charset を参照して、データの文字列を Perl 内部の文字列にデコー…

Slim3 の application_ja.properties に日本語を書くために UTF-16 LE を16進数で表現する

Slim3 の application_ja.properties にマルチバイトを記述するには、文字列を UTF-16LE に変換して16進数でダンプする必要があることに気が付いた。 この方法を Java でやる方法がわからなかったので、Perl で書いてみた。 #!/usr/bin/perl use strict; use…

Slim3 の BeanUtil で特定の値を処理対象外にしたい場合

例えば、渡された値が一意でその値を Key として利用したい場合や、タイムスタンプを Java で利用できるミリ秒単位に変換したい場合などで、BeanUtil で処理をする前に一度別の処理を行いたいときに使う。 public class ItemService { private ItemMeta a = …

Slim3 をローカルで起動するとエラーが発生する

エラー内容は下記の通り。 2011/06/21 3:03:50 com.google.apphosting.utils.jetty.JettyLogger info 情報: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger 2011/06/21 3:03:50 com.google.apphosting.utils.config.AppEn…

WWW::Mechanize で HTTP ステータスによって die するのを回避する

通常の初期設定では、WWW::Mechanize は HTTP ステータスで 400 や 404 コードが返されると、WWW::Mechanize は die を起こして処理を中断してしまう。 そのため、400 や 404 コードが返された場合の処理が記述できない。 対応方法 use WWW::Mechanize; my $…

LWP::UserAgent の POST メソッドと 414 Request-URI Too Large コード

LWP::UserAgent の POST メソッドの間違った使い方 LWP::UserAgent の POST メソッドの間違った使い方をしていたため、レスポンスに「414 Request-URI Too Large」が返ってくる原因に気が付かなかった。 問題だったコード #!/user/bin/env perl use strict; …

Slim3 の JSP でそのまま文字列を出力する

JSP ファイル内での記述 <p>${f:h("&amp;")}</p> <p>${"&amp;"}</p> 出力後 <p>&amp;amp;</p> <p>&amp;</p>

lenght 関数の動作確認

Windows 上で動作を確認した。 #!/usr/bin/env perl # 日本語 use strict; use warnings; use Encode; use utf8; my $chars; while (<DATA>) { $chars = $chars . $_; } print encode('cp932', "Perl の内部文字コードの場合は lenght 関数は文字数を返す\n"); pri</data>…

ports インストール時のオプションを表示する

ports インストール時のオプションの設定内容を表示する % sudo make showconfig ports インストール時のオプションの設定内容を破棄する % sudo make rmconfig 設定ファイルの場所 「/var/db/ports」下にある。このディレクトリ下のディレクトリを削除する…

てっとり早く ports 名を知りたい場合

whereis コマンドにアスタリスクを加えて探すよりも、FreeBSD の公式サイトから入手できる ports を探したほうが早い。 About FreeBSD Ports

MySQL 5.1 系と MySQL 5.5 系の文字コード

MySQL をインストールしたら、root のパスワードを設定した後に、文字コードの設定をするが、エラーが発生。しばらく調べてみたら、 MySQL 5.5 系では文字コードの設定方法が変更されていた。 mysql> SHOW VARIABLES LIKE 'char%'; +-----------------------…

nginx をインストールする

nginx インストールまでの流れ % whereis nginx nginx: /usr/ports/www/nginx % cd /usr/ports/www/nginx % sudo make fetch-recursive % sudo make install clean インストールされたディレクトリ。 % ls -l /usr/local/sbin/nginx -r-xr-xr-x 1 root wheel…

FreeBSD 8.2 個人用設定

シェルを変更する zsh をインストールする。 $ whereis zsh /usr/ports/shells/zsh $ cd /usr/ports/shells/zsh $ sudo make fetch-recursive Password: $ make install clean zsh のインストールには時間がかかるのでしばらく待つ。現在のデフォルトシェル…

FreeBSD 8.1 i386 をインストール後の初期設定

FreeBSD を再インストールしたので、備忘録を残す。 インストール直後のデーモンの確認 # netstat -a | grep LISTEN tcp4 0 0 localhost.smtp *.* LISTEN tcp4 0 0 *.ssh *.* LISTEN tcp6 0 0 *.ssh *.* LISTEN sshd しか稼動していないのを確認。 時刻を合…

FreeBSD 8.1 で Kernel Panic が発生

Kernel Panic が発生 今週の日曜日(2011-05-15)深夜に、さくらの VPS で稼動している FreeBSD 8.1 で Kernel Panic が発生した。 エラーメッセージは、 spin lock 0xc0e0b6b4 held (smp rendevous) held by 0xc50e3870 (tid 100103) too long panic: spin lo…

Slim3 で Text 型で保存したい文字列を取り扱う場合

先日、 Slim3 JSP で f:h Text#getValue() は使えない というエントリを書いたが、親切に現在の Slim3 で Text 型を扱う場合の方法を教えてもらうことができた。 Slim3 で Text 型を扱う際に何が問題だったのか Text 型で保存した文字列を View 側で表示させ…

Slim3 JSP で f:h Text#getValue() は使えない

Text型で保存されたデータをいつ String 型に変換するかを悩み、他の人はどうしているのか調べてみたところ、 higayasuo 2009/06/28 10:06 後、r297でf:hでもText#getValue()を呼び出すように修正しました。 http://d.hatena.ne.jp/suzune64/20090627/124611…

文字型の日付をタイムスタンプに変換する

SimpleDateFormat ではなく、Apache Commons の lang ライブラリを使う。 import java.sql.Timestamp; import java.text.ParseException; import org.apache.commons.lang.time.DateUtils; public class StringDatetimeToTimestamp { public static void mai…

Slim 3 で時間帯を設定する

web.xml の web-app 要素に下記の子要素を追加する。 <context-param> <param-name>javax.servlet.jsp.jstl.fmt.timeZone</param-name> <param-value>Asia/Tokyo</param-value> </context-param>

Slim 3 で日付の書式を整える

(略) import java.util.Date; import org.slim3.util.DateUtil; (略) public void run(String args[]) { Date today = new Date(); // 日付の書式は SimpleDateFormat を参照 String datePattern = "yyyy-MM-dd"; System.out.println(DateUtil.toString(toda…

Apache Commons の lang ライブラリを使って日付の出力を試す

Apache Commons lang ダウンロード サンプルとして使っているクラスは下記のもの。 org.apache.commons.lang.time.DateUtils org.apache.commons.lang.time.DateFormatUtils DateUtils の parseDate の引数で指定する日付書式は、 java.text.SimpleDateForma…

Windows 版 Mercurial Eclipse で SSH を利用する

その前に自分の考え Mercurial Eclipse を使うのならば、TortoiseHg を使えばいいと思う。 理由としては、Windows 版 Mercurial Eclipse を利用するには、前提条件として TortoiseHg は必ずインストールをしておく必要があるためだ。そして、SSH 経由でリポ…

Mac OS X 版 Eclipse に Mercurial のプラグインをインストールする

Eclipse の Mercurial 用プラグインは下記のサイトでダウンロードできる。 Welcome to MercurialEclipse インストール手順 インストール方法は、他のプラグインと同様に、 ヘルプ 新規ソフトウェアのインストール… プラグインの URL http://cbes.javaforge.c…

assertThat と assertEquals

// b と a の保持するデータが一致するかチェック assertEquals(a, b); // a が b と同じインスタンスかチェック assertThat(b, is(a)); 参考 JunitのAssertion.assertEqualsとassertThat(equalTo)で結果が違う

Slim3 での No API environment is registered for this thread.

Service クラスの Test Case を作成していてテストを実行するとエラーが発生する。 java.lang.NullPointerException: No API environment is registered for this thread. 調べてみると、 ただ1点だけ、テスト用に Key を生成する方法がわかりません。 無理…

MS ACCESS で経過月数を求める

SELECT IIF(DAY([終了日]) >= DAY([開始日] - 1), DATEDIFF("m", [開始日] - 1, [終了日]), DATEDIFF("m", [開始日] - 1, [終了日]) - 1 ) AS 月数; 開始日が2011年1月31日で、終了日が2011年2月1日の場合 SELECT IIF(DAY(#2011/02/01#) >= DAY(#2011/01/31#…

MS ACCESS で年齢を求める

SELECT IIf(Format([生年月日], "mm/dd") > Format(Date(), "mm/dd"), DateDiff("yyyy", [生年月日], Date())-1, DateDiff("yyyy", [生年月日], Date()) ) AS 年齢;