AONEKO × Program × Life -2ページ目

AONEKO × Program × Life

Programer になりたい とあるエンジニア の日記

復習しないし、学校に行く日がまちまちになると、忘れてしまう。
最近は学校の先生がうまい具合に私をいじって、能力を鍛えようとしてくれている(・・・・と思っておくw)ので、なんだか楽しい。

セッション登録することで登録した情報を保持することができる。

①セッションオブジェクトの取得
javax.servlet.http.HttpServletRequest
・getsession(boolean create)
・getsession()

②値の登録と取り出し
javax.servlet.http.HttpServletSession
・setAttribute(String name,Object value)
第一引数がキー、第二引数が値。

・getAttribute(String name)
引数にはsetAttributeで設定したキーを指定し、取り出し。

③セッションの破棄
javax.servlet.http.HttpSession
・invalidate()

●サンプルプロジェクト
SessionCounter.java
public class SessionCounter extends HttpServlet {

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

   response.setContentType("text/html;charset=Shift_JIS");//クライアントから送り返されるレスポンスのコンテントタイプを指定。
   PrintWriter out = response.getWriter();//HTMLコードを出力するためのストリームを確立
   HttpSession session = request.getSession(true);//セッションオブジェクトの取得
   Integer intCount = (Integer)session.getAttribute("count");//引数にはsetAttributeで設定したキーを指定し取り出し。

   out.println("<html><head>");
   out.println("<title>Sessionの利用</title><head>");
   out.println("<body><br><br><div align='center'><br>");

   if(intCount==null){
    out.println("初訪問");
    intCount = new Integer(1);
   }else{
    intCount =new Integer(intCount.intValue()+1);
    out.println("今回で"+ intCount + "回目ですね。<br>");
   }
   out.println("</div></body></html>");
   session.setAttribute("count",intCount);
  super.doGet(request, response);
 }

}

web.xml
<?xml version="1.0" encoding="utf-8"?>

<web-app xmlns="http://java.sun.com.xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2,4">


<servlet>
 <servlet-name>sessionCounter</servlet-name>
 <servlet-class>kenservlet.SessionCounter</servlet-class>
</servlet>

<servlet-mapping>
 <servlet-name>sessionCounter</servlet-name>
 <url-pattern>/sessioncounter</url-pattern>

</servlet-mapping>

</web-app>




今日は会社帰りに学校行って、プログラミングの課題。
帰ってきてから、ゲームしつつオライリー
ディスプレイ漬けだ。

アサーションのおべんきょ。

package oreilly.hcj.review;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class Assertions21 {
 public static void main(final String[] args) {
        helperParseArgs(args);
        Iterator iter = System.getProperties().keySet().iterator();
        for(String key = null; iter.hasNext();){
         key = (String)iter.next();
         assert (key != null);
         System.out.println(key + "=" + System.getProperty(key));
        }
 }

 protected static void helperParseArgs(String[] args) {
  assert (args.length > 0);
  assert (!Arrays.asList(args).contains(null));//引数リストをすべてチェックする、nullがないかどうかを確認する。

  List arglist = Arrays.asList(args);
  Iterator iter = arglist.iterator();
  //ユーザーが引き起こすエラーにはアサーションは使用しない。
  for(String argument = null;iter.hasNext();){
   argument = (String)iter.next();
   if(argument.startsWith("-D")){
    if(argument.length() < 3){
     int idx = arglist.indexOf(argument);
     throw new IllegalArgumentException("引数"+idx+"は文法的に正しい引数ではありません。");
    }
   }
   int valueIdx = argument.indexOf('=');
   System.setProperty(argument.substring(2,valueIdx), argument.substring(valueIdx)+1);
   //システムプロパティが正しく設定されていること。
   assert (System.getProperty(argument.substring(2,valueIdx)).endsWith(argument.substring(valueIdx +1)));
  }


 }

}

P9~13
for文苦手。基礎からだね。

package oreilly.hcj.review;

import java.util.List;
import java.awt.Point;
import java.util.Iterator;
import java.util.*;

public class SyntaxIssues9 {
 public static int[] extracktXCoords(final List points){
  int[] results = new int[points.size()];
  Point element = null;
  //int idx = 0;
  Iterator iter = points.iterator();
  for(int idx = 0 ; iter.hasNext();  idx++){
  
/*  ちょっと複雑だからfor文でまとめちゃおう。
        while(iter.hasNext()){
   element = (Point)iter.next();
   results[idx] = element.x;
   idx++;

*/
  }
  return results;
 }
 public static void main(String args[]){
  System.out.println("正常に動作しました!");
 }

}


package oreilly.hcj.review;

import java.util.List;
import java.awt.Point;
import java.util.Iterator;
import java.util.*;

