跳到主要內容

發表文章

備份:奇異果的滋味

免責聲明: 因為這篇文章越來越少人轉貼,深怕這麼經典的文章日後找不到,特此備份之。最早是在PTT看到的,但已經找不到原版,不知道原作者是誰。若原作者有異議即撤下。

mkv字幕分離與重製

mkv字幕分離與重製要用到軟體mkvtoolnix 到這裡下載選擇windows 的安裝程式,因為它用wxWindow,用rar版會缺dll http://www.bunkus.org/videotools/mkvtoolnix/ 主要是以命令列為主 mkvinfo 觀看mkv的資訊 mkvextract分離 mmg圖形介面 mkvmerge產生mkv檔,也可以看mkv影片檔資訊 用mkvinfo或者mkvmerge都可以看到你要分離的字幕在第幾個tracks mkvinfo的情況 ,似乎code page不同,新版的mkvinfo在中文console下有些問題,所以改用gui K:\mkv>mkvinfo -g 鋼1.mkv ...(略) (MKVInfo) | + A track at 397 (MKVInfo) | + Track number: 3 at 400 (MKVInfo) | + Track UID: 1051997168 at 403 (MKVInfo) | + Track type: subtitles at 410 (MKVInfo) | + Codec ID: S_TEXT/ASS at 413 (MKVInfo) | + CodecPrivate, length 1254 at 425 (MKVInfo) | + Language: chi at 1683 (MKVInfo) | + Lacing flag: 0 at 1690 (MKVInfo) | + A track at 1693 (MKVInfo) | + Track number: 4 at 1696 (MKVInfo) | + Track UID: 449712430 at 1699 (MKVInfo) | + Track type: subtitles at 1706 (MKVInfo) | + Codec ID: S_TEXT/ASS at 1709 (MKVInfo) | + CodecPrivate, length 1254 at 1721 (MKVInfo) | + Default flag: 0 at 2979 (MKVInfo) | + Language: tai at...

FreeBSD的桌面

關於FreeBSD中文化的問題,大都在 FreeBSD Chinese HowTo 裡可以找到。 這裡只寫那篇HowTo沒寫的東西。 由於兩年沒用FreeBSD的X,特別感謝Yahoo的 Dustin Liu 的提供的設定方法。 1. Locale的問題,在Xorg裡,似乎對Big5的支援度比較差,因此許多人直接使用zh_TW.UTF-8。這樣在桌面的顯示會正常,但是在Terminal會不正常,因此可以使用Screen,再設定 .screenrc defencoding big5 但是中文檔名有問題,實在是有些麻煩 2. 中文字型顯示不好看,必須利用 Firefly 的patch,在/etc/make.conf請加入 WITH_CJK=yes 再 分別編譯安裝ports: print/freetyp2; x11- fonts/fontconfig; x11-toolkits/pango; x11-fonts/libXft; libXft必須在port:print/freetyp2及port:x11-fonts/fontconfig之後 , 以前的XFS已經不見了,安裝libXft就有這個功能。 字型設定的細節可參考 FontConfig (新)細明體在 11, 12, 13, 15, 16, 20 點的大小有特別做內嵌的點陣字,換句話說,由於中文字的 hinting 不易,有時點陣字會比較有效。又因為新細明體使用了 bytecode 來組合筆劃, 沒有編進 bytecode interpreter 的 freetype 版本在 render 的時候,就會碎掉。請確定您系統上 freetype2 的 source 之中, include/freetype/config/ftoption.h 裡面的 #defineTT_CONFIG_OPTION_BYTECODE_INTERPRETER 是不是有打開。也不可以使用內建的 autohinter. 由於是上述幾個特定的大小是內建點陣字型,所以沒有被 bytecode interpreter 影響。 設定讓新細明體在這些大小時顯示內建的點陣字而不要用 anti-aliased, 可以在 ~/.fonts.conf 加入: PMingLiU true true fal...

神奇的Reflection加上Registry Pattern

原由 : 十年前前寫結構矩陣或是Finite Element Method時,都是依照element的不同性質,代入一個相同的位移分析主程式。因此只要能將element代入主程式,就能夠在不動到主程式的情況下,動態增加element種類,也就是Reflection。問題就在於C++並沒有真正的late binding,到Smalltalk及後來的Java、.Net出現後才真正有此能力。若勉強用C++要寫,得用到function pointer之類的技巧,就又成為weak type。 以下是C的switch case範例,取自Alladin ARRAY *elmt_cst ( ARRAY *p, int isw ) { /* [a] : Jump to Task Case */ UNITS_SWITCH = CheckUnits(); switch(isw) { case PROPTY: /* CST material properties */ ..... add details of CST material properties .... break; case LOAD_MATRIX: /* compute equivalent nodal loads */ case STRESS: /* compute internal nodal loads */ ..... fill in details here .... break; case STIFF: /* compute element-level stiffness matrix */ ..... put details of element stiffness matrix here .... break; case MASS_MATRIX: /* compute element-level mass matrix */ ..... put details of element mass matrix here .... break; default: break; } 就算是使用Abstract Factory,仍然是省不了這一大串的select case,更別說source不給對方了。 最近寫另一個C#程式,剛好想起來這個問題,就可以用Registry加上Reflec...