2008/09/30

[coldfusion]ここがダメだよ、coldfusion その3

<cfscript>内で、変数宣言をする際に、varを使ってエラーなる場合と、ならない場合がある。

下の場合は、エラーになる。


<cfscript>
var hoge = "";
</cfscript>


だけど、これはエラーにならない

<cffunction name="foo">
<cfscript>
var hoge = "";
</cfscript>
</cffunction>

つまり、cffunction内でcfscriptを使う場合は、varを使ってもオッケーなんですね。

しかも、cffunction内では、varを使わなくても変数宣言を行うことができるんですよ。

この中途半端さどうにかしてほしい。
せめて、一個目の例でも、varを宣言できるようにしてほしいかなと思います。

2008/09/29

[思い出]新婚旅行終了

先ほど、家に到着!!

超おもしろかったな~♪

次、どこに行こうかと妻と話あっています。

本当に海外って楽しいですね

2008/09/21

[思い出]明日から新婚旅行

に行ってきます。

プラハ→ウィーン→ブラペスト

に行ってきます。

パソをもっていかないので、一週間ほど、ブログの更新ができないので、よろしくお願いします。

2008/09/20

[coldfusion]ここがダメだよ、coldfusion その2

CPANのような盛り上がったコミュニティがない

2008/09/19

[coldfusion]ここがダメだよ、coldfusion その1

ちょっと前に放送されていた「ここが変だよ日本人」にあやかって。

まずは、ずーといいたかったのがこれ

ラムダがない

2008/09/18

[思い出][カメラ]カメラ購入、Nikon CoolPix s52

前々からずーとほしかった、カメラを購入。

ずばり、ニコンのCool Pix!!


だいぶ前に、サイバーバズのイベントでS50を貸していただいて、その時、超感銘を受けたシリーズです。

このカメラで便利なのは、なんと言っても、撮影の際に、連射しながら、その中で、一番いい写真をセレクトしてくれるBSS(ベストショットセレクター)機能があること。

撮影するときに、手振れしまくる自分としては、一番いい写真を自動でセレクトしてくれるので、すっげー便利だし、写りもいい。

おととし、借りといてよかったー♪
借りてたとき、人生で初めてデジカメで撮影してよかったなぁーと思っていたもんなー。
なんど、「ちょーだい」と交渉したことだか。

ヨドバシの店員さんいわく、新たらしいエンジンを積んでいるため、s50よりもいいはずと言っていました。

しかも、価格が20000円代と、超手ごろ。
元々、35000円ぐらいだったのが、値崩れを起こしたらしい。

あと、撮るとき、毎回、毎回、ケースから取り出すのは、メンドイので、首から下げられるストラップも勢いで購入


これで、わずらわしくなく撮影できるぞ。
上は、黄色ですが、紫色を買いました(妻セレクト)。

紫派手だと思うんだけど、カメラの色(ゴールド)を考えると、合っているとのこと。

最近、妻に自分の着る服を選んでもらっている状況なので、いいのかなと思ったりもするのだが、それにしてもやっぱ派手だと思います。(今、寝ている妻に突っ込み)

さらに、SDメモリーカードも購入。

色々なメーカーがあったのですが、日本製がいいかなと思い、パナソニックにしました。

店員さんは、読み取りの早さを売りにしていましたが、早さよりも、確実性をとりたかったので、あえて遅いほうにしました。

いくら早くてもバグったらたまんないし。

あと、毎回、毎回、気になるのですが、デジカメとか、デジタルビデオに付属しているCD。

媒体から直接パソコンに繋げるときに、絶対にインストールしなくてはいけなくて、インストールする度に、パソコンに容量も食うし、手間もかかるから、メモリーカードから直接、パソコンに繋げられるものはないかなーと思ったら、やっぱあった。

digioのカードリーダーなのですが、ロアスのCRW-SD38を購入。

USB経由で直接、メモリのやり取りができるので、CDをインストールする必要がないのかなと。
(やはりUSBであった。)

しかも、windows OSのみならず、mac osにも対応しているところが素晴らしい。
絶対使わないと思うのだが、一応、妻に色を選んばせたら、ピンクになってしまった。
一人で持ち運ぶにはちょっとした勇気が必要かもしれない。

