技术人员如何”正确”的浪费时间?

iPhone产品用户要浪费时间,你就应该这样做:买个有锁的 iPhone ,每天刷几百次威锋网等待越狱或解锁,看到新 App 就安装,程序提示更新立刻升级;有新的固件(哪怕是 β 版)就压制不住升级的欲望;每次 WWDC 提前几个礼拜就关注,坚持看完所有 Keynote 和文章,然后到 Twitter 或是微博发表评论,再在微博上收听苹果产品有关的 ID…

Linux 操作系统用户如果要浪费时间,你就应该这样做:编译一个”更快”的内核;通过源代码编译 Firefox / Chromium ;反复调整字体;不停的美化桌面;闲着没事就跑一下APT更新一下程序;和 Windows 用户打嘴仗;

Windows 操作系统用户如果要浪费时间,你就应该这样做:安装杀毒软件并且按照提示更新;定期扫描病毒和木马;安装个360,不停根据提示更新软件,优化系统,每天查看开机速度击败了全国多少的电脑;重新安装操作系统;跟 Linux 用户和 Mac 用户打嘴仗;

开发人员如果要浪费时间,你就应该这样做:不停的寻找一个更趁手的编辑器,反复尝试不同的配色;尝试最新的语言;买个更好的显卡”挖矿”–bitcoin;和其它语言用户打嘴仗;

Mac 用户如何浪费时间?在Mac上跑一个Windows 虚拟机,再跑一个 Linux 虚拟机;上网购物用Windows,写代码用Linux;Mac OS X?不用。

恭喜你,这些都是”正确”浪费时间的办法。

修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets

新增的一组Apache服务器上线以来,我用netstat -an命令发现服务器中有大量状态为TIME-WAIT的TCP连接,于是用/sbin/sysctl -a查看了一下Linux的各项内核参数,并翻阅有关资料,决定修改其中的两项参数,以达到减少TCP连接中TIME-WAIT sockets的目的。

vi /etc/sysctl.conf
编辑/etc/sysctl.conf文件,增加三行:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

说明:
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

再执行以下命令,让修改结果立即生效:
/sbin/sysctl -p

用以下语句看了一下服务器的TCP状态:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

返回结果如下:
TIME_WAIT 300
CLOSE_WAIT 10
FIN_WAIT1 8
FIN_WAIT2 14
ESTABLISHED 835
SYN_RECV 4

效果:处于TIME_WAIT状态的sockets从原来的1000多减少到300左右。处于SYN_RECV等待处理状态的sockets为4,原来的为50~300。

实用的Linux/Unix快捷键大汇总

实用的Linux/Unix快捷键大汇总,近期在工作中发现,许多同事,尤其是我们的开发者,基本不会用Linux/unix下的快捷方式,严重影响工作效率,所以特撰写此文,每个用法后我会详细注释。

下述所有命令在Linux/unix的shell下有效,这里以bash为主。如有出入,以你自己的服务器为准。本文所指的Linux主要指RHEL/CentOS,unix指的是FreeBSD,这也是服务器中用得最多的版本。

Ctrl + a 切换到命令行开始

这个操作跟Home实现的结果一样的,但Home在某些unix环境下无法使用,便可以使用这个组合;在Linux下的vim,这个也是有效的;另外,在windows的许多文件编辑器里,这个也是有效的。 Continue reading 实用的Linux/Unix快捷键大汇总

为什么Linux到现在也不能双击安装软件

看最近互联网上的评论,有一位仁兄矢志不渝的重复“世界上最差的系统就是linux,双击不能安装软件”,而对于该评论的观点众多,但是真正正确的确极少。综合来看,广大网友尤其是喜欢评论的盆友对Linux理解的还比较少,而且很多都是跟Windows做比较(当然这里我承认高手也大有人在),所以我想在这里有必要说一下为什么Linux到现在也不能做到双击安装软件。

首先要说一下,很多Linux的发行版例如Ubuntu或者CentOS、Fedora等,已经早就可以双击安装自己发行版的安装包了,例如deb、rpm等。
那么为什么现在大部分软件还是需要下载一个tar.gz然后./configure/make/make install繁琐的命令安装呢?

