手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2012年03月的文章

转:运作开源项目的一点经验

说实话,本文的内容真的不可以相信,至少在国内没有多少人会这么用。国内据我所知,做开源的没几个混的好的,除非已经是历史优久的那些。当你的开源做了一两年之后,你会发现你的项目已经被人改的面目全非,换个名字在卖钱、在运营,难道不是吗?国内的这些状态实在让人对做开源实在不是一个好的平台。忍忍吧。

看看别人是怎么说的:
上周我在 PHPUK 上面讲了一些关于开源项目的内容。我想把它们整理一下都记录下来,以免忘记。也许我不太适合来给出一些这方面的建议,但这些都是我运营 joind.in 的一些真实、重要的总结。
社区(Community)

你喜欢一个项目,分享了它的代码,并且公布了它,这就算是开源项目吗?在我看来这不是,开源项目必须有一个社区。作为兴趣,你这么做可以,但是你想要其他人也参与这个项目,事情就大不同了。

为了让别人参与贡献,你必须建立一些基础设施,可以让别人能够顺利沟通,看到项目的进展。作为项目的负责人,你需要管理这些基础设置。Joind.in 使用google groups的邮件列表,问题跟踪系统(atlassian为开源项目提供免费的授权)以及IRC频道。我们也有一个博客,以及twitter账户来发表 公开的声明。我们使用了多个邮件列表,外联、功能、开发。这样就可以让不同的人选择自己感兴趣的信息,而不会被其他信息淹没。

如果你的项目还不是很有名,你需要通过博客,twitter,stack overflow等各种渠道来让人们知道它。

说明文件(README)

在项目能获得其他人的贡献之前,你首先要保证其他人能顺利的配置你的项目。你最好在网页,wiki,博客,以及项目中都有README信息,因为你不知道人们习惯从哪里看这些信息。

项目规划(Roadmap)

有一个清晰的项目规划是非常有用的。当用户给你提出一些新功能的时候,你可以说“it's on the roadmap”,或者让他们去邮件列表讨论。人们也知道你们正在干什么。

贡献代码(Code Contributions)

这一点有点复杂。大部分的开源贡献者只对他们感兴趣的东西感兴趣,其他的功能或者系统的其他部分很难引起他们的兴趣。但是恰恰其他部分是系统的关键部分。 还有,作为项目负责人,你需要及时审核,测试,合并,部署这些贡献的代码。当某些贡献不能被采纳的时候,你需要告诉别人为什么,以及如何改进。

以我的经验来看,区分真正有用的贡献,以及一般般、没用的贡献是比较困难的。有可能那个贡献者提交了代码以后就消失了,剩下你来维护这个代码。这个问题似乎只能靠直觉去解决。你能做的就是诚恳的对待贡献者,说出你心里真实的想法。

透明化(Transparency)

对我来说,这是运营开源项目最重要的一点!人们能看到代码,能看到问题列表,邮件列表,甚至持续集成服务器。我可以向人们求助,指出哪段代码不工作。有时候,在我还没有意识到问题的时候,就会有人跳出来指出我的错误。

对于和我一起工作的人来说,他们可以看到哪些“pull request”是开放的,谁评论了什么,哪些代码在什么时候被采纳了。我会提交我参与的所有分支到githut。所以当有人问我一个功能的进度的时候,我往往直接告诉他们最新的版本号。

把项目的所有东西都拿出来给人看有点像是在熨烫一件脏衣服,让人有点不适。但是这样做的好处是你可以听到各种各样的建议。好几次我在twitter上贴出了一个bug链接寻求帮助,有不少人去留言,给建议,也有人直接去测试代码。
----EOF----
上文来自:http://cnbeta.com/articles/175607.htm
说实话,社区这东西,由于在国内私人不能架设论坛,其实有点让人蛋疼(虽然很多人都私自架设了),在社区内有四种人:潜水员、用户、开发者、骂人者。任何一个论坛都会有第四类人,除了黄色网站吧。真正参与到项目中的人真的很少,往往很多人都是索取者。痛苦啊。

粗心+jpeg 精度

jpeg大家都知道,它有一个精度的概念,一般如果我们用GD库做缩略图时,默认精度就是100,这时候压缩的图片还是和原来一样清晰,但事实 上我们不需要这样的清晰,毕竟在网页中72的dpi就足够了。所以当我们把精度设置为72时,尺寸会明显下载。下降的很厉害哦。
于是,我在我们目前的项目中用上了自动根据 URL生成了缩略图,指定了某个域名下的图片生成。但最终发现所生成的图片都是超级大,很让我意外,于是将精度调整为72,但效果仍然这样,没有变化,这是为什么呢?
排查了很多原因,都没有发现代码上有任何问题,最终在检查apache的conf文件时发现,我将某个serveralias写错了。我在多个域名中间用","分隔了,事实上多个域名应该是用空格分开。
那可能您又要说了,如果这个域名不存在,那岂不是会报错?是的,事实上就是错了,但。。。。我在默认的网站配置里也有一个自动生成缩图的配置,那个配置中,精度是100.所以,死活排查不出问题。

