Archive for the ‘技术’ Category

linux机器乱码问题的一次解决

星期一, 三月 11th, 2013

第一次用万网主机,登录进去后,发现运行ll命令出现乱码。打印  LANG出来是不熟悉的

zh_CN.GB18030

在网上搜索乱码加上这个  GB18030都是教你继续设置这个编码的,最后参考别的机器的设置解决。

在/etc/sysconfig/i18n里写上

LANG=”zh_CN.UTF-8″

在/etc/profile加上

LANG=”C”

然后重启了一下,就好了

一次旷日持久的macbook pro恢复系统

星期四, 二月 28th, 2013

这篇文章不是攻略,只是自己的一点鸡毛蒜皮的琐事。当然最后一段也能算是攻略。

一、前记

我妹去年结婚,思虑着送他们个什么结婚礼物,最后考虑再三,决定送他们一个macbook air。在京东上看好了,然后发现亚马逊的更便宜,然后就下单了。货送到后才发现我买的是macbook pro而不是air,由于他们婚期已近,退货来不及了,再加上他们对pro也不排斥,最后将错就错把macbook pro给了他们。

给他们之前,必然要对系统改造:保留了macos, 另外加装了一个win7, 因为内存有8G,所以给他们安装了win7 x64,时间比较紧急,所以也没有帮他们把win7破解,从而留下了祸根。

这次安装比较简单,自己在移动一盘里下好了win7 x64的iso,然后用bootcamp 硬盘工具制作启动U盘(需要一个单独干净的优盘), 然后bootcamp会自动下载windows支持工具(这个要大概三四个小时)。重启安装即可。

 

二、生变

两个月后,我妹和妹夫反应每次启动windows都显示未激活,桌面黑色,非常丑陋。当时刚好去合肥参加一个好友的婚礼,回来时路过常州就去了他们家折腾系统。自以为是懂电脑的,激活个win7不是手到擒来吗,百度,下载了一个小马win7破解啥的,运行之,提示重启,然后就再也没有然后了。那个工具估计修改了部分启动信息,从而使得mac再也找不到了,也启动不起来了。还好上次下载好的win7.iso还在,还有时间重装一次windows系统,但是当天网络情况很糟糕,windows support下载了两个小时不见动静。所以放弃,直接安装裸windows7。重装完裸windows7后,因为没有windows下的bootcamp,触控板、键盘灯什么的都很难用,更糟糕的是我在整理硬盘时,”艺高人胆大“的乱搞,把mac os的盘也搞没了。然而这时已经半夜两点,只好灰溜溜的先暂时放弃了,还好他们能接着一个鼠标用win7系统。

 

三、完结

过年回家几天,有时间搞这事了,在回家前也做了一些前序准备。看到一些黑苹果的攻略,甚至下来个moutain_lion的dmg回来,并准备了两个移动硬盘。大年初三后,我妹他们回来,带了macbook,开始搞起。

1. 将他们现有系统内的有用数据一一备份,因为现有系统将格掉重装。

2. 在启动后,按住option键,进入系统选择后,设置wifi连接,使得系统能连上网络,我家网络是2M adsl。然后 command+R ,系统开始下载 一个叫recovery的系统, 大概要两个小时左右,下载完成后,进入recover界面在这里我自作主张的分了三个区,第一个是mac分区,第二三是ntfs系统。分好系统后,选择重新安装mac系统,然后就开始了漫长的下载时间,我是在一个夜间完成了这次下载(白天里要打麻将,一些小朋友会来我家看网络动画)。

3. mac系统最后终于装好了,然后再次进入bootcamp设置界面,制作windows安装盘,然后就是下载windows support软件,大概要四小时。

悲催的事情来了,重启加载windows安装盘后,windows提示我硬盘格式不对,分区分错了。。。前前后后十几个小时啊,白做了,瞬间有种欲哭无泪的感觉。

4. 在网上胡乱找攻略,有些讲安装黑苹果的攻略提醒了我。我按照网上攻略,将下好的moutain_lion.dmg在mac里制作成了启动硬盘(第二块移动硬盘),然后启动,发现进入的是recover,然后就是分区,发现这个recover居然无法分区,提示我无法卸载硬盘。之后又在我妹妹他们的充满期待的眼神中惭愧很久。继续搜索,终于找到了一个靠谱的解决方案,那个方案这么说的: 打苹果的客服支持电话。

5. 于是在晚上七点多,我拨通了苹果的支持电话,苹果的客服及其专业,态度极好,是我听过最专业的客服。有意思的是我描述我的窘境时提到了黑苹果,他很严肃的和我说,作为苹果客服,拒绝评论关于黑苹果的所有东西。

6. 推倒重来,按照客服的建议,重启后按住option,然后 commad+r 让系统重新下载一次recover( 此处消耗2小时),加载recover

7. 在recover里重新给硬盘分区,新分区策略是,只分一个区,就是mac分区,然后选择重新安装mac系统,在保证2M wifi稳定的情况下,会在6-8小时后,下载完毕,然后安装。

8. 安装好mac os后,用bootcamp工具,选择安装windows7,去除制作安装盘的选项,因为在上面步骤3里,已经制作好了windows安装盘,所以不用再制作了。选择下一步时,他会提示你mac和windows分区大小分布,在这里操作即可。

9.然后重启,安装windows7, 这次在安装后,我用oem7f7来破解windows7,这次破解没问题了,一颗小心算是放下了。  oem7f7百度第一个就对。

这十个步骤前后有四个月,而过年那次修正系统,前后花了我三天才搞定。

 

四、后记

此事告诉我们,别装二大爷,有麻烦时,还是得找客服。

跨域iframe通信的一次实践

星期四, 二月 28th, 2013

项目中需要在一个页面嵌入另外一个域名中的页面b,并在页面b中把数据传送回来。

跨域传输信息是很经典很老的一个问题了,网上的解决方案也不少。在网上找到了腾讯的同学分享出来的东西,总结的很好,也给了个几乎很好的成型库。遂用之,在本机测试没有问题。在发布前的测试时,发现问题了。在我的目标网页中无法生效,定位半天后,终于发现了问题。

腾讯的同学分享出来的东西,封装了一个叫Messenger的东东,他利用的原理是,主页面a, 嵌入的iframe为b,如果在b里面另外嵌入了一个iframe c,把c的src设置为 “about:blank”,  a和b都能访问和修改c的name。通过对c的name的修改来实现消息的传递。在ie6里面,他们的测试页面也能通过。但是在我的目标域名里,某域名做了一些安全设施(大汗,我也不知道是什么设置,该域名不为我所控制,也不便透露改这个域名),在该域名的页面里,js不能访问about:blank的ifram的name。所以这个库在这个域名下失效。后来再试了一下,在这个库的作者老家qq.com里,也有这样的安全策略。呵呵,略讽刺。