其实,Linux下跟Windows的软件发布有一个最大的不同就是Linux下大部分软件都是开源的,只提供源码下载,不提供编译好的二进制下载。所以,上面的三个命令实际上是编译一个软件,然后拷贝到系统对应目录,准确来说不是安装。

但是为什么非要这三个命令,而不是双击之后自动执行上述三个命令呢? Continue reading 为什么Linux到现在也不能双击安装软件

在Centos上安装独立运行的subversion

市面上大多是使用Apache来建立一个仓库,但是,不用apache的项目其实是很多的,所以建立一个独立运行的Subversion仓库是很有必要的,建立一个独立运行的Subversion仓库相当简单,几步操作就可以完成。

首先当然是安装:
yum install subversion

接下来创建一个系统用户并修改它的口令:
useradd svn
passwd svn

然后我们切换到这个用户,创建仓库目录:
su svn
cd
mkdir repositories

对仓库目录进行初始化,创建第一个项目:
cd repositories
svnadmin create myproject

然后,让我们修改一下这个项目的参数,将conf目录中的svnserve.conf配置文件中被注释掉的两项修改如下,很显然,第一项的意思是允许验证用户写入,第二项的意思是指定密码验证方式:
auth-access = write
password-db = passwd

然后我们添加用户,修改conf目录下的passwd文件就可以了,这个文件中,用户名和密码都是明文的,例如我们添加一个用户gfw,密码是fuckfbx,格式应该如下:
[users]
gfw = fuckfbx

然后就很简单了,运行这行命令,或者将这行命令加入rc.local以便开机启动:
svnserve -d -r /home/svn/repositories

在Solaris10上使用VNC

可以去sunfreware下载二进制包,或者去www.realvnc.com下载一个免费版本的来安装,安装几乎没有任何难度。

启动vncserver的时候,由于没有设置可执行文件的Bin路径,会提示找不到相关可执行文件,需要进行link

系统环境solaris 10-u6
$ su
# bash
# vnc
vncconfig vncpasswd vncserver vncviewer
# vncserver
vncserver: couldn’t find “xauth” on your PATH.
# ln -s /usr/openwin/bin/xauth /usr/bin/xauth
# vncserver
vncserver: couldn’t find “xauth” on your PATH.
# ln -s /usr/X11/bin/Xvnc /usr/bin/Xvnc
# vncpasswd
Password:
Verify:
#vncserver

使用负载均衡技术建设高负载的网络站点

Internet的快速增长使多媒体网络服务器,特别是Web服务器,面对的访问者数量快速增加,网络服务器需要具备提供大量并发访问服务的能力。例如 Yahoo每天会收到数百万次的访问请求,因此对于提供大负载Web服务的服务器来讲,CPU、 I/O处理能力很快会成为瓶颈。

简单的提高硬件性能并不能真正解决这个问题,因为单台服务器的性能总是有限的,一般来讲,一台PC服务器所能提供的并发访问处理能力大约为1000个,更 为高档的专用服务器能够支持3000-5000个并发访问,这样的能力还是无法满足负载较大的网站的要求。尤其是网络请求具有突发性,当某些重大事件发生 时,网络访问就会急剧上升,从而造成网络瓶颈,例如在网上发布的克林顿弹劾书就是很明显的例子。必须采用多台服务器提供网络服务,并将网络请 求分配给这些服务器分担,才能提供处理大量并发服务的能力。

当使用多台服务器来分担负载的时候,最简单的办法是将不同的服务器用在不同的方面。按提供的内容进行分割时,可以将一台服务器用于提供新闻页面,而另一台 用于提供游戏页面;或者可以按服务器的功能进行分割,将一台服务器用于提供静态页面访问,而另一些用于提供CGI等需要大量消耗资源的动态页面访问。然而 由于网络访问的突发性,使得很难确定那些页面造成的负载太大,如果将服务的页面分割的过细就会造成很大浪费。事实上造成负载过大的页面常常是在变化中的, 如果要经常按照负载变化来调整页面所在的服务器,那么势必对管理和维护造成极大的问题。因此这种分割方法只能是大方向的调整,对于大负载的网站,根本的解 决办法还需要应用负载均衡技术。

