2016年7月19日 星期二

Ubuntu安裝nodeJS


安裝nodeJS
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Optional: install build tools
To compile and install native addons from npm you may also need to install build tools:

sudo apt-get install -y build-essential

測試安裝是否成功
node -v
npm -v

參考網址:https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

2016年3月9日 星期三

瀏覽器開發者工具-JavaScript Console

現在的瀏覽器功能強大,內建工具的協助編輯網頁

下面是各瀏覽器如何開啟JavaScript Console快捷鍵

Chrome Console Keyboard Shortcuts

  • Windows: Ctrl + Shift + J
  • Mac: Cmd + Option + J

Firefox Console Keyboard Shortcuts

  • Windows: Ctrl + Shift + K
  • Mac: Cmd + Option + K

Internet Explorer Console Keyboard Shortcuts

  • F12 key

Safari Console Keyboard Shortcuts

  • Cmd + Option + C

2016年3月1日 星期二

資料庫 CRUD

資料庫主要的操作CRUD為四個字的縮寫

  • Create
  • Read
  • Update
  • Delete

2016年2月23日 星期二

2016年2月15日 星期一

Python standard library string

python standard libray string
提供了一些字串操作基本功能

str.translate(table[, deletechars])

translate可以依據table來轉換str
如果轉換的目標是None,則match的字元就會被刪除

>>> 'read this short text'.translate(None, 'aeiou')
'rd ths shrt txt'

參考網址
https://docs.python.org/2.7/library/string.html?highlight=translate#module-string

python standard library os

python standard library裡提供os這個module
可以進行os的一些基本操作
例如取得資料夾底下的檔案名

os.listdir(path)
列出路徑下,所有檔案名字

os.rename(src,dst)
將src檔名改成dst

os.getcwd( )
取得work directory 路徑

os.chdir(path)
改變work directory 路徑

參考網址
https://docs.python.org/2/library/os.html

2016年2月11日 星期四

python escape convert

要將字串轉成escape的型式
程式碼如下

def escape_covert(s):
    for (i, o) in ( ('&',  '&'),
                   ('>', '>'),
                   ('<', '&lt;'),
                   ('"', '&quot;'),
                   ):
        s = s.replace(i, o)
 
    return s
要注意 ('&',  '&amp;')要放第一個
否則其他escape charater
轉換完的&會被轉成'&amp
造成錯誤


但有更簡便的做法
就是import python的standard library cgi

import cgi

def escape_covert(s):
    return cgi.escape(s,quote=True)

參考網址
https://docs.python.org/2/library/cgi.html

HTML escape characters


有時候在輸入字串時
字串裡的字會跟HTML TAG
相同而造成把字串當成HTML TAG
結果網頁輸出錯誤的內容
這時候就要用escape characters

較常使用的escape characters

  • Space   &nbsp;
  • "           &quot;
  • &         &amp;
  • <          &lt;
  • =          &#613
  • >          &gt;


Symbol Entity Name
&euro;
Space &nbsp;
" &quot;
& &amp;
< &lt;
= &#61;
> &gt;
Non-breaking space &nbsp;
¡ &iexcl;
¢ &cent;
£ &pound;
¤ &curren;
¥ &yen;
¦ &brvbar;
§ &sect;
¨ &uml;
© &copy;
ª &ordf;
¬ &not;
­ &shy;
® &reg;
¯ &macr;
° &deg;
± &plusmn;
² &sup2;
³ &sup3;
´ &acute;
µ &micro;
&para;
· &middot;
¸ &cedil;
¹ &sup1;
º &ordm;
» &raquo;
¼ &frac14;
½ &frac12;
¾ &frac34;
¿ &iquest;
À &Agrave;
Á &Aacute;
 &Acirc;
à &Atilde;
Ä &Auml;
Å &Aring;
Æ &AElig;
Ç &Ccedil;
È &Egrave;
É &Eacute;
Ê &Ecirc;
Ë &Euml;
Ì &Igrave;
Í &Iacute;
Î &Icirc;
Ï &Iuml;
Ð &ETH;
Ñ &Ntilde;
Ò &Ograve;
Ó &Oacute;
Ô &Ocirc;
Õ &Otilde;
Ö &Ouml;
× &times;
Ø &Oslash;
Ù &Ugrave;
Ú &Uacute;
Û &Ucirc;
Ü &Uuml;
Ý &Yacute;
Þ &THORN;
ß &szlig;
à &agrave;
á &aacute;
â &acirc;
ã &atilde;
ä &auml;
å &aring;
æ &aelig;
ç &ccedil;
è &egrave;
é &eacute;
ê &ecirc;
ë &euml;
ì &igrave;
í &iacute;
î &icirc;
ï &iuml;
ð &eth;
ñ &ntilde;
ò &ograve;
ó &oacute;
ô &ocirc;
õ &otilde;
ö &ouml;
÷ &divide;
ø &oslash;
ù &ugrave;
ú &uacute;
û &ucirc;
ü &uuml;
ý &yacute;
þ &thorn;

