F.lux 螢幕調光程式

這個真的要推薦一下,F.lux 螢幕調光程式。它的原理是根據日出日落時間,把螢幕的色溫調到符合室內光的溫度,以免晚上看著過亮的螢幕影響退黑激素分泌,打亂生理時鐘。

用了一個星期的效果是真的睡得比較好,而且不會因為晚上繼續用電腦變得越來越晚睡。對靠看電腦過生活的人來說很好用,不然這樣下去其實也是職業傷害。如果是白天的時候安裝,螢幕是不會變色的,會一直到太陽下山的時候才會注意到,而且用久之後會完全忘掉它,反而是把它關掉的時候會被螢幕刺到。

作為 Web Developer 的胡思亂想是,說不定可以把時間 vs 色溫這個概念放進 Responsive / Adaptive web design 的概念裡?這樣的話要讀一點色彩學的書了。

Word Cloud – Open source “Wordle” in HTML5

中文:HTML5 文字雲現在是開源專案,歡迎到 Github 索取程式碼。自從公開之後新增的功能有隨機旋轉文字、彩色文字、支援 IE9 與 iPhone/iPad(很慢,不建議使用)。

HTML5 Word Clouds is a HTML5 technical demo that generate a Java-based Wordle-like word cloud.

Under the hood, functions are devided into a library and two jQuery plug-ins:

  • jQuery.getContent that fetch text remotely or locally using FileReader API
  • WordFreq that run the text against Porter Stemming Algorithm (English) or N-gram analysis (Chinese) in Web Workers
  • Finally, jQuery.wordCloud draws beautiful word cloud on <canvas>

For Mobile Safari and IE9 that doesn’t support Web Workers, I wrote Simulated Worker that put the worker script into an iframe scope (instead worker scope).

You are welcome to play around, grab the source code and run the testcases to see their capabilities.

Simulated Web Workers

So you put your complicated computation in Web Workers, but you just realized the computation is not that complicated at all. Also, you denied the browsers without web workers to ever running your hard work – Mobile Safari, all IEs up to version 9.

Here is the solution I took, something might be useful to you: Simulated Web Workers – a library that creates a pseudo-web worker (that runs at fore-ground), while expose the same interfaces. Well, almost.

By almost, I mean the following:

  • Instead of calling postMessage() to send the result, in IE you must call workerPostMessage() – because IE doesn’t allow me to overwrite the aforementioned function.
  • Since anything runs at fore-ground right now, they are subjected to runaway Javascript timer imposed by browsers – the while(true) example given by Wikipedia won’t work. The setTimeout() trick however would make it work again (in a not-so-efficient way) – please check the library tests.

You could say Simulated Web Workers is like exCanvas for canvas, but of course the interfaces of web workers are not that many. Anyway, have fun with your next web workers project.