当然看到这里就知道,我的问题还是解决了。否则我就不可能在这里记录笔记了。
看过我博客的人都知道,我。。。粗心犯的错误太多了。哎。

Tags: apache, serveralias, gd

豆瓣的初衷&文案的力量

文案的作用真有那么大?文案重要大家都知道,只是可能都没有人关注过究竟有多大。
冯大辉在博客中提到:

http://www.dbanotes.net/startup/Excellent_Writer.html
  1. 文案对于互联网产品的作用,就好比路标对行路人的作用。清晰无误的文案带来的效果有的时候胜过胜过数百行代码。和百姓网的朋友交流的时候谈到他们的一个真实案例:付费产品的转化率始终始终无法提高,后来产品人员在表单下面添加了一小行文字,意想不到的是,转化率增加 20% 多;最近丁香园的某个产品改进过程中也有一个相似的例子,功能本身没有改变,只是增加了一行文字提示,结果? 询价量大幅上升。  

转化率多了20%,这是多么恐怖的一件事情啊,文案差的例子,冯也在文章里举例了:

XML/HTML代码
  1. 差的文案有什么影响? 举个例子吧,糟糕的路标有的时候让人恼火,比如北京地铁最早用东西南北做出口的标记,你可以想一下有多少人在地铁里能分清方向? 这是一个经典反面案例;而支付宝当年因为证书问题导致用户修改信息陷入「死循环」,其实也是加一行文字就能避免用户多次重试;再想想我们经常遇到的「您提交了非法请求」、「提交的表单无效」之类的让人莫名其妙或是哭笑不得的提示信息吧......  

冯在博客里提到说豆瓣的产品经理每次在改版前后都会写上一篇博文来介绍新产品或者新功能,他更是表示每篇都看,就象这一篇中提到了:

http://blog.douban.com/douban/2011/06/01/1437/
  1. “豆瓣的发起者发现,对多数人做选择最有效的帮助其实来自亲友和同事。随意的一两句推荐,不但传递了他们自己真实的感受,也包含了对你口味的判断和随之而行的筛选。他们不会向单身汉推荐育儿大全,也不会给老妈带回赤裸特工。遗憾的是,你我所有的亲友加起来,听过看过的仍然有限。而且,口味最类似的人却往往是陌路。”  
  2.   
  3. “如果能不一一结交,却知道成千上万人的口味,能从中间迅速找到最臭味相投的,口口相传的魔力一定能放大百倍,对其中每一个人都多少会有帮助。豆瓣随着这一个愿望产生。豆瓣不针对任何特定的人群,力图包纳百味。无论高矮胖瘦,白雪巴人,豆瓣帮助你通过你喜爱的东西找到志同道合者,然后通过他们找到更多的好东西。”  

以上这两段内容是“关于豆瓣”里的两段话,据说到现在都没有改过,但豆瓣却仍然每期都在改版,当然也是有成功有失败:

XML/HTML代码
  1. 2005和2006, 豆瓣对“发现”的理解是“个性化算法推荐”,就是“豆瓣猜你会喜欢”,包括后来的豆瓣电台。2007和2008, 豆瓣加强了“关于豆瓣”里提到的亲友和同事的口口相传,这就是”友邻广播“,今天叫作”豆瓣说“。2009和2010, 越来越多用户在群组活动里谈论生活的方方面面,于是我们把这部分单列出来,叫做“豆瓣社区”,也分化出了线上活动和豆瓣小站。所有以上的积累让豆瓣这个网站太复杂,开始给用户困扰,所以现在“www.douban.com”分成了几个子网站,每一个都可以更加简单专一。  

哎,

XML/HTML代码
  1. 但生活里除了图书电影音乐还有太多好东西在默默地等着你去发现,所以豆瓣也一直试着能在别的生活领域里帮到用户。2006年我们试了一下“我去”(旅行分享), 不是特别受欢迎。 2008年的同城活动却很受欢迎。今年我们在尝试生活类的小站、社区里的二手交易、“豆瓣猜你会喜欢的团购”,还有一些手机应用。我们希望当别人帮你娱乐游戏八卦的时候,我们可以帮到你的真实生活。我们希望你不上网的时候,豆瓣也是有用的。  

