發表文章

Tips: PPTP client on Openwrt

Besides from following the openwrt wiki PPTP client page, there are some extra tips required for making PPTP client work on openwrt.

Just like on normal linux distribution, special netfilter modules are required:
nf_nat_pptpnf_conntrack_pptpnf_conntrack_proto_gre On openwrt, you need to install 'kmod-nf-nathelper-extra' to get theses modules; opkg install kmod-nf-nathelper-extra
With this, you should be able to connect to PPTP server without problem.
After the connection, you sometimes get these error and the connection drops:
Sun Jan 24 19:13:57 2016 daemon.warn pppd[29657]: read returned zero, peer has closed Sun Jan 24 19:13:57 2016 daemon.warn pppd[29657]: read returned zero, peer has closed Sun Jan 24 19:14:17 2016 daemon.info pppd[29655]: Terminating on signal 15
Surprisingly, this is caused by MTU. Setting MTU to 1400 on LUCI fixed this.

嘸蝦米文翻譯機 網頁版

我很久以前寫了一個嘸蝦米文翻譯機,不過因為是桌面程式所以其實用起來比較不方便。所以今天突然心血來潮就寫了一個網頁版的,網址如下:

http://ovff.herokuapp.com/

使用方式很簡單,左邊輸入無蝦米文後按向右的鍵頭就可以翻成中文。
反之如果在右邊輸入中文按下向左的鍵,就可以翻成嘸蝦米文。

PyTox: Python binding for Project-Tox the Skype Replacement

前些時候注意到了 Project-Tox 這個專案,看了一下覺得非常有趣。Project-Tox 是一個想要取代 Skype 的 IM 網路。他非常的安全,通訊完全P2P及加密,且使用類似 BitTorrent 的 DHT 來進行資訊交換。由其在 PRISM 事件後,大家都非常在意這點。因為 Project-Tox 只是一個 library,所以其每個人都可以實做不同的 Client,目前有的 Client 可以看這裡

我為 libtoxcore 寫了一個 Python 的 binding: PyTox,所以可以很容易的利用 Python 來寫 Client 或是機器人。PyTox 目前已經支援99%的libtoxcore API,且全部通過自動化測式。後來我又寫了一個機器人來自動同步 Tox 群組聊天和 IRC channel 中的對話: tox-irc-sync 。所以如果你現在到 Freenode 上的 #tox-ontopic 中發訊息,就會在 Tox group chat 中看到一個名為 SyncBot 的機器人幫你同步訊息,而且同步是雙向的!
Project-Tox 目前只支援文字聊天,視訊的功能還在內部測試中。如果想要幫忙的人可以到 Freenode IRC的 #tox 及 #tox-dev 裡跟開發著們聊天,他們都很熱心的!

Quciksort in Python: Functional vs Non-functional

最近學了 SML 和 Racket 後,開始對 Functional Programming 很有興趣。 不過在學的過程中,一直有一個疑問: immutable 不會讓程式變很慢嗎?(因為為做很多copy?) 所以想拿個例子分別寫 Functional / Non-functional 的寫法來比較看看速度。就選用最好寫的 Quicksort 好了,程式碼如下:

#!/usr/bin/env python from timeit import timeit from random import randint def quicksort_impl(v, start, end): if start + 1 >= end: return pv = v[end - 1] partition = start for i in range(start, end): if v[i] < pv: v[partition], v[i] = v[i], v[partition] partition += 1 v[partition], v[end - 1] = v[end - 1], v[partition] quicksort_impl(v, start, partition) quicksort_impl(v, partition + 1, end) def quicksort(v): quicksort_impl(v, 0, len(v)) return v def quicksort_fp(v): if len(v) == 0: return [] else: return quicksort_fp([x for x in v[:-1] if x < v[-1]]) + \ [v[-1]] + \ quicksort_fp([x for x in v[:-1] if x >= v[-1]]) def quicksort_fp_nl(v): if len(v) == 0…

嘸蝦米翻譯機 復活!

圖片
三年多前寫了一個 嘸蝦米翻譯機 後來因為忙碌一直未更新 Windows 安裝檔。最近因為在整理過去的作品,就翻出來順便整理一下XD

最新的 Windows 安裝檔下載:  gOVFF-2.1.0-Installer.exe
Github 頁面: govff @ github


Enjoy :)