Fold All / Expand All

2014年4月30日 星期三

ESLint - The pluggable linting utility for JavaScript

http://eslint.org/

也是大神級的 Nicholas C. Zakas 在使用了 JSHint 一陣子之後,決定開發 ESLint。

Introducing ESLint
http://www.nczonline.net/blog/2013/07/16/introducing-eslint/

文章中提到,ESLint 主要的目的是可以很容易自訂 rule,使用 JSHint 比 JSLint 容易去調整要檢查的 option,但是如果要自己加 rule,而不是利用已存在的 option,JSHint 就比較麻煩。

不過 ESLint 和 JSHint 在使用上有點差別,首先,ESLint 的 ES 是來由 Esprima,Esprima 是一套 ECMAScript parser,喔,當然 ECMAScript 就是我們熟知的 JavaScript,透過先用 Esprima parse 之後,再進行不同 rule 的檢查。

所以文章中有提到,如果有 syntax error 的話,JSHint 可以顯示出錯誤和 syntax error,但是 ESLint 就只能 syntax error,因為 parse 就失敗了。這樣的差別,讓 JSHint 可以適用於 editor,寫到一半的時候,就檢查是否有符合 rule,而 ESLint 則可用於 build system 或者是 pre-commit hook。

會發現這套 2013 年才開始的工具,是因為查 jslinterrors.com 的時候看到除了 JSLint, JSHint 之外,還出現了 ESLint 的 label。

當然,自己寫 rule 的情況應該是不太會出現,不過 ESLint 的確有些功能是現在 JSHint 所沒有。

例如 ESLint 的 command line option 有「--global」,可以透過參數增加全域變數,這對不同 project 會有不同 global 傷當有幫助,反觀 JSHint 目前只有一個「prereq」參數可以做到類似的事,但是實際試,似乎沒辦法從 command line option 餵進去,反而是要在 configure file 裡寫檔名,而且因為實作是先把 prereq 檔案讀進來,後面再 append 原本要檢查的檔案,所以會造成行號跑掉…目前仍是 open bug

Not showing correct line number in error report if we use prereq feature #1211
https://github.com/jshint/jshint/issues/1211

2014年4月26日 星期六

PHP logging library

KLogger: Simple Logging for PHP
https://github.com/katzgrau/KLogger
http://codefury.net/projects/klogger/

只有 log 到檔案的功能

要可以輸出到其他地方的,另外還有

Monolog - Logging for PHP 5.3+
https://github.com/Seldaek/monolog

Analog - PHP 5.3+ micro logging package
https://github.com/jbroadway/analog/

mp3tag v2.59 adds support for Direct Stream Digital Audio

http://www.mp3tag.de/en/

Changelog
http://www.mp3tag.de/en/changelog.html

在 2014-04-20 release 的 2.59 版,加入了 DSF 格式支援,基本上就是塞 ID3v2 進去

Free DSD sample file download

http://en.wikipedia.org/wiki/Direct_Stream_Digital
Direct-Stream Digital (DSD)

免費下載網站首推
http://www.2l.no/hires/

這裡可以下載到三種 DFF 格式,分別是 DSD 128 Stereo, DSD 64 Stereo, DSD 64 Surround 5.1

要注意的是,用瀏覽器下載,會跳出密碼輸入框,帳號和密碼都是「2L」

如果用下載軟體,可以把網址複製後,加上 http://2L:2L@[link]

這個網站也有 flac 24bit/96kHz, 24bit/192kHz 供下載


http://dsd-guide.com/free-downloads
DSD-Guide.com

這裡有提供 DSF (DSD Stream File) 格式下載,不過要先註冊帳號後,才可以下載

另外 DSDIFF, DSF spec 可以在這裡下載
http://dsd-guide.com/technical-documents


http://www.oppodigital.com/hra/dsd-by-davidelias.aspx
OPPO Digital - Demo Tracks

Demo Tracks by David Elias
可以直接下載


播放的話,在 foobar2000 可以安裝 component foo_input_sacd
http://sourceforge.net/projects/sacddecoder/files/foo_input_sacd/

不過從 DSD-Guide.com 下載到的 DSF 檔案,不知道為什麼在 foobar2000 沒辦法播

用 mp3tag v2.59a 可以編輯 DSF 裡的 ID3v2 tag

[歌詞] 安室奈美恵 - Contrail


YouTube 上只有短版的 PV

Contrail

歌手:安室奈美恵
作詞:Nao'ymt
作曲:Nao'ymt


昨日の君の涙
だれかの明日を変え
そのだれかの言葉が
いつか 君の涙 掬う

そうして 繋いで
歪みのない円を描く
裸足で 迷って
また出会う景色

Life
私はそれを知っているんだ
What is life
君にも見えているのだろうか
どこまでも続く雲海を
駆け抜ける 胎動
こんな痛みなど こんな鎖など
前に進む 動力
過去は空に溶ける
and you'll see a contrail

いま 生きるこの時が
なにかの間違いで
もし あの分岐点へ
戻れるとしても

私は 選ばない
答えは自分で探す
仮定に 意味はない
そこに君がいないなら

