2015/9.15
GUI, 人機介面怎麼測試,發現了好玩的東西~
紀錄一下測試的步驟:
環境: MS Windows 7 64bit
Sikuli (西酷吏, 自己亂翻)
視覺化的程式語法,可以模擬使用者在桌面上用滑鼠跟鍵盤的操作
所以對於我們要用來做測試的話是相當的方便
Step1. 下載軟體 (Windows version):
Java run-time environments: (必須安裝 Version 6 )
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jre-6u30-oth-JPR
沒有Jave 無法正常使用 Sikuli IDE and Setup.
我偏好免安裝版:
https://launchpad.net/sikuli/sikulix/x1.0-rc3/+download/Sikuli-X-1.0rc3%20%28r905%29-win32.zip
安裝包:
https://launchpad.net/sikuli/sikulix/1.0.1/+download/sikuli-setup.jar
Step2. 安裝執行
解壓縮後執行sikuli-setup.jar
啟動IDE: Sikuli-IDE-w.bat (批次檔的內容必須正確指定到JRE6的路徑)
這邊常見的問題是,啟動Sikuli-IDE後要截圖會失敗,我是看這一篇解決問題滴:
https://bugs.launchpad.net/sikuli/+bug/893772
Step3. 開始Program...
官網:
http://www.sikuli.org/
2015年9月14日 星期一
2013年4月2日 星期二
XSD 簡介, a XML Schema (一)
### This article is reference to : w3schools.com ###
XML schema 是用來描述XML的內容
目前有兩種方式來描述XML的內容結構:
1. DTDs
2. XML schema (xsd)
XML schema 比 DTD 好,因為schema的擴充性高且支援 Data type
以下是一 XML schema (以下簡稱 xsd ) 範例:
a simple XML name: "note.xml"
這個是上面 note.xml 的 xsd 描述
1. 由上可知 xsd 本身也是一個 XML, (用一個XML來描述另一個XML的結構)
2. 可以定義XML中有那些 elements
3. 定義 有哪些 attributes
4. 定義 那些 elements 是 child elements
5. 定義 child element 之間的順序關係
6. 定義 element 的內容是否 empty 或有文字(Text)內容
7. 定義 資料型態(data type)
8. 定義 element 或 attributes 的 default value 或 fixed value
下面這個 XML 內容可以 reference "note.xsd" (加入藍色的部分)
基本 xsd 框架如下:
<名詞解釋> simple element / complex element
XSD simple element: 表示這個element 的內容頂多只能是文字,不能有其他element ,不能有其他attribute。
不滿足以上條件的都是 complex element
下面這個範例就是 simple element, 其element 的內容頂多是文字
下面這個範例,element 有 attribute, 所以他就是 complex type
如何使用xsd 描述 simple type:
xsd 如下範例:
<xs:element name="xxx" type="yyy"/>
xxx is name of element
yyy is data type of the element
xsd 有許多內建的 data type, 下面是依些常見的
前面有提到 xsd 還可以定義 element 的 default value 或 fixed value
範例如下:
<xs:element name="color" type="xs:string" default="red"/>
<xs:element name="color" type="xs:string" fixed="red"/>
xsd 如何描述 attribute: 範例如下: (和描述 simple type element 很像)
<xs:attribute name="xxx" type="yyy"/>
<xs:attribute name="lang" type="xs:string" default="EN"/>
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Attribute對於element 來說,有時候是 optional,有時候是 Must
像上面的範例沒特別說明,表示 optional
若是 must
<xs:attribute name="lang" type="xs:string" use="required"/>
************************************************************
我們也可以對 element 或 attribute 的內容做規範限制 (Restrictions)
下面這個範例 我們對 "age" element 的內容作一些 restrictions
age 的base = integer, 最小值 0, 最大值 120
待續...
XML schema 是用來描述XML的內容
目前有兩種方式來描述XML的內容結構:
1. DTDs
2. XML schema (xsd)
XML schema 比 DTD 好,因為schema的擴充性高且支援 Data type
以下是一 XML schema (以下簡稱 xsd ) 範例:
a simple XML name: "note.xml"
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
這個是上面 note.xml 的 xsd 描述
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
1. 由上可知 xsd 本身也是一個 XML, (用一個XML來描述另一個XML的結構)
2. 可以定義XML中有那些 elements
3. 定義 有哪些 attributes
4. 定義 那些 elements 是 child elements
5. 定義 child element 之間的順序關係
6. 定義 element 的內容是否 empty 或有文字(Text)內容
7. 定義 資料型態(data type)
8. 定義 element 或 attributes 的 default value 或 fixed value
下面這個 XML 內容可以 reference "note.xsd" (加入藍色的部分)
<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
基本 xsd 框架如下:
<?xml version="1.0"?>
<xs:schema>
...
...
</xs:schema>
<名詞解釋> simple element / complex element
XSD simple element: 表示這個element 的內容頂多只能是文字,不能有其他element ,不能有其他attribute。
不滿足以上條件的都是 complex element
下面這個範例就是 simple element, 其element 的內容頂多是文字
<lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>
下面這個範例,element 有 attribute, 所以他就是 complex type
<lastname lang="EN">Smith</lastname>
如何使用xsd 描述 simple type:
xsd 如下範例:
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>
<xs:element name="xxx" type="yyy"/>
xxx is name of element
yyy is data type of the element
xsd 有許多內建的 data type, 下面是依些常見的
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
前面有提到 xsd 還可以定義 element 的 default value 或 fixed value
範例如下:
<xs:element name="color" type="xs:string" default="red"/>
<xs:element name="color" type="xs:string" fixed="red"/>
xsd 如何描述 attribute: 範例如下: (和描述 simple type element 很像)
<xs:attribute name="xxx" type="yyy"/>
<xs:attribute name="lang" type="xs:string" default="EN"/>
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Attribute對於element 來說,有時候是 optional,有時候是 Must
像上面的範例沒特別說明,表示 optional
若是 must
<xs:attribute name="lang" type="xs:string" use="required"/>
************************************************************
我們也可以對 element 或 attribute 的內容做規範限制 (Restrictions)
下面這個範例 我們對 "age" element 的內容作一些 restrictions
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
age 的base = integer, 最小值 0, 最大值 120
待續...
2013年3月3日 星期日
HTML表單傳送中文字到 PHP + MySQL 問題
最近在學習PHP + MySQL 資料庫碰到以下問題:
用表單傳送中文字到 PHP 網頁中,再將中文字存入MySQL中。
使用phpMyAdmin去看MySQL資料表單,發現文字都無法正確的傳入
中文字的內容都是空的。若改用英文字都沒有這些問題。
初學這些東西,HTML的表單不熟,PHP也不熟,MySQL也不熟,所以這問題還真麻煩。
只好一步一步Debug.
英文字可以傳送,表示整個傳送的機制是對的,但就中文字不行,表示傳中文字時的編碼
可能有問題。這個時候就會想問幾個問題。
1. 表單是怎麼傳送文字? 機制是如何?編碼方式?
2. Php在Server端怎麼收到這些文字? 是否有正確收到
3. Php怎麼把文字寫入資料庫? database 的編碼方式?
把問題列出來後,就開始Google 找答案了:
1. 表單是怎麼傳送文字?
表單傳送有分 Post 和 Get, 可以用Get method來實驗,因為
Get 方式會將傳送資料顯示網址上,如此我們可知道表單傳了時麼東西出去。
由實驗得知,若表單文字是英文就直接送出,若是中文字會經過編碼再送出。
寫個簡單的表單如下:
分別送出 "English" 和 "中文" ,送出後得到網址分別如下:
http://127.0.0.1/test2.php?foodName=English&cost=222
http://127.0.0.1/test2.php?foodName=%A4%A4%A4%E5&cost=222
發現上面 "中文" 被編碼成 %A4%A4%A4%E5
修改送出編碼方式如下: (改成utf-8)
http://127.0.0.1/test.php?foodName=%E4%B8%AD%E6%96%87&cost=222
發現上面 "中文" 被編碼成 %E4%B8%AD%E6%96%87
有明確指定編碼方式,永遠都是比較好的做法。
2. PHP 收到甚麼?
PHP 的資料型態是不需要很嚴謹的定義的,不像C語言有很嚴謹的資料型別定義。
當然這樣各種作法有好有壞拉(本人比較喜歡定義)。上面表單傳過來的東西 PHP
到底會收到甚麼?
使用 gettype() 讀取$food 和 $cost資料型態,可知不管你傳文字還是數字,資料型態都會自動變成string.
由此可知,假設我只單純的把自echo出來,那echo出來的這個網頁所使用的編碼方式
就很重要了,那依舊是必須要能夠匹配的編碼方式才行囉!
所以如果送過來的是採用 UTF-8的編碼方式,這邊網頁就必須採用UTF-8的方式(如上例)
依此類推,big5...都一樣
3. Php怎麼把文字寫入資料庫? database 的編碼方式?
上面這個PHP code 是把資料寫入資料庫中的語法,基本上沒有甚麼編碼方式的問題
只要網頁的編碼方式正確(第二點)就沒問題了。
但是資料庫的編碼方式就必須注意了。下圖採用phpMyAdmin連線進去我的編碼方式
也是採用utf8

