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

おれろぐ #z_a_ki3

(・∀・) オイ!

ブランク明けでサーブレット・JSPを学び直す

前回の投稿から1年以上のブランクが空いてしまいました(⌒-⌒; )

実は家の諸事情だったり、腰椎間板ヘルニアだったり扁桃腺切除だったりと 色々ありまして全くITのIの字もない生活を送っていました。

ちょっとブランクが空きすぎたのと、実戦に活かせるようにサーバサイドの Javaについて初歩から再学習していきたいと思います。

まずは肩慣らしにスッキリわかるサーブレット&JSP入門をささっと流し読み。

スッキリわかる サーブレット&JSP入門 (スッキリシリーズ)

スッキリわかる サーブレット&JSP入門 (スッキリシリーズ)

ちなみにスッキリシリーズのJava入門は評判がいいので購入してみましたが、 サーブレット&JSP入門も概略を掴むのにいい感じでした。

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)

スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)

開発会社の新人君がWebアプリの開発に挑戦するというストーリーになっていて 他の入門書で挫折した人でも読みやすいかなーという感想ですね。

ただ、基本的にServlet3.0以降のアノテーションベースの設定が基本だったり、 細かい部分までは触れていないので以降は以下の書籍で勉強していきたいと思います。

基礎からのサーブレット/JSP 第3版 (基礎からのシリーズ)

基礎からのサーブレット/JSP 第3版 (基礎からのシリーズ)

独習Javaサーバサイド編 第2版

独習Javaサーバサイド編 第2版

3ヶ月くらいかけて最終的にはSpringフレームワークまで学習していきたいと思います。 もう書籍は購入済みです。

本当はJavaEEも勉強したいところですが…まずはサーブレット&JSPですねー。

Swiftを学ぶ #1

Javaの基礎しか分かってない私がiOSアプリに手を出そうとしてSwiftを学習するログです。
教科書は詳解Swiftです。

詳解 Swift

詳解 Swift

変数

変数には値型、参照型がある。

型名 内容
整数型 Int サイズは実行環境のワード長に依存※
整数型 UInt 符号なし、サイズは実行環境のワード長に依存※
実数型 Float 32bit
実数型 Double 64bit
論理型 Bool リテラルはtrue/false
文字 Character Unicode1文字
文字 UnicodeScalar 文字コード
文字列 String 文字列(変更可能)

※Int/UIntでメモリサイズを意識する場合

型名 サイズ 範囲
Int8 8bit -128 ~ 127
Int16 16bit -32,768 ~ 32,767
Int32 32bit -2,147,483,648 ~ 2,147,483,647
Int64 64bit -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
UInt8 8bit 0 ~ 255
UInt16 16bit 0 ~ 65,535
UInt32 32bit 0 ~ 4,294,967,295
UInt64 64bit 0 ~ 18,446,744,073,709,551,615

Javaと違う点

符号なしのUInt、文字コードのUnicodeScalar、Stringが変更可能である

変数、定数の定義

変数

var [識別子] :[型名]
//その他のスニペット
var age : Int = 18 //型を指定、値で初期化
var age = 18 //初期化値で型を推論(ageは整数型Int)

型を明示せずに整数値を初期値として代入すると推論される型はIntになる。

Javaと違う点

Javaにはvarに相当するスニペットはない。

定数

let [識別子] :[型名]

複数行まとめて記載する場合はセミコロン(;)で区切る。

var myAge = 18; let yukarinAge = 17 // 田村ゆかりは永遠の17才

変数(または定数)をまとめて記載する場合はカンマ(,)で区切る。

var hoge = 1, foo = 2, var = 3

Javaと違う点

Javaはfinalで宣言する。

今日はここまで。

MacでJAVA_HOMEを設定した。

以下、備忘録。

MacApple JDK 6 と OracleJDK1.8 が共存してる環境。
この記事を参考に .bash_profile に設定。

qiita.com

export JAVA_HOME=`/usr/libexec/java_home`
# Java SE 1.8を指定したい場合は -v オプションを指定する。
# export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

