Showing posts with label tip. Show all posts
Showing posts with label tip. Show all posts

Saturday, May 25, 2019

Build Thrift compiler (without libraries)

最近在 Linux 與 OS X 上編了 Thrift 0.12.0 要用,跟之前 0.10.0 狀況好像不太一樣了。

Built Thrift 0.12.0 on Linux and OS X recently. The steps to get successful build is different from 0.10.0.

我只需要 Thrift 的 IDL 編譯器,不需要語言的函式庫,用下面的方法可以建置出來:

All I need is Thrift compiler. I excluded libraries for languages to speed-up the build process. Here is the commands to complete the build:

  1. 將會需要 C++ 編譯器,系統上要有基本的建置環境。另外比較特殊的是 Flex 與 Bison (>= 2.5) 這兩個工具,也需要事先安裝好。

    Essential build environment is required. Flex and Bison (>= 2.5) are also required.

    Ref: Apache Thrift Requirements

  2. 會需要 Boost 的標頭檔,因此要先建置出 Boost 標頭檔:

    We will need Boost. Headers are good enough for completing build. Generate Boost headers first:

    $ ./bootstrap.sh --prefix=/tmp/p

    $ ./b2 --with-headers

  3. 開始正式建置 Thrift 編譯器:

    Configure and build the Thrift compiler:

    $ ./configure CXXFLAGS=-I/private/tmp/b/boost_1_70_0 --enable-libs=no --enable-tests=no --enable-tutorial=no --with-boost=/tmp/p --prefix=/target/thrift-0.12.0

    $ make

    $ make install

    比較特殊的是要使用 CXXFLAGS= 來讓建置過程可以找到 Boost 標頭檔,說明文件中的 --with-boost= 似乎是完全沒作用。

    The most tricky part is instructing build process to reach Boost header with CXXFLAGS= flag. The --with-boost= flag in help message does not work for me.

Saturday, October 19, 2013

VirtualBox VM 中的 Apache 存取共用資料夾內檔案

因為開發上的方便,透過共用資料夾把檔案給 VM 裡的 Apache 使用。

但發生了即使檔案在 host 上已經變更了,透過在 guest 裡的 Apache 讀到的內容卻還是舊版本的狀況。

查了一下發現是要在 <Directory> 設定中加上下面兩個設定:

EnableMMAP Off
EnableSendfile Off

Monday, October 24, 2011

從指令列開啟檔案

在 Linux 上很直觀的就是執行要開啟的程式來開檔案,不過也可以使用 xdg-open / gvfs-open / gnome-open 工具來透過 GNOME 開啟檔案。


在 MacOS 上則是用 open 工具,要指定開啟的 App 的話就是用 -a 選項這樣。

Friday, May 29, 2009

從 Universal Binary 中移除非本機平台機械碼

以我的情況來說,在 PowerPC 平台上,執行檔中的 IA32/EM64T 的機械碼基本上是不需要的。在一些比較巨大的程式上,可以省下不少空間。

可以使用 ditto 這個內建的指令來從 Application Bundle 中移除非 PowerPC 機械碼:

ditto --rsrc --arch ppc /Applications/Camino.app /Applications/Camino-PPC.app

另一個相關的工具是 lipo 這個內建指令,不過他是用在 Mach-O binary 檔上的,不能直接給他 Application Bundle 資料夾去處理。

Wednesday, April 22, 2009

Git 的 push

之前是用 Subversion 來作版本控制,可是不是總是可以連到中央伺服器上,所以最近移轉到 Git 上。

Git 的 push 不會去改變 work copy 的內容,而且 HEAD 也不會前進到最新的 commit 上,一整個跟 Subversion 線性的歷史記錄不太一樣。

如果發生了 push 進附有 work copy 的 repository 的事情,更新 work copy 就得要先用 git log 先把最近一個 remote commit 的 commit ID 找出來,然後再用 git reset %COMMIT-ID% 來把 HEAD 設定過去,最後用 git checkout . 來把 work copy 更新。

