2008/12/31

セキュリティーソフトでPCを保護

昨日、出勤前に、ヨドバシカメラに行って、セキュリティーソフトを購入しました。



大学時代の時に、初めて買ったセキュリティーソフトが上のwindows版だったので、そのmac版にしました。

ただ、上のは、macのみ対応しているらしく、macでwindowsを機動させたい場合は、デァルバージョンを購入しないと、windowsからウィルスが入ってくる可能性もあるらしく、完全に安全とはいえないみたいです。

まずは、macを使いこなすことが重点課題なので、デュアルバージョンは購入しませんでした。
これで安全にネット生活できたらなと。

2008/12/30

[mac]初投稿

safariから初投稿。
うまくできるかなー??

2008/12/29

macとiPod touchゲット

先週やっと、ついに念願のmacをゲットしました。



そして、iPod touch(16GB)もゲットしました。


macをゲットした理由は、いくつかあるけど、やはり一番の理由は、iPod touchのアプリを開発できるというところ。

これで念願のiPod touchのアプリケーションを開発することができます。

2008/12/28

実は、悪ノリして

もう一個、香水を買っちゃった。

Photobucket
実は、昨日紹介した香水の近くに、この香水があって、広告をよく見ると、

小栗 旬

だーと思って、急いで、匂いをかいでみる。

「うん、確かにいいセクシーな匂いだ、これをつければ、俺も、小栗旬みたになれるぞー」と思い、急いで、購入。
(この間に、嫁に「なれないから安心しな」といわれてしまったのだが。。。)

パッケージは下のような感じです。
Photobucket

Photobucket

で、中身は
Photobucket

Photobucket

かなり気に入ってしまい、休みの時は、しゅっしゅ、しゅっしゅ、つけてます。

で、今日、ららぽーと豊洲の香水屋に行った時、たまたま、この香水を目にして、横にあった香水を目にしてみると、

今井 涼



誰??

ということは、小栗旬ではないということ。。。

だって、小田急の店員に確認して、「はい、小栗旬です。」と確認とったよ。

どーやら、間違えてしまったらしく、ぐーぐる先生に聞いてみたところ、men's eggのモデルさんだそうです。

まぁーでも、匂いがセクシーなのでいいかなと。

2008/12/27

久しぶりに香水をゲット

もうかれこれ9年ぶりに、香水をゲットしました。

ゲットした香水は、RISINGWAVEのRISK

Photobucket
この香水をゲットした理由は、超単純で、24とコラボしているから。
(匂いじゃーねー)

先週、新宿の小田急にキーファーサザーランドのカッコイイポスターを発見してそっこーで買いました。
Photobucket
上の画像とは違ったんですけどね。

匂いもまぁーまーよかったっす。
Photobucket

2008/12/26

[javascript]history.backについて

最近、知ったのですが、javascriptを経由してinputタグのvalueを変更してsubmitを行い、その後、history.backをかますと、javascriptによって変更された後の値を保持してしまうということ。

ちょっと何がなんだかイメージがつかめないと思うので、サンプルをこさえてみます。

<form name="frm" action="" method="post">
<input type="text" name="hoge" value="0">
<input type="button" value="進む" onclick="lf_go();">
<input type="button" value="戻る" onclick="history.back();">
</form>
<script type="text/javascript">
function lf_go(){
document.frm.hoge.value = 1;
document.frm.submit();
}

</script>

上のプログラムは、submit直前にinputタグのvalueを変更しています。

問題は、submit後にhistory.backをした場合、hogeの値はどうなるかということ。
正解は、0ではなく1なんですね。

これちょっと気をつけてないと思わぬところではまりそうな気がしたので、エントリーを書きました。

2008/12/25

[php]文字列がある位置を特定してくれるstrpos

なんか、phpって検索系の関数が多いような気がするのですが、他の言語でもそうなのでしょうか?

今、作っているアプリでstrposという関数を使う機会があったので、ここにまとめてみたいと思います。

まず、マニュアルを引用します。

strpos — 文字列が最初に現れる場所を見つける

int strpos ( string $haystack , mixed $needle [, int $offset ] )
文字列 haystack の中で、 needle が最初に現れた位置を数字で返します。

via:strpos

検索した結果、目当ての文字列がなかった場合は、falseを返すみたいです。

ちょっとためしに下のプログラムで考えてみます。

