MYERS的diff算法

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

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

以下为译文:

摘要

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

Full Article

lang

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

https://github.com/nighca/lang

目前没有依赖第三方库。

特点包括

  • 动态类型

  • 函数式

  • 支持闭包

  • 垃圾回收(还没完成)

语法参考了Lisp,如

(\
  ($ a 1)
  ($
    adda
    (lamda
      i
      (+ i a)
    )
  )
  ($
  …
Full Article

数组遍历的坑-Javascript

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

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

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

MyEvent.prototype.unbind = f…
Full Article

Nireader的问题

有待解决的问题:

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

有待实现的算法:

  • 对比两篇文章,判断是同一篇(更新内容)或是两篇&…

Full Article

说说a标签的target

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

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

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

我觉得,其实了解到这,平时基本上够用了。我也确实好长时间,只是知…

Full Article

nireader的前端

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

链接:

代码

nireader

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

整理最初的原则:

  1. Single-page ap…

Full Article

IE下img标签setAttribute的问题

这个问题是在测试个人信息控件的时候发现的,后台返回测试账号的头像图片url为"%I0O96S]I6X9S(66CICZ1)N.jpg"

将头像图片的src设置为该值时IE下报错,导致后续代码无法执行,控件未能渲染。

IE8、9、10下对imgsetAttribute('src', str)时,若str为非法url(如'%B'),则报错“参数无效。”

结果就是值会被设置上去。document.ge…

Full Article

想多做那就多想想

有一些带input的页面,会用js帮助将foucs设置到第一个input,如登录页面的用户名;我自己也干过这样的事,所以我知道这样的开发人员的心理(一般这么细节的地方未必是产品的需求,也许是前端自己的心血来潮),理想状态下,用户过来,焦点到第一个input去,这样甚至不用自己鼠标点击一下input,就可以直接输入,听起来很nice的“用户体验”。

事实是,当以下几种情况只要遇上一样,体验就会变得…

Full Article

SaveAs 2.0!

地址:

https://github.com/nighca/saveas

功能:

  1. 当前bucket的list,配置后在popup窗口中直接查看当前bucket中的文件列表(目前最多前100个)
  2. 文件的remove操作,popup窗口中点击文件左侧“x”号即可将该文件从bucket中删除
  3. accessKey与secretKey不会发送给远程服务器,而是一个临时的uploadToken,可以放心使用现有…
Full Article