Memery of College Life

很偶然的,从移动硬盘中翻出了以前学生时代一些文字和图片,发现以前的生活真是太开心了,而现在呢,没有朋友在身边,总觉得缺少了什么,或许人生总有那么多不完美吧。

记得是我们寝室和撇王寝室的红警对决。。结果是没有悬念的。。我是第一的tony…哇哈哈

第一局 领先 哦也

第一局

第二局 还是领先..

第二局

第三局 有点不好意思了 哈哈

第三局

Read More

Installing Rails 3 on Ubuntu 10.04 Lucid Lynx with RVM

Rails3 终于Release了, 基于此, 写一篇关于如何配置rails3开发环境的小文章,

首先安装curl.

$  sudo apt-get install curl  

然后安装rvm

$  bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )  

在~/.bashrc 中加入以下代码:

if [[ -s "$HOME/.rvm/scripts/rvm" ]]  ; then source "$HOME/.rvm/scripts/rvm" ; fi  

重启终端

$  rvm notes  

安装必要的packages

$  sudo apt-get install bison build-essential zlib1g zlib1g-dev libssl-dev libreadline5-dev libxml2-dev git-core subversion autoconf  

安装完以上必须的packages后,就可以安装ruby 1.9.2了

$  rvm install 1.9.2-head  

安装完ruby 1.9.2后, 我们可以把rvm ruby 1.9.2设置为默认

$  rvm --default ruby-1.9.2-head  

接下来就可以查看ruby 版本了

$  ruby -v  
  ruby 1.9.2p0 (2010-08-18 revision 29034) [x86_64-linux]

接下来安装rails3

$  gem install rails

享受rails3的乐趣吧

Read More

以后会努力过得很好

alt text

每个人都是一个杯子
但杯子的大小不同
有的杯子装的下一片汪洋
有的杯子装不下自己的欣赏

每个人都是一个杯子
但是里面盛的东西不一样
有的杯子里盛的是大块文章
有的杯子里盛的是小肚鸡肠

倒空你的杯子
让人生作别样想

Read More

How do I live without you.

alt text

再也写不出动人的文字

我不要求什么

我只想不被打扰

每天用忙碌将自己充满

我可以不去想念一个人 想念一些事

每天简单的度过

义无反顾 飞蛾扑火 或许那段时间早已被磨的看不清了

幸福, 都有着相同的模式

痛苦, 也有着似曾相识的片段

做一件令自己感动的事情

录一首自己写的歌

看一场F.I.R的演唱会

每天去游泳

恩, 这将是今后要做的事情.

Read More

install ree,passenger,nginx and postgresql on ubuntu server 10.04 LTS

安装 Ruby Enterprise 环境

安装编译需要的包

$  apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev  

下载并编译 Ruby Enterprise Edition 最新版 2010.02

$  mkdir -p /opt/src && cd /opt/src
$  wget http://rubyforge.org/frs/download.php/71096/ruby-enterprise-1.8.7-2010.02.tar.gz
$  tar xvf ruby-enterprise-1.8.7-2010.02.tar.gz
$  cd ruby-enterprise-1.8.7-2010.02
$  ./installer 

安装到 Installing useful libraries… 时, 按 Ctrl + C 停止脚本自动下载 gem 库

设置环境变量

$  ln -s /opt/ruby-enterprise-1.8.7-2010.02 /opt/ruby-enterprise  

编辑 /etc/profile, 尾部加入

$  export PATH=/opt/ruby-enterprise/bin:$PATH  

运行 source /etc/profile 启用配置, 并输入 ruby -v 检查版本

$  ruby 1.8.7 (2010-04-19 patchlevel 253) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2010.02  

安装rake, rails2.3.8

$  gem sources --update
$  gem install -V rake rails  

至此 Ruby Enterprise 基本安装完成

安装 Postgresql 数据库

$  apt-get install postgresql  

修改 postgres 用户密码

$  su postgres -c psql postgres
$  ALTER USER postgres WITH PASSWORD 'postgres';
$  \q  

