2011年6月13日星期一

某些开放平台就是个传销

  计算机平台上宿主和寄生者之间的矛盾由来已久。最早接触的平台是微机操作系统。在这个层面,桌面软件商最怕的就是操作系统的功能和自家的软件有交集。举例,微软做杀毒软件后,杀毒软件商很不舒服; XP之后很少会有人去用ACDSee。之后跨入智能手机时代,平台文化会不会开放很多?不完全是,最近iPhone IOS5做了什么大家也看到,iOS上的第三方Twitter客户端估计现在都在撞墙。

  回到正题,说说网络应用时代的开放平台。这种平台一般以开放式的API存在于网络,通过API,开发者可以利用有限的被平台公布的数据做再利用再组合再创造。用户,开发者,平台提供者是这个圈子的三大要素。一时间似乎大家都找到了良性生态圈的模板。现在开的互联网公司没有API还真不好意思和别人打招呼。

OPEN API

热闹的开放平台 (via)

  这一切都看上去很美。宿主说,“来吧,我发布好用的接口和数据给你们,发挥你们的想象力和激情吧!” 开发者,“好棒,有那么多好用的接口,我只要加上我的创意找人做个程序就可以做互联网产品了。” 用户说,“噢,我要用开放平台的产品,以后会有更好的更多的应用出现在平台之上。”

  每个人心里都有小九九。宿主想,“我一个人就那么点精力,要快点把这个市场做大做强。接口开放我说的算,留点后路,其他的就让那些Geek玩去吧,顺便看看他们的脑袋里有没有值钱货。当然要树立些正面的英雄形象,给几个先来的一点甜头,增加点曝光率,他们的美要让所有开发者都看得到。” 开发者或者说其他互联网公司,“现在平台上的都是些二货,而且就这些个应用还拉到投资,我的创意好,盈利模式清晰,实际运营又有经验,我不出头谁出头。” 用户想,“反正都是免费的,哪家收钱了我就换家用,开放平台就是好,一个帐后走天下。”

  每个人都有机会,虽然想法各异但相处融洽,但X销就不融洽了么?平台商鼓吹API的免费,而且那么多先走一步成为成功人士的人摆在那里,简直就是零风险的以小博大,不邀请你们来用简直是不把开发者当朋友。不断加入的开发者和互联网公司,用自己的青春热血谱写着一曲良性生态圈的赞歌,他们很辛苦,但很充实,逼近都是做事业,平时有空多碰碰头互相鼓励很重要。用户,最实惠,墙头草,随便倒。

  题目我说了,是某些开放平台,或者说是一些开放平台迫于鼓动,风投,业绩,要做些显而易见的拓展时,这里的X销的味道就更浓了。

  笔者喜欢放例子,看看正在发生或已经发生的事情。先看国外的,国外的一般被认为做得比较规范。Twitter。

  “Twitter呼吁开发者不要再进行类似的Twitter第三方客户端”,“Twitter收购Tweetdeck,自己做客户端”,“Twitter表示将引入图片上传分享功能(twitpic之流们。。。哎)”

  看完国外看国内,找个相当的对手吧,新浪微博。微博最初的时候有个桌面端是一个个人开发者Wing开发的,由于是第一个,用户激增啊,一时间报道访谈,那叫一个热闹。现在,新浪刚推出了基于wp7手机的客户端,现在从Linux到Wp7所有终端全线制霸。LBS基于地理位置服务的应用似乎很好卖啊,看看新浪自己做的微领地 (口号是“一切从这里开始”,你确定开始这个词语没用错?)。有人提出自己研究出了辨别真假粉丝的方法求合作,那位同学难道不知道新浪里有个参数叫“有价值粉丝”么。

  最近微博上又有人放出风声

  以下领域,建议第三方微博应用开发商谨慎进入,用 @王煜全 的话就是,“不要挡巨人的路”:微秀、招聘、分类信息、相册、游戏、支付…… ,裁判可能会自己下场踢球,你懂的~

  笔者的观点是,开放平台的总体发展形势是好的,只是一小撮太心急。作为广大第三方要控制好自己体重,不要太肥太壮。鱼缸里学会沉底翻肚皮的鱼才是聪明的鱼。这是个强者通吃的时代,但会做鱼,混口饭吃也不是难事。

  来源:江南投稿,原文链接

