require 'net/smtp'
message = <<MESSAGE_END
From: Private Person <iceskysl@eoemobile.com>
To: A Test User <iceskysl@test.com>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
MESSAGE_END
begin
Net::SMTP.start( 'smtp.qq.com', 25, "iceskysl.com", "admin@iceskysl.com", "xxxxxxx", :login ) do |smtp|
smtp.sendmail( message, 'admin@iceskysl.com', 'iceskysl@gmail.com' )
end
rescue Exception => e
print "Exception occured: " + e
end
#Net::SMTP.start(server, port, domain, acct, passwd, authtype)参数解释
当使用I18n配置mode时, 可以用yml配置'zh-CN':
activerecord:
models:
user: "用户"
attributes:
user:
username: "用户名"
email: "邮箱"
password: "密码"
因此在form_for里的f.label :username便会自动转化为 用户名~
那在其他views要使用I18n呢? 很简单, 使用 User.human_attribute_name(:username), 就可以获得 用户名
改response中一个叫做headers的Hash,至于header中可以设置什么值,请参考http header的参数.
# 比如对一个非法的请求进行提示 5 秒后,自动跳转到网站的首页
response.headers['http-equiv'] = 'refresh'
response.headers['content'] = "5;#{root_url}"
render :text => 'Request is invalid'
# 快速地输出电子表格
response.headers['Content-Type'] = 'application/vnd.ms-excel'
response.headers['Content-Disposition'] = "attachment;filename=\"ice.xls\""
再例如:Rails中设置p3p头
class ApplicationController < ActionController::Base
...
before_filter :set_p3p
def set_p3p
response.headers["P3P"]='CP="CAO PSA OUR"'
end
参考:
Insert a P3P header into your Rack webapp.
https://github.com/hoopla/rack-p3p
之前有过类似的需求,比如给文章按照标题生成url的时候,之前用过有道和google的翻译接口来做这个事情,发现效率达不到要求,这次看到这个是基于字库的。
ruby-pinyin: 将中国汉字转化为对应的拼音,写段脚本如下
require 'rubygems'
require 'ruby-pinyin'
puts PinYin.of_string('姚尚朗').join(',')
puts PinYin.of_string('姚尚朗',true).join(',')
puts PinYin.permlink('姚尚朗')
puts PinYin.permlink('姚尚朗 is 我')
=begin ===OUTPUT===
YAO,SHANG,LANG
YAO2,SHANG4,LANG3
yao-shang-lang
yao-shang-lang--is-wo
=end
参考:
https://github.com/janx/ruby-pinyin

Cells are view components for Rails. They are mini-controllers with their own MVC stack, can invoke logic and render views. They bring back OOP to Rails' view layer and make writing reusable portlets for your applications fun.
有人总结了使用cell的几个好处
- 1. Keep your views dumb
- 2. Don’t put logic into views
- 3. Interfaces can save lives
- 4. Controllers should be slim
- 5. Avoid helpers
- 6. Unit-test your glue code
- 7. Functional-test your rendering
- 8. Get OOP back in your views
- 9. Teams love components
- 10. Hide your caching
install
ice@mac:/source/github/iceylog > gem install cells
Fetching: activesupport-3.2.8.gem (100%)
Fetching: activemodel-3.2.8.gem (100%)
Fetching: actionpack-3.2.8.gem (100%)
Fetching: cells-3.8.5.gem (100%)
Successfully installed activesupport-3.2.8
Successfully installed activemodel-3.2.8
Successfully installed actionpack-3.2.8
Successfully installed cells-3.8.5
4 gems installed
ref:
http://cells.rubyforge.org/
http://rdoc.info/github/apotonick/cells
http://nicksda.apotomo.de/2010/10/10-points-how-cells-improves-your-rails-architecture/
http://cells.rubyforge.org/pdfs/cells_cheatsheet-1.0.pdf

