如何对比字符串差异

https://www.perplexity.ai/search/wo-xiang-diff-xiang-ge-zi-fu-c-Erlew.brSYiuUnbWKP9uow 要在字符串之间进行差异比较,并以 git diff 的格式展示结果,可以使用 Python 的 difflib 模块。这个模块提供了方便的方法来比较两个字符串,并生成类似于 git diff 的输出格式。 使用 difflib 模块 以下是一个简单的示例,展示如何使用 difflib 来比较两个字符串并生成差异: import difflib def string_diff(string1, string2): # 使用 unified_diff 方法生成差异 diff = difflib.unified_diff( string1.splitlines(keepends=True), string2.splitlines(keepends=True), fromfile='string1', tofile='string2', ) # 打印差异 for line in diff: print(line, end='') # 示例字符串 str1 = "Hello, World!\nThis is a test string.\nGoodbye!" str2 = "Hello, World!\nThis is a modified test string.\nGoodbye!" # 调用函数 string_diff(str1, str2) 代码说明 导入模块: 首先导入 difflib 模块。 定义函数: 创建一个名为 string_diff 的函数,接受两个字符串作为参数。 生成差异: 使用 difflib.unified_diff() 方法生成差异,这个方法接受两个字符串列表(通过 splitlines() 方法分割),以及文件名参数。 打印结果: 遍历生成的差异并打印每一行。 输出示例 运行上述代码后,输出可能如下所示: ...

2024-09-25 · 3 min · 613 words

deploy hugo blog in vercel

我最近在创建一个 sora video 收集网站,使用 hugo 来开发,同时部署到 Vercel 上。在部署时遇到一些问题,以下是一个简单的记录。 Install Hugo 你可以查看 Hugo 官网来安装 hugo。在 mac 上,我使用 brew 安装。 brew install hugo Build in Local 我使用的是 https://gethinode.com/ ,A clean documentation and blog theme for your Hugo site based on Bootstrap 5. Create a new site hugo new site my-hinode-site && cd my-hinode-site Initialize the module system hugo mod init example.com/my-hinode-site echo "module.imports" >> hugo.toml echo "path = 'github.com/gethinode/hinode'" >> hugo.toml Start a development server ...

2024-02-21 · 1 min · 158 words

如何使用 Cloudflare worker 创建 gemini api 代理

https://zhile.io/2023/12/24/gemini-pro-proxy.html 如何使用 Cloudflare worker 创建 gemini api 代理 一、在 Cloudflare 中创建一个 worker gemini-api-proxy,保存并部署 export default { async fetch(request, env) { const url = new URL(request.url); url.host = 'generativelanguage.googleapis.com'; return fetch(new Request(url, request)) } } 二、添加自定义域名 可以直接使用 worker 触发器中的添加自定义域添加自定义域名。 不过这样不能确定使用的是哪个 ip,可能会存在请求时 gemini 提示地区不支持,这里可以自己设置 dns 解析 ip,通过这种方式来避免不支持的问题 以下内存转自 https://zhile.io/2023/12/24/gemini-pro-proxy.html 转到自己在 cf 上域名的控制面板,点击左侧菜单 DNS 来添加域名解析。 这里我使用自己的域名 gusibi.site,给它增加了子域名 A 记录:gemini-api.gusibi.site 这里有两个要点: 不要开启小黄云。 ip地址可以使用cf的优选工具选出来的高质量ip。 我这里用了两个我觉得还不错的ip,你们可以直接用,也可以自己去优选。 DNS解析记录操作完毕之后,点击左侧菜单Workers路由来让我们设置的域名和worker的路由关系。 在Workers路由界面,点击添加路由按钮,参考如下填写: 这里域名换成你刚才设置的那个,Worker也选择你之前创建的。点击保存即可。 完成这一步你就可以用你自己的域名来请求gemini了。 相关链接 : # 我们也要用Gemini Pro

2024-02-15 · 1 min · 69 words

coze_gpt4_api_get