Life
私はそれを知っているんだ
What is life
君にも見えているのだろうか
どこまでも続く雲海を
駆け抜ける 胎動
こんな痛みなど こんな鎖など
前に進む 動力
過去は空に溶ける
and you'll see a contrail

I didn't know then what I know now
I didn't know then what I know now

諦めたら また 未来は閉じる
多数に押し出され こぼれ落ちるため息
追いかけ うつむけば
水たまりに架かる 飛行機雲

Life
私はそれを知っているんだ
What is life
君にも見えているのだろうか
どこまでも続く雲海を
駆け抜ける 胎動
こんな痛みなど こんな鎖など
前に進む 動力
過去は空に溶ける
and you'll see a contrail

3M細滑牙線棒

http://solutions.3m.com.tw/wps/portal/3M/zh_TW/HC/ESPE/home/Clinpro/Clinproe/

(謎:怎麼出現生活用品了)

昨天買了盒裝150支的,的確是不易起毛、不易斷裂,傷當不錯。

PChome 24 小時和奇摩快速到貨都是一盒$139,昨天在家樂福是一盒 $119

2014年4月24日 星期四

新居昭乃台灣 LIVE 歌曲票選

集藝文化事業有限公司
http://www.dtds.com.tw/

新居昭乃台灣LIVE 〜YAKUSOKU 0705〜
http://www.dtds.com.tw/live/20140705/akino/

投票連結
http://goo.gl/OH5Y1q

要投什麼呢…VOICES 就不用說了

  • 美しい星
  • 覚醒都市
  • 月の家
  • スプートニク
  • きれいな感情
  • 懐かしい宇宙(うみ) 
  • Airplane

YUI Test: Asynchronous Event Testing Example

https://yuilibrary.com/yui/docs/test/test-async-event-tests.html
http://yuilibrary.com/yui/docs/test/#asynctests

看 Testable JavaScript 第四章 Unit Tests 介紹的 Asynchornous Testing 範例,實在是不太懂要做啥啊…

看 YUI Test 網頁的範例似乎有懂一點…只懂一點…

JavaScript unit tests with YUI Test
http://damien.pobel.fr/post/javascript-unit-test-yui

看了這邊的範例有再稍微懂一點XD

YUI Test 的 wait() 有不同的用法:

  1. wait([function], [ms]),和 setTimeout() 一樣,過 [ms] 後執行 [function]
  2. wait([ms]),用於測試某 event 是否發生,會搭配 resume() 使用,如果過了 [ms] 後,沒有 resume ,則視為測試失敗
喔耶,還可以搭配這本
「JavaScript Unit Testing」Testing asynchronous (Ajax) JavaScript code

[歌詞] 新居昭乃 - Adesso e Fortuna~炎と永遠~



Adesso e Fortuna~炎と永遠~

歌手:Sherry
作詞:新居昭乃
作曲:新居昭乃


月あかり
風の羽音に降りる
蒼い水の上の夜
いつまでも冷めやらぬ指先で
想いをつづる

Io sono prigioniera
私を背中から抱きしめて
囁く貴方の国の言葉は
すこしだけ切ないロマンティーク
貴方のとりこ

Io sono prigioniera
今夜貴方は
私を優しく包んでくれた
けれど朝の陽に照らしても
黒い瞳は私に
そのままきらめくの

もう一度 私を深い夜に
連れ戻して片言のアモール
すこしだけあやしげな唇が
私をとかす

Io sono prigioniera
今夜貴方は
私を優しく包んでくれた
けれど朝の陽に照らしても
黒い瞳は私に
そのままきらめくの

musiXmatch and TuneWiki

musiXmatch - The World's Largest Lyrics Catalog
http://musixmatch.com/

TuneWiki.com: The World's Largest Lyrics Collection
http://www.tunewiki.com/

兩個都是世界級,一個是 Largest Lyrics Catalog,另一個是 Largest Lyrics Collection。

兩個都有 API
https://developer.musixmatch.com/ (最低每年美金2500)
http://dev.tunewiki.com/ (價錢請聯絡)

兩個分別佔據 Spotify App 一、二名

兩個都有 mobile app

桌面應用,TuneWiki 有桌面程式,不過是用 web view,不太好用;musiXmatch 有 chrome extension,但是 for YouTube only,也不是每個影片都 ok 的樣子;

2014年4月22日 星期二

新居昭乃台灣演唱會~YAKUSOKU 0705~

先前文章
Akino Arai Live in Taiwan, 2014.7.5

新居昭乃台灣演唱會~YAKUSOKU 0705~
http://www.famiticket.com.tw/activity_info.aspx?code=1403Z04001

日期: 2014/07/05(六)
入場時間:18:00
開演時間:18:30
場地: 內湖自由廣場會議中心 國際演藝廳
主辦單位: 集藝文化事業有限公司
訂票方式: FamiPort購票取票,網路購票
票價: $1800

