Fold All / Expand All

2012年10月30日 星期二

鐵三角 藍牙立體聲耳機麥克風組 ATH-BT05

藍牙立體聲耳機麥克風組 ATH-BT05

這組是由 藍牙立體聲接收器 AT-PHA05BT,和耳機 ATH-CKM500S,話說官網竟然沒寫耳機型號,都是購物網站或其他介紹頁面才有寫,規格看起來和官網上的ATH-CKM500是相同的。

試了搭配其他耳機:ATH-A900, UE600, AKG K518 DJ,嗯…聽這三支,UE600這支不知道因為是耳道式,還是抗阻比較低,接上藍牙接收器,會有明顯的底噪…,另外用iPad藍牙和iPad直接插耳機,A900似乎直接插iPad還比較好!?錯覺?

另外,藍牙A2DP似乎只能到16-bit, 44.1 kHz?

Bluetooth A2DP maximum available bandwidth if 768kbit/s, so compression is necessary to deliver two channel digital stereo sound. The mandatory codec is SBC.

http://en.wikipedia.org/wiki/SBC_(codec)

看來直接插的音質比較好不是錯覺,是真的,AT-PHA05BT這支官網支援編碼只有列SBC

2012年10月27日 星期六

Django的發音

官方就有說明了

What does “Django” mean, and how do you pronounce it?
https://docs.djangoproject.com/en/dev/faq/general/#what-does-django-mean-and-how-do-you-pronounce-it

Django名字的由來是爵士吉他手Django Reinhardt。

官方發音 mp3 in audio tag

2012年10月24日 星期三

字幕格式 sub

副檔名是 .sub ,其實有好幾種…

圖檔格式:
VobSub (.idx+.sub)

文字格式:
MicroDVD (.sub)
SubViewer (.sub)

不過實際上比較常看到的應該是 .ass 和 .srt 吧
SubStation Alpha (.ssa+.ass)
SubRip (.srt), application/x-subrip

2012年10月21日 星期日

Xperia 2011年系列確定不會有Jelly Bean

Continuing Android software upgrades – Jelly Bean for 2012 Xperia™ smartphones

之前Sony先否定了2011 Xperia不會升到Jelly Bean的說法,但是現在官方宣佈確定不會升了…

可升到Jelly Bean的機種,會先由T以及TX開始,接著會是V,之後是S, acro S, ion, P, go, J。

2011機種只會到ICS,仍會有firmware upgrade,不過就是小部分的維護嘛。

話說Xperia U不也是2012機種嗎…怎麼沒在文章中出現。

看來我的Neo只好去刷CM了

關聯文章:
Android Device Jelly Bean Update List (可是沒有回去更新XD)

羅技 G400 入手

如同網路上所說,和MX 518手感幾乎一樣。

差在MX 518的按鍵處是光滑面,G400則是做霧面。

官網定價是$1290,跑去光華的本店吳銘拿$880。

不知道G400用久了,外表會不會像MX 518那樣開始脫皮…

2012年10月19日 星期五

Handle Touch Events - doubletap

在jQuery Mobile沒看到有doubletap處理。

在Sencha Touch,收到touchstart後,先將當時e.time存進this.startTime,而之前的tap timer要清掉,有收到touchmove也要清掉handler;在onEnd的function (沒追到是什麼會trigger,touchend?),把時間記為this.lastTapTime,而上一次的lastTapTime和這次的時間間隔如果小於等於maxDuration(預設為300ms),則視為doubletap。

即有上一次的lastTapTime,代表有tap完成過一次,在300ms內,又有一次tap,就代表doubletap。

如果沒有上一次的tap或者上次tap時間超過maxDuration,檢查this.startTime和這次event時間間隔是否大於maxDuration,超過則視為singletap。

每次進onEnd都要把this.lastTapTime設為此次事件時間,當要發出doubletap事件時,要把this.lastTapTime清為0。

Handle Touch Events - longpress

在Sencha Touch裡,longpress和taphold是相同的event。

