坚信科学,分享技术

2018全新版本,未来在blog.54chen.com更新博客!

>>>尝试更加利于阅读的2014版科学院,以后都在新版上写。

Author Archives: 54chen

54chen解读NoSQL代表Dynamo

本文已经首发于InfoQ中文站,版权所有,原文为《解读NoSQL技术代表之作Dynamo》,如需转载,请务必附带本声明,谢谢。 InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon、免费迷你书下载如《架构师》等。 NoSQL在过去的一年里,逐渐已经成为了家喻户晓的东西,我(54chen)自从去年开始人人网的NoSQL系统Nuclear的研发以来,一直看着NoSQL越来越热,越来越引来大家的围观。受infoQ霍师傅之托,特作此文,一来作过去一年的总结,二来希望以平白的话语对NoSQL系统在国内的发展献绵薄之力。 1.我眼中的两种模式 NoSQL其实并不是什么妖魔鬼怪,相反的,NoSQL的真谛其实应该是Not Only SQL,其产生是在数据量和访问量的增大下,人为地去添加机器、切分数据到不同的机器,变得越来越困难,人力成本越来越高,于是便开始有了这样的项目,本意是提高数据存储的自动化程度,减少人为干预的时间,让负载更加均匀。在国际上,真正的代表之作有来自Google的 BigTable 和Amazon 的Dynamo,他们分别使用了不同的基本原理。 1.1 MapReduce 这是历史最久的一种模型,典型的代表是BigTable。Map表示映射,Reduce表示化简。MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性(Map);每个节点会周期性的把完成的工作和状态的更新报告回来(Reduce)。大多数分布式运算可以抽象为MapReduce操作。Ma

Continue reading

8 Comments

跨系统共享键盘鼠标利器分享:synergy

是这样的张总, ?在家里的电脑上按了CTRL+C,然后在公司的电脑上再按CTRL+V是。。。肯定不行的。即使同一篇文章也不行。不不,多贵的电脑都不行。 --题记 端午归来,特此总结,实现上述难题,靠一利器:synergy 此利器可打通mac\linux\windows任意两者的联系,使两个系统共享鼠标和键盘。下面以ubuntu 10.04与盗版windows XP为例。 首先,在ubuntu下面,建立服务端。 #sudo apt-get install synergy quicksynergy #quicksynergy 启动后如图所示: 只需要填写上下左右中的某一个位置修改成另一台机器的机器名,点击执行,常驻运行即可。 然后,在windows下面,安装客户端。 Synergy 1.3 Client 安装运行后如图: 输入Ubuntu机器的ip地址,点Start即可连上两机。 连上之后,可以撤掉在你办公桌面上的一个键盘,鼠标移动到哪个桌面上,键盘针对哪个系统输入,非常好用,还支持复制粘贴,对上班时候用两台电脑的同学非常适用。

Continue reading

3 Comments

端午,北京,图

啥也不说了,下面上图。

Continue reading

7 Comments

一场技术的圣战:rose开源框架之portal

