Jerry Shen

Run Wordpress on Nginx

Categories: nginx, wordpress

在rails服务器上部署一个wordpress其实并没有想象中那么费事,只要简单安装几个模块即可, 充分的利用你的服务器资源,不要浪费(服务器租用太贵了😄)

假定服务器上已经有rails项目在跑了,也就是说已经安装有nginx,那么,一步步来(root用户权限)。

Integration of ActiveAdmin

Categories: activeadmin, administration

如果你要做一个中小型的项目,你会觉得写一个后台是一个非常麻烦的事情,有以下几点

  • Admin UI设计与布局
  • 很多的重复工作,基本上都是CRUD
  • 每换一个项目,都得重新做一次。。。

Active Admin 是一个后台界面框架,它能使你的后台搭建变得非常方便,当然界面也相当漂亮。

使用相当简单,按照文档就能很轻松的搞定,但是一些自定义的功能大家未必会深入去看,所以在这里我主要讲一些可 自定义的功能。[未完。。。待续]

Generate ATOM Feed in Rails3

Categories: Atom

个人博客中,经常会用到RSS订阅的功能,但如今,我比较推荐ATOM来完成这个功能,完全可以取代RSS. 因为ATOM的规范比RSS更加好,几乎每个feed reader都支持。

下面我来完成一个ATOM Feed的实例。我们的项目中需要有以下准备:

  • Post类, 并且拥有以下属性
    • title
    • content
    • author
  • posts_controller.rb, 我们将要在这个controller中加入有关feed的方法

我们将会用到 Ruby on Rails 自带的 ATOM Builder来实现这个功能,atom_feed非常简单,并且相当好用。

Fix Compile Problem Based on Mountain Lion and Xcode 4.4

Categories: Mountain Lion, Xcode

OS X Mountain Lion 作为一个比较成功的操作系统,短短几天下载量久已经突破了400万。 但是安装Xcode 4.4后,我们需要做一些额外的事情,才能使用Homebrew正常的安装一些packages。

安装Xcode + Command Lion Tools

Xcode 4.4直接可以从 Mac app store上下载,大概1个多G,换成V2EX的DNS后下载速度会变得很快,大家可以尝试一下。 安装完成后打开Xcode,点击菜单 Xcode -> Preferences -> Downloads 然后找到 “Command Line Tools” 进行安装, 安装完成后关闭Xcode并打开终端。

修复Homebrew和 GCC 4.2 Mountain Lion安装完成后系统会自动将 /usr/local转成root权限, 所以我们需要在终端命令行中将权限做一个调整:

$ sudo chown -R `whoami` /usr/local

接下来更新下 Homebrew:

$ brew update

Installing Postgresql Failed via Homebrew on Mountain Lion

Categories: Mountain Lion, Postgresql

Mountain Lion 出了之后确实有点小激动,当天就买下安装,新加的一些功能也比较喜欢,比如Message Center, 是历来几个版本中较好的一个。

不过在安装postgresql的时候遇到了一些麻烦,安装老是失败

Error: Failed executing: make install-world (postgresql.rb:67)

经过一系列的研究之后得出一下解决方案

$ brew install postgres --without-ossp-uuid

Mountain Lion上的安装需要跳过 ossp-uuid 这个步骤,否则将无法正常安装. 安装完成后需要初始化一下数据库

$ initdb /usr/local/var/postgres -Upostgres

这里我们用默认的postgres来初始化数据库,这步可能会碰到以下问题

creating template1 database in /usr/local/var/postgres/base/1 ... FATAL:  could not create shared memory segment: Cannot allocate memory
DETAIL:  Failed system call was shmget(key=1, size=2138112, 03600).
HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space, or exceeded your kernel's SHMALL parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMALL.  To reduce the request size (currently 2138112 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

解决的方法是

$ sudo sysctl -w kern.sysv.shmall=65536
$ sudo sysctl -w kern.sysv.shmmax=16777216

或者直接加入到配置文件 /etc/sysctl.conf

kern.sysv.shmall=65536
kern.sysv.shmmax=16777216

接下来执行 initdb /usr/local/var/postgres -Upostgres 就没有问题了

从 Gitosis 迁移到 Gitolite

Categories: git, gitolite, gitosis

