2015年8月12日 星期三

超全域變數—$_FILES

超全域變數—$_GET,$_POST

$_GET
通過URL 參數傳遞給當前腳本的變數的陣列。

範例:
<?php
echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';
?>
假設用戶訪問的是http://example.com/?name=Hannes

以上例程的輸出類似於:
Hello Hannes!
GET 是通過 urldecode() 傳遞的。

$_POST
範例
<?php
echo 'Hello ' . htmlspecialchars($_POST["name"]) . '!';
?>
假設用戶通過HTTP POST 方式傳遞了參數name=Hannes

以上例程的輸出類似於:
Hello Hannes!

超全域變數—$_SERVER

$_SERVER
$_SERVER 是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的陣列。
這個陣列中的項目由Web伺服器產生。

在$_SERVER 中,你也許能夠,也許不能夠找到下面的這些元素。
注意,如果以命令行方式運行PHP,下面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。

'PHP_SELF'
當前執行腳本的文件名,與document root 有關。
例如,在地址為http://example.com/test.php/ 的腳本中使用$_SERVER['PHP_SELF']
將得到/test.php。
'argv'
傳遞給該腳本的參數的陣列。當腳本以命令行方式運行時,argv 變數傳遞給程序C 語言樣式的命令行參數。
當通過GET 方式調用時,該變數包含query string。
'argc'
包含命令行模式下傳遞給該腳本的參數的數目(如果運行在命令行模式下)。
'GATEWAY_INTERFACE'
伺服器使用的CGI 規範的版本;例如,“CGI/1.1”。
'SERVER_ADDR'
當前運行腳本所在的伺服器的IP 地址。
'SERVER_NAME'
當前運行腳本所在的伺服器的主機名。如果腳本運行於虛擬主機中,該名稱是由那個虛擬主機所設置的值決定。
'SERVER_SOFTWARE'
伺服器標識字符串,在響應請求時的頭信息中給出。
'SERVER_PROTOCOL'
請求頁面時通信協議的名稱和版本。例如,“HTTP/1.0”。
'REQUEST_METHOD'
訪問頁面使用的請求方法;例如,“GET”, “HEAD”,“POST”,“PUT”。
如果請求方法為HEAD,PHP 腳本將在發送Header 頭信息之後終止(這意味著在產生任何輸出後,不再有輸出緩衝)。
'REQUEST_TIME'
請求開始時的時間戳。從 PHP 5.1.0 起可用。
'REQUEST_TIME_FLOAT'
請求開始時的時間戳,微秒級別的精準度。自 PHP 5.4.0 開始生效。
'QUERY_STRING'
query string(查詢字串),如果有的話,通過它進行頁面訪問。
'DOCUMENT_ROOT'
當前運行腳本所在的文檔根目錄。在伺服器配置文件中定義。
'HTTP_ACCEPT'
當前請求頭中Accept: 項的內容,如果存在的話。
'HTTP_ACCEPT_CHARSET'
當前請求頭中Accept-Charset: 項的內容,如果存在的話。例如:“is​​o-8859-1,*,utf-8”。
'HTTP_ACCEPT_ENCODING'
當前請求頭中Accept-Encoding: 項的內容,如果存在的話。例如:“gzip”。
'HTTP_ACCEPT_LANGUAGE'
當前請求頭中Accept-Language: 項的內容,如果存在的話。例如:“en”。
'HTTP_CONNECTION'
當前請求頭中Connection: 項的內容,如果存在的話。例如:“Keep-Alive”。
'HTTP_HOST'
當前請求頭中Host: 項的內容,如果存在的話。
'HTTP_REFERER'
引導用戶代理到當前頁的前一頁的地址(如果存在)。由 user agent 設置決定。並不是所有的用戶代理都會設置該項,有的還提供了修改HTTP_REFERER 的功能。簡言之,該值並不可信。
'HTTP_USER_AGENT'
當前請求頭中User-Agent: 項的內容,如果存在的話。該字符串表明了訪問該頁面的用戶代理的信息。一個典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。除此之外,你可以通過get_browser() 來使用該值,從而定制頁面輸出以便適應用戶代理的性能。
'HTTPS'
如果腳本是通過HTTPS 協議被訪問,則被設為一個非空的值。
Note: 注意當使用IIS 上的ISAPI 方式時,如果不是通過HTTPS 協議被訪問,這個值將為off。
'REMOTE_ADDR'
瀏覽當前頁面的用戶的 IP 地址。
'REMOTE_HOST'
瀏覽當前頁面的用戶的主機名。 DNS 反向解析不依賴於用戶的REMOTE_ADDR。
Note: 你的伺服器必須被配置以便產生這個變數。例如在Apache 中,你需要在httpd.conf 中設置HostnameLookups On 來產生它。參見 gethostbyaddr()。
'REMOTE_PORT'
用戶機器上連接到Web 伺服器所使用的端口號。
'REMOTE_USER'
經驗證的用戶
'REDIRECT_REMOTE_USER'
驗證的用戶,如果請求已在內部重定向。
'SCRIPT_FILENAME'
當前執行腳本的絕對路徑。
'SERVER_ADMIN'
該值指明了Apache 伺服器配置文件中的SERVER_ADMIN 參數。如果腳本運行在一個虛擬主機上,則該值是那個虛擬主機的值。
'SERVER_PORT'
Web 伺服器使用的端口。預設值為 “80”。如果使用SSL 安全連接,則這個值為用戶設置的HTTP 端口。
'SERVER_SIGNATURE'
包含了伺服器版本和虛擬主機名的字符串。
'PATH_TRANSLATED'
當前腳本所在文件系統(非文檔根目錄)的基本路徑。這是在伺服器進行虛擬到真實路徑的映像後的結果。
Note: 自PHP 4.3.2 起,PATH_TRANSLATED 在Apache 2 SAPI 模式下不再和Apache 1 一樣隱含賦值,而是若Apache 不生成此值,PHP 便自己生成並將其值放入SCRIPT_FILENAME 伺服器常量中。這個修改遵守了CGI 規範,PATH_TRANSLATED 僅在PATH_INFO 被定義的條件下才存在。 Apache 2 用戶可以在httpd.conf 中設置AcceptPathInfo = On 來定義PATH_INFO。
'SCRIPT_NAME'
包含當前腳本的路徑。這在頁面需要指向自己時非常有用。 __FILE__ 常量包含當前腳本(例如包含文件)的完整路徑和文件名。
'REQUEST_URI'
URI 用來指定要訪問的頁面。例如 “/index.html”。
'PHP_AUTH_DIGEST'
當作為Apache 模塊運行時,進行HTTP Digest 認證的過程中,此變數被設置成客戶端發送的“Authorization” HTTP 頭內容(以便作進一步的認證操作)。
'PHP_AUTH_USER'
當PHP 運行在Apache 或IIS(PHP 5 是ISAPI)模塊方式下,並且正在使用HTTP 認證功能,這個變數便是用戶輸入的用戶名。
'PHP_AUTH_PW'
當PHP 運行在Apache 或IIS(PHP 5 是ISAPI)模塊方式下,並且正在使用HTTP 認證功能,這個變數便是用戶輸入的密碼。
'AUTH_TYPE'
當PHP 運行在Apache 模塊方式下,並且正在使用HTTP 認證功能,這個變數便是認證的類型。
'PATH_INFO'
包含由客戶端提供的、跟在真實腳本名稱之後並且在查詢語句(query string)之前的路徑信息,如果存在的話。例如,如果當前腳本是通過URL http://www.example.com/php/path_info.php/some/stuff?foo=bar 被訪問,那麼$_SERVER['PATH_INFO'] 將包含/some/stuff。
'ORIG_PATH_INFO'
在被PHP 處理之前,“PATH_INFO” 的原始版本。