https://www.dqzboy.com/16532.html https://github.com/deanxv/coze-discord-proxy 如何使用 打开 discord开发者平台 。 创建bot-A,并记录bot专属的token和id(COZE_BOT_ID),此bot为被coze托管的bot。 创建bot-B,并记录bot专属的token(BOT_TOKEN),此bot为我们与discord交互的bot。 两个bot开通对应权限(Administrator)并邀请进服务器,记录服务器ID(GUILD_ID) ( 过程不在此赘述)。 打开 coze官网 创建自己bot。 创建好后推送(Auto-Suggestion为default),配置discord-bot的token,即bot-A的token,点击完成后在discord的服务器中可看到bot-A在线并可以@使用。 配置环境变量,并启动本项目。 访问接口地址即可开始调试。 Render 可以直接部署 docker 镜像, 不需要 fork 仓库:Render docker run --name coze-discord-proxy -d --restart always \ -p 7077:7077 \ -v $(pwd)/data:/app/coze-discord-proxy/data \ -e USER_AUTHORIZATION="YOUR_VALUE_HERE" \ -e BOT_TOKEN="YOUR_VALUE_HERE" \ -e GUILD_ID="YOUR_VALUE_HERE" \ -e COZE_BOT_ID="YOUR_VALUE_HERE" \ -e PROXY_SECRET="YOUR_VALUE_HERE" \ -e CHANNEL_ID="YOUR_VALUE_HERE" \ -e TZ=Asia/Shanghai \ deanxv/coze-discord-proxy docker run --name coze-discord-proxy -d --restart always \ -p 7077:7077 \ -v $(pwd)/data:/app/coze-discord-proxy/data \ -e USER_AUTHORIZATION="YOUR_VALUE_HERE" \ -e BOT_TOKEN="YOUR_VALUE_HERE" \ -e GUILD_ID="YOUR_VALUE_HERE" \ -e COZE_BOT_ID="YOUR_VALUE_HERE" \ -e PROXY_SECRET="YOUR_VALUE_HERE" \ -e CHANNEL_ID="YOUR_VALUE_HERE" \ -e TZ=Asia/Shanghai \ deanxv/coze-discord-proxy 相关链接 :

2024-02-15 · 1 min · 98 words

如何通过MD5反查身份证号?

题目:设计一个身份证查询系统,将身份证号md5 之后存储,输入md5值查询对应的身份证号。 要求:成本低,查询速度快 设计思路: 将所有可能的身份证号做一个简单的统计计算数据量 根据数据量选择存储方式 查询 身份证生成规则: 身份号码是特征组合码,由前十七位数字本体码和最后一位数字校验码组成。排列顺序从左至右依次为六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码: 表示编码对象常住户口所在县(市、旗、区)的行政区划代码。对于新生儿,该地址码为户口登记地行政区划代码。需要没说明的是,随着行政区划的调整,同一个地方进行户口登记的可能存在地址码不一致的情况。行政区划代码按GB/T2260的规定执行。 出生日期码:表示编码对象出生的年、月、日,年、月、日代码之间不用分隔符,格式为YYYYMMDD,如19880328。按GB/T 7408的规定执行。原15位身份证号码中出生日期码还有对百岁老人特定的标识,其中999、998、997、996分配给百岁老人。 顺序码: 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 校验码: 根据本体码,通过采用ISO 7064:1983,MOD 11-2校验码系统计算出校验码。算法可参考下文。前面有提到数字校验码,我们知道校验码也有X的,实质上为罗马字符X,相当于10. 校验码算法 将本体码各位数字乘以对应加权因子并求和,除以11得到余数,根据余数通过校验码对照表查得校验码。 加权因子表: +-----------------------------------------------------------+ |位置序号|1 |2 |3 |4 |5 |6 |7 |8 |9 |10|11|12|13|14|15|16|17| +-----------------------------------------------------------+ |加权因子|7 |9 |10|5 |8 |4 |2 |1 |6 |3 |7 |9 |10|5 |8 |4 |2 | +-----------------------------------------------------------+ 校验码表: +----------------------------------------------------+ | 余数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | +----------------------------------------------------+ | 校验码| 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | +----------------------------------------------------+ 算法举例: 本体码为11010519491231002 ...

2019-08-18 · 1 min · 199 words

每周分享第4期

