Using Ramdisk on Windows Vista

過年時閒來無聊,便在我的 VAIO S56 上面裝 Vista Ultimate 試用版,裝完後效能評估得到的分數如下:

Vista 效能評估

Aero 特效雖然跑起來只有 2.3 分,但是實際上 Aero 特效啟動後也並不會感覺很慢,相反的我似乎覺得比 XP 還來得快了一點點??
也許是 VAIO 原版的 XP 內建一大堆有的沒的軟體。其實 S56 買來一年了,那些內建的軟體也只有剛買來時點開來玩玩,所以沒裝也沒什麼差。
試用了近一個月,常用的除了一些特定軟體因相容性的問題無法使用之外,整體來說還不錯,於是也想正式升級為正版軟體。

為了讓整體效能跑起來更順一些,我也將系統記憶體一次升級到 2G 滿檔,雖然使用起來沒什麼特別感覺,但是心理層級的爽度卻是大大的加分。
上禮拜在 Yahoo 買下了 Vista 的 Home Premium 版,拿到貨之後便迫不及待裝上去並且啟用成功,使用正版軟體跟之前裝好 XP 後還要到處找破解的那種心情真是差太多了,雖然正版軟體還真是不便宜。

不過今天這篇主要不是來聊安裝 Vista 後的爽度,主要是要來記錄一下怎麼在 Vista 上面安裝 Ramdisk 的軟體。
Ramdisk 的類似軟體很多,以前用 XP 時,常使用 Gavotte Ramdisk 這套軟體,主要是因為這套免費,沒有使用容量上的限制,用起來又很穩定,所以拿來當 IE / Firefox 的暫存目錄碟是最佳不過。

不過在 Vista 上面安裝時直接按下 Install Ramdisk,卻會發生 Fail 的訊息。

Install Failed!

研讀了一下 Gavotte Ramdisk 的 Readme 後才發現,原來其實 Gavotte 在撰寫這套軟體時,並沒有撰寫 ramdisk.exe 這個安裝的 GUI 介面,而是必須靠手動方式在 Registry 中設定相關的參數,Registry 的路徑如下

[HKEY_LOCAL_MACHINE\SYSYEM\CurrentControlSet\Services\RRamdisk\Parameters]

稍微看了一下裡面的參數設定,其中

Regidtry Parameters

DiskSizeM 是指定 Ramdisk 的磁碟大小,以 MB 計算,也可以使用 DiskSizeK 來以 KB 為計算單位,其中 DiskSizeK 設定為優先。
DriveLetter 是指定 Ramdisk 使用的磁碟機代號。
MediaType 則是指定磁碟機的類型,預設為 2 (Fixed Media)。

於是便開始手動安裝 Gavotte Ramdisk 了

Step 1. 安裝 Gavotte Ramdisk Driver.

開啟裝置管理員,選擇 執行–>新增傳統硬體,再選擇 安裝我從清單中手動選取硬體(進階選項) –> 顯示所有裝置 –> 從磁片安裝,然後瀏覽至 Gavotte Ramdisk 解開目錄中的 RRAMDISK.INF


最後按下開啟舊檔 –> 確定,接下來便看到硬碟一陣狂轉,然後在裝置管理員便多了一項裝置

Step 2. 修改 Registry 參數

打開 Regedit,並瀏覽至 [HKEY_LOCAL_MACHINE\SYSYEM\CurrentControlSet\Services\RRamdisk\Parameters]

雙擊 DiskSizeM 參數,修改磁碟大小為 512M
如果要改磁碟機代號,就必須一道修改 DriveLetter 參數
改完後重新開機

Step 3. 修改 IE 或 Firefox 的暫存目錄路徑

IE 修改方式很簡單,從 網際網路選項 中按照下圖修改後重新登入即可

Firefox 修改路徑比較麻煩,從網址列打入 about:config,然後在篩選器中輸入 browser.cache.disk.parent_directory
如果沒找到,就自行新增一個字串設定,內容就是完整的目錄路徑即可,設定完畢後重新開啟 Firefox 即可生效

製作 GIF 動畫

最近發現一個很有趣的軟體-GIF Movie Gear, 可以為你將多張圖檔快速製作為 GIF 動畫。

方法再簡單不過

1.選擇 Insert Frames
2.選入多張圖檔,支援檔案格式很多,ex: GIF, JPEG, AVI, ANI, ICO, PNG, BMP, PSD
3.調整一下每張圖中間的延遲時間 (計數單位是 1/100 sec)
4.存檔完成!!

下面是在某家美式燒烤店用 5D 連拍倒奶精的過程, 很有趣!!

CoffeeMate

下載位址..
Download GIF Movie Gear 4.1.2

Portable Applications

最近金管會來公司做稽核檢查,除了被要求所有 ISO 文件該補的都得補齊之外,任何無版權的軟體也得一律從電腦中刪除。
為此公司的稽核人員還自己特別用 VB 寫了一個小軟體,在電腦上執行就可以掃出所有已安裝的非法軟體,幾乎讓我們只得乖乖的將不該有的軟體通通移除。