Python string formatting

Python string formatting有二種
% 和 format method
%是比較舊的方式
建議使用format,比較恰當
在讀程式時較易理解


s1 = "John!"
s2 = "love"

print "i am  %s" % s1     #i am John
print "i am  {0}".format(s1) #i am John

print "with %(kwarg)s!" % {'kwarg':sub2} #with love
print "with {kwarg}!".format(kwarg=sub2) #with love

2016年2月10日 星期三

HTML select

<select>可以用做下拉是選單
搭配<option>做為選擇的值
而query parameter就是option的值
跟checkbox和radio不同
query parameter一定有值
代表至少會是其中一個option裡的值


<form action="/testform">
   <select name="q">
    <option>one</option>
    <option>two</option>
    <option>three</option>
   </select>
   <input type="submit">
</form>


而option也可以給value attribute
有給則query parameter就會是value attribute
沒有給則預設是option裡的值

    <option value="1">one</option>
    <option>two</option>
    <option>three</option>

選one時query parameter會給1
其他會是two和three

HTML lable

要想在checkbox或在radio的選項
顯示選項的提示
可以使用<lable>
把<input>放在lable
在input前面顯示提示及可

<form>
   <lable>
      one
     <input type="checkbox" name="q">
   </lable>
   <lable>
      two
     <input type="checkbox" name="s">
   </lable>
   <lable>
      three
     <input type="checkbox" name="r">
   </lable>  
     <input type="submit">
</form>

one two three
<form>
   <lable>
      one
     <input type="radio" name="q" value="one">
   </lable>
   <lable>
      two
     <input type="radio" name="q" value="two">
   </lable>
   <lable>
      three
     <input type="radio" name="q" value="three">
   </lable>  
     <input type="submit">
</form>

one two three



HTML input radio

<form>
     <input type="radio" name="q" value="one">
     <input type="radio" name="q" value="two">
     <input type="radio" name="q" value="three">
      <input type="submit">
</form>


radio和checkbox一樣
沒有選取的話,query parameter就不會有
而想要三個checkbox只能選其中一個
選另一個,目前選就會取消
只要把name的名字取一樣就行了
而query parameter的值
如果後面沒有給value attribute,則值就是ON
有給就是value attribute的值

HTML input checkbox

<form >
     <input type="checkbox" name="q">    
     <input type="submit">
</form>


如果將q,勾選submit
那query parameter的q值會是ON
那沒有勾選話呢?
答案不是OFF,而是連q都不會在query parameter
所以在判斷是否checkbox有被選取
比較好的做法是判斷ON
不要用OFF來做
有選就是有ON,沒有選就是沒有ON
這樣比較不會出錯

HTML HTTP GET V.S POST

HTTP requset 有二種送參數的method
GET 和 POST

下表為二者的比較



GET POST
  • parameters放在url裡
  • 用來取得資料
  • 最大長度為URL的長度限度
  • 可以當做cache
  • 不可在server端改變
  • parameters放在request header之後
  • 用來更新資料
  • 無最大長度
  • 不可以當做cache
  • 可在server端改變


由表可知二者的不同
在應用上也就不同
必需依據其特性來使用
否則在應用上會造成錯誤或不便

HTML form tag & input tag

form tag裡面放input tag
input tag則可以輸入資料
而且可以送出

例子
<form action="http://www.google.com/search">
     <input name="q">
     <input type="submit">
</form>



在textbox裡輸入資料
再按提交,提交會執行submit
向action提出請求並在後面加上q這個query parameter

HTTP URL RESPONSE

瀏覽器向伺服器請求資料
伺服器就會RESPONSE回去
同樣的跟request一樣
有標頭檔
HTTP/ 1.1 200 OK
Date: 2016 2 10
Content-Type: text/html
Content-Length: 1539

第一行的200代表的是HTTP STATUS CODE
200表示請求正常

標頭檔後面就是請求的資料

2016年2月9日 星期二

HTML URL HTTP

HTTP是網路最常見的協定之一
全名是HyperText Transfer Protocol
這個協定包含二個method
GET和POST
GET是請求檔案
POST則是傳資料到server

http://example.com/profile.html?user=jack&pwd=123#page=1
這行的url,HTTP會使用GET path http-version的參數
所以會變成GET profile.html?user=jack&pwd http/1.1
會向host example.com請求
注意路徑也包括了query parameters  ?user=jack&pwd

除此之外還會傳送header給host
header的型式,為標頭名: 值

Host:www.example.com
user-Agent: chrome

