2016-03-24

[BJ] 長城八達嶺攻略

相信我,征服長城真的是件很容易的事情

北京食衣住行,各項消費水平都跟台灣差不多,
除了行,真的是優惠人民也優惠到了外國人

地鐵站5號線到積水潭站下車,出口B左轉走約一公里,
一路上都有指引,"前往八達嶺,在箭樓左側搭919路車"
用公交卡一段路是4.8元,單純打票要價12元...
不塞車的話大約五十分鐘就能到達八達嶺

車掌小姐一路上會嚇唬你說什麼不搭划車(來回票60元)
來回路程要六七個小時,搭了只要三四個
千萬別聽他的,隨便走其實不到兩個小時就可以走完
跟門票50元(學生票才20元)比起來
根本沒必要花這個冤枉錢
也不用花時間排隊上划車

逛了許多景點,長城是我見過最多外國人的地方
大概就跟我去埃及的金字塔跟人面獅身的感覺是一樣的

P.S.
1.919回程最末班時間是下午四點左右,請注意時間
2.爬長城最好穿摩擦力夠的運動鞋去,因為其中有好幾段路是
只有斜坡沒有階梯的
3.食物的話當地路邊攤不是很貴,餓的話可以稍微果腹

2016-03-18

整合Redmine跟Gerrit

Redmind是一套用Ruby-on-Rail開發的開源專案管理軟體,知名度頗高;Gerrit則是Google工程師開發一套建構於版本控制系統之上的Code Review的系統,他的hooks功能在前篇提到一 些,這裡要介紹怎麼把Redmind開出來的issue自動被Gerrit在patchset更新的時候一併更新。

[環境]

  • OS:Ubuntu 14.04 LTS
  • Redmine version: 2.3.2.stable
  • Gerrit version: 2.11
  • Script language: Python 2.7
[安裝設定]

Step 1. 開通Redmind的REST功能,管理權限Admin登入,進行網站設定 -> 認證 -> 啟用REST,打勾然後儲存。




Step 2. 取得各自帳號的REST API key,點選右上角我的帳戶,下方API金鑰點選後會彈出key,有了他可以透過REST API對Redmine程式化操作。

2016-03-11

如何設定Gerrit的Hook機制

Gerrit是一套Google工程師撰寫的開源code review系統,底下可以銜接多種類的版本控制工具,最近因為Android Studio的開發導入Gerrit作為code review的系統開始竄紅;以下介紹Gerrit如何設定其Hook機制。

[安裝環境]
  • 作業系統:Ubuntu 14.04 
  • Gerrit版本:2.11
  • 版本控制:Git

[設定步驟]
Step 1. 請正確安裝Gerrit系統(略)

Step 2. 修改gerrit的設定檔,把hook的設定補進去,目錄在${your gerrit home}/etc/gerrit.config;請根據自己的需求設定gerrit支援的hook階段

[hooks]
    path = /etc/gerrit/hooks
    patchsetCreatedHook = patchset-created
    # ...you can add more hooks

Step 3. 將script設定為可執行

sudo chmod +x /etc/gerrit/hooks/patchset-created

Step 4. 重啟Gerrit

sudo /etc/init.d/gerrit restart

Step 5. patchset-created是你要執行hook的script,可以換成任何您熟悉的script語言,置放在/etc/gerrit/hooks目錄底下,注意檔名要正確才能對應;先用bash來測試是否正常執行。

#!/bin/sh
echo 'hook setting test.' > hook-gen.txt;
注意:hook-gen.txt會產生到你git到的repo的project目錄,原則上應該是/etc/gerrit/git/${project}。

Step 5. 從本地端執行git commit push,將code送到Gerrit,然後當patchset被產生的時候就會執行patchset-created這支script。

2015-12-01

資料庫移轉:由SQLServer到PostgreSQL

以下提供將資料庫由 SQL Server 資料移轉至 PostgreSQL 的方法。

市面上其實有不少資料庫移轉的軟體或是script,因為這次被移轉的目標為PostgreSQL,那我們就拿其官方開發的 migration toolkit 來處理。

執行環境與工具:

  • 作業系統:Windows 2008 R2,安裝 SQL Server 2008。
  • Postgre Plus Advanced Server,版本9.4.1.3,PostgreSQL的企業版,又名EDB(Enterprise DB),號稱可以無縫取代 Oracle DB,商業模式相當清楚。以下簡稱 Postgre Plus Advanced Server 為 PPAS 。過程需要Product Key,可向官方免費取得60天試用序號;當然也可以直接使用開源版本的 PostgreSQL。
  • EnterpriseDB Migration Toolkit (Build 48.0.1),與 PPAS 同時安裝,執行目錄在 ${Program Files}\PostgresPlus\edbmtk\bin 

