yum安装Nginx

之前的Nginx的YUM源不能用了,本想着去Nginx官方网站去手工安装一下,但是发现nginx的官方也提供源的维护了。

Pre-Built Linux Packages for Stable

To enable automatic updates of Linux packages set up the yum repository for the RHEL/CentOS distributions, or the apt repository for the Debian/Ubuntu distributions.

To set up the yum repository for RHEL/CentOS, choose the corresponding nginx-release package from the list:

This package contains yum configuration file and a public PGP key necessary to authenticate signed RPMs. Download and install it, then run the following:

yum install nginx

Alternatively, a repository configuration can be added manually without installing the nginx-release package. Create the file named/etc/yum.repos.d/nginx.repo with the following contents:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

Replace “OS” with “rhel” or “centos”, depending on the distribution used, and “OSRELEASE” with “5” or “6”, for 5.x or 6.x versions, respectively.

For Debian/Ubuntu, in order to authenticate the nginx repository signature and to eliminate warnings about missing gpg key during installation of the nginx package, it is necessary to add the key used to sign the nginx packages and repository to the aptprogram keyring. Please download this key from our web site, and add it to the apt program keyring with the following command:

sudo apt-key add nginx_signing.key

 

For Debian 6 append the following to the end of the /etc/apt/sources.list file:

deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx

 

For Ubuntu 10.04 append the following to the end of the /etc/apt/sources.list file:

deb http://nginx.org/packages/ubuntu/ lucid nginx
deb-src http://nginx.org/packages/ubuntu/ lucid nginx

 

For Debian/Ubuntu then run the following commands:

apt-get update
apt-get install nginx

如此一来方便很多,因为我是centos5系统,所以还是

rpm -Uvh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm
yum -y install nginx

Linux 用户密码只验证前8位

今天检查了一下自己的服务器,发现有个相当无解的隐患,那就是root密码只需要输入前八位便可以登录了……

虽然说8位从一定程度上就够用了,但是这也太悲催了吧。

我们要想增加密码强度,那么就需要修改一下加密方式了,

首先查看你的方式

more /etc/pam.d/system-auth

 

我们可以看到 password的加密方式为md5 ,如果不是md5或者sha512的加密需要注意了,自己验证一下是不是只需要输入前八位即可:)

使用命令

authconfig --passalgo=sha512 --update

或者

authconfig --passalgo=md5 --update

然后使用 passwd 修改你的密码。

tmsp轻量级J2EE框架第一次压测

由于资源的有限,J2EE传统的框架已经超过了我们对资源的预期,无奈只能转向底层的原始开发,自己写了轻量级的框架。

其实这个框架我们一直说轻量级,到底能多轻,另外我们能不能保证服务保证。

今天做了一下压力测试。

系统Centos5.7 内存256M CPU:Intel(R) Xeon(R) CPU E31230 @ 3.20GHz ×2

系统环境 mysql5.0 默认配置100链接, tomcat7 bio模式,默认链接,Nginx1.0 默认链接

Nginx前端,tomcat7一个作为后端。

并发测试:

第一次,并发100,10分钟,执行6分钟,丢失6次,CPU在3% 内存占用100M左右,系统框架无压力。

第二次,并发500,10分钟,执行完毕,丢失2次 CPU在3%,内存占用150M左右,系统框架无压力。

目前在增加数据库记录9770条,做第三次压力测试。稍后放出。

互联网产品:死于方向,毁于节奏

与传统行业相比,互联网是一个节奏变化较快的行业。进入互联网这些年,成功的经历没怎么碰到过,不过失败的,死得轰轰烈烈的案例不仅看到过,而且还真真切切的经历过。说起来,的确象马云同志说的那样,成功的方法千千万万,而失败的原因就那么几个。见过的这些死掉的项目,主要的原因在于:毁于方向,死于节奏!

