前端开发大众手册(包括工具、网址、经验等)

原文链接:http://www.chencheng.org/blog/2008/10/25/f2e-manual/#f2e-manual-s1

一直觉得前端开发缺个手册,这是个体力活。不过总得有人来干。

今天闲来无事,把一些工具(online和client的)、常用网 址、以及经验总结等罗列出来和大家分享下。这个标题起地大了点,肯定会有很多地方没列到,包括类目的分法也可能考虑不周,所以还请大家积极补充指正,可以 直接留言,也可以发邮件给我(sorrycc#gmail.com)。之所以加上“大众”两字,因为以下资源对于高手来说可能早就很熟悉了。

另外想提一句,工具是死的,好不好用得看你会不会用。比如Firefox、Fiddler等,除了显而易见的功能以外,都有一些小的技巧,掌握了可以让你事半功倍。

更新记录:

  • [20081025] 第一版

快捷导航:

另外还搞了个Firefox插件《前端开发工具集》,把资源整合到一个菜单下,方便查询。数据放在线上(Google AppEngine),速度应该会有保证,更新也会比较方便哈,见图。

在线工具集

常用Firefox插件

IE下的调试工具

  • Fiddle2 —— 非常强悍的一款http流查看工具,默认支持IE,其他浏览器可以设置将{Document}\Scripts\BrowserPAC.js设为代理进行使用。Firefox下可用上述”Fiddler 开关”进行快速切换。支持插件
  • IE Developer Toolbar —— 查看元素、禁用缓存、禁用CSS\JS、Outline元素、查看生成的源码等功能,IE8自带了一个加强版的。
  • Microsoft Script Debugger + Companion.JS —— 调试JS用,虽然报错还是有误差,但是我已经满足了。安装顺序是:Microsoft Script Debugger,Companion.JS,在”IE选项-高级”里取消禁用脚本调试
  • 多版本IE共存两种方案:
    • IE7/8 + IE Tester —— 大众型配置,可以基本满足日常需要。
    • IE6 + Internet Explorer Collection —— 在IE 6用户占绝对优势以及IE 6神奇bug满天飞的时代,我还是推荐这种方案,因为只有神奇的原装IE 6,才能抵挡运营神奇的问题。另外如果还有其他机器可供支配的话,建议再装个IE 8 + IE Tester,因为IE 8下的Developer Toolbar还是有很大改进的,调试起来会方便一些。
  • 以下三个软件相对不重要些:

参考手册

批处理工具

IDE及其他工具

Bookmarklet(右键另存)

开发者社区及权威网站

推荐订阅的博客和网站(排名不分先后)

免费电子书列表

原文链接:http://coolshell.cn/?p=2775

在StackOverflow上,有人要打算整理个免费电子书的列表,结果很快就有人分享了一个列表。很不错,我就转过来了。原帖的地址在http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books

(注意:有些连接可能会被墙掉)

List of Free Programming books (compiled):

Meta-List

Graphics Programming

Language Agnostic:

ASP.NET MVC:

Assembly Language:

Bash

C/C++

C#

  • See .NET below

Django

Forth

Git

Haskell

Java

JavaScript

Linux

Lisp

Lua

Maven

Mercurial

.NET (C#)

NoSQL

Objective-C

Parrot / Perl 6

Perl

PHP

PowerShell

Prolog

PostgreSQL

Python

Ruby

Scala

Scheme

SmallTalk

Subversion

*SQL (Implementation agnostic) *

Vim

Android 简史

原文链接:http://www.ifanr.com/15143

By Ron Hamelin from Android Police | 译校 : @matrining 转载请注明 ifanr.com 译文链接



在 苹果的 iPhone 与 Google 的 Android 系统手机在 2007 突入移动设备战场之前,移动科技领域一直处于死水一潭的境地,坦率地说,“智能手机”(如果那时候的手机能被称作智能手机的话)非常无趣:它们的能力非常 有限,电子邮件、基本的消息服务、拍照、简单的应用与游戏、初步的网络浏览,以及企业服务整合(Exchange)。

那个时代,主要的竞争者是微软的 Windows Mobile,RIM 的黑莓,Palm,Symbian 以及 Linux,它们在移动市场各自占据了一块地盘。
Continue reading ‘Android 简史’

UI 设计师的盛宴:Web UI 设计资源大系

原文链接:http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K1005.aspx

每个 Web 设计师都在 UI 设计上费尽了心血,即使这样,资源的匮乏,视野的狭窄,也常常让他们的呕心沥血之作并不为人看好,事实上,UI 设计并不需要闭门造车,很多 UI 元素是通用的。本文收集了 20 套非常前端的 UI 元素库,它们多数是可以后期修改的 PSD 或 SVG 版。
Continue reading ‘UI 设计师的盛宴:Web UI 设计资源大系’

一些重要的算法

原文链接:http://coolshell.cn/?p=2583

下面是一些比较重要的算法,原文罗 列了32个,但我觉得有很多是数论里的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解 一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)

  1. A*搜寻算法
    俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。
  2. Beam Search
    束搜索(beam search) 方法是解决优化问题的一种启发式方法,它是在分枝定界方法基础上发展起来的,它使用启发式方法估计k 个最好的路径,仅从这k 个路径出发向下搜索,即每一层只有满意的结点会被保留,其它的结点则被永久抛弃,从而比分枝定界法能大大节省运行时间。束搜索于20 世纪70 年代中期首先被应用于人工智能领域,1976 年Lowerre 在其称为HARPY的语音识别系统中第一次使用了束搜索方法,他的目标是并行地搜索几个潜在的最优决策路径以减少回溯,并快速地获得一个解。
  3. 二分取中查找算法
    一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或 者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。这种搜索算法每一次比较都使搜索范围缩小一半。
  4. Branch and bound
    分支定界 (branch and bound) 算法是一种在问题的解空间树上搜索问题的解的方法。但与回溯算法不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树,并且,在分支定界算法中,每一个活结点只有一次机会成为扩展结点。
  5. 数据压缩
    数据压缩是通过减少计算机中所存储数据或者通信传播中数据的冗余度,达到增大数据密度,最终使数据的存储空间减少的技术。数据压缩在文件存储和分布式系统领域有着十分广泛的应用。数据压缩也代表着尺寸媒介容量的增大和网络带宽的扩展。
  6. Diffie–Hellman密钥协商
    Diffie–Hellman key exchange,简称“D–H”, 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。
  7. Dijkstra’s 算法
    迪科斯彻算法(Dijkstra)是由荷兰计算机科学家艾兹格·迪科斯彻(Edsger Wybe Dijkstra)发明的。算法解决的是有向图中单个源点到其他顶点的最短路径问题。举例来说,如果图中的顶点表示城市,而边上的权重表示著城市间开车行经的距离,迪科斯彻算法可以用来找到两个城市之间的最短路径。
  8. 动态规划
    动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。比较著名的应用实例有:求解最短路径问题,背包问题项目管理网络流优化等。这里也有一篇文章说得比较详细。
  9. 欧几里得算法
    在数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。
  10. 最大期望(EM)算法
    在统计计算中,最大期望(EM)算法是在概率probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。最大期望经常用在机器学习计算机视觉数据聚类Data Clustering) 领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大 化在 E 步上求得的最大似然值来计算参数的值。M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。
  11. 快速傅里叶变换 (FFT)
    快速傅里叶变换(Fast Fourier Transform,FFT),是离散傅里叶变换的快速算法,也可用于计算离散傅里叶变换的逆变换。快速傅里叶变换有广泛的应用,如数字信号处理、计算大整数乘法、求解偏微分方程等等。本条目只描述各种快速算法,对于离散傅里叶变换的性质和应用,请参见离散傅里叶变换
  12. 哈希函数
    Hash Function是一种从任何一种数据中创建小的数字“指纹”的方法。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用来代表一个短的 随机字母和数字组成的字符串。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。
  13. 堆排序
    Heapsort 是指利用堆积树)这种数据结构所设计的一种排序算法。堆积树是一个近似完全二叉树的结构,并同时满足堆积属性:即子结点的键值或索引总是小于(或者大于)它的父结点。
  14. 归并排序
    Merge sort是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
  15. RANSAC 算法
    RANSAC 是”RANdom SAmple Consensus”的缩写。该算法是用于从一组观测数据中估计数学模型参数的迭代方法,由Fischler and Bolles在1981 提出,它是一种非确定性算法,因为它只能以一定的概率得到合理的结果,随着迭代次数的增加,这种概率是增加的。 该算法的基本假设是观测数据集中存在”inliers”(那些对模型参数估计起到支持作用的点)和”outliers”(不符合模型的点),并且这组观测 数据受到噪声影响。RANSAC 假设给定一组”inliers”数据就能够得到最优的符合这组点的模型。
  16. RSA加密演算法
    这是一个公钥加密算法,也是世界上第一个适合用来做签名的算法。今天的RSA已经专利失效,其被广泛地用于电子商务加密,大家都相信,只要密钥足够长,这个算法就会是安全的
  17. 并查集Union-find
    并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。
  18. Viterbi algorithm
    寻找最可能的隐藏状态序列(Finding most probable sequence of hidden states)

