L-03E購入

 

先週発売されたL-03Eを購入しました。

Nexus7をスマホのテザリングで運用していたのですが、

携帯の電池の減りが激しいことと、いちいちON/OFFするのが面倒だったので購入に踏み切りました。

 

今買ってきたばかりなので、使い勝手や性能については触れないことにして、

ここでは、費用面についてのみ記事にします。 

 

まず、前提として、私は現在docomoのXiスマホを契約しており、今回のモバイルルータは新規での契約となります。

スマホでのパケット通信はモバイルルータ経由で行うことにし、現在のXiパケ・ホーダイ ライト(4,935円/月)をXiパケ・ホーダイ ダブル(2,100円/月〜)契約に変更して、最低料金で運用します。

 

購入費用

本体:17,560円(一括購入)

事務手数料:3,150円(新規契約のため)

 

月々費用(モバイルルータ契約前比)

スマートフォン

  • Xiパケ・ホーダイ ダブル:-2,835円(ライトからの変更4,935円→2,100円)

■モバイルルータ

  • Xiデータプランフラットにねん:3,980円(プラスXi割で5,980円→3,980円)
  • moperaU:525円(当初半年間無料)
  • 月々サポート:-315円(2年間)
  • ケータイ補償お届けサービス:294円(初月無料→2ヶ月目に解約予定)
     
     〜 6ヶ月目 :+830円
 7ヶ月目〜24ヶ月目 +1,355円
25ヶ月目〜      +1,670円

 

初期費用として20,000円強かかりましたが、

  • パケット制限の上限が3GB→7GBになること
  • docomoの広いエリアが利用できること
  • Nexus7で常時接続できること
  • 月々のプラス料金が安いこと
 の3つの理由で、とりあえず満足しています。
 
WiMAXやその他のキャリアのモバイルルータも検討したのですが、
結局、今までと変わらない使用感(利用可能エリア的な意味で)と料金で決めた次第です。

Java Enterprise Edition 5 Web Component Developer Certified Professional Exam(1Z0-858)受験記

先日受験してきましたので報告を。
この試験の合格ラインは72%、正解率は82%で結果は合格でした。
問題数は69問出題されるので、50問がボーダーというところでしょう。
単元ごとの成績は以下のとおりでした。

Building JSP Pages Using Standard Actions 3/4
Building JSP Pages Using Tag Libraries 7/8
Building JSP Pages Using the Expression Language (EL) 5/5
Building a Custom Tag Library 3/5
J2EE Patterns 3/6
Session Management 6/7
The JavaServer Pages (JSP) Technology Model 6/7
The Servlet Technology Model 6/6
The Structure and Deployment of Web Applications 6/8
The Web Container Model 6/7
Web Application Security 6/6

参考書・問題集

受験にあたり、使用した参考書と問題集は以下の2冊です。

・SUN教科書 Webコンポーネントディベロッパ(SJC-WC) 試験番号:310-083
 ⇒ 通称:紫本
・徹底攻略Oracle認定Webコンポーネントディベロッパ EE 5問題集[CX-310-083]対応
 ⇒ 通称:黒本

いずれも、本のタイトルの試験番号が現在のものと違いますが、気にすることはありません。
特に範囲が変わったことはないようです。

開発経験と学習期間

ちなみに私はJava経験8年で、仕事では主にServletに携わっています。
学習期間は正味1.5ヶ月というところで、平日のみ1日30分〜1時間の学習時間でした。

試験受験後の所感

終わってみれば軽い試験だなといった印象ですが、とにかく暗記暗記でした。
仕事でServletに携わっているからといっても、フレームワークを使っての開発が主ですので、
標準仕様に則ったライブラリをそもそも使わなかったり、API仕様を見ながら開発したりするので、
いざ覚えようとすると大変でした。
JSTLやEL式は使ってるのでわかるとしても、カスタムタグとかセキュリティのためのweb.xml定義とか紛らわしい単語をそれぞれ覚えるのは結構苦労しました。

試験内容ですが、他の方の受験記をいくつか読ませていただきましたが、単元ごとの問題数は一律のようです。
どの単元も満遍なく出るようなので、苦手な単元がないように勉強しておくべきです。
問題の難易度は高くはないと感じました。
多岐選択式になっており、単一選択のタイプと複数選択のタイプがあります。
複数選択のタイプは何個選択しなさいという指定があります。
また、問題は紫本を読んでいれば、十分という内容でした。
全く同じ問題や似たような問題が出題されます。

見たこともないような問題もありましたが、3,4問程度でした。
また、黒本の巻末の模擬試験もやりましたが、この模擬試験よりは易しい印象を受けました。
試験時間は150分もありますが、私が試験を終えた段階で90分余っていたので、時間は十二分にあると考えていいと思います。

SQLiteのCURRENT_TIMEでハマる

こんなことしてしまうのは自分だけかもしれませんが・・・・と前置きしつつ。