把现在,可以把这个模型简化一下,在一个页面,例如www.qq.com中,

第一步:添加一个iframe,

第二步:把这个iframe的src设置为 about:blank,

第三步:尝试访问这个iframe的name属性

在ie下,一般域名(例如baidu.com)在第三步时是可以访问iframe.name(上面结果里,是空)的,但是在某些域名(例如www.qq.com)里,第三步会提示你权限受限而有warning。

 

解决方案:

我是这么解决的,在iframe b里,在body最前面嵌入一个iframe, src是  a的url#resutl, 然后在页面a里面,访问ifr.contentWindow[0].location.hash 来的道result,这样只能传送字符串类型的数据而且大小也有限制,但于我而言,够了。

 

另外可能的解决方案: 在两个页面中各放入一个flash进行通信,略繁琐,有点大,不喜欢。

 

[附录]腾讯同学的库地址:  http://www.alloyteam.com/2012/08/lightweight-solution-for-an-iframe-cross-domain-communication/

居然是在美国的未备案主机,看来官方没给足够支持。

和360spider的搏斗

星期一, 一月 28th, 2013

一个小站,没什么人访问,但是这两天突然每天都有上G的访问,但是cnzz统计显示每天pv都没有过百。

从common log里看出有大量的php访问,却没有静态资源png、css之类的访问。在打开combined的log,终于找到苗头,因为所有的访问的user-agent都是360Spider

于是写robots.txt,如下文

User-agent: 360Spider

Disallow: /

 

一个小时过去了,360Spider仍然孜孜不倦的在爬页面,看来robots的刷新不知等到啥时候了。于是继续百度,最后用apache的金牌娱乐官方网站文件干掉了360Spider, 金牌娱乐官方网站文件关键文本在下面:

<Directory />

SetEnvIfNoCase User-Agent “360Spider” ban_bot

Options FollowSymLinks

AllowOverride all

Order allow,deny

Deny from env=ban_bot

Allow from all

</Directory>

完成后,看着log,觉得好爽啊。。。

192.168.4.1 – – [28/Jan/2013:11:01:57 +0800] “GET /?id=7463274393 HTTP/1.0” 403 202 “Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11; 360Spider”

 

192.168.4.1 – – [28/Jan/2013:11:01:57 +0800] “GET /?id=7460387367 HTTP/1.0” 403 202 “Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11; 360Spider”

 

另外其实还有办法的,可以在access_log里找到bot的ip,用iptables就可以干掉了。但是我租用的这个是没有独立ip的主机,是通过代理的,所以得不到源ip,有条件的人可以通过iptables干掉的。

 

ADD:   过去一天了,360Spider仍然在孜孜不倦的爬我的网站,虽然他只能得到403反馈,另找他法,在dnspod上发现有针对各种spider设置的,刚刚将我的www域名指向了百度的ip,等一个小时候,看效果。

密码保护:回乡偶记

星期六, 八月 4th, 2012

这是一篇受密码保护的文章,您需要提供访问密码:

py2exe打包python文件中的一些问题

星期二, 七月 3rd, 2012

最近用python加上pyside调用QT来做客户端,界面就用webkit来做,做客户端程序容易多了!
但是从py转成exe很繁琐,500多行的代码,转换成exe后居然有16M。在将py文件打包成在xp系统里能运行的文件。
py2exe&pyside要用到msvcr90,如果用户机器上安装有vs2008runtime 就不用,但是不能要求每个用户vs2008 runtime,所以在打包时应该把这些dll放在exe相同目录下。

setup.py

# coding: utf-8

__author__ = ‘shallwe’

from distutils.core import setup

from glob import glob

import PySide,PySide

import py2exe

myDataFIles = [(“Microsoft.VC90.CRT”), “libs\\Microsoft.VC90.CRT\\*.*”]

