2017年11月22日 星期三

Gunicorn網頁伺服器閘道接口WSGI

綠色獨角馬Green Unicorn是 Python網頁伺服器閘道接口 WSGI
能快速部署python網頁框架
安裝法
sudo apt-get install python-pip
pip install gunicorn

建立一個練習檔案
vi myapp.py
輸入

# coding=UTF-8
def app(environ, start_response):
        data = b"阿堯老師你好 !\n"
        start_response("200 OK", [
            ("Content-Type", "text/plain"),
            ("Content-Length", str(len(data)))
        ])
        return iter([data])

啟動
 gunicorn --workers=2 myapp:app -b 192.168.16.5:85
啟動指令
gunicorn -w 4 -b 127.0.0.1:8000 myapp:app
w工作緒   b綁定   myapp專案名稱

網頁成果
http://192.168.16.5:85/

彰縣學校的dns主機是否代管了

有些彰縣學校主機dns已經接受代管
如何知道自己學校是否已經成功代管


貴校 申請了代管
(dns.xxx.chc.edu.tw 為自己學校dns)
ping dns.xxx.chc.edu.tw
得到163.28.83.xxx

自己國小的ip是163.23.xxx.xxx
已經成功代管了
因為163.28.83.xxx為中興大學ip

以下網段都是中興大學的網址
163.28.80.1 - 163.28.95.254

2017年11月16日 星期四

使用BeeGo框架

beego
go get github.com/astaxie/beego
安裝bee工具
go get github.com/beego/bee
建立新專案
bee new test1
執行專案
cd test1
bee run

網頁顯示也可以直接用html副檔名
func (c *MainController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "index.html"
}

強迫停止服務
ps aux | grep bee | awk '{print $2}' | xargs kill -9

2017年11月15日 星期三

使用revel框架

https://revel.github.io/

注意自己的go路徑
例如
export GOPATH=$HOME/ex/p1
若有下載範例程式,將程式傳到
/home/yau/ex/p1/src

下載相關套件
go get github.com/revel/revel
go get -u -v github.com/revel/cmd/revel

建立專案
revel new myapp
執行
revel run myapp

環境檔conf
app.conf
埠號
http.port = 9000

使用iris框架


go get -u github.com/kataras/iris

建立一個專案目錄
建立main.go檔案

package main

import "github.com/kataras/iris"

func main() {
    app := iris.New()
    // Load all templates from the "./views" folder
    // where extension is ".html" and parse them
    // using the standard `html/template` package.
    app.RegisterView(iris.HTML("./views", ".html"))

    // Method:    GET
    // Resource:  http://localhost:8080
    app.Get("/", func(ctx iris.Context) {
        // Bind: {{.message}} with "Hello world!"
        ctx.ViewData("message", "Hello world!")
        // Render template file: ./views/hello.html
        ctx.View("hello.html")
    })

    // Method:    GET
    // Resource:  http://localhost:8080/user/42
    //
    // Need to use a custom regexp instead?
    // Easy;
    // Just mark the parameter's type to 'string'
    // which accepts anything and make use of
    // its `regexp` macro function, i.e:
    // app.Get("/user/{id:string regexp(^[0-9]+$)}")
    app.Get("/user/{id:long}", func(ctx iris.Context) {
        userID, _ := ctx.Params().GetInt64("id")
        ctx.Writef("User ID: %d", userID)
    })

    // Start the server using a network address.
    app.Run(iris.Addr(":8080"))
}

建立一個次目錄views放網頁hello.html
<!-- file: ./views/hello.html -->
<html>
<head>
    <title>你好練習</title>
</head>
<body>
    <h1>{{.message}}</h1>
</body>
</html>
執行程式
go run main.go
安裝rizla這樣網頁改變才不用一直重新啟動服務
go get -u github.com/kataras/rizla

往後啟動程式 輸入  rizla main.go




強制停止go程式執行緒

ps aux | grep go | awk '{print $2}' | xargs kill -9 練習時 常有些port佔用 無法釋放,就用此指令

2017年11月14日 星期二

debian上安裝golang

 sudo apt-get update
 抓go語言1.9.2
 wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz

 解開
 tar -xvf go1.9.2.linux-amd64.tar.gz
移動目錄
 sudo mv go /usr/local




vi ~/.profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/ex/p1
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH


立即生效
source ~/.profile


 顯示版本
 $ go version

