2013年7月31日水曜日

「共通テーブル式を使用する再帰クエリ」で楽々階層データを取得

MS SQL Serverにおいて、親IDを持つようなテーブルで再帰的に階層データを取得したいことがありました。
VB.NETから使用するのですが、VB.NET側で実装するとパフォーマンスも悪そうだし、あまり綺麗じゃないのでどうにかならないかと思っていたところ、SQL Serverでズバリそのようなデータを取得できるSQLがかけることがわかりました。

今までの案件でもそういうのが使いたいことがあったのですが、、気づきませんでした。。不覚です。

MSDNの以下のページが参考になりました。
というか、そのものです。

共通テーブル式を使用する再帰クエリ
http://msdn.microsoft.com/ja-jp/library/ms186243(v=sql.100).aspx

MSDNは結構硬いのではじめなんだか面倒なことを書いてそうな気がする・・・とか思ったのですが、よくよく読んでみると簡単に実装できることがわかりました。
WITH MyRes([no], [name], [parent_no], [Level], [Path])
AS
(
SELECT [t_dat].[no], [t_dat].[name], [t_dat].[parent_no]
, 0 AS [Level]
,cast([t_dat].[no] as nvarchar(4000)) as [Path]
FROM [t_dat]
WHERE [t_dat].[no] = 1
UNION ALL
SELECT [D].[no], [D].[name], [D].[parent_no], [Level] + 1
,[Path] + '-' + cast([D].[no] as nvarchar(4000))
FROM [t_dat] AS [D]
INNER JOIN [MyRes] AS [M]
ON [M].[no] = [D].[parent_no]
)
SELECT * FROM [MyRes]
ORDER BY [Path];
こんな感じで実装してみました。
Levelは階層の番号で、一番上が0になります。
Pathは階層を順番に上からハイフン区切りで表します。
例えば、1-5-6-10のようになります。
これでソートすると階層でつながっているもの順でならんでくれます。

parent_noの設定を間違うと無限ループになったりすることもあるかもしれませんが、デフォルトでは100階層までの取得のようです。
これはMAXRECURSIONの値を設定すれば変更できるようです。

簡単なSQLだけでこんなに簡単に階層データが取得できるとは・・・今までなんで気が付かなかったんでしょうか。。
これからはバリバリ使いたいと思います。

2013年7月30日火曜日

「琉球泡盛 久米島の久米仙」をロックで。

マルナカの沖縄フェアで買った泡盛、2本目。
「琉球泡盛 久米島の久米仙」です。
これは聞いたことありますし、多分飲んだことがあったような気がします。


飲んでみて第一印象は、泡盛ってこんな感じだったよな〜。
いい意味で癖がありますが、僕は好きです。

ロックで飲みました。
泡盛はロックが合うと思います。
暑い季節ですしね!



2ちゃんねるの書き込み中のアンカーから正規表現で数字のみ抜く(VB.NET)

とある事情で2ちゃんねるのスレッドをdatファイルで取得して、その中の書き込み内容のアンカーの数字を抜き出したいことがありました。

当然正規表現を使うことになるのですが、そんなに頻繁に使わないので忘れてしまって、使う前に勉強することになります。。
正規表現をスラスラ書けたらかっこいいなと思うのですが、なかなか。。

ということで、VB.NETでこんな感じになりました。

Dim mc As MatchCollection = Regex.Matches(body, 
    "<a.*?>&gt;&gt;(?<no>\d+)</a>")
For Each m As Match In mc
    str = m.Groups("no").Value
Next

正規表現はこれでいいのかあまり自信はないですが、とりあえずこれで取得できてます。

2013年7月29日月曜日

カセットテープデッキの電源を入れるも、動作せず。。

カセットテープの音源をmp3に落としたいことがあり、久しぶりにカセットテープデッキを引っ張り出してきました。
確か中学生ぐらいの時に買ったと思うので20年以上前の機械。
ソニーのTC-RX70。





数年前に使った時にはかろうじて動作しました。ただ、クリーニングをかなりしないとちゃんと音が出なかったような記憶があります。

早速電源をコンセントに刺してスイッチオン。
・・・なぜかモーターが回るような音がしてます。
Ejectを押しても開かず・・・どれを押してもどうにもなりません・・・

しばらくそのままにしてみたり、電源オンオフをしてみたり、最終的に叩いたりしてみましたが、状況は変わらず。
どうも故障しているみたいです。
さすがに電子回路系の修理は無理なので、残念ながら諦めることにします。

