2010年1月26日 星期二

[MySQL] 用MySQL的時間函數選出"今天"的

如果是用unix epoch timestemp存的話,假設資料表的欄位是timestamp,就可以用

...
WHERE (UNIX_TIMESTAMP(NOW()) - timestamp) < 86400
...

選出timestamp是"今天"的資料。

參考:
MySQL - Date and Time Functions
Epoch Converter 好用的線上unix epoch轉換工具,還有各種語言的參考

2010年1月19日 星期二

初學sed和awk (draft)

sed主要是處理pattern,awk主要是處理固定欄位
sed不會更改檔案內容(除非用sed -i),而是輸出到stdout

sed 語法;
sed '樣式' 檔案 #檔案可以有很多個


樣式:
'/abc/' #表示尋找檔案裡的abc
's/^abc/def/' #把abc開頭的換成replace def
'1i\abc' # 首行插入abc


$ sed -e "樣式" 檔名 # 把"script"當成樣式丟給sed ?不懂?
$ sed -i '樣式' # inplace
如果有用到單引號,就用雙引號括起來: "樣式"

配合xargs
$ find *.php | xargs sed [options] '樣式'

參考:
SED 手冊
sed 和awk 入門

2010年1月15日 星期五

[Opera] JavsScript Debug - console.log

Opera裡沒有像Firefox的Firebug有好用的console.log,但是也還是有辦法。加以下二行就可以了:
window.console = window.console || {};
console.log || (console.log = opera.postError);

參考:
Using firebug for firefox 除錯 javascript
console.log Everywhere

[Opera Tips] 滑鼠選取一段內容,然後顯示原始碼

參考View Selection Source for Opera照著做就好了。

[JavaScript] JavaScript用split()處理Regular Expression在IE有問題啊~

標題寫了很長,JavaScript苦手的如我,在IE裡就遇到了split()用Regular Expression的問題,例如:

var str = "abc1-2";
var s = str.split(/(^abc)([0-9]+)-([0-9]+)/);
/* 結果
s[0] = "";
s[1] = abc;
s[2] = 1;
s[3] = 2;
*/

但是在惡名昭彰的IE裡,s就沒有值了,所以就要另外再想辦法~

Regular Expression (RegExp) in JavaScript - 好用的測試JavaScript Regular Expression工具

2010年1月11日 星期一

ffmpeg 預設codec參數


Enabled decoders:
aac flashsv pcm_u16le
aasc flic pcm_u24be
adpcm_4xm flv pcm_u24le
adpcm_adx fourxm pcm_u32be
adpcm_ct fraps pcm_u32le
adpcm_ea gif pcm_u8
adpcm_ea_maxis_xa h261 pcm_zork
adpcm_ea_r1 h263 pcx
adpcm_ea_r2 h263i png
adpcm_ea_r3 h264 ptx
adpcm_ea_xas huffyuv qcelp
adpcm_g726 idcin qdm2
adpcm_ima_amv imc qdraw
adpcm_ima_dk3 indeo2 qpeg
adpcm_ima_dk4 indeo3 qtrle
adpcm_ima_ea_eacs interplay_dpcm ra_144
adpcm_ima_ea_sead interplay_video ra_288
adpcm_ima_iss jpegls rawvideo
adpcm_ima_qt kmvc rl2
adpcm_ima_smjpeg loco roq
adpcm_ima_wav mace3 roq_dpcm
adpcm_ima_ws mace6 rpza
adpcm_ms mdec rv10
adpcm_sbpro_2 mimic rv20
adpcm_sbpro_3 mjpeg rv30
adpcm_sbpro_4 mjpegb rv40
adpcm_swf mlp sgi
adpcm_thp mmvideo shorten
adpcm_xa motionpixels smackaud
adpcm_yamaha mp1 smacker
alac mp2 smc
amv mp3 snow
ape mp3adu sol_dpcm
asv1 mp3on4 sonic
asv2 mpc7 sp5x
atrac3 mpc8 sunrast
avs mpeg1video svq1
bethsoftvid mpeg2video svq3
bfi mpeg4 targa
bmp mpeg_xvmc theora
c93 mpegvideo thp
cavs msmpeg4v1 tiertexseqvideo
cinepak msmpeg4v2 tiff
cljr msmpeg4v3 truemotion1
cook msrle truemotion2
cscd msvideo1 truespeech
cyuv mszh tscc
dca nellymoser tta
dnxhd nuv txd
dsicinaudio pcm_alaw ulti
dsicinvideo pcm_dvd vb
dvbsub pcm_f32be vc1
dvdsub pcm_f32le vcr1
dvvideo pcm_f64be vmdaudio
dxa pcm_f64le vmdvideo
eacmv pcm_mulaw vmnc
eatgq pcm_s16be vorbis
eatgv pcm_s16le vp3
eatqi pcm_s16le_planar vp5
eightbps pcm_s24be vp6
eightsvx_exp pcm_s24daud vp6a
eightsvx_fib pcm_s24le vp6f
escape124 pcm_s32be vqa
ffv1 pcm_s32le wavpack
ffvhuff pcm_s8 wmav1
flac pcm_u16be wmav2
wmv1 ws_snd1 xsub
wmv2 xan_dpcm zlib
wmv3 xan_wc3 zmbv
wnv1 xl