附录

五大基于JVM的脚本语言

原文链接:http://coolshell.cn/?p=2631

还记得以前本站的一篇文章《如何在Google App Engine上运行PHP》吗,其实那是借用 Quercus, 一个 100% 的用Java 实现的一个 PHP 引擎。今天,这样的东西太多了,能运行在Java的虚拟机JVM上的程序意味着有天然的跨平台性,现在JVM并不单单只能运行Java程序,在JVM上出 现了若干使用Java虚拟机运行的脚本程序,比如什么PHP, Python, Ruby等等,这里有一篇文章评论了在JVM上的可以运行的排名前五脚本语言。他们分别是:

  1. Groovy。 构建在强大的Java语言之上 并添加了从Python,Ruby和Smalltalk等语言中学到的诸多特征,为Java开发者提供了现代最流行的编程语言特性,而且学习成本很低(几 乎为零),在开发Web,GUI,数据库或控制台程序时, 通过减少框架性代码 大大提高了开发者的效率。支持单元测试和模拟(对象),可以简化测试。无缝集成 所有已经存在的 Java对象和类库。直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。
  2. JRuby。一个纯Java实现的Ruby解释器。通过JRuby,你可以在JVM上直接运行Ruby程序,调用Java的类库。很多Java编写的Ruby IDE都是使用JRuby来解释语法的。
  3. Scala。 一种多范式的编程语言,设计意图是要整合面向对象编程和函数式编程的各种特性。Scala编程语言近来抓住了很多开发者的眼球。它看起来像是一种纯粹的面 向对象编程语言,而又无缝地结合了命令式和函数式的编程风格。Scala的名称表明,它还是一种高度可伸缩的语言。Scala的设计始终贯穿着一个理念: 创造一种更好地支持组件的语言。
  4. Fantom 。Fantom 前身是 (Fan) 是一个基于 Java 和 .NET 平台的编程脚本引擎,用来在运行时产生 JVM 和 .NET 平台的字节码,该语言是面向对象的,跟 Groovy 和 JRuby 有点类似,可通过特定的接口来集成 Java 的类库。
  5. Jython。 Jython由于继承了Java和Python二者的特性而显得很独特。其是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器, 它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython 或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨 大的资源库。