實作方法是,收到touchstart事件,訂一個timeout handler,timeout duration預設為1秒(1000ms),在1秒內收到touchmove, touchend事件,則取消handler,即clearTimeout();1秒到了後,會送出longpress事件。送出longpress事件後,設一個flag代表已完成longpress,這時候收到touchend的時候,不用做事。

在jQuery Mobile裡,只有taphold。

tapholdThreshold預設為750ms,收到虛擬事件vmousedown時,做clearTimeout();收到vmousecancel,則clearTimeout()之外,還要unbind各個handler;收到vclick,則要確認target是否相同,一樣才送tap事件出去。

和Sencha Touch相同,timeout到了,就送事件出去。


Reference Code version:
sencha-touch-2.0.1.1
jquery.mobile-1.2.0

2012年10月14日 星期日

Documentation Usability (from API design for C++)

Documentation Usability

學習一套API最大的阻礙就是文件與資源不足。

  • Lack of code examples
    每個class, method都寫得很清楚,但是沒有code example,是沒有辦法讓開發者快速了解如何使用API
  • Incomplete content
    文件不足或者是呈現方式不佳
  • Lack of task focus
    沒有提供如何達成特定任務的作法
  • No design rationale
    沒有提供設計、架構整體的概念 
  • Inaccessible data formats
    文件沒有提供適當的格式
另外研究指出,開發人員通常不會仔細地把API documentation讀完,所以文件太多反而是有害的,當然不是說不要寫完整,而是要有high-level tutorial以及example code先讓人有個概念。另外,在文件提供相互連結,會讓人可以容易發現更多的功能。

新的Lossy Audio Codec - Opus

Opus Interactive Audio Codec

結合Skype的SILK codec和Xiph.Org的CELT codec,在2012年7月獲得IETF認可,在2012年9月正式成為RFC 6716,Opus這個Audio Codec有著許多吸引人的地方。

Royalty-Free
Opus在一開始設計的目標,就是可以成為大家使用的標準,所以和其他Codec不同(如MP3, AAC),使用Opus是不需要付license fee。另外,decoder/encoder的implementation libopus,是BSD license,商業使用不需要釋出原始碼。
Opus licensing

Wide Range Bitrate and High Quality
Opus的bitrate支援從6 kb/s到510 kb/s,在官方網頁上,根據數個Listening Test,做出了quality-bitrate比較圖,在各bitrate,都與現有Codec相等甚至勝出,是可以從語音通訊到音樂播放皆適用的Codec。
(謎:原來AAC也贏Vorbis啊,倒是沒有列出據說很強的Musepack,不過沒啥人在用就是了…)

Floating point and fixed-point implementation
令人期待的地方!之後找時間來試試,如果fixed-point encoder的速度理想的話,可以考慮來用,不過前提當然就是有哪些decoder implementation。

是的!Codec再優秀,沒有software, device可以播放的話,一樣沒啥路用。

在2012年下半年才出現的Opus,目前可支援的軟體有Firefox 15、foobar2000 v1.1.14。

等到iOS和Android可以原生支援時,這個Codec才算有機會?

chromium: Issue 104241: Support OPUS for the audio tag and Audio object
Chromium Audio/Video

2012年10月13日 星期六

Smooth Streaming Encoding using FFmpeg

相關連結:
How to output fragmented mp4 with ffmpeg? @ Stack Overflow
How to Smooth Stream from Apache without any plugin
Experience IIS Smoooth Streaming @ Microsoft IIS site

Smooth Streaming是由微軟提出的Adaptive bitrate streaming技術,類似的方案如蘋果提出的HTTP Live Streaming,都是為了解決多媒體串流問題,以往通常採用UDP-based的RTP/RTSP,改用over HTTP的好處在於可過proxy,還可善用HTTP CDN。

架設Smooth Streaming,在微軟提供的指南,是將多媒體內容用Microsoft Expression Encoder轉成Smooth Streaming格式,再透過安裝了IIS Media Services extension的IIS server提供服務。

那在非Windows的機器上,有辦法提供Smooth Streaming嗎?