うちにカセットデッキはこれしかないので実家の方でも探してみますかね。
カセットテープも意外と懐かしいのがあったりするので今のうちにmp3とかに落としたほうがいいような気がしてきました。
確かインド旅行した時に買った、当時インドで流行ってた音楽テープとかなかなか雰囲気あってよかったような気がします。 聞きたくなってきた。

アマゾンでテープをmp3に落とせるプレーヤーとかあるみたい。



こっちはレコードとカセットの両方!YMOのアナログ盤とか何枚かあるのでデジタル化したい気もするけど、普通にCD買ったほうが安く付きそうだな。。



うーん、、数千円かけるほどのもんでもないような気がしてきました。
まずは実家で使えそうなカセットプレーヤーを探してみます。

2013年7月28日日曜日

「琉球泡盛 松藤」を飲んでみました

マルナカで沖縄フェアみたいなのをここしばらくやっていて、沖縄の商品がならんでいます。
そこで泡盛の360mlの小瓶が数種類置いてあったのでいくつか買ってみました。
お試しで買うには調度良い大きさで、デザインもいい感じです。
ちなみに1本、500円でした。

今回飲んだのは、「琉球泡盛 松藤」


こんな小瓶です。
すぐ飲んでしまえそうですが、アルコール度数が30度あるので意外と持ちます。


なかなかこだわって作られているようでした。

味は癖があまりなくてすっきり系です。
でもやっぱり焼酎とは違う感じはします。
 どういうふうに違うのかなとふと思いました。泡盛は米から作られていて焼酎にも米のものがありますが、味が違うような気がします。

ググると以下のサイトが参考になりました。

便知 ~ 雑学・うんちく集 ~ 焼酎と泡盛の違い
http://www.benchi.in/?eid=406980

どうやら、泡盛の場合は米がタイ米のようですね。あとは黒麹を使っていたりとか、仕込みが違ったりとか。
その土地であった作り方をしてるんですねー。
勉強になりました。

他にもいくつか買ったので、これが空いたら飲んでみます。
楽しみです。


2013年7月26日金曜日

Gショック(DW-5600系)の電池交換をしてみました

腕時計はこの何年かはGショックで落ち着いてます。
防水だし、クォーツなので電波時計じゃなくてもそれほど狂わないし、デジタルなので見やすいし。
2個持っていて、ひとつはウレタンベルトのソーラーモデル、もうひとつは布ベルトの普通モデル。

ソーラーのは電池が調子悪くなり、自分で交換しようとしたんですがあの2次電池って売ってないんですよね。なので、普通のボタン電池に交換して使っています。なんだかバックライトが途中でつかなくなったのですが、時計自体は問題なく動いているようです。

今回はもうひとつの布ベルトのDW-5600系のGショックを電池交換してみました。

裏蓋はプラスネジ4つで固定されているので、普通の精密ドライバーなどで簡単に開くことができます。


本来はベルトなどを外したほうがいいのかもしれませんが、手抜きでそのまま外してしましました。
電池を固定している小さい金具を外すのがちょっと気を使います。
マイナスの精密ドライバーで出っ張りを引っ掛けて外すとうまくはずれました。
ボタン電池はCR2016です。


電池をいれて、電池固定金具をセットしたところ。
この写真だと、下を先に引っ掛けてから上の方をいれます。
外すときは逆で、上の方に少し出っ張っている部分があるのでそこをマイナスの精密ドライバーなどで引っ掛けて外します。


裏蓋をはめたところ。
パッキンも先に入れておくのを忘れずに。
正しい位置であればパチッとはまります。


最後に時刻を合わせて完了。
時刻合わせは難しくありませんが、アラーム設定の方法とかすっかり忘れてしまってました。
でもカシオのページから取扱説明書をダウンロードすることができます。
裏蓋の四角で囲まれた4桁の数字を入力して検索するとでてきました。

自分で作業する場合は保証が効かなくなったりとかあるかもしれませんので、自身のない方は時計店に頼んでくださいね。
自己責任になりますが自分でやれば電池代だけなので安く済みます。

2013年7月25日木曜日

AWS RDS MySQLのtime zoneはUTC

AWSのRDSでMySQLを使用しています。

現在時刻を条件にクエリをしようとしてふと、タイムゾーンでどうなってたっけ?と。
調べてみるとdefault_time_zoneはUTCで、変更できないようです。

