Browsed by
分类: 编程语言

编程语言流行度

编程语言流行度

下面是一个关于编程语言流行度的图(以前本站也有一篇编程语言流行度的文章)。其X轴是从Github中取来的数据(项目数),而Y轴是从StackOverflow取来的(tag数)。注意:Github提供了语言流行度:https://github.com/languages,而本图的原始数据在这里

编程语言流行度(点击看大图)

来源:http://www.dataists.com/2010/12/ranking-the-popularity-of-programming-langauges/

好烂啊有点差凑合看看还不错很精彩 (9 人打了分,平均分: 3.00 )
Loading...
Groovy是怎么实现createArray的

Groovy是怎么实现createArray的

Groovy是一个基于 Java虚拟机的敏捷 动态语言。构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征。为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。在以前的酷壳的五大基于JVM的脚本语言中也介绍过它。

下面,让我们看看他的一个createArray的实现,请大家前去围观下面的Groovy的trunk上的源码吧。真是很好很强大。

http://svn.codehaus.org/groovy/trunk/groovy/groovy-core/src/main/org/codehaus/groovy/runtime/ArrayUtil.java

这里摘上前几个createArray重载函数让大家看看,(一共有250个重载函数)

public class ArrayUtil {
    ... ...
    ... ...
 public static Object[] createArray(Object arg0, Object arg1) {
 return new Object[]{
 arg0, arg1};
 }

 public static Object[] createArray(Object arg0, Object arg1, Object arg2) {
 return new Object[]{
 arg0, arg1, arg2};
 }

 public static Object[] createArray(Object arg0, Object arg1, Object arg2, Object arg3) {
 return new Object[]{
 arg0, arg1, arg2, arg3};
 }

 public static Object[] createArray(Object arg0, Object arg1, Object arg2, Object arg3, Object arg4) {
 return new Object[]{
 arg0, arg1, arg2, arg3, arg4};
 }

 public static Object[] createArray(Object arg0, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) {
 return new Object[]{
 arg0, arg1, arg2, arg3, arg4, arg5};
 }
 ... ...
 ... ...
} 

这里给了一些解释

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 3.25 )
Loading...
JDK里的设计模式

JDK里的设计模式

下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:
http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns

Structural(结构模式)

Adapter:
把一个接口或是类变成另外一种。

  • java.util.Arrays#asList()
  • javax.swing.JTable(TableModel)
  • java.io.InputStreamReader(InputStream)
  • java.io.OutputStreamWriter(OutputStream)
  • javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
  • javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()

Bridge:
把抽象和实现解藕,于是接口和实现可在完全独立开来。

  • AWT (提供了抽象层映射于实际的操作系统)
  • JDBC

Composite:
让使用者把单独的对象和组合对象混用。

  • javax.swing.JComponent#add(Component)
  • java.awt.Container#add(Component)
  • java.util.Map#putAll(Map)
  • java.util.List#addAll(Collection)
  • java.util.Set#addAll(Collection)

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (14 人打了分,平均分: 3.50 )
Loading...
几个在线颜色选择器

几个在线颜色选择器

下面是一些在线的颜色配色方案,也许可以为你的Web配色方面提供一些参考。还有一些非常有意思的杂项资源你也可以去看看。

好烂啊有点差凑合看看还不错很精彩 (9 人打了分,平均分: 3.22 )
Loading...
C++的字符串格式化库

C++的字符串格式化库

这里向大家介绍一个C++的字符串格式化库,叫cpptempl,这个库支持对字符串格式的条件,循环,变量插入。看上去很不错,只不过其是基于boost库的。

下面是一个例子:

// The text template
wstring text = L"I heart {$place}!" ;
// Data to feed the template engine
cpptempl::data_map data ;
// {$place} => Okinawa
data[L"place"] = cpptempl::make_data(L"Okinawa");
// parse the template with the supplied data dictionary
wstring result = cpptempl::parse(text, data) ;

输出结果是:

I heart Okinawa!

是不是很方便?让我们看一个更复杂的例子:

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (10 人打了分,平均分: 3.70 )
Loading...
30+ Web下拉菜单

30+ Web下拉菜单

以前给大家介绍过13个不错的Javascript和CSS的菜单20个优秀的Javascript导航技术30种时尚的CSS网站导航条,今天在网上看到一篇文章其收集了30多个下拉菜单(分为两类,jQuery和CSS+Javascript的),转过来。

原文:http://smashinghub.com/3-useful-drop-down-menu-scripts-to-enhance-header-navigation.htm

jQuery

Smooth Navigation Menu

Drop Down Menu Scripts 5 30+ Useful Drop Down Menu Scripts To Enhance Header Navigation

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 2.71 )
Loading...
Javascript向量图Lib–Raphaël

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。

下面,让我们来看几个示例:

下面是一个图形变化的示例,点击两个图形间的箭头。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (13 人打了分,平均分: 4.00 )
Loading...
编程语言进化

编程语言进化

以前本站发布过《编程语言时间地理图》、《计算机编程简史图》,下面是两张关于编程语言的进化图。

第一张是比较宏观的,来源在这里,虽然是去年的,但还是比较不错的,其把计算机编程语言分成了五个时代——

  • 语言诞生。1940年代。第一个语言应该是:Ada Lovelace,
  • 编译器时代。1950年代。这个时代的代表语言是:Fortran, LISP, 和 COBOL,编程语言开始引入编译器优化技术。
  • 模式时代。1960年代-1970年代。这个时代是编程语言最重大的变革。在这个时代,所有人都在思考如何让设计一个好的编程语言以让编程更简单。面向对象也因为Simula而出现,而Smalltalk成了第一个纯动态类型的语言,C/C++、Pascal和SQL也是这个时代出现的,而第一个功能性/函数式语言ML也是这个时代出现的。所以说,这个时代是一个百花齐放的时代。而1980年代并没有太多的创新的东西,而只是对70年代出现的那些语言优化和发展的时期,如:1979年发明的C++语言。
  • 生产力时代。1990年代以来主要是如何增进编程生产率的时代,这个时代出现了很多framework,代码库,以及快速开发的IDE,很多公司都在这个时期致力于这些增进生率的工作,如:delphi, power builder, MFC,boost等等。但最重要的还是因为引入了虚拟机——WORA(Write Once, Run Anywhere),JVM 是这方面的代表作。之后的.NET整出来的那些东西都是。今天的JPython, JRuby等都是为整合开发效率和维护效率。参看《基于JVM的语言正在开始流行
  • 后现代。未来的编程语言要走向何方,我不太清楚,不过,大家可以看看本站的这几篇文章:《五个编程语言设计的失误》、《C++和JAVA传统中积极的一面

下面是一张大图,让你看看整个编程语言的进代图。(点击看大图)

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (9 人打了分,平均分: 3.56 )
Loading...
Google未公开API:转MAC地址为经纬度

Google未公开API:转MAC地址为经纬度

这里有一个POC(Proof of Concept)可以通过你Web浏览器后面的路由器XSS攻击得到一个准确的GPS坐标。注意:路由器和Web浏览器以及IP地址并不包含任和地理信息。其方法是使用了一个Google未公开的API。大约方法如下:

  1. 访问一个网页,这个网页隐藏了一个基于你WiFi路由器的XSS( 参见: XSS  Verizon FiOS router
  2. 通过这个XSS 可以获得路由器的MAC 地址。
  3. 然后通过 Google Location Services我们可以把这个MAC地址映射到GPS坐标。Googel的这个服务是基于HTTP的服务。这并不是一个Google正式发布的API,而是通过 Firefox’s Location-Aware Browsing 发现的。

演示地点在这里:http://samy.pl/mapxss/

我试了一下,无论无线和有线都可以准确定位我的位置。很强大,你也试试看。

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 3.29 )
Loading...