2008/03/31

[google map]mapが表示されないとき

この前、久々に新規の画面で、google mapを使おうとページを作ってみたら、エラーが発生しちゃいました| ̄ω ̄、|

文法も正しいのに、なぜかなーと思っていろいろ試行錯誤をしていたら、なんと、エンコードが日本語(シフトJIS)なのが原因でした。(。>0<。)
(気付かねー)

Unicode(UTF-8)じゃーないと、JavaScriptが動かないみたいです。

で、一回、一回、ページを開くたびに、エンコードしていくのもメンドクサイので、

<meta http-equiv="content-type" content="text/html; charset=utf-8"/>

で回避することができました。

意外と忘れがちなバグの原因なので、書いちゃいました。

2008/03/30

[本]ついにゲット!!Structure and Interpretation of Computer Programs

体系的にプログラミングを勉強したいと思っていたときに、小飼さんの(いい本)というエントリーで、schemeの本が紹介されていて、すっげー本だーと思い、いつかゲットするぞーと胸に秘めながら毎日を過ごし、ようやく、ようやく、ゲットすることができました♪(* ̄ー ̄)v

StructureandInterpretationofComputerPrograms

超ほしかった本だけに、思わず写真を撮ってしまいました。

タイトルは、Structure and Interpretation of Computer ProgramsというLisp系の言語であるschemeを解説した本で、wikipediaによると、アメリカの大学のプログラミングの授業に使われている名著と書かれていました。

マジヤバイ本なので、気合を入れて勉強したいと思います。

目次
1.Building Abstractions with Procedures
2.Building Abstractions with Data
3.Modularity, Objects, and State
4.Metalinguistic Abstraction
5.Computing with Register Machines

via:Structure and Interpretation of Computer Programs


2008/03/29

ついに夢が叶いました。人気のあるGoogleガジェット開発者 TOP6にランクイン

ヤター、まじで!!、までじで!?
これは、本当なのだろうか???
なんと、なんと、ついに、ついに、ガジェット開発者のTOP6にランクインしました(。>0<。)

この日をどれぐらい待ち望んでいたか(T_T)

まさか、まさか、ここまでこれるとは!!

あまりにもうれしすぎて、また、画像を撮っちゃった(^▽^)/

top6_01

これだと、見えにくいので、ちょい拡大

top6_02

さらに、どーん

top6_03

まじで超うれしいんだけどーo(*^▽^*)o~♪

いつもガジェットを使っていただいている方に、本当にありがとうございます。
皆様のおかげで、こうしてランクインできたのだと思っております。

ここで止まってはいけないと思い、ひらすらトライ&エラーで、ドンドン成長していきたいなと思います。
これからも応援どうか一つよろしくお願いいたします。

googleさんも、また評価していただきありがとうございます♪(* ̄ー ̄)v

2008/03/28

[oracle]また、これキタ!!ORA-03114発生(その2)

昨日の記事で、「アラートファイルとはなんぞや?」ということについて書きました。

アラートファイルを開いてみると、ORA-03114とは違う、エラーコードが書かれていました。

で、書かれていた、コードでぐぐってみると、無事にエラーの内容を特定することができて解決できました。

今回は、ORA-03114の時に解決しましたが、ここを見ると、ORA-03113の場合でも同じように解決できるかもしれません。

だって、原因と、措置で書かれていることが同じなんだもんゞ( ̄∇ ̄;)

原因:
クライアント・プロセスとサーバー・プロセスの間の接続が切断されました。 このエラーは、なんらかの理由で外部エージェントextprocがクラッシュした場合にも発生することがあります


via:ORA-03113: 通信チャネルでend-of-fileが検出されました


措置:
通信エラーがありました。さらに調査する必要があります。 最初に、ネットワークの問題の有無をチェックし、SQL*Netの設定を確認します。また、alert.logファイルでもエラーの有無を調べてください。


via:ORA-03113: 通信チャネルでend-of-fileが検出されました

2008/03/27

[oracle]アラートファイルとは

昨日の日記の最後に、「アラート ログ ファイル」という言葉が出てきたので、ちょっと調べてみました。

SearchManのOracle10gのログイン、起動停止、アラートログを知っておくによると、

<4.アラートログ>
オラクルで色々な作業をしていて、何かエラー等が発生した場合は、アラートログをはきます。
なにか、うまくいかない場合は、まずはこのファイルをチェックしてみましょう。
<私の場合>
C:\oracle\product\10.1.0\admin\orcl\bdump\alert_orcl.log
にありました。
alert.log という名前で記録されていますので、見つからない場合は、検索してみましょう。

via:Oracle10gのログイン、起動停止、アラートログを知っておく

と書いてありました。

つまり、何か重大なエラーが発生した場合、オラクルが吐き出すファイルのことだったんだー。

さらに続きがあって、

●その中身は、いわゆる
ORA-XXXXというエラーなどやメッセージが入っていますので、
そのログを確認しながら、トラブルには対処していきましょう。

via:Oracle10gのログイン、起動停止、アラートログを知っておく

