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

ruby-pinyin:中文汉字转拼音

By: Iceskysl In: Ruby & Rails Tags:pinyin, ruby

16 Sep 2012

之前有过类似的需求,比如给文章按照标题生成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 - Components for Rails

By: Iceskysl In: Ruby & Rails Tags:Cells, rails

24 Aug 2012

Cells - Components for Rails

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

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~
真的,很重要,切记!

textmate开源了

By: Iceskysl In: Ruby & Rails Tags:TextMate, ruby

9 Aug 2012

前几天(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

如上纪录,应该有人遇到类似的问题~

IceskYsl, 简称Ice, 80后, 典型巨蟹男, 移动互联网创业者; Google产品重度依赖者, Mac, Android, iPhone, BB 非典型用户;关注创新,技术,产品和一切新奇的玩意儿;
求学武汉, 毕业南下深圳, 尔后北漂在京, 至今数年有余; 追寻内心的想法, 不随波逐流, 爱折腾, 爱旅行, 孩子气, 享受工作, 安静的做喜欢的事情...

近期访客

    近期评论

      赞助商

      数据统计

      • 文章: 633 篇
      • 页面: 11 页
      • 分类: 13 个
      • 友情链接: 14 个