2013/04/25

初次玩 Backbone.js: 多種 Template 的實作方式

假設我想設計一個公司資料,model 為單一員工資料,包含 id 與 name。collection 為部門資料,由多個員工所組成。而 view 用來顯示部門資料之用。
// Models
company.models.Employee = Backbone.Model.extend({
    defaults: {
        id: undefined,
        name: undefined
    }
});

// Collections
company.collections.Department = Backbone.Collection.extend({
    model: company.models.Employee
});

// Views
company.views.EmployeeList = Backbone.View.extend({
    el: "#container",
 
    render: function() {
        ...
    }
});

// Create base data
var c = new company.collections.Department(
        [{id:1, name: "Star Willard"},
         {id:2, name: "Rhona Eggleston"},
         {id:3, name: "Cassi Chowdhury"},
         {id:4, name: "Leigh Nilson"},
         {id:5, name: "Niesha Auger"}
        ]);

// Create view
var v = new company.views.EmployeeList({collection: c});
v.render();


以下就來探討 render function 該怎麼把 collection 套用到 template 並呈現在 UI 上

2013/04/23

WebSocket on Tornado

Tornado 一直是我愛用的 python web framework,這幾年工作上一直在寫 event-drivent socket programming,所以被它 non-blocking 的特性給深深吸引,如果每件 block 的工作都能用 asynchronous 的方式來解決,那程式執行的效率一定超好!


延續『WebSocket 雙向即時通訊 - 初探』,今天就以 Tornado 來寫個簡單的 WebSocket 範例。當 client 連到 server 後,會傳送 hello ,而 server 回應一樣的訊息,傳送到第五次,server 就把 client 斷掉。

Server (ws_server.py)
import tornado.ioloop
import tornado.web
from tornado import websocket


class WSHandler(websocket.WebSocketHandler):
    count = 0
    def open(self):
        print "Client connected"

    def on_message(self, msg):
        print "[%d] Got message [%s] from client" % (self.count, msg)
        if self.count == 4:
            self.close()
            return
        # Write back message
        self.write_message("[%d] Echo: %s" % (self.count, msg))
        self.count += 1

    def on_close(self):
        print "Client disconnected"


