gblog

gememo

たった1日で基本が身に付く! JavaScript超入門 その2

var つけないとグローバル変数になる

◆主なデータ型

  • 文字列型
  • 数値型
  • 真偽型
  • 配列型
  • オブジェクト型:連想配列のことだって

◆主なオブジェクト

  • 組み込みオブジェクト:JavaScriptであらかじめ定義されている
  • ブラウザオブジェクト:ブラウザで取り扱える
  • DOMオブジェクト:HTMLの要素のアクセスができる

◆主な組み込みオブジェクト

  • String
  • Number
  • Boolean
  • Array
  • Object
  • Math
  • Date
  • JSON

で、ここからがポイントで

Sgtring~Objectまでがデータ型と対応していて、文字列型で変数宣言するとStringオブジェクトが持つプロパティやメソッドが利用できると。なんじゃそりゃ。適当な 気の利く言語やな。

 

◆主なブラウザオブジェクト。ブラウザオブジェクトはインスタンス化済み。下記のインスタンス名で直接呼べると。

  • Window:すべてのブラウザオブジェクトの親 [window]
  • Navifator:ブラウザ情報を管理 [navigator]
  • Location:URL情報を管理 [location]
  • History:閲覧履歴を管理 [history]

 

たった1日で基本が身に付く! JavaScript超入門 その1

HTML5の主なJavaScript API

  • Canvas 2D Context:2Dグラフィックの描画
  • Geolocation API:位置情報の取得
  • File API関連:ファイルやディレクトリの操作
  • Web Storage:データの保存
  • Indexed Databese API:key-value型のデータベース
  • WebSocket:双方向通信
  • Web Workers:バックグラウンド処理

サーバーサイドで動くnode.js

JavaScriptの役割

  1. Webアプリケーションの補助的な機能
  2. Ajaxを利用した通信処理
  3. HTML5APIを利用したWebアプリケーションを担う部分
  4. 上記以外の、Webアプリケーションの範囲を超えた部分

 

たった1日で基本が身に付く! Androidアプリ開発超入門 総仕上げ

自分なりの改良含め一旦終わり。

package com.example.g.mybingo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Random;

public class MainActivity extends AppCompatActivity {
    //最大値
    private int maxNumer =10;
    private ArrayList<String> history = new ArrayList<>();

    private EditText maxNumberEditText;
    private Button registerMaxNumberButton;
    private Button nextNumberButton;
    private TextView currentNumberTextView;
    private TextView historyTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        maxNumberEditText = findViewById(R.id.max_number);
        registerMaxNumberButton = findViewById(R.id.register_max_number);
        nextNumberButton = findViewById(R.id.next_number);
        currentNumberTextView = findViewById(R.id.current_number);
        historyTextView =findViewById(R.id.history);

        //最大値を初期設定
        maxNumberEditText.setText(""+ maxNumer);
        //カーソルを最後尾へ
        maxNumberEditText.setSelection(maxNumberEditText.getText().length());

        //最大値を更新する
        registerMaxNumberButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String maxNumberString = maxNumberEditText.getText().toString();
                maxNumer = Integer.valueOf(maxNumberString);
                Log.d("MainActivity", "maxNumer: " + maxNumer);
                //最大値を更新したら履歴をクリアする
                history.clear();
                historyTextView.setText("");
            }
        });

        nextNumberButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                onClickNextNumber();
            }
        });
    }

    //nextNumberButtonがタップされたときの処理
    private void onClickNextNumber(){
        Log.d("MainActivity","onClickNextNumber: " + history.size());

        //全部の目が出たか確認
        if (history.size() == maxNumer){
            Log.d("MainActivity","全部の目が出ました!!");
            history.add("全部の目が出ました!!");
            historyTextView.setText(history.toString());
            return;
        }
        else if (history.size() > maxNumer)
        {
            Log.d("MainActivity","もう終わってます。");
            return;
        }

        int nextNumber = createRandomNumber();

        //重複している数値の場合は、やり直す
        while (history.contains(""+nextNumber)){
            Log.d("MainActivity","重複: " + nextNumber);
            nextNumber = createRandomNumber();
        }

        String nextNumberString = "" + nextNumber;
        currentNumberTextView.setText(nextNumberString);
        //履歴
        history.add(nextNumberString);
        Log.d("MainActivity",history.toString());

        historyTextView.setText(history.toString());
    }

    //maxNumberを考慮したランダムな数値を生成する
    private int createRandomNumber(){
//        double randomNumber = Math.random() * (maxNumer - 1);
//        return (int)randomNumber + 1;
        Random rand = new Random();
        return rand.nextInt(maxNumer) + 1;
    }
}

たった1日で基本が身に付く! Androidアプリ開発超入門 その2

ひさひざのJava

型:小文字で始まるのがデータ型、大文字で始まるのが参照型

キャスト:拡大変換=明示的な型指定が不要

下は上に入る(そのまま入れてキャストできる)

  • double
  • float
  • long
  • int
  • short
  • byte

(まぁこの辺は当たり前田のク)

 

クラスから呼び出せるメソッドをクラスメソッド←staticなメソッド、newせずに呼べるヤツ

変数から呼び出すメソッドをインスタンスメソッド←インスタンスを生成しないと呼べないヤツ

(当然この辺も当たり前田のクラ)

 

インスタンス変数って、初期化しなくても使えるんだー、へぇ。 

 

 

P141のStringのくだり、記載ミスじゃないかなぁ。後者では。

自信なから一旦スティで。

 

たった1日で基本が身に付く! Androidアプリ開発超入門 その1

もぅいろいろ忘れたけど、

Win7 32bitだとエミュレータすらあがらん

 →android studioはギリあがる。単品なら。

・むかーしのNexus 7(2012)あったから奇跡的に実機で検証できた

Nexus 7用のUSBドライバが必要

・画像を出すには、マニフェストファイルに

android:hardwareAccelerated="false"

がいる

 

P44はたぶん記載ミスだな。AVDのアイコンが違う。

Ver差異ではないような気がする…。