Enabled encoders:
ac3 mp2 pcm_u32be
adpcm_adx mpeg1video pcm_u32le
adpcm_g726 mpeg2video pcm_u8
adpcm_ima_qt mpeg4 pcm_zork
adpcm_ima_wav msmpeg4v1 pgm
adpcm_ms msmpeg4v2 pgmyuv
adpcm_swf msmpeg4v3 png
adpcm_yamaha nellymoser ppm
alac pam qtrle
asv1 pbm rawvideo
asv2 pcm_alaw roq
bmp pcm_f32be roq_dpcm
dnxhd pcm_f32le rv10
dvbsub pcm_f64be rv20
dvdsub pcm_f64le sgi
dvvideo pcm_mulaw snow
ffv1 pcm_s16be sonic
ffvhuff pcm_s16le sonic_ls
flac pcm_s24be svq1
flashsv pcm_s24daud targa
flv pcm_s24le tiff
gif pcm_s32be vorbis
h261 pcm_s32le wmav1
h263 pcm_s8 wmav2
h263p pcm_u16be wmv1
huffyuv pcm_u16le wmv2
jpegls pcm_u24be zlib
ljpeg pcm_u24le zmbv
mjpeg

Enabled parsers:
aac dvdsub mpeg4video
ac3 h261 mpegaudio
cavsvideo h263 mpegvideo
dca h264 pnm
dirac mjpeg vc1
dnxhd mlp vp3
dvbsub

Enabled demuxers:
aac ipmovie pcm_u16be
ac3 iss pcm_u16le
aiff lmlm4 pcm_u24be
amr m4v pcm_u24le
apc matroska pcm_u32be
ape mjpeg pcm_u32le
asf mlp pcm_u8
ass mm pva
au mmf r3d
avi mov rawvideo
avs mp3 redir
bethsoftvid mpc rl2
bfi mpc8 rm
c93 mpegps roq
cavsvideo mpegts rpl
daud mpegtsraw rtsp
dirac mpegvideo sdp
dnxhd msnwc_tcp segafilm
dsicin mtv shorten
dts mvi siff
dv mxf smacker
dxa nc sol
ea nsv str
ea_cdata nut swf
eac3 nuv thp
ffm ogg tiertexseq
flac oma tta
flic pcm_alaw txd
flv pcm_f32be vc1
fourxm pcm_f32le vc1t
gsm pcm_f64be vmd
gxf pcm_f64le voc
h261 pcm_mulaw wav
h263 pcm_s16be wc3
h264 pcm_s16le wsaud
idcin pcm_s24be wsvqa
iff pcm_s24le wv
image2 pcm_s32be xa
image2pipe pcm_s32le yuv4mpegpipe
ingenient pcm_s8