$test1 = "hoge.txt";
$test2 = strpos($test1,".");

print($test2);

上の場合、4を表示してくれます。

では、次の場合、

$test1 = "hoge.txt";
$test2 = strpos($test1,":");

if($test2 == false){
print("見つかりませんでした。");
}

結果として、文字列の「見つかりませんでした。」が表示されました。

print()でfalseを表示しようとしても、何も表示されないので、条件分岐などで利用するのがいいのかなーと。

いやーそれにしても、始めに戻りますが、文字列検索系の関数多いなー。

2008/12/24

[php]大文字に変換、小文字に変換

サーバーサイドで、何か検索をかけたい時、しかもそれが、英語の場合、大文字や小文字に変換する場合があります。

そんな時は、strtoupperまたは、strtolowerを使うと便利です。

strtolower -- 文字列を小文字にする
strtoupper -- 文字列を大文字にする

$str = "aAbBa";
$str = strtoupper($str); // $str は AABBA となる
$str = strtolower($str); // $str は aabba となる

via:大文字、小文字の変換

strtoupperは大文字に変換し、strtolowerは小文字に変換するということで実際に試してみます。

$test1 = "hoge";
$test2 = "FOO";

$test1 = strtoupper($test1);
$test2 = strtolower($test2);

print($test1);
print("<br>");
print($test2);

で、実行してみると、hogeはHOGEと変換され、FOOはfooと変換されました。
そんなにはしょっちゅうは使わないとは思うけど、知っておいても損はしない関数なんじゃーないかなと。

2008/12/23

[php]文字列を逆にするstrrev

この関数も割りと使うかな。

string strrev ( string $string )
string を逆順にして返します。

via:strrev

試しにさっそくサンプルを作ってみました。

$hoge = "Hello PHP";
$foo = strrev($hoge);

print($foo);

表示した結果は、PHP olleHとなりました。

文字列を逆にして色々操作したい時に便利かなと。

DSにやっぱりメモリーカードは

いらない


みたいです。

おとといの記事で、DSにメモリーカードがいるかどうか書いたのですが、やはりいらないみたいです。

ということは、スーパーファミコンやゲームボーイのようにソフトの中のHDに記憶してしまうということなんだろうなー。

それってひょっとしたら、スーパーファミコンみたいに、途中の記録とか消えてしまう可能性もあるってことなんじゃー。

実は、ドラゴンクエスト3をファミコンでやったときに、すっげーいいところで、データが消えてしまった記憶があって、それ以来幾度となく、記録が消えてしまうのはいやだなーと思ってしまいます。

PSはメモリーカードが別になっていて、それだと、なんか記録が消えないような気がして、かなり気に入っていたのですが、DSもそうならないのかなー。

例えば、デジカメに入れるメモリと同じぐらいの薄さで冒険の途中を記録できるとか。

なんか、カセットそのものに記憶するって、すっげー抵抗感感じちゃうんだよな。

スーパーファミコンやゲームボーイを知らない世代(おそらく中学生、小学生)は、本体そのものに、冒険の途中を記録するってことに抵抗感を感じないのだろうか?

2008/12/22

[php]chmodで権限変えられるんだ!!

ぐぐってびっくりしたのですが、unixやlinuxのように、phpでchmodを使ってディレクトリの権限変更できたんだ!!

おそらくCFではできなかったような気がするのですが。
最初、発見した時、びっくりしました。

phpのマニュアルを読んでみると以下のように記載されていました。

bool chmod ( string $filename , int $mode )
指定されたファイルのモードを mode で指定したものに変更しようと試みます。

<?php
chmod("/somedir/somefile", 755); // 10 進数; おそらく間違い
chmod("/somedir/somefile", "u+rwx,go+rx"); // 文字列; 正しくない
chmod("/somedir/somefile", 0755); // 8 進数; 正しいモードの値
?>

via:chmod

上のマニュアルを読んで、さらにびっくりしたのは、権限変更する時の数字って8進数で表記しないといけないということ。

なので、普段、ffftpで権限を変更する時は、頭に0をつけずに変更するしているので、chmodを使う時は、0が必要なので、注意しないといけないのかなと。

後、ぐぐってここのサイトのコンテンツを見ると、phpのマニュアルと同じことが書かれているので、こちらを参照してもいいかなーと思います。

