2010年11月7日 星期日

ubuntu下解壓的rar文件註釋無效的編碼 | NOP

ubuntu默認是無法解壓縮rar格式的文件,需要安裝其他軟件。
如果你安裝的是rar,就是在終端中輸入 sudo apt-get install rar 安裝後,
解壓部分rar文件會遇到「無效的編碼「這一問題,原因在於該rar文件中的編碼與ubuntu的不同。

解決辦法很簡單,卸載掉當前系統中的rar 軟件,
在終端中輸入sudo apt-get remove rar

卸載掉rar後,安裝p7zip-rar就可解決。如何安裝?

在終端中輸入 sudo apt-get install p7zip-rar 即可安裝。

再解壓文件就不會遇到無效的編碼這一問題。

ubuntu下解壓的rar文件註釋無效的編碼

2010年8月25日 星期三

富model,瘦controller

富model,瘦controller - 李驥平

很久以前看過的一篇文章。挺簡單,不過這種思想很重要。簡單的複述,也不能完全算翻譯。
----先看這麼一段rhtml代碼:渲染模板中加入了這麼多的邏輯,看起來不倫不類,這麼做行是行,但是缺點很多,新手一般有這個毛病。那麼這樣做,首先是可讀性很差,因為在渲染代碼中最好都是貼近HTML代碼,而這堆代碼裡把C的內容也加進來了。
<% people = Person.find( :conditions => ["added_at > ? and deleted = ?", Time.now.utc, false],
:order => "last_name, first_name") %>
<% people.reject { |p| p.address.nil? }.each do |person| %>
">

<%= person.last_name %>, <%= person.first_name %>


<%= (Date.today - person.birthdate) / 365 %>


<% end %>
再看看controller和model裡的東西:
# app/controllers/people_controller.rb
class PeopleController <>
空蕩蕩的controller,而在model裡僅僅有一句關係聲明。這麼組合成的MVC顯得很彆扭,似乎就是一層渲染模板。幾乎把C與M都忽略了。

無論如何這在MVC框架裡是糟糕透頂的現象,MVC經過這麼多年的實踐考驗,它的優點在於「可讀性強」「可維護性好」「模塊化」「關注 點的分離」等等,我想你用MVC框架也就是想實現這些優點哇?那麼首先需要改進的是儘可能的將邏輯內容搬到controller中,controller 的作用就是介於view和model之間,起到一個類似中介的作用。下面來看下這樣改動之後的代碼:

<% @people.each do |person| %>
">

<%= person.last_name %>, <%= person.first_name %>


<%= (Date.today - person.birthdate) / 365 %>


<% end %>
# app/controllers/people_controller.rb
class PeopleController < people =" Person.find(" conditions =""> ["added_at > ? and deleted = ?", Time.now.utc, false],
:order => "last_name, first_name")
@people = @people.reject { |p| p.address.nil? }
end
end
這樣看起來就好多了,模板中的代碼更像是HTML的結構,而且你粗略的看一下controller裡的代碼就能知道在這個action渲染的模板中會顯示什麼數據。
還可以更進一步做的事情就是將現在模板代碼中關於一部分數據的處理挪到Model中來:
# app/models/person.rb
class Person <>

<% @people.each do |person| %>
">
<%= person.name %>
<%= person.age %>

<% end %>
這樣通過在model中添加幾個虛擬屬性,在view裡調用,顯得很合理,而且模板代碼更簡潔明了了。
下一步就是將controller裡的代碼理一理。因為controller只能算是個中介,不應該參與很多的邏輯處理。
# app/models/person.rb
class Person < people =" find(" conditions =""> ["added_at > ? and deleted = ?", Time.now.utc, false],
:order => "last_name, first_name")
people.reject { |p| p.address.nil? }
end

# ...
end

