簡單

最近心中常常有一些奇怪的想法,關於「注意力」,關於「簡單」,關於自己應該要做的事情。

在熊版看到餅乾的這篇文章 [情報] 媽媽人生。新起點。,只是簡簡單單的報告近況,讓我想到十五年前上網的一些片段。

那個時候還是數據機撥號的年代,瀏覽器沒有 tab,沒有 Facebook,沒有 notification,我們好像知道自己想要找的東西,一次只做一件事情。或在某個特定的日子,寫 E-mail 給好久不見的國中同學。或是尋找陳綺貞最新的活動與消息。

不知道什麼時候,我一直想知道新的東西,新的技術,新的文章,或是所有新的消息。腦袋像是高速運轉的機器,只要醒著,就停不下來。但雖然高速運轉著,卻常常是空轉著,沒有前進,猶如腳踏車掉鍊,或是崩裂的履帶。

這幾個禮拜,我開始試著一次只做一件事情,雖然腦袋的思緒還是很紛亂,但也許幾個禮拜之後會有什麼不同。

A person without self-control is like a city with broken-down walls. — Proverbs 25:28

真正的自由在於自律。

關於電影「Lucy」

不可免俗的,還是去看了露西,但或許之前會更想看 Scarlett Johansson 的另外一部 Under Skin。

對於上帝而言,人總有許多不同的解釋,其中我最喜歡的莫過於這段經文。

啟22:13「我是阿拉法,我是俄梅戛;我是首先的,我是末後的;我是初,我是終。」

自然所看見的循環、相似、碎形等等,當超越一切之後,會不會就如同一個沒有「開始與結束」的狀態,一切被隱含在一個狀態之中,既是超越,也是收斂。

回到電影本身,談論存在或是循環的電影不在少數,如果必須評論 Lucy,就稱它是盧貝松版的永生樹吧。劇情鋪陳順暢,節奏明快,至於深度與合理性,就只能說這不是導演的強項,但至少是一個還算有意思的嘗試。

離開電影院的時候,我覺得選擇臺北拍攝是很不錯的選擇,臺北這幾年有一些新舊建築的衝突感,卻不是那種極端性的差異,而像是迫於資本主義無奈自然衍生出的分界。像是過於豪華的飯店,五光十色的夜店對比於熱炒店散亂的酒瓶,蝸居於無電梯平房的室友。

不知道其他國家的人怎麼看這部電影,但對於我們,勢必是帶著一種家鄉的情感重新觀賞著。

PTE Academic 半裸考 Overall 64 心得

因為準備不到一個禮拜就去考,所以基本算是一個半裸考的狀態 XD

先說成績好了,Overall 64

Listening: 59
Reading: 68
Speaking: 67
Writing: 62

聽力比想像中差,也許是最後注意力不夠了。

為什麼要考 PTE Academic,主要比起 IELTS 來說,幾乎馬上就有考場,考完之後 5 個工作天內會收到成績,對於我這個急著需要成績的人非常方便。但在報名之後我才發現事情沒有想像中簡單,從 Test preparation resources for PTE Academic from Pearson 發現考題比想像中難很多,網路上能夠找到的補充教材也不多,就更加深我的緊張感。

試題特色:
因為是關於 academic 的考試,他的題目都會偏向「論述」性的方向,你也會在網路上看到,很多人覺得 PTE Academic 是比較靈活的

以聽力來說,可能會是一個關於溫室效應的演講,或是關於經濟、歷史等等的題目,在聽完之後必須選擇正確的答案。對我比較困難的部分 Repeat Sentence 跟 Write From Dictation,在聽完之後馬上重複或寫出來,通常 Repeat Sentence 會複雜一點,如果沒有不錯的短期記憶力,常常會出錯。
另外還有 Describe image 你要面對的可能是圓餅圖、表格、折線圖,或是一張照片,這邊 IELTS 倒是有很多教材告訴你怎麼考會比較高分。Retell Lecture 就會辛苦一點,你必須要自己整理之後,面對電腦講出重點來。

關於 Reading 部分,字彙跟文法是關鍵,要猜也要有猜的基礎 XD 另外,時間的掌握上要非常注意,Re-order Paragraphs 跟 Fill In The Blanks 很多時候都不是那麼直覺,所以很容易就花太多時間在前面的題目上面。

聽力的話,Summarize Spoken Text 也考驗你口說能力。而最討厭的題型莫過於 Select Missing Word,他會斷在文章的最後面,你要由前面的片段猜測最後應該是怎麼樣發展,非常考驗抓到文章脈絡,以及推敲走向的能力。

準備方面:
Practice Tests and Test Booster 雖然他線上測驗一次要 $35,但是你可以大概知道自己的程度在那邊,而且送的 Test Booster 還有一定的幫助。我在還沒有準備之前的成績是 Overall: 55, Listening: 55, Reading: 57, Speaking: 58, Writing: 49。

Official Guide to PTE Academic 非常有用,如果允許的話,可以從淘寶上買中文版回來,價格並不會太貴,加上運費的話大概 NTD.800 以內就可以搞定。他的賣點就在他的 CDROM 有三次完整的測驗試題,而且我認為他的試題比正式來的困難,所以如果可以透過模擬試題練習的話,真的能對考試有更好的掌握。

