2013-06-27

[EAC]光碟機存取音樂CD的Read/Write Offset特性,如何影響rip下來的音樂數據內容?

剛剛在查要買什麼新光碟機時,意外看到以前在巴哈姆特討論區GameMusic板回給網友louis000的文章。
我想這篇就足以把光碟機讀寫CD audio sample時造成的offset現象,如何影響rip下來的音樂數據內容的來龍去脈解釋清楚了:

2013-05-26

[Tip]Ramdisk要是超過4G,要怎麼讓pagefile運用全部的Ramdisk空間

在Windows XP 32bit版這類不能利用超過4GB記憶空間的系統,大多數的使用者會加裝支援PAE的Ramdisk軟體(如Gavotte Ramdisk),把剩下的記憶體空間變成虛擬磁碟。為了能夠有效地利用這個虛擬磁碟空間,使用者會把分頁檔pagefile.sys放在這裡,讓系統的記憶體總空間得以超過4GB,變相地讓在Windows XP 32bit支援超過4GB的記憶空間。

但只要主記憶體超過6GB多,就會造成分出來的Ramdisk總空間大於4GB。而pagefile.sys單檔大小又不能超過4095MB,用GUI介面設定pagefile時也不能在同一個磁碟建立2個以上的pagefile.sys,若電腦內那些能自行建立暫存檔的程式,還不能把剩下的Ramdisk空間完全用掉,那麼從實體主記憶體要來的Ramdisk空間就形同浪費了。

所幸,Windows XP 32bit版可以在同一個磁碟建立2個以上的pagefile.sys,只是光靠GUI介面並不能指定這種配置方法,必須用regedit手動更改Windows register設定。

方法很簡單:

首先啟動regedit程式。找到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
這個路徑。

接著在這個路徑內尋找PagingFiles這個型態為REG_MULTI_SZ的變數。找到後,點2下打開編輯對話框,輸入:
Z:\pagefile_01.sys 4095 4095
Z:\pagefile_02.sys 4095 4095
Z:\pagefile_03.sys 4095 4095
按下Ok。

如果要改變各個pagefile.sys的最小值,請把每列的第1個4095改成你要的大小(以MB為單位);如果要改變最大值,則是把每列的第2個4095改成你要的大小(以MB為單位)。
要把8GB左右的Ramdisk空間幾乎用完,就得開2個pagefile.sys;要把12GB左右的Ramdisk空間幾乎用完,就得開3個pagefile.sys,以此類推。

重開機後,若是看到記憶體總空間多出來,而Ramdisk內也有2個以上的pagefile.sys,就代表設定成功了。

若是嫌麻煩的話,也可以自己匯出register設定檔:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"PagingFiles"=hex(7):5a,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\
  00,65,00,5f,00,30,00,31,00,2e,00,73,00,79,00,73,00,20,00,34,00,30,00,39,00,\
  35,00,20,00,34,00,30,00,39,00,35,00,00,00,5a,00,3a,00,5c,00,70,00,61,00,67,\
  00,65,00,66,00,69,00,6c,00,65,00,5f,00,30,00,32,00,2e,00,73,00,79,00,73,00,\
  20,00,34,00,30,00,39,00,35,00,20,00,34,00,30,00,39,00,35,00,00,00,5a,00,3a,\
  00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,00,65,00,5f,00,30,00,33,00,\
  2e,00,73,00,79,00,73,00,20,00,34,00,30,00,39,00,35,00,20,00,34,00,30,00,39,\
  00,35,00,00,00,00,00
往後要復原設定時,把register設定檔匯入,重開機便可生效。

[PyConTW 2013]懶人とPythonとAnimation Studio

下面是我在PyConTW 2013給talk的投影片內容:
懶人とPythonとAnimation Studio

本來是想說鍛練自己在大場面的演說能力,剛好看到PyConTW年會又要舉行了,於是就心血來潮,以工作上的經驗報個題目來試試,沒想到還真的得上台給talk XD

基本上相對於Django,AppEngine用很兇或是把Python Parser與VM玩弄於股掌之間的的高手而言,小弟還只是個小咖。如果這次talk有什麼不足之處,歡迎各方高手多給小弟建議 <(_ _)>

2013-01-25

[Tip]Gavotte Ramdisk在剛開機時尚未格式化

現在記憶體價格十分低廉,只要有點小錢,隨便就可以買到總和8GB、16GB上下的桌上型電腦記憶體,因此很多會自行組裝電腦的玩家都開始用大容量的記憶體來增進自己電腦的執行效能。而少部分因為軟硬體相容性而不得不安裝像是Windows XP 32bit這種非Server OS的電腦,一定會苦於Windows讀不到超過4GB的記憶體等定址範圍問題。不過,有使用Windows Server經驗的IT工作者們應該都知道,其實Windows在啟用PAE定址模式時,是可以定址最大64GB的記憶體空間的。Windows XP 32bit版只能定址4GB的記憶體,單純是因為微軟封印了XP的極限,想強迫那些需要用大記憶體又不想用64bit系統的客戶們,採購他們家的Windows Server產品系列,以做出明確的市場區隔。雖然也有少數沒寫好的驅動程式不能在PAE定址模式正常工作,但是這種情況並不多見。

也因為如此,堅守Windows XP 32bit版的老派們便尋找手段來釋放XP封印住的記憶體。而目前最多人採用的方案,就是使用那些可以透過PAE模式挪用超過4GB的記憶體的Ramdisk軟體,把XP封印住的記憶體模擬成超高速的磁碟空間。
接下來,看你要把pagefile還是cache放在這個磁碟空間都可以。

目前軟體費用最低(但是效能也最差)的Ramdisk,應該是網友Gavotte從Microsoft Ramdisk實作範例改寫而得的Gavotte Ramdisk。因為Gavotte Ramdisk完全免費使用,所以眾多買不起商業Ramdisk軟體的玩家便用這個Ramdisk來運用XP封印的記憶體。

不過最近筆者重灌電腦後卻碰到一個難題,那就是筆者自行安裝的Gavotte Ramdisk,在剛安裝好時看起來都一切正常,但是重開機後,Ramdisk卻沒有如期地清空,回復到已格式化成FAT32,只有一個TEMP目錄的淨空狀態,而是變成尚未格式化的狀態。起初以為是沒有使用Gavotte Ramdisk隨附的rdutil工具做一些額外設定的關係,但是後來試過了各種解決方法,剛開機的Ramdisk一樣是未格式化的狀態。

但是昨天筆者仔細研究了Gavotte Ramdisk安裝在Windows registry的參數後,發現竟然是因為一個簡單的原因,那就是Gavotte Ramdisk的service在開機期間根本沒啟動,所以虛擬出來的磁碟才會沒有回復到Ramdisk剛建立時的狀態。而沒有啟動的原因,就是因為下面這個參數:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RRamdisk]
"Start"=dword:00000002

在我的電腦裡面,當這個dword參數數值是00000000的時候,開機期間就不會啟動Gavotte Ramdisk;但是把這個dword參數數值改成00000002(也就是Automatic,在開機時自動啟動service)以後,下次重開機,Gavotte Ramdisk的service就會自動啟動,也就不會再發生虛擬出來的磁碟尚未格式化的問題了。

電腦問題往往都導因於超級白痴的錯誤,這句話可真是不假orz