负载均衡的思路下多台服务器为对称方式,每台服务器都具备等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。然后通过某种负载分担技术,将外部 发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。由于建立内容完全一致的Web服务器并不复杂,可以使 用服务器同步更新或者共享存储空间等方法来完成,因此负载均衡技术就成为建立一个高负载Web站点的关键性技术。 Continue reading 使用负载均衡技术建设高负载的网络站点

CentOS称RHEL 6.1发布不会影响CentOS 6进度

在RHEL 6.1发布之后,CentOS团队也第一时间得知了这个消息。很多CentOS的关注者担心这次的新发布是否会影响CentOS 6的进度,因为RHEL 6在2010年11月发布,至今已经经过了6个月的时间,而CentOS 6迟迟没有发布,让CentOS的关注者们十分担心。

RHEL 6.1发布的当天,CentOS管理组的Karanbir Singh在其博客上表示,RHEL 6.1的发布不会影响CentOS的现有开发进度。团队将仍然按照计划先推出CentOS 6,然后再进行CentOS 6.1的工作。Karanbir表示CentOS 6将在未来的数个星期内发布,而之后的CentOS 6.1只需要几个星期的时间,因为目前CentOS 6的开发branch的自动化和测试流程已经基本完善。

Karanbir还表示,如果这段时间内RHEL 5.7发布了,那么也没有关系,因为CentOS 5的进程和CentOS 6的进程已经完全分离,各自进行,互相之间不会形成干扰。

这对于期待CentOS 6的朋友们无疑是个好消息!感谢CentOS团队无私的奉献。

 

微软 Hyper-V 软件将支持 CentOS

虽然长期以来微软一直是Linux社区的公敌,但如今软件巨人却试图拓展一直由Linux统治的Web server市场。

今天微软宣布它的虚拟化软件Hyper-V将正式支持CentOS Linux,即基于RHEL的社区发行版。用户可以使用最新版本的 CentOS 部署微软的 Hyper-V 系统。CentOS 是第三个正式支持微软 Hyper-V 的 Linux操作系统,另外两个是 Red Hat Enterprise Linux 和 Suse Linux Enterprise Server。

微软现在也注意到CentOS在Web服务器市场的受欢迎程度,它宣布Windows Server2008 R2 Hyper-V将能运行CentOS,以巩固服务器合作伙伴的信心,降低在Windows Server Hyper-V上Windows + Linux混合架构的成本和复杂程度。

微软开源解决方案经理 Sandy Gupta 透露选择 CentOS 是因为 CentOS 是最多网页寄存公司使用的操作系统。

微软近期似乎愈来愈看重开源系统的重要性,这次微软的举动除了再一次证明开源操作系统在商用方面的影响力及重要性之外,微软似乎也明白了要令其所提供的数据中小方案更完善,便要扩充其支持的操作系统,包括 Windows、Linux 以及 Mac OS。

 

Windows恶意软件20年“创新”史

在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹出一些含有令人费解内容的对话框。现今,Windows恶意软件能够锁定你的数据,劫持它并且向你索要赎金。它控制你的PC对外发动攻击,寻找含有银行卡号码和口令的文件,这真是令人讨厌的东西。

20年间,Windows恶意软件造就了许多价值数几十亿美元的杀毒公司,赋予足以装满亚历山大大图书馆的文章以灵感,为成千上万的安全专业人士创造了职位,并给人们带来无穷无尽的烦恼。

这些讨厌的程序不是一夜之间从初学走路的孩子变成打遍天下无敌手的恶棍的。恶意软件的成长有着清晰的继承性,其手段、方法和目标随着时间的发展而不断变化。如同任何技术一样,创新的思想指引着恶意软件的前进道路。让我们看一看为达到邪恶目的的创造力是如何将Windows黑客技术变成价值数十亿美元的产业的,以及Windows恶意软件的成长足迹指向了未来的何处。 Continue reading Windows恶意软件20年“创新”史