user-Agent指的是使用者用什麼來瀏覽網頁或請求這個網頁

HTML URL PORT

網頁的URL通常省略port

例如輸入
http://example.com/about.html

實際上會在host後面加上 ':'加上 port名稱,做為完整的url

http://example.com:80/about.html

如果沒有指定port,會自動指定port為80

而8080這個port是常見
用來做本機網頁測試
瀏覽網頁用的
通常使用
http://localhost:8080

HTML URL

一般網頁的URL組成

protocol://host/path 的格式

例如
http://example.com/about.html

根據這個URL,可以向example.com找到about.html

而一般省略path只有

http://example.com 這樣,通常代表要求首頁

而一般首頁會使用index.html

HTML URL Fragments

URL的 Fragments,用'#'符號來表示

他的用處是可以target網頁裡的指定element

通常Fragments加在query parameter後面

例如
http://example.com/profile.html?user=jack&pwd=123#page=1

與query parameter同樣的可以傳入多個參數



HTML URL-Query Parameters(Get Parameters)

在瀏覽器根據url的連結
提供該網頁的伺服器
例如
http://example.com/profile.html

這個url獲取profile.html
而我們可以在url後面加參數給伺服器使用

如何加參數,首先在最後的路徑加入'?'符號
之後就是參數,可以加入數個參數
而參數的型式

參數名 = 值

參數與參數間用'&'符號

http://example.com/profile.html?user=jack&pwd=123

上面就會傳user和pwd二個參數給伺服器
而值分別為jack和123



HTML inline element V.S block element

在HTML檔裡,純文字的資料
在字元之間,不管是空幾格空白
或是換行,都會被看成只空一格空白
所以想要換行可以使用<br> tag或是<p> tag

<br>換行
This is first line.
This is second line.


<p>換行
This is first line.
This is second line.

這二者不同之處在於
<br>處理方式是

This is first line.(\n->換行)This is second line.

直接在行與行之間插入element,並處理

而<p> tag的方式是

This is first line.

This is second line.


element型成一個block把element和element之隔開


其他inline element有

  1. <b>粗體
  2. <em>斜體
  3. <img>圖片
  4. <span>
  5. <a>連結
  6. <br>換行




2016年2月8日 星期一

Python Standard Library time

Python Standard Library裡有time module提供相關的功能



例如

想要暫停現在的動作可以使用sleep

time.sleep(1)


程式就會暫停1秒,再執行後面的動作

取得現在的時間可以用ctime

time.ctime( )

會回傳 星期 月份 日期 時:分:秒 年的型式,例如Mon Feb 08 23:24:26 2016

參考網站
https://docs.python.org/2/library/time.html

Python Standard Library webbrowser

Python Standard Library裡有webbrowser這個module

webbrowser提供簡單的function,來執行瀏覽器

例如
webbrowser.open(url, new=0, autoraise=True)

就會打開瀏覽器,瀏覽輸入url的網址的網頁

如果要指定特定瀏覽器來瀏覽
可以使用webbrowser.get來得到object
再使用這個object來呼叫open function


firefox = webbrowser.get('C:/Program Files (x86)/Mozilla Firefox/firefox.exe %s')
firefox.open("www.google.com")

這裡要注意的是傳入get function裡的路徑
與windows裡路徑使用' \ ' 不同
要使用unix-style的' / '才有辦法找到路徑

參考網站
https://docs.python.org/2/library/webbrowser.html

2016年2月6日 星期六

名詞解釋Parsing

Parsing
將字串轉換成資料結構

Http status code

向ip請求網頁文字,server會回傳標頭。
其中標頭裡有status code這一個欄位。
它代表了這次的請求結果如何。
下表是常見的代碼以及它代表的狀況。



code 結果
200 請求成功,網頁正常
301 請求的網頁被移到新的位置上
404 請求失敗,請求的網頁沒有在伺服器上

2016年1月31日 星期日

物件導向-繼承

繼承是物件導向的特點之一,要如何判斷一個類別是否應該要繼承某類別。
一個簡單的判斷方法是用"is a"方式
例如animal類別
class animal{

}

而dog類別是否可以繼承animal類別
class dog{

}
答案是可以,因為存在"is a"的關係
但animal就不行,因為不是所有的animal都是dog

而dog繼承可型式如下,extends可以衍生inherit from
class dog extends animal{

}

繼承相關名詞
被繼承的類別animal,叫父類別、base class、super class
繼承的類別dog,子類別、derived class、sub class

2016年1月23日 星期六

Python try/except

Python的try/excpet是用來測試程式或避免程式錯誤而無法執行
保持之好的習慣,將可能會發生錯誤的程式區塊
加到try/excpet裡,如果這程式區塊在try裡正常達執行
則except區塊會被忽略,反之出現錯誤就會跳到except裡執行