以上這樣應該就都OK了。
我一開始會出現問題是因為
1. 我的表單傳送時並沒有指定編碼方式 (變成default)
2. 我的接收php網頁的編碼方式適用big5
所以中文字就一直有問題。但經過以上的方西調整後,目前都沒問題了。
用表單傳送中文字到 PHP 網頁中,再將中文字存入MySQL中。
使用phpMyAdmin去看MySQL資料表單,發現文字都無法正確的傳入
中文字的內容都是空的。若改用英文字都沒有這些問題。
初學這些東西,HTML的表單不熟,PHP也不熟,MySQL也不熟,所以這問題還真麻煩。
只好一步一步Debug.
英文字可以傳送,表示整個傳送的機制是對的,但就中文字不行,表示傳中文字時的編碼
可能有問題。這個時候就會想問幾個問題。
1. 表單是怎麼傳送文字? 機制是如何?編碼方式?
2. Php在Server端怎麼收到這些文字? 是否有正確收到
3. Php怎麼把文字寫入資料庫? database 的編碼方式?
把問題列出來後,就開始Google 找答案了:
1. 表單是怎麼傳送文字?
表單傳送有分 Post 和 Get, 可以用Get method來實驗,因為
Get 方式會將傳送資料顯示網址上,如此我們可知道表單傳了時麼東西出去。
由實驗得知,若表單文字是英文就直接送出,若是中文字會經過編碼再送出。
寫個簡單的表單如下:
<form action="test.php" method="get" >
請輸入:
<input type="text" name="foodName" >
<input type="text" name="cost" >
<input type="submit" value ="送出" >
</form>
分別送出 "English" 和 "中文" ,送出後得到網址分別如下:
http://127.0.0.1/test2.php?foodName=English&cost=222
http://127.0.0.1/test2.php?foodName=%A4%A4%A4%E5&cost=222
發現上面 "中文" 被編碼成 %A4%A4%A4%E5
修改送出編碼方式如下: (改成utf-8)
<form action="test.php" method="get" accept-charset="utf-8">
請輸入:
<input type="text" name="foodName" >
<input type="text" name="cost" >
<input type="submit" value ="送出" >
</form>
http://127.0.0.1/test.php?foodName=%E4%B8%AD%E6%96%87&cost=222
發現上面 "中文" 被編碼成 %E4%B8%AD%E6%96%87
有明確指定編碼方式,永遠都是比較好的做法。
2. PHP 收到甚麼?
PHP 的資料型態是不需要很嚴謹的定義的,不像C語言有很嚴謹的資料型別定義。
當然這樣各種作法有好有壞拉(本人比較喜歡定義)。上面表單傳過來的東西 PHP
到底會收到甚麼?
$food = $_REQUEST['foodName'];
$cost = $_REQUEST['cost'];
echo gettype($food) . "<br>"; // $food 讀取其資料型態
echo gettype($cost) . "<br>"; // $cost 讀取其資料型態
使用 gettype() 讀取$food 和 $cost資料型態,可知不管你傳文字還是數字,資料型態都會自動變成string.
由此可知,假設我只單純的把自echo出來,那echo出來的這個網頁所使用的編碼方式
就很重要了,那依舊是必須要能夠匹配的編碼方式才行囉!
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type">
<title></title>
</head>
所以如果送過來的是採用 UTF-8的編碼方式,這邊網頁就必須採用UTF-8的方式(如上例)
依此類推,big5...都一樣
3. Php怎麼把文字寫入資料庫? database 的編碼方式?
$food = $_REQUEST['foodName'];
$cost = $_REQUEST['cost'];
$sqlCmd = "insert into menu
( `index`, `foodName`, `cost` )
values
( NULL, '{$food} ', {$cost} )";
上面這個PHP code 是把資料寫入資料庫中的語法,基本上沒有甚麼編碼方式的問題
只要網頁的編碼方式正確(第二點)就沒問題了。
但是資料庫的編碼方式就必須注意了。下圖採用phpMyAdmin連線進去我的編碼方式
也是採用utf8
以上這樣應該就都OK了。
我一開始會出現問題是因為
1. 我的表單傳送時並沒有指定編碼方式 (變成default)
2. 我的接收php網頁的編碼方式適用big5
所以中文字就一直有問題。但經過以上的方西調整後,目前都沒問題了。
2013年3月2日 星期六
Windows 7 遠端桌面關機 - 關閉遠端電腦
Windows 7 使用遠端桌面登入到遠端電腦,
使用完畢想要順手把遠端電腦也給關機怎麼做呢?
Solution:
Ctrl + ALT + END ( = 對遠端電腦下達 Ctrl+alt+del )
此時螢幕右下角有個電源鈕,按下後遠端電腦就會進行關機動作,
此時遠端連線也會中斷 (廢話,都關機了...)
Solution 2: (這個方法比較簡單)
Alt + F4
此時跳出選單,選擇關機
使用完畢想要順手把遠端電腦也給關機怎麼做呢?
Solution:
Ctrl + ALT + END ( = 對遠端電腦下達 Ctrl+alt+del )
此時螢幕右下角有個電源鈕,按下後遠端電腦就會進行關機動作,
此時遠端連線也會中斷 (廢話,都關機了...)
Solution 2: (這個方法比較簡單)
Alt + F4
此時跳出選單,選擇關機
訂閱:
文章 (Atom)