# app/controllers/people_controller.rb
class PeopleController < people =" Person.find_recent">
現在看index這個action,掃一眼就知道它要干嗎。而且如果find_recent方法在以後需要改變時,可以直接在model裡進行修改。
--總結一下,儘量使得controller的actions中的代碼和view中的代碼更少,在action中要是能只寫一行達到效果最好。在view中要儘量使代碼貼近html結構。
還有一個不太明顯的好處就是,瘦action可以使得 respond_to 結構更突出,可以看出輸出的類型是什麼。
class PeopleController < people =" Person.find_recent" xml =""> @people.to_xml(:root => "people") }
format.rss { render :action => "index.rxml" }
end
end
end


2010年6月1日 星期二

rails2.3 routes 新語法

rails2.3 routes筆記 - 逆水行舟

參考鏈接:http://guides.rubyonrails.org/routing.html

多个简单的RESTful的路由可以这样定义:
Ruby代码
收藏代码

map.resources :photos, :books, :videos


以上代码相当于:
Ruby代码
收藏代码

map.resources :photos
map.resources :books
map.resources :videos



单数形式的Resource:
map.resource将生成6个路由规则,与复数形式的resources所不同的是,复数形式多了一个index的action对应的规则,单数形式不需要index,只需要一个show即可。生成的url稍微有所不同,不过和复数形式的resources一样,这些url不用记,有规律,很容易想到该怎么写。

可以通过:controller选项修改RESTful路由默认的controller,比如:
Ruby代码
收藏代码

map.resources :photos, :controller => "images"


本来pohtos的controller是PhotosController,这里变成了ImagesController。

=begin
guides中有这么个用法:
引用
You can also specify a controller namespace with the :namespace option instead of a path:
Ruby代码
收藏代码

map.resources :adminphotos, :namespace => "admin", :controller => "photos"


This can be especially useful when combined with with_options to map multiple namespaced routes together:
Ruby代码
收藏代码

map.with_options(:namespace => "admin") do |admin|
admin.resources :photos, :videos
end


That would give you routing for admin/photos and admin/videos controllers.

可我试了,好像并不是这么回事。
我仿着写了一段:
Ruby代码
收藏代码

map.with_options(:namespace=>'admin') do |admin|
admin.resources :books, :box
end


可我访问/admin/books时Rails却报告No route matches。再试了一下访问/books,却有结果了,结果是:NameError in AdminbooksController#index ——它在原来的BooksController前边加了一个Admin并且把B小写了……
翻了Rails的api也没见着这个:namespace的用法,实在搞不明白。
=end

:singular选项

如果rails不认识某个单词的单数形式,可以通过:singular来设置:
比如有如下routes代码:
Ruby代码
收藏代码

map.resources :teeth


这时候如果在页面上或者Controller里使用tooth_url,Rails会不认识这个tooth——teeth的单数形式,这种情况下就可以加上:singular => "tooth":
Ruby代码
收藏代码

map.resources :teeth, :singular => "tooth"



:as选项
用于修改路由能够识别的url,例如有如下routes代码:
Ruby代码
收藏代码

map.resources :photos, :as => "images"


这时访问/images会被Rails识别,并且调用PhotosController的index方法。但/photos这个URL将不再被Rails识别。

:conditions选项
用于限制能够被识别的请求的HTTP动作,一般不推荐用于RESTful的路由规则中。但可以在map.connect等方法中使用。
用法:
Ruby代码
收藏代码

map.connect 'photo/:id', :controller => 'photos', :action => 'show', :conditions => { :method => :get }



:requirements选项
用于限制url参数的格式,比如:
Ruby代码
收藏代码

map.resources :photos, :requirements => {:id => /[A-Z][A-Z][0-9]+/}


这样,/photos/1将不再被识别,/photos/AB2会被识别。

:path_name选项
用于给自动生成的URL中的'new'和'edit'重命名,但并不改变这两个action的名称,用法:
Ruby代码
收藏代码

map.resources :photos, :path_names => { :new => 'make', :edit => 'change' }


