當前位置:首頁 » 網頁前端 » goweb部署
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

goweb部署

發布時間: 2022-08-01 11:10:02

1. Ngrok有時很不穩定,有什麼更好的內網穿透方法

以下內容來自公眾號逆鋒起筆,關注每日干貨及時送達

原文:v0w.top/2020/08/11/IntranetProxy

前言

本文以滲透的視角,總結幾種個人常用的內網穿透,內網代理工具,介紹其簡單原理和使用方法。

1、nps-npc1.1 簡介

nps是一款輕量級、高性能、功能強大的內網穿透代理伺服器。目前支持tcp、udp流量轉發,可支持任何tcp、udp上層協議(訪問內網網站、本地支付介面調試、ssh訪問、遠程桌面,內網dns解析等等……),此外還支持內網http代理、內網socks5代理、p2p等,並帶有功能強大的web管理端。

  • 一台有公網IP的伺服器(VPS)運行服務端(NPS)

  • 一個或多個運行在內網的伺服器或者PC運行客戶端(NPC)



  • 1.2 特點
  • Go語言編寫

  • 支持跨平台

  • 支持多種協議的代理

  • web管理端


  • 1.3 使用方法
  • https://github.com/ehang-io/nps/releases


    NPS
    安裝配置

    找到自己伺服器相應版本的server:

    cd ~
    wget https://github.com/cnlh/nps/releases/download/v0.23.2/linux_amd64_server.tar.gz
    tar xzvf linux_amd64_server.tar.gz
    cd ~/nps

    在nps目錄下面會有一個nps可執行文件、conf配置目錄和web網頁目錄,我們只需要修改conf/nps.conf即可:

    vim conf/nps.conf

    需要改一下#web下面的幾個參數,

    web_host= 伺服器IP或者域名
    web_username= admin(登錄用戶名)
    web_password= 你的密碼
    web_port=8080(web管理埠)

    修改#bridge可以更改 NPC的連接埠。比如我們拿到一台許可權受限的伺服器,有防火牆,可能只有部分埠(80,443)可以出網,就需要修改成出網埠。

    ##bridge
    bridge_type=tcp
    bridge_port=443 # 修改連接埠
    bridge_ip=0.0.0.0


    啟動

    #Mac/Linux
    ./nps test|start|stop|restart|status 測試配置文件|啟動|停止|重啟|狀態

    #Windows
    nps.exe test|start|stop|restart|status 測試配置文件|啟動|停止|重啟|狀態

    NPC

    ./npc -server=你的IP:8024 -vkey=唯一驗證密碼 -type=tcp

    新建好客戶端後,也可以在+中看到,詳細的客戶端連接命令:

    在客戶端界面可以通過新增的方式添加客戶端連接,每一個連接的vkey都是唯一區分的。

    每一個客戶端,在建立連接後,都可以建立多個不同協議的隧道,這一個個隧道就是不同的代理了。

    通過不同的協議和埠就可以連接代理的內網機器。

    2、frp
    2.1 簡介

  • frp 是一個專注於內網穿透的高性能的反向代理應用,支持 TCP、UDP、HTTP、HTTPS 等多種協議。可以將內網服務以安全、便捷的方式通過具有公網 IP 節點的中轉暴露到公網。


  • 2.2 特點
  • 客戶端服務端通信支持 TCP、KCP 以及 Websocket 等多種協議。

  • 埠復用,多個服務通過同一個服務端埠暴露。

  • 跨平台,但是支持的比nps少一點

  • 多種插件,提供很多功能

  • 2.3 使用方法
  • 下載: https://github.com/fatedier/frp/releases

  • 以下內容摘自:https://segmentfault.com/a/11900000218768361. 通過 rdp 訪問家裡的機器
  • 1.修改 frps.ini 文件,為了安全起見,這里最好配置一下身份驗證,服務端和客戶端的 common 配置中的token參數一致則身份驗證通過:

    # frps.ini
    [common]
    bind_port = 7000
    # 用於身份驗證,請自行修改,要保證服務端與客戶端一致
    token = abcdefgh

    2.啟動 frps:

    ./frps -c ./frps.ini

    3.修改 frpc.ini 文件,假設 frps 所在伺服器的公網 IP 為 x.x.x.x:

    # frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    # 用於身份驗證,請自行修改,要保證服務端與客戶端一致
    token = abcdefgh

    [rdp]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 3389
    remote_port = 6000

    4.啟動 frpc:

    ./frpc -c ./frpc.ini

    5.通過 rdp 訪問遠程的機器,地址為:

    x.x.x.x:6000

    開機自啟

    針對 Windows 系統,為了便於使用,可以配置一下開機的時候靜默啟動。

    1.在 frpc.exe 的同級目錄創建一個 start_frpc.vbs:

    'start_frpc.vbs
    '請根據實際情況修改路徑
    CreateObject("WScript.Shell").Run """D:Program Filesfrp_windows_amd64frpc.exe""" & "-c" & """D:Program Filesfrp_windows_amd64frpc.ini""",0

    2.復制 start_frpc.vbs 文件,打開以下目錄,注意將

    改為你的用戶名:

    C:Users\ MenuProgramsStartup

    3.滑鼠右擊,粘貼為快捷方式即可。

    2. 通過 SSH 訪問公司內網機器

    frps 的部署步驟同上。

    1.啟動 frpc,配置如下:

    # frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    # 用於身份驗證,請自行修改,要保證服務端與客戶端一致
    token = abcdefgh

    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = 6000

    2.通過 SSH 訪問內網機器,假設用戶名為 test:

    ssh -oPort=6000 [email protected]

    3. 通過自定義域名訪問部署於內網的 Web 服務

    1.修改 frps.ini 文件,設置 http 訪問埠為 8080:

    # frps.ini
    [common]
    bind_port = 7000
    vhost_http_port = 8080
    # 用於身份驗證,請自行修改,要保證服務端與客戶端一致
    token = abcdefgh

    2.啟動 frps:

    ./frps -c ./frps.ini

    3.修改 frpc.ini 文件,假設 frps 所在的伺服器的 IP 為 x.x.x.x,local_port 為本地機器上 Web 服務對應的埠, 綁定自定義域名www.yourdomain.com:

    # frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    # 用於身份驗證,請自行修改,要保證服務端與客戶端一致
    token = abcdefgh

    [web]
    type = http
    local_port = 80
    custom_domains = www.yourdomain.com

    4.啟動 frpc:

    ./frpc -c ./frpc.ini

    5 .將www.yourdomain.com的域名 A 記錄解析到 IPx.x.x.x,如果伺服器已經有對應的域名,也可以將 CNAME 記錄解析到伺服器原先的域名。

    6.通過瀏覽器訪問http://www.yourdomain.com:8080即可訪問到處於內網機器上的 Web 服務。

    4. 對外提供簡單的文件訪問服務

    通過static_file插件可以對外提供一個簡單的基於 HTTP 的文件訪問服務。

    frps 的部署步驟同上。

    1.啟動 frpc,啟用static_file插件,配置如下:

    # frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    # 用於身份驗證,請自行修改,要保證服務端與客戶端一致
    token = abcdefgh

    [test_static_file]
    type = tcp
    remote_port = 6000
    plugin = static_file
    # 要對外暴露的文件目錄
    plugin_local_path = /tmp/file
    # 訪問 url 中會被去除的前綴,保留的內容即為要訪問的文件路徑
    plugin_strip_prefix = static
    plugin_http_user = abc
    plugin_http_passwd = abc

    2.通過瀏覽器訪問http://x.x.x.x:6000/static/來查看位於/tmp/file目錄下的文件,會要求輸入已設置好的用戶名和密碼。

    常用功能

    統計面板(Dashboard)

    通過瀏覽器查看 frp 的狀態以及代理統計信息展示。

    註:Dashboard 尚未針對大量的 proxy 數據展示做優化,如果出現 Dashboard 訪問較慢的情況,請不要啟用此功能。

    需要在 frps.ini 中指定 dashboard 服務使用的埠,即可開啟此功能:

    [common]
    dashboard_port = 7500
    # dashboard 用戶名密碼,默認都為 admin
    dashboard_user = admin
    dashboard_pwd = admin

    打開瀏覽器通過http://[server_addr]:7500訪問 dashboard 界面,用戶名密碼默認為admin。

    加密與壓縮

    這兩個功能默認是不開啟的,需要在 frpc.ini 中通過配置來為指定的代理啟用加密與壓縮的功能,壓縮演算法使用 snappy:

    # frpc.ini
    [ssh]
    type = tcp
    local_port = 22
    remote_port = 6000
    use_encryption = true
    use_compression = true

    如果公司內網防火牆對外網訪問進行了流量識別與屏蔽,例如禁止了 SSH 協議等,通過設置use_encryption = true,將 frpc 與 frps 之間的通信內容加密傳輸,將會有效防止流量被攔截。

    如果傳輸的報文長度較長,通過設置use_compression = true對傳輸內容進行壓縮,可以有效減小 frpc 與 frps 之間的網路流量,加快流量轉發速度,但是會額外消耗一些 CPU 資源。

    [TLS

    從 v0.25.0 版本開始 frpc 和 frps 之間支持通過 TLS 協議加密傳輸。通過在frpc.ini的common中配置tls_enable = true來啟用此功能,安全性更高。

    為了埠復用,frp 建立 TLS 連接的第一個位元組為 0x17。

    注意:啟用此功能後除 xtcp 外,不需要再設置 use_encryption。

    代理限速

    目前支持在客戶端的代理配置中設置代理級別的限速,限制單個 proxy 可以佔用的帶寬。

    # frpc.ini
    [ssh]
    type = tcp
    local_port = 22
    remote_port = 6000
    bandwidth_limit = 1MB

    在代理配置中增加bandwidth_limit欄位啟用此功能,目前僅支持MB和KB單位。

    范圍埠映射

    在 frpc 的配置文件中可以指定映射多個埠,目前只支持 tcp 和 udp 的類型。

    這一功能通過range:段落標記來實現,客戶端會解析這個標記中的配置,將其拆分成多個 proxy,每一個 proxy 以數字為後綴命名。

    例如要映射本地 6000-6005, 6007 這 6 個埠,主要配置如下:

    # frpc.ini
    [range:test_tcp]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 6000-6006,6007
    remote_port = 6000-6006,6007

    實際連接成功後會創建 8 個 proxy,命名為test_tcp_0, test_tcp_1 ... test_tcp_7。

    3、ew3.1 簡介

  • EW 是一套攜帶型的網路穿透工具,具有 SOCKS v5服務架設和埠轉發兩大核心功能,可在復雜網路環境下完成網路穿透。但是,現在工具已經不更新了。。。


  • 3.2 特點
  • 輕量級,C語言編寫

  • 可以設置多級代理

  • 跨平台

  • 但是只支持Socks5代理

  • 3.3 使用方法以下使用方法均摘自:http://rootkiter.com/EarthWorm/
  • 以下所有樣例,如無特殊說明代理埠均為1080,服務均為SOCKSv5代理服務.

    該工具共有 6 種命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。

    1. 正向 SOCKS v5 伺服器

    $ ./ew -s ssocksd -l 1080

    2. 反彈 SOCKS v5 伺服器

    這個操作具體分兩步:

    a) 先在一台具有公網 ip 的主機A上運行以下命令:

    $ ./ew -s rcsocks -l 1080 -e 8888

    b) 在目標主機B上啟動 SOCKS v5 服務 並反彈到公網主機的 8888埠

    $ ./ew -s rssocks -d 1.1.1.1 -e 8888

    成功。

    3. 多級級聯

    工具中自帶的三條埠轉發指令, 它們的參數格式分別為:

    $ ./ew -s lcx_listen -l 1080 -e 8888
    $ ./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999
    $ ./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999

    通過這些埠轉發指令可以將處於網路深層的基於TCP的服務轉發至根前,比如 SOCKS v5。首先提供兩個「二級級聯」本地SOCKS測試樣例:

    a)lcx_tran的用法

    $ ./ew -s ssocksd -l 9999
    $ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999

    b)lcx_listen、lcx_slave的用法

    $ ./ew -s lcx_listen -l 1080 -e 8888
    $ ./ew -s ssocksd -l 9999
    $ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999

    再提供一個「三級級聯」的本地SOCKS測試用例以供參考

    $ ./ew -s rcsocks -l 1080 -e 8888
    $ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
    $ ./ew -s lcx_listen -l 9999 -e 7777
    $ ./ew -s rssocks -d 127.0.0.1 -e 7777

    數據流向:SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks

    4、ngrok4.1 簡介

  • 4.2 特點
  • 官方維護,一般較為穩定

  • 跨平台,閉源

  • 有流量記錄和重發功能

  • 4.3 使用方法
  • 進入ngrok官網(https://ngrok.com/),注冊ngrok賬號並下載ngrok;

  • 根據官網給定的授權碼,運行如下授權命令;

  • ./ngrok authtoken 1hAotxhmORtzCYvUc3BsxDBPh1H_******************

  • ./ngrok http 80即可將機器的80埠http服務暴露到公網,並且會提供一個公網域名。



  • 可以通過官網的UI界面查看數據包和流量等等(但是要付費==、)

    還可以通過一些命令將內網的文件和其他TCP服務 暴露到公網中。

    有授權的設置文件共享

    ngrok http -auth="user:password" file:///Users/alan/share

    無授權的設置文件共享

    ngrok http "file:///C:\Users\alan\Public Folder"

    將主機的3389的TCP埠暴露到公網

    ngrok tcp 3389

    更多使用方法參考:https://ngrok.com/docs

  • 內網滲透之內網穿透

  • 開源內網穿透工具 frp 簡單使用教程

  • http://rootkiter.com/EarthWorm/

2. go語言可以做什麼

go語言在高性能分布式系統領域有很好的開發效率,可以主要用於伺服器端的開發,能夠進行處理日誌、數據打包、虛擬機處理、文件系統、分布式系統、資料庫代理等。

Go(又稱Golang)是Google的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發的一種靜態強類型、編譯型語言。Go 語言語法與C相近,但功能上有:內存安全,GC(垃圾回收),結構形態及 CSP-style並發計算。

撰寫風格:

在Go中有幾項規定,當不匹配以下規定時編譯將會產生錯誤。

每行程序結束後不需要撰寫分號(;)。

大括弧({)不能夠換行放置。

if判斷式和for循環不需要以小括弧包覆起來。

Go亦有內置gofmt工具,能夠自動整理代碼多餘的空白、變數名稱對齊、並將對齊空格轉換成Tab。

3. 終端服務的安裝部署

win2000/2003終端服務全程圖說攻略

呵呵,大家好!這個攻略總算有空做了!終端服務可能有些人聽說過,但是真正去用的怕還不是很多,大多隻是使用它的遠程管理。想真正用到終端的怕又不知道怎麼去管理和調整。而且更可惡的是,微軟竟有30天的使用限制,就算加了臨時授權也只能是90天使用的期限。而這些個問題在本攻略里都將一一解決。為了讓大家看的懂,俺採用了圖解的模式,占空間會大些俊俊不要哭撒!
嘿嘿~~!
由於俺這里沒有2000和2003的機器,只好用虛擬機在自己的機器上模擬了一個。2003占資源過大,所以本攻略採用2000做示範。其實在2003實現的方法是一樣的,唯一不同的是組策略的設置,這個以後再說了只好,如果有需要用2003的終端服務遇到困難恰巧又不知道怎麼解決的可以在這里提出,俺會盡量答復的。
言歸正傳,現在就請各位進入終端服務的世界。

首先是安裝操作系統,使用win2000server、2000ADV.Server或2003除webserver以外的任何一個伺服器版本均可,俺這里使用的win2000 Server。但是需要注意以下幾點。
1、該機器不可同時作為AD伺服器;
2、在安裝時授權一項必須是每伺服器方式,且需要把許可證數量調整的100個。
若在安裝時調整應在下圖所示步驟更改,授權模式為每伺服器,同時連接數里請填寫上100
賴皮熊上傳了這個圖片:
其他的按默認安裝即可,安裝完記得最少要打上sp2,不然你的終端服務會很不好用的哦。
有人問,要是安裝時選擇的是每客戶方式不行么?可以,但是這樣的話下邊的客戶端就必須有獨立的操作系統,並且這個操作系統還必須是微軟的win系列。這樣客戶端才能擁有一個內嵌的且被NT類伺服器認可的CA認證。
不過這這里俺還是推薦使用每伺服器,無論你的客戶端是什麼樣的,這樣可避免一些不必要的問題。
其實在安裝的時候選擇了每客戶也不是不可更改的,你可以在安裝完畢後打開控制面板找到「授權」一項,打開它。
賴皮熊上傳了這個圖片:
這時會彈出一個授權對話框
請在授權對話框里選擇每伺服器後選擇添加許可證。
賴皮熊上傳了這個圖片:
確定後會出現下圖界面,請在我同意處打鉤,然後選擇確定
賴皮熊上傳了這個圖片:
之後就是下圖這個樣子了,再然後一路確定就ok了。
值得注意的是微軟的協議為安裝完畢後只提供一次授權模式更換。
但我們還是可以改,只要忽略它的提示就可以了。後果么?俺不知道哦~~
賴皮熊上傳了這個圖片:
OK!現在我們可以安裝終端服務了,在安裝之前俺還想羅嗦一句,在完全安裝完畢終端服務以及終端服務授權激活之前千萬不要讓任何一抬設備用終端方式登入本伺服器,不然你哭都哭不出來。
切記!切記啊!!

進入控制面板里的「添加/刪除程序」,選擇「添加/刪除Windows組件」
賴皮熊上傳了這個圖片:
現在看見Windows組件向導了吧,往下拉到底,在「終端服務」和「終端服務授權」前打上鉤
然後選擇下一步
賴皮熊上傳了這個圖片:
接下來就要注意了,windows會讓你選擇兩種模式,具體選哪一種就看你需要的
第一種是「遠程管理模式」,這種模式和那個著名的PCanway的作用的相同的,實現過程卻相反。怎麼說呢,PCanway是用主機去找用戶端,終端服務遠程管理模式是用戶端反過來找主機。該模式只允許2個Administrator組成員同時登入。另,若使用該模式你可以不安裝終端服務授權,因為安了也不起作用。

第二種是「應用程序伺服器模式」,該模式允許所有有登入許可權的用戶在不超過同時連接上限時都可連接。在此模式下效果相當於若幹人同時使用一個伺服器做不同的工作而互不幹擾。

要是想真正使用終端服務的話,請選擇第二個
在這里俺選擇的就是「應用程序伺服器模式」

注意:2003下默認為「應用程序伺服器模式」,無此項選擇。

特別注意!如果你想該終端伺服器加入一個域的話,請務必將終端服務授權安裝在DC上,否則很有可能會無法授權!
賴皮熊上傳了這個圖片:
這一步又是兩個選擇
1、跟windows 2000用戶兼容的許可權
這個就是首選了,在此模式下,終端用戶在許可權設置和使用上和安裝win2000的普通計算機毫無二致。

2、跟Terminal Server 4.0用戶兼容的許可權
此模式是為了和舊版兼容才保留的,一般不用除非你想把該伺服器加入一個由NT4.0管理的域內。但此模式對應用程序兼容不是太好。

另外還有一種情況我們會選第二個選項的,那就是網路上還有一台以上終端伺服器,其中部分終端伺服器使用的是NT4,希望該伺服器與原有伺服器做負載均衡或是可互為交換用戶。

說到這里有人會問不是說終端服務是2000server版以後才有的么?

其實不是,第一版帶終端服務的操作系統是NT4,但只有一個版本帶,那個版本叫做NT4 TSE(TSE代表Terminal Server Editor),是個英文版。而其他版本的NT4帶的服務是大家常說的無盤。

注意:2003下此選擇為「增強的安全性」和「寬松的匹配方式」,其實是差不多的,大同小異而已。
賴皮熊上傳了這個圖片:
這一步系統會提醒你安裝終端服務後,可能會有些程序不能正常運行。一般這個提醒是因為這些程序沒經過微軟的測試,所以不用管它,直接下一步好了。
賴皮熊上傳了這個圖片:
這一步系統會詢問許可證伺服器要安裝在什麼位置,一般默認就行,下一步吧。
賴皮熊上傳了這個圖片:
開始安裝了,記得放你的2000安裝盤到光碟機里哦!在此過程中系統可能會詢問2000安裝盤路徑。
賴皮熊上傳了這個圖片:
終於安完了,哪兒有個寫著「完成」的東東,該知道怎麼辦吧?另外,順手把「添加/刪除程序」的界面也關了吧。
賴皮熊上傳了這個圖片:
啊?!要重新啟動么?
真的要重新啟動么?
真的真的要重新啟動么?

少廢話!!叫你重新啟動你就要重新啟動好了~!
賴皮熊上傳了這個圖片:

手酸了,休息會。俺離開前先再羅嗦一句:雖然終端服務安完了,可是授權還沒有激活!這期間千萬不要讓用戶端上啊……
接下來的部分該輪到終端服務的授權問題了。
其實如果你的用戶端是win98/me/2000/xp等微軟的圖形界面的話並使用每客戶的授權方式並不一定需要這個終端協議的license。可是現在終端服務授權不知道為什麼並不是很穩定,所以為了保險起見還是授權下比較好的。

注意:一但你選擇了安裝終端服務授權,CA認證方式一定要是每伺服器!

對了,你的2000應該重新啟動完畢了吧。
OK~! 現在讓俺們開始吧……
第一步應該是這樣子的:
開始→程序→管理工具→終端服務授權
賴皮熊上傳了這個圖片:
下面就是「終端服務授權」的界面了
請按照下圖箭頭所指,點擊你的滑鼠
賴皮熊上傳了這個圖片:
在連接授權伺服器的提示後會出現下圖的界面。
看見你的裝有授權服務的機器名么?
俺的是VPC2000SERVERME,你的會是什麼呢?猜想中……

注意:你的機器名一定要符合DNS命名標准,如果不符合的話請更改後再繼續!!

註:DNS命名標准如下:
1、只能使用26個英文字母、數字和中劃線
2、必須用英文字母開頭
3、不可使用特定單詞,如DOS和windows所包括的內部命令以及外部命令,如、command等等。

在下圖中你的機器名左面有一個帶紅叉的證書標記,這說明你的授權伺服器還沒有被激活,那麼就讓我們來激活它吧,免費的哦!

你要做的就是對著授權伺服器的名字點一下滑鼠的右鍵……
賴皮熊上傳了這個圖片:

在彈出的上下文菜單里選擇「激活伺服器」
賴皮熊上傳了這個圖片:

呀~~ 忘記一點很重要的!
在連網前請務必打上沖擊波補丁!!!!千萬!不然可能你的工作全部白做。
再有一點就是如果你希望能免費使用終端服務的license的話,就請不要打sp4。sp4會讓你的license不可用(破解的就這個不好,沒法子^_^),只能使用臨時許可證,這個證是90天限制的。當然俺還有法子,不過這里賣個關子先。

這一頁沒啥好說的,按下一步就行
賴皮熊上傳了這個圖片:

連接方法一定要選擇「萬維網」,然後下一步
賴皮熊上傳了這個圖片:
到這步先別做下去(其實想做下去也不行的),看見圖中紅線圈的網址了沒?把它和下面的產品ID記錄下來,打開你的IE(不一定要在這台機器上)在地址欄里輸入那個網址。
注意是不是HTTP開頭而是HTTPS開頭的。
賴皮熊上傳了這個圖片:

網頁打開一看,啊?!鳥文的……
汗…………
怎麼辦?當然有法子,在語言選擇欄里選擇Chinese(Slmplitied)然後點一下右邊寫著「go」的紅色小圓圈……
賴皮熊上傳了這個圖片:

哈哈~~! 還是方塊字讓人覺得親切呀!
請往下翻頁,在最下面有個選擇選項,請選擇「啟用許可證伺服器」
然後做什麼呢?
還用問嗎?下一步!
賴皮熊上傳了這個圖片:

接下來是信息收集頁面了

記得前面叫大家記錄下的產品ID么?
寫到產品ID一欄里
姓、名、公司隨便填寫,國家選擇「中國」
嘿嘿~!比爾蓋茲要是知道俺填啥了不知道會怎麼想,俺是這么填的:
姓:Jiubugaosuni (就不告訴你)
名:Younengzenmeyang (又能怎麼樣)
公司:Ankendingbushiweiruande (俺肯定不是微軟的)

下一步吧
賴皮熊上傳了這個圖片:

信息確認,直接可以點下一步
賴皮熊上傳了這個圖片:

紅色的方框里就是我們需要的許可證伺服器ID了,一共是35位
把它記錄下來即可。

注意:本文中所有ID均為大小寫敏感,請注意你的大小寫!
賴皮熊上傳了這個圖片:

還記得俺們做了一半許可證伺服器激活向導么?
現在可以反回去把上面那個35位的許可證伺服器ID填入了

注意:這個ID和以後本功略里提到的ID均為一次有效,下次再申請時會不一樣,所以使用後無需保留。

填完了吧?那麼我們繼續下一步~!
賴皮熊上傳了這個圖片:

緊張的短暫等候~
賴皮熊上傳了這個圖片:

由於本攻略需要,俺們現在不安裝許可證,所以請吧「立即安裝許可證」一欄前面的勾勾去掉。
賴皮熊上傳了這個圖片:

呵呵,又看見完成按鈕了哦!
賴皮熊上傳了這個圖片:

現在到終端服務授權的界面瞅一眼,看見右邊的「已激活」了沒?
看到的恭喜你了!
沒看到的肯定是做錯了哪一步,好好檢查下吧,呵呵!
賴皮熊上傳了這個圖片:

等等~!
還沒完呢!!!

現在咱是激活了許可證伺服器了,可以還沒有安裝license

其實到這一步終端服務已經是完全可用了,你可以將你的伺服器時間調整到若干年以後,這里俺2013年6月1日為例。
把伺服器的時間調整到2013年6月1日以後,讓你的所有終端都登一次終端伺服器,這樣子在終端服務授權里就會產生一個為期90天的臨時許可。即為:某某機器的許可在某天到期。其中的某天是按授權伺服器系統時間+90計算的,由於咱已經把授權伺服器的系統時間改為2003年6月1日,那麼到期時間即為2013年8月30日。最後再把授權伺服器的系統時間改回今天的日期,比如2004年6月25日。
這樣這個許可證的使用期限就平白地多了9年,嘿嘿!

不知道大家看明白沒?不明白的自己想想去,這是授權伺服器的一個bug。

要是你想真正激活授權的license的話,在安裝許可證(即license)前,請不要讓用戶終端登入,因為一旦生成臨時許可證的話,就無法更改了,除非你將伺服器格式化重新安裝。除非你用的是正版windows+正版license。
包括你打sp4的話也可能會出現臨時許可的狀態。如果你一定要用sp4保障你的安全的話,也只好使用上邊說的方法了。

這個臨時許可的問題也就是俺一直強調在許可證完全安裝完畢前不要讓用戶端登入的原因!

那麼要是想想真正激活授權的license又該怎麼辦呢?
這就是本功略下面將要討論的。

建議:
1、記得不要讓你的用戶端登入(不是俺羅嗦,這個問題真的很重要)
2、看下面的攻略(其實後面才是本功略的重頭戲)

(未完)
現在該安裝許可證了

再次如前面那樣打開「終端服務授權」的界面
這次對著你的許可證伺服器點擊你的滑鼠右鍵後選擇「安裝許可證」
賴皮熊上傳了這個圖片:

又是不需要考慮的一頁,直接按下一步吧
賴皮熊上傳了這個圖片:

到這步還是需要等一下下再做
先在IE里打開下面的鏈接吧
https://activate.microsoft.com/
賴皮熊上傳了這個圖片:

這次記得要選擇「安裝客戶端訪問許可證令牌」
然後「下一步」
賴皮熊上傳了這個圖片:

填上前面的那個35位的許可證伺服器ID
許可證程序一定要選擇「其他協議」
國家選中國,其他的隨便填,帶星號的項目填滿即可

填完後按下一步
賴皮熊上傳了這個圖片:

這一步有4個選擇,具體看你的需要了,選錯了會哭的
具體為:
1、Windows Server 2003 終端伺服器「每設備」客戶端訪問許可證
2、Windows Server 2003 終端伺服器「每用戶」客戶端訪問許可證
3、Windows 2000 Server 終端服務客戶端訪問許可證(每設備)
4、Windows 2000 Server 終端服務 Internet 連接器訪問許可證

選擇方法為:
1、如果你用的是2003當然選1或2,用2000當然選3或4
2、如果是用2000,下面的客戶端用IE登入終端服務的話,選4
3、如果是用2000,下面的客戶端用終端服務客戶端的話,選3
4、如果是用2003,並且下面客戶端為嵌入式系統選擇1
5、如果是用2003,並且下面客戶端為在微軟的圖形界面操作系統上安裝的終端服務客戶端選擇2

注1:上邊的幾種方式以後我們會提到
注2:如果你使用的是2003,並且選擇了「每用戶」的許可,那麼在本文一開始提到的「授權」里的授權方式也應該相應為「每用戶」方式。

在上訴情況中請根據自己的實際情況選擇

俺這里選擇的是Windows 2000 Server 終端服務客戶端訪問許可證(每設備)

PS:這個功略會做的很長,俺計劃將終端服務的管理和一些秘籍也做進來,並不是僅僅寫它的安裝,不知道到家覺得好不好?不知道俊俊會不會心疼他的空間呢?嘿嘿~~~!
賴皮熊上傳了這個圖片:

在「協議號碼」一欄里填上一個從微軟那得來的7位協議號(至關重要)

然後選下一步

俺發現這個帖子看的人很多回的人真的很少。
除了上面的幾位兄弟以外。
所以俺決定……
嘿嘿~~! 俺也壞一把~~!
上面說的7位協議號俺可是千辛萬苦才得來的
想要的回帖留e-mail,俺給你們發!!
賴皮熊上傳了這個圖片:

又是一個確認頁,沒什麼意思直接往下吧
賴皮熊上傳了這個圖片:

烏拉~!
得到許可證密匙包ID了,數一數,還是35位的
賴皮熊上傳了這個圖片:

回到授權向導
趕緊把許可證密匙包ID填到下面的7個空格里!

還等啥呢?
趕緊按:
下~~~~~~一~~~~~~~步~~~~~~~~!!!!!
賴皮熊上傳了這個圖片:

經過一個令人緊張的處理過程後,看到下面這個畫面。
趕緊按完成吧!
賴皮熊上傳了這個圖片:

最後讓我們回到「終端服務授權」的界面看一眼。
選擇你的授權伺服器,在右邊看到許可證總數100 可用100了沒?
看見了?那麼恭喜你!!
大功告成!!!
沒看見?555~~~~~~~
還是你自己哭去吧,俺是不陪你了……
賴皮熊上傳了這個圖片:

說是大功告成,其實還沒有。
你需要重新啟動一下你的伺服器(切記!),然後找一個終端登入一下。
然後在終端服務授權的界面瞅一眼生成的是臨時許可還是正式許可。
注意,臨時許可有頒發時間和到期時間,正式許可只有辦法時間,到期時間為「—」
如果是臨時許可,那麼恭喜你,你可以重新安裝2000了
如果是正式許可,那麼也恭喜你,不要懷疑了,你真的真的大功告成了!!

注意:本功略仍未完待續!

嘿嘿?沒那麼快結束。
以後的內容如下:
1、用戶端製作也連接(RDP客戶終端方式、MMC方式、WEB方式及PDC)
2、終端模式下安裝程式方法(一般軟體、特殊軟體、非兼容軟體)
3、終端的管理與維護(介紹一些windows自帶的工具和命令,以及終端列印處理)
4、如何終端伺服器安全(數據安全、許可權設置、病毒防護等)

最後,還有Mateframe XP的ICA(獨立運算協議)與RDP的比較等等。
當然,還有2000下的RDP5和2003下的RDP6的區別

俺一直很忙,很少有空,所以寫的斷斷續續的。
也沒法子啊,俺就這一台機器,所以用虛擬PC做的兩個系統。又要抓圖還要做圖形處理,同時還得做一寫別的工作,系統內存才256,痛苦啊……
估計全寫完得個一年半載的,嘿嘿,俊俊你就等著加硬碟吧。

對了,怎麼不給俺加精呢?
俺強烈要求加精、置頂,再給俺加5顆小星星吧。
本文絕對原創!!俺花這么大力氣再不加精也太不夠意思了吧……

回復: WIN2000終端問題?
引用:
________________________________________
最初由 zhang940 發布
這位大哥,WIN2000的終端已經做好了,那麼其他的客戶機通過怎樣的方式可以登陸這個終端伺服器呢?以及怎麼使用這個終端?你介紹的是有盤還是無盤,還是有盤無盤都可以使用的呢》你能介紹一下嗎?小弟向你請教。不知你老兄能否給小弟一個圓滿的解答呢?
________________________________________

終端服務可以說的一種新型的無盤,也可以說的最原始的無盤。
大家可能見過銀行用的字元終端吧,那玩意就是2000下終端服務的前身。不過那個是用在unix下的,非常的穩定,微軟把它圖形化後功能是強了很多,但是穩定性還得進一步改進。
至於和無盤的區別,以後俺會說到的。
至於有盤無盤誰能使用?這個問題很簡單,就是誰有可以安裝終端服務客戶端的基礎,誰就可以使用。
這個支持客戶端的基礎可以是unix、可以是任何一個版本的windows、也可以是Linux 或BSD。甚至於麥金塔和dos也可以。如果你要使用無盤的就必須加一個電子盤或存儲卡,內建或燒錄一個帶WINCE或BSD之類的內嵌系統,並附上相應終端服務客戶端,但這個系統與無盤是有很大的區別的。另外,終端服務還可以採用web的方式,就是說,只要你有IE5以上的瀏覽器,你就可以作為客戶端登入,當然,伺服器端需要一定設置,而且你得知道管理員給的密碼。具體的區別和怎麼用,以後俺會在這里詳細說明,請注意本帖的更新情況。
最近汽車廠因為廠內系統調整,放假9天,所以這幾天內俺是寫不了什麼了,等俺放假回來再說吧。俺虛擬的伺服器還在單位呢。
俺公司使用qq不怎麼方便
可以告訴你們msn號: [email protected]

現在我們的終端伺服器做完了,那麼客戶端怎麼做呢?
俺把它分為3類
1、內嵌操作系統為基礎的客戶端
2、windows等操作系統為基礎的客戶端
3、WEB客戶端
其中第一種一般是某廠商做好的成品,只需要配置IP就可以直接使用,如實達、鹿石、慧智等。俺在這里就不介紹了,有興趣的可以去這些廠商的主頁看看。

再有一個,如果你使用的是win2000 OEM版,導致無法激活終端服務授權的話請去http://www.microsoft.com/china/Wind...54/download.asp
最近一直很忙,倒不出空來繼續,實在不好意思了。
接下來我們說說 windows等操作系統為基礎的客戶端
微軟提供了4種類似客戶端
1、NT4.0TSE中帶的RDP4客戶端
由於俺沒這個版本,所以就不討論了先
2、WIN2000下的RDP5.1客戶端
3、XP或WIN2003下的RDP6客戶端

不同的客戶端所能實現的功能不一樣
如支持RDP5的是256色,而RDP6則最高可以支持到16位色
RDP5不支持音頻,RDP6支持音頻等等
但高版本客戶端是可以支持低版本服務端的,功能支持上以服務端為准
如果一定要用低版本客戶端去連接高版本服務端的話,也不是不可以,只是部分高版本的功能無法支持,如色彩位深及加密等級。
下面我們一起來看一下win2000下客戶端的製作和安裝吧
首先在你的終端伺服器上找到
開始→程序→管理工具→終端服務生成器
賴皮熊上傳了這個圖片:

選擇你的目標驅動器,並勾選格式化磁碟,然後確定
賴皮熊上傳了這個圖片:

准備兩張3.4英寸磁碟,插入第一張,然後確定
賴皮熊上傳了這個圖片:

確認頁,不理它直接確定
賴皮熊上傳了這個圖片:

又出現這個界面了,換第二張磁碟後確定
賴皮熊上傳了這個圖片:

到這一步,安裝盤已經製作完成,選確定吧
賴皮熊上傳了這個圖片:

點取消退出就行了
賴皮熊上傳了這個圖片:

現在到你們想安裝客戶端的機器上放進安裝盤的第一張,運行裡面的setup

註:1、如果不方便使用3.5寸盤的話可以將安裝程序拷貝到其他介質上,不會影響安裝。但是製作安裝程序時,只能使用軟盤來做介質。
2、XP PRO和2003無需安裝該客戶端,終端服務客戶端在其系統中已經自帶。位置在開始→所有程序→附件→通訊→遠程桌面連接,如沒有請在添加/刪除windows組件里添加
賴皮熊上傳了這個圖片:

選擇繼續後看到姓名與單位信息
請填入相關內容後選擇確定
賴皮熊上傳了這個圖片:

確認頁,按確定即可
賴皮熊上傳了這個圖片:

許可聲明,除了同意還能有什麼法子呢?
不同意的話會立即退出安裝,沒法子,選我同意吧
賴皮熊上傳了這個圖片:

選擇好安裝路徑後點擊下圖紅色箭頭所示處進行安裝
賴皮熊上傳了這個圖片:

為了安全,在這一頁請選否。
除非你想要這台計算機上的所有用戶都可以使用終端服務
賴皮熊上傳了這個圖片:

選擇程序組位置以及顯示名稱。
這一步可以什麼都不該使用默認,直接點繼續即可
賴皮熊上傳了這個圖片:

安裝完成了,選確定吧
賴皮熊上傳了這個圖片:

如果你想使用XP和2003下帶的客戶端的話,只要你有XP PRO或2003的安裝盤就可以了。
XP 終端服務客戶端安裝方法如下:
放進XP PRO安裝盤讓其自動播放,無自動播放的話可以進入該盤選擇setup
我們可以看到下面的畫面
賴皮熊上傳了這個圖片:

選擇「執行其他任務後」我們看到下圖。
選擇「設置遠程桌面連接」後稍等一會便開始安裝終端服務客戶端,其過程和上面2000的終端服務客戶端大同小異,俺這里就不多說了。
賴皮熊上傳了這個圖片:

至於從2003安裝盤上安裝終端服務客戶端的法子和XP一模一樣,大家應該一看就會了的
已收到協議號,謝謝你了,只是此協議號在WINDOWS2003上
不知是否可用.請告知.
此協議號在NT和2000上通用,2003上可以申請出許可證令牌,但是具體能不能使用俺還沒試驗過。
一般俺都是用改時間的方法實現,畢竟誰的電腦也用不了十年嘛
在連接授權伺服器的提示後會出現下圖的界面。
看見你的裝有授權服務的機器名么?
俺的是VPC2000SERVERME,你的會是什麼呢?猜想中……
但我在2003下竟看不到裝有授權服務的機器名
請指導
在2003的終端服務授權的做邊的樹形目錄里有個所有伺服器吧。
所有伺服器左邊是+號的話你看看裡面是什麼,若是-號,那麼你的終端授權伺服器的狀態不對
很大的可能是你的機器已經加入某個域里,安裝終端服務授權的卻不是域伺服器,由此無法查找
引用:
________________________________________
最初由 miffeny 發布
是-號
新裝的2003 ,沒有加域,但裝了程序伺服器及DNS伺服器
________________________________________

問題在DNS伺服器上,這個服務按微軟的規劃是應該裝在DC上的,這樣的話要解決你的問題怕只有把該機器加入域,並在域伺服器上安裝終端服務授權
微軟不推薦終端服務授權安裝在DC以外的機器上,如果不遵照他們的推薦,一旦環境不純的話,我們的終端服務授權往往會找不到授權伺服器的.
好象不關DNS 的事,總是提示未找到授權伺服器。
問題是你有了dns授權系統就認為你有dc,並且授權服務在dc上,找不到dc不就是找不到授權嗎?
俺原先使用的2003的微軟的預覽版,沒有這個問題。後來用過一個D版,在添加組件中,終端服務添加後大小為0,此版下終端服務不可用。不知道你使用的是什麼版本?也許會是這方面的問題。
其他可能為,你的版本本身不支持授權服務,如果是這樣的話,建議使用一個其他計算機安裝終端服務授權解決
另外在非dc上安裝終端授權本來就是個權宜之計,如果有條件,強烈推薦將授權服務安裝在DC上。

如果安裝時沒有這么操作,是否還能補救?現在已經過期了,無法遠程登錄了
用俺前面說過的調整日期的辦法可以補救,不過在調整日期前需要改客戶端的MAC地址
其實聰明的兄弟也一定想到了,授權伺服器判定一台設備身份的方法就是找它的MAC地址。
看不清楚聯系我的QQ65407709我把這個文件傳給你。

4. 《GoWeb編程》epub下載在線閱讀,求百度網盤雲資源

《Go Web編程》(謝孟軍)電子書網盤下載免費在線閱讀

鏈接:https://pan..com/s/18PQKmOQtUQ4G7ztJ9MZA-Q

密碼:36gi

書名:Go Web編程

作者:謝孟軍

豆瓣評分:7.6

出版社:電子工業出版社

出版年份:2013-6-1

頁數:329

內容簡介:

《Go Web編程》介紹如何用Go語言進行Web應用的開發,將Go語言的特性與Web開發實戰組合到一起,幫讀者成功地構建跨平台的應用程序,節省Go語言開發Web的寶貴時間。有了這些針對真實問題的解決方案放在手邊,大多數編程難題都會迎刃而解。

在《Go Web編程》中,讀者可以更加方便地找到各種編程問題的解決方案,內容涵蓋文本處理、表單處理、Session管理、資料庫交互、加/解密、國際化和標准化,以及程序的部署維護等運維方面的知識,最後還介紹了一個快速開發的框架幫助您迅速進入Go語言的Web開發。

作者簡介:

謝孟軍,網名ASTA謝,現就職於盛大雲,高級研究員,技術經理,主要從事盛大雲分發的系統研發工作,努力為盛大游戲、盛大文學、酷六等提供更好的CDN服務。熱愛技術,尤其關注實現伺服器端高性能、高可用等相關技術。開發了beego、beedb等各類基於Go語言的開源框架和庫,致力於Go語言的推廣和研究。

5. 嵌入式web伺服器都有哪些,可不可以將tomcat部署到Arm上

可以移植到ARM上的Web伺服器有很多,得看具體需要支持哪些應用了。
只是靜態頁面的話好說,Apache就沒問題,還有很多輕量級Web伺服器也可以用,比如說GoAhead,boa,lighttpd,shttpd,thttpd。
動態頁面asp,php之類的,可以通過擴展程序如CGI(現在用FastCGI的很多)支持起來。支持FastCGI的很多

6. Go語言以後會不會成為web主流開發語言

不會成為web主流
go是設計初衷來做系統應用和取代C++的....
目前主要用傳統編譯型語言編譯成機器碼的形式...
和web開發的跨平台標准化等特性有距離...
會成為很方便系統應用開發、客戶端開發的語言...

7. 有哪些不錯的golang開源項目

根據官方1.4版本的發布時候(2014.12)判斷(官方說大概六個月後出新版本)預計五月底六月初。因為這次的版本改進幅度有點大,不排除延遲發布的可能。

8. 我在用go桌面的製作工具的時候jre jdk 都安裝好了 環境變數也設好了但用不了themesfactory_beta2.jnlp求解

(1)編寫相關應用,打包成一系列jar;
(2)根據jnlp文件說明修改相應的jnlp內容,修改相應的url和jar;
(3)部署jnlp文件和jar到相應的web容器;
(4)編寫訪問網頁,即可使用該應用〔亦可下載jnlp文件使用jws運行應用〕;
四。補充
如果jar需要訪問本地文件資源,需要為你的jar文件簽名
先在命令行用keytool產生一個keystore文件.
keytool -genkey -keystore you.keystore –alias youApp
命令行用jarsigner簽名,當然這時候需要生成keystore時的密碼
jarsigner -keystore you.keystore appTest.jar youApp

9. 如何使用Docker部署Go Web應用程序

步驟一 - 創建Dockerfile

如下的Dockerfile可以滿足以上的要求:
**FROM** golang:1.6

*# Install beego and the bee dev tool*

**RUN** go get github.com/astaxie/beego && go get github.com/beego/bee

*# Expose the application on port 8080*

**EXPOSE** 8080

*# Set the entry point of the container to the bee command that runs the*

*# application and watches for changes*

**CMD** ["bee", "run"]

第一行,
FROM golang:1.6

將Go的官方映像文件作為基礎映像。該映像文件預安裝了 Go 1.6 . 該映像已經把 $GOPATH 的值設置到了 /go 。所有安裝在 /go/src 中的包將能夠被go命令訪問。

第二行,
RUN go get github.com/astaxie/beego && go get github.com/beego/bee

安裝 beego 包和 bee 工具。 beego 包將在應用程序中使用。 bee 工具用語在開發中再現地重新載入咱們的代碼。

第三行,
EXPOSE 8080

在開發主機上利用容器為應用程序開放8080埠。

最後一行,
CMD ["bee", "run"]

使用bee命令啟動應用程序的在線重新載入。

步驟二 - 構建image

一旦創建了Docker file,運行如下的命令來創建image:
docker build -t ma-image .

執行以上的命令將創建名為ma-image的image。該image現在可以用於使用該應用程序的任何人。這將確保這個團隊能夠使用一個統一的開發環境。

為了查看自己的系統上的image列表,運行如下的命令:
docker images

這行該命令將輸出與以下類似的內容:
REPOSITORY TAG IMAGE ID CREATED SIZE

ma-image latest 8d53aa0dd0cb 31 seconds ago 784.7 MB

golang 1.6 22a6ecf1f7cc 5 days ago 743.9 MB

注意image的確切名字和編號可能不同,但是,應該至少看到列表中有 golang 和 ma-image image。

步驟三 - 運行容器

一旦 ma-image 已經完成,可以使用以下的命令啟動一個容器:
docker run -it --rm --name ma-instance -p 8080:8080 \

-v /app/MathApp:/go/src/MathApp -w /go/src/MathApp ma-image

讓咱們分析一下上面的命令來看看它做了什麼。

。docker run命令用於從一個image上啟動一個容器

。-it 標簽以交互的方式啟動容器

。--rm 標簽在容器關閉後將會將其清除

。--name ma-instance 將容器命名為ma-instance

。-p 8080:8080 標簽允許通過8080埠訪問該容器

。-v /app/MathApp:/go/src/MathApp更復雜一些。它將主機的/app/MathApp映射到容器中的/go/src/MathApp。這將使得開發文件在容器的內部和外部都可以訪問。

。ma-image 部分聲明了用於容器的image。

執行以上的命令將啟動Docker容器。該容器為自己的應用程序開發了8080埠。無論何時做了變更,它都將自動地重構自己的應用程序。自己將在console(控制台)上看到以下的輸出:
bee :1.4.1

beego :1.6.1

Go :go version go1.6 linux/amd64

2016/04/10 13:04:15 [INFO] Uses 'MathApp' as 'appname'

2016/04/10 13:04:15 [INFO] Initializing watcher...

2016/04/10 13:04:15 [TRAC] Directory(/go/src/MathApp)

2016/04/10 13:04:15 [INFO] Start building...

2016/04/10 13:04:18 [SUCC] Build was successful

2016/04/10 13:04:18 [INFO] Restarting MathApp ...

2016/04/10 13:04:18 [INFO] ./MathApp is running...

2016/04/10 13:04:18 [asm_amd64.s:1998][I] http server Running on :8080

10. golang適合做web開發嗎

適合。框架足夠成熟了 A Survey of 5 Go Web Frameworks
小型項目你甚至不用框架,用net/http http - The Go Programming Language
常用庫也成熟了 Top - Go Search
golang的web後端即使不concurrent也比php,ruby,python快很多很多
golang里用concurrent真的非常方便,非常非常快,超大web項目golang scale成本低
如果你想,golang的部署可以比php更方便,使用go get和http.ServeAndListen()可以不用nginx和apache
對於文件改動重新編譯其實並不是大問題,看pilu/fresh · GitHub,其實你自己寫shell腳本(也可以直接用go寫,因為它本身就是系統語言)監控文件系統改動然後自動重新build,即使是C/C++的項目這也不是大問題,人們不用C/C++寫web是因為它們不是寫web app的最佳選擇
golang寫的代碼編譯通過後,要比scripting language魯棒,因為go compiler強制一些最佳實踐