DoCoMo 推出双面透明触控概念手机

NTT DoCoMo 将在东京国际展示场举行的EXPO COMM WIRELESS JAPAN 2012,展示出这款彩色双面透明的触控屏幕,为手机业界带来震撼。这款手机配置了透明触控屏幕,可以触摸前后两面进行操作。无论是在正面还是在背面,你都可以进行翻页、滑动切换界面,与一般手机操作无异。

DoCoMo 发言人表示,在阳光下使用多少会有些不便,但只需要用一块黑色板放在背面就没问题。新技术能否成为手机界的革命性创新?我们拭目以待!

我是怎么做开源的

我最近发现我对开源(Open Source)的看法和我的很多朋友不一样。我对开源的态度一贯是:
这段代码能够很好的解决我的问题。假如它也能解决你的问题,我很欣慰。但是假如它不能,我愿意做一些改进,但是我也会拒绝一些让代码变的臃肿的的想法。最后,做一个成熟的库大约需要几年的时间。成熟我是指足够的稳定来发布一个最终的版本,或者有人做了一个高级版本。我不认为一个开源的项目能说明我在这个行业的成就。

但是和别人的交流我发现他们不愿意做开源的原因如下:
1. 代码不够成熟
2. 不想写文档
3. 不想被需求和各种邮件占用太多时间

我完全理解这几点,但是我开发生涯中的一些事件改变了我的看法。

那是我的第一个开源项目,我一直不敢拿出来开源,直到我把他用在生产环境中稳定的运行了一年,我有足够的自信相信我这个项目能解决一些问题。它是一个 .NET 对象关系映射库,叫做 NORM,在2005年发布。我相信你没有听说过这个项目。我花了好几个月的时间来完善这个项目,但是没有人在乎。然后我就不想再发布什么东西了。我现在相信不论我发布什么都不会引起人们的注意,所以我最好还是尽快的发布,如果不行,那就承认失败,然后继续前进。

没有人会为自己写文档,他们为其他将要用这个软件的人写文档。人们很少从使用他们开源软件的人那里得到什么。这个简单的现实导致文档的稀缺。但是,缺乏文档不代表你不能开源你的软件,它只是意味着你的软件推广起来会比较慢。

我两年以前开源了 expectations,没有任何文档,并且在一年之内都没有任何文档。在这一年中,很少有人关注了这个项目。但是这个项目确实对一些人来讲很有用,所以还是有一些应用。最终,有一些用户开始产生一些 pull request,提交一些文档。他们的共享让我产生了撰写文档的动力。我没有动力为潜在的使用者提供文档。但是我把代码放在那里,有人用了,这个就让我产生了动力,因为这些使用者实实在在就在那里。

如果你很幸运的创建了一个广泛使用的项目,你将毫无疑问的被各种邮件淹没。刚开始,我相信任何人都会被这种成功冲昏头脑,认为增加的工作量不是什么大问题。但是慢慢的你会发现,这就像是第二份全职工作,然后你会想着究竟是为了什么?在开发者中的声誉并不能让你提早退休。不管怎样,这不能成为你不做开源的借口。还有,我相信 GitHut 已经改变了游戏规则。如果你的项目托管在 GitHub,当你打算停止维护这个项目的时候,会有很多人愿意 fork 你的项目,继续开发的。

我并没有因为离开自己的项目而良心不安。如果你的想法真的有价值,会有人愿意接替你的位置的。很有可能是有几个人愿意接替你,然后最强的那个生存了下来。我见到的类似的项目有 Capistrano。Jamis Buck 在2009年高调的离开了这个项目,但是我知道还是有很多人到今天还在使用它。我坚信假如你的项目真的很好,即使有一天你决定去做其他事情,这个项目也会活的很好。

我看起来不像是一个开源的好公民,过早的发布,过早的离开。如果真的是这样的话,我愿意接受批评,但在我看来事实并不是这样。

 

原文链接OSChina 编译

6 款用于创建优秀动画的免费 Flash 编辑器

1) SWF Quicker

Sothink SWF Quicker是一款功能完备简单易用的Flash动画制作软件,具有美观易用的用户界面,可以快速的制作出SWF动画,程序默认具有4个浮动的面板,通过他们你可以对所制作的电影或者动画中的属性进行任意设置,从而制作出专业水准的动画效果!

2) Minibuilder

MiniBuilder 是一个获过奖的 ActionScript 开发工具,采用 Flash 开发。

3) Flashdevelop

FlashDevelop是一款开放源代码面向Flash/ActionScript的开发IDE。