写给新手程序员的一封信

  首先,欢迎来到程序员的世界。在这个世界上,不是有很多人想创造软件并解决问题。你是一名hacker,属于那些愿意做一些有挑战性的事情的人。

  “当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题。” – WhyTheLuckyStiff

  对于下面的文字你不必完全接受,所有这些来自一个其貌不扬的程序员。我喜欢把事情做到最好,而不是对原来的东西修修补补。

  仅仅是因为爱好开始做一些创新,这是一个很好的开始!如果你说“我要先学习一下再开始做”那么你永远不会真正开始。每个人都需要从某个地方开始,所以现在打开你的编辑器开始写代码吧。

  下面是一些很重要的建议,虽然有人并不认同,但我保证你看完我的分析以后会站在我这一边。一开始,先不要管算法和数据结构。大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后找一些相关的论文去理解算法并动手编程实践。如果没有现成的函数库(其他程序员提供的可重用代码),你用自己喜欢的编程语言来实现它。

写给新手程序员的一封信

  0. 选择一门好的编程语言,一门你自认为可以用它快速地做出一些有用东西的语言。

  不要选择C语言作为你第一门编程语言。也许选择C语言会给你一种过时的满足感。虽然它比早期的汇编语言提供了更好语法描述,但是今天C(或者C++)不是能够快速编写软件的语言。毫不偏袒的说,我建议你学习一种动态语言。选择一种你觉得语法(文档)让你使用起来更舒服的编程。为此,你可能需要花费一些时间来在几种不同的语言之间进行比较。这么做目的不是为了让你感觉更好或者让编程更容易。更快地完成自己的作品并且能够看到成果,才是激励你编程的源动力。不要选择一门需要某种重量级的IDE(IDE是一种能够帮助你编写并运行代码的工具)才能轻松编程的语言。你所需要的仅仅是一个文本编辑器。(注:原文并没有标号,是我们加上的,请大家别忘记了哦,我们是从零开始数数的。:) )

  1. 选择一个好的编辑器。

  编辑器对程序员而言,就是像是弓对弓箭手一样重要。这里有一些推荐的编辑器:

  • SublimeText 2 – 如果你刚开始编程,推荐使用SublimeText 2
  • Emacs – 学习曲线陡峭,快捷键复杂。如果你想定制自己的使用习惯,需要学习Emacs Lisp.
  • Vim – 不仅操作简洁而且它默认包含在linux的发行版中,所以深受大家欢迎。我开始使用了2年Emacs。由于Emacs的快捷键操作过于复杂,我的双手开始经常疼痛,这迫使我转向了Vim阵营。了解Vim的快捷键是非常有必要的。当你在远程的服务器上编辑代码时,你唯一不需要安装的编辑器就是Vim。

  注意!Emacs和Vim可能已经成为成为古董了。但是,它们都具备一些现代编辑器多不具备的功能。

  2. 选择一个你可以从中学到东西的操作系统

  Windows不会教会你任何东西。使用Windows你唯一学会的就是打开一个exe(可执行)文件来安装软件和使用它。可能刚开始的时候你会觉得很酷,但是长远来看,如果你立志成为一个web开发人员,可能还是要具备基本的linux知识,尤其是当你要发布程序的时候。Linux也允许你根据自己的要求来定制程序。Macs也很酷,但是我认为你现在经济上还负担不起。

  3. 不要通过复制粘贴来做备份

  一个新手程序员通常会把文件复制粘贴到一个临时目录下面来进行备份。这也许也是他们唯一知道的方法。不要那么做!你需要使用版本控制软件。我强烈推荐使用Git,它是个目前很流行的版本控制工具,而且使用起来非常简单。对一个Git新手,有一个良好的社区和很多参考资源来学习。(除了Git之外,还有mercurial, darcs, fossil等等。但是我还是建议从Git开始,我有很多的理由来支持Git,这里就不多费口舌了。)

  4. 知道去哪里寻求帮助

  参加一个和你相关的(你使用编程工具相关的)程序员社区。比如StackOverflow就是程序员的Facebook。那里没有消息状态和回复,取而代之的是问题和答案。除此之外还要学会使用IRC。IRC是一种老式的聊天室,现在还在被大多数开发人员用来分享技术信息和帮助解决问题。

  5. 培养你的礼仪

  知道什么时候问问题。你遇到的大多数问题都是别人碰到过并且在Internet上能够找到解答的。在IRC或者任何论坛里发问之前,先搜索一下google(或者blekko)来看看是不是有现成的答案。在IRC上问问题需要有耐心。永远记住,人们只是处于好心来免费帮助你。有时你发问以后需要几个小时才能有回复。所以,耐心等待。除此之外,记得问问题的时候要礼貌。世界很小,你怎么对待别人,别人就会怎么对待你。

  6. 结交朋友,技术书籍只能教你解决常见的问题(他们说:书是死的)

  当你在捣鼓一些程序或者从程序的作者那里学习,你能学到一些书本上没有的东西。当你散步的时候,请和遇到的朋友打招呼。你肯定不是唯一的程序员。和其他的程序员一起交朋友一起工作。你会注意到,当一群技术爱好者在一起的时候,不论话题是从什么地方开始,最后总是以技术话题收尾。这是必然的现象。所以你可以尽情参与。在你的黄金年龄努力编程,我能告诉你的是,我在开始6年前寻找朋友并开始讨论编程,从那时起才学到那些书本和文章不会我的东西。所以我总是说,我的编程经验有6年,因为只有那个时候开始,我才开始与人交流并开始感觉真正地开始学习编程。

  7. 参加开源项目

  为开源项目编写代码能带来回报。这不仅仅是帮助别人,你留下的代码会被其他人使用或(可能)改进。当别人给你的代码添加功能或者提出修改意见时,也是在提高你的编程水平。开源软件项目不一定要是一个大工程,编写一个下载youtube视频的小程序也是很有用的。更重要的是,你会惊奇地发现你编写的代码会成为与他人有效沟通的桥梁。

  最后,若干年之后如果本文的内容曾经对你有一点点的帮助,作为回报请写一封类似的信给希望开始编程并不知如何入手的朋友,有可能的话请纠正本文中过时的内容。

  智者说过,掌握某个东西需要10年或10000个小时,也就是汉语中的“十年磨一剑”,所以不用着急。

  英文原文:An open letter to those who want to start programming

  中文翻译:伯乐在线

