**這個頁面不需註冊/登入也可以直接編輯的內容喔**
聚會期間會先用 
  http://pad.ubuntu-uk.org/h4 
來共筆打字,過一陣子後再整理更新至此頁

Rex

錄音 [h4] 4$ 談 alphabbs & vala http://zh-tw.justin.tv/chihchun/b/271881427
http://zh-tw.justin.tv/chihchun/b/271881520

[h4] Yap 談中文古書標點系統 http://zh-tw.justin.tv/chihchun/b/271881661

[h4] kcliu 談查字典用 firefox extension http://zh-tw.justin.tv/chihchun/b/271881775

pct :

vimwiki ,還有可以結合 calender 的功能 http://code.google.com/p/vimwiki/
vimpress, 就是在 vim 打一打,幫你 post 到 wordpress http://www.vim.org/scripts/script.php?script_id=1953

推薦 “HTML 5 & API網頁程式設計” 現在的 HTML5 都是用來寫 chrome 的 plugin

Mat:

ssh tunnel 的 -L , -R 的差別 http://antbsd.twbbs.org/~ant/wordpress/?p=198
http://pank.org/blog/2009/04/ssh-tunnel--l--r.html

yan:

不架資料庫伺服器, 用 SQL Query Syntax 來查詢 CSV 小量文件

squawk : SQL query tool and library for static files http://pypi.python.org/pypi/squawk/0.2.3

pyparsing : A general parsing module for Python http://pyparsing.wikispaces.com/

test.csv

studentid,name,sex,id
,,,
310001,王小明,男,W123456789
310002,林小美,女,P987654321

query.py

# coding:utf-8

from squawk.query import *
from squawk.parsers.csvparser import *

query = Query(
    "SELECT name,id FROM file WHERE name LIKE '%%%s%%'" % '王')
source = CSVParser("test.csv")

for row in query(source):
	print '%s => %s' % (row['name'], row['id'])

申請到 wikidot API key, 希望可以讓 h4 wiki 維護更方便, 修改後即將釋出

h4_wikidot_test.py

from xmlrpclib import ServerProxy

s = ServerProxy('https://h4_wikidot_creater:YOUR_API_KEY@www.wikidot.com/xml-rpc-api.php')

site = 'hackingthursday'
page = 'test'
title = 'api test'
content = 'wikidot api testttt'

s.page.save({'site' : site, 'page' : page, 'title' : title, 'source' : content})

print 'To view : http://%s.wikidot.com/%s' % (site, page)

也發佈聚會相關消息到 facebook 上了

h4_faceook_test.py

# coding:utf-8

#
# A comand line fasebook publisher
# http://github.com/a0726h77/yan_console_fb_client
#
# To run this script, need pyfacebook library
# pyfacebook not use the new facebook Graph API
# http://github.com/sciyoshi/pyfacebook
#
# 用來發佈的用戶需 follow h4 粉絲頁
# http://www.facebook.com/group.php?gid=173053565674
#
 
# Your Configuration
email = 'xxxxx'
passwd = 'xxxxx'

# My Configuration
API_KEY = '11e517548871c8813a8923b40009a060'
SECRET = 'c322efb76ecbdb2eca2b61a1719cc8e4'
session_code = ''
# h4 facebook group gid
gid = '173053565674'

status = '2010-10-14 聚會手記 http://hackingthursday.wikidot.com/2010-10-14'
attachment = {
    'name':'2010-10-14 聚會手記',
    'href':'http://hackingthursday.wikidot.com/2010-10-14',
    'caption':'hackingthursday.wikidot.com'
}

import urllib
import urllib2
import sys
import re
import facebook

class myFBAuth():
    def __init__(self):
        # build opener with HTTPCookieProcessor
        self.opener = urllib2.build_opener( urllib2.HTTPCookieProcessor() )
        urllib2.install_opener( self.opener )

        print 'Login...'
        self.form_id = self.login(email, passwd)

    def login(self, email, passwd):
        login_url = 'https://login.facebook.com/login.php?m=m&refsrc=http://m.facebook.com/index.php&fbb=rd88e1687&refid=8'
        loginRequest = urllib2.Request ( login_url , 'email=%s&pass=%s&login=Login' % (email, passwd))
        urllib2.urlopen (loginRequest)                                                 
        connection = urllib2.urlopen ('http://m.facebook.com/')                        
        form_id = re.findall ('name="post_form_id" value="(\w+)"', connection.read ())[0]

        print 'Get form id : %s' % form_id

        return form_id 

    def get_session_code(self):
        print 'Get session code : ',

        p = urllib.urlencode( {'fb_dtsg':'v-rAp','generate': '1','v' : '1.0','api_key':API_KEY,'post_form_id':self.form_id} )
        request = urllib2.Request('http://m.facebook.com/code_gen.php/code_gen.php?api_key=%s&fbb=r97f53b86' % API_KEY, p)
        connection = urllib2.urlopen (request)
        data = connection.read ()
        session_code = re.findall ('你的單次有效的驗證碼是: <b>(\w+)</b>', data)[0]