節目簡介: 繼2月岩男潤子小姐之後,集藝文化事業重金邀請在音樂界享譽盛名的創作歌手新居昭乃小姐來台開唱!演唱會當天7月5日是新居小姐出道28週年,此次演唱會不僅有新居獻聲,其最佳搭檔保刈久明、御用小提琴手藤堂昌彥也將一同站上舞台,配合獨樹一格的情境影像,並以動漫主題曲為表演主軸,為您帶來一場音樂饗宴!


4月4日就有購票消息了,不過目前也還是熱賣中XD

究竟是 FamiPort 機台可以買,還是都要網路購票啊?

2014年4月20日 星期日

Nokia Feature Phones

比價王
http://www.eprice.com.tw/mobile/compare/?data=NDgyNyM0ODU5IzQ3MDcjNDg5OQ==

目前還在市面上的4支 (網路查詢價格,僅供參考)

其中 301 和 208 是有相機,106 和 207沒有相機

這4支都沒有 Wi-Fi 功能,而 207, 208, 301 都有 3G 能力,好像還可以裝 LINE。

螢幕大小除了 106 是 1.8 吋,另3支是 2.4 吋

SIM 卡的話,207, 208 是用 Micro SIM,106, 301 是 Mini SIM

Greenshot - a free screenshot tool optimized for productivity

Greenshot
http://getgreenshot.org/

先前文章:

早在2012年8月的時候,測試了 Greenshot,當時無法取代 PicPick 的主要原因
  1. 無法修改 screen capture hotkey,一定要用 Ctrl + Print Screen 才能 capture full screen
  2. editor 無法 undo
在今天測試的 1.1.8 Build 35 版本,上述問題都沒有啦

按下 Print Screen 可以擷取全螢幕畫面,預設是會問要做什麼行為,可以改成直接開編輯器。

Greenshot 的 destination,除了可以送到 printer, email 這些內建服務,也可以丟到 Powerpoint, Word, Excel, 小畫家,有趣的是還可以丟給 Paint.NET,以及上傳至 Imgur。

內建編輯器,除了基本的畫框、線、箭頭、輸入文字,也有幾個常見功能
  • highlight
    預設是選取的範圍,加上黃色底色。當然這也可以透過無框線矩形,底色填半透明做到。做成一個按鈕就是捷徑方便囉。
    也有 highlight area 功能,將選取範圍以外套上模糊化!
  • obfuscate
    有 pixelize 和 blur,也可以調整相關參數
  • crop
    和一般的 crop 先選取範圍再截掉不同,Greenshot 是按下 crop 後,才出現選取功能,而選好之後不會馬上截掉,會先出現八方向可調整,按下左上出現的綠色打勾,才完成 crop 動作
這版(1.1.8 Build 35)在擷取畫面與編輯上,大多都可以滿足了,剩下要挑的毛病,大概就是按鈕太小吧,像 PicPick 那樣大一點比較好按XD。

Alternative to PicPick, Part II

Alternative to PicPick?
http://franks543.blogspot.tw/2012/08/alternative-to-picpick.html

之前安裝 Windows 8 的時候,寫了一篇 Alternative to PicPick,原因是 PicPick 預設安裝會裝奇怪的東西,想要找取代品。

當時測了 Greenshot 這套軟體,但是不太符合需求(忘記當時試的版本了)。

今天,開機到 Windows 7 系統,行列輸入的切換還是方便好多啊…Windows 8.1 的行列要和英文輸入切換,實在是令人崩潰…
(謎:阿 Win 8, Win 8.1還不是用了那麼久,都一年半了)

回來主題,PicPick 的取代品,切到 Windows 7 開機,把瀏覽器都更新一下,Firefox 停在 17 是多久 啊…但是 IE 卻是 11!

又跑走了…PicPick 裝了新版,是 3.3.2,功能沒什麼大變動,介面就是 Office 2007 開始的風格,在上方工具列有大塊含圖示,這種風格,如果剛好列出來的就是常用的功能,會很方便。

這次安裝 PicPick ,bundle 的東西又變了@@,安裝到一半時,會跳出一個對話框,詢問是否要安裝某 toolbar,這時候,按 decline 就好了,可以繼續安裝,不過習慣上會一直按 accept 是吧。

於是乎,回頭來找一下,是不是有什麼取代品呢?

第一個是

TinyTake
http://tinytake.com/

測試版本為 1.2.5,介面是屬於清爽簡單型,可以透過 tray icon 選擇,或者是使用熱鍵,進行螢幕畫面擷取,基本的 region, window, full screen 都有。

擷取完之後,有簡單的 editor,可以畫線、框、圓,可以插入文字方塊,字型大小、顏色可調整,可以輸入中文,存檔可以儲存為 JPEG, PNG, BMP, GIF。

有登入的話,可以將圖片上傳到 MangoApps,因為懶的註冊,就沒有試這部分。一開始啟動的時候,也會彈出登入視窗,不過直接關掉,不用登入也可以使用。

比較特別的是,還有 capture video 的功能,也可以從 webcam 裡 capture video or image,不過一般 webcam 應該都有軟體可以處理錄影、拍照,喔…現在的筆電的話,可能都有內建 webcam,就不一定有安裝附的軟體就是。