2011年6月12日星期日

使用Google Analytics跟踪404页面

  404页面是当访问者输入了错误的地址或者访问了被删除的页面时,服务器返回的错误页面(404 HTTP 状态代码)。这个页面除了告诉访问者页面不存在以外,不提供任何有价值的信息。访问者可能就此离开网站。

  了解404页面的信息非常有用,可以发现访问者要查找的内容和推介来源,有助于网站补充新的内容并修复有问题的链接。如何使用Google Analytics来追踪并显示404页面的情况?Google Analytics的官方博客介绍了一个简单的方法,使用Google Analytics可以跟踪网站的404页面错误。

  1. 将网站的Google Analytics追踪代码添加到404 页面里。

  2. 修改404页面的Google Analytics代码,将代码修改为一下形式:

<script type="text/javascript"
src="http://www.google-analytics.com/urchin.js">
</script>
<script type="text/javascript">
_uacct = "xxxxx-x";
urchinTracker("/404.html?page=" + _udl.pathname + _udl.search);
</script>

  3. 在热门内容报告中即可查看/404.html页面的报告,里面的信息包括出现错误的URL地址,还会显示访问者上一个访问的页面(推介来源)。通过这些信息,可以及时检查相关页面,修改错误链接。

使用Google Analytics跟踪404页面

  英文原文:Tip: Tracking 404 Pages

塞班S60常用Twitter客户端评测

  虽然这是一个Android、iOS漫天飞的年代,虽然塞班已经推出了新的Symbiam^3系统,不可否认的是,S60仍有着一个庞大的用户群,当然这里面也有不少的推友(twitter用户)。都说塞班用户伤不起,想必塞班推友更能体会这句话中的辛酸。今天笔者就给大家介绍两款塞班系统最常用的twitter客户端。

  一、简单介绍

  Gravity由Jan Ole Suhr(@janole)开发,号称“塞班有史以来最优秀软件”、“twitter全平台最佳客户端”。甚至成为很多发烧友留在塞班平台的唯一理由。

  Dabr由David Carrington(@davidcarrington)开发,是一款著名的twitter网页客户端,即必须通过浏览器(UC或者Opera)登陆。

  二、综合评测

  测试机器:Nokia5630-d(Symbiam S60v3 CPU:600Hz ROM:128MB)

  网络环境:江苏电信2M ADSL

  1、用户界面

Gravity和dabr界面

Gravity、Dabr的界面

  Gravity支持平滑滚动,配色布局都十分精美,甚至每个小图标都能看出来是作者精心制作的结晶,其用户体验在整个塞班平台都是数一数二的。而Dabr的界面则略显简陋,但也不排除一些喜欢简洁风格的朋友对其情有独钟。

  2、流量

Gravity和Dabr流量对比

