分类 未分类 下的文章

原来WS2811就是IC, 而不是像WS2812B一样是灯珠外观. 同样是Worldsemi的产品. Worldsemi公司名字叫做东莞市华彩威科技有限公司.
UCS1903是深圳联芯科的景观亮化IC. 深圳联芯科以前是苏州联芯科, 不知为何苏州的公司在2019年注销了.
还有支持所谓DMX512(基于RS485)协议的IC. DMX512协议是一种流行的舞台灯光控制协议.

参考: https://www.zhihu.com/question/26246195

  • ArrayBuffer实际上是一段内存, 以字节计数, 不能直接操作, 要操作必须通过视图.
  • 视图有Uint8Array, Uint16Array等等一系列的称之为类型化数组的视图(TypedArray), 也有DataView视图, 有视图以后, 就可以按对应的视图形态去操作内存了.
  • Buffer是node.js中独有的, 在浏览器和ES标准中并没有, 其约等于Uint8Array

事实上Web上的实时双向协议只有WebSocket, 所以MQTT并不能通过原MQTT协议直联, 需要Over WebSocket.
MQTT的端口是1833, 而ws的端口是80, wss(ws over SSL)的端口是443, 那么RabbitMQ的MQTT over WebSocket的端口是多少? 答案是特定端口15675,地址是ws://hostaddress:15675/ws, 至于wss, 除了端口改为15676外,还需要很多配置, cert/key/password等等.
RabbitMQ 上设置和连接的方式

在linux上同时安装mosquitto和rabbitmq会冲突. 如果mosquitto的服务已经启动, 则rabbitmq可能无法启动.
查看服务状态:

systemctl status mosquitto.service
systemctl status rabbitmq-server.service

关闭mosquitto, 重新启动rabbitmq服务:

 sudo service mosquitto stop
sudo service rabbitmq-server restart

现代城市人为啥一过节就疯了一样出去玩?因为日复一日的枯燥平淡,从感觉到情绪都不起波澜。人类进化历史的大多数时间都在挨饿、被捕食者追逐、获取猎物、采集浆果中度过,哪一天都有喜怒哀惧。现代生活每天就是公交地铁打电脑,感觉和情绪都如沙漠般寸草不生孤独饥渴。电影、网剧、旅游、以至于现在流行的密室,给现代人的感觉和情绪刺激就像沙漠中的水一样,不是可有可无,而是刚需。
现代人精神疾病的增多大概也是因为如此吧。

最终还是要靠FastLED啊, 直接做好了Nodemcu的兼容.
FastLED的文档写得也很全面.
编译的时候有点儿问题, 不知道影响不影响.

In file included from D:\r\arduino\test2\FastLED_Blink\FastLED_Blink.ino:2:0:

C:\Program Files (x86)\Arduino\libraries\FastLED\src/FastLED.h:14:21: note: #pragma message: FastLED version 3.004.000

 #    pragma message "FastLED version 3.004.000"

                     ^

In file included from C:\Program Files (x86)\Arduino\libraries\FastLED\src/FastLED.h:65:0,

                 from D:\r\arduino\test2\FastLED_Blink\FastLED_Blink.ino:2:

C:\Program Files (x86)\Arduino\libraries\FastLED\src/fastspi.h:140:23: note: #pragma message: No hardware SPI pins defined.  All SPI access will default to bitbanged output

 #      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"

                       ^

Executable segment sizes:


IROM   : 230192          - code in flash         (default or ICACHE_FLASH_ATTR) 


IRAM   : 27012   / 32768 - code in IRAM          (ICACHE_RAM_ATTR, ISRs...) 


DATA   : 1248  )         - initialized variables (global, static) in RAM/HEAP 


RODATA : 692   ) / 81920 - constants             (global, static) in RAM/HEAP 


BSS    : 25000 )         - zeroed variables      (global, static) in RAM/HEAP 


项目使用了 259144 字节,占用了 (24%) 程序存储空间。最大为 1044464 字节。
全局变量使用了26940字节,(32%)的动态内存,余留54980字节局部变量。最大为81920字节。