application = tornado.web.Application([
    (r"/", WSHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()



Client (ws_client.py)
from tornado.websocket import websocket_connect
from tornado.ioloop import IOLoop


class ws_client():
    conn = None # This is WebSocketClientConnection
    def __init__(self):
        websocket_connect('ws://localhost:8888/', callback=self.conn_cb)
        
    def conn_cb(self, future):
        self.conn = future.result()
        self.conn.write_message("hello")
        self.conn.read_message(self.read_cb)
        
    def read_cb(self, future):
        msg = future.result()
        if msg is None:
            print "Server disconnected"
            IOLoop.instance().stop()
        else:
            print msg
            self.conn.write_message("hello")
            self.conn.read_message(self.read_cb)

if __name__ == '__main__':
    ws_client()
    IOLoop.instance().start()

2013/04/21

人生 就該有限度的冒險

一件事六成把握就去做吧
要相信自己的應變能力
最差的時候 你還有求生存的自我保護機制

一件事不要尋求全部人的認同
如果想迎合全部的人
那肯定會失去初衷 失去原始的自我

追求完美的境界 永無止境
有時候 留一成餘地給別人
反而可以創造更多機會

沒有什麼是絕對的
要說可以做到十成
我想只有你堅定的信心

人生 就該有限度的冒險

2013/04/18

對於今日電視新聞的看法

新聞有毒,勇敢戒斷你會更快樂
                                --- Inside 硬塞的網路趨勢觀察


這半年沒看過幾次電視新聞 但不因而跟社會脫節
網路 書籍 所帶來的更多 不管是 及時性 時事 知識
選擇性也更廣 不只有藍台 綠台

網路新聞雖然也是記者寫的 但有更多評判的機會
很容易可以看到正反兩面

通常新聞報導都是不好的居多 而且越糟糕的的報越久
畢竟 這件事情只是一小部份 社會上還是有很多好的地方
很容易過度恐慌 造成大家對社會的觀感不好

像之前三餐都配人頭案 很倒胃口
每天看這些 心情會好才怪

畫面的呈現蔚為一種趨勢
記者還要充當演員 還原現場演一次
不如看寶傑的關鍵時刻娛樂性更甚
人對於畫面的理解較好
相對 思考 評斷能力也降低了
照單全收 很好洗腦


究竟 新聞的目的在於?
原始概念應該接近
客觀的呈現當下的情況 由收看的人思考而後斷
媒體只是扮演傳遞的角色

furthermore
讓社會進步 而不是圖利政黨財團
監督社會 揚善伐惡 但評斷的人 素質待加強
畢竟 結論是直接深植到大眾

播放的內容該跟大眾利益有關
腥羶色 奇人異事 是新聞 但我相信有更重要的東西可以報
世界觀 整體趨勢 試著把層次拉的更高


2013/04/17

來去基隆走走吧

愛上了平日逛街、平日旅遊的感覺,除了人比較少之外,可以和正在工作的人形成一種對比,心情特別不一樣 :P

今天請假在家休息,下午一個衝動就想去基隆走走,從汐止過去還蠻快的,沿新台五路走20分鐘就到了。基隆的路真不是普通亂的,除了很多單行道,還有一些路彎彎曲曲的,感覺很容易就逆向,尤其在港邊,差點誤闖貨運專用道。

查了一下比較 popular 的景點有
  • 基隆廟口夜市
  • 和平島公園
  • 白米甕砲台
  • 外木山漁港

港邊
 


和平島公園
 


走著走著 沙灘上突然浮現一些文字...


  


發現外星生物與外星地表
 

夕陽餘暉
 


天黑前趕快前往白米甕砲台
原來這邊的炮台早撤了 不過這是個制高點 瞭望港邊還不錯
如果晚上來 港邊燈火應該更漂亮
 

核彈基地?


基隆廟口 奠濟宮
 

來到廟口當然別忘了伴手禮呀
李鵠餅店的綠豆椪
連珍的芋泥球~超好吃

2013/04/13

WebSocket 雙向即時通訊 - 初探

Web 已經走向 Application 的概念,其中即時性(real-time)這個特點扮演很重要的角色

早期 Web service 要做到即時通訊不外乎兩種
  • Polling
    每n秒問一次 server,n 越小即時性越好,但相對 server loading 就越大
  • Long polling
    需要 Server support,延遲 response,確切來說是需要的時候再 response


但這兩種方式都需要額外的 overhead
  • HTTP 協定限制,一個 request 配一個 response,然後結束 connection,每次重新連線都需要 tcp 3-way handshake
  • Request 只能從 client 主動發出,若要做到 server push,client 得先建立一條連線讓 server 需要時 send back
  • 每次連線都要帶上 HTTP header,對頻寬也是一種浪費
  • Connection 斷掉再建立有個空窗期


而 WebSocket 正是改善這些缺點
  • 全雙工通訊(full-duplex communication),連線一旦建立,server/client 隨時都可以發送資料給對方
  • 除了第一次 handshake 外,過程中傳送資料的 header 很小
  • 避免對同一個網站建立多條 connection


WebSocket 的 implementation


WebSocket 對各種瀏覽器版本的支援度


WebSocket Protocol/Packet 分析


其實在 HTTP 1.0 與 1.1 也有 persistent connection 的實作
  • HTTP 1.0 persistent connection:又稱 HTTP keep-alive 或 HTTP connection reuse,可以在同個 connection 下發送多次 request/response 
  • HTTP 1.1 提出了 pipelining:允許一次發送多個 request 給 server,但 server response 時也必需按照順序
但這機制卻沒有被廣泛的應用?是因為早期的 web server 存在 C10K problem 嗎?還是 server 支援度的問題?加上 proxy 與 browser 有限制 client 到 web server 的 current connection 只能建立兩條,避免浪費 server 資源

詳細可以參考 HTTP 連線管理 | ihower { blogging }

2013/04/12

SQL Injection Prevention - Postgresql

這是一個 C 版本的 postgresql database 存取
#include <libpq-fe.h>

#define UPDATE_COMMAND   \
        "UPDATE employee SET password='%s' WHERE username='%s';"

int db_update(char *username, char *password)
{
  PGconn            *conn;
  PGresult          *res;
  ExecStatusType    status;
  char              query[1024];

  // connect to server

  /*
   * Set parameter
   */
  snprintf(query, sizeof(query), UPDATE_COMMAND, password, username);

  /*
   * Execute the query.
   */
  res = PQexec(conn, query);
  if (res) {
    status = PQresultStatus(res);
    if (status == PGRES_COMMAND_OK)) {
      printf("Update successfully\n");
    } else {
      printf("error message=[%s]\n", PQresultErrorMessage(res));
    }
  }
}
初學者容易犯的錯誤就是把 user input 直接跟 SQL query 串接在一起,如果 username, password 存在不安全的字眼,很有可能會造成 SQL injection,切記永遠不要相信 user 的資料,該做的檢查、防呆都不能少。


改成參數形式就可以避免 :)
Database client library 都會有提供類似的用法
#include <libpq-fe.h>

#define UPDATE_COMMAND   \
        "UPDATE employee SET password=$1 WHERE username=$2;"
#define PREPARED_STMT    "my_update"
#define NPARAMS          2

int db_update(char *username, char *password)
{
  PGconn            *conn;
  PGresult          *res;
  ExecStatusType    status;
  char              *params[NPARAMS];

  // connect to server

  /*
   * Set parameter
   */
  params[0] = password;
  params[1] = username;

  res = PQprepare(conn, PREPARED_STMT, UPDATE_COMMAND, NPARAMS, NULL);
  if (PQresultStatus(res) != PGRES_COMMAND_OK) {
    printf("PQprepare() failed [%s]", PQresultErrorMessage(res));
    return -1;
  }

  /*
   * Execute the query.
   */
  res = PQexecPrepared(conn, PREPARED_STMT, NPARAMS, 
                       (const char **)params, NULL, NULL, 0);
  if (res) {
    status = PQresultStatus(res);
    if (status == PGRES_COMMAND_OK)) {
      printf("Update successfully\n");
    } else {
      printf("error message=[%s]\n", PQresultErrorMessage(res));
    }
  }
}
關於 PQprepare()PQexecPrepared() 的使用方式可以參考官方文件