追記
この関数の戻り値は、成功した場合trueを返し、失敗した場合は、falseを返すみたいなので、その値で、後々の処理を分けると便利かなと。

後、権限の件ですが、CFの場合、cfdirectoryで変更できるかも知れません(試してないので、確信を持っていえないところがあります。)

2008/12/21

英語コミュニティーサイトchocolate-chip mocha作成

実は、先週の水曜日の定時後外注さんとカフェで英会話をしました。

というのも、その前に、一緒に牡蠣を食べた時に、「毎週、ちょっとづつでもいいから英語を話そう」という風になりまして、毎週きちんと時間をとって英会話をすることになりました。

ずっと前から、英会話を勉強したいなーと思っていて、けど、英会話学校に行っても費用がばかにならないし、外人の友達を作って話すことができたならなーと夢見ていたら、いつの間にか実現しました。

で、今回、こうして、英会話の勉強をすることがかなったので、ただ単に会話するだけではなく、どんな会話をしたのかを公開したいなと思い、コミュニティサイトを作りました。

chocolate-chip mochaというサイトで、あまり堅苦しくなく、けど、ちょっとまじめに(やる時はやろうよ)という意味で、つけました。

今後の活動として、毎週の水曜日に英会話をするので、その時に話した内容を英語で書こうかなと。

後、せっかくこういう機会がもてたので、きっと中には英会話を勉強したい方もいるのではないかと思って、参加できるようなサイトにしました。

英会話学校にはいきたくない、けど、英語を勉強したい人っていっぱいいると思うんですよね。
このご時勢、やっぱ英語はマスターしておかないとなーと思っている方も多いんじゃーないかと思います。(または中国語)

それにしても本当に運がいいなーとつくづく思います。
本当に、外注のM氏には感謝しております。

ガタガタな英語に真剣に耳を傾けてくれ、しかも、間違っている場合は、訂正してくれる。
そんなやさしい方ががこのご時勢にいるとは。

決しては無駄にしたくはないし、ガチでいきたい。
そんなことを胸に秘めて、水曜日は生きています。

2008/12/20

DSにメモリーカードは

いるのでしょうか?

PS以降のゲーム機事情がわからないので、もしご存知の方がいたら教えていただけたらと。

2008/12/19

[javascript]radioボタンの個数を取得(別解)

昨日は、checkboxだったので、今日は、radioボタン

<form name="frm" action="" method="post">
<input type="checkbox" name="foo" value="1">
<input type="button" value="確認" onclick="lf_kakunin();">

</form>
<script type="text/javascript">
function lf_kakunin(){
alert(document.getElementsByName("foo").length);
}
</script>

やはり、昨日と同じように、document.getElementsByNameを使えば取得できます。
checkboxの時もそうだったのですが、1個の場合、「undefined」ではなく、「1」と表示してくれるところがいいですね。

2008/12/18

[javascript]checkboxの個数を取得(別解)

少し前に、[javascript]checkboxの個数を取得で、checkboxの個数が1個の場合を検証したのですが、個数に関係なく、取得できる方法を教えてもらいました。

<form name="frm" action="" method="post">
<input type="checkbox" name="hoge" value="1">
<input type="button" value="確認" onclick="lf_kakunin();">

</form>
<script type="text/javascript">
function lf_kakunin(){
alert(document.getElementsByName("hoge").length);
}
</script>

要となるのは、document.getElementsByNameを使うところ。

普段は、document.getElementByIdを使うので、でなかったなーこれ。

2008/12/17

[javascript]radioボタンのdisabledを動的に操作

昨日に引き続き、今日は、radioボタンで動的にdisabledを操作してみたいと思います。

まず、1個の場合、

<form name="frm" action="" method="post">
<input type="radio" name="foo" value="1">
<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
var curfrm = document.frm;
if(curfrm.foo.disabled == true){
curfrm.foo.disabled = false;
}else{
curfrm.foo.disabled = true;
}
}
</script>

でdisabledの状態をコントロールすることができます。

では、複数の場合は、これも前回と同じ感じで、
<form name="frm" action="" method="post">
<input type="radio" name="foo" value="1">
<input type="radio" name="foo" value="2">
<input type="button" value="確認" onclick="lf_kakunin();">

