搜尋

隨機推薦

24 十二月 2010

一.C10K的問題

C10K的問題在上個世紀90年代就被提出來了。大概的意思是當用戶數超過1萬時,很多設計不良好的網絡服務程序性能都將急劇下降、甚至癱瘓。並且,這個問題並不能通過升級硬件設備解決,是操作系統固有的問題,也就是說,如果你的服務器最高能支撐1000個並發,儘管你升級了計算能力高一倍的 cpu,內存再翻一番,硬盤轉速在快一倍,也無法支撐2000個並發。

經典的網絡編程模型有4個:

1. Serve one client with each thread/process, and use blocking I/O。

即對每個客戶都使用不同的線程或進程進行服務,在每個線程或進程中使用阻塞I/O。這是小程序和java常用的策略,對於交互式的應用也是常見的選擇,這種策略很能難滿足高性能程序的需求,好處是實現極其簡單,容易實現複雜的交互邏輯。我們常用的Apache、ftpd等都是這種工作。

2. Serve many clients with single thread, and use nonblocking I/O and readiness notification。

即對所有的客戶使用單一一個線程或進程進行服務,在這個線程或進程裡,採用異步IO的策略。這是經典模型,優點在於實現較簡單,方便移植,也能提供足夠的性能;缺點在於無法充分利用多CPU的資源。

3. Serve many clients with each thread, and use nonblocking I/O and readiness notification

對經典模型2的簡單改進,仍然採用異步IO的策略,但對所有的客戶使用多個線程或進程進行服務。缺點是容易在多線程並發上出bug,甚至某些OS不支持多線程進行readiness notification 

4. Serve many clients with each thread, and use asynchronous I/O

在有AI/O支持的OS上,能提供相當高的性能。不過AI/O編程模型和經典模型差別相當大,基本上很難寫出一個框架同時支持AI/O和經典模型。這個模型主要是用於window平台上。

 

在linux上開發高性能的網絡應用,只能選著第2、3種方式。考慮到複雜性,我們往往只採用第2種。下面就討論一下第二種模型。

Google Map一成不變的色彩是否讓你有些審美疲勞?如果你對顏色不太敏感,比如色弱……是否曾經覺得看Google Map有些吃力?如果以上假設成真,請到GoogleMapsBW來。在這裡您可以自己調整Google Map的顏色、調節對比度,調到你看得爽為止!

    GoogleMapsBW是用Google Maps API 的Flash功能製作,可以調節顏色、對比度、亮度以及顏色飽和度的Google Map。在頁面Google Map下方設有4行調節按鈕,從上到下分別是:Brightness(亮度)、Contrast(對比度)、 Saturation(飽和度)和Hue offset(色彩調節)。

一般人往往沒注意 Y/C 伸張的問題,導致轉出來的純白 (235,235,235) 在電腦螢幕上看起來就不是純白,純黑 (16,16,16) 在電腦螢幕上看起來也不會是純黑。因此在電腦上看,會覺得顏色變淡,好像照上了一層白紗,所以會覺得對比不足(最亮和最暗的差距縮小),不如原始檔看起來漂亮。

通常轉 DVD 在 DVD2AVI 匯出 d2v 的時候都會做好 Y/C 伸張(YUV->RGB 設在 PC Scale),所以再交給 TMPEGnc 時壓縮設定中不能勾選進階設定-->量子化行列(Quantize matrix)底下的"Basic YCbCr ?出力"(Out YUV data as Basic YCbCrnot CCIR601),這樣 TMPGEnc 壓縮時便會做 Y/C 壓縮,壓出來的顏色、對比才會正確。

但 AVI 轉檔的時候就要相反,因為 AVI 本身資料壓縮為 16~235,如果沒有要對畫面做修改,則不必做 Y/C 伸張,但是壓縮的時候必需要勾選進階設定-->量子化行列(Quantize matrix)底下的 "Basic YCbCr ?出力"(Out YUV data as Basic YCbCr not CCIR601),這樣 TMPGEnc 壓縮時便不會做 Y/C 壓縮,壓出來的顏色、對比才會正確。若要對畫面做修改,必須使用 Descale CCIR601 這個濾鏡,把 Luminous, Chroma 兩個選項都推到 255(也就是做 Y/C 伸張),然後才做其他的編輯動作。Descale CCIR601 的順位要排第一位。然後壓縮時直接壓縮("Basic YCbCr ?出力"此時就不用勾了)便可以得到正確的結果。

 

1、古老的欺騙sql語句

在默認模式下,即使是你忘了把php.ini拷到/usr/local/lib/php.ini下,php還是打開magic_quotes_gpc=on。

