Jokry

生活没有草稿

在Rails中使用Redis

Redis 是一个高性能的key-value数据库,支持strings, sets, sorted sets, lists and hashes 中数据类型。它和Memcache一样,Redis所有的数据运行在内存中。但不同的是,Redis可以将数据持久化到磁盘中。

Redis 数据类型

以下是对Redis支持的数据类型的概括:

String 字符串是最基本的类型,可以用作计数器(通过incr, incrby, decr, decrby命令)

Set 无序无重复的集合

Sorted Set 有序无重复的集合

List 有序集合的数组,和Ruby中的Array一样。可以通过pop, push实现队列操作

Hash 键值对的哈希类型

Redis的命令可以参考《Redis commands》,使用场景可以参考《redis 适用场景与实现》。

Devise多角色的Sign Out Path

Devise中可以添加多个用户角色,比如UserAdmin

在用户进行登录与退出,Devise都提供了回调方法,在它的wiki中有详细介绍。

app/controllers/application_controller.rb中添加如下方法:

class ApplicationController < ActionController::Base
   private

   # Overwriting the sign_out redirect path method
   def after_sign_out_path_for(resource_or_scope)
     root_path
   end
end

如果有多个用户角色,只要在after_sign_out_path_for中进行判断即可,如

def after_sign_out_path_for(resource_or_scope)
  if resource_name == :admin
    new_administrator_session_path  #返回到登录页面
  else
    new_user_session_path #返回到登录页面
  end
end

[译]从竞品中学习

MarcoInstapaper的创始人,由于错失最先推出自定义字体功能,而学会重视竞品,并进行经验总结——Learning from competition。这边文章在pinboard上也是热门收藏的文章。将其翻译如下,仓促发布,若有不正确的请大家指出。

去年我尝试在Instapaper中添加自定义字体的功能,但我的努力最终却成了泡影。在iOS 5之前,在iOS系统的UIWebView控件中进行自定义字体的渲染,是非常慢的。当我向字体授权方申请授权时,几乎没有任何回应。所以,即使我想要的这些字体非常棒,但也不能合法的使用这些字体。于是,我搁置了自定义字体的想法。

但我搁置的时间太长了。当Readability在上周发布他们的竞品,其中的自定义字体功能备受好评。在对比之下,Instapaper显得毫无吸引力。

Octopress介绍与安装

将自己的博客转向Octopress,利用Github托管并自定义域名。安装过程中也遇到一些问题,通过本篇文章记录下来,希望对要转向Octopress的朋友有帮助。

  1. 什么是Octopress
  2. 安装与发布Octopress
  3. 安装中可能出现的问题
  4. 通过Markdown语法写文章
  5. 自定义域名
  6. 导出wordpress文章到Octopress

1. 什么是Octopress

Octopress是使用Ruby语言编写的博客系统。相比wordpress,它拥有一些独特的特点:

  • 运行生成Html静态页面,无需数据库支持
  • 默认使用markdown语法撰写文章
  • 通过Git方便地进行博客版本控制
  • 利用Github Pages托管Octopress,无需服务器支持
  • Mash up免费服务,如Disqus , Google analysis , Delicious…
  • Geek Style

如果你想更具体的了解Octopress,可以阅读官方介绍或者xdite的Why Octopress?