2016年11月24日 星期四

[Python]基礎篇 1.5

1.5.1 附值運算

a = 2
a = 'jack'
a=3.1415
左邊的變數參照右邊的資料

1.5.2 空運算
pass ???

1.5.3 自運算和加強運算
a+=5
a-=5
a*=5
a/=5
a%=5
a**=5

1.5.4 比較運算
1>0   True
1<0   False
0>=1 False
0<=1 True
0==0 True
0!=0  False

python有個比較特別的特性
可以同時使用兩個運算符


其他語言需用0<a且a<=5






1.5.5 邏輯運算
and
or
not

1.5.6 身分運算 is

==   判斷兩者的值是否相等
is     判斷兩者是否來自同個記憶體位址

這邊因為整數1是個不可變資料
所以python將a跟b都參照到了1

[1,2,3]是個可變資料
所以lst_1,lst_2參照道的是兩個不同的位址





1.5.7 隸屬運算 in

2016年11月23日 星期三

[Linux]nfs的使用

為了方便在多台linux間傳輸資料,所以需要一個NFS的系統

先用rpm 查詢 nfc ,rpcbind 有沒有安裝
rpm -qa |grep rpcbind
rpm -qa |grep nfc

執行/etc/init.d 下的rpcbind
(這裡有個問題,不知道為什麼不能直接執行,要先切換到init.d目錄下
/etc/init.d/rpcbind start

建立一個資料夾給NFS掛載
mkdir -p /home/nfs/Qdownload
-p     能直接建立樹狀的目錄,不用一層層建立資料夾

掛載目錄到本地資料夾
mount -t nfs 192.168.1.90:/Qdownload \
>/home/nfs/Qdownload

\+enter鍵                跨行輸入

df     查看掛載的情況
unmount 卸載


鳥哥NFS介紹

[Django]Github的建置

之前因為換電腦的關係,打的code只有複製下來,想在新的電腦上面用還需要安裝各種套件才能執行原本的code,但是忘記打包requirement.txt ,也無法自動安裝。
所以想說學習一下github的使用方法

首先先進入虛擬環境中
source test_env/bin/activate
建立一個Django專案
django-admin.py startproject mysite
接下來是Git 的初始化
先安裝git
yum install git
再來初始化
git init
git add --all
git commit -m "init"
git remote add origin https://github.com/412988937/mysite.git
git push -u origin master


2016年11月18日 星期五

[Raspberry Pi 3]建置環境與遠端操控

這個禮拜去光華的良興電子購買了Raspberry Pi 3 model B
RP3:1690元
殼子:350元(買貴了)

買來之後發現,RP3 的散熱不太好,隨便播個影片CPU就飆到90%
散熱片是必須,長時間執行的話要加買一個可以裝風扇的殼

以下是灌系統的步驟:
1.準備一張記憶卡
2.到Raspberry官網下載映像檔
   說明一下各系統的差異:
    NOOBS:一種多重開機方式,可以選擇要灌哪一種系統,需要較大記憶卡
    Raspbian:官方版本,支援最多
    OSMC:專門撥放影片的系統,很像一個多媒體播放器
    (第一次安裝界面記得要選英文,中文會都是亂碼
    其他的我還沒用過................
3.用Win32 Disk Imager 把下載的img燒到記憶卡
   (這個軟體只能讀取img,無法讀取iso)
4.之後就可以開機了

系統預設的帳密:pi /raspberry
更改密碼指令:passwd pi
啟用root帳號:sudo passed root 

剛啟動時,系統無法充分利用sd卡的空間,於是輸入
sudo raspi-config 進入raspberry pi 的配置工具

第一個選項能擴展系統的使用空間
其他很多細項可以研究
(8.overclock 超頻)

為了方便遠端使用,我們會把rp3的ssh跟vnc server 打開

sudo apt-get -y update                               #更新所有套件列表    #-y 對所有詢問同意
sudo apt-get -y upgrate                              #更新所有套件           #更新很久
sudo apt-get -y install tightvncserver        #灌VNC server 提供linux的遠端桌面功能

apt-get 指令介紹









[Django]sublime 2 的安裝與開始選單的修改

首先我們可以先到sublime的官網下載所需要的版本
然後切換到下載目錄,並輸入
tar vxjf Sublime\ Text\ 2.0.2.tar.bz2               #後面那一串是檔名,按兩次tab即可
sudo mv Sublime\ Text\ 2 /opt/                      #將解壓縮後產生的Sublime\ Text\ 2資料夾
                                                                          搬移到/opt/    (需要root的權限)
sudo ln -s /opt/Sublime\ Text\ 2/sublime_text /usr/bin/sublime
#建立連結檔


Sublime\ Text\ 2 = Sublime Text 2  (因為檔名中間都有空格所以這樣表示)



ln 指令的介紹


開始選單的修改

2016年11月15日 星期二

[Python]基礎篇1.4

資料型態
將會介紹python幾種常見的資料型態,像整數、浮點數、字串、清單、字典等等

1.4.1 整數與浮點數















1.4.2 布林值
True / False

1.4.3 字串(string)
>>>string = ''                                      #空字串
>>>string_a = 'h'                                #字串以''或""框住
>>>string_b = 'ello'
>>>string_a + string_b                      #字串間的串接
'hello'

另外我們可以用三雙引號(""")來製造跨行的字串
 (又稱:doc string (文件字串)
用三雙引號製造出的字串不僅能跨行
還可以保留他字面上的格式















如果要取出字串中某個字元

string[idex(索引)]

string[0:5]      #從index = 0 取到 index =4
string[:5]        #從index的開頭取到index = 4
string[5:]        #從index = 5 取到index的尾巴
string[2:8]      #從index = 2 取到 index = 7
string[:]          #簡易複製字串的方法





字串也能進行格式化


字串中有些特殊的字串叫跳脫字元(escape character)
print "hello\n"

\\       倒斜線
\'       單引號
\"      雙引號
\a      鈴響
\b      退格
\n      換行
\t       縮排

使用非英文的字串
#-*- coding: utf-8 -*-

1.4.4 清單 (List)
清單是一個序列(sequence),我們能夠存放任何型態的資料在清單之中
>>>lst = [ 'abc' , 27 , None]

取出元素    >>>lst[0]      'abc'
                    >>>lst[1]      27
                    >>>lst[2]      None
                    >>>lst[-1]     None
                    >>>lst[1:]     [27,None]
改變元素    >>>lst[1] = 28
加入元素    >>>lst.append('New')
彈出元素    >>>lst.pop(2)                            #第二個元素消失
排序元素    >>>lst.sort()

1.4.5 Tuple
Tuple is similiar with list, they are both sequences ,but the elements in the Tuple are static
for example:
>>>t=(2,4,5)
>>>t[0]
2
>>>t[1]=0
TypeError

We find that if we decide to change the element of Tuple, there is a type error.

Another point we need to know is:
if we want a tuple with single element, we are forced to add a comma,EX:
t=(1,)
because if we type t=(1), python will mislead to t=1


1.4.6 Dictionary{}

Is not a sequence. Is a corresponding data structure.


>>>dic = { 'name' : 'jack', 'age':27}
>>>dic['name']
'jack'
>>>dic['age']
27

we call 'name', 'age' --------key
             'jack', 27   ----------value


更改字典值:dic['key']=value_1
增加字典值:dic['key_1]=value_2

1.4.7 巢狀結構
person = ['jack',27,[1998, 09,30]}












1.4.8 使用群集的好處
score = [90,91,92,93]
total = sum(score)

1.4.9 可變與不可變
a=1
a=2
a是個參照,改變的是參照的位置

string = "abc"
string[1]='x'
TypeError

因為字串的內容是不可變的

字典的鍵是要是不可變的資料


































2016年11月10日 星期四

ftp 資料

http://www.phpini.com/linux/wget-download-ftp-whole-directory
http://255121.blogspot.tw/2015/01/linux-ftp.html
http://yahoon.blog.51cto.com/13184/200991
http://charleslin74.pixnet.net/blog/post/434429402-%5Blinux%5D-wget%E6%8C%87%E4%BB%A4%E7%9A%84%E7%94%A8%E6%B3%95

以下是有關ftp的指令

Example:
ftp:192.168.1.1
帳號:ruby12345
密碼:abcd1234
目錄結構:HDD1/pdsite

如果我要下載整個目錄
wget -r ftp://ruby12345:abcd1234@192.168.1.1//HDD1

[Python]基礎篇1.3


python的基礎

1.3.1
進入python shell >>打開terminal,輸入python

1.3.2
如果遇到不會用的指令>>help([指令])

1.3.3
變數命名須遵循以下規則
1.以底線或英文字母開頭
2.以底線或英文字母或數字連綴
3.不可與保留字相同
4.大小寫有別(case sensitive)
ex:
(O) result
(O)_result
(O)result_2
(O)Result_2
(X)$reuslt
(X)2_result
(X)for

1.3.4
變數的命名有其慣例,可以去找PEP8(Python Enhancement Proposals)來參考

1.3.5
關於資料型態,我們會在之後介紹重要資料結構(浮點數、字串、清單、字典.....)
python存在一個不具備任何資料型態的資料:None
且不同的資料型態有其獨特的運算符的方法

1.3.6
關於變數參照
>>>result=2
在這個例子中,result這個變數儲存了2這個整數,但實際上Python並沒有讓result直接紀錄2,而是找了一個可以儲存2這個整數的空間(容器),並讓result參考到了該空間。
result只是一張標籤,上面寫著儲存物的儲存位置
>>>變數result參照了2這個整數

參照的重要性
>>>result=2
>>>result=3.0
>>>result='hello'
>>>result=[1.2.3]
我們發現該變數不但能儲存不同型態的資料,還能隨時更換資料型態。
這在C/C++等靜態語言是不可能的事情,因為靜態語言的變數必須在一開始變數宣告時定義
對python 而言,變數只是個參照,參照了某個裝資料的容器

優點:減少了變數宣告的工作,能隨時更換儲存資料的類型
缺點:慢,難發現錯誤

1.3.7
vi----------------------------------開啟文字檔編輯器
test.py
a=10
b=20
result = a + b
print result
:w test.py-------------------------儲存檔案為test.py
python test.py--------------------執行

1.3.8
封裝、參數化與函式

1.3.9
類別與物件

每一種資料型態都是一種類別
a=10------------10是整數這個類別的實例(instance)or物件(object)

Example
如果我們有一個類別叫做Cat, my_cat是Cat的實例
>>>my_cat.name                                       #name是Cat的一種屬性(attribute)
'Kitty'
>>>my_cat.shout()                                    #shout是Cat的一種方法(method)
Meow
之後會學習如何自訂類別





2016年11月9日 星期三

[Django]安裝django與建置

pip install [套件名稱]
pip unintall [套件名稱]
pip install Django==1.7.1                      安裝django 1.7.1
django-admin.py --version                     查看django的版本  
django-admin.py startproject [name]     建置一個django 專案:name
tree mysite                                              樹狀展開mysite












python manage.py runserver                  啟動server (記得切回虛擬環境)(切回manage.py所在目錄)

接著在瀏覽器裡輸入:http://127.0.0.1:8000
就可以看到成功運行的網頁了

我發現網站的檔案並不是放在虛擬環境裡

<補充tree 套件的安裝>
su -
yum install tree
http://www.ahlinux.com/start/base/23132.html

[Django]虛擬環境的使用


虛擬環境主要應用情形有兩種
1.如果同時有很多個python專案在進行,而每個專案需要的環境都不同(可能套件版本不同
2.有十個人一起開發一個大型的專案,確保每個人開發環境都相同
    (可能有使用windows, linux, mac 的人要一起合作)


其中一個解決方法是虛擬環境

python的虛擬環境可以在同一個系統上建立各自獨立且乾淨的開發環境,並且彼此間不互相影響,免去相依性或衝突的問題,專心於開發及維護。

pip install --upgrade pip               更新pip
pip install virtualenv                    安裝virtualenv這個虛擬環境套件
virtualenv [name]                         建立一個name的虛擬環境

我們可以在當前的位置看到一個名為test_env 的目錄
其中它包含了bin,lib,include三個資料夾, lib64的連結檔, pip-selfcheck.json










source test_env/bin/activate         啟動虛擬環境



deactivate                                     解除虛擬環境

如果再也用不到的虛擬環境可以直接將test_env整個目錄刪除

回到一開始的問題
情境1. 我們可以為每個專案都準備一個虛擬環境 在虛擬環境間切換
情境2. 將建立好的虛擬環境統一分配給所有人
            分配方法有下:
            1.打包虛擬環境的目錄
            2.使用pip freeze 指令將套件列表輸出到requirements.txt
               其他人也用pip freeze 來讀取requirements.txt安裝

[Linux]centos 7.0 下 pip 的安裝

首先,centos 7.0 已經有內建python
python --version                    查詢自己的版本

再來是安裝pip
pip是python 的套件管理工具,集合了下載、安裝、管理、移除套件等功能

開始安裝吧
su -                                          切換至系統管理員

https://www.liquidweb.com/kb/how-to-install-pip-on-centos-7/
從這個網站知道
Pip is part of Extra Packages for Enterprise Linux (EPEL), which is a community repository of non-standard packages for the RHEL distribution. First, we’ll install the EPEL repository:

所以我們先輸入
yum install epel-release        安裝EPEL
yum install python-pip           安裝pip

成功安裝




2016年11月7日 星期一

[windows 安全]遠端連線 資料清除


因為需要在外面連回家裡的windows server 工作
所以開啟了遠端桌面
但是windows 會把每次的連線紀錄記起來
需要手動刪除

遠端桌面紀錄主要儲存在兩個位置
1.HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default 下的MRU0,MRU1......
2.c:/Users/[user_name]/Documents/Default.rdp


底下是*.bat 的程式碼 

只能從桌面運行

reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /v "MRU0" /f
::刪除機碼1
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /v "MRU1" /f
::刪除機碼2
cd..

::從桌面切換至上層目錄
cd Documents

::切換至Documents
attrib -h -r -s Default.rdp

::更改檔案屬性

del Default.rdp
::刪除遠端資料檔

shutdown /r /t 60 /c "Clear rdp"

 ::/r 重新啟動 
::/t 60 60秒後
::/c "comment"