星期六, 9月 24, 2011

書:老闆不說卻默默察的45件事




滿不錯的書,很適合工作一陣子,遇到瓶頸的人
讀完也發覺自己採了不少地雷,趁還年輕好好的糾正自己的態度 把45件事都寫下來,隨時自己反省一下











  • 好人不升官?誰叫你踩到九大地雷
    1. 總是把NO留給老闆說
    2. 熱心?野心?失職分不清 
    3. 成為公司中的岳飛型人物
    4. 以「很會問問題」自豪
    5. 喜歡亂猜就出局
    6. 英文好,沒什麼了不起?
    7. 分不出應該做的與想做的
    8. 堅持,堅持,再堅持
    9. 倚老賣老,危險啊!
  • 這些眉角,都很重要
    1. Happy Problem---有問題就有機會
    2. 機會一直在
    3. 你有受害者心態嗎?
    4. 生氣有什麼用?
    5. 說別人笨不代表自己聰明
    6. 情緒與工作要分清楚
    7. 別人的成就看起都很簡單?
    8. 你穿什麼進辦公室?
    9. 改變自己
    10. 別當垃圾筒
    11. 當個實心英雄
  • 讓老闆打從「心底」欣賞你
    1. 學習做個職場修羅
    2. 不必在意他們笑什麼
    3. 面對迷惘「冷」處理
    4. 珍惜走過的足跡
    5. 「理所當然」不如「設身處地」
    6. 尋找心靈的安定感
    7. 選對「老闆績優股」
    8. 都是學歷的問題?
    9. 絕不能忽略的「時空背景」
    10. 輸在終點線前的遺憾
    11. 誰才是競爭的裁判?
    12. 留心腳邊的小石頭
  • 主管要有新想法+新角度
    1. 學習面對和要求
    2. 你會說故事嗎?
    3. 一張紙,一隻嘴
    4. 絕招!心錨制約術!
    5. 固執VS堅持
    6. 傻瓜才愛比聰明
    7. 吉人詞寡,躁人詞多
    8. 知易信難的處事黑洞
    9. 面對現實
    10. 慎用二分法
    11. 企業的致勝武-人才
    12. 減少會議,多點溝通
    13. 做對的事,把事情做對

星期一, 9月 12, 2011

為blogger的code設定css

一直懶得為網誌上的code用範本
雖然覺得應該是有plugin可以直接套用
不過懶得用,挺多設定一些css而已

一直到最近同事用了Syntax Highlighter 覺得挺不錯的 就看了一下
不過在blogger上要得需要網頁空間 覺得還挺麻煩的
終於看到有人提供用的空間及在blogger上的設定 Color My World – Syntax highlighter
我的blogger總於有ide等級的範本了
  • 設定
    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css' rel='stylesheet' type='text/css'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPowerShell.js' type='text/javascript'/>
    <script language='javascript'>
    SyntaxHighlighter.config.bloggerMode=true;
    SyntaxHighlighter.config.clipboardSwf='http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf';
    SyntaxHighlighter.all();
    </script>
    
  • 使用
    在每一段的code加上div及pre
    <div class="code"><pre class="brush: js;">
       //程式碼放這
    </pre></div>
    

星期五, 9月 09, 2011

格式化json,php array

  • php array 用print_r或var_dump印php array時
    output都不會自動縮排,全擠在一行
    很難查看陣列的內容
    之前用Zend可以用Zend_Debug::dump($array);
    但純php就一直沒找到方法(懶得找 哈)
    後來發現原來是自己錯怪print_r
    其實本來就有排版,只是空格及斷行不是用php
    所以加個pre tag包起來即可
    echo "<pre>" . print_r($array, true) . "</pre>";
    //output 
    array(2) {
      ["b"]=>
      int(1)
      ["c"]=>
      NULL
    }
    偶然的機會下看到get_object_vars($array) 才發現有早就有這function了
    不過這只能印object,所以得先將array轉object
    怎麼轉...... 一個個轉...
    function arrayToObject($array) {
      if(!is_array($array)) {
          return $array;
      }
    
      $object = new stdClass();
      if (is_array($array) && count($array) > 0) {
         foreach ($array as $name=>$value) {
            $name = strtolower(trim($name));
            if (!empty($name)) {
               $object->$name = arrayToObject($value);
            }
         }
         return $object;
      }else {
          return FALSE;
      }
    }
  • json json也是,只會用JSON.stringify(array)
    全又擠在一起,一個個看實在很沒效率
    目前只有看到這篇"format json" 自行寫程式去轉