下面是一個簡單的例子,資料型態的轉換
字串轉換成數字,如果字串由數字組成
則程式可正常執行,如果不是就會發生錯誤

num = raw_input('Enter a number:')
try:    
    my_num = int(num)
    print my_num
except:    
    my_num = 0
    print "error input"


2016年1月21日 星期四

Python運算元運算規則

Python運算元運算規則,由高到低如下


  1. 括數(Parenthesis),擁有最高優先權
  2. 幕次運算(Exponentiation)
  3. 乘法、除法、和餘數運算
  4. 加法、減法
  5. 由左到右運算


Python 數學運算


下表是Python數學運算操作



Operator Operation
+ 加法
- 減法
* 乘法
/ 除法
** 幕次運算
% 餘數

Python 保留字

以下是Python是保留字,不能用來當變數的名字。

  • and   
  • del   
  • for   
  • is   
  • raise   
  • assert   
  • elif  
  • from  
  • lambda  
  • return   
  • break   
  • else   
  • global   
  • not   
  • try   
  • class   
  • except   
  • if   
  • or   
  • while   
  • continue   
  • exec   
  • import   
  • pass   
  • yield   
  • def   
  • finally   
  • in   
  • print   
  • as   
  • with


Python 變數命名規則


  1. 第一個字母必須是英文字母或底線_
  2. 只能由英文字母、數字或底線_,組成變數名稱
  3. 英文字母大小寫識為不同名稱(Case Sensitive)
合法變數命名: hours、time、_month、days30
錯誤變數命名:24hours、@time、days&30



Git設定不要加入repo的檔案

首先用Cmd切換到工作目錄
執行touch .gitignore
工作目錄就會產生.gitignore檔
之後可以用文字編輯程式開啟
首先要輸入.gitignore
因為這個.gitignore檔本身也要忽略
之後在換行,一行設定一個
可以是資料夾或檔案
如果是資料夾則,設定資料夾底下的所有檔案將被忽略
.gitignore檔影響範圍為所在的資料夾和所有子資料夾
而每個資料夾都可以有.gitignore檔
不限只有一個.gitignore檔
但是上一層資料夾的.gitignore檔會影響下一層資料夾的.gitignore檔


.gitignore檔特殊字元
  • #:註解
  • / :資料夾路徑
  • *:萬用字元「*」
  • !:不要忽略,例如!123.txt表示不忽略123.txt

2016年1月20日 星期三

computer基礎架構

computer基本上由四個單元組成




  1. CPU(Central Processing Unit)
  2.    執行指令

  3. I/O Devices(Input/Output Devices)
  4.  Input Devices:  鍵盤、滑鼠
     Output Devices:  螢幕、 印表機、 DVD 燒錄器

  5. Main Memory: 
  6.   讀取速度較快、但價格較貴,失去電源後資料也會跟著消失。RAM就是 Main Memory。

  7. Secondary Memory:  
  8. 讀取速度較慢、但價格較便宜,失去電源後資料不會消失。硬碟、SD Card、隨身碟都算是Secondary Memory。


2016年1月16日 星期六

數據科學取樣方法


  • Simple Random Sampling

將每個樣本編號,在隨機選號抽出樣本。

  • Stratified Sampling

當樣本有些特色,例如年齡、居住地、國籍等。可以根據這些特色做分類,在從這些分類的群組裡,每個群組取出樣本。

  • Cluster Sampling

當一個群組可以由一個特點所組成,例如年齡、居住地、國籍等。只針對一個特點進行取樣,例如使用年齡分組,只對20~30歲取樣。

  • Systematic Sampling
假設樣本共N個,將樣本以n個分成N/n組,在從1~N/n裡隨機選出k。N/n就可以用k來取樣。

數據科學一般流程

1.問正確的問題
2.框架定義問題,如此可以定義什麼需要測量
3.選擇適當正確的資料測量和清理
4.尋找Pattern得到Key point

2016年1月8日 星期五

Git 基本操作流程

Git的基本流程是
1.切換到資料夾路徑,之後執行git init初始repository。就可以管理這個資料夾了
2.將要加入的新檔案或修改的檔案,使用git add指令加入。我們可以用git status指令查看現在repository的狀態。git add不會將檔案送進repository,只是選擇那些檔案準備送進repository。
3.要將選擇的檔案送進repository,要執行git commit指令。這樣就是一個基本Git管理流程。

而之後修改檔案或加入新檔案到repository,只要執行git add選擇修改檔案或加入新檔案。再執行git commit就可以產生下一版。這裡要注意如果修改檔案或加入新檔案之後沒有執行git add,直接執行git commit。是不會將修改檔案或加入新檔案送到repository。所以最好是先修改好檔案->執行git add->執行git commit的流程進行,確保不會遺漏檔案到repository。