Category: 编程、软件、技术

  • 学习了JavaScript中的reduce

    之前一直没有认认真真地学习JavaScript(https://en.wikipedia.org/wiki/ECMAScript),因为一直只是将它作为在Web中进行编程,进行动态效果呈现的一个辅助脚本(我用jQuery比较多,还用过一段时间的Dart)。

    这两天因为脚扭了在家里休息了几天,随手拿起《Eloquent JavaScript》就看几段,就顺手学习了一下JavaScript中的reduce。

    完整的说明在这里

    按照定义,reduce对一个数组中的每个元素进行一个类似于“累加”的操作,将其规整到一个单一值。 它的完整语法如下:

    arr.reduce(callback[, initialValue])

    而其中的callback函数,又可以最多有四个参数:

    • previousValue
    • currentValue
    • index
    • array

    我们先看一个对数组中所有元素求和的例子:

    var total = [0, 1, 2, 3].reduce(
        function(sum, current) {
            return sum+current;
        });
    // total == 6

    这是一个非常直观的例子。 计算机程序求和总是用一个循环的方式。所以,“和”会保存在一个变量中,然后顺序一个元素一个元素的相加。

    注意,由于我们没有给出initialValue,所以在第一次运行时,sum(作为previousValue)就会取数组的第一个数值0,而此时的currentValue就会是数组的第二个元素1。在这个程序中,这么做当然是没有问题的。 我们可以将这个程序等价地写作:

    var total = [0, 1, 2, 3].reduce(
        function(sum, current) {
            return sum+current;
        }, 0);
    // total == 6

    此时我们显式地给予初始值为0(求和当然是如此),得到的结果是一致的。

    第二个例子是将多维数组“压扁”成一维数组。这也可以用reduce来完成。

    var arr=[[1,2,3],[4,5],[6,1]];
    var x=arr.reduce(
      function(flat, current)
      {
        return flat.concat(current);
      }, [])
    );

    这里必须给定initialValue。

    本文收录于[go4pro.org]

  • PHP 7已经来临(一)

    PHP界最近最热门的消息就是:PHP 7已经来临!Sitepoint的Bruno适时地写了一篇文章,列出了一些资源和回顾。 我用百度搜索了一下国内的相关内容,发现相关的讨论还是非常非常少。所以觉得有必要结合我的实践,写点东西,以求推动国内的PHP7的落地。

    (more…)

  • Vagrant虚拟机中apt-get的翻墙

    用Vagrant安装虚拟机不是什么麻烦的事。这次我装了一个虚拟机后,准备用这台虚拟机学习一下HHVM。

    按照HHVM官方的文档,其实是很简单的。但是只有一个问题:HHVM的仓库地址(http://dl.hhvm.com)被墙。所以……我们只能用翻墙的方式。

    (more…)

  • BitTorrent Sync 2.0正式发布

    2013年4月份的时候,我推荐过BitTorrent Sync这个同步软件大杀器(文章链接)。当时这个软件还在很初期的阶段。

    今天,它已经正式发布了2.0。下载地址:http://www.getsync.com/platforms/desktop。还有移动版本和特殊硬件版本。

    (more…)

  • Elevate使用心得

    Elevate真的是一个很强大的英语训练软件。我已经连续每天受训达43天了。想想为了保持脑子清爽,延缓得老年痴呆的节奏,我也是蛮拼的。

    ks_93365

    (more…)

  • 解决git push时出现的https错误

    (本文收录于[go4pro.org])

    这两天更新了一点我的“任氏有无轩“站点,结果发现无论是使用命令行的git还是SourceTree,都无法push到远程repo,出现错误如下:

    Ashampoo_Snap_2014.07.26_09h38m21s_001_

    在网上查了一下,基本上都指向Windows搜索一个DLL——本例中是libcurl.dll——的路径优先问题。

    (more…)

  • PHP开发者经常会犯的另外7个错误

    本文原始链接:7 More Mistakes Commonly Made by PHP Developers。作者:Bruno Skvorc

    Thanks for Sitepoint.com authorization for translation and publication in my blog.

    本文翻译力求忠实原始文档。

    (more…)

  • Dart 1.5.3的一些变化

    Ashampoo_Snap_2014.07.15_22h13m10s_003_

    Dart是一个发展非常快速的语言。如今最新的版本是1.5.3。自从今年1月份我写了两篇关于Dart的文章()以来,Dart语言本身,尤其是我用到的Polymer部分,有了很大的变化。

    为了准备8月9日(暂定)于苏州举行的,由G4P.ccGDG Suzhou联合举办的活动,我对之前编写的Dart小程序进行了调试。本文就在这次调试中发现的变化进行一些总结。

    (more…)

  • CSS2中文版下载地址

    这两天看我的访问记录,还有人在尝试下载我多年前翻译的CSS2规范的中文版。

    由于网站改版,原来的地址已经失效。

    现在可以直接从这个地址下载: http://www.rsywx.net/download/CSS2_Chinese_TR@SOE.zip

    免责声明:这个版本的翻译还是差不多7年前完成的,目前已经不再维护。目前也没有翻译CSS 3.x的计划。

  • SOLR之初体验——第一部分

    我准备用两部分来讲述SOLR的体验。第一部分,牵涉到后端,主要是SOLR的安装、启动、数据库配置;第二部分,牵涉到前端,主要是用Solarium提供的PHP接口在PHP中进行操作。

    本篇是第一部分。

    SOLR由Apache发行,是一个源自Apache Lucene的开源、企业级、搜索引擎项目。 在Sitepoint.com的这一系列文章详细讲述了SOLR和Solarium,有兴趣的读者可以自行浏览。

    (more…)