爱大客 - 2022年1月
type: channel
link: https://www.idarc.cn/index.php/2022/01/
description: Every piece of all creatures in this freezing world, are racing for freedom.
items: uni-app入门
items: uni-app, vue, 微信小程序和支付宝小程序
items: 腰椎间盘
items: 邀黑桃三回答个问题😁
items: 基于pyserial的命令行串口工具
items: vscode esp-idf 远程开发
items: 腾讯连连8266 SDK研究
items: vscode远程开发
items: windows10 开启ssh服务
items: frp 使用阿里云对SSH 内网穿透

uni-app入门
type: item
date: 2022-01-27T18:07:00+08:00
description: 资源 官网 插件市场 uni app组件和其他组件的区别联系 使用阿里云小程序开发工具 新建->mPaaS->Uni APP, 编译会失败, 查看日志, 会提示没有cross-env, 需要选择左侧的npm依赖管理图标, 在开发依赖中增加cross-env

uni-app, vue, 微信小程序和支付宝小程序
type: item
date: 2022-01-27T14:15:00+08:00
description: 微信小程序和支付宝小程序对比 这儿有一个对比: https://blog.csdn.net/qq_32279193/article/details/109130401 在阿里提供的小程序开发平台中, 基于mPaaS的小程序开发中, 有uni-app和remax两个选项. 其中uni-app是dcloud制作的基于vue的跨平台小程序发布, remax是基于react构建跨平台小程序的工具 支付宝小程序开发工具下载和介绍 基于 阿里的mPaaS https://help.aliyun.com/document_detail/49549.html 需要下载IDE https://help.aliyun.com/document_detail/67444.html https://help.aliyun.com/document_detail/172408.html 关于 uni-app uni-app要做的是对小程序的一次开发到处运行. Dcloud做的, 理念我很喜欢, 就是官网有点儿山寨. uni-app的项目结构和node项目/vue-cli创建的项目非常像, 都有package.json, node_modules/, 以及src/下的main.js, app.vue, 编译后都会生成到dist/目录. 然而并非支持vue的库或者其他npm库在这儿都可以用. 比如vuetify就用不了. 怎么判断能不能用,哪些能用, 在uni-app的论坛里讲到: https://ask.dcloud.net.cn/article/35489 总之, vuetify必须得换成其他实现方式了. uni-app又基于了另一个mpvue工具. mpvue是将vue移植到小程序平台上运行的库. megalo是另一个类似功能的库. 似乎uni-app都有支持.

腰椎间盘
type: item
date: 2022-01-27T09:15:27+08:00
description: 病症分类 膨出: 纤维环上起个包, 但髓核没有突破出来 突出: 纤维环已破, 但髓核起来的包没有掉出来 脱出: 突出基础上, 髓核掉了一块出来, 但还和纤维环里面的髓核保持一些连接 游离: 脱出的髓核完全断裂, 在椎管里乱跑, 最后会附着在不知道什么地方 一般都是左边或者右边起个包 引起症状 坐骨神经痛. 坐骨神经被压迫所致 下肢麻木. 不同轻重情况不同. 最多可麻到脚趾尖尖 晨起疼痛加重,运动或过段时间减轻: 据百度百科某网友回答, 是因为晚上血液循环能力降低, 突出位置产生水肿, 晨起后血液循环回复, 消除了水肿. 治疗方法 激素类: 促进水肿吸收, 减少对神经的压迫 手术类: 切除髓核, 也分为多种手术方式 理疗类: 按摩/针灸/正确坐姿/硬板卧床30天 运动类: 桥/大小燕飞 自体吸收: 有研究发现有少部分患者突出的髓核被吸收. 医生排除了突出的髓核被纳回的可能, 主要考虑是免疫系统将突出的髓核作为抗原消灭了.参考

邀黑桃三回答个问题😁
type: item
date: 2022-01-25T16:40:00+08:00
description: 邀黑桃三回答个问题😁: 怎么做到链接跳转时站外新页面, 站内当前页面?

