js

js

ajax-hook.js 剖析

问题 今天某群里有人提了这样一个问题 就是在chrome调试器明明打印出来了xhr,能看到response的值,而在代码里面直接打印response却看不见这个值 结论 直接上结论,console.log打印的是xhr的引用,也就是说,open在打印的时候,xhr其实是对的,xhr.response也确实是空字符串的。但是后来请求完毕过后,xhr.response这个值被修改了,接着才是点开chrome dev-tool里面的XMLHttpRequest,所以这时候才能看到response,产生了一种错觉。 ajax-hook.js 发现这个库代码写得十分简洁 这里是demo代码 hookAjax({ onreadystatechange:function(xhr){ console.log("onreadystatechange called: %O",xhr) //return true }, onload:function(xhr){

By chainhelen

js

write 闲谈

问题 今天项目遇到一个问题,简化一下问题。多个client连接经过一些事件触发传输数据给main,main程序本身维护着多个server连接,其中一个server可能对应多个client。将数据写入server,一开始怀疑会不会数据混在一起的问题。后来明白了不会,驱动程序底层都是同步处理,在一次操作内连续输出,不被其它线程插入数据。 先来测一把: //client.js "use strict" let net = require('net'); let stream = net.connect('/tmp/test'); let a = ""; let N = 2; for(let i = 0;i < N;i++){ a+="

By chainhelen

js

js 四则运算解释器

流程 词法分析 这里不讲那么复杂的正则表达式、DFA和NFA(后面的blog再介绍),或者各种证明啥的. 毕竟我们只需要写一个四则运算的解析器 我们的要写的东西,会不断地匹配输入的每一个字符流 而我们输入的字符流类型分为几种: '+', '-', '*', '/'和数字 将其转化为token流,由于js动态语言的灵活和我们程序很简单 我们只需要用变量token就可以存下来字符流的信息,无需为token定义一个复杂的类 详见next()函数中,对每一个类型的取值   语法分析 BNF范式 先讲一下,BNF范式 BNF是描述编程语言的文法。自然语言存在不同程度的二义性。 这种模糊、不确定的方式无法精确定义一门程序设计语言,必须设计一种准确无误地描述程序设计语言的语法结构,这种严谨、简洁、易读的形式规则描述的语言结构模型称为文法 比方说,具体看一下BNF对应的一些产生式 左侧都是些非终止符,右侧可以是终止符(对应词法里面的符号流)和非终止符的结合 例如上叙非终止符B是由"y"字符构成的,C由两种方式中的一种构成

By chainhelen

js

js 鼠标拖动画矩形

业务需要扫描一些图形点 目录结构 main.html |-- img |- main.png js |- jquery.js - main.js 效果图 居中 首先居中,直接margin:0 auto,没有居中,查看了一下box模型,发现margin都是没有值的。所以给它加了个display: block <canvas width="900px" height="300px" style="display:block;margin:0 auto"> 您的浏览器不支持canvas标签。 </canvas> canvas点击事件 引用:"由于事件只能达到Canvas元素这一层,

By chainhelen