Calendar

一月 2012
« 十二月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Categories

Page 1 of 1412345678910...Last »

這速度實在是...

自從把大部分的東西外移以後,已經很久沒有用清大的網路了。
今天要幫學弟開 svn repository,去抓個 llvm source,結果看到了有趣的速度:

偉哉...
我拿家用 10m/2m 的 VDSL 抓下來傳上去還比這快,實在是太了不起了。
已經懶得再說什麼,單純發一篇久違的抱怨文。

用 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 加點料就可以搞定:

--- Makefile.orig       2011-08-28 23:30:48.000000000 +0800
+++ Makefile    2011-08-28 23:30:44.000000000 +0800
@@ -432,6 +432,10 @@
                ${WRKSRC}/Makefile.in
 .endif
 
+post-configure:
+       @${REINPLACE_CMD} -e 's|^#.*HAVE_SINCOS.*$$|#undef HAVE_SINCOS|' \
+               ${WRKSRC}/config.h
+
 post-install: install-ldconfig-file
        cd ${WRKSRC}/lib/expr && \
                ${MAKE} ${INSTALL_TARGET}

使用 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 加速整個當成不支援就好:

--- VBoxFBOverlay.cpp.orig      2010-12-02 01:09:27.000000000 +0800
+++ VBoxFBOverlay.cpp   2011-04-18 14:55:54.000000000 +0800
@@ -4755,6 +4755,7 @@
 /* static */
 bool VBoxQGLOverlay::isAcceleration2DVideoAvailable()
 {
+    return false;
 #ifndef DEBUG_misha
     if(!g_bVBoxVHWAChecked)
 #endif

至於有打算在 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 解決:

--- mysql55-server/Makefile.orig       2011-03-19 21:13:47.000000000 +0800
+++ mysql55-server/Makefile    2011-04-08 14:31:05.815962791 +0800
@@ -39,7 +39,10 @@
                -DINSTALL_SQLBENCHDIR="share/mysql" \
                -DINSTALL_SUPPORTFILESDIR="share/mysql" \
                -DWITH_LIBEDIT=0 \
-               -DWITH_LIBWRAP=1
+               -DWITH_LIBWRAP=1 \
+               -DDEFAULT_CHARSET="utf8" \
+               -DDEFAULT_COLLATION="utf8_general_ci" \
+               -DWITH_EXTRA_CHARSETS="complex"
 
 .ifdef USE_MYSQL
 .error You have `USE_MYSQL' variable defined either in environment or in make(1) arguments. Please undefine and try again.

如果在做這修改前不小心將沒設好的 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 »

拖稿很久的 LLVM 使用文

因為單純就是使用也沒有去動內部的東西,
所以這篇文從 llvm-2.1 一路拖到 2.7 才終於想寫。
對一些早就在用的人來說這內容應該也 lag 好幾年了,
總之都是些沒什麼技術性的東西。
所以我也不分類在 programming 而是 system diary 了。

Continue reading 拖稿很久的 LLVM 使用文 »

電機電子群高工學生失落的知識:電工數學

今天在某板看到一篇有趣的文章:

我並非天龍國大安國的國民,
也不是該國國境內某八大省工之一的名校學生,
所以我也無從得知他們現在的老師是否有教這些東西;
但是這些東西其實是電機電子群的高工學生們原本就有機會學到的。

只是這門課因為各式各樣的原因
所以早在相當久遠的年代以前就慘遭諸多學校以暗黑兵法做掉了。
這門課的課名就叫做電工數學

當然會求長進的學校絕對不是沒有,
所以即使現在真的還有學校在教這種東西,
我也一點都不感到意外。

Continue reading 電機電子群高工學生失落的知識:電工數學 »

並不是在不高興

偶而會聽到有一些人覺得我回技術性的文章,
或是在面對面回答問題時看起來不太高興;
但我只能說這是必要之惡

Continue reading 並不是在不高興 »

透過 pf 來限制某國 IP 才能存取某些 ports 的方法

簡單說就是鎖國啦。
這個上一手資訊來自機八林餅幹
忘記他是從哪邊看來的。
反正幾乎沒在出國的話把 ssh port 之類的鎖起來可以省很多力氣。

Continue reading 透過 pf 來限制某國 IP 才能存取某些 ports 的方法 »

sshguard

又是一篇遲來的文章。
但是還是寫一下免得被人一問再問。
如果成天看到有相同 IP 沒事在那邊一直狂 try ssh login 的,
可以裝個 sshguard 直接搞定。

Continue reading sshguard »

Page 1 of 1412345678910...Last »