其中 ‘postgres’ 为要修改的密码

编辑 /etc/postgresql/8.4/main/pg_hba.conf 最后修改为

# Database administrative login by UNIX sockets
# local   all         postgres                          ident

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5 #ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5  

如果不希望允许 postgres 使用密码登入的可以开启第2行 # local all postgres ident 的注释

编辑 /etc/postgresql/8.4/main/postgresql.conf, 搜索 # listen_addresses = 将其修改为

listen_addresses = 'localhost'                  # what IP address(es) to listen on;  

如果允许其他机器访问的请将 localhost 修改成 *

重启数据库

$  /etc/init.d/postgresql-8.4 restart  

安装 postgresql 的 Ruby 驱动

$  apt-get install libpq-dev
$  gem install -V pg  

如果数据库不再本地仅安装此步即可

安装 Phusion Passenger

用 gem 安装 passenger

$  gem install -V passenger  

将装好的 passenger 连到 /opt/passenger

$  ln -s /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-2.2.15/ /opt/passenger  

安装 nginx 服务器

下载最新 stable 版 nginx

$  mkdir -p /opt/src && cd /opt/src
$  wget http://nginx.org/download/nginx-0.7.67.tar.gz
$  tar xvf nginx-0.7.64.tar.gz

安装编译相关类库

$  apt-get install libpcre3-dev  

编译安装 带有 passenger 模块的 nginx

使用 passenger 脚本 passenger-install-nginx-module 编译 nginx

选择 2. No: I want to customize my Nginx installation. (for advanced users)

输入 src: /opt/src/nginx-0.7.67 和 prefix: /opt/nginx

添加 编译参数 并编译

$  --conf-path=/opt/etc/nginx/nginx.conf --with-http_gzip_static_module  

如果还要启动其他编译参数请自行添加

另外: 如果不想使用 passenger 自带脚本编译 nginx, 也可以手工编译 nginx 时加入 –add-module=’/opt/passenger/ext/nginx 参数, 来启用 passenger 模块.

配置 nginx

添加服务器用户

$  useradd -d /var/www/ -s /bin/bash www-data
$  usermod --shell=/bin/bash  www-data
$  mkdir -p /var/www/vhosts/default/htdocs
$  chown -R www-data:www-data /var/www

整理编译自动生成的配置文件

$  cd /opt/etc/nginx
$  mkdir /opt/etc/nginx/default
$  mv *.default default/
$  mkdir conf.d
$  mkdir sites-enabled

将 /opt/etc/nginx/nginx.conf 替换为

