阿水的世界。

分类 杂七杂八 下的文章

01月 17

关于浏览器访问ipv6地址的方法

最近在研究给网站增加ipv6地址,但是地址增加了,每次在火狐中输入ipv6的地址,总是会跳转到搜索引擎。总感觉莫名其妙的

研究了好半天,ipv6解析优先已经打开了,但是还是无法访问。终于搜到一个帖子,里边访问ipv6地址使用中括号括起来了,好吧,我又小白(╯︵╰)

使用这个方式,可以正常访问ipv6地址了

类似这样的https://[2409:8c10:c00:140b:3::7e3]如果需要增加端口号,在括号后边增加冒号端口号就可以了https://[2409:8c10:c00:140b:3::7e3]:80

12月 16

在windows中使用wsl访问linux分区

电脑上按了2块硬盘,其中一块安了linux,使用Paragon ExtFS for Windows,没破解,没办法打开,而且打开了读取修改也感觉不保险,不是原生支持,总担心会出错,只能想其他办法了-_-

准备使用wsl来实现。

我的电脑安装的windows 10 ltsc 1809,嗯,ltsc版本精简了微软Store,没办法直接安装wsl,试了网上的各种安装方法,还是没成功,而且1809版本太低,so,我决定先升级windows。

搜索windows 10ltsc 1809升级windows10 22h2办法,试错好几个网址,找到了微软官方的https://answers.microsoft.com/zh-hans/windows/forum/all/win10%e7%9a%841809%e7%89%88%e6%9c%ac%e5%8d%87/cf9d9dca-2ec6-4c90-b3dc-95cb40e2cecc
先下载MediaCreationTool,用这个升级,下载地址:https://go.microsoft.com/fwlink/?LinkId=691209

下载运行后,然后就是一路等待,同意许可,选择为另一台电脑创建安装介质这个选项(我先选了:立即升级这台电脑,然后后自检了好久告诉我不能升级o(╥﹏╥)o ),下一步,选择要使用的介质为ISO,,继续下一步,会生成一个iso镜像文件。安装时候记的选择保留个人文件和应用!!!

对于生成的iso文件,我们直接用7zip或者winrar解压到一个文件夹,然后找到里边的setup.exe,一直下一步,并等待安装就好了。安装时间太漫长了,中途有一段时间我以为死机了,一直卡在正在安装0%……………………好久好久没动…………然后终于过了半小时动了^O^

中途自动重启几次电脑,然后进系统,好了,可以用了。

哦,忘了一件事,你需要有序列号,系统才能正常使用,记的提前找好序列号,或者激活工具!!!!

现在才正式开始安装wsl
准备工作,在控制面板中,找到程序》找到启用或关闭windows功能,然后把Hyper-V、适用于linux的windows子系统选上 ,然后安装。

等安装好后,大概率需要重启一下电脑。

重启完成,以管理员模式打开windows PowerShell,输入命令:Get-WindowsOptionalFeature -Online -FeatureName:Microsoft-Windows-Subsystem-Linux
查看State的内容,如果显示的是Enabled,则说明wsl是启用的,可以正常使用wsl,否则需要执行命令:Enable-WindowsOptionalFeature -Online -FeatureName:Microsoft-Windows-Subsystem-Linux启用wsl功能。

然后运行wsl --set-default-version 2命令,使wsl默认运行在wsl2上

接着打开微软Store,搜索linux,找到你需要的linux版本,直接安装即可。

等待很长很长时间以后,就安装好了。如果没安好,重新安装一下,比如我就因为网速问题重点了好多次安装┐(゚~゚)┌

等彻底安装好了,就可以从开始菜单里看到wsl或者你安装的系统的名称了。我安装的是ubuntu 22.04.5 LTS,显示的就是这个名称,点击打开。

好啦,现在命令行出来了,可以使用ubuntu了(^▽^)

一般情况挂载linux分区,可以在powershell中使用命令GET-CimInstance -query "SELECT * from Win32_DiskDrive"查看所有的磁盘信息主要是查看DeviceID的内容,比如我需要挂载的盘是\\.\PHYSICALDRIVE1,然后使用wsl.exe --mount \\.\PHYSICALDRIVE1挂载,使用wsl.exe --unmount \\.\PHYSICALDRIVE1卸载硬盘。

可能是因为我使用了Paragon ExtFS for Windows,我的磁盘无法自动挂载,总是提示

 wsl --mount \\.\PHYSICALDRIVE1

磁盘已附加,但装载失败: Invalid argument。
要查看更多相关信息,请在 WSL2 中运行 'dmesg'。
若要分离磁盘,请运行 'wsl.exe --unmount \.\PHYSICALDRIVE1'。

没办法,我只能使用命令手动加载。具体命令如下:

fdisk -l

显示了所有磁盘的信息,从里边找到需要挂载的磁盘信息。里边有分区,比如:/dev/sdc1,/dev/sdc2
我在wsl系统中,在/mnt/wsl/文件夹下建立了一个data文件夹,用来挂载/dev/sdc2(这个分区是ext4的)
使用命令 mount -t ext4 /dev/sdc2 /mnt/wsl/data

如果mount报Structure needs cleaning错误,可以使用:fsck.ext4 /dev/sdc2命令进行修复。(这个我没遇到,有需要可以试试)

现在,windows中就可以直接访问这个分区的内容了
访问地址为:\wsl$\Ubuntu-22.04\mnt\wsl\data

如果不知道访问地址,可以直接打开\wsl$,然后逐级打开就行了