範例
Example #1 $_SERVER 範例
<?php
echo $_SERVER['SERVER_NAME'];
?>
以上例程的輸出類似於:
www.example.com

2015年8月6日 星期四

防火牆----高階防火牆應該有的功能

封包過濾(Packet Filtering)
  Rule & Policy
  service: Telnet SSH Mail
  port:
  Host:
  Dynamic Packet
  packet level

入侵偵測(Intrusion Detection)
  警示系統(Alert System)
    send email
    log files
  緩衝區溢位 Buffer Overflow
    SQL Injection...
   

門禁管制(Access Policy)
   使用者認證(User-Level Authentication)

應用程式過濾(Application Filtering)
   網站過濾器(Web Filter)
   虛擬私人網路VPN(Virtual Private Networking)
   網路位置轉換(NAT: Network Address Translator)


阻斷服務攻擊DoS(Denial of Service)
     TCP/UDP PortScan   
     ICMP Smurf
     IP Land
     IP Spoof
     IP TearDrop
     PingOfDeath
     TCP Scan
     TCP SynWithData
     UDP Bomb
     UDP EchoChargen

駭客攻擊的手法

駭客攻擊的大方向可分為3類: 
1.入侵(invade) 
漏洞
植入(injection)


 2.阻斷服務攻擊(Denial of Service Attack,縮寫:DoS)
