読者です 読者をやめる 読者になる 読者になる

雑記帳

趣味や仕事の備忘録などを気分で書いてみます

XML CDATAセクション

XMLでCDTATAセクションを扱ったことがなかったのでメモ。

XMLでは「<」や「>」などは実体参照に置き換える必要がある。

CDATAセクションを使用した場合、置き換えが不要となる。

<![CDATA[テキストデータ]]>

沢山置き換えが必要になる場合、CDATAセクションを使用することで記述が楽になりそう。

参考文献はこちら↓

XMLマスター教科書 ベーシックV2

XMLマスター教科書 ベーシックV2

Java SE8 Silver 受験記 その1

先輩からJava SE8 Silverの紫本を頂いたので、資格取得してみようと思います。
先輩は紫本を一周読んだだけで、余裕だったらしい。。。

オラクル認定資格教科書 Javaプログラマ Silver SE 8

オラクル認定資格教科書 Javaプログラマ Silver SE 8

僕はJavaの経験ほとんど無いため、黒本を買い足して、勉強してみることにしました。
徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

とりあえず、紫本、黒本を1周こなして、正解率は約80%でした。
もう一周やれば、行けそうな気がする。

戒めとして、僕がイマイチなことをメモっておきます。

アクセス修飾子

アクセス修飾子 内容
public すべてのクラスからアクセス可能
protected 同一パッケージまたはサブクラスからのみアクセス可能
なし 同一パッケージからのみアクセス可能
private 同一クラスからのみアクセス可能

※interfaceでメソッドのアクセス修飾子を省略した場合はpublicとなる

staticメソッドからの呼び出し

staticで修飾されたメソッドからは、staticで修飾されたもの以外にはアクセスできない。

検査例外と非検査例外

検査例外

例外処理を記述したかどうかをコンパイラが検査する例外
Exceptionクラスのサブクラスは、RuntimeExceptionとそのサブクラスを除いてすべて検査例外である。
Exceptionクラスを継承している例外クラスは、try-catchをしているか、メソッド宣言時にthrows句で宣言しているかのどちらかを強制される。

非検査例外

例外処理を記述したかどうかをコンパイラが検査しない例外
try-catchは強制されない

正規表現

パターン
パターン文字 意味
[abc] a,b,cいずれかの文字
[^abc] a,b,c以外の文字(否定)
[a-zA-Z] aからz、AからZ(範囲)
[a-d[m-p]] aからdまたはmからp(結合)
[a-z&&[def]] d,e,f(交差)
定義済み文字クラス
パターン文字 意味
. 任意の文字
\d 数字[0-9]
\D 数字以外[^0-9]
\s 空白文字[\t\n\xOB\f\r]
\S 非空白文字[^\s]
\w 単語構成文字[a-zA-Z_0-9]
\W 非単語文字[^\w]
数量子
数量子 意味
X? 1または0
X* 0回以上
X+ 1回以上
X{n} n回
X{n,} n回以上
X{n,m} n回以上、m回以下

配列のコピー(arraycopyメソッド)

arraycopyメソッドの引数

引数 説明
第一引数 コピー元となる配列
第二引数 コピー元のどの位置からコピーを開始するか(0始まり)
第三引数 コピー先の配列
第四引数 コピー先のどの位置からコピーを開始するか(0始まり)
第五引数 第二引数の位置からいくつの要素をコピーするか

Oracle ORA-01950でエラー

仕事で使っている開発環境のDBを11gから12cに変更する際に発生したのでメモ。
CREATE TABLEを行う際に、表領域に対する権限がないということで、エラーが発生。

とりあえず、ユーザに対して、UNLIMITED TABLESPACEシステム権限を付与して、回避。

GRANT UNLIMITED TABLESPACE TO USER名

Android android.os.NetworkOnMainThreadExceptionが発生

WebAPIから情報を取得しようと、HTTPリクエストを行うと、android.os.NetworkOnMainThreadExceptionが発生しました。
メインスレッドから外部ネットワークに接続しようとすると怒られるみたいです。
Android3.0以上から?

対策方法としては別スレッドでHTTPリクエストを行う。
AsyncTaskLorder?を使うと良いらしい。
勉強してみます。

Android Studioでの選択範囲のコメント化とコメント化解除方法

VisualStudioみたいに選択範囲をコメントアウトしようとしたら、方法がわからなくて調べたのでメモ。
コメント化とコメント化解除は同じ操作で可能でした。
Javaコード、XMLのどちらに対しても有効でした。

行コメント化(//でコメント)

下記のメニューを実行します。
Codeメニュー⇒Comment with Line Comment
ショートカットキーは

Ctrl + /
ブロックコメント化(/* ~ */でコメント)

下記のメニューを実行します。
Codeメニュー⇒Comment with Block Comment
ショートカットキーは

Ctrl + Shift + /

Android ボタンクリック処理の実装

Androidアプリでボタンクリック処理の実装方法についてメモします。

ボタンに対して、OnClickListnerをセットして、クリックイベントを拾えるようにします。

OnClickListnerインターフェースの実装

クラスの宣言に"implements View.OnClickListener"を追加します。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

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

ボタンにOnClickListnerをセットする

ButtonクラスのSetOnClickListnerメソッドを使用します。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

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

        findViewById(R.id.button1).setOnClickListener(this);
    }
}

OnClickメソッドの実装

ボタンがクリックされるとOnClickメソッドが呼び出されます。
OnClickメソッドの引数のViewでボタンを判別して処理を分けることができます。
下記のコードではクリック時にトーストを表示させます。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

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

        findViewById(R.id.button1).setOnClickListener(this);
    }
}
    @Override
    public void onClick(View aView) {
        switch (aView.getId()) {
            case R.id.button1:
                buttonClick();
                break;
            default:
                break;
        }
    }

    private void buttonClick() {
        Toast.makeText(this, "test", Toast.LENGTH_SHORT).show();
    }
}

AndroidStudioで実機デバッグしようとしたらINSTALL_FAILED_VERIFICATION_FAILUREになった

f:id:yukio_s:20161225233738p:plain

APKインストールに失敗していました。
実機のアンチウィルスソフトのインストールチェック時に不審なアプリケーションとして、インストールがブロックされていました。
一時的にインストール時のチェックを解除してみると、実機デバッグが可能になりました。