2013/04/11

Basic Authentication for Apache Virtual Host

最近裝了 phpmemcacheadmin 這套 monitor tool 來用,但它本身沒有使用者驗證的機制,雖然是內部使用,但擁有這麼大的權限應該要控管一下。
在不動到 source 的前提,想到了可以在 Apache web server 端加上 basic authentication:


Apache virtual host 設定檔 vhost.conf

<VirtualHost 10.0.0.1:80>
  ServerName example.com
  DocumentRoot /home/user/www
  DirectoryIndex index.php
  <Directory /home/user/www>
    Deny from all
    # Allow from 10.0.2.1 # 允許從這個 IP 來的不用認證
    AuthUserFile ~/.htpasswd
    AuthName authorization
    AuthType Basic
    Satisfy Any
    require valid-user
  </Directory>
</VirtualHost>
重啓 Apache 就生效了


用 htpasswd 建立帳號/密碼設定檔

$ htpasswd ~/.htpasswd brian
New password:
Re-type new password:
Adding password for user brian

關於 htpasswd 的使用方式請參考 htpasswd - Manage user files for basic authentication

2013/04/05

第一次做西餐就上手

今天要請好朋友來家裡一起做西餐,這算是難度最高的一次了

 

幸好有各位的幫忙 最後當然是完美上菜啦


沙拉

生菜佐優格醬
加點柳橙跟檸檬 酸酸的比較開胃

前菜

煎馬鈴薯 兩種做法
可以切片後直接下去煎 口感是酥脆的
另外可以切成條狀 先滾一下變鬆軟 再下去煎 表皮焦焦的很香

海鮮巧達湯

玉米 紅蘿蔔 洋蔥 蘑菇 綠花椰 馬鈴薯 全部切丁下去滾
要滾到馬鈴薯變成泥 湯頭的口感才會濃郁
加一些蛤蠣 蝦子 干貝 也不錯

拿坡里茄汁義大利麵

鹽巴 + 義大利麵煮七分鐘 -> 起鍋拌橄欖油
番茄 洋蔥 切丁 + 蝦 花枝 + 紅酒 炒一下
倒入茄汁義大利麵醬 還有撈起來的麵條 再翻炒一下
最後撒上起司粉 羅勒葉裝飾


煎沙朗牛排、松版豬排

先把牛排血水用紙巾擦乾
大火煎第一面 90 秒鎖住肉汁 翻面上色即可
不過平底鍋似乎火侯不夠 發現要煎久一點 不然裡頭還很生
佐蒜片 岩鹽

蒜片製作:蒜頭切片 -> 川燙去辣味 -> 油炸呈金黃色 -> 用紙巾把油吸掉 -> 烤稍微酥脆
配菜:綠花椰 番薯 紅蘿蔔 燉梨 都不錯

最後當然要來一杯紅酒啦
松版豬排就煎全熟 肉質真的帶勁 撒上黑胡椒 海鹽 就很好吃


mojito

方糖 1 顆 + 薄荷葉 10片 + 檸檬汁 用搗棒搗碎
碎冰 +  1/4 片檸檬 + Rum 45oz + soda 少許
最上面薄荷枝葉裝飾

2013/04/03

成大事必備9種能力、9種心態、9種手段

轉載自網路,收納到我的做人做事小語裡面

成大事必備的九種能力 – 挑戰生存的能力:善於在現實中尋找答案

1、擺正心態,敢於面對現實

對於那些不停地抱怨現實惡劣的人來說,不能稱心如意的現實,就如同生活的牢籠,既束縛手腳,又束縛身心,因此常屈從於現實的壓力,成為懦弱者;而那些真正成大事的人,則敢於挑戰現實,在現實中磨煉自己的生存能力,這就叫強者!

在此,我們可以得出一條成大事的經驗:適應現實的變化而迅速改變自己的觀念,最重要的是需要我們有一副聰慧的頭腦和靈活的眼睛,做生活的有心人。

在現實的壓力之下,如果你能改變觀念,適時而進,可收到事半功倍的效果。