看來還是要準備一個 bare repository 才行,也就是每個人要有 public repository 跟 private repository 兩個 repository ... 感覺實在挺浪費的。

建立 bare repository:

$ mkdir project.git
$ cd project.git
$ git init --bare

將現有位於 /home/me/project 的 repository 複製成位於 /home/me/repo/project.git 的 bare repository:

$ cd /home/me/repo
$ git clone --bare /home/me/project

把 remote repository 設定補進 private repository 中:

$ git remote add origin /home/me/repo/project.git
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

Sunday, November 23, 2008

關閉 Windows 檔案總管的影像檔案預覽功能

檔案預覽功能,主要就是滑鼠點在檔案上的時候,檔案總管會顯示影片或是圖片檔的縮圖在旁邊,底下的狀態列也會顯示諸如維度、彩色編碼模式、檔案註解等等資訊。

個人覺得是沒啥用的一個功能,而且電腦慢一點的話,在產生這些資訊的同時,諸如更名或是刪除等檔案操作都會因為檔案總管正在對檔案讀取以製作預覽而無法使用,得等個半天才能做檔案操作。

關閉圖片與影片的預覽可以使用下面這兩個指令:

regsvr32 /u shimgvw.dll
regsvr32 /u shmedia.dll

第一個指令會關閉圖片預覽,第二個指令則是關閉影片預覽。

要重新開啟圖片與影片的預覽則可以使用下面這兩個指令:

regsvr32 shimgvw.dll
regsvr32 shmedia.dll

同樣分別是針對圖片與影片發生作用,可以視情況擇一使用。

Saturday, November 10, 2007

除去文件每行首尾空白的指令

從網頁,或是某些在每行前加了空白的 BBS Post 上貼文章到記事本前,可以用這個指令來把因為格式轉換等造成的前置與後置空白去除。

perl -e 'while($l = ) { $l =~ s/^\s+//; $l =~ s/\s+$//; print "$l\n"; }'

資料直接丟到 STDIN 就好了,輸出會從 STDOUT 出來。對長文章比較方便的用法可能是 redirect 到檔案裡再開吧!

Sunday, November 04, 2007

設定 eclipse 的語系

主要是 subclipse 的問題,因為 subclipse 有中文語系檔,所以他就會盡可能的顯示語平台相符的語言。

不幸的是 eclipse 沒有中文語系檔,所以用起來就很怪,關於 SVN 的部份就有中文。更慘的是,看到經常會反應不太過來... 像是要 commit 還得找一下 orz|||

更新 fink 之中,順便找了一下 solution 看要怎麼處理比較適當,然後找到這篇

簡單講,除了把作業系統設成英文版之外,可以改 eclipse.ini 檔,或是在啟動的捷徑中加參數。要加進去的參數是:

-nl
en_US

Mac 上沒有什麼啟動捷徑,所以改 eclipse.ini 是比較單純點。要注意的是,改 eclipse.ini 的話得像上面寫成兩行,並且必須在 -Vm 選項之上。

其他設定可以參考 Eclipse 3.3 Help: Workbench User Guide / Tasks / Running Eclipse 的說明。

Tuesday, September 04, 2007

無失真旋轉 JPEG 圖檔

就像大家知道的一樣,旋轉 JPEG 圖檔可以是無失真 (lossless) 的。

在 Linux 或是 Mac 或是 FreeBSD 上,可以用 libjpeg 附的 jpegtran 來處理。

指令就是 jpegtran -rotate 90 in.jpg > out.jpg

這個程式會把輸出往 STDOUT 倒,所以要取代原始檔案得另外自己刪除舊黨、改檔名。

在 Mac 下可以安裝 fink 的 libjpeg-bin 套件來取得 jpegtran 程式,或是不想裝 fink 的話,就得自己抓 libjpeg 來編譯了。

Sunday, November 12, 2006