capture video 的功能,有時候也蠻方便的啦,就是把操作過程錄下來,TinyTake 存錄影的格式,副檔名是寫 mp4,但是用 MediaInfo 看,則是 AVI with MPEG-4 Visual and MP3。

好吧,再來講無法取代 PicPick 的地方。

其實這是看個人使用習慣啦,和之前測 Greenshot 的理由類似。

首先,TinyTake 的熱鍵可以修改,但是沒有辦法不搭配 modifier key,也就是一定要配 Ctrl, Alt, Shift 其中之一,就沒辦法做到 Print Screen 鍵就擷取。

另一個不習慣的地方在於,進入 editor 模式之後,沒有 crop 功能,這代表如果要特別區塊的話,就要先用 capture region 選好。

基於上述兩點,TinyTake 目前仍無法成為我的 screen capture 軟體。

下一位

Screenshot Captor
https://www.donationcoder.com/Software/Mouser/screenshotcaptor/

測試版本,應該是 4.8.2。

為什麼是應該呢,因為試了一下之後,就直接反安裝了,所以沒辦法開起來看 about,是看網站的 latest stable release version,應該是和剛才試的一樣。

原本對這個軟體的期待還蠻高的,因為在兩個網站都看到對這套的評價極高。


的確,就功能面上來說,Screenshot Captor 的確非常的強大,設定也是多的驚人!

在 TinyTake 落敗的兩點,Screenshot Captor 都沒有問題,可以自由修改熱鍵,編輯器 crop 也 ok。

但是畫面…就是所謂的功能強大工具常見的問題,功能太多都攤在畫面上,而且按鈕有夠小,看圖示也不知道是做什麼的,一開始測試時,crop 究竟在哪裡,找不到啊…

不過總不能因為功能太強大,就打入冷宮不用吧。

是的,我們一定要有一個非常合理的原因,才能馬上反安裝。

那就是輸入文字時,打中文是亂碼…

為了避免是因為在 Windows 7 安裝 WinXP 行列輸入法,導致有問題,也測試了輸入日文,抱歉,出現的是問號。

也不是字型的問題喔,因為都切成 MS Mincho 了,還是問號。話說選字型的列表,都是英文,不會出現「微軟正黑體」。

都什麼年代了,輸入非英文還會有問題,這當然是沒辦法用啦。

下一位

Free Screen Capture
http://screencapturer.com/

沒有試很久,主要的問題是,capture 之後,是直接出現小小的 editor toolbar,提供基本的編輯功能,要完整編輯的話,可以按 edit in Paint 或用其他軟體開啟。

那我直接按 Print Screen,再貼上小畫家就好啦。

再下一位?

話說 Greenshot 剛才抓了新版(1.1.8 Build 35)稍微試一下,熱鍵設定可以改了!

待會再來試一下 editor 功能

2014年4月19日 星期六

my .jshintrc 選項整理篇

RC 內容:my .jshintrc

最嚴格的作法,就是 Enforcing 全開,Relaxing 全關,所以來看一下關掉的 Enforcing 和開起來的 Relaxing

Enforcing option 關掉的

  • camelcase
    強制 identifier 都要寫成 camelcase,因為還蠻常會有 UPPER_CASE 寫法作為 const 概念,所以關掉
  • indent
    legacy code 修 indent 很麻煩…
  • noempty
    寫 base class 時,會有 function without content
  • nonew
    因為 legacy code 寫法,先關掉,不然會和 unused 衝突。其實根本的作法是把寫法改掉@@
  • plusplus
    畢竟 C 語法習慣,而且不要寫成奇巧的組合,就不會有什麼問題
  • quotmark
    legacy code 改不完,而且其實沒有重大影響,只有 coding style 一致性
  • unused: vars
    設成 true 在 jshint 會抓 function parameter 後面沒用到的,但是 event handler 宣告習慣上會把會傳起來的都宣告,用 vars 就只抓 var 了沒用的,也是開這個選項的原本用意
  • strict
    等 IE 8 完全 fade out 吧

Enforcing option 特別開起來
  • es3
    原因是要抓 trailing comma,trailing comma 在 IE7 以及之前的 IE 會 error,在 jshint v2 沒有選項可以抓 trailing comma,開 es3 的話,就會抓

Relaxing option 打開的
  • laxbreak
    是一個 coding style
  • laxcomma
    也是一個 coding style
  • smarttabs
    這個開起來的好處是,有時候排版起來,會有 {tab}{tab}{space} 的狀況,並不想抓這個

JSHint Options

my .jshintrc

還在調整中,選項原因另外開一篇好了