/*public class ForLoops11 {
 public static void propDump(final Set customeKeys){

   Properties props = System.getProperties();
/*   Iterator iter = props.keySet().iterator();

   String key = "なんだよぉ";

   System.out.println("すべてのプロパティ:");

   while(iter.hasNext()){
    key = (String)iter.next();
    System.out.println(key + "=" + System.getProperty(key));
   }

   System.out.println("カスタムプロパティ:");

   while(iter.hasNext()){
   //key = (String)iter.next();がない。せっかく別のwhile文なのにkeyの中身は最初のwhile文の中身だよ!
    ユーザーがIteratorの設定を忘れた例。
    System.out.println(key + "=" + System.getProperty(key));
   }
*/
public class ForLoops11 {
    public static void forShort(){
      Properties props = System.getProperties();
      for(Iterator iter = props.keySet().iterator();iter.hasNext();){
       String key = (String)iter.next();
       System.out.println(key + "=" + System.getProperty(key));
      }
    }

 public static void main(String args[]){
  System.out.println("正常に動作しました!ForLoops11 ");
 }

}

P73
main.xmlを編集中にエラー

エラー: エラー: No resource found that matches the given name (at 'format' with value '@string/
 chronometer_format').


どうやら@string以降がひっかかるらしい。
リソースがないからか。

とりあえずいい解決方法がないので先に進みます。

P75

string.xml作成
したら。

なんとmain.xmlのエラーがきえたではないか。。。

リソースがないのリソースはアクティビティに記載する文字列のことだったか。

勉強になります。

P75~76

AndroidManifest.xml作成

たて画面に固定。





今日は5時起き! すがすがしいー
昨日の続きからー

・LifeCycle.java修正、実行
・DDMSパースペクティブはデバッグツール郡をまとめたもの。
 ログ参照、検索を行う。
・ActivityManager: 警告: Activity not started, its current task has been brought to the front
すでにエミュレータ上にアクティビティが前に出ていたために起きたエラーと思われる。
・Androidエミュレータの時刻あわせ
・ボタンはandroid.widget.Buttonクラスのオブジェクト、android.widgetパッケージに含まれるクラスであり、android.view.Viewクラスのサブクラスでもある。
java.lang.Object - android.view.View - android.widget.TextView - android.widget.Button
●数字合わせパズルの作成スタート
・main.xmlの編集



仕事だー いってきます
■Androidの特徴
1.AndroidはOSがデータやアプリの連携を強く意識。
2.フォアグランドとバックグラウンドの概念
ユーザーはAndroid端末使用時はすべてフォアグラウンドで受け取るが、フォアグラウンド以外は以外はバックグラウンドで受け取る。
Android端末はPCに比べメモリが少ないためメモリが少なくなると、システムが強制的にフォアグラウンド以外のアプリケーションを終了させる。
■ライフサイクルメソッド
onResume()   ・・・ アクティビティがフォアグラウンドになるときに呼び出せる。
onPause() ・・・ アクティビティがフォアグラウンドになる時に呼び出される。

●LifeCycle.javaの作成

●エラー発生箇所(テキストでは以下のように記載。)
<EditText
 android:id="a+id/familyNameText"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"/>
●エラー内容
この行で見つかった複数の注釈:
- 要素タイプ "EditText" の後に属性指定 ">" または "/>" のいずれかがなけれ
 ばなりません。
- エラー: Error parsing XML: not well-formed (invalid token)

世界の博士たちに聞いて、解決!(テキストよりも頼りになるぅ^^*)

↓以下に修正
   <EditText>
  android:id="@+id/familyNameText"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" </EditText>

だが、ほかの <EditText>記述では以下のように記載しておりエラーもない。

   <EditText
        android:id="@+id/firstNameText"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"  />

そしてfamilyNameText版でも同じように記載したところ、
エラーは出ず・・・

よくわからない。

私の大好きな先生が言う「Eclipseはフリーだから不具合がおきやすい」の良い例、なのかも。
次は次章から。

 

 

 






 

はじめから16ページまで

C++はJAVAと似ているが、ポインタの概念、仕組み、関数の有無が違いと思われる。
簡単な解説書など買う必要があるかもしれない。

・cin  >>で入力
・cout    <<で変数から出力
・endl    改行→画面に出力される






ゲームプログラマになる前に覚えておきたい技術/平山 尚(株式会社セガ)
¥4,725
Amazon.co.jp
ついに買ってしまった。。もう前から気になって気になって、何度本屋で手にとって書棚に戻したことか・・・

とはいっても、C++をやっていたわけじゃないから、サンプルコードからちょびちょびとやっていこうか。
JAVAは現在進行形でやってるからC++なら理解しやすいかも。

この本の面白いところは、ゲームプログラマになりたいけど、勉強のやる気がないうえにC++も初心者っていう人むけってこと。だから大枠から勉強するならちょうどいいかも。


今日は、そのための環境構築。Visual Studio11のインストールおよび更新プログラムの適用実施。