邵珠庆の日记 生命只有一次,你可以用它来做很多伟大的事情–Make the world a little better and easier


51月/13

Windows7 旗舰版-微软原版操作系统+激活工具

发布在 邵珠庆

 

windows7旗舰版属于微软公司开发的windows7系列中的终结版本。别的版本还 有简易版、家庭普通版、家庭高级版、专业版。相比之下windows7旗舰版是功能最完善的。

风刑建议大家不要安装使用那些ghost版本系统,因为那些版本许多功能被精简了,还捆绑了广告、病毒。以下带给大家的四个版本都是微软原装正版系统,纯正、干净。

下载地址

Windows7 简体中文旗舰版32位:

cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso

Windows7 简体中文旗舰版64位:

cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso

Windows7 英文旗舰版32位:

en_windows_7_ultimate_with_sp1_x86_dvd_u_677460.iso

Windows7 英文旗舰版64位:

en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso

 

一键激活工具(一分钟即可激活)下载:

WIN7一键激活工具.rar

51月/13

Git .gitignore 設定與注意事項 – 以Zim操作為範例

发布在 邵珠庆

 

Git 設定 .gitignore, 設定完成就都直接生效, 在測試時都很正常, 但是實際使用 卻沒有生效, 有點軌異.

 

環境

  • Git 所管理的專案名稱、位置: /home/user/doc

下述範例是以 Zim 為主, Zim 是一套桌面的 Wiki 編輯器, 裡面寫的內容都會存成 txt 檔, .zim 的目錄下會存 “*.cache” 和 “zim 本身自己的設定值”.

Zim 在剛開始建立完成後, 就使用下述步驟:

  1. cd /home/user/doc
  2. git init
  3. git commit -a
  4. git push #一開始沒有設定 .gitignore, 所以會將 .zim/* 都 commit 進去

於每次開啟 Zim 後, 都會出現

modified:   .zim/history.cache
modified:   .zim/index.cache

造成 git commit -a 的麻煩 (因為多台電腦要同步時, index.cache / history.cache 都會出現需要 merge 的狀況), 所以想設定 .gitignore 來把它拿掉. (方便 git commit -a)

設定 .gitignore 位置、方法

設定 Git ignore 的方式都一樣, 有下面幾個地方可以設定, 依自己喜好 / 需求來設定即可.(設定位置)

  • vim ~/.gitignore # 對所有 Git 的專案生效 (自己的 home 目錄下)
  • vim doc/.gitignore # doc 是專案名稱, 用這個的好處是, 將 .gitignore commit 進去, 此 .gitignore 可以隨著專案到處走. (Git 管理的 Project 目錄下)
  • vim doc/.git/info/exclude # 只有單獨於此處 .git 生效 (Project 的 .git/info/exclude 檔案)
  • 這幾個地方都可以設定, 可以使用 * 等符號. 詳可見: gitignore(5) Manual Page