下面是一张表格比较了这五大JVM脚本语言:

Groovy JRuby Scala Fantom Jython
风格类型 OO / 动态 OO / 动态 OO, 过程/ 静态 OO / 静态 OO / 动态
源语言 Java Ruby N/A N/A Python
运行 编译型 编译型,
解释型
编译型 半编译型 编译型
平台 JVM JVM JVM JVM, .Net CLR JVM
Java集成 极好 极好 极好 极好
运行速度 极好 很好
工具支持 广泛 还可以 广泛 几乎没有 几乎没有

其它一些JVM的脚本语言也我们可以关注一下,如:Clojure, JavaFX, 和IBM的 NetRexx

(全文完)

Git 中文教程

原文链接:http://www.linuxsir.org/main/doc/git/gittutorcn.htm
Continue reading ‘Git 中文教程’

基于Dropbox的个人知识管理平台

原文链接:http://www.williamlong.info/archives/2160.html

如何保存和管理知识,是个人知识管理的一个非常重要的问题。很多人下载的资料很多,但大多数甚至从来没 有打开过,或者不知道放到哪里了,实际上这样的知识对于个人来说是没有价值的。

在大多数人的电脑中,“桌面”、“我的文档”、“下 载”、“IE收藏夹”等目录都是混乱不堪的,极大的影响了个人的工作效率,如果有多台工作电脑(如公司的台式电脑、家里的台式电脑、笔记本电脑),则文档 管理的混乱程度将翻倍增加。