と書いてありました。

というわけで、似たようなディレクトリにあるだろうと思って探したら、本当にファイルがありました。

しかも、中を見ると、エラー内容がはっきりと書いてありました。

特定できないエラーが発生した場合は、今度から、アラート・ログ・ファイルを見たいと思います。

2008/03/26

[oracle]また、これキタ!!ORA-03114発生(その1)

家で、開発をしていたら、下のエラーが発生しました。

ORA-03114: Oracleに接続されていません。

はい??
さっきまで、めっちゃ、接続していたじゃん!!
「なんでだよ」と突っ込みを入れつつ、ぐぐってみると、
下のページに

原因:
クライアント・プロセスとサーバー・プロセスの間の接続が切断されました。 このエラーは、なんらかの理由で外部エージェントextprocがクラッシュした場合にも発生することがあります


via:ORA-03114: Oracleに接続されていません。

と書いてある文章を発見しました。

というか、クラッシュかよヾ(--;)

しかも、これに対する措置が、

措置:
通信エラーがありました。さらに調査する必要があります。 最初に、ネットワークの問題の有無をチェックし、SQL*Netの設定を確認します。また、alert.logファイルでもエラーの有無を調べてください。


via:ORA-03114: Oracleに接続されていません。

と書かれていて、アラートログファイルってなんぞやー( ・◇・)

アラートログファイルという言葉が出てきたので、これに関して別エントリーで書いていきたいと思います。

2008/03/25

[oracle]VIEWのコメントを変更する

VIEWのタイトルを変更する必要があったので、ALTER VIEW~みたいな文章で変わるだろうと調べていたら、なんと、ALTER VIEW文はないというじゃぁーないですか(-。-;)

(注意)ALTER VIEWというコマンドはありません。

via:ビューを使ってデータを検索するメリットについて

で、どうすれば、いいのかなーと先輩社員に相談したところ、下のCOMMENT文で変更できるそうです。

COMMENT ON TABLE VIEW名 IS '変更したいタイトル' /

実際に、ISの後を変更したいVIEWのタイトルにしたら変更することができました。

一件落着、一件落着

2008/03/24

[google map]マーカーを追加する

新卒者の会社説明会の際に、本社が秋葉原に近くて、近辺のお店も紹介しようとgoogle mapにマーカーをつけました。

で、せっかくその時にマーカーのつけ方を覚えたので、ブログに残したいと思います。

今日は、簡単なマーカーのつけ方

google maps apiより

var  map  =  new  GMap2(document.getElementById("map_canvas"));
map.setCenter(new  GLatLng(37.4419,  -122.1419),  13);  
//  地図のランダムな場所に10個のマーカーを追加します
var  bounds  =  map.getBounds();
var  southWest  =  bounds.getSouthWest();
var  northEast  =  bounds.getNorthEast();
var  lngSpan  =  northEast.lng()  -  southWest.lng();
var  latSpan  =  northEast.lat()  -  southWest.lat();
for  (var  i  =  0;  i  <  10;  i++)  {
    var  point  =  new  GLatLng(southWest.lat()  +  latSpan  *  Math.random(),
                southWest.lng()  +  lngSpan  *  Math.random());
  map.addOverlay(new  GMarker(point));
}

via:googleMapAPIマーカー

と書かれていたので、今回は、特定の場所に一つのマーカーを追加する方法を書きたいと思います。

実装例はこちら

<DIV  id="map_9"  style="width:350px;  height:350px;"></DIV>
<SCRIPT  type="text/javascript">
    var  map9  =  new  GMap2(document.getElementById("map_9"));
    map9.setCenter(new  GLatLng(35.45492,  139.631445),  13);
    var  point  =  new  GLatLng(35.45492,  139.631445);
    map9.addOverlay(new  GMarker(point));
</SCRIPT>


実行結果はこちらになりました。


2008/03/23

[google map]地図の縮尺まで追加可能

APIを読んでいたら、地図の縮尺まで、追加可能と書かれていました。

var map = new GMap2(document.getElementById("map"));
map.addControl(new GScaleControl());

via:Google マップ API

実装します!!

<DIV  id="map_7"  style="width:350px;  height:350px"></DIV>
<SCRIPT  type="text/javascript">
    var  map7  =  new  GMap2(document.getElementById("map_7"));
    map7.setCenter(new  GLatLng(35.45492,  139.631445),  13);
    //  地図の縮尺を表示
    map7.addControl(new  GScaleControl());
</SCRIPT>

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



確かに地図左下に縮尺が表示されました。

さらに、ドラッグ/ズームコントロールを装備すると、地図の縮尺が変更すると同時に
縮尺表示も変更されます。

試しにソースを下に貼り付けました。

<DIV  id="map_8"  style="width:  450px;  height:  450px"></DIV>
<SCRIPT  type="text/javascript">
  var  map8  =  new  GMap2(document.getElementById("map_8"));
  map8.setCenter(new  GLatLng(35.45492,  139.631445),  13);
  //  地図の縮尺を表示
  map8.addControl(new  GScaleControl());
  //  ドラッグ/ズームコントロールを追加
  map8.addControl(new  GLargeMapControl());