单次流量数据

  目前绝大多数国内运营商依然采用按流量计费,手机上网还是不得不考虑流量问题。本人先分别清空UC浏览器和Gravity的缓存,并开启UC的压缩中转和Gravity的ZLIB压缩,然后分别刷新Timeline。

  Gravity刷新一次所需流量为460Kb,换算过来就是57.5KB,更新了惊人的196条tweets,平均每条tweet所耗流量0.29KB。

  UC浏览器打开一个Dabr页面所需流量为14.87KB,一个页面显示20条tweets,平均每条tweet所耗流量0.74KB。

  3、效率

  虽说中国已经率先制订了被国际认可的4G标准,但国内3G还并未得到普及。网速太慢,耗时太长也成为阻碍手机互联网发展的障碍。本人在上一步已经顺带记录了刷新一次所需的时间。

  Gravity耗时40.65s,更新了196条tweets,平均每条tweet耗时0.21s。

  Dabr耗时5.56s,显示了20条tweets,平均每条tweet耗时0.28s。

  4、扩展功能

Gravity强大的扩展功能

Gravity强大的扩展功能(添加账户、上传图片)

  twitter不仅只有文字tweet,也有用户会上传图片,有用户在Foursquare上Check-in,功能方面也应该能够尽量满足使用需求。

  Gravity在这方面做得无可挑剔。作为twitter客户端,除了正常的发推、回复之外,用户还能在自设定twitter API,设置定时刷新,消息提醒,消息push(仅支持Symbiam^3),翻译tweet内容,开启ZLIB压缩等。Gravity还自带一个浏览器,一个输入键盘(仅支持Symbiam^3),它还是一个图片上传工具,一个优秀的新浪微博客户端,一个FaceBook客户端(需翻墙),S60平台下最优秀的Google Reader阅读器。

  Dabr则没有这么多眼花缭乱的功能,但是它却有Gravity所没有的一个优点,因为Dabr是开源的,用户可以轻松获取它的源代码,并按照自己的喜好和需求修改Dabr的界面、增添功能,这也是Dabr能吸引Geek们的原因。

  三、总结

  比起Gravity,作者本人其实更青睐Dabr,一来本人有自己动手改造一切的癖好,二来本人更喜欢网页浏览twitter的感觉,就算在电脑上也使用网页客户端。所以本文在评测的过程中,并没有强行判定究竟谁就一定更优秀,不同的用户一定有自己不同的看法。

  来源:读者投稿,作者邮箱:zckevinzc[at]gmail.com。作者博客

2011年6月10日星期五