於 .zim 的狀況, 可以設定下述: (設定方法)

  • 所有 . 開頭的目錄 / 檔案都不 commit

    .*

  • .zim 目錄內 的 所有 *.cache 都不 commit

    .zim/*.cache

  • 只有 .zim/history.cache, .zim/index.cache 不 commit

    .zim/history.cache
    .zim/index.cache

.gitignore 無法生效 的 問題修復

在測試狀況都是正常, 但是在 Zim 實際使用就有問題, 每次都出現 modified 的解法.

解法
  1. 因為第一次 commit 已經將 .zim/*.cache commit 進去了, 所以每次它都會去檢查, 造成都出現 modified 的狀況.
  2. git rm -f .zim/history.cache
  3. git rm -f .zim/index.cache
  4. git commit # 即可
  5. 再將 .gitignore 設定好, 就可以避免掉這些狀況囉~ icon smile Git .gitignore 設定 與 注意事項   以 Zim 操作為範例

範例 -我的 Zim 設定方式

  1. cd /home/user/doc
  2. vim .gitignore

    .zim/*.cache

  3. git add .gitignore
  4. git commit
  5. git push
31月/13

金蝶记账软件-智慧记-免费版

发布在 邵珠庆

 

《金蝶智慧记 3.0》  个体商户免费智能记账软件
----------------------------------------------------------------------------
如今个体工商户挣钱不容易,如果管钱再不够精确更是难上加难!智慧记是金蝶公司为淘宝店主、IT软硬件卖家、化妆品、服装等各行业个体工商老板推出的一款免费记账软件。它涵盖了淘宝、IT软硬件、化妆品、日用百货、五金建材、 数码电器、电子元器件、服装、食品、药品、物资等各个行业。拥有精准报价智能查询、库存管理、收入支出、欠款管理等功能。让您从此抛弃手工记账,明明白白的做个开心幸福的精英老板。

-----------------------------------------------------------------------

会员管理

一键导入客户资料升级为VIP会员管理,享有会员折扣、会员积分、会员关怀三大功能;
会员折扣:设置会员折扣类型,开销售单时可以按会员的等级享受一定打折优惠;
会员积分:可设置积分规则,消费多少金额积多少分,积分可用于礼品兑换;
会员关怀:会员生日提醒,掌握联络会员的重要时刻,适时送上短信表达客户关怀。

 

手机数据同步
支持苹果手机和安卓手机,下载手机数据同步程序,使用该功能可随时随地查资金、查库存、查销售等店铺经营的情况。

 

同步淘宝订单
专门针对淘宝店主开发,将淘宝店铺与进销存软件无缝接合,淘宝订单自动同步导入智慧记直接生成销售单,打印记账一次解决,省心省力。

 

独特店铺体检
店铺体检抽取对基础项目、业务项目、常规项目的体检分析,发现店铺运行情况存在问题,提醒用户及时打理,高枕无忧。

 

智能快速开单
销售或进货开单时,货品、客户、供应商均可按名称关键字或关键字拼音首字母快速定位,多种方式达到数据快速录入,真正全键盘操作的目的,智能而高效。

 

管理安全库存
货品通过设置安全库存量管理,库存异常采用多种方式提醒,达到货品超缺货情况一目了然。为后续安排补充货源或减少积压库存决策提供坚实可靠依据。

 

丰富多样报表
提供进销业务查询报表,方便每天业务核对。提供汇总统计报告、提供明细统计报表,多纬度反应一定时期经营真实业绩。

 

下载地址:《金蝶软件智慧记》免费版.exe

31月/13

为什么是车库咖啡?

发布在 邵珠庆

 

1938年,爱迪生大街367号的车库里,两位年轻人William Hewlett和David Packard开始开发自己的第一个产品,一种音频振荡器。

1998年,两个斯坦福的大学生Page和Brin意识到自己应该创业,他们在帕洛阿尔托的车库里注册了属于自己的公司。

多年以后,爱迪生大街367号已成为无数膜拜者追寻硅谷创新精神的胜地,而帕洛阿尔托的车库也早已写入搜索巨头谷歌的编年史。

每个创业者可能都会有一个关于车库的梦,不一定是在加州的那个车库,但一定是那个充满着无限可能的车库。

2011年4月,海淀区海淀西大街48号,又一家“车库”开张了。这个“车库”实际上在一家宾馆的二楼,名为车库咖啡。从那时起,这里每天都发生着一些关于梦想的故事。

 梦想驻扎

车库不是一家普通的咖啡馆。每天,这里总是会挤满踌躇满志的年轻人,他们大部分是工程师,每个人都带着一个笔记本电脑,指尖如飞地在键盘上敲打着什么,你猜得到,一定是与idea、innovation 有关的。

车库并不是一个咖啡厅。被博友称为“看门老头”的苏菂,是车库咖啡的创始人。创立车库是源于“开放式办公环境”的想法:在这里,买一杯20元的咖啡,可以坐一天,享受免费的无线网络、水电、办公场所。咖啡厅只是一种表现形式,一种计价标准,使这里更有开放的感觉。

有这样一个常常被提起的桥段:2011年的3月,车库咖啡还没装修完,莫小西和他的团队就手脚麻利地搬进去了。一个月后的某一天,莫小西像往常一样坐在车库咖啡的“专用座位”上,打开自己搬来的台式电脑,一边漫不经心地看着昨天刚刚改过的产品计划,一边揉揉太阳穴让自己别太困。“小莫有人找你”,苏从会议室里出来冲莫小西一招手。莫小西心想怎么会有人找我?

苏依旧表情木讷:“你们聊一下”,莫小西这才反应过来:苏是在给他介绍投资人,但他刚开口磕磕绊绊地说了五分钟就被迫中止了——号称最成功的域名投资者蔡文胜的到来打断了他。

2012年3月的若干个夜晚和白天,我都在“车库”。我的行程路线一般是自创新工场从东往西走到海淀图书城步行街内。海淀图书城步行街,是一条南北走向的小街,两旁是一家家折扣书店和服饰礼品店,行人较少。

有一天,我突然发现,以前觉得有些“偏僻”的“车库”,正占据着中国互联网行业的黄金地段:如果以车库咖啡为圆心,向南半站路是微软、再右转是腾讯,往北转过一个街角就到新浪和爱国者……神州数码和PE大厦的距离都在1公里以内。

“为什么选择这样一个地方?”苏菂曾经用有点哲理的语句回答:这是一个选择,是一种对用户的选择。“车库”希望来这里的是创业者,志同道合的创业者,有共同语言的创业者。不希望是驻足歇脚的情侣,不希望是来品尝咖啡的游客,更也不希望是走马观花般的看客。

 创业痛点

车库咖啡占地800平米,能容纳150人左右。某个周末到车库的人,肯定会被大开间的格局小震撼一下。每次有活动演示,旁边的桌子坐满了人,而中间的场地坐的坐,站的站,四面八方的声音形成了一股强烈的声波,让置身其中的人有一些跃跃欲试。

然而与这样的氛围相悖的是,每个创业者回到自己的圈子却是孤独的。“创业者很孤独, 也很痛苦。特别是刚开始的创业者会有精神上的恐惧, 不知道下一次拿到钱是什么时候, 不知道什么时候能给自己发工资,不知道房租什么时候能付,不知道因为付不了房租,可能房子什么时候会没的住了。”有一次,和苏菂聊起来,他说,希望车库咖啡提供这么一个平台:创业者可以互相交流,有各种活动可以参与,还能得到一些具体的帮助和指导。

“有些真真实实的问题和恐惧,是一般人所无法体会的。希望能实实在在地帮助创业者。”他一脸真诚地说。

苏和另一位合伙人魏征,都是特别随性的人。有一天,我们突然聊到了DOTA,这个5to5的对抗游戏,特别像是创业的状态,你必须要有团队配合,资源的平衡,等等。于是,一挥手,5个人就即兴组建了一个小组。也许,你在中国找不到比这儿创业者更密集的地方,每一个喜欢这里的人,都是被“看门老头”营造的这种氛围迷住了。

 高层关注

2月29日下午,中国证监会主席郭树清来到了车库咖啡。车库咖啡馆的官方微博第一时间发布了郭树清在咖啡馆与创业者交流的新闻图片。当天下午开始,关于郭树清到访创业咖啡馆的网络讨论迅速热了起来:有说跟郭主席换了卡片的,有说握了手的,还有注意到郭主席戴的围巾的……

有对创业文化不甚了解的部分网友误以为郭树清造访与鼓励餐饮行业上市有关,有的还表达了对餐饮行业公司上市“圈钱”的担忧。苏菂尴尬地微博回应:“我们给创业团队提供开放办公的场地,他们(郭主席一行)是来关注初创企业和孵化模式的”。

这么一场小欢乐,再次使车库咖啡的关注度升温。毋庸置疑的是,车库的影响力已经从创业者、投资者,抵达政府层面。车库大厅里摆着一块中关村科技园区管委会颁发的“创新型孵化器”的牌子,在车库咖啡能直接注册公司。在车库之前,管委会将另一块同样的牌子,颁给了李开复的创新工场。

“10个月的时间内,有13个团队在这里拿到了200万美元以上的投资,200万美元以下的投资我们不做统计。”魏说。也正是这样的成果,车库不但吸引了民间的目光,也吸引了政府的目光。“有时我一天就要接待上百位来考察学习的政府官员。”

 再造车库

对于突如其来的成名,魏还是抱着一颗平常心。他认为,政策上扶持,当然会导致关注的力度加强,也增加了竞争者的门槛,但是也没必要沾沾自喜。

魏认为,车库达到今天的程度,关键是天时地利人和。天时——中关村作为科技特区, 时间到了这个节点,其引导政策决定了这个时间点,再早个五年还是差点火候;地利——周围都是高科技公司,腾讯、新浪、微软、百度,围绕在四周;人和——交朋友的心态, 不以盈利为目的。

创业咖啡馆,车库并不是第一家,前有贝塔咖啡,后有3W咖啡,构成中关村的互联网咖啡“铁三角”。我问苏菂,怎么看待竞争,怎么看待全国各地最近不断涌现的创业咖啡馆。他淡淡地说,当然是希望来服务创业者的人越多越好,就如同私立大学越多越好。

但是魏认为,成功有时候更是一种运气的成分,其他团队不清楚,他们去其他地方也许搞不起来,所以一年之内还不考虑去开连锁。

我理解,车库咖啡是一个生态系统,有硬件条件包括政策、社会环境、经济环境,有软件条件包括有足够的投资人、创业者,还要有与之配套的科技博客的兴起,各种创业活动、创业知识的普及、创业氛围的形成,潜在创业者的聚集和关注,基本上缺一不可。

11月/13

自己随手记录网址

发布在 邵珠庆

http://tool.c7sky.com/image-watermark/

添加图片水印效果不错

http://www.class.pm

可以下载和学习好多资料和项目

http://labs.falba.pro/floater/

Jquery 页面自适应格子

http://jquerylist.com/

jquery List 优秀导航

http://vvpolyakov.github.com/panmap/

谷歌地图标注

http://net.tutsplus.com

插件学习教材

http://www.wsf1234.com/

很多好的破解软件

http://www.jeasyui.com/

jquery UI

http://kachibito.net

小日本的设计网站Jquery CSS HTML5

http://mcpants.github.com/jquery.shapeshift/

Jquery可拖动的瀑布流

http://www.designchemical.com

国外前端设计网站*****

Home

国外Jquery图表

Wijmo: Next-Gen JavaScript UI Controls | Angular 2

jquery 国外企业框架

http://layout.jquery-dev.net

jquery 页面布局框架

http://sj.geekso.com/index.php

国内数据采集

http://www.fusioncharts.com

国外图表

 

http://intf.zol.com.cn/intf_ip/get_ip2py.php?jsname=locale_ip_city&jsshen=locale_ip_province

中关村在线获取当前IP地址

11月/13

Zend Studio 9.0.4正式版注册破解

发布在 邵珠庆

以下方法仅供技术交流学习,请勿非法使用,如长期使用请支持购买正版。
正版购买地址:http://shop.zend.com/en/zend-studio-for-eclipse.html

你还没有最新安装程序?

ZendStudio下载地址:http://www.geekso.com/component/zendstudio-downloads/

注册破解步骤

第一步:如果已经安装过Zend Studio 9.0.4的,请打开Zend Studio 9.0.4,在菜单中“help>Unregister”,如果显示是灰的跳过此步退出Zend Studio。如果显示可以点击的请点击,这时Zend Studio会重启,重启到要求你填注册码时点“QUIT”按钮



第二步:请根据你使用的Zend Studio版本下载对应的破解文件:

ZendStudio9.0破解文件com.zend.php.core_9.0.0.201111081531.jar (已下载 12120 次)

ZendStudio9.0.1破解文件com.zend.php.core_9.0.1.201112141951.jar (已下载 17358 次)

ZendStudio9.0.2破解文件com.zend.php.core_9.0.2.201202240955.jar (已下载 25255 次)

ZendStudio9.0.3破解文件com.zend.php.core_9.0.3.201206251721.jar (已下载 10651 次)

ZendStudio9.0.4破解文件com.zend.php.core_9.0.4.201210081806.jar (已下载 24400 次)

Zend Studio 10 Beta测试版官方下载地址——更新2012-10-25

Windows : 官方下载 | 复制地址

Linux—32: 官方下载 | 复制地址

Linux—64: 官方下载 | 复制地址

Mac OS X: 官方下载 | 复制地址

Zend Studio 9.0.4 正式版官方下载地址——更新2012-10-12

Windows : 官方下载 | 复制地址

Linux—32: 官方下载 | 复制地址

Linux—64: 官方下载 | 复制地址

Mac OS X: 官方下载 | 复制地址

Zend Studio 9.0.3 正式版官方下载地址——更新2012-05-10

Windows : 官方下载 | 复制地址

Linux—32: 官方下载 | 复制地址

Linux—64: 官方下载 | 复制地址

Mac OS X: 官方下载 | 复制地址

Zend Studio 9.0.2 正式版官方下载地址——更新2012-03-05

Windows : 官方下载 | 复制地址

Linux—32: 官方下载 | 复制地址

Linux—64: 官方下载 | 复制地址

Mac OS X: 官方下载 | 复制地址

Zend Studio 9.0.1 正式版官方下载地址——更新2011-12-16

Windows : 官方下载 | 复制地址

Linux—32: 官方下载 | 复制地址

Linux—64: 官方下载 | 复制地址

Mac OS X: 官方下载 | 复制地址

Zend Studio 9.0.0 正式版官方下载地址

Windows : 官方下载 | 复制地址

Linux—32: 官方下载 | 复制地址

Linux—64: 官方下载 | 复制地址

Mac OS X: 官方下载 | 复制地址

提示com.zend.php.core_9.0.4.201210081806.jar对应的版本号为9.0.4.v20121009466



下载成功后(提示:破解文件千万不要解压,也不要修改破解文件的文件名)复制到你安装Zend Studio 9.0.4的plugins目录下,覆盖同名文件。



第三步:启动Zend Studio,复制如下注册码License key,粘贴(粘贴快捷键是ctrl+v)到注册框中

  复制注册码

提示:先覆盖第二步当中的破解文件,然后在启动Zend Studio输入注册码。



第四步:查看是否注册成功,在菜单中“help>About Zend Studio ”, 显示如下图。

过期时间9999年12月31日说明注册破解成功完成。

【已解决问题】

2011-12-06:解决同一局域网内相同的key只能使用一台的问题。如你遇到提示“user license number 1 is already in use by 1 users”,请重新下载破解文件。

zend studio9.0.4汉化及常见问题解答http://www.geekso.com/zendstudioquestion/

win7 64位32位,window server2008 64位,mac版都没问题,如果遇到无法注册的请留言。

我试了在CentOS(32位)操作系统下用此方法注册Zend Studio 9.0.4成功,所以Linux操作系统是没有问题的。以下是我在Linux操作系统注册成功的截图:

查看截图:http://www.geekso.com/attachment/201112/1323070502_8926bffc.png

你没破解成功,不防看一下是不是这个原因造成的?

最近发现好多朋友告诉我说注册破解没有成功,我看了下主要是因为把下载的那个破解包给解压了,造成破解不成功。所以下载完这个破解包后千万不要解压,直接覆盖到你安装Zend Studio 9.0.4的plugins目录下的同名文件。还有查看注册码复制的对不对。

为什么我复制破解文件到plugins目录时没有提示已存在同名文件?

原因1:是你下载的是9.0的测试版。建议下载最新版本的Zend Studio9.0.4,下载地址:http://www.geekso.com/component/zendstudio-downloads/

原因2:下载的破解文件版本跟你的安装的ZendStudio版本不一样。

原因3:下载的破解文件文件名跟我发布的破解文件名不一样,有可能在下载的时侯被修改了,请核对确认文件名是否被修改,必须跟我发布的文件名是一模一样的。

Linux操作系统破解zendstudio都按上面操作了,但在复制注册码时还是显示不正确?

注册码复制进去后,按下 ctrl+z (回滚),一直按回滚,一直滚到无法回滚的时候这个注册码就变成绿色的勾了!

如果以上方法你还是没有破解成功,请添加QQ群解答ZendStudio破解问题

1号QQ群:204192303(已满)。

2号QQ群:204192304(已满)。

3号QQ群:187586326(已满)。

同时也附上两个最新的zendStudio 10测试版的试用注册码(有效期2012年12月9号):

D4B4FE7A9260B5826E783F714A40797CFE9BE053BE30441E83EDE67B7627EC3F5FB1BC1523AEB8E1D3DA89CE15147EFF7DF70BEC475D3938D5386E034D3C08824576616C753B30392F31322F323031323B31302E303B3030313B313B3336

zendStudio 10第二个注册码(有效期2013年01月15号):

5A327570FFF0DA1BEC27A342E37E54D7D557BCAFD0845C80315A4A09851D00B8E3547BD8FF5DF8B4E15845D0BBE49FFF4662F46DE48BB09BD28578DD21F05EF74576616C753B31352F30312F323031333B31302E303B3030313B313B3337

转自http://www.geekso.com/ZendStudio9-key/

2812月/12

业界开源日志系统比较

发布在 邵珠庆

 

1. 背景介绍

许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:

(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;

(2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;

(3) 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。

本文从设计架构,负载均衡,可扩展性和容错性等方面对比了当今开源的日志系统,包括facebook的scribe,apache的chukwa,linkedin的kafka和cloudera的flume等。

2. FaceBook的Scribe

Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统 (可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。

它最重要的特点是容错性好。当后端的存储系统crash时,scribe会将数据写到本地磁盘上,当存储系统恢复正常后,scribe将日志重新加载到存储系统中。

架构

scribe的架构比较简单,主要包括三部分,分别为scribe agent, scribe和存储系统。

(1) scribe agent

scribe agent实际上是一个thrift client。 向scribe发送数据的唯一方法是使用thrift client, scribe内部定义了一个thrift接口,用户使用该接口将数据发送给server。

(2) scribe

scribe接收到thrift client发送过来的数据,根据配置文件,将不同topic的数据发送给不同的对象。scribe提供了各种各样的store,如 file, HDFS等,scribe可将数据加载到这些store中。

(3) 存储系统

存储系统实际上就是scribe中的store,当前scribe支持非常多的store,包括file(文件),buffer(双层存储,一个主储存,一个副存储),network(另一个scribe服务器),bucket(包含多个 store,通过hash的将数据存到不同store中),null(忽略数据),thriftfile(写到一个Thrift TFileTransport文件中)和multi(把数据同时存放到不同store中)。

3. Apache的Chukwa

chukwa是一个非常新的开源项目,由于其属于hadoop系列产品,因而使用了很多hadoop的组件(用HDFS存储,用mapreduce处理数据),它提供了很多模块以支持hadoop集群日志分析。

需求:

(1) 灵活的,动态可控的数据源

(2) 高性能,高可扩展的存储系统

(3) 合适的框架,用于对收集到的大规模数据进行分析

架构

Chukwa中主要有3种角色,分别为:adaptor,agent,collector。

(1) Adaptor 数据源

可封装其他数据源,如file,unix命令行工具等

目前可用的数据源有:hadoop logs,应用程序度量数据,系统参数数据(如linux cpu使用流率)。

(2) HDFS 存储系统

Chukwa采用了HDFS作为存储系统。HDFS的设计初衷是支持大文件存储和小并发高速写的应用场景,而日志系统的特点恰好相反,它需支持高并发低速率的写和大量小文件的存储。需要注意的是,直接写到HDFS上的小文件是不可见的,直到关闭文件,另外,HDFS不支持文件重新打开。

(3) Collector和Agent

为了克服(2)中的问题,增加了agent和collector阶段。

Agent的作用:给adaptor提供各种服务,包括:启动和关闭adaptor,将数据通过HTTP传递给Collector;定期记录adaptor状态,以便crash后恢复。

Collector的作用:对多个数据源发过来的数据进行合并,然后加载到HDFS中;隐藏HDFS实现的细节,如,HDFS版本更换后,只需修改collector即可。

(4) Demux和achieving

直接支持利用MapReduce处理数据。它内置了两个mapreduce作业,分别用于获取data和将data转化为结构化的log。存储到data store(可以是数据库或者HDFS等)中。

4. LinkedIn的Kafka

Kafka是2010年12月份开源的项目,采用scala语言编写,使用了多种效率优化机制,整体架构比较新颖(push/pull),更适合异构集群。

设计目标:

(1) 数据在磁盘上的存取代价为O(1)

(2) 高吞吐率,在普通的服务器上每秒也能处理几十万条消息

(3) 分布式架构,能够对消息分区

(4) 支持将数据并行的加载到hadoop


架构

Kafka实际上是一个消息发布订阅系统。producer向某个topic发布消息,而consumer订阅某个topic的消息,进而一旦有新的关于某个topic的消息,broker会传递给订阅它的所有consumer。 在kafka中,消息是按topic组织的,而每个topic又会分为多个partition,这样便于管理数据和进行负载均衡。同时,它也使用了zookeeper进行负载均衡。

Kafka中主要有三种角色,分别为producer,broker和consumer。

(1) Producer

Producer的任务是向broker发送数据。Kafka提供了两种producer接口,一种是low_level接口,使用该接口会向特定的broker的某个topic下的某个partition发送数据;另一种那个是high level接口,该接口支持同步/异步发送数据,基于zookeeper的broker自动识别和负载均衡(基于Partitioner)。

其中,基于zookeeper的broker自动识别值得一说。producer可以通过zookeeper获取可用的broker列表,也可以在zookeeper中注册listener,该listener在以下情况下会被唤醒:

a.添加一个broker

b.删除一个broker

c.注册新的topic

d.broker注册已存在的topic

当producer得知以上时间时,可根据需要采取一定的行动。

(2) Broker

Broker采取了多种策略提高数据处理效率,包括sendfile和zero copy等技术。

(3) Consumer

consumer的作用是将日志信息加载到中央存储系统上。kafka提供了两种consumer接口,一种是low level的,它维护到某一个broker的连接,并且这个连接是无状态的,即,每次从broker上pull数据时,都要告诉broker数据的偏移量。另一种是high-level 接口,它隐藏了broker的细节,允许consumer从broker上push数据而不必关心网络拓扑结构。更重要的是,对于大部分日志系统而言,consumer已经获取的数据信息都由broker保存,而在kafka中,由consumer自己维护所取数据信息。

5. Cloudera的Flume

Flume是cloudera于2009年7月开源的日志系统。它内置的各种组件非常齐全,用户几乎不必进行任何额外开发即可使用。

设计目标:

(1) 可靠性

当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Best effort(数据发送到接收方后,不会进行确认)。

(2) 可扩展性

Flume采用了三层架构,分别问agent,collector和storage,每一层均可以水平扩展。其中,所有agent和collector由master统一管理,这使得系统容易监控和维护,且master允许有多个(使用ZooKeeper进行管理和负载均衡),这就避免了单点故障问题。

(3) 可管理性

所有agent和colletor由master统一管理,这使得系统便于维护。用户可以在master上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载。Flume提供了web 和shell script command两种形式对数据流进行管理。

(4) 功能可扩展性

用户可以根据需要添加自己的agent,colletor或者storage。此外,Flume自带了很多组件,包括各种agent(file, syslog等),collector和storage(file,HDFS等)。

架构

正如前面提到的,Flume采用了分层架构,由三层组成,分别为agent,collector和storage。其中,agent和collector均由两部分组成:source和sink,source是数据来源,sink是数据去向。

(1) agent

agent的作用是将数据源的数据发送给collector,Flume自带了很多直接可用的数据源(source),如:

text(“filename”):将文件filename作为数据源,按行发送

tail(“filename”):探测filename新产生的数据,按行发送出去

fsyslogTcp(5140):监听TCP的5140端口,并且接收到的数据发送出去

同时提供了很多sink,如:

console[("format")] :直接将将数据显示在桌面上

text(“txtfile”):将数据写到文件txtfile中

dfs(“dfsfile”):将数据写到HDFS上的dfsfile文件中

syslogTcp(“host”,port):将数据通过TCP传递给host节点

(2) collector

collector的作用是将多个agent的数据汇总后,加载到storage中。它的source和sink与agent类似。

下面例子中,agent监听TCP的5140端口接收到的数据,并发送给collector,由collector将数据加载到HDFS上。

1
2
3
host : syslogTcp(5140) | agentSink("localhost",35853) ;
 
collector : collectorSource(35853) | collectorSink("hdfs://namenode/user/flume/ ","syslog");

一个更复杂的例子如下:

有6个agent,3个collector,所有collector均将数据导入HDFS中。agent A,B将数据发送给collector A,agent C,D将数据发送给collectorB,agent C,D将数据发送给collectorB。同时,为每个agent添加end-to-end可靠性保障(Flume的三种可靠性保障分别由agentE2EChain, agentDFOChain, and agentBEChain实现),如,当collector A出现故障时,agent A和agent B会将数据分别发给collector B和collector C。

下面是简写的配置文件片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
agentA : src | agentE2EChain("collectorA:35853","collectorB:35853");
 
agentB : src | agentE2EChain("collectorA:35853","collectorC:35853");
 
agentC : src | agentE2EChain("collectorB:35853","collectorA:35853");
 
agentD : src | agentE2EChain("collectorB:35853","collectorC:35853");
 
agentE : src | agentE2EChain("collectorC:35853","collectorA:35853");
 
agentF : src | agentE2EChain("collectorC:35853","collectorB:35853");
 
collectorA : collectorSource(35853) | collectorSink("hdfs://...","src");
 
collectorB : collectorSource(35853) | collectorSink("hdfs://...","src");
 
collectorC : collectorSource(35853) | collectorSink("hdfs://...","src");

此外,使用autoE2EChain,当某个collector 出现故障时,Flume会自动探测一个可用collector,并将数据定向到这个新的可用collector上。

(3) storage

storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase等。

6. 总结

根据这四个系统的架构设计,可以总结出典型的日志系统需具备三个基本组件,分别为agent(封装数据源,将数据源中的数据发送给collector),collector(接收多个agent的数据,并进行汇总后导入后端的store中),store(中央存储系统,应该具有可扩展性和可靠性,应该支持当前非常流行的HDFS)。

下面表格对比了这四个系统:

7. 参考资料

scribe主页:https://github.com/facebook/scribe

chukwa主页:http://incubator.apache.org/chukwa/

kafka主页:http://sna-projects.com/kafka/

Flume主页:https://github.com/cloudera/flume/

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/search-engine/log-systems/

2512月/12

2012年互联网创业者生存与发展报告

发布在 邵珠庆

 

第八届中国网络社区调查近日发布报告,报告重点关注2012年互联网创业者生存与发展状况。该报告对参与调查的5000个创业者样本进行分析,剖析创业者创业动机、盈利状况、公司运营风险、融资状况,展现中小网站在社会化和移动化趋势下发生的变化。

  创业者属性调查:部分90后接过80后创业接力棒 80后仍是主力

  长江后浪推前浪,虽然当前80后仍是创业主力人群,但90后创业者已经开始显露头角。调查数据显示,2012年68%的创业者是80后,16%是90后,对比2011年调查数据(80后约为77%,90后创业者约为6%)发现,80后创业者数量下降10%,90后数量上升10%。

  创业动机调查:多数人对行业了解甚少 仅凭兴趣创业

  明知山有虎,偏向虎山行,不知山有虎,更向虎山行。问到为什么创业时,很多创业者表示仅是出于兴趣爱好,对于能否赚钱考虑较少。本次调查数据显示:72%创业者是因为“兴趣爱好”而创业,超过57%的创业者对自己创业的行业表示“完全不了解”或“略微了解”。

  在创业行业上,总计62%的创业者选择了垂直细分行业,其中互动娱乐、生活、IT三个领域成为最热门的互联网创业领域。

  盈利情况调查:近半创业者年度收入不足1000元

  收入是衡量创业项目“健康状态”的重要指标,但目前多数创业者仍处于“营养不足”的状态。本次调查数据显示:超过45%的创业者2011年年度收入不超过1000元,近20%创业项目年度收入在1000-5000元之间。

  此外,调查数据显示联盟广告受青睐,近半(44%)创业者以广告联盟作为主要收入来源。

  运营风险调查:多种风险并存 创业者还需眼观六路

  投资有风险,创业需谨慎。眼观六路,耳听八方,创业者要做到面面俱到,稍不留神就一败涂地。本次调查数据显示:政策风险、流量下降、盈利不佳、推广成本上升、服务器成本上升级、办公支出上升分别以52%、48%、45%、36%、34%、25%成为创业者的六大风险,创业者需求眼观六路。政策风险、长期不盈利、运营不利并列对创业者信心最大打击来源,让其可能因此放弃创业项目。

  融资情况调查:超八成创业者自掏腰包起家 团队不超5人

  当前, 85%的创业者靠自有资金启动创业项目,工作团队人数较少,一般不超过5人。超过半数的创业者明确表示,希望以股份来换取投资,但67%的创业者表示苦于缺乏和投资人沟通的渠道。

  社交化调查:创业者SMO实践仍处于初级阶段 效果有待提高

  在这个世界上,任意两个人之间建立一种联系,最多需要6个人,这就是六度分隔理论,互联网社交化充分印证了这一理论。业界整体看好SMO(社交化媒体优化),包括QQ互联在内的众多服务于创业者的产品(平台)都积极相应SMO需求,纷纷在产品中主动进行SMO尝试,给创业者更多选择。

  本次调查数据显示:超过半数的创业者已经在尝试SMO,但近八成创业者认为给网站带来的流量低于30%。同时近八成网站已开通官方微博,主要目的在于品牌建设、会员互动、转化流量。

  移动化调查:移动互联网——小荷才露尖尖角

  移动互联网像一个巨大的金矿,正在等待创业者的挖掘。截至今年6月底,中国网民数量达到5.38亿,其中手机网民达到3.88亿,手机首次超越台式电脑成为第一大上网终端。随着智能手机平板电脑的普及,移动互联网已经成为越来越多人的选择。腾讯上线“微信”、Discuz!宣布在新版本大力支持移动互联网,各大公司都在寻找机会,或自创产品加入竞争,或提供平台吸引第三方,希望在移动互联网大潮中分一杯羹。创业者胜在拥有灵活创新的思路和高效的执行力,有机会突出重围,寻找到属于自己的领地。

  本次调查数据显示,超过10%网站中过半数的流量是由移动互联网带来的,创业者也有30%以上提供了APP应用给移动互联网网民,可供移动设备访问的网页版、WAP版也已成为大多数网站的基础配置。

2012月/12

phpmailer邮件类下载

发布在 邵珠庆


PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:

*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址

*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable

*.支持SMTP验证

*.支持冗余SMTP服务器

*.支持带附件的邮件和Html格式的邮件

*.自定义邮件头

*.支持在邮件中嵌入图片

*.调试灵活

*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等

*.可运行在任何平台之上

调用方法:

01.require("class.phpmailer.php");
02. 
03.$mail new PHPMailer();
04. 
05.$mail->IsSMTP();                 // 启用SMTP
       $mail->SMTPSecure = "tls";      //如果是Gmail请修改加密方式(重要)
06.$mail->Host = "smtp1.example.com";           //SMTP服务器
07.$mail->SMTPAuth = true;                  //开启SMTP认证
08.$mail->Username = "name@example.com";            // SMTP用户名
09.$mail->Password = "password";                // SMTP密码
10. 
11.$mail->From = "from@example.com";            //发件人地址
12.$mail->FromName = "Mailer";              //发件人
13.$mail->AddAddress("josh@example.net""Josh Adams"); //添加收件人
14.$mail->AddAddress("ellen@example.com");
15.$mail->AddReplyTo("info@example.com""Information");    //回复地址
16.$mail->WordWrap = 50;                    //设置每行字符长度
17./** 附件设置
18.$mail->AddAttachment("/var/tmp/file.tar.gz");        // 添加附件
19.$mail->AddAttachment("/tmp/image.jpg", "new.jpg");   // 添加附件,并指定名称
20.*/
21.$mail->IsHTML(true);                 // 是否HTML格式邮件
22. 
23.$mail->Subject = "Here is the subject";          //邮件主题
24.$mail->Body    = "This is the HTML message body <b>in bold!</b>";        //邮件内容
25.$mail->AltBody = "This is the body in plain text for non-HTML mail clients"//邮件正文不支持HTML的备用显示
26. 
27.if(!$mail->Send())
28.{
29.echo "Message could not be sent. <p>";
30.echo "Mailer Error: " $mail->ErrorInfo;
31.exit;
32.}
33. 
34.echo "Message has been sent";

