2010年11月14日 星期日

[Emacs] 透過ssh遠瑞編輯檔案

在Emacs可以使用gnu的TRAMP,以ssh遠端登入並編輯檔案。

1. 到TRAMP下載,解開,
./configure;make;make install # 需texinfo套件
2. .emacs設定
(setq tramp-default-method "ssh")
3. 開Emacs,像開檔一樣 C-x C-f
/ssh:mydomain.com:/path/to/file.txt

打/mydomain.com:就會進去tramp模式, 可以按tab自動補完了

2010年10月26日 星期二

[MySQL] root密碼忘了怎麼辦

1. 先關掉mysql server
$ sudo rcmysql stop
2 開server, 但忽略grant-tables (存密碼的地方)
$ sudo mysqld_safe --skip-grant-tables
3.用root進入sql改密碼
$ mysql --user=root mysql
> update user set Password=PASSWORD('new-password') where user='root';
>flush privileges;
>exit

via: Reset mysql root password
註1: mysqld_safe就是用更安全的方式開啟(重載)mysqld, 如有錯誤發生時會重開, 寫log.
註2: flush privileges; 重載授權表
環境: OpenSUSE 11.3

2010年10月19日 星期二

[Windows] 改Dropbox目錄

Dropbox目錄在Linux下預設是~/Dropbox,但是在Windows裡卻是落落長的”C:\Documents and Settings\xxx\My Documents\My Dropbox”,雖然Windows版的Dropbox有提供改目錄(move),但是他還是會很囉嗦的加上"My Dropbox"。

解:
1) 下載 http://wiki.dropbox.com/DropboxAddons/DropboxPath
2) 執行 DropboxPath.exe "C:\Path\To\New\Dropbox"

2010年10月7日 星期四

在Linux裡開發Flash (待續...)

目前大部分都是使用Linux當Desktop,但是遇到要開發Flash時就又要換回Windows開FlashDevelop,Flex的compiler是Java寫的,應該可以跨平台。
所以就直接把FlashDevelop裡的command拿來用:
~/flex/bin/mxmlc -load-config+=XXXConfig_linux.xml -debug=true -incremental=true -benchmark=false -static-link-runtime-shared-libraries=true -o out.swf
config檔裡的路徑也要改,就可以編出swf了,Debug就要再試試看了...
有空再繼續~

TODO:
用emacs! http://anirudhs.chaosnet.org/blog/2008.03.26.html

2010年9月29日 星期三

再玩一次Dvorak!!

在Linux裡:
setxbmap dvorak

改回原本
setxbmap us




至於emacs, 承常用到的C-x是原本qwerty的B的位置, 和C-u換會比較好打.
(keyboard-translate ?\C-x ?\C-u)
(keyboard-translate ?\C-u ?\C-x)

2010年9月16日 星期四

Dropbox without Gnome/Nautilus

1. Download the closed source Dropbox Linux client from http://www.getdropbox.com/download?plat=lnx.x86 (x86_64 for 64 bit)
2. Extract the contents and you should get a .dropbox-dist folder out of the archive. Move the folder to $HOME
3. Run ~/.dropbox-dist/dropboxd.

via: http://antrix.net/posts/2008/dropbox-without-gnome/

worked in my KDE/Dolphin

在HP/compaq nc4000安裝OpenSUISE 11.3

之後開機出現
Error Loading Operating System after

grub的問題,參考討論串,重開機就可以了

2010年8月10日 星期二

OpenSUSE 11.3 KDE版本不時出現Network Management Disable

然後就不能上網,
只要到var/lib/NetworkManager/NetworkManager.state
把NetworkingEnabled=false改成true就好了

真的莫名其妙...

2010年6月9日 星期三

[maemo] ash的init file

Nokia N900 busybox的shell是用ash, init file是.profile

2010年5月31日 星期一

[筆記] Hankbreak備份DVD影片

Handbreak是一套整合各著名codecs的轉檔程式,介面簡單好用~

備份DVD影片的話,我把Video Size的寬縮成352,高是按"Keep Aspect Ratio"照比例。然後Video Quality選Constant Quality: 60% RF:20左右,其他都是預設(Video Codec用x264,Audio Codec用faac)。

一個多小時左右的影片(4G)壓出來大概三百G左右。

2010年5月7日 星期五

[Lisp] 九九乘法表

練習loop和collect的使用:
(loop for x from 1 to 9
collect (loop for y from 1 to 9
collect (* x y)))

結果:
((1 2 3 4 5 6 7 8 9) (2 4 6 8 10 12 14 16 18) (3 6 9 12 15 18 21 24 27) (4 8 12 16 20 24 28 32 36) (5 10 15 20 25 30 35 40 45) (6 12 18 24 30 36 42 48 54) (7 14 21 28 35 42 49 56 63) (8 16 24 32 40 48 56 64 72) (9 18 27 36 45 54 63 72 81))

The Common Lisp Cookbook - The Loop Macro

2010年4月15日 星期四

Windows XP的WebDAV

Windows XP有內建WebDAV的client, 設定如下:
網路上的芳鄰 -> 新增一個網路位置 -> 選擇其他的網路位置 -> 網際網路或網路位址
輸入webdav的位置, 如: http://我的網域.com/webdav
照理說就可以了.
但是WindowsXP SP2卻不行, 在密碼驗證那裡都過不去. 原因是Windows XP SP2取消了BasicAuth(不知道是什麼).

總之到註冊檔裡加上DWORD的UseBashAuth, 然後隨便給他一個不是零的值:
HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Services\WebClient\Parameters\UseBasicAuth (DWORD)

重開機就可以了, 真的.

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