あと、5年間保障もつけたので、1000円ちょっと追加で払いました。

ここまで買っても、30000円を余裕できる程度で済んでしまう。
ホント安いよなー。
ちょっと前まで、デジカメ激高のイメージがあったんだけど。

便利な世の中になったものです。

2008/09/17

[tabetter]このアイデアは既に存在していた

前回、[Tabetter]マッシュアップサイトTabetterを作りましたで、tabetterを作ったことを書きました。

ですが、ちょ、ちょ、すっげーびっくりしました。
ブクマから、表示するのが、メンドイので、ぐぐってページをオープンしようと思ったら、驚愕の事実が、

自分のステータス(いま何をしている?)を投稿しているので、それも必然だと思うのですが、

だったら「Tabetter(食べったー)」があってもいいはず!

via:食べたものを投稿する「Tabetter」

え!!ひょっとして、もう既にそんなサービスがあったの??
と驚きつつも悲しくもなりつつ、先を読んでいくと、

追記:これはネタでございます。


via:食べたものを投稿する「Tabetter」



ネタだったのか~。

今度から、webサービスを作る場合は、既に存在しているかどうか、ぐぐって調べてみないとダメだな。

ちなみに、今回のtabetterは、名前をぱくっていません。
いくら言っても後の祭りかもしれないけど。。。

一ついえるのは、目の付け所はよかったのかなーと。
すでに一年以上の前の記事ですが、いまだ、そのようなサイトが存在せず、構築することができたのだから。

あと、正確にnetafullさんの意図しているサービスではないかもしれません。

でも、それはそれで、どうすれば実現できるのか?とか、よりよくするにはどうすれば?と考えれば建設的になれるはず。

今回、作ってよかったなーと思いました。
(でも、本当に驚きました。ネタでよかった)

2008/09/16

[scheme]nilのバグ解消!!

やっとこさ、マッシュアップアワードが終了したので、schemeに取り掛かることに。

前回、[scheme]nilでバグが発生で、Takahiroさんから、fix方法を教えていただいたので、バグをfixしました。

Photobucket

上のように、「nil」の代わりに、「'()」と空文字を使いました。

実行結果は、下になりました。

Photobucket

確かに、実行できました。

さらに、変数として「nil」を定義する方法も教えていただきました。

Photobucket

プリミティブなプロシージャ(この場合、nilをプロシージャを解釈)自体、上書きしてしまうのは、schemeならわでなのかなと。(Javaでプリミティブなクラスを上書きしたりしますが、オブジェクト指向言語ということで、別ものとして解釈)

この場合も、実行した結果、
Photobucket

を得ました。

一人で考えるのも重要なのですが、こうしてブログに書くことで、より多くの人の意見を聞くことができるので、ものすごく貴重です。

2008/09/15

[Tabetter]作品応募完了

なんとかマッシュアップアワードに締め切りに間に合うことができました。

結果、どうなるんだろうー。。。

せっかちなので、早く知りたくなるなぁ。

今年は、運がいいので、ミラクルがおきればいいなと。

[Mashup Awards]いよいよ明日

締め切りは、明日ダー。。。

うーん、間に合うかー???

2008/09/14

[oracle]ORA-06508について

プロシージャーやファンクションを実行の際に、内部で、ストアドを使っている場合、コール先がinvalidだとORA-06508が発生する可能性がある。

2008/09/13

[OpenID]いい記事~♪

ぐぐったらたまたま見つけました。

OpenID認証2.0~概論

いい記事なので、OpenIDを勉強したい方にお勧め!!

後、ここのpdfファイルもよかったです。

2008/09/12

[JavaScript]文字数カウントの修正

前回、[javascript]文字数カウント like twitterで、T.Sato君からいろいろ教えてもらったので、処理を追加してみることに。

<div id="test">150</div>
<textarea type="text"
style="height:50px;overflow-y:auto;"
id="hoge"
onKeyUp="lf_ValueCount();"
onClick="lf_ValueCount();"
onChange="lf_ValueCount();"
cols="40"></textarea>
<script type="text/javascript">
function $(aId){return document.getElementById(aId);}