基于pyserial的命令行串口工具
type: item
date: 2022-01-24T10:17:00+08:00
description: 原文https://pyserial.readthedocs.io/en/latest/tools.html 安装pyserial python -m pip install pyserial 使用Miniterm工具 python -m serial.tools.miniterm COM5 115200 在cmd命令行窗口支持ESC颜色 python -m serial.tools.miniterm COM5 115200 -f direct

vscode esp-idf 远程开发
type: item
date: 2022-01-21T10:36:00+08:00
description: 远程不能直接使用vscode idf插件的命令行， 需要打开idf插件的配置，将其中的path等信息改成bat运行一下. 示例如下: set path=D:\r\esp\.espressif\tools\xtensa-esp32-elf\esp-2021r2-8.4.0\xtensa-esp32-elf\bin;D:\r\esp\.espressif\tools\xtensa-esp32s2-elf\esp-2021r2-8.4.0\xtensa-esp32s2-elf\bin;D:\r\esp\.espressif\tools\xtensa-esp32s3-elf\esp-2021r2-8.4.0\xtensa-esp32s3-elf\bin;D:\r\esp\.espressif\tools\riscv32-esp-elf\esp-2021r2-8.4.0\riscv32-esp-elf\bin;D:\r\esp\.espressif\tools\esp32ulp-elf\2.28.51-esp-20191205\esp32ulp-elf-binutils\bin;D:\r\esp\.espressif\tools\esp32s2ulp-elf\2.28.51-esp-20191205\esp32s2ulp-elf-binutils\bin ;D:\r\esp\.espressif\tools\cmake\3.20.3\bin;D:\r\esp\.espressif\tools\openocd-esp32\v0.10.0-esp32-20211111\openocd-esp32\bin;D:\r\esp\.espressif\tools\ninja\1.10.2;D:\r\esp\.espressif\tools\idf-exe\1.0.3;D:\r\esp\.espressif\tools\ccache\4.3\ccache-4.3-windows-64;D:\r\esp\.espressif\tools\dfu-util\0.9\dfu-util-0.9-win64;D:\r\esp\.espressif\tools\idf-git\2.30.1\cmd\;D:\r\esp\.espressif\python_env\idf4.4_py3.8_env\Scripts\;%PATH% set IDF_PATH=d:\r\esp\esp-idf\ set IDF_TOOLS_PATH=D:\r\esp\.espressif Set OPENOCD_SCRIPTS=D:\\r\\esp\\.espressif\\tools\\openocd-esp32\\v0.10.0-esp32-20211111/openocd-esp32/share/openocd/scripts set IDF_CCACHE_ENABLE=1 还有一种方式是在esp-idf下有一些export.bat/.sh文件, 是用于配置idf环境的,不过可能需要修改. 通过 SSHFS windows manager可以挂载远程硬盘. 参考文章

