配置多台服务器时,经常需要让各个服务器之间的时间保持同步,如果服务器有外网环境,可以直接同外部的时间服务器更新时间,可以采用rdate命令更新时间:
rdate -s tick.greyware.com
可以写个脚本放在/etc/cron.hourly中每小时校正一下时间。
如果是内网环境下,可以自己配置一个时间服务器,以CentOS为例,配置时间服务器的方法如下:
1.先安装xinetd : sudo yum install -y xinetd
2.修改/etc/xinetd.d/time-stream, 修改:
disable = yes 改为
disable = no
3.启动xinetd
service xinetd start
这样其它机器就可以通过rdate 与该机器进行时间同步
rdate -s ip
Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多。这些小工具经过了几十年时间的洗礼,现在已经变成了经典,已经变成了Linux下面的标准,其实它们一直是遵循着Linux的标准。下面就让我们一起看看这些经典的Linux文本处理命令。
一. sort
文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页.
继续阅读 →
原文地址: http://rdc.taobao.com/blog/cs/?p=708
检测一台机器是否宕机的应用场景如下:
1, 工作机器宕机,总控节点需要能够检测到并且将原有服务迁移到集群中的其它节点。
2, 总控节点宕机,总控节点的备份节点(一般称为Slave)需要能够检测到并替换成主节点继续对外服务。
检测一台机器是否宕机必须是可靠的。在大规模集群中,机器可能出现各种异常,比如停电,磁盘故障,过于繁忙导致假死等。对于机器假死,如果总控节点认为机器宕机并将服务迁移到其它节点,假死的机器又认为自己还可以提供服务,则会出现多个节点服务同一份数据而导致数据不一致的情况。
继续阅读 →
你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。
继续阅读 →
phpQuery是一个用php实现的类似jQuery的开源项目,可以在服务器端以jQuery的语法形式解析网页元素。 相对于正则或其它方式匹配网页方式,phpQuery使用起来要方便的多。
在使用phpQuery采集网页时,遇到一个问题:在处理大量网页之后,phpQuery占用的内存数量非常惊人(很快就超过了1G),
比如这段代码:
while (true) {
phpQuery::newDocumentFile($htmlFile);
// 处理网页元素...
echo memory_get_usage() . "\n";
}
谨慎运行上面这段代码,它会很快用光你的内存。
经过查看phpQuery的源代码终于发现了问题所在,phpQuery在每处理一个网页就会产生一个DOMDocumentWrapper 对象,而每个DOMDocumentWrapper 对象会被保存在静态成员$documents中(phpQuery::createDocumentWrapper中),这个变量是一个数组,每解析一个网页数组元素就增加一个。
phpQuery::$documents[$wrapper->id] = $wrapper;
找到问题后,解决就很容易了,每次解析完一个网页,把phpQuery::$documents置空即可。
while (true) {
phpQuery::newDocumentFile($htmlFile);
// 处理网页元素...
phpQuery::$documents = array();
echo memory_get_usage() . "\n";
}
内存占用稳定了。
Vim编辑文本时经常会遇到需要插入一个序列(比如从10到20),或者与此类似的相关序列问题,原来没有仔细想过这个问题,总是一个个的敲。时间久了觉得这样实在太麻烦,Vim这么强大的编辑器一定要更好的方法可以解决这个问题。于时花时间思考了一下,总结了以下几种快速处理序列的方法。
例如,在第5行文本后面插入一个序列10到20(每行一个).
方法1:
将光标移到第5行,在命令模式下输入
11o<ESC> (插入11个空行)
:let i=10|g/\%>5l\%<17l/s/^/\=i/|let i+=1 (\%>5l\%<17l 意思是从第6行到16行)
这样就会得到我们想要的结果(从第6行到16行):
10
11
12
13
14
15
16
17
18
19
20
如果你想认内容在一行上,那么就将光标移到第6后,然后在命令模式下输入 1J即可。
另外一种方法 是利用宏录制与 <c-a> :
在第6行插入10,然后在命令模式下依次输入:
qq
yyp
<c-a> (ctrl+a)
q
9@q
利用这两种方法,我们可以方便生成需要的序列,以及快速处理其它一些与序列相关的问题。
另外,如果你是在Linux系统下,有一种更为方便的方法,就是在Vim中直接调用Linux的seq命令
:r !seq 10 20 (多行)
或
:r !echo {10..20} (单行)
Vim真的挺强大的。
我们知道在Linux中删除文件一般使用rm, 但是rm命令并不会真的清空保存该文件的数据块的内容,而只是释放了该文件所占用的索引节点和数据块。因此用rm删除的文件是可以通过一些方法恢复的(比如可以用debugfs恢复,具体方法Google之)。
有些时候我们要彻底删除一些文件,可以使用shred命令来实现,shred是coreutils的一部分,所以Linux中基本都会有这个命令。
shred彻底删除文件的方法:
$ shred -u file
shred会用一些随机内容覆盖文件所在的节点和数据块,并删除文件(-u参数)。
如果想清除的更彻底一点可以加-z 参数,意思是先用随机数据填充,最后再用0填充。
$ shred -u -z file
另外shred还可以清除整个分区或磁盘,比如想彻底清除/dev/sdb1分区的内容可以这样:
$ shred /dev/sdb1 (注意不要加-u参数)
shred的详细参数:
-f, --force 更改权限允许写入(如有必要)
-n, --iterations=N 重写N次,默认为3次
--random-source=FILE 从指定文件读取数据
-s, --size=N 将文件粉碎为固定大小 (可使用后缀如K、M、C等)
-u, --remove 重写后截短并移除文件
-v, --verbose 显示进度
-z, --zero - add 用0覆盖数据
–help 显示帮助
–version 显示版本信息
最近正在学习Scheme,Scheme 是 LISP 的一种方言(或者说是变种),一门非常有趣的语言,语法结构非常简单。最新的Scheme标准定义(R5RS)才50页左右。Scheme设计非常简单,但是功能非常强大。
下面介绍一些Scheme的学习资源,方便查阅。
Scheme 教程
1. Sheme语言修订报告:scheme-r5rs(英文),schem-r5rs(王咏刚翻译的中文版)
2. Structure and Interpretation of Computer Programs
简称: SICP,非常著名的一本书(中译本叫《计算机程序的解释与构造》,由裘宗燕老师翻译的),Scheme 的鼻祖 Gerald Jay Sussman 和计算机教育专家 Hal Abelson 合写的,20 年来影响整个计算机科学教育的著作,著名的 MIT 课程 6.001(计算机科学专业的入门课程) 的教材,全世界有超过100所大学在使用这本书做为教材。
3. 《How to design programs》(中译本《程序设计方法》,好像已经绝版了,我没买到:( )
Scheme 解释器和编译器
Scheme的解释器非常多,而且基本都是自由软件。
我觉得比较好用的是DrScheme(现在改名叫DrRacket了,Fedora仓库中有,叫plt-scheme,但是版本比较老,可以直接从官网上下载最新版本,也有Windows版本),带有图形界面,有语法高亮,调试,单步执行等功能。
Guile,适合做嵌入式解释器,及插件扩展语言,它是 GNU 项目的官方扩展语言,很多开源应用程序中都使 Guile 来编写脚本(比如Emacs,Gimp等)
另外bigloo, Gambit-C 和 Chicken 可以把 Scheme 编译成机器代码,提高执行速度。
Fedora中bigloo和Gambit-C可以直接yum 安装。
发表在 未分类
|
标签为 lisp, scheme
|
作者:Steve Mushero 译者:侯伯薇
总结了国内网络和游戏公司运行后端服务器过程中所得到的实践经验和教训。这些规则适用于日访问量从一万到上百万的大型系统。
在我们公司ChinaNetCloud,见过多种不同类型的网站和系统,有好也有差。其中有些系统拥有良好的服务器/网络架构,并且进行了合理的调整和监控 ;然而一般的系统都会有安全和性能上的问题,不能良好运行,也无法变得更流行。
在中国,开源的LAMP栈是最流行的网络架构,它使用PHP开发,运行在Apache服务器上,以MySQL作为数据库,所有这些都运行在Linux上。它是个可靠的平台,运行良好,是现在全球最流行的Internet系统架构。然而,我们很难对其规模进行正确的扩展并保持安全性,因为每个应用层都有其自身的问题、缺陷和最佳实践。我们的工作就是帮助企业用最低的操作成本来创建并运行高性能的、可伸缩的、安全的系统,因此对于这类问题我们有很丰富的经验。
当前的实际情况是,很多网站都是由开发人员快速而廉价地创建,通常没有任何IT人员或者经理,只是由程序员来管理系统。造成的结果是,虽然花费很低的成本网站就可以开始运行,但是当拥有大量用户、需要扩展规模的时候,通常就会面临真正的问题。毕竟,中国拥有三亿八千万的Internet用户,如果其中的0.01%访问这个站点,就很容易引发25万~50万的页面访问量。这些问题在各个级别上都会产生,下面总结的规则是对最一般的问题进行概述,并且说明为什么这些规则如此重要,以及最好采用什么方法来修正它们。遵循这些建议的站点会提高它的可伸缩性、安全性以及操作上的稳定性。
继续阅读 →
作者:Paul Graham
译者:阮一峰
英文原文:Revenge of the Nerds
一、
如果我们把流行的编程语言,以这样的顺序排列:Java、Perl、Python、Ruby。你会发现,排在越后面的语言,越像Lisp。
Python模仿Lisp,甚至把许多Lisp黑客认为属于设计错误的功能,也一起模仿了。至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。
编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。
继续阅读 →
刚刚看到了Qt labs 上宣布Qt 4.7.0正式版发布了。
和Qt 4.6相比(Qt 4.6是2009年12月1 号发布的),Qt 4.7中主要的主要改进:
Qt Quick
Qt Quick 是一种高级用户界面技术,使用它可轻松地创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。三种全新的技术共同构成了 Qt Quick 用户界面创建工具包:一个改进的Qt Creator IDE、一种新增的简便易学的语言 (QML) 和一个新加入 Qt 库中名为 QtDeclarative 的模块,这些使得 Qt 更加便于不熟悉 C++ 的开发人员和设计人员使用。
Qt WebKit 更新
Qt 4.7 包含了使 Qt WebKit 集成的稳定性和性能均得到提升的更新。
改进了性能和质量
Qt 4.7 和 Qt Creator 2.0 的发布给 Qt 开发框架和运作方式都带来了变化,旨在确保 Qt 的每一次发布都会带来速度更快、质量更好的产品:
- Qt 4.7 版将是首个由 Qt Continuous Integration 系统控制的 Qt 发布版本,该系统控制着将更改内容合入 Qt 的流程,防止了新错误的发生,并提高了产品的质量和稳定性。
- 在 Qt 开发部门内部成立了全新的性能团队,专门负责创建一套标准检查程序,用于阻止那些导致 Qt 性能下降的更改。
Qt 4.7的下载地址。
另外估计Qt Creator 2.1正式版也快要发布了,等不急的朋友可以先下个 snapshots试用下,我下载了一个感觉确实比2.0改进了不少。
本文译自Dr. Dobb’s Blogger的Walter Bright写的《Overlooked Essentials For Optimizing Code》[转载]
我编写程序至今有35年了,我做了很多关于程序执行速度方面优化的工(
一个示例),我也看过其它人做的优化。我发现有两个最基本的优化技术总是被人所忽略。
注意,这两个技术并不是避免时机不成熟的优化。并不是把冒泡排序变成快速排序(算法优化)。也不是语言或是编译器的优化。也不是把 i*4写成i<<2 i*4的优化。
继续阅读 →
开场白:最近公司招人,接触了一批形形色色的工程师,但感觉绝大多数人基础都很差,在某次TL的讨论之后,就想到了写一个《面试宝典》系列。
卷首语:这个《面试宝典》名字是我一贯的标题党风格,其实在内容上都是很简单、很基础的——都是那种“不知道这些就别出来混”的知识点。所以,高手/牛人可以到此打住了——端咖啡——送客~~~
作/译序:此文可能会持续更新直到补充得比较完整为止,有什么要补充的欢迎留言
继续阅读 →
前两天写了一篇文章:Linux命令行下更改桌面背景(GNOME环境),这几天刚好看到了搜道网站的美女时钟,上面的美女图片是每分钟换一次,想了想要是能把上面的报时的美女图片当做桌面,为你报时,岂不是很好玩?
于是研究了下那个网站,写了个Shell脚本,实现了上面的想法,脚本如下:
继续阅读 →
发表在 shell
|
标签为 gnome, shell
|