老板会因为你拼命写代码而感谢你吗?

  程序员热衷于长时间地工作。我想说的是,你就承认吧,你的工作/老板并没有让你这样做,你自己要这样做而已。当然,我知道,也许并非所有程序员都喜欢长时间的编程。不过肯定的是,随着加班成为业内的普遍现象,至少一半的程序员必须喜欢加班,不是吗?

  我早已听到以下这类借口。“不,不是那样的,我们只是喜欢炫酷的技术活,而且不想遗留未解决的问题。实际上,加班是一件好事,它让我们变得出色!”

  我认为,你不能只见树木,不见森林。从某个角度来说,你这样做并非为了自己,而是为了“某个人”。无须质疑,他也许是个高尚的人,但你并不是他的奴隶。从其他角度来说,你有多少次加班,是为了解决问题,研究新技术,编码实现某些东西,以及在截止时间之前完成任务?但是,你在业务上是机智过人的程序开发者,你在帮助公司获得成功。公司管理者已经向你说明了公司的经济状况——必须这样做,公司依靠你。我想说的是,除非这个管理者现在就在你旁边,半夜2点还在陪你聊天,否则他的话将一文不值。

  让我来讲述一个朋友曾经跟我说过的故事。这个故事是关于一个天才程序员的,姑且叫他John吧。

  John是一个百万程序员当中才出现一个的超级明星。他理解和编写代码的能力高超,工作效率是其他任何人的20倍。有一天,公司拿到了一项短交期的大项目。客户提供了一本厚得让所有人沮丧的规格说明书。John出手相助,他把说明书带回家,此后三天没有人有关于他的消息。他回来上班的时候,样子十分憔悴,但他看懂了整本说明书并完成了项目的基本框架。除了一小部分不可能完成之外,说明书的其余部分,甚至连客户自己也不甚了解的需求,John也完成了。真让人吃惊!

  当我第一次听说这个故事时,感受颇深,我问了第一个问题“那john现在何处?”我朋友回答——“他死了,生活太艰难了!”或许用编程过劳死来形容更加合适。这个故事令人意外的是——John才30岁而已。

  程序员从分享死亡竞赛故事来获得反常的快乐。甚至当我们带着厌恶的情绪去这样做的时候,这种厌恶也带着一丝得意,以此怂恿同事去做得“更好”。但这有点像那些穿着短裤的家伙,他们的短裤短到你都看得到他们的内裤;也有点像一些把抽烟当时尚的人,他们和他们的朋友觉得这很酷,其他人却觉得愚蠢。

  使糟糕的情况更糟

  我可以理解偶尔付出一些额外努力以及一两天加班到半夜的必要性。但是,当偶尔变成经常,当老板不再因为你的努力而经常感谢你,而是习以为常时,我们就遇到了麻烦。老板希望程序员经常加班,这不仅是你的悲哀,也是整个行业的。人类就像狗一样,非常容易受到正面和负面强化的影响。整个行业的发展受到长年因过度加班而死亡的悲剧影响,直到某个阶段,在那个阶段甚至还奖励这种行为。我们每次陷入长时间的争论中,都持续消极地加剧了这种趋势。

  这不能帮助我们管理团队。你只需要让一个人做主,其他人遵守。内疚带来平等——“我们不能让我们的伙伴独自去做困难的事情,我们得帮帮忙”。遵守的人越多,那些抛下同伴的人压力就会越大,直到整个团队半夜里聚在一起喝可乐,吃披萨。但他们如何容纳一个同样的人进入他们的世界,因为在这里也有一个因特立独行而著名的程序员。当我们还是学生时,我们乐于把所有事情都推给某个人处理,然后在校内做我们想要做的事;但当我们走上工作岗位时,一切都要靠我们自己。真让人困惑。

  有趣的是,有时候这些大量的努力甚至并没有得到正常合理的追踪记录,好像它反而让项目看起来很糟糕一样。所以他们“作假帐”,正如客户只关心每个人每周工作40小时(或者他们拿的是40个小时的工资),也许还会关心项目在目前的进度,但他们从不在意小组每个成员花费在项目上的另外40个小时。好吧,或许他们会在“第二套假账”中追踪记录的团队成员的真正努力。虽然会计会因为此类造假而锒铛入狱,但在IT业内,没有人会反对这种造假的要求。

  可接受的进度成果

  大多数敏捷开发过程都会就可接受的开发进度进行讨论。不过,我也见过有些甚至自认为灵活的团队会花几个小时的时间坐下来一起讨论交流如何让程序更加高效合理,等等,你懂的。尽管团队成员的思维依旧敏捷,你却不敢说出其他东西。

  每当我想起这东西,我总想到律师。你就像一个刚入门的律师,付出了大量的努力和时间,这是你在这个行业中获得成功的常规途径。没有一个程序员想要跟律师做比较,但情况经常很相似,除非你不希望跟程序开发人员一样通过长时间的加班取得进步(就跟律师一样,除非你在4大咨询公司打工,也可以成为一名律师)。所以,律师跟程序员,哪个是呆子?

  关于一周工作时间超过40小时导致生产力下降的研究呈现出令人不安的规律性。作为程序员,如果你的创造力下降了,你的失误就会增加,你就会遗漏现存的问题,等等;直到到达某个阶段,这个阶段中,你做错的东西比做对的东西还要多。当你花了很多的时间在同样的活动中时,我是否应该特别提到健康问题。关于饮食,你只能靠可乐存活很长一段时间——可怜的John甚至活下来不到40小时。

你的老板会因为你拼命编写代码而感谢你吗?

  你现在能清楚我在反对长时间的工作和面临死亡威胁的行军了吗?你的睡眠时间和睡眠质量达标了吗?或许最近某一天我会告诉你我如何收到叫醒电话(wake up call),这是一个有趣的故事。把猫赶在一起,很容易与在相同的方向下让程序员取得预期的成果这种情况相比较,这是我对我们的人(程序员)又爱又恨的地方。但我希望过段时候后,所有聪明的程序员要一个明确的立场,坚决消除十分糟糕和违背生产力的业内趋势之一。正如我所提到的,聪明的程序员不喜欢长时间工作,也不会因为迫于压力而加班,他们把更多的时间用于享受生活。

  英文原文:Did Your Boss Thank You For Coding Yourself to Death?

  来源:伯乐在线投稿,原文链接

2011年6月9日星期四