癱瘓網路的流量


3.竊取資訊 

政府機關常被使用,駭客寄偽裝email,用正式檔案內含木馬或惡意程式。
利用公司內部人員的疏忽,放太多資訊在社交網站 
利用公司內部人員的疏忽,download不明軟體
利用公司內部人員的疏忽,去不對的網站
利用公司內部人員的疏忽,太弱的密碼
利用公司內部人員的疏忽,做任何愚蠢的事

 目標和目的:

1. 放入惡意程式、偽裝程式、木馬、病毒
2. 跳板
3. 竊取個人重要資料
4. 政治訴求
5. 炫耀





2015年8月5日 星期三

賦值運算子 (assignment operator)php&python

$var .= "value";
它是一種賦值運算子(assignment operator) 。它的工作原理類似於:
$var = $var . "value";

PHP賦值運算
賦值運算(assignment operator) 有時會讓人搞得一頭霧水,不過它可以讓程序更精簡,增加程序的執行效率。
符號 意義
.=  將右邊的字串加到左邊
+= 相加同時指派 a += b
-= 相減同時指派 a -= b
*= 相乘同時指派 a *= b/= 相除同時指派 a /= b
%= 取餘數同時指派 a %= b


<?php
$a = 5;
$a += 2; // 即 $a = $a + 2;
echo $a."<br>\n";

$b = "賦";
$b .= "值"; // $b = "賦值";
$b .= "運算"; // $b = "賦值運算";
echo "$b<br>\n";
?>


Python 的賦值運算子 (assignment operator):
+= 相加同時指派 a += b
-= 相減同時指派 a -= b
*= 相乘同時指派 a *= b
**= 取指數同時指派 a **= b
/= 相除同時指派 a /= b
/= 整數相除同時指派 a //= b
%= 取餘數同時指派 a %= b
&= 位元且同時指派 a &= b
^= 位元互斥或同時指派 a ^= b
|= 位元包含或同時指派 a |= b
<<= 向左位移同時指派 a <<= b
>>= 向右位移同時指派 a >>= b

2015年8月1日 星期六

認識膽固醇

膽固醇
一種白色的蠟類物質的結晶,對於維持生命非常重要,存在於人類和所有動物的細胞裏。

膽固醇可以分成兩種
低密度脂蛋白膽固醇(LDL)及高密度脂蛋白膽固醇(HDL)。若血液中膽固醇的總含量過高,則發生心血管疾病的機率會提高。

我們的肝臟製造膽固醇
此外,我們也從食物攝取不同分量的膽固醇
在血液裏,一些稱為脂蛋白的分子把膽固醇輸送到細胞去,而脂蛋白則由膽固醇、脂肪和蛋白質構成。脂蛋白有兩種,分别稱為低密度脂蛋白(英語縮寫為LDL)和高密度脂蛋白(英語縮寫為HDL),負責輸送血液裏大部分的膽固醇。
LDL含豐富的膽固醇。這些分子在血液裏運行,並通過細胞壁的LDL受體,進入細胞裏,然後分解開來,供細胞使用。