</SCRIPT>


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



地図の大きさを変更すると縮尺表示も変更されました。

ドラッグ/ズームコントロールを追加することにより、現時点でどれぐらいの縮尺図で地図をみているのか判断するには便利だと思いました。

2008/03/22

人気のあるGoogleガジェット開発者 TOP47にランクイン

やったー、この日をどれだけ待ち望んでいたか!!

人気のあるgoogleGadgetの開発者を紹介しているページがあるのですが、なんと、なんと、そこに掲載させていただくことができました♪(* ̄ー ̄)v

やっと、やっと、やっと、掲載できた!!
超うれしいよ!!
ホント、ホントにうれしいよ♪
思わず、うれしすぎて嫁に飛びつきたいんだけど、いびきかいて寝ているから、秘かに一人で喜びます。

これも一重にガジェットを使って頂いている皆様のおかげだと思っております。

最初、会社でスレイプニルを禁止させられて、仕事中のIEの不自由さをカバーするために、必要なガジェットを作っていったのですが、使っていただいている方がいて、本当にうれしいです(^ー^* )フフ♪

これからも、ドンドン、いいアプリを作っていけるように日々精進していきたいと思いますので、本ブログと同様、ガジェットの応援どうか一つよろしくお願いいたします。

ちなみに、こちらに載りました。

うれしすぎて、思わず、画像を撮ってしまいました。

top47_01

ちょっと見にくいので、下の部分をズーム!!

top47_02

さらにズームみたいな

top47_03

googleさんも掲載していただきましてありがとうございます|* ̄∇ ̄|

2008/03/21

[google map]マップタイプの追加

先週、新卒者の会社説明会で、google mapを使ってプレゼン資料を作りました。

で、その時に、いろいろな機能を追加したので、忘れないようにブログに残しているのですが、今日は、同じコントロールでも地図そのものを変更させるGMapTypeControl()の紹介!!

このコントロールを追加することで、「地図モード」と「航空写真モード」との切り替えができます。

var map = new GMap2(document.getElementById("map"));
map.addControl(new GMapTypeControl());

via:Google マップ API

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

<DIV  id="map_6"  style="width:  250px;  height:  150px"></DIV>
<SCRIPT  type="text/javascript">
    var  map6  =  new  GMap2(document.getElementById("map_6"));
    map6.setCenter(new  GLatLng(35.45492,  139.631445),  13);
    //  地図タイプの変更ができるコントロールを追加する
    map6.addControl(new  GMapTypeControl());
</SCRIPT>


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


2008/03/20

[google map]ドラッグ/ズームコントロールを装備(大きい版)

昨日に引き続きコントロールの紹介。
今日は、google mapに大きいドラッグ/ズームコントロールを追加する方法。

google maps API Japanより、

var map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());

via:Google マップ API

から、昨日と違うのはGSmallMapControlからGLargeMapControlに変わったこと。
実装しました。

<DIV id="map_5" style="width: 250px; height: 150px"></DIV>
<SCRIPT type="text/javascript">
  var map5 = new GMap2(document.getElementById("map_5"));
  map5.setCenter(new GLatLng(35.45492, 139.631445), 13);
  // ドラッグ/ズームコントロールを追加する
  map5.addControl(new GLargeMapControl());
</SCRIPT>

下が実行結果です。


2008/03/19

[google map]ドラッグ/ズームコントロールを装備(小さい版)

google mapに小さいドラッグ/ズームコントロールを追加する方法
google maps API Japanより、

var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());

via:Google マップ API

と書かれていたので、試しに書いてみました。

<DIV id="map_4" style="width: 250px; height: 150px"></DIV>
<SCRIPT type="text/javascript">
  var map4 = new GMap2(document.getElementById("map_4"));
  map4.setCenter(new GLatLng(35.45492, 139.631445), 13);
  // ドラッグ/ズームコントロールを追加する
  map4.addControl(new GSmallMapControl());
</SCRIPT>

下が実行結果です。


2008/03/18

[blogger]google mapを使う方法

google map APIについてちょくちょく書いていたのですが、肝心の、Bloggerでgoogle map APIを使う方法を書いていなかった(ノ△・。)

まず、google map APIに突入。

MAPを使うために、BlogのURLをここに入力
(その際に、「利用規約を読んだ上でこれに同意します」にチェックを入れる)
するとキーが発行されます。

Bloggerのレイアウトの「HTMLの編集」という項目で、<head>タグの直下に

<script src='http://maps.google.com/maps?file=api&v=2&key=発行したキー' type='text/javascript'/>

を入力して、「テンプレートの保存」を押して終了!!

2008/03/17

[blogger]「最近のコメント」を作成する

今日は、「最近のコメント」欄の作り方について。