I2P不完全使用手册

  说起I2P或许大家有些陌生,可能没有听说过这个软件,但提起Tor人们都知道这是一个著名的开源匿名网络工具。I2P和Tor一样,也是一个著名的开源匿名网络工具。和Tor相比,I2P和Tor有很多相似的地方,也有很多不同。由于人们比较熟悉Tor,那么先从I2P和Tor的比较开始介绍I2P。

  Tor每次启动时首先需要连接中央目录服务器,除非在短时间内重启Tor。通过中央目录服务器获得所有中继列表,所以如果ISP禁止连接到基本固定的中央目录服务器的IP地址,那么Tor很难连接到Tor网络,除非使用代理服务器或Tor网络连接到Tor网络。由于Tor每次获得所有的节点信息,那么ISP可以很容易的禁止连接到这些节点信息,从而禁止用户使用Tor。I2P在首次初始化时需要连接到I2P安装程序中设置的固定的I2P路由,所以ISP如果禁止I2P安装程序中设置的固定的I2P路由的IP地址,那么I2P在首次初始化时将无法连接到I2P网络。但I2P一旦首次连接成功(可以和Tor一样使用代理服务器进行连接)之后,会使用Kad算法(eMule的Kad网络的算法)获取部分I2P路由节点信息,下次启动I2P时将通过上次通过Kad获得的节点信息进行连接。由于I2P没有中央节点,并且每次获得的节点信息并非包含全部的节点,所以一旦I2P首次连接成功之后,虽然无法保证I2P一定不会被封锁,但ISP如果要禁止用户使用I2P将比禁止用户使用Tor困难一些。

  Tor成功连接到Tor网络之后提供本地Socks5代理,I2P成功连接到I2P网络之后提供本地HTTP代理,最新版的I2P也提供本地HTTPS代理,从提供代理服务来说,两者基本一致,Socks5代理和HTTPS代理协议有软件可以互相转换。Tor的出口中继为Socks5代理类型,I2P的出口路由可以是任何使用主动连接的单连接TCP协议,包括并不限于Web服务器、SMTP服务器、SSH服务器、HTTP代理服务器、HTTPS代理服务器、Socks5代理服务器,甚至可以通过Tor客户端提供的网桥或Socks5代理接入Tor网络。由于I2P只支持使用主动连接的单连接TCP的协议,所以不支持FTP协议。

  Tor默认只作为客户端运行,可以更改设置为中继或网桥为别人提供服务的同时更好地保护自己的匿名性。Tor作为中继运行时还可以设置是否是出口中继。I2P成功连接之后即作为I2P网络中的一部分路由为别人路由信息,可以更改设置从而不为别人路由信息,也可以更改设置为出口路由。设置Tor为出口中继时,只需要设置允许和不允许哪些传出端口即可,但由于I2P支持任何主动连接的单连接TCP协议,所以设置I2P出口路由时需要指定目标地址和端口。比如你愿意通过I2P为别人提供Socks5代理服务,那么你自己需要运行一个Socks5代理服务器,然后设置I2P的出口地址和端口为运行Socks5代理服务器的地址和端口。

  由于I2P本身可以对接任何主动连接的单连接TCP协议,所以内置的HTTP代理和HTTPS代理也是有单独的HTTP和HTTPS代理服务器支持的,内置的HTTP和HTTPS代理由官方推荐的HTTP和HTTPS代理服务器提供者提供,所以和Tor每隔一段时间就会变换IP地址不同,使用I2P内置的HTTP和HTTPS代理服务器访问网站所显示的IP基本是固定的。由于I2P的HTTP和HTTPS代理并非由官方提供的,而是由I2P用户提供的,官方只是推荐他们,所以HTTP和HTTPS代理服务有时候会下线,导致内置的HTTP和HTTPS代理服务暂时不可用。好在用户可以修改内置的HTTP和HTTPS代理服务,添加更多的服务器,当其中一个不可用时I2P会自动转到其他服务器提供服务。

  由于每个人可以成为I2P的出口路由提供各种不同的服务,所以除了I2P内置的服务外还可以在I2P的服务目录中找到大量I2P用户提供的各种各样的服务,有提供Socks5代理的,有提供Web服务的,有提供接入Tor网络的等服务。如果需要使用非I2P内置的服务,可以在I2P的设置界面中添加I2P的客户端,添加I2P的客户端时需要填写的一些信息可以在I2P的服务目录中找到。

  另外,Tor的中继之间使用TCP连接,I2P的路由之间既使用TCP连接又使用UDP进行传输数据。Tor作为中继或网桥时需要有公网IP或在路由器上设置端口映射,I2P也可以手动在路由器上设置端口映射,也可以使用UPnP自动设置端口映射,还支持UDP协议的NAT穿越进行路由信息。Tor的设置界面除了手动更改配置文件外,也可以结合Validia或Torpark图形界面进行设置;I2P提供了Web界面进行所有的设置。Tor使用C++编写,I2P使用Java编写。

  说了这么多I2P和Tor的异同点后,我们进入正题,介绍I2P的使用方法。

  使用I2P之前,首先当然是要下载和安装I2P,I2P的官方中文网站是: http://www.i2p2.de/index_zh.html 。但很不幸,国内无法访问这个网站,需要使用国外的IP地址才能访问这个网站。由于I2P为Java编写的程序,所以使用前先确认是否安装了Java,I2P需要Java 1.5及以上版本才能运行,推荐使用Java 1.6,可以在 http://www.java.com/ 中下载和安装Java。安装好后首次运行I2P会调用系统的浏览器,访问I2P的控制台Web配置界面: http://127.0.0.1:7657/ 。在控制台中我们可以看到I2P的运行情况,包括I2P连接到I2P网络的情况。