死于方向
首先,来说说方向。俗话说男怕入才行,女怕嫁错郎,搞互联网方向太重要,要是挑错了方向,而中途灵活度又不够,不能即时调整的话,只会死得很难看。
比如这几天,看到毕胜发的牢骚,对于搞B2C,总觉得是自己入错了行。不过,对于方向这个问题,需要加以区分。某些方向,对于一些人来讲是对的,但是对于另外一些人来讲,可能就不对,因为大家进入的时机不同,所掌握的资源不一样,结果也将大不同。就B2C这个事情,对于毕胜来讲,可能是错的,但是对于刘强东来讲,就是对的。
1、团购的泡沫
首先说一个大家都比较熟悉的,团购。团购最近是出尽了风头,但是对于大多数人来讲,这可能是永远也得不到结果的一个行业。就象团购刚刚进入中国的时候,我在《深入解读Groupon新型团购》讲的一样,单纯的团购平台将很难有竞争力,因为平台对于消费者及商家都缺乏粘性,不过却是一种很好的交叉补贴手段。当时就建议对于大众点评网等,不宜通过此模式直接获利,更好的策略是对此业务进行补贴,让消费者及商家的利益最大化,从而增强平台的粘性,最终可通过其它方式获利。
最终的结果是,淘宝的聚划算成了最大的团购平台,身边有些朋友以前是不上淘宝的,自从有了个聚划算之后,上淘宝的积极性大大的提升了,上聚划算多了,在淘宝上买其它的东西也就多了起来。而另外一些独立的团购平台,以后会怎样,对于大多数人来讲,几乎只能是等死而已!
2、B2B领域的炮灰
说完团购,再来说说B2B。一直以来都在B2B这个圈子里呆着,对这个行业最为熟悉。看到太多的公司犯错。方向选错了,想要赚钱,比登天还难。
比如,在这个领域,国内有好几家做内贸的综合性平台,在Google全球流量排名前1000的网站列表中,http://www.google.com/adplanner/static/top1000/,有个叫马可XX的网站,全球排名竟然能进入到528名,每天的流量曾经应该是接近过100万IP左右。按一般人的想法,网站肯定赚钱了吧,实际上呢,我估计日子应该还是过得苦哈哈的。
实际上,搞综合性的网站,真的是不容易:1)品牌不容易起来,前面还除了有个强悍的阿里,还有个千年老二的慧聪,互联网行业就是个老大吃肉,老二喝汤,老三老四喝西北风的行业;2)流量看上去是高,不过分到下面每家企业,真不剩几个,你凭什么叫企业付钱?3)流量不稳定,很容易被百度干掉。当你看到流量一天比一天高,把销售团队建起来之后,正乐着呢。这不就前一段时间,发现一下子被百度干掉了(前段时间被同时干掉的还有好几个类似的网站,比如一乎XX),网站流量一落千丈,哭都来不及。
其实除了马可XX这种综合性的平台之外,还见到过很多做行业平台的,挑选的行业真的是五花八门,什么都有,但实际上,适合B2B的行业还真的不是那么多,行业选错了,要想赚钱,真的很难。
3、小额外贸B2B的亲身经历
再举个亲身经历的例子,先前所在的公司曾经做过一个类似DH的小额外贸B2B的网站(只参与前期调研,没有实际运营)。这个行业的问题主要在那里呢,至少从我的理解来看,这个东西是个四不象,目标用户群定位很不清楚。
这个东西也有点象阿里巴巴搞的那个无名良品一样,想法很好,要把工厂最优质的产品卖给消费者,不过实际去执行的时候,你就会发现,绝大部分的工厂是没有那个能力的,不善长搞营销,搞服务,术业有专攻,他们的优势还是在于生产而已。
这个行业也类似,想像中理想状态应该是工厂把东西直接批发给老外,但是做着做着发现,大部分的工厂根本就没有这种做零碎小单的能力,最后发现卖东西的还是哪些小打小闹的,还很多打擦边球的,卖假货的。
反正这里面的问题多多,支付的问题,假货的问题,纠纷的问题,一大堆。最后回过头来看看这个模式,本来是想找到B2B与C2C中间的一个缺口,但是实际上走下来你会发现,这个搞大宗贸易干不过Ali,搞零售呢又搞不过eBay。最终的结果,关门大吉而已(提前关门不见得是件坏事情)。不过还好,这个项目没浪费多少钱。
毁于节奏
除了方向之外,在互联网行业,节奏则是另外一个很难把握的难点。对于节奏这个事情,这一拿一放,还真是不好掌握,没几个人能拿捏的好。
1、以做个小网站为例
节奏这个问题,往小了说,你就比如搞一个网站,里面有很多的功能要开发,而你BOSS还时不时的提出些想法,下面也会有很多奇思妙想,而你手头的资源又是有限的,这时候怎么办?难道都让兄弟们去做,发现一个BUG就叫去马上改?如果是这样的话,事情只会是越来越糟。想把事情做好,就必须得抗住、管住,来源于上面、下面及你自己的需求,让项目有节奏的进行,学会和BUG和平共处。
2、上亿RMB的教训
还是曾呆过的一家公司吧,搞B2B(外贸的),花了应该是两三个亿(RMB),前前后后折腾了好几年时间,结果呢,屁都没有放一个。用公司老头子自己的话说,buyer长啥样,咱老外的胡子都没摸着。
现在终于想明白了,这事儿就靠SEO啊,Ali(外贸部分)那么牛X,不过他也是60%的流量直接来源于搜索引擎,剩下的那40%中又有70%是通过SEO渠道过来之后留下来的,也就是差不多90%的买家都和SEO有关。搞定了SEO,这个事情也就成了。
不过当时咱不懂啊,所以在不该投入的时候投入,在不该收获的时候收获。刚刚开始的时候就大搞展会,大规模的建设销售团队,花钱如流水;网站没有流量,没有效果,想要卖钱,自然是很难。最后的结果,可想而知。
后来,终于搞清楚了,却发现“钱快没了”。
3、来个开放面题,来说说京东 
说了这么多不成功的,下面来个开放点的面题,拿一个实际的案例来讨论,比如我们来说说京东,如果你是京东,你将如何掌握以下要点的节奏?
1)都知道物流是京东最具竞争力的地方,那么京东在物流方面总体节奏把握上都有哪些地方可圈可点,下一步该怎样,为什么?
2)都知道“开发平台”是今后的发展方向,亚马逊在“开放平台”方面做的极为出色,京东在“开放平台上”走的是开了还是慢了,下一步该怎样,为什么?
3)京东想做中国的亚马逊,似乎技术差了太多,服务器还老挂啊啥的。如果是你,在技术方面都应该如何布局,为什么?
小结
上面说了这么多,发了发牢骚。其实是比较感慨,作为一个互联网的从业者,尤其是leader,一定要能掌握好方向,拿捏好节奏。要不然,下面一大群人都给着你白干了。