Enabled muxers:
ac3 ipod pcm_f64le
adts m4v pcm_mulaw
aiff matroska pcm_s16be
amr matroska_audio pcm_s16le
asf mjpeg pcm_s24be
asf_stream mmf pcm_s24le
ass mov pcm_s32be
au mp2 pcm_s32le
avi mp3 pcm_s8
avm2 mp4 pcm_u16be
crc mpeg1system pcm_u16le
daud mpeg1vcd pcm_u24be
dirac mpeg1video pcm_u24le
dnxhd mpeg2dvd pcm_u32be
dts mpeg2svcd pcm_u32le
dv mpeg2video pcm_u8
eac3 mpeg2vob psp
ffm mpegts rawvideo
flac mpjpeg rm
flv mxf roq
framecrc mxf_d10 rtp
gif null swf
gxf nut tg2
h261 ogg tgp
h263 pcm_alaw vc1t
h264 pcm_f32be voc
image2 pcm_f32le wav
image2pipe pcm_f64be yuv4mpegpipe

Enabled protocols:
file pipe tcp
gopher rtp udp
http

external codec
先裝好faac/faad/x264/amr...等
(codec在configure時要加--enable-shared)

在ffmpeg的source目錄裡:
$ ./configure --enable-libfaac ...
$ make
$ make install

要壓成aac時
$ ffmpeg -i xxx.wmv -acodec libfaac out.mp4

ref:
Installing ffmpeg with FAAC and x264 encoders from source on Ubuntu

2010年1月7日 星期四

[Emacs] calendar/diary mode

M-X calendar

有一個.diary檔(預設),記錄diary的資訊.

常用鍵
* M-a/M-e 上/下個月
* M->/< 去/明年
* d 顯示當天的diary
* s 開diary檔
* i d 游標的那天加入diary檔
* i a 游標的那天加入"週年慶", %d可自動算出幾週年(歲)

我的.emacs跟calendar/diary相關設定
;;;; calendar
(setq calendar-week-start-day 1) ; 第一天為星期一
(setq view-diary-entries-initially t) ; 開calendar時也顯示diary
(setq mark-holidays-in-calendar t) ; 開calendar時也顯示 holiday

;; 隱藏跟我無關的節日
(setq holiday-general-holidays nil)
(setq christian-holidays nil)
(setq hebrew-holidays nil)
(setq islamic-holidays nil)
(setq solar-holidays nil)
(setq bahai-holidays nil)

; 按p C顯示天干地支, from http://forum.slime.com.tw/post1100258-1.html
(defconst chinese-calendar-celestial-stem
["甲" "乙" "丙" "丁" "戊" "已" "庚" "辛" "壬" "癸"])
(defconst chinese-calendar-terrestrial-branch
["子" "丑" "寅" "卯" "辰" "巳" "午" "未" "申" "酉" "戌" "亥"])

;; diray
; diary-mode fancy display 炫麗顯示
(setq view-diary-entries-initially t
mark-diary-entries-in-calendar t
number-of-diary-entries 7)
(add-hook 'diary-display-hook 'fancy-diary-display)
(add-hook 'today-visible-calendar-hook 'calendar-mark-today)
(add-hook 'fancy-diary-display-mode-hook
'(lambda ()
(alt-clean-equal-signs)))
; via http://www.emacswiki.org/emacs/DiaryMode

; set date format
(setq calendar-date-display-form '(year "-" month "-" day))
; diary檔用iso日期格式(預設是美國式)
(setq calendar-date-style 'iso)

(setq calendar-latitude +25.02)
(setq calendar-longitude +121.31)
(setq calendar-location-name "台北")


ref:
DiaryMode(EmacsWiki)
The Calendar and the Diary (GNU Emacs Manual)

2010年1月5日 星期二

[Emacs] gdb開很多視窗就是個很帥的IDE了

.emacs設定加上
(setq gdb-many-windows t)
(setq gdb-show-main t)

在source code的視窗裡:
* Mouse-1點在左邊行數旁的邊框裡,可以設定中斷點(breakpoint)
* C-Mouse-1可以拖現在執行點到任一想要的地方

ref:
- Emacs Mode for GDB
- GDB User Interface Layout