windows ssh client

Posted by wxianfeng Sat, 31 Jul 2010 04:25:00 GMT

如果你是命令行爱好者,我想ssh应该是你用的最多的工具了,那么在windows有好的ssh client吗,个人用过下面三个client,总结下来,力荐 secureCRT ,

1, putty

download:
http://www.newhua.com/soft/2186.htm

比较简单 , 小巧, 免费 , 支持语法高亮, 单tab , 值得推荐, 适合服务器 机器不多的情况下使用 , 如果你需要同时连接 多个 电脑的话 , 那么用起来就麻烦了

2,ssh secure shell client

download:
http://www.onlinedown.net/soft/20089.htm

免费, 也是单标签 , 默认没有语法高亮 , 同时 带了 ssh 文件上传功能 , 如果你需要上传文件 , 又需要 命令行管理服务器 , 那么 ssh secure shell client 还是不错的

3,SecureCRT

download:
http://www.onlinedown.net/softdown/46646_2.htm

最后推荐secureCRT ,默认不支持 语法高亮, 杀手锏的是支持多标签和rz上传,sz下载功能,可以保存会话状态(密码), 还有就是不免费, 但是晚上破解版的 到处都是 , 下载后 更改 一些配置 ,例如,语法高亮等,配色, 用起来还是很
爽的。。。

centos 中的支持VIM高亮配置 和 中文乱码解决:

(1),在SecureCRT中设置 选项→会话选项→终端→仿真→终端:Linux,选中ANSI Color,全局设置的话,选择 选项→ 全局选项 设置即可

(2), 选项 → 会话选项 → 外观 修改字符编码为 UTF-8 (很重要,必须设置)

(3),

>vim /etc/vimrc
syntax on # 添加语法高亮 开启
set encoding=utf-8 # 修改编码为 utf-8

服务器端是ubuntu的话 , CRT 使用 rz,sz 命令的话,必须安装 lrzsz

sudo apt-get install lrzsz

centos :

yum install lrzsz

mac:

>wget ftp://ftp.kfki.hu/pub/Sun/freeware/SOURCES/lrzsz-0.12.20.tar.gz
>tar -zvxf lrzsz-0.12.20.tar.gz
>cd lrzsz
>./configure --prefix=/usr/local/lrzsz
>make
>make install
>ln -s /usr/local/lrzsz/bin/lrz /usr/bin/lrz
>ln -s /usr/local/lrzsz/bin/lsz /usr/bin/lsz

rz 上传到当前目录,sz下载到 user目录下 ,例如: C:\Users\Administrator\Downloads

SEE:
http://blog.s135.com/post/207/
http://tuhaitao.javaeye.com/blog/504919


Ruby 两数组分组求和

Posted by wxianfeng Sat, 24 Jul 2010 11:56:00 GMT

环境 : ruby 1.8.7

今天我有一个这样的需求,例如,a=[1,2,1] , b= [10,20,30] 数组b中的项是a项对应的值 , 现在要求出a数组中相同项的的和(值对应b的数组) , 例如数组a,b的最后结果是 {1=>40,2=>20}

在ruby的Arrray的方法中 没有找到对应的方法, 就自己写了个,用 ruby已有的方法堆砌起来的, 自认为比较繁琐,望高人指点

# DEMO : [1,2,3].sum => 6
#        [1,2,3].sum { |s| s*2  } => 12
class Array
  #  def sum
  #    inject { |sum,n| sum + n }    #    self.reduce(&:+)
  #  end

  # Rails 里Array的sum方法源码
  def sum(identity = 0, &block)
    if block_given?
      map(&block).sum(identity)
    else
      inject { |sum, element| sum + element } || identity
    end
  end
end

class Hash
  # demo :
  # a = [1,2,1,3]
  # b = [10,20,30,50]
  # Hash.group_sum(a,b) =>  {1=>40,2=>20,3=>50}
  def self.group_sum(arr1,arr2)
    hsh = {}
    hsh2 = {}
    arr1.uniq.each do |ele| 
      arr = []
      arr1.each_with_index do |val,index|
        arr << index if val == ele
      end
      hsh[ele] = arr
    end
    values = []
    hsh.each do |k,v|      
      sum = v.inject(0) { |s,x| s+arr2[x] }
      values << sum
    end
    hsh2 = Hash[arr1.uniq.zip(values)]
    hsh2
  end
