Puppet: 强大的中心化配置管理系统

在看"首届中国互联网运维高峰论坛"里好乐买(http://www.okbuy.com)自动化运维实践的pdf文档的时候,发现他们提到一个自动安装多台服务器的python开源软件.说有以下优点:

• 基于python的开源软件
• 快速(<10分钟)设置安装服务器
•支持Linux,不支持BSD
• Dell,Redhat等公司在用它

不知这个是什么软件的????

 

目前知道的是比下面的软件支持FreeBSD这点的,其它的没有比较.

在pdf文档后面提到一个软件名称是"Puppet",在网上查找了一篇文章,转过来,mark一下.(以前用过linux下的ghost软件,见本blog以前整理的一篇文章,是基于FreeBSD下做的.利用g4u备份与恢复UNIX系统.) Continue reading

提高代码可读性的十大注释技巧

很多程序员在写代码的时候往往都不注意代码的可读性,让别人在阅读代码时花费更多的时间。其实,只要程序员在写代码的时候,注意为代码加注释,并以合理的格式为代码加注释,这样就方便别人查看代码,也方便自己以后查看了。下面分享十个加注释的技巧:

1. 逐层注释

为每个代码块添加注释,并在每一层使用统一的注释方法和风格。例如:

针对每个类:包括摘要信息、作者信息、以及最近修改日期等;

针对每个方法:包括用途、功能、参数和返回值等。

在团队工作中,采用标准化的注释尤为重要。当然,使用注释规范和工具(例如C#里的XML,Java里的Javadoc)可以更好的推动注释工作完成得更好。

2. 使用分段注释

如果有多个代码块,而每个代码块完成一个单一任务,则在每个代码块前添加一个注释来向读者说明这段代码的功能。例子如下: Continue reading

redis入门教程

window平台下的redis dll文件下载:https://github.com/char101/phpredis/downloads

Redis 根据 5 种不同的数据类型来操作数据对象:

String(字符串)
Sets(集合)
zsets( 排序后的sets集合)
List(列表)
hash(哈稀)

操作 String 类型的值:

Command Parameters Description
SET key value Set a key to a string value
GET key Return the string value of the key
GETSET key value Set a key to a string returning the old value of the key
MGET key1 key2 ... keyN Multi-get, return the strings values of the keys
SETNX key value Set a key to a string value if the key does not exist
SETEX key time value Set+Expire combo command
MSET key1 value1 key2 value2 ... keyN valueN Set multiple keys to multiple values in a single atomic operation
MSETNX key1 value1 key2 value2 ... keyN valueN Set multiple keys to multiple values in a single atomic operation if none of the keys already exist
INCR key Increment the integer value of key
INCRBY key integer Increment the integer value of key by integer
DECR key Decrement the integer value of key
DECRBY key integer Decrement the integer value of key by integer
APPEND key value Append the specified string to the string stored at key
SUBSTR key start end Return a substring of a larger string

Continue reading

is not in the sudoers file. This incident will be reported的解决办法

在一般用户下执行sudo命令提示xxx is not in the sudoers file. This incident will be reported.解决方法:

$whereis sudoers
/etc/sudoers

有时候我们只需要执行一条root权限的命令也要su到root,是不是有些不方便?这时可以用sudo代替。默认新建的用户不在sudo组,需要编辑/etc/sudoers文件将用户加入,该文件只能使用visudo命令,

1) 首先需要切换到root, su - (注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用乎的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样)

2) 然后 visudo 或者 vim /etc/sudoers, visudo 这个和vi的用法一样,由于可能会有人不太熟悉vi,所以简要说一下步骤

移动光标,到一行 root ALL=(ALL)   ALL 的下一行,添加一行

your_user_name ALL=(ALL)   ALL

然后保存退出! Continue reading

linux的vm相关参数介绍

1. 保证linux有足够的物理内存,可以调整vm的如下参数

vm.min_free_kbytes=409600;//默认值是3797,保证物理内存有足够空闲空间,防止突发性换页
vm.vfs_cache_pressure=200;//默认是100,增大这个参数设置了虚拟内存回收directory和i-node缓冲的倾向,这个值越大。越易回收
vm.swappiness=40 //缺省60,减少这个参数会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存

一般在rac的配置环境中配置这三个参数,可以防止换页引起节点短暂无响应,导致节点重启
2. 改善io系统的性能
overcommit_memory = 0
vm.overcommit_ratio = 10 //默认值是50,用于虚拟内存的物理内存的百分比
vm.dirty_ratio = 20 //默认值是40,为了保持稳定,持续的写入,把这个值调整的小一些,经验值是20 Continue reading

Redis作者谈Redis应用场景

毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对相似功能的数据库时,把精力放在怎么把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。

下面是一篇新鲜出炉的文章,其作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览:

对于对Redis不懂的可以参考redis入门教程:http://blog.haohtml.com/archives/10174

1.取最新N个数据操作

比如典型的取你网站的最新文章,比如通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取

  • 使用LPUSH latest.comments<ID>命令,向list集合中插入数据
  • 插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID
  • 然后我们在客户端获取某一页评论时可以用下面的逻辑(伪代码)
FUNCTION get_latest_comments(start,num_items):
    id_list = redis.lrange("latest.comments",start,start+num_items-1)
    IF id_list.length < num_items
        id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
    END
    RETURN id_list
END

如果你还有不同的筛选纬度,比如某个分类的最新N条,那么你可以再建一个按此分类的List,只存ID的话,Redis是非常高效的。 Continue reading

git常用命令总结[原创]

txt笔记一篇:git常用命令点击查看
深入理解学习Git工作流(git-workflow-tutorial)http://segmentfault.com/a/1190000002918123
以下教程主要参考"Git-tutor(Git使用指南):http://blog.haohtml.com/archives/9066"实用指南而整理,第3章几乎直接在复制过来的.
相关教程:

第一章 Git的基本操作方法

一.初始化仓库

git init

此时会在当前目录*假如为($WORK)生成一个.git的目录文件.这个.git目录就是Git仓库.其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。工作树是包含 .git 的目录$WORK.如图所示

如何查看自己的电脑是否是64位?

2种方式:
一、开始>运行中输入“cmd”,然后在命令提示符窗口中输入“systeminfo”,如果您的系统是64位的,会在
“OS 名称: Microsoft Windows XP Professional” 一行后明确标示出“x64 Edition”,否则您的系统就是32位的。

这个命令比较实用的,值很收藏.

二、开始>运行中输入“winver”,如果您的系统是64位的,同样会明确标示出“x64 Edition”。