Docker 终端UI: https://github.com/jesseduffield/lazydocker 宝数据库内核月报:http://mysql.taobao.org/monthly/ 比较深入的数据库源码分析 手机号码归属地查询:https://apis-mp.gusibi.mobi/mobile/location?mobile=18512345678 使用serverless部署,无需服务器。源码地址:https://github.com/gusibi/oneplus/tree/master/mobile-attribution 手绘风格CSS:https://www.getpapercss.com/ Image-to-Image Demo: https://affinelayer.com/pixsrv/ 学霸用左边,学渣用右边:https://www.plainlanguage.gov/guidelines/words/use-simple-words-phrases/ 美国政府的一个网页,有几百条单词建议,指导你怎么写出简单的文章,不要用复杂的单词。 比如说,“a和b可以同时使用,也可以单独使用”,不要用 a and/or b,而要用 a or b or both。 微软上线了一套 Python 教程《Develop with Python on Windows》 微软上线了一套 Python 教程《Develop with Python on Windows》。 百度网盘下载器:https://github.com/b3log/baidu-netdisk-downloaderx 一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac。 参考链接 [1] 《Develop with Python on Windows》: https://docs.microsoft.com/zh-cn/windows/python/ 最后,感谢女朋友支持和包容,比❤️ 也可以在公号输入以下关键字获取历史文章:公号&小程序 | 设计模式 | 并发&协程 内推时间

2019-08-04 · 1 min · 56 words

每周分享第3期-史上最全的编程学习资料合集

【资料】史上最全的编程学习资料合集(持续更新) 【资料】一周 GitHub 开源项目推荐:阿里、腾讯、陌陌、bilibili…… 【资料】常用的 Go 框架、库和软件中文收录大全 【教程】高性能 Go 代码工坊(英文) 【文章】我用了10年 从深圳流水线厂妹做到纽约高薪程序员 【文章】2009年最热门的 iPhone 应用程序(英文) 苹果公司的应用商店即将满十周年,本文回顾了2009年最热门的付费应用和免费应用 【语言】v语言-语法综合了python和go 【工具】weixin python sdk 支持小程序云开发 【工具】网站收录了估值达到 10 亿美元的创业公司,实时更新 【工具】简洁的 Mac 图床客户端 uPic References [1] 【资料】史上最全的编程学习资料合集(持续更新): https://github.com/toutiaoio/weekly.manong.io [2] 【资料】常用的 Go 框架、库和软件中文收录大全: https://juejin.im/post/5d14a319e51d4577407b1d77 [3] 【教程】高性能 Go 代码工坊: https://dave.cheney.net/high-performance-go-workshop/gopherchina-2019.html [4] 【文章】2009年最热门的 iPhone 应用程序: https://www.fastcompany.com/90356079/whatever-happened-to-the-hottest-iphone-apps-of-2009 [5] 【语言】v语言-语法综合了python和go: https://github.com/vlang/v [6] 【工具】weixin python sdk 支持小程序云开发: https://github.com/gusibi/python-weixin [7] 【工具】网站收录了估值达到 10 亿美元的创业公司,实时更新: https://dujiaoshou.io/ [8] 【工具】简洁的 Mac 图床客户端 uPic: https://github.com/gee1k/uPic 最后,感谢女朋友支持和包容,比❤️ 也可以在公号输入以下关键字获取历史文章:公号&小程序 | 设计模式 | 并发&协程 内推时间

2019-06-29 · 1 min · 74 words

每周分享第2期-宇宙模拟器

1 宇宙模拟器 :http://spaceengine.org 2 APIJSON:https://github.com/APIJSON/APIJSON APIJSON是一种为API而生的 JSON网络传输协议 以及 基于这套协议实现的ORM库。 后端接口和文档自动化,前端(客户端) 定制返回JSON的数据和结构 3 【文章】小火箭对SpaceX星链计划低轨巨型星座的分析:https://mp.weixin.qq.com/s/NNmI_cqwo4ba0ViJ9O7f3Q 这篇对SpaceX 星链计划 可行性进行了详细的分析,共11575字,101图。预计阅读时间:1小时15分钟 4 微软与 Google 共同开设的量子算法课程:https://brilliant.org/courses/quantum-computing/ 通过浏览器模拟的量子计算环境,学习量子算法 5 一个VPS搜索工具: https://anothervps.com/vps/ 可怜我linode 都用不了了 6 一些有趣的网站: https://www.ctolib.com Github开源项目收集网站 http://www.nicetool.net 实用工具比较多 http://www.mvyxws.com/ 以视频方式分享医学知识的网站 https://www.tikitiki.cn 自由的音乐,能够试听并下载全网音乐 https://showmore.com/zh/ 在线录制屏幕的工具 https://weibomiaopai.com 视频下载 7 PySnooper:https://github.com/cool-RR/PySnooper python DeBug工具 8 pyecharts:https://github.com/pyecharts/pyecharts Echarts 是一个由百度开源的数据可视化,pycharts 是Echarts 的python版。 9 LeetCodeAnimation:https://github.com/MisterBooo/LeetCodeAnimation 用动画的形式呈现解LeetCode题目的思路 10 ColorUI:https://www.color-ui.com/ 鲜亮的高饱和色彩,专注视觉的小程序组件库 iPhone X怎么强制关机? iPhone X强制关机有三步: 按下音量+键然后松开; 按下音量-键然后松开; 之后按住侧边按钮(即电源键)直到iPhone X黑屏。 升级了iOS13,打电话的时候就停留在了通话界面,再也退不出去了。。只能用强制关机的方式。 才知道是这么个方式 最后,感谢女朋友支持和包容,比❤️ 也可以在公号输入以下关键字获取历史文章:公号&小程序 | 设计模式 | 并发&协程 ...