【转】解放思想,实事求是:宁娶失足妇女,不娶大龄剩女!

褒贬自省,好坏自辨~

今天突然想起个朋友聊天时讨论的话题,男人第一要找良家妇女,第二要找风月妓女,最后才选那些大龄非处剩女。简而言之:男人找剩女不如找失足妇女。
下面就是我们的讨论的一些结果:首先,那些大龄非处剩女,基本上都经手过个十个八个男人,如果说脏的程度而言,也就是50步和百步之分。没了人会以为一个垃圾桶会比一个垃圾场干净。凭什么剩女非处了还要求有房有车!还不如妓女!
从生理学上讲,失足妇女和剩女一样,都是身经百战。但是失足妇女大多年轻,长的不错(城中村路边那种就算了),而大龄剩女大多年龄大,黄脸婆了。失足妇女经过培训,科班出身,床上技术到家。而大龄剩女自我探索,山寨培养,质量难保。失足妇女大多对自己做的事情有自知之明,绝不敢引以为荣。所以婚后她会对你感觉低人一等,不敢要求太多。而大龄剩女大多对自己做的事情自我感觉良好,直觉高人一等,经常狮子大开口。
从身家上讲,失足妇女大多有不少存款,而剩女基本是月光。失足妇女懂得赚钱,剩女只懂花钱。找个失足妇女做老婆,即使你在外面胡来,只要你对家里负责,啥事也没有。找个剩女做老婆,即使你在外面安分,家里出啥情况你很难保证。
失足妇女专业非常知道卫生问题,接客必带套,哪像剩女,寂寞了无聊了就跑去酒吧找ons,都是生奸中出啊有木有…随便搞啊,还有很多剩女都有同居,打胎经历啊,很多失足妇女也就干两三年就不干了,也差不多啊…最重要的就是失足妇女有自知之明,剩女没有,再说句难听的,你剩女跟别人年轻的妓女摆在一起,让客人挑,全套299还真没人找你,男人也会找年轻的啊,剩女啊,你们真没看不起失足妇女的本钱啊,哈哈!对比下,发现这基本上是事实,所以我列出来。

