import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatTest {
public static void main(String[] args) {
String strDate="2020年12月24日";
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy'年'MM'月'dd'日'");
//String strDate="0000/00/00";
//SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy/MM/dd");
Date date;
try {
date = dateFormat.parse(strDate);
System.out.println(dateFormat.format(date));
} catch (ParseException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
サムネイル作成
----------------------------------
MainActivity.java
getContentResolverメソッドで, ContentResolverのインスタンスを取得する.
ContentResolver#queryメソッドで, 第1引数に画像の保存領域のURI, 第3引数にフィルタ条件, 第4引数にファイル名を指定して, 指定したファイルの情報を取得する.
システム領域の場合 MediaStore.Images.Media.INTERNAL_CONTENT_URI
システム領域外の場合 MediaStore.Images.Media.EXTERNAL_CONTENT_URI (通常こちら)
Cursor#getColumnIndex及びgetLongメソッドで, IDを取得する.
MediaStore.Images.Thumbnails#getThumbnailメソッドで, サムネイルを取得する.
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.widget.ImageView;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.graphics.Bitmap;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView)findViewById(R.id.imageview);
String fname = Environment.getExternalStorageDirectory().getPath() + "/sample/sample.jpg";
// ファイルIDの取得
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, // データの種類
null, // 項目(null 全項目)
MediaStore.Images.ImageColumns.DATA + " = ?", // フィルタ条件(null フィルタなし)
new String[]{fname}, // フィルタ用パラメータ
null // ソート
);
if (cursor.moveToFirst()) {
// サムネイルの取得
long id = cursor.getLong(cursor.getColumnIndex("_id"));
Bitmap thumbnail = MediaStore.Images.Thumbnails.getThumbnail(resolver, id, MediaStore.Images.Thumbnails.MICRO_KIND, null);
imageView.setImageBitmap(thumbnail);
}
}
}
電卓(AS)
----------------------------
import flash.events.MouseEvent;
import spark.components.Button;
private var memory:Number=0;
private var op:String='';
private var last_is_op:Boolean=false;
// ボタンをクリックしたとき
private function onClick(event : MouseEvent):void{
var btn:Button=event.target as Button;
var str:String=btn.label;
if(str=="C"){
clear();
return;
}
// 数字ボタンならディスプレイに追加
if(str.match(/[0-9\.]/)){
addNum(str);
return;
}
eval(str);
}
// 値を初期化
private function clear():void{
disp_txt.text="";
memory=0;
op='';
last_is_op=false;
}
// 数値を入力
private function addNum(num_str:String):void{
if(last_is_op) disp_txt.text='';
disp_txt.text+=num_str;
last_is_op=false;
}
// 計算を実行
private function eval(op_new:String):void{
if(last_is_op){
op=op_new;
return;
}
var result:Number;
var val1:Number=memory;
var val2:Number=Number(disp_txt.text);
switch(op){
case '+':
result=val1+val2;
break;
case '-':
result=val1-val2;
break;
case '*' :
result=val1*val2;
break;
case '/' :
result=val1/val2;
break;
case '%' :
result=val1%val2;
break;
default :
result=val2;
break;
}
disp_txt.text=String(result);
memory=result;
op=op_new;
last_is_op=true;
}
時刻表示(AS)
-------------------------------------
import flashx.textLayout.formats.WhiteSpaceCollapse;
public class Clock extends Sprite
{
private var time_txt:TextField;
public function Clock()
{
time_txt=new TextField();
time_txt.defaultTextFormat=new TextFormat("_typeWriter",64);
time_txt.autoSize=TextFieldAutoSize.LEFT;
// 表示オブジェクトコンテナに追加
this.addChild(time_txt);
setInterval(showTime,1000);
}
private function showTime():void{
// 時間を取得する
var now:Date=new Date();
var hh:Number=now.getHours();
var mm:Number=now.getMinutes();
var ss:Number=now.getSeconds();
//hh:mm:ssの形式い合わせる
var shh:String=formatZero(hh,2);
var smm:String=formatZero(mm,2);
var sss:String=formatZero(ss,2);
time_txt.text=shh+":"+smm+":"+sss;
}
private function formatZero(n:Number,keta:Number):String{
var s:String=String(n);
while(s.length<keta){
s="0"+s;
}
return s;
}
}
}
ひらがなをカタカナへ
----------------------------------
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
private function onKeyUp(event:KeyboardEvent):void{
//disp_txt.text=String(event.keyCode);//NumberをStringへ
disp_txt.text=convertHiraganaToKatakana(input_txt.text);
}
// ひらがなをカタカナへ
public static function convertHiraganaToKatakana(str:String):String{
var code_from:int="ぁ".charCodeAt(0);
var code_to:int="ん".charCodeAt(0);
var code_replace:int="ァ".charCodeAt(0);
var result:String="";
for(var i:int=0;i<str.length;i++){
var c:int=str.charCodeAt(i);
if(code_from <= c && c <= code_to){
c=code_replace+ (c-code_from);
}
result+=String.fromCharCode(c);
}
return result;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
</fx:Declarations>
<s:Label x="104" y="61" text="入力用" width="46" height="19"/>
<s:TextInput x="158" y="54" id="input_txt" keyUp="onKeyUp(event)"/>
<s:Label x="100" y="118" text="Keyコード"/>
<s:TextInput x="158" y="108" id="disp_txt"/>
</s:Application>
Enterキーでフィールド移動
---------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
private function moveNext(next_txt:TextInput,event:KeyboardEvent):void{
// Enterでなければ、そのまま
if(event.keyCode!=Keyboard.ENTER){
return;
}
// 次の入力項目へ
next_txt.setFocus();
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
</fx:Declarations>
<s:TextInput id="txt1" x="91" y="30"/>
<s:TextInput id="txt2" x="91" y="84"/>
<s:TextInput id="txt3" x="91" y="144"/>
<s:TextInput id="txt4" x="91" y="217"/>
</s:Application>
イベントモデル ActionScript
--------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
mouseMove="mouseMoveHandler(event)">
<fx:Script>
<![CDATA[
private function mouseMoveHandler(event:MouseEvent):void{
var x:Number=this.mouseX;
var y:Number=this.mouseY;
move_txt.text = x+ " " + y;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
</fx:Declarations>
<s:Label x="87" y="48" text="マウス : " width="81" height="18"/>
<s:TextInput x="150" y="44" id="move_txt"/>
</s:Application>
Oracle スキルアップサイト
-------------------------------------------------
PL/SQLを使ってみよう!
https://www.kushim.co.jp/blog/plsql/001
スクラッチで開発
レコメンド機能
この『プログラムの改善』→『動作の保証』という一連の流れを、
「リファクタリング」「ユニットテスト」という手法を用いておこなっていくことを学びます。
プログラムの動作を変えずに重複したコードをなくしたり、
ソースコードを整理することを『リファクタリング』といいます。
Visual Studio 2013の『コードクローン分析』を利用すると、重複コードを抽出することができます。
*デグレードとは:プログラムを手直しした際に修正部分以外の個所で不整合・不具合が発生したり、
バージョン管理の手抜かりなどによって以前の状態に戻ってしまい、修正済みだったバグが再発したりすること。
*ユニットテスト(単体テスト)とは:プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく
果たしているかどうかを検証するテスト。通常、関数やメソッドがユニットテストの単位。
このように毎日(プロジェクトによっては何日に1回、または日に数回かもしれません)定期的にビルド&テストを
自動的に行うことを継続的インテグレーション(=CI)といいます。
BTS(バグトラッキングシステム)
例えば、テストケースを抽出する手法の1つとして、『デシジョンテーブル』と呼ばれる手法があります。
デシジョンテーブルを利用するとテストケースの抜けもれがなく、
また、同じようなテストが重複することなくテストケースを抽出することができます。
『デシジョンテーブル』は、複数条件の組み合わせとその結果をまとめたテーブルです。
複数条件を組み合わせて、期待する結果はどうなのかを一覧表で俯瞰することができるので、
誰が見てもわかり易くなります。
結合テスト
@Typeスポーツのサイトにお客様がログインして商品を選ぶ時におススメ情報が表示されて、実際に注文したら、そのあとカートに行って支払の処理をして、その裏ではリアルタイムで在庫管理が動いて商品残量の表示を更新して、顧客情報と連携させてお客様のお好みみたいな履歴を作って、さらに次の販促に結び付けるみたいな感じですか?
「バグ密度」というのは、「バグが製造規模あたりどの程度発生しているか」ということよ。システムを構成する場合業務に沿った単位で機能を構成するけれど、規模はバラバラだから同じ評価ができないでしょ。
「試験密度」
製造規模あたりどのくらいテストケースこなしたか」
あなたが各設計書からテスト項目を洗い出し、テストケースを作成したと想定してください。
では、そのテストケースは、ちゃんと要件にあったテストケースなのでしょうか?あるいは、要件を検証できるテストケースを抜けもれなく作成できているでしょうか?
テストケースの精度を高めるためには、こういった観点での確認が必要です。この確認を『要件トレース』と言います。
テスト密度 = テスト件数 / ソースコード行数
バグ密度 = バグ発生件数 / ソースコード行数
1.インストールでは、メディアが2枚に分かれている場合は、2枚目のComponentsフォルダー内のファイルを1枚目のComponentsフォルダー内にコピーする。
2.インストールする前にWindowsユーザー(管理者権限をもたない)を作成しておく必要がある。オラクルホームユーザーを作成する際、必要となる
ただし、Adminstrator権限でも組み込みユーザーならできる。