#	session_code = re.findall ('Your one-time code is: <b>(\w+)</b>', data)[0]

        print session_code

        return session_code

def post():
    auth = myFBAuth()
    session_code = auth.get_session_code()
    
    fb = facebook.Facebook(API_KEY, SECRET, session_code)
    session = fb.auth.getSession ()

    uid = fb.users.getInfo ([fb.uid])[0]['uid']
    print 'Get Uid : %s' % uid 

    info = fb.users.getInfo([fb.uid], ['name'])[0]
    print 'Your Name :', info['name'][1:]

    # 透過此用戶張貼到粉絲的塗鴉牆
    print 'publish to h4 facebook group'
    fb.stream.publish(status, attachment, None, gid, uid)

    print '\n'


if __name__ == "__main__":

    post()

kanru:

debian 有 report bug 的工具,叫 reportbug,會用 dialog 來一步一步填資料。

reportbug <套件名稱>
reportbug wnpp

http://www.debian.org/devel/wnpp/
wnpp: work-needing and prospective packages, 想請人包,但自己不會包 itp: intent to package, 想包的人, 我想包

source package 到 «http://mentors.debian.net> >
先在 http://mentors.debian.net 註冊,然後再用 dput 上 package

whohas < package>

這個會去找各 distro,看那幾個有包這個套件

? Google 的 Terms of Service ? RMS 說 google maps 是可以用的

fourdollars:

週六花了一個下午,寫了一個 bbs client, alphabbs, GUI的 執行下去,出現一個 dialog,填完就直接連

sudo add-apt-repository ppa:fourdollars/alphabbs

source code覺得越寫越有趣,程式只有 100 行,就可以作出很簡單的 bbs 用 vte 來 render bbs 的終端機 重點是 vala 寫起來,真的很簡單啦 寫起來很像 c#, 但要用 c 的想法去寫他

其實主程式是一個 dialog

vala tutorial裡有個 tool,在第 8 章。可以直接掃,就來 generate interface 跟 object.

vala –pkg vte -C -g code.vala 就可以展開 c 的 code

傳 string 時,會不斷複製, 要用 StringBuilder 來達到 string reference

有不是 gobject 的 object 嗎? 需要自己作 binding

在 tutorial 的第 5章的第14節,因為 dbus不是 gobject,所以要再寫一個 wrapper

yap:

古書標點系統,標點很簡單,但要如何 verify? 尤其是很多人的時候。 目前所作的這個,是標點跟文本很分離的,這時候可以對標點的符點作分離處理。 標點分黑,紅,綠色,可以用來分成正確,錯誤,…的狀態 底層用了 vgscene,來作 UI的介面 for delphi,編碼是 Unicode. 遇到不同的標法,可以來作比對。 vgscene 可以port 到 IPAD , X-Window

古書的標點絕大部分是唯一的。目前的目的是在作工具。 這個問題,有點像是影片與字幕。

http://www.adcs.org.tw/puncrule/

kcliu:

寫了一個小 tool,可以快速查單字, 查 google dictionary。 寫了大約 4-5 天,就是從颱風假開始寫,寫到中秋節。 本來 UI 要自己刻,後來發現 firefox有既有元件。 用 autocomplete 的來改

http://www.cs.nctu.edu.tw/~gjliou/agileDict.html

歡迎大家試用測試!

Rex:

http://trac.novowork.com/gitg/ , git 的 GUI 介面

git log viewer 的指令版 (忘記那裏看來) git log –graph –pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset’ –abbrev-commit –date=relative

請自己設定成 alias cat » ~/.gitconfig [alias] lg = log –graph –pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset’ –abbrev-commit –date=relative

初心者還請用滑鼠點點 GUI 比較不痛苦.