另一方面,HDL是一些迅速吸收膽固醇的分子。HDL在血液裏運行時會吸收過剩的膽固醇,然後將其運回肝臟去。肝臟於是把膽固醇分解,然後排出體外。若無法順利排出,LDL就會過高。難怪LDL稱為壞的膽固醇,而HDL則稱為好的膽固醇

總膽固醇的臨界值為200~239mg/dl
超過這個值,就必須接受治療。如果測試顯示血液裏的LDL水平過高,而HDL水平較低的話,患上心臟病的機會也較大。

Statin 類藥物
一類常被醫生處方來幫助降低血液中膽固醇濃度的藥物。

2015年7月29日 星期三

駭客攻擊的手法----偽裝程式入侵

底下是幾種常見的偽裝方式:
假裝為圖形檔
一個讓最多人中招的方法,就是將特洛伊木馬偽裝成圖檔。只要入侵者假裝成檔案名稱為「類 似」圖檔的名稱,受害者就會立刻執行它。
但圖檔的副檔名根本就不可能是exe,而木馬程式的副檔名基本上又必定是exe,明眼人一看就知道有問題。不過由於Windows預設是隱藏副檔名的關係,所以很多人都不會注意到副檔名這個問題。
另外也有一些入侵者會將木馬程式的檔案名更改為"pic.jpg.exe",如果電腦是設定為隱藏副檔名的話,就會顯示為pic.jpg,這樣就會更容易騙過受害者。

假裝為應用程式
比較有經驗的用戶,都不會將圖像檔和執行檔混淆。所以有些入侵者會索性直接將木馬程式說為應用程式,以exe作為副檔名。
然後再以不同的手法欺騙受害者,例如說成是最新的遊戲,務求受害者會立即執行它。
由於木馬程式執行後一般都沒有任何動作,很多受害者都會以為是傳送時檔案壞了因而不再追究。

合併程式
比較小心的用戶,上述的方法可能會引起他們的懷疑,所以就衍生了合併程式。
將兩個或以上的執行檔(exe檔)結合為一個檔,以後只需執行這個檔案,兩個執行檔就會同時執行。若入侵者將一個正常的執行檔和一個木馬程式結合,由於執行檔案時會正常執行,受害者都不會知道暗地裏木馬程式也同時執行了。

以後越來越不能生病

台灣未來的醫療危機
包括外科醫生的短缺和藥品可能出現的藥安問題。另外鑒於利潤和醫療糾紛的原因,到了2022年,外科醫生就要短少1500人。感覺是,我們越來越不能生病。

看來內容有兩個重點
第一、可以做不開刀手術的外科醫師就不開刀。
例如:心臟動脈阻塞,放支架的手術的給付是外科做繞道手術的1.5倍。所以寧可放支架。
例如:以深度靜脈血栓為例,如果積極治療,需要開刀,吸掉血塊、打血酸溶解劑,甚至放支架和做氣球擴張術可以確實打通血塊、避免副作用。但做ㄧ個賠一個,所以許多醫師傾向開口服的血栓溶解劑就好。

第二、台灣新藥的健保核價,只有十大先進國新藥價格中位數的一半,大大影響國際大廠將新藥引進台灣的意願。
新藥也就是原廠藥,為鼓勵藥廠研發,歐美國家通常給予20年的專利保護期。
另外是學名藥,其他藥廠在原藥廠專利過期後,依原廠申請專利時的公開資訊,製造同成份的藥物價格較便宜。

由於健保資金短缺,我們拿到的便宜的藥有時候藥效打六折到九折,甚至會出現是像食安問題的藥安問題的藥。所以吃下什麼問題藥都不知道。

代理伺服器(Proxy)的好處和使用上的危險

何謂代理伺服器?
代理伺服器是網路上提供轉接功能的伺服器。

比如你想進入目的網站是A,,由於某種原因你不能進入到網站A或者你不想直接訪問網站A,此時你就可以使用代理伺服器。在實際訪問網站的時候,先在瀏覽器的位址欄輸入你要訪問的網址,瀏覽器會自動先進入代理伺服器,然後代理伺服器會自動轉接到你的目標網站。