setup(

version = “0.1.0”,

name = “Test”,

windows = [{

“script”:”client.pyw”,

“icon_resources”:[(1,”test.ico”)],

“dest_base”:”Test”

}],

zipfile = “Test.dat”,

options = {

“py2exe” : {

“packages”: [‘lxml’, ‘PySide.QtNetwork’, ‘PySide.QtWebKit’, “PySide.QtGui”],

“compressed”: 1,

“optimize”: 2,

“dll_excludes”:[“w9xpopen.exe”],

“bundle_files”: 1

},

},

data_files = [(“Microsoft.VC90.CRT”, glob(“libs\\Microsoft.VC90.CRT\\*.*”))]

 

打包语句: python setup.py py2exe

 

重点: 1. data_files里加上msvcr90相关的dll和文件

文件夹 Microsoft.VC90.CRT:

文件列表 Microsoft.VC90.CRT.manifest msvcm90.dll  msvcp90.dll msvcr90.dll

一个抽奖小程序

星期一, 六月 4th, 2012

朋友结婚,我帮忙写了个web版的小抽奖程序。

demo地址: http://www.shallwe.net/tmp/lottery/

 

源代码地址: https://github.com/shallwe/lottery

 

直接本地打开,替换奖品,人数后即可使用,将网页全屏(例如chrome的F11)后看抽奖过程效果更佳。
不打算继续开发,直接开源,若有兴趣,直接更改即可。
按 1、2、3切换奖品, 空格开始抽奖,再次空格结束,抽到奖的不会再次重复。按b进入黑屏。
要替换奖品,在图片里替换即可,要更改音效,也可以直接更改mp3目录下的素材。增加奖品种类,要多写几行代码。

2012.1.3, End first emotional experience

星期一, 一月 2nd, 2012

努力了两三天,心神不宁了一个星期,终于敲定此事了,第一段正经的感情经历就此结束。

此事有得有失,如人饮水,冷暖自知,也不知道说啥。

坏在:自己没担待,在需要出马的时候一再萎缩。没有当机立断,很多事情早该做了,一直没做。到最后,自然错失良机。

密码保护:shallwe的2011

星期六, 十二月 31st, 2011

这是一篇受密码保护的文章,您需要提供访问密码:

互联网战国七雄

星期日, 十月 16th, 2011

最近在看《大秦帝国》,这部小说前后六部五百多万字,我看了将近两遍,越看越觉得战国纷争和当代互联网很相像。shallwe想了一几天,将七大战国如此映射:秦国->百度;楚国->腾讯;齐国->阿里巴巴;燕国->新浪;魏国->网易;赵国->360;韩国->搜狐。这七个公司不是按照互联网市值来排的,有些市值比较高的也没有派上,仅仅是shallwe抽取了部分相似点来做一一对应。

互联网七雄争霸图

一、燕国 VS 新浪

1.老牌

燕国是周朝分封诸侯时就分封的诸侯国,算是最古老的诸侯国。

新浪是93年创办的公司,那时候中国还没有互联网,是最早的互联网公司之一。shallwe在高中(2001年)的时候老师教电脑课,教我们上网的时候提到了三个网站:网易、搜狐和一个叫悠游的网站。

2.沉沦后爆发

燕国在萎靡相当长的时间后,在燕昭王在乐毅&剧辛辅佐下,深入变法,在辽东练新军,大出天下,一个月内灭掉当时最强的国家之一(齐国)七十城,几乎将齐国灭国。

新浪除了在06年推出了新浪博客,之后没有让人眼前一亮的产品出现,沉寂了几年,直到09年推出了新浪微博,顿时让新浪市值飙升,让微博成为近两年最热的话题,微博的推出给了网民表达意见的环境,逼得政府不得不出各种紧箍咒加在其身却仍然不放心。

二 、赵国 VS 360

1.守护者

赵国挡住了边患,赵国常年在北部驻守十万骑兵来防止各种胡人以及后来的匈奴,在赵武灵王强壮国力后,也果断出击匈奴,追杀匈奴驱直至狼居胥,并建造了赵国长城,赵国阻止胡人在战国时代入侵我中华居功至伟。

360守护中国普通网民主机的安全同样居功至伟。早期,网民们对流氓软件束手无策,360的推出解决了这一棘手问题(虽然某衣是流氓软件的祖宗),守护了网民的电脑。同时360安全卫士把给系统打补丁这个功能做的炉火纯青,加上它庞大的装机量,导致黑黑行业的部分人对360人的怨气极大,想当年,一个微软远程漏洞,搞成蠕虫后,瞬间成千上万的肉鸡到手啊,尼玛360让第一天微软公布的漏洞和补丁第二天就能补完,补你妹的补啊,劳资要挂马劳资要肉鸡。。。

2. 敢于改革,别出心裁

在赵武灵王时期,赵庸发现赵国骑兵的战斗力完全不行,物资供应太过繁杂。研究胡人战法后,顶住赵国内部以及国际上的舆论,毅然全国实施胡服骑射,并在军中提供马奶子,减轻负重,提升战斗力。使得赵国在战国后期如彗星般升起,并敢于和秦国平起平坐。

360在安全卫士成功后,敢于冒天下之大不韪,毅然推出了免费的杀毒软件,点燃了杀毒行业,当时的国产杀毒软件瑞星、金山、江民等的价格都不低,在国内杀毒软件的抗议声中,在安全卫士的配合推广下,360杀毒在短期内装机量打到了1千万,5千万,1亿。。。

3.国风彪悍

战国中后期,赵国敢于倾全国之力六十万,和从秦孝公以来称霸了几百年的秦国做举国大战,虽然由于碰到了军神白起,以及自己大意换将,败得很惨。就算是战国后期,秦国做灭国大战时,赵国的李牧也是秦军和王翦的劲敌,而不得不使用离间计换了李牧才灭了赵国。

对 360来说,去年举国闻名的3Q大战足以说明其彪悍了。这些年腾讯用它的写轮眼克隆产品,灭产品,攻城略地,互联网公司对之敢怒而不敢言,没有谁敢正视之。这个时候,360站了出来,针对qq主动出击,逼得腾讯做出了不是非常高明的反击(艰难的选择)。最近法院判360败诉,其实360是虽败犹荣。

三、 韩国 VS 搜狐

四 、魏国 VS 网易

五、齐国 VS 阿里巴巴

1.有钱

自从春秋时期管仲给齐国变法后,齐国变为最富的国家,一直到齐国被燕国灭国钱,临淄都是战国商贾们的活动中心。

最有钱的互联网公司是谁?腾讯?百度?NONONO,阿里巴巴就是玩钱的,虽然那个钱不一定是自己的,但是阿里巴巴业务主要范围就是钱来钱往,光对路过的钱雁过拔毛就和其他互联网公司平起平坐了。

2.主子功过

齐恒公后比较吸引眼球的齐国君主齐闵王,这哥们拳打脚踢,南举楚淮,北并巨宋,苞十二国,西摧三晋,却强秦,五国宾从。然而而到任期后期却昏庸无道,自称东海神蛟,给宫中人洗脑,做被灭大战时,任命错将而又胡乱授命,终于兵败被杀。

阿里巴巴的领导人,创下了恢弘伟业,然而同时又喜好宣扬自己的价值观简称号洗脑,号称不以赚钱为目的,又出惊人之举,对托起他们的小卖家们卸磨杀驴,此事不知如何得了,且观察之。

六、楚国 VS 腾讯

1. 地广

楚国,第一印象居然是柳永那句“念去去,千里烟波,暮霭沉沉楚天阔”,从这个词里,极现楚国的宽阔。在秦国灭了巴蜀之前,楚国的城池数量都甩开其他战国一大截。

腾讯的业务线,从即时通信、企业腾讯、门户、网络游戏、微薄、电子商务、支付、游戏对战平台、小游戏平台、SNS、邮件客户端甚至UI设计标注(Dorado),无处不见腾讯的身影,业务之广,估计在国际互联网公司里都算是顶尖的。

七、秦国 VS 百度

1. 一直很强

秦国自从战国秦孝公&卫鞅在秦国深入彻底变法后,就开始傲视众国,直到灭了诸国统一华夏。

百度自从占据了网民搜索信息的接口后,一直控制着互联网的入口,直到开发了天才的竞价排名,给百度的盈利能力更上一层楼。

2. 无所不用其极

秦国在张仪时代,将堂堂一国之君楚怀王骗的晕头转向直到将之生擒,大国邦交间用此等手段,当时不多见。

相比之下,百度欺骗的人就是小人物了,然而却能坏了大事,例如百度的竞价排名中虚假客服电话、假药等,对不明真相的网民造成的伤害罄竹难书。

END

上面还有两个国家不好描述,如果大家有意见可以留言或者发邮件给我 shallwe#shallwe.net (#用@代替)

html5 的拖拽上传文件功能的rails实现

星期日, 七月 3rd, 2011

最近在做一个webim,觉得之前看到的拖拽上传文件很方便,就决定加上这个功能,结果我一半的开发时间都花在这上面了,html5目前还是很坑爹啊。这里面涉及的主要是两个api,fileReader 和 XMLHttpRequest(以下简称xhr), firefox和chrome的较新版本都支持这两个接口。firefox对这两个接口支持的比较完美。而chrome版本的xhr只有send方法,没有sendasbinary方法,导致拖拽上传的二进制文件错乱,只能上传文本文件。有些教程说google的gears支持上传文件功能,试验了一下,用gears上传的时候崩溃,然后将chrome升级到12版本,发现chrome居然不支持gears了,再查了一下,google原来已经放弃了gears了,chrome的最后一根救命稻草是他的file input,原来可以把文件直接拖到他的<input type=file>上,最后的实现是在下层div放一个提示语句,上层div放file input,但是设置透明度为0,这样看起来和firefox的拖拽保持一致。下面放代码:

以下是chrome版本的实现

HTML部分:

<div class=”new_attachment” >

<form accept-charset=”UTF-8″ action=”/talks/1/attachments” enctype=”multipart/form-data” method=”post” target=”form_accepter”>

<div style=”margin:0;padding:0;display:inline”>

<input name=”authenticity_token” type=”hidden” value=”x2MqPKIsC+MgoQpiqx9k2sub62p+pqOcDzdKUXoxicA=” />

<!–这一段看不懂不用管,这个token是rails默认生成的安全策略,用来防止csrf攻击,后起之秀的安全策略做的是真好啊–>

</div>

<div class=”notice”>

<span>请将附件拖到这里上传</span>

</div>

<div class=”file_input”>

<input id=”attachment” name=”attachment” style=”width:100%; height:100%” type=”file” />

</div>

</form>

<iframe name=”form_accepter” style=”display:none”>

</iframe>

</div>

CSS部分:

.new_attachment {

margin: 200px auto 0px auto;

width: 194px;

height: 100px;

float: left;

border:3px dashed silver;

}

.new_attachment form {

height: 100%;

width: 100%;

}

.new_attachment .notice {

position: relative;

left: 0px;

top: 0px;

height: 100%;

}

.new_attachment .file_input {

position: relative;

left: 0px;

top: -100px;

height: 100%;

filter: alpha(opacity=50);

-khtml-opacity: 0;

}

js部分:

New = {

init: function () {

this.newAttachment = $( “div.new_attachment” );

this.attachmentForm = this.newAttachment.children( “form” );

this.fileInput = $( “div.file_input > input” );

this.noticeDiv = $( “div.notice” );

this.fileInput.change( function () {

Sentences.New.noticeDiv.children( “span” ).html( “正在上传请稍后” );

Sentences.New.attachmentForm.submit();

} );

}

$( document ).ready( function () {

Sentences.New.init();

} );

//用到了jquery,如果对jquery不熟悉的只能抱歉了,不过代码大概您应该能看懂

//还有些改进空间,例如gmail实现了上传的进度条,我暂时没找到实现的代码如果谁找到请告诉我一声,另外的提升空间是,监听html的drapenter事件,在有文件拖动到html中时显示那个提示div,诱导用户把文件拖拽到对应的位置。我实现的时候老收到莫名其妙的drapleave事件,所以我放弃了智能提示

firefox的实现

js部分

New = {

buildBody: function ( data, boundary ) {

var dashdash = ‘–‘;

var crlf = ‘\r\n’;

var builder = ”;

/* 下面这段是rails用的,为了加上csrf认证通过,非rails绕过,我注释掉了,去的token的方法是通过页面里现有的form来取

builder += dashdash + boundary + crlf;

builder += “Content-Disposition: form-data; name=\”utf8\”” + crlf + crlf;

builder += ‘Content-Type: application/octet-stream’+ crlf + crlf;

builder += “&#x2713” + crlf;

builder += dashdash + boundary + crlf;

builder += “Content-Disposition: form-data; name=\”authenticity_token”

+ “\”” + crlf + crlf;

builder += $( “div.new_sentence > form > div > input” ).eq( 1 ).val()

+ “\r\n”;

*/

builder += dashdash+boundary+crlf;

builder += “Content-Disposition: form-data;” +

” name=\”attachment\”; filename=\”” +

New.attachment.fileName + “\”” + crlf;

builder += ‘Content-Type: application/octet-stream’+ crlf + crlf;

builder += data + crlf;

builder += dashdash + boundary + dashdash + crlf;

return builder;

},

uploadFile: function( fileData ) {

var boundary = ‘—————–‘ + (new Date).getTime();

var data = New.buildBody( fileData, boundary );

this.xhr = new XMLHttpRequest();

//下面的这个url要您自己定制

var upload_url = “your upload url”;

this.xhr.open( “post”, upload_url, true);

this.xhr.onuploadprogress = New.onUploadProgress;

this.xhr.onreadystatechange = New.onUploadReadyStateChange;

this.xhr.setRequestHeader(“Content-type”, “multipart/form-data; boundary=” + boundary);

this.xhr.overrideMimeType(“text/plain; charset=x-user-defined-binary”);

if ( this.xhr.sendAsBinary ) {

this.xhr.sendAsBinary(data);

}

else {

this.xhr.send(data);

}

},

onUploadProgress: function( e ) {

if ( e.lengthComputable ) {

var percentage = Math.round((e.loaded * 100) / e.total);

$( “.preview” ).html( percentage / 100.0 );

}

},

onUploadReadyStateChange: function ( e ) {

if ( New.xhr.readyState == 4 ) {

//您要加的,上传完成后要做的事情

}

},

init: function () {

$( “div.new_sentence > form” ).submit( function () {

New.onSubmit();

} );

var uploader = $( “div.upload_box” );

$( “div.sentences” ).scrollTop( $( “div.sentences” )[0].

scrollHeight );

document.addEventListener( “dragenter”, function( e ){

uploader.css( “borderColor”, “gray” );

}, false );

document.addEventListener( “dragleave”, function( e ){

uploader.css( “borderColor”, “silver” );

}, false );

uploader.bind( “dragenter”, function( e ){

uploader.css( “borderColor”, “gray” );

uploader.css( “backgroundColor”, “white” );

}, false );

uploader.bind( “dragleave”, function( e ){

uploader.css( “backgroundColor”, “transparent” );

}, false );

uploader.bind( “dragenter”, function( e ){

e.stopPropagation();

e.preventDefault();

}, false );

uploader.bind( “dragover”, function( e ){

e.stopPropagation();

e.preventDefault();

}, false );

uploader[0].addEventListener( “drop”, function ( e ) {

e.stopPropagation();

e.preventDefault();

{

var file = e.dataTransfer.files[0];

New.attachment = file;

var dataReader = new FileReader();

dataReader.onload = function( e ) {

New.uploadFile( e.target.result );

};

dataReader.readAsBinaryString( file );

}

}, false );

}

};

$( document ).ready( function () {

New.init();

} );

html部分

<div class=”upload_box” style=”min-height:100px;border:3px dashed silver;”>

<div class=”preview”>

</div>

</div>

上面的代码在ff5和chrome12下都测试通过,如果有不对的地方,欢迎来邮讨论,shallwe@shallwe.net,或者留言亦可

安装mysql with innodb 支持,支持事务的mysql

星期五, 六月 10th, 2011

默认安装的mysql使用的是myisam引擎,是比较高效的引擎,但是最近有些需求需要用到mysql 事务,而myisam是不支持事物的,在网上找了一下,重新编译数据库并做了一些金牌娱乐官方网站。

1.编译

在常用的mysql编译参数里,加上 –with-plugins= innobase ,这个使得mysql自动加上inno引擎

我的全部编译参数是(我用的是mysql 5.3的版本,老版本的inno支持可能不是这样写法,可能是–with-inno

./configure –prefix=/usr/local/mysql –localstatedir=/usr/local/mysql/var/ –with-server-suffix=-enterprise-gpl –without-debug –with-big-tables –with-extra-charsets=latin1,gb2312,big5,utf8,GBK –with-extra-charsets=all –with-pthread –enable-static –enable-thread-safe-client –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static –enable-assembler –with-plugins=innobase

make && make install

重启mysql后,进入mysql 输入

show engines;可以看到有无innodb的支持,如果有,就是编译成功了,先关掉mysql,打开/etc/my.cnf编辑(我是用mysql中的huge.cnf为模板,那个模板适合比较大量的数据)

将 金牌娱乐官方网站文件中inno字样的前面的#注释去掉,在mysqld里面加上

default-storage-engine = InnoDB

这样之后创建的表,默认则为inno格式,如果已有的表,要改成inno,用

alter table {table_name} ENGINE=’InnoDB’;

之后重新启动mysql即可,我这里碰到一些问题,重启mysql后一直没有启动innodb的支持,看了下log文件,发现是inno的数据文件大小之类的不符金牌娱乐官方网站,根据出错提示将那些数据文件删掉即可。

测试是否支持事务:

在mysql里,

CREATE TABLE test.user ( id int NOT NULL DEFAULT  0);

begin; insert into test.user values (3);

select * from test.user;

此时应该看到有一条记录

rollback;

select * from test.user

如果此时看到空记录,就对了

在linux 中安装 ruby & rails

星期四, 五月 12th, 2011
1. 安装ruby
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.gz
tar xzvf ruby-1.9.2-p180.tar.gz
cd ruby-1.9.2-p180
./configure –prefix=/usr/local/ruby
#prefix选项可以自选
make&&make install
echo “export PATH=/usr/local/ruby/bin:\$PATH” >> /etc/profile
exit
#退出后,让ruby的环境变量其效果
2.安装gem ,用gem来安装ruby需要的各种组件,很强大
wget http://rubyforge.org/frs/download.php/74806/rubygems-1.8.0.tgz
tar xzvf rubygems-1.8.0.tgz
cd rubygems-1.8.0
ruby setup.rb
3.安装rails
gem  install rails
gem install mysql2 -v 0.2.6
mysql2的新版本和rails结合有问题

4.安装apache的rails支持,用passenger

export APXS2=/usr/local/apache/bin/apxs

#此为可选项,如果你的apache是用rpm方式安装的,不用这行语句,如果你的apache安装在别处,后面的参数指向你安装的apache的apxs

passenger-install-apache2-module

根据上条命令的提示,将类似下面的语句放入到httpd.conf中

LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so

PassengerRoot /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.7

PassengerRuby /usr/local/ruby/bin/ruby

金牌娱乐官方网站虚拟目录,如下

<VirtualHost *:80>

ServerName shallwe.net

ServerAlias www.shallwe.net

DocumentRoot /usr/local/web/shallwe.net/public

RailsEnv development

<Directory /usr/local/web/shallwe.net/public>

Allow from all

Options -MultiViews

</Directory>

ErrorLog “logs/shallwe-error_log”

CustomLog “logs/shallwe-access_log” common

</VirtualHost>

从《孙子兵法》的《始计篇》,看互联网

星期二, 一月 11th, 2011
题外话:近日在南京路边看到很有古意包装的图书,十块钱三本,刚好三个好友一起逛街,我挑了一本孙子兵法,宏伟挑了一本三十六计回去研究,令名在美国经常空虚难耐,买了本宋词回去品味咀嚼了。在南京回来的高铁上,翻了下孙子兵法,顿觉孙子哥的小书能流传了几千年到我手上,果然有好几把刷子。后面的具体战争的我没怎么看,以下是我看《始计篇》的一些收获。

 

第一段:
“孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。”
这段像是总纲,也像是给皇上洗脑的话,因为兵者、农者、学者、工者,都是国之大事死生之地,但是兵者说出来了,上头会重视他,会给经费给他练兵。在互联网公司里,各个部门老大跟老总洗脑估计也是这个基调:产品是我们公司的灵魂啊,技术是我们公司的脊梁,设计是我们公司的脸面,运营是我们公司的血液 blabla。。。。  这些如何均衡,一方面是老总们的判断,更重要的是副总们的强势与否和业绩挣来的话语权。

 

第二段的开头:
“故经之以五事,校之以计而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。”
孙子大概意思是要看国家之间对比,从这几个方面来评估他们,这几个方面可以大概判定国家的强弱。
一曰道:何为道,孙子哥的解释是:“道者,令名与上同意也,故可以与之死,可以与之生,而不畏危。” 孙子的意思是作战单位的名们与王同心,可以为你赴死都无悔。对互联网公司来说,道也许是与互联网的网民们同心,狭义的说是自己的产品和用户一致,重复为用户考虑,把自己的产品的用户体验做到极致,与网民的需求完全贴合,这时就算有大公司来跟你抢,不见的就能抢走。另外这个道我更愿意往道德上靠,中国对外发动战争,对内总是对内对外宣传自己是被逼着还击的。想占得道德制高点,这样军士们打起仗来理直气壮。为了占得道德制高点,各种募捐晚会,很到企业不惜重金捐款并出名,腾讯花了三千万支持了某个民生活动,也花个几百万在地铁口里宣传他花了这个三千万让人知道,给他自己的道德积分。3Q大战的时候,双方做的最有效的不是用技术手段的对抗,而是在各自的平台阵地上宣传自己是受气的小媳妇,被逼的,但是这俩家伙都是高手,最后这个道德制高点谁也没有完全占领,由于腾讯先出手的,在道德上稍微吃了点小亏。在小公司以小博大,例如对抗腾讯的时候,完全可以打这种道德牌,现在泱泱中华的人民们被某个势力欺负的太狠了,所以同情弱小的情绪非常高涨,所以小公司叫点委屈给自己挣的道德制高点,往往事半功倍。最近百姓网因为在hao123上受了点小委屈,也拿出来说并有炒作嫌疑,但是效果很好,看过的人无不义愤填膺的。
二曰天,天者,阴阳、寒暑、时制也。我觉得孙子哥应该不是强调八小时工作制和十二小时工作制的问题。在企业层次上,应该强调的是大环境,例如中国概念股在美国热炒,所以不赚钱的优酷也可以上市;08年经济危机,好多互联网公司裁员。这个对互联网人的借鉴意义应该是看清大环境,找准时机出手,或创业或进入那种领域。
三曰地,地者,远近、险易、广狭、死生也。这强调的就是行业和平台的区别了。目前处在电商和网游行业的企业容易得到更好的发展,收到各种投资人的追捧。同样做网游行业,腾讯因为他的平台优势,就是硬生生的从盛大手里夺过头名宝座。中青宝网因为他的政府后台,也可以用很一般的游戏上市得到高额回报。对互联网人士的借鉴意义是,能借鉴平台的时候就用人家的平台,大树底下好乘凉,现在各种开放平台下的越来越丰富的应用就是例子。另外就是要和腾讯干仗的时候,在这方面应该是完败,从另外几个方面找突破口吧。
四曰将,将者,智、信、仁、勇、严也。这腔调的就是人的问题了,员工的技术如何,工作是否努力,是否有执行力等等。最近流传的蛮多的一句话是:“三流的点子加上一流的执行力 比 一流的点子加三流的执行力 要好”。这估计也是孙子哥把将放在法前面的原因吧。在网游行业里,将尤其重要,坊间流传很多某大公司动辄一个团队一个团队挖人的故事,中型企业在这方面尤其弱势,小企业可以用未来的高回报可能性留住人,中型企业则办不到,而大企业则用现金直接砸。这个要靠公司的高凝聚力的企业文化以及靠谱的奖惩制度来提升自己在将方面的竞争力。
五曰法,法者,曲制,官道,主用也。这里就应该是将企业的人力、激励制度了,制定一个适合企业情况的人力制度、奖惩制度来保证企业不会内部混乱。例如大企业里经常使用末尾淘汰机制来保证企业活力,但是这就和建立温馨的企业文化相悖了,这就要仔细权衡了。

 

始计篇下面的,兵者诡道也那一段,主要是指在和别家公司竞争的时候,要做好自己的保密工作,这就是自家企业信息安全的事情了。

史铁生和死亡

星期日, 一月 2nd, 2011

这两天一直在外面跑,没空上网,前两天听说史铁生去世了,想起一些往事。

高中时期有一段时间是我情绪最低落的时候,微薄的英语基础导致农村来的我被英语和英语老师折腾的几乎失去了生活的信心,再加上鼻炎开始发作,整天头昏昏沉沉的,真的想过如果老师再拉我去办公室背单词我就去轻生的念头。

知道又一次翻语文课本的时候,看到史铁生的《我与地坛》 ,让我到现在记忆犹新的是几个他母亲在他读书后偷偷到处找他的描写,让我很替他母亲揪心。摘录如下:

“曾经好几回,我在园子里呆久了,母亲就来找我。我看见过几次她的背影,我也看见过几回她四处张望的样子。她没看见我时我已经看见了她,过一会我再抬头看她就又看见她缓缓离去的背影。我不知道她已经找了多久还要找多久,我不知道为什么我决意不喊她——这也许是出于长大了的男孩子的倔强或羞涩?但这倔强只留给我悔恨,丝毫也没有骄傲。我已经懂了,可我已经来不及了。”

看了他的文章,我想起之前母亲跟我说过的一句话

在初中考高中的时候,她怕我压力太大,因为别的孩子考不上,还能在家务农或者去做工,而我不行。考完试看我情绪低落,安慰我说:“你不用太担心,就算考不上在家里帮爸妈烧饭也行”,这估计是她为我担忧的思绪的冰山一角。

在那之后,碰到更烦的事情,我都没想过轻生,为了史铁生母亲那焦急的眼神,为了我的家人,所以能活到现在。

awk和sed的一个用法

星期日, 九月 26th, 2010

有些用法每次都找要baidu很烦,自己记录一下:

1.awk输出单引号

用awk ‘{print ‘\”}’来输出

2.sed替换字符

今天有个需求是替换每行字符最后一个’,后发现每一行都有七个’,直接替换第七个即可

sed ‘s/\./ /7’

转载:产品设计之开餐馆

星期五, 九月 17th, 2010

一直很关注餐饮方面的事情,今天看到群里有人发了这个链接,将产品设计和开餐馆联系在一起,懂餐饮的人也许觉得这个策划有点低级,我看着很有点触动。在校内上看到这个帖子的就忍忍吧,wordpress的格式一直很有问题。

zz开始:

受白鸦“寻人,丢猫”的影响,我也把前段时间为我姐设计的开餐馆方案整理出来,与产品同行们分享。

为什么做(市场,资源,可行性分析)

市场

我们小区的街上有十多家中小餐馆,街的另一边是城铁。这些餐馆的顾客全来自我们小区,而小区居民除了跑到一公里外的大餐馆去消费的(那条街的两旁全是两层几百个座的大餐馆),和在家做饭的,就只能来这里吃了。

小区人员情况:05年开盘小区,居住的主要是上班族,老人主要是带着小孩的,几乎不见初、高中生;人员数量不好估计,但在几乎没得选择的情况下还能养活十多家餐馆。

餐馆构成情况:在500米左右的街上共17家中小餐馆,4个50个座的,其余都在30座左右,因为夏天大家都在外面摆了餐桌,冬天每家要减10个左右;4家大些的一家为快餐厅,两家为湘菜馆,剩下一家为清真;南北方口味分得不是很清楚,但偏辣的约占三成,主打面食的占三成,一些店里还附带经营着露天麻辣烫与烧烤;大些的餐馆里单人消费15-35元左右,小些的在6-18元之间。

餐馆竞争力情况:在搬过来近一个月里,通过自己的切身体验,发现这些餐馆实在很没竞争力。没竞力体现在:不够整洁,除了那家新开的快餐厅,其它店从地板、墙面、餐桌、餐具及服务员的穿着都不够整洁;味不够好,这些餐馆除了面馆、饺子馆没去吃过,其它基本都尝过,味道很一般,搬来半个月后就每餐不知该吃什么了;服务意识平常,在菜单、菜品设计上,在服务态度、服务流程上都很传统。

市场分析:经过对小区人员情况和现有餐馆情况的分析,存在较大市场潜量(对中小餐馆而言),有优质客户资源(顾客群相对固定、有较强烈需要、有消费能力、易于口碑传播),现有餐馆竞争能力弱,且街上还有一个餐馆转让、四个门面待出租。

资源

我姐和我姐夫都在北京工作,姐在一服装专营店里做店员,姐夫在三一重工北京公司领导餐厅做厨,且是最受好评的一位。姐夫的厨龄有十二年,有几道菜在我们县里都是很有名的,跟北京有名的湘菜馆比也不会逊色。来北京前在老家有过开餐馆的经历。

她们收入都不高,加起来一个月不到6K。

这边待出租的门面不贵,夏天能摆30个位的租金才1200一个月,加上其它投入与周转资金,应付得过来。

所以从能力、从机会成本、从付出上看,都可放手一博。

可行性分析

爱吃面的,爱在露天吃麻辣烫与烧烤的,或几个人一起聚餐吃点菜的,估计约占五成。我相信以我姐夫的厨艺,加上我的运营设计,吸引剩下部分的70%的顾客不成问题(只怕接纳不了),另外还能吸引部分迫不得已在家做饭的上班族,及爱干净、口味较挑去远处消费的人群。

我姐和我姐夫认为如果每个月加起来能收入8K,就愿意去做。初步估算如下:

每个月费用:租一个小些的门面,装修及设备等一次性固定投入1.2W左右,每个月计1.2K的折旧费,每个月租金1.2K,雇一名后厨帮手与一名传菜兼送餐工资加住宿一个月4K,每个月水、电、汽费用计0.6K,每个月费用合计8K左右;

按每个月的收入底线估算(8K):加上每个月费用8K,需收入1.6W,平均每份饭除了原料、配料成本赚6元,需卖出2700份,平均每天90份(周一至周五,上午15份,下午与晚上65份,周未,上午30份,下午与晚上85份),这个应该是很轻松就能完成的。把每个月饮料收入1.5K,应对可能出现的未知费用,所以风险非常小。

最可能估算为:周一至周五,上午20份,下午与晚上70份,周未,上午40份,下午与晚上90份。一个月毛收入为1.8w,减去每个月8K费用,加上饮料收入,至少有1W多净利润。

方案可行,风险不大,且有很大获得更高利润的可能性。

以上方案的可行都建立在“我姐夫的厨艺和我策划的方案”的基础上,我姐夫的厨艺不用质疑(跟他沟通过,做快餐式也没有问题),下面就是我要描述的策划方案。

做什么(产品定位)

我们要开的是一家为小区居民提供卫生、味美、价廉、服务贴心的快餐店。

卫生:首要特点是卫生,要做到让用户能感知到的一切都要整洁、舒适,对饭菜放心,对餐馆信赖;

味美:味道不单要好,还要有特色,辣的不辣的都要照顾到;

价廉:主要菜价要让小区绝大部分人能接受餐餐来,但想省钱的这里也有;

快速:要让顾客从进到店里到满足目的后离开店里的时间尽量短,这不单是珍惜顾客的时间,也是我们能卖出更多饭菜的重要原因;

贴心服务:在服务的提供上,要让顾客感觉到在为他们着想,让顾客持续的对餐馆满意。

如果我们开成了这样一家餐馆,相信吸引这条街上40%的顾客不成问题,下面是我要详细描述的如何开成这样一家餐馆。

怎么做(产品设计,产品运营,项目管理)

产品设计

如何做到卫生:地板、墙壁要装修明净,餐桌、餐具要买新的且保持干净、整齐,并提供消毒柜;虽然与顾客打交道的只有两个人,但也提供统一着装,形象要干净利落;在买菜、洗菜、炒菜每个环节都要在卫生方面严格把关;

如何做到味美兼顾:以我姐夫的厨艺,味道肯定好;多提供些我们老家的,在北京湘菜馆也很少见的美味菜式;“辣”尽管是我们的招牌与特色,但只占30%,因为爱吃辣可以吃不辣的,但不能吃辣的却只能吃不辣的,在北京爱吃毕竟占小部分;

如何制定合理菜价:7-9元占20%,10-12元占60%,13-15占20%。7-9元原料相对便宜,把想省钱的顾客争取过来,他们能够传播本店的声誉,而且也很容易转化成高一档的消费者;10-12元是本店主打菜,让上班族回来想吃饭时,首先想到这里;13-15是原料相对贵些和味道最好的,搭上一杯可乐卖的套餐;在一周里每天给一道10元以上的菜降价2元(或不降价,但赠送一杯饮料,哪种方式更好还需实践检验),作为特价菜;相信这样的价格对顾客很有吸引力,我们自己也很划算。

如何做到快:减少用户选择的时间,只提供15个菜,对于一周内卖得最多的两个菜,贴上“一周热卖”红色标签,对于本月新推出的贴上“本月新菜”绿色标签,把我姐夫自认做得最好的一个菜,贴上“本店推荐”红色标签,对于本天已经卖完了的,要贴上“卖完”灰色标签,给顾客提供选菜引导;缩短顾客的等待时间,每个菜都要有做好的10份备着,对于热卖的或预计卖得好的备多些,当顾客确认要哪个菜后,在旁边50秒内能取到;优化交付流程,顾客在确认吃哪个菜后,一边交钱一边开单,顾客吃完走后,服务员去收盘即可,筷、勺、吸管自取,调配料自助。

如何做到贴心服务:要求服务员态度一定要热情、亲切;顾客有不满情绪或指责时,不能面露不悦;当顾客有意见或建议时要耐心倾听,并进行响应,对于有价值的建议还要提供物质回馈;当有新鲜蔬菜上市时,在每个月菜单调整时加入进去;为小区顾客免费送餐,在就餐繁忙店里不够座时,给顾客提议可打包带回去吃,或留下地址送过去,并把订餐卡片放在顾客容易看到的地方。

菜单设计与展示:如下图所示

当顾客站在点菜台前,抬眼就能看到点菜区。菜单设计力求达到让顾客在点菜时有更好的预知性、辨识性和引导性。

产品规划:尽量选择有两间同时待出租的门面,如果开业一个月内净收入在1W以上,立马把旁边那间也租下来;制定餐馆服务规范与帮传带制度,为开连锁店提供准备。

产品运营

如何让顾客知道:待出租的店在小街偏里点,所以开业后可以搞一个“开业酬宾”活动。在开业后3天内,周一至周五晚上6:30到8点,在小区的入口处派发传单,传单为彩色印刷,主要显示内容包括:菜品实物照片,“凭此传单7天内消费省3元钱”的活动信息,“卫生、味美、价廉”的餐馆特点,内容不用多,让顾客扫一眼就能留下印象,并被吸引;把餐馆的店面装扮得更抢眼;主要还得靠口碑相传。

密码保护:创意log

星期一, 七月 19th, 2010

这是一篇受密码保护的文章,您需要提供访问密码:

我和迅雷的故事

星期二, 六月 22nd, 2010

在迅雷待了三年了,要离开了,回头看一下吧。

06年十月份,我大四,对读研还是工作非常举棋不定的时候。google来学校招聘,笔试的时候非常狗屎的进入面试。这是我人生第一次面试,啥也不懂结果导致面试的非常惨。打扮了半天还是穿的很老土骑着自行车往google所在的金陵饭店进发。到了饭店门口被门卫拦住,曰四个轮子的才可以过。把自行车拴在路边进去面试。对网络一无所知的我没出意料之外的被人鄙视了出来。这次面试的收获就是涨了面试经验,在面试迅雷的时候完全没有压力。

面试回来后,小样兴奋的像打过鸡血一样跟我说,他们参加了迅雷的宣讲会并听迅雷的人介绍他们的工作,非常不错,并且帮我投了简历。那时对迅雷还是有点印象,之前宿舍里另外个同学在我笔记本上安装过迅雷并下载游戏。之后和小样以及松哥去参加了迅雷笔试,我们早上到达考场有点晚了,c++组只有一个位置,我坐了过去,松哥和小样做了java组考试,结果就是java组的全军覆没,只有我中午收到短信让我下午参加迅雷的二笔。那天下午两点钟有另外一个软件公司的二笔,我考到四点钟的时候题目还没做完,而当时迅雷的二笔已经开始了,我草草做完最后几题,骑车奔往迅雷的笔试点。到达时考试已经开始了十五分钟,我做了一会题目,感觉一天赶了四场笔试的经历非常好玩,就抬起头四处环顾了一下,并朝监考的美女HR(wendy)笑了笑。wendy事后判断我考试时临危不乱并非常自信。由于项目经验少,懂的也少,比别人多面试了一轮并最终发了offer,当时在小百合上小炫耀了一下被人鄙视了。可能是当时人胸无大志,拿到offer后就不怎么用心找工作了。又有一天,融博(招行软件开发中心)去招聘,因为当时松哥没有offer,我和小样怂恿松哥去笔试,并俩人一起陪他去考试,结果是三人同时被录取,小小的纠结了一下之后,毅然被迅雷的期权所忽悠并坚定的拒了融博,结果就是我辛苦了两年后涨了点薪水后他们仍然比我高2k/m,如果让我再选一次,我可能还是选迅雷吧。后来得知老四也拿了迅雷的offer,经过融博这一役后我们仨都再也没找过工作,加上老四,我们四个胸无大志的人!我试图找过腾讯,但是腾讯没给我笔试机会,在简历关就把我灭了。

07年过年后我和老四来到迅雷来实习,当晚入住豪方105,认识了另外五个一起来实习并的人(石头、cc、良民、蚊子、经理),觉得和这帮人非常投缘。不到一个星期就有点生死之交的感觉,实习期间每天晚上打牌或者下棋到三点。我下班后和小明在网吧消耗一两个小时再回来打牌。这段时间,jhfkk用比较有压力的方式把我锻炼对编程初窥门径的人,因为这要对kk说声谢谢。这段时间锻炼让我脱离了小白。很快一个月过了,我的毕设老师催我回去做毕设,宿舍里五个人依依不舍的送走了我们,并确立了“豪方七侠”的称号。这帮七侠在入职后一直到现在,只要一声招呼,能立刻在周末聚起来,或打牌,或唱歌,或一起写代码。

07年七月份来深圳入职,得知被分到叫安全中心的小组,和kk、小于、ayu以及波波等人开发迅雷客户端安全相关组件。后来毛毛也来了,并带起了dota的风气,一开始他们几个玩,我私下来自己练,也许我的性格和大家不和,也许我对jhfkk的不服软和不尊敬抑或我缺乏游戏天赋,大家不肯带我打dota,进而我和大家越走越远。我当时在浩方里从路人菜鸟慢慢练,非常累,经常被人骂。我和小于私人关系保持的不错,有次周末的时候,偶尔碰到他们在浩方房里,我在他们对面,手选山丘。那天手风非常顺,杀了他们十四个人并取得了胜利,觉得很是出了口气,但是又进一步和他们有了隔阂。后来发生了360恶评web迅雷事件,上头要求我们建立自己的软件评价中心并交给安全中心来做。但是我们组的后台缺人,后来kk决定让过去后台组,理由是波波比较忙,毛毛刚入手做不能胜任,我来做正合适。我至今还是很想知道当初派我过去的真正原因是啥,是否和我和kk的不融洽有关。目前作为一个工作三年的人,我对我当初的不融洽很是抱歉,当时所做的是个不成熟的人行为,任何一个领导碰到那种态度的人都不会喜欢。

之后被调入linux组并开始linux旅行,组里另外有jyw和gary,jyw和我一样是07毕业生,gary是leader,不是个非常好的leader。花了一段时间熟悉了gcc、make和makefile以及cgi。并跟石头学习了html和JavaScript,石头当时也很忙,所以教我的时候不是非常耐心,搞的我当时什么都得学有时又没人指导,过得非常郁闷。在我每天加班到十一点半有时甚至通宵的辛苦工作了一个月后发布了第一个网站。在07年中秋节的时候,得知我转正被推迟半个月,刹那间我这段时间的努力呗全部打掉并信心全无。我的推迟转正也是我认为gary不是个好leader的原因,顺带的我也对我的部门leader david很有意见。我至今仍然认为,对一个新来的努力工作的员工不应该这样打击(gary之前曾私下对jyw承认过我工作很勤奋)。第一个网站完成后,紧接着又开发了另外一个网站,其中有个支付相关的系统让我对后台系统加深了了解。但是在部门内得不到尊重,七八个人的部门,开会都不叫上我们两个毕业生,让我们心里很没有归属感,所以后来在收到别的诱惑后毫不犹豫的离开了这个部门,在我走之后这个部门也渐渐的都散了。

不久后,碰到了一个对我职业道路影响巨大的人perlish,此人进入迅雷后比较不得志。perlish在业界很有名气而且也比较有个人魅力,后来他独立部门后召唤我和jyw过去,我几乎没有怎么考虑就觉得同意过去。perlish本来想要俩人,但是名额只有一个,最后武哥选择了我。跟着perlish后两年中学了很多技术方面的、做人方面的、互联网方面的东西,也扩展了很多见识,同时部门leader老武也教了我很多东西。老武是个非常有个人魅力的领导,所有从部门离职的人都非常同意这一点。两年后TB公司通过相关方面联系到我,在自费飞奔杭州去面试后艰难的取得了TB的offer,当时得知perlish也要从迅雷离职,一个部门不能都离职,我艰难的拒掉了TB的offer,艰难到我觉得很对不起TB以至于我不好意思向人家开口要报销机票。从那后一年内单独支撑迅雷安全大局,解决过几次危机。

最近,觉得自己在迅雷有点疲了,已经没有激情了,每日做重复的劳动,心里有点老迈,担心自己就此沉沦堕落下去,所以毅然决定离职,出去接触些新东西。

我离开,不是因为你不好。我心底觉得,迅雷是这样一个公司:你在迅雷工作过,就被打上迅雷的烙印,永远是迅雷的人。希望迅雷能越走越好,早点上市吧。

php && gd 库安装

星期六, 六月 19th, 2010

apt-get install gd-devel

apt-get install  freetype-devel

apt-get install libjpeg-devel

apt-get install libpng-devel

wget http://cn2.php.net/get/php-5.2.13.tar.gz/from/cn.php.net/mirror

tar xzvf php-5.2.13.tar.gz

cd php-5.2.13

‘./configure’ ‘–with-mysql=/usr/local/mysql’ ‘–enable-zend-multibyte’ ‘–with-config-file-path=/etc’ ‘–enable-mbstring’ ‘–enable-sockets’ ‘–with-apxs2=/usr/local/apache/bin/apxs’ ‘–with-jpeg-dir=/usr/lib64’ ‘–with-png-dir=/usr/lib64’ ‘–with-freetype-dir=/usr/lib64’ ‘–with-gd’ ‘–with-zlib’ ‘–with-mysqli’