2009年3月9日 星期一

Ruby 1.9.1 & Rails 2.3 on Debian 安裝筆記

安裝 ruby 1.9.1
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz
tar xvf ruby-1.9.1-p0.tar.gz
cd ruby-1.9.1-p0
./configure

失敗
C compiler cannot create executables


安裝 libc6-dev
apt-get install libc6-dev

重作-安裝 ruby
./configure

失敗
make: command not found

安裝 make
apt-get install make

重作-安裝 ruby
./configure
make
make insatll

ruby -v
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]

完成安裝 ruby

安裝 rake rack
gem install rake rack

失敗
/usr/local/lib/ruby/1.9.1/rubygems/package.rb:10:in `require': no such file to load -- zlib (LoadError)


安裝 zlib ruby adaptor
cd ruby-1.9.1-p0
cd ext
cd zlib
ruby extconf.rb

失敗
checking for deflateReset() in -lz... no

checking for deflateReset() in -llibz... no
checking for deflateReset() in -lzlib... no
*** extconf.rb failed ***

安裝 zlib1g-dev
apt-get install zlib1g-dev

重作-安裝 zlib ruby adaptor
ruby extconf.rb
make
make install

重作-安裝 rake rack
gem install rake rack

安裝 rails 2.3.1
gem install rails --source http://gems.rubyonrails.org

gem list

*** LOCAL GEMS ***

actionmailer (2.3.1)
actionpack (2.3.1)
activerecord (2.3.1)
activeresource (2.3.1)
activesupport (2.3.1)
rack (0.9.1)
rails (2.3.1)
rake (0.8.4)

完成安裝 rails


建新網站
rails blog -d mysql
cd blog
啟動
./script/server

失敗 /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.1/lib/initializer.rb:269:in `rescue in require_frameworks': no such file to load -- openssl (RuntimeError)

安裝 openssl ruby adaptor
cd ruby-1.9.1-p0
cd ext
cd openssl
ruby extconf.rb

失敗
=== OpenSSL for Ruby configurator ===

=== Checking for system dependent stuff... ===
checking for t_open() in -lnsl... no

checking for socket() in -lsocket... no
checking for assert.h... yes

=== Checking for required stuff... ===

checking for openssl/ssl.h... no

=== Checking for required stuff failed. ===

Makefile wasn't created. Fix the errors above.


安裝 libssl-dev
apt-get install libssl-dev

重作-安裝 openssl ruby adaptor
ruby extconf.rb
make
make install

重新啟動網站
./script/server

網頁ok
http://localhost:30000/

About your aplication's environment

Internal Server Error undefined method `each' for # WEBrick/1.3.1 (Ruby/1.9.1/2009-01-30) at localhost:3000

console 顯示
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. /!\ FAILSAFE /!\ 2009-03-09 10:27:58 -0700 Status: 500 Internal Server Error no such file to load -- mysql

安裝 mysql ruby adaptor
wget http://tmtm.org/downloads/mysql/ruby/mysql-ruby-2.8.1.tar.gz
tar xvf mysql-ruby-2.8.1.tar.gz
cd mysql-ruby-2.8.1
ruby extconf.rb

失敗 checking for mysql_query() in -lmysqlclient... no *** extconf.rb failed ***

安裝 libmysql++-dev
apt-get install libmysql++-dev

重新安裝 mysql ruby adaptor
ruby extconf.rb
make
make install

重新啟動網站
./script/server

Status: 500 Internal Server Error Access denied for user 'root'@'localhost' (using password: NO)
ok~正常,這是 database.yml 沒設定的關係
改好後重啟網站
./script/server


完工^^;

2009年3月4日 星期三

MCU在ICE上開發與實際CHIP的差異

很多狀況會導致ICE開發時的結果正確,但是燒錄出來的實體CHIP卻有不同的結果…
底下記錄實際發生過的經驗:

一、使用內RC開發計時功能,燒錄出來卻發生時差誤差很大:
  大部份的MCU都己經有提供內RC的功能,但若ICE設計的有問題,或開發時的環境不同,年久失準…等等問題,就會有ICE內頻不準的狀況,而實際CHIP由於是相對比較量產的東西,所以實際的CHIP反而是應該要比較準確。
  系統開發的時間若是忽略這個問題,反而自作聰明的加入校正值的話,就會導致這個問題。

二、ICE由於可以模擬多種型號的CHIP,因此在設計時必定使用了比較大的RAM容量來當作CODE及MEMORY的記憶體,若是編譯器不良無法針對不同型號作檢查,那就有可能出現STACK OV的問題而在ICE模擬時卻不自知。一般都會正確檢查CODE的大小是否超過ROM的大小,但不一定都會檢查RAM的問題。

三、同樣上述的原因,不同的CHIP可能會對不同的指令集有不同程度的支援,若是編譯器無法適時檢查出這種錯誤,也會讓你DEBUG沒完沒了。

四、AD轉換模組需要使用參考電壓,有的是外部參考電壓,但也有用內部參考電壓的,這時就要考量ICE的電壓要怎麼能跟實際主板電壓一樣,或怎加入校正程序。

2009年3月3日 星期二

GMAIL建立標籤及篩選器的方法

GMAIL的標籤及篩選器搭配使用的方法…
一、點「設定」


二、點選標籤,建立一個新的標籤


三、點選篩選器,建立新的篩選器



四、在過瀘項目上填寫上條件
例如:
mary」、「peter@yahoo.com.tw」、「小明」…
亦可使用萬用字元「*」及「|」(或)來連結多個條件,例如:
mary|peter|*@mycompany.com

填好條件可以先按下「測試搜尋」來測試一下對不對,再進行下一步。




五、最後指定符合這個篩選條件的郵件要作何處理,這邊是幫它加上之前建好的標籤,記得勾選「同時套用到…」把以前的郵件也套用上這個篩選器,如此一來你的郵件就可以自動分好類了,。



六、你還可以把不同的標籤設定成不同的顏色。

GMAIL如何發信給一個群組

一、進入GMAIL通訊錄:


二、勾選你要群組在一起的聯絡人:


三、為這個群組命名,注意,開頭第一個字請不要使用中文,有些中文沒辦法達到自動群發的效果,可以使用符號,譬如「+同事」:



四、這樣以後撰寫郵件時,只要在收件人那邊打上第一個字,就會跳出群組名單讓你挑選了,非常方便:

2009年3月1日 星期日

更高效處理 micro second 的方式

更高效處理 micro second 的方式…  以 STM32 為例… __IO unsigned long sys_tick = 0; void SysTick_Handler(void) {     HAL_IncTick();     sys_tick += (SysTi...