你的能量已不足,请及时补充,以免宕机
与有心理学学习经验的人聊天总是能被他们充满的能量所感染。而在其他场合,尤其是工作繁忙的职场上,这种能量感之微弱、罕见,跟熊猫一样。很多人的能量为空,冷冰冰藏在一面铸铁墙后面似的,感觉不到身体的温度。还有些人是满满的负能量,并且不断地让你感染这些负能量。这既是为何接触到心理学,再和现在的职场环境一做对比,立刻就能生出一种对职场环境无法排斥的厌恶感。
职场环境默认把人当成每天可以不断工作8~16小时、每周可以连续工作5~7天的机器,却忽视了人自身的生物和心理属性。正如尤瓦尔所表达的,人类从数万年前的采集者一路走来,生物属性还只适应采集者的悠闲生活,而社会要求却已经变更了好几代:农业革命的耕地种田、工业革命的工厂劳作、信息革命的坐办公室……生产力的迅速发展和同代人的贫富差异的扩大,导致社会严重倾向于竭力压缩与生产效率提升无关的、人类的自然生物活动和心理活动时间和空间。草原奔跑、林间跳跃、感受喜怒哀惧、流泪欢笑……这一切都被现代社会视作无用的内容,另一方面,有却要在游乐场、电视台、KTV、电影院创造这部分环境和感受,供人们在剩余有限的时间里去花钱获取。感觉就像美国的食品和减肥产业,先是大力宣传美味食物把人们养得肥肥的,再是大力宣传肥胖既不美也不健康,让人们购买各种减肥产品。两种相反的行为却一点是共通的,那就是花钱促进了经济发展。但对于个人来说,却几乎没有人觉察到这个荒谬可笑的悖论。更有一点是,人们不止是在《1984》里才是双重思想的,在任何时候任何社会都是这样。因此,即便是你觉察出了这一点,可是由于周围人都不认为这是悖论,那么你也会很难把自己与周围人的行为区分开来。
pouchdb入门
pouchdb安装, 直接下载pouchdb.min.js或者:
npm install pouchdb
或者加上--save
- pouchdb结合js使用, 在浏览器中为:
<script src="pouchdb-6.3.4.min.js"></script>
so Easy!
在node中为:
var PouchDB = require('pouchdb');
不用开服务!
- Pouchdb创建数据库:
var db = new PouchDB('kittens');
//创建好看看基础信息
db.info().then(function (info) {
console.log(info);
})
- 调试
在chrome中可以查看indexedDB,pouchdb用它做基础数据库. node中使用levelDB做数据库. 老浏览器使用webSQL做基础数据库. 远程数据库可使用couchdb等.
可以使用如下语句开关debug打印:
PouchDB.debug.enable('*');
PouchDB.debug.disable();
- 增删改查
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);
});
- 批量操作
批量增(改删) //改只需要加入_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});
操作附件(二级制)待补全 work with attachments
快速搜索
要搜索除了_id以外的其他字段, 有三种方式:
mongo query
map/reduce query
第三方的pouchdb-quick-search
electron 数据库选择
electron以chrome为蓝本,其实应该已经包括了localStorage, indexDB这几个数据库了. 不过还是想用一个专业些的数据库, 但又不想这个数据库太复杂. mongodb, couchdb, redis, pouchdb中, 最后还是选择了pouchdb, 因为redis作为内存数据库, 持久化似乎不是专长. mongodb, couchdb都需要另外再跑个服务, 有点大了. pouchdb在script的src中可以直接引用, 或者通过require引用而不需要另起服务, 比较方便.
这有一篇文章如何为你的 Node.js 应用挑选数据库也是非常好的,简要对比了常见几种数据库及其应用方式。
关于天线的头疼事
总是跨界太大...
天线常用接头以前说过, N头,SMA, IPX头
天线增益居然是和定向性强相关的, 增益dbi是最强方向上相对于标准全向天线的增益(球形辐射, 增益为0dbi).
一般的线型/棒状天线,如果棒子垂直地面, 则是水平方向全向的, 垂直方向无辐射,就像棒子戳了个甜甜圈一样.
而强定向天线, 一般是平板或者抛物面. 其中抛物面定向性,似乎更强些. 抛物面有水平角度和垂直角度之说.
计算天线增益, 要使用所谓的弗林斯传输方程(不懂)
计算天线阻抗, 要使用所谓的史密斯阻抗圆图(不懂)
天线还有个极化方向,据说垂直极化传得更远. 垂直是相对于地面的垂直.
天线还有个驻波比, 是指有多少的功率辐射出去了没浪费. 驻波比为1是指100%都辐射了, 理想情况. 1.5是96%, 已经相当不错. 2.0是88%, 差些.
股票代码
最近有客户过来, 说自己上市公司, 上市公司和上市公司不同, 深市沪市A股B股创业板新三板...那从号码上有什么区别呢?
000xxx 深市A股
60xxxx 沪市A股
300xxx 深市创业板
400xxx,430xxx,830xxx 新三板
83、87、88开头现在为北交所代码
B股是给国外投资者交易的, 略过.
Rabbitmq web-mqtt在debian上的安装
安装前先更新rabbitmq的专用源
echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install rabbitmq-server
安装mqtt和websocket-mqtt
sudo rabbitmq-plugins enable rabbitmq_web_mqtt
sudo rabbitmq-plugins enable rabbitmq_mqtt
sudo rabbitmq-plugins enable rabbitmq_manager
访问http://127.0.0.1:15672/#/, 使用guest/guest登录, 可以GUI形式查看.
guest是默认用户, 默认只能从127.0.0.1上登录. 开放任意登录, 在/etc/rabbitmq/下新建rabbitmq.config文件. 这个文件据说是标准的erlang config形式文件. 形式如下:
[{Application1, [{Par11, Val11}, ...]},
...
{ApplicationN, [{ParN1, ValN1}, ...]}].
只是开放guest登录权限, rabbitmq.config文件如下:
[
{
rabbit, [{loopback_users, []}]
}
].
之后重启服务即可.
sudo service rabbitmq-server restart
安装keras的正确姿势
keras依赖很多, 其中tensorflow, conda, Python都是需要自己预先安装好的.
正确姿势是conda->python->tensorflow->keras.
- conda & python
conda是python环境管理器, 装conda最好是先不要装python, 装好了也还是卸载了吧, 交个conda管.
conda有两个主要版本, anaconda/miniconda,一定要装x64版本的. 可以选装python3.5版本.
安装好conda, path设置为conda目录下的Scripts, 这样就可以运行.
windows上, tensorflow只支持python3.5 x64版本, 所以创建一个python3.5的环境.
如果前面没装python3.5版本,可以用下面的命令创建:
conda install conda
conda create --name py35 python=3.5
activate py35
conda install anaconda
以上装好了conda和python3.5环境
确认一下python确实是3.5版本,64位. 运行python,进入python命令行:
(py35) C:\r\ai\kerasproj>python
Python 3.5.3 | packaged by conda-forge | (default, May 12 2017, 16:16:49) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
看到Python 3.5.x和 [MSC v.1900 64 bit (AMD64)] z
- tensorflow
给pip装一个豆瓣的源, 在home目录下(我的是/users/jac/)创建pip目录, 里面创建一个pip.ini文件, 内容如下:
[global]
index-url = https://pypi.douban.com/simple
保存后, 用conda切换到py35的源
activate py35
并安装tensorflow, 如果pip直接装不了, 可以用下面这个再试试(一个是CPU版本,一个是GPU版本)
pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.0rc1-cp35-cp35m-win_amd64.whl
pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.0rc1-cp35-cp35m-win_amd64.whl
- keras
装完前面的, keras安装就简单了
pip install keras
新建个test.py文件测试一下
from keras.models import Sequential
model = Sequential()
if __name__ == '__main__':
print("OK")
运行 python test.py看看, 不报错就说明ok.
npm换源
替代matlab的开源软件? 试试GNU的 octave
octave有着很丰富的插件, 支持windows, 并且语法上和matlab差不多
python新工具:conda
conda/anaconda有俩作用: 1. 创建一个python2.x/3.x共存的环境; 2. 下载一些pip里下不到的包,主要是科学计算的, 涉及神经网络和深度学习;
conda装好后, 默认有一个root环境, 用下面的命令可以看到:
conda env list
我的装过python2.7,所以默认的python版本也是2.7的. 现在要种tensorflow, 可是TensorFlow在windows端只在python3.5上才有,哦, 那就用conda创建一个新环境, 使用python3.5
conda create --name python35 python=3.5
记住了, 直到目前为止(2018/8/2), python3.6也不行,只有3.5 哦! 然后conda就会自动下载python3.5环境, 还包括pip等. 这个我稀饭! 然后使用如下命令切换到新的环境
activate python35
前面不需要加conda,不是conda 的子命令哦! 但在有的文章里说前面需要加source,也就是source activate python35 . 不过我的直接activate就可以了 然后安装常用包,
conda install conda
conda install anaconda
第二项安装要装好多好多包....有几个还特别大... 慢慢等吧...
静.
心静 乱弗生
内觉六感
外断七情
匆匆间须臾片刻
凝凝然回归本真
心疲 祸丛起
速而不达
急而弗能
电铃车鸣催人老
车水马龙使人憔
tensorflow在windows上不支持python2.7...醉了, 只支持python3.5
utf8格式的文本文档
utf8格式的文本文档以0xEFBBBF开头, 后面才是正式文本, 千万别搞错了.
ESPTOOL
乐鑫官方的ESPtool是python版本的, 也就是esptool.py, 不过发现arduino上面ESP兼容版用的ESPtool是一个exe版本,找了一下,发现是github上的esptool-ck
这儿放几个用法: 从app.elf转app_00000.bin, app_40000.bin.4M flash空间.
esptool -bz 4M -eo app.elf -bo app_00000.bin -bs .text -bs .data -bs .rodata -bc -ec -eo app.elf -es .irom0.text app_40000.bin -ec
上传固件到COM5, 波特率115200, 手动重启方式上传.
esptool -cp COM5 -cd none -cb 115200 -ca 0x00000 -cf 00000.bin -ca 0x40000 -cf 40000.bin
也可以这样
esptool -cp COM5 -cf 00000.bin -ca 0x40000 -cf 40000.bin
清空NodeMCU的Flash
esptool -cp /dev/ttyUSB0 -cd nodemcu -ce
上传固件到espduino/nodemcu,带比较详细一点儿的输出
esptool.exe -vv -cd nodemcu -cb 921600 -cp COM13 -ca 0x00000 -cf ./nh_fixed.bin