我們的自下而上須臾離不開現實,隨著現實的變化,我們必須隨之調整自己的觀念、思想、行動及目標。這是生存的必須。

如果我們有辦法來改變現實,使之適合我們能力和欲望的發展需要,則是最難能可貴的。


2、讓你擁有過硬的自制能力

自制,就是要克服欲望,不要因為有點壓力就心裏浮躁,遇到一點不稱心的事就大發脾氣。

一個人除非先控制了自己,否則將無法控制別人。

一個人只要有成大事的目標,知道自己想要的,然後采取行動,告訴自己絕對不要放棄,成功只是時間早晚而已。

假使你在途中遇上了麻煩或阻礙,你就去面對它、解決它、然後再繼續前進,這樣問題才不會愈積愈多。

你在一步步向上爬時,千萬別對自己說“不”,因為“不”也許導致你決心的動搖,放棄你的目標,從而前功盡棄。

人最難戰勝的是自己,這話的含義是說,一個人成功的最大障礙不是來自於外界是,而是自身。只有控制住自己,才能控制住壓力,讓壓力在你面前屈服。


3、把情感裝入理性之盒

一種抵觸情緒的產生往往是潛移默化的,但它對人一生的影響卻是巨大的,這種影響從諸多小事上體現出來。我們應盡量消除自己的不良情緒、因為它不僅會給我們造成身心上的傷害,而且在我們通往成功的路途上,不良情緒有時會成為絆腳石。

為了你的成功,你必須把情感裝入理性之盒,你必須去適應別人,適應形勢,不然的話,你註定成不了大事,註定會被淘汰。


4、獨處可以激發思考的力量

如果你知道怎麼獨處的話,成大事者都是善於獨處的人--在獨處的過程中激發思考的力量。

自卑可以像一座大山把人壓倒並讓你永遠沈默,也可以像推進器產生強大的動力。

比別人先走一步,能創造一種成功的心境。

在獨處時,你應當有所思考,不要總人浮於事。


5、壓力是最好的推動力

欲成大事者,因目標高遠,壓力可能會更大。但若欲成大事,就必須能承受這種壓力,把壓力當成推進人生的動力。

人們最出色的工作往往是在外於逆境的情況下做出的。人要有所為就要有所不為。應做的一定要做好,不該做的堅決不做。

得到的並不一定就值得慶幸,失去的也並不完全是壞事情。


6、以變應變,才有出路

順應時勢,善於變化,及時調整自己的行動方案,這是成大事者適應現實的一種方法。

一個人如果沒有和人打交道的高超技巧,沒有把各種情況都考慮周全的頭腦,靈活應變的手段,就根本無法駕馭大的局面,將很難成大事。

一個人能看清自己的現狀,心態就會平衡許多,就能以一種客觀的眼光去看待,認識這個世界,並且相應地調整自己的行為。


7、自信心是人生的堅強支柱

自信心充足者的適應能力就高,反之則適應能力較低。

一般信心不足較嚴重的人常有一些身心癥狀,比如孤僻,害怕與人交往,說話過於偏激,悲觀失望。

如果做事成功的經驗越多,那麼自信心就越強。

自我成功鍛煉的機會越少,自信心就越弱,以致產生嚴重的自卑情緒。

十九世紀的思想家愛默生說:“相信自己‘能’,便會攻無不克。”拿破侖說:“在我的字典裏沒有不可能。”


8、把精力投入到自己的強項上

大多數人的生活層次只停留在:為吃飯而吃、為搭公車而搭、為工作而工作、為了回家而回家。

成大事者與不成大事者只差別在一些小小的動作:每天花5分鐘閱讀、多打一個電話、多努力一點、在適當時機的一個表示、表演上多費一點心思、多做一些研究,或在實驗室中多試驗一次。

在行動之前你自己就知道你是否足以勝任這一個任務。

沒有任何藉口可以解釋你為什麼會長時間仍然無法勝任一項工作。

不論你想追求的是什麼,你必須強迫自己增強能力以實現目標。

勤加練習、勤加練習、最後還是勤加練習!決不放棄學習,而且一定要將學到的知識運用於日常生活中。


9、要專心地做好一件事

如果大多數人集中精力專註於一項工作,他們都能把這項工作做得很好。

最成大事者的商人是能夠迅速而果斷作出決定的人,他們總是首先確定一個明確的目標,並集中精力,專心致誌地朝這個目標努力。

一次只專心地做一件事,全身心地投入並積極地希望它成功,這樣你的心裏就不會感到筋疲力盡。

把你需要做的事想象成是一大排抽屜中的一個小抽屜。不要總想著所有的抽屜,而要將精力集中於你已經打開的那個抽屜。每個人做人辦事的手段都是不一樣的,可以講,一個人就有一種手段,一個人就有一種靠自己手段獲得成功的途徑。無數事實表明,有些人就是太過於自信,想念自己確認的手段能夠解決任何問題,但不知道這種往往是起不到任何作用。因此,他們總覺得離成功的目標不是越來越近,而實際上越來越遠。