之前Linode有个回馈用户的活动,新用户注册并购买linode可以得到100美金的虚拟货币,老用户添加一台新的linode可以免费使用3个月,手痒痒就添加了一台,并安装了ubuntu server最新的12.04,却发现Gitosis已经木有人维护了,也找不到相应的安装源了,只好舍弃,换到Gitolite,但是之前gitosis下的项目如何处理呢?答案当然是肯定的, 可以无缝迁移到新的gitolite上,下面来讲解下如何做这个迁移。

假设Gitosis在服务器A上, 我们要在服务器B安装Gitolite并且要把服务器A上的项目迁移到服务器B上。

首先需要安装Git和Gitolite

$ sudo apt-get install git-core
$ sudo apt-get install gitolite

安装完成后,接下来给gitolite创建一个用户

sudo adduser \
    --system \
    --shell /bin/bash \
    --gecos 'git version control' \
    --group \
    --disabled-password \
    --home /home/git \
    git

让你的分享过程变得简单

Categories: ruby, social network

社交网络的流行确实带动了很多社交应用的崛起,不论是国外这么好的大环境下还是在国内这种境况中,社交类型的网站遍地开花,数不胜数,就连传统行业的网站或者应用也都通通加入了社交这个圈子,可以想象,社交带来了一个质和量的双重飞跃。

前段时间写了个Rails小插件,方便一键分享,默认加入了新浪微博、腾讯微博、人人和豆瓣这些国内主流的社交网站,用户只需要调用一个helper就能把链接渲染到页面上,从而简化了你的分享流程,无需自己再写任何代码。项目地址是 https://github.com/jerryshen/social_share_hub

其实这个插件很简单,所以只简单介绍下如何使用,当然你们也可以自己来扩展其他的社交网站

Hosting Your Blog on Linode Using Octopress

Categories: linode, octopress

已经很长一段时间没有好好打理博客了,之前用Jekyll自己搭了个博客,想迁移到Octopress上,却一直因为一些事情所耽搁,趁端午期间,终于把这件拖了很久的事情给办了。

Octopress其实也是基于Jekyll的,只是不需要自己来写那么多扩展了,而且目前也有越来越多的插件支持Octopress。下面我来讲以下如何在linode上搭建你的Octopress博客。

我fork了octopress,https://github.com/jerryshen/octopress,大家可以直接clone到本地。

先来拆分下结构

  1. .rvmrc:这个决定于你的机器用的是什么版本的ruby,但Octopress最低要求是1.9.2,我用的是1.9.3。
  2. _config.yml:这个文件里面都是一些可定制的配置信息,包括域名、博客名称还有第三方的用户名等等。
  3. .themes/blog:这个是我借用了eDoctor的样式库并做了一些扩展。

利用OAuth2协议将网站接入到新浪微博

Categories: Devise, OAuth2, weibo

前段时间收到了新浪微博客开放平台发来的邮件,宣布要在9月份停止使用OAuth1协议,这点让我感到意外,以下是邮件原文:

尊敬的开发者您好:
新浪微博开放平台预计2012年九月份停止旧版接口和OAuth1.0的使用,请尽快将您的应用迁移至新版接口和OAuth2.0。
新版接口更高效,包含更丰富的功能,为帮助您迁移,请参考以下链接:

希望您能够做好相关准备,技术问题可咨询 @微博API,由此造成诸多不便,请开发者给予谅解。

这个9月份的截止时间可谓是一记重磅炸弹,让所有还停留在Oauth1上的网站面临不得不面临升级的尴尬。

之前花了点时间把新浪微博的一整套流程都给研究清楚了,其实时间主要都花在研究他的审核机制了,OAuth2调用相对来说还是相当简单的。下面我来讲一下如何使用OAuth2做授权。

How to Install the Latest Version of Mongodb

Categories: linux, mongodb

前几天在自己的服务器上安装并部署了mongodb数据库, 不过Ubuntu官方并没有最新的apt源, 所以要自己添加一个10gen的源.

10gen这个安装包包含了最新的Mongodb版本, 需要添加到 /etc/apt/sources.list 的最后,

$ sudo vim /etc/apt/sources.list

就像下面这样的配置:

# other sources
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen