Calendar

十一月 2018
« 十一月    
 1234
567891011
12131415161718
19202122232425
2627282930  

Categories

Page 1 of 512345

在 FreeBSD 利用 I2P 架設 deep web site

I2P 也是一個老東西,不過這東西一直都沒有成熟過,到目前還屬於未完全開發的狀態,檯面上的社群也小得可憐。
它比較少被人們注意,是因為它幾乎不被用來當作跳板,因為不像 Tor 一樣有一大堆 exit nodes,它主打的就是 I2P 網路內部的服務。
I2P 網路內部提供的服務非常多樣性,mail、IRC、instant messaging 等服務都有,甚至可以用 BitTorrent 和 ed2k 等方式進行 file sharing。
但是這網路的缺點就是慢,加上使用的人少,導致貢獻頻寬的人少,讓這網路可說是慢上加慢,但隱密性確實是強過 Tor 的。

Continue reading 在 FreeBSD 利用 I2P 架設 deep web site »

在 FreeBSD 利用 Tor 架設 deep web site

Tor 這玩意已經是老東西了,有些人只是把它當成跳板用,有些人會拿來瀏覽 .onion 虛擬網域下的 deep web sites,當然也有人拿來架 deep web sites。
長年來人們對 deep web 都會有一些不切實際的傳說,譬如下面這幾張圖:
deep-web deep-web-247933 150279_original
這些圖片和傳說雖然有些是真的,但大部分都可以把它當成 joke 看待,不用對它們太認真。
特別是第三張圖,你還會看到各種惡搞變形版,我只能說對它認真你就輸了。
所以拜託不要再跑來問我什麼 Marianas Web 在哪,這些都是 bullshit,去問你地理老師還比較實在。
至於用冰山來形容海面下有多少東西這種描述方式,我只能說以種類的數量來說的確如此,但以純粹的檔案容量來講這簡直胡扯。

Continue reading 在 FreeBSD 利用 Tor 架設 deep web site »

在 FreeBSD 9.x 的系統中安裝 i2p

可能是這東西不太流行,所以 ports maintainer 也沒太認真去維護它。
所以這篇雖然是廢文,但也沒廢到只是叫你 cd /usr/ports/security/i2p 然後打個 make install clean 就收工了。
因為陸續開始有一些講中文的在問,只好稍微簡單寫一下。

Continue reading 在 FreeBSD 9.x 的系統中安裝 i2p »

在 FreeBSD 9.1 裡完全使用 clang 代替系統的 gcc

已經算是有相當多年沒有把系統的版本做提升了,趁著 FreeBSD 9.1-RELEASE 開始內建 LLVM 3.1 的機會,我也順便做了一次多年來罕見的升級。
畢竟 FreeBSD base system 上使用的 GCC 實在是太舊了,是變成 GPLv3 之前的最後一個版本,也就是 4.2.1 這個早就該作古的版本。
加上我對 GCC 的內部的設計實在是有點反胃,認識我的人應該也知道我蠻討厭那個大鬍子教主,所以聽到能換成 LLVM 當然就是馬上安排時間衝了。

Continue reading 在 FreeBSD 9.1 裡完全使用 clang 代替系統的 gcc »

在 x86 環境下編譯 GCC 4.8 會出現 '_ITM_TYPE_M256' does not name a type 的錯誤

我想應該不少人已經知道 x86 平台被很多 software developer 無視已久了。
特別是歷經了用 gcc -O3 編譯 zlib 以後會讓包括 ssh 在內的一大堆程式爆炸,叫修又被裝死很長一段時間的這段血淚史,讓我對這個潮流更加印象深刻:
Bug 270120 - (PR40838) [4.4/bad-code] -ftree-vectorize causes segfaults on x86 due to stack misalignment
Bug 41156 - [4.4/4.5/4.6 Regression] zlib segfault in inflate_table() compiled w/ -O -msse2 ftree-vectorize
不過最近在租用外國 KVM 服務的時候,居然遇到一家實體 CPU 採用 Xeon E3-1270 V2 的主機商,無論如何就是無法讓 64-bit 的 FreeBSD ISO 能 boot 起來,無論是 8.3 和 9.1 都不行。
相對地,其它 Linux 家族的 64-bit 安裝光碟都完全沒事,可以正常 boot 也能裝得很開心,這實在是讓我這個喊了 FreeBSD 才是王道超過 10 年的人看得很傻眼。
雖然主機商馬上 call 了 FreeBSD 的 maintainer 來看看有沒有辦法解決,但最後只是推測這新的 CPU 架構和 USB 裝置的初始化有衝突,要修正還是不知道得等到何年何月,所以我就和主機商說讓我改裝 i386 的 FreeBSD 9.1 了。
因此在切換到 x86-64 環境的數年後,我又再次被迫回到 x86 平台這個戰場來編譯程式,向者艱辛的道路邁進。

Continue reading 在 x86 環境下編譯 GCC 4.8 會出現 '_ITM_TYPE_M256' does not name a type 的錯誤 »

FreeBSD 的 boost-1.45.0 沒辦法用 gcc 4.7 編譯的問題

因為最近還是很忙,所以就常話短說。

拿 GCC 4.7 當編譯 ports 用的 compiler 去 build boost-1.45.0 的時候,會遇上這個錯誤:

./boost/config/requires_threads.hpp:29:4: error: #error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS"

遇到的話,請直接殺進 devel/boost-libs/work/boost_1_45_0/boost/config/stdlib 改libstdcpp3.hpp。
改法在 boost 官方的 tickets 裡已經有人提供了:https://svn.boost.org/trac/boost/attachment/ticket/6165/libstdcpp3.hpp.patch

簡單說就是補個 defined(_GLIBCXX_HAS_GTHREADS) 的判斷而已。
我自己是會先在 devel/boost-libs 裡 make clean 再 make configure 一遍才進去改,然後才 make install。
至於能不能遇到錯誤才去改,改完繼續 make install,我就不確定了。

題外話...
真正的大學英文,或說托福考試用的英文,對高職背景的人來說真的是頗吃力。
即便以前竹北高中那邊刻意排了比別家高工還要多的英文課,其實跟普通科的英文程度還是差異懸殊。
至於英聽能力,高中/高職時代學校會話課指定的那本「大家說英語」根本是烏龜爬,每個字都聽得到也不用太高興。
這半年多來的感想就以上三行。

用 gcc-4.3+ 編 graphics/graphviz 遇到 libgvc.so: undefined reference to `sincos' 錯誤時的解法

錯誤訊息:

gmake[3]: Entering directory /usr/ports/graphics/graphviz/work/graphviz-2.28.0/cmd/dot' CC dot-dot.o CC dot-no_builtins.o CC dot_builtins-dot.o CC dot_builtins-dot_builtins.o CCLD dot_builtins CCLD dot ../../lib/gvc/.libs/libgvc.so: undefined reference to sincos'
collect2: ld returned 1 exit status
gmake[3]: *** [dot] Error 1

FreeBSD 的 libm 裡目前還沒有實作 sincos 這個函式。
autoconf 產生出的 configure script 測出來會說有,是因為它的測試參數下得跟實際編譯時不一樣,會用到 GCC 的 built-in function。
這個老外已經有說解法了:
http://markmail.org/thread/okslhtdmwckdweed#query:+page:1+mid:okslhtdmwckdweed+state:results
就是跑完 configure 之後直接把測試結果 edit 掉。
在 FreeBSD 要做這種事很簡單,在 Makefile 的 post-configure 加點料就可以搞定:

使用 X server 遠端執行 VirtualBox 時一進入設定就會 Segmentation fault

這個問題是在 FreeBSD 8.2-STABLE 上遇到的,但我想其實跟 OS 無關。
主要是 Windows 上的 X server 不支援 OpenGL 加速,然後 VirtualBox 裡有一段測試 OpenGL 是否能運作的 code 沒寫好,結果就掛了。
會看到的錯誤訊息如下:

WARNING: QGLContext::makeCurrent(): Cannot make invalid context current
Segmentation fault

稍微看了一下,相關的判斷部分,都是透過檢查 QGLContext::makeCurrent() 的 return value 是否為 0 來判斷。
不過稍微 Google 一下就會發現,其實應該使用 QGLWidget::isValid() 來判斷才對。

我本身只會使用 X server 遠端從 shell 啟動 VirtualBox,沒有從 console 上執行的打算,所以上面這些部分都可以不管它。
在 emulators/virtualbox-ose 裡 make configure 以後,進去這個目錄:
work/VirtualBox-3.2.12_OSE/src/VBox/Frontends/VirtualBox/src/
照下面這樣修改 VBoxFBOverlay.cpp,把 OpenGL 加速整個當成不支援就好:

至於有打算在 console 上跑,而且能用 OpenGL 加速的,就請自己去它下層呼叫的函式裡照上面的說法修正程式吧。
最近沒什麼動力幫這種東西 debug...

FreeBSD 在 mysql55-{server,client} 改用 CMake 建置後某些編譯選項無法傳遞

以往在 FreeBSD 編譯 databases/mysql55-{server,client} 時,要下這樣的參數:
make WITH_CHARSET=utf8 WITH_COLLATION=utf8_general_ci WITH_XCHARSET=complex install

不過因為在 MySQL 5.5.8 後的 build system 改成了 CMake,導致 ports maintainer 必須重新設計 Makefile。
而目前的 Makefile 尚未設計完善,所以想把這些 options 傳遞給 CMake 的話,只能直接改 Makefile 解決:

如果在做這修改前不小心將沒設好的 MySQL 整套裝起來的話,請記得把 mysql55-client 也砍掉一起重裝。
特別是對那些真正需要用到 WITH_EXTRA_CHARSET="complex" 的人,有一邊沒弄好的話,網頁上就準備出現一大堆「???????」了。

至於是否能像以前那樣直接用 make 送參數,就只能慢慢等 maintainer,看他何時會重新把所有 options 對應上去了。

Apache 從 2.2.12 開始支援 SNI

其實這資訊 lag 了一年多了吧 (現在都 2.2.17 了)。
前幾週被人問到 SSL 時丟相關資訊給他,
才發現 wikipedia 的 SNI 那頁更新過了:Server Name Indication

這功能是從 Apache 2.3 merge 回來的:#34607 - Support for Server Name Indication
設定範例可以參考 Apache 的 wiki:SSL with Virtual Hosts Using SNI
其實設定上沒什麼新東西要注意,
一切都恢復到過去設 SSL vhost 的方式即可。
最多就是記得要擺 NameVirtualHost *:443SSLStrictSNIVHostCheck off 這兩行吧。

Continue reading Apache 從 2.2.12 開始支援 SNI »

Page 1 of 512345