FlashDevelop 本身采用.NET开发而成,可以运行在Windows环境之中。FlashDevelop动作轻快,对应ActionScript2/3,另外支持 HTML,JavaScript,CSS等高亮显示,代码自动输入补全,IDE环境下的debug功能等。

4) Mtasc

MTASC 是第一个开源的 ActionScript 编译器。可在短时间内编译大量的 .as 文件并直接生成 swf 字节码无需依赖 Macromedia Flash 和其他工具。

5) Ming

Ming 是一个用来生成 SWF (Flash动画) 文件的C接口,同时也提供了其他语言包括 C++/Python/PHP/Ruby 的接口。

6) Ajax Animator

AJAX Animator使用了AJAX技术,提供完全标准化的、在线的、协作的、基于Web的动画开发工具包。0.2版显示了AJAX动画在RIA世界的良好潜质。

英文原文OSCHINA原创编译

10 个免费的 C/C++ 集成开发环境

集成开发环境(IDE)可以给程序员提供很大的帮助。大多数的IDE包含编译器和解释器。例如微软的 Visual Studio 本身内置的编译器和解释就是很好的例子,Eclipse 是另一个很好的例子。

鼓励程序员使用IDE的主要原因是开发软件应用程序的各个组成部分之间可方便的进行切换。一般一个特定的IDE是负责处理一种编程语言,但也有一些支持多种编程语言的 IDE,例如 NetBeans,Microsoft Visual Studio,MyEclipse,WinDev和Xcode等等。

IDE 的宗旨是提供了一个强大和易于使用的用于创作,修改,编译,部署,调试软件,并增加开发人员的生产力的环境。

今天,我们将为程序员分享一些最好的C和C++的免费IDE。

1) Codeblocks

Code::Blocks (codeblocks)是一个开源、免费、跨平台的c++ IDE。官方网站上称其能满足最苛刻的用户的需求。虽有点夸张,但既然敢这样说,也说明它的功能肯定不差。可扩展插件,有插件向导功能,让你很方便的创建 自己的插件。Code::Blocks是用c++编写的(用wxWidgets库),捆绑了MinGW编译器。

2) kDevelop

KDevelop-Project诞生于1998年,其目的是为KDE提供一个易用的集成开发环境(Integrated Development Environment)。此后,KDevelop IDE采用GPL进行发布, 它支持很多 程序设计语言.

3) Pellesc

Pelles C是一款windows下的C IDE,支持调试,且为免费。
它有一个高效率的链接器,目前已被广泛采用为各种语言的后台链接器使用LCC作为编译器
并且完整支持win32编程,支持任何API调用,包含所有winAPI的库且含有完整 C Runtime Library。

4) Anjuta

Anjuta是一个C/C++ IDE,它最大的特色是灵活,同时打开多个文件,内嵌代码级的调试器(调用gdb),应用程序向导(Application widzards)可以方便的帮助你创建GNOME程序而不需要你自己写一些与你兴趣无关的代码。

5) Bloodshed

Dev-C++是一个Windows下的C和C++程序的集成开发环境。它使用MingW32/GCC编 译器,遵循C/C++标准。开发环境包括多页面窗 口、工程编辑器以及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,能 够适合初学者与编程高手的不同需求,是学习C或C++的首选开发工具!多国语言版中包含简繁体中文语言界面及技巧提示,还有英语、俄语、法语、德语、意大 利语等二十多个国家和地区语言提供选择。

6) Eclipse CDT

Eclipse CDT 是 Eclipse 插件,它将把 Eclipse 转换为功能强大的 C/C++ IDE。它被设计为将 Java 开发人员喜爱的许多 Eclipse 优秀功能提供给 C/C++ 开发人员,例如项目管理、集成调试、类向导、自动构建、语法着色和代码完成。当 Eclipse 被用作 Java IDE 时,它将利用 JDK 并与之集成。同样地,CDT 将利用标准的 C/C++ 工具并与之集成,例如 g++、make 和 GDB。这使得 CDT 在 Linux 中变得非常流行,这些工具都可在 Linux 中使用并用于大多数 C++ 开发。可以在 Windows 上设置 CDT 以使用相同的工具。

7) Visual Mingw

Visual-MinGW 是一个专门为MinGW所设计的IDE。如果,你曾经用过VC++ 6.0这个IDE,你的第一感觉就是,Visual-MinGW和VC++ 6.0非常相似。所以,对于曾经用惯VC的朋友们来说,Visual-MinGW不失是一个好的选择。然而,Visual-MinGW的开发与更新似乎并 不积极。因此,还有不足的地方。Visual-MinGW的理念是提供一个高效的,快速的创建代码的IDE。

8) Ecere

eCere,一门“新”的编程语言,以下简称为“eC”。