実は、「最近のコメント」を作る際に、手っ取り早く作りたくて、いろいろとぐぐった結果、clmemo@akaさんの@ Blogger Beta に「最近のコメント」を付けるというエントリーを読んで、書いてある通り作成しようかなと思ったのですが、一つだけ、どーしても納得できない部分があって、それは、設定方法の4番目にあった、

http://○○.blogspot.com/feeds/comments/summary

via:@ Blogger Beta に「最近のコメント」を付ける

という部分なんですけど、どうやって上のURLを発見したのか??

Blogger APIを見ても書かれていなかったんですよ。

すごく疑問に思ったので、上のURLの代わりに昨日紹介したコメントの取得先URLを使って、「最近のコメント」欄を作成しました。

後は、全部、同じようにして作りました。

最後にclmemo@akaさんのエントリーを引用して閉じたいと思います。
(実際、4のurlをhttp://www.blogger.com/feeds/blogID/comments/defaultに変更して作りました。)

設定方法
1.Blogger 管理画面から Template > Page Elements。
2.サイドバーの「Add a Page Element」をクリックして「Choose a New Page Element」をポップアップさせる。
3.「Feed - Add content from a site feed to your blog.」を「ADD TO BLOG」する。
4.Feed URL に「http://○○.blogspot.com/feeds/comments/summary」を入力 (○○ の部分は自分のブログに合わせて変えて下さい) して「CONTINUE」。
5.フィードの設定 (表示するコメントの数、日にち、コメントした人の名前) をして「SAVE CHANGES」。

via:@ Blogger Beta に「最近のコメント」を付ける

2008/03/16

[blogger]コメントを取得する

今日は、コメントの取得方法

Blogger APIのRetrieving commentsより、コメントの取得方法は、下記のようになっているそうです。

http://www.blogger.com/feeds/blogID/comments/default

via:Retrieving comments

そこで、前回紹介したblogIDの取得方法より、

http://www.blogger.com/feeds/6706588588941097934/comments/default

とurlを叩くと、確かに、feedを取得することができました。

Blogger APIから取得できるfeedの一部は下のようになっています。

<feed  xmlns="http://www.w3.org/2005/Atom"  xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">
    <id>tag:blogger.com,1999:blog-blogID.postpostID..comments</id>
    <updated>2007-04-04T21:56:29.803-07:00</updated>
    <title  type="text">My  GData  Blog  :  Time  to  relax</title>
    <link  rel="alternate"  type="text/html"  href="http://blogName.blogspot.com/2007/04/first-post.html"/>
    <link  rel="http://schemas.google.com/g/2005#feed"  type="application/atom+xml"  href="http://blogName.blogspot.com/feeds/postID/comments/default"/>
    <link  rel="self"  type="application/atom+xml"  href="http://blogName.blogspot.com/feeds/postID/comments/default"/>
    <author>
        <name>Blog  Author  name</name>
    </author>
    <generator  version="7.00"  uri="http://www2.blogger.com">Blogger</generator>
    <openSearch:totalResults>1</openSearch:totalResults>
    <openSearch:startIndex>1</openSearch:startIndex>
    <entry>
        <id>tag:blogger.com,1999:blog-blogID.post-commentID</id>
        <published>2007-04-04T21:56:00.000-07:00</published>
        <updated>2007-04-04T21:56:29.803-07:00</updated>
        <title  type="text">This  is  my  first  comment</title>
        <content  type="html">This  is  my  first  comment</content>
        <link  rel="alternate"  type="text/html"  href="http://blogName.blogspot.com/2007/04/first-post.html#commentID"/>
        <link  rel="self"  type="application/atom+xml"  href="http://blogName.blogspot.com/feeds/postID/comments/default/commentID"/>
        <link  rel="edit"  type="application/atom+xml"  href="http://www.blogger.com/feeds/blogID/postID/comments/default/commentID"/>
        <author>
            <name>Blog  Author  name</name>
        </author>
    </entry>
</feed>

via:Retrieving comments

で、今回紹介したurlを使って、「最近のコメント」を取得することができるのですが、ちょっと今回の記事が長くなってしまったので、明日の記事に書きたいと思います。

2008/03/15

[blogger]blogIDの取得方法

昨日に引き続き、今日は、blogIDの取得方法

実は、blogIDは、「ユーザーのプロフィール」のfeed取得時に一緒に取得できるんですね~(ノ゚ο゚)ノ

下のurlで「ユーザーのプロフィール」を取得することを昨日、紹介しました。

http://www.blogger.com/feeds/userID/blogs

via:Retrieving a list of blogs

そして、返ってくるfeedの一部は下のような形であることも紹介しました。

<entry>
    <id>tag:blogger.com,1999:blog-blogID.post-postID</id>
    <published>2006-08-02T18:44:43.089-07:00</published>
    <updated>2006-11-08T18:10:23.020-08:00</updated>
    <title  type='text'>Lizzy's  Diary</title>
    <summary  type='html'>Being  the  journal  of  Elizabeth  Bennet</summary>
    <link  rel='alternate'  type='text/html'
        href='http://blogName.blogspot.com/'>
    </link>
    <link  rel='http://schemas.google.com/g/2005#feed'
        type='application/atom+xml'
        href='http://blogName.blogspot.com/feeds/posts/default'>
    </link>
    <link  rel='http://schemas.google.com/g/2005#post'
        type='application/atom+xml'
        href='http://www.blogger.com/feeds/blogID/posts/default'>
    </link>
    <link  rel='self'  type='application/atom+xml'
        href='http://www.blogger.com/feeds/userID/blogs/blogID'>
    </link>
    <link  rel='edit'  type='application/atom+xml'  
            href='http://www.blogger.com/feeds/userID/blogs/blogID'>
    </link>
    <author>
        <name>Elizabeth  Bennet</name>
        <email>liz@gmail.com</email>
    </author>
</entry>

via:Retrieving a list of blogs

上のソースに、<id>タグ内の、blog-blogIDと書かれている部分があって、実は、これが、blogIDなんですね。

実際に、試してみると、まず、

http://www.blogger.com/feeds/15582066012717102627/blogs

で、feedを取得後、中身を見ると、

<entry>
  <id>tag:blogger.com,1999:user-917925778175.blog-6706588588941097934</id>
  <published>2008-01-29T23:44:50.862+09:00</published>
  <updated>2008-03-13T09:23:04.295+09:00</updated>
  <category scheme='http://www.blogger.com/atom/ns#' term='word'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='prototype.js'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='coldfusion-addon'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='googleGadget'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='music-ranking-top5'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='映画ランキングtop5'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='JSON'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='googlToolbar'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='設計書'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='IT用語'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='html'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='自己紹介'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='css'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='asp'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='GoogleCodeProjectHosting'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='amazonサーチウィジット'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='ajax'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='iGoogle'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='メモメール'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='online-powerpoint-template'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='GoogleGroups'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='googleMaps'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='goo辞書'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='oracle'/>
  <title type='text'>Bugle Diary</title>
  <summary type='html'>Bugle Diary</summary>
  <link rel='alternate' type='text/html' href='http://temping-amagramer.blogspot.com/'/>
  <link rel='http://・・・' type='application/atom+xml' href='http://・・・'/>
  <link rel='http://・・・' type='application/atom+xml' href='http://・・・' />
  <link rel='self' type='application/atom+xml' href='http://・・・'/>
  <author>
    <name>maito</name>
  </author>
</entry>

と書かれていて、確かに、<id>タグ内にblog-6706588588941097934という部分があって、blogIDが、「6706588588941097934」ということが判明しました。

次回は、取得したblogIDを使って、投稿されたコメントの取得方法について書きたいと思います。

2008/03/14

[blogger]userIDの取得方法

少し前に、ブログに、「最近のコメント」欄を追加したのですが、その際に、Blogger Data APIを使う必要があったので、そこで、仕入れた情報を書いていきたいと思います。

まず、今日は、userIDの取得方法。
APIを見ると、userIDは、「ユーザーのプロフィール」のurlの最後の部分になっているそうです。

http://www.blogger.com/profile/userID

via:Retrieving a list of blogs

実際に自分ので確認してみると、確かに、最後にuserIDがありました。

blogger_No001

そして、userIDを使って、「ユーザーのプロフィール」のfeedを取得することができます。

http://www.blogger.com/feeds/userID/blogs

via:Retrieving a list of blogs

取得した、feedの一部は、下のようになっているそうです。

<entry>
    <id>tag:blogger.com,1999:blog-blogID.post-postID</id>
    <published>2006-08-02T18:44:43.089-07:00</published>
    <updated>2006-11-08T18:10:23.020-08:00</updated>
    <title  type='text'>Lizzy's  Diary</title>
    <summary  type='html'>Being  the  journal  of  Elizabeth  Bennet</summary>
    <link  rel='alternate'  type='text/html'
        href='http://blogName.blogspot.com/'>
    </link>
    <link  rel='http://schemas.google.com/g/2005#feed'
        type='application/atom+xml'
        href='http://blogName.blogspot.com/feeds/posts/default'>
    </link>
    <link  rel='http://schemas.google.com/g/2005#post'
        type='application/atom+xml'
        href='http://www.blogger.com/feeds/blogID/posts/default'>
    </link>
    <link  rel='self'  type='application/atom+xml'
        href='http://www.blogger.com/feeds/userID/blogs/blogID'>
    </link>
    <link  rel='edit'  type='application/atom+xml'  
            href='http://www.blogger.com/feeds/userID/blogs/blogID'>
    </link>
    <author>
        <name>Elizabeth  Bennet</name>
        <email>liz@gmail.com</email>
    </author>
</entry>

via:Retrieving a list of blogs


実際にfeedを取得してみます。

http://www.blogger.com/feeds/15582066012717102627/blogs


すると確かに、同じ内容のfeedが取得できました。

<entry>
  <id>tag:blogger.com,1999:user-917925778175.blog-6706588588941097934</id>
  <published>2008-01-29T23:44:50.862+09:00</published>
  <updated>2008-03-13T09:23:04.295+09:00</updated>
  <category scheme='http://www.blogger.com/atom/ns#' term='word'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='prototype.js'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='coldfusion-addon'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='googleGadget'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='music-ranking-top5'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='映画ランキングtop5'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='JSON'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='googlToolbar'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='設計書'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='IT用語'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='html'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='自己紹介'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='ColdFusion'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='css'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='asp'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='GoogleCodeProjectHosting'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='amazonサーチウィジット'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='ajax'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='iGoogle'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='メモメール'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='online-powerpoint-template'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='GoogleGroups'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='googleMaps'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='goo辞書'/>
  <category scheme='http://www.blogger.com/atom/ns#' term='oracle'/>
  <title type='text'>Bugle Diary</title>
  <summary type='html'>Bugle Diary</summary>
  <link rel='alternate' type='text/html' href='http://temping-amagramer.blogspot.com/'/>
  <link rel='http://・・・' type='application/atom+xml' href='http://・・・'/>
  <link rel='http://・・・' type='application/atom+xml' href='http://・・・' />
  <link rel='self' type='application/atom+xml' href='http://・・・'/>
  <author>
    <name>maito</name>
  </author>
</entry>

次回は、blogIDの取得方法について書いていきたいと思います。
というか既に書いているような気もするのですが。。。
まぁーそこは気にしない、気にしない。

2008/03/13

[google map]getLatLngのコールバック関数を外だし関数にする

GoogleMapApiのサービスセクションのジオコーディングに紹介されているgetLatLngメソッドは、コールバック関数に無名関数を参照していて、関数を外だしにできなかなーと思っていろいろ試してみたらできたので書いてみたいと思います。

まずはじめにAPIに紹介されていたソース

var  map  =  new  GMap2(document.getElementById("map_canvas"));
var  geocoder  =  new  GClientGeocoder();
function  showAddress(address)  {
    geocoder.getLatLng(
        address,
        function(point)  {
            if  (!point)  {
                alert(address  +  "  not  found");
            }  else  {
                map.setCenter(point,  13);
                var  marker  =  new  GMarker(point);
                map.addOverlay(marker);
                marker.openInfoWindowHtml(address);
            }
        }
    );
}

via:[googleMapsApi]ジオコーディング

で、今回問題となっているのは、コールバック関数の

function(point) {
・・・
}

の部分で、これを外だしファンクションに変更

var  map  =  new  GMap2(document.getElementById("map_canvas"));
var  geocoder  =  new  GClientGeocoder();
var  gv_address;
function  showAddress(address)  {
    //グローバル変数にセット
    gv_address = address;
    geocoder.getLatLng(
        gv_address,
        lf_setGmap
    );
}

//経度・緯度を取得後呼ばれる関数
function  lf_setGmap(point)  {
  if  (!point)  {
    alert(gv_address  +  "  not  found");
  }  else  {
    map.setCenter(point,  13);
    var  marker  =  new  GMarker(point);
    map.addOverlay(marker);
    marker.openInfoWindowHtml(gv_address);
  }
}

上の実装方法で、外だしファンクションでいけるはず!!

コールバック関数を外に出して、見た目はよくなったと思います。

addressをいったん、グローバル変数にセットしているのは、経度・緯度取得後、再度、住所を参照したいので、セットしました。

しかも、こうすることで、検索中にテキストの内容が書き換えられても検索元の住所を参照することができます。


 

2008/03/12

[coldfusion]RequestVar function作成

object browserを作っていて、よく、IsDefined関数を使うのですが、毎回、毎回、

<CFIF IsDeined("test")>
  <CFSET hoge = test>
</CFIF>

と書いていくのが、メンドイので、簡単な評価関数を作って、手間を省くようにしました。

評価関数は、下のように実装。

<CFFUNCTION name="RequestVar">
  <CFARGUMENT name="aVar" type="variableName" required="yes">
  <CFSCRIPT>
    var cfv_var = "";
  </CFSCRIPT>
  
  <CFIF IsDefined("#aVar#")>
    <CFSET cfv_var = Evaluate("#aVar#")>
  </CFIF>
  
  <CFRETURN cfv_var>
</CFFUNCTION>

この関数を使うことによって、変数が定義されていようがなかろうが、心配する必要がなくなりました。

丁度、ASPでいうところの、Request.Form()に相当する関数で、変数が定義されていれば、その値を返し、定義されていない場合は、空を返すというもの。

変数に値がある場合と、ない場合で簡単な例を書いてみました。

まずは、値がある場合。
<!--- tmpは、3を返す --->
<CFSET Form.test = "3">
<CFSET tmp = RequestVar("Form.test")>

<CFOUTPUT>#tmp#</CFOUTPUT>

次は、変数が宣言されていない場合
<!--- 定義していないsample変数 --->
<CFSET tmp = RequestVar("sample")>
<!--- ""を返す --->
<CFOUTPUT>#tmp#</CFOUTPUT>

今回、作ったファンクションを、RelatedwithVariables.cfmで、coldfusion-addonにアップロードしました。

勢いよくリファレンスもwikiのHomeRelatedwithVariablesに書いちゃった。

これを使って、ドンドンobject browserを作っていきたいと思います。

2008/03/11

[google map]住所から経度・緯度を検索

google maps apiを使う時に、経度、緯度の情報が欲しい時があります。
そんな時、geocodingで検索をかけて、情報を取得しています。

まず、geocodingにアクセス。
geocoding_01

検索したい場所、住所などを入力。
geocoding_02

すると検索結果がでてきます。
geocoding_05

あらかじめ、経度、緯度を取得しておくと、コーディングで地図を表示する際にレスポンスが早くなるので重宝しています。

2008/03/10

[google map]一つの画面上でgoogle mapを複数表示

最近、goole mapにハマッていて、map APIを使いこなしたいなーという気持ちがフツフツと沸いています。

そこで、ブログにちょくちょく書いていこうかなと思って、エントリー毎に地図を作成したいのですが、
肝心のやり方がわからなくて、そこで今回は、複数の地図を表示する方法について。

単純に、表示したい個数分javascriptのローカル変数を用意して、それぞれにGMap2クラスをセットすればオッケー!!

<SCRIPT src="http://maps.google.com/maps?file=api&v=2&key=abc" type="text/javascript"></SCRIPT>
<SCRIPT type="text/javascript">
function lf_setGMap(){
  var map1 = new GMap2(document.getElementById("map_1"));
  map1.setCenter(new GLatLng(35.45492, 139.631445), 13);
  var map2 = new GMap2(document.getElementById("map_2"));
  map2.setCenter(new GLatLng(35.626169, 139.78152), 13);
}
</SCRIPT>
</HEAD>
<BODY onload="lf_setGMap();">
  <DIV id="map_1" style="width: 250px; height: 150px"></DIV>
  <BR>
  <DIV id="map_2" style="width: 250px; height: 150px"></DIV>
</BODY>



1つ目の写真は、ランドマークタワー、2つ目は、パレットタウンです。

複数表示ができるようになったので、これでガンガン書けるぞー。

2008/03/09

ニュープロジェクト誕生!!

会社説明会のプレゼン資料をhtml、jsで作ったのですが、そもそも、会社説明会の資料にとどめず、他のプレゼン(会社以外)にも今後利用していきたいと思ったので、今回、google codeで新しいプロジェクトを立ち上げました。

その名も、online-powerpoint-templateです。

で、プロジェクトの内容ですが、作ったプレゼン資料の雛形をアップロードしていきます。

wikiのhomeに、thumbnailを紹介しています。

フルスクリーンは、photobucketのpowerpoint-template-fullscreenでも、見ることができます。

2008/03/08

[javascript]クロージャについて

昨日、丁度、会社説明会の資料が完成したのですが、資料に入れるページ数をクロージャで作りました。

そこで、今回、復習の意味をこめて、クロージャについて書いていきたいと思います。

wikipediaによると、クロージャとは

クロージャ (Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。

via:クロージャ
と書かれていて、同記事に、javascriptの例もありました。

function  newCounter()  {
        var  i  =  0;
        return  function()  {  //  無名関数
                i  =  i  +  1;
                return  i;
        }
}
c1  =  newCounter();
alert(c1());  //  1
alert(c1());  //  2
alert(c1());  //  3
alert(c1());  //  4
alert(c1());  //  5


via:クロージャ

と書かれていたのですが、実感がわかないので、実際に上のように、コーディングしてみました。



ボタンをクリックすると、ドンドン数字が増えていくと思います。

これのすごいところは、同じファンクションを呼び出しているのにもかかわらず、変数を再定義(上の場合、変数i)することなく既に宣言された変数を使っているところ。

(おそらくパソコン内のメモリに一番最初に宣言された変数の値が入っているのかと思われる。)

しかも、同じファンクションを別の変数で宣言した場合、同じ関数を使って宣言しているのもかかわらず、あたかも別のファンクションとして、それぞれ独立した値を保持しているところがすごい。

実際にコーディングしてみると、
function  newCounter()  {
        var  i  =  0;
        return  function()  {  //  無名関数
                i  =  i  +  1;
                return  i;
        }
}
c1  =  newCounter();
c2  =  newCounter();
alert(c1());  //  1
alert(c1());  //  2
alert(c1());  //  3
alert(c1());  //  4
alert(c1());  //  5
alert(c2());  //  6ではなく、1になる
alert(c2());  //  7ではなく、2になる

と書いた場合、c1とc2は、それぞれ独立して値を保持します。





クロージャおそるべし。

2008/03/07

[IT用語]プラットフォームとフレームワークの違い

だいぶ前になってしまいましたが、佐藤@変態より

どうでも良いような突っ込みだけど、

prototype.jsはプラットフォームではなく

フレームワーク(ライブラリでも良いか)

じゃない?

via:佐藤@変態さんのコメント...

と最初、記事を書いているときは、両者の違いを意識していなかったのですが、コメントを頂いて気になったので、調べてみました。

IT用語辞典:プラットフォーム

アプリケーションソフトを動作させる際の基盤となるOSの種類や環境、設定などのこと。

via:IT用語辞典:プラットフォーム

IT用語辞典:フレームワーク

ソフトウェアの世界では、アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。アプリケーションの雛型。

via:IT用語辞典:フレームワーク

プラットフォームは、OSで、フレームワークは、プラットフォームで走るアプリを開発する際の共通プログラム集かなと。

といわけで、佐藤@変態が正解で、自分が間違っていました。

ごめんなさい。。。(ノд・。)

こうして突っ込まれないと一生同じ言葉だと思ったまま、年を喰ってしまうので、やはり、突っ込まれ力も大事なんだなーと改めて痛感しました。

2008/03/06

[html][css]textareaの枠線を非表示にする

昨日に引き続き、今日もtextareaのお話。

スクロールバーを非表示にすることはできたのですが、枠線があって、なんだか不恰好。
枠線を非表示にしたいなーと思ってぐぐったら、textareaのstyle属性で、border:noneにすれば非表示にできました。

というわけで、改めてブログで検証

まずは、普通の枠線が表示される状態

<TEXTAREA>枠線が表示されてす。</TEXTAREA>



次は、枠線が非表示になる状態
<TEXTAREA style="border:none;">枠線が非表示になっています。</TEXTAREA>



と枠線を削除することができました。

これに前回のスクロールバーの非表示を組み合わせれば、普通のテキスト表示みたいにできるところが便利かなと。

2008/03/05

[html][css]textareaのスクロールバーを非表示にする

今、会社説明会用の資料をhtmlで作成していて、たまたま、textareaを使いたいと思ったのですが、スクロールバーを非表示するのはどうするのかなーと調べたところ次のようにすれば消せることがわかりました。

<TEXTAREA style="overflow:hidden;">Contents</TEXTAREA>

では、実際、検証してみましょう。

style属性のoverflowの設定がない時
<TEXTAREA >Contents</TEXTAREA>



次はあるとき


確かに消えた(o^∇^o)ノ

2008/03/04

メモメール終了

google gadgetをディレクトリから削除する方法というエントリーでも書いたのですが、去年、googleガジェットコンテストがあって、その時に、無償で展開されていたヘテムルの期間限定coldfusion 8のサーバーを借りて、メモメールを作ったのですが、いつの間にか、レンタル期間を過ぎていたらしく、ガジェットそのものが使えなくなってしまったので、削除しました。

今までお使いいただきましてありがとうございました(●⌒∇⌒●)

2008/03/03

映画ランキングtop5の終了

映画ランキングをいちいち、映画.com映画生活まで行って、見るのがメンドイかったので前に、映画ランキングtop5ガジェットを作ったのですが、ランキングの配給元であるワーナーマイカルが配信を停止してしまったので止む無く、削除することに。。。( ̄□ ̄;)!!

毎週、何がランキングされているんだろうーとものすごく重宝していたガジェットだけに、まじで痛い(ノ◇≦。)

もう一度、配信されないかなー。

2008/03/02

amazon サーチ ウィジット終了

去年、iGoogle上でamazon検索をしたくて、amazon サーチ ウィジットというガジェットを作ったのですが、実際、それより前に作ったminiGoogleでアマゾン検索を行うことの方が多かったので、ガジェットを削除することにしました。

すでに削除要求を出して、googleのdeveloperの方に承諾をしていただいたので、削除されると思います。

今まで本ガジェットをお使いいただきありがとうございました。

2008/03/01

googleToolbarで検索エンジンを追加

会社でfirefoxが使えないので、よくgoogleToolbarにオリジナルの検索エンジンを追加することがあります。

そこで今日の記事は、追加の仕方を書きたいと思います。
例として、googleブック検索をツールバーに追加したい場合を書きたいと思います。

1.追加したい検索エンジンで、検索ボックス上で右クリック「カスタム検索実行」を選択
google_toole_bar_No02

ちなみに、追加する前のtool barの状態はこんな感じです。
google_toole_bar_No01

2.生成ツールを「追加」→「OK」の順で進んでいく
google_toole_bar_No03

必要があれば、上の時点で、タイトルと内容を編集することも可能です。
今回は、このまま「追加」ボタンを押したいと思います。

google_toole_bar_No04

3.「OK」ボタンを押した後、toolbar上に検索エンジンが追加される
google_toole_bar_No05

以上により、ツールバーに検索エンジンを追加されることにより、違うページを開いていたとしても、他の検索エンジンを使って検索を行うことができるようになります。

一例として、画面ではyahooのページを開いている状態で、先ほど追加したgoogleブックで検索をかけたい場合

まずは、yahooを開いている状態で、ツールバーに検索したいキーワードを入力
google_toole_bar_No06

ブック検索ボタンをクリックすると、選択された検索エンジンの結果が表示されます。
google_toole_bar_No07

ちょっとした検索を行いたい時、わざわざ、その検索サイトに行かなくても検索できてしまう点が大きいです。

仕事場で、firefoxが使えない時などに重宝しています。