初勉強 ― 仲間が書いたソースをよむ

学校の演習で5人のチームでコンビニグルメ検索サイトをつくろうとしています。

演習内容は、
コンビニグルメについて書かれたブログから情報を集めて
検索結果の中で商品の評判として表示するっていうものです。

そこでまず、チームメンバーの一人が書いたソースを見せてもらうことに。。

  • GoogleMapを作成して、地名/住所入力で移動して
  • 学校周辺のコンビニ(数件)の位置を示すマーカーを表示。
  • マーカーがクリックされると吹き出しを表示。

というものらしいのですが…

Webプログラミングの世界に初めて入った私には
JavaScriptが、さっ     ぱり読めなくて、
id:sotarok 先生に教えてもらいました(・ω・)

  var keyGeo ="(APIキー)";
  var keyLocal="(APIキー)";
  
  var reGeo = new RegExp("geocities.jp");
  if ( reGeo.test(window.location.href) ) {
       loadScript(keyGeo);
  }
  else {
       loadScript(keyLocal);
  }

正規表現の用法については、それだけで一冊の本が出てるくらい深いものらしい。
なので、使い方だけ教わりました。

  • 今回は文字列のパターンマッチングに使っている。
  • 上のように生成しない方法
  if ((window.location.href).match(/geosities\.jp/) ) {
       loadScript(keyGeo);
  }
  else {
       loadScript(keyLocal);
  }
  • window.location.href(ウィンドウに表示されているページのURL)これ自体をオブジェクトとして扱える!?
  • matchメソッドでもパターン検索可能
  • /で括ると検索したいパターンが設定できる
  • 使えるメタ文字(X, Y, Zは文字とする)
    • ^XXX ⇒ XXXからはじまる
    • XXX$ ⇒ XXXでおわる
    • [XYZ] ⇒ X, Y, Zのどれかにマッチ
    • YX+ ⇒ Xが1回以上一致
    • YX* ⇒ Xが0回以上一致(+は*ともに最長一致をする)

JavaScriptはイベント駆動型なんだよ
と教わりました。

  <form onsubmit="moveTo(this.place.value); return false;">
  <input type="text" size="40" id="place" />
  <input type="submit" value="移動" />
  </form>
  <div id="map" style="width: 500px; height: 400px"></div>
  • イベントの発生と取得して実行させたい場合に使える。
  • よく使いそうなもの
    • onload ⇒ ロード時
    • onclick ⇒ クリック時
    • onfocus ⇒ フォーカスが得た時
    • onblur ⇒ フォーカスが離れた時
    • onsubmit ⇒ submitボタンが押された時
    • onchange ⇒ フォームが書き換えられてフォーカスが離れた時
    • onkeydown ⇒ キーを押した時
    • onkeypress ⇒ キーを押したままの時
    • onkeyup ⇒ キーを離した時
    • onmouseover ⇒ オブジェクトにカーソルが乗った時
    • onmouseout ⇒ オブジェクトからカーソルが離れた時
  • 上のonsubmitでfalseを返すと、ページ遷移しない。

Java勉強中なので、まだオブジェクト指向は混乱します(;;
また機会があったらJavaScript勉強しますっ。

配列に代入

研究室のパソコンにLinux環境がないので
VMwareっていうのを使えるように頑張ってます。
CentOSのisoをゲットしている間にJavaのおべんきょ(・ω・)

  • 配列

初期化と代入の違いに混乱。。

public class Hairetsu{
  public static void main(String[] args){
    int[] test = {3, 6, 9, 12, 13, 15};

    for(int i = 0; i < test.length ; i++){
      System.out.println("3の倍数か3のつく数字" + test[i]);
    }
  }
}

配列に値を代入するところを

public class Hairetsu2 {
  public static void main(String[] args){
    int[] test = new int[] { 3, 6, 9, 12, 13, 15 };
    for(int i = 0; i < test.length ; i++){
      System.out.println("3の倍数か3のつく数字" + test[i]);
    }
  }
}

にしてみても同じ結果を得られたのですが
よくわからない。。
newでtestっていうオブジェクトを作っているってこと…??
それなら上のように初期化した場合のtestはオブジェクトなのか。。

まだオブジェクト指向のところまで本*1勉強していないので混乱を起こしやすいです(;;

*1:お世話になってるJavaの本

改訂第2版 Java言語プログラミングレッスン (上)

改訂第2版 Java言語プログラミングレッスン (上)