其实良家和失足妇女是相对的区别,不是绝对的区别:

很多女人都是看对方的经济条件而嫁的,这是一种一次性整卖的妓女;
做官员和大款的情人或者二奶,这是批发;
做失足妇女这是零售。

其实都是为了利益,只是出卖的方式不同而已,谁也不比谁高尚。所以不要太看得起良家,也不要太看不起失足妇女!之所以传统文化规定了做整卖的比做零售的高尚,那是因为传统文化是建立在低级生物本能的基础上,以保证雄尊雌卑和雄性垄断的需要。但是,色情业真的就不好吗?我们来看看历史,哪些行业给人类造成最大的伤害?无疑,是政治业和军事业,那些政客和军阀无数次给人民造成了罄竹难书的苦难,但是,诡异的是,在古今中外,世界各地,被宣传成最伟大最救星的,要人民最热爱的,恰恰是这些行业。而实际上对社会稳定和安慰人心作用很大的色情业,却给宣传成了最不好的行业,这个公平吗?

这不公平,这是人类虚伪的体现,所谓的窃勾者诛,窃国者为诸侯嘛。所以在这里,我要呼吁:解放思想,实事求是,尊重性工作者,反对表面高尚实质虚伪的传统道德!作为男人来讲,出卖良心去投靠那些被歌颂的害人行业,那不是比妓女坏一万倍吗?我们国人有资格一边当奴才当良心上的婊子,一边又去歧视色情业吗?

java实现短地址算法

网上流行的短地址算法很多,但是大部分都会存在小概率的重复时间,其实使用短地址无非就是实现映射关系。

我们举个很简单的例子,我们把地址分配成一个映射关系

记录标识——源地址

这样,我们将记录标识设置为自增长主键,这样就是十进制的1-N,通过跳转方法可以轻松实现由数字地址到跳转地址的功能,

但是往往很多人看到市面上都是由数字,字母类组成表示跳转,如此以来我们可以将这个十进制主键来转换成64进制算法,岂不是很简单,也不会存在重复主键的问题了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
	public static String Dec2AnyHex(int dec, int shift) {
		char[] buf = new char[32];
		int charPos = 32;
		int radix = 1 < < shift;
		int mask = radix - 1;
		do {
			buf[--charPos] = Config.digits[dec & mask];
			dec >>>= shift;
		} while (dec != 0);
		return new String(buf, charPos, (32 - charPos));
	}
 
 
	public static Integer AnyHex2Dec(String anyHex, int shift) {
		char[] s = anyHex.toCharArray();
		String digitsString = new String(Config.digits);
		int Num = 0;
		for (int i = s.length; i > 0; i--) {
			int j = digitsString.indexOf(s[i - 1]);
			Num += j * Math.pow(1 < < shift, s.length - i);
		}
		return Num;
	}

仅供参考,谢谢。

移动互联网,云计算,安全

我认为当今互联网的圈子热衷的话题无非三个:移动互联网,云计算,安全。

无论是移动互联网,还是云计算,安全都是一个首要的问题,然而我们的安全意识还是很淡薄,从之前各大网站的拖库门事件就能看出。

事件一出很多人骂娘,难道程序员不知道用明文的危险性?我想应该有其他的原因,或上头指明,或心存鬼胎。

但是无论哪种猜测这件事也终将过去,我们只是想说,用户名和密码的方式进行权限验证是最不安全的方式了,至于那种方式安全,

我觉得见仁见智吧。

就如同移动互联网发展至今,我觉得现在是时候把移动支付推到一个顶峰,这样的话安全就尤为的重要了。

如果是支付宝是PC支付的一个标杆的话,那么移动支付又将何去何从?从我个人来讲,支付宝和paypal的安全简直不是一个量级的,