</form>
<script type="text/javascript">
function lf_kakunin(){
var curfrm = document.frm;
for(var i=0;i<curfrm.foo.length;i++){
if(curfrm.foo[i].disabled == true ){
curfrm.foo[i].disabled = false;
}else{
curfrm.foo[i].disabled = true;
}
}
}

</script>

となります。

それにしても、一個の場合でも、同じように処理できたらなー。

2008/12/16

[javascript]checkboxのdisabledを動的に操作

javascriptから動的に、disabledをはずしたり、つけたりする機会があったので。
まずは、チェックボックスが1個場合


<form name="frm" action="" method="post">
<input type="checkbox" name="hoge" value="1" disabled>
<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
var curfrm = document.frm;
if(curfrm.hoge.disabled == true ){
curfrm.hoge.disabled = false;
}else{
curfrm.hoge.disabled = true;
}
}
</script>

disableだった場合は、解除を行い、解除になっている場合は、入力禁止に変更するプログラムで、動作確認をしてみると、確かに動きました。

では、複数の場合は、どうなるでしょうか?

<form name="frm" action="" method="post">
<input type="checkbox" name="hoge" value="1" disabled>
<input type="checkbox" name="hoge" value="2">
<input type="checkbox" name="hoge" value="3" disabled>

<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
var curfrm = document.frm;
for(var i=0;i<curfrm.hoge.length;i++){
if(curfrm.hoge[i].disabled == true ){
curfrm.hoge[i].disabled = false;
}else{
curfrm.hoge[i].disabled = true;
}
}
}
</script>

今度も、disableだった場合は、解除を行い、解除になっている場合は、入力禁止に変更するプログラムなのですが、注意する点として、inputのname属性の次に、[]を追加しないといけないこと。

これを明記することによって、何番目のチェックボックスを操作しますというのを認識してくれます。
また、最初は、0番目なので、あわせて注意したいところです。

例によって、今度は、radioボタンでも検証してみようかなと。

2008/12/15

[oracle]session idを取得する

おらおらSQLさんのUSERENVという項目を参考にすると下記の方法で取得できます。

select userenv('SESSIONID')
from dual
;

確かにセッションIDが表示されました。

2008/12/14

ニンテンドーDS Liteとクロノトリガーをもらいました

先月、誕生日だったのですが、なんと、弟からニンテンドーDS Liteとクロノトリガーをもらいました。





最近、しきりに、クロノトリガーのCMが放送されていて、「久しぶりにやってみたいなー」とおもっていたところ、「ぴんぽーん、宅配便でぇーす」と。

受け取って、見てみると、手紙と共に、なんと、DS liteとクロノトリガーが。
ものすごくうれしかったです♪

ゲームなんて、何年ぶりだろうか?

覚えているのは、高校の3年のファイナル・ファンタジー9か、大学3年の友達のケータイで遊んだドラクエ1以来の実に、4年ぶりぐらいかな。

クロノトリガー自体、13年ぶりの復刻版みたいです。
パッケージを見ながら、すごく懐かしいなーと思ってしまいました。
昔、スーパーファミコンでやったなー。

なんか、アマゾンを見ていると、PS版もあったみたいですね。
初めて知りました。

後、当時、リリースされた時、スクエアとエニックスの初めての合作だったような気がします。
それだけで話題を呼んだような気がします。

その後、まさか合併するとは思わなかったなー。

話をゲームの内容にもっていくと、確か、このゲーム、魔王が仲間になった記憶があります。
あと、カエルも元の人間か何かに戻るような気が。
さらにどの時代でクリアーかによって最後のエンディングが変わってきたような。
と今、書いてみると結構、覚えているなー。

中途半端に覚えているのですが、攻略本買おうかなと。

実は、ロールプレイングは、攻略本がないと進めない男なのです。

というのも、いったん進んでしまうと手に入らなくなってしまうアイテムがあったり、技があったり、仲間がいたりと後で後悔してしまったりするのです。

それで、FF7は、敵の技をすべて覚えることができなかったり。
他のゲームでは(タイトルを忘れてしまいましたが)、貴重なアイテムをゲットできなかったりと。

まぁー、今の、時代ネットがあるので、検索しながら進んでいけばいいとは思うんですけどね。

とりあえず下の本をゲットしてみようかなと。

2008/12/13

先輩が、webサービスを開始

