Frossky 发布的文章
世界猎奇
时尚
the black tape project 黑胶带项目,用胶带做衣服的时尚团体
医学
Gunther von Hagens 德国解剖学家,善于做动物和人体肌肉塑化
艺术
被剥皮的马西亚斯 提香作品,讲述的是太阳神阿波罗和森林之神玛西亚斯(Marsyas)的故事。Marsyas捡起了雅典娜丢弃的笛子,然后要和阿波罗比演奏技艺,赢了的人可以任意处置对方。阿波罗用七弦琴只能打个平手,然后阿波罗居然出老千赢了对方,为了给对方点儿颜色看看就把Marsyas挂在树上把皮给剥了。
ESP32C3 at+blufi相关文档
ESP32C3 Blufi流程介绍
ESP32C3 AT蓝牙命令
腾讯Qcloud AT指令集0
腾讯BLUFI蓝牙辅助配网文档
ESP32 AT指令设置可发现BLE设备名 && 与手机进行ble数据透传
BLUFI联网方式(动态配网)
- 先应该配置三元组
AT+TCDEVINFOSET=<tls_mode>,<product_id>,<device_name>,<device_secret>[,<product_region>]
AT+BLUFI
命令后,可以使用乐鑫官方的BLUFI APP或小程序联网- 连接后再使用动态注册命令
AT+TCDEVREG
- 使用MQTT连接命令连接即可
AT+TCMQTTCONN=<tlsmode>,<cmdtimeout>,<keepalive>,<clean_session>,<reconnect>
BLUFI APP中看不到设备名字怎么办
AT+BLEINIT=2 //BLE初始化,将模块设为server端。
AT+BLENAME="AiThinker" //设置BLENEME名并用转换器获得它的16进制数。
AT+BLEADVDATA="0201060A0941695468696E6B6572" //广播设备名称
AT+BLEADVSTART //开始广播
广播包16进制格式
由多组的不定长数据组成, 每一组的格式如下
Length | AD Type | AD Data |
---|---|---|
广播数据长度 | 广播数据类型 | 广播数据内容 |
长度是AD Type + Ad Data的长度, 因为AD Type总是1, 所以长度就是len(ad_data)+1
AD类型如下
AD Type | 含义 | 备注 |
---|---|---|
0x01 | 广播模式 | |
0x02 | 非完整的 16 bit UUID 列表 | |
0x03 | 完整的 16 bit UUID 列表 | |
0x04 | 非完整的 32 bit UUID 列表 | |
0x05 | 完整的 32 bit UUID 列表 | |
0x06 | 非完整的 128 bit UUID 列表 | |
0x07 | 完整的 128 bit UUID 列表 | |
0x08 | 缩写的设备名称 | |
0x09 | 完整的设备名称 | |
0x0A | 广播包的信号强度 | |
0x0B | ||
0x0C | ||
0x0D | ||
0x0E | ||
0x0F | ||
0x10 | ||
0x11 | 带外安全管理 | |
0x12 | (Slave)连接间隔范围 | |
0x13 | ||
0x14 | 16 bit UUID 列表 | |
0x15 | 128 bit UUID 列表 | |
0x16 | 16 bit UUID Service | 前 2 字节是 UUID,后面是 Service 的数据 |
0x17 | 公开目标地址 | |
0x18 | 随机目标地址 | |
0x19 | Appearance(外观) | |
0x1A | ||
0x1B | ||
0x1C | ||
0x1D | ||
0x1E | ||
0x1F | ||
0x20 | 32 bit UUID Service | 前 4 字节是 UUID,后面是 Service 的数据 |
0x21 | 128 bit UUID Service | 前 16 字节是 UUID,后面是 Service 的数据 |
~~~ | ||
0x29 | PB-ADV | |
0x2A | Mesh Message | |
0x2B | Mesh Beacon | |
~~~ | ||
0xFF | 厂商自定义数据 |
对照上文的蓝牙广播数据类型定义的描述,可知
02 01 06 字段设置广播模式
0A 09 41695468696E6B6572 字段表示:
0A: 此字段数据长度为10
09 :完整的设备名称
41695468696E6B6572:设备名称AiThinker的十六进制表示
2.4G天线设计
涂鸦与其他智能语音平台的交互关系
1. 涂鸦与天猫精灵
如何使用天猫精灵控制设备?
逻辑解释:
1、需要下载、注册、登录涂鸦APP
或者涂鸦OEM/白牌APP
、天猫精灵APP
;
2、在天猫精灵APP中通过技能广场
搜索涂鸦智能
,完成涂鸦智能
的账户绑定。如果手机中装了个多个涂鸦智能APP(包含OEM的),这一步会跳出来选择。
本质上来说,是涂鸦智能账户授权给天猫精灵使用。授权后,涂鸦将其账户下的设备同步给天猫精灵。天猫精灵的命令通过双方的对接传输给设备进行控制。
事实上,上面的第二步还可以搜索智能生活
或者其他OEM厂家产品的名称,都是以涂鸦的名义在天猫精灵的技能中注册的。
开发前,需要开通语音方案接入
和天猫精灵接入服务。
目前支持的有亚马逊Alexa、谷歌 Assistant、Yandex Alice、小米小爱、百度小度、小智管家(涂鸦)。
其他的语音服务有一些要付费支持,(页面)[https://www.tuya.com/vas/?from=smart],新的还有SmartThings(三星)、腾讯云小微、腾讯云叮当、京东叮咚、GiGA Genie(韩国KT)
这个页面又提供了一些其他的第三方语音平台,新的包括苹果Siri。
ESP32C3及其他ESP32系列AT固件支持QCLOUD腾讯连连的固件下载方式
在乐鑫官方的ESP32C3文档中提到了ESP32-C3-QCLOUD_AT_BIN
, 但是在文档的腾讯云 IoT AT 命令和固件页面中却没有AT固件。这儿参照从github下载临时固件的方法说明下载的方法。
双色温灯珠单面板的布线方式
首先,双色温可以布成一个单面灯带, 然后想象这个单面灯带在面板上S形排列即可
洪恩识字编故事
1
弟弟回家,看见姐姐正在画画。
姐姐的画好好看。
姐姐画了一个圆形,还画了一个正方形,还画了四个长方形。
姐姐在圆形上画了一个嘴巴,两个眼睛,两个眉毛,两个耳朵,一个鼻子,一头头发。
姐姐在正方形上画了衣服。在长方形上画了手和脚。
姐姐画了一个小人儿。小人儿是弟弟!
姐姐把画给弟弟,弟弟好开心:谢谢姐姐!
2
妈妈爱吃好吃的。妈妈想吃串串香。
妈妈去吃串串香,问姐姐和弟弟:你们要不要一起去?
姐姐和弟弟:要!要!我们要去!
去哪里吃?去民乐。
吃什么串串香?有牛肚、有羊腿、有鱼头、有玉米、有花生、有黄瓜。
还有水果吃。有什么水果?有木瓜、有山竹……
还有面包吃。妈妈、姐姐、弟弟高高兴兴出门去,吃串串香了!
3
弟弟在看书。姐姐问:你在看什么书?
弟弟在看故事书。故事书里面讲了什么故事?
有一只小鸟,有两个大耳朵。它飞着飞着,看到了太阳公公。
太阳公公不高兴,太阳公公害怕闪电。闪电要是来了,
风会吹来很多黑色的云朵,天上会下很大很大的雨,田地里会有很多很多的水,禾苗不要太多的水,禾苗会长不出米来。
太阳公公害怕,就会不见了。
小鸟去找闪电,和闪电讲,让闪电不要来。闪电说:禾苗也要水,水太多了不好,水没有也不好。
小鸟说:闪电闪电,太阳公公害怕你,禾苗不要太多水。闪电想了想说:那么下一点点雨,好不好?小鸟说好吧。
小鸟去找太阳公公,说:太阳公公,你不要害怕,闪电下一点点雨就好了,禾苗也要喝一点水。
太阳公公说,好吧,谢谢你,小鸟!
C51语言与C语言的不同,及其糟心处
C51中定义了sbit和bit, 这俩货挺糟心的.
sbit是寄存器位, 只能作为左值, 不能放在右边, 也就意味着不能作为函数形参传入, 不能作为数组的成员, 从此彻底和循环操作/公共代码抽取绝缘.
bit表现得到是像个正常变量, 可以做右值, 可以作为函数形参, 可以作为返回值, 可就是不能定义数组, 一定义就报错, 也就无缘数组的循环操作了.
灯光指标诗
原创:
零零四九双全有
蓝闪色显照谱红
指标依次是蓝光/闪烁/色温/显指/照度/光谱/红光
达到目标依次是RG0/0闪烁/夜间不高于4000K/Ra不低于95/双A(AA)级照度/全光谱/有红光成分
解析迈克尔·杰克逊《黑或白》MV
前半段MV毫无疑问是对抗种族主义、无论国籍肤色、期待世界大同的。然而后半段大多数人看不明白,包括我20年前第一次看的时候也没看懂。这儿结合一些资料和自己的理解,解读从黑豹出现开始的后半段。
6:34 黑豹出现。黑豹党(The Black Panthers)一度在美国被当做是恐怖组织,他们确实好战激进,然而他们在清除社区毒品和犯罪中取得了很大成就,最后却被CIA等组织打击。
6:37 黑豹向门口的乔治华盛顿雕像怒吼一声表达不满。乔治华盛顿是美国首任总统,却支持奴隶制,在自己的种植园蓄奴,还和一个女奴隶生了个娃。
6:43 黑豹走下楼梯。隐喻潜入社会表层以下,揭露和防抗其黑暗面。
7:00 忽然开启聚光灯,杰克逊开始跳踢踏舞。聚光灯隐喻舞台,踢踏舞起源于黑人,又被白人主义者当做是下贱的舞蹈,甚至在表演中白人涂成黑脸(即充满种族歧视的黑脸喜剧)跳踢踏舞、扮演丑角逗乐观众。忽然将黑人置于舞台上踢踏舞,是白人强加于黑人、以种族歧视娱乐白人自己的丑恶行径。
7:18 一只猫跳出来,杰克逊看了一眼就走开了。猫豹同类,前者温顺,后者狂野。隐喻不去做黑暗体制下温顺的猫咪,而是要做一只豹子反抗黑暗压迫。
7:26 杰克逊来到街道上要跳自己的舞蹈。这个街道显然是在下层人聚集的贫民窟。然而狂风大作,各种垃圾吹过来,还有一张报纸死死贴在脚下。隐喻反抗将要开始之时,各种黑暗的打击带着下作的消息扑面而来,还死死缠着你不放。然而杰克逊毫不动摇的眼神、以及随性、坚硬、畅快的舞蹈,寓意反抗白人的禁锢和嘲笑,表达黑人自己的反抗诉求。
8:40 白色3K党标志、希特勒不死(Hitler Lives)、纳粹万字标志、黑人滚回家去、不要外国移民(No More Wetbacks)……等等都被愤怒的杰克逊暴力打碎。3K党(Ku Klux Klan)是典型的白人至上主义,原称白人种族集会。希特勒迫害犹太种族也是种族主义的代表,可恨的是现在仍有人信奉。WetBacks(湿背人)原指的是墨西哥移民,他们从墨西哥泅渡美国,因此背上都是湿的,后来也泛指外国非法移民。
9:12 杰克逊标志性的捂裆动作伴随咆哮,这儿很明显一个特写并且手指缓慢向下滑动。然后他掏出方向盘砸了3K Rules(白人至上规则)。这一段舞蹈裆部拉链没拉上。到 9:25 才一下拉起来。特别直白地隐喻美国名句Fxxk you up(淦你老木),淦完以后拉上收工。在迈克尔去世后多年,3K党至今却仍然活跃,悲哀!淦你老木啊!我觉得第二层隐喻是下层人也有不被压抑享受性自由的权利,而不只是那些上层白人所独享的。
9:44 三次重复蒸汽喷往全身的镜头。杰克逊是一直信基督的,所以我暂且采信弹幕中说的这是三次洗礼:浸洗礼、注水礼、洒水礼。然后跪地朝拜、激起圣水、撕破衣物(有献祭的意思)、撒上灯红酒绿的“皇家徽章酒店”,招牌落地。Royal Arms应该是指Royal Coat of Arms,即皇家徽章,是英国的国徽。殖民主义和奴隶贩卖也正是英国带到北美这片土地的。这儿似乎意味着铲除了种族主义的根源,也才能平静的回归本性(黑豹)离开。
另外,漫威的《黑豹》也是以黑豹作为黑人领袖象征,应该并不是巧合。
参考文章:
https://www.innermichael.com/2011/05/05/black-or-white-part-iii-panther-dance/
https://en.wikipedia.org/wiki/Tap_dance
https://en.wikipedia.org/wiki/Wetback_(slur)
https://baike.baidu.com/item/%E5%9C%A3%E6%B4%97%E7%A4%BC%E4%BB%AA/20386854?fr=aladdin
https://baike.baidu.com/item/%E8%8B%B1%E5%9B%BD%E7%9A%87%E5%AE%B6%E5%BE%BD%E7%AB%A0/5032952?fr=aladdin
自动化代码审查工具
今天看到新闻说代码审查也可以自动化,搜索了一下确实还有不少工具。
https://wenku.baidu.com/view/8f28edd507a1b0717fd5360cba1aa81144318fa1.html
但似乎自动化代码审查只是lint吗? 我希望是AI智能一些的.
NLP自然语言处理API
情感分析
一件事情给人造成正负面情感影响, 将会促使人进行相应的行动, 因此具有预测性.
百度的API分析情感还是比较准确的.只是只能分析2048个字符, 换成汉字就只有1024个.
百度多实体情感倾向分析可以在文章中分析不同实体的情感倾向.目前邀测阶段. 可以分析娱乐/财经/体育类型, 输入包括标题和正文, 正文可达6000字节.
判断两段文本说的是「同一件事情」
某一件事情第一次出现是新闻, 第二次就不是了. 所以怎么判断第二次说的和第一次的是同一件事情?
知乎上有个问题是问这个的, 答案有这么几种:
- 语义匹配
- 语义角色标注(SRL, semantic role labelling)
百度API有短文本相似度, 最大512字节. 似乎不能判断英文和中文的相似度, 不过对中文判断似乎还好. 如"笔记本"和"膝上型电脑"相似度为0.70, 与"手提电脑"相似度为0.60, 与"手机"相似度为0.36,判断还算正确.
还有词义相似度, 最大64字节.
但对于文章相似度分析还差得很远.
另一个思路, 从文章中抽取高频关键词, 看关键词是否有一致的.
python爬虫: scrapy, splash
scrapy直接用并不好用, 对于需要js渲染或动态dom的网页, scrapy爬不到.
这时候需要splash 中文文档 英文原档, 动态解析js并返回其最终渲染结果. splash实际上是一个docker image, 需要预先安装docker,然后拉取下来就可以用. 另外splash是基于lua的, 嗯, 感觉python+docker+lua,真是个缝合怪啊
介绍文章: https://www.bilibili.com/read/cv12375274
github上有一个scrapy-splash的项目.
scrapy-splash使用方法
安装scrapy, splash, scrapy-splash
pip install scrapy
docker pull scrapinghub/splash
docker run -p 8050:8050 -p 5023:5023 scrapinghub/splash
# 在上一步命令以后,命令行界面将挂起运行docker, 此时需要新建一个命令行继续运行后面的命令
pip install scrapy-splash
新建一个scrapy项目
scrapy startproject tutorial
修改其中的settings.py
文件, 简便起见, 加入下面内容即可
SPLASH_URL = 'http://127.0.0.1:8050'
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'
FEED_EXPORT_ENCODING = 'UTF-8'
SPIDER_MIDDLEWARES = {
'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
DOWNLOADER_MIDDLEWARES = {
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
在spiders
目录下, 新建一个爬虫文件, 比如爬虫名字叫df, 文件名字叫df_spider.py
import scrapy
from scrapy_splash import SplashRequest
class MySpider(scrapy.Spider):
name = 'df'
start_urls = ["http://example.com", "http://example.com/foo"]
def start_requests(self):
for url in self.start_urls:
yield SplashRequest(url, self.parse, args={'wait': 0.5})
def parse(self, response):
page = '1' # response.url.split("/")[-2]
filename = f'df-{page}.html'
with open(filename, 'wb') as f:
f.write(response.body)
项目目录下运行爬虫,会得到一个df-1.html的文件.
scrapy crawl df
查看这个文件是不是已经有js渲染, 如果还是没有渲染, 可增加爬虫文件中splash的wait时间, 上面设置的是0.5秒.
splash click一个元素的方式:
assert(splash:runjs('document.querySelector(".next a[href]").click()'))
Windows10支持多用户远程桌面的方式
正常来说是不支持的. 看了很多文章, 这一篇https://www.helpwire.app/blog/allow-multiple-remote-desktop-connections-windows-10/是讲的最好的.
里面提到了几种方式, 一种是用github项目RDP Wrapper, 我试过好像不起作用. 另一个是修改Termsrv.dll
文件, 用到hex编辑器, 这个管用.
copy c:\Windows\System32\termsrv.dll termsrv.dll_backup
takeown /F c:\Windows\System32\termsrv.dll /A
icacls c:\Windows\System32\termsrv.dll /grant Administrators:F
Net stop TermService
接着在十六进制编辑器里面搜索39 81 3C 06 00 00 0F 84 XX XX XX XX
, 替换为B8 00 01 00 00 89 81 38 06 00 00 90
,然后运行Net start TermService
或者重启就可以了