成大事必備的九種心態 + 六要素

心態之一:積極向上
  1. 時刻想著出人頭地
  2. 做“小人物”時要向“大人物”看齊
  3. 惟有進取心,才能成大事
  4. 摒棄逆境的干擾,尋找向上的根源
  5. 放棄也是一種成功的開始
  6. 在平凡中做不平凡的事
  7. 保持年輕的心態很重要

心態之二:勤勉謙恭
  1. 壯志淩雲地想,腳踏實地地幹  
  2. 勤敬產業,謙恭做人
  3. 勤勉高於天賦
  4. 勤奮造就成功,懶惰摧毀天才
  5. 養成勤奮的習慣會終生受益
  6. 有一份耕耘,就有一份收穫
  7. 恒心與支持能“點石成金”
  8. 莫道君行早,更有早行人

心態之三:誠實守信
  1. 誠實是一種源自自身的本質
  2. 誠實守信才是大贏家
  3. 以誠信奠定成功基業
  4. 真誠的友誼會使你的事業更發達
  5. 做人要有正直的品行
  6. 誠實守信是成大事的“信用卡”
  7. 要成大事,擇友不可草率
  8. 以真誠待人,用熱忱做事

心態之四:敢於挑戰
  1. 敢於挑戰自我,克服貶低心理
  2. 挑戰無極限
  3. 堅持到底造靠勇氣,半途而廢是懦夫
  4. 用於挑戰激起成大事的信心
  5. 勇氣是戰勝困難的良方
  6. 勝人者力,自勝者強
  7. 毅力與恒心是成大事的基本功
  8. 堅持不懈成大事,淺嘗輒止無出路

心態之五:善於合作
心態之六:知足平衡
心態之七:樂觀豁達
心態之八:寬厚容人
心態之九:永遠自信


一:沉穩
(1)不要隨便顯露你的情緒。
(2)不要逢人就訴說你的困難和遭遇。
(3)在徵詢別人的意見之前,自己先思考,但不要先講。
(4)不要一有機會就嘮叨你的不滿。
(5)重要的決定儘量有別人商量,最好隔一天再發佈。
(6)講話不要有任何的慌張,走路也是。

二:細心
(1)對身邊發生的事情,常思考它們的因果關係。
(2)對做不到位的執行問題,要發掘它們的根本癥結。
(3)對習以為常的做事方法,要有改進或優化的建議。
(4)做什麼事情都要養成有條不紊和井然有序的習慣。
(5)經常去找幾個別人看不出來的毛病或弊端。
(6)自己要隨時隨地對有所不足的地方補位。

三:膽識
(1)不要常用缺乏自信的詞句
(2)不要常常反悔,輕易推翻已經決定的事。
(3)在眾人爭執不休時,不要沒有主見。
(4)整體氛圍低落時,你要樂觀、陽光。
(5)做任何事情都要用心,因為有人在看著你。
(6)事情不順的時候,歇口氣,重新尋找突破口,就結束也要乾淨俐落。

四:大度
(1)不要刻意把有可能是夥伴的人變成對手。
(2)對別人的小過失、小錯誤不要斤斤計較。
(3)在金錢上要大方,學習三施(財施、法施、無畏施)
(4)不要有權力的傲慢和知識的偏見。
(5)任何成果和成就都應和別人分享。
(6)必須有人犧牲或奉獻的時候,自己走在前面。

五:誠信
(1)做不到的事情不要說,說了就努力做到。
(2)虛的口號或標語不要常掛嘴上。
(3)針對客戶提出的“不誠信"問題,拿出改善的方法。
(4)停止一切“不道德"的手段。
(5)耍弄小聰明,要不得!
(6)計算一下產品或服務的誠信代價,那就是品牌成本。

六:擔當
(1)檢討任何過失的時候,先從自身或自己人開始反省。
(2)事項結束後,先審查過錯,再列述功勞。
(3)認錯從上級開始,表功從下級啟動
(4)著手一個計畫,先將權責界定清楚,而且分配得當。
(5)對“怕事"的人或組織要挑明瞭說。
(6)因為勇於承擔責任所造成的損失,公司應該承擔





成大事的九種手段:

1、敢於決斷--克服猶豫不定的習性
很多人之所以一事無成,最大的毛病就是缺乏敢於決斷的手段,總是左顧右盼、思前想後,從而錯失成功的最佳時機。成大事者在看到事情的成功可能性到來時,敢於做出重大決斷,因此取得先機。

