Takor Blog

利用7-zip command line壓縮文件成zip格式

發表於 2010-02-23 11:27:52| 分類: 軟體工具

早期時,安裝Windows作業系統完畢後接下來第一個要安裝的Utility工具程式,多半是winzip或winrar,這兩個程式其實是shareware,用起來總是覺得有版權限制很不舒服。後來知道了 7-zip 這個免費的壓縮程式,自此安裝完作業系統的No.1 utility就改成7-zip了。利用7z.exe不但可以壓縮成比.zip格式還小的.7z檔案,也可以選擇各種已經成了公用財的傳統壓縮格式,例如ZIP、LZH等等。

最近在規劃一個電子書ePub的相關專案,由 IDPF 制定的公開規格.epub檔案,其實是個以ZIP格式壓縮的文件,若將取得的.epub副檔名改成.zip,就可以利用Windows內建的ZIP工具程式,或前述的7z.exe解壓縮觀看電子書的HTML原始碼內容。

反過來說,如果要將產生出來的檔案結構壓縮成.epub文件,就得要利用ZIP格式。在Windows NT/2000/XP/7 (不確定Vista是否有)這些作業系統的cmd指令環境中,都可以使用內建的zip命令,唯獨目前我家中網站主機的Windows Server 2003沒有這個zip命令,因此計畫利用7z.exe來替代zip。

研究了一下7z.exe的說明文件,使用命令列壓縮成ZIP格式的指令如下:

7z.exe a -tzip [target_archive_file] [source_files]

其中的a代表add,-tzip代表type指定為zip,有了這個參數,就能夠利用7z.exe命令列來壓縮ZIP格式文件了。

Ruby + MySQL + libmysql.dll

發表於 2009-12-03 18:20:00| 分類: Ruby On Rails

我目前所有的RubyOnRails專案,執行環境都是Win32平台的Ruby 1.8.6 + Rails 2.1.0這個穩定版本。由於甚少重新安裝環境,頂多在更換了作業系統Windows後,指定環境變數的PATH至Ruby/bin,所以經常會忘記基本的Ruby + MySQL安裝後,需要另外放置libmysql.dll這個MySQL的執行元件程式庫。

今日難得地重新Ruby 1.8.6之後,先利用gem install mysql安裝了MySQL-rubygem套件,然後將我慣用的XAMPP/mysql/bin目錄下的libmysql.dll複製至Ruby\bin目錄。結果應用程式竟然無法正確執行,遇到MySQL query就當。原先以為是我安裝時漏了什麼環節,又或者是MySQL-rubygem的版本不符所致,搞了很久,重新安裝了幾次,這才終於醒悟過來,原來XAMPP/mysql/bin/libmysql.dll這個程式庫不能直接拿來給Ruby使用。

還是得要連回 MySQL 網站去下載官方版本當中的libmysql.dll,這樣子才是個可執行的版本。為了避免忘記,這裡擺個備份的 libmysql.dll,下次如果需要用到的時候拿這個就行了。

要用 href="#" 或是 javascript:void(0)

發表於 2009-11-21 10:24:47| 分類: 網站開發

在AJAX盛行的時代,傳統的HTML anchor(連結)語法中,瀏覽新網頁的功能已經逐漸被攔截onclick的事件函數給取代。往往我們想要讓用戶點擊一個連結,或隱藏在圖片背後的連結,觸發一個javascript函數,此時,anchor的語法該寫成:(1) <a href="#" onclick="alert('hi');return false;"> 這樣,或是 (2) <a href="javascript:void(0)" onclick="alert('hi')">好呢?

事實上,兩者並沒有一定的答案,只是喜好問題。但根據 這篇討論二者優劣 的文章中各方意見,第一種方式可適用於瀏覽器關閉Javascript的情況,較之第二種方式來得通用。

無論如何,重點是要記得在onclick事件指定函數後方,加上 "return false;" 這樣的敘述,以確保這個點擊連結的事件不會繼續被觸發至網頁其他物件。

在Rails的 ActionView::Helpers::JavaScriptHelper 當中有個 link_to_function,使用後產生出來的HTML語法屬於第一種語法,由此可以佐證第一種方法應該更被技術人員接受。

ActiveRecord Oracle Enhanced Adapter UTF8 字串編碼

發表於 2009-06-16 10:47:29| 分類: Ruby On Rails