大学の先輩であるoirakumaさんが、kazeokeというサイトをオープンしました。
このサイトは、検索したキーワードを元に、ヒットしたサイトを解析し、さらに解析結果を元に検索を行う、まさに、「風が吹けば桶屋が儲かる」的な法則を見つけてくるサービスです。
詳しい使い方は、kazeoke公開しました!というエントリに書かれています。

連鎖数を狙っていろいろ検索していくと、おもしろいと思います♪( ̄▽+ ̄*)
これが狙えるようで、なかなか、連鎖数が多いキーワードを探せないものです。
今のところ、4連鎖ぐらいがマックスだったような気がします。
二桁連鎖だせないかなーと検索しているのですが、難しいです。

検索した日付も、記事の上にマウスをもっていくと見れるようになっているので、過去にどんな検索がされたのかがわかって便利です。

お時間のある方は、是非!!

2008/12/12

[javascript]radioボタンの個数を取得

昨日は、checkboxについて検証したので、今日は、radioボタンについて

やはり、ここでも問題となるのは、radioボタンが一個の場合で、

<form name="frm" action="" method="post">
<input type="radio" name="foo" value="1">
<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
var curfrm = document.frm;
if(curfrm.foo.length == undefined){
alert("ラジオボタンの個数は一個です。");
}
}
</script>

チェックボックスと同じでした。

2008/12/11

[javascript]checkboxの個数を取得

久しぶりにcheckboxの個数を調べる必要が発生したので、個数の取得方法を検証してみました。

基本的には、document.form_name.checkbox_name.lengthで取得できるのですが、問題は、チェックボックスが1個の場合

<form name="frm" >
<input type="checkbox" name="hoge" value="1">
<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
alert(document.frm.hoge.length);
}
</script>

この場合、「undefined」と返されてしまいました。

次は、下のように少し変えてみました。
<form name="frm" >
<input type="checkbox" name="hoge" value="1">
<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
//チェックボックスの個数が1個の時
if(document.frm.hoge.length == "undefined"){
alert("1個です");
}
}
</script>

この場合、何も起こりませんでした。
以上より、undefinedは文字列ではないことがわかったので、
<form name="frm" >
<input type="checkbox" name="hoge" value="1">
<input type="button" value="確認" onclick="lf_kakunin();">
</form>
<script type="text/javascript">
function lf_kakunin(){
//チェックボックスの個数が1個の時
if(document.frm.hoge.length == undefined){
alert("1個です");
}
}
</script>

と、「"」をはずすと、無事、alertの部分が表示されました。

今回は、checkboxだったんでけど、radioボタンの時は、どうなるのか次回、検証してみたいと思います。

あと、今日は、IEで動作確認したんだけど、firefoxの場合でも、同じなのだろうか??
うーーーん。。。

2008/12/10

[php]fileの参照方法

inputタグのfile属性でファイルを選択後、submitすると、情報が送信されるのですが、その時の参照方法を調べました。

Lesson11-1 ~画像のアップロード~(ぷろぐらむるーむさんより)を参考にさせていただくと、

//nameを表示
print($_FILES["inputタグのname"]["name"];)
print("<br>");
//サイズの表示
print($_FILES["inputタグのname"]["size"];)
print("<br>");
//ファイルタイプ
print($_FILES["inputタグのname"]["type"];)
print("<br>");
//一時的にサーバーに保存してあるパスの名前
print($_FILES["inputタグのname"]["tmp_name"];)
print("<br>");

こうしてみてみると、結構、あっさりしているんだな。
ただし、この時、注意することがあって、それは、送信する際に、formの中に、「ENCTYPE="MULTIPART/FORM-DATA"」を入れないといけないこと。

また、sizeでの表示は、バイトなので気をつけたいところです。

後、画像をサーバーにアップロードする方法は、同じくLesson11-2 ~画像のアップロードと表示~に詳しい方法が記載されています。

2008/12/09

[asp]exit Functionでファンクションを抜ける

ものすごくやってしまいました。
aspのファンクション内部で、exit Functionを書かない限り処理が続行するんですね。
関数名に値を書いた瞬間に処理が終了するかと思っていたのですが。。。
どーやら違うみたい。

jsやphp、cfはreturnやcfreturnを使って明示的に処理を終了させるという認識があるのですが、aspでも同じような認識を持たないとダメですね。
というか、一般的な言語は、明示的に終了させると認識しないと。。。トホホ。

