实用Android开发工具和资源精选
出处:A Useful Selection of Android Developer Tools and Resources
在google、开源平台,和来自移动电话制造商HTC,Samsung和Sony Ericsson的支持下,Android平台在市场占有率上相比去年取得的886%增长!如果我只看增长率,IPhone据统计才有61%的增长。这些数据可以给你关于两个平台流行度的印像,但是事实上,这些数据告诉了智能机开发员的谁才是真正的赢家。在时下,智能机越来越流行,因此成为一个快速增长的Android平台的智能机开发人员将会是一个不错的选择。
相比较其他的平台,Android不依赖于任何约束第三方应用程序的私有的操作系统(题外话:美国最近宣布对于IPhone的破解和越狱是合法行为),Android本身就是开源的。由于开源,Android有巨大的开发社区支持。各种个样的例子和教程,GUI素材,和开发工具下载。几乎所有的都是免费提供的。我们选出接近20个可以免费或开源的,工具,资源,开发指南。希望这些资源能给你的Android应用带来帮助。 相关文章参看:
Android App ...
两个教程:Socket和HTML5
给大家介绍两个教程,一个是关于Socket编程的,一个是关于HTML5的。
关于Socket,相信大家都知道这个是用来做TCP/IP网络编程的,其由FreeBSD引入,现在,只要你相做网络编程,你必然会使用到它。这里有一个叫Beej’s Guide to Network Programming 的网站,非常不错的一个教程。在其主页上显示有中译版,不过很可惜,打不开。好像网络有很多转载,你可以Google一下。
另一个是关于HTML5的众多标签,大家可以访问这个叫做“HTML5 Peeks, Pokes and Pointers”的网站,其就像一个速查手册一样,你可要查阅HTML5的那些BT的tag,比如:多媒体,画布,地理,表单,等等。
希望大家喜欢,不妨你也说说你知道的相关的一些教程。
免费电子书列表
在StackOverflow上,有人要打算收集个免费电子书的列表,结果很快就有人分享了一个列表。很不错,我就转过来了。原帖的地址在http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books (注意:有些连接可能会被墙掉)
List of Free Programming books (compiled): Meta-List
How to Design Programs: An Introduction to Computing and Programming
25 Free Computer Science Ebooks
Free Tech Books
MindView Inc (List of Free Books)
Wikibooks: Programming
Cheat Sheets (Free)
CodePlex List of Free E-Books
Book Training – On Video!
Sofware Program Mana ...
最佳编程语录
以前本站发布过《22条经典的编程引言》、《编程引言补充》、《Linus Torvalds 语录》还有《十条不错的编程观点》。今天向大家介绍“最佳编程语录”,条条都是很不错的语录,如同我们的太阳,照亮了我们的方向(所以我们选用了一个红色的图片,希望能够通过五毛们的网络审查)。其中只有一两条在以前本站发布过的文章中出现过。这篇文章的出处在这里,下面是“Neo”和“陈皓”的翻译,我们的翻译水平有限,所以,我们提供了中英文对照,有不当之处,还请各位指正。
A good programmer is someone who looks both ways before crossing a one-way street. — Doug Linder, systems administrator
好的程序员这样一类人,这类人在横穿一条单行道前都要先看一下路两边。– Doug Linder, 系统管理员
A most important, but also most elusive, aspect of any tool is its influence on the habits of ...
参透软件开发的本质 – Uncle Bob Martin 推荐的经典书籍
数量级25(10^25)是 Uncle Bob 在 RailsConf 演讲的主题。如果你用一台 PDP 8( 1960年代的计算机)和 Mac PowerBook 做比较的话,你会发现 Mac PowerBook 比 PDP 8 快8000倍,有6百万倍大的内存,11000倍的耗能,1500倍的容量等等。如果将这些0累加起来,很容易达到10^25。在过去40年里,我们的硬件计算能力获得了10^25倍的提升,而作为软件开发人员的我们并没有利用这些计算能力来提升多少我们的软件开发能力。没错,我们是写了不少的代码,但是它们基本上都是一些顺序语句,if 语句,和 while 循环等,没有什么新鲜的东西。你可能会说面向对象是新东西呀,但是那只是另外一种组织顺序、选择和迭代等语句的方法而已。除我们现有的编程语言之外,如果有新的编程语言能够产生并创造新的“微积分学”,从而将软件开发提高到一个新的高度,将会是一件非常令人期待的事情,因为顺序语句,选择语句和迭代等最终将成为历史。
Uncle Bob 认为以下四本书是软件开发人员必须阅读的,并由他自己来排名。
1. The Structure &am ...
黑客的价值观
黑客,可能在大家的眼里是那些入侵别人计算机搞破坏的人,其实并不是那样的。如果你这样认为了,只能说明你对计算机文化并不了解,真正的黑客是一种自由的象征,他们挑战权威,追求自由,并和很多非人类的行为作斗争。如果你想了解黑客文化,你一定要去看看我写的《Unix传奇,上篇,下篇》。你会对正宗的计算机文化以及黑客文化有所了解的。而那些只懂得入侵别人计算机搞破坏活动的“黑客”只能称为是街头的小混混,他们根本就不配称黑客。
下面有四篇关于“Hacker’s Code”文章,我觉得相当的不错,可以让你明白什么是黑客的行为规范,道德准则,以及黑客的历史使命,希望能对你有启发。但是翻译水平有限,所以我请Mailper同学帮忙翻译了一下,但还是觉得原文更为传神,尤其是原文中的押韵,双意以及朗朗上口,所以,下面提供了中英文对照。如果有翻译得不好的还请大家指正。
The Hacker’s Code
http://muq.org/~cynbe/hackers-code.html
“A hacker of the Old Code.”
Hackers come and go, but a great ha ...
如何管理并设计你的口令
在互联网上,需要我们输入用户名口令的地方实在是太多了,多得都让人记不过来了,N个电子邮件帐号,QQ, MSN,校内,开心,facebook,Blog,各种论坛,网银,淘宝,电子相册……,太多了,想想看,你要用多少用户名口令,相信很多人可能会这样做,用几乎一样的口令和用户名来申请所有的这些帐号,我估计这是大多数人的做法。当然,这样一来,你就需要保管好你的用户名和口令了,因为只要被破解了,就相当于你所有的帐号被破解了,这是多数恐怖的一件事情啊。你可能觉得别人破解你的口令很难,但我告诉你也许会非常容易,因为,如果你只使用一样的用户名和口令的话,也许某天,你注册了一个不知名的小网站,可能会意味着你所有的用户名和口令都被人获取了,要小心啊。
对我来说,我通常会有几组组帐号和密码,
一个帐号/密码是用于一些大的可以依赖的站点,如:MSN,gmail,linkedin,facebook,hotmail等,因为我相信这些站点应该可以足够信任不会出卖用户信息,也有足够的能力不会让用户信息和口令外泄。
一个帐号/密码用于一些国内的一些大的网站,如:QQ,开心,CSDN,Sina,网易,Blog,同 ...
十条不错的编程观点
在Stack Overflow上有这样的一个贴子《What’s your most controversial programming opinion?》,翻译成中文就是“你认为最有争议的编程观点是什么?”,不过,在400多个主回贴,以及千把个子回贴中,好像并不是很有争议,而是令人相当的茅塞顿开,下面罗列一些,并通过我自己的经历和理解发挥了一些,希望对你有帮助。
1) The only “best practice” you should be using all the time is “Use Your Brain”.
唯一的“Best Practice”并不是使用各种各样被前人总结过的各种设计方法、模式,框架,那些著名的方法、模式、框架只代码赞同他们的人多,并不代表他们适合你,你应该更多的去使用你的大脑,独立地思考那些方法、模式、框架出现的原因和其背后的想法和思想,那才是“best practice”。事实上来说,那些所谓的“Best Practice”只不过是限制那些糟糕的程序员们的破坏力。
2)Programmers who don’t code in their spar ...
别只谈系统备份,谈谈怎样恢复系统吧!
文章来源 JoelOnSoftware.com
很久以前就看到这篇文章,它给了我很深刻的印象,搜索了一下 JoelOnSoftware 的中文 Wiki,似乎也没有此文的中文版,那就让酷壳来完成吧。
你备份你的系统了吗?
你备份服务器了吗?
你的备份是否存放在另一台机器中?
你是否有异地备份?
以上都是非常好的问题,也都是很好的备份习惯。
不过,让我们别再只谈备份了,因为仅仅备份是远远不够的。资深的系统管理员们都会告诉你他们有完美的备份计划,但是问题往往发生在当你需要恢复系统的时候:
备份文件被密钥加密,而遗失或损坏的恰恰就是存放密钥的那台机器。
存放着大量配置信息的 IIS 元数据库恰好没有备份。
备份文件一直被拷贝到一个限量2GB的FAT分区,多出来的数据被默默地抛弃掉了。
你的备份都在一个LTO磁带上,磁带已经和数据中心一起遗失或损坏了(911?)。
即便你有了备份,仍有可能遇到许许多多的意外情况。
所以,保证基本的系统安全不仅仅取决于你做了备份,还在于你是否能够成功恢复备份。如果你在运营一个 WEB 服务,你需要向我展示你能够在合理的时间内,在一台新 ...
编程语言时间地理图
有人使用Google Map做了一个网页,把所有编程语言的时间线和地理位置,如下图,上面是一个编程语言的时间轴,下面是Google Map地图,点击编程语言,你可以查看该编程语言的发明者,发明地,和其Hello World示例(点击这里查看更多的Hello World)
http://www.geospat.com/hoprola/
(点击小星,可以看到语言的发明者和示例)
程序语言性能比拼
下面这个网页,你可以比较各种程序语言的性能:
http://shootout.alioth.debian.org/u64/index.php
这个页面,安装的是x64 Ubuntu,CPU是Intel® Q6600® 单核。这个网页支持的语言很多,什么C,C++,Java,python,PHP,Erlang,C#,Ruby,……,还有最新的G0语言。
在主页上,你可以选择一个语言。比如,我们选择Google的Go语言——Go 6g8g,然后,点击Show按钮,于是,你会看到下面这个界面:
在这个界面上方,你可以选择两种语言,我们选择的是,上面的是Go 6g8g,而下面是的GNU C,于是下面的图表,是这两个语言各种参数和算法的比较图表。
在这个图表中,其实就是“Go的性能” 除以 “C的性能”,所以,
如果柱状图是大于1的(也就是基线以上的)则说明Go的性能不如C。
如果柱状图小于1的(也就是基线以下的),说明Go的性能超过了C。
再往下,是用来做比较的算法的图表,如下所示。在这个表中,我们可以看到很多算法 ...
Richard Feynman, 挑战者号, 软件工程
源文:链接 (本文主要根据挑战者号的问题,以及Richard Feynman那对NASA严厉的批评报告,批评了不适当的“自顶向下”的设计方法,并总结了一下软件工程和其它工程的相通的一些观点。翻译水平有限,欢迎指正)
佛罗里达州,美国东部时间1986年1月28日上午11时39分,挑战者号航天飞机 执行为期6天的STS-51-L 任务,在发射后,其右侧固体火箭助推器(SRB – Solid Rocket Booster)的O型环密封圈(用于连接两节助推器)失效,泄漏出来的热汽达到了5000华氏度,直接蒸发了O型密封圈,并灼烧了毗邻的外部燃料舱,在几秒钟内,外部燃料舱出现结构连接失效,空气的动力迅速分解了航天飞机。在而航天飞机上升72秒以后,助推器脱落,导致航天发飞向侧面滑出。几乎在引航员 Michael J. Smith 发出”Uh oh” 的同时,整个航天飞机完全解体,片刻,航天飞机内部发生爆炸,所有7名宇航员罹难。 那时的我还只是一个小孩,我从电视下方滚动的新闻条目知道了这一惨剧。
在那个时候,火箭助推器工程师曾经警告过这个O型环可能存在问题,但可 ...
程序员小抄大全
你是否会经常忘记一些CSS中的函数名或是一些属性名,那个时候,你一定觉得,如果手边有一个“小抄”(Cheat Sheet)就好了。当然,这个“小抄”不是给你作弊用的,这个“小纸条”就是可以让你马上知道那个你最想知道的东西。这个“小抄”上也不需要有所有的东西,就需要那些经常用的就行了。现在,网上有很多这样的“小抄”,它们可能是PDF格式的,可能是PNG格式的,你可以很方便地把其打印出来(可以打印得很小),然后贴在你的电脑旁,一但需要,瞟一眼就可以了,这对于我们的工作是相当方便的。
之前,酷壳也有两篇关于速查卡的文章《Web设计的速查卡》和《Vim命令速查卡》,不过都不如本贴多。
下面是N多的各种和样的“小抄”,其中包括了Ajax, C++, Java, Python, PHP, Perl, ASP, Unix, Ruby, Google, HTML, CSS, XML ……..,让我们姑且叫做“程序员小抄大全”吧。当然,他们都是英文版的,可能某些链接你可能需要翻墙软件才能访问。我这里就不教你怎么翻墙了,这样的贴子网上多的是。
Actionscript
Quick referenc ...
高科技:GDB回溯调试
也许大家知道,GDB 版本7.0 (2009年9月release) 会是第一次开始支持Reversable Debugging (回溯调式技术),这是一种可以让在debug程序时当我们运行单步调试或是运行到断点时,可以以逆向执行程序的一种技术。(这是GNU的新闻链接)
下面是GDB7.0版本所支持的回溯调试的命令,其中包括,continue,step,以及调试方向的设置。
reverse-continue (‘rc’) — 继续程序运行到断点,但是是逆向运行程序。
reverse-finish — 逆向运行程序直到跳出本层函数。
reverse-next (‘rn’) — 语句单步向后跟踪程序。
reverse-nexti (‘rni’) — 指令单步向后一条指令。
reverse-step (‘rs’) — 向后执行一条语句,单步进入。
reverse-stepi — 向后执行一条指令,单步进入。
set exec-direction (forward/reverse) — 设置程序执行方向,向前或向后。
在网上查了一下,发现VS2010好像也准备要支持这个东西,微软叫这个东西为 ...
算法和数据结构词典
我们知道,在编程的世界里,主要就是两个事,用一定的算法去处理一定的数据。算法可以理解为业务逻辑流程,而数据自然一定是按某种结构来存放,这就是数据结构。我们知道,数据结构的修改一定会导致算法的修改,我们也知道,数据结构直接关系到了整个程序的繁简性,高效性。而算法则是关系到数据处理的时间、空间性能,以及日后的扩展和维护。这两个东西是计算机科班出生的人或是需要学习编程的人必需要注意的两件头等大事。
下面这个网站,由 Software and Systems Division, Information Technology Laboratory 创建。
http://xlinux.nist.gov/dads/
这是一个关于算法,算法技术,数据结构,系统架构等相关问题的一个词典。其中,算法包括了一些常见的算法,比如: Ackermann’s function ,一些算法问题包括了 traveling salesman(销售员出差问题) and Byzantine generals(拜占庭将军问题),还有一些关于这些问题,算法的 实现链表 以及更多的信息。而索引页包括 领域索引 和 ...
WebTTY!太酷了!
这真是一件很Cool的事,在Web上操作Linux,请访问下面这个链接:
http://19.testape.com/webtty_page.php
于是你会看到页面中间的红色,一个小操作系统启动了,红色的最下方是一个bash-2.05b#
试着输入一下命令吧。
bash-2.05b# uname -a
Linux (none) 2.6.18 #2 Mon Dec 29 19:47:06 UTC 2008 i686 GNU/Linux
命令支持的不多,好像只是一个单机版的虚拟机,一但你打开网页时就起动一个。当然,也不排除其完全是假的,因为太简单了,一切都可以fake出来。
Code Review中的几个提示
Code Review应该是软件工程最最有价值的一个活动,之前,本站发表过《简单实用的Code Review工具》,那些工具主要是用来帮助更有效地进行这个活动,这里的这篇文章,我们主要想和大家分享一下Code Review代码审查的一些心得。
首先,我们先来看看Code Reivew的用处:
Code reviews 中,可以通过大家的建议增进代码的质量。
Code reviews 是一个传递知识的手段,可以让其它并不熟悉代码的人知道作者的意图和想法,从而可以在以后轻松维护代码。
Code reviews 也鼓励程序员们相互学习对方的长处和优点。
Code reviews 也可以被用来确认自己的设计和实现是一个清楚和简单的。
你也许注意到了在上面的Code Reivew中的诸多用处中,我们没有提到可以帮助找到程序的bug和保证代码风格和编码标准。这是因为我们认为:
Code reviews 不应该承担发现代码错误的职责。Code Review主要是审核代码的质量,如可读性,可维护性,以及程序的逻辑和对需求和设计的实现。代码中的bug和错误应该由单元测试, ...
编程引言补充
之前收集过《22条经典的编程引言》,发现还有一些未收录的,下面这些引言也很有意思的,希望你喜欢。
“The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.” – Tom Cargill
“最开始的90%的代码使用了程序员90%的时间,剩下的10%的代码也需要90%的开发时间”——Tom Cargill(这不就是中国谚语——“行百步半九十”)
“In order to understand recursion, one must first understand recursion.” – Author Unknown
“要知道什么是‘递归’,你首先需要知道‘递归’”——无名氏
“I have always wished for my computer to b ...
一些单元测试的Guideline
Jimmy Bogard 曾经写过一篇文章: 《从单元测试中获益》,这这篇文章中给出了下面三条规则:
“测试名应该从用户的角度描述是什么和为什么” – 这样一来,程序员可以从名字就可以知道用户需要什么样的软件行为。
“测试也是代码,同样也需要我们更多的爱” – 真实运行在生产环境下的代码不仅仅只是我们需要去关心和花心思的代码。对于单元测试中的代码同样也需要易读易维护,以及可重用的特性。“我非常痛恨那些又长又复杂的测试代码,如果一个测试需要30行的单元测试代码,请把其放在一个方法中。一个长的测试步骤只会激怒程序员。如果你在正式的代码中都没有这么长的代码,那么为什么我们需要在测试代码中容忍这样的情形呢?”
“不要只用一种固定的模式或组织风格” – 有些时候,对于一些特殊的测试案例,标准的类设计模式,或一个固有的测试装置可能并不能有效的工作。
Lior Friedman 加上: “第0条 – 测试应该只测试单元其外部的行为,而不是内部的结构”。或者说,只测试对一个单元的期望,而不是这个单元的构成。
Ravichandran Jv 也加上了他的条例:
一个测试一个断言(如果可 ...
程序员惯用的解释(Top 25)
下面是程序员日常工作当中惯用的解释,或是口头禅。我们可以从这一个侧面来看看的程序员的特征和性格,相信你我都说过很多这样的话。不要太认真哦,呵呵。
在我这边的电脑上可以工作啊……
我重来没有听过这样的事
昨天还能正常工作呢
好吧,这算一个BUG
这怎么可能?
这应该是机器或是环境的问题
操作系统更新了吗?
一定又是用户那边的错
你的测试数据一定有问题
我从来没有碰过那边的代码!
是的,是的,我会准备完成
一定是你搞错了
哦,这正是我们开发的功能
我就快准备好了
当然,还需要做的就只剩修改这些小Bug了。
我会马上做完的
最近太不顺了
我不可能测试所有的case!
那根本不可能做到
我记得我已经改了这个bug了
我做完了,只不过还没有测试过
程序应该可以工作,只不过还没有测试过
一定是有人改了我的代码
你的机器上一定中了什么病毒或木马
就算是程序有问题,那又怎么样?
呵呵,是这样的吗?希望你能分享你所经历的程序员的解释。