HttpSessionはスレッドセーフか?

常々疑問に思ってたのですが、HttpSessionってスレッドセーフなんでしょうか?
かなりググって見たのですが明確な答えが見つかりません。


でいくつか探した中で気になる情報を見つけました。
読書会(JAVA CONCURRENCY IN PRACTICE)第3回議事録の◆4.5 Documenting synchronization policiesの箇所で
HttpSession のスレッド安全が保証されないと明記してあります。
確認のためJava Servlet Specification Version 2.4を
The Java Community Process(SM) Program - communityprocess - finalからダウンロードして参照しましたが
同じ内容が明記してありました。


これが意味することはHttpSessionへ書き込みを行う際はSynchronizedで守る必要があるということなのでしょうか?
しかしそんなコーディングは見たことないし自分でも意識したことがなかったし・・・大丈夫なのか俺?


ちなみにJAVA CONCURRENCY IN PRACTICEという本は既に翻訳されていて日本語で読めます。


Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

ここに答えが書いてあるかどうか分かりませんが良書っぽいので買ってみようかな。

PLAYSTATION3

去年買ったPS3を長い間放置してたのでいいかげん遊び始めました。

ハードディスク付いてて普通に動画も見れるので結構便利です。
テレビ録画できればいうことないんですが・・・。
でそんなPS3ですが最近WMVやDivXにもようやく対応してくれました。

PlayStation®3 システムソフトウェア アップデート | プレイステーション® オフィシャルサイト


で前から気になってたのですがメディアサーバなるものがPS3のメニュー画面にいつも登場してきます。
こいつが何者か調べてみるとどうやらストリーミングサーバのような役割をするものみたいです。
具体的な説明はPS3 wiki(PlayStation3 まとめwiki)を見てください。
でこれまた知らなかったのですが最近の個人向けのNASはこのDLNAに対応してる機器が多いみたいです。
自分で構築するのも楽しいのでしょうがパソコン立ち上げっぱなしだと電気代かかるし手軽にやるならこういう安いNASが一番手っ取り早くて安くすみそうです。

例えばBuffalo。


http://buffalo.jp/products/catalog/item/h/hs-dhgl/index.html


MacBookのディスクを交換するよりもこれを買えば問題が全て解決しそうな気がしてきました。

気がつけば一年

気がついたらこのブログを始めて一年たってしまいました。
毎日書くくらいのつもりで始めたんですが振り返ると書かない日の方が圧倒的に多かったです。


まあいまいちなブログですがこんな感じで今年もマイペースに気になることなどをメモみたいに書いていきたいなと思っております。
少しでもこのブログが誰かの役に立てればいうことないんですけどね。

Oracle 10g Express Edition

仕事でOracle使うことが多いので試してみました。
インストールも操作方法も簡単でいいのですが、
デフォルトの文字セットがUTF-8固定で変更もできません。
ただいくつかのサイトを見る限り既存のインスタンスを削除し再作成時に別の文字セットを指定することでその他の文字セットも利用することはできるようです。
(サポートはしていませんが)

というわけで挑戦した際のログを残します。(文字セットはJA16SJISを指定)
以下は参考にしたサイトです。
分かりやすくて非常に助かりました。ありがとうございます。


OracleXE(10g)でJA16SJISの利用: なんとなく
悲願のマイホーム大作戦 – 年収は少ないものの共働きでコツコツと節約を試み頭金を貯めマイホームをゲットする迄の奮戦記です


ディレクトリ等はデフォルト構成でインストールした場合のものです。


1. デフォルトのインスタンスの削除します。
 (下記batchファイルをコマンドプロンプトから実行することで削除できるようです)
 C:\oraclexe\app\oracle\product\10.2.0\server\bin\cleanup.bat


2. デフォルトのインスタンスのspfile削除します。
 下記ディレクトリ以下のファイルを全て削除してください。

 C:\oraclexe\app\oracle\product\10.2.0\server\dbs\


3. デフォルトのインスタンスのpfileやパスワードファイルを削除します。
 oradba.exeをのぞく下記ディレクトリ以下のファイルを全て削除してください。

 C:\oraclexe\app\oracle\product\10.2.0\server\database\


4. デフォルトのインスタンスの制御ファイルとデータファールを削除します。
 下記ディレクトリ以下のファイルを全て削除してください。
 C:\oraclexe\oradata\XE\


5. pfileを下記の場所にテキストエディタ等で作成します。(内容はこのままでも使用はできますが必要に応じて変更してください)
 C:\oraclexe\app\oracle\product\10.2.0\server\database\initXE.ora


pfileの中身(ここより下から開始)

                                              • -

java_pool_size=0
large_pool_size=4194304
shared_pool_size=62914560
streams_pool_size=0
audit_file_dest='C:\oraclexe\app\oracle\admin\XE\adump'
background_dump_dest='C:\oraclexe\app\oracle\admin\XE\bdump'
compatible='10.2.0.1.0'
control_files='C:\oraclexe\oradata\XE\control.dbf'
core_dump_dest='C:\oraclexe\app\oracle\admin\XE\cdump'
db_name='XE'
dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)'
job_queue_processes=2
open_cursors=300
os_authent_prefix=''
pga_aggregate_target=40M
remote_login_passwordfile='EXCLUSIVE'
sessions=20
sga_target=100M
shared_servers=1
undo_management='AUTO'
undo_tablespace='UNDO'
user_dump_dest='C:\oraclexe\app\oracle\admin\XE\udump'

                                                • -