工作上需要在ROR存取Oracle資料庫,安裝了activerecord-oracle_enhanced-adapter這個GEM套件,但在存取中文資料時,始終無法正確寫入編碼,網頁上看到的資料都是???。檢查過log內容,的確依據網頁編碼設定取得UTF-8的中文回傳值,但在寫入Oracle時卻不被接受。

試過在environment.rb當中設定NLS_LANG,無效:

ENV['NLS_LANG'] = "AMERICAN_AMERICA.UTF8"

試過修改Oracle Instance Characterset(需要反覆建立DB),無效。

試過修改column datatype為NVARCHAR2,無效。

最後是參考 這個網頁 的說明,在啟動mongrel_rails之前,先設定環境變數NLS_LANG才解決這問題:

export NLS_LANG="AMERICAN_AMERICA.UTF8"

超好用的 CSV editor

發表於 2009-01-08 16:25:09

推薦 CSVed 這個免費的 CSV (逗點分隔檔案格式) 編輯器。

以下推薦幾個功能:
1. 頁籤 Modify -> Start Row -> Use as Column Caption 打勾以後,編輯某列資料,可以提示出現欄位名稱
2. Edit record的時候,可以類似 Access 一樣移動所在記錄位置
3. Column Search 方便選擇欄位搜尋
4. 儲存時,可以選擇分隔符號(不限制用逗點分隔)
5. 可以匯出成為 XML 格式,或是固定寬度格式,甚至 HTML, Excel, Word 都可以(大驚!)
6. 儲存時可以選擇儲存局部列或局部欄

Google Blogspot 會吃掉 BAR 字元

發表於 2008-10-11 15:20:57| 分類: 軟體工具

剛才在寫 ThereWeWere Blog 文章時,突然發現,原來 Google Blogspot 的編輯系統會把我們輸入的 "|" 字元給吃掉。不管前後有無空白,都會被系統自動取消。

最後只好輸入中文大寫字元的"∣"才成功。真怪!

Dynamic Subdomain 的設定

發表於 2008-09-16 22:31:38| 分類: 系統實務

一直以為要設定 subdomain 是個很困難的東西,是因為以前我使用多年 Windows 2000 Server 內附的 DNS Server 不支援。現在改用 Windows Server 2003 之後,內建的 DNS Server 只要在新增主機時,鍵入 * 後當作主機名稱,如此所有的 subdomain 解析都可以指向到主機 IP 去了。或者直接編輯 .dns 檔案,加入一行:

*  A 1.2.3.4

然後重新啟動服務就好了。

靠夭,竟然這麼簡單!

另外,除了 .tw 的網域名稱是我自己在管之外,其他在 name.com 花錢註冊的網域名稱我都是利用他附的 DNS management 工具在管理。name.com 的管理工具設定 DNS 也很簡單,也是在主機名稱欄位輸入 * 然後指定 IP 就好了。

靠夭,竟然還是這麼簡單!

在 ActiveRecord 上使用複合鍵存取傳統資料庫

發表於 2008-06-10 11:46:56| 分類: Ruby On Rails

因為工作上需要存取 oracle 資料庫,但表格內沒有 id 這個標準 ActiveRecord 要求的主鍵欄,找了許多的解決方案,目前採用的是 composite_primary_keys.gem 這個套件。

下載並安裝 gem 後,於 environment.rb 加入:

require 'composite_primary_keys'

於 Model 內下達:

set_primary_keys :key1, :key2
取代原有的
set_primary_key :key

同樣,如果根據複合鍵建立關連,可以參考以下的範例:

set_primary_keys :user_id, :group_id
class Membership < ActiveRecord::Base
  # set_primary_keys *keys - turns on composite key functionality
  belongs_to :user
  belongs_to :group
  has_many :statuses, :class_name => 'MembershipStatus', :foreign_key => [:user_id, :group_id]
end

在 IBM AIX 上安裝 RubyOnRails

發表於 2008-06-09 15:20:14| 分類: Ruby On Rails

安裝 Ruby

安裝編譯所需套件

請先確定作業系統內有gcc (GNU Compiler Collection) 編譯套件,或由 http://www-03.ibm.com/systems/p/os/aix/linux/toolbox/download.html 網頁下載所需套件:
- gcc-4.2.0-3.aix5.3.ppc.rpm
- libgcc-4.2.0-3.aix5.3.ppc.rpm
- zlib-1.2.3-4.aix5.2.ppc.rpm
- zlib-devel-1.2.3-4.aix5.2.ppc.rpm
- readline-4.3-2.aix5.1.ppc.rpm

安裝RPM套件