腾讯连连8266 SDK研究
type: item
date: 2022-01-15T17:17:00+08:00
description: 项目地址: https://github.com/tencentyun/qcloud-iot-esp-wifi/tree/master/qcloud-iot-esp8266-demo 文档地址: https://cloud.tencent.com/document/product/1081/48370 8266项目的SDK又是基于腾讯的C SDK抽取的, C SDK地址: https://github.com/tencentyun/qcloud-iot-explorer-sdk-embedded-c 要修改的和供调用的 8266项目目录下components/qcloud_iot/qcloud_iot_c_sdk/includes中的几个文件是要修改的参数和调用的api放置的地方. 还有三元组信息在 components/qcloud_iot/qcloud_iot_c_sdk/platform下的HAL_Device_freertos.c文件中. 居然不是在头文件里定义, 感觉挺糟糕的. 要调用的API: qcloud_iot_export.h 这个qcloud_iot_export.h文件实际上include了所有在exports目录里面的.h文件. 所有的接口API在其中描述. 参数修改 qcloud_iot_export_variables.h MQTT的心跳时间240s建议改为200s. 默认240s与服务器端太一致了, 设备时钟慢一点就会被服务器踢出. /* default MQTT keep alive interval (unit: ms) */ #define QCLOUD_IOT_MQTT_KEEP_ALIVE_INTERNAL (200 * 1000) // 原设置: 240*1000 参数修改 HAL_Device_freertos.c #ifdef DEBUG_DEV_INFO_USED /* product Id */ static char sg_product_id[MAX_SIZE_OF_PRODUCT_ID + 1] = "PRODUCT_ID"; // 修改 /* device name */ static char sg_device_name[MAX_SIZE_OF_DEVICE_NAME + 1] = "YOUR_DEV_NAME"; // 根据mac生成的话, 需要在代码中动态修改 . 似乎应该在HAL_SetDevInfo()调用前或者干脆就在这个函数里修改 /* device secret of PSK device */ static char sg_device_secret[MAX_SIZE_OF_DEVICE_SECRET + 1] = "YOUR_IOT_PSK"; /* region */ static char sg_region[MAX_SIZE_OF_PRODUCT_REGION + 1] = "ap-guangzhou"; #ifdef GATEWAY_ENABLED /* sub-device product id */ static char sg_sub_device_product_id[MAX_SIZE_OF_PRODUCT_ID + 1] = "PRODUCT_ID"; /* sub-device device name */ static char sg_sub_device_name[MAX_SIZE_OF_DEVICE_NAME + 1] = "YOUR_SUB_DEV_NAME"; #endif #ifdef DEV_DYN_REG_ENABLED /* product secret for device dynamic Registration */ static char sg_product_secret[MAX_SIZE_OF_PRODUCT_SECRET + 1] = "YOUR_PRODUCT_SECRET"; // 动态验证需要改这儿 #endif 编译文件修改component.mk 如果在main目录下自定义了新的文件夹用于放源码, 需要将这个文件夹加入编译路径 ,在component.mk中, 如增加一行: COMPONENT_SRCDIRS += ./lamploop 主流程 在samples目录下有4个demo程序, 实际上是根据sdkconfig里面的配置选择不同的demo进行编译. 以data_template_light的主流程示例如下: main.c中的app_main()创建qcloud_demo_task任务 -->演示获取WIFI信息 -->联网 -->设置时间服务器 -->调用主逻辑qcloud_io…

vscode远程开发
type: item
date: 2022-01-15T13:42:00+08:00
description: 参考https://code.visualstudio.com/docs/remote/ssh-tutorial 远程开发的机器称为服务器, 如果是win10的话, 要安装并运行sshd服务, 并且服务使用powershell作为命令行, 参见前一篇文章. 如果开发服务器在内网,可以使用中转穿透服务frp. 如果都装好了, 使用ssh也可以登录了, 如果是通过frp登录的话, 命令可能是ssh username@frp_server_ip -p 7777 -oPort=7000, 其中7777是frpc客户端(也就是开发服务器)要求frps服务端开启的端口, 7000是frps固有服务端口. 在vscode上点击左下角, 选择connect to host... 输入ssh命令, 不需要输入-oPort=7000部分,按说明还需要加一个-A(干吗用的还不知道), 如: ssh username@frp_server_ip -p 7777 -A 然后就可以连接成功了. 如果远程开发服务器上有docker容器, 可以在vscode的cmd窗口进入docker容器, 命令如下: docker exec -it 容器名 /bin/bash 如果容器里面没有bash还可以把bash换成sh 有个很有意思的现象: 如果vscode连接的开发服务器必须同时开着sshd和frpc, 但是如果vscode已经连上了, sshd就可以关掉了, 只开着frpc就可以.这时候ssh命令行已经无法连接上了. 似乎vscode借用了22端口,但连接上以后没有走sshd协议

