Note: Work with Meteor and NodeJs on Ubuntu 14.04

去年某個案子開始用Nodejs/Meteor 不過是北歐的合作廠商負責的 我還是只負責底層 BSP porting 用的是Yocto Distribution 本來案子被我很快的呼嚨完客戶很快的就量產 但是技術債就是這樣遲早都要還 經過半年後 客戶發現某一部份功能不太穩定 希望我這邊重新看看可不可以修正

結果卻發生怎樣都沒辦法build meteor package 重新裝了 meteor/build-essential/nodejs … 等等
還是 build failed 跟之前作案子時完全不同, 經過幾小時嘗試各種方式 然後去看build log 只知道某些 npm package 安裝 failed然後又重新裝各種 nodejs 0.10.x/npm/node-gyp … 還是無法解決 >_<

直到我重新review host 上的 gcc version 才發現目前default 用gcc-4.9, 起因是前幾周在測試 Qt5.6 ~ Qt5.8/Boot2Qt 等等時, 它需要切換到gcc-4.9 配合新的語言標準才行,

但是此時卻發生了npm install packages failed後來透過 sudo update-alternatives –config 把gcc 切回gcc 4.8 果然解決問題

 

Tips:
Debug 中 學到下列
cd ~/.meteor/
ls -al可以看到安裝的meteor version
meteor->packages/meteor-tool/<RELEASE>/<PLATFORM>/meteor
curl https://install.meteor.com > meteor.install
vim meteor.install # 可以去找RELEASE 改成想要安裝的版本, 我自己的案子目前建議還是用 “1.3.2.4″ 目前抓到的應該是 “1.4.2.3″
修改過後用 cat meteor.install | sh 就可以安裝了

廣告

Note: To disable Middle button of Mouse on Ubuntu

因為在Ubuntu 上面GTK Default 支援一個很討厭的Feature 就是用 Mouse 中間當Paste 鍵, 但是常常在Scrolling 時, 會誤觸 產生不必要的困擾
所以就找了找 Disable 這個 Feature 的方法
有說要改 GTK libarary code 對我來說實在太麻煩了
後來找到用 xinput set-button-map 的簡單方法
先用 xinput list 找出需要設定的滑鼠, 如下
kunyi@kunyi-ThinkPad-X220:~$ xinput list
⎡ Virtual core pointer                    id=2[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              id=4[slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Nano Transceiver v2.0id=10[slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Nano Transceiver v2.0id=11[slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                   id=16[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              id=14[slave  pointer  (2)]
⎣ Virtual core keyboard                   id=3[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             id=5[slave  keyboard (3)]
    ↳ Power Button                            id=6[slave  keyboard (3)]
    ↳ Video Bus                               id=7[slave  keyboard (3)]
    ↳ Sleep Button                            id=8[slave  keyboard (3)]
    ↳ Microsoft Microsoft® Nano Transceiver v2.0id=9[slave  keyboard (3)]
    ↳ Integrated Camera                       id=12[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            id=13[slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                  id=15[slave  keyboard (3)]
上面是 pointer 是指標裝置 我用的是 Microsoft Microsoft® Nano Transceiver v2.0
可以看到 id=10 & id=11, 但是這個因為是 USB Device 所以id 並不會一定每次開機都是 10 & 11 會隨著我的 USB bus 有所變化
但是總不能每天改 script吧!
所幸 有pipe & grep & xargs 幫我解決這個問題, 透過下面的指令串就可以自動把id 抓出來, 然後執行 xinput set-button-map
應該有更簡單的寫法不過我試不出來 >_<
 xinput list | grep -Po ‘Microsoft.*pointer’ | grep -Po ‘id=\K[0-9]+’ | xargs -n 1 -I @ xinput set-button-map @ 1 0 3