でも、セッションごとにタイムゾーンを変更すれば良くて、以下をクエリの前に実行します。

SET SESSION time_zone="Asia/Tokyo";

cronで実行しているSQLのバッチ処理なんかはこれでいいんですが、CakePHPの場合はどうしようかなと。
調べるとデータベース接続時に必ず上記を実行するようにすればよさそうですが、、面倒そうなのとCakePHP2.x系の情報がさっと見つからなかったので、PHP側のdate()で日付をSQLにセットしました。手抜きですんません。
PHPの方はタイムゾーンを設定してるので現在時刻はAsia/Tokyoになってます。

 時刻をシビアに使用する場合はWebサーバーとDBサーバーのずれでややこしいことになったりもありますが(実際に経験あり・・・)、AWSなのでずれもないだろうというのと、システム的にも日ごとぐらいの単位でしか指定しないので大丈夫かなという判断です。

(いいかげんですみません・・・)

Windows用音楽プレーヤーソフト Lutea

仕事中、音楽を流しています。
NASに入れている音楽ファイルをPCのiTunesで再生していたのですが、ふとタスクマネージャーをみてみるとCPUを25%ほども消費している・・・
音楽を再生しているだけなのに・・・

実はiTunes以前にはfoobar2000というプレーヤーを使っていたのですが、ランダムがなんだかランダムになっていないというか、再生されない曲とかがあったのでとりあえずiTunesを使っていたのでした。日本語のファイル名とかパスとかが問題あったのかも。原因はわからず。

なんだかもっさり動きが遅いとは思っていたけど、さすがにこれはPCに無駄に負担がかかるしもったいないということで、別のプレーヤーを探してみました。
で、窓の杜を覗いてみると音楽プレーヤー項目の一番上にLuteaというソフトがありました。

H2k6風 検索志向データベース型オーディオプレーヤ Lutea






早速使ってみましたが、プレイリストを馴染みのあるSQLで作成できたりするのでなかなか使いやすいかも。
ヘルプなどはあまりないのですが基本的にシンプル構成なので良い感じです。
CPU使用率もせいぜい数%程度と全く気にならないレベルです。

 ただ、最初の音楽ファイルの読み込み時にDBを作成する関係上少し時間はかかりますが、最初だけなので問題なし。

今のところ良い感じなので、しばらく使ってみようと思います。

あまちゃんを見てて思ったコンテンツのサイズについて

NHKの朝ドラ「あまちゃん」にハマってて、毎日見てます。
といっても、録画したのを夜の時間があるときに、なんですが。
結構見逃さずに続けて見てるんですよね。

1クールある1時間のドラマは最近ほどんと見なくなりました。
その時間に合わせて時間をあけるのもあまりできないので録画するのですが、用事とかあって見られないことがあるとそのうち溜まってきて、見るのが面倒になって見なくなるというパターンです。
1時間って長いんですよね。
1時間をあけるのは意外としんどいです。他に色々したいこともあるし。

でも、あまちゃんは1回15分なので毎日見られます。
少し貯まったとしても数日分ならまとめて見るのもそんなに苦になりません。
15分毎に区切られるので数本見て、後日数本とかでも大丈夫ですし。

そこで思ったのですが、動画コンテンツはこれぐらいの長さが今の時代に合っているのでは?と。
以前は家での娯楽でのテレビの比率が高く、1時間でも見てたと思いますが、今はネットもあるし、スマホのゲームなんかもあるしでテレビを見る時間が少なくなってきてると思います。
テレビにかぎらず、ネットの動画コンテンツでも長いと結構辛いですね。
映像の必要のない対談的なものだと文字起こしを待って文字で読むこともあります。

でも15分程度だと割と時間が取れたりするんですよね。
まあ、僕の場合の感覚なのですが、、でも1時間は長いような気がしてます。

あまちゃんについては宮藤官九郎の脚本がもともと好きというのもあるし、ストーリー展開などが良いというのも大きいので、尺の問題だけではないと思いますが。
ちなみに今まで朝ドラは見たことなかったです。
むしろ、ヒロインがうざいので嫌いでした。

テキストコンテンツについてもtwitterなんかはちょっとした空き時間に見るには調度よかったり、ニュースも最近出たLINE NEWSなんかもニュースをざっくりまとめてたりしますよね。
もちろんガッツリ長くて濃い内容のコンテンツも必要ですが、ちょっと空いた時間を埋めることができる面白いコンテンツがもっと出てきたらいいなぁとぼんやり思った次第です。

