Tag: 开源

  • Chatbox:你的桌面上的终极AI合作伙伴

    Chatbox:你的桌面上的终极AI合作伙伴

    在我们进入今天的话题之前,让我与你分享一个故事。不久前,我发现自己在调试一些提示和API时,迫切需要一个简单易用的工具。我感觉或许还有其他人也需要这样的工具,于是我将其开源了。起初,我并没有想到它会如此受欢迎。我一直倾听来自开源社区的反馈,不断发展和改进它。现在,它已经成为了一个非常有用的AI桌面应用程序。有许多用户热爱Chatbox,他们不仅将其用于开发和调试提示,还用它进行日常聊天,甚至用精心设计的提示让AI扮演各种专业角色,帮助他们在日常工作中取得更多的成就。

    Chatbox Chatbox

    这就是Chatbox,你的桌面上的终极AI合作伙伴。

    项目介绍

    Chatbox是一款桌面客户端,它为你提供了多种尖端的大型语言模型(LLM)的支持,可在Windows、Mac和Linux上使用。无论你是在开发应用程序、需要与AI合作,还是只是想与一个有趣的AI进行对话,Chatbox都是你的理想选择。

    下载

    Chatbox提供了多个版本的下载,覆盖了主要操作系统:

    你可以访问GitHub发布页面下载最新版本或任何以前的版本。

    特色功能

    Chatbox拥有许多令人印象深刻的功能,使其成为了一款强大的工具:

    • 增强的提示功能
    • 数据本地存储,不会丢失
    • 支持多个尖端的LLM模型和提供商,如OpenAI、Azure OpenAI和ChatGLM-6B
    • 键盘快捷键,提高工作效率
    • Markdown和代码高亮显示
    • 提示库、消息引用
    • 流式回复
    • 人性化的用户界面设计和夜间模式
    • 适合团队协作,支持在团队内共享OpenAI API资源。查看教程
    • 提供安装包,无需部署
    • 免费且开源

    常见问题

    如果你有任何疑问或疑虑,可以查看我们的常见问题页面,这里涵盖了很多常见的问题和解答。

    Chatbox团队共享功能

    Chatbox允许你的团队成员共享同一OpenAI API帐户的资源,而不会暴露你的API密钥。查看教程以了解更多。

    为什么我创建了Chatbox?

    如前所述,Chatbox最初是为了帮助我调试一些提示和API而创建的。我发现自己需要一个简单且易于使用的提示和API调试工具。我认为可能还有其他人也需要这样的工具,所以我将其开源了。

    起初,我并没有想到它会如此受欢迎。我一直倾听来自开源社区的反馈,不断发展和改进它。现在,它已经成为了一个非常有用的AI桌面应用程序。有许多用户热爱Chatbox,他们不仅将其用于开发和调试提示,还用它进行日常聊天,甚至用精心设计的提示让AI扮演各种专业角色,帮助他们在日常工作中取得更多的成就。

    未来计划

    Chatbox的未来计划非常激动人心,我们将不断改进和扩展功能,以满足用户的需求。一些计划中的功能包括:

    • AI聊天和会话管理
    • 所有重要消息数据的本地存储
    • Markdown支持
    • 流式回复
    • API主机配置
    • 自动生成选项卡标题
    • 清除消息的按钮
    • 夜间/暗模式
    • 消息令牌估算
    • GPT4支持
    • 多语言支持
    • 代码块的复制按钮
    • AI消息生成的停止按钮
    • 选项卡的拖放排序
    • Web版本
    • Azure OpenAI API兼容性
    • 改进的提示设置
    • 提示库
    • 内置AI服务
    • 快捷键
    • Claude
    • 温度设置
    • 对话特殊设置
    • 自定义模型
    • 与文件的对话
    • 与URL的对话
    • 移动版(Android、iOS)
    • 跨设备同步
    • 类似Slack的线程
    • 更多…

    如何贡献

    我们欢迎各种形式的贡献,包括但不限于:

    • 提交问题
    • 提交拉取请求
    • 提交功能请求
    • 提交错误报告
    • 提交文档修订
    • 提交翻译
    • 提交其他形式的贡献
  • EasyPR:开源中文车牌识别系统

    EasyPR:开源中文车牌识别系统

    在现代社会,车辆的管理和追踪是非常重要的。无论是交通监管、停车场管理还是智能交通系统,都需要能够准确识别车辆的车牌信息。而正是在这个背景下,EasyPR应运而生,它是一个开源的中文车牌识别系统,致力于成为一个简单、高效、准确的非限制场景下的车牌识别库。

    EasyPR,开源车牌识别,中文车牌,车牌识别系统 EasyPR,开源车牌识别,中文车牌,车牌识别系统

    开篇故事

    让我们来想象一个场景:您是一个城市的交通管理官员,每天都需要监管道路上的车辆,确保交通秩序井然。然而,城市的交通量巨大,手动识别每辆车辆的车牌是一项几乎不可能完成的任务。这就是您引入EasyPR的原因。

    每天早晨,当您坐在办公室里,一大堆车辆监控摄像头的画面显示在您的电脑屏幕上。您启动了EasyPR,这个开源的车牌识别系统。EasyPR基于开源库OpenCV,因此您可以获取全部源代码,并且移植到OpenCV支持的各种平台。

    在监控摄像头捕捉的图像中,EasyPR能够准确识别出中文车牌,并将结果以文本形式呈现在您的屏幕上。您可以迅速检查违规停车、超速行驶等交通违规行为,有针对性地进行执法。

    EasyPR的特点

    相比于其他的车牌识别系统,EasyPR具有一些独特的特点:

    1. 基于OpenCV:EasyPR基于开源库OpenCV,这意味着您可以轻松获取源代码,并将其移植到各种平台上。

    2. 中文识别:EasyPR具备中文车牌识别的能力。无论是苏EUK722还是粤B88888,它都可以准确地输出识别结果。

    3. 高识别率:在图片清晰的情况下,EasyPR的车牌检测与字符识别可以达到80%以上的精度,为交通管理提供了高效工具。

    最新更新

    随着技术的不断进步,EasyPR也在不断完善。最新版本1.6正式发布,主要有以下几点更新:

    1. 修正了多项readme的文本提示,提升了文档的可读性。

    2. 增加了C#调用EasyPR的一个项目的链接,为开发者提供更多的调用选项。

    跨平台支持

    EasyPR不仅支持Windows平台,还支持其他平台,如Android、Linux、iOS、Mac等。这些平台的版本可能会有一些差异,但EasyPR的核心功能都得到了保留。

    兼容性

    当前EasyPR是基于OpenCV3.0版本开发的,3.0及以上的版本应该可以兼容,以前的版本可能会存在不兼容的现象。因此,建议使用3.0及以上的版本以获得最佳的兼容性和性能。

    示例与用法

    让我们来看一个简单的EasyPR用法示例:

    #include "easypr.h"
    
    using namespace easypr;
    
    int main() {
        CPlateRecognize pr;
        pr.setResultShow(false);
        pr.setDetectType(PR_DETECT_CMSER);
    
        vector<CPlate> plateVec;
        Mat src = imread("car.jpg"); // 读取车辆图片
        int result = pr.plateRecognize(src, plateVec);
    
        if (result == 0) {
            for (size_t i = 0; i < plateVec.size(); i++) {
                CPlate plate = plateVec.at(i);
                Mat plateMat = plate.getPlateMat();
                string license = plate.getPlateStr();
    
                // 处理识别结果
                cout << "识别结果:" << license << endl;
            }
        } else {
            cout << "识别失败" << endl;
        }
    
        return 0;
    }

    在这个示例中,我们首先创建了一个CPlateRecognize的对象,然后设置了一些识别的属性,包括关闭结果展示窗口和使用CMER车牌定位算法。

    接着,我们读取一张车辆图片,并调用plateRecognize方法进行车牌识别。如果识别成功,我们将遍历识别结果并输出车牌信息。

    版权与帮助

    EasyPR的源代码与训练数据遵循Apache v2.0协议开源。在使用前,请确保了解该协议的内容。

    如果您在使用过程中遇到任何问题,或需要进一步的帮助和支持,请访问EasyPR的GitHub页面或加入EasyPR讨论QQ群,群号是:366392603。

    致谢

    EasyPR的成功离不开各位开发者和贡献者的辛勤付出。在此,我们要特别感谢以下贡献者:

    • liuruoze:1.0-1.2,1.5版作者
    • 海豚嘎嘎(车主之家):1.3版算法贡献者
    • Micooz:1.3-1.4版架构重构、Linux与Mac支持
    • jsxyhelu:deface版本一
    • zhoushiwei:deface版本二
    • ahccom:新的plateLocate函数
    • 阿水:1.3版整合、数据标注等工作
    • fan-wenjie:1.5版OpenCV整合版提供者
    • Free:1.6版数据提供者

    感谢各位对EasyPR的支持和贡献!

    结语

    EasyPR是一款强大的中文车牌识别系统,它为交通管理、智能交通系统等领域提供了高效、准确的工具。无论您是交通管理官员还是开发者,EasyPR都能帮助您更好地完成任务。赶快尝试EasyPR,让车牌识别变得更容易!

  • Python编程的精华:值得关注的项目和编程风格指南

    Python编程的精华:值得关注的项目和编程风格指南

    Python,这门简洁而强大的编程语言,一直以来都备受程序员的喜爱。无论是用于数据分析、Web开发、自然语言处理还是其他领域,Python都有着广泛的应用。在本文中,我们将介绍一些值得关注的Python项目以及编程风格指南,帮助你更好地掌握这门语言。

    项目:Python生态系统的明星

    1. PyPy

    PyPy是Python的一个高性能实现,它通过即时编译技术提供了比标准CPython更快的执行速度。如果你追求Python代码的性能,PyPy绝对值得一试。

    2. Celery

    Celery是一个分布式任务队列库,它让异步任务处理变得容易。无论是在Web应用中处理后台任务还是构建分布式系统,Celery都是一个强大的工具。

    3. Jinja2

    Jinja2是一个现代的、高性能的模板引擎,广泛用于Web开发中。它的语法清晰简单,支持模板继承和条件渲染,是许多Web框架的首选。

    4. Read the Docs

    Read the Docs是一个开源文档托管平台,它为项目提供了自动生成和托管文档的能力。无论你是开源项目的维护者还是用户,Read the Docs都能提供便捷的文档管理。

    5. gevent

    gevent是一个基于协程的网络库,它使得编写异步、高并发的网络应用变得更加容易。如果你需要构建高性能的网络应用,不妨考虑使用gevent。

    6. pyenv

    pyenv是一个Python版本管理工具,它允许你在同一台计算机上管理多个Python版本。这对于开发人员来说非常方便,可以确保不同项目使用的Python版本不冲突。

    7. virtualenv

    virtualenv是一个虚拟环境管理工具,它允许你在同一系统上创建多个隔离的Python环境。这对于项目之间的依赖管理非常有帮助,可以确保不同项目的依赖不冲突。

    8. Stackless Python

    Stackless Python是一个Python变体,它支持更轻量级的线程,使得并发编程更容易。如果你关注多线程编程,Stackless Python可能是一个有趣的选择。

    9. Beautiful Soup

    Beautiful Soup是一个用于解析HTML和XML文档的库,它让网页数据抓取和处理变得更加简单。如果你需要从网页中提取数据,Beautiful Soup是一个强大的工具。

    10. 结巴中文分词

    结巴中文分词是一个流行的中文分词库,用于将中文文本分割成词语。它在自然语言处理领域有着广泛的应用,可以帮助你处理中文文本数据。

    11. Green Unicorn

    Green Unicorn(简称Gunicorn)是一个Python WSGI HTTP服务器,它适用于部署Web应用。Gunicorn具有高性能和稳定性,是许多Web开发者的选择。

    12. Sentry

    Sentry是一个开源的错误追踪工具,它可以帮助你监控和调试生产环境中的错误。无论你是开发人员还是系统管理员,Sentry都是一个有力的工具。

    13. Shovel

    Shovel是一个简单而强大的任务队列库,它基于RabbitMQ。如果你需要处理异步任务,Shovel是一个不错的选择。

    14. Pyflakes

    Pyflakes是一个静态代码分析工具,它用于检查Python代码中的语法错误和潜在的问题。它可以帮助你提高代码质量和可维护性。

    15. pytest

    pytest是一个功能强大的测试框架,它使得编写和运行Python测试变得更加简单。无论你是写单元测试还是集成测试,pytest都是一个出色的选择。

    编程风格指南:写出优雅的Python代码

    除了关注这些优秀的Python项目,编写干净、可读、高效的代码也是至关重要的。以下是一些Python编程风格指南,帮助你在代码中遵循最佳实践:

    1. PEP 8

    PEP 8是Python Enhancement Proposal的缩写,它是Python官方的代码风格指南。遵循PEP 8可以使你的代码具有一致的风格,更容易被其他开发者理解和维护。

    2. Google Python Style Guide

    Google Python Style Guide是Google内部使用的Python代码风格指南,它包含了许多实用的建议和最佳实践。即使你不在Google工作,也可以从中受益。

    3. Code Style from The Hitch

    “The Hitchhiker’s Guide to Python”是一本Python开发的经典指南,它包含了丰富的编码和项目组织建议。这本指南是Python社区的宝藏之一。

    结语

    Python的强大在于它的生态系统和丰富的库,以及编写高质量代码的能力。无论你是一名Python初学者还是经验丰富的开发者,这些项目和编程风格指南都将有助于你更好地掌握这门语言。

  • 项目介绍:onedrive-cf-index-ng – 让你的OneDrive更强大

    项目介绍:onedrive-cf-index-ng – 让你的OneDrive更强大

    在数字化时代,云存储已经成为了我们日常生活的一部分。而OneDrive作为微软提供的云存储服务,已经在全球范围内广泛使用。但是,你是否曾经感到过OneDrive的界面和功能有些局限?你是否曾经希望有一种更好的方式来管理和分享你的OneDrive文件?如果是的话,那么你绝对不能错过今天要介绍的项目 – onedrive-cf-index-ng。

    onedrive-cf-index-ng onedrive-cf-index-ng

    项目概述

    onedrive-cf-index-ng 是一个基于Cloudflare和Next.js的项目,它可以让你轻松地管理、展示、分享、预览和下载你的OneDrive文件。这个项目的灵感来自于另一个名为 onedrive-vercel-index 的项目,但它有着更多的优势和功能。

    这是一个开源项目,由 @lyc8503 主导开发和维护。它旨在让你的OneDrive使用体验更加出色,完全免费,并且无需后端服务器支持。接下来,我们将深入了解 onedrive-cf-index-ng 的功能和优势。

    项目亮点

    部署简单

    一键部署,无需复杂的配置。你只需花不到15分钟的时间,就可以在Cloudflare Pages上免费部署你的onedrive-cf-index-ng。

    无依赖性

    不再依赖第三方服务,你可以完全掌控你的OneDrive文件,无需担心数据泄漏或不稳定的服务。

    高度定制化

    onedrive-cf-index-ng 提供了丰富的自定义选项,你可以根据自己的需求来定制界面和功能,使其完全符合你的期望。

    极速响应

    项目的响应速度非常快,让你可以迅速访问和管理你的OneDrive文件,不会浪费你的时间。

    快速上手

    如果你对这个项目感兴趣,可以立即开始使用。快速开始指南将帮助你一步步设置和部署项目。如果你喜欢这个项目,不妨给它一个星星⭐️,以支持开发者的工作。

    项目演示

    你可以在 lyc8503’s Fileshare 上查看项目的在线演示。这个演示展示了项目的各种功能,让你可以更直观地了解它是如何工作的。

    功能一览

    onedrive-cf-index-ng 提供了丰富的功能,使你可以更好地管理你的OneDrive文件:

    • 文件预览:支持预览PDF、EPUB、Markdown、代码、纯文本等文件类型。
    • 列表/网格布局:提供多种文件显示方式,满足不同需求。
    • 视频和音频播放:支持在线播放mp4、mp3等多种格式的视频和音频文件。
    • Office文件预览:可以预览docx、pptx、xlsx等Office文件。
    • 阅读README.md:可以预览README.md文件内容,包括代码块和图片。
    • 分页功能:适用于文件夹中包含200个以上文件时。
    • 保护文件夹:可以设置密码保护文件夹,提高文件的安全性。
    • 多文件下载:支持多个文件或文件夹的压缩下载。
    • 本地搜索:可以在共享的OneDrive文件中进行本地搜索。

    除此之外,项目还提供了更多功能,包括流畅的部署、直接提供原始文件、全面的暗黑模式支持等等。

    文档

    如果你想了解更多关于项目的信息和配置,可以查看项目的文档。文档中包括了详细的设置说明、功能介绍以及常见问题的解答。如果你遇到了问题,也可以在文档中找到解决方案。

    无后端服务器支持

    onedrive-cf-index-ng 采用了无后端服务器的架构,完全免费。这意味着你不需要购买额外的服务器来支持项目的运行,一切都在云端完成。

    开源许可

    这个项目采用了 MIT 开源许可,你可以自由使用、修改和分发它,只需遵守许可协议即可。

    未来计划

    这个项目还有许多未来计划,包括更多的文档、本地/Docker部署支持、代码中的一些待办事项以及更多的测试。开发者们将继续努力,使这个项目变得更加强大和稳定。

    结语

    onedrive-cf-index-ng 是一个出色的项目,它为OneDrive用户带来了全新的体验。无论你是普通用户还是开发者,都可以受益于这个项目。它的部署简单,功能强大,完全免费,是你管理OneDrive文件的绝佳选择。

    如果你是OneDrive的用户,不妨尝试一下这个项目,让你的OneDrive变得更强大、更灵活,让你的文件管理变得更加便捷。不要错过这个机会,赶快尝试一下吧!

  • 教程:如何选择最适合你的OCR工具,识别图中的文本、表格和代码

    教程:如何选择最适合你的OCR工具,识别图中的文本、表格和代码

    在数字化时代,我们每天都会处理大量的文本、图像和文档。有时,我们需要从图像中提取文本信息,这就是OCR(光学字符识别)技术发挥作用的时候。OCR技术不仅可以帮助我们转换纸质文档为可编辑文本,还可以识别图中的表格、代码和格式化文本。然而,面对众多的OCR工具和服务,如何选择一个最适合你的工具呢?

    今天,我将带你深入了解不同OCR工具的特点,以及如何根据你的需求选择最合适的工具,无论是处理代码、表格还是其他格式的文本。

    什么是OCR?

    OCR(Optical Character Recognition)是一种技术,用于将图像中的文本转换成可编辑的文本。它通过识别字符、字母和数字的形状和排列来实现这一目标。随着深度学习和人工智能的发展,现代OCR工具已经可以高度准确地识别各种字体和手写文字。

    但是,OCR不仅仅限于识别文字。它还可以用于识别图中的表格、代码、数学公式和其他特定格式的文本。这种多功能性使得OCR成为了处理多种类型图像数据的重要工具。

    OCR的应用领域

    OCR技术在各个领域都有广泛的应用,以下是一些常见的应用领域:

    1. 文档数字化

    在办公室和企业中,OCR被广泛用于将纸质文档转化为可编辑的电子文本。这样可以节省存储空间,并方便文档检索和编辑。

    2. 数据提取

    OCR可以用于从发票、收据和合同等文档中提取关键信息,如日期、金额和姓名。这对于会计和数据输入工作非常有用。

    3. 手写文字识别

    一些OCR工具具有强大的手写文字识别功能,可以将手写笔记和书信转换为可编辑文本。

    4. 图像中的表格识别

    OCR可以用于识别图像中的表格,并将其转化为可编辑的电子表格。这对于数据分析和数据录入非常重要。

    5. 代码识别

    对于程序员和开发人员来说,OCR可以用于从图像中识别代码片段。这对于代码重构和文档编写非常有用。

    6. 数学公式识别

    OCR工具还可以识别图像中的数学公式,这对于科研和教育领域的人员非常有帮助。

    如何选择最适合你的OCR工具?

    现在,让我们进入正题,讨论如何选择最适合你的OCR工具。要选择合适的工具,你需要考虑以下几个关键因素:

    1. 识别准确率

    OCR工具的最重要特征之一是其识别准确率。不同的工具在处理不同类型的文本和图像时可能表现出不同的准确率。如果你需要高度准确的文本识别,那么你应该选择一个经过验证并具有良好声誉的OCR工具。

    2. 支持的文本类型

    不同的OCR工具可能对支持的文本类型有不同的限制。一些工具可能只能识别常规文本,而另一些工具可以处理表格、代码和数学公式等特殊文本类型。确保你选择的工具能够满足你的特定需求。

    3. 图像质量要求

    OCR的识别准确率受到图像质量的影响。如果你的图像质量较差,可能需要选择一个能够处理模糊或噪声图像的OCR工具。另外,一些工具可能需要高分辨率的图像以获得最佳识别结果。

    4. 语言支持

    如果你需要识别不同语言的文本,确保选择的OCR工具支持这些语言。一些OCR工具具有多语言支持,而其他工具可能只支持特定语言。

    5. 成本

    成本也是一个重要的考虑因素。一些OCR工具是免费的,而其他工具可能需要付费订阅或按使用量收费。根据你的预算和需求选择一个合适的工具。

    推荐的OCR工具

    现在,让我介绍一些常用的OCR工具,它们在不同方面都有自己的优势:

    1. WPS OCR

    WPS Office的OCR功能在表格识别方面表现较好,但在其他方面的识别准确率可能有所不足。如果你需要处理表格,可以考虑使用这个工具。

    2. Google OCR

    Google的OCR功能在识别常规文本方面非常准确,同时也支持多语言。它可以用于多种应用,但对特殊文本类型的支持可能有限。

    3. PaddleOCR

    PaddleOCR是一个开源的OCR工具,具有表格识别和特定文本类型的支持。它的准确率相对较高,并且适用于多种场景。

    4. Meta Nougat OCR

    Meta Nougat是一个专门用于数学公式识别的OCR工具,对于科研和教育领域的人员非常有帮助。它输出的格式是Mathpix Markdown。

    5. 扫描全能王

    扫描全能王是一款功能强大的OCR工具,支持多种文本类型的识别。它适用于多种应用场景,并且具有良好的识别准确率。

    如何使用OCR工具

    最后,让我们简要介绍一下如何使用OCR工具来识别图中的文本、表格和代码:

    1. 下载并安装你选择的OCR工具。

    2. 打开工具并导入需要识别的图像或文档。

    3. 选择识别的文本类型,例如普通文本、表格或代码。

    4. 运行OCR工具进行识别。

    5. 检查识别结果并进行必要的修正和编辑。

    6. 保存识别后的文本或表格,并进行后续处理。

    结语

    OCR技术是一个强大的工具,可以帮助我们从图像中提取文本信息,包括表格、代码和特定格式的文本。在选择OCR工具时,要考虑识别准确率、支持的文本类型、图像质量要求、语言支持和成本等因素。根据你的需求,选择一个最适合你的工具,并学会如何使用它来提高工作效率。

    无论你是办公室职员、数据分析师还是程序员,OCR技术都可以帮助你更轻松地处理图像中的文本。现在,你已经了解了如何选择和使用OCR工具,赶快尝试一下吧,提升你的工作效率和准确性!

  • GitHub Actions 助力 OpenWrt 在线集成编译:打造个性化路由器固件

    GitHub Actions 助力 OpenWrt 在线集成编译:打造个性化路由器固件

    随着智能家居设备的普及和网络安全的重要性日益突显,拥有一款强大的路由器固件变得至关重要。OpenWrt 是一款流行的开源路由器固件,提供了丰富的功能和高度的可定制性。然而,编译和定制 OpenWrt 可能会对非技术专业人士来说有些困难,尤其是在需要不断更新和定制的情况下。

    GitHub Actions 是 GitHub 提供的一项强大的自动化工具,可以帮助开发者自动构建、测试和部署项目。在这篇文章中,我们将介绍如何借助 GitHub Actions 来在线集成编译 OpenWrt,并定制个性化的路由器固件。无需上传配置文件,一切都可以自动完成,让您轻松打造强大的路由器。

    为什么选择 GitHub Actions?

    GitHub Actions 是一个强大的自动化工具,为开发者提供了很多便利。使用 GitHub Actions 可以实现以下优势:

    • 自动化构建和测试: 您可以设置自动构建和测试流程,确保您的代码始终处于可用状态。
    • 自动部署: 将代码自动部署到服务器或云平台,减少手动操作的风险。
    • 持续集成/持续部署(CI/CD): 实现 CI/CD 流程,让团队更轻松地合并和发布代码。
    • 高度可定制性: 您可以根据项目的需要定制 GitHub Actions 工作流程,满足特定需求。

    现在,让我们看看如何使用 GitHub Actions 来在线集成编译 OpenWrt。

    使用教程

    准备工作

    在开始之前,您需要做好以下准备工作:

    • 拥有一个 GitHub 账号。
    • 在 GitHub 上开启 Actions 功能。
    • 具备基本的 Git 技能,了解如何使用 Git 进行版本控制。
    • 拥有自己的 OpenWrt 分支,可以选择 Lean 源 或 官方源。
    • 有一颗愿意动脑筋的头脑。

    步骤一:注册 GitHub 账号并开启 GitHub Actions

    如果您已经有 GitHub 账号,可以直接登录。如果没有,可以注册一个 GitHub 账号。然后,在 GitHub 设置中开启 Actions 功能。这将使您能够在仓库中使用 GitHub Actions。

    步骤二:Fork OpenWrt 仓库

    在 GitHub 上,访问 coolsnowwolf/lede 或 OpenWrt trunk,并点击右上角的 “Fork” 按钮。这将创建一个您自己的仓库的副本,以便您可以进行自定义操作。

    步骤三:上传工作流程文件

    在您 Fork 的仓库中,创建一个名为 .github/workflows/ 的文件夹。然后,将项目中的 openwrt-ci.yml 和 merge-upstream.yml 文件上传到这个文件夹中。这些文件定义了 GitHub Actions 的工作流程,以实现自动编译和合并上游提交。

    步骤四:定制您的固件

    如果您希望对固件进行定制,您可以在 openwrt-ci.yml 文件中找到详细的注释部分,介绍了如何在脚本中进行自定义。简单来说,您只需要取消注释相应的行即可。这样,您可以根据自己的需求添加或删除功能、主题、软件包等。

    步骤五:开始编译

    一切准备就绪后,GitHub Actions 将自动开始编译。您可以返回您的仓库首页,点击页面上方的 “Actions” 按钮来查看编译进度。

    步骤六:下载编译完成的固件

    在 “Actions” 标签页中,如果相应的集成活动已成功完成(显示为绿色),点击页面右上角的 “Artifacts” 即可看到您的固件(通常是一个压缩包)。点击即可开始下载。

    结语

    借助 GitHub Actions,编译和定制 OpenWrt 变得异常简单。您不再需要手动进行繁琐的编译和配置,一切都可以自动完成。无论您是普通用户还是技术高手,都可以轻松地创建强大的路由器固件,满足您的需求。

    如果您想深入了解如何使用 GitHub Actions 编译 OpenWrt,可以参考相关文章,作者糖炒栗子为您提供了详细的教程和配置修改问题的解决方案。现在,赶紧开始吧,打造您的个性化路由器固件!

  • LocalSend:本地网络通信的革命性工具

    LocalSend:本地网络通信的革命性工具

    在数字化的世界里,我们经常依赖于互联网来与他人进行通信和文件共享。然而,有时候我们可能会遇到网络不稳定、隐私问题或者根本没有网络连接的情况。在这些情况下,我们需要一种能够在本地网络中快速、安全地传输信息和文件的方法。正是在这个背景下,LocalSend 应运而生。

    LocalSend:本地网络通信的革命性工具 LocalSend:本地网络通信的革命性工具

    LocalSend 是一款免费、开源的应用程序,它允许您在本地网络中与附近的设备安全地共享文件和消息,而无需互联网连接。无论是在家庭、办公室还是在没有互联网接入的地方,LocalSend 都能够为您提供高效、可靠的本地通信解决方案。

    什么是 LocalSend?

    LocalSend 是一款跨平台的应用程序,通过使用 REST API 和 HTTPS 加密,实现了设备之间的安全通信。与其他依赖外部服务器的消息应用不同,LocalSend 不需要互联网连接或第三方服务器,因此具有快速和可靠的本地通信特性。

    这意味着您可以在不担心隐私泄露的情况下,与身边的设备进行通信,而无需依赖互联网。LocalSend 的安全通信协议确保了数据的机密性和完整性,使其成为一种值得信赖的本地通信工具。

    如何使用 LocalSend?

    LocalSend 的使用非常简单,您只需按照以下步骤进行操作:

    1. 安装 Flutter
    2. 克隆 LocalSend 仓库
    3. 运行 flutter pub get 下载依赖项
    4. 运行 dart run build_runner build -d 生成代码
    5. 运行 flutter run 启动应用程序

    如果出现与所需 Flutter 版本和已安装 Flutter 版本不匹配的情况,您可以使用 fvm 来管理项目的 Flutter 版本。安装 fvm 后,运行 fvm flutter 替代 flutter 即可。

    下载 LocalSend

    为了确保安全和稳定的使用 LocalSend,建议您从应用商店或软件包管理器下载应用程序,因为 LocalSend 不提供自动更新功能。以下是 LocalSend 的下载链接:

    更多有关下载渠道的信息,请查看 distribution channels。

    LocalSend 工作原理

    LocalSend 使用了一种安全的通信协议,允许设备使用 REST API 进行相互通信。所有数据都通过 HTTPS 安全地发送,TLS/SSL 证书会在每台设备上即时生成,确保最高级别的安全性。

    如果您想深入了解 LocalSend 协议的工作原理,请参阅文档。

    贡献

    我们欢迎任何对改进 LocalSend 感兴趣的人士的贡献。如果您想要贡献,有几种参与方式可供选择:

    翻译

    您可以帮助将此应用程序翻译成其他语言!

    1. Fork 此仓库
    2. 选择一种方式
      • 在现有语言中添加缺失的翻译:只需更新 assets/i18n 中的 _missing_translations_<locale>.json 文件
      • 修复现有翻译:更新 assets/i18n 中的 strings_<locale>.i18n.json 文件
      • 添加新的语言:创建一个新文件,参考语言代码。
    3. 可选步骤:重新运行此应用程序
      1. 确保您已经从源代码启动了此应用程序一次。
      2. 通过 flutter pub run slang 更新翻译
      3. 通过 flutter run 运行应用程序
    4. 提交拉取请求

    修复 Bug 和改进

    • Bug 修复: 如果您发现 Bug,请创建一个包含清晰问题描述和如何修复的拉取请求。
    • 改进: 对于如何改进 LocalSend 的想法,请先创建一个 issue,以便我们讨论为什么需要该改进。

    有关更多信息,请查看 contributing guide。

    构建 LocalSend

    以下命令仅供维护者使用。

    Android

    传统 APK

    flutter build apk

    Google Play 的 AppBundle

    flutter build appbundle

    iOS

    flutter build ipa

    macOS

    flutter build macos

    Windows

    传统

    flutter build windows

    本地 MSIX 应用程序

    flutter pub run msix:create

    准备上架商店的版本

    flutter pub run msix:create --store

    Linux

    传统

    flutter build linux

    AppImage

    appimage-builder --recipe AppImageBuilder.yml

    Snap

    欢迎提交拉取请求。已经有一个 snap 分支可供参考。

    贡献者

    查看所有贡献者

    LocalSend 是一个充满活力的开源项目,受到了许多人的支持和贡献。感谢所有为项目做出贡献的人,你们的努力使 LocalSend 成为了一款出色的本地通信工具。

    在数字化时代,LocalSend 为解决本地通信难题提供了一种令人印象深刻的解决方案。无论您是普通用户还是开发者,LocalSend 都将为您提供高效、安全的本地通信体验。

    结语

    LocalSend 是一款革命性的应用程序,为本地通信带来了崭新的解决方案。它不仅简单易用,还充分考虑了用户的隐私和安全需求。不再受限于互联网连接的条件下,LocalSend 让本地通信变得更加便捷和可靠。

    无论是在家庭、办公室还是在没有互联网的偏远地区,LocalSend 都是一款强大的工具,可帮助您与附近的设备进行通信和文件共享。现在,您可以尝试下载 LocalSend,体验它的强大功能!

  • 如何在ESXi 7或8上使用Realtek网卡

    如何在ESXi 7或8上使用Realtek网卡

    在虚拟化环境中,ESXi是一种常用的虚拟化平台,但是它对于一些特定的硬件可能存在兼容性问题。其中之一就是Realtek网卡,很多用户在ESXi 7或8上使用Realtek网卡时遇到了问题。本教程将向您介绍如何解决这些问题,以便您能够在ESXi 7或8上成功使用Realtek网卡。

    开篇故事

    曾经有一位ESXi用户,他花了很长时间寻找ESXi 7或8上支持Realtek网卡的解决方案。他在各种论坛和社交媒体上寻求帮助,但一直没有找到满意的答案。最终,他决定尝试一些不同的方法,最终成功地让Realtek网卡在ESXi 7和8上运行。现在,他将他的经验分享给大家,帮助那些也在寻找解决方案的用户。

    步骤一:了解问题

    在继续之前,我们需要了解为什么Realtek网卡在ESXi 7和8上会遇到问题。根据论坛中的一些讨论,从ESXi 7开始,VMware移除了内核中的Linux内核代码,导致一些常用的Linux驱动无法在ESXi上使用。这就是为什么一些用户无法直接将Realtek网卡用于ESXi 7和8的原因。

    步骤二:考虑替代方案

    在解决Realtek网卡在ESXi 7和8上的兼容性问题之前,我们可以考虑一些替代方案:

    • 使用其他网卡:考虑更换一张兼容ESXi 7和8的网卡,这可能是最简单的解决方案之一。
    • 尝试Proxmox Virtual Environment (PVE):一些用户建议尝试PVE,它在硬件兼容性方面可能更好。

    步骤三:寻找Realtek网卡驱动

    如果您决定坚持使用Realtek网卡,并且无法更换硬件或尝试其他虚拟化平台,那么您可以尝试寻找Realtek网卡的第三方驱动程序。虽然官方的ESXi可能不支持Realtek网卡,但社区中可能有人开发了相应的驱动程序。

    请注意,这可能需要一些技术知识,并且不一定会100%成功。您可以在互联网上的论坛、社交媒体或GitHub等开源项目上搜索,看看是否有人已经为Realtek网卡创建了ESXi驱动程序。

    步骤四:实施解决方案

    一旦您找到了适用于Realtek网卡的ESXi驱动程序,接下来的步骤涉及实施这个解决方案。通常,这涉及将驱动程序安装到ESXi主机上,并进行相应的配置。这一部分可能因您找到的驱动程序而异,因此请务必查阅相关文档或社区支持来获得详细的指导。

    步骤五:测试和故障排除

    完成安装和配置后,务必进行测试以确保Realtek网卡正常工作。如果遇到问题,不要气馁。您可以再次查阅相关文档或寻求社区支持,以解决潜在的问题。

    结论

    虽然ESXi 7和8可能不直接支持Realtek网卡,但通过寻找第三方驱动程序和仔细的配置,您仍然可以让它们在这些虚拟化平台上运行。然而,我们仍然建议在可能的情况下考虑更换兼容性更好的网卡或尝试其他虚拟化平台,以减少潜在的问题和麻烦。

    希望这篇教程对您有所帮助,祝您成功在ESXi 7和8上使用Realtek网卡!

  • 如何购买便宜的服务器或自己搭建服务器

    如何购买便宜的服务器或自己搭建服务器

    在数字化时代,拥有自己的服务器成为越来越多人的需求。无论是用于网站托管、应用开发还是数据存储,服务器都扮演着关键的角色。然而,对于个人开发者或小型企业来说,购买昂贵的服务器并不划算。本文将介绍如何购买便宜的服务器或自己搭建服务器,以满足您的需求。

    选择合适的服务器配置

    在购买服务器之前,首先要明确您的需求。不同的应用和用途需要不同配置的服务器。以下是一些常见的服务器配置选项:

    • CPU核心数和频率:根据您的应用需求,选择适当数量和频率的CPU核心。如果是轻度应用,较低的核心数和频率可能足够;而对于需要高性能的任务,可以选择更多核心和更高频率的CPU。

    • 内存(RAM):内存决定了服务器能够同时运行的应用数量和性能。选择足够大的内存以确保服务器不会因内存不足而变慢。

    • 存储:存储类型和容量也是重要因素。固态硬盘(SSD)通常比传统机械硬盘(HDD)更快,但价格较高。选择适当的存储容量以满足您的数据存储需求。

    • 网络带宽:根据您的流量需求选择适当的网络带宽。更高的带宽可以处理更多的访问请求,但也会增加成本。

    选择合适的服务器供应商

    一旦明确了服务器配置需求,接下来是选择合适的服务器供应商。有几种选择:

    1. 云服务器供应商:云服务器如AWS、Azure、Google Cloud等提供了灵活的按需计费选项,您可以根据需求随时扩展或缩减服务器资源。这是一个适合小规模应用和初创公司的选择。

    2. 虚拟主机:虚拟主机是一种共享服务器资源的托管服务,适用于个人网站和小型博客。它通常比独立服务器便宜,但资源受到限制。

    3. 自托管服务器:如果您有技术知识和资源,可以考虑自行购买服务器硬件并自行搭建。这可以降低长期成本,但需要更多的管理和维护。

    购买便宜的服务器的技巧

    如果您的预算有限,以下是一些购买便宜服务器的技巧:

    1. 寻找特价和促销:服务器供应商通常会定期推出特价和促销活动。关注这些活动,可能会获得更多优惠。

    2. 比较不同供应商:不同供应商的价格和配置可能会有差异。比较多家供应商的价格和服务,找到最符合您需求的。

    3. 选择合适的套餐:一些供应商提供多种套餐选项,包括标准、高性能和低成本套餐。选择最适合您需求的套餐,不要购买过多不需要的资源。

    4. 考虑预付费:一些供应商提供预付费选项,通常比按需计费便宜。如果您计划长期使用服务器,可以考虑预付费套餐。

    5. 使用自动化工具:自动化工具可以帮助您管理服务器,提高效率并减少成本。例如,使用Docker容器化您的应用程序可以减少服务器资源的浪费。

    6. 寻找开源和免费解决方案:有许多开源和免费的服务器软件和工具可供使用,可以降低成本。

    7. 考虑长期规划:在购买服务器时,考虑未来的需求。选择一个能够满足未来增长的服务器配置,以避免频繁升级。

    自己搭建服务器的步骤

    如果您决定自己搭建服务器,以下是一些基本步骤:

    1. 选择硬件:购买服务器硬件,包括CPU、内存、存储和网络适配器。

    2. 选择操作系统:选择适合您需求的操作系统,例如Linux或Windows Server。

    3. 安装操作系统:将选择的操作系统安装到服务器上,并进行基本配置。

    4. 安装服务器软件:根据需求安装和配置所需的服务器软件,例如Web服务器(如Apache或Nginx)、数据库(如MySQL或PostgreSQL)等。

    5. 配置网络:设置服务器的网络配置,包括IP地址、子网掩码和网关。

    6. 设置安全性:确保服务器的安全性,包括防火墙设置、更新操作系统和软件以及实施访问控制。

    7. 监控和维护:设置监控工具,以便随时监视服务器的性能和健康状况。进行定期的维护工作,包括备份和升级。

    8. 测试和优化:测试您的应用程序在服务器上的性能,进行必要的优化以确保顺畅运行。

    9. 备份和恢复:设置定期备份策略,以防止数据丢失,并确保您能够在需要时进行恢复。

    10. 扩展和升级:根据需求扩展服务器资源或升级硬件,以满足应用程序的增长。

    总的来说,购买便宜的服务器或自己搭建服务器都是可行的选择,取决于您的需求和技术水平。无论您选择哪种方式,都需要谨慎计划和管理服务器资源,以确保服务器能够稳定运行并满足您的需求。

  • 使用Golang访问PostgreSQL存储过程的完整指南

    使用Golang访问PostgreSQL存储过程的完整指南

    在软件开发中,与数据库进行交互是一个常见的任务。PostgreSQL是一个强大的开源数据库管理系统,而Golang是一门简洁而高效的编程语言。本文将介绍如何使用Golang访问PostgreSQL数据库中的存储过程(Stored Procedure)。我们将以一个简单的示例开始,演示如何执行存储过程并获取结果。

    准备工作

    在开始之前,确保你已经安装了Golang和PostgreSQL,并且你有一个可用的数据库以及具有执行权限的用户。

    安装依赖库

    在Golang中,我们通常使用第三方库来连接和操作数据库。对于PostgreSQL,我们将使用github.com/lib/pq库。你可以使用以下命令安装这个库:

    go get github.com/lib/pq

    数据库连接

    首先,我们需要建立到PostgreSQL数据库的连接。为此,我们需要构建一个连接字符串,其中包含有关数据库连接的信息,如主机、端口、用户名、密码、数据库名称等。连接字符串的格式如下:

    connStr := "host=localhost port=5432 user=your_username password=your_password dbname=your_database sslmode=disable"

    请将your_username、your_password、your_database替换为你的数据库凭据和数据库名称。另外,你可能需要根据你的实际情况修改主机、端口以及其他连接选项。

    执行存储过程

    一旦我们建立了与PostgreSQL数据库的连接,我们就可以执行存储过程了。为了演示这一点,我们将使用以下示例存储过程:

    CREATE OR REPLACE PROCEDURE get_id_by_name(in_id BIGINT, INOUT out_name TEXT)
    LANGUAGE plpgsql
    AS $$
    BEGIN
        SELECT name INTO out_name FROM tabnames WHERE id = in_id;
    END;
    $$;

    这个存储过程接受一个in_id参数,它将用于在tabnames表中查找与之对应的name。结果将存储在out_name参数中。

    下面是如何在Golang中执行这个存储过程并获取结果的示例代码:

    package main
    
    import (
        "database/sql"
        "fmt"
    
        _ "github.com/lib/pq"
    )
    
    func main() {
        // 连接到 PostgreSQL 数据库
        connStr := "host=localhost port=5432 user=your_username password=your_password dbname=your_database sslmode=disable"
        db, err := sql.Open("postgres", connStr)
        if err != nil {
            panic(err)
        }
        defer db.Close()
    
        // 准备调用存储过程的 SQL 查询语句
        query := "SELECT * FROM get_id_by_name($1, $2)"
    
        // 执行存储过程并获取结果
        var outName string
        inId := int64(1) // 传递给存储过程的参数
        err = db.QueryRow(query, inId, &outName).Scan(&outName)
        if err != nil {
            panic(err)
        }
    
        // 输出结果
        fmt.Printf("Name for ID %d is %s\n", inId, outName)
    }

    请确保将your_username、your_password、your_database替换为实际的数据库凭据和数据库名称。还要根据实际情况修改主机、端口以及其他连接选项。

    在示例代码中,我们使用了db.QueryRow方法来执行存储过程的SQL查询语句,并将参数inId和outName传递给存储过程。然后,我们使用Scan方法将存储过程的结果存储在outName变量中,并最终输出结果。

    总结

    本文介绍了如何使用Golang访问PostgreSQL数据库中的存储过程。我们首先建立了与数据库的连接,然后执行了一个简单的存储过程并获取了结果。这个示例代码可以作为你在Golang中执行存储过程的起点,你可以根据自己的需求和存储过程的复杂性来扩展和修改代码。

    无论你的项目是小型还是大型,Golang和PostgreSQL的组合提供了强大的工具来处理数据库操作,包括存储过程的执行。希望本文对你在Golang中使用PostgreSQL存储过程有所帮助。