2、挑戰弱點--徹底改變自己的缺陷
人人都有弱點,不能成大事者總是固守自己的弱點,一生都不會發生重大轉變;能成大事者總是善於從自己的弱點上開刀,去把自己變成一個能力超強的人。一個連自己的缺陷都不能糾正的人,只能是失敗者!

3、突破困境--從失敗中撮成功的資本
人生總要面臨各種困境的挑戰,甚至可以說困境就是“鬼門關”。一般人會在困境面前渾身發抖,而成大事者則能把困境變為成功的有力跳板。

4、抓住機遇--善於選擇、善於創造
機遇就是人生最大的財富。有些人浪費機遇輕而易舉,所以一個個有巨大潛力的機遇都悄然溜跑,成大事都是絕對不允許溜走,並且能縱身撲向機遇。

5、發揮強項--做自己最擅長的事情
一個能力極弱的人肯定難以打開人生局面,他必定是人生舞臺上重量級選手的犧牲品;成大事者關於在自己要做的事情上,充分施展才智,一步一步地拓寬成功之路。

6、調整心態--切忌讓情緒傷害自己
心態消極的人,無論如何都挑不起生活和重擔,因為他們無法直面一個個人生挫折,成大事者則關注於高速心態,即使在毫無希望時,也能看到一線成功的亮光。

7、立即行動--只說不做,徒勞無益
一次行動勝過百遍心想。有些人是“語言的巨人,行動的矮子”,所以看不到更為實際現實的事情在他身上發生;成大事者是每天都靠行動來落實自己的人生計畫的。

8、善於交往--巧妙利用人力資源
一個人不懂得交往,必然會推動人際關係的力量。成大事者的特點之一是:善於靠借力、借熱去營造成功的局勢,從而能把一件件難以辦成的事辦成,實現自己人生的規劃。

9、重新規劃--站到更高的起點上
人生是一個過程,成功也是一個過程。你如果滿足于小成功,就會推動大成功。成大事者懂得從小到大的艱辛過程,所以在實現了一個個小成功之後,能繼續拆開下一個人生的“密封袋”。

成大事者總是選擇最佳的手段,達到最完善的結果,這就是非一般人所能做到的。因此在成功之路上,你要想成大事,首先要解決的問題就是:你的手段對你推動成功的計畫是否立竿見影!

2013/04/02

一位年輕女董事長的47個忠告!

轉載自網路,收納到我的做人做事小語裡面

無論你是男人,還是女人,做人想成功,下面就是你必須要參考的

1、好朋友裡面,一定要培養出一個知己,不要以為你有多麼八面玲
瓏,到處是朋友,最後真心對你的,只有一個,相信我。

2、給自己定目標,一年,兩年,五年,也許你出生不如別人好,通過努力,往往可以改變70%的命運。破罐子破摔只能和懦弱做朋友。

3、朋友請你吃飯,不要覺得理所當然,請禮尚往來,否則你的名聲會越來越差。

4、這是個現實的社會,感情不能當飯吃,貧窮夫妻百事哀。不要相信電影裡的故事情節,那只是個供許多陌生人喧囂情感的場所。只有不理智和不現實的人才相信。

5、不要相信算卦星座命理,那是哄小朋友的,命運掌握在自己手中。坐在家裡等什麼房子,車子,還不如睡一覺做個好夢。

6、不喜歡的人少接觸,但別在背後說壞話,說是非之人,必定是是非之人,謹記,禍從口出。

7、少玩遊戲,這不是韓國,你打不出房子車子還有資本。可以有愛好,但要把握尺度,少玩農場、牧場、鬥地主等一些高度吸引人思想的晉級遊戲,也許你的級別很高,但不代表你有多麼成功,反而會影響和占據你成功的時間。

8、是人都有惰性,這是與生俱來的,但是我們後天可以改變這種惰性,因為有很多人正在改變。對於某種事物或是生意不要等別人做到了,我才想到。不要等別人已經賺到錢了,我才想去做。沒有人相信的是市場和機遇,大家都相信的叫做膨脹。

9、知道自己要幹什麼,夜深人靜,問問自己,將來的打算,並朝著那個方向去實現。而不是無所事事和做一些無謂的事。

10、出路出路,走出去了,總是會有路的。困難苦難,困在家裡就是難。

11、作為女人,不要倚老賣老,認為事業跟自己沒關係,以為自己就是洗衣服,做飯,看孩子,那就是大錯特錯。

12、做人,要做到;萬事孝為先,教童品之道,夫妻和諧美,幸福萬年長。但是這些不是拿來用嘴說說就能辦到的,解放初期年代要做到這些,需要付出很大的努力和辛苦,當今現實的社會需要你付出很大的金錢,聰明的人都知道這個道理。

13、空閒時間不要經常上網做無聊的事和玩一些沒有意義的遊戲,讀點文學作品,學習一些經營流程,管理規範,國際時事,法律常識。這能保證你在任何聚會都有談資。