2013年7月23日火曜日

[CakePHP] 1ページのフォームで複数レコード登録と、inputフィールドの数でひっかかったこと

CakePHPで、1ページ内のフォームで、複数レコードの登録画面を作成しました。
一括でテーブルを編集したいことがありますよね。
ASP.NETだとRepeaterとか使えば簡単に出来ますが、CakePHPでもちょっとしたコツで簡単に実装できます。

メニューテーブルを全部表示して登録する例です。
ビューはこのようになります。

<?php echo $this->Form->create('Menu'); ?>
<?php echo $this->Form->submit('店舗メニューを登録する');
?>
<table>
<thead>
<tr>
 <th>ID</th>
 <th>メニュー名</th>
</tr>
</thead>
<?php foreach($data as $key => $menu):?>
<tr>
 <td><?php echo $this->Form->input("{$key}.id", array('type' => 'text', 'value' => $menu['Menu']['id'])); ?></td>
 <td><?php echo $this->Form->input("{$key}.name", array('value' => $menu['Menu']['subname'], 'label' => false)); ?></td>
</tr>
<?php endforeach; ?>
</table>

<?php echo $this->Form->end(); ?>
これで結局、idなどがMenu0Idみたいな形になって、複数レコードの表示ができます。
コントローラーは以下としました。

function multiregist() {
  //登録
  if($this->request->isPost()){
   if($this->Menu->saveAll($this->request->data['Menu'])) {
    $this->Session->setFlash('メニューを登録しました', 'default', array('class' => 'alert alert-success'));
   } else {
    $this->Session->setFlash('登録に失敗しました', 'default', array('class' => 'alert alert-error'));
   }
  }
  //データ取得
  $data = $this->Menu->find('all');
  $this->set('data', $data);
}

これだけです。
saveAll一発で登録できてしまうので便利です!

実際に作成したものはもっと項目が多かったのですが、なぜか登録時に一定レコードまでしかPOSTされず、かなり悩みました。
CakePHPのrequestとかでデフォルト値が決まってるのか?とか思ったのですがCakePHP関係では一向に情報が出て来ません。
でもさらに調べてみると、PHPのほうでフォームのinputの数に制限がかかっていることがわかりました。
php.iniにmax_input_varsを設定します。
初期値は1000になっているようでした。

max_input_vars = 10000

大きめの数にしてみるとすんなりPOSTできました!
数時間程度悩んでたのですが、見つかってよかったです、ほんと。。
まだまだPHPやCakePHPは初心者だなぁと感じました。

参考になれば幸いです。

2013年7月19日金曜日

これはイイ! ルーター用クーラー Dr.COOL RC-01

7月に入って急激に暑くなってきました。
Wifiのアクセスポイントは仕事をしている部屋に設置していて、仕事中はエアコンを使っているので問題ないのですが、それ以外の時間や休日は非常に暑くなります。
特に暑かった日、Wifi経由でiPhoneを使っていたのですが、どうも通信が途中で途切れたり不安定になりました。
アクセスポイントの電源を入れなおすとしばらくは大丈夫ですが、また同じ状況になったりしてました。本体を触ると結構熱い。
部屋自体熱いし、アクセスポイントにはファンはついていないので冷却が必要かなと考えました。
とはいえ、扇風機をずっとつけておくのもなんだかなぁという感じだし、USBファンをつけるにしても位置的に微妙。。
このように壁に直付のテーブルの支柱につけているもので。


Wifiルーターなのですが、フレッツ光でルーター機能は間に合っているのでアクセスポイントとして使用しています。スループットも割と良くて安定しているので割とおすすめです。余談ですが。

とはいえ、この暑さにはさすがに音を上げている様子。
なにかないかとググったところ、いいのを見つけました!

 タオエンタープライズ ルーター専用クーラーDr.COOL RC-01です。
ルーターを大きめのファンで挟み込む感じの製品です。


 
 
付属品は本体と、USBと本体をつなぐケーブル、USBの電源です。
 


 
 
裏はこのようになっています。これで挟み込みます。
 


 
 
実際に装着したところです。
USBはルーターに接続しています。このルーターはUSB接続のHDDを接続することで簡易NASとして使用できるのでUSBポートがついています。嬉しいことにこのUSBから給電することができるのでした。
 