我对于个人知识管理的心得是:利用Dropbox软件同步多台电 脑文档,所有文档按照分类放在不同的文件夹内进行管理。

系统默认的下载目录不放在Dropbox目录中,每次下载完成后,手动将需要的 文件移动到指定的分类目录里。

下图是我设计的基于Dropbox的个人知识管理方案,可以自动实现家里和办公室的个人工作平台的知识管 理,提高个人的工作效率。
Continue reading ‘基于Dropbox的个人知识管理平台’

利用JMF进行多媒体编程

原文链接:http://www.hackhome.com/InfoView/Article_115110.html

Java媒体框架(JMF)使你能够编写出功能强大的多媒体程序,却不用关心底层复杂的实现细节。JMF API的使用相对比较简单,但是能够满足几乎所有多媒体编程的需求。在这篇文章中,我将向你介绍如何用很少的代码就编写出多媒体程序。

Java 多媒体框架(JMF)中包含了许多用于处理多媒体的API。它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍 JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。

JMF目前的最新版本是2.1,Sun通过它向 Java中引入处理多媒体的能力。下面是JMF所支持的功能的一个概述:

● 可以在Java Applet和应用程序中播放各种媒体文件,例如AU、AVI、MIDI、MPEG、QuickTime和WAV等文件。

● 可以播放从互联网上下载的媒体流。

● 可以利用麦克风和摄像机一类的设备截取音频和视频,并保存成多媒体文件。

● 处理多媒体文件,转换文件格式。

● 向互联网上传音频和视频数据流。

● 在互联网上广播音频和视频数据。
Continue reading ‘利用JMF进行多媒体编程’

常用网站开发类Firefox扩展插件

原文链接:http://www.williamlong.info/archives/2157.html

作为一个 Web 开发人员,你几乎没有理由不喜欢Firefox, 因为在Firefox下有很多专门针对开发的扩展插件,非常好用,这里就介绍 一些常用的针对网站开发的FireFox扩展,供Web开发人员参考。

1、Firebug

用于调试JavaScript,修改界面HTML和CSS,一些常用的网络分析扩展也是基于Firebug的,非常好用。

2、YSlow

YSlow是 Yahoo开发的,基于Firebug的用于分析网页性能的工具,可以提供如何提高网站性能的一套规则,用于优化网页的速度和建立高性能的网页。

3、Page Speed

Page Speed是 Google开发的类似YSlow的工具,也是基于Firebug插件,网站管理员和网络开发人员可以使用 Page Speed 来评估他们网页的性能,并获得有关如何改进性能的建议。

4、Web Developer

Web Developer是集成了一系列Web开发工具,例如HTML、CSS校验、FORM修改等功能,拥有强大的CSS调试和Form调试能力, 对页面的分析非常全面,可以禁止页面的任一内联、文档、和外部CSS,可以直接编辑当前CSS。

5、Live HTTP Headers

浏览页面同时记录所有HTTP headers,可分析各个http头的状态码。

6、HttpFox

监控和记录所有HTTP访问中发送和接受的数据,包括URL地址、HTTP头、传输参数等信息。

7、User Agent Switcher

浏览器切换器,可以让Firefox伪装为其他浏览器,伪装其他浏览器例如 iPhone来访问网站。当初我提前体验Google Buzz就是利用这个扩展模拟iPhone登录来实现的。

8、Coral IE Tab

基于IETab开发的增强版本,在Firefox中模拟使用IE浏览器的引擎来访问网页。

9、MeasureIt

可以测量页面上任何选择区域的长宽。

10、ColorZilla

可以从页面,或者调色板上取色,同时可以缩放页面。

11、FireFTP

在Firefox中实现FTP的功能。

12、Greasemonkey

让你可以使用JavaScript在浏览器上实现一些特殊的定制功能,有上百个基于Greasemonkey的JavaScript代码可供使用。

13、View Source Chart

改善Firefox浏览器显示源代码的样式。

14、HTML Validator (based on CSE HTML Validator)

使用CSE的HTML 验证引擎,需要安装CSE HTML Validator for Windows,有lite版本。