{
// JSHint Default Configuration File (as on JSHint website)
// See http://jshint.com/docs/ for more details

"maxerr" : 100, // {int} Maximum error before stopping

// Enforcing
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
"camelcase" : false, // true: Identifiers must be in camelCase
"curly" : true, // true: Require {} for every new block or scope
"eqeqeq" : true, // true: Require triple equals (===) for comparison
"es3" : true, // true: Require code to adhere to ECMAScript 3 spec. To be executable in older browsers, such as IE 6/7/8/9
"forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
"immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
"indent" : false, // {int} Number of spaces to use for indentation
"latedef" : true, // true: Require variables/functions to be defined before being used
"newcap" : true, // true: Require capitalization of all constructor functions e.g. `new F()`
"noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
"noempty" : false, // true: Prohibit use of empty blocks
"nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment)
"plusplus" : false, // true: Prohibit use of `++` & `--`
"quotmark" : false, // Quotation mark consistency:
// false : do nothing (default)
// true : ensure whatever is used is consistent
// "single" : require single quotes
// "double" : require double quotes
"undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
"unused" : "vars", // true: Require all defined variables be used
"strict" : false, // true: Requires all functions run in ES5 Strict Mode
"maxparams" : false, // {int} Max number of formal params allowed per function
"maxdepth" : false, // {int} Max depth of nested blocks (within functions)
"maxstatements" : false, // {int} Max number statements per function
"maxcomplexity" : false, // {int} Max cyclomatic complexity per function
"maxlen" : false, // {int} Max number of characters per line

// Relaxing
"asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
"boss" : false, // true: Tolerate assignments where comparisons would be expected
"debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
"eqnull" : false, // true: Tolerate use of `== null`
"es5" : false, // true: Allow ES5 syntax (ex: getters and setters)
"esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`)
"moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
// (ex: `for each`, multiple try/catch, function expression…)
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
"funcscope" : false, // true: Tolerate defining variables inside control statements
"globalstrict" : false, // true: Allow global 'use strict' (also enables 'strict')
"iterator" : false, // true: Tolerate using the `__iterator__` property
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
"laxbreak" : true, // true: Tolerate possibly unsafe line breakings
"laxcomma" : true, // true: Tolerate comma-first style coding
"loopfunc" : false, // true: Tolerate functions being defined in loops
"multistr" : false, // true: Tolerate multi-line strings
"proto" : false, // true: Tolerate using the `__proto__` property
"scripturl" : false, // true: Tolerate script-targeted URLs
"smarttabs" : true, // true: This option suppresses warnings about mixed tabs and spaces when the latter are used for alignmnent only.
"shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
"sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
"supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
"validthis" : false, // true: Tolerate using this in a non-constructor function

// Environments
"browser" : true, // Web Browser (window, document, etc)
"couch" : false, // CouchDB
"devel" : true, // Development/debugging (alert, confirm, etc)
"dojo" : false, // Dojo Toolkit
"jquery" : false, // jQuery
"mootools" : false, // MooTools
"node" : false, // Node.js
"nonstandard" : false, // Widely adopted globals (escape, unescape, etc)
"prototypejs" : false, // Prototype and Scriptaculous
"rhino" : false, // Rhino
"worker" : false, // Web Workers
"wsh" : false, // Windows Scripting Host
"yui" : false, // Yahoo User Interface

// Custom Globals
"predef" : [

] // additional predefined global variables
}

// vim: ft=javascript expandtab

2014年4月18日 星期五

getID3() - The PHP media file parser

http://getid3.sourceforge.net/

看起來好威啊!

支援格式不只名稱的 ID3,音樂格式的 ID3v2, ID3v2, APE tag, VorbisComment 都有

影音綜合的 ASF, MP4 不用說,AVI, MKV 也都支援,連圖片的 JPEG, PNG, EXIF, IPTC 也都有…

寫入則是支援

  • ID3v1
  • ID3v2
  • APE v2
  • Ogg Vorbis comments
  • FLAC comments
看起來是沒有支援寫入 mp4 稍微可惜,畢竟現在 m4a 的市佔也不少

2014年4月14日 星期一

How to pronounce memoization

首先,什麼是 memoization 呢?

http://en.wikipedia.org/wiki/Memoization
wikipedia 告訴我們,這是在 computing 裡,用來 optimize 的作法

其實就是建表啦,把算過的值存起來,下次遇到一樣的 input,就不用重算,直接拿上次算好的值,這就是 memoization

回來標題,那要如何發音呢?

在 YouTube 查詢「memoization prononciation」會有一個 memoize 的發音影片,以及有人教 dynamic programming 的影片XD

在 merriam-webster 是查不到 memoization,不過有相近字「memorization」
http://www.merriam-webster.com/dictionary/memorization

有人說,如何唸 memoization,就是把 memorization 不要發 r 的音

同理,memoize 也就是 memorize 不要發 r 的音

Internet Explorer Intial Release Date

