tech_post
tech_post copied to clipboard
record the technique and thinking when I am coding and learning
##### Writable Streams > Writable streams are an abstraction for a destination to which data is written. 可写流是对数据被写入(的地方)的抽象 >Examples of Writable streams include: + HTTP requests, on the client +...
### npm最佳实践 ---- 在Node.js大规模应用系列中,我们写了一系列的文章,着重关注大规模应用Node的公司以及已经了解基本Node的开发者的需求。 第一章是你将学习到的是npm的最佳实践以及一些技巧,这些技巧可以帮助你在日常开发中节省很大一部分时间。 `npm install`是最常用的命令。但是npm提供了更多的命令。这篇文章你会了解到npm在你整个应用开发周期中是怎么帮助你的,从新建一个项目到开发再到部署。 #### 0 了解你的npm 在深入了解主题之前,让我们了解一些你正在使用的npm的版本信息和可用的命令。 ##### npm 版本 运行`npm --version`获取npm版本。运行`npm verion`可以得到更多的信息,包括当前包的版本,node.js的版本和openssl和v8的版本 ``` $ npm version { bleak: '1.0.4', npm: '2.15.0', ares: '1.10.1-DEV', http_parser: '2.5.2',...
- `git diff somefile` 比较working dir和暂存区域快照的差异。 - `git diff --cached somefile` 比较暂存区域的不同(add 之后)和 已经commit之后(即快照)的不同 - 若要删除版本库的文件,首先`rm file`此时处于not staged状态,然后`git rm file`(类似添加文件的git add),表示暂存了删除的动作,最后再`git commit -m`保存到快照 - `git rm --cached file`从快照中删除该文件,保留当前工作区的文件,使其成为`untracked`的状态。 - 'git...
# JSX in Depth 本文为我读《ReactJS by Example》英文书第二章的总结 - why jsx? - jsx 代码可读性更高,更简单 - 在jsx中,原生html标签为小写,自定义的React组件开头要大写 - JSX是XML-like的,这意味着必须要有结束标签,不管是``还是`` - js表达式,用{}包裹起来的表达式,大体上分为两类,一类是普通的js语句,用于求值,比较等;另一类用在JSX语句的内部,通常值是多个React元素组成的列表 ``` js render(){ return ( { {/* 下面表达式返回的是由Row元素组成的数组。这种表达式中插入注释也和普通的表达式不同 */} this.props.changeSets.map((changeSet,index)=>{ return...
关于网站的防爬
请问我应该如何判断网站是根据什么来判断阻止爬取的?又改如何针对解决? 例如我爬淘宝的详情图片的时候第一个详情页77张大图,每次都74就主动拒绝了。换了ip睡几分钟一抓还是立刻拒绝掉。
- MongoDB stores documents in collections. similar to `table` - `mongoimport --db test --collection restaurants --drop --file ~/downloads/primer-dataset.json` - If you attempt to add documents to a collection that does...
贵司2016年年会抽奖的任务分派给我了,需求如下: - 现场会有人从内部聊天工具发送祝福语,服务端提供http接口,前端取得数据进行展示,类似人人墙的效果。 - 给定参会人员抽奖名单,从中抽取一等奖,二等奖,三等奖等奖项,并展示效果。 需求看起来简单,但是经不住需求人员反反复复变更的需求啊,直到上线前一天,还否定了之前的设计,重新找人设计了图,更不用说抽奖规则之类的了。。。 接到需求之后,我认真研究了一下,具体需要注意以下几点: 1. 时效性短,应用范围窄。仅需一台电脑打开网页,展示页面,然后投放到大屏幕上,不用考虑浏览器兼容性问题; 2. 需要考虑安全性问题。后台的接口是不做任何过滤的,如果有人恶意地注入js脚本,比如弹个框什么的,阻塞页面展示,直接GG。 3. 抽奖工作在浏览器端做,应该在页面加载的时候就一次性做好,而不应等到点击按钮时再做,否则会出现卡顿的情况。 4. 对抽奖人员名单要做好去重处理,已经中过一次奖的人不能再次中奖。 我列出的技术方案如下: 1. 用Vue.js做前端MVVM框架,展示页面 2. 用lodash做列表筛选,随机选择指定的人数,作为中奖人员,且进行去重处理。 3. 用xss.js做xss过滤 4. 抽奖页面和显示中奖结果页面是两个页面,抽奖的计算是在抽奖页面,在这个页面计算后,存入localStorage里面,中奖结果页面从中取出结果并显示。 5. 祝福页面,需要定期清理已经展示过的祝福语,减少浏览器性能损耗。不过用了Vue之后,将要显示的数据和Model层双向绑定,清除过期数据只需更改代表数据的数组即可。 具体实施过程以及部分注意事项: 1. 表情包解析: -...
### `Object.create(nulll)` 和 `{}` 一样么? # 在翻看qs模块的源码的时候,看到其utils.js中有: ``` js exports.arrayToObject = function (source, options) { var obj = options.plainObjects ? Object.create(null) : {}; for (var i = 0, il =...
最近项目中遇到了这方面的问题,算是比较基础的知识吧。 前端向服务端发起请求,服务端返回一长串数据,数据是类似`a=12&b=34c=56`这样的(当然真实的数据远远比这个长且复杂),前端需要分隔出来每个数据然后再组成表单,post到另一个server上。 之前理解的post表单其实是把每个表单的name和value用`=`和`&`符号连接成字符串发送到server,那是否可以偷懒地传递,即name为a,然后值为`12&b=34&c=56...`这样的形式联结起来呢? 结果当然是不可以的。 构造一个html,内容如下 ``` ``` 通过抓包分析,第一个表单中分别填入12,34,http的body为`a=12&b=34`,若把`=12&b=34`填入第二个表单,则http的body为`a=12%26b%3D34`,可知`&`被转义为 %26,=被转义为 %3D。这种编码方式被成为 百分号编码,或url编码,用于编码url和表单数据。其实从表单的默认enctype=application/x-www-form-urlencoded 也可以看出用的是这种编码。虽然以前知道表单的enctype,但是看来还是需要融会贯通啊