Hexo重新布置到github出错

本来在github上部署的,可是因为速度慢,转战到gitee上了。然而两年中一直写技术文章没有问题。可是因为看了网络小说,想写出一些糟点,因为有点儿关键字,总是不给更新。一气之下,决定转回github,然而竟然部署失败了……

1
2
3
4
5
6
7
8
9
fatal: 'https://github.com/你的用户名/你的用户名.github.io.git/' 鉴权失败
FATAL {
err: Error: Spawn failed
at ChildProcess.<anonymous> (/home/主目录名/myblog/node_modules/hexo-util/lib/spawn.js:51:21)
at ChildProcess.emit (node:events:513:28)
at Process.ChildProcess._handle.onexit (node:internal/child_process:293:12) {
code: 128
}
} Something's wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.html
  1. 反复登录用户名,与密码,木有错误。然而还是失败

  2. ssh的密钥重新生成,并重新更新在github上,确认没有错。然而还是失败

    然后百度搜索了“鉴权失败”那一行,给出的解决办法
  3. 进入github.com我的主页里,

    setting

    Developer settings

    Personal access tokens

    new access tokens

的时候有个时间选择,可以选择某个时间长度(一个月、三个月什么的,因为我个人用的就选择的永不过期),然后创建成功后会有个token,把它当作密码,在你重新推送你项目的时候,命令行提示你输入邮箱和密码的时候,把这个token当密码输入(复制即可)。满决欢喜的试,然而还是失败了。当时陷入误区,还反复试了三遍!!!

以为没有半法了,过了三天,才想起来百度 hexo的错误代码。给出试错
  1. 以下方法。还是失败了

    1
    2
    3
    4
    $ cd myblog
    $ rm -rf .deploy_git
    $ git config --global core.autocrlf false #把git加入系统环境变量
    $ hexo clean & hexo g & hexo d
  2. 再查,以下方法成功了

    1
    2
    $ cd myblog
    $ vim _config.yml #到最后几行
    1
    2
    3
    4
    5
    6
    7
    8
    # Deployment
    ## Docs: https://hexo.io/docs/one-command-deployment
    deploy:
    type: git
    repo: https://github.com/YourName/YourName.github.io.git(不要使用这个)
    git@github.com:YourName/YourName.github.io.git(用这个)
    branch: master
    $ hexo clean & hexo g & hexo d

在Ubuntu系统中安装Docker

官网安装教程:
https://docs.docker.com/engine/install/ubuntu/

一.卸载docker-engine旧版本:
1
$ sudo apt-get remove docker docker-engine docker.io containerd runc

完全卸载所有docker相关文件的操作方式:

1
2
3
$ sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd
二. 安装方法
  1. 设置存储库 更新apt包索引并安装包,以允许apt通过HTTPS使用存储库:
1
2
3
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl
gnupg lsb-release
  1. 添加Docker的官方GPG密钥:

    1
    2
    $ sudo mkdir -p /etc/apt/keyrings
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  2. 使用以下命令设置存储库:

1
2
3
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

配置镜像加速器

1
2
3
4
5
6
7
8
9
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://5sxvtqpp.mirror.aliyuncs.com"]
}
EOF

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
  1. 安装Docker引擎

    1
    2
    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  2. 启动Docker服务

    1
    $ sudo service docker start
  3. 验证Docker安装是否成功。

    1
    $ sudo docker run hello-world

debootstrap学习笔记2

  1. LD_PRELOAD,是个环境变量,用于动态库的加载,动态库加载的优先级最高,一般情况下,其加载顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib。

1.1 LD_PRELOAD运用总结

定义与目标函数完全一样的函数,包括名称、变量及类型、返回值及类型等

将包含替换函数的源码编译为动态链接库

通过命令 export LD_PRELOAD="库文件路径",设置要优先替换动态链接库

如果找不替换库,可以通过 export LD_LIBRARY_PATH=库文件所在目录路径,设置系统查找库的目录

替换结束,要还原函数调用关系,用命令unset LD_PRELOAD 解除

想查询依赖关系,可以用ldd 程序名称

debootstrap学习笔记1

1. 简介

        debootstrap是debian与ubuntu下都有的一个工具,用来构建一套基本的系统(根文件系统)。生成的目录符合Linux文件系统标准(FHS),即包含了/boot、/etc、/bin、/usr等等目录,但它比发行版本的Linux体积小很多,当然功能也没那么强大,因此只能说是“基本的系统”。fedora下(centos亦可用)有类似功能的工具:febootstrap。

