在JavaScript中,不等於0就為true,即使它是個負數。
人生亦然。
只要不原地踏步,無論得到或失去、正數或負數,對人生來說,都為真,都能滿足你所設定的條件,進入你所設想的期望。
2012年5月13日 星期日
always true
2012年4月22日 星期日
擁有
當你擁有一個東西的時候,可以享受它帶來的快樂,同時也必須背負著它隱藏的痛苦。
擁有的痛苦,維持的痛苦,抉擇的痛苦,以及失去的痛苦。
快樂的根源是因為擁有它,痛苦的根源也是因為擁有它。
但生而為人,生下來時全身光溜溜什麼也沒有,走的時候即便在手上塞再多手尾錢,也無力帶走。
世上一切人事物,就像登山的沿路風景,
曾經為它目炫神迷,曾經身入其境,曾經聽聞蟲鳴鳥叫,曾經品嚐花草芬芳,
一但走過去之後,就不再擁有。
如果不曾擁有過,又何來的快樂與痛苦?
扛在肩上的是重量,能放下的才是智慧。
擁有的痛苦,維持的痛苦,抉擇的痛苦,以及失去的痛苦。
快樂的根源是因為擁有它,痛苦的根源也是因為擁有它。
但生而為人,生下來時全身光溜溜什麼也沒有,走的時候即便在手上塞再多手尾錢,也無力帶走。
世上一切人事物,就像登山的沿路風景,
曾經為它目炫神迷,曾經身入其境,曾經聽聞蟲鳴鳥叫,曾經品嚐花草芬芳,
一但走過去之後,就不再擁有。
如果不曾擁有過,又何來的快樂與痛苦?
扛在肩上的是重量,能放下的才是智慧。
2012年4月15日 星期日
三贏
最近倒垃圾時,都會看到一位老先生推著推車,待在巷子旁,向人要回收的資源。
由於巷子小,他怕擋到人車出入,所以總是把推車放在角落邊,自己走過來,帶著微笑跟每一位要倒垃圾的人,詢問有沒有回收的?
汐止經常下雨,也總會看見他穿著雨衣,默默頂著寒風淋著雨,站在推車旁等著。
而我最近也都會把回收資源先給老先生。
對於倒垃圾的我們來說,回收資源給誰其實都沒差,反正包一包,丟了就走。
但是對老先生和清潔人員來說,卻有莫大的差別。把回收資源給老先生,可以幫助他多一口飯吃;同時也可以減輕清潔人員的辛苦,他們領的是固定薪水,少收一點就輕鬆一點。
同樣一件事,試著做不同的選擇,或許就能創造雙贏局面。
而在這個小故事卻是三贏,因為幫助了老先生、清潔人員,連我自己也感到歡喜!
由於巷子小,他怕擋到人車出入,所以總是把推車放在角落邊,自己走過來,帶著微笑跟每一位要倒垃圾的人,詢問有沒有回收的?
汐止經常下雨,也總會看見他穿著雨衣,默默頂著寒風淋著雨,站在推車旁等著。
而我最近也都會把回收資源先給老先生。
對於倒垃圾的我們來說,回收資源給誰其實都沒差,反正包一包,丟了就走。
但是對老先生和清潔人員來說,卻有莫大的差別。把回收資源給老先生,可以幫助他多一口飯吃;同時也可以減輕清潔人員的辛苦,他們領的是固定薪水,少收一點就輕鬆一點。
同樣一件事,試著做不同的選擇,或許就能創造雙贏局面。
而在這個小故事卻是三贏,因為幫助了老先生、清潔人員,連我自己也感到歡喜!
2012年4月10日 星期二
JavaScript Performance Tip
1. 將所有<script>標籤放在頁面底部,緊靠</body>的上方。這樣可以確保頁面(DOM)在script運行之前完成解析
2. 減少載入太多<script>。頁面的<script>越少,頁面的載入速度就越快。
3. 使用non-blocking方式載入javascript:
(1) 在<script>加入defer屬性 (只適用於Internet Explorer或Firefox 3.5以上)
(2) 動態創造<script>元素,用它下載並執行代碼。例:document.createElement("script")
(3) 使用XHR(XMLHttpRequest)物件下載代碼,並注入到頁面中
4. 減少使用global variable,盡可能使用local variable
5. 若必需用到多次global variable,用local variable存下來,減少呼叫 global variable的次數。例如:var target = document.getElementById('id')
6. 使用innerHTML代替createElement (只適用非webkit-based browser)
7. 在for迴圈時,不要用elements.length當終止條件,因為每次迴圈都要取得一次elements.length的值。應該用一個變數存下elements.length的值
8. 需要多次存取array[index]的值時,用一個變數存下array[index],避免每次都要搜尋array一次
9. 用DOM properties取代elements nodes:
element nodes property(faster)
-----------------------------------------------------
childNodes children
childNodes.length childElementCount
firstChild firstElementChild
lastChild lastElementChild
nextSibling nextElementSibling
previousSibling previousElementSibling
(IE只支援children)
10. 需要取得複雜elements時,使用document.querySelectorAll(),而不要用document.getElementById跟document.getElementsByClassName。
例如,要取得所有id="menu"的<a>tag,可以用:
var elements = document.querySelectorAll("#menu a");
//其實有點像jQuery的寫法
而不要用:
var elements = document.getElementById("menu").getElementsByTagName('a');
11. 要改變css,就一次一起改變,或者直接改className:
//這樣會很慢
var el = document.getElementById("mydiv");
el.style.borderLeft = "1px";
el.style.borderRight = "2px";
el.style.padding = "5px";
//這樣快多了
var el = document.getElementById("mydiv");
el.style.cssText = "border-left: 1px; border-right: 2px; padding: 5px";
//若要附加style設定,可以用 el.style.cssText += "border-left: 1px; border-right: 2px; padding: 5px";
//這樣也快
var el = document.getElementById("mydiv");
el.className = "newClass";
12. 減少UI重排。要做大量appendChild到頁面之前,先把style.display = 'none',再進行append,最後再style.display = 'block',以減少畫面一直更新的負擔
13. 盡量不要用for-in 的迴圈,改用for或while改寫
14. 在if-else的判斷條件中,比較容易出現的條件放在前面,以減少執行判斷的時間
15. 少用遞迴
16. 避免產生暫時字串:
//這樣會先產生一個"onetwo"的暫時字串,會很慢
str += "one" + "two";
//這樣快多了
str = str + "one" + "two"
2. 減少載入太多<script>。頁面的<script>越少,頁面的載入速度就越快。
3. 使用non-blocking方式載入javascript:
(1) 在<script>加入defer屬性 (只適用於Internet Explorer或Firefox 3.5以上)
(2) 動態創造<script>元素,用它下載並執行代碼。例:document.createElement("script")
(3) 使用XHR(XMLHttpRequest)物件下載代碼,並注入到頁面中
4. 減少使用global variable,盡可能使用local variable
5. 若必需用到多次global variable,用local variable存下來,減少呼叫 global variable的次數。例如:var target = document.getElementById('id')
6. 使用innerHTML代替createElement (只適用非webkit-based browser)
7. 在for迴圈時,不要用elements.length當終止條件,因為每次迴圈都要取得一次elements.length的值。應該用一個變數存下elements.length的值
8. 需要多次存取array[index]的值時,用一個變數存下array[index],避免每次都要搜尋array一次
9. 用DOM properties取代elements nodes:
element nodes property(faster)
-----------------------------------------------------
childNodes children
childNodes.length childElementCount
firstChild firstElementChild
lastChild lastElementChild
nextSibling nextElementSibling
previousSibling previousElementSibling
(IE只支援children)
10. 需要取得複雜elements時,使用document.querySelectorAll(),而不要用document.getElementById跟document.getElementsByClassName。
例如,要取得所有id="menu"的<a>tag,可以用:
var elements = document.querySelectorAll("#menu a");
//其實有點像jQuery的寫法
而不要用:
var elements = document.getElementById("menu").getElementsByTagName('a');
11. 要改變css,就一次一起改變,或者直接改className:
//這樣會很慢
var el = document.getElementById("mydiv");
el.style.borderLeft = "1px";
el.style.borderRight = "2px";
el.style.padding = "5px";
//這樣快多了
var el = document.getElementById("mydiv");
el.style.cssText = "border-left: 1px; border-right: 2px; padding: 5px";
//若要附加style設定,可以用 el.style.cssText += "border-left: 1px; border-right: 2px; padding: 5px";
//這樣也快
var el = document.getElementById("mydiv");
el.className = "newClass";
12. 減少UI重排。要做大量appendChild到頁面之前,先把style.display = 'none',再進行append,最後再style.display = 'block',以減少畫面一直更新的負擔
13. 盡量不要用for-in 的迴圈,改用for或while改寫
14. 在if-else的判斷條件中,比較容易出現的條件放在前面,以減少執行判斷的時間
15. 少用遞迴
16. 避免產生暫時字串:
//這樣會先產生一個"onetwo"的暫時字串,會很慢
str += "one" + "two";
//這樣快多了
str = str + "one" + "two"
2012年4月9日 星期一
慶幸
公司大樓的兩邊側門,是所謂的『吸菸區』。每天要進公司前,非得經過吸菸區不可,因此一大早就會看到一堆面帶愁容的人,在那吞雲吐霧。
這是很可笑的設計,等於讓來訪的賓客,未進門就看到這些人無精打采,失神落魄的樣子。
而我要進入公司,也必須先穿越過他們。
在十公尺前,吸氣,然後開始閉氣!進入快步模式,快速通過煙霧!
等到進入公司,遠離他們數十公尺後,才能呼吸。
此時,都會慶幸,自己還活著,
心中也感傷,他們正在死著……
但換個角度想,我不也正在死著嗎?
而他們,不也正在用他們的方式活著嗎?
每個人都正在死著,也正在活著,兩種狀態是同步進行。
真正該慶幸的,是這當下,我們還存在著。
這是很可笑的設計,等於讓來訪的賓客,未進門就看到這些人無精打采,失神落魄的樣子。
而我要進入公司,也必須先穿越過他們。
在十公尺前,吸氣,然後開始閉氣!進入快步模式,快速通過煙霧!
等到進入公司,遠離他們數十公尺後,才能呼吸。
此時,都會慶幸,自己還活著,
心中也感傷,他們正在死著……
但換個角度想,我不也正在死著嗎?
而他們,不也正在用他們的方式活著嗎?
每個人都正在死著,也正在活著,兩種狀態是同步進行。
真正該慶幸的,是這當下,我們還存在著。
2012年4月8日 星期日
十個女人也無法一個月就生出小孩
專案管理有一句經典的名言:『就算給你十個女人,也無法在一個月就生出一個小孩』(原始版本是九個,但我認為十個比較恰當)~
這意謂著,有些事情就是需要時間,就算投入再多人力,也對事情沒有任何幫助。偏偏許多公司就是喜歡機械式思考,把人當機器來使用,做事情的規劃也都用 人/月 也計算,把一個大任務切成幾個小任務,再分配每個任務由誰去做、需要多個工作天。
我所在的公司亦然,甚至有過之而無不及。每件任務事前規劃得好像很詳細,人力估計精準到有2.5天、1.75天這種數字出來!我活這麼久,從來都不知道日子還得用小數點來計算……。
這樣的規劃看似精美,但,想當然爾,一句話:做不到。
為什麼做不到?因為人就是人,不是機器。千萬別把玩世紀帝國或星海爭霸那套拿來用,幾分幾秒生多少村民、存多少黃金、多少人的時候升級……等,這套方法對人完全行不通,因為人不是電腦,人是活的,不是死的。
因此,某些公司號稱國際化的大公司,卻仍逃不過這個迷思,做事完全沒有模糊的空間,也沒有預留任何彈性時間,行程排了就是排了,就傻傻的照著做,而又不知變通,中途遇到突發事項也只是悶著頭去處理,沒有做任何彈性調整,搞得每週release前都人仰馬翻的。
世事絕對不是非黑即白、非1即0的。處處都存在著模糊的灰色地帶,這個空間可以做彈性運用,把事情做到最好,也讓人力發揮到最高。若事事只講求數字,死板板的做事方式,遲早會種下大過,不可不慎也。
這意謂著,有些事情就是需要時間,就算投入再多人力,也對事情沒有任何幫助。偏偏許多公司就是喜歡機械式思考,把人當機器來使用,做事情的規劃也都用 人/月 也計算,把一個大任務切成幾個小任務,再分配每個任務由誰去做、需要多個工作天。
我所在的公司亦然,甚至有過之而無不及。每件任務事前規劃得好像很詳細,人力估計精準到有2.5天、1.75天這種數字出來!我活這麼久,從來都不知道日子還得用小數點來計算……。
這樣的規劃看似精美,但,想當然爾,一句話:做不到。
為什麼做不到?因為人就是人,不是機器。千萬別把玩世紀帝國或星海爭霸那套拿來用,幾分幾秒生多少村民、存多少黃金、多少人的時候升級……等,這套方法對人完全行不通,因為人不是電腦,人是活的,不是死的。
因此,某些公司號稱國際化的大公司,卻仍逃不過這個迷思,做事完全沒有模糊的空間,也沒有預留任何彈性時間,行程排了就是排了,就傻傻的照著做,而又不知變通,中途遇到突發事項也只是悶著頭去處理,沒有做任何彈性調整,搞得每週release前都人仰馬翻的。
世事絕對不是非黑即白、非1即0的。處處都存在著模糊的灰色地帶,這個空間可以做彈性運用,把事情做到最好,也讓人力發揮到最高。若事事只講求數字,死板板的做事方式,遲早會種下大過,不可不慎也。
2012年4月4日 星期三
毒藥
這個世界就像是一條河流。表面上清澈見底,實際上卻暗藏洶流。更可怕的是,不知道水質含有多少毒物,不知道河底藏著多少致命危機。
肉有毒,飲料有毒,餅乾有毒,飯有毒,菜有毒,連水也有毒。衣服有毒,房子有毒,日常用品有毒,空氣有毒,車子廢氣也有毒。
這些毒,殘害著我們的『身』。
貪汙無能的政府,欺壓百姓的作為,短視近利的政策,見利忘義的企業,長年腐敗的教育,素質低落的新聞記者,為虎作倀的公益團體…等,也都是毒。
這些毒,殘害著我們的『心』。
這兩種毒,都是看得到的。但有一種毒,我們不但看不到,還樂在其中……
科技產品的普及,讓人與人之間更沒有溫度,養成凡事只求快的個性,極度沉迷於虛擬的世界,拼命經營網路上的那個『你』,到哪裡就是用手機控制著那個你。
無論到哪裡都要先打卡上傳照片,讓網路上那個『你』有狀態更新,告訴網路世界的大家你在幹嘛;
到哪裡都要盯著螢幕,彷彿少看幾分鐘,生命就會損失多少;
到哪裡都要用LINE一下(還以訛傳訛,變成APP一下),似乎變得不會講話一樣,都要用手機代言;
走在路上或坐在車上,就進入一個無人的世界,聚精會神的在手機滑滑滑,努力投入那個世界,卻從來不知道旁人發生了什麼事;
真實的生活,似乎變成副產品,似乎那個虛擬的世界,才是真的……
這種毒,殘害著我們的『靈』。
號稱萬物之靈的我們,越來越沒有『人性』。
身心靈都有著滿滿的毒,這就是我們,
人類。
訂閱:
文章 (Atom)