しばらく使っていますが、ファンがあることでかなり温度は下がっているようです。
お陰でWifiも今のところ安定しているようです。
 
装着したあとでふと思ったのですが、Wifiに影響でないのかなと。
たしかアンテナがこの面に内蔵されていたような気がします。
 でもスピードテストなどをしてみても装着前とそれほど変わっておらず、体感的にも通信が詰まったりしているようには思わないので大丈夫なようです。
ルーターによってはノイズを拾ったりすることもあるかもしれませんが。

冷却することを第一に考えていたのですが、使い始めてみるとそれなりにファンの音はします。
それほど大きな音ではないのですが、少し高めの音なので気になる方は気になるかも。
うちの場合は仕事部屋なのでそれほど気になりません。
寝室などの場合は神経質な人だと気になるかもしれませんね。


これを見つけた時、これだ!と思って即ポチりました。
僕的におすすめの製品です!

2013年7月14日日曜日

BOSE SoundLink Miniを購入しました

BOSE SoundLink Miniを購入しました。
http://www.bose.co.jp/jp_jp?url=/consumer_audio/multimedia_speakers/bluetooth_speakers/soundlink_mini/slmini.jsp

製品が発表されてからすごく気になっていて、デザインもすごく気に入っていて、でも価格もそれなりにするので悩んでいたのですが、、思い切って注文していました。
それで、7/12の発売日に来たので今日まで使ってみての感想です。


結論として、買ってよかった!
実物も見ず、もちろんどんな音が出るのかも確認せずに買ってしまったのですが、BOSEらしく低音がバッチリ出て、でも全域で聴きやすい音です。

普段はPCのiTunesに入れている音楽をWave Music SystemへSoundLinkアダプターで飛ばして聞いているのですが、かなり似た感じの音だと思います。
当然、Wave Music Systemのほうが安定しているし、余裕もあって聞く場所もそこまで選ばないしでいい音がしますが、SoundLink Miniはこのサイズとしてはかなりいいと思います。

重さはほかのサイトのレビューを見るとコンパクトで軽いみたいなのがあったりしますが、僕は割とずっしり詰まっているという感じがします。スピーカーとしては軽いという意味でしょうか。
材質も金属で安っぽさは全くありません。
底はゴムになっていてどこかに置いて滑ることはまず無さそうです。
スピーカーの網の部分も金属っぽいです。手でこの部分を持ってもしっかりしてます。

やはりこのサイズなので置く場所と聴く位置によって音質は大きく変わります。
僕的には高い位置に置くより、低い位置に置くほうが低音が響いて良さそうです。
置く場所の材質によっても音質が変わるようで、うちはフローリングですが割と良い感じに響いていい音がしてます。説明書によるとスピーカーの後ろは10センチぐらい壁から離したぐらいの位置がよいという記載がありますが、確かにそのほうがよく響きます。
聞く人はスピーカーの正面がよいでしょう。正面から外れるほどいまいちになりますね。
Wave Music Systemだとある程度外れてもそれなりに聞こえるので、サイズの差かなと思います。

バッテリーは説明書によると満充電で7時間ほど使用できるようです。
まだはじめに充電してから合計で4時間ほどかと思いますが、まだまだ残容量はあるようです。

ここ数日はキッチンで洗い物などをしている時に使ってみました。
スピーカー位置を調整することで他の人にそこまでうるさくないようにできるので、逆に良い感じです。
今後は外に持ちだして使ったりしてみたいところです。
外だとカバーがあったほうがよさそうではありますが、デザインを損ねるので使いたくないと思ってます。ケースは買おうかと思いましたが、5000円ぐらいするんですよね。。

しばらく使うと音もこなれてもうちょっと良くなるんじゃないかなと期待してます。
すでに愛着があるので大事に使いたいと思います。



ちなみに、BOSE直販で22,890円だったのですが、Amazonでは27,000円とか。。
初回予約分は完売で入荷待ちなので、しばらくして在庫が復活すれば解消されると思います。。

2013年7月11日木曜日

ThinkPad トラックポイント・キーボー ド(0B47208)

ThinkPad トラックポイント・キーボー ド(0B47208)を購入しました。

Bluetooth接続の方をしばらく使っていたのですが、Bluetoothアダプタの位置を変更したりいろいろ試した結果かなり改善はしたのですが、やはりたまに引っかかることがありました。
個人的にネットしたりとかで使う分にはそれでも十分だと思いますが、仕事でずっと使っているとそういうちょっとしたことが気になってしまいます。
たびたび引っかかりがあったりするといらっときたりとか。
仕事で使う道具はあまり問題ないことに越したことはありません。

