2013年10月20日 星期日

從 windows 8 連 samba

    這篇文章只是為了備忘。如果你在 windows 8 或其他版本,想連到 samba,明明伺服器設定
也正確。從 linux 連也可以,只有 windows 不能連。那麼,你可能需要啟用 smb 的協定。


    下面是啟用的步驟,請打開 cmd ,輸入下面的指令
  • To enable SMBv1 on the SMB client, run the following commands:
    sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi 
    sc.exe config mrxsmb10 start= auto
  • To enable SMBv2 and SMBv3 on the SMB client, run the following commands:
    sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi 
    sc.exe config mrxsmb20 start= auto

探討 scala 的函數呼叫與自動推論型別所產生的模糊情形

     scala 是靜態型別語言,不過他擁有自動推論型別的功能,因此可以減少重複宣告型別的情形。如以下程式碼:


    val a = 1

    由於 1 是整數,因此可以推論出 a 的型別為 int。再看看定義 function 的情形。


    def func(a:int, b:int) = a + b

    func 接受兩個參數,他的資料型別是 int,編譯器會推論出 func 的回傳值為 int。

2013年10月13日 星期日

浮點數除於零的行為

    程式語言中,整數除於零,基本上都會讓程式無法執行或是拋出類似例外的錯誤。可是如果是浮點數除於零的話,則行為就不一定。在 IEEE 754 的標準,浮點數除於零的話,會產生代表無窮大的值。c, c++, tcl, ruby, scala, java 遵循 IEEE 754。不過 perl, python , go 語言,發生浮點數除於零的情形,則是產生類似例外的訊息,而非給定無窮大的值。其他的語言沒有測試,這篇純粹紀錄各種語言的細微差異。

2013年8月20日 星期二

一個 golang 的非同步 stdin 的範例

    這篇文章只是一個簡單的例子,示範 golang 的 go 與 select 用法。 golang 原生就支援多序了,因此可以寫起來很簡潔。


2013年8月8日 星期四

C語言中,在呼叫函數前和呼叫函數後,執行某段程式碼

    gcc 有很多強大的選項,可以讓我們作到一些特別的事情。假設我們希望每次呼叫函數前,都先執行特定的動作。我們可以這樣寫。


在 C 語言中,發生錯誤時,顯示 backtrace

    在很多語言中, 如 python, java 等,當程式遇到錯誤時,他會顯示 backtrace( 就走到目前函數位置的呼叫流程)。在 C 語言中,預設只會出現錯誤訊息,就沒了。

    不過在 linux 下,你可以使用 catchsegv 來顯示程式錯誤時的 backtrace。用法大概向這樣
catchsegv ./a.out

2013年7月6日 星期六

python 的 gc ( garbage collection) 演算法介紹

    最近無聊看了一下 python 的 garbage collect 的實作。還蠻簡單易懂的。 python 回收沒用的物件,主要是靠參考計數 (reference count)。然而,他無法解決自己參考自己或是參考循環(a 參考 b, b 參考 a)的問題。這篇文章是講 python 如何解決這個問題。

2013年6月15日 星期六

在 python 中呼叫 java,JPype 簡介

    之前我以為如果要在 python 中呼叫 java lib ,只能用 jython。然而查了一些資料,發現有些神人已經幫我們做好在 CPython 中呼叫 java lib 的方法,JPype 可以幫我們完成這個神奇的需求。


2013年6月9日 星期日

以 html5 撰寫 單機(離線)程式,以 pyside 與 qwebkit 為例。

    現在 html5 蔚為潮流,而 html5 也將觸手伸向單機程式。新的 html5 技術可以使用 ApplicationCache 來達成。而 XULRunner 又是令一個技術,讓你可以用寫網頁的方式來寫單機程式。用 pyside 加上 qwebkit 也可以達到類似的應用。事實上,pyside 加上 qwebkit 的作法不過是作個客製化瀏覽器而已。

2013年6月2日 星期日

如何在 C 語言中模擬繼承與多型

    在 C 語言中,並沒有繼承與多形。然而,我們可以利用一些方法來模擬繼承與多型。在開始講之前,我們先來看看電腦如何取得變數的值。