不過呢,上有政策下有對策。這套軟體後來被發現似乎是根據 Registry 來掃瞄,只要 Registry 中找不到,它就掃不出來了。
所以大家就紛紛開始改用綠色軟體,也就是所謂的 Portable Applications。Portable Applications 的特色是無須安裝即可執行,
可裝載在任何隨身裝置上(例如 USB Flash),啟動即可執行。因為沒有做安裝的動作,自然那個掃瞄小軟體也無法偵測到。
而程式結束後,作業系統中也不會留下任何的資料。

PortableApps.com 首頁上開宗明義寫著

A portable app is a computer program that you can carry around with you on a portable device and use on any Windows computer.
When your USB flash drive, portable hard drive, iPod or other portable device is plugged in,
you have access to your software and personal data just as you would on your own PC.
And when you unplug, none of your personal data is left behind.

進去逛逛之後才發現,原來這網站蒐集的軟體還真多,而且大部分都是 GNU 軟體,大從 Open Office 系列,小到聊天軟體皆一應俱全。
其中引起我注意的就是 Miranda 與 Gaim 這兩個聊天軟體。首先試著執行了 Miranda,看起來已經將大部分的聊天系統都涵括進來,
不過有個讓我詬病的小缺點就是,聯絡人清單中並沒有依據 MSN 原來的群組來分組,這讓我上百人的清單看起來顯得非常凌亂,想要發個訊息,
還得認真的從凌亂清單中仔細的找才能找到,這令人有點頭痛。再換了 Gaim 來玩玩,其實與 Miranda 功能大同小異,網路選項中也支援 Socks5,
重點是聯絡人清單也有依據原來 MSN 分類的群組來分組,不過不知道有沒有支援表情符號。待我試用後再上來報告。

台鐵自動訂票程式

一個將程式應用在生活上的好例子,利用標準 HTTP 協定來達成台鐵自動訂票的需求!!
記得以前也寫過類似的程式,去 CNN 網站狂投公投綁大選的反對票,呵呵!!
已經很久沒坐火車了,這個程式雖然沒有 GUI 介面,不過應該不難使用,推薦給大家使用!!

原文刊載處

—————————————————————-

研究了一下台鐵訂票的html, 裡面用到一個JavaScript檔

不過是用*.js的方式與html分開, 有興趣的人可以另存網頁

再打開來研究裡面的語法…

不過就我個人使用而言, 直接指定車次去訂票比較符合我的需求

所以我修改了Yoshi兄的code,並且做了一些精簡,

另外,把訂票需要的資訊(身分證字號,起站代碼,到站代碼…)與程式分開

寫在文字檔中, 當需要訂不同的票時只要修改此文字檔, 不需重新compile

第一次post程式 請指教

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import java.net.*;
import java.io.*;
 
public class OrderTicket {
  private static String url="http://railway.hinet.net/trw/ctno11.jsp?";
  public static void add(String attribute, String value) {
    if(url.endsWith("&") || url.endsWith("?")) {
      url+= attribute + "=" + value;
    }
    else {
      url+= "&" + attribute + "=" + value;
    }
  }
  public static void order() throws IOException {
    URL website = new URL(url);
    int count=1;
    while(true) {
      System.out.println("開始第" + count + "次嚐試訂票...");
      count++;
      URLConnection connection = website.openConnection();
      BufferedReader in = new BufferedReader(
                new InputStreamReader(connection.getInputStream()));
       String line=null;
       String content="";
       
       
       while( (line=in.readLine())!=null) {
         content+=line;
         System.out.print(".");
       }
       in.close();
       if(content.indexOf("您的車票已訂到")!=-1) {
         BufferedWriter bw = new BufferedWriter(new FileWriter("result.html"));
         bw.write(content);
         bw.close();
         System.out.println("票己成功訂到,請讀取result.html檔。");
         System.exit(0);
       }
 
       else {
         System.out.println("票尚未訂到,一分鐘之後將會再次嚐試...");
         try {
           Thread.sleep(6000); //sleep 1 minute, and try it again later.
           }catch(InterruptedException e) {
             e.printStackTrace();
           }
         }
 
      }//end while
    }
    public static void main(String[] args)  throws Exception{
 
            if (args.length != 1)
            {
                 // Print message, pause, then exit
                 System.err.println ("Invalid command parameters");
                 System.in.read();
                 System.exit(0);
            }
      BufferedReader filein = new BufferedReader(new FileReader(args[0] ));
      //BufferedReader filein = new BufferedReader(new FileReader("data.txt"));
      int i=0;
      String[] value = new String[10];
      String[] attribute = {"personId",//身分證字號
                  "fromStation",//_站代碼
                  "toStation",//到站代碼
                  "getinDate",//乘車日期
                  "orderQty",//訂票張數
                  "trainNo",//車次代碼
                  "returnTicket"//是否訂來回票
                  };
      while ((value[i] = filein.readLine()) != null) {
        add(attribute[i],value[i] );
        i++;
      }
      
      System.out.println(url);
      /*
      try {
        order();
      }
      catch(IOException e) {
        System.out.println("連線失敗,請檢查你的網路連線。");
      }
      */
      
    }
}
 

編譯完 需要另外新增一個文字檔案儲存訂票資訊

執行時的第一個參數為此文字檔案檔名