ということで、USB接続で確実だと思われるこのモデルを購入しました。


上がBluetoothモデル、下がUSBモデルです。
外見はスイッチのあるなしぐらいで他は全く同じですね。
裏側のシリアルNoなどを書いたシールを見るとはっきり判別できますが。

USBのコードも直付けでなく、MicroUSBとなっています。
自分の調度良い長さのケーブルが仕様できるので好ましいと思います。

ドライバはBluetooh版と同じらしく、USBを挿したらすぐに使用できました。
もちろん、引っ掛かりなどはありません。
スリープから復帰しても当然すぐつかえます。Bluetoothだと接続まで少し時間がかかります。

今回のモデルはコンパクトになった関係でパームレストがなくなってます。
ネットを見ているとパームレストを嫌う人がいるようですが、僕はあったほうがいいと思うので少し残念でした。とはいえ、キーボード自体の高さが低いので、そこまで違和感はありません。

そういえば、USB版は使い始めにトラックポイントのフィールがちょっと変で、マウスカーソルを右と左に動かした時のスピードが微妙に違ってました。
しばらく使ううちに違和感はなくなったので、機械的にこなれてなかっただけかもしれません。
あと、Bluetooh版とマウスカーソルのスピードが違うようで、Bluetooth版のままの設定だと早すぎるので少し調整が必要でした。
まあ、普通はどちらかしか使わないと思いますので、参考にはあまりならないと思います。。

ドライバについては僕の環境だとちょっと問題があって、VisualStudio2010のソースコードを編集するメイン画面で中ボタン+トラックポイントでスクロールすると、HScrollFun.exeというトラックポイントでのスクロールを制御しているっぽいプログラムが落ちます。これが落ちるとトラックポイントでのスクロールができなくなるので問題です。
以前のUSBキーボードでもこの画面ではトラックポイントでのスクロールが効かなかったのですが、プログラムが落ちてしまうのは困りますね。。
ThinkPad優先スクローリングをオフにするとWindows標準の動きになって、ちゃんと使えるようになるのですが、これが使いにくい。


中ボタンを押している間だけトラックポイントでスクロールして欲しいのですが、ブラウザなんかだと中ボタンを押すのを止めてもスクロール状態になっていて、トラックポイントを動かすとその方向にスクロールしてしまいます。
エクスプローラーとかだとそうならない時もあるので、何か設定があるのでしょうか?
マウスの設定ではいまいち見つけられませんでした。

今後のドライバの更新に期待するしかないです。
Lenovoさん、お願いします。


2013年7月9日火曜日

[jquery mobile] inputのdatetimeの動作について(iOS)

jQuery mobile + PhoneGapでiOSアプリを作成しています。
jQuery mobileは最新の1.3.1を使用してます。

テキストのinputでtypeでdatetime,datetime-localを設定すると、iOSの場合、ネイティブの日付と時刻の選択がポップアップしてきます。
Androidだとたしかうまく動かなかったりしてたと思いますが、とりあえず今はiOS向けのアプリを作成しているのでこれを使うことにしました。

datetimeとdatetime-localの違いがよくわからなかったので、とりあえずそれらしい感じのdatetime-localを使ってみたのですが、ちょっとはまってしまいました。
iOS上での動き自体はどちらも同じで、押すと日付時刻の選択がポップアップします。
問題はその後のjQueryのval()で値をとった場合の値です。
表示上は同じですが、datetimeの場合はUTC時刻のJSON形式、datetime-localはローカル時刻のJSON形式となります。

具体例だと、現在のローカル時刻(iOSの表示時刻)が、2013-7-9 13:59だったとします。
datetimeの場合の$("#testdt").val()は、「2013-07-09T04:59:00Z」となります。datetime-localの場合は「2013-07-09T13:59:00Z」となります。

一見、datetime-localのほうが使いやすそうなのですが、
var dt = new Date($("#testdt").val());
などとDateオブジェクトを生成すると、datetime-localはローカル時刻が+9時間された時刻になってしまいます(ローカル時刻を取得した場合ですね)。datetimeだと正しく設定されます。
取得した文字列からDateオブジェクトを生成する場合はdatetimeの方を使ったほうがいいみたいです。