這樣所有從get/post/cookie來的變量的單引號(')、雙引號(")、反斜槓backslash()以及空字元nul
(the null byte)都會被加上反斜槓,以使數據庫能夠正確查詢。

但是在php-4-rc2的時候引入了一個配置文件php.ini-optimized,這個優化的php.ini卻是 
magic_quotes_gpc=off的。某些網管看到optimized字樣也許就會把php.ini-optimized拷到 
/usr/local/lib/php.ini,這時就比較危險。像比較簡單的驗證,假設沒有過濾必要的字符: 
select * from login where user='$http_post_vars[user]' and pass='$http_post_vars[pass]' 
我們就可以在用戶框和密碼框輸入1『 or 1='1通過驗證了。這是非常古董的方法了,這個語句會 
替換成這樣:

select * from login where user='1' or 1='1' and pass='1' or 1='1'

因為or 1='1'成立,所以通過了。

解決的辦法最好就是過濾所有不必要的字符,還有就是推薦對於從get/post/cookie來的並且用在sql 
中的變量加一個自定義的函數:

function gpc2sql($str) { 
    if(get_magic_quotes_gpc()==1) 
        return $str; 
    else 
        return addslashes($str); 
}

主要是為了你的程序能安全移植在各種系統裡。

 

30個優秀的iPad應用程序界面設計案例

毫無疑問,蘋果iPad看起來是美麗和迷人的,iPad的多點觸摸和其他現代技術都是讓用戶真正感受到舒服的設計。在這篇文章中,我們收集了30個優秀的iPad應用程序界面設計的例子,希望你能從這些美麗的應用程序界面設計中得到啟發。

 

相信很多人都遇到過在設計中自定義滾動條樣式的情景,之前我都是努力說服設計師接受瀏覽器自帶的滾動條樣式,但是這樣只能規避還是解決不了問題,最近在項目中遇到了,正好來總結一下。當然,兼容所有瀏覽器的滾動條樣式目前是不存在的。

IE下的滾動條樣式

IE是最早提供滾動條的樣式支持,嗯,好多年了,但是其它瀏覽器一直沒有支持,IE獨孤求敗了。

這些樣式規則很簡單:

  • scrollbar-arrow-color: color; /*三角箭頭的顏色*/
  • scrollbar-face-color: color; /*立體滾動條的顏色(包括箭頭部分的背景色)*/
  • scrollbar-3dlight-color: color; /*立體滾動條亮邊的顏色*/
  • scrollbar-highlight-color: color; /*滾動條的高亮顏色(左陰影?)*/
  • scrollbar-shadow-color: color; /*立體滾動條陰影的顏色*/
  • scrollbar-darkshadow-color: color; /*立體滾動條外陰影的顏色*/
  • scrollbar-track-color: color; /*立體滾動條背景顏色*/
  • scrollbar-base-color:color; /*滾動條的基色*/

大概就這些,你也可以定義cursor來定義滾動條的鼠標手勢。

 

我一向認為,對話這項事情是必須建立在雙方有知識儲備交集的情況下發生的,當然前提是獨立思考得來的知識而不是谷歌或維基來的。基於《人性論》或《道德情操論》也許可以就“要加薪彈鋼琴”的道德問題進行一些交流,但是在這個事情的法律層次上交流可能就必須具備種花忍民《刑法》等知識。曾經在不同場合與很多安卓青探討過一些或淺或深的知識層面問題,如今想來具備真正獨立思考能力與當量知識儲備的,也只有一人而己;換言之,絕大部分時候只是對牛彈琴。

那麼我將從以下七點來說明iPhone 4比Android手機們好在哪裡:工業設計,操作系統,屏幕顯示,開發環境,生態環境,硬件配置,雜項。

 

當IE7剛發行的時候,曾及研究了如何定義網頁字體,裡面也說了有襯線與無襯線字體 serif vs sans serif的應用。今日順手翻了翻字庫,推薦一些(或許是經典,或許是老掉牙的)英文字體給大家。

clip_image001

當然,我用的是PC,Webpage裡的像素字 Tahoma、Arial、Verdana 是最常用的選擇,有時候 Times New Roman 這個也可以搬出來。設計英文和國際化網站的時候,切記的就是字體選擇要到位,往往那些“不夠歐美風格、不夠專業”的評價都是因此而來。

如果你用做圖形設計時覺得還覺得字體捉襟見肘,或者達不到某些效果。哪我來推薦一些獲取字體的方法:

 

關於英文字體的文章很少,因為資料有限我只參考一本《印刷字體》和紀元[MX]視覺的一篇文章。做完這個課程設計我瞭解了外文字體的一些知識,有一些也是我從各方面蒐集的一些資料:

 

一、英文印刷新字體

英文字體品種主要有白正細體、白正粗體、白斜細體、白斜粗體黑正粗體、黑斜粗體、花體、標題黑斜體、標題黑正體、斜黑體、書版正體、書版斜體、書版狹身正體、細黑正體、名片正黑體、美術正體、美術廣告斜體、廣告裝飾體、廣告狹身正體等。

 

二、西文印刷字體

西文字體通常不同字形來分類,不同的造型特點,形成了各種各樣的字體,各種字體充分體現了設計者的個性,形成了各自的風格和特點。在以後的長期使用中,這些字體 又派生出許多變形字體,這些變形字體具有同樣的特徵和一致的傾向。一般把具有共同特徵的字體群稱為西文字體體系,西文字體多以活字設計者、雕刻者、活字鑄造者或偉人的名字命名。也有用字體的發源地地名作為西文字體體系的名稱。西文字體的種類極為豐富,繁多,美國有1800多種,全世界有5000~6000種,西文字體主要是拉丁字母的體式。

拉丁字母起源於圖畫,是由古埃及象形文字演變發展而來,希臘人在與腓基尼人在交往中,吸取了他們的文化,創造了希臘字母,成為現代拉丁文字母的雛形,到羅馬廢除初期王朝政體而實施共和時期,拉丁字母基本定型。羅馬帝國出現時,拉丁字母得到很大發展並成熟起來,拉丁字母的發展不僅是一種文化的發展,而且字體也向美觀實用的方向發展。

 

Please publish modules in offcanvas position.