关于邮件乱码的解决办法:

邮件的中文会出现乱码主要是编码没有设置好。

设置方法如下:

1.$mail->IsHTML(true);                 // 是否HTML格式邮件
2.$mail->CharSet = "utf-8";                // 这里指定字符集!
3.$mail->Encoding = "base64";

但是请注意,这并不能完全保证你收到的邮件是正确的编码。在发送html邮件时,我们需要发送一个完整的html文档。

如:

<html><head>

<meta http-equiv="Content-Language" content="zh-cn">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>

<body>含中文的内容</body>

</html> 

 

附件下载:

PHPMailer.zip 114.94KB

要注意的内容: 

  1. 邮件的字符集设置, $mail->CharSet = "GB2312";            // 这里指定字符集!在这里我只指定为GB2312因为这样Outlook能正常显示邮件主题,我尝试过设为utf-8但在Outlook下显示乱码。 

  2. 如果是发送html格式的邮件,那么记得也指定<meta ... charset=GB2312"> 

  3. 如果你想用它来群发邮件的话,记得修改包含文件函数,如: 

  require("phpmailer/class.phpmailer.php"); 

  改为 

  require_once("phpmailer/class.phpmailer.php"); 

  否则的话会产生类的重定义。



1812月/12

WordPress邮件发送(外部smtp)解决方案

