[Chinese/中文]最近我的Visual Studio 2013內建的IIS Express 實在跑太慢了,而且常常回報無服務回應的錯誤。根據此條目,看起來像是logger元件出問題。為了解決此一問題,我們可以嘗試以下步驟:1. 用系統管理員權限開啟命令提示字元視窗 (cmd console)2. 輸入以下指令 (1) cd %systemroot%system32inetsrv (2) appcmd set config /section:urlCompression /doStaticCompression:True (3) appcmd set config /section:urlCompression /doDynamicCompression:False (4) appcmd set config /section:httpLogging /dontLog:True [English]Recently, my Visual Studio 2013’s built-in IIS Express runs too slower and it often reports errors about no service response.According to the thread, it seems logger component of IISExpress broken.To fix the problem, we can […]
Category: 網路
Google表單自動寄信給填表人
2013/09/15 updated: 由於sheet的API呼叫跟Form的呼叫API不同,這邊加入Google表單的範例。2015/02/27 updated: Google Docs的API改版了,筆者已經發布新版的寫法,請移駕至此。現在網路上教的Google Docs問卷,都只有填表格功能,難道沒有讓使用者填寫完資料後,寄一份資料到使用者信箱的功能嗎?因為我們有時候需要製作收據系統之類的…。 答案是有的!我們只要動幾根手指頭,依照下列步驟,就可以輕易開發出這個功能喔!請依照以下步驟一步一步跟著我做即可。請注意,如果是直接用Google表單的話,請注意第三步驟有些不同。 開發步驟Step 1. 先開啟Google試算表。 Step 2. 假設我的表單只有兩個欄位:姓名與Mail。按上方工具列,選擇工具→表單→編輯表格,先建立表單內容,然後按下存檔。 Step 3. 回到Google表格編輯頁,這次請選擇工具→指令碼編輯器,出現程式碼視窗後,輸入下列程式碼,如圖 2 (標題與內容請自行修改),這邊有Google試算表跟表單兩種不同API實現方式,請注意一開始是使用Google表單還是試算表製作: (Google試算表版本) (Google表單版本) Step 4. 接著在工具列上面,選擇”觸發器”→現有指令碼的觸發程序 Step 5. 由於現在都沒有加入任何觸發器,因此我們可加入一個新的。 (1) 請點選”Add a new trigger”連結 (2) 設定執行的函式為sendMails,Events 來源為From spreadsheet,動作為On form submit,然後儲存關閉。 這樣子就大功告成了! 實際測試 Step 1. 先進入即時表格,輸入內容,按下送出。 Step 2. 系統會提醒你回應訊息。(回應訊息可在編輯表單時,右上方功能列的更多動作→編輯確認訊息 自訂) Step 3. 請到您的信箱確認!沒錯,訊息已經收到囉。 註:沒想到這篇Post完沒多久,才發現已經有人寫好App可以安裝了。 http://disp.cc/b/3-2oPJ […]
[Windows] Port 80被佔用導致Apache無法啟動
我們在Windows上使用AppServ架設網頁服務時,有時候會發現Port 80被佔用,導致無法啟動的狀況。 面對這樣子的窘境,可以參照以下步驟來執行: 開啟命令提示字元視窗,輸入以下指令:netstat –ano ,找出佔用Port 80的程式PID 開啟「工作管理員」,到「處理程序」標籤,按上方的「檢視」→「選擇欄位」,把PID選項勾選起來。 看看是哪一個Service佔用了80 Port? 就處理處理一下吧。 一般而言,最常發生Skype佔用80 Port的狀況,若發生此狀況,請參考這邊的解決辦法。 倘若發現PID = 4,且來源是NT Kernel佔用的話,請別急著把它砍掉。 請下達以下指令: net stop http Sc config http start= disabled (注意,這一行請完整複製,大小寫與空格都有差異) 完成後,最好重新開機一下,這樣子問題應該就解決了。 參考資源 Getting Apache to run on port 80 on Windows 7 [問題排除] 80PORT被佔用? 如何查出佔用PORT的方法 Skype 佔用了 port 80
CDN如何加速網站讀取速度?
在雲端運算(氾濫)的時代,所有服務都講求加速再加速,傳統的單一伺服器(Server)服務多個用戶端(Client)的方法,在面臨行動網路用戶迅速增多,而造成大量資源索取時,無論是資料的傳輸、服務的回應時間,反而變得「緩不濟急」。 因此,CDN(Content Delivery Network,內容傳遞網路)的技術興起,正是運用雲端運算分散式計算的概念,加速資料的存取與降低伺服器端的負載。 傳統網路服務模式與CDN服務模式(取自Wiki) 我們傳統的網路服務模式如上圖左,所有的用戶端都連線到伺服器上索取資源。但是,當用戶數量成長到百萬數量級時,伺服器的負擔便會開始變得重,回應時間慢,開始發生取不到資源的狀況。而這個現象若發生在向伺服主機業者租賃虛擬主機或是雲端主機的服務提供商(Service Provider, 這邊簡稱SP) 而言,可不是一個好兆頭。因為這些主機商會跟SP依照頻寬、IO數量與CPU運算量計價,代表著錢都還沒進來就開始付出昂貴的費用了,更不用說因為網路服務不穩、回應時間太慢造成客戶流失的慘劇。 因此,CDN的出現變成了這些服務提供商的救星。CDN網路主要是靠著分散在各地的(雲端)主機,就近提供這些服務提供商的用戶資源。 它有著巨量的頻寬與速度,只要服務提供商將主機網址(例如,http://www.example.com) 寄放給CDN,CDN業者的主機便會先到http://www.example.com 抓取靜態的資料(主要是圖檔、影片、一些雜七雜八肥大的線上存取函式庫等等),然後將這些靜態資料派送給這一大群CDN網路內的主機。 因此,過沒多久,所有的CDN主機都有同樣的資料複本(如上圖右),那麼使用者在跟這個SP提供的服務做連線時,在索取圖像、影片等資料時,會「就近」選擇最近的CDN。例如,台灣的使用者,連上某個美國的服務時,會先到新加坡的CDN主機進行存取,由於網路封包路由比較近,速度上會快很多。 這項技術已經被很多雲端服務業者採用,例如FB就是一個例子,它很多照片都是委託給akamaihd.net這個CDN來幫忙做圖床複本,所以大家在載入時便會快很多(但是安全性就…)。 有些小聰明的使用者,或許會問以下問題。 使用者的網路存取是怎麼自動連線CDN的? 有些興趣的使用者會在網路上Google一下做法,但是要有點DNS的知識才看得懂這在做啥?我就我知道的,從實務面來簡單講述一下基本流程: 身為服務提供者(SP),為了降低頻寬,拿它的服務網址(例如,http://www.example.com) 去跟CDN業者申請一個帳號。 CDN業者給他一個CDN對應domain,假設是cdnexample.cloudcdn.net 好了。 CDN業者使用CDN主機去抓取http://www.example.com 的資料(通常是抓取圖片、影片等) 業者到自己的註冊網域服務提供者,加入一個CNAME(網域別名),假設是media.example.com ,對應到cdnexample.cloudcdn.net。這樣子大家連到media.example.com時,便會到cdnexample.cloudcdn.net。 由於CDN業者僅只有抓取靜態資源(如圖片、影片)等,正式的動態產生頁面還是要SP的主機來做。因此,在程式的寫法上,如果是圖片、影片的資源提供,會寫成<img srcf=”media.example.com/01.png” />。如此一來,大家在讀取圖片或是影片時,會藉由media.example.com連到最近的CDN(cdnexample.cloudcdn.net) 取得資源。這樣子存取速度變會大幅提升,真正提供服務的主機其負擔便會降低不少。 再狠一點的話,就是把動態的網頁在生成時,全部做成HTML,這樣子服務的主機只要對CDN提供服務,不用對使用者用戶端提供服務。 這樣子,CDN整體概念可以描述成下面這張圖來理解: 參考資料 Wikipedia:CDN Amazon CloudFront:CDN DNS資源記錄介紹
Use the CURL Library in Code::Blocks on Windows Platform
In current days, our college students meet the problem while compiling the CURL library in Code:: Blocks on Windows(i.e. Windows 7) platform. I noted the process that how to write the sample program with CURL library and compile it successfully. There are some steps which we should do: (This is a simple example run on […]
[雲端運算] Google Cloud Storage 來囉!
Google Cloud Storage 開始試營運囉。什麼是Google Cloud Storage?Google Cloud Storage提供雲端儲存服務,具備RESTful (REpresentational State Transfer) 功能,根據”REST and RESTfull web service“這篇文章的說明,對RESTful做了以下闡釋: REST 把軟體視為 “資源”(Resource),以 URL (Uniform Resource Locator) 定位資源所在處。資源的使用者則藉由 HTTP 協定中所定義的”方法”(method)操作資源。REST 所稱的軟體,其實是資料與資料處理方法的包裝,也就是 OOP 中的 “個體”、”物件”。同時在 HTTP 中,也定義了四種基本方法,即 GET, POST, PUT, DELETE。以上四種基本方法大致上對應了四種資料處理動作,即 Create, Read, Update, Delete (CRUD) 有興趣的讀者,可以自行看看原文解釋。 Google Cloud Storage 服務提供了以下幾種特性: 快速、高延展性與高可靠度的物件儲存服務 所有資料皆複製好幾份到Google雲端資料中心 讀寫同步 物件大小可達TB等級,支援可恢復性的上傳、下載以及Range-GET。 Domain-scoped bucket命名空間 簡單、彈性 、具驗證以及共享能力 支援 OAuth 2.0 […]
URL最大長度
URL最大長度的限制,在標準規範中並無定義。但是,Microsoft Internet Explorer 有規定,需在2,083個字元內。其他瀏覽器,如Firefox、Chrome、Opera等,至少為65,536個字元。 但Apache Server可接受的字元數為4,000,IIS則為16,384。 因此,若開發人員想要利用URL傳遞參數的話,URL長度盡量在2,000個字元內,會比較安全。 參考資料 URL的最大長度限制 最大 URL 長度是在 Internet Explorer 中的 2,083 字元
XMPP
XMPP(Extensible Messaging and Presence Protocol,前稱Jabber)是一種以XML為基礎的開放式即時通訊協定,是經由網際網路工程工作小組(IETF)通過的網際網路標準。XMPP因為被Google Talk應用而被廣大網路使用者所接觸。 想要知道相關資料,請參考: Wikipedia: XMPP XMPP初探
IDL Programming Language
I’ve found some tutorial resources: IDL Tutorial: Programming in IDL (這個好像是天文的..) IDL TUTORIAL (這個好像是天文的..) The IDL Astronomy User’s Library (這個好像是天文的..) Coyote’s Guide to IDL Programming (這個好像是天文的..) A GUIDE TO IDL FOR ASTRONOMERS (這個好像是天文的..) RMI,Java IDL Institute for Computational Cosmology: IDL (這個好像是天文的..)
Linux C socket, fork(), select(), and Pthread programming
I’ve finished my project about Linux socket using select(), fork(), and pthread.There are some recommended and useful resources:1. Programming in C UNIX System Calls and Subroutines using C It introduces socket, pthread, fork, and RPC(Remote Procedure Call).2. SAS/C Library Reference: Socket Function Reference It provides varied functions, such as select(), htons(), send()…,etc.3. Programming IP Socket on […]