eC,是一位加拿大人jerome历时十二年开发的一门编译型编程语言,拥有C++项目的性能、Java的跨平台性以及Python语法的简洁性。 不似Object C、C++和C#,eC更像是一个C语言的Shell,他将程序员与C之间的复杂性隔离开来,还有就是他在跨平台支持方面要更优越一些。eC不仅给传统的 C语言引入了完整的OO编程实现,其真正强大之处在于作者目前所实现的C库,包括一个内建的3D引擎实现(支持Direct3D和 OpenGL)和一套接近于VB的GUI库实现以及对网络编程的支持。

9) Relo

Relo是一个帮助开发人员研究大型代码库的好工具,它能够一步步的跟踪你所展开的代码包,并快速生成类似UML的类图。

10) Ultimate++

U++是一个开源的跨平台C++ RAD平台,作者从98年就开始开发,到今年持续了十一年了。U++一直都是一个非常非常小众的开发平台,几乎没什么人用,与当今火红的几个开源C++ Framewrok比如wxwidgets, QT等相比,它实在是被人冷落的可以。换做旁人早就歇菜了,在SourceForge上搜一下,能搜出一堆半路夭折的C++Framework。而U++ 却仍在不断的开发中,可算是特立独行。

英文原文OSCHINA原创编译

12 款优秀的 JavaScript MVC 框架评估

在最近的几个月中,作者(Gordon L.Hempton)一直在寻求哪种MVC框架最为完美,他将目前能获取到的所有框架都粗略地试了试,然后在文章中列出了每一种框架的情况概要,在文末分享了作者经过对比之后最终的推荐产品。

首先要特别说明一下,作者认为以下四个功能是十分重要的:

  • UI Bindings(UI绑定):作者想说的不仅仅是模板,而是想谈一种在底层模型出现变化时,视图层能够自动相应地更新的陈述性方法。一旦您用过了支持UI Binding的框架(例如Flex)就很难放手回头了。
  • Composed Views(模块化视图):与所有的软件开发者一样,作者也喜欢编写模块化、可重用的代码。基于这样的原因,当给UI编程的时候,作者喜欢使用视图的方法来创作(个人更偏好在模板层时使用),当然这样也就需要拥有足够丰富的视图组件来支持。关于这一点有一个可重用的页面小工具的范例。
  • Web Presentation Layer(web表示层):我们是在为web编写程序,最不想要的就是Native风格的小工具;但是也没有什么理由来为一个web框架来创建它自己的布局管理器。HTML和CSS是目前解决样式与布局的最好的方法,他们被这样应用着,框架也应该以这一点为核心。
  • Play Nicely With Others(兼容,友好):不得不承认,jQuery是十分犀利的。作者不喜欢那种绑定着一个sub-par jQuery副本的框架,而直接推荐使用jQuery的那种框架才是作者需要的。

候选方案

下面这个表格列出了12个框架对于上述几种特性的支持关系,在后面的部分会详细叙述,您也可以在之后的文章中点击相应的链接来获取更多的信息。

1.  Backbone.js

Backbone.js是web最火的框架,如果不了解它将寸步难行,众多知名品牌均支持该框架,令人印象深刻,自然地成为作者最先进行尝试的框架。作者用它来建造了一个Group Talent内部用行政管理方面功能的feature应用。

优点:强大的社区,还有大量的实力支持。例如它本身就较多地使用了Underscore.js(也是一个强大的框架)。

缺点:抽象功能不够强,以及一些需要的功能还没实现。整个框架十分轻量级,产出的结果是一大堆引用文件和样板:而且应用的规模越大这一点就会越明显。

2.  SproutCore 1.x

SproutCore最开始是苹果公司用于其iCloud上面的。除了名字起得很不好之外,它实际上是一个非常优秀的框架,也是最大的框架之一。

优点:支持绑定,忠实的社区粉丝,优秀的feature很多。

缺点:过于死板,难以去除无用的feature,强制使用一种Native风格的范例,严重的问题在于该框架不允许使用HTML来做布局。

3.  Sammy.js

Sammy是作者偶然发现的一个比较小的框架,因为它太简化了,基本不能占据列表的席位。其核心feature是一个路由系统,让应用与AJAX进行交换。

优点:简单的学习曲线,与服务器端的app集成更加容易。

缺点:太过于简单,对于大型应用就有些捉襟见肘。

4.  Spine.js

器如其名,Spine显然是受到Backbone的强烈影响,像Backbone一样也是一个非常轻量级的框架,遵循相似的模型。

优点:轻量级,文档做得很好。

缺点:从根本上就有缺陷。Spine的一个核心概念是“一个坚果外壳中的一堆异步的UI集,这意味着UI应该是在理想化条件下永远不会阻塞的”。而做了一系列的非阻塞式实时应用之后,作者可以说这简直是不现实的,除非后端是像Operational Transformation之类的。

5.  Cappuccino

Cappuccino是一款更加独特的框架,自带编程语言Objective-J,还能尝试着在浏览器中仿真Cocoa。

优点:大型的构想出的框架,良好的社区环境,强大的继承模型。

缺点:在您所有能用Javascript仿真的语言之外,Objective-C是作者最不想选用的。它起源一位iOS开发人员,作者到现在还没想明白用浏览器编写Objective-J是什么意思。

6.  Knockout.js

K.O.是一个MVVM框架,受到其支持者的大量好评。它强调陈述式UI绑定和自动UI刷新。

优点:支持绑定,文档做得出色,引导系统超级赞。

缺点:绑定语法晦涩,缺乏坚实的视图组件层次结构。作者希望能够轻松地重用组件,也觉得定义成一个MVVM框架是有害的。这些框架中基本没有MVC,但都是(MVP,MVVM之类的)的变种。

7.  Javascript MVC

作者的兴趣是充分地披露各种框架,对Js MVC并没有花太多时间来评估。

优点:坚实的社区基础和积累。

缺点:基于Strings的继承模型很尴尬,控制器太接近视图又缺乏绑定机制。命名方式太不受保护了,相当于这样的情况:如果RoR可以说是“Rudy web Framework”的简写。

8.  Google Web Toolkit

GWT是一系列的客户端工具包,除了框架之外还包含很多其他工具。它可以把java语言编译成Javascript,支持标准Java库的一个子集,最初是Google公司使用在Wave上面的。

优点:综合宽泛的框架,拥有强大的社区支持。基于Java的坚实组件继承模型,在巨型客户端应用上表现出色。

缺点:除了Google说的之外,GWT将经不住时间的检验。就好像最初DART那样,很明显Java不是web的未来。更严重的是,客户端对于Java的抽象有一点不合适。

9.  Google Closure

如果说Google Closure仅仅是一个js框架,倒不如说更像是一个工具包。附带编译器和优化器。

优点:由Google用在其很多主流app上面。良好的基于组件的UI编写系统。

缺点:不支持UI绑定。

10.  Ember.js

Ember(之前是SproutCore 2.0)是竞争者中的新丁。它是一个尝试:从SproutCore2.0中抽取分离其核心feature并转变成为一个更加紧凑的模型框架,更加适合web。

优点:特别丰富的模板系统,拥有可编写的视图和UI绑定。

缺点:由于太新,文档跟不上。

11.  Angular.js

Angular是在作者发布评估结果之后才发现的一个很好的框架,由Googler开发,包含了很多有趣的设计选择。

优点:关于模板的范围和控制器的设计考虑的很周到。具有依赖注入系统(作者本人是一个iOS粉丝)。支持丰富的UI绑定语法,从而使得过滤和转换这样的工作开销很小。

缺点:代码库很不健全,也不够模块化。视图也不够模块化(关于这点在Batman.js的缺陷中讨论的更加细致)

12.  Batman.js

Batman由Shopify创作,是另一款与Knockout和Angular具有相似脉络的框架。Batman拥有良好的UI绑定系统,是基 于HTML属性的。Batman是唯一的一款使用惯用语法Coffeescript编写的框架,并且紧密地与NODE.Js集成在一起,甚至可以到拥有其 (可选的)Node.js服务器的程度。

优点:代码库十分清晰,绑定方法优良又简单,耐用,流程化。

缺点:作者非常不喜欢这种“独行侠”式的作风,更不用说这种加强单一控制器的主意了。与Knockout和Angular一样,在组件嵌套的时候 遭受同样的折磨。作者需要的不仅仅是模板,还更想要陈述式的可重用的模板框架。相比,Ember在框架之上拥有的是一个基于EMBER他们自己的逻辑(可 能是在控制器层上的)的整套组件能陈述式重用的方法。

赢家

最终,Ember.js是能满足作者全部需求的唯一一款框架。最近作者将一个小的Backbone应用转换成了Ember来实验,除了一些性能方面的小问题之外,作者对于产生的代码库更为欣慰。由Yehuda Katz支持,整个围绕Ember.js技术讨论社区也十分奇妙:这一定会是一个值得期待的好框架。

当然这个列表还是不够全面。几乎所有这些框架都被发现被人骂得臭名昭著体无完肤,或者被Hacker News点名。

你用的MVC框架是哪一款呢?

原文:The Top 10 Javascript MVC Frameworks Reviewed

来自: Web App Trend