搜尋

隨機推薦

Unicode 是全世界通用的最大的字符集合,包含了各國各種各樣的字符。由於字符數量巨大而且各種各樣,所以輸入法一般無法打出很多很特殊的 Unicode 符號。

在網頁中,有時候我們會需要一些符號,例如:倒三角 ▼。如果要讓網頁顯示這種符號,顯然用字符的方式比較好,體積小到可以忽略不計同時還可以方便用 CSS 定義樣式等。但是直接把這個倒三角複製進網頁中的話,雖然可以,但是不合理,這時候我們就要用到對應圖標的實體字符,例如通過查詢可以看到倒三角對應的 Unicode HTML 代碼為 ▼ 將前面代碼中的空格刪掉,複製進 HTML 文件中就可以看到了。

看到這個標題大家一定會想到這篇神文《How Browsers Work》,這篇文章把瀏覽器的很多細節講得很細,而且也被翻譯成了中文。為什麼我還想寫一篇呢?因為兩個原因,

1)這篇文章太長了,閱讀成本太大,不能一口氣讀完。

2)花了大力氣讀了這篇文章後可以瞭解很多,但似乎對工作沒什麼幫助。

所以,我準備寫下這篇文章來解決上述兩個問題。希望你能在上班途中,或是坐馬桶時就能讀完,並能從中學會一些能用在工作上的東西。

瀏覽器工作大流程

廢話少說,先來看個圖:

從上面這個圖中,我們可以看到那麼幾個事:

 

1)瀏覽器會解析三個東西:

  • 一個是HTML/SVG/XHTML,事實上,Webkit有三個C++的類對應這三類文檔。解析這三種文件會產生一個DOM Tree。
  • CSS,解析CSS會產生CSS規則樹。
  • Javascript,腳本,主要是通過DOM API和CSSOM API來操作DOM Tree和CSS Rule Tree.

2)解析完成後,瀏覽器引擎會通過DOM Tree 和 CSS Rule Tree 來構造 Rendering Tree。注意:

  • Rendering Tree 渲染樹並不等同於DOM樹,因為一些像Header或display:none的東西就沒必要放在渲染樹中了。
  • CSS 的 Rule Tree主要是為了完成匹配並把CSS Rule附加上Rendering Tree上的每個Element。也就是DOM結點。也就是所謂的Frame。
  • 然後,計算每個Frame(也就是每個Element)的位置,這又叫layout和reflow過程。

3)最後通過調用操作系統Native GUI的API繪製。

 

http://cl.ly/Q2tB/Image%202013.07.04%20%E4%B8%8B%E5%8D%881%3A59%3A56.jpeg

個人覺得:mootools 更符合物件導向,易擴展,對於熟悉物件導向的工程師來說很棒。但 jquery 做小型網站更方便多了,插件也多。現在常用的框架有Jquery,prototype,mootool,yui等,其他的框架都是非主流,有一個數據很有意思,就是這幾種框架的 市場佔有率,我覺得這個數據沒有太大意義,因為這幾種前端框架都有各自的針對性和特點,每種框架都適合相應規模的web項目,比如prototype和 jquery適合中小網站開發,mootool適合中型網站開發,yui適合大規模的web項目開發,而小網站的數量要遠大於門戶或sns這種大網站的, 因此,不論怎麼比較,jquery和prototype的使用數量都要超過mootool和yui。

vim的學習曲線相當的大(參看各種文字編輯器的學習曲線),所以,如果你一開始看到的是一大堆VIM的命令分類,你一定會對這個編輯器失去興趣的。下面的文章翻譯自《Learn Vim Progressively》,我覺得這是給新手最好的VIM的升級教程了,沒有列舉所有的命令,只是列舉了那些最有用的命令。非常不錯。

——————————正文開始——————————

你想以最快的速度學習人類史上最好的文字編輯器VIM嗎?你先得懂得如何在VIM倖存下來,然後一點一點地學習各種戲法。

  1. Vim the Six Billion Dollar editor

