Twitter 利用 Human Computation 改善搜尋結果(Amazon's Mechanical Turk)

Twitter 最近在其 Engineer Blog 中發表了一篇 Improving Twitter search with real-time human computation,當中介紹了 Twitter 使用了 Amazon's Mechanical Turk 服務來改善搜尋引擎的精準度。

史馥銘先生演講 - 個資(Personal data)與巨資(Big Data)的Privacy新挑戰 - 從手機感測資訊之應用談起

今天有幸在公司聽到史馥銘先生的演講,主題是個資與Privacy在這個世代的新挑戰。某些內容相當有趣,筆記如下:

  • 在美國管理 Privacy 的 issue 是由公平交委員會(FTC)所管理。
  • 現在許多 mobile app 上的宣告,其實和使用者所認知會給予出去的東西有所差異。
  • 當我們在和使用者索取某些 data 時,不應該僅僅作字面上的描述,應該要告知他,取得此 data 後,延伸可能會造成的 issue。
    • 比如說:當某個 app 向使用者索取 gps 的 data,就必須要告知,我們可能可以知道未來您的工作地點、住家 ... 等等資訊(以上透過 data mining 很容易找出 pattern)。
  • 某些 mobile app 其實會向你 acquire 很多 data ,但是當你在安裝的時候,很容易就輕易的 accept,不知不覺間,data 就被會 collect 了。
  • 某個知名的遊戲 app ,其實不斷的在 collect 你的 gps location,而且是 free version 的才蒐集,付費的就不蒐集了。其實這些也算是該 app 的 businss model,這些 data 是可以賣錢的。
  • Big data 不必然是 good data。
  • 顧客越來越聰明,當你竭盡所能的想要蒐集使用者的 data 時,使用者也可能給你假的 data。

【轉】在熟練使用2B鉛筆前,請不要打開Axure

最近看到一篇不錯的文章,叫做:在熟練使用2B鉛筆前,請不要打開Axure。記錄一下裡面不錯的部分:
  • 當需求範圍已經相對清晰時,請先拿起筆,把產品的藍圖畫出來。通常對一個網站而言,你需要構建一副整體信息架構藍圖,也就是網站的主要網頁和層級關聯。記住,只有當你相信自己用2B鉛筆畫的信息架構草圖是大家想要的,否則不要着急用工具進行美化。
  • 用鉛筆勾勒藍圖或流程,目的是提高溝通的效率。拿起2B鉛筆,用10分鐘將頭腦風暴或範圍討論后的思路花在紙上,儘快與BOSS或團隊成員確認,是結構層最重要的事情,沒有唯一。
  • 我見過太多的產品人員,包括我自己也曾經常犯類似的錯誤:妄圖一開始就使用電腦輔助設計程序,優美的將信息架構或流程圖畫出來。甚至跳過這一步,直接使用Axure話線框圖。這個錯誤的可怕之處在於:你搞得自己很忙很苦逼,結果做出來的是無法得到認同的垃圾。 更可怕的是,在面對你看似完美的圖標或線框圖時,BOSS被你忽悠住了,然後你們投入了整個團隊的開發資源,用了幾個月開發了一堆垃圾出來。
  • 記住,需求被砍掉不是恥辱,做垃圾浪費資源才是最大的恥辱

在需求確認之前,永遠要作的事情就是:確認需求!確認需求!確認需求!

Ubuntu crontab 記錄

在 Linux 上需要排程,有 crontab 這個好用的工具可以使用。一些有用的語法如下:
  • crontab -e:進入設定的檔案中,所有被寫在這個檔案裡面的每一行代表一項工作。
  • crontab -l:檢視目前 crontab 的設定
  • crontab -r:移除目前的 crontab 設定
而 crontab 的格式為:
  • 分 時 日 月 週 指令

查詢 MySQL table size 語法

利用 python update 資料庫欄位,跳脫字元的方式 (escape string)

在 python 中,用 Mysqldb module 結果在 stackoverflow 一個討論串中有個很讚的做法:

What is the best escape character strategy for Python/MySQL combo?
  • row[1] 指的是 column name
  • row[3] 指的是要 insert 的 data
  • row[0] 指的是 where 條件式域比對的限制條件

比對一下原始的 sql 就很清楚了:
cursor2.execute("update myTable set `"+ str(row[1]) +"` = \"'" + str(row[3]) +"'\" where ID = '"+str(row[0])+"'")