2017-01-18

陪你讀冊 | 決斷兩秒間(Blink: The Power of Thinking Without Thinking)

圖片來源:Blink: The Power of Thinking Without Thinking

    受到羅輯思維視頻啟發,以往個人看書,都是看過、畫重點後就把書擱在一旁,看過的書目其實不少,但真要從記憶殿堂中把知識取出再利用的成效明顯不彰(汗...)。而羅輯思維推出的"得到APP"其中之一萬維鋼欄目的知識積累方法,是透過將自己看過的書寫成筆記,以撰寫的方法進行梳理自己的邏輯思維。

    最近迷上Malcolm Gladwell的書籍,從最早的異數:超凡與平凡的界線在哪?開始閱讀,陸陸續續又買了以小勝大:弱者如何找到優勢,反敗為勝?引爆趨勢:小改變如何引發大流行、還有本次文章要提到的決斷2秒間:擷取關鍵資訊,發揮不假思索的力量,等有空會一本本把閱讀手札補上。

    決斷2秒間:擷取關鍵資訊,發揮不假思索的力量所有探討的主題圍繞在"薄片擷取"理論,所謂薄片擷取指的就是人可以透過數年成長歷練的經驗以及知識,在很短的時間只要看過一眼,就可以得出一個可能比運作數個月的研究工作團隊還精準的判斷,為此書裡舉了一個美國加州蓋提美術館(J. Paul Getty Museum)在1983年買到假大理石雕塑(Getty kouros)的故事做為引述。

2016-11-04

[Selenium] How to solve org.openqa.selenium.remote.ProtocolHandshake createSession problem

    近期用 Selenium 在沒有更新任何源碼的情況,再次執行後遇到以下錯誤:


Starting ChromeDriver 2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129) on port 21975
Only local connections are allowed.
十一月 04, 2016 1:55:08 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
資訊: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
十一月 04, 2016 1:55:10 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
資訊: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.NoSuchSessionException: no such session
  (Driver info: chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 4 milliseconds
Build info: version: '3.0.0-beta4', revision: '3169782', time: '2016-09-29 10:30:04 -0700'


    解法是要將 ChromeDriver 2.23 更新到 2.25 即可,不過這點還滿弔詭的,因為我個人並沒有更動到任何既有源碼或更新 Selenium 套件,代表 ChromeDriver 本身一定有做一些檢查,這點有空再來研究。

[額外資訊]

2016-11-03

Ubuntu安裝Java JDK 7或JDK 8

介紹於 Ubuntu 14.04 / 16.04 上安裝 Java JDK 7 / 8 的方法。

[說明]
當網路環境處於離線,或不一定直接能存取到internet仰賴proxy時,使用ppa的安裝基本會失效,乾脆到官網上下載 jdk 檔案然後直接進行設定反而是最快的做法。

[步驟]
  1. 請至官網下載JDK,我們這裡用 jdk1.8.0_111 這個版本作為示範,請自行替換版號。
  2. 建立 Ubuntu 的 jvm 目錄,指令:
    • #sudo mkdir /usr/lib/jvm
  3. 將下載的 jdk 檔案解壓縮到 jvm 目錄,指令:
    • #sudo tar -zxvf jdk-8u111-linux-x64.tar.gz -C /usr/lib/jvm
  4. 再來要將 java 預設路徑告知系統,請:
    • #sudo vim ~/.bashrc
    • 添加以下內容
    •        
      export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111
      export JRE_HOME=${JAVA_HOME}/jre
      export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
      export PATH=${JAVA_HOME}/bin:$PATH
      
      
    • 使環境變數生效
    • #source ~/.bashrc
  5. 然後執行以下步驟,讓 Ubuntu 認得這個版本的 JDK
    • #sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_111/bin/java 300
    • #sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_111/bin/javac 300  

2016-11-02

[Ubuntu] 設定ssh可遠端用密碼登入

    某些版本的Ubuntu預設沒有開啟ssh遠端用帳密登入的權限,所以當你使用Puttie等連線軟體的時候會遇到登入錯誤,解法如下:

  1. 直接到Server上登入Ubuntu Console
  2. #sudo vim /etc/ssh/sshd_config
  3. 將 PasswordAuthentication 變數由 no 改為 yes
  4. 重啟ssh service,指令:/etc/init.d/ssh restart
  5. 即可由遠端透過ssh登入
  6. #sudo -s
  7. #passwd

2016-10-29

[自動化網頁測試] 於Ubuntu使用Selenium整合Headless Firefox

這裡介紹Geb(瀏覽器自動化browser automation)的解決方案Selenium + Headless Firefox。

[環境與工具]

  • Ubuntu Server 14.04 LTS
  • JDK 1.8.0_91(注意!! jdk 1.7 Selenium 會有問題)
  • Ubuntu沒有GUI,需要使用xvfb(x window virtual framebuffer)作為headless browsergraphic render
  • Web Driver
    • firefox webdrivergeckodriver-v0.10.0
    • google chrome webdriverchromedriver_win32 / linux64
    • 請自行下載並注意執行環境平台
[xvfb & firefox]
  • 安裝指令
    • #sudo apt-get install firefox xvfb
  • 安裝過程如果缺少字型
    • #sudo apt-get update
    • #sudo apt-get install -y xorg xvfb dbus-x11 xfonts-100dpi xfonts-75dpi xfonts-cyrillic
  • 啟動xvfbgraphic render,頻道0~99任選,1280x960x16為模擬視窗大小,目前使用此值運作正常
    • #Xvfb :99 -ac -screen 0 1280x960x16
  • 擷取xvfb畫面

2016-09-14

在Macbook Pro使用Bootcamp安裝Windows10

基於與在下公司方便共事 + 個人是Apple Macbook系列的硬體控(沒有任何品牌的laptop質感比得上),所以必須委屈讓個人的MBP安裝Windows 10。

[注意事項]

  • 新版的安裝方式跟Windows 7不同,不過變得更方便了!!


[硬體]

  • Apple Macbook Pro 2015
  • Bootcamp
  • 安裝Windows 10
[安裝步驟]
  1. 先登入Mac OS,啟動應用程式工具的Bootcamp
  2. 準備Windows 10.iso,並存檔於Mac OS
  3. 啟動Bootcamp,輸入iso的檔案路徑,連上網路,Bootcamp會自動幫你下載需要的硬體驅動程式;再來就是選定你要給定Mac OS跟Windows的磁碟空間大小,最後點選下一步便會開始安裝作業。
  4. Windows 10安裝步驟,略。
  5. 順利安裝Windows 10後,最重要的是安裝驅動程式,這個比較不好找,要點選[開始] -> [檔案總管] -> [電腦],這時候C槽圖示下面你會看到還有個iso掛在那邊,不要懷疑,你需要的驅動程式就在裡面,不用再自己去抓啦(想抓也抓不到...我花時間找很久)。點進去資料夾,裡面應該有[Driver],點選Setup即可!!

2016-09-10

使用Visual Studio 2015製作Cordova的Android APK(可上架至Google Play)


前些日子的文章提到,Microsoft Visual Studio 2015 針對 Mobile APP 開發相當友善,近日用其 Cordova 套件來開發,推薦大家使用;今天跟大家介紹如何使用Visual Studio 2015製作Android APP的android-release.apk,以便發佈到Google Play。

[製作keystore]

  • Cordova建置Android APP分為兩個階段,分別為Debug、Release,上架至Google Play上的APP需要開發者的金鑰簽署,以下是簽署指令
  • 使用jdk的keytool製作金鑰,一般而言放置路徑會在C:\Program Files\Java\jre1.8.0_91\bin
  •        
    #keytool -genkey -alias your-key-name.keystore -keyalg RSA -validity 20000 -keystore you-key-name.keystore
    
    

[設定keystore資訊於Cordova專案]
  • 有兩個檔案需要設定,其一是[專案] -> [res] -> [native] -> [android] -> ant.properties,請自行填入方才製作的keystore資訊

  • 其二為[專案] -> [www] -> build.json,編輯後會像是

2016-09-08

北京坑錢事件簿

背包旅行多次的經驗
讓我深刻體會到,剛到某個國家前幾天一定都會被坑到錢
在大陸當然也不例外

事件一:
出機場因為行李繁多,計程車一台不願意載我們兩人
所以我和同事就包了台廂型車前往住宿飯店
要價650RMB,還沒得殺價
到了飯店,得知其他同事跳錶的計程車資才110RMB...XD

事件二:
在飯店附近的小店購買手機易付卡
店家開價65,我們就說早上來個同事才買55,
店家立刻說他記錯了...改算我們55
事後我們問了房仲,他們買只要50~

事件三之一:
我在小區附近的美廉美超市買了P牌吹風機,178RMB,
隔天在鬧區的大賣場看到特價99RMB....(吐血)

事件三之二:
同事U在美廉美超市也想買吹風機,標價約95,
然後他在閒聊中隨口說了:"喔,好貴喔"
服務員馬上說:"我們現在有做特價,只要75"
得知:在賣場也可以殺價~

事件四:
同事C在超市買了盒保鮮膜包起來的四根香蕉,7.5RMB
回家後發現壓在底下的兩根是爛掉的...

2016-08-11

使用Docker建置Spring Boot微服務


脅持著微服務架構盛行,Spring Boot 似乎也開展起不小的火紅之路,再搭配 Docker LXC容器技術,應該算是個很厲害的組合。

[環境]
  • Ubuntu 16.04 LTS 64 bits
  • Docker version 1.10.3
  • Java 8
  • Gradle 2.10
[建置步驟]
  • 請自行安裝Ubuntu 16.04,過程略。
  • 由於Ubuntu 16.04預設只有apt,習慣用apt-get的人可以自行安裝apt-get
    • #sudo apt install apt-get
    • #sudo apt-get update
    • 安裝Gradle
      • #sudo apt-get install gradle
    • 安裝Docker
      • #sudo apt install docker.io
      • 安裝Git,並抓取放在Github上做好的gradle專案,看起來目錄如下圖
        • #sudo apt-get install git
        • #sudo git clone https://github.com/spring-guides/gs-spring-boot-docker.git
        • 為了避免我現在測試的 src 版本會跟撰寫這篇網誌有差異,我自己 fork 了一份在自己的 github 上:https://github.com/A-Ho/gs-spring-boot-docker

        • 由於下載的範例檔src/main/java/hello/Application.java

        2016-07-28

        [troubleshooting][visual studio][cordova] 解決Ripple模擬器排版異常問題

        Microsoft Visual Studio 2015 針對 Mobile APP 開發相當友善,近日用其 cordova 套件,覺得滿推薦各位使用。

        Ripple emulator 是個啟動速度非常快的網頁版 APP 模擬工具,除了手機才提供的功能(相機、GPS、訊息推播...etc)等硬體功能外,視覺表現幾乎可圈可點。

        但如果你遇到 Ripple 排版亂掉,看起來就像是開了網頁但沒有了 css 排版(很抱歉來不及截圖,不小心問題就被解掉了),有個很簡單的重新 reset 方式:

        點選 [工具(T)] -> [選項] -> [Apache Cordova工具] -> [Cordova工具] -> [清除 Cordova 快取],即可解決。


        2016-07-22

        [troubleshooting][rabbitmq] Error: unable to connect to node rabbit@controller01: nodedown

        當對 RabbitMQ 執行 rabbitmqctrl 指令時,如果發生 Error: unable to connect to node rabbit@controller01: nodedown,如下圖


        不要懷疑,非常有可能就是你的 /etc/hosts IP填錯,以上述例子會查 hostname 為 controller01 的IP去送 cmd,所以 IP 千萬不要填錯了~





        2016-04-20

        安裝與備份Gitlab教學

        GitHub幾乎是所有(除了China)資訊工程師置放源碼的首選,但缺點是免費使用你必須開源自己的專案,否則必須額外付費,這時候你可以考慮安裝Gitlab作為repository。

        [作業環境]
        • Ubuntu 12.04 LTS
        • Gitlab version:gitlab-ce_7.10.4
        [網路環境]
        • 請注意自己的網路有通,不然記得設定proxy
        • export http_proxy=http://${ip}:${port}
        • export https_proxy=http://${ip}:${port}
        [安裝步驟]
        • sudo apt-get install curl openssh-server ca-certificates postfix
        • curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
        • sudo apt-get install gitlab-ce=7.10.4~omnibus-1
        • sudo gitlab-ctl reconfigure
        [Gitlab網頁設定]
        • 把自己的IP替換這兩個檔案
          • sudo vim /etc/gitlab/gitlab.rb
          • sudo vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
        • 重啟Gitlab
          • sudo gitlab-ctl reconfigure
          • sudo gitlab-ctl restart
        [備份]

        2016-04-11

        [OpenStack] 如何擴充DevStack的Swift空間

        DevStack是一套一鍵式安裝部署OpenStack的利器,但DevStack的運作核心僅是提供Developer一個簡單上手參與開發的工具,並不是拿來做上線系統正式環境,所以有些參數需要自己微調。

        舉例來說,預設DevStack的Glance、Cinder都會用到Swift的空間作為儲存,而該Swift則是掛在xfs格式的filesystem下,預設只有2GB,調整的方法如下:


        • swift掛載的loop device滿載,可以下指令 df -hT 查使用量。

        • ~/tempest_run/workspace/devstack/local.conf 加入參數  SWIFT_LOOPBACK_DISK_SIZE=4G ,容量可自訂,接著把整個 devstack uninstallreboot VMinstall,就可以看到 swift.img 被加大。