Reference PHP - Convert Array to Object with stdClass

星期六, 9月 03, 2011

正規表達式 Regular Expression

Metacharacters

用來描敘match項目的特殊字元,可組合使用
符號說明
. 任一字元
ˆ 放在最前面表示後面的符號需在開頭,如果在中間表是否定
$ 符號需在結尾字串
\s Match any whitespace character
\d Match any digit
\w Match any “word” character

Quantifiers
指定次數
符號說明
* The character can appear zero or more times
+ The character can appear one or more times
? The character can appear zero or one times
() 表示一個 sub pattern ,符合 sub pattern 的字串內容會被存放在匹配陣列中,並依序指派數字代表此 sub pattern 。
例如 /The h([0-9]) means Title (\1)/ 即為 'The h1 means Title 1', 'The h2 means Title 2' ...
[]表示字串含有括號中任一字元的內容。可以 - 表示一組連續字元,例如 /[a-z]/, /[0-9]/ 。注意, [] 僅代表一個字元,例如 /[abc]/ 表示 'a' 或 'b' 或 'c' ,而不是 'abc'
/ab[cd]e/
abce, abde皆正確

/ab[c-e\d]/
 abc, abd, abe及任何ab後接數字皆正確
{n,m} The character can appear at least n times, and no more than m.
Either parameter can be omitted to indicated a minimum limit with no maximum, or a maximumlimit without a minimum, but not both.


Example

驗證

`[a-zA-Z0-9]$` 英數字,不含特殊字元

取值

  • 取html tag值或attribute
    //取tag value
    function getTextBetweenTags($string, $tagname) {
        $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
        preg_match($pattern, $string, $matches);
        return $matches[1];
    }
    
    //取tag attribue
    function getAttribute($attrib, $tag){
                    //get attribute from html tag
                    $re = '/' . preg_quote($attrib) . '=([\'"])?((?(1).+?|[^\s>]+))(?(1)\1)/is';
                    if (preg_match($re, $tag, $match)) {
                            return urldecode($match[2]);
                    }
                    return false;
            }
    
  • host相關
    // get host name from URL
    preg_match('@^(?:http://)?([^/]+)@i',
        "http://www.php.net/index.html", $matches);
    $host = $matches[1];
    
    // get last two segments of host name
    preg_match('/[^.]+\.[^.]+$/', $host, $matches);
    echo "domain name is: {$matches[0]}\n";

  • 取代
    將轉換tag - php
    $subjects['body'] = "[b]Make Me Bold![/b]";
    $subjects['subject'] = "[i]Make Me Italics![/i]";
    $regex[] = "@\[b\](.*?)\[/b\]@i";
    $regex[] = "@\[i\](.*?)\[/i\]@i";
    $replacements[] = "<b>$1</b>";
    $replacements[] = "<i>$1</i>";
    $results = preg_replace($regex, $replacements, $subjects);
    
    //ouput---
    array(2) {
      ["body"]=>
        string(20) "<b>Make Me Bold!</b>"
      ["subject"]=>
        string(23) "<i>Make Me Italic!</i>"
    }


  • 驗證 


References Regular Expression (RegExp) in JavaScript

星期四, 9月 01, 2011

Windows下看網頁縮圖