看来,任何产品经理做出来的产品也不是都能够被大众所接受,即使你的想法再好,但超前了就一定OK了,估计,到去年再做这个旅行分享一定会不错,因为,去年驴妈妈、悠哉等都在大力推广,那时候再做这样的分享站一定会很OK。
当然我也不是知名和资深的产品经理,所以,我也只能放放屁,即使我的想法再多也无法让它实现。

Tags: 豆瓣, 文案

PHP 5.4.0 released!

[01-Mar-2012]

The PHP development team is proud to announce the immediate availability of PHP 5.4.0. This release is a major leap forward in the 5.x series, which includes a large number of new features and bug fixes.

Some of the key new features include: traits, a shortened array syntax, a built-in webserver for testing purposes and more. PHP 5.4.0 significantly improves performance, memory footprint and fixes over 100 bugs.

For users upgrading from PHP 5.3 there is a migration guide available here, detailing the changes between those releases and PHP 5.4.0.

Further details about the PHP 5.4.0 release can be found in the release announcement, and the full list of changes are available in the ChangeLog.

Please note that it may take a while until the release is available on all mirrors.

----------

你还在犹豫什么?而且,传说中性能提高了超级多,20倍?50倍?太夸张了,不过提升一点点我还是可信的

diogin在大致浏览了下,稍作了整理:

增加  cli-server SAPI
FPM SAPI 增加 process.max 配置项
增加 http_response_code(), get_declared_traits(), trait_exists(), header_register_callback(), class_uses() 函数
增加 Closure::bind(), Closure::bindTo() 方法
mysql, mysqli 扩展默认使用 mysqlnd
增加 trait
增加关键字 callable,insteadof
E_ALL 包含了 E_STRICT
增加了 <?=
支持 (new Foo)->bar()
支持 0b001001101
支持 $a = [1, 2, 3, 4]; $b = ['one' => 1, 'two' => 2, 'three' => 3];
支持 Class::{expr}()
支持 foo()[0]
闭包里支持 $this 引用
continue $v,break $v 不再支持
缺省时区设为 UTC
缺省编码设为 UTF-8

------

一个MINI的测试server还是有点用的。难道它也想象nodejs那样?谁知道呢

来自80sec:XML实体注入漏洞安全警告

文章不长,可以仔细看看,说的是php中的两个函数,其他语言也可能会有类似问题,但simplexml_load_string是PHP比较常用的函数,所以,要注意一下了。
原文地址是:http://www.80sec.com/xml-entity-injection.html

漏洞介绍:可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。80sec发现目前一些普遍使用xml的场景中都存在一种古老的XML实体注入漏洞,这 可能导致较为严重的安全问题,使得攻击者可能可以任意访问服务器以及应用所在网络的任何资源;

漏洞分析:XML作为一种使用较为广泛的数据传输格式,在语言内部允许引用外部资源来作为语言的补充,譬如


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE copyright [
<!ELEMENT copyright (#PCDATA)>
<!ENTITY hi80sec SYSTEM "http://www.wooyun.org/">
]>
<wooyun version="2.0">
<whitehats>
&hi80sec; is a legend
</whitehats>
</wooyun>

这将使得xml解析器以当前上下文的环境引用外部的资源www.wooyun.org作为hi80sec实体的内容,从而在实际的应用上下文里将该部分数据引入逻辑流程进行处理。同样,我们可以使用

file:///etc/passwd
file://localhost/etc/password

进行访问本地文件系统的操作。

不同的解析器可能默认对于外部实体会有不同的处理规则,以PHP语言为例,默认处理xml的方法就包括:

xml_parse

simplexml_load

两种不同的方法,这两种不同的方法在底层完全采取不同的底层逻辑实现,xml_parse的实现方式为expat库,而simplexml_load使用 的是libxml库,两个底层库在解析的时候细节并不一样,expat默认对外部实体并不解析,而simplexml_load默认情况下会解析外部实体 等,所以simplexml_load和DOM等函数会受此问题影响,而xml_parse则默认不会受到影响。
我们不止在PHP,在包括Java,Python等处理xml的外部组件及函数中都证明可能存在此问题,而且已经在一些互联网公司的应用及一些使用广泛的开源软件中都发现存在问题。

漏洞证明:我们将在WooYun漏洞报告平台上提交我们发现的已经被证明的安全漏洞

解决方案:检查所使用的底层xml解析库,默认禁止外部实体的解析,同时增强对系统的监控,防止此问题被人利用;我们将在WooYun漏洞报告平台上发布可能受影响的,请及时关注;

Records:30123456