ついでに、datetime/datetime-localの場合に初期値を設定する場合ですが、これもJSON形式で設定する必要があります。JSON形式以外だとうまく設定できません。
var dt = new Date();
$("#testdt").val(dt.toJSON());
ご参考になれば幸いです。

2013年7月5日金曜日

[書評] CakePHP2実践入門/CakePHPビューコーディング入門

今年に入ってPHP+MySQLでシステムを構築する必要が出てきて、PHPのフレームワークを検討しました。
PHPは少し触ったことがある程度で実際にシステムを構築することまではしたことなかったので、使いやすそうで効率のよいものを探していました。
いろいろあるようでしたが僕が良さそうと思ったのはCakePHP。
PHPのモジュールなどを特にインストールしなくても動きそうだし、内容も充実してそうで開発も早くできそうです。

ネットで調べるとそれなりにわかったのですが、いざ実際に作ろうとするとやっぱりサンプルがなにもないと厳しい。ということで書籍を買ってみることにしました。
まず役に立ったのはこちら、



実際にありそうなサイトを作成しつつCakePHPを学んでいけます。
Helperがまとめられていたり、サンプルになるコードが沢山あるので取っ掛かりとしてはとても役に立ちました。

次に買ったのはこちら。



これはMVCのそれぞれでよく使うであろうメソッドやプロパティなどがまとめられていたり、主要コンポーネントの説明などがまとまっています。
開発していて、アレどうだったっけ?という場合にパラパラめくる感じの本ですね。

ちょっと込み入ったことをすると当然これだけでは全然情報は足りないのですが、そこは公式サイトのCookbookやドキュメントを調べれば何とかなります。
ググれば同じような状況で解決してる人もだいたい見つかりますし。

注意しないといけないのは、現在のバージョンは2.xですが、1.x系の情報もかなり検索で引っかかってくること。2.xとはかなり変更点が多いのでそのままつかえないことも結構あります。
今CakePHPを始めるなら2.x系だと思いますので、その辺は区別したほうがいいかと思います。

2013年7月4日木曜日

[書評] Amazon Web Services クラウドデザインパターン実装ガイド



ある案件ででサーバーを検討して、Amazon Web Serviceが最適だという結論に達したものの使用したことがなく、とりあえず買ってみました。

結果、大正解!

EC2やS3、RDSなどの設定手順がスクリーンショットとともに丁寧に説明されています。
また、スケールアップなどの場合の手順や注意点などが実際にありそうな事例とともに詳しく解説されているのでとても参考になりました。

AWSの設定にすでに慣れている人にとっては設定手順が冗長に感じるかもしれませんが、AWSを初めて使う人にとっては取っ掛かりとして有用だと思います。

AWSはちょこちょこアップデートがかかっているのか一部画面項目と違うことがありましたが、許容範囲内だと思います。
ただ、RDSのセキュリティ設定が整理されて一本化されたようでその辺がすこし引っかかりましたが、なんとか設定することができました。

AWSを初めて使う方にオススメできる本だと思います。

移転しました。ついでにブログ名も変更しました。

さくらのレンタルサーバを使っていたので、なんとなくさくらのブログを使っていたのですが、微妙に使いにくいのと、Adsenseのほうで表示が遅いみたいな表示が出ていたので移転してみることにしました。

ライブドアブログとかの有料ブログでも契約しようかと思っていたのですが、bloggerが無料なのに広告も表示されないのでここに決めました。
少し使った感じでは問題もなく、シンプルでいい感じです。

さくらの方のデータをエクスポートしてインポートしたのですが、さくらはMT形式でのエクスポート、bloggerはXMLでのインポートにしか対応していません。
MT形式をXMLにコンバートするWebサービスを見つけたのですが、さくらの場合の日付形式だとうまく変換されず、全部当日の日付でインポートされてしまいました。
僕の場合、記事がそんなにないので全部手動で変更するとうまくインポートできました。

変更のポイントは2つ。

  • GMTの時刻に修正
  • 12時間表記に変更(14:00の場合、2:00 PM)

画像はこちらには持ってきてません。
あまり画像も使っていないので全部手動で変更してもいいのですが、さくらのレンタルサーバはそのまま使いますし、リンクが切れることは当面ありませんので。
試しに最新の記事のみ変更してみましたが、さくらと違って大きい画像サイズで保存されるので良い感じです。