function lf_ValueCount(){
if(150 - $("hoge").value.length < 0){
return $("test").innerHTML="文字数オーバー";
}
return $("test").innerHTML = 150 - $("hoge").value.length;
}

</script>

onClickは、全角で入力した後、マウスをクリックしたときに、計算されない不具合で追加と、onChangeはコピペ対応

これでどうだ!!
文字数:
150




やはりブログで書くとこうして指摘してくれるので大変ありがたい。

一人でやっても必ず抜けが発生する(納期が短いとなおさら)と考えているので、そういった意味でブログの力はすごいなと改めて実感。

2008/09/11

[Tabetter]マッシュアップサイトTabetterを作りました

今、自分がやっていることを一言で語るミニブログサービスTwitterというサイトがあります。

これにあやかって「どこのレストラン・飲み屋で過ごした」ということを一言で、表現するTabetterを作成しました。

マッシュアップコンテストの作品として、今回作ったのですが、Yahoo OpenIDとぐるなびAPIを採用しました。

細かい使い方は、後のエントリーで書けたらと思いますが、とにかく使いやすさ、わかりやすさを心がけて作成。

一番の便利な点は、サイトにログインするのに、パスワードとログイン名を登録しないこと。

従来、サイト毎に、パスワードやらIDとかを登録しなくてはいけなかったのですが、OpenIDを採用したので、Yahooにログインすれば、Tabetter側で一切登録をしなくてすみます。
(サイト内で使う、ニックネームを登録する必要はあるのですが。。。)

InternetExploerer6で動作確認済みで、YahooのIDをお持ちの方は、どなたでも遊ぶことができます。

もちろん無料でぇーす♪

お時間のある時に、是非、お試しください。

2009年9月17日追記
NETAFULLさんのブログに、食べたものを投稿する「Tabetter」というエントリーで、似たようなサービスがネタで掲載されていました。

ぱくってないっすよ。

2008/09/10

[思い出]狩野 英孝を生で見る

この前の日曜。池袋のサンシャインで狩野 英孝がイベントをやっていました。

ものすごくおもしろかったです。

生のイベントでも自分に向けて写真を撮っていました。

ラーメン、つけ麺、ぼくいけめ~~~ん♪

2008/09/09

[javascript]文字数カウント like twitter

マッシュアップの作品で、twitterのような文字カウントを実装したいなと思ってぐぐったら鷹の島さん入力文字数の制限を可視化する JavaScriptという記事に実装方法が書かれていました。

が、しかし、確かに、実装方法は書いてありましたが、prototype.jsを使うらしく、使い方を完璧に把握してないので、自作できないものかと考えてみました。

<div id="test">150</div>
<textarea type="text"
style="height:50px;overflow-y:auto;"
id="hoge"
onKeyUp="lf_ValueCount();"
cols="40"></textarea>
<script type="text/javascript">
function $(aId){return document.getElementById(aId);}

function lf_ValueCount(){
if(150 - $("hoge").value.length < 0){
return $("test").innerHTML="文字数オーバー";
}
return $("test").innerHTML = 150 - $("hoge").value.length;
}

</script>

リンク先のソースよりも単純になったと思うのですが、逆に不安になってしまう。
一応動作確認を行って問題なさそうだったんだけど。。。

もし見つかったらコメントいただけたらと思います。
文字数:
150


2008/09/08

[mysql] limit like oracle 's rownum

今、マッシュアップコンテストに備えて猛烈な勢いでアプリを開発中!!
しかも、今回、現場で使っているoracleではなく、mysqlなので、全然慣れずに悪戦苦闘しています。

hetemlでDBのブラウザーを用意してくれているので、それを使ってデータをselectしているのですが、その際に、sql文も一緒にでてくるのですが、select文で


select ・・・・ limit・・・


ん??

limit

limitって何ぞや??
と思ったので、リファレンスで調べることに。

おそらくoracleでいうところの、rownumにあたるのではないのかなーと思ったら、案の定ビンゴ!!

でも、正確にいうと同じではないので、≒ぐらいかなと。