2008/12/08

adidas decade lowを購入!!

昨日、妻にアディダスの靴を買ってもらいました。

久しぶりに靴を買ってもらったので、ちょーこうふん♪

箱は、いつものブルーとは違って、茶色です。

Photobucket

側面には、大きさやら、名前やらが書いてあります。
Photobucket

そして、あけてみると、、、

Photobucket

じゃーん。
イカス!!

まさに自我自賛ですが、グリーンとブラウンがベースとなっているシューズは初めてです。

後ろは、こんな感じです。

Photobucket

横は、、、
Photobucket

さらに前は、
Photobucket

になっています。

上からズームしてみると、

Photobucket

となっていて、qualityと書かれたキーホルダーが!!
もちろん買ったときについてきます。
なんか、今回、限定らしいです。

言い忘れてしまいましたが、実は、シューズが大好きです。
特にnikeとadidas

理由は、洋服のようにイチイチ脱がずに試着できる点(靴を脱ぐという作業が発生するが、服より手間ではない)と、安くてハショナブルだからです。

いつ履こうかなー♪

2008/12/07

マックキャンペーンでCoke Glassゲット

ちょっと前の話ですが、コカコーラとマックでグラスプレゼントのキャンペーンが行われていました。

Photobucket

10月31日から開始で、マックでLサイズのバリューセットを頼むともれなくコカコーラのロゴが入ったグラスをプレゼントしてくれるというものなのですが、限定500万個だそうです。

キャンペーン開始当日にそっこーに行って、ゲットしました。

まず、パッケージはこのような感じです。

Photobucket

上からのぞいてみると~~~

Photobucket
Mと書かれたロゴが。

いよいよ中をあけてみます。
Photobucket
キタo(>▽<)o
おもいっきり、コーラのロゴが入ってる。
コーラのビンみたいに、くびれてる。

しかも、下面には、
Photobucket
Mと書かれたロゴも。
細かい。

全部で3種類あるうち、赤色をゲットしました。

Photobucket

当初は、グリーンがほしかったのですが、今、思ってみると、コーラと同じ色なので、よかったと思います。

2008/12/06

24 リデンプション DVDセル&リリース

前回、24 Redemption というエントリを書きましたが、24の最新作がいよいよ日本にも来日です。

今回は、2時間で完結のドラマ映画で、アフリカが舞台となっています。

foxのサイトによると、2009年3月19日にDVDセル&リリース同時リリースとなるようです。

めっちゃ楽しみ~♪

2008/12/05

[php]開発はバージョン5で

普段、仕事でバージョンをあまり意識せずにソースを組んでいるのですが、開発者のPHP利用はPHP5に移行したという記事で、PHPで開発を行っている人の多くは、5.2を使っているとか!!

オープンソース言語なので、バージョンアップによる仕様変更や追加などを把握しておかないとやばいのかなと。

2008/12/04

[php]phpファイルでrssを実装する際の注意点

今、作っているアプリでRSSを実装したのですが、firefoxではrssのソースが表示され、IEだとなぜか表示されなかったので、原因を調べてみることに。

そもそも、本来、rssはxmlの一種なので、表示できないとおかしい。

おそらくIEがRSSをxmlファイルとして認識しなかったため、表示しなかったと判断し、サーバーサイドで、rssのソースをxmlのコンテンツとしてIEに認識させるように修正。

具体的に、ヘッダーのContent-Typeをtext/xmlにすればいいということ。
PHPを使おうをちょこっと参考にさせていただいて、結果、落ち着いたのは、下の一文を、ソースのトップに持ってくること。

header("Content-Type: text/xml; charset=UTF-8");

こうすることで、ブラウザに依存せず、「このページのコンテンツは、xmlですよ」と各ブラウザに告知できるので、IEでもrssのソースを表示することができました。

2008/12/03

[php]文字列(yyyymmddhhmiss)からRFC2822フォーマットに変換

今、作っているアプリに必要だったので、調べてみることに。

下のようにyyyymmddhh24missという書式の文字列がある場合。

$temporary_date = "20081202213546";//2008年12月02日21時35分46秒

これをRFC2822フォーマットを行うには、mktime()dateを使って次のようにしました。