14、寧可錯殺一千次來自各方面的信息,也不放過任何一個有可能成功的機會。只有這樣你才不會去買後悔藥。

15、要做一件事,成功之前,沒有必要告訴其他人。成功之後不用你說,其他人都會知道的。這就是信息時代所帶來的效應。

16、頭髮,指甲,鬍子,打理好。社會是個排斥性的接受體,這個星球所需要的藝術家極其有限,請不要冒這個險,就算你留長頭髮比較好看,也要盡量給人乾淨的感覺。

17、不要以為你是個男人,就不需要保養。至少飲食方面不能太隨便,多吃番茄,海產品,韭菜,香蕉,都是對男性健康有益處的食物。你要是看不到價值,我可以告訴你。至少你能把看病節約下來的錢給你的女人多買幾個化妝品。

18、力求上進的人,不要總想著靠誰誰,人都是自私的,自己才是最靠得住的人。

19、面對失敗,不要太計較,天將降大任於斯人也,必先苦其心志,勞其筋骨,餓起體膚……但要學會自責,找到原因,且改掉壞習慣。二十歲沒錢,那很正常;三十歲沒錢,可能是沒有好的家境,需要更大的努力;四十歲沒錢,只能自己找原因。窮人變成富人是可能的,而且很可能。窮人能窮一輩子,也是必然的,存在就是理由,只是有所選擇。

20、每個人都有成功的機會!就看你給不給自己機會!

21、記住,平均每天看電視超過三個小時以上的,一定都是那些月收入不超過五萬元的,如果你想要月收入超過五萬,請不要把時間浪費在電視上。同樣的道理,那些平均每天玩網路遊戲或聊天超過三個小時以上的,也都是那些月收入不超過五萬的。

22、因為窮人很多,並且窮人沒有錢,所以,他們才會在網路上聊天抱怨,消磨時間。你有見過哪個企業老總或主管經理有事沒事經常在臉書裡閒聊的?

23、這個世界,有這麼一小撮的人,打開報紙,是他們的消息,打開電視,是他們的消息,街頭巷尾,議論的是他們的消息,仿佛世界是為他們準備的,他們能夠呼風喚雨,無所不能。你的目標,應該是努力成為這一小撮人。

24、如果,你真的愛你的爸媽,愛你的女朋友,就好好的去奮鬥,去拼搏吧,這樣,你才有能力,有經濟條件,有自由時間,去陪他們,去好好愛他們。

25、這個社會,是快魚吃慢魚,而不是慢魚吃快魚。

26、這個社會,是贏家通吃,輸者一無所有,社會,永遠都是只以成敗論英雄。

27、如果你問周圍朋友,如果十個人,九個人說不知道,那麼,這是一個機遇,如果十個人,九個人都知道了,就是一個行業。

28、任何一個行業,一個市場,都是先來的有肉吃,後來的湯都沒的喝。

29、這個世界上,一流的人才,可以把三流項目做成二流或更好,但是,三流人才,會把一流項目,做的還不如三流。

30、趁著年輕,多出去走走看看。讀萬卷書,不如行萬里路,行萬里路,不如閱人無數。

31、與人交往的時候,多聽少說。這就是,上帝為什麼給我們一個嘴巴兩個耳朵的原因。

32、記得,要做最後出牌的人,出讓別人覺得出其不意的牌,在他們以為你要輸掉的時候,這樣,你才能贏得牌局。

33、不要裝大,對於裝大的人,最好的辦法就是,撿塊磚頭,悄悄跟上去,一下子從背後放倒他。

34、不要隨便說髒話,這會讓別人覺得你沒涵養,不大願意和你交往。即使交往,也是敷衍。因為他內心認定你素質很差。

35、想要抽煙的時候,先問下周圍的人可不可以,要學會尊重別人。少在女生面前耍酷抽煙,你不知道,其實她們內心很反感。

36、買衣服的時候,要自己去挑,不要讓家人給你買,雖然你第一、第二次買的都不怎麼樣,可是,你會慢慢有眼光的。

37、要想進步,就只有吸取教訓,成功的經驗都是歪曲的,成功了,想怎麼說都可以,失敗者沒有發言權,可是,你可以通過他的事例反思,總結。教訓,不僅要從自己身上吸取,還要從別人身上吸取。

38、學習,學習,再學習,有事沒事,去書店看看書,關於管理,金融,行銷,人際交往,未來趨勢等這些,你能獲得很多。這個社會競爭太激烈了,你不學習,就會被淘汰。中國2008底,有一百多萬大學生找不到工作。競爭這麼激烈,所以,一定要認識一點,大學畢業了,不是學習結束了,而是學習剛剛開始。還有,我個人推薦一個很好的視頻節目,《誰來一起午餐》。

39、如果你不是歌手,不是畫家,也不是玩行為藝術的,那麼,請在平時注意你的衣著。現在這個社會,衣著能表現出你屬於哪一個群體,哪一個圈子。