簡單來說,代理伺服器可以隱藏你的身份

使用代理伺服器還可以適當的提高瀏覽網站的速度,原因是在第一個用戶訪問代理伺服器以後,目標網站的內容就保存在代理伺服器上了。若你瀏覽同一網站,此時的網頁是從代理伺服器上直接讀取的,速度就有可能提高。

但是由於有些代理伺服器的頻寬比較窄或者瀏覽的人數比較多,使用者速度也可能比較慢的。

代理伺服器的危險
1. 個人資訊洩漏的風險
當您使用代理伺服器,您的個人信息被發送到代理伺服器,業主可以捕獲所有這些信息,如電子郵件地址,密碼,銀行信息和信用卡信息都可能被盜用。

2. 網絡釣魚詐騙
一些代理伺服器實際上是專門用假網站給他們的用戶。通過代理伺服器,您可能會遇到看起來像你的銀行網站或電子郵件提供的網站,但它們是被用來捕捉你的信息或是虛擬的網絡釣魚網頁。您可以輸入您的信息,但後來突然不能訪問該頁面。你可能不知道,你的信息已經被竊取,直到做任何事為時已晚。

3. 代理伺服器是知名網站的黑名單
有些網站專門禁止代理伺服器的IP地址。這意味著,使用代理服務器,你無法訪問某些網站。

4. 透明代理
很多代理伺服器仍然可以實際顯示你的真實IP地址。這是一個很大的風險,你認為你的IP地址無論從任何網站都被隱藏,實際上你的IP地址被提供給他們的用戶。

2015年7月28日 星期二

營養素快速查詢

生命由細胞構成細胞由水、醣類、脂質、蛋白質和核酸等組成。

 

大部分維生素和礦物質人體身體無法合成製造,故必須攝取自食物的有機物質。

 

維生素能幫助人體吸收養料。人體能製造一些維生素,但種類不全,數量不足,所以必須靠食物補充。維生素C和B群消耗很快,所以每天都要補充。

 

A、D、E和K則能在體內儲存幾個星期。只要所吃的食物種類較多,一般可獲得所需的全部礦物質和維生素。

 

身體只能製造少量的維生素,如皮膚受陽光照射後,可以製維生素D,而少量的維生素K及H則是由消化道內的細菌製造。身體可從色胺酸製造出菸鹼酸,但身體不能製造維生素A、C、E或維生素B群中的一種,只能製造菸鹼酸,這些維生素必須從食物中攝取。居住在無法充分得到陽光照射的人們,必須額外食用其他食物來攝取維生素D。長期服用抗生素者,必須額外攝取維生素,因抗生素會抑制消化道內製造維生素的細菌生長而使其數量減少。

 

脂溶性維生素

維生素A: 保護眼睛、提升免疫力、保護表皮黏膜使細菌不易侵害、維持牙齒和骨骼的正常發育

食物: 南瓜、胡蘿蔔、辣椒

維生素D: 預防肌肉無力、使骨骼健康、協助鈣、磷的吸收與運用、幫牙齒的正常發育
食物: 魚肉、豆腐、雞蛋

維生素E: 脂溶性抗氧化劑、保護肝臟、減少維生素A及多元不飽和脂肪酸的氧化、控制細胞氧化、維持動物生殖機能
食物: 紅豆、核果類、海藻

維生素K: 構成凝血脢元所必需的一種物質、可促進血液在傷口凝固、以免流血不止

水溶性維生素

維生素B群: 幫助肝臟淨化解毒、並有助於食物轉變成能量釋出、避免囤積體內

維生素B1: 維持神經系統正常、促進食慾、幫助消化、維持腸道正常蠕動及消化液的分泌、預防及治療腳氣病神經炎、促進動物生長、能量代謝的重要輔脢
食物: 地瓜、薏仁、杏鮑菇

維生素B2: 參與代謝、細胞的輔酶、參與氧化還原、防治眼血管沖血及嘴角裂痛、防止皮膚炎
食物: 牛奶、薑、菠菜