I2P不完全使用手册

(图1)

  从图中我们看到I2P的活动节点为28 / 70,表示找到活动节点70个,连接了28个。由于Kad每次只获取一部分节点,所以I2P的总节点数远大于70个。一般连接上的活动节点在8 - 10个左右I2P就能正常工作了。首次运行I2P的时候会通过I2P安装程序中内置的路由节点连接到I2P网络,但由于众所周知的原因,国内基本无法连接到内置的路由节点,这时候连接上的活动节点将会不足8 - 10个,I2P无法很好地工作,好在我们可以在I2P的网络引导设置中设置使用代理服务器获取更多的节点。我们访问 http://127.0.0.1:7657/configreseed 进入I2P的网络引导设置,其中可以选择“使用 HTTP 代理”,并填写HTTP代理地址和端口,然后点击“保存修改 + 立即开始网络引导”,如果设置的代理可以连接到I2P的官方网站,过一会儿活动节点数就会有所增加,达到8 - 10个可用的标准。I2P一旦首次连接到I2P网络后,将会不断从连接上的活动节点中获得其他活动节点,网络引导一般只需要进行一次即可,如果长时间未使用I2P导致活动节点数少于8 - 10个则需要再次进行网络引导。

I2P不完全使用手册

(图2)

  I2P连接到I2P网络后,即可开始使用I2P提供的服务了,首先介绍的是I2P内置的官方推荐HTTP和HTTPS代理服务。和一般的HTTP和HTTPS代理服务不同,I2P的HTTP和HTTPS代理服务使用两个不同的端口,默认HTTP代理为4444,HTTPS代理为4445。设置浏览器的HTTP代理地址为127.0.0.1,端口为4444;设置浏览器的HTTPS代理地址为127.0.0.1,端口为4445即可使用I2P的HTTP/HTTPS代理服务匿名访问ISP阻止访问的网站了。在浏览器设置了I2P的HTTP/HTTPS代理服务后,不仅可以访问互联网上的Web网站,也可以访问I2P内置的很多匿名网站,和Tor的匿名网站(也称隐藏的服务)十分相似。I2P的匿名网站是以“.i2p”结尾的网站(Tor的匿名网站是以“.onion”结尾),只有在浏览器设置了I2P提供的HTTP/HTTPS代理后才能访问I2P的匿名网站。常用的I2P匿名网站有I2P内的搜索引擎 http://eepsites.i2p/ 、I2P的Wiki http://ugha.i2p/ 、I2P的论坛 http://forum.i2p/ 等。

  本次I2P的使用先介绍到这儿,下次会介绍如何在I2P内找到其他I2P用户提供的服务和如何发布自己提供的服务到I2P的网络内,包括如何添加更多的HTTP/HTTPS代理服务使得I2P的HTTP/HTTPS代理服务更快速更稳定、如何添加使用其他I2P用户提供的Socks代理服务器、如何通过I2P访问Tor网络、如何通过I2P访问Freenet、如何制作自己的匿名站点、如何提供自己的匿名代理服务、如何将自己提供的服务发布到I2P的匿名网络内等内容,敬请期待。

  来源:davidsky2012投稿

Android拍照和图片处理类应用盘点

  智能手机上的照相和图片处理程序越来越多,要不是光学元件大小限制,现在的智能手机大有取代家庭卡片相机的可能,毕竟手机可以拍照、编辑、分享一条龙搞定,又是随身携带。

  上期介绍了iPhone众多拍照摄影集锦,Android做为Google旗下一款十分出色的移动平台,由于完全开放,其应用商店里优秀的拍照摄影应用数量也得到很大提升。这里就总结和推荐几个不错的的Android拍照和图像处理类app应用。

Android拍照应用

  大众照相类

  camera360——国产程序中最强大的一款android照相程序