Androidでデータを永続化するためにSQLiteでテーブルを作成しました。
そのテーブルを仮にTBL_Aとします。
TBL_Aの中に現在時刻を格納するカラムとして、CURRENT_TIMEという名前のカラムを用意しました。

COL_1、COL_2、COL_3とCURRENT_TIMEカラムがあったとすると、
このテーブルにデータを挿入するためのINSERT文は以下になります。

INSERT INTO TBL_A (
    COL_1, COL_2, COL_3,CURRENT_TIME
) VALUES (
    'VAL_1', 'VAL_2',・・・・・);

ここまでは問題なく、レコードの挿入もうまくいったのですが・・・・・。

挿入してレコードを取得すると・・・・

SELECT COL_1, COL_2, COL_3, CURRENT_TIME FROM TBL_A;

何故かCURRENT_TIMEがうまく取得できません。
期待してた値と違うものが取得されるのです。

調べてみると・・・・・CURRENT_TIMEって予約語じゃん!!
ってことがわかりました。

そもそも、テーブル作る時にエラー終了すればいいのに!!

まぁ、こんなことする私がアホなのでしょうが・・・・・
上記のSQLを修正して、問題解決です。

SELECT COL_1, COL_2, COL_3, T1.CURRENT_TIME FROM TBL_A T1;

外部ライブラリ読み込みでjava.lang.NoClassDefFoundError発生!

EclipseからAndroidアプリをエミュレータで起動したところ、突然NoClassDefFoundErrorが発生するようになりました。
アプリはafreechart.jarという外部jarファイルをビルドパスに含めていますが、どうもその辺りのよう。

調べてみると、ADTのアップデートに伴い、ライブラリを配置するフォルダが変更されたとのこと。
これまで「lib」フォルダだったのが、「libs」フォルダになったんですって。

libフォルダをlibsフォルダに名称変更し、ビルドパスのディレクトリを修正しましょう。

ちなみにADTのバージョンは現在18.0.0ですが、いつからこうなったのかは不明です。

対向システムとの文字コードが違う場合の文字化け対応

厳密にJavaの話ではないけど、Javaにカテゴライズします。
以下のようなWebのシステムがあるとします。

自システムはユーザによってブラウザで入力された文字列を取得して、
その文字列をサーバAに引き渡します。

サーバAは受け取った文字列を自システムに返却。
自システムもまた、サーバAから受け取った文字列をブラウザに返却し、
ブラウザで文字を出力します。

ここで、ブラウザと自システムの間はUTF-8で文字列のやり取りをし、
自システムとサーバAとの間はSJISでやりとりすることとします。

こんなシステムなんてあるわけないですが、簡略化のため、上記の前提でいきます。


自システムは、HTTPヘッダを作ると共に、
ブラウザより受け取った文字列をSJIS(Windows-31J)でURLエンコードしてボディにセット、POSTでサーバAに送信します。
更にサーバAからHTTPレスポンスを受け取り、戻ってきた文字列を抜き出して、UTF-8にしてからブラウザに返却します。


ここで、SJISにコードがない「㒵」のような文字がブラウザから送られてきた場合を考えます。

自システムはUTF-8なので、自システムに渡ってきた時には「㒵」は理解できます。
しかし、これをサーバAに渡す時が問題で、Windows-31JでURLエンコードしてしまうと、
マッピングする文字コードがないため、化けてしまい、「%3F」になってしまいます。

「%3F」は「?」ですね。

サーバAに「?」を送ってしまったもんで、サーバAからは当然「?」が戻ってきます。
もちろんブラウザに返却する文字列も「?」です。

これを回避するため、URLエンコード前に送信する文字を1文字1文字チェックするようにしました。
やり方は、文字列を1文字ずつString#charAtでchar型で抜き出し、それぞれに対してURLエンコードをかけ、
URLエンコード結果が「%3F」であれば、その文字列をint型に変換、
更にint型にしたものを「&#」「;」で挟み込むような文字列操作を実装しました。

「㒵」の場合はURLエンコードをかけると「%3F」になるので、int型にキャストすると、「13493」となります。
それを「&#」「;」で挟み、「㒵」(←ほんとは半角ですが、半角だと正しく「㒵」が表示されてしまうので、読み替えてください。)とします。

文字列を走査し、同様の操作をかけて文字列に細工したものに対してURLエンコードをかけてサーバAに送ると・・・・
うまくいきました。


うまくいったのはいいのだけど・・・・ほんとにこんな文字列操作を行わないといけないのか!?
もっと楽な方法あるんじゃないか??
と思ってるのですが、どうなんでしょう。

OSS-DB Exam Silver受験記

オープンソース系DBの資格として2011年7月(頃?)に誕生した資格にチャレンジしてみました。
オープンソースと言いつつも、中身は完全にPostgreSQL一色です。

覚えてるうちにざっと傾向を列記していきます。

成績

・受験日:2012年2月20日(月)
・正解率(合格ライン):70%(64%)
・結果(受験回数):合格(1回目)

・セクションごとの正解率
 一般知識:90%
 運用管理:64%
 開発/SQL:66%