維生素B6(泛酸):為一種輔脢,幫助胺基酸之合成與分解、幫助色胺酸變成菸鹼酸 

維生素B12: 維持神經正常功能、避免惡性貧血、促進核酸之合成、對醣類和脂肪代謝有重要功用、病影響血液中麩基胺硫的濃度、治惡性貧血及惡性貧血神經系統的病症
食物: 香蕉、海產、雞蛋

菸鹼酸:構成醣類分解過程中二種輔脢的主要成分、此輔脢主要作用為輸送氫、使皮膚健康,也有益於神經系統的健康 

葉酸(B9): 造血功臣、參與細胞生成、幫助血液的形成,可防治惡性貧血症、促成核酸及核蛋白合成 、參與胺基酸代代謝、幫助紅白血球的形成
食物: 牛肉、根莖類、萵苣

維生素C: 養顏美容、幫助傷口癒合、促進人體膠原蛋形成、細胞間質的主要構成物質、使細胞間保持良好狀況
食物: 苦瓜、樱桃、柑橘


優質蛋白質
幫助腸道肌肉蠕動,排清宿便。


脂肪
供給熱能、幫助脂溶性維生素的吸收與利用、增加食物美味及飽腹感
魚油: Omega-3富含多元不飽和脂肪酸EPA及DHA可降低食慾,減少想吃高熱量食物的慾望。



纖維
促進腸道蠕動,幫助排出宿便,維護腸道健康。


益菌
乳酸菌: 建立好菌生長環境,幫助腸道排出或分解有毒物質,預防腸道老化。



酵素(酶,enzyme)


輔酶
Q10



礦物質


葉黃素


胡蘿蔔素




駭客攻擊的手法----植入webshell

何謂webshell?
webshel​​l就是以asp、php、jsp或者cgi等腳本程序,可以是你自己用來以網頁型式管理網站的工具。也可以稱之為一種網絡的後門(web backdoor,WebShell Trojan)。駭客在入侵了一個網站後,通常會將asp或php後門文件與網站服務器WEB目錄下正常的網頁文件混在一起,然後就可以使用瀏覽器來訪問asp或者php後門,得到一個命令執行環境,你可以上傳和下載文件,查看數據庫,執行任意命令。

webshell如何植入伺服器?
 1)利用系統檔案上傳的前台服務,上傳WebShell的腳本,上傳目錄往往權限控制不嚴或有可執行的權限。攻擊者可以利用上傳功能,上傳一個腳本文件或上傳假圖片,然後就可以使用瀏覽器來訪問asp或者php後門。
 2)客戶拿到後台管理員密碼,登錄到後台系統,放置WebShell木馬。
 3)sql injection。

成功案例:
WIN2003 IIS6.0環境。

優點:
惡意WebShell腳本和正常的web文檔是混合的,而主機服務器和遠程控制的駭客可以通過port80傳輸數據,而不會被防火牆阻擋,一般也不會在系統日誌發現記錄,具有較強的隱蔽性,一般不容易被查殺。

如何防止系統被植入的WebShell?
 1)Web服務器端,打開防火牆,防毒軟體,關閉這些功能的遠程桌面,經常安裝伺服器補丁並定期更新防毒軟體。
 2)管理員定期更改密碼,加強類似安全管理,防止伺服器被感染木馬。
 3)加強權限管理,目錄權限來限制敏感腳本執行權限上傳目錄不允許執行腳本。
 4)防止sql injection

2015年7月20日 星期一

canvas vs svg

早期網頁要顯示圖形只能藉著貼上外部圖片來完成。
例如:
<img src="圖片" width="200" height="100">

HTML5可以使用canvas標籤,搭配canvas api,使用javascript來完成繪圖。

canvas標籤(也可說canvas是一個以像素為基礎的點陣圖畫布)
<canvas id="canvastest" witdth="300" height="300"></canvas>

使用javascript取得canvas元素DOM的物件
var canvas = document.getElementById("canvastest");

範例:
<!DOCTYPE html>
<html>
 <head>
  <script type="application/x-javascript">