Better, Stronger, Faster.

學習 vim 並且其會成為你最後一個使用的文字編輯器。沒有比這個更好的文字編輯器了,非常地難學,但是卻不可思議地好用。

我建議下面這四個步驟:

  1. 存活
  2. 感覺良好
  3. 覺得更好,更強,更快
  4. 使用VIM的超能力

當你走完這篇文章,你會成為一個vim的 superstar。

在開始學習以前,我需要給你一些警告:

  • 學習vim在開始時是痛苦的。
  • 需要時間
  • 需要不斷地練習,就像你學習一個樂器一樣。
  • 不要期望你能在3天內把vim練得比別的編輯器更有效率。
  • 事實上,你需要2周時間的苦練,而不是3天。

文章來源:Best “must know” open sources to build the new Web

學習HTML 5編程和設計

RegExr: 功能強大的正規式撰寫協助工具

http://cl.ly/Mgmt/4135383939_de54ef8756.jpeg

正規式應該是許多程式開發人員心中的痛,雖然知道它的功能強大,但是學習和使用卻不是那麼的簡單。RegExr這套工具可以幫助我們在撰寫正規式的時候更有效率並且提供了許多範例可以讓我們參考,對於新手和老手都是一個相當實用的工具。 

網址:http://gskinner.com/RegExr/

http://i.imgur.com/Jz5KyRa.jpg
1.軟件開發價格估算方法
    軟件開發價格與工作量、商務成本、國家稅收和企業利潤等項有關。為了便於計算,給出一個計算公式:
軟件開發價格 = 開發工作量 × 開發費用/人·月
1.1開發工作量
    軟件開發工作量與估算工作量經驗值、風險係數和復用係數等項有關:
軟件開發工作量 = 估算工作量經驗值 × 風險係數 × 復用係數
1.1.1估算工作量經驗值(以A來表示)
    軟什開發工作量的計算,曾有人提出以源代碼行或功能點來計算,這些方法實施起來均有不少難度。目前國際上仍舊按以往經驗的方式加以計算,國內各軟件企業也是採用經驗的方式加以估算工作量。
    為了更好地規範估算方法,建議可按照國家標準“GB/T 8566-2001軟件生存週期過程”所規定的軟件開發過程的各項活動來計算工作量。
    工作量的計算是按一個開發工作人員在一個月內(日曆中的月,即包括國家規定的節假日)能完成的工作量為單位,也就是通常所講的“人·月”。
    特別要提醒的是軟件開發過程中既包括了通常所講的軟件開發,也應包括各類軟件測試的活動。
1.1.2風險係數(以σ來表示)
    估算工作量經驗值亦會存在較大風險,造成軟件危機的因素很多,這也是一個方面的因素。特別當軟件企業對該信息工程項目的業務領域不熟悉或不太熟悉,而且用戶又無法或不能完整明白地表達他們的真實的需求,從而造成軟件企業需要不斷地完善需求獲取,修改設計等各項工作。因此:
l ≤ 風險係數 ≤ 1.5
    根據我們對軟件企業的瞭解,超過估算工作量經驗值的一半,已是不可接受,所以我們確定“1.5”為極限值。當然這既要看企業的能力,也要看用戶能接受的程度。
1.1.3復用係數(以τ來表示)
    估算工作量經驗值是軟件企業承擔一般項目來估算的,但如果軟件企業已經採用“基於構件的開發方法” ,並己建立起能夠復用的構件庫(核心資產庫),或者已有一些軟件產品,僅作二次開發,從而使軟件開發工作量減少。因此:
0.25 ≤ 復用係數 ≤ 1
    根據國內外軟件企業在實施基於構件開發方法(軟件產品線)的經驗數據,提高工作效率達到25%(最高值)。

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); 
}

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

 

Please publish modules in offcanvas position.