除了宗教和神棍, 现代人类其实创建了很多事物用于预测. 其中最准确的预测还是要回到数据上来.
对于经济的预测, 人类创造的就是金融证券市场. 似乎哪儿说的, 股市对经济有4~6个月的预测提前期.
金融证券, 股市期货事实上是把投资者的分析结果, 量化为股票和期货的价格, 从而形成对经济的量化的预测.
目前看到人类基因组学, 宏基因组学等逐渐从实验室转向了键盘上的数据分析, 以实现对人类健康的精确预测.
人类基因组是3T的数据, 肠道微生物宏基因组是3T*10K的动态变化数据, 这些数据量无疑及其庞大的. 如何发分析, 如何用大数据分析, 机器学习分析, 人工智能分析, 可能是人类健康预测的发展方向.
更不用说天气预报基于了更多的数据进行预测, 使用超级计算机运算才得出几乎很准确的预测结果了.
精准的数据量化分析, 运用各种工具, 提出新的指标, 是经济金融预测, 健康预测未来的发展方向, 也可能是其他需要预测的学科的发展方向.

Creator 版本6.0.1

2024/1/8 在最新的文档中介绍了对目标的选择和目标选择器的使用
https://documents.laiye.com/rpa-guide/docs/DevGuideD1/Chapt3-Target
直接用命令里的获取目标只适合目标的名称不会变化的. 如果目标的名称会变, 就只能用目标选择器去拆解目标.
按官方文章给出的方法, 可变目标名称一个是将aaname改为*, 但会增加错选的概率. 另一个是通过目标选择器(UI分析器)选择上级的不变目标, 再用获取子元素的命令获取子元素, 再从子元素中找到想要的目标.

Creator 研究版本: 5.5.0

对Chrome浏览器的选择

鼠标点击目标为例,

一个典型的选择器

  {
    wnd: [
      { cls: "Chrome_WidgetWin_1", title: "*", app: "chrome" },
      { cls: "Chrome_RenderWidgetHostHWND", title: "Chrome Legacy Window" },
    ],
    html: [{ tag: "SPAN", parentid: "body", aaname: "idarc", idx: 0 }],
  }

wnd应为window的缩写, 对于Chrome的窗口的选择代码死树是固定的.
html因为对具体页面的选择.
tag: 为选择文本的标签名
parentid: 上级中最近一个有id的标签的id. 这儿正好是body, 但不是指body标签.
aaname: 标签内的文字. 不加通配符是需要精确匹配的. 另外试过是支持*?通配符, 用法和正则一样. 其他正则符号似乎就不支持了.
idx: index的简称, 在parentid的标签内可能有出现了多个tag, 其中的文字也是相同的, 这个idx是第几个的意思. 从0开始计数.
如果tag能定位, 则不需要parentid, 其他的键也类似.

点击table内的一个单元格

    html: [
      { tag: "TABLE", parentid: "J_Reviews" },
      { tag: "TD", tableRow: "2", tableCol: "3" },
    ]

html数组中的值是依次缩小搜索范围的.
定位某一个单元格TD, 出现了两个新的键名: tableRowtableCol, 分别是行数和列数. 这儿注意, 行数和列数是从1开始数的.

点击一个图片

    html: [
      {
        tag: "IMG",
        parentid: "J_Reviews",
        "css-selector":
          "body>div>div>div>div>div>div>div>div>div>div>table>tbody>tr>td>div>div>div>ul>li>img",
        src:
          "//img.alicdn.com/bao/uploaded/i4/O1CN012qd0b21L8NLDRJi8f_!!0-rat*",
      },
    ]

这儿出现了另两个新键名:
css-selector: css选择器. 但是这个里面没有出现id和class的选择器. 试了一下, class选择器.似乎是不支持的.
src: 可以写入src. 其中似乎可以使用*通配符.

内嵌与chrome中的目标选择器JSON生成工具

参考: https://zhuanlan.zhihu.com/p/90916040?from_voters_page=true
位置在F12->Elements,然后点击中间Styles菜单行最后的>>,选择UiBot.
用Chrome自己的选择器选择目标后, 再点击Uibot中的生成选择器生成选择器(CSS selector)生成选择器JSON代码.
普通选择器样式:

{
    "html": {
        "tagName": "P",
        "attrMap": {
            "tag": "P",
            "isleaf": "1"
        },
        "index": 24
    },
    "wnd": [
        {
            "app": "chrome",
            "cls": "Chrome_WidgetWin_1",
            "title": "*"
        },
        {
            "cls": "Chrome_RenderWidgetHostHWND",
            "title": "Chrome Legacy Window"
        }
    ]
}

CSS选择器样式:

{
    "html": {
        "tagName": "p",
        "attrMap": {
            "css-selector": "body>div>div>main>div>article>div>div>p"
        },
        "index": 34
    },
    "wnd": [
        {
            "app": "chrome",
            "cls": "Chrome_WidgetWin_1",
            "title": "*"
        },
        {
            "cls": "Chrome_RenderWidgetHostHWND",
            "title": "Chrome Legacy Window"
        }
    ]
}