ここで終了


※手順6〜8はコマンドプロンプトから実行してください。


6. Windowsのサービスを作成します。
 
 oradim -NEW -SID XE -SYSPWD oracle -PFILE C:\oraclexe\app\oracle\product\10.2.0\server\database\initXE.ora
 ※-SYSPWDオプションでSYSユーザのパスワードを指定していますので必要に応じて変更してください。


7. 環境変数設定を設定します。
 set ORACLE_SID=XE


8. sqlplusを起動します。
 sqlplus / "as sysdba"


※以降はsqlplusで実行してください。


9. インスタンスを起動します。

 startup nomount


10. データベース作成をします。(このままでも使用はできますが必要に応じて変更してください)
下記コマンドを全てコピぺするだけでOKです。


create database XE
logfile group 1 ('C:\oraclexe\oradata\XE\redo1.dbf') size 32M,
group 2 ('C:\oraclexe\oradata\XE\redo2.dbf') size 32M,
group 3 ('C:\oraclexe\oradata\XE\redo3.dbf') size 32M
character set JA16SJIS
national character set utf8
datafile 'C:\oraclexe\oradata\XE\system.dbf'
size 240M
autoextend on
next 16M maxsize unlimited
extent management local
sysaux datafile 'C:\oraclexe\oradata\XE\sysaux.dbf'
size 48M
autoextend on
next 8M
maxsize unlimited
undo tablespace undo
datafile 'C:\oraclexe\oradata\XE\undo.dbf'
size 48M
autoextend on
default temporary tablespace temp
tempfile 'C:\oraclexe\oradata\XE\temp.dbf'
size 8M
autoextend on;


10. データ・ディクショナリ・ビューを作成します。
 @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catalog.sql


11. PL/SQLを使用できるようにするため下記のスクリプトを実行します。
 @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catproc.sql


※手順11〜12でいくつかエラーが出ますが問題はないようです。自分が確認した訳ではありませんが・・・。


12. 接続ユーザの切り替え
 connect system/manager


13. SQL*plusの製品情報を作成します。(SQL*plusで接続するために必要???)
 @C:\oraclexe\app\oracle\product\10.2.0\server\sqlplus\admin\pupbld.sql


これでインスタンスの作成は完了です。
後は任意でテーブルスペース等の追加を行ってください。

長期投資のおもしろさを教えてくれる本


10年つきあう株を見つけよう!

10年つきあう株を見つけよう!


ダイヤモンド・ザイで連載中のコラムをベースに編集された本です。
コラムをたまに読んでおもしろいなと思ってたので手に取ってみました。


もともと自分も以前は大して投資できる金もないのに株にハマってた時期がありまして、それも株だけで飯を食っていけるようにしたいという不純過ぎる動機で始めたのがきっかけでした。
数ヶ月パソコンとにらめっこし続ける日々を続けたことも・・・。
結局今の仕事を始めたからはめんどくさくなりあっさり辞めてしまいましたが。
株の浮き沈みに一喜一憂するのに疲れたというか株の暴落を目にするのが怖かったってのも理由です。
結論としては全然楽しくなかったってことですかね。
救いは得もしてないが損もしてないという感じでした。


でもこの本を読んでみてまた株式に投資するのも悪くないと思うようになってきました。
本当に自分が認めた企業やがんばってほしい企業に投資する大切さを教えてくれます。
社会的価値を創造できる企業を自分で見つけることができればと思うとなんかいいですよね。
ようは投資の醍醐味って短期間での株価の浮き沈みに一喜一憂して疲れきってしまうことなのではなくて自分がこれだと決めた企業を長い目で見守っていくことではないでしょうか。
そしてご褒美として利益を得られれば言うことなしです。


長期投資に興味がないデイトレーダーや株に全然興味のない方が読んでみるといろいろと得るものがあるのではないかと思いますよ。

Macはやっぱりいい


MacBookを購入するまでMacは確かにかっこいいけど、メインのパソコンにはならないだろうなって思ってました。
でも購入してから1週間くらいしてからはもうこのMacBookを手放せません。
WindowsのPCを立ち上げるのも煩わしいくらいで。
最初はフォント一つとっても違和感あったのに今では全然かっこよく見えてしまう。
UIは言うまでもなく綺麗だし。
それになんでもドラッグ&ドロップで処理できてしまう昔ながらのMacの使い勝手のよさとか細かいとこだけどこういうところでも差がついてきます。


そういえばMacOS Xになってからフリーウェアがすごく増えたように思います。
Unixベースになったのもすごいいですし。


こんな感じだと自分もすぐ人にMacを勧めてしまうMac信者になってしまいそうですが。
ちなみにこのブログもMacBookで書いてます。


で早速使いすぎてハードディスクの容量が心配になってきたのでディスク交換しようかと思ってた調べてたらこんなのマニュアルを見つけてしまいました。
簡単そうなので早速試やってみようと思います。

Eclipse JavaScriptエディタの文字化け対応

Eclipse 3.2にWTPをインストールして
jsファイルを開くと文字化けを起こしてしまいます。
解決方法は簡単でメニューから


設定 → 一般 → コンテンツ・タイプ


を指定しそのコンテント・タイプのにあるJavaScriptを選択して表示される
デフォルト・エンコードを「MS932」にすることで解決します。


Eclipse 3.3にPleiadesを入れた環境では上記デフォルト・エンコードを「SJIS」と指定することで解決できます。