现在,终于,我的ext4盘终于能打开了^▽^

10月 13

python脚本纯色底色图片固定位置水印覆盖去除

最近从网上批量下来的图片有点多,都是白色底色,左上角固定位置有水印。我想把水印批量删了,photoshop有点慢,就用AI写了个python的脚本,批量处理图片。试了试还挺好用,处理300个图片大概几秒钟,挺快的。

    import os
from PIL import Image

def process_image(image_path, save_path, overwrite=False):
    try:
        # 打开图片
        img = Image.open(image_path)

        # 确保图片至少有150x60像素
        if img.width >= 150 and img.height >= 60:
            # 创建一个白色区域,大小150x60像素
            white_patch = Image.new('RGB', (150, 60), (255, 255, 255))
            
            # 将白色区域粘贴到图片的左上角
            img.paste(white_patch, (0, 0))
            
            # 保存修改后的图片
            if overwrite:
                img.save(save_path)
                print(f"Overwritten: {save_path}")
            else:
                base, ext = os.path.splitext(save_path)
                new_save_path = f"{base}_modified{ext}"
                img.save(new_save_path)
                print(f"Processed and saved: {new_save_path}")
        else:
            print(f"Image {image_path} is too small to process.")
    except Exception as e:
        print(f"Error processing {image_path}: {e}")

def batch_process_images(folder_path, overwrite=False):
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
            image_path = os.path.join(folder_path, filename)
            save_path = os.path.join(folder_path, filename)
            process_image(image_path, save_path, overwrite)

# 设置你的图片文件夹路径
folder_path = 'c:\\static\\upload\\image\\20241010\\' # 替换为你的图片文件夹路径,\需要替换为\\
overwrite = True  # 设置为True以覆盖原图,设置为False以保存为新文件
batch_process_images(folder_path, overwrite)
09月 17

docker常用命令

docker,根据安装情况不同,使用apt-get安装的时候和使用snap安装的时候,对于服务的管理命令不同,对于镜像和容器的管理命令都相同。

一、启动一个已经停止的容器实例

docker start 容器ID或容器名

  1. 先查看已经暂停的容器实例信息
  2. 通过docker start 59ec 启动容器
  3. 通过docker ps 查看当前启动的容器
    具体操作如下图

docker start 还有两个参数
-i:以 交互模式启动 交互模式不懂点我
-t:以 附加进程方式启动 附加进程不懂的点我

二、停止一个正在运行的容器
1、docker stop 此方式常常被翻译为优雅的停止容器

docker stop 容器ID或容器名
参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态
docker stop -t=60 容器ID或容器名

2、docker kill

docker kill 容器ID或容器名 :直接关闭容器

由此可见stop和kill的主要区别:stop给与一定的关闭时间交由容器自己保存状态,kill直接关闭容器
想更进一步了解处理机制的可以看下面这篇文章,比较详细但是需要其他方面的
https://www.jb51.net/article/96617.htm

三、重启一个容器

docker restart 容器ID或容器名 :不管容器是否启动,直接重启容器

  1. 首先 docker ps 查看正在运行的容器信息,显示2分钟前启动运行
  2. docker restart 59ec 重启容器
  3. 再次 docker ps 查看容器信息 显示 2秒前启动运行

docker restart 参数
-t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态

四、修改容器名字

docker rename 容器原来名 要改为的名字

五、删除容器

docker rm是删除容器

六、删除镜像

docker rmi是删除镜像

七、两种进入容器的方法

我们经常需要进入到容器里去做一些工作,比如查看日志、调试、启动其他进程等。有两种方法进入容器:
1,docker attach
通过docker attach可以attach到容器启动命令的终端

2,docker exec
通过docker exec进入相同的容器,-it指定以交模式打开,执行exit退出容器,回到docker host

3,attach和exec的区别:

attach直接进入容器启动命令的终端,不会启动新的进程。
exec则是在容器中打开新的终端,并且可以 启动新的进程。
如果想直接在终端查看启动命令的输出,用attach,其他情况使用exec。
如果只是为了查看启动命令的输出,可以使用docker logs命令。

八、docker启动命令,docker重启命令,docker关闭命令
这里分两种情况,ubuntu里 如果使用snap命令安装的docker,则需要在snap中对docker进行管理。以下部分是直接安装的docker的命令情况:
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker服务 service docker stop
关闭docker服务 systemctl stop docker

在snap中管理docker服务:
启动docker:sudo snap start docker
重启docker:sudo snap restart docker
关闭docker:sudo snap stop docker

九、提交容器

docker commit 容器id REPOSITORY:TAG

内容有部分修改,增加了snap的内容,其余引用自:

https://www.cnblogs.com/guohu/p/13111498.html
09月 17

anythingllm使用docker启动、关闭、重启的方式

sudo  docker run -d -p 3001:3001  --cap-add SYS_ADMIN  -v ${STORAGE_LOCATION}:/app/server/storage  -v ${STORAGE_LOCATION}/.env:/app/server/.env  -e STORAGE_DIR="/app/server/storage"  dockerpull.com/mintplexlabs/anythingllm:latest

anythingllm使用的是dockerpull.com下的镜像。

如果在anythingllm启动后,无法访问本地ollama服务,则需要将ollama的监听地址,从127.0.0.1修改为0.0.0.0,这样就是监听所有ip地址,而不限制只能在本地使用了。

  1. 重启docker容器

docker restart 容器ID或容器名

2.优雅的关闭docker容器

docker stop 容器ID或容器名