www.junmt.info

I love the guiter.


2024年4月26日(金) 18:45 JST

Macbook Air

我が家のMacbookから煙が出て約一年が経とうとしています。
その後は何故か怪しい挙動もなく、強いて言えば今年の2月ぐらいにHDDが壊れたので換装したぐらいです。

そんなわけで、来年の3月に買い換える計画でしたが、すぐにMacbook Air かProが欲しいです。。。
ちゃんと我慢できるかなぁ・・・。

HttpSessionListenerの謎

アプリ関連

javaのHttpSessionListenerでハマったのでメモ。

まず、テスト中にsessionCreatedで新しいセッションが作られたイベントが取れていないことが判明。
再現方法を見つけてデバッカで追ってみたところ、sessionCreated自体が呼ばれていませんでした。

1)ブラウザ上から対象のServletにアクセスしてセッションを生成。(ブラウザを閉じない)
2)Tomcatを停止
3)Tomcatを起動 ←この時点でTomcat上にセッションは当然残っていない
4)1で使ったブラウザでアクセス。
5)sessionCreatedが呼ばれない。でもセッションが生成されている。

で、この原因ですが、以下のとおり。

ブラウザに以前のセッション情報(cookie)が残っているとアプリケーションサーバ側にセッションが無くても(同じセッションIDを発行して?)sessionCreatedが呼ばれない。
一部の携帯電話のようにセッション情報(cookie)を保持できない場合は必ずsessionCreatedが呼ばれる。
# 書いてあったサイトを転載しようかと思ったところ、忘れてしまった。。
# 海外のどっかのフォラームより。

試していないけど、GETパラメータ等にjsessionidを付与した場合も同じなんでしょうかね。。

NTPで手動時刻合わせ

Linux関連

すぐ忘れるのでメモ

ntpdate ntp.nict.jp

※ntp.nict.jpはNTPサーバ

SQLServerが出力するメモリ不足の謎

データベース関連

SQLServer2008R2のsqlcmdで以下のようなコマンドを実行する。

sqlcmd -c ; -S localhost -U user -P pass -i hoge.sql

この時、hoge.sqlの中に「;」で区切られて、かつ「GO」が含まれていない
INSERT分やUPDATE分が大量にある場合、以下のようなメッセージが出力されます。

メッセージ 701、レベル 17、状態 139、サーバー localhost、行 15843
このクエリを実行するには、リソース プール 'internal' のシステム メモリが不足しています。

-cオプションはバッチターミネーターを指定しているので、「GO」が含まれるかどうかは
別問題のはずですが、ダメみたいです。

-c cmd_end バッチ ターミネータを指定します。既定では、"GO" だけが入力されている行があると、コマンドが終了したと見なされ、SQL Server に送られます。バッチ ターミネータをリセットする場合、Transact-SQL の予約キーワードやオペレーティング システムで特別な意味を持つ文字は、先頭に円記号が付いているかどうかに関係なく、使用しないでください。

※参考
http://technet.microsoft.com/ja-jp/library/ms162773.aspx

■追記:2010/09/29

-cで指定したバッチターミネーターを単独行にしたところ、期待通りの動作をしました。

×ダメな例(-c ;)

UPDATE EMPLOYEE SET NAME='太郎' WHERE CODE=1;
UPDATE EMPLOYEE SET NAME='太郎' WHERE CODE=2;

○良い例(-c ;)

UPDATE EMPLOYEE SET NAME='太郎' WHERE CODE=1
;
UPDATE EMPLOYEE SET NAME='太郎' WHERE CODE=2
;

CVSコマンド

Linux関連
CVSのコマンド操作方法(メモ、というかググる時のヒント)
 
・環境変数の設定
export CVSROOT=:pserver:【ユーザ名】@【サーバ名】:【cvsrootのディレクトリ】
 
例えば
export CVSROOT=:pserver:username@server:2401/cvsroot
 
・ログイン
cvs login
 
・チェックアウト
cvs checkout -d 【作業ディレクトリ】 -r 【リビジョン】 【プロジェクト名】
 
・アップデート
cvs update 【ファイル】
 
・コミット
cvs commit
 
# いつもEclipseでやってしまうからコマンドを覚えられない・・・。

最近買った本

日記

女子高生ちえの社長日記を買いました。

何故か三冊纏めて買ってしまった。。だけどこれが意外と面白い。

ずーっとSEをやってきて、最近はプログラマーに転向しているわけですが、
ビジネス用語は意外と曖昧に理解してきました。
そんな中で、復習を兼ねて気楽に読める本だったので買ってみました。

1巻は製造業により過ぎているのと、基礎中の基礎なので読み飛ばしても良いかも。。
しかし、タイトルの通り、女子高生に説明をしているという内容なので
非常に分かりやすいです。

まぁ、その理解で正しかったんですよねぐらいですが、
それでも正しいことが 正しいとわかっただけ良かったです。

それと、社会経験が浅い方は是非とも読んでみた方が良いです。
別の本でも良いですが、気楽に読めるのが良いですよ。

MacOSを入れる夢を見た

Linux関連

Let's note R7にsnow leopardが入るような気がしたので夢を見てみた。

1)夢置場からX-FlashとKEXTセットをゲット。

2)壊れかけのMacbookでsnow leopardのインストールディスクをUSBメモリにコピーする。

3)USBメモリの所有権限の無効を外す

4)X-Flashを実行

5)Extra/ExtensionsにKEXTセットをコピー

 SMBIOSResolver.kextをどこからか持ってきてそれもコピー。

6)USBメモリから起動、インストーラーの実行

 

とりあえず、これがお手軽ミニマムセット。

トラックパットは動かないし、LANも全滅しているので全く役に立たない。

 

さて、次に夢を見たときは動くのだろうか。

リモートデスクトップでセッション制限を解除する

Windows関連Windows Server 2008から仕様が変わったので1つのアカウントで複数ログインできなくなった。
不便なのでそれを解除する。

スタートメニュー>管理ツール>ターミナルサービス>ターミナルサービス構成
 →「1ユーザにつき1セッションに制限する」を「いいえ」に変更する

JavaでHTTPProxyを有効にする

ミドルウェア関連

いつもググッているのでメモ。

-Dhttp.proxyHost=proxyhostURL

-Dhttp.proxyPort=proxyPortNumber

-Dhttp.proxyUser=proxyUserName

-Dhttp.proxyPassword=proxyPassword

 

汎用引数なので普通にプログラム上からも取れる。

System.getProperties().put("http.proxyHost", "someProxyURL");

System.getProperties().put("http.proxyPort", "someProxyPort");

System.getProperties().put("http.proxyUser", "someUserName");

System.getProperties().put("http.proxyPassword", "somePassword");

 

スパムフィルタで投稿できず。。

おしらせ記事にコメントをつけようとしたところ、スパムフィルタに引っかかりました。
管理者なんですけどね。

ということで、ちょっと対処しておきました。