支付宝根本不存在任何的安全性。怎么讲?我们从支付宝骗来一笔资金,可以很方便的分流出去,而支付宝方面只会爱莫能助或者咬死了说

这个是你的问题,我们有提示,我们有证书,我们也有权限验证,我觉得这就是在混淆视听,我们并没有说是帐户被盗,而是被骗。

被骗之后我们希望的是支付宝方面能有些作为让我们的损失降到最低,然后结果总是让人很失望的。因为我从支付宝的客服学到,你如果

有笔来源不明的资金,最快最安全的洗白方式就是使用虚拟充值卡来套现,安全方便不留痕迹!!!

然后从paypal的角度来说,如果你登录的IP地址就很异常的话,很可能会遭遇到帐户锁定,这样就不难理解了,如果你此时在米国,登录,突然

在其他国家或地区登录的话,很可能遭到帐户被盗的可能性,这样也让很多使用代理的朋友很恼火,仔细想一想,有什么恼火的呢?

另外如果你的paypal有一笔资金来源不明的话,那么你只能心存侥幸了,因为这笔资金流向的所有帐户都会被锁定调查,很多人认为

蛋疼,但是当你的资金损失的时候你才追悔莫及的话,你才会明白该如何选择。

所谓IT技术公司应该分为三类,A类公司创新 B类公司模仿 C类公司跟风,往往很不幸的我们国内我只能看到BC。

我们从国外A类公司抄过来之后弄自己所谓的高新技术创新设计研发,但是或多或少总是看到人家的影子。

亚马逊的云计算项目 AWS火起来后,国内的阿里云,盛大云,各种云一触即发,无论从价格还是技术上来说感觉都是在模仿。

很多人会说服务出来肯定有它的道理,但是换句话来说这些云计算,如何保证安全性,我们看到很多在线服务网站搬家到了云平台,但是

涉及到支付以及电子商务类型的公司为什么还是不愿意将自己的平台架设到云呢?

那么接下来,我们该如何发展?

Hello Node.js

What’s node.js 嘿嘿,这不是我们讨论的话题了,有兴趣自然回去研究,其实我也刚在了解。

手痒痒,于是在服务器上写个Hello  Word。

环境:Centos5+ 32bit

那么我们首先需要搭建环境对不对?

1
2
3
4
5
6
yum install gcc-c++ openssl-devel make
wget -c http://nodejs.org/dist/v0.6.17/node-v0.6.17.tar.gz
tar zxvf node-v0.6.17.tar.gz
./configure  
make  
make install

那么下来我们来写个Hello Word ,顺便来验证我们的Node环境。

hello.js

1
2
3
4
5
6
var http = require('http');  
http.createServer(function (req, res) {  
  res.writeHead(200, {'Content-Type': 'text/plain'});  
  res.end('Hello Node.js');  
}).listen(8888, "localhost");  
console.log('Server running ......');

这里大家注意一下,如果你是本地的环境,localhost 或者 127.0.0.1 都可以,但是如果你在服务器端来运行的话,就填写你的服务器IP地址吧。

然后就是运行我们的程序

node hello.js
成功的话你应该可以看到Server running ……

然后在你的浏览器输入http://localhost:8888

运气不是很糟的话,你应该可以看到你想看到的东西鸟?

是不是很简单,那么什么是node.js 他会代替谁呢?又或者我们在什么地方又有了解决方案:)

知名网站的技术发展

看了Programmer的知名网站的技术发展流程,感慨万千,互联网的发展虽然经历了起起伏伏,也才不过十几年的时间,而互联网生可多少又死了多少,我们无法得知了,经过这十几年的发展,存活下来的网站自然有他们

的方式,有新兴的,有老牌的,我们在这个发展的洪流中,真的太过于稚嫩和单薄了。

Google

诞生于1997年,1999年增加了一个Cache Cluster,2000年Google开始自行设计DataCenter,2001年Google对Index进行的修改,所有的Index放到了内存中.

2003年发表了 Google Cluster Architecture 其Cluster结构组成为硬件LB+Index Cluster+Doc Cluster+大量的廉价服务器。