windows10 开启ssh服务
type: item
date: 2022-01-15T12:39:00+08:00
description: 参考https://winaero.com/enable-openssh-server-windows-10/#:~:text=Enable%20the%20OpenSSH%20Server%20in%20Windows%2010%201,on%20the%20Install%20button.%205%20Restart%20Windows%2010. https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse 打开"设置->应用->可选功能->添加功能", 搜索SSH, 将SSH服务器和SSH客户端都安装. 文章要求装完重启,但好像不重启也可以. 在C:\windows\system32\OpenSSH目录下就会安装ssh的相关文件, 包括sshd.exe, 可以直接运行sshd就开启服务,也可以按文章的介绍在服务中开启. 运行菜单services.msc, 查看OpenSSH SSH server项, 双击, 选择登录页面,查看或修改可以登录的用户. 设置服务为自动并开启运行. 打开一个cmd,运行ssh-keygen -A生成服务端key, 默认生成的位置在C:\ProgramData\ssh. 这儿还存放sshd_config文件, 如果没有就创建一个. 运行ssh-keygen ,生成本地ssh keyid_rsa和id_rsa.pub,位置在C:\Users\username/.ssh/,这儿还存放authorized_keys. authorized_keys就是其他客户端的pub key的集合 在客户端运行ssh-keygen ,生成本地ssh keyid_rsa和id_rsa.pub, 将id_rsa.pub复制一份改名为authorized_keys到服务端的C:\Users\username/.ssh/目录 设置服务端开启哪个命令行, 可以在powershell里开启, 也可以打开regedit, New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force 当然你也可以改成其他命令行如cmd或者bash,但是如果要使用vscode远程的话必须设置为如上的powershell 总结: 涉及的目录和注册表有以下几项: 软件安装目录: C:\windows\system32\OpenSSH 服务key存放目录: C:\ProgramData\ssh 用户Key存放目录: C:\Users\username/.ssh/ 服务名: OpenSSH SSH Server, 或 sshd 注册表项: HKLM:\SOFTWARE\OpenSSH, DefaultShell

frp 使用阿里云对SSH 内网穿透
type: item
date: 2022-01-15T09:52:00+08:00
description: frp 官网示例是针对端口全开的公网ip, 而阿里云是有安全策略, 需要开放端口. frp用起来算是及其简单惬意了. 阿里云服务器和内网SSH服务器分别下载frp release, 目前最新版本0.38.0 我用的阿里云服务器是CentOS, 其他linux也类似. 登录阿里云服务器这一步安装到systemd系统服务. 先进入frp解压目录, 然后是如下步骤:cp systemd/*.* /usr/lib/systemd/system/ cp frps /usr/bin/ chmod +x /usr/bin/frps mkdir /etc/frp cp frps.ini /etc/frp/ systemctl start frps systemctl status frps 最后一条命令可以看到frps是否启动成功. 可以看一下cat /etc/frp/frps.ini的内容, 默认是: [common] bind_port = 7000 这时候可以看一下frps的端口占用: #netstat -tunlp|grep frps tcp6 0 0 :::7000 :::* LISTEN 4928/frps 登录阿里云服务器后台aliyun.com, 在ECS服务器->实例->安全组中的入方向添加一条TCP记录, 端口号写一个区间:7000/7100.后面frp配置的所有端口号都要在这个范围内才能访问. 授权对象为0.0.0.0/0 SSH服务器解压缩frp, 修改目录中的frpc.ini,假设服务器地址是x.x.x.x,如下: [common] server_addr = x.x.x.x server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 7001 运行`frpc` 5.这时候可以回到阿里云服务器看一下frps的端口占用,发现服务器打开了7001端口: netstat -tunlp|grep frps tcp6 0 0 :::7000 ::: LISTEN 4928/frps tcp6 0 0 :::7001 ::: LISTEN 4928/frps 6. SSH客户端连接SSH服务器 ssh username@x.x.x.x -p 7001 -oPort=7000