sIFR and Fonts

0

目前採用的 browntype 是有加上 sIFR 的功能,利用 flash 讓標題更為明顯。

只是 sIFR 在中文上有先天的不方便,不容易包出小的字形檔。這類架構主要是利用 sifr.js 來操作 tradegothic.swf 這類字形檔。

sIFR FontsMack 可以找到部分新字型。

$ cd themes/browntype/images/
$ wget http://www.fontsmack.com/fonts/agent_orange/AGENT_ORANGE_fulllatin.swf
$ mv tradegothic.swf tradegothic.swf.bak
$ cp AGENT_ORANGE_fulllatin.swf tradegothic.swf
$ mv tradegothic.swf.bak tradegothic.swf

最後還是改回來,一是風格不合,一是這個 swf 會被 browser 暫存住,最好的方式應該是放到 theme 中。

typo 4 and screenshot swf file

0

烤乾

之前網站中大量採用 wink 來建立 screencast 的 swf 檔案,建立過程中 wink 也會自動附有一個 HTML 檔,貪圖方便之下,往往只是上傳這兩個檔案後加個連結而已,但是這樣長久下來, swf 檔案會越來越多,HTML 檔也增加,所以新的考量是如何 DRY 掉這些內容幾乎都是重複的 HTML 檔,改由單一樣板控制 ?

基本動作

1 . config/routes.rb

typo 沒有 default route 如 :controller/:action/:id ,另一個問題是最後設了個星號的 route,所以必須放在這個之上,下面採用 /showswf/name/width/height 的方式。

map.connect 'showswf/:name/:width/:height', :controller => 'showswf', :action=>'view'
map.connect '*from', :controller => 'redirect', :action => 'redirect'

2. app/controllers/showswf_controller.rb

class ShowswfController < ActionController::Base
  def view
  end
end

3. app/views/showswf/view.rhtml

<OBJECT CLASSID="clsid:xxxxxx" 
  WIDTH="<%= params[:width] %>" HEIGHT="<%= params[:height] %>" 
  CODEBASE="http://xxxx">
<PARAM NAME=movie VALUE="/files/<%= params[:name] %>.swf">
<PARAM NAME=play VALUE=true>
<PARAM NAME=loop VALUE=false>
<PARAM NAME=quality VALUE=low>
<EMBED SRC="/files/<%= params[:name] %>.swf" 
  WIDTH=<%= params[:width] %> HEIGHT=<%= params[:height] %> quality=low loop=false 
  TYPE="application/x-shockwave-flash" 
  PLUGINSPAGE="http://xxxxx">
</EMBED>
</OBJECT>

Update 2006-0907: 新增 HTML title 參數,因為這個字串對於看清楚 google analytics 報表很有用。

4. upload a resource

測試/showswf/radrails070_A1/980/622

待考量

新增一個 controller 來秀出已上傳 swf 資源,不知是否會在 typo 升級管理上出現問題 ?

Update 0817

新的 controller 會出錯,原因不明 ? 突然變成由 /usr/bin/ruby1.8 dispatch.fcgi 接手,而不是內建的 ruby dispatch.fcgi ?? 該問題也容易發生在中文亂碼上。解決方式變成必須把所有的 fcgi 程序都刪除。

typo 4 and upload

0

1. 上傳檔案的位置在 /files/YOUR_FILE_NAME,資料庫存放的只有連結而非檔案本身。

mysql> show columns from resources;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| size            | int(11)      | YES  |     | NULL    |                |
| filename        | varchar(255) | YES  |     | NULL    |                |
| mime            | varchar(255) | YES  |     | NULL    |                |
| created_at      | datetime     | YES  |     | NULL    |                |
| updated_at      | datetime     | YES  |     | NULL    |                |
| article_id      | int(11)      | YES  |     | NULL    |                |
| itunes_metadata | tinyint(1)   | YES  |     | NULL    |                |
| itunes_author   | varchar(255) | YES  |     | NULL    |                |
| itunes_subtitle | varchar(255) | YES  |     | NULL    |                |
| itunes_duration | int(11)      | YES  |     | NULL    |                |
| itunes_summary  | text         | YES  |     | NULL    |                |
| itunes_keywords | varchar(255) | YES  |     | NULL    |                |
| itunes_category | varchar(255) | YES  |     | NULL    |                |
| itunes_explicit | tinyint(1)   | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