go version go1.9.2 linux/amd64

顯示環境
$ go env

簡易練習
mkdir ex
cd ex
vi web.go



package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "GO語言, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

編譯(注意web.go要utf-8編碼才能顯示中文)
go build web.go

編譯好會產生一個執行檔
 執行
 ./web

192.168.0.5:8080 就會看到網頁

問題:關閉終端機,服務就消失
解決1:裝tmux
sudo apt-get install tmux

關閉終端機服務還能繼續跑

tmux new -s  名稱
例如 tmux new -s my8080
這樣才知道自己的服務

分割 / 切割視窗 (切出來的叫pane)
Ctrl-b q Show pane numbers
Ctrl-b alt按著,再按上下左右, 可以調整視窗大小
Ctrl-b % 直切
Ctrl-b :"split-window" 橫切
Ctrl-b Ctrl-o 調換 切割視窗 的 位置
Ctrl-b o Switch to the next pane
Ctrl-b 上下左右 跳到上下左右的分割視窗
Ctrl-b ! 將目前的pane抽成window
Ctrl-b x 移除目前的pane

Ctrl-b + c:建立新的視窗;
Ctrl-b + d:卸載目前的 client;
Ctrl-b + l:與先前選擇的視窗間切換;
Ctrl-b + n:移動到下個視窗;
Ctrl-b + p:移動到上個視窗;
Ctrl-b + &:刪除目前的視窗;
Ctrl-b + ,:重新命名目前的視窗;
Ctrl-b + %:將目前的視窗分離到兩個區塊;
Ctrl-b + q:顯示各分割區塊的號碼(用來切換到不同的區塊)
Ctrl-b + o:切換到下個區塊;
Ctrl-b + ?:列出所有快捷鍵的說明;
Ctrl-b + w:列出目前 clinet 的視窗,可以用數字鍵切換;


按住ctrl 和b  再按d離開

顯示服務
tmux ls
關閉服務
tmux attach -t 編號




解決2:採用linux supervisor





2017年11月13日 星期一

阿堯老師文章

1、碩士論文:家庭教育網路學習活動之實施及成效評估---以母子衝突議題為例
2、網際網路與網路成癮議題之探討(2003年海峽兩案小學教育學術研討會,國立嘉義大學)
3、有趣的網路閱讀與測驗(第二屆全球華人教師教學研討會,國立中央大學)
4、小小孩可以玩電腦嗎?(學前教育,2004,2)
5、孩子玩電腦時,爸媽該注意什麼?(學前教育,2004,2)

阿堯老師經歷

1994.04 中華民國電腦軟體設計技術士
1997.05 海軍陸戰隊優良士官兵
1998.12 榮獲全國「歡樂耶誕頁」網頁創意大賽教師組最佳動畫獎
1999.06   彰化縣辦理成長團體認真負責獎
2000.03 彰化縣交通安全教具製作競賽電腦輔助教學組第二名
2000.05 帶領籃球隊取得彰化縣八十八學年度國小樂趣化籃球賽冠軍
2000.07 個人網站「益智遊樂網」榮獲博碩出版社所出書籍推薦
2000.08  接受台北New98電台採訪
2000.09  個人網站「快樂小Baby」榮獲孕媽咪雜誌推薦
2000.10  榮獲中華民國第十四屆電腦輔助教學軟體設計優良獎
2000.10  榮獲彰化縣運用資訊科技媒體融入教學比賽佳作
2000.10  指導學生參加彰化縣89學年度網路競賽,榮獲特優
2000.03 彰化縣八十九學年度教師自製教學媒體(電腦多媒體組)特優
2000.05 「2001年十大兒童優質網站」之一 「益智遊樂網」
2001.10  榮獲中華民國第十五屆電腦輔助教學軟體設計優良獎
2001.11  帶領籃球隊取得彰化縣九十學年度縣長盃國小男子組籃球賽亞軍
2002.01  帶領籃球隊取得彰化縣九十年度議長盃國小男子組籃球賽季軍
2002.05  帶領籃球隊取得彰化縣九十學年度教育盃國小男子組籃球賽季軍
2002.06.26 教育部資訊融入教材教案  GIF輕鬆派(佳作)
2002.06.26 教育部資訊融入教材教案  蒙古王朝(優等)
2002.12 台北市九十一學年度多媒體單元教材甄選 (佳作)有趣的小動物
2002.12 台北市九十一學年度多媒體單元教材甄選  (入選) 東西南北找金幣
2003.11 台北市九十二學年度多媒體單元教材甄選  (入選) 快樂小海龜
2004.09 彰化縣特殊優良教師
2005.05.29 指導湖南國小「連思源」同學參加亞卓市、中華電信單字快手,初賽全國第一;決賽第二
2005.06  指導學生參加GO!GO!GO!全國三對三籃球賽榮獲冠軍
...
...
2017.11
106年度教育部有愛無礙教材/多媒體APP教材比賽 ,多媒體APP組第一名
2018.1
第五屆全國特殊教育教材教具、輔具暨電腦輔助教學軟體設計比賽 佳作