rpm –i gcc-4.2.0-3.aix5.3.ppc.rpm
rpm –i libgcc-4.2.0-3.aix5.3.ppc.rpm
rpm –i zlib-1.2.3-4.aix5.2.ppc.rpm
rpm –i zlib-devel-1.2.3-4.aix5.2.ppc.rpm
rpm –i readline-4.3-2.aix5.1.ppc.rpm

下載Ruby


Ruby 官方網站 下載Ruby 1.8.7或最新版本的 ruby tar.gz 檔案

安裝Ruby


下載取得的ruby-1.8.7-tar.gz,依照下列步驟安裝:
gunzip ruby-1.8.7.tar.gz
tar –xvf ruby-1.8.7.tar
cd ruby-1.8.7
configure -–prefix=/usr/local/ruby --disable-ipv6
make
make install

安裝完成後,可以在 /usr/local/ruby 目錄內得到 Ruby 的執行檔案。

參考資訊: http://homepage.mac.com/cjgibbons/rubyonaixhowto/x72.html

修改環境變數


編輯個人目錄的 .profile 檔案,加入下列:
export PATH=$PATH:/usr/local/ruby/bin

這個環境變數將在下次登入後生效,或者也可以在 console 直接敲入上述指令執行。

安裝Rubygems


Rubygems 是 Ruby 的一些套件管理程式,需要先從 http://rubyforge.org/projects/rubygems/ 下載最新的 rubygems 套件 (rubygems-1.1.1.tgz),然後依照下列說明安裝。

gunzip rubygems-1.1.1.tgz
tar –xvf rubygems-1.1.1.tar
cd rubygems-1.1.1
ruby setup.rb

安裝完成後,在 /usr/local/ruby/bin 目錄內可以看到 gem 執行程式。


安裝zlib


確定作業系統已經安裝妥 zlib 與 zlib-devel 的 rpm 套件,執行下列步驟:
cd ruby-1.8.7/ext/zlib
ruby extconf.rb
make
make install

檢查zlib安裝成功與否


執行下列指令:
ruby –e "puts(require('zlib'))"

若取得傳回值true代表安裝完成,若有錯誤訊息代表安裝未完成。

安裝 RubyOnRails

Rake


- http://rubyforge.org/projects/rake/
gem install rake-0.8.1.gem

ActiveSupport


- http://rubyforge.org/frs/?group_id=570&release_id=22578
gem install activesupport-2.1.0.gem

ActionPack


- http://rubyforge.org/projects/actionpack/
gem install actionpack-2.1.0.gem

ActionMailer


- http://rubyforge.org/projects/actionmailer/
gem install actionpack-2.1.0.gem

ActiveRecord


- http://rubyforge.org/projects/activerecord/
gem install activerecord-2.1.0.gem

Rails 2.1.0


- http://rubyforge.org/frs/?group_id=307
gem install rails-2.1.0.gem

安裝 Rails 時,會檢查必要套件的相依性,上述的Rake、ActiveSupport、ActionPack、ActionMailer、ActiveRecord的gem可先不安裝,與rails-2.1.0.gem檔案放置於同一個目錄,俟安裝rails時會一併安裝必要的套件。

與 Oracle 連結


下列兩個套件,是我目前用來和 oracle 溝通的 adapter,試用後相容性良好,安裝也很方便。

ActiveRecord-oracle_enhanced


- http://rubyforge.org/frs/?group_id=6212&release_id=22063
gem install activerecord-oracle_enhanced-adapter-1.1.0.gem

ruby-oci8


- http://ruby-oci8.rubyforge.org/en/
從http://rubyforge.org/frs/?group_id=256下載最新穩定版本的檔案。
解壓縮後,進入目錄執行:
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install

Solaris 上安裝 Ruby (一)

發表於 2008-05-26 11:55:46| 分類: Ruby On Rails

先準備環境,安裝幾個預設安裝時沒有納入的套件。到 http://www.sunfreeware.com 依據右側 Solaris 作業系統版本,下載要安裝的套件:

- gzip (gzip-1.3.12-sol10-x86-local)
- make (make-3.81-sol10-x86-local.gz)
- gcc (gcc-3.4.6-sol10-x86-local.gz)

安裝 gzip 只是為了日後方便,如果沒有安裝 gzip,也可以利用視窗右鍵點擊 .gz 檔案選擇 "Extract Here" 解壓縮,取得 xxxx-local 檔案。

安裝的指令是:

pkgadd -d xxxx-local

  #1