よくわからないことを調べて解説してみるブログ。
2015
package june20150623; public class ConstractaDoubleInitializeValue { public static void main(String[] args) { new Parent(); } } class Human { final int age; final static int heigt; // コンパイルエラー!final static 変数は、変数定義時、staticイニシャライザにて初期化が可能。 final static int weight;// final static 変数は、変数定義時、staticイニシャライザにて初期化が可能。 static { weight = 50; } public Human(int age) { this.age = age; // final変数への初期化はコンストラクタでは可能。 } } class Parent extends Human { public Parent() { this(10); age = 20; // コンパイルエラー!final変数への初期化は一度のみ許される。 } public Parent(int age) { super(age); } } class Child extends Human { public Child(int age) { super(age); } }実行結果
Exception in thread "main" java.lang.Error: Unresolved compilation problems:ブランクの final フィールド heigt は初期化されていない可能性がありますfinal フィールド Human.age には代入できませんat june20150623.Parent.<init>(ConstractaDoubleInitializeValue.java:12)at june20150623.ConstractaDoubleInitializeValue.main(ConstractaDoubleInitializeValue.java:6)
PR
2015
・instanceofには2つの記法がある
①( クラスオブジェクト instanceof クラス)
②(インタフェースオブジェクト instanceof クラス)
①においては、クラスオブジェクトがどんな型であっても演算可能だが、
②においては、インタフェースオブジェクトと比較対象のクラスに継承関係か実装関係が無いと、コンパイルエラーになる。
そもそもの目的がサブクラス、クラスであるか、実装クラス、実装クラスのサブクラスであるかを問うためのものである。すなわち、継承関係や実装関係を問えるようなオブジェクトを左辺に指定しなくてはならないのは当然であり、それはコンパイラが検証出来る範囲でもある。
①( クラスオブジェクト instanceof クラス)
②(インタフェースオブジェクト instanceof クラス)
①においては、クラスオブジェクトがどんな型であっても演算可能だが、
②においては、インタフェースオブジェクトと比較対象のクラスに継承関係か実装関係が無いと、コンパイルエラーになる。
そもそもの目的がサブクラス、クラスであるか、実装クラス、実装クラスのサブクラスであるかを問うためのものである。すなわち、継承関係や実装関係を問えるようなオブジェクトを左辺に指定しなくてはならないのは当然であり、それはコンパイラが検証出来る範囲でもある。
2015
管理者はSIerのために、枯れたフロント開発技術を利用しています。
昨今の技術、用語について軽く調べました。
・リアクティブプログラミング
物事にリアルタイムで反応するコードのこと?
・Grunt
JavaScriptベースのタスクランナー(ビルドツール)
・Gulp
Node.jsのStreamAPIを利用したビルドツール
Gruntが抱えるいくつかの問題を解決した。
・MVW(Model-View-Whateverパターン)
「MV*について議論するのは時間の無駄だから、そんな暇があったらコードを書け。MV*の*の部分なんて"Whatever"でいいんだ。」という主張のようです。
・Pivotal Tracker
- アジャイル開発マネジメントをWebサービス化
- 入力項目が少なく、シンプルなワークフロー
- Webブラウザで操作するが、ドラッグ&ドロップで操作できる高い操作性
- Webサービスで提供しているので、インストール不要
- HTTPS接続可能
- 日本語入力可能(ただし、メニューは英語のみ)
- 外部APIから操作可能
- 公共機関、非営利団体、個人利用、教育機関の場合無償で利用可能
Webサービスベースのため、日本の企業システム開発では絶対に許されない。
・Yeomen
WEBアプリケーションビルド・テストツール
今風のWebアプリのための土台/基盤を作ってくれるツール
Grunt、Bower、Yoから成る。Gruntは、JavaScriptベースのタスクランナー
・Slack
チャットアプリ
・マルチレゾリューション
異なる解像度への対応。各スマフォに対応?
・Google Page Speed
Googleが提供するページ表示高速化のアナライザー
・YSlow
FireFoxアドオン。パフォーマンス計測ツール。
・salesForce
CRM(こきゃくかんけいかんり)ソフトの超大手
日本には多くの代理店がいる。しかも代理店業は日本の技術メーカー大手だったり・・・
・FXML
JavaのGUIをXMLで管理する方式。
・Node.js(同類のRhino
サーバサイドJavaScript
サーバサイド処理をJavaScriptの記述法で実装可能にする。
クライアントサイド、サーバサイドの統一言語とし、開発効率を向上させる。
なお、サーバサイドJavaScriptは、CommonsJSという標準仕様に則っている。
Apacheは、スレッドベースであり、リクエスト数=スレッド数であり、
大量アクセス→スレッド大量生成→メモリ枯渇
という障害が発生する。
Node.jsは、イベントループであり、シングルスレッドで動作する。
複数クライアントからのリクエストには、ノンブロッキングI/Oで対応する。
なお、イベントループC10K問題にて話題になった
簡単にいえば、OS上で扱えるプロセス番号の限界に扱えるスレッド数が制限されるという問題。
メリット・デメリット
簡単で大量の送受信を伴う処理に非常に向いている。
スケーラビリティは低い。
複雑な処理の実装には向いていない。
以下に集約されている。
じゃあ具体的にどんな時、node.jsだと嬉しいかというと、「RESTful な API」「Twitter のキュー」「テレビ・ゲームの統計データ」のようなアプリケーションを挙げています。つまり、単純明快な処理だけど、要求の数が膨大になってしまうような事例です。
・ノンブロッキングI/O
データの送受信を待たずに次の処理を行う。
ただし、それぞれの処理ではコールバック関数を設定し、イベント駆動でコールバックを実行する。
■感想
WEB系は企業システムとは異なる問題を抱えている。だから企業システムとは異なる進化を進む。
人の変容が根幹にあるのだから、変化のスピードも速い。
企業システムは、大きな工場と同じで一度作ったら当分は使い続ける。
信頼性、保守性、可用性、機密性を重視する。
両者のビジネスプロセスは根本的に異なる。
2015
・FileChannelは、書き込み時にByteBufferを利用できる。
・ByteBufferは、ファクトリメソッドにより生成するが、allocate,wrapの使い方に違いがある。
・allocateの場合
→実行結果
・ByteBufferは、ファクトリメソッドにより生成するが、allocate,wrapの使い方に違いがある。
・allocateの場合
package june20150623; import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.Path; import java.nio.file.StandardOpenOption; public class FileChannelByAllocated { public static void main(String[] args) { Path path = new File("test.txt").toPath(); try (FileChannel fc = FileChannel.open(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) { ByteBuffer src = ByteBuffer.allocate(10); byte[] bytes = { 't', 'e', 's', 't' }; src.put(bytes); // putのバイト入力によりpositionが進む src.position(0); // 進んだpositionを戻す。 fc.write(src); // write時にpositionから書き込みされる。この仕様は、Javadoc(http://docs.oracle.com/javase/jp/7/api/java/nio/channels/WritableByteChannel.html)にも記載されている。 } catch (IOException e) { e.printStackTrace(); } try (FileChannel fc = FileChannel.open(path, StandardOpenOption.READ)) { ByteBuffer dst = ByteBuffer.allocate(10); fc.read(dst); System.out.println(new String(dst.array())); } catch (IOException e) { e.printStackTrace(); } } }
→実行結果
test・wrapの場合、
package june20150623; import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.Path; import java.nio.file.StandardOpenOption; public class FileChannelByWarpped { public static void main(String[] args) { Path path = new File("test.txt").toPath(); try (FileChannel fc = FileChannel.open(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) { byte[] bytes = { 't', 'e', 's', 't' }; ByteBuffer src = ByteBuffer.wrap(bytes); // wrapの場合、positionは0を維持する。 fc.write(src); // write時にpositionから書き込みされる。この仕様は、Javadoc(http://docs.oracle.com/javase/jp/7/api/java/nio/channels/WritableByteChannel.html)にも記載されている。 } catch (IOException e) { e.printStackTrace(); } try (FileChannel fc = FileChannel.open(path, StandardOpenOption.READ)) { ByteBuffer dst = ByteBuffer.allocate(10); fc.read(dst); System.out.println(new String(dst.array())); } catch (IOException e) { e.printStackTrace(); } } }→実行結果
test
2015
JSTQBシラバス
http://jstqb.jp/syllabus.html
上記サイトでPDFにて、シラバスにいろいろ記載がある。
学習の目的を
K1:記憶
K2:理解
K3:適用
K4:分析
という段階に分けている。
シラバスごとに学習時間を設けており、
・テストの基礎(155分)
・ソフトウェアライフサイクルを通じてのテスト(115分)
・静的技法(60分)
・テスト設計技法(285分)
・テストのマネジメント(170分)
・テスト支援ツール(80分)
としており、合計155+115+60+285+170+80 = 865分 = 約14時間半
となる。
学習書籍の認定制度があり、
現時点では、翔泳社のソフトウェアテスト教科書 JSTQB Foundation 第3版
が学習書籍として認定されている。
####
個人的な経験で言えば、テスト技法は、会社で教えられることが無かったため、経験を持って学んてきた過程がある。
テストを体系的に理解することが、システムの品質を保証する一つの道程となる。
新人にとっても、テストとは何か、品質とは何かを理解するうえで、非常に有用な試験と言える。
http://jstqb.jp/syllabus.html
上記サイトでPDFにて、シラバスにいろいろ記載がある。
学習の目的を
K1:記憶
K2:理解
K3:適用
K4:分析
という段階に分けている。
シラバスごとに学習時間を設けており、
・テストの基礎(155分)
・ソフトウェアライフサイクルを通じてのテスト(115分)
・静的技法(60分)
・テスト設計技法(285分)
・テストのマネジメント(170分)
・テスト支援ツール(80分)
としており、合計155+115+60+285+170+80 = 865分 = 約14時間半
となる。
学習書籍の認定制度があり、
現時点では、翔泳社のソフトウェアテスト教科書 JSTQB Foundation 第3版
が学習書籍として認定されている。
####
個人的な経験で言えば、テスト技法は、会社で教えられることが無かったため、経験を持って学んてきた過程がある。
テストを体系的に理解することが、システムの品質を保証する一つの道程となる。
新人にとっても、テストとは何か、品質とは何かを理解するうえで、非常に有用な試験と言える。
プロフィール
HN:
たんてーくん
性別:
非公開
最新記事
(03/29)
(03/29)
(06/26)
(05/21)
(04/23)
カテゴリー
最新CM
[09/25 http://2017.bblbuy.com]
[09/24 http://www.japanform.com]
[09/23 http://www.japanform.com]
[09/22 http://www.japanform.com]
[09/21 http://2017.bblbuy.com]
ブログ内検索