以上,/photos/make仍然调用controller里的new方法。
如果你希望整个rails项目中都使用上面的url,而不是默认的new、edit,可以在enviroment.rb中这样配置:
Ruby代码
收藏代码

config.action_controller.resources_path_names = { :new => 'make', :edit => 'change' }



:only、:except选项
引用
By default, Rails creates routes for all seven of the default actions (index, show, new, create, edit, update, and destroy) for every RESTful route in your application. You can use the : only and :except options to fine-tune this behavior. The : only option specifies that only certain routes should be generated:
Ruby代码
收藏代码

map.resources :photos, :only => [:index, :show]



With this declaration, a GET request to /photos would succeed, but a POST request to /photos (which would ordinarily be routed to the create action) will fail.

The :except option specifies a route or list of routes that should not be generated:
Ruby代码
收藏代码

map.resources :photos, :except => :destroy



In this case, all of the normal routes except the route for destroy (a DELETE request to /photos/id) will be generated.


引用
If your application has many RESTful routes, usingnly and :except to generate only the routes that you actually need can cut down on memory use and speed up the routing process.


:has_one、:has_many 嵌套资源的一种简洁写法:
Ruby代码
收藏代码

map.resources :photos, :has_one => :photographer, :has_many => [:publications, :versions]



2.x的rails开始支持namespace:
Ruby代码
收藏代码

map.namespace(:admin) do |admin|
admin.resources :photos, :has_many => { :tags, :ratings}
end


/admin/photos 将调用Admin::PhotosController的index方法。

:member :collection选项
Ruby代码
收藏代码

map.resources :photos, :member => { :preview => :get }
map.resources :photos, :member => { :prepare => [:get, :post] }
map.resources :photos, :collection => { :search => :get }



GET /photos/1/preview
POST /photos/1/prepare
GET /photos/search

引用
A Note of Caution

If you find yourself adding many extra actions to a RESTful route, it’s time to stop and ask yourself whether you’re disguising the presence of another resource that would be better split off on its own. When the :member and :collection hashes become a dumping-ground, RESTful routes lose the advantage of easy readability that is one of their strongest points.


后面是比较常用的connect的用法,比较熟悉,就不记了。倒是有个with_options第一次见到:
Ruby代码
收藏代码

map.with_options :controller => 'photo' do |photo|
photo.list '', :action => 'index'
photo.delete ':id/delete', :action => 'delete'
photo.edit ':id/edit', :action => 'edit'
end


用于批量设置一组具有某相同选项的路由规则。

rake routes 可以在控制台按顺序输出所有的路由规则。

2010年5月16日 星期日

Web 設計與開發者必須知道的 15 個站點 - 博客園IT新聞

LIpsum
Lorem Ipsum Text 是一中自造的,字典中不存在的單詞,是在演示頁面結構的時候,需要加文字的地方使用 Lorem Ipsum Text 填充可以避免用戶因關注文字的意思而分神。Lipsum.com 可以幫你生成制定數目的 Lorem Ipsum 單詞。

What the font?
有時候你對某個 Logo 感興趣,想知道是拿什麼字體做的,可以將 Logo 圖片上傳到這個網站,結果之準確會讓你難以置信。

ConvertIcon
Favicon 越來越受歡迎,尤其隨著 Firefox 的流行,Firefox 會將你站點的 Favicon 標誌顯示在標籤上,也會顯示於書籤,Favicon 支持多種圖形格式,比如 png,但 IE 並不支持 png,該站點可以幫助你將 png 等圖片格式的 Favicon 轉換成 IE 支持的 ico 格式。

BgPatterns
現代 Web 設計的趨勢之一包括使用背景圖案,BgPatterns.com 可以幫你設計背景圖案,他們有大量可選的圖案,可以按 不同方式接合,還可以設置透明度。

HTML Encoder
如果你要在網站中顯示 Web 代碼,那將是非常煩人的事,你必須將諸如 < 一類的符號用編碼表示,這個網站可以幫你做這些事情,只需將你的代碼複製進去,他們會幫你生成可以直接使用的代碼。還有 HTML Decoder 幫你做相反的事。