end

rails + mongodb 入门demo

Posted by wxianfeng Thu, 15 Jul 2010 17:49:00 GMT

NoSQL 渐渐火了起来,最近同事也在讨论这个问题,一不做,二不休,就学习了下,mongodb是采用C++写的,开源,免费,目前已经有公司(10gen)在背后提供商业支持,文件之小,windows下载二进

制包解压后是45M左右,linux下的就更小了,读写操作性能之高,即使是在大数据量,大并发的情况下,也能保持良好的性能,可以索性,例如可以结合memcached,sphinx使用,哇。。。cool。。。
这两天利用mongodb + sinatra 做了个短地址服务网址,当然只是自娱自乐一把而已,domain太ugly了,地址是 http://url.wxianfeng.com,这编来介绍

rails中使用mongodb的入门教程,是railscasts上的那篇教程,但是有许多注意点,在此重点指出。
在开始这个demo前,如果你对mongodb还不熟的话,建议先学习下mongodb,就想先学习下mysql 一样,掌握一些基本的操作过程
我的环境:windows xp + rails 2.3.5 + mongodb 1.4.4 + mongo_mapper 0.8.2

1,安装需要的gem包

gem install mongo_mapper

如果顺利的话,可以安装成功,并且包依赖的其他gem也都同时安装上了 , 例如我在美国的linode服务器上,直接执行上面命令,就安装成功了,但是在大陆无法安装成功,至少我是经过下面的安装步

骤成功的:

gem install jnunemaker-validatable --source http://gemcutter.org
gem install bson --source http://rubygems.org
gem install mongo --source http://gemcutter.org
gem install plucky --source http://gemcutter.org
gem install mongo_mapper --source http://gemcutter.org

2,新建rails工程,修改你的enviroment.rb

config.gem "mongo_mapper",:source=>"http://gemcutter.org"
config.frameworks -= [:active_record] # - 代表不加载 active_record

在这里需要注意,当你需要使用scaffold生成代码时,必须把 – 给去掉,来加载active_record,因为scaffold默认需要使用activerecord,当你开启server时,再把 – 号给加上

4,修改 database.yml

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: trade_supplier_development
#  pool: 5
  username: root
  password: root
#  socket: /var/run/mysqld/mysqld.sock
  host: localhost

需要保证mysql的username,和 password正确,还是为了能使用 scaffold

5,添加 配置,在 config/initializers 下新建 mongo_config.rb

MongoMapper.database = "todo-#{Rails.env}"  

配置连接时的db name,start server时不会建立 db,当插入数据时会 同时建立 db 和 collection

6,修改Model

class Project 
  include MongoMapper::Document
  key :name, String, :required => true
  key :priority, Integer
  many :tasks 
end
class Task 
  include MongoMapper::Document
  key :project_id, ObjectId
  key :name, String
  key :completed, Boolean
  belongs_to :project
end

核心部分就是Model部分,db中的字段是根据 key来动态改变的,没有shama,没有migrate,当你添加新的key时,原有的数据不会改变,上面的两个model是1对多的关系,例如mongo——mapper 可以来

实现 1对1,1对多,多对多的关系,并且和 activerecord操作非常之相像

7,启动 mongodb
进入mongodb bin 目录下

mongod.exe --dbpath E:/mongodb/data

8,启动server

thin start

这一步会提示安装 bson_ext gem包, 我在linux中安装成功了,在windows无法顺利安装,貌似只能在UNIX中安装,需要make编译,但是只要你安装bson包,程序都可以顺利跑起来,BSON是json的binary

形式,这样会节省存储空间,最重要的是减少网络消耗

9,ok

http://localhost:3000/projects 瞧瞧

DEMO源码下载:
http://www.uushare.com/user/fl1429/file/3274129

See:
http://asciicasts.com/episodes/194-mongodb-and-mongomapper


centos 5.5 install svn server

Posted by wxianfeng Wed, 14 Jul 2010 17:10:00 GMT
为了个人的项目代码的同步,例如我在公司写的代码,回家后还能继续同步写下去,在我的VPS上搭了个svn server,搭建步骤:

1,安装subversion

yum update 
yum install subversion

3,创建和配置代码仓库

cd /usr/local/system
svnadmin create vcs