java_homeコマンドはこちらを参考に

etc9.hatenablog.com

以上

Gitを学ぶ 〜後編〜

zaki3.hateblo.jp

前回に引き続き、クスールさんのGit勉強会後編です。

今日は、複数人リポジトリを触るので実践に近い感じです。

コンフリクトに対応する

共有ディレクトリをクローンする。

$ git clone [URL]

コンフリクトを起こすために一旦、ローカルリポジトリにコミットする。

$ git add [ファイル名]

リモートリポジトリの同じファイルを講師の方が編集、コミット、プッシュする。
※これでコンフリクトが発生する。

ローカルリポジトリをプッシュする。

$ git push

するとリジェクトが発生します。

To http://.../....git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'http://.../....git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

ローカルのリポジトリをリモートの最新で更新する。

$ git pull

更新した際、コンフリクトが発生した場合、以下のように挿入される。

<<<<<<< HEAD
自分の変更箇所
=======
既にPUSHされている変更箇所
>>>>>>> [コミットID]

これを適宜、修正してコミットしてプッシュすればOK!

ブランチ

現在のブランチを見る

$ git branch

新規のブランチを作る

$ git branch [ブランチ名]

git branch で確認する

$ git branch
* master
  [ブランチ名]

作ったブランチに切り替える

$ git checkout [ブランチ名]

こんな感じに表示される

Switched to branch '[ブランチ名]'
$ git branch
  master
* [ブランチ名]

リモートブランチにプッシュする場合は

$ git push origin [リモートでのブランチ名]

リモートリポジトリから変更を取得するが、マージしない。

$ git fetch

※pullはfetch+mergeのようなもの(同じではない)

マージする。

$ git checkout [マージ先]
$ git merge [マージ元]

マージする時は作業ブランチにmasterブランチの変更を取り込んで、
確認してからマージするのがオススメ!

(ローカル)ブランチを削除

$ git branch -d [ブランチ名]

(リモート)ブランチを削除

git push --delete origin [リモートブランチ名]

Tips

コミットの修正(プッシュ前)

直前のコミットコメントを修正する

$ git commit --amend

※デフォルトのエディタが開くので修正、上書きすればOK

直前のコミット漏れがあった場合に追加する

$ git commit --amend [ファイル名]

コミットを打ち消す

$ git revert [コミットID]

色々なかった事にする!!

reflogで作業履歴を確認する。

$ git reflog
f015603 HEAD@{0}: revert: Revert "追加した!"
e866524 HEAD@{1}: commit: 追加した!
88cd3af HEAD@{2}: commit (amend): 修正完了
4e75819 HEAD@{3}: commit (amend): 修正完了
9cfcd32 HEAD@{4}: reset: moving to HEAD^
70b81c8 HEAD@{5}: commit: mend
9cfcd32 HEAD@{6}: commit: 修正かんりょう

resetでhardオプションを指定して過去に戻る

git reset --hard HEAD@{2}

対象外のファイルを指定

ルートディレクトリに .gitignore ファイルを作成して、指定する。

# hoge.txt ファイルを対象外にする場合
hoge.txt
# hoge ディレクトリを対象外にする場合
/hoge

ちなみに各言語などで標準的な.gitignoreはgithubで公開されてます。

github.com

先生の秘伝のタレ

https://gist.github.com
プライベートになってるので興味のある方は参加してみて下さい( ´ ▽ ` )ノ

Gitは必要不可欠だし、もう少し理解を深めたら、会社で勉強会開催してみようかな。

Gitポケットリファレンス

Gitポケットリファレンス

[PR]クスールさんの勉強会

cshool.connpass.com

cshool.connpass.com

cshool.connpass.com

cshool.connpass.com

cshool.connpass.com

Gitを学ぶ 〜前編〜

きっかけ

!超初心者向けです!

Git流行ってるし、色々な所で勉強会をやってて、そろそろ本格的に
覚えたいなと思ったところでクスールさんで勉強会があると聞いて
早速申し込んでみました。

cshool.connpass.com

はじめに

Gitの状態は以下の3つの状態がある。

  • 作業ツリー(ワーキングツリー)
  • インデックス
  • ローカルリポジトリ

習ったコマンド

ローカルリポジトリ

初期化(ローカルリポジトリ作成)

git init

ファイル追加(作業ツリーからインデックス)

git add [ファイル名]

複数のファイルを追加する場合

git add [ファイル1] [ファイル2] [ファイル3]

すべてのファイルを追加する場合

git add .(ドット)
# 削除したファイルを含める場合
git add --all

フォルダ構成だけ先に作成する場合、空のフォルダは追加できないので 慣習的に .gitkeep という空のファイルを作成して追加する。

ファイルを削除する場合

git rm [ファイル名]

コミット(インデックスからローカルリポジトリ

git commit -m "コミットメッセージ"

ファイル追加の取り消し

git reset [ファイル名]

(直前の)コミットの取り消し

# 作業ツリーまで戻る
git reset HEAD^
# インデックスまで戻る
git reset --soft HEAD^

HEAD^はHEAD(先頭)の一つ前ということらしい。

ここに詳しいのがあった。 tech.aainc.co.jp

リモートリポジトリ編

リモートリポジトリと紐付け

git remote add origin [URL]

今はoriginは魔法の言葉とするが、リモートリポジトリと考えてよいらしい。
originを別名に変えることはできるが、滅多にない。

URLを間違えた場合はこんな感じで

tetsuyai.hatenablog.com

プッシュ

git push origin master

リモートリポジトリからローカルリポジトリを作成する。

git clone [URL]

ローカルリポジトリを最新にする。

git pull origin master

各状態間の差分を見る。

作業ツリーとインデックス

git diff

インデックスとリポジトリ(HEAD)

git diff --cached

作業ツリーとリポジトリ(HEAD)

git diff HEAD

resetの時は最新の一つ前なのでHEADの後に^をつけたけど、
diffは最新と比較するので^はいらない。

今日はここまで!!

予習資料

もっと早く知りたかった! Gitが鬼のようにわかるスライド厳選7選 | Find Job ! Startup

更新

正しい用語に修正(作業ディレクトリ→作業ツリー)

OCJP Gold SE 7 受験に向けて

先日、何とかSilverは取得できましたが、Goldまで取れてようやく
Javaチョットデキル人だと思うので頑張ります。

前回の反省を活かして、しっかり勉強します。

とりあえず、教本はこれを使いたいと思います。

www.shoeisha.co.jp

と言ってもまだ購入してません\(^o^)/

前回、Silverを受験する際に使用した紫本は初版で間違えが多かったです。
Goldも同様なので、今回は2刷である事を確認して購入したいと思います。
(地元の本屋はあんまり売れてないのか、1刷でした。)

Java SE 7 Programmer II の試験範囲

http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-804&p_org_id=70&lang=JA より

Javaクラスの設計

アクセス修飾子の使用:private、protected、public
メソッドのオーバーライド
コンストラクタおよびメソッドに対するオーバーロードの適用
instanceof演算子の使用とキャスト
仮想メソッド呼び出しの使用
クラスの機能向上のためのObjectクラスのメソッドのオーバーライド
package文とimport文の使用

高度なクラス設計

抽象クラスの適用方法と適用するタイミングの特定
抽象クラスとサブクラスの作成
staticキーワードとfinalキーワードの使用
最上位レベルとネストクラスの作成
列挙型の使用
オブジェクト指向の設計原理
インタフェースの宣言、実装および継承を行うコードの記述
インタフェースの継承とクラスの継承の選択
is-a関係とhas-a関係を実装するコードの作成
コンポジションの適用
シングルトン・デザイン・パターンを使用したクラス設計
DAOパターンを実装するコードの作成
ファクトリを使用したオブジェクトの設計および作成とAPIからのファクトリの使用

ジェネリックスとコレクション

ジェネリックスクラスの作成
コレクションを作成するためのダイアモンド演算子の使用
従来型とジェネリックス型を使用したコレクションの相互運用性の分析
ラッパー・クラスとオートボクシングの使用
List、SetおよびDequeの作成と使用
Mapの作成と使用
java.util.Comparatorとjava.lang.Comparableの使用
配列とリストのソートと検索

文字列処理

文字列の検索、解析および作成
正規表現を使用した文字列の検索、解析、および置換
書式指定パラメータを使用した文字列の書式化: %b、%c、%d、%f、%s
例外とアサーション
throw文とthrows文の使用
multi-catchのあるtry文とfinally句の使用
try-with-resources文を使用したリソースの自動クローズ
カスタム例外の作成
アサーションを使用した不変量のテスト

Java I/Oの基礎

コンソールからのデータの読み込みと書き込み
ファイルの読み込みおよび書き込みのためのストリームの使用

Java ファイルI/O(NIO.2)

ファイルやディレクトリパス操作のためのPathクラスの使用
Filesクラスを使用したファイルやディレクトリの確認、削除、コピー、および移動
ファイル属性やディレクトリ属性の読み込みおよび変更
ディレクトリ・ツリーの再帰アクセス
PathMatcherクラスを使用したファイルの検索
WatchServiceを使用したディレクトリ変更の監視

JDBCによるデータベース・アプリケーションの作成

JDBC APIのレイアウト定義
JDBCドライバを使用したデータベース接続
データベースへの更新と問い合わせ
JDBCトランザクションの振る舞いのカスタマイズとトランザクションのコミット
JDBC 4.1のRowSetProvider、RowSetFactoryおよびRowSetインタフェースの使用

スレッド

ThreadクラスとRunnableインタフェースの作成と使用
スレッドのライフサイクルの管理と制御
共有データに対するスレッドのアクセスの同期化
スレッドの潜在的な問題の識別
並列処理
java.util.concurrentコレクションの使用
アトミック変数とロックの適用
ExecutorsとThreadPoolsの使用
並列Fork/Joinフレームワークの使用

ローカライゼーション

Localeオブジェクトを使用したロケールの読み込みおよび設定
ロケールのリソース・バンドルの作成
アプリケーションでリソース・バンドルのロード
NumberFormatとDateFormatを使用した国際化対応のテキスト書式設定

やっぱりSilverなんかと比べると圧倒的に難易度と範囲が広くなってますね。
それぞれの項目で試験対策のテキストだけでは無くて、理解を深める必要が
ありそうです。。。

再受験無料キャンペーンが7月中旬までなので、そこまでには何とか挑戦を
してみたいですね!

Goldの学習に関連しそうな書籍

オラクル認定資格教科書 Javaプログラマ Gold SE 7 (EXAMPRESS)

オラクル認定資格教科書 Javaプログラマ Gold SE 7 (EXAMPRESS)

プログラミング言語 Java 第4版

プログラミング言語 Java 第4版

改訂2版 パーフェクトJava

改訂2版 パーフェクトJava

Java 最強リファレンス

Java 最強リファレンス

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

詳説 正規表現

詳説 正規表現

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

OCJP Silver SE 7 合格

今日(もう日付変わっちゃったけど)受験してきました!
結果から言うと、合格ライン63%に対して88%で合格しました!!

去年、新入社員向けのJava研修の講師をしたのである程度、基本的な部分に
ついては理解しているつもりでしたが、実際模試を解いてみると案外漏れがあって
試験当日は全くといっていいほど余裕がありませんでした(笑)

前日は早めに寝て、朝7時に起床、模試で間違えた部分を再度復習して、
試験開始の2時間前に会場近くの漫画喫茶に入って再度復習してました。

自信が無いって言うのは精神衛生上良くないので、やっぱり模試の回数を
こなして高めの正答率になってから受験した方がいいですね。

(期限を決めないとやらないという問題はありますが・・・)

再受験無料キャンペーンは7月まで延期になったので、ちょっと休んだらGold取得を
目標に頑張りたいと思います。

めでたしめでたし。