Go语言的”Issue 9″ Closed!
还记得Google发布Go语言没几天就要 更名Issue 9 的那个事吗?那是2009年11月的事了,差不多一年了,今天Google的Go语言团队终于正式回复这个bug了。
Comment 1097 by project member [email protected], Today (11 hours ago)
The naming similarity is unfortunate. However, there are many computing
products and services named Go. In the 11 months since our release, there
has been minimal confusion of the two languages, so we are closing this
issue.
“名命类似是很不幸的。然而,那有很多的计算机产品和服务都叫Go。自从我们发布Go语言的这11个月里,这两个语言只有极少的混乱,所以,我们决定关闭这个问题。”
目 ...
主流文本编辑器学习曲线
下图是几个经典的文本编辑器的学习曲线,不排除其中有调侃和幽默的味道。
主流编辑器学习曲线图
注1:Pico(PIne COmposer)是Unix操作系统中最常见的三种文字处理软件之一,具有文字编辑、搜索、拼写检查、文件浏览和段对齐功能,适合高效地编辑短小的文件。Pico是由华盛顿大学开发的免费软件,随着pine电子邮件处理软件发布。它是在Emacs的基础上以pine的邮件编辑为目标而开发的,所以其指令集是Emacs的子集,但是由于在界面上有提示快捷键,相对于vi和Emacs来说更加容易使用。由于Pico虽然是免费软件,但是它并不是开源软件,所以很多Linux版本并不包含Pico。这些版本通常提供一个界面类似的开源软件nano——Pico的克隆版。
注2:图中的纵横坐标没有标明。我所理解的是——X轴是熟练程度,Y轴是技能。于是对于notepad 来说,技能和熟练程度呈正比。对于VS来说,熟练程度越大,所需要技能先是越来越多,而随着熟练程度的增长,你需要的技能也越少。而对于VI来说,一开始就需要相当大的技能,但一旦掌握这些技能,则你将会越来越熟练。而对于e ...
Javascript向量图Lib–Raphaël
我们知道很多的Javascript的lib库了,比如:jQuery,YUI,Ext JS等等。今天看到一个很牛X的lib叫Raphaël [ˈrafēəl],这是一个很小的JavaScript library,可以让在你的Web上整一些向量图,并且可以完成一些动画和图形变化,很强大。
Raphaël使用的是 W3C 推荐的 SVG和VML 来创建图片。这意味着所创建的图形对象一样可以是一个DOM对象,可以被你的Javascript的事件来操作。Raphaël 支持所有的主流浏览器:Firefox 3.0+, Safari 3.0+, Chrome 5.0+, Opera 9.5+ d 和 Internet Explorer 6.0+,最强大的是,这个js文件被压缩后也就60K。
下面,让我们来看几个示例:
下面是一个图形变化的示例,点击两个图形间的箭头。
下面是一个流程图,你用鼠标拖动一下其中的图形:
下面是一个时钟:
下面是一个3D迷宫(用方向键移动,空格键跳动,注意左上角的地图):
更多的示例请到其 ...
编程语言进化
以前本站发布过《编程语言时间地理图》、《计算机编程简史图》,下面是两张关于编程语言的进化图。
第一张是比较宏观的,来源在这里,虽然是去年的,但还是比较不错的,其把计算机编程语言分成了五个时代——
语言诞生。1940年代。第一个语言应该是:Ada Lovelace,
编译器时代。1950年代。这个时代的代表语言是:Fortran, LISP, 和 COBOL,编程语言开始引入编译器优化技术。
模式时代。1960年代-1970年代。这个时代是编程语言最重大的变革。在这个时代,所有人都在思考如何让设计一个好的编程语言以让编程更简单。面向对象也因为Simula而出现,而Smalltalk成了第一个纯动态类型的语言,C/C++、Pascal和SQL也是这个时代出现的,而第一个功能性/函数式语言ML也是这个时代出现的。所以说,这个时代是一个百花齐放的时代。而1980年代并没有太多的创新的东西,而只是对70年代出现的那些语言优化和发展的时期,如:1979年发明的C++语言。
生产力时代。1990年代以来主要是如何增进编程生产率的时代,这个时代出现了很多framework,代码库,以及 ...
Windows的达尔文进化图
之前发布过《操作系统图形界面发展史(1981-2009)》,今天在网上看到一张自于Testking.com的关于Windows的进化图,其从1985年的windows 1.0到2009年的windows 7的。挺有意思的。点击可以看大图。
图片来源: The Darwinian Evolution of Windows by Tech King
Google未公开API:转MAC地址为经纬度
这里有一个POC(Proof of Concept)可以通过你Web浏览器后面的路由器XSS攻击得到一个准确的GPS坐标。注意:路由器和Web浏览器以及IP地址并不包含任和地理信息。其方法是使用了一个Google未公开的API。大约方法如下:
访问一个网页,这个网页隐藏了一个基于你WiFi路由器的XSS( 参见: XSS Verizon FiOS router)
通过这个XSS 可以获得路由器的MAC 地址。
然后通过 Google Location Services我们可以把这个MAC地址映射到GPS坐标。Googel的这个服务是基于HTTP的服务。这并不是一个Google正式发布的API,而是通过 Firefox’s Location-Aware Browsing 发现的。
演示地点在这里:http://samy.pl/mapxss/
我试了一下,无论无线和有线都可以准确定位我的位置。很强大,你也试试看。
三个教程
第一个是关于vim的,相当的全面。
http://stevelosh.com/blog/2010/09/coming-home-to-vim/
第二个是Mozilla的Javascript教程
https://developer.mozilla.org/en/JavaScript/Guide
第三个是Kernighan 和Ritchie 的 “The C Programming Language”第二版的问答和练习。
http://users.powernet.co.uk/eton/kandr2/
Kick Ass小游戏
还记得以前那个在IE的已打开的网页上的网址里输入一段javascript的代码后,你会发现这个页面里所有的图片元素都动了起来:(只能在IE浏览器里,Chrome和Firefox无效)
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position=’absolute’; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval(‘A()’,5); void(0);
很类似一个叫Erik Rothoff Andersson的人又搞了Kick Ass的游戏,代码如下:(用了一个js文件,所以就显得没有那么复杂了,但只能在Chrome和F ...
40个很不错的CSS技术
以前发布过《30种时尚的CSS网站导航条》,下面是40个CSS的技术,可以让你的网页有更好的用户体验。希望你喜欢
目录
1. A CSS styled table version 2
2. A CSS-based Form Template
3. A Stripe of List Style Inspiration
4. Accessible expanding and collapsing menu
5. Advanced CSS Menu Trick
6. Animated Rollover Arrow
7. Animations
8. Background Size
9. Better Ordered Lists (Using Simple PHP and CSS)
10. Box Shadow
11. Creating a table with dynamically highlighted columns
12. Creating bulletproof graphic link ...
面向对象是个骗局?!
今天在网上看到网页叫“Object Orientation Isa Hoax”——面向对象是一个骗局,标题很有煽动性(注:该网站上还有一个网页叫Object Orientation Is Dead),好吧,打开看看上面有些 什么,发现这个网页是在收集一些关于“面向对象的反动言论”,没想到的是,很多言论出自很多大师之口。比如:Alexander Stepanov和Bjarne Stroustrup。这些言论挺有意思的,所以,我摘两段在下面:
第一段是Alexander Stepanov的(不要告诉我你不知道这个人,STL之父,关于他的故事,可以到这里看看)。他N年前作过一段采访,原文在这里(我非常建议大家去读一下这篇采访,相当过瘾),译文在这里(不过有地方把原意都译反了,我重译了一下),其中有一个问答被上述的那个面向对象反动言论的网页收录了:
Alexander Stepanov
Question:
I think STL and Generic Programming mark a definite departure from the common C ...
一些非常有意思的杂项资源
下面是一些最近在互联网上看到的一些各式各样的资源和文章,当然,都是英文社区的,本来想每一个写一篇文章,但是觉得一篇文章一句话真没劲,所以,把这些东西合并写成一篇文章,这样有利于减轻本站的负载,也有利于节省网络带宽,同样,也就节省了能力和电力,因此也就很环保,很低碳。呵呵。
先是一个《Windows Internal》第五版的第五章的电子版(英文的),你可以在这里下载。关于其它一些电子书,你可以看看本站的这篇文章《免费电子书列表》、《非常不错的编程技术教程》、《超过100本的linux免费书籍》和《20本最好的Linux免费书籍》
→
http://www.3dtin.com/是一个用纯Javascript搞的一个3D作图的网站,Javascript是越来越强大了。这个演示可以让你看到以后Web应用的潜力。关于Javascript的一些东西,你可以参看本站的这些文章《JS1K 演示》、《又一个Javascript试验田》、《一个Windows 3.1的Web网站》、《哥是玩程序的》。
→
说到这些很酷很炫的东西,大家一定会想到使用Flash,不过,目前的Flash正在受 ...
Windows编程革命简史
源文:A Brief History of Windows Programming Revolutions (Ron Burk)
首先,是 Windows API 和 DLL Hell。(译注:DLL Hell——DLL灾难,就是微软的DLL升级时因为不同版本可能造成应用程序无法运行的灾难,首当其冲的是COM编程,相信大家都知道某些木马或是病毒更改了一些系统的DLL可以导致整个Windows不举,这就是DLL Hell) 于是,第一次革命是DDE——我们可以创建一个状态条在上面显示Microsoft的股票价格(译注:Dynamic Data Exchange,工作原理是: 甲方申请一块全局内存,然后把内存指针postmessage到乙方,乙方根据收到的指针访问那块全局内存)。
在那个时候,Microsoft 创建了 VERSIONINFO 资源来管理版本信息,当然,是用来消除DLL Hell。但是,另一个微软内部的小组发现了DDE的致命缺陷:这不是他们做的!
为了解决这个问题,他们创造了OLE(很像DDE,只是名字不一样),而且,我还记得在一次 Microsoft 大会上, ...
代码重构的一个示例
还记得以前和大家提到过的《各种流行的编程风格》吗?有一些人问我那些编程风格具体是什么样子的。下面是一个代码重构的实例,让我们看看那个流行的编程风格是实践是什么样的。下面的这个实践不是虚构,如有雷同,请对号入座。
首先,我们有一个表达式如下所示:
s = 7;
很明显,这个表达式的变量名太没意义了,很不利于程序的可读性,所以,我们需要取一个有意义的变量名:
slots = 7;
很好,不过,那个常量7是hard-code或是一个Magic number,而且,这常量没有名字也不利于代码的可读性啊。再改:
SEVEN = 7;
...
slots = SEVEN;
靠!上面,是这是哪门子的改法?(不过,我保证这是真实发生的),常量名也要有意义一点嘛,再改:
SLOTS_PER_WIDGET = 7;
...
slots = SLOTS_PER_WIDGET;
这还差不多,不过,名字可能会重名啊,最好放到一个类中:
import widgetConstants;
...
slots = widgetConstants.SLOTS_PER_WIDGET;
现在看起来好很多了,不过,即然面向 ...
HTML5 小游戏展示
使用 HTML5 的 Canvas可以搞出一些很有趣的东西,如2D图形,位图,动画等。而使用Javascript来操作这些东西,可以设计出很多的小游戏。 下面是一些用HTML5做出来的小游戏,让我想得了我小时候的那些游戏。
顺祝大家中秋节快乐!以及进入史上最混乱的长假调休。呵呵。
目录
Sinuous
超级玛丽卡丁车
吃豆
圆环俄罗斯方块
Asteroids
Bert’s Breakdown
TWITCH
JS Wars
Chain Reaction
Same Game
Coverfire
JQuery Racing
3D 俄罗斯方块 – Cubeout
Galatic Plunder
Lines
RGB Invaders
Agent 008 Ball
JSLander
Rainbow Blocks
Sinuous
小心被红点撞上。
超级玛丽卡丁车
A small but fun racing game built in h ...
编程时间分配图
下面是一个程序员coding的时间分配图,原图在这里。
编程时间分配图
思考会是一个很重要的过程,当然耽搁拖沓也有可能也是因为没有想好,抽烟/喝咖啡应该也是一种思考,吃点东西是为了让脑子转得更快一点,上网搜索一下灵感可以借鉴一下其它人的想法,抱怨写注释只是一个例子,更多的应该是抱怨加班或是公司的老板。
如果需要加上点什么的话,我觉得应该加点“重构”,“编译”,“调试”,当然,他们都可以算在coding里。不过,我觉得更应该还有:“开会”,“争吵/解释”,“打断”,这些比重也是很大的。
所以,下面是我个人认为比较实际的版本:
编程时间图(酷壳版)
你的编程时间分配图是怎么样的?
用脚本实现哄宝宝睡觉(Demo)
去年,本站发布了一篇文章《用脚本哄宝宝睡觉》,具体想法是把摇篮和光驱连一起,然后用脚本把光驱弹出和收入以实现驱动摇篮。今天在网上看到一个具体实现,呵呵。看下面的视频:
代码优化概要
本文译自Dr. Dobb’s Blogger的Walter Bright写的《Overlooked Essentials For Optimizing Code
》
我编写程序至今有35年了,我做了很多关于程序执行速度方面优化的工(一个示例),我也看过其它人做的优化。我发现有两个最基本的优化技术总是被人所忽略。 注意,这两个技术并不是避免时机不成熟的优化。并不是把冒泡排序变成快速排序(算法优化)。也不是语言或是编译器的优化。也不是把 i*4写成i<<2 的优化。 这两个技术是:
使用 一个profiler。
查看程序执行时的汇编码。
使用这两个技术的人将会成功地写出运行快的代码,不会使用这两个技术的人则不行。下面让我为你细细道来。
使用一个 Profiler
我们知道,程序运行时的90%的时间是用在了10%的代码上。我发现这并不准确。一次又一次地,我发现,几乎所有的程序会在1%的代码上花了99%的运行时间。但是,是哪个1%?一个好的Profiler可以告诉你这个答案。就算我们需要使用100个小时在这1%的代码上进行优化,也比使用100个小时在其它99%的代码上优 ...
25个jQuery的编程小抄
以前本站向大家介绍过“程序员小抄大全”,这里是25个jQuery的小抄(有一些在墙外),有的还可以设置成你的电脑桌面。这些东西可以让你很快速地记得一些常用的东西,就好像软件的快捷键一样。希望它们对你会有帮助。
1. jQuery 1.2 Cheat-sheet [PNG]
2. jQuery 1.2 Cheat Sheet v1.0 [PDF]
3. jQuery 1.3 Cheatsheet [PDF]
4. jQuery API Browser [Adobe AIR, HTML]
5. jQuery1.1 Cheat Sheet [HTML]
6. jTouch – jQuery Cheat Sheet for iPhone [HTML]
7. jQuery 1.4 API Cheat Sheet [HTML, PDF, PNG]
8. jQuery Selectors [PDF]
9. jQuery 1.3 Quick API Reference [ HTML]
10. jQuery UI 1.7 Quick API Refer ...
Waterfall 软件工程
《Royce, Winston (1970), “Managing the Development of Large Software Systems”, Proceedings of IEEE WESCON 26 (August): 1–9. 》,这篇文章向你说明了软件工程鼻祖“Waterfall”的工程模型,这是40年前的论文,其中的十张插图很有强大,抽出来,让我们来看看什么叫Waterfall软件工程。
首先,让我先看一下小的程序是怎么做的,呵呵,很简单,两步。
接下来,就是我们最经典的Waterfall软件工程模型了,用户需求,软件需求,需求分析,设计,编码,测试,运维。
为了保证每个步骤都能正确实施,于是,每个步骤之间需要有一定的交互,这是我们所希望的样子。
然后,不幸的是,我们总是在测试的时候发现了设计甚至需求的问题,因此,不得不让我们返工。
为了解决上面的“返工”问题,我们可以使用下面的几步来解决。
第一步,叫Preliminary Design,程序设计先行,确定在进入需求分析之前,我们的概要设计要完整。
第二步,我们叫Document ...
Mozilla的一个BUG
以前,本站给大家介绍过一些BUG,如:《谷歌Chrome取消”http://”》,《Go语言的Issue 9》和《telnet的一个Bug》。今天,和大家再说一个Mozilla的Bug,这个Bug的网址在这里:https://bugzilla.mozilla.org/show_bug.cgi?id=579522
这个Bug的标题是这样的:“Buy cots for the JS interns” (为JS实习生买一些轻便小床),并说明“This bug is not actually a joke.”,这个BUG估计是在抱怨在Mozilla工作的实习生太辛苦了。在后面的跟贴中,很多人都提到了V8,呵呵。看来,大家还是在嘲笑Mozilla更多一些,大家不妨前往一看。
Mozilla的firefox还是很让人失望的,作为一个Linux下默认的浏览器,其居然让Firefox的Windows版比Linux版更强大,在firefox 4.0 beta中居然出现了Windows Only的东东,着着实实地伤了很多firefox的粉丝的心,正因为这个,整个社区都开始BS并嘲笑Mozilla,并转投 ...