原本作業系統是xp,利用 一直用的好好的
結果換個win7就沒效了
就找了一下,發現有AveHTMLPreview

References
[PC]Win7也可預覽html網頁縮圖

log等級的使用時機

  • debug
    The DEBUG Level designates fine-grained informational events that are most useful to debug an application. 
  • info
    The INFO level designates informational messages that highlight the progress of the application at coarse-grained level. 
  • warn
    The WARN level designates potentially harmful situations.
    需注意的情況,例如網路連線斷了 非永久性錯誤的情況進行一些修復性的工作,應該還可以把系統恢復到正常狀態中來,系統應該可以繼續運行下去。 
  • error
    The ERROR level designates error events that might still allow the application to continue running.
    可以進行一些修復性的工作,但無法確定系統會正常的工作下去,系統在以後的某個階段,很可能會因為當前的這個問題,導致一個無法修復的錯誤(例如宕機),但也可能一直工作到停止也不出現嚴重問題。 
  • fatal
    The FATAL level designates very severe error events that will presumably lead the application to abort.
    系統即將Crash或無法再往下執行,只能關閉肯定這種錯誤已經無法修復,並且如果系統繼續運行下去的話,可以肯定必然會越來越亂。這時候採取的最好的措施不是試圖將系統狀態恢復到正常,而是儘可能地保留系統有效數據並停止運行。

記錄應該寫在發生的那一層
再記錄stack可以trace

Reference
log4j
日誌級別的選擇:Debug、Info、Warn、Error還是Fatal

設定git config

常用git config 每次建新repo都要重設一次,直接拉拿copy-paste
  • .git/config

    [core]
      filemode = false
    [core]
      filemode = false
    [color]
      ui = true
      branch = auto
      diff = auto
      status = auto
      log = auto
      interactive = auto
    

  • .gitattributes
    * text=auto


說明
  • 設定git
    #git config --global user.name "YOUR_NAME"
    #git config --global user.email YOUR_EMAIL
    
  • git指令自動完成
    1. 下載git source code 
    2. 複製.git-completion.bash
      $ cp contrib/completion/git-completion.bash. ~/
    3. 編輯.bashrc $ vim ~/.bashrc 加入 source ~/.git-completion.bash
  • UI環境設定
    • 啟用色彩
      # git config --global color.ui true
      # git config --global color.branch auto
      # git config --global color.diff auto                 //將diff的資料加入色彩
      # git config --global color.interactive auto
      # git config --global color.status auto           //
      
    • 自訂色彩
      #git config --global color.diff.meta "blue black bold"
      
    • 一次設定
      $ vim .git/config   編輯以下內容,顏色可自訂
      [color]
        branch = auto
        diff = auto
        status = auto
      [color "branch"]
        current = yellow reverse
        local = yellow 
        remote = green
      [color "diff"]
        meta = yellow bold
        frag = magenta bold
        old = red bold
        new = green bold
      [color "status"]
        added = green
        changed = red
        untracked = cyan
      
  • 檔案環境
    • 格式化空白
      由於windows(\r\n)及max, linux(\n)的換行符號不同 所以在不同環境下共同編輯時,會一直有換行符號的問題 看到原來git很聰明的可以自動幫我們做轉換 Git可以在你提交時自動地把行結束符CRLF轉換成LF,而在簽出代碼時把LF轉換成CRLF。 用core.autocrlf來打開此項功能,
      • Windows系統
        設置成true,這樣當checkout代碼時,LF會被轉換成CRLF
        #git config --global core.autocrlf true
      • Linux或Mac系統
        core.autocrlf設置成input來告訴 Git 在提交時把CRLF轉換成LF,checkout時不轉換
        #git config --global core.autocrlf input
    • 檔案權限
      git不會理檔案權限,所以當init後,就不會再改變,即使改過權限(744 -> 777)又commit
      當下的working area是會變,不過clone此repository會回到原本的744
      改為false後就會一致了
      git config core.filemode false
References Git Configuration