作者:人人网架构师 王志亮 (54chen按:此文为客座博文,王志亮大侠,人人网架构师,疱丁分词创始人,rose是他的另一开源大作。关于69圣战,请看http://zhidao.baidu.com/question/158643718.html?si=2&wtp=wk) 2010年的6月9日是一个圣战的日子,零点一到就有人开始,好戏也如约在晚上7点发生。人人网战场是SJ的公共主页:http://page.renren.com/sj   对不同人,这个日子意味着不同,滋味也不同。作为人人网技术团队,我们要保证服务能力、用户体验能够应付得了这个挑战。   某一个服务器的能力总有限,为了应付突然增长的读写量,web服务架构、内部服务架构、数据库架构等要能够轻松通过服务器调配来满足。就web服务器而言,我们增加了1倍的机器。现在再回头来看监控的数据,一切显得美好。这个期间整个服务做到了服务能力没有中断。除此之外,在这次圣战中,其中还有一项我们独有的技术起到了重要的作用:rose portal ,下面作一个介绍:   图1是sj的主页:   图1 sj在人人网的公共主页 这个页面分为三列: 左边有 “推荐给好友”、“基本信息”、“相册”; 中间有“给SJ留言”、“好友留言”; 右边有“好友”,“人人的用户还关注”等。 在后台,这些被分解为不同的模块,我们称之为”window”。这每一个window都意味着可能连接一个独立的服务集群,比如基本信息服务、留言服务、好友服务、相册服务等等。这样,一个公共主页就等于多个独立的、可配置的window模块组成,如图2所示 :

Continue reading

5 Comments

ubuntu 10.04 LTS版本下的Empathy MSN群聊显示昵称方法

1.关系普及 Empathy是个托,python-papyon是个python实现的msn库,telepathy-butterfly是个完成msn功能的python客户端。 2.修改办法 sudo vim /usr/share/pyshared/papyon/conversation.py 查找 if message_type == 这个字符串 找到内容为: if message_type == 'text/plain': msg = ConversationMessage(unicode(message.body, message_encoding), TextFormat.parse(message_formatting), self.__last_received_msn_objects) try: display_name = message.get_header('P4-Context') 将if判断后try之前中间定义msg这一堆内容修改为如下: try: msg = ConversationMessage(unicode("["+message.get_header('P4-Context')+"]"+message.body, message_encoding), TextFormat.parse(message_formatt

Continue reading

6 Comments

分享一个批量扫描ip地址的shell内涵脚本

内涵前言 假如您在维护上千台服务器,然后通过www.xxx.com发现打不开,然后有部分用户又说是可以打开的,现在要做的事情是找出来哪个机器可以用。 内涵第一章 检查原理 有许多DNS反查的网站,可以反查你的域名的相关ip地址,然后把这些ip地址循环ping,有返回结果的说明那个服务器可用。比如说just-dnslookup等等网站。具体可以在网上找找。 内涵第二章 检查操作 在准备好数据后,将结果复制到脚本文件中的temp文件中,然后修改54chenPing.sh中的第二行,将awk中的$3修改为你的数据对应的列数。比如说你复制的内容的第三列的话就写$3,第四列就写$4。 内涵第三章 执行 #sh 54chenPing.sh 然后会有结果输出,持续输出返回结果的一个或者多个ip即是可用的服务器。 内涵第四章 代码 #!/bin/sh cat temp | awk '{print $3}' > ip.txt FLIST="`cat ip.txt|grep -v "#"`" for FILE in `echo "${FLIST}"` do ping ${FILE}> tmp/${FILE}.txt& done tail -f …

Continue reading

Leave a comment

[纯水]庆祝数据开始注入nuclear系统和哥学社整装待发

二零一零年的五月二十五号,更确定一点来说是五月二十六号这一天,经过半年将近一年的折腾,人人网分步式no-sql系统nuclear正式导入了线上的大型数据(之前也有一些数据在工作了,这次是相当大一部分数据)。 完全清楚nuclear的跳到下一段,Nuclear存储系统,是中国最大的SNS网站人人网下属UGC团队在遇到海量的UGC数据存储需求情况下,开发的在高性能、高可靠、可扩展方面有着优良表现的海量数据存储系统。它参考了dynamo设计文档,并且分析了现存开源no-sql系统的优劣,完整分析了 Cassandra、Voldemort代码的基础之上,在UGC小组的努力下,加入了自动平衡机器负载,简单切换底层引擎等特色而适用的功能,还有相关的附属功能,可以使一个系统从普通的DB轻易将数据移到nuclear集群中来。同时有丰富的管理功能,在使用过程中可以快速掌握任何一个节点的状态。 如果你是人人网用户,此刻你访问的数据也许已经来自于nuclear提供的动力支持,nuclear,让数据流动更智能。纯广告语。。。 特此庆祝,nuclear成功接入大型系统数据。 还是在五月二十六号这一天,哥学社(一个技术组织)第一次面向社会,在PHP兄弟连的技术期刊《草根》连载哥学社几大成员的技术文章,将于6月1日正式发布。 完全明白哥学社的跳到下一段,哥学社是一个自由博客组织,以提高原创技术博客质量,为成员博客增加更有效评论,由来自腾讯、百度、盛大、人人网、新浪、奇虎、TOM等各大企业的哥们共同起草发起,官方地址是http://www.blog-brother.com。 特此庆祝,哥学社正式壮大。

Continue reading

4 Comments

[警示]Nginx + PHP CGI的安全漏洞:fix_pathinfo

如果你正在使用nginx+php,请关注。 表像: 具体的重现过程,用php代码修改后缀名后上传,比如说www.xxx.com/1.jpg,访问的时候用www.xxx.com/1.jpg/xxx.php 这段jpg代码将会被执行!!! http://docs.php.net/manual/zh/ini.core.php cgi.fix_pathinfo "1" PHP_INI_ALL 从 PHP 4.3.0 起可用 请注意:默认为1 解决办法: 1.修改php.ini中的cgi.cgi.fix_pathinfo为0(即使你在php.ini中没有搜到,也要设置,没有搜到表示默认为1) 2.判断文件上传类型时使用严格的判断,至于怎么判断,参见:http://www.54chen.com/php-tech/php-upload-file-types-to-determine-the-complete-program-and-php-nginx-upload-size-and-complete-control-program.html 3.把nginx的判断正则修改为去除/ if ( $fastcgi_script_name ~ \..*\/.*php ) { return 403; } 鸟哥在http://www.laruence.com/2010/05/20/1495.html一文中提及此事。

Continue reading

3 Comments

[更新]ubuntu 10.04 硬盘安装手记

在过去的两年里,ubuntu发展迅速,快速成为了技术人员居家工作旅行必备系统。54chen从8.04开始从fc系列(RH的后续个人系统)换到ubuntu来使用,期间连续发布了多篇使用ubuntu各个版本的安装和使用手记。54chen作为互联网最早的ubuntu"义务推广员",一路看到了ubuntu队伍的发展和壮大。 安装的记录: ubuntu 8.10 desktop版本 硬盘安装手记 [十一归来]ubuntu 9.10 硬盘安装手记 还有许多配置相关的手记。 10.04的发布:2010年4月29日(看上去是这样的,四月份发布的都是长期支持的版本,后缀里有一个LTS的标识,同时4月份出的版本往往也是没有啥巨大动作的。) 根据官方总结,Ubuntu 10.04中将会具有以下全新特性: 快速启动:在几乎所有机型上的启动速度都明显更快,在使用固态硬盘(SSD)的笔记本电脑或者上网本等机型上的速度超快。这意味着用户可以开机后立即进入浏览器,快速访问网站。    起点社交:Ubuntu 10.04LTS桌面版新的“Me Menu”(我的菜单)整合了社交网站如Facebook、Digg、Twitter和Identica,使得各个网站的登录和个人信息更新一次完成。 Me Menu的聊天软件,支持同时登录QQ、MSN、Google Talk等多个应用程序,和朋友或者同事聊天。(没有出现本土化的SNS和微博,墙干净了,没啥用)   Ubuntu One:增强的在线服务桌面整合功能意味着用户可以更容易地使用云端服务存储、分享和同步文件及文件夹、浏览器书签和通讯录,使得从个人计算机

Continue reading

5 Comments

mysql explain详解

doubanclaimed89ad216b01beaf 题注:感谢suchasplus兄弟在第一时间提示explain拼写错误~~~:) 对于经常使用mysql的兄弟们,对explain一定不会陌生。当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息。 借助于EXPLAIN,你可以知道 1)你什么时候必须为表加入索引以得到一个使用索引找到记录的更快的SELECT。 2)你也能知道优化器是否以一个最佳次序联结表。为了强制优化器对一个SELECT语句使用一个特定联结次序,增加一个STRAIGHT_JOIN子句。 官方的关于explain的文档在http://dev.mysql.com/doc/refman/5.1/en/using-explain.html(英文),本文可作为官方文献的不完整通俗读物。 使用的方法 EXPLAIN tbl_name 或: EXPLAIN [EXTENDED] SELECT select_options 前者可以得出一个表的字段结构等等,后者主要是给出相关的一些索引信息,而今天要讲述的重点是后者。 举例 mysql> explain select * from event; +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key

Continue reading

3 Comments
Page 16 of 16« First...101213141516