//「年」を取得
$temporary_yyyy = substr($temporary_date,0,4);
//「月」を取得
$temporary_mm = substr($temporary_date,4,2);
//「日」を取得
$temporary_dd = substr($temporary_date,6,2);
//「時」を取得
$temporary_hh = substr($temporary_date,8,2);
//「分」を取得
$temporary_mi = substr($temporary_date,10,2);
//「秒」を取得
$temporary_ss = substr($temporary_date,12,2);
//日付を Unix のタイムスタンプとして取得する
$temporary_date = mktime($temporary_hh,$temporary_mi,$temporary_ss,
$temporary_mm,$temporary_dd,$temporary_yyyy);
//RFC2822フォーマットに変換
$temporary_date = date("r",$temporary_date);
//表示
print($temporary_date);

確か、data関数のリファレンスで、mktimeを使って変換していたものがあったので、それを使ってみたのですが、他にも方法があるかもしれません。

今、思ったんだけど、各項目の取得時に変数ではなくて、配列の方がよかったかも。
でも、それほど違いはないのですが。。。

2008/12/02

[coldfusion]xmlを生成しダウンロードする

久しぶりのxmlネタ。
仕事で、xmlを扱いそうなので、予習をかねてxmlを生成し、ダウンロードする方法を考えてみました。
とりあえず、cfのXML ドキュメントオブジェクトの作成と保存を見たのですが、めんどくさそうだったので、文字列を使って気合で作成。

<cfset output_xml = '<?xml version="1.0" ?>'>
<cfset output_xml = output_xml&"<sample>">
<cfset output_xml = output_xml&"<hoge>test1</hoge>">
<cfset output_xml = output_xml&"<foo>test2</foo>">
<cfset output_xml = output_xml&"</sample>">

<cffile ACTION="Write" FILE="#ExpandPath(".")#\hoge.xml" OUTPUT="#output_xml#">
<cfheader name="Content-Disposition" value="attachment; filename=hoge.xml">
<cfcontent TYPE="text/xml" DELETEFILE="yes" FILE="#ExpandPath(".")#\hoge.xml">


すごく原始的なソースになりました。
cffileからの下の3行は、リファレンスに似たようなものがあったのでそれを参照しました♪

cfcontentのtext/xmlは、マニュアルを見ながら、おそらくこうだろうーと判断。

ちなみに、cfcontentのDELETEFILE属性のyesをnoに変更すると、ファイルが残るのですが、残ったファイルを直接削除することってできなかったんですね。

気づくまでちょっと時間がかかりました。

2008/12/01

[oracle]最後に発行されたDDL文の日付を取得

本当は、あるテーブル対して発行されたDML文の発行日付がほしかったんだけど、ぐぐっていたら、DDLの方がみつかったので、メモします。
あるテーブルに対して、最後に発行されたDDLの日付は下のように取得できるみたいです。

SELECT OBJECT_NAME, OBJECT_TYPE,
TO_CHAR(CREATED, 'YYYY.MM.DD HH24:MI:SS'),
TO_CHAR(LAST_DDL_TIME, 'YYYY.MM.DD HH24:MI:SS')
FROM USER_OBJECTS
WHERE OBJECT_NAME = 'MY_PACKAGE';

via:オブジェクトの作成・更新日時の取得

上のテーブルのカラムが知りたくなったので、もうちょい調べてみると、

ALL_OBJECTSは、ログインしているユーザーがアクセスできるオブジェクト情報をすべて示します。

DBA_OBJECTSは、データベース内の全てのオブジェクト情報を示します。

USER_OBJECTSは、ログインしているユーザーが所有しているオブジェクト情報をすべて示します。

ALL_OBJECTS/DBA_OBJECTS/USER_OBJECTSの主要項目一覧


列名説明
OWNERオブジェクトの所有者
OBJECT_NAMEオブジェクト名。
SUBOBJECT_NAMEサブオブジェクトの名前 (パーティションなど)
OBJECT_TYPEオブジェクトのタイプ(TABLE、INDEXなど)
CREATEDオブジェクトの作成日時
LAST_DDL_TIMEDDL文でオブジェクトが変更された日時
STATUSオブジェクトの状態(VALID、INVALIDまたはN/A)

via:データベース内のオブジェクト情報(OBJECTS)

と書かれていました。

この手のテーブルはあまり詳しくないので、徐々に使い方を覚えていきたいですね。