Frossky 发布的文章

社会主义的我们能否避免阶级的形成?
网易这篇报道的一组数据表明, 过去的这些年间, 社会正在形成稳定而分化严重的阶级. 90年代, 穷人花2年时间就会有约一半的时间改善自己的生活水平, 2010年代,这个几率却不到五分之一. 邓小平的理想, 是少数人先富起来, 然后带动所有人实现共同富裕.而自邓公仙逝至今, 从来只实现了前一半. 财富极度的差异造成了对财富极度的渴求和对拥有者的仇视. 小时代之类的片子能赢得票房, 霸道总裁爱上我的片子总是能受到欢迎, 另一方面, 吴京因战狼2票房过50亿, 却被网民要求为半个多月前的九寨沟地震补捐1个亿. 一个是对财富的意淫, 另一个是以公益之名对富人的仇视. 我似乎就此可以理解解放前土改时如何让农民揭竿而起, 打土豪分田地的感情了.
邓公说过, 如果没有实现共同富裕,那么改革就是失败的. 在这个时候,我似乎只能对真正的社会主义报以怀念和寄托, 却不知如何为之了. 毛也搞了一辈子的阶级斗争,也确确实实消灭了阶级, 然而经济已发展,是否阶级的形成就不可抗拒了呢?

关于流stream和pipe,又是一种新的模式,听起来有点像函数式编程,然而它主要是为了解决对象内存占用过大的问题,便于一点点地处理对象。
比较好的入门读物流手册

参考文章

Jquery对象的属性和dom对象的属性是不能相互访问的, 这时候需要相互转换.

1.jquery选择器获得的对象是jquery对象

$('div') //jq对象

  1. jquery选择器产生的数组的子元素是dom对象

$('div')[0] //dom对象

  1. 使用jquery包裹dom对象可以再次生成jquery对象

var d = $('div')[0] //dom对象
$(d) //jq对象

  1. 在jquery对象下可以继续查找, 返回jquery对象

$(d).find('ul') //jq对象

我说怎么所有的站点都支持$了?原来是 Chrome 控制台中原生支持类jQuery的选择器,也就是说你可以用$加上熟悉的css选择器来选择DOM节点,多么滴熟悉。
$(selector)返回的是满足选择条件的首个DOM元素。
剥去她伪善的外衣,其实$(selector)是原生JavaScript document.querySelector() 的封装。
同时另一个命令$$(selector)返回的是所有满足选择条件的元素的一个集合,是对document.querySelectorAll() 的封装。
但这些与jquery本身的用法还是有很大区别, 要注意的. 如果是jquery的$,默认返回所有的DOM节点的.
这些都属于Command Line API

这个工具干什么用的? 似乎是用来快速实现可视化的想法, 面向的人员那是技术和编程不那么熟悉的人. 和Arduino面向的对象类似, 语言风格也类似. 一个setup, 一个draw, 而draw本质上也是loop,只不过设定了帧率.
processing是java编写的,哦这一点和arduino也类似, 打开界面有种arduino的感觉. p5.js就是processing的JavaScript版本.

国内公司为什么很少NB的开源项目?
可能跟发展日新月异, 方向不断变动, 新任务总做不完有关. 这导致一个开源项目要么不能持续太久, 要么不能很好维护, 要么无法投入精力.

AP在定期发beacon, 是发往广播地址的,
STA在需要的时候,依次向所有信道发Probe, 称为Probe Request, 是发往广播地址的.
STA发送后等待返回. 该信道上的AP收到后会返回,称为Probe response, 是发往原STA地址的.

先放站: 代表月亮消灭bug
神箭手

昨天看文章, 去中心化的互联网已经变成了一个少数巨头垄断的中心化的网络. 任何反抗都是没用的... 数据也被当成财产禁止自由流通. 比如百度作为国内爬虫老大, 就禁止别人爬它的网页数据. 百度指数里面充满了各种加密, 数字变图片, 变验证码...
道高一尺魔高一丈, 深度学习, 神经网络, OpenCV... 计算机识图已经变成基本功. 距离破解所有图片验证码估计也已经不远了...

从汇编到Basic到C,是面向过程的黄金时代,编程的思想是:控制。
从C++到JAVA,是面向对象的黄金时代,编程的思想是:事物和分类。
从Scala、Erlang、Elixir开始,函数式编程逐渐风生水起,编程的思想是:数据处理(我们都是数据的搬运工)。
每一个新时代都会称前一个时代为“思想遗毒”,是因为前一种思想制约后一种思想的发展。现在是函数式编程称面向对象为思想遗毒的时候了,它以及它麾下的编程语言能否成就新的黄金时代呢?我们拭目以待。
当然,在这期间,脚本语言(解释性语言)也风生水起,代表作PHP、JavaScript、Python,并且将REPL变成了标配。

