Wanyor 发布的文章

安装时报数据库初始化失败:

解决办法:
找到my.ini文件添加如下配置:

innodb_buffer_pool_size = 256M
innodb_log_file_size = 256M
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = normal

这几年迷上了钓鱼,刚开始玩台钓,去年底开始学习路亚。

台钓基础学的差不多了,已经可以渐渐上鱼了,这玩意挺高深的,细节的好好学。
饵料还只会一丢丢,知道基本的东西,这里就不说了,本文主要讲智能渔轮的一些开发过程,当流水账记了。
因为条件有限,我打算在已有的轮子上做一些改造,算是我的想法一些验证吧。

0x00:想法

环境:极狐Air微物杯版本
测速:霍尔开关,但是需要在线杯加磁铁,可能会加个软磁铁圆圈圈在线杯上。
刹车:单片机用ESP32,考虑到通信的需求(BLE与手机APP通信记录出线速度、刹车设置),再加上几组铁心线圈(线圈做成那种小圆柱)等硬件来实现,供电就不用电池了,直接用线圈切割时产生的感应电充到纽扣锂电池(3V)
命名:姑且叫SEB吧,Smart Electronic Brake,智能电子刹车

0x01:准备

首先要采购一些电子元件,这个就在X宝解决,推荐个卖元器件的店子:优信电子,随便选购一下,坐等快递打包到家。
有人可能觉得很奇怪,为啥这个很大,我先进行原型验证,再设计PCB打板整上去

BOM(元件表):
2023-09-07T09:59:30.png

0x02:开整

最近没空,后续继续更新 ......

--- 2023年9月7日 18:00:46

今天安装包时出现以下错误:

 UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 645: illegal multibyte sequence

解决办法:

1、临时使用:
set PYTHONUTF8=1
pip install xxxxx

2、永久根除:
设置系统环境变量:PYTHONUTF8 = 1

python中除了pep8,没有限制项目、文件、类、函数(方法)的命名,于是自定一套规则。


项目名称:
大驼峰。
例如:TestProject

包名称:
小写,多个单词使用"_"分隔。
例如:test_package

模块名称:
小写,多个单词使用"_"分隔。
例如:test_module.py

公共类、异常名称:
大驼峰。
例如:class TestClass(object):

私有类、异常名称:
下划线+大驼峰。
例如:class _TestClass(object):

公共函数:
使用小写字母命名,多个单词之间用下划线分隔。
例如:test_function(arg1, arg2, argN...):

私有函数:
以下划线开头,使用小写字母命名,多个单词之间用下划线分隔。
例如:_test_function(arg1, arg2, argN...):

公共变量:
使用小写字母命名,多个单词之间用下划线分隔。
例如:test_param = 1

私有变量:
以下划线开头,使用小写字母命名,多个单词之间用下划线分隔。
例如:_test_param = 1

常量/全局变量:
使用大写字母命名,多个单词之间用下划线分隔。
例如:TestParams = 1

私有常量/全局变量:
以下划线开头,使用大写字母命名,多个单词之间用下划线分隔。
例如:_TestParams = 1

最近在使用Ubuntu Server时安装软件,提示根分区空间大小不够,于是想办法解决,解决方案如下:

注意:分区路径按实际的来,可以使用df -h查看根分区(/)路径
1. 添加空间
sudo lvresize -L +8G -r /dev/mapper/ubuntu--vg-ubuntu--lv

2. resize分区
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

完美解决,爽!!!

前提:
1、已启动区块链网络,并安装实例化安装链码
2、docker ps 可查看已启动的服务

服务器地址: ssh IP地址 -l root

fabric-samples 和 test-network所在目录:
/usr/local/src/hyperleger/fabric/scripts
/usr/local/src/hyperleger/fabric/scripts/fabric-samples
创建stupid工作空间,与fabric-samples同级目录:

mkdir stupid-workspace

stupid源码下载:

 git clone https://github.com/18640869382/stupid.git

go版本查询:go version
golang代理:

export GO111MODULE=on
export GOPROXY=https://goproxy.cn

进入stupid文件夹内构建:cd stupid
编译二进制:go build
stupid位置:

/usr/local/src/hyperleger/fabric/scripts/stupid-workspace1/stupid

参数配置文件:cat config.json
执行测试命令:./stupid config.json 500
其中500为要发送的交易数
注意:需要把peer0.org1.example.com 跟orderer.example.com写到本机的hosts文件中
参数内容:
{
"peer_addr": "peer0.org1.example.com:7051",
"orderer_addr": "orderer.example.com:7050",
"channel": "mychannel",
"chaincode": "basic",
"args": [ "GetAllAssets"],
"mspid": "Org1MSP",
"private_key": "/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk",
"sign_cert": "/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem",
"tls_ca_certs": ["/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem","/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem"],
"num_of_conn": 20,
"client_per_conn": 40
}

参数说明:
"peer_addr": peer节点地址与端口
"orderer_addr":orderer节点地址与端口
"channel": 通道名称
"chaincode": 链码名称,区块链内指定的,不是文件名称
"args": 合约方法,
"mspid": MSP的ID,
"private_key”:私钥文件 ,
"sign_cert":签名证书文件 ,
"tls_ca_certs": peer证书、orderer证书,
"num_of_conn": client端与peer端、orderer端之间所建立的grpc连接数
"client_per_conn": 指向一个peer发送交易提案的客户端数目
测试结果:
2021-06-17T03:15:40.png
结果中的 Tx 10可以修改,在 fabric 下 configtx.yaml 文件中的出块策略
Max Message Count: The maximum number of messages to permit in a batch
2021-06-17T03:15:54.png
路径:
/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/configtx/configtx.yaml

最近测试需要抓包,然后代理服务器设置在自己的办公电脑上,需要查自己的电脑出口IP地址,So, 产生了Python实现一个简单的设置代理的工具脚本,大概分为3种使用方式。

1、 命令式

python -c "import socket;print([(s.connect(('1.1.1.1', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])"


2、脚本式

# 可以封装成函数,方便 Python 的程序调用
import socket

def get_host_ip(): 
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('8.8.8.8', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()
    return ip

3、程序式

将以上脚本通过pyinstaller打包为exe(windows系统)、elf(linux系统)、app(Mac系统)

最后,Enjoying!!!

1、参考官方文档:
2021-05-13T02:10:31.png

2、 定时构建语法

    * * * * *

第一个*表示分钟,取值0~59
第二个*表示小时,取值0~23
第三个*表示一个月的第几天,取值1~31
第四个*表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日

3、举例:
每小时执行一次
H/59

每两个小时执行一次
H H/2 *

每隔15分钟。(或许:07, :22, :37, :52)
H/15

每前半小时中每隔10分钟。 (3次, 或许:04, :14, :24)
H(0-29)/10

每个工作日从早上4点45分开始到下午15点45分结束这段时间内每间隔2小时的45分钟那一刻。
45 4-16/2 1-5

每个工作日从早上9点到下午5点这段时间内每间隔2小时之间的某刻。(或许在上午10:38, 下午12:38, 下午2:38 , 下午4:38)
H H(9-16)/2 1-5

每月(除了12月)从1号到15号这段时间内某刻。
H H 1,15 1-11 *

变量 a:

a="1、测试\n2、哈哈"

如果想达到换行的效果怎么办?

1、测试
2、哈哈

如用 echo $a 输出,则换行都会被忽略,所有内容输出到一行
而用 echo "$a" 可正常输出变量中的换行