うまく移行できたのは良かったのですが、、2011年からやってて投稿数がこれというのは少々少ないですね・・・
もうちょっとがんばっていろんな記事を書いてみたいと思います。

ブログ名は、FXの方はこのところさっぱりでFX関連の投稿もほとんどないので変更してみました。

2013年7月3日水曜日

ThinkPad Bluetooth ワイヤレス・トラックポイント・キーボード(0B47181)

ThinkPad Bluetooth ワイヤレス・トラックポイント・キーボード(0B47181)が発売されたので
早速購入してみました。

こんな感じです。




上は今まで使ってきたThinkPad USB トラックポイントキーボード(55Y9024)です。

ThinkPad Bluetooth ワイヤレス・トラックポイント・キーボードは最近のThinkPadのキーボードと同じく、アイソレーションタイプの6列となりました。
キータッチはThinkPadのTシリーズとほとんど同じだと思います。
トラックポイントキャップはロープロファイルが指定されていますが、従来のものも使用できるという情報もあります。外してみたところ確かに使えそうな雰囲気。
実際にまだ試せていませんが。

使用しているPCはThinkPad T430sです。
外部の3モニタに出力しているのでキーボードは外付けである必要があります。
以前のキーボードでも特に不満もなく、4年弱使ってますが特にヘタってはいないのですが、Bluetoothだと机がスッキリするだろうということで買い換えてみました。
ちなみにUSB接続のモデルもあります。少し安いです。

ところが、、私の環境ではこのBluetoothがクセモノでした。。
まず、ThinkPadに内蔵しているBluetoothをオンにしてキーボードを接続。
特に問題なくドライバもインストールされすぐに使用できるようになりました。
しかし、、マウスの動きがカクカク。。

Bluetoothのキーボードやマウスを過去使用したことがなかったため急遽調べてみるとBluetoothで使用する2.4GHzはWifiとかぶっているために干渉することがあるとか。
確かにWifiを使用しているので切ってみると多少動きが良くなりました。

でもまだ定期的に動きが不安定になる時が。。

もうひとつ思い当たるものがあって、Bose Wave Music System用のWave Soundlink Adapterを使用していました。
iTunesをこれでWMSに飛ばして音楽を聞いています。

http://www.bose.co.jp/assets/pdf/manual/wms_s_link_manual.pdf

マニュアルを良く読んでみると、通信はBluetoothの規格で行なっている様子。
しかし、Boseのアダプタ同士でないと認識しない特殊仕様みたいです。
PCからBluetoothで検索をかけても出て来ません。
Bluetoothなので、当然同じ周波数を使用しています。
外して様子を見てみると動きが良くなりました。
とりあえずUSBを延長して、本体からSoundlink Adapterを離して様子を見ることに。

しばらくはそれでうまく行っているかのように見えましたが、スリープして再度立ち上げたりしているうちに常にカクカクするようになってしまいました。

かなり悩んでいたのですが、ふとキーボードをPCに近づけると明らかに動きがなめらかになって、ちゃんと動作します。
実はPCとキーボードの間には24インチのモニタが少しかぶっているのですが、どうもそのせいでうまく電波が届いていない様子。。
距離にして50センチ程度なので問題ないと思っていたのですが、ThinkPadも閉じた状態だし、モニタ自体もノイズとなりそうなのでそのためなのでしょう。。

結局ThinkPadの位置は変更できないので、正面のメインモニタのUSB HUBをPCと接続し、そこに余っていたBluetoothアダプタを接続して、そのBluetooth経由で使用するようにしました。
もちろんThinkPad内臓のBluetoothは切っています。
すると電波が届きやすくなってようやく快適に使えるようになりました。

しかし、Bluetoothアダプタが少々古めのもののためか、キーボードのバッテリー残量がキーボードのプロパティから確認できなくなってしまいました。
いくつかのプロファイルがインストールできなかったようなので、そのためかも。
しかし古いもののため、メーカーにはWin7用のドライバもなく、、しょうがないですね。

私の環境が少し特殊だったので苦労しましたが、普通はすんなり使用できると思います。
ただ、、やっぱり無線だと不安定で仕事に使うにはちょっと不安な面もあります。。
今は問題なく使えていますが、、しばらく様子見ですね。
というか、とりあえずUSB版もあとで注文しました。
発売からしばらくたってしまったために在庫が切れているようで発送はまだ先になりそうな気配ですが。。


Bluetooth関連でうまく動作しない方の参考になれば幸いです。