与有心理学学习经验的人聊天总是能被他们充满的能量所感染。而在其他场合,尤其是工作繁忙的职场上,这种能量感之微弱、罕见,跟熊猫一样。很多人的能量为空,冷冰冰藏在一面铸铁墙后面似的,感觉不到身体的温度。还有些人是满满的负能量,并且不断地让你感染这些负能量。这既是为何接触到心理学,再和现在的职场环境一做对比,立刻就能生出一种对职场环境无法排斥的厌恶感。
职场环境默认把人当成每天可以不断工作8~16小时、每周可以连续工作5~7天的机器,却忽视了人自身的生物和心理属性。正如尤瓦尔所表达的,人类从数万年前的采集者一路走来,生物属性还只适应采集者的悠闲生活,而社会要求却已经变更了好几代:农业革命的耕地种田、工业革命的工厂劳作、信息革命的坐办公室……生产力的迅速发展和同代人的贫富差异的扩大,导致社会严重倾向于竭力压缩与生产效率提升无关的、人类的自然生物活动和心理活动时间和空间。草原奔跑、林间跳跃、感受喜怒哀惧、流泪欢笑……这一切都被现代社会视作无用的内容,另一方面,有却要在游乐场、电视台、KTV、电影院创造这部分环境和感受,供人们在剩余有限的时间里去花钱获取。感觉就像美国的食品和减肥产业,先是大力宣传美味食物把人们养得肥肥的,再是大力宣传肥胖既不美也不健康,让人们购买各种减肥产品。两种相反的行为却一点是共通的,那就是花钱促进了经济发展。但对于个人来说,却几乎没有人觉察到这个荒谬可笑的悖论。更有一点是,人们不止是在《1984》里才是双重思想的,在任何时候任何社会都是这样。因此,即便是你觉察出了这一点,可是由于周围人都不认为这是悖论,那么你也会很难把自己与周围人的行为区分开来。

  1. pouchdb安装, 直接下载pouchdb.min.js或者:

    npm install pouchdb

或者加上--save

  1. pouchdb结合js使用, 在浏览器中为:
<script src="pouchdb-6.3.4.min.js"></script>

so Easy!
在node中为:

var PouchDB = require('pouchdb');

不用开服务!

  1. Pouchdb创建数据库:
var db = new PouchDB('kittens');
//创建好看看基础信息
db.info().then(function (info) {
  console.log(info);
})
  1. 调试

在chrome中可以查看indexedDB,pouchdb用它做基础数据库. node中使用levelDB做数据库. 老浏览器使用webSQL做基础数据库. 远程数据库可使用couchdb等.
可以使用如下语句开关debug打印:

PouchDB.debug.enable('*');
PouchDB.debug.disable();
  1. 增删改查

pouchdb中没有与table对应的概念(在mongodb中是collection).
row->document
column->field
primary key->'_id'
index->view
增,必须定义好_id字段才能存:

var doc = {
  "_id": "mittens",
  "name": "Mittens",
  "occupation": "kitten",
  "age": 3,
  "hobbies": [
    "playing with balls of yarn",
    "chasing laser pointers",
    "lookin' hella cute"
  ]
};
db.put(doc);

db.get('mittens').then(function (doc) {
  console.log(doc);
});
/* 输出
{
  "name": "Mittens",
  "occupation": "kitten",
  "age": 3,
  "hobbies": [
    "playing with balls of yarn",
    "chasing laser pointers",
    "lookin' hella cute"
  ],
  "_id": "mittens",
  "_rev": "1-bea5fa18e06522d12026f4aee6b15ee4" //注意这个_rev, 改的时候一定要有. 每次增/改的写操作都会变更rev.
}

*/

doc.age = 4;
doc._rev = "1-bea5fa18e06522d12026f4aee6b15ee4";
db.put(doc);

删. 不是真的删除, 而是加了一个_deleted:true的标志.

// 删法1
db.get('mydoc').then(function (doc) {
  return db.remove(doc);
});
// 删法2
db.get('mydoc').then(function (doc) {
  return db.remove(doc._id, doc._rev);
});
// 删法3
db.get('mydoc').then(function (doc) {
  doc._deleted = true;
  return db.put(doc);
});
  1. 批量操作

批量增(改删) //改只需要加入_rev,删只需要加入_deleted

db.bulkDocs([
  {
    _id: 'mittens',
    occupation: 'kitten',
    cuteness: 9.0
  },
  {
    _id: 'katie',
    occupation: 'kitten',
    cuteness: 7.0
  },
  {
    _id: 'felix',
    occupation: 'kitten',
    cuteness: 8.0
  }
]);

批量查

db.allDocs({include_docs: true});
  1. 操作附件(二级制)待补全 work with attachments

  2. 快速搜索
    要搜索除了_id以外的其他字段, 有三种方式:
    mongo query
    map/reduce query
    第三方的pouchdb-quick-search

electron以chrome为蓝本,其实应该已经包括了localStorage, indexDB这几个数据库了. 不过还是想用一个专业些的数据库, 但又不想这个数据库太复杂. mongodb, couchdb, redis, pouchdb中, 最后还是选择了pouchdb, 因为redis作为内存数据库, 持久化似乎不是专长. mongodb, couchdb都需要另外再跑个服务, 有点大了. pouchdb在script的src中可以直接引用, 或者通过require引用而不需要另起服务, 比较方便.
这有一篇文章如何为你的 Node.js 应用挑选数据库也是非常好的,简要对比了常见几种数据库及其应用方式。