Xenocode Browsers
該網站非常有用,可以直接在站點中預覽你的網站在 IE6, IE7, IE8, Firefox 2, Firefox 3, Google Chrome 以及 Opera 中的樣子。唯一的不足是,不支持 Mac 和 Linux 環境下的瀏覽器。

Test Everything
這個網站包含了超過 100 中工具幫你測試幾乎所有東西,如跨瀏覽器兼容,查 PR 值,甚至幫你驗證代碼。

Sprite Generator
CSS Sprites 在顯著降低 HTTP 請求方面功不可沒,但 CSS sprite 可不是個簡單的技術,Sprite generator 可以幫你做這些繁複的工作,將你的圖片打包成 zip 上傳上去,他們會把你的圖片組合成 sprite,還幫你生成 CSS 代碼。

Buttonator
這個網站可以幫你設計漂亮的按鈕。

Load Impact
這個壓力測試站點可以幫你測試你的站點的抗壓能力,如果你的某篇文章曾經上過 Digg 或 StumbleUpon 等網站的首頁,你就會知道抗壓測試多麼重要。

IconFinder
這個網站收藏了大量來自網絡的免費圖標。

TypeTester
該站點可以幫你測試不同字體的顯示效果。

CSS Tidy
這個站點可以幫你檢查 CSS 代碼,並修正其中的錯誤,比如,它可以發現你的 CSS 代碼中最常見到重複設置問題。



Contact Forms Generators
自定義表單可以幫助你實現同訪問者的互動,無需編程,就能快速生成訪客反饋表單,甚至幫你生成郵件發送 PHP, ASP, Perl 代碼。




本文來源:15 sites web developers and designers should know
中文翻譯來源:COMSHARP CMS 官方網站

Ubuntu 反吸血的amule稳定版DLP

Ubuntu中文论坛 • 查看主题 - [2月21日更新]反吸血的amule稳定版DLP3904.3 - 修正Hello-Tag和Info-Tag检测

安装

加源

10.04
代码:

加key
代码:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DDA4DB69


安 装

代码:
sudo apt-get update

代码:
sudo apt-get install amule-dlp amule-dlp-gnome-support amule-dlp-ipfilter



系统级ipfilter.dat,默认开启。如果不需要,不安装amule-dlp-ipfilter软件包就可以了,它是作为推荐软件包列出的。 ipfilter.dat文件来自eMule Pawcio。

安装后:

amule-----网络-----动态反吸血信息

可 以查看反吸血信息

说明:

* 以前安装过amule的会自动删除
* 找amule-gnome-support请顺手改为amule-dlp-gnome-support,PPA里已经提供
* 用daemon时DLP同样有效,但是不能直接查看log
* ubuntu中daemon的配置文件位置改为/etc/default/amule-dlp-daemon,原版amule的位置是/etc /default/amule-daemon
* PPA 签名 Key 安装偶尔出现的问题,部分朋友反应的针对某一连接客户端限速失常,以及 DLP 会不会被破解的问题,请查看 viewtopic.php?p=1646614#p1646614

补 丁的更新说明:
midoriumi 写道:
3904更新说明
· 合并了 Bill Lee 对迅雷检测的修改
· 增加了GUI的设置界面,可以自行选择使用哪些检测手段
· 参照 DLP Strict 增加了屏蔽 VeryCD Mod 和 easyMule 的选项,提供给有需要的人使用。这两个屏蔽选项默认是不启用的。另外,对于 VeryCD Mod 和 easyMule 的检测还不完善,目前还存在漏检
· 修复检测 HelloTag 时使用了错误的数据的鬼
· 增加对 InfoTag 的检测
· 修复一些崩溃问题


pityonline 写道:
没有速度


amule没速度的,可以看一下:

viewtopic.php?f=73&t=228524

也 许有用