LIMIT 節を使用すると、SELECT ステートメントで返されるレコード数を制限することができる。LIMIT は 1 つまたは 2 つの数値引数を取る。これらの引数は整数定数でなければならない。

引数が 1 つの場合、その値は、戻り値として返す、結果セットの冒頭からのレコード数を表す。 引数が 2 つの場合、最初の引数は戻り値として返す最初のレコードまでのオフセットを表し、2 つ目の引数は戻り値として返す最大レコード数を表す。最初のレコードのオフセット値は 0(1 ではない)。

PostgreSQL との互換性を確保するため、MySQL では LIMIT row_count OFFSET offset 構文もサポートしている。

mysql> SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15
特定のオフセット位置から結果セットの終わりまでのすべてのレコードを取り出すには、2 つ目のパラメータに大きな数値を指定できる。

mysql> SELECT * FROM table LIMIT 95,18446744073709551615; # Retrieve rows 96-last.
引数が 1 つの場合、その値は戻り値として返す最大レコード数を表す。

mysql> SELECT * FROM table LIMIT 5; # Retrieve first 5 rows
つまり、LIMIT n は LIMIT 0,n と指定するのと同じである。

via:6.4.1. SELECT 構文

2008/09/07

[html]imgタグで画像の変更する場合

imgタグを使って画像を表示するときに、そのまま表示するのではなく、大きさを変更させたい場合、どうするのかなーと思い、とほほのimgタグを調べたら、widthとheight属性で変更できたのね。

2008/09/06

[ColdFusion]クッキー変数の削除

クッキー変数を、ページ内で削除したかったので調べました。

< cfcookie name="hoge" value="" expires="now" >

でいけるはず!!

2008/09/05

[coldfusion]リファラーチェック

リンク元を参照したい場合、cgi構造体から取得することができます。

cgi.HTTP_REFERER

上の変数で注意したいのは、直接アドレスを指定して、表示した場合、cgi.HTTP_REFERER = ""となってしまうところ。

なので、cfif IsDefined("cgi.HTTP_REFERER") eq falseで先の処理を書いたとした場合、直接アドレス指定の場合、変数自体は宣言されているので、IsDefined()がtrueを返し処理が実行されません。

<!--- 直接アドレス指定の時だけ、処理したい(実際は、処理されることはない) --->
< cfif IsDefined("cgi.HTTP_REFERER") eq false >

< cfelse >

< /cfif >

この場合、cfif IsDefined("cgi.HTTP_REFERER") eq "" とすることによって、直接アドレスを指定された場合の、処理を書くことができます。
<!--- 直接アドレス指定の時だけ、処理したい(実際に、処理される) --->
< cfif IsDefined("cgi.HTTP_REFERER") eq "" >

< cfelse >

< /cfif >

2008/09/04

[coldfusion]ブラウザ判定 その2

前回、ブラウザの表示方法について書きました。

今日は、それに基づいて、リクエストをしているブラウザの判定方法について書きたいと思います。

基本的には下でいけると思います。

<!-------------------------------------------
001:IE6
002:IE7
003:FireFox
999:others
--------------------------------------------->
<cfif Find("MSIE 6",cgi.HTTP_USER_AGENT) gt 0>
<cfreturn "001">
<cfelseif Find("MSIE 7",cgi.HTTP_USER_AGENT) gt 0>
<cfreturn "002">
<cfelseif Find("Firefox",cgi.HTTP_USER_AGENT) gt 0>
<cfreturn "003">
<cfelse>
<cfreturn "999">
</cfif>

対応しているブラウザが少ない気がしますが、当面、これで困らないと思うので、ここまでにしました。

あと、前回と違って、cgi構造体を使いました。

おそらくMacやケータイからでは999を返してしまい、役に立たない気がしますが、対応については、また今度、考えたいと思います。

[coldfusion]Session変数を削除する

リファレンスによるとこれでいけるはず!!

< cfset hoge = StructDelete(session,"foo") >

2008/09/03

[coldfusion]ブラウザの情報を画面表示

一般に、ColdFusionでデバック機能をonにしているときに、ブラウザ情報が表示されます。