2019-06-22 · 1 min · 73 words

每周分享第1期-常用表情包收录

每周分享,分享看到的一些有意思的文章和项目 1 中国表情包大集合 https://zhaoolee.github.io/ChineseBQB/ 表情包目录(共收录2298张表情包)Emoticon package directory (commonly included 2298 emoticon pack) 2 谷歌产品替代品 一批谷歌产品的替代方案 https://nomoregoogle.com/ 3 Redis作者:开源维护者的挣扎和无奈 英文作者是著名开源项目 Redis 的开发者 antirez。截至 2019-06-04 为止,Redis 项目在 GitHub 将近有 37,000 Star,Fork 数达 14000。 https://mp.weixin.qq.com/s/6C7-4Fp46rxfn0J34ebKyg 4 一个分享 GitHub 上 有趣、入门级的开源项目网站 https://hellogithub.com 5 Saber - 新一代静态网站生成系统 https://saber.land 6 star-history: 帮助用户查看 github 项目 star 数目的历史 star-history 帮助用户查看 github 项目 star 数目的历史, 判断项目发展情况,项目地址:https://github.com/timqian/star-history 7 一个分类收集 GitHub 开源项目的网站,并对项目的热度和活跃度进行分析 项目地址:https://www.ctolib.com/ 8 git 提交信息规范检测工具 git-commit-msg-linter 项目地址:https://www.npmjs.com/package/git-commit-msg-linter 9 编码一时爽,重写火葬场?这些公司都重写了软件,结局却不同。 生存,还是死亡,这是一个问题。重写,还是不重写,这是导致生存或死亡的另一个问题。 https://mp.weixin.qq.com/s/SqxPoIDPuvKlrlqZmubpXA ...

2019-06-07 · 1 min · 78 words

Elasticsearch 安装和使用

安装使用 Elasticsearch 两种方法: 方法1 手动安装 Elasticsearch 安装到ubuntu Elasticsearch与Logstash需要Java作为运行环境 安装Java 8 将甲骨文Java PPA添加至apt: sudo add-apt-repository -y ppa:webupd8team/java 更新apt软件包数据库: sudo apt-get update HUGOMORE42 安装甲骨文Java 8的最新稳定版本,命令如下(在弹出的许可协议中点击接受): sudo apt-get -y install oracle-java8-installer 安装Elasticsearch 方法1 通过添加Elastic的软件包源列表利用软件包管理器安装Elasticsearch。 运行以下命令以将Elasticsearch公共GPG密钥导入apt: wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 接下来,创建Elasticsearch源列表: echo "deb http://packages.elastic.co/elasticsearch/${ELASTICSEARCH_VERSION}/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elk.list 更新apt软件包数据库: sudo apt-get update 安装Elasticsearch sudo apt-get -y install elasticsearch Elasticsearch已经安装完成。下面编辑其配置文件: sudo vi /etc/elasticsearch/elasticsearch.yml 限制来自外部的Elasticsearch实例访问活动(端口9200),找到指定network.host的一行,取消其注释并将其值替换为“localhost”: elasticsearch.yml excerpt (updated) network.host: localhost 启动elasticsearch ...

2017-05-18 · 2 min · 421 words