php-ghost

这是什么鬼?
<?php

function getArray() {
    return array(1, 2, 3);
}

// 这样是ok的
$tmp = getArray();
$secondElement = $tmp[1];

// 这样会报错(PHP <5.4)
// PHP Parse error:  syntax error, unexpected '[&...

全篇

移动端页面中的定位

本来页面中定位是一件很单纯的事,直接调用HTML5接口就是。

navigator.geolocation.getCurrentPosition(
    function (position) {
        // ...
    },
    onerror,
    options
);

但是这可能是浏览器的原生接口中最脆弱的一个,会因为各种原因失败,会提供不了足够的信息。然而对于移动web...

全篇

在git中使用differ-cli

differ-cli 是基于nodejs的文件diff工具,相比系统/git自带diff工具,优化了排版,并进行更智能的多行逐词比较。

要替换git自带的diff,在每次git diff时自动使用differ-cli,很方便:

  1. 安装differ-cli

    npm install -g differ-cli
    
  2. 包装适用于git调用的可执行文件differ-cli-wrapper

    vi ~/bin/differ-...

全篇

MYERS的diff算法

最近想做前端js代码的增量下载,需要用到这个算法,看了一遍,为了加深理解,顺便翻译一下。

论文原文件下载: 链接(后边有的图我就忽略了,可以去pdf里边看)

以下为译文:

摘要

对于两个序列A、B,寻找其最长公共子序列的问题与寻找其最短编辑过程(从A到B)的问题一直被认为是一对对偶问题。本文证明了它们等价于在一个编辑图中找到最短/最长路径。基于这个观点,我们找到了一个简单的O(ND)时间与空间复杂度的算法...

全篇

lang

用c实现了一个语言的解释器,包括词法分析、语法分析、解释执行。

https://github.com/nighca/lang

目前没有依赖第三方库。

特点包括

  • 动态类型

  • 函数式

  • 支持闭包

  • 垃圾回收(还没完成)

语法参考了Lisp,如

(\
    ($ a 1)
    ($
        adda
        (lamda
            i
            (+ i a)
        ...

全篇

数组遍历的坑-Javascript

如果有这样一个简单的事件实现:

function MyEvent(){
    this.list = {};
}

MyEvent.prototype.bind = function(name, handler) {
    (this.list[name] = this.list[name] || []).push(handler);
};

MyEvent.prototype.unbind =...

全篇

Nireader的问题

有待解决的问题:

  • 最大的问题:重复抓取本来根据文章的链接地址检查唯一性,后来发现很奇葩的“一个”每天的三篇是同一个链接地址。于是加上文章标题,结果但凡后来修改了标题的,就会被认为是新的文章。好纠结。
  • 其次的问题:乱码本来还好,但最近发现某些频道尤其厉害,初步判断是node抓取时拼buffer前将内容自动转码导致的。应该可以解决。

有待实现的算法:

  • 对比两篇文章,判断是同一篇(更新内容)或是两篇<服务...

全篇

说说a标签的target

对我来说,a标签的target属性,是众多功能单一,一看很熟很常用,其实不是很了解的html属性之一。

大部分时候的a都不需要带target,用到的场景无非是要在新标签页/窗口中打开的链接,加一个target=”_blank”的属性。

<a href="..." target="_blank">...</a>

我觉得,其实了解到这,平时基本...

全篇

npm install —— sudo or not

此前经常遇到一个问题

npm install xxx -g

不带sudo会报权限的错误,只好每次都

sudo npm install xxx -g

但是很多人也知道,这样不是那么正确的,原因见此:http://howtonode.org/introduction-to-npm。尽管如此,一直到发现带了sudo无法安装spm包,不得不正视这个问题。当时的情形就是,不带sudo装不上,报错,权限不够;带了...

全篇

nireader的前端

nireader的项目始于五月份,迫于进度,google reader关闭之时勉强上线。未经好好思考组织的结构迅速暴露出大把问题,痛定思痛之下,开始相对很彻底的重构。直至最近才算结构基本成型,reader本身也具备一定的可用性,我自己现在就用着。

链接:

代码

nireader

(测试账号 test:123456, chrome, please)

整理最初的原则:

  1. Single-page applicatio...

全篇