面写过一篇文章说到TextMate开源了 (http://www.iceskysl.com/posts/625) ,于是很多人问是否之后的版本就不要钱了(看来之前TextMate2确实卖的好贵哇),于是想着自己编译一份试试看~整个过程还算顺利,很多人问如何编译,这里大致写一下~
step1. 准备环境
brew install ragel boost multimarkdown hg ninja
brew install proctools
brew install --HEAD llvm --with-clang
编译前需要准备下自己的环境,我是再ML(10.8)下编译的,按照如上命令安装需要的工具,每个工具做什么用的也就不解释了,自己可以google去~
这个过程如果遇到boost装不上去的情况,可以尝试卸载boost后重新安装,如果还不行,可以尝试卸载掉go语言(我的机器就是这样),如果遇到其他问题,可以给我留言,我帮你查查~
step2. 获取源码
git clone https://github.com/textmate/textmate.git
TextMate2的源码开源了的(https://github.com/textmate/textmateTextMate~),开源后很多人贡献代码,每天都很活跃,真心觉得开源救了
step3. 下载submodule
cd textmate
git submodule update --init
TextMate是模块形式的,里面有很多子模块,用如上命令获取submodule的代码~
step4. 编译
configure没啥好讲的,ninja是一个类似make的编译工具,具体的可以参考(http://martine.github.com/ninja/)
如果顺利的话,会在~/build/TextMate/Applications/TextMate下生成TextMate.app,就是可用的啦~
Iceylog是我写的一个自己使用的博客系统,需要的功能陆陆续续的添加完成了,之前使用的是Disqus提供的评论系统,但是在国内Disqus还是存在加载慢和账号不多等问题,之前看过国内几个类似的产品,比如多说,友言,denglu等等,没怎么对比,觉得多说做的还是不错的,于是今天花了点点时间,把博客的评论系统由Disqus换成多说。
集成方法很简单,可以直接参考官方文档 http://dev.duoshuo.com/docs ,就不啰嗦了~集成成功后就可以使用,之后就可以通过多说登陆社会化账号评论我的文章啦。
这里大致说说对这类产品的看法:
1. 这类产品是有价值的,因为起可以省略掉开发和管理的时间,比如这里可以省去写评论功能,省去写spam处理,省去数据存储等;
2. 这类产品能打通社会化账号,使得评论更加真实和立体,也方便追踪和管理,更带来客观的传播;
3. 这类产品的关键是稳定和快速响应,毕竟页面的展开依赖其加载完成,如果影响主产品的速度和用户体验是致命的;
4. 这类产品最大的风险在于数据的安全性
希望多说能越做越好,希望大家可以能和我多多交流~

周末闲暇,看到weibo上有人说#HTML5在路上#的活动,于是就背包去现场转了下~
很久不怎么去这类活动了,因为之前android这拨经历过了,多少有点类似,也比较不喜欢浮躁的感觉和氛围~
行业的鼓吹手们是不会放过任何机会来鼓吹整个行业的,无论时机是否成熟,搞的很多创业者们热血澎湃的杀进去~
去了现场转了几圈,几点感受分享下:
1. 最想推动HTML5的是浏览器厂商,今天国内知名不知名的浏览器基本全部到场,看到chrome,ie,海豚,uc,360极速浏览器,qq浏览器,遨游浏览器,猎豹浏览器等(哎,好像没看到百度浏览器);
2. 电视厂商表现的很积极,letv的展台不小,还有一个tv专场,会不会是现在电视平台上应用太少的原因呢;
3. 安全,支付和移动广告又找到一个提高自己份额的切入点,战争还没开始,硝烟都开始弥漫了;
4. 游戏还是大家押宝的重点,ios,android,wp,现在又html5,什么都押宝游戏,突然觉得游戏好可怜;
5. 不要相信html5能很好的解决跨平台的问题,或者短期内不大可能,看看现在还没走上正道都开始分化了,各家都有自己的一盘棋,标准化这个事情很难;
6. 渠道永远都是争夺的焦点,而且会很惨烈,不要以为游戏好就能突围,渠道这关无论你是ios,android还是html5,都绕不过去,至少在中国;
7. 开发者这个群体很重要,维护好开发者,让他们过好是关键;
大环境很重要,所以,更希望开发者能更加脚踏实地一点,多些沉淀和思考,少些鼓吹和跟风,找到自己的点,踏踏实实的耕耘好,无论是android,还是ios,还是html5~
真的,很重要,切记!
前几天(8月3日)才发个《买了一个TextMate的注册码》,结果早上起来看到textmate开源了,这个号称mac下最贵得文本编辑器开源了~
代码地址:
https://github.com/jezdez/textmate-missingdrawer
第一时间fork了一份~
ice@mac:/source/github > git clone git@github.com:IceskYsl/textmate-missingdrawer.git
Cloning into 'textmate-missingdrawer'...
remote: Counting objects: 555, done.
remote: Compressing objects: 100% (215/215), done.
remote: Total 555 (delta 391), reused 496 (delta 337)
Receiving objects: 100% (555/555), 135.16 KiB | 53 KiB/s, done.
Resolving deltas: 100% (391/391), done.
部署服务器的时候遇到一个奇怪的问题,这个项目是采用sequel连接数据库做操作的,其Gemfile中如下:
gem "sinatra", :require => false
gem "sequel",'3.32.0'
gem "mysql"
但是启动的时候一直失败
bundle exec unicorn_rails -c config/unicorn.rb -D -E production
亓报错的信息如下
/var/www/release_1.0.0/vendor/ruby/1.8/gems/sequel-3.32.0/lib/sequel/adapters/mysql.rb:6: LoadError: require 'mysql' did not define Mysql::CLIENT_MULTI_RESULTS! (Sequel::AdapterNotFound)
You are probably using the pure ruby mysql.rb driver,
which Sequel does not support. You need to install
the C based adapter, and make sure that the mysql.so
file is loaded instead of the mysql.rb file.
查了很久没找到正确的解释,后来这样解决了
bundle exec gem install mysql
如上纪录,应该有人遇到类似的问题~