snmoney@gmail.com 发布的文章

备忘,因为经常忘记

用途略,在有 limit 时同时返回相关的总行数, 便于计算管理分页。

两行已经概括完主要的用法。返回第2页(每页20条)的结果。

SELECT SQL_CALC_FOUND_ROWS * FROM airdroplog  LIMIT 20,20;
SELECT FOUND_ROWS() as `rows`;

补充说明: LIMIT 的参数 offset值不会影响 found_rows() 返回的值。请求跳过前 100, 与从 0 开始算, 返回的 found_rows 值是一致的。

应网友要求,此法可用于relay上。下文为实现流水账,文末有参考的 win/macos上实现方法

0.前置要求

需要有个正常编译且运行中同步良好的 cardano-node, 有当前最新released版本的 cardano-submit-api
本例路径在 ~/.cabel/bin/cardano-submit-api

1.下载配置文件

cd $CNODE_HOME/files
wget https://raw.githubusercontent.com/input-output-hk/cardano-node/master/cardano-submit-api/config/tx-submit-mainnet-config.yaml

貌似在linux cnode中,参数可直接为节点的 config.json ,未验证

2. 启动API服务

对应修改各参数, 端口默认为 8090

"${HOME}"/.cabal/bin/cardano-submit-api --mainnet \
 --config "${CONFIG}"  \ 
 --socket-path "${CARDANO_NODE_SOCKET_PATH}" \ 
 --listen-address ${HOSTADDR} \ 
 --port ${HOSTPORT}

启动后见提示

[cardano-tx-submit:Info:12] [2022-02-13 19:43:43.35 UTC] Running server on 192.168.0.86:8090

为方便执行和监控,后续会把上述启动命令写进 nohup 作为一个启动脚本

3. 验证API,配置完成

本地节点IP为 192.168.0.86 , 已检查过防火墙部分

http://192.168.0.86:8090/api/submit/tx

postman 测试得到正确响应
(方式:post, header添加参数 Content-Type: application/cbor)

"transaction read error RawCborDecodeError [DecoderErrorDeserialiseFailure \"Byron Tx\" (DeserialiseFailure 0 \"end of input\"),DecoderErrorDeserialiseFailure \"Shelley Tx\" (DeserialiseFailure 0 \"end of input\"),DecoderErrorDeserialiseFailure \"Shelley Tx\" (DeserialiseFailure 0 \"end of input\"),DecoderErrorDeserialiseFailure \"Shelley Tx\" (DeserialiseFailure 0 \"end of input\"),DecoderErrorDeserialiseFailure \"Shelley Tx\" (DeserialiseFailure 0 \"end of input\")]"

如何配置wallet部分略过;

题外话,截止至 1.33.1 cntools 自带的 scripts 内有一名叫 submitapi.sh 的脚本, 简单阅读内容发现正是实现上文相同功能的,而且做了注册为系统服务的功能,不过脚本并不完备且最后执行参数是在 testnet下,看来是实验中的东西未正式普及。


参考文:

https://cardanode.com.au/reducing-transaction-connecting-nami-to-daedalus/

给R86S灌系统的时候nvme硬盘还没发货,所以系统先装在内建的 EMMC上,到货之后才加装,备忘本文。
(正常流程可以在安装ubuntu的时候顺便做分区格式化)

以标题同名关键词搜索 google 已经得到精炼的步骤指引:

ubuntu20.04挂载硬盘

  1. 通过df -h 查看现磁盘使用情况
  2. 通过fdisk -l查看电脑挂载的硬盘 ...
  3. 删除原硬盘分区,执行fdisk /dev/sdb,输入d,然后根据提示输入对应分区号即可
  4. 将清除分区的硬盘格式化为ext4格式,执行命令mkfs.ext4 /dev/sdb.

按上述流程操作个大概,以下是部分要点补充


- 阅读剩余部分 -

事因手误安装的时候敲错了路径,发现的时候大部分环境已经部署好了,需要在安装之后修改路径

以下备忘是lnmp的,其他安装方式类似,重点在标红的步骤

1.停止服务

lnmp stop mysql

如果是手动安装,用 systemctl stop mysql

2.复制库文件到新的目标路径

cd /homw
cp -a -r db /home/db
mv db db_bak

这里就是问题所在(掩面)手抽筋把 home 敲成 homw 了...
重点就在这里 cp -a -r 必须加上 -a 确保目录权限也复制
最后的mv 改名只是为了把原路径改掉,确认路径被修改后是否生效,避免下一步修改配置错误依然从原目录存取但未能发现问题

3.修改配置文件

vi /etc/my.cnf

若非lnmp安装这个配置文件可能不是这个路径或名字,根据实际情况而定
把相关的 datadir, innodb_data_home_dir, innodb_log_group_home_dir 等选项修改为新路径

4.重启mysql服务

lnmp restart mysql

如无报错修改完成,观察一段时间无问题后可以把原路径的 db_bak 删除。