Python行对齐工具difflib
1 用途
1.1 功能
对比两个字符串数组之间的差异,以第一个参数为基准,与第二个参数比较。
1.2 使用场景
一个原文件,一个改过的文件,对比差异;
一个纯文本,一个带格式的,对比差异;
比较不同方法生成的文本的差异。
1.3 使用体验
实现的功能类似于 Linux 中的 diff
命令;内容少看不出来好,内容一多,效果明显。这功能手写得疯了。
2 使用方法
2.1 示例
1234567891011121314151617import difflibdef compare_and_align(text1, text2): # 创建 Differ 对象 d = difflib.Differ() # 使用 Differ 对象比较文本 for x in d.compare(text1, text2): print(x) print('----')# 两个文本示例text1 = ["This is a sample text for alignment.","a"," ...
买域名
最近 ip 快把我弄疯了,然后买了个域名,一个来小时就能用了。
原因
做自己软件的后台服务
给客户做演示
做自己主页,以及被搜索引擎收录
使用 vpn 隧道 / 内网穿透,需要设置地址
科学上网需要设置中转服务地址
ip 地址记不住
租了多个云服务器,想统一入口
需要固定的地址,而云服务器重启后 ip 有变化
问题及解决
价格
一年几十块钱,新用户第一年比较便宜(一顿普通的午饭钱)
需要多长时间
比如在某度买,需要实名认证(认证成功发短信),人工认证需要几个小时
设置域名解析,一般 30 分钟内生效,最常不会超过 24 小时
我有多个云服务器,如何使用同一个域名
服务商可提供把不同功能指向不同服务器,比 www.aaa.com
指向一个服务器,test.aaa.com 指向另一个,可在规则中设置。
也可在其中主要服务器上做端口映射
是否需要备案
如果服务器在国内且做自己的网站(有网页或 Http
服务),则需要备案,详见 备案
配置VPN
1 问题解析
VPN 的使用前提是需要知道对方主机 ip 地址及开放的端口。
我遇到的问题是,自用的机器 A 和服务器 B 都没有固定 IP,机器 A
在局域网里,机器 B 使用物联网卡,本身没有对外的 IP
地址,物联网厂商也不提供端口映射。
这样 A 只能使用“向日葵”类的远程桌面软件连接服务器 B,它的问题是:
同一时间只能供一个连接操作
远程桌面传输屏幕变化,比只传输字符的 ssh 类工具慢很多
向日葵在用户登录后才能启动,所以如果远程无人职守,重启后就连不上了
不能复制粘贴,拷个东西费死劲,很多命令只能手敲,界面还反应慢
我的解决方案是:
使用 VPN 隧道,在一台有外部 IP 的云服务器 C 上搭建 VPN,然后用 A 和
B 同时连接 C,此时它们在同一网络中,即可使用 A 访问 B。
进一步简化:只在 B 和 C 上配置 VPN,然后把 B 的端口映射成到 C
的端口,任意机器通过 C 来访问 B,这种做法的优点是不用配置
A,缺点是所有需要暴露的端口都需要映射。选择哪一种方法,主要看需求。
2 生成密钥
2.1 Easy-RSA
Easy-RSA 是一款用于生 ...
Obsidian_插件推荐231005
Obsidian 插件
十一在家整理 OB 笔记,发现两个超好用的插件:Linter & tag
wrangler。
起因
前一阵把 Obsidian 笔记用 Hexo 转换成静态网页发到 github.io 做自己
blog 网站。发现了笔记中的一些问题,比如 tag 过多、重复,markdown
格式不规范,导致转换过程报错,转换后格式混乱…… 虽然用 Python
解决了,但是过程非常别扭:需要穿叉调用 Python 和 Javascript
环境,然后就想,要不学学
TypeScript,自己写插件吧?再后来发现:原来这些都有人写过了,汗死……
分享一下,希望也能提升亲们的笔记效率。
tag wrangler
tag wrangler 目前位居下载量排行榜第 16 位,是个热门插件。
对于笔记多,标签复杂的用户非常实用。文章多了,修改标签,做层级标签,重做分类是非常常见的操作,很难想象手动修改上百个标签,tag
wrangler 可以很好地解决这一问题。
在三方插件界面安装 tag wrangler 后,在 Tags
面板中的标签上点右键,即可看到新菜单,其中的 Ren ...
论文阅读_GPT4_4V
123456英文名称: The Dawn of LMMs: Preliminary Explorations with GPT-4V(ision)中文名称: LMM 的黎明:GPT-4V 的初步探索文章: http://arxiv.org/abs/2309.17421中文翻译:https://mp.weixin.qq.com/s/a8Y_yU5XYgJhQ2xMuTK13w作者: Zhengyuan Yang日期: 2023-09-29
1 读后感
GPT-4V 是基于 SOTA LLM
并使用大量多模态数据训练的最先进的具有视觉能力的 LMM。
论文是 2023 年 9 月 29 日微软发布
GPT-4V(视觉)的研究报告。主要讨论了多模态及其在各场景中的应用。文章不涉及公式及具体实现方法,整体偏重经验和测试,看了之后可以少走一些弯路。文章
166 页,近 3W 字,124
张图片,乍一看觉得挺长的,不过实验挺丰富挺有意思的,有点像在飞机上翻杂志的感觉。
整个文章看下来,感觉就像是培养一个机器 " 人
",从底层的视觉和文本能力,推理能力,智商情商,到后面的与物理世界交互,解决具体问 ...
沉浸式翻译
1 介绍
名称:沉浸式翻译(浏览器插件)
地址:https://immersivetranslate.com/docs/installation/
优势:
中英文翻译对照
支持 pdf 翻译
2 使用方法
方法 1:点击右上角翻译图标
方法 2:在网页右键选“沉浸式翻译”
3 快捷键
Alt+W: 翻译整个页面。
Alt+A: 翻译/切换原文(在 arxiv 上翻译论文非常好用)。
Ubuntu远程桌面_向日葵
1 说明
通过即时生成的序列号和验证码访问远程主机桌面
各操作系统均可使用,可相互调用
无需考虑 IP 问题
2 安装方法
2.1 下载
https://sunlogin.oray.com/download/linux?type=personal
注意:尽量下图形版,命行行版比较旧,Ubuntu 22.04 报错找不到库
2.2 安装
1$ sudo dpkg -i SunloginClient_11.0.1.44968_amd64.deb
2.3 运行
1$ /usr/local/sunlogin/bin/sunloginclient
2.4 问题与解决
2.4.1 缺少 libgconf-2-4
24.04 无法在图形界面安装,在命令行安装时,报错没有 libgconf-2-4
这个库比较早,需要切源到 22.04 的源之后安装,方法如下:
在 24.04 中加入/etc/apt/sources.list.d/ubuntu.sources 中加入了 22.04
的源
123456789101112$ vi /etc/apt/sources.list.d/ubuntu.sourc ...
CentOS系统
1 yum 简单用法
12$ yum search 名称包含的关键字$ yum install -y xxx
2 软件
2.1 安装 docker 环境
123456$ yum install -y yum-utils device-mapper-persistent-data lvm2$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ yum makecache fast$ yum -y install docker-ce$ systemctl start docker$ systemctl enable docker
3 安装 pgsql
1$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Django_1_入门
1 Django
1.1 简介
Django 是一个高级 Python Web 框架,致力于用更少的代码,构建更好的 Web
应用程序,总而言之,它是一个成熟的后端框架。
1.2 为什么使用 Django
后端 Django 配合前端 Vue
的组合确实用的太多了,可以算是一个必备技能。
1.2.1 优点
用户管理,数据库都不用自己处理,不用考虑具体细节实现
生态成熟,周边工具、资源、教程多
1.2.2 缺点
自成体系,有自己的框架,学习成本高
代码结构相对复杂,不像 flask 那么简捷
1.3 相关概念
1.3.1 项目 Project 与 应用 App
项目是整个网站的组织结构,应用程序是网站的功能组件。
一个项目可以包含多个应用程序;应用程序可以通过 Django
的应用程序架构被多个项目共享。
1.3.2 模型 Model
数据存取层,用于处理与数据相关的所有事务:存取、验证有效性、行为以及数据之间的关系等。
1.3.3 模板 Template
表现层,用于处理具体的显示,包括 HTML 页面和前端模板。
1.3.4 视图 View
业务逻辑层,用于处理模型及模板的相 ...
Django_2_进阶
本文将介绍一些 Django 的进阶用法
1 用户管理
下面介绍最简单的用户管理方法:用 admin 管理员创建普通用户;仅实现
login.html 界面,使用 django 内部逻辑完成用户登录。
1.1 建库
1.1.1 建库
12$ python manage.py migrate$ python manage.py createsuperuser # 创建管理员
1.1.2 修改配置文件
1$ vi mytools/settings.py
加入
123AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend',]
1.2 添加新用户
访问 admin 界面,用刚才创建的 superuser 登录
http://localhost:8001/admin/
按提示创建几个 user 用户
1.3 在界面中调用登录界面
1.3.1 在接口前加装饰器
1$ vi mytools/myapp/views.py
加入
1234from django.contrib.auth.de ...