user  www-data www-data;
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;
    #tcp_nopush     on;
    
    keepalive_timeout  65;
    gzip  on;
    
    include conf.d/*.conf;
    include sites-enabled/*;
}  

添加 gzip_static 模块配置, 编辑 /opt/etc/nginx/conf.d/gzip_static.conf

gzip_static on;
gzip_types text/css application/x-javascript;

添加 Passneger 模块配置, 编辑 /opt/etc/nginx/conf.d/passenger.conf

passenger_root /opt/passenger;
passenger_ruby /opt/ruby-enterprise/bin/ruby;

添加 /opt/etc/nginx/sites-enabled/default

server{
  listen 80;
  server_name  hansay.com www.hansay.com;
  root /var/www/vhosts/default/apps/noa/current/public;  #just for example
  passenger_enabled on;

  location ~ ^/(images|javascripts|stylesheets)/  {
      root /var/www/vhosts/default/apps/noa/current/public;
      expires 30d;
  }
}

如果需要配置 Rails 程序请参考 Nginx 文档

添加启动脚本 /opt/etc/init.d/nginx 内容为

#! /bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

# PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/nginx/sbin/nginx
NAME=nginx
DESC=nginx
PIDFILE=/opt/nginx/logs/$NAME.pid

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /opt/etc/default/nginx ] ; then
    . /opt/etc/default/nginx
fi

set -e

. /lib/lsb/init-functions

test_nginx_config() {
    if $DAEMON -t; then
        return 0
    else
        return $?
    fi
}

case "$1" in
    start)
        echo -n "Starting $DESC: "
        test_nginx_config
        start-stop-daemon --start --quiet --pidfile $PIDFILE \
            --exec $DAEMON -- $DAEMON_OPTS || true
        echo "$NAME."
    ;;
    stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile $PIDFILE \
            --exec $DAEMON || true
        echo "$NAME."
    ;;
    restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
            $PIDFILE --exec $DAEMON || true
        sleep 1
        test_nginx_config
        start-stop-daemon --start --quiet --pidfile \
            $PIDFILE --exec $DAEMON -- $DAEMON_OPTS || true
        echo "$NAME."
    ;;
    reload)
        echo -n "Reloading $DESC configuration: "
        test_nginx_config
        start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE \
           --exec $DAEMON || true
        echo "$NAME."
    ;;
    configtest)
        echo -n "Testing $DESC configuration: "
        if test_nginx_config; then
            echo "$NAME."
        else
            exit $?
        fi
    ;;
    status)
        status_of_proc -p $PIDFILE "$DAEMON" nginx && exit 0 || exit $?
    ;;
    *)
        echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
        exit 1
    ;;
esac

exit 0

设置随服务器启动

$  chmod +x /opt/etc/init.d/nginx
$  ln -s /opt/etc/init.d/nginx /etc/init.d/nginx
$  update-rc.d nginx defaults
Read More

custom made of xml interface

日常的开发中经常会需要和其他项目进行数据的交互,我们可以用定制xml接口来简单的实现。

首先创建一个controller, 以 Sync::AreaDistributionsController 为例

1
2
3
4
5
6
7
8
9
class Sync::AreaDistributionsController < ApplicationController
  def index
    @report = Report::AreaDistribution.new(params)
    respond_to do |format|
      format.html # index.html.erb
      format.xml  # index.xml.builder
    end
  end
end

定义数据集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module Report
  class AreaDistribution < Base
    attr_accessor :items
    
    def initialize(params)
      self.items = ServiceActivity.area_service_distribution.search(params[:search]) do |record|
        OpenStruct.new({
            :area_code => record.area_code,
            :service_code => record.service_code,
            :user_count => record.user_count.to_i
          })
      end
    end
  end
end

ServiceActivity.area_service_distribution的定义

1
2
3
4
5
6
7
8
class ServiceActivity < ActiveRecord::Base

  named_scope :area_service_distribution,
    :select => "service_activities.area_code, service_activities.service_code, count(service_activities.service_code) as user_count",
    :joins => "INNER JOIN gateway_acct_activities AS n ON n.leave_at IS NULL AND n.mac = service_activities.mac",
    :group => "service_activities.area_code, service_activities.service_code",
    :order => "service_activities.area_code, service_activities.service_code"
end

定制view,index.xml.builder

1
2
3
4
5
6
7
8
9
10
xml.instruct!
xml.tag! "area-distributions" do
  @report.items.each do |record|
    xml.tag! "area-distribution" do
      xml.tag! "area-code", record.area_code
      xml.tag! "service-code", record.service_code
      xml.tag! "user-number", record.user_count
    end
  end
end

定义路由

1
2
3
map.namespace :sync do |sync|
  sync.resources :area_distributions
end

访问 sync/area_distributions.xml 即可。 当然也可以在.xml?后增加查询条件来精确提取需要调用的数据。

Read More

离开 只是为了再回来

2010年6月24日注定是悲情的一天。因为意大利,因为我的蓝色情结。

意大利的离去

意大利的离去或许是大多数人预料中的,送别这个词汇在赛场上,永远都在上演,却没想到会这么快。没有因扎吉,没有卡萨诺,甚至没有格罗索的意大利队,卫冕冠军、传奇球队众多光环承载下,注定不能走的很远。

只是, 从巴乔时代就已经爱上了的这支意大利队,并没有放弃,他们用最后的15分钟时间让意大利球迷失望的心开始破碎,那是感动,那是悲情,那是久违的血性和卫冕冠军的残存霸气。当夸利亚雷拉用挑射攻破斯洛伐克球门时,意大利人依然把生机保留到最后。只是,这一切来得太晚,他们依稀看到晋级希望,然后带着仅剩的骄傲气质,带着对蓝色的忠诚,带着委屈的眼泪,离开了南非,离开了荣誉,离开了,我们的视线。

看台上的意大利球迷开始哭泣,意大利国旗开始凋零,他们回家了,在这个伤心的夜晚。南非不是他们的吉祥地,他们需要用时间舔舐伤口。

夸利亚雷拉是个悲情英雄,被裁判吹掉的那个进球,被斯洛伐克门将肘击却得到黄牌的委屈,一下子宣泄了出来,竟然孩子般的哭了。 我想,这个名字会永远让我们记住吧,就好像记住94年巴乔落寞的背影一样。

卡那瓦罗的离去

纪念这支曾经辉煌的球队,纪念因扎吉,纪念卡萨诺,纪念马尔蒂尼,纪念皮耶罗, 纪念心中的蓝色情结。

我悲伤, 却不绝望, 因为离开, 只是为了四年后的再次回归。

Read More

高校迎新信息管理系统

new-guys-system

开发相关:

  • Mac OS X 10.6.3(Snow Leopard)
  • Ruby Enterprise Edition 1.8.7 2010.02
  • Rails 2.3.5(will be upgrade to rails 3)
  • Postgresql 8.4

高校迎新信息管理系统功能分析:

  • 基础信息管理

    1. 用户管理,用户作为新生报到每个环节的管理人员,通过超级管理员来对用户进行最基本的管理。
    2. 角色管理,超级管理员、各个系部门管理人员、每一步流程管理人员等,这些角色的存在,使系统保持一个良好的管理控制。
    3. 系部管理,学院部门和系的基本管理,并设置系主任等其他信息。
    4. 专业管理,各个系下面专业的基本管理,并设置辅导员等其他信息。
    5. 学生管理,新生的基本管理,数据可以从Excel导入,从而大大减轻数据录入人员的工作量。
    6. 费用标准管理,设置各种费用的费用标准。
  • 公共资料管理
    1. 新闻公告发布,发布招生信息、招生公告和文件共享,保持信息流通。

  • 报到流程管理

    1. 入学资格复查,入学资格复查和因复查操作失误所需的复查回退,支持特殊情况的产生,包括请假或者他人代理。
    2. 缴纳学费,缴费和缴费的回退,支持绿色通道。
    3. 缴纳军训费用,军训费用的缴纳和回退。
    4. 教务处注册,教务处注册和取消注册。
    5. 日用品购买,日用品购买和取消购买。
    6. 办理保险,保险的办理和取消办理。
    7. 入住学生公寓,入住学生公寓和取消入住。
    8. 总结: 支持扫描枪的输入,从而缩减报到流程中因输入所带来的效率降低。并支持多条件的高级搜索。
  • 住宿管理

    1. 宿舍楼管理,宿管人员对宿舍楼的基本管理功能。
    2. 寝室管理,宿管人员对寝室的基本管理功能。
    3. 宿舍智能分配,批量设置模式和单个设置模式相结合,设置内容包括:宿舍所属系部、专业、班级,宿舍类别(男或女),宿舍床位数量等。
  • 数据管理

    1. 数据导入,支持Excel格式新生数据的导入。
    2. 临时数据管理,Excel格式的数据导入后,将会存在于临时数据中,管理人员缺人无误后可将临时数据转为正式新生数据。
  • 统计查询

    1. 新生报到率统计,各个专业计划人数、实际报到人数、报到率的统计、报到率比例图示和未报到新生详细列表,并支持未报到新生数据的excel格式文件导出。
    2. 本届新生报到详细查询
    3. 历届新生报到详细查询
  • 分配管理

    1. 班级管理,管理人员对各个专业下班级的基本管理与维护。
    2. 智能分班,按照成绩、男女比例等因素实行的s型算法分班。

Screenshots:

new guys 1

new guys 2

new guys 3

new guys 4

new guys 5

new guys 6

new guys 7

Read More

夏天在上海等你

很久没有出去逛逛了,趁端午假期的最后一天,给自己放个假。

陆家嘴的明珠天桥下的车流永远都是那么有序,以前在杭州的时候,一直喜欢站在天桥上看下面的车流,怀念那时候的霓虹是那么美好。

陆家嘴天桥下的车流

喜欢闲坐在正大广场的大众书局里的小咖啡吧,拿几本喜欢的书,点一杯拿铁,待一个下午也不会感到满足,三分之一的意式浓缩咖啡Espresso加三分之二的蒸鲜奶,这个味道永远那么令人回味,这个味道,也是我生活中优雅的矜持。

这里的拿铁很便宜,这让我可以很廉价地坐在橱窗边,静静想你。

虽然是个小咖啡吧,却陈列着不少酒。

小咖啡吧里陈列着的酒

写写博客,看看书,闲暇之余,要充分享受生活的点滴,生活虽然孑孓并且自我,却也无所谓。突然想到了阿飞正传里的苏丽珍,她说

我已经痊愈很久了。
我想,这辈子再也不会遇到你吧。
遗忘,或者假装遗忘。
这时我忽然明白那一分钟的含义。
也许你曾经爱过我,仅仅在那一分钟。

写写博客

闲逛的时候恰巧碰到Nike在搞活动,展览了本届世界杯受Nike赞助的国家队服,作为足球狂热分子的我,怎能错过。。。

巴西

葡萄牙

当然结果就是出血买了一套。。。

Read More

诗人歌手和他的音乐灵魂

很久没有安静地坐在咖啡吧里品着咖啡,聆听sting的声音了。刚冲的拿铁温中带热,在上海这个城市,泡泡咖啡吧其实是件很有意思的事情,在这里身体和精神能放到最轻松的状态。

很早久开始喜欢Sting,因为他那沙哑、但不失细腻的声音,始终如自由不羁的云,荡漾于缈缈的空中。Sting的声音就像是来自灵魂的深处,唤起的是你对身体的思索。

sting_heart

And if I told you that I loved you
You’d maybe think there’s something wrong
I’m not a man of too many faces
The mask I wear is one
Well, those who speak know nothin
And find out to their cost
Like those who curse their luck in too many places
And those who fear are lost
I know that the spades are the swords of a soldier
I know that the clubs are weapons of war
I know that diamonds mean money for this art
But that’s not the shape of my heart
That’s not the shape of my heart
That’s not the shape……the shape of my heart

一直喜欢通彻心扉的声音,记得曾经看过一部电影,名为 Leaving Las Vigas. 尼古拉斯·凯奇和伊丽莎白·苏伤痛之作,影片体现出了一种刻骨的悲哀气氛,在华丽中显现着无尽的绝望之情。

物欲时代,良知沦丧。内心矛盾,醉生梦死。

表面上流光溢彩骨子里却肮脏龌龊的欲望之城Las Vigas,两颗绝望的心相爱了,那是迷乱的爱。真挚的爱。癫狂的爱。末日的爱。他们是存活在这黑暗世间最底层的最卑微的灵魂。他们相互温存,生死与共。

哪怕在本撒手人寰以后那种感动很快就将消失,莎拉纯净如天使的爱也将永远凝固,直到天荒地老。

“如果不是我失去了爱的能力,我想我会爱你一辈子的。”——是谁说过这句话?它飘散在深秋赌城的风里,像喁喁吹向情人的风。

离开拉斯维加斯,离开绝望的心。

Sting的Angel Eyes因为激昂而显得沙哑,但这种灵魂深处的声音,有谁, 能抵挡的住呢?

Leaving Las Vigas

So drink up all you people
Order anything you see
Have fun you happy people
The drink and the laugh’s on me

时常在无人的时候问自己, 这么多年,为了谁而活, 答案一直都很迷离,但是现在,终于好像知道了。

Read More