2015-09-07

使用Selenium自動化操作瀏覽器




Selenium是一套可自動程式化操作瀏覽器的工具套件,詳略。因為種種原因,個人需要一個登入網頁系統的自動化程式;以下是Selenuim實作在IE(Internet Explore)、Firefox瀏覽器上的簡易實作

[個人環境]
  • JDK 1.8.60
  • selenium-2.47.1
  • Eclipse Luna
  • IE 9

[步驟教學]
  1. Selenuim官網有很多種程式語言供下載,考量未來執行環境我使用Java,下載.jar,然後使用Eclipse建立專案,詳情略。
  2. 下載InternetExplorerDriver或GeckoDriver,請放在本機的磁碟目錄,這是用來幫你開啟IE瀏覽器的驅動器。
  3. 主要代碼如下
  4.        
        // Prepare IE driver
        WebDriver driver = null;
        DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
        System.setProperty("webdriver.ie.driver", "D:/IEDriverServer.exe");
        driver = new InternetExplorerDriver(capabilities);
        
        /* Prepare Firefox driver
        DesiredCapabilities capabilities = DesiredCapabilities.firefox();
        System.setProperty("webdriver.gecko.driver", "C:\\Users\\Sean\\Downloads\\geckodriver.exe");
        driver = new FirefoxDriver(capabilities);
        */
    
        // Automation
        driver.get("${Your URL}");
        driver.findElement(By.id("account")).sendKeys("${Your Account}");
        driver.findElement(By.id("password")).sendKeys("${Your Password}");
        driver.findElement(By.xpath("${Your xPath}"));
        driver.click();
     
    
  5. 點選執行

2015-08-13

之所以能成為賈伯斯(Steve Jobs) | 陪你讀冊 | 皮克斯動畫的管理心法



    今天在這裡介紹一本管理書籍,是由皮克斯(Pixar)動畫的創辦人卡特默爾(Ed Catmull)經由超過40年匯集的管理經驗,也許大家會狐疑,市面上有這麼多的管理教科書,為什麼又要特別花時間來讀他(台灣銷售量似乎也不好),就讓我們脫離東方奴才式管理的思考來看看這件事情吧。
    一切,我們先從賈伯斯(Steve Jobs)來說...

沉潛的背後

   賈伯斯(Steve Jobs),應該是現代少數無人不知曉的人物,因為他成功讓Apple Inc.打造 智慧型手機 iPhone,這項跨時代產品,不僅讓消費者為之瘋狂,更讓某些企業也想跟隨腳步打造"所謂產品"這檔事,東施效顰之事屢見不顯。

    個人一直很欣賞幾個企業家,賈伯斯是其中之一,Walter Isaacson的賈伯斯傳(Steve Jobs)個人中英文版都有入手,中文版至少從頭到尾看了三次以上,甚至連Audio都被我搞到手...

    另外一本號稱是蘋果公司授權的成為賈伯斯(Becoming Steve Jobs)最近個人也已拜讀,要說這兩本書最大的差異是成為賈伯斯(Becoming Steve Jobs)由數十年來與他很親密的財經記者撰寫,其中增添許多賈伯斯不為人知(起碼在我看了這麼多網路文章、訪談)的個人小故事,例如他為何要接受到史丹佛大學進行他這一輩子唯一的畢業生演講(後來被譽為少數經典演說之一),在入場前他與全家人一家五口的小故事;還有賈伯斯並非一個殘酷的暴君,他與同事、合作夥伴間的親密互動相處。

    以上只是前言,我們要思考的是,賈伯斯因為人為廣知的火爆個性,加上自己太年輕並不具備管理一間大型企業能力,而在1985年被自己一手創辦的Apple逐出;卻在11年後的1997年回到Apple,然後不過13年的時間就把Apple推向世界最有價值的企業,詳見下圖。

圖片來源:https://vktailormade.files.wordpress.com

    所以我們要思考這樣的轉變,或是為何Apple可以達到這樣的成功,是怎麼來的?

十年磨一劍

2015-07-16

無聊工程師的科學分析時間:為什麼頂尖運動員們總是有這麼多桃色緋聞

圖片來源:千人斬,最後的江湖(電影)

以下內容採科學數據分析來探討為什麼頂尖運動員們總是有這麼多桃色緋聞,可能包含18禁內容,請已成年者再繼續閱讀。

2015-07-11

只要十招,讓您經營高效的軟體研發團隊



1. 縱向思維分工,打破既有分工模式
    引言提到,我們團隊基本上就是一個人要做十個人的事情,所以如何分工就是一件最重要的事情,因為我知道如果以原本的工作型態進行分工,肯定無法承接;所以我自己在腦中沙盤推演很久,並將要接手的系統範圍做了領域的縱向切割,然後再分工出去。
    換言之,我讓每個團隊成員都具備full stack的研發任務與能力,雖然都是剛進公司的新人,不要緊,可以培養,我全力協助建立他們所需要的domain knowhow與技術能力。怎麼培養,後面文章會慢慢提到。

2. 信賴團隊,訂立明確任務
    充分信賴團隊,這句話會說的人很多,但真的做得到的主管很少;另外最重要的是,你要讓整個團隊清楚目標,但往往連主管自己也搞不清楚。
    再者,我真心認為公司的高階主管挑人進來的眼光都很厲害,某些因緣際會我接觸過許多公司的工程師,能進敝公司的人比較起來素質都相當優秀、上進心十足,都是佼佼者。
    既然我有一群佼佼者團隊,更應該善用大家的力量。

3. 個別成員,一次只給單一目標,絕不多頭馬車
    這招讓團隊成功突破許多限制跟細節
    身為一個主管在執行專案,最怕的就是進度不如預期,很抱歉,個人剛好承受壓力的極限異於常人,我把團隊中高手放在一個最無法預期進度(因為難度極高)的功能研發中,但我不給他任何的進度壓力,我這麼跟他說:"這個功能很重要、我也知道困難度很高,但我要的就是一個general solution,我不要你為了求快、求進度而做半吊子的成果就放到系統裡,你放手去做,有任何需要幫忙的盡管提出來我可以跟你一起解問題,剩下的責任我來扛"
    執行過程,當然會遇到不少問題,不管是技術上或是方向要怎麼走,我會仔細從頭到尾把問題、過程、可能解法都聽過一次才發表自己的想法,並且要求成員能有自己的意見跟想法,充分相信你的好手!
    用了好幾次,屢試不爽!成員暨獲得成就感,系統也有了大突破。 

4. 何其幸運,我自己也擁有一個能力超強、當責的好主管
    十年寒窗無人問其實很辛苦,剛好自己也相當幸運,碰到一群好主管(不然也不可能這麼快就讓我當責帶團隊),我們的溝通很頻繁、也很順暢,下情能上達,而且他完全能觀察到我帶團隊用的方法以及建立的文化氛圍,幾乎不用任何解釋他就能理解我的想法

2015-07-08

Nagios 納管監控主機設定方式


Nagios安裝完成後,必須把設備(ex: Host)進行納管才能進行監控,以下簡介設定方式。

  • 安裝環境:CentOS 6.4 64bits
  • Nagios版本:nagios-4.1.0rc1

Step 1. 把要納管的設備加進 /usr/local/nagios/etc/nagios.cfg 中,Linux、Windows系列建議分開放。以下圖為例,個人的Nagios納管了3台Linux Server(包含自己localhost) + 5台Windows Server。

Step 2. 於 /usr/local/nagios/etc/objects 資料夾對應 Step 1. 新增設定檔,以 windows template為範例,主要有三個部分要修改:

2015-06-11

Nagios告警信設定方式



    以下介紹Nagios在監控環境主機發生問題的時候,發送告警Email的設定方式。

  • 安裝環境:CentOS 6.4 64bits
  • Nagios版本:nagios-4.1.0rc1
  • Nagios Plugin:nagios-plugins-2.0.3
  • Linux Clent:ncpa-1.8.1-1.el6.x86_64
  • Windows Client:NSCP-0.4.3.143-x64
    根據網路上很多資訊指出,nagios安裝在Linux上只要另外安裝mailx再透過postfix的方式就可以發送,但小弟怎麼試都不成功的情況,只好直接從nagios的notification definition下手,該檔路徑在 /usr/local/nagios/etc/objects/commands.cfg,當然這是小弟的個人路徑,請視客倌您的安裝路徑自行修正。
    

# 'notify-host-by-email' command definition
define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }

2015-06-04

小確幸物語 之一

一陣沉睡 半夢半醒 
略見一縷陽光 輕灑
翻身 繼續盜夢 回到第三層

背酸 潛浮到第二層
眼縫 幸福還在身邊 沒醒 
再換個角度 掉落

時針 搖擺了幾下
好動的幸福 跑來跑去 跳上跳下
賢慧的幸福 曬完衣服 
但 還不想醒 因為 還不夠餓

週末 陽光 慵懶 徘徊 微妙 幸福

如何在北京辦理一年多簽

想在北京辦理一年多簽
很簡單,也很便宜
台灣旅行社代辦要價3k..真的是坑那些不懂人的錢
以下是最簡單的流程

===準備資料===
1.一張2吋照片
2.100 RMB
3.旅館開給你的居住證明
注意事項:
  a.必須在退房前就去辦理,否則機關人員無法在網路上
  查到相關資料
  b.給附印本即可,但要用A4印

===地點===
北京出入境管理局
(地鐵雍和宮站下車,出口B,然後順著馬路走約1km方可到達)

接下來就是當場填寫表格,然後抽號碼牌去繳交證件
最後到櫃檯繳費,工作日七日,扣掉假日大概是十天後可以拿到~

報告完畢!!

2015-05-19

SCRUM的迷思



    軟件工程一直是個很有趣的領域,相關工程論從早期的CMMI、到近年流行(其實也不是近幾年,在台灣已經有聽到2005年就開始執行的專案)的敏捷(AGILE)開發,由於CMMI繁瑣的文件要求、瀑布式開發都讓人直覺認為執行一個專案最起碼要數月、半年、好幾年的時間,所以應運而生敏捷開發這個名詞,相關最著名的方法論為SCRUM,不小心這個方法個人帶的團隊有執行過;以下來探討一下人們對敏捷開發的迷思
 
    再次強調,敏捷式開發不是軟工方法,敏捷只是一種心理狀態的描述、一種工作環境的意念,如果公司文化沒有敏捷的意圖或是想法存在,導入任何方法都沒有用。

    那SCRUM又是什麼,假如敏捷開發是個數學的應用問題,那SCRUM就是一套或許可以解決問題的公式,SCRUM只是一套方法、一種作業方式、一種運作模式、一種流程,SCRUM不是萬靈丹、SCRUM不是萬靈丹、SCRUM不是萬靈丹,因為很重要,所以要講三次。

迷思一:有了SCRUM就不用寫文件
    一言以蔽之:SCRUM是利用大量的溝通、許多的定期會議取代文件撰寫,所以在時程上並不會大量減少耗費人時,因為這是一種挖東牆補西牆的概念。但好處是因為溝通頻率高,各角色間的思考誤解會有效減少,避免各說各話。
    CMMI最令人詬病的就是那一拖拉庫的文件,從肥滋滋的客戶拿著需求來找你開始,一直到開發完成、測試完成,全部都是一連串的交付文件,包含每個月研發團隊開的會也要記錄,所以CMMI常常被罵到臭頭的都是這件事情。但用了SCRUM之後,難道就真的可以避開這些阿雜的事情嗎?
    CMMI設定的SA、SD、PG、Tester便缺少了文字依循,所以SCRUM放入了幾項元素:會議(快速、經常性的)、User Story。
    因應軟體開發這種腦力高度集中的產業,資訊需要快速交流、有效溝通,SCRUM的模型裡面針對溝通部分導入大量的會議,包含Daily standing meeting、Sprint retrospective meeting、DEMO meeting...
    所有的SCRUM教科書都說Daily standing meeting是一種每天要所有團隊成員以站立的方式開一個10 - 15分鐘的會,那這個會要幹什麼,一言以蔽之就是要資訊通透,會議中要求每個人只要說明前一天做了什麼、今天要做什麼、遇到什麼問題需要協助...

你真的以為會議都會在15分鐘內就結束嗎?

    除非你真是個非常有經驗Scrum Master相當會掌握會議僅度 or 技術能力很強可以理解每個成員想要表達的事情,一個理想的Daily standing meeting執行上其實不簡單,提供個人經驗分享
    此外Retrospective meeting一定要把會議討論的重點跟調整方向記錄下來,口說無憑、時過境遷,很多事情不寫下來或是當下沒有決議,進度檢討流於空談。這種會議文件也不需要長篇大論,基本上就是一張A4就綽綽有餘,紀載會議時間、與會人員、決議事項、待辦事項(包含人、事、時)即可。

迷思二:SCRUM可以節省開發時程