function canvastest() {
 var canvas = document.getElementById("canvastag");
 if (canvas.getContext) { // 檢查瀏覽器是否支援canvas
 var ctx = canvas.getContext("2d");

 ctx.fillStyle = "rgb(200,0,0)";  // 把「填滿樣式」設為紅 200 綠 0 藍 0
 ctx.fillRect (10, 10, 50, 50);   // 畫一個填充的長方形

 ctx.fillStyle = "rgba(0, 0, 200, 0.5)"; // 把「填滿樣式」設為紅 0 綠 0 藍 200 透度 0.5
 ctx.fillRect (30, 30, 50, 50);          // 畫一個填充的長方形
 }
}
  </script>
 </head>
 <body onload="canvastest()">
   <canvas id="canvastag" width="300" height="300"></canvas>
 </body>
</html>

利用計時器canvas也可以製作動畫。另外,其實Flash CS5也有將自家動畫轉成HTML5 canvas程式碼的功能。
其實Adobe是可以將Flash與illustrator的向量圖轉成FXG格式,透過HTML 5的Canvas元素來呈現。技術上是可以利用Flash製作動畫、互動遊戲後,輸出成Javascript、HTML5開放標準網頁的。

向量圖形又如何?
向量圖是完全根據向量來呈現影像的幾何基元 (形狀、點、線及多邊形)。使用向量圖形當成網頁的背景影像,以支援高 DPI 及「捏合」縮放功能。例如繪製地圖。

向量圖可以使svg標籤

範例:
<!DOCTYPE html>
<html>
<body>

<svg width="100" height="100">
  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>

</body>
</html>

SVG Code explanation:
An SVG image begins with an <svg> element
The width and height attributes of the <svg> element define the width and height of the SVG image
The <circle> element is used to draw a circle
The cx and cy attributes define the x and y coordinates of the center of the circle. If cx and cy are omitted, the circle's center is set to (0, 0)
The r attribute defines the radius of the circle
The stroke and stroke-width attributes control how the outline of a shape appears. We set the outline of the circle to a 4px green "border"
The fill attribute refers to the color inside the circle. We set the fill color to yellow
The closing </svg> tag closes the SVG image
Note: Since SVG is written in XML, all elements must be properly closed!

下表列出了canvas 與SVG 之間的一些不同之處:
Canvas
點陣圖
放大到一定程度後會模糊
不支持事件處理器(要使用javascript)
能夠以 .png 或 .jpg 格式保存結果圖像
最適合圖像密集型的遊戲,其中的許多對象會被頻繁重繪

SVG
向量圖
無論放大多少倍清晰度不變
支持事件處理器
最適合帶有大型渲染區域的應用程序(比如google地圖)
複雜度高會減慢渲染速度(任何過度使用DOM 的應用都不快)
不適合遊戲應用

2015年7月19日 星期日

資料庫正規化

正規化:
A.欄位唯一性 (Field Uniqueness)
B.主關鍵欄位 (Primary Key)
C.功能關聯性 (Function Dependence)
D.欄位獨立性 (Field Independence)

意思就是:
當成鍵值的欄位不可以重複,
資料重複出現的欄位分解到另一個table,
欄位的關聯要明確!!!

MySQL 的特性

為多種編程語言提供了API。這些編程語言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等

可以處理擁有上千萬條記錄的大型數據庫 。我們正在對某些包含50,000,000 個記錄的資料庫使用MySQL

多種列類型:1、 2、 3、4、和8 字節長度的有符號/無符號整數、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM類型

全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數( COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、 MAX()和MIN() )

支持ANSI SQL的LEFT OUTER JOIN和ODBC語法

每個表允許有16個索引。每個索引可以由1~16個列或列的一部分組成。最大索引長度是256 個字節(在編譯MySQL時,它可以改變)。一個索引可以使用一個CHAR或VARCHAR字段的前綴

你可以在同一查詢中混用來自不同資料庫的表

用C和C++編寫,並用大量不同的編譯器測試

優化的SQL查詢算法,有效地提高查詢速度

