**這個頁面不需註冊/登入也可以直接編輯的內容喔**
聚會期間會先用
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 比較不痛苦.