試験勉強

勉強期間は正味1ヶ月ほど。
翔泳社のOSS教科書(緑のカバーのやつ)のみを使い、1日1章ずつ読み、1周半しました。
最後の模擬試験問題は学習最終日(試験前日)に1度だけ行い、その時の正解率は68%でした。
私は少々勉強不足でしたが、これ1冊だけで十分合格できると思います。

以降はOSS教科書の章に沿って、出題の傾向を説明していきます。

第1章 オープンソースデータベースの一般的特徴

ライセンスやコミュニティ、サポートについて、バージョニング等満遍なく出ました。
6,7問程度でしょうか。
覚えておけばいいだけのサービス問題ですので得点源にしましょう。

上記以外でわからなければ・・・・

PostgreSQLは完全無料で利用できる。
・開発元は無保証であり、サポートの義務もない。

ということを念頭に置いておけばそれなりに答えられると思います。

第2章 リレーショナルデータベースの基礎知識

PostgreSQLに限らず、DBに関する知識が要求されます。
論理データモデルのそれぞれの特徴や正規形、主キーや候補キーなどの用語と意味を知っておけば取れる問題です。
3,4問程度出ました。

第3章 インストール

インストール、アンインストール方法については出題されませんでしたが、
インストール後のデータベースクラスタの作成、テンプレートデータベースについては結構出ました。

2つのテンプレートデータベースの特徴をよく把握することと、
データベースクラスタ生成時のオプションについて理解しておくべきです。

エンコードに関してはサーバとクライアントで違うこと。
ロケールについても設定しなかった場合どうなるのかなど細かいことが問われました。

第4章 標準付属ツール

機械的に覚えるのはきついですが、コマンドとそのオプションについて、細かいところまで問われます。
PostgreSQLの起動と終了の挙動(処理が完了するまで待つとか、処理中に接続してくるユーザはどうなるかだの)についておさえておきましょう。
また、シャットダウンモードについて問う問題も出ました。

データベースユーザと権限については必ず覚えておく必要があります。
あとはpsqlとメタコマンドについての出題もされました。

第5章 設定ファイル

主にpostgresql.confとpg_hba.confの設定を覚えましょう。
再起動が必要な設定、リロードのみでよい設定、スーパーユーザ権限が必要な設定についてそれぞれ覚えておいた方がよいです。

私は細かい設定項目についてはまるで覚えてませんでした。
細かい設定項目については2問程度出ましたが、全部落としたと感じました。
経験がないとここは非常に覚えるのがつらいところ。
設定の全てを覚えていなくても2,3問落とす程度なので、思い切って捨ててもいいのかなと思いました。

第6章 バックアップとリストア

ここは頻出です。
バックアップ時のフォーマットオプションと、各フォーマットオプションを設定した時のリストア方法を完璧に覚えておきましょう。
また、COPYと\copyの違いやPITR等問題にしやすい要素は揃ってます。
バックアップ&リストアする際にデータベースクラスタを落としておく必要があるのかないのか、
その辺までしっかり確認しておきましょう。

第7章 基本的な運用管理

ANAKYZEとVACUUMの仕組みと使用中の状況、効果について把握しておきましょう。
また、情報スキーマやシステムカタログについても出題されました。
それぞれ項目数は少ないですが、万遍なく出題された印象です。

3章〜7章で出題数の半数を占めていました。

第8章 SQLとオブジェクト/第9章 組み込み関数と演算子

ほとんど同じなのでまとめちゃいます。

単純なSQLは出ず、集約関数を用いたものや、日付型の使い方を尋ねるもの、
また、文法について誤っているものを探させるものが出題されました。

開発に携わらない人はしっかりSQLを学習する必要があります。
出題数は5問程度でした。
結構デカイと思います。

また、SQLとその特徴についての問題が多い半面プロシージャに関する問題は1問か2問でした。

第10章 トランザクション

ロックに関する問題が1問、分離性に関する問題が1問、BEGIN・COMMIT・ROLLBACK等に関する問題が2問程度で
あまり印象にはないです。

ちょこっと勉強する程度でもいいかもしれません。

総評

いくつか受験レポートを読みましたが、少し勉強しただけで80%取れたという人がほとんどだったので、
気楽な気持ちで受けましたが、勉強不足も手伝ってかそこまで簡単でもない印象でした。

教科書の内容が隅々までオールラウンドに出題されましたが、それ以外の知らない用語には出くわしませんでした。
OSS教科書1冊のみで十分だと思います。

また、勉強するなら、まず簡単に10問取ることが期待できる、1章2章を熟読し、
学習時間の大半は3章〜7章に当てるべきだと思います。
その中でも、特に4章と6章。
8章、9章は普段開発に携わる人は間違いなく知識があるor少し読めば理解できる程度でしょう。
10章はあまり出ない印象でしたが、試験は満遍なく出るので、頭に入れておく必要はあります。

何はともあれ、OSS-DB、特にPostgreSQLの基礎知識レベルを問う問題であることは間違いないでしょう。