Photobucket
そこで、サーバーサイドで、ブラウザの情報を取得できないかと調べました。

CF7ですが、リファレンスをみると、user_agent変数で表示することができそうです。

<cfoutput>#user_agent#</cfoutput>

実行すると、以下の情報が表示されました。

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

これを元にどのブラウザからコールされているのか判断の材料となりそうです。

[mysql]文字列結合

oracleで、文字列結合を表現するとき、

'hoge'||'foo'

と書くのですが、my sqlで文字列結合できないかなぁーと思って調べたらあった!!

・文字列結合は concat() を使用する。

select concat(123456, 789012);

+------------------------+
| concat(123456, 789012) |
+------------------------+
| 123456789012 |
+------------------------+

select concat('123456', 789012);

+--------------------------+
| concat('123456', 789012) |
+--------------------------+
| 123456789012 |
+--------------------------+

select concat('123456', '789012');

+----------------------------+
| concat('123456', '789012') |
+----------------------------+
| 123456789012 |
+----------------------------+

select concat(key1, data1) from testm;

+---------------------+
| concat(key1, data1) |
+---------------------+
| a0011 |
| a0111 |
| b00210 |
| c003100 |
+---------------------+

via:MySQL 編14 - 文字関数、連結、空白削除、置換、切出、検索、長さ、数値

というわけで、基本、concat(カラム名,カラム名)で結合してくれるみたいです。
カラム名が3つ以上になった場合、どうするんだろう??

===2008.09.05追記===
MySQLのリファレンスにないかなーと思って少し調べたら発見!!
6.3.2. 文字列関数

・CONCAT(str1,str2,...)
引数を連結した結果の文字列を返す。いずれかの引数が NULL のときは NULL を返す。3 つ以上の引数の指定が可能。 数値型の引数は同等の文字列形式に変換される。

mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'

via:・CONCAT(str1,str2,...)

2008/09/02

[javascript]半角英数字チェック

ちょっと必要になったので、調べてみました。

正規表現を使った方が楽では?
function StrCheck(strSrc)
{
return /^[a-zA-Z0-9]+$/.test(strSrc);
}

via:JavaScriptで半角英数字チェック

上のチェック方法でもよかったのですが、いまいち納得ができなかったので、下を参考にしました。

/* 半角英文字チェック */
function AlphabetCheck() {
var str = document.iform.EnglishText.value;
if( str.match( /[^A-Za-z\s.-]+/ ) ){
alert("英語名は、半角英文字のみで入力して下さい。");
return 1;
}
return 0;
}
/* 半角数字チェック */
function NumberCheck() {
var str = document.iform.AgeText.value;
if( str.match( /[^0-9]+/ ) ){
alert("年齢は、半角数字のみで入力して下さい。");
return 1;
}
return 0;
}

via:タイトルを入力

で、これだと関数が別になっているので、少し変更しました。

function gf_Hankaku(aVal){
if(aVal.match(/[^0-9A-Za-z]+/) == null){
return true;
}else{
return false;
}
}

上のファンクションは、引数が半角英数字の場合、trueを返し、それ以外が入力された場合、falseを返します。

同サイトによると[0-9]は、0~9の文字で、[a-z]は、小文字のa~z、[A-Z]は、大文字のA~Zまでのことを表現するみたいです。

さらに、[^]は後ろに続く文字以外を表現するそうなので、[^0-9A-Za-z]と書くことができて、「+」の記号ですが、ここのサイトを参考にすると、直前の文字が最低一個ないといけないということです。

なんとかかんとか、作成することができました。

正  規  表  現|おー+い
----------------------------------------------------
検索できる文字列の例|おーい おーーい おーーーーい

via:サルにもわかる正規表現入門

2008/09/01

[oracle]10gのJ2SEのバージョンは、1.4

前回、oracle9iは、JDKのバージョンが1.3.1と書いたのですが、10gは、ここの「Oracle Database 10gにおけるJava DB、JDBCおよびDatabase Web Servicesの新機能」を参考にすると、J2SEのバージョン1.4をサポートしていると書かれていたので、J2SDKもバージョン1.4がoracleにインストールされているのかもしれません。