2. 上傳檔案可以定義 ContentType

typo 4 and themes

0

初安裝有兩個佈景可用,一般來說是不太夠用,需要新增的話可以到 Theme Catalog 參觀看看,下面舉 BrownType 為例,連結中可以看到兩種版本,這裡當然用 4.0 版本。

1.download and install

$ cd themes
$ ls
azure  scribbish
$ wget http://proofread.digital-achievement.com/downloads/4.0.0/browntype.tgz
$ tar zxvf browntype.tgz

2.管理介面啟用

http://foo/admin/themes

NEXT: Origami theme

typo 4 install and UTF8

0

安裝在共用環境的一些經驗與紀錄。

1. 共用 gem/ruby 環境會產生版本不同的議題,這裡採用 typo@Dreamhost 作法,將 ruby/gem 安裝到個人目錄 $HOME 下。

2. 新的安裝雖然提供 typo install,但是一來文件不多,不知要改哪些設定檔,索性直接裝上去。預設裝的 sqlite 的版本,裝完會自行啟動,需要手動關掉。

$gem install typo --include-dependencies
$gem list | grep typo
typo (4.0.2)
$ typo install /path/blog.extremepattern.com

3. 安裝後沒看到 .htaccess SVN 來源複製該檔案,沒有這個檔,共用環境的 Apache 會直接秀出檔案列表,而不是交給 dispatch.fcgi 處理。另外注意

另一個常見導致 500 error 狀態的問題需要修改 dispatch.fcgi 檔。

#!/usr/bin/env ruby
#
require File.dirname(__FILE__) + "/../config/environment" 
require 'fcgi_handler'
class RailsFCGIHandler
 private
    def frao_handler(signal)
      dispatcher_log :info, "asked to terminate immediately" 
      dispatcher_log :info, "frao handler working its magic!" 
      restart_handler(signal)
    end
    alias_method :exit_now_handler, :frao_handler
end

RailsFCGIHandler.process!

Update 0817

刪除該段 500 error 碼,觀察看看。

4. 登入 mysql 設定預設編碼。
ALTER DATABASE DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
5. 修改 database.yml 加入 encoding
login: &login
  adapter: mysql
  host: mysql.xxxx.com
  username: foo
  password: 1234
  encoding: utf8
......

6. 修改 environment.rb 啟動產品狀態。

ENV['RAILS_ENV'] = 'production'

7. 設定資料庫表格結構。

rake migrate RAILS_ENV=production

8. 確認 UTF8 是用另一種軟體確認,用 phpMyAdmin 來確認編碼正確。

[UPDATE] 用一天之後發生奇怪的亂碼行為,用 phpMyAdmin 檢視沒有問題,代表非 MySQL 端問題,似乎是變成共用 ruby 環境導致,登入檢視 ps aux 發現只有 /usr/bin/ruby1.8 dispatch.fcgi 運行,而非 ruby dispatch.fcgi,最後將所有程序刪除後才恢復正常的 ruby dispatch.fcgi 出現。

出現亂碼時可以新增一筆資料進資料庫,秀出來居然也是正常,只是進 phpMyAdmin (UTF8) 看該筆資料卻是亂碼,可見 Coon. 的 encoding 當時應該是 latin1 如下情形。

Server characterset:    latin1
Db     characterset:    utf8
Client characterset:    latin1
Conn.  characterset:    latin1
TCP port:               3306

Older posts: 1 2 3