40、 一個年輕人,如果三年的時間裡,沒有任何想法,他這一生,就基本這個樣子,沒有多大改變了。

41、 成功者就是膽識加魄力,曾經在火車上聽人談起過溫州人的成功,說了這麼三個字,“膽子大”。這其實,就是膽識,而拿得起,放得下,就是魄力。

42、無論你以後是不是從事銷售部門,都看一下關於行銷的書籍。因為,生活中,你處處都是在向別人推銷展示你自己。

43、平時的時候,多和你的朋友溝通交流一下,不要等到需要朋友的時候,才想到要和他們聯繫,到了社會,你才會知道,能夠認識一個真正的朋友,有多難?

44、如果你想知道自己將來的年收入如何。找你最經常來往的六個朋友,把他們的年收入加起來,除以六,就差不多是你的了。這個例子,可以充分的說明一點,物以類聚。

45、給自己定一個五年的目標,然後,把它分解成一年一年,半年半年的,三個月的,一個月的。這樣,你才能找到自己的目標和方向。

46、無論什麼時候,記住尊嚴這兩個字,做人是要有尊嚴,有原則,有底線的。否則,沒有人會尊重你。

47、如果我只能送你一句忠告,那就是,這個世界上沒有免費的午餐,永遠不要走捷徑!


2013/04/01

AWS Auto Scaling 自動擴展(二)

延續上篇:AWS Auto Scaling 自動擴展(一),auto scaling 除了可以根據 EC2 instance 狀態,或是 ELB 的健康狀況做擴展,還可以搭配 CloudWatch 使用,CloudWatch 可以 monitor 的狀態有更多了,CPU、disk I/O、network I/O。

Scale up

Create auto scaling policy
$ aws autoscaling put-scaling-policy \
--policy-name as-policy-scale-up \
--auto-scaling-group-name as-group \
--adjustment-type ChangeInCapacity \
--scaling-adjustment 1 \
--cooldown 300

{
    "ResponseMetadata": {
        "RequestId": "4411e437-9b6a-11e2-933c-010eb2f029e6"
    },
    "PolicyARN": "arn:aws:autoscaling:us-east-1:332100208493:scalingPolicy:c534dcbe-91c1-4714-907a-b4974bac7c57:autoScalingGroupName/as-group:policyName/as-policy-scale-up"
}
把 PolicyARN 記下來,下一步會用到

Create cloud watch to monitor the CPU utilization
When the average CPU usage more than 60% and keep 600 seconds, then scale up
$ aws cloudwatch put-metric-alarm \
--evaluation-periods 1 \
--namespace "AWS/EC2" \
--comparison-operator GreaterThanThreshold \
--alarm-name alarm-high-cpu \
--statistic Average \
--threshold 60 \
--period 600 \
--metric-name CPUUtilization \
--alarm-actions arn:aws:autoscaling:us-east-1:332100208493:scalingPolicy:c34f62a8-bb82-4430-9390-67468a7a65f9:autoScalingGroupName/as-group:policyName/as-policy-scale-up


可以做個實驗,用 shell script 寫個 while loop 把 CPU 拉高,果然 10 分鐘後 alarm 就發生了,也會順便執行 scale-up 的 action


Scale down

Create auto scaling policy
$ aws autoscaling put-scaling-policy \
--policy-name as-policy-scale-down \
--auto-scaling-group-name as-group \
--adjustment-type ChangeInCapacity \
--scaling-adjustment -1 \
--cooldown 300
{
    "ResponseMetadata": {
        "RequestId": "c58093f7-9b6b-11e2-82fc-2bb2a883e37c"
    },
    "PolicyARN": "arn:aws:autoscaling:us-east-1:332100238493:scalingPolicy:141d692b-9ae8-4ef8-8d98-7de605c3fe04:autoScalingGroupName/as-group:policyName/as-policy-scale-down"
}

Create cloud watch to monitor the CPU utilization
When the average CPU usage less than 40% and keep 600 seconds, then scale down
$ aws cloudwatch put-metric-alarm \
--evaluation-periods 1 \
--namespace "AWS/EC2" \
--comparison-operator LessThanThreshold \
--alarm-name alarm-low-cpu \
--statistic Average \
--threshold 40 \
--period 600 \
--metric-name CPUUtilization \
--alarm-actions arn:aws:autoscaling:us-east-1:332100238493:scalingPolicy:141d692b-9ae8-4ef8-8d98-7de605c3fe04:autoScalingGroupName/as-group:policyName/as-policy-scale-down


有一些疑問
Scale-up 會增加到多少台?Scale-down 會減至多少台?
CloudWatch 不會重複 trigger,除非狀態從 alarm 回到 normal。


參考資料
Llovizna: Auto Scaling With Amazon EC2