分类 未分类 下的文章

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的专用源

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依赖很多, 其中tensorflow, conda, Python都是需要自己预先安装好的.
正确姿势是conda->python->tensorflow->keras.

  1. 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

  1. 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
  1. keras
    装完前面的, keras安装就简单了
pip install keras

新建个test.py文件测试一下

from keras.models import Sequential
model = Sequential()


if __name__ == '__main__':
    print("OK")

运行 python test.py看看, 不报错就说明ok.

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

第二项安装要装好多好多包....有几个还特别大... 慢慢等吧...

心静 乱弗生
内觉六感
外断七情
匆匆间须臾片刻
凝凝然回归本真

心疲 祸丛起
速而不达
急而弗能
电铃车鸣催人老
车水马龙使人憔

官方文档

乐鑫官方的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

通常要将一个数组复制,或者与另一些值连接在一起,会使用concat

a = [1,2,3]
b = a.concat() //1,2,3
c = a.concat(4,5,6)  //1,2,3,4,5,6

现在有更优雅的方式: 三个点展开数组

d = [...a, 7,8,9] //1,2,3,7,8,9

在数组内使用...可以展开另一个数组, 就好像是吧这个数组的方括号[]给去掉了一样

另外, function的成员 arguments不是真正的数组, 它没有Push/pop这些方法,但有...方法. 要转换为真正的数组,可以的方法有:

arr1 = [...arguments]
arr2 = Array.from(arguments)

  1. linux修改root密码

哦,这儿说的是比较常规的方式.
改自己密码当然是

passwd

然后输入旧密码, 新密码x2.
如果你有sudo权限,可以试着这样修改root密码:

sudo passwd root

然后输入自己的密码, root的新密码x2

  1. 删除非空目录

这时候rmdir无论如何都是用不了的, 使用

rm -rf 目录名

如果按尤瓦尔赫拉利的观点,货币只是一种故事,价值在于有多少人相信的话,那么比特币的价值也在于有多少人相信。从实际投资者到极客,到科技媒体,到金融媒体,再到大众媒体,从新媒体到电视媒体,传播面依次渐广,对信任的影响依次渐大。到无人不知的时候,影响力也就到顶了。现在传播技术已无障碍,影响传播的是小编们的新闻编制速度,和事件的重要程度。广大吃瓜群众只是手动转发一下。最终体现在新闻的数量上和不同媒体受众的数量上。事件重要度如何获知?也是看哪个层次的受众会感兴趣。如果不感兴趣,那个层次的媒体连新闻都懒得写。