考試當天:
Pearson 的考場其實還不錯,考 PTE-A 有獨立一間考試的空間,不會像其他國家一樣被旁邊的人干擾。不過要注意一下耳機的音量,我覺得我耳機的音量比較小聲,不過也可能是因為平常聽音樂開太大聲了 XD

總之,我覺得他是有點難度的考試,但是因為沒有考過其他的考試,所以也不知道跟 IELTS 或 GRE 比的難度差多少。如果真的要比,我覺得 IELTS Cambridge 聽力是比較簡單的。如果你真的要考 PTE Academic 的話,倒是可以認真比較一下,是考 IELTS 或 PTE-A 那個比較有利。

Log rotation for uwsgi and python related applications

Don’t send SIGHUP or restart your servers if you want to do log rotation.

SIGHUP is NOT used for log rotation, but used for configuration/module reload.
Take uwsgi as example, as Managing the uWSGI server described, SIGHUP will gracefully reload all the workers and the master process.

Thus, the newly coming connection cannot be accepted during the reload process.
If the uwsgi application need 5 seconds to reload, then tons of connection cannot be served at that time. It may also make false positive for health checking mechanisms.

My suggestions

  • Use SIGUSR1 for web servers, such as Nginx.
  • Use logging.handlers.WatchedFileHandler in the application.
  • Use logrotate copytruncate if application upstream does not provide log rotation mechanism. (log file size should not be too big; log missing is acceptable.)
  • Use uwsgi touch-logreopen for uwsgi log rotation.

P.S: You can also use RANDOM_DELAY to avoid all your machines are going to do log rotation at the same time.

旺中守門員 Greasemonkey 版

對於這幾天的活動,我們可以看見媒體在報導上的不同。

你可以選擇你應該看到的

感謝 旺中守門員

我簡單改寫成 Greasemonkey 的 script

V for Vendetta 有句台詞

V: People should not be afraid of their governments. Governments should be afraid of their people.

Yet another opml checker

Just wrote a opml checker to test invalid rss feeds for my feedly subscriptions.
The biggest motivation is that 無名小站 was closed at 26 December, 2014.
Most of my friends’ blogs cannot be reached anymore.

Usage:
$ opml-checker feedly.opml

Source Code:
https://github.com/yhchan/opml-checker

Performance:
It analyzes my 510 feeds in 80 seconds.

買了 iPad 給家人

過年前買了 iPad Air 給家人,就基本的操作而言,比電腦友善多了。

  • 他們不用打字,用手寫就可以。
  • 不用等開機
  • app 比網站簡單的多,我爸常用 hotels.com 比價。
  • Siri 對他們而言很直覺
  • 查天氣也輕鬆很多,我幫他們裝了 Yahoo 天氣

現在的麻煩大概會變成找自己不熟悉的 app,例如「遊戲」。
昨天抓了麻將給我爸,但是老實說我也不知道哪些遊戲是他會喜歡的。
今天再裝個 Cut the rope 好了 XD

可能要多花點時間看 app store 啦~

Use connection pool in Python Requests

Requests is a great library for performing HTTP related request and response.
As it’s description, it supports connection pool automatically.

Requests takes all of the work out of Python HTTP/1.1 — making your integration with web services seamless. There’s no need to manually add query strings to your URLs, or to form-encode your POST data. Keep-alive and HTTP connection pooling are 100% automatic, powered by urllib3, which is embedded within Requests.

Actually, the following snippet will not use connection pool provided from urllib3.

requests.get('http://developer.github.com/v3/')
requests.get('http://developer.github.com/v3/media/')

Requests use urllib3.PoolManager in requests.adapters.HTTPAdapter. Which is mounted in requests.Session.__init__. Thus, for each request

def request(method, url, **kwargs):
    session = sessions.Session()
    return session.request(method=method, url=url, **kwargs)

will create new session, which make requests.request won’t gain any benefit from connection pool. Alternatively, you can use requests.Session to make Requests use connection pool powered by urllib3.

session = requests.Session()
session.get('http://developer.github.com/v3/')
session.get('http://developer.github.com/v3/media/')

I rewrite a benchmark_request.py from urllib3 benchmark.py.

The result

Completed requests_session_get in 7.067s
Completed requests_get in 9.162s

語言背後

語言是一種表達,一種傳遞概念的方式。

小時候我們常常會聽爸媽說「都是為你好」,我們心中其實無法百分之百的理解其中的用意。久而久之,當我們真心想要一件事物,在那「為你好」的高牆之後,我們選擇的往往是叛逆、爭論,或者隱藏自己真正的期待假裝順從。

這樣的溝通方式,很無奈的,有時候需要時間才能夠理解彼此真正的意圖,也可能自始自終都無法消弭溝通的成見與誤會。人往往會更專注於表面性的「態度」、「口氣」,而無法看清事物的本質。

站在天平的兩個端點,在面對溝通的情境之時,或許我可以這樣做

  • 耐心地表達自己的意見,聆聽對方的意見
  • 脫離情緒的言語,抽絲剝繭的了解對方真實的意圖

當我想要表達「為你好」的意圖時,是不是能夠讓對方明白我全部的意圖,而不是武斷地做出決定。
當我想要表達「我很好」的意圖時,是不是能夠先了解對方意圖,並好好陳述自己的意見呢?

也許最後沒有結論、或是交集,但理解的過程往往比結果更加重要。

因為過程本身,影響的是彼此未來的關係。
單一事件的結果,並不代表永遠的勝利。