為什麼想到要來列這個呢…因為在看 Secrets of the JavaScript Ninja,裡面提到了一個令人懷念的 JavaScript library 名稱「base2」
是的,就是 JS 界當年傷當有名的 Dean Edwards 的 base2
http://dean.edwards.name/
其他知名作品包括:
其實 packer 現在還是很多人在用啊
然後啊,就看了一下 base2 最後更新
https://code.google.com/p/base2/source/list
最後更新是 2011年 3月 22日,不過在 2009年 10月 1日之後就沒有大量更新了
最後更新則是 2010年 4月 30日
當年 IE7.js 的用處是讓 IE5, IE6 也可以擁有 IE7 的功能!
在這個 IE7 已經被視為 unsupport browser 的年代,聽起來似乎是不可思議吧
所以回頭來看看,網頁開發最令人又愛又恨的 IE 系列,各版本最早是什麼時候出來的呢
(謎:真的有愛嗎)
Internet Explorer 6, August 27, 2001, Windows XP 內建瀏覽器
Internet Explorer 7, October 18, 2006, Windows Vista 內建瀏覽器
Internet Explorer 8, March 19, 2009, Windows 7 內建瀏覽器
Internet Explorer 10, 4 September 2012, Windows 8 內建瀏覽器
Internet Explorer 11, 17 October 2013, Windows 8.1 內建瀏覽器
IE8 也才不過5年嘛,好像沒有很久,我們來看看 2009年 3月的時候,其他的瀏覽器是
  • Firefox 3.0 (Firefox 3.5 於 2009年 6月 30日正式 release)
  • Google Chrome 1.0 (Chrome 2.0 於 2009年 5月 24日 release)
  • Safari 4 (Safari 5 於 2010年 6月7日 release)
  • Opera 9.64 (Opera 10.00 正式版於 2009年 9月 1日 release)
是的,如果還有在用上述的瀏覽器的人請舉手!
但是 IE8 目前的使用率,視區域而定,比 IE8 Countdown 的 10% 還高!
http://theie8countdown.com/

2014年4月13日 星期日

Secrets of the JavaScript Ninja — errata

看起來不多,不過目前讀起來,有幾個地方很有意見啊…
一個是 5.1 How closures work 中的 Listing 5.3 What else closures can see 這段
sample code 以及底下的說明
All variables in an outer scope, even those declared after the function declaration, are included.
這邊 sample code 跑出來的結果會這樣,應該和 JavaScript declaration 有關,也是 3.2 講過的東西,但這裡的舉例和說明,讓我覺得好像是所有宣告在 outerFunction 的,在 innerFunction 都可以拿到,事實上,如果把 var tooLate = 'ronin'; 放到最後,在 innerFunction 一樣 tooLate 會是 undefined。
然後在 5.3 Binding function contexts 講到利用 closure 實作 bind 功能,在很多 JS 書籍都會出現的內容,以 Prototype library 舉例,這邊沒什麼問題,但是最後寫了一個
NOTE A native bind() method is defined on functions as of JavaScript 1.8.5
心想,JavaScript 1.8.5 是啥,不是要講 ES5 嗎?
查了一下,JavaScript 1.8.5 是 Firefox 4 的實作
https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8.5
但是很奇怪的,wikipedia 上竟然也寫了 stable release 1.8.5 ,不過裡面的 citation 就是上面那個 MDN 的連結…
其實問瀏覽器支援哪個 JavaScript 版本沒有任何意義,因為版本不能對應到功能
所以在書裡提到 bind() 在 JavaScript 1.8.5 原生支援完全是沒有意義啊…
唯一的解釋是,因為作者前陣子在 Mozilla 工作,在 Mozilla 裡提到 bind() 的實作,是從 1.8.5,對內部應該是個很合理的說法,但是寫在書上就…
Chrome 34 支援 Function.prototype.bind,那 Chrome 的 JavaScript 版本是什麼呢?

JavaScript 合法變數名稱

本來只是想確認一下,JavaScript 和一般程式語言相較,多了可以用「$」作為變數名稱(函式名稱也可以),不過搜尋一下,發現這個問題的答案,比想像中複雜XD
JavaScript variable name validator
http://mothereff.in/js-variables
Unicode 字元也可以作為變數名稱
其實只看 ASCII 7-bit 的話,合法的變數名稱就是 [_$A-Za-z][_$A-Za-z0-9]*
上面的文章有提到很多有趣的例子,挑其中幾個
var π = Math.PI;

// This is *not* a bitwise left shift (`<<`):
var 〱〱 = 2;
// This is, though:
〱〱 << 〱〱; // 8

// Fun with Roman numerals
var Ⅳ = 4,
    Ⅴ = 5;
Ⅳ + Ⅴ; // 9
另外,用 Unicode escape sequence 也是可以的,也就是說
var \u0061var a 是一樣的@@
而我們都知道,保留字 (reserved word) 是不能當變數名稱,但是在瀏覽器,使用 Unicode escape sequence 則可以避開!?
例如 var v\u0061r = 42; alert(va\u0072); 會 alert 42,不過這個行為在 Firefox 和 IE 已經改掉了,是的,請在 Chrome 測試,會 alert 42,在 Firefox 則是 SyntaxError
補些其他語言
PHP
http://www.php.net/manual/en/language.variables.basics.php
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

2014年4月12日 星期六

支援 4k 錄影的手機

http://en.wikipedia.org/wiki/List_of_4K_video_recording_devices#Mobile_devices_with_4K_video_recording
按照 wikipedia 的資訊,目前可以支援 4k 錄影的手機有

  • Acer Liquid S2
  • Samsung Galaxy Note 3
  • Samsung Galaxy S5
  • Sony Xperia Z2
  • LG G Pro 2
