分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

回家

[不指定 2011-1-30 18:29 | by 张宴 ]
  下班了,从此刻开始,公司统一放13天的春节假期,2月13日(正月十一)上班。

  明天下午,离开北京。结婚之后,每逢春节,只能在 My Home Town 和 My Wife's Home Town 之间轮询了,今年带着老婆回我家。阔别了两年的美丽故乡,终于可以回到你的怀抱了。

  1500公里的航程

  点击在新窗口中浏览此图片

  还需100公里的车程

  点击在新窗口中浏览此图片

  故乡的小城,不是浮云

  点击在新窗口中浏览此图片
  [文章作者:张宴 本文版本:v1.0 最后修改:2010.01.29 转载请注明原文链接:http://blog.zyan.cc/truecrypt]

  QQ、MSN、RTX的聊天历史记录,有时候在处理问题时,想查看一下,但换台电脑,就查看不到了,怎么办?Foxmail在公司收取的邮件,在家就看不到了,怎么解决?SecureCRT存放大量服务器SSH密码信息,换台电脑,如何不在新电脑上保存信息,同时又使用起来又方便、安全?存放在U盘上的机密文件,如何避免U盘丢失、被盗后,文件泄漏?

  市面上有很多加密软件,但由于未开源,可能存在后门,或者漏洞,导致加密的文件可破解。因此,对于加密软件来说,还是开源的比较靠谱。源码都公开,留有后门的可能性不存在了。在源码都可以查看的情况下,如果能够破解,早就可以破解了。

  TrueCrypt(http://www.truecrypt.org/)是一款开源的绿色加密软件。它可以在硬盘或闪存上创建一个或多个虚拟磁盘,所有虚拟磁盘上的文件都被自动加密,加密后需要通过密码来进行访问,由于加入了AES-256加密算法,使得加密数据几乎不可能被,对于没有商务安全功能的普通电脑,或者不舍得购买加密闪存的商务用户,TrueCrypt可以让他们的数据存储安全可靠。

  前几天公司发了两个2GB的金山毒霸版U盘,我将我的QQ、MSN、公司内部通讯工具RTX、SSH客户端SecureCRT、OpenSSL VPN、Foxmail、一些文档都装在了其中一个U盘上。

  点击在新窗口中浏览此图片

  关于TrueCrypt的安全性,有一则外电新闻:http://www.security.nl/artikel/33724
  
  FBI在经过一年的尝试后,还是未能破译被巴西执法机构指控金融犯罪的巴西银行家的加密文件。巴西一家葡萄牙语报纸报道(葡萄牙语),巴西联邦警察在2008年7月展开的Satyagraha行动中,在银行家Daniel Dantas位于里约热内卢的公寓内收缴了5个硬盘。文章提到硬盘使用了两种加密程序,一种是TrueCrypt,另一种是不知名的256位AES加密软件。在专家未能破解密码后,巴西政府在2009年初请求美国提供帮助,然而美国联邦警察在一年不成功的尝试后,退还了硬盘。巴西现有的法律中不存在强制要求Dantas交出密码的规定。



  使用步骤:将TrueCrypt拷贝到U盘上,然后运行TrueCrypt.exe。

  1、创建文件加密卷
Tags: , , ,
  [文章作者:张宴 本文版本:v1.0 最后修改:2010.01.20 转载请注明原文链接:http://blog.zyan.cc/android_apk_zip]

  前天,金山网络的一位同事向我咨询了一个问题:很多用户反映,网站上提供的Android手机应用程序文件“xxx.apk”,用IE浏览器下载,扩展名就被自动被重命名成了“xxx.zip”,拷贝到手机上无法安装。我发现,由于APK文件本身就是压缩包,如果用户的电脑上装了WinRAR(85%的装机量),用IE下载APK文件,扩展名就会被自动改为“.zip”。

  如果你的下载服务器为Nginx服务器,那么,在Nginx安装目录下的conf/mime.types文件的对应位置,加上以下一行语句,指定APK文件的MIME类型为 application/vnd.android.package-archive 即可:

application/vnd.android.package-archive     apk;


  截至本文发布时,存在“xxx.apk”下载时被自动重命名为“xxx.zip”问题的网站很多,其中不乏一些提供 Android 程序下载的知名网站,例如:新浪微博、街旁网。

  新浪微博官方 Android 手机客户端下载页:http://t.sina.com.cn/mobile/android.php

  点击在新窗口中浏览此图片

  点击在新窗口中浏览此图片

  街旁 Android 版客户端下载页:http://we.jiepang.com/client-android/
Tags: , , , ,
  (本文来自《程序员》杂志2011年01期,《程序员》官网地址:http://www.programmer.com.cn/4544/

  主持人:冯大辉,现任丁香园 (http://www.dxy.cn)网站CTO。曾历任支付宝架构师、数据库团队负责人等职。

点击在新窗口中浏览此图片  许式伟:作为系统架构师,您一般会从哪些方面来保证网站的高可用性(降低故障时间)?

  张宴:很多因素都会导致网站发生故障,从而影响网站的高可用性,比如服务器硬件故障、软件系统故障、IDC机房故障、程序上线前测试未发现的Bug、遭受分布式攻击、突发访问人数剧增等。

  一套良好的网站系统架构,应该尽可能地避免只有一台服务器、一个数据库、一套软件节点等单点故障的存在。单点故障一旦发生,将直接导致网站服务不可用,恢复正常服务所需的时间也比较长,甚至还可能无法恢复。负载均衡集群、双节点热备、分布式处理等都可以用来解决单点故障,比如提供相同业务的Web服务器、MySQL数据库从库,都可以构建负载均衡集群。一旦集群中的一台服务器、一个服务出现故障,自动实时摘除,对用户来说是不可感知的,不会影响到整个网站的访问,可以为运维工程师留下足够的时间去排查和解决故障。

  对于重要的MySQL数据库主库,我们习惯于从硬件层和软件层来实现热备,避免单点。越是复杂的设备,发生故障的概率越大。在磁盘没有损坏的情况下,应用程序导致服务器宕机的概率,远高于简单的磁盘阵列宕机的概率。所以,从硬件层解决的话,可以在两台服务器上安装相同的数据库版本、进行相同的配置,用SAS或SCSI线连接一台磁盘阵列,将数据库数据文件存放到盘阵上。正常情况下用服务器A挂载盘阵分区,启动MySQL,绑定虚拟IP;如果服务器A宕机,则用服务器B挂载盘阵分区,启动MySQL,接管虚拟IP。从软件层解决的话,则可以借助DRBD等软件做镜像。

  IDC机房发生故障的概率较小,但如果发生的话,影响面也是最大的。如果所有服务器都托管在一个IDC机房,一旦该机房遭遇长时间流量攻击、断电、断网、地方政策性封网等,通常只能联系IDC去处理,除此之外束手无策,解决时间也比较长。如果成本允许,将网站服务器分布在两个以上的IDC机房,当某个IDC发生故障时,可以临时切换DNS域名解析来优先恢复服务。

  虽然程序代码上线前,经过了测试人员的严格测试,但测试环境和生产环境毕竟有差异,所以一些会急剧影响性能、正常服务的Bug往往在程序上线之后,才会被发现,这就要求我们在发现Bug后,能够迅速回滚到上一正常版本。我们在SVN的基础上,开发了Web代码发布系统,会将每个发布版本之间的文件变更记录下来,一键实现程序代码在多台Web服务器上的发布和回滚。

  遭遇DDOS分布式拒绝服务攻击,使用防火墙来对付半连接、假IP,还算比较容易。而那种专挑复杂动态应用程序URL进行的分布式CC攻击,来源为真实IP、真实HTTP请求,具有模拟正规浏览器User-Agent、单个IP的每秒请求数不高、有成千上万个攻击源等特征,很难与正常访问区分开,比较难对付。但是,正常通过浏览器访问一个URL,会加载该URL中引入的JavaScript脚本、CSS样式、图片等文件。遇到CC攻击,需要及时分析日志,找出访问量异常上涨的URL,然后用事先写好的shell脚本找出哪些IP的请求只访问了该URL,而不加载该URL引入的文件,对这些IP进行自动封锁。

  系统架构设计时,需要事先考虑到高于目前访问量多少倍的突发访问。对于网游站点来说,访问量受广告集中时间段投放、线上活动的影响较大,带宽峰值时间不固定,对于静态内容,可以使用商业CDN,按实际使用量计费。对于动态内容,如果遇到突发访问人数剧增,超过现有服务器处理能力,最简单的临时处理办法就是增加服务器。上架新服务器需要时间,但是,同一个IDC机房内,可以借助其他业务的服务器,在不同端口开启一组新进程,加入到原有负载均衡池中。另外,可以临时关闭一些Web中的次要功能,来减少服务器消耗。



  许式伟:您在任务切分上,有什么经验分享?您通过哪些手段保证任务的独立性?

  张宴:相信很多人都遇到过这种情况:在一个老项目上修改、增加一些新功能所花费的时间,不比重新来做一个包含所有功能的新项目时间用得少。一个需要长期维护的项目,不可避免地会面临老员工的离职、新员工的接手,很多时候,项目代码的可维护性将决定一个项目的生存周期。让一个新员工在规定开发时间的压力下,去面对一个文档不够详细、陌生的、功能复杂的庞大项目,短时间弄明白所有功能逻辑不是一件容易的事。所以,任务需要切分,将一个大的任务切分成一个个小模块之后,各模块之间可以做到代码独立,互不影响,可维护性也大大增强。

  关于任务切分,我以本人今年负责的两个重要项目架构设计为例来介绍一下。在第一个项目:金山游戏官网的《用户行为分析系统》中,由于数据挖掘计算需要消耗较高的内存、CPU资源,一台服务器的处理能力不够,而商业的分布式数据仓库价格又太贵,所以,只有从程序应用中下手,进行任务切分。我们先按需要挖掘的数据指标,将整个数据挖掘任务切分成多个数据挖掘插件,每个插件可以在不同的服务器上运行,多个插件可以同时在多台服务器上。多个数据挖掘插件之间,如果用到相同的某项数据,那么,就将该项数据以冗余方式,复制几份提供给需要的插件,从而实现插件之间无交互、无关联,保证了超大数据量下插件的运算速度。

  在第二个项目:金山游戏新版运营管理系统中,则将整个任务切分成了PHP Web管理界面、PHP Web API功能接口、C/C++中间件引擎三部分。这是一种分层结构切分,最上层的“PHP Web管理界面”调用“PHP Web API功能接口”,“PHP Web API功能接口”调用运行在游戏服务器端的“C/C++中间件引擎”,“C/C++中间件引擎”与“游戏服务器端进程”通过TCP、UDP二进制协议、信号、命令行等多种方式通信。四者之间相对独立,代码无关联,通过一层层API接口实现交互。“PHP Web管理界面”负责通用界面实现。“PHP Web API功能接口”内部,又按接入的游戏模块、子功能模块进行了更细的切分,各功能模块之间通过内部API交互。“C/C++中间件引擎”大而全,不处理具体指令,但兼容TCP、UDP、HTTP、HTTPS/SSL、信号、命令行等大多数通信方式,负责和各种类型的游戏服务端交互。这是一套完全由API接口驱动的系统架构,一款新游戏接入运营管理系统时,只需在“PHP Web API功能接口”中增加一个模块;一个游戏新管理功能的增加,只需要在“PHP Web API功能接口”中增加一个子模块。通过任务切分,将复杂功能简单化,也将原来接入一款新游戏所需要的几个月时间,缩短为1~2周。



  许式伟:您通过哪些手段,来保障产品的质量?您倾向于多久更新一次您的网站?
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]