发布在 邵珠庆

最近朋友采用WordPress做了个博客,但却被邮件发送的问题烦恼死了.WP在缺省无sendmail等UNIX下的邮件服务器时,怎么也不能发送邮件.忙活了两天,基本把这个问题给解决了.在社区闲逛时,有位老兄提到可以使用phpmailer,后来查看了一下WP2.2的所有文件,发现它原来就自带这个东东.但是得小小的修改一下才能让它工作,在此感谢这位兄弟,所有代码均来自它的小站^_^,下面开始动手拉

1.打开/wp-includes/目录下的class-phpmailer.php,查找class.smtp.php将其替换成class-smtp.php(官方的phpmailer两个文件名分别是class.phpmailer.phpclass.smtp.php,放在WP以后,可能是为了统一文件命名方式就改成了class-phpmailer.phpclass-smtp.php,但忘了将里面调用的文件名一起修改了,呵呵)
2.在/wp-includes/目录下新建立mail.inc.php(设置发送邮件需要使用的smtp),代码如下

<?php
require("class.phpmailer.php");

class MyMailer extends PHPMailer {
// Set default variables for all new objects
var $Mailer = "smtp"; // Alternative to IsSMTP()
var $CharSet = "utf-8";
var $From = "你的邮件地址";
var $FromName = "name,你想起什么名字都可以";
var $Host = "smtp服务器地址";
var $Port = 25; //smtp server port
var $SMTPAuth = true;
var $Username = "你邮件的帐号";
var $Password = "你邮件的密码";
//var $SMTPDebug = true;
var $WordWrap = 75;
}
?>

3.打开/wp-includes/pluggable.php,查找function wp_mail($to, $subject, $message, $headers = '') {
global $phpmailer;
global $phpmailer;其前面添加如下代码

require("mail.inc.php");

$mail = new MyMailer;

$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $message;

return $mail->Send();

4.在此文件中查找wp_new_user_notification函数,修改其中的一行代码:

wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_settings('blogname')), $message);

修改成

@wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_settings('blogname')), $message);

5.在文件结尾?>前添加如下代码

if ( !function_exists('wp_mail_attachment') ) :
function wp_mail_attachment($to, $subject, $message, $string, $filename, $encoding, $type) {
require("mail.inc.php");

$mail = new MyMailer;
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AddStringAttachment($string, $filename, $encoding, $type);

return $mail->Send();
}
endif;

OK,到此只需要在mail.inc.php中设置好smtp服务器地址,端口,用户名和密码就可以使用非SSL SMTP Server(比如163)发送邮件了.

PS:PHP似乎采用配置版的比较好;添加以上代码以后,非得在后台先启用用户注册,不然怎么也不能发送邮件,真是奇异^_^