其中3隻是用 Qualcomm Snapdragon 800,2隻是用 Qualcomm Snapdragon 801

手機價格 2014.04.12

手機價格 2014.04.12
手機 PChome 日進網通 地標網通
SONY
Xperia Z2 $23900 $22390 $22500
Xperia Z1 $16900 $15390 $15800
Xperia T2 Ultra $14900
HTC
One M8 (16G) $21900 $20890 $20990
One max $21490 $17890 $17990
Butterfly s $17900 $14690 $14800
One 32G $16900 $13690 $13800
Samsung
Galaxy S5 16G $22900 $20890
Galaxy Note 3 32G $19900 $18190 $18300
Galaxy Note 3 16G $17999 $16890 $16990
ASUS
The new PadFone Infinity 32G $15900 $13890
The new PadFone Infinity 16G $13990 $12890
LG
G Pro 2 16G $15900 $13990

How to skip unused error when they are function parameters in JSHint

JSLint Error Explanations - ‘{a}’ is defined but never used
http://jslinterrors.com/a-is-defined-but-never-used/
如果有下面這段 js code
function f(a, b, c) {
        return b;
}

f();
用 JSLint 跑,會告訴你 a, c 沒有被使用
 #3 Unused 'a'.
    function f(a, b, c) { // Line 1, Pos 12
 #4 Unused 'c'.
    function f(a, b, c) { // Line 1, Pos 18
用 JSHint 跑,如果 option 設定 unused: true ,則會說
line 2, col 19, 'c' is defined but never used.
嗯…理論上,今天定義了一個 function,parameter 應該都是要拿來用才對的嘛
但是呢,在 js 非常容易會寫到 event handler,這時候把 callback 預設會接到的 parameter 都列出來,是很常見的寫法,但是在 JSLint 以及 JSHint 都會可能產生 error
那 JSHint 把 unused 設為 false 不就得了?
但是 unused 也還包括了 var 宣告後沒有用到,這個就應該要抓到才是
其實 JSHint 的 unused 不只 true/false ,還有其他的選項,其中 vars (在 rc 要寫成 unused: “vars”),就是代表只抓 var 不抓 function parameter
另外,如果想要和 JSLint 一樣行為的話,則是用 unused: “strict”,則前後都會抓出來
在 JSHint 的 FAQ 就有這條
JSHint skips some unused variables
http://jshint.com/docs/faq/

How to get extra comma error when using JSHint

JSLint Error Explanations - Extra comma
http://jslinterrors.com/extra-comma/

如果是使用 JSHint 2,在設定為 "es3": true 就會抓到 extra comma

抓 extra comma 主要是需要支援 IE 7 或更低版本,因為 extra comma 在 IE 7 會直接 error 無法 parse

2014年4月10日 星期四

OpenSSL, commit of Add heartbeat extension bounds check.

A missing bounds check in the handling of the TLS heartbeat extension
can be used to reveal up to 64k of memory to a connected client or
server.
自己看 code 果然是看不懂,參考詳細分析
existential type crisis : Diagnosis of the OpenSSL Heartbleed Bug
http://blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html
就… [data length] [data] ,然後 data length 寫個200,但是 data 其實沒有 200 bytes ,用 memcpy 複製個 200 單位,memory 就不知道讀到誰了…
之前在 FFmpeg 或 taglib parse format 看過類似的問題,因為檔案爛了,data length 變成奇怪的值,要不是 malloc() 因為值太大爆掉,不然就是 fseek() 位置跑到奇怪地方
不過連 OpenSSL 這麼重要且廣泛使用的 library 都出現…

2014年4月9日 星期三

How to Check OpenSSL Version from Command Line

openssl version
現在是 HTTPS 都要先關就是了…

May'n 動漫最前線 西門町街頭考驗

竟然還有參加節目玩遊戲@@

Part.1 喝珍珠奶茶


Part.2 找符合年齡範圍的路人,勝者可以吃阿宗麵線


Part.3 猜 Animax 的 Top 10 商品


May'n 的中文真的是學很多啊

小籠包、湯圓

2014年4月7日 星期一

arguments.callee no longer support in ECMAScript 5 strict mode

在 Chrome 或 Firefox 的 console 執行以下
(function abc(){'use strict'; console.log(arguments.callee);})();
會出現
TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
http://stackoverflow.com/questions/103598/why-was-the-arguments-callee-caller-property-deprecated-in-javascript
在 StackOverflow 則有一篇提到,很早期的 JavaScript 沒有 named function 可以用,所以要寫 recursive 就提供了 arguments.callee 可以使用
但是 arguments.callee 的使用,會把 this 改掉,在 performance 表現也不好
在 ECMAScript 3 提供了 named function 後,recursive 的寫法應都使用 named function,既不會汙染 global namespace,也不會動到 this 的值,performance 表現也較好

2014年4月6日 星期日

TIOBE Programming Community Index for March 2014

上次看是2013年6月了,這次 TIOBE 的網頁介面也改了
  1. C
  2. Java
  3. Objective-C
  4. C++
  5. C#
  6. PHP
  7. (Visual) Basic
  8. Python
  9. JavaScript
  10. Visual Basic .NET
  11. Transact-SQL
  12. F#
  13. Perl
  14. Ruby
  15. Delphi/Object Pascal
  16. Lisp
  17. D
  18. Assembly
  19. PL/SQL
  20. MATLAB
Perl 掉出10名,C# 和 PHP 的差距拉大,Ruby 持續下降,F# 衝進前20
話說在 2009 年拿到 language of the year 的 Go,在這次是 36名,似乎沒有再起來的樣子,而 F# 會是類似的情況嗎?

Python 官網首頁

有一陣子沒看,換成暗色系了,然後有 RWD


2014年4月5日 星期六

黑狗伊登0石過幻獸

(謎:竟然出現這種文章)


隊長:5星44級 饕餮渾沌魔君(黑狗2.5倍攻)
隊員:5星63級 惡魔巴風特
   5星62級 玄武執明神君(減傷)
   5星48級 歷史之烏爾德(水妹控場)
   5星26級 炎舞軍神(火遊直傷)
朋友:6星99級 神木之眷.永祭之伊登(解放伊登)

血量:8914+2103=11017

CD…好像都不太重要,當然短一點,可以減少存技的回合

過之前,組了兩隊失敗,都掛在R4三顆大西瓜,一隊是光防隊長、另一隊是玄武隊長,想說靠減傷或高血量磨過,但是在R4都打太慢,伊登技能5回合到,就被打掉了

黑狗隊其實第一次打也老馬在R2忘了轉心就重開

R1: 存技能用,小心不要全體一次打死

R2: 因為兩隻CD錯開,有滿級伊登在,只要記得每回合要轉心,先把一隻打掉後,不轉心也ok,可以繼續存技能,火遊、水妹、伊登、玄武都存起來

R3: 開火遊收掉

R4: 最難的一關,開水妹3回合集中先打掉一隻,剩下兩隻,因為血量超過1萬,不會一擊死,開伊登技能可以再撐5回合,再來開玄武撐3回合,記得要轉心,總共 3+5+3=11 回合,打到剩1隻就可以慢慢存技能,不用每回合,但是也要記得轉心

R5: 因為 CD2,有滿級伊登在,不轉心也很安全,存技能

R6: 先開火遊把日狼收掉,開水妹,在3回合先把50%盾的光狼人收掉,這時候黑狗加巴風特的暗屬性就很有用,剩下一隻就開始存技能,務必要把火遊存起來,記得要轉心,因為CD1每次7千多。這次打因為火遊還沒練,CD16 存很久,要小心轉到暗珠可能就直接把光狼人打掉,一直在轉水珠、火珠

R7: 開火遊,收工

台新信用卡2014年電影優惠

之前是週一到週四的威秀66折,今年台新有新的電影優惠了!
除了威秀的平日66折持續到2014年9月30日,在12/31前,國賓、新光、美麗華、華威天母及高雄美奇萊影城,天天有全票或套票66折
嗯…看清楚是 全票或套票

新光影城

  • 平日:週一~週五 全票66折
  • 假日:週六/週日/國定假日/連續假日 $200元起
  • 組合套餐(中可+小爆) $80
    註 :限現場購票;平日最多2張、假日最多4張;VISA金融卡也有此優惠
可是…以前新光影城好像是平日5折耶…

國賓影城

  • 平日:週一~週五 全票66折起
  • 假日:週六/週日/國定假日/連續假日 $200元起
  • 碳酸飲料、爆米花5折優惠
註:
  • D-BOX、VIP 廳不適用,3D影片需補差價
  • 折扣後價票末位數直接進位為5或0
  • 限現場購票
  • 每卡每日限使用優惠乙次,每次最多4張

高雄美奇萊影城

  • 平日:週一~週五 全票66折
  • 假日:週六/週日/國定假日/連續假日 $180元起
記得在書店買的優惠券是170元耶…平日66折是比170便宜啦(全票230元)

華威天母影城

  • 單人套票300元,含 電影票1張、小爆米花1份、小杯可樂1杯
只能用套票優惠…

美麗華影城

  • 大直美麗華單人套票300元,含 電影票1張、小爆米花1份、小杯可樂1杯
結論,比較常看的 in89、威秀、秀泰,威秀和之前一樣是週一到週四66折,看來是之後可以考慮去西門國賓看看

魯邦三世VS名偵探柯南場次

不愧是柯南代表戲院,絕色影城從早上 8:30 開始,總共有11場
因為要去板橋看,先看板橋大遠百威秀
這週六和週日的場次
09:40, 12:00, 16:20, 18:30, 20:40, 23:00
從 EZ訂 看座位,都是 175人的小廳
板橋秀泰
10:30, 12:40, 17:30, 19:40, 21:50
來自一訂ok的資訊,都是14廳51人
看起來都是小廳,所以威秀的小廳可能比較大@@ (日新威秀例外)