# 配置工程
vim vcs/conf/svnserve.conf
# 取消掉如下两行的注释
# auth-access = write
# password-db = passwd
 
# 配置该工作的用户与密码
vim vcs/conf/passwd
[users]
wxianfeng = 12345

4,启动svn server

cd /usr/local/system
svnserve -d -r vcs

5,导入工程

svn import wxianfeng_com svn://173.230.155.150/wxianfeng_com  -m "first import" --username wxianfeng --password 12345 # 远程 或本机导入
svn import wxianfeng_com file:///localhost/wxianfeng_com # 本机导入

前面的wxianfeng_com 是本地的文件夹,后面的wxianfeng_com 是svn仓库的project name , 或者你可以借助netbeans,eclipse带的svn客户端直接导入netbeans中或eclipse中的project到svn仓库中

6,checkout项目

svn co svn://173.230.155.150/wxianfeng_com

以上就可以做到一个仓库,多个项目的目的了,当有另外一个project时,直接import即可,如果想删除仓库中的某个工程,可以执行delete命令

svn delete svn://173.230.155.150/wxianfeng_com -m "delete project"

See:
http://www.tonyspencer.com/2007/03/02/setup-a-subversion-server-in-4-minutes/
http://blog.itmem.com/archives/1207


centos 5.5 安装 php + phpmyadmin

Posted by wxianfeng Thu, 08 Jul 2010 17:48:00 GMT

这几天真是和phpmyadmin有缘啊,老是和他接触,今天又在我的linode VPS上搭建了个phpmyadmin,用来管理mysql数据库,装好后才猛然发现我的数据库中中文全部是乱码,但是rails读出来后是中文,也就是大家看到我现在的这个blog是中文,但是mysql里是乱码,看了下所有的编码都是utf-8形式,诡异的问题,这个问题比较棘手,必须解决。但是今天写的是 centos 5.5 上如何搭建phpmyadmin ,和其他系统的安装的大同小异

1,安装php

yum install php – enablerepo=centosplus

注意 – 和 enablerepo 之间有个空格 , 加上 – enablerepo=centosplus 为了安装到5.x的php,如果直接 yum install php 的话 , 则安装的是php 4.x 系列

以后更新php 可以执行下面的命令:

yum update php –enablerepo=centosplus

结束后 可以用 php -v 查看安装的版本信息

2,安装phpmyadmin

到phpmyadmin官网下载 phpmyadmin , 注意下载的版本 必须注意支持的mysql 和 php 版本

我用的是 2.1 版,安装和配置过程:

>cd /usr/local/system # 进入到该目录下,这个一般是我的工作目录,你可以任意指定 
>wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/2.11.10/phpMyAdmin-2.11.10-all-languages.tar.gz?use_mirror=cdnetworks-kr-1&27689465 # 下载 phpmyadmin
>tar -zvxf phpMyAdmin-2.11.9.5-all-languages.tar.gz # 解压
>mv phpMyAdmin-2.11.9.5-all-languages phpmyadmin # rename
>cp config.sample.inc.php config.inc.php
>vi config.inc.php
$cfg['blowfish_secret'] = ‘TypeAnything_for_Secure’; # 找到 $cfg['blowfish_secret']  值为后面的值
>vi /etc/httpd/conf.d/phpmyadmin.conf
Alias /phpmyadmin /usr/local/system/phpmyadmin # 添加该代码

3,配置apache的端口

>vi /etc/httpd/conf/httpd.conf
Listen:8080 # 修改Listen 端口为 8080

4,重启 apache

service httpd restart
>netstat -antup # 可以查看端口启动情况

5,访问phpmyadmin

http://localhost:8080/phpmyadmin

报错,php 不能加载 mysql 模块 ,因为 php 没有安装 mysql 扩展,安装之:

>yum install php-mysql - enablerepo=centosplus

再次访问 phpmyadmin .OK 成功了

tips:
登录phpmyadmin出现下面错误 #2002 Cannot log in to the MySQL server
修改config.inc.php 的localhost 为 127.0.0.1 即可

>vim config.inc.php

我的phpmyadmin地址:
http://wxianfeng.com:8080/phpmyadmin

See:
https://www.sevenl.net/blog/how-to-install-lamp-phpmyadmin-and-vsftp-on-centos-5-3-using-yum/
http://imthi.com/blog/linux/install-or-update-php-5-on-centos.php