2017年11月2日 星期四

visualStudioCode小技巧

網頁標籤
br 按enter
產生 <br>

table 按enter
產生<table></table>

----------------------------------
一次多個游標(方便一次性加入同樣字串)

第一列  |
第二列  |(按住alt 第二列點一下 新增一個游標  )
第三列  |(按住alt 第三列點一下 新增一個游標  )

輸入字串 123 變成
第一列   123
第二列   123
第三列   123

---------------------------------------
文字快速註解
全選ctrl+ /
---------------------
改變文字編碼
右下角 big5或utf-8或其他編碼
Reopen wtin Encoding

ctrl+G 跳到某一行


2017年10月26日 星期四

採用visualstudio code 編輯網頁程式


阿堯老師 最近使用php strom 編輯php網頁程式,真是好用
但要編修python程式時,發現它無法支援python語法格式
(是不是要與python對抗,就不清楚了)

只好使用 atom編輯軟體,但atom的sftp外掛實在是太陽春了

今天試試 visual studio code(支援win  linux mac)
visual studio code下載位置
https://code.visualstudio.com/download

安裝外掛方法


真是好用,visual studio code 內建支援python語法高亮顯示



2017年10月16日 星期一

google協作平台採用自己的網域名稱

Gsuite管理者登入
https://admin.google.com/AdminHome









設定好之後
自己學校的DNS正解檔,加入類似以下一行指令


重新啟動DNS

2017年9月5日 星期二

google表單資料自動編號---採用app script方法

剛接觸google表單者對google app script比較陌生,所以上次介紹一個簡單的外掛程式(copydown),可以
快速達到表單資料自動編號的功能。
如果您已經接觸
google app script了,以下介紹利用app script完成google表單資料自動編號

#google表單和結果試算表的製作,請自行到網路尋找教學,網路非常多這類免費教學

1.在原有的成果表單上新增一個欄位(滑鼠右鍵),命名「編號」

左下角 表單名稱改成sheet1方便後面寫程式呼叫


2.按工具、指令編輯器



貼入以下指令
function myFunction() {  
  var sheet = SpreadsheetApp.openById('此處貼您成果表的id').getSheetByName('sheet1');  
  var LastRow = sheet.getLastRow();  
  if (LastRow > 1 )   
    
   sheet.getRange(LastRow,1).setValue(LastRow-1);   

 }  





注意:成果表的id類似以下格式
/d/ffgghjyjCkyjtjjytjlprtget5XBYIlEsFx8cL0/edit#gid=748024219

最後兩個斜線 / 夾著的那一串紅字



 3.按執行

出現授權畫面,選定您的google帳號授權


4.設定現有專案啟動時機

建立一個觸發程序

選擇:來自試算表、提交表單時


成功囉


2017年9月4日 星期一

google表單加入自動編號

google表單除了可以利用google app script加入自動編號,也可以利用簡單的外掛達成目的。
剛接觸google表單者對google app script比較陌生,所以這裡介紹一個簡單的外掛程式。

1.先建立google表單及試算表(不會者查一下網路教學)
在原本第一個欄位處按滑鼠右鍵新增一個欄位叫報名編號

在A欄位第二列貼入指令
=if(B2="","","A"&INT(ROW(B2)-1))


2.安裝外掛程式


尋找copyDown外掛

3.安裝好後設定


4.成功了,以後別人填報的內容會自動加入編號
!!注意:透過此方法,不是只有自動編號,其他像自動加總計分,相減、相乘等等函式功能都能運用


2017年8月27日 星期日

ROS虛擬路由VRRP一個網卡發兩組DHCP

RB450g或RB850gx2都有5個孔位,有時不夠用
今天我們練習用一個實體網卡,分成兩個虛擬路由界面VRRP
選擇VRRP


選好實體網卡,設定id編號

第二個界面

設定虛擬路由界面網址

設定第二虛擬路由界面網址

ip > dhcp server

第二個虛擬路由Vrrp2一同樣方式設定Dhcp server



完成了,ROS真棒的虛擬路由界面功能

你可能會想,謂何不用切Vlan方式,Vlan也是可以達到一個實體網卡分多組Dhcp,但下流設備要有L2以上的switch接收網路資料封包才行,一般便宜的switch無法認得vlan發出的資料封包,就會被丟棄,形成無法連線狀態。



以上分享,若有錯誤請來信請教,謝謝~
hnps@hnps.chc.edu.tw



2017年8月21日 星期一

ROS整合第二外線


江明熹  老師提供

學術網路及第二條專線在RouterOS策略性路由的設定方式
一、第二條專線pppoe設定方式:
1. ip > Interfaces > +
2.pppoe client
3. General選單內Name自訂,Interfaces選要接第二條線路的port


4. Dial Out選單內的UserPassword請依廠商提供的資料輸入,預設Add Default Route有勾選,請改為不要勾選,然後按OK即完成撥接設定。

二、說明:本校目前學術網路及第二條專線的設定採策略性路由方式來走。電腦教室及班級的網段走學術網路出去,行政網路的網段如要到縣網的網段163.23.200163.23.253就走學術網路出去,其餘校外的網段就走第二條專線出去,如此一來就可以做到網路分流的目標,以下就針對本校在RosterOS上的設定作說明。
三、首先要設定一標記的規則,方式如下:ip > firewall > mangle +
  1.General選單內的Chainprerouting,如下圖所示

  2.Advanced選單內的Src.Address List:輸入自訂名稱(例如:mylan)、Dst.Address List:輸入自訂名稱(例如:Server-Site),另外在Dst.Address List後方的白色方塊用滑鼠左鍵點一下,使其出現驚嘆號,如下圖所示。
說明:mylan為校內各網段ipServer-Site為校外網段ipDst.Address List後方的驚嘆號表示NOT
  3.Action選單內Actionmark routingNew Routing Mark:輸入自訂名稱(例如:FTTX),如下圖所示。
  說明:New Routing Mark的名稱只是註記標記名稱而已,可自行命名。
  4.OK儲存。
四、再來要設定校內ip網段及校外ip網段,方式如下:ip > firewall > Address List +
  1.先設定校內ip網段:NamemylanAddress:輸入校內ip網段(例如:192.168.1.0/24),如下圖所示。
  說明:Name為上個步驟Src.Address List上所輸入的名稱。
2.再來設定校外ip網段:NameServer-SiteAddress:輸入校外ip網段(例如:163.23.200.0/24),如下圖所示。
  說明:Name為上個步驟Dst.Address List上所輸入的名稱。


五、接下來要針對校內ip網段新增一組pppoeNAT偽裝,設定方式如下:ip > firewall > NAT +
1.General選單內的Chainsrnatout interface選第二條專線pppoe連線名稱,如下圖所示

2.Advanced選單內的Src.Address List:輸入校內網段的Address List名稱(依據上個步驟新增校內網段的Address List名稱,例如:mylan),如下圖所示。

3.Action選單內Actionmasquerade,如下圖所示。
4.OK儲存。
六、最後多設定一組預設路由,方式如下:ip > Routes +
1.Dst.Address輸入0.0.0.0/0Geteway選第二條專線pppoe連線名稱(例如:pppoe-out1),Routing Mark:選第一個步驟設定的New Routing Mark的名稱(例如:FTTX),如下圖所示。
六、以上是整個設定的流程,如此一來我們只要將行政網段設定到Address List mylan內,縣網的網段設定到Address List Server-Site內,那就可以做到要去縣網的網段163.23.200163.23.253就走學術網路出去,其餘校外的網段就走第二條專線出去。
說明:因本校內部有分好幾個網段,因此建議要將校內各網段也設定到Address List Server-Site內,才不會造成Address List mylan內的網段找不到校內其他網段的情形。
七、如要測試對外的路由可用所附的WinMTR軟體來測試。
說明:在Host內打入要測試的網址即會列出經過的路由。