現在透過FFmpeg,可以轉出Smooth Streaming格式,透過一般的HTTP伺服器,例如Apache就可以達成。

Smooth Streaming和HLS的m3u8及一堆ts檔的做法類似,多媒體檔案先壓成多個fragmented mp4,在Manifest檔內(XML格式)描述檔案名稱以及bitrate,可以壓制成多種bitrate,讓client端依據當時的網路狀況選擇不同的bitrate下載。

FFmpeg在0.10時,已經提供了ISMV (Smooth Streaming) muxer (git commit),壓出ismv檔案後,可以再用另一支FFmpeg提供的tool ismindex (git commit)產生相關檔案。

在FFmpeg 1.0則又加入了Smooth Streaming live segmenter muxer (git commit),直接format選smoothstreaming,就可以把整套檔案壓出來。

例如下「ffmpeg -i  test.mov -f smoothstreaming -b:v 800k FolderName」,就會在"FolderName"資料夾下產生出Manifest和切好的FragmentInfo, Fragments。

目前可以作為Smooth Streaming client的有Windows Phone 7以及SilverLight。

FFmpeg Windows Builds的2012-10-10版測試,壓出檔案後,拿下面兩個檔丟到自己的web server
http://mp4parser.googlecode.com/svn/smooth/gcode.html
http://mp4parser.googlecode.com/svn/smooth/player/SMF_Adoption.xap
然後把html裡InitParams的value改掉。

不過用上述方法測試,目前會是影片播了一小段後,畫面停住,但是聲音持續在播,如果隨意seek到別的位置後,畫面又會正常出現,可能是FFmpeg還要再加其他參數?

Smooth Streaming muxer的參數,在「ffmpeg -h full」裡面有,目前用2012-10-10版看到的有
-window_size <int>
-extra_window_size <int>
-lookahead_count <int>
-min_frag_duration <int64>
-remove_at_exit <int>

[烏克麗麗] Taylor Swift - Long Live


↑是吉他的,不過有提到刷法,一開始就每小節刷8下,副歌可以改。

和弦用G, Cadd9, Em7, D/F#
http://tabs.ultimate-guitar.com/t/taylor_swift/long_live_crd.htm

http://www.ukulele-tabs.com/uke-songs/taylor-swift/long-live-uke-tab-19849.html
ukulele-tabs上用的和弦是G, C, Em, D

基於Em7比較好按XD,用G (0232), Cadd9 (0203), Em7 (0202), D (2220)

以下用"."表示重複上一個和弦

Intro:
G . Cadd9 . Em7 D Cadd9 .

G . Cadd9 . Em7 D Cadd9 .
G . Cadd9 . Em7 D Cadd9 .
Em7 . Cadd9 . Em7 D Cadd9 .

Chorus:
G Cadd9 Em7 D
G Cadd9 Em7 Cadd9 G

Verse 2:
G . Cadd9 . Em7 D Cadd9 .
G . Cadd9 . Em7 D Cadd9 .
Em7 . Cadd9 . Em7 D Cadd9 .

Chrous:
G Cadd9 Em7 D
G Cadd9 Em7 D
G Cadd9 Em7 D
G Cadd9 Em7 Cadd9 G

Bridge:
Cadd9 Em7 Cadd9 Em7
Cadd9 . .

Verse 3:
G . Cadd9 . Em7 D Cadd9 .
G . Cadd9 . Em7 D Cadd9 .
Cadd9 . D

Chrous:
G Cadd9 Em7 D
G Cadd9 Em7 D
G Cadd9 Em7 D
G Cadd9 Em7 D
G Cadd9 Em7 Cadd9 . G

FFmpeg 1.0

FFmpeg於2012年9月28日release 1.0

目前各libav*系列major number
libavutil: 51
libavcodec: 54
libavformat: 54
libavdevice: 54
libavfilter: 3
libswscale: 2
libswresample: 0
libpostproc: 52

在1.0 Changlog看到比較有趣的是
給Windows Phone用的「Smooth Streaming live segmenter muxer 」
字幕相關的:

- SAMI, RealText and SubViewer demuxers and decoders
- 3GPP Timed Text encoder/decoder

- SubRip encoder and decoder without embedded timing
- Matroska demuxer now identifies SRT subtitles as AV_CODEC_ID_SUBRIP
  instead of AV_CODEC_ID_TEXT
- WebVTT demuxer and decoder (simple tags supported)


喔喔…這個莫非是搬atom那個?
- faststart option in the MOV/MP4 muxer

嗯…看來要菸酒一下這版本的價值

2012年秋季日劇期待度排行 (oricon)

2012年10月期ドラマ期待度ランキング
《2012秋季日劇期待度》這樣的卡司會不會太豪華♥

  1. Going My Home
    主演:阿部寬   共演:山口智子.宮崎葵.阿部貞夫.西田敏行 等
    TVBT, 人人
  2. PRICELESS
    主演:木村拓哉 共演:中井貴一.香里奈.藤木直人 等
  3. 不結婚 (結婚しない)
    主演:菅野美穗.天海祐希 共演:玉木宏 等
    TVBT, 人人
  4. 遲開的向日葵 (遅咲きのヒマワリ)
    主演:生田斗真 共演:真木陽子.桐谷健太.香椎由宇.柄本佑.木村文乃.國仲涼子 等
  5. TOKYO AIRPORT~東京機場管制保安部
    主演:深田恭子 共演:佐佐木希.要潤.瀨戶康史.瀨戶朝香.時任三郎 等
  6. MONSTERS
    主演:香取慎吾.山下智久 共演:柳原可奈子.大竹誠.遠藤憲一 等
  7. 大奥~誕生~
    主演:堺雅人   共演:多部未華子.田中聖.段田安則.內藤剛志.麻生祐未 等
  8. Resident~5人の研修医(實習醫生)
    主演:仲里依紗 共演:林遣都.增田貴久.大政絢.石橋杏奈.光浦靖子.古田新太 等
  9. 惡夢小姐 (悪夢ちゃん)
    主演:北川景子 共演:GACKT.優香.小日向文世 等
  10. 完美的藍 (パーフェクト・ブルー)
    主演:瀧本美織 共演:平山綾.水上劍星.中川大志.寺脇康文.財前直見 等
  11. Doctor-X~外科醫‧大門未知子
    主演:米倉涼子 共演:田中圭.內田有紀.室井滋.岸部一德.伊東四朗.龍雷太 等
深夜檔和相棒略過。「勇者ヨシヒコと悪霊の鍵」ヨシヒコ續作來啦~~
TVBT

2012年10月10日 星期三

LinuxThreads and NPTL

Native POSIX Thread Library@wikipedia
The LinuxThreads library
Linux 线程模型的比较:LinuxThreads 和 NPTL

先筆記。

看起來是glibc要2.3以上的才是用NPTL

Search lyric from lrc123

Actually this is just a web search and parse

use curl to send
「curl -v "http://www.lrc123.com/?keyword=perfume+baby+cruising+love&field=all"」

then parse the html. i use the pattern「/field=singer&keyword=([^"]+)"/」. title is similar. download the LRC is 「/<a href="([^"]+)">LRC<img src/」

don't forget request for LRC with a defined USER_AGENT. Without USER_AGENT, the lrc download page will response with error.

LYRDB Web Services

http://www.lyrdb.com/services/lws-tech.php

不過實際搜一下,連Taylor Swift - Love Story也搜不到啊…

response format也非常地…獨特,所以…還是不花時間implement好了…

補個範例
「http://webservices.lyrdb.com/lookup.php?q=linkin%2520park%2520-%2520numb&for=fullt」