開啟 eMule 的 Protocol Obfuscation

主要是因為各大 ISP 紛紛開始限制 P2P 網路的流量,狠一點的甚至就整個切斷這樣,所以本來堅持不做通訊加密的 eMule 團隊也在 0.47b 版中加入了 Protocol Obfuscation 的功能。

eDonkey/eMule 所形成的 ed2k 網路算是很早期的網路,所以針對 ed2k 的內容過濾器很早就被開發出來,主要是會去辨識傳輸的內容,如果是 ed2k 的連線就阻斷或限制流量這樣。

開啟 Protocol Obfuscation 之後,通訊內容會被作一定程度的加密,要辨識傳輸內容變的比較困難,所以 ISP 的限流設備就比較沒辦法了。

要使用這個功能必須更新到 eMule 0.47b 以後的版本,然後,這個選項不是預設開啟的,必須手動開啟。

開啟 Protocol Obfuscation 的方法是: [Options] - [Security] - 勾選 [Enable Protocol Obfuscation] 對應到中文版就是: [選項] - [防護] - 勾選 [開啟模糊協定] 這樣。選項設定開啟後,似乎還要重新啟動 eMule 才會完全生效。

開啟之後,對 server 與其他 peer node 的連線在雙方都支援的情況下,連線內容會被加密,這對連線到某些大水管而言算是相當有幫助。

不過也不是開了 Protocol Obfuscation 之後就所向無敵,目前有不少其他比較昂貴一點甚至會誤殺的方法被發展出來,但是至少七八成是可以連線就是,也許速度會慢些就是。

Monday, August 28, 2006

Firefox 的微調

設定上,可以設下面幾個:

config.trim_on_minimize

將這個設定屬性設為 true 可以讓 Firefox 在視窗最小化時進行記憶體回收。

主要是 scripting 之類的東西,配置記憶體時採用的自動配置與釋放的自動化記憶體管理技術。簡言之,就是可能預設的回收政策對於一些記憶體空間比較拮据者稍嫌樂觀。

讓 Firefox 在視窗縮小化時作記憶體回收的動作,一來可以釋出部份佔不使用的記憶體給其他程式使用,二來比較不會影響到使用者操作網頁瀏覽器的速度。

editor.singleLine.pasteNewlines

這個設定可以決定在將多行的文字貼到只有單行的輸入元件上時,要怎麼處理換行符號。

有下面幾種設定值,預設是 0:

0:
全貼進去,雖然看起來會是一行,但是實際上含有換行字元,在 linux 版本上是預設值。
1:
只貼上第一行,在其他平臺如 Windows 上,這是預設值。
2:
將換行字元替換成空白字元,不太知道這有什麼作用...
3:
把所有換行字元去除後全部貼上,個人是建議可以設成這個值,尤其從 BBS 之類的東西上貼網址會比較方便。

至於 extension 方面,下面幾個對一般使用個人蠻推的:

All-in-One Gestures Extension
使用滑鼠手勢來控制部分動作,上手之後使用瀏覽器會更流暢快速。
adblock
過濾掉部分不要的網站的內容,主要是又佔畫面空間而且讀取又慢的廣告。有些網站會一直跳 pop-up 視窗也可以用這個把跳視窗的 script 濾掉,開視窗佔時間。
Download Statusbar
可以把下載進度顯示到瀏覽器主視窗下方處,取代原本另外開 Download Window 的方式。感覺上是比較明瞭下載狀況,而且也可以不用在一堆視窗間換來換去。
Right Encoding
把網頁語系編碼切換的選單加到右鍵選單中,這樣比較方便,而且可以針對單一頁框進行設定。
Show Image
在網路比較繁忙時,如果有臨時連不上造成的破圖,可以直接點選破圖讓 Firefox 試圖重新下在之前沒有成功下載的圖檔。沒有裝這個 extension 的話,只能整頁重新整哩,不過常會使原本好的圖反而破掉。