2. 安装 与 命令行格式
1
2
3
sudo apt-get install debootstrap
# 可加参数指定源
sudo debootstrap --arch [平台] [发行版本代号] [目录] [源]

当前debootstrap支持的发行版本可以在/usr/share/debootstrap/scripts查看

2.1 命令行示例

sudo debootstrap –arch amd64 jammy /mnt

构建x86(64位)平台ubuntu最新发行版22.04(代号为jammy)的基本系统,存放到/mnt目录

sudo debootstrap –arch amd64 buster ./

构建amd64平台debian最新发行版debian10(代号为buster)的基本系统,存放到当前目录下

以上两行例子都没有指定源,那么就是默认了。
输入上述命令后,就会从网络下载相关的文件。如果出现以下情提示则表示成功

1
I: Base system installed successfully.
3. 用debootstrap构建编译环境–amd64架构debian10案例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 创建环境进入
mkdir buster&cd buster
sudo debootstrap --arch amd64 buster ./buster1
sudo chroot ./buster1

# 修改云源
sudo vim /etc/apt/sources.list # 改为阿里云或科大,或清华云
# 改完后保存退出vim
apt-get update

# 部分版本是没有装编译工具包的
apt-get install dpkg-dev
apt-get install debhelper

# 下载编译源码
cd /tmp
apt-get source redis
apt-get build-dep redis
cd redis.x.x
dpkg-buildpackage
find ../*.deb

ubuntu安装Wine

一 安装wine, 以在debian12下为例

  1. 开启32位架构的支持

    1
    2
    3
    sudo dpkg --add-architecture i386  #必须先执行这一个
    sudo apt update # 这一点很重要
    sudo apt upgrade -y # 这一点很重要
  2. 下载添加wine的仓库密钥

    1
    2
    3
    $ sudo mkdir -pm755 /etc/apt/keyrings
    $ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
    # 上一句因为网站问题,总是不成功,但在win11下竟然能下载https://dl.winehq.org/wine-builds/winehq.key 这个文件,于是copy到 /etc/apt/keyrings/目录下,并改名为 winehq-archive.key
  3. 添加wine的仓库(适合Ubuntu22.04,别的ubuntu版本请在wine官网上找)

    1
    2
    $ sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources
    # 上一句因为网站问题,总是不成功,但在win11下竟然能下载https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources, 于是copy到 /etc/apt/sources.list.在/目录下
  4. 更新并安装wine的包

    1
    2
    3
    4
    5
    6
    7
    sudo apt update  # 必须升级
    sudo apt install --install-recommends winehq-stable #稳定分支
    # 或者
    sudo apt install --install-recommends winehq-devel #开发分支
    # 因为 dl.winhq.org的网址非常难以到达,很不成功。 于是
    $ vim /etc/apt/sources.list.d/winehq-bookworm.sources
    把文件中的 https://dl.wineqh.org/wine-builds/debian/ 改为 https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/

二 安装wine依赖环境(很重要)

  1. 安装winetricks,Wine的辅助配置工具,超级便利

    1
    2
    sudo apt install --install-recommends winetricks # debian得到wine网站上下了 

  2. 安装字体,解决Wine及初始配置界面乱码

    将以下 simfang.ttf 、 simhei.ttf 、 simkai.ttf 、simsun.ttc 字体文件复制到 Wine 安装路径下的字体目录 /opt/wine-stable/share/wine/fonts 即可。如果有别的需求,也可以将更多字体复制到该目录下,比如微软雅黑字体文件 msyh.ttf 、 msyhbd.ttf。

  3. 安装Wine依赖,终端下执行

    1
    2
    3
    $ winetricks
    如果因网络原因winetricks无法安装与执行,则运行
    $ winecfg # 进行配置

初始执行 winecfg或 wine 或 winetricks ,会要求下载安装 wine-mono 和 wine-gecko ,这是一个相对漫长的过程,并且中途还可能出错,有可能需要反复多次才能下载安装成功。这些依赖文件是下载安装在: ~/.cache/wine 目录下的。

然后会出现界面,选择默认容器,安装配置,用鼠标选择

1
2
3
4
5
6
7
8
corefonts colorprofile
fontfix fontsmooth-gray fontsmooth-rgb fontsmooth-bgr
gdiplus
d3dx9
riched20 riched30 # 很重要,关系到输入中文时的输入框问题
mfc40 mfc42
vcrun6 vb6run vcrun2003 vcrun2005 vcrun2008
msxml3 msxml4 msxml6

也可以在终端下用命令行形式安装,效率更高。

1
2
3
4
5
6
7
8
$ winetricks corefonts colorprofile
$ winetricks fontfix fontsmooth-gray fontsmooth-rgb fontsmooth-bgr
$ winetricks gdiplus
$ winetricks d3dx9
$ winetricks riched20 riched30
$ winetricks mfc40 mfc42
$ winetricks vcrun6 vb6run vcrun2003 vcrun2005 vcrun2008
$ winetricks msxml3 msxml4 msxml6

这些依赖,将会下载安装到: ~/.cache/winetricks 目录下。

  1. Wine配置

    1
    $ winecfg

    就打开了Wine配置窗口,其实在winetricks中也能打开。

三 安装微信
1
2
到腾讯网站上下载微信windows版的安装软件weixin*.exe,然后鼠
标点击它,右键,选择wine安装就行

更推荐的方式是以 Wine 添加 - 删除程序
去完成,如下:
终端下执行: wine uninstaller

四 后遗症

以上步聚安装完wine,并成功运行微信后,本来是正常的,可是发现硬盘可用空间不断的缩小,以致于影响到别的软件的运行。于是

1
2
3
$ df -lh #查看硬盘空间,发现己经没有多少可用空间了。
$ du -h --max-depth=1 #查看到认底是哪个目录占用了多少空音
# 发现是 ~/.wine 竟然在不停地吞噬可用硬盘空间。

于是只好删除wine,还是用了vbox

摘抄2---中国真心不容易

  1. 突然觉得中国真心不容易,国力要和美国比,福利要和北欧比,环境要和加拿大比,机械要和德国比,手机要和苹果比,联想要和IBM比,长城要和通用丰田比,龙芯要和Intel比, C919要和波音比…… 一个国家的制造vs整个世界全部高端! 但我不知道有哪个国家建国60多年靠自己的努力达到中国目前的高度的?! 不偏激,客观评论。不想赞美谁,也不想诋毁谁,只想说一句:人无完人,事无完美。 我记着有一句话:我国的武器再不好也是保护你的,外国的武器再好也是揍你的。 这世界也有太多人张嘴就是“人家外国人最棒,中国人则完全不行。”说得好像他自己,他爹妈都不是中国人一样。  当很多人有房有车,有钱有闲,享受和平时代时,却跟风喷中国,媚外国。是谁洗了你的脑?难道非要中国象乌克兰、伊拉克、利比亚、叙利亚…… 乱了,失去这一切才醒悟? 别喷我们的祖国了,她知道有不足的地方,她也正在努力追赶与弥补。

  2. 甘蔗哪有两头甜。想要钱多又没有压力,想要稳定安逸钱又不能少,这样的工作地球上哪能找到。能发挥自己潜能、专业长处,且收入稳中有升的工作就是好工作。

开关电源初级侧滤波高压电容计算

开关电源初级滤波大电解电容的计算

开关电源的初级滤波电容,主要影响电源的输出低频交流纹波与保持时间。滤波电容越大,电容器上的最小输入电压Vin_min越高,就可以输出较大的功率的电源。输入电解电容的计算方法,以下为举例说明。

条件:假设全电压输入,输出要求为12V,2A_
  1. 输出功率:Pout = 12V * 2A=24W

  2. 输入功率:假设转效率为80%,则输出功率为24W,则 Pin=Pout/80%=30W

  3. 输入最小直流电压计算,按最小输入交流电压为90Vzc,则最小输入直流电压为: Vin=90Vzc*1.414=127Vdc

  4. 负载直流电流为: I=Pin/Vin=30W/127Vdc=0.236A

  5. 电流等级要求高时,可考虑以下参数推算负载直流电流,Vin_min=90*1.414-30(直流纹波电压)=97Vdc,这里的最大负载直流电流为:Imax=Pin/Vin_min=30W/97Vdc=0.309A

  6. 设计允许30V的直流纹波电压deltaV=30V,

  7. 设计电容要维持电压的时间为半周期t,开关频率按60KHz,则一个周期T=1/65KHz=15.38ms,则半周期为t=8ms

  8. 计算电容值 C=I*t/deltV=0.236 * 8/30/1000=62.9uF,如果把Imax代入,则C=82.4uF

  9. 62uH在常用电容47-82uH之间,因考虑成本问题。 故实际选择电容量47uF.

  10. 因最大输入交流电压为264Vac,则最高直流电压为Vdc_max=264*1.414=373Vdc,所以选择耐压400Vdc的电解电容,此登记的电容有95%的裕量.

  11. 开关源元器件温升一般较高,通常选用105℃电容器,在特殊情况无法克服温升时可选用125℃电容器,故选用47uF,400v, 105℃电解电容器可以满足要求(在实际使用时还考虑装机构尺寸,体积大小散热环境好坏等)

  12. 电容器的承受的纹波电流值决定电容器的温升,进而决定电容器的寿命.(电容器的最大纹波电流值与其体积,材质有关.体积越大散热越好耐受纹波电流值越高)故在选用电容器要考虑实际纹波电流值<电容器的最大纹波电流值

streamlit学习笔记七-----与AG Grid的结合

以前把数据读出来并展示,可用st.table()st.dataframe() 来展示,但是如果想在表格上来点花活,比如直接编辑,排序,查找之类的,还要写额外的代码。好在,streamlit的作者引入了AG Grid。AG Grid是一个功能齐全且高度可定制的JavaScript数据网格。它提供了出色的性能,不需要第三方依赖,并且可以与所有主要的JavaScript框架流畅地集成

1 安装
1
$ pip install streamlit-aggrid
2. 例子
1
2
3
4
5
from st_aggrid import AgGrid
import pandas as pd

df = pd.read_csv('产品列.csv')
AgGrid(df) # 只展示表格

执行 $ streamlit run example.py,就可看到表格了,这里只把excel数据读出来,做了展示,如果想进行编辑的话,则改动一下。

1
2
3
4
5
from st_aggrid import AgGrid
import pandas as pd

df = pd.read_csv('产品列.csv')
new_df = AgGrid(df,editable=True) # 可编辑,并把编辑后的值存入new_dr中

编辑可指示只编辑其中一列,一个单元等,需要设置

3 一些参数

AgGrid(datafram-格式数据,

gridOption—–操作说明,格式为字典格式

height=整数—–高度,默认为400

width=整数——宽度,2.0版己取消宽度设置

fit_columns_on_grid_load—–网格宽度的列宽自适应。默认为False。

update_mode—-定义了网格如何装结果发回给streamlit,必须是一个字符串。一个或以下的组合

data_return_mode—-定义如何从客户组件检索数据

    DataReturnMode.AS_INPUT–>返回输入的网格数据

    DataReturnMode.FILTERED—>返回过滤后的网格数据,包括单元版本

    DataReturnMode.FILTERED_AND_SORTED—>返回过滤和排序的网格数据

allow_unsafe_jscode—-允许在gridOptions中注入javascropt 代码,默认不行

enable_enterprise_modules—加载Ag-Grid企业模块,默认不加载

license_key—-企业模块的许可证密钥,默认无

try_to_convert_back_to_original_types—-尝试转换原始数据类型,默认为真

reload_data—-强制AgGrid使用api调用重新加载的数据,默认为不

theme—Ag-Grid的主题,    streamit—->默认streamlit主题    light——>ag-grid的balham-light主题,    dark—->ag-grid的balham-黑色主题,  blue, fresh, material,缺省为light主题

)

4. 更多编辑示例,请见 更多例子

streamlit学习笔记六-----streamlit新版支持原生多页面一

streamlit以前只支持单页面,要想多页面,也不是不行,但是需要点技巧。但是新版streamlit己经原生支持多页面了,方法有三种:

1. pages目录加文件的方法,这个方法最简单,本文会介绍
2. st.Page 与 st.navigation方法结合,这个方法复杂但灵活,首先推荐
3. 小组件的方法,简单灵活但混乱,适合临时多页面

本文先介绍最简的方法,pages目录法如下:

1
2
$ pip install streamlit --upgrade #先升级到最新版 streamlit
$ mkidr pages #建立子页面目录

假设主页面的文档main_page.py如下:

1
2
3
4
import streamlit as st

st.markdown("# Main page 🎈")
st.sidebar.markdown("# Main page 🎈")

_

在 pages目录下,建立pages2.py pages3.py ….,示便代码如下

1
2
3
4
import streamlit as st

st.markdown("# Page 2 ❄️")
st.sidebar.markdown("# Page 2 ❄️")
1
2
3
4
import streamlit as st

st.markdown("# Page 3 🎉")
st.sidebar.markdown("# Page 3 🎉")

只要执行 strreamlit run main_page.py,则自动在左侧栏出现page2与page3的链接,注意排序竟然是按文件名来排序的。_