使用核心線程的完全多線程。這意味著它能很容易地利用多CPU(如果有)

可運行在不同的平臺上。支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統

包括myisamchk,一個檢查、優化和修復數據庫表的快速實用程序

既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名

提供TCP/IP、ODBC和JDBC等多種數據庫連接途徑

MySQL 常用的指令


Login MySQL:  Two ways to login mysql
mysql --host=host_name --user=user_name --password=your_password db_name

mysql [-h hostname] [-u username] [-pyourpassword]

ex: mysql -h 192.168.1.1 -u root -proot , notice; -p and password without space

for safety reason, leave -p with blank and system will prompt you enter password.



MySQL command line:
Note that all text commands must be first on line and end with ';'
               (\?) Synonym for `help'.
clear          (\c) Clear command.
connect     (\r) Reconnect to the server. Optional arguments are db and host.
exit            (\q) Exit mysql. Same as quit.
help          (\h) Display this help.
print           (\p) Print current command.
quit            (\q) Quit mysql.
status        (\s) Get status information from the server.
system      (\!) Execute a system shell command.
tee            (\T) Set outfile [to_outfile]. Append everything into given outfile.
use            (\u) Use another database. Takes database name as argument.

Databases:
show current database:  select database();

create database [database_name];

drop database [database_name];

show databases;

use [database_name];

Tables:
Create Table

Alter Table

show tables;

desc [table_name];

drop table  [table_name];

Others;
show engines; 

show status;

show processlist; 

SHOW INDEX FROM tablename; 顯示表中的索引信息。

list mysql user: 
select user,host from mysql.user;
show grants for 'root'@'host';





MySQL BACKUP:
mysqldump
mysqldump --tab=/path/to/some/dir --opt --full

SELECT INTO OUTFILE
SELECT * FROM [table_name]  into outfile 'filename.csv'





2015年5月29日 星期五

電腦鍵盤常用快速鍵

檔案總管
[Ctrl]+[A] : 選取全部
[Ctrl]+[C] : 複製  
[Ctrl]+[X] : 剪下
[Ctrl]+[V] : 貼上
[Ctrl]+[F] : 搜尋
[Ctrl]+[N]  : 開啟新視窗
[Ctrl]+[R]  : 重新整理


F1:開啟執行中程式的輔助說明文檔、開啟 Windows 的 [說明與支援]
F2 : 重新命名選取項目
F3 : 搜尋檔案或資料夾
F4:顯示已鍵入的 [網址] 列清單
F5:重新整理、在開啟的記事本文件中加入時間與日期

拖曳時按住 [Ctrl] : 複製選取項目
拖曳時按住 [Shift] : 移動選取項目
拖曳時按住 [Ctrl]+[Shift] : 建立選取項目捷徑
Page Up:以較大幅的量捲動到文件的開頭
Page Down:以較大幅的量捲動到文件的結尾
Print Screen/Sys Rq:擷取螢幕畫面
Print Screen/Sys Rq+Alt:擷取目前開啟的視窗畫面
Tab:移動所選取的項目(圖文框)、增加字組空格(使用記事本編輯)。


[Alt]+ [Enter] : 檢視選取項目的內容
[Home] : 移動到第一個項目
[End] : 移動到最後一個項目
[Alt+Space]+ [C]  :關閉現用視窗
[Alt]+ [D]  :選取 [網址] 列中的位址

文件
[Ctrl]+[A] : 選取全部
[Ctrl]+[C] : 複製  
[Ctrl]+[X] : 剪下
[Ctrl]+[V] : 貼上    
[Ctrl]+[P] : 列印    
[Ctrl]+[Z] : 還原上一個步驟
[Ctrl]+[F] : 搜尋文件內容
[Ctrl]+[R]  : 重新整理


[Home] : 移動到游標該行最前面
[End] : 移動到游標該行最後面
[Ctrl]+[Home]  : 移至頁面的第一行
[Ctrl]+[End]  : 移至頁面的最後一行



瀏覽器
Backspace:移到上一頁
[Ctrl]+[N]  : 開啟新網頁
[Ctrl]+[R]  : 重新整理