#838 Shell 循环执行

2023-03-23

根据《今天我靠chatgpt早下班2小时!太强了!》整理:

#!/bin/bash

# 锁文件路径
lockfile="/tmp/my.lock"

function cleanup {
    echo "清理锁文件"
    rm -f "$lockfile"
    exit 1
}
# 注册清理函数,确保无论脚本如何退出都会执行
trap cleanup EXIT

if [ -e "$lockfile" ]; then
    echo "WARNING: 另一个实例正在运行!"
else
    touch "$lockfile"
    echo "脚本开始执行"
    while true; do
        sh a.sh
        sleep 300  # 5分钟的间隔时间,单位为秒
    done
    rm "$lockfile"
    echo "脚本退出执行"
fi

#833 转载:如果风静止了

2023-03-17

wind

风力发电正在全世界如火如荼地发展。

但是,风力发电有一个前提,就是必须有源源不断的风。那么,风可能出现静止吗?

事实上,2021年的夏秋之际,欧洲大部分地区就发生了"风旱"。许多地方的风速比年平均水平至少慢了约15%,英国出现了60年来风力最小的时期。

前年9月,风电发电还占英国发电量的18%,但到了去年9月,这一比例骤降至2%。为了弥补能源缺口,英国被迫重启了两座封存的煤电厂。

一项研究表明,全世界的风速正在下降,从1978年到2010年,风速每十年下降2.3%。不过,2010年到2019 年又有所反弹。从每小时7英里增加到7.4英里。

尽管如此,科学家还是认为,未来的风速将不断放缓,到2100年全球平均风速可能下降多达10%。

其中的原因,涉及到了一个根本的问题:为什么地球上有风?

地球出现风带,主要原因是温度不均匀:两极很冷,热带很暖。这种温差导致了空气流动,从而产生了风。

但是由于全球变暖,两极与热带的温差正在减小,这是因为两极(尤其是北极)的变暖速度比热带地区快。

另一个风速变小的原因,可能是"地球表面粗糙度"的增加。世界各地的城市建筑的数量和规模正在增加,这阻挡了风的流动。

风速变小会产生严重后果,不仅仅影响到风力发电。
(1)强风可以缓解城市污染,用新鲜空气代替停滞的空气。
(2)较慢的风会让热浪难以缓解。
(3)慢风也使飞机更难起飞,因为飞行员依靠逆风升空。希腊的一个机场,由于逆风减缓和气温上升,空客320在过去30年中,最大起飞重量减少了4吨。

#832 Git 仓库迁移学习

2023-03-13

看到一篇公众号文章 《Git仓库迁移实操(附批量迁移脚本)》,介绍他们将 GitLab 中一个 Group 内的几十个项目迁移到另一个 Group。
PS:文章有提到,前提是无法得到管理员协助,开启创建时导入的功能。

  1. git clone & git push && git push --tags
  2. git clone --mirror && git push --mirror
  3. git clone --bare && git push --mirror

基本方法就是 clone && push,不过参数不同。
只是,我没有了解过这里说的 --mirror 参数,这里记录一下,用到的时候研究研究。

文章带了两个脚本:

  • Linux migrate.sh

    #!/bin/bash
    
    remote_old=git@host1:group1
    remote_new=git@host2:group2
    
    while read repo
    do
        echo $repo
        git clone --bare "$remote_old/${repo}.git"
        cd "${repo}.git"
        git push --mirror "$remote_new/${repo}.git"
        cd ..
        rm -fr "${repo}.git"
    done < repos.txt
    
  • Windows migrate.bat

    @echo off
    
    set remote_old=git@host1:group1
    set remote_new=git@host2:group2
    set input_file=repos.txt
    
    SETLOCAL DisableDelayedExpansion
    FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ %input_file%"`) do (
        call :process %%a
    )
    goto :eof
    
    :process
    SETLOCAL EnableDelayedExpansion
    set "repo=!%1!"
    set "repo=!repo:*:=!"
    echo !repo!
    git clone --bare "%remote_old%/!repo!.git"
    cd "!repo!.git"
    git push --mirror "%remote_new%/!repo!.git"
    cd ..
    rmdir "!repo!.git"
    ENDLOCAL
    goto :eof
    

#830 Gradio:简单易用的 Demo 工具(Web)

2023-03-04

今天了解到这个库,为一些演示工作的方便而开发。用 Python 来配置界面,主要是输入、输出,然后将输入的参数传入处理方法,将返回值显示在输出。
PS:安装的时候可以看到,这个库有 14M,而且其他的依赖不少。

这只是一个简单的示例:

import gradio as gr

def greet(name):
    return "Hello " + name + "!"

# demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo = gr.Interface(
    fn=greet,
    inputs=gr.Textbox(lines=2, placeholder="Name Here..."),
    outputs="text",
)
demo.launch()
python gradioTest.py
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

20230304-gradio.png

以后需要用到这个的时候再来研究研究。

#829 Linux 网络:开放端口范围

2023-03-03

线上环境,有一个服务启动时,四个进程只成功了三个,检查发现端口被占用。
再一看,是被另外三个进程中的一个连接 MongoDB 占用了。

# 查看
cat /proc/sys/net/ipv4/ip_local_port_range
1024    65000

$ sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 1024     65000

PS:查了一下,个人机器(Ubuntu)上配置的是:32768 60999

把下限往上提到 20000,避开服务常用接口:

# 临时配置
echo "20000 65000" > /proc/sys/net/ipv4/ip_local_port_range
sysctl -w net.ipv4.ip_local_port_range="20000 65000"

# 持久配置
vim /etc/sysctl.conf

#828 音乐、影视与流行文化

2023-03-01

本来是想回忆一下青少年时期的各种事情,取了个名字叫我的青春。
但是细想想,我自己的青少年时光实在是乏善可陈。没有什么值得一提的事情。
或者说,和大多数人一样,我没有青春,只是在别人的青春中当个群演,跑下老套而已。
甚至,我觉得青春期的自己是个二百五,这让我感觉还不如不曾出现在别人的世界里,让这个世界更加美好一些。
所以这里还是就说一下那些年听过的歌、看过的电视吧。

#826 Cygwin 下的时区问题

2023-02-24

Cygwin 下执行一个 Python 脚本,其中 datetime.now() 获取到的时间居然是 UTF 时间。
执行 date 命令也是如此。

执行 tzselect,三次分别选 Asia,China,Beijing Time,然后就好了。

命令中有提示:如果要永久有效,需要在 ~/.profile 中加入 TZ='Asia/Shanghai'

关键是,TZ 其实有配置:

export | grep TZ
declare -x TZ="Asia/Shanghai"