2004年,Google对Index的格式进行了修改,通过MapReduce+大量廉价的服务器既可以实现小型机,中型机或者大型机才能完成的任务。

2006年,Google发表了关于BigTable的论文,对于海量数据的分析起到很大的帮助。在一些场景中,Google同样使用Mysql作为数据存储。,同样Google对Mysql进行了很多修改。

2007年,Google将build索引的时间缩短到几分钟。Google的一次搜索大概需要调用内部50个以上的Service,Service主要用C++或者java来编写。

2009年,Google发表《How Google uses Linux》,之后研发了Colossus,Spanner,除了海量数据相关技术上的革新外,Google也不断对业界的传统进行创新。

在Google的发展过程中,技术主要围绕在 可伸缩性,性能,成本,和可用性四个方面。

Facebook

采用LAMP构建,我想很多人都知道,LAMP非常流行,我们不做过多的阐述了,我们知道facebook的发展非常迅速,LAMP根本不能胜任了,于是脸谱增加了Memcached,只有又增加了Service层,将News Feed、Search等功能作为Service

提供给前端PHP,针对不同的Service采用不同的语言,例如,C++,Java,Erlang。

而后Facebook发现PHP的消耗问题,研发了HipHop,可以自动的将PHP转换成C++代码,相同的配置支撑的请求是之前的6倍。

2009年研发了BigPipe。对于存储MySQL中的数据,蚕蛹垂直拆分库和水平拆分表的方式来支撑不断增长的数据量。

2011年,尝试从MySQL迁移到HBase。

在Facebook的发展中,主要围绕在可伸缩性、性能、成本和可用性四个方面。

Twitter

2006年诞生,采用Ruby On Rails + MySQL构建的,

2007年增加了Memcached作为Cache层。

2008年Twitter决定逐步往Java迁移,选择了Scala作为主力开发语言,理由是:难以向一层子的Ruby程序员推销Java :)

eBay

1995年诞生,采用CGI,数据库是GDBM,只能支撑5万件商品。

1997年,eBay将OS从FreeBSD迁移到Win NT,将数据库改为Oracle。

1999年,eBay将前段系统改造为Cluster。

2001-2002年,eBay将数据库进行了水平拆分。

2002年,将整个网站迁移为Java构建。

从eBay的发展来看,主要围绕可伸缩性和可用性两点。

Tencent

QQ虽然一路走来都是模仿路线,但是我想如果没有技术创新,一味的模仿也是无法发展的。

2009年到现在,腾讯决定对QQ IM重构,数据存储也不再存储与MySQL中,而是全部存储在自己设计的系统里。

从QQ IM的技术演变来看,其技术改造是围绕在可伸缩性和可用性上。

淘宝网

2003年诞生,直接购买了phpAction的软件。

2004年将系统由PHP迁徙到Java,MySQL迁徙为Oracle,应用服务器采用WebLogic。

2005年-2007年发展中,JBoss替代了WebLogic,对数据库进行了分库,基于BDB做了分布式缓存,自行开发了分布式文件系统TFS,并自建CDN。

2007-2009年,对应用系统进行垂直拆分,拆分的系统都已Service的方式对外提供,对数据进行了垂直和水平拆分。

进行数据拆分后,Oracle的成本越来越高,于是数据逐渐从Oracle迁移到MySQL,同时开始采用HBase来支撑历史交易订单的存储和检索。

近几年,淘宝开始对Linux内核,JVM,Nginx等软件进行修改定制。

从淘宝的发展过程来看,围绕可伸缩性和可用性,现在也将精力投入在性能和成本上。

 

从上面互联网精英的历史演变过程中,我们不难看出,可伸缩性,可用性,性能以及成本一直是互联网发展的技术核心。

我见过很多人在争论Java和PHP,亦或者使用Tomcat,WebLogic ,MySQL和Oracle,我想说这些都没有什么好争论的,适合自己的才是最好的,同时技术和模式都是不可能照搬照套的,需要自己来进行创新。

我总觉得自己该做些什么了,我想现在应该不算晚了。让我们努力吧:)

 

这里留下一些资料,有情趣的可以自己去研究了。点击下载