s00346437\Linkin Park Vs Slipknot - Faint/Left Behind\Linkin Park
s00346441\Linkin Park-Pushing Me Away (Hybrid Theory)\Linkin Park
s00346440\Linkin Park Vs Slipknot-ForgottenMy Plague\Linkin Park
s00346438\Linkin Park Vs Slipknot - Forgotten/My Plague\Linkin Park
s00436583\Linkin\Park Linkin
s00346439\Linkin Park Vs Slipknot-FaintLeft Behind\Linkin Park
t00482796\Numb/Encore (feat. Linkin Park)\Linkin Park feat. Jay-z
s00346411\In The End (Not Made By Linkin Park)\Linkin Park
t00482814\Collision Course (linkin Park/jay-z)\Linkin Park
t00482898\Something I Can Never Have\Linkin Park

「curl -v http://webservices.lyrdb.com/getlyr.php?q=t00482796」

2012年10月9日 星期二

LyricWiki API

http://api.wikia.com/wiki/LyricWiki_API
是的,很久以前就有API可以用了,以前也有提到過
先前文章:LyricWiki.org

還頗久之前了…當時還是用LyricWiki.org,現在搬到wikia了。

簡單的API用法,直接發curl
curl -v "http://lyrics.wikia.com/api.php?fmt=realjson&song=back+to+december&artist=tayl
or+swift&func=getSong"

回傳會有artist, song, lyrics, url, page_namespace, page_id, isOnTakedownList,其實後面幾個都不知道要做什麼用,lyrics只會有開頭的歌詞,因為歌詞有license啊
URGENT: LyricWiki API changes

話說fmt要用realjson是很神奇地,如果用json的話,前面會多"song = ",然後才接JSON object,為了維持相容性,所以後來真的要吐JSON時,要指定realjson。

嗯…但是一定要完全正確的artist, song才能拿到歌詞,沒有模糊搜尋的功能嗎…不然就要靠Google加"site:"嗎?

2012年10月8日 星期一

台灣精工(SEIKO)維修經驗

三年前買的SEIKO Premier,前幾天開始會慢分,秒針走兩下停一下,到前天,已經完全不會動了。在網路上搜尋一下,看起來應該是電池沒電了,因為台灣精工的維修部離公司不遠,所以早上打了通電話,詢問營業時間,平日的8:30~17:30,中午可以過去。

於是午休就騎車過去,搭電梯到大樓的7樓,進門後左轉就有櫃台小姐。

錶給師傅看了一下,確認是電池沒電,換電池就可以了。稍等一下之後,師傅就把電池換好,時間調整好,收費是$200。



台灣精工售後服務中心
地址:台北市建國北路一段90號七樓
電話:(02)2504-0707

「NOBODY ROCKs」2012/10/28 @ 西門河岸留言

https://www.facebook.com/events/112157828942176/

日期:2012年10月28日
入場:14:30
開唱:15:00

票價:預購 $200/現場 $250

涼煙樂團:https://www.facebook.com/TheSlimCigarettes
ZOO the band:https://www.facebook.com/zootheband
格子毛衣:http://tinyurl.com/9kenksj

這格子毛衣的圖來亂的啊…
欲知"格子毛衣"詳情,請搜關鍵字「格子毛衣 高雄 八重洲」

雖然我有做網頁,但是其實當年一場都沒有聽過啊(逃)

2012年10月7日 星期日

libcurl does not support RTSP with digest authentication yet (7.27.0)

最近的project會用到RTSP加上digest authentication,之前的daemon是自己刻socket programming,這次只是要確認密碼是否正確,不需要implement full stack,所以想說用curl來問就好了,反正也不需要做到asynchronous,只要記得加timeout就好了。

結果先用curl binary試一下,奇怪…參數餵了--digest和--user,怎麼header都沒有digest authentication的東西呢?換成用HTTP的話,就沒有問題,RTSP就會沒有authentication header。

原本以為是哪個參數下錯了,結果搜尋之後的結果是…curl目前還沒有支援RTSP with digest authentication,在curl的source code裡面列為TODO...

https://github.com/bagder/curl/blob/master/lib/rtsp.c
/*
* TODO (general)
* -incoming server requests
* -server CSeq counter
* -digest authentication
* -connect thru proxy
* -pipelining?
*/

在curl實作好之前,看來還是只能自己算digest了啊