Hunter的大杂烩 技术学习笔记

2007-04-28

rail 1.2.3安装

Filed under: Linux — hunter @ 11:21 am

windows:

 

 

linux:

1. 下载ruby 1.8.6

    a. http://rubyforge.org/projects/ruby/

    b. tar -jxvf ruby-1.8.6.tar.bz2
    c. ./configure;make;make install

2. 安装 rubygems-0.9.2.tgz

    a. http://rubyforge.org/projects/rubygems/

    b. tar zxvf rubygems-0.9.2.tgz

    c.  cd rubygems-0.9.2
         ruby setup.rb

3. 挨个下载rail套件(only gem)

http://rubyforge.org逐个下载Rails框架所需的各个安装包,这种方法比较麻烦,但是能够保证安装成功。
需要下载的安装如下
a.activesupport-1.4.2(下载地址http://rubyforge.org/projects/activesupport
b.activerecord-1.15.3(下载地址http://rubyforge.org/projects/activerecord/
c.actionpack-1.13.3(下载地址http://rubyforge.org/projects/actionpack/
d.actionmailer-1.3.3(下载地址http://rubyforge.org/projects/actionmailer/
e.actionwebservice-1.2.3(包下载地址http://rubyforge.org/projects/aws
f.rail-1.2.3 (http://rubyforge.org/projects/rails/)

4. 按顺序install以上gem

gem install activesupport-1.4.2.gem
gem install activerecord-1.15.3.gem
gem install actionpack-1.13.3.gem
gem install actionmailer-1.3.3.gem
gem install actionwebservice-1.2.3.gem
gem install rails-1.2.3.gem

2007-04-19

patch for apache 2.0.59

Filed under: C++,Linux — hunter @ 4:01 pm

httpd-2.0.59/srclib/apr/tables/apr_tables.c

 

 /*////////////////////////////////////add by hunter */
APR_DECLARE(const char *) apr_table_get_all(const apr_table_t *t, const char *key, int *offset)
{
    apr_table_entry_t *next_elt;
    apr_table_entry_t *end_elt;
    apr_uint32_t checksum;
    int hash, tmp_offset = 0;

    if (key == NULL) {
                return NULL;
    }

(more…)

2006-10-29

使用apache反向代理功能搭建测试环境

Filed under: Linux — hunter @ 1:17 pm

需求:

1. 建立 dev, beta, gama 三级测试环境

2. gama环境的程序和页面可以发布到运营生产系统上 

3. 测试beta, gama环境时,应避免配置hosts来进行测试;

4. 测试beta, gama环境时,可以使用不同的域名来区分所处环境

(more…)

2006-09-10

从setjmp到getcontext,最后遇到了libpth

Filed under: Linux,技术话题 — hunter @ 3:13 am

最近在准备开始把系统重构一次,底层还是用app platform平台,但是
代码需要全部OO重新设计和分析一次,乘此机会,顺便把原来的设计和代码
中不合理的地方来个大扫除。
在设计的时候,遇到最大的问题,就是app platform只是一个事件驱动
的tcp server framework,单进程架构,在处理异步通信的时候,代码结构
会比较恶心:
void excute(command)
{
switch(state)
{
case start:
int iRetcode= GetUserIdRequest();
…..
state = wait_recv;
break;
case wait_recv:
int iUserId = GetUserIdResponse();
….
break;
}
}

(more…)

2006-06-02

Linux SystemV MsgQ 4K原子性的传说检查

Filed under: Linux — hunter @ 3:59 pm
看了一下内核代码,似乎linux 的sysv msgq 没有 原子操作必须 < 4k的限制,
只是在内核存储的时候,是以每块4076的切割后存储。
DATALEN_MSG == 4096 – sizeof(struct msg_msg) == 4076

asmlinkage long sys_msgsnd (int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg)
{
 struct msg_queue *msq;
 struct msg_msg *msg;
 long mtype;
 int err;
 
 if (msgsz > msg_ctlmax || (long) msgsz < 0 || msqid < 0)   return -EINVAL;  if (get_user(mtype, &msgp->mtype))
  return -EFAULT;
 if (mtype < 1)   return -EINVAL;

// 从用户空间拷贝数据到内核,同时把数据切割为DATALEN_MSG(4096 – sizeof(struct msg_msg))大小
// 每块内存用msg_msg格式组成链表形式
// 在分块拷贝时可能会被其他调用中断
(more…)
« Newer PostsOlder Posts »

Powered by WordPress