最新

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

edb

edb 安装小记

发现神器 逆向工具ollydbg对于64位支持不好,而且只是windows下而已。发现神器edb,linux下qt编写而成。 github地址,我当前系统是xubuntu 15.04 64位系统。 安装 下载qt,qt官网地址,下载.run文件,然后./xxx.run,安装图形界面安装即可。或者 sudo apt-get install qt-sdk 下载edb源码 git clone git@github.com:eteran/edb-debugger.git 安装命令如下: $ mkdir build $ cd build $ cmake .. $ make $ ./edb 问题1 但是我在cmake ..的时候报错,如下:  没有boost头文件,安装boost完美解决

By chainhelen

nodejs generator 介绍

generator是什么 1. yield关键字可以让当前函数暂停执行并保存现场,并跳出到调用此函数的代码处继续执行。 2. 可以利用函数执行时的返回句柄的next方法回到之前暂停处继续执行 3. next执行的返回值的value即是yield关键字后面部分的表达式结果 4. 下一个next的唯一参数值可以作为yield的整体返回值,并赋值给a变量 语句出处链接 看个例子: 四个名为Ai的generator函数 function *A1(x) { let y = yield x; return y } function *A2(x) { let y = (yield) * x; return y } function *A3(x) { let y = x * (yield); return y } function *A4(x) { let y = x yield; return y;

By chainhelen

备份

ghost blog 自动备份

ghost-blog 自动备份 blog放在digitalocean上,说不定哪天忘记缴费就给停了,超出时间数据就都没了。 数据 先确定需要备份哪些数据,其实我们所需要备份的数据只有是数据库数据、主题(如果用的是默认数据库,就没有必要了) $ cd ghost/content $ du -h 200K ./data 8.0K ./apps 24K ./themes/casper/assets/fonts 12K ./themes/casper/assets/js 52K ./themes/casper/assets/css 280K ./themes/casper/assets 12K ./themes/casper/partials 336K ./themes/casper 24K ./themes/

By chainhelen

nginx

nginx 的三个基础用法

介绍 一句话:高性能的http和反向代理服务器 nginx 常用命令 nginx 启动 nginx -s reload 重启 nginx -t 配置文件是否正确 ps -ef | grep nginx 查找出nginx进程号 使用kill -9 nginx 杀死关闭 一台vps,但是希望搭建两个网站 ubuntu apt-get 安装 nginx或者源码make 三部曲安装 在/etc/nginx/nginx.confg配置里面可以看见include /etc/nginx/conf.d/conf,那么在/etc/nginx/conf.d下创建任意文件.conf来配置域名 server { listen 80;

By chainhelen

nodejs

nodejs promise介绍

promise 概念 ES6 原生支持Promise Promise是一个构造函数,包含all,reject,resolve等方法。一个Promise用来传递异步操作的消息,它代表了未来才会知道结果的事件。 本质上是一种异步编程的抽象,是返回值或者抛出exception的代理对象。它有一个then方法,任何人都可以访问then来消费这个返回值或exception的。 三种状态 promise只有三种状态,并且状态转移只能是pending -> fulfiled 或者pending -> rejected pending: 待定状态,Pormise对象刚被初始化的状态 fulfilled: 完成状态,承诺被完成的状态 rejected: 拒绝状态,承诺完成失败的状态 relosve和reject: resolve() 和 reject()是 Promise的两个闭包函数。 通常,读取一个文本,我们会这么写。 "use strict" const fs = require('fs'

By chainhelen

codeforces

自动跳转到cjb.com问题

现象 深圳这边的网络经常被劫持,比方我下载一个A,下载的内容会变成了B。之前挂上代理,就可以正常下载了。今天遇到这个问题访问codeforces自动变成访问www.cjb.com 查找原因 挂上了代理,访问了一下codeforces.com,还是一样问题。但是在国外vps上wget www.codeforces.com,看了一下index.html源码是没有问题。 先在本地Ping一下 codeforces.com $ ping codeforces.com PING codeforces.com (212.193.33.27) 56(84) bytes of data. 64 bytes from codeforces.ptr.sgu.ru (212.193.33.27): icmp_

By chainhelen