2009-08-20

RFID



被動式電子標籤使用的頻率: LF(125KHz)、HF(13.56MHz)、UHF(902-928MHz),讀取距離一般環境而言,UHF可達到五公尺左右。

主動式RFID電子標籤本身具有電源(電池),主要使用的頻率是433/900MHz及2.45GHz,主動式讀取器的讀取距離可達到100公尺以上。



被動式標籤必須藉由讀取器天線所接收的電磁能轉換成電能,再透過標籤的天線傳回識別ID,而無線電波傳輸過程也會因為環境所存在的介質,對訊號接收造成不同程度的干擾,如工作或居住環境中遍存多少含金屬的桌椅建材等,或是辨識的本體帶有水份,人體中所佔70%的水份既是RFID訊號無法在較遠距離,有效讀取人員識別ID的原因。

2009-08-19

桌板


孩子房間床架下桌板需要尺寸 95cm*105cm

JavaScript Datetime / Timestamp math

JavaScript Datetime Timestamp 計算


strDateTime = new Date("Jan 1,1970 00:00:00");

reqDateTime = new Date() ;
req_ms = strDateTime.getTime() ; // 取得 strDateTime 之毫秒數 mSec since 1970/01/01 00:00:00

req_ms = req_ms - 90*60000 ; // 計算 -90分鐘 minutes

reqDateTime.setTime(req_ms) ; // 轉換為 datetime

reqHrMi_str = '' + reqDateTime.getHours()+':'+reqDateTime.getMinutes(); //取得 時分字串

2009-08-18

Étienne-Jules Marey

Étienne-Jules Marey (1830 - 1904)
為了查 wikipedia 電影片的規格相關資料, 看到 活動電影放映機(Kinetoscope)link . 再看到ㄧ位法國天才科學家 艾蒂安-朱爾·馬雷 Étienne-Jules Marey link .

看這裡 link , 令人驚訝在19世紀就出現的發明 : 風洞/連續攝影槍/模型視覺動態觀察器/昆蟲運動模擬器 , 對Marey來說卻只是他為了進行其它研究而開發的測試儀器或是研究成果展式用而已.

YouTube 看得到Marey在百多年前用連續攝影器材拍下來的動態影片 link , 還包含蒼蠅起飛的影片, 在沒有微巨鏡頭的時代如何拍下巨幅的蒼蠅影像, 真是天才.

2009-08-17

JSP/Java timestamp math & comparison

Java 搞個 datetime 計算真是很囉嗦, Oracle 簡潔多了. 更奇怪的是Java書都很少有詳盡的說明 Date/Calendar/Timestamp .


Date - java.util.Date
date001.getTime() - 取得 Date 毫秒數值 mSec since 1970/01/01

Calendar
cal001.getTime() - 取得 Calendar datetime 資料 since 1970/01/01
cal001.getTime().getTime() - 取得 Calendar 毫秒數值 mSec since 1970/01/01

Timestamp
java.sql.Timestamp dd001 = null;



Math:
Calendar cal01 = Calendar.getInstance(); // Declare Calendar object
cal01.setTime(someDate); // set Calendar object from date
cal01.add(Calendar.MINUTE, -90); // mathmatic add -90 minutes
cal01.add(Calendar.DATE, 1); // mathmatic add 1 day
java.util.Date d01 = cal01.getTime(); // Assign Calendar to Date object

java.util.Date date1 = new java.util.Date("12/15/2001");
java.util.Date date2 = new java.util.Date("10/30/2004");
long dayDiff = ((date2.getTime() - date1.getTime()) /86400000); //計算差異天數


Comparison (適用 Date & Calendar):
* if(cal01.after(cal02)) {} else {}
* if (dd001!=null) { } else { }



----- Use Groovy test -----
import java.text.*
import java.sql.*

println "Hello"

SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
java.util.Date dt = (java.util.Date) fmt.parse("2004/12/30 12:00:00");


Timestamp ts = new Timestamp(dt.getTime());

//println "dt= " "-"+fmt.format(dt)
//println "ts=" ts
//System.out.println(fmt.format(dt.getTime())); //java syntax
println fmt.format(dt.getTime())

----- Groovy Test 2 -----
import java.text.*;
import java.sql.Timestamp;

String str_date="2009-07-11"
DateFormat formatter = new SimpleDateFormat("yyyy-mm-dd");
java.util.Date date = (java.util.Date)formatter.parse(str_date);
java.sql.Timestamp timeStampDate = new Timestamp(date.getTime());
System.out.println("Today is " +timeStampDate);

----- Groovy Test final -----
import java.util.* ; // ArrayList
import java.text.* ; // SimpleDateFormat
import java.sql.* //Timestamp

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
java.util.Date sysDate = new java.util.Date();
java.sql.Timestamp fmdate ; //= new java.sql.Timestamp ;
java.sql.Timestamp todate ; //= new java.sql.Timestamp ;
java.util.Date dt1 = (java.util.Date) sdf1.parse('2009/08/01')
java.util.Date dt2 = (java.util.Date) sdf1.parse('2009/08/02')

fmdate = new java.sql.Timestamp(dt1.getTime())
todate = new java.sql.Timestamp(dt2.getTime())
println('Date:'+sdf1.format(dt1) + '-' + sdf1.format(dt2))
println('Timestamp:'+sdf1.format(fmdate) +'-' + sdf1.format(todate))

JSP web page 間 datetime 資料傳遞

HTML只能傳遞 string , 收與發 JSP 必須配何訂定 date string format.


Send date page JSP:
< %
SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy/MM/dd:HH:mm");
% >
< form action="rx.jsp" method= "post" name= "form1" >
< input name="date1_str" type="hidden" value="<%=sdf5.format(date1)%>" >
< /form >


Get date page JSP:
< %
SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy/MM/dd:HH:mm");

String date1_str = request.getParameter("date1_str");

// convert string to date variable
java.sql.Timestamp date1 = null;
if ( date1_str != null && !date1_str.equals("") ) {
date1 = new java.sql.Timestamp(
Integer.parseInt(date1_str.substring(0,4)) - 1900 // year
,Integer.parseInt(date1_str.substring(5,7)) - 1 // month
, Integer.parseInt(dat1_str.substring(8,10)) // day
, Integer.parseInt(date1_str.substring(11,13)) // hr
, Integer.parseInt(date1_str.substring(14,16)), 0, 0); //mi
}
% >