Android拍照应用

  feature:从高级到低级的拍照效果都有,能同时保存原照和效果照。2.0版本加入直接分享到微博并随机添加相框的功能,十分人性化,不过美化方面还需改进。

  good:不同色彩效果模式、大头贴模式、趣味模式、移轴移色模式…功能相当丰富,各种效果 满足日常所需…

  bad:功能太杂,而且需要事先选择相应效果再拍照,不过现在版本已经可以在拍摄完后进行小幅的色彩效果改变。不支持导入手机内的图片配置效果。

  LittlePhoto——低调而华丽

Android拍照应用

  feature:可重叠多种色彩特效,有绘画、文字、马赛克模糊等工具。

  good:各种色彩特效很好看,各种工具方便拍照之后直接进行编辑,用不着其他的编辑程序了。支持从手机中调入其他图片进行编辑。

  bad:不能预先对焦。界面简单得有点略显简陋,效果分类有点杂乱。文字绘画等工具还是不及PicSay好看。

  Vignette——Android经典照相程序

Android拍照应用

  feature:10种实用的模式,喜欢X2 double模式 可以照2张图片然后重叠曝光在一起。可以调节不同的色彩效果、长宽比例和边框。同一张照片可以保存多个效果。

  good:效果和边框的整体水平都感觉较高,多重画面的拍摄模式很方便。用户体验较好,各方面功能全面。

  bad:右上角那个红叉,实在是太小,还好可以用返回键替代。

  Pudding Camera——韩国的一款界面很漂亮的照相程序

Android拍照应用

  feature:模拟各种实体相机的特效,用户根据自己喜好选择不同的相机以及与其搭配的胶卷,个个都是经典lomo相机。这种模拟实体效果的虚拟应用的确很酷。

  good:很有趣的用户体验,让人体验到玩lomo的乐趣。效果也比较纯正。

  bad:没有闪光灯。对不同分辨率的兼容性很让人头痛。只能在拍摄前选择效果。拍摄后没有预览图?

  小众特色拍照类

  Action Snap——多格画面捕捉

Android拍照应用

  feature:设置好间隔时间、图片效果,按下快门,自动连拍并组合在一张图片里。 动作效果、动态情景一键轻松捕捉。目前有4种图片组合方式和3种图片效果。

  Fast Burst——高速连拍,不错过任何精彩瞬间

Android拍照应用

  feature:按住快门键不放,能够连续以最高800×480分辨率 最多连续拍摄14张照片。松开快门后会有一段等待处理的时间。手机摄像头应用于动态效果拍摄始终还是不够理想,但毕竟有些关键时刻这功能还是能起到巨大作用的。

  Pro HDR——高动态范围成像

Android拍照应用

  feature:按下快门后保持手机不动,程序会自动分析场景的亮度,然后拍摄两张不同曝光度的图片,最后合并在一起可手动调整出满意效果。

  高动态范围成像在某些特定情况下还是很有作用的,比如拍摄电脑时 对准屏幕曝光 周围会一片漆黑,对环境曝光 屏幕又会过亮,HDR就会让屏幕和周围环境都给正常曝光出来。还有常遇到的大太阳天气 也是同样道理应用。

  图片编辑类

  Photoshake——iPhone经典移植 多格图片组合和编辑

Android拍照应用

  feature:用户体验和界面设计都比较优秀的一款图片处理程序,也难怪成为经典。可以处理单张图片也可把多张图片组合到一起,添加各种边框底纹等。能够添加文字框、部分剪贴画等。各种效果都很漂亮。

  good:多张图片的组合效果方便而且好看。

  bad:图片的色彩特效较少。适合配合有丰富色彩特效的照相程序处理图片。

  PicSay——经典手机图片处理应用程序

  feature:导入图片变换各种色彩效果,添加文字、剪贴画、涂鸦、马赛克模糊…

  good:丰富的剪贴画、文字框等内容。各种图片处理工具。

  bad:色彩特效较多,但整体水平一般。

  其他影像处理相关

  图片查看类:

  JustPictures!——按照更新时间显示相册,可连接多种网络相册,能够把搜藏的多张图片设置为的桌面壁纸 并定时更换。

  快图浏览——小小的200+k程序,却可以有非常流畅的浏览图片能力,比起那默认的3D图库程序的龟速真是好太多了。

  画图类:

  SketchBook Mobile——触摸屏设备的经典画图程序,非此莫属。

  视频拍摄类:

  微拍——国产的一款实时拍摄视频并上传的程序,能直接分享到微博。

  现在手机应用程序发展日新月异,能贴上photography标签的程序也不计其数,有些很鸡肋,有些却能让人很意外,玩法也越来越多,这些是单反相机无法做到的,有了这些有趣而强大的拍照摄影应用,才使得智能手机的硬件发挥到了极致。

  来源:读者投稿,原文链接