Tag: 开源

  • 什么是Diffusers? :生成图像的先进扩散模型

    什么是Diffusers? :生成图像的先进扩散模型

    嘿,大家好!让我向你介绍一项令人兴奋的技术,它可以生成令人叹为观止的图像、音频甚至分子的3D结构。无论你是想要进行简单的推理还是训练自己的扩散模型,? Diffusers都是一个模块化的工具箱,支持这两种方式。我们的重点是可用性高于性能、简单优于易用和可定制性高于抽象化。

    什么是? Diffusers?

    ? Diffusers库是一个开创性的工具,用于生成各种类型的数据,包括图像、音频和分子的3D结构。它基于最先进的扩散模型,可以在推理时轻松生成令人惊叹的内容。无论你是想要创建图像、音频还是进行其他生成任务,? Diffusers都提供了现成的解决方案。同时,如果你是研究人员或工程师,你也可以使用这个库来训练自己的扩散模型,以满足特定任务的需求。

    安装

    让我们首先了解如何安装? Diffusers库。

    使用pip安装(PyTorch)

    如果你使用PyTorch作为深度学习框架,可以使用以下命令来安装? Diffusers:

    pip install --upgrade diffusers[torch]

    使用pip安装(Flax)

    如果你使用Flax作为深度学习框架,可以使用以下命令来安装? Diffusers:

    pip install --upgrade diffusers[flax]

    支持Apple Silicon(M1/M2)

    如果你使用的是Apple Silicon芯片(M1/M2),请参考在Apple Silicon上使用Stable Diffusion指南。

    快速入门

    使用? Diffusers生成输出非常简单。要从文本生成图像,只需使用from_pretrained方法加载任何预训练的扩散模型。以下是一个示例:

    from diffusers import DiffusionPipeline
    import torch
    
    # 加载预训练的扩散模型
    pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16)
    pipeline.to("cuda")
    
    # 输入文本并生成图像
    output_image = pipeline("一幅毕加索风格的松鼠图像").images[0]

    此外,你还可以深入研究模型和调度程序工具箱,以构建自己的扩散系统。以下是一个使用自定义模型和调度程序的示例,用于生成图像:

    from diffusers import DDPMScheduler, UNet2DModel
    from PIL import Image
    import torch
    
    # 加载预训练的调度程序和模型
    scheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
    model = UNet2DModel.from_pretrained("google/ddpm-cat-256").to("cuda")
    scheduler.set_timesteps(50)
    
    # 创建输入噪声
    sample_size = model.config.sample_size
    noise = torch.randn((1, 3, sample_size, sample_size)).to("cuda")
    input = noise
    
    # 生成图像
    for t in scheduler.timesteps:
        with torch.no_grad():
            noisy_residual = model(input, t).sample
            prev_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sample
            input = prev_noisy_sample
    
    # 处理并显示生成的图像
    image = (input / 2 + 0.5).clamp(0, 1)
    image = image.cpu().permute(0, 2, 3, 1).numpy()[0]
    image = Image.fromarray((image * 255).round().astype("uint8"))
    image.show()

    在这个示例中,我们加载了预训练的扩散模型和调度程序,并使用它们生成了一幅图像。

    文档导航

    如果你想深入了解? Diffusers库的各个方面,可以使用以下文档导航:

    • 教程:了解如何使用库的主要功能,包括使用模型和调度程序构建扩散系统,以及如何训练自己的扩散模型。
    • 加载:查看如何加载和配置库的

    所有组件(管道、模型和调度程序),以及如何使用不同的调度程序。

    • 用于推理的管道:了解如何使用不同推理任务的管道,批量生成、控制生成的输出和随机性,以及如何贡献一个管道到库中。
    • 优化:了解如何优化扩散模型,以提高运行速度和减少内存占用。
    • 训练:探索如何使用不同的训练技巧为不同任务训练扩散模型。

    贡献

    我们热爱来自开源社区的贡献!如果你想为这个库做出贡献,请查看我们的贡献指南。你可以寻找你想要解决的问题,以贡献到这个库中。

    最受欢迎的任务和管道

    ? Diffusers库支持许多不同的任务和管道。以下是一些受欢迎的任务和相关管道:

    受欢迎使用? Diffusers的库

    许多开源项目正在使用? Diffusers库。以下是一些使用它的流行库和项目:

    感谢大家对我们的支持和使用!如果你有任何问题或需要帮助,请随时在我们的公开Discord频道中与我们联系。

    致谢

    这个库的实现受到了许多不同作者的前期工作的影响,没有他们的出色研究和实现,这个API就不可能如今如此精细。我们特别感谢以下实现,它们在我们的开发过程中帮助了我们:

    • @CompVis的潜扩散模型库,可在这里找到。
    • @hojonathanho的原始DDPM实现,可在这里找到,以及由@pesser翻译成PyTorch的非常有用的实现,可在这里找到。
    • @ermongroup的DDIM实现,可在这里找到。
    • @yang-song的Score-VE和Score-VP实现,可在这里找到。

    引用

    如果你在研究中使用了? Diffusers库,请引用我们的工作:

    @misc{von-platen-etal-2022-diffusers,
      author = {Patrick von Platen and Suraj Patil and Anton Lozhkov and Pedro Cuenca and Nathan Lambert and Kashif Rasul and Mishig Davaadorj and Thomas Wolf},
      title = {Diffusers: State-of-the-art diffusion models},
      year = {2022},
      publisher = {GitHub},
      journal = {GitHub repository},
      howpublished = {\url{https://github.com/huggingface/diffusers}}
    }

    这就是? Diffusers库的简要介绍和使用指南。希望这篇文章对你有所帮助,让你更好地了解这个强大的扩散模型库!

    联系方式

    如果你有任何问题或需要进一步的帮助,请随时联系我。

    推荐阅读

    希望你能享受使用? Diffusers库,探索扩散模型的奇妙世界!

  • 如何在Windows上构建Citra模拟器:提高游戏体验的关键步骤

    如何在Windows上构建Citra模拟器:提高游戏体验的关键步骤

    如果你是任天堂3DS游戏的粉丝,但没有实际的3DS硬件,不要担心!本教程将详细解释如何在Windows上构建Citra模拟器,让你畅玩你最喜欢的3DS游戏。无论是为了性能优化还是更好的游戏体验,让我们一起探索如何构建这个强大的模拟器。

    前言

    在开始构建Citra之前,让我们了解一下这个令人兴奋的模拟器。Citra是一个开源的任天堂3DS模拟器,允许你在计算机上玩3DS游戏,而无需实际的3DS硬件。通过构建Citra,你可以享受高分辨率、流畅的游戏体验,并甚至应用各种增强功能。

    构建所需的最小依赖项

    在构建Citra之前,确保你已经安装了以下必要的依赖项:

    • Visual Studio 2022:确保在安装时选择了C++支持。

    • CMake:用于生成Visual Studio项目文件。

    • Vulkan SDK:确保选择了最新的SDK。

    • Git:我们建议使用Git for Windows,并在安装Git Bash时选择将Git包含在系统路径中。

    克隆Citra源代码

    为了构建Citra,你需要获取Citra的源代码。打开Git Bash并运行以下命令,根据你的需求选择Master或Canary版本:

    • Master版本:

      git clone --recursive https://github.com/citra-emu/citra.git
      cd citra
    • Canary版本:

      git clone --recursive https://github.com/citra-emu/citra-canary.git
      cd citra-canary

    使用CMake配置项目

    现在,打开CMake GUI应用程序,并将其指向你刚才克隆的Citra目录,无论是Master还是Canary版本。

    • 为构建目录选择一个文件夹,可以在源目录内创建一个名为build的子目录,或者选择其他你喜欢的目录,并告诉CMake创建它。

    • 点击“Configure”按钮,并选择Visual Studio 17 2022,选择x64作为可选平台。

      注意:如果在这一步出现错误,比如”XXX does not contain a CMakeLists.txt file”,这意味着你在克隆步骤中没有使用--recursive标志,或者你使用了git CLI以外的工具。请运行git submodule update --init --recursive以获取剩下的依赖项。

    • 点击“Generate”以生成项目文件。

    打开Visual Studio并构建Citra

    现在,打开生成的解决方案文件citra.sln,它位于构建文件夹中。根据你想要构建或运行的前端(SDL2或Qt),在Solution Explorer中选择“citra”或“citra-qt”,右键单击并选择“Set as Startup Project”。

    • 选择适当的构建类型,Debug用于调试目的,Release用于性能优化。

    • 按F5或选择Build → Rebuild Solution来开始构建。

    使用Citra模拟器

    构建完成后,你现在可以使用Citra模拟器来玩你喜欢的3DS游戏了。根据你选择的前端,你可以启动“citra”或“citra-qt”项目,然后加载游戏并开始游戏。

    注意:如果在构建或运行过程中遇到任何错误,请参考常见问题,如果找不到解决方法,请随时在IRC频道#citra @ Freenode上向我们求助。

    其他选项:使用MinGW-w64进行构建

    如果你想使用MinGW-w64进行构建,以下是一些额外的步骤:

    • 安装MSYS2和Vulkan SDK。

    • 在“MSYS2 MinGW 64位”(mingw64.exe)shell中运行以下命令来安装Citra的依赖项:

      pacman -S mingw-w64-x86_64-{gcc,SDL2,qt6,cmake} make git
    • 克隆Citra存储库并执行以下命令来构建Citra(动态链接构建):

      mkdir build && cd build
      cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-DMICROPROFILE_ENABLED=0" ..
      make -j4
    • 如果你想创建一个静态构建,请安装mingw-w64-x86_64-qt6-static,然后在CMake命令行中添加-DMINGW_STATIC_BUILD=1。

    • 如果你不需要Qt,可以通过在CMake命令行中添加-DENABLE_QT=no来构建没有Qt的版本。

    通过这些步骤,你可以选择使用MinGW-w64构建Citra,以满足你的特定需求。

    结论

    现在,你已经学会了如何在Windows上构建Citra模拟器,以便畅玩你喜欢的3DS游戏。通过正确地配置和构建Citra,你可以享受更好的游戏体验和性能。希望这个教程对你有所帮助,让你尽情享受游戏世界。

  • 优化 VS Code:通过名称混淆缩减代码大小

    优化 VS Code:通过名称混淆缩减代码大小

    大家好!你有没有使用过 Visual Studio Code(简称 VS Code)?如果你是一名开发人员,那么你很可能使用过这款流行的开源代码编辑器。在这篇文章中,我将分享 VS Code 团队如何通过名称混淆技术将其 JavaScript 代码的大小减小了 20%。这不仅意味着你需要下载和存储的代码更少,还意味着启动时间更快,因为在运行 JavaScript 之前需要扫描的源代码更少。这是一项令人印象深刻的优化工作,而且并没有删除任何代码或进行任何重大的代码重构。

    发现问题

    VS Code 团队一直致力于提升性能,包括优化热门代码路径、减少 UI 重排或加速启动时间。其中之一就是减小 VS Code 的 JavaScript 代码大小。然而,多年来,几乎所有的变化都是增加。虽然我们会仔细考虑要将哪些功能集成到 VS Code 中,但随着时间的推移,新功能的增加不可避免地增加了我们发布的代码量。

    然而,我们发现代码大小的增加会导致性能下降。例如,八年前的 VS Code 核心 JavaScript 文件 “workbench.js” 的大小是现在的四倍。当考虑到八年前的 VS Code 缺少现在许多人认为是必需的功能,比如编辑器标签或内置终端时,这种增加可能并不那么可怕,但也不容忽视。

    名称混淆的概念

    为了减小 JavaScript 代码的大小,我们考虑使用名称混淆技术。名称混淆是指将代码中的长标识符名称(如变量名或函数名)替换为更短的名称,以减小代码文件的大小。在 JavaScript 中,代码以源文本的形式传输,因此减小标识符名称的长度实际上会减小程序的大小。虽然在编译语言中,这种优化可能显得有点荒谬,但在 JavaScript 的世界中,我们非常愿意接受这样的改进。

    然而,名称混淆也需要谨慎使用。如果一个潜在的优化使你的源代码变得不易读或不易维护,或者需要大量手动工作,那么除非它能够带来真正显著的改进,否则几乎不值得使用。因此,我们需要寻找一种方式,能够在不引入太多风险或额外工程工作的情况下,实现这种优化。

    解决方案:名称混淆私有属性

    为了减小代码的大小,我们首先考虑混淆私有属性的名称。按照惯例,私有属性的名称通常以下划线 “_” 开头。我们认为私有属性的名称可以安全地进行混淆,而且在类外部的代码不会受到影响。然而,很快我们发现,在一些情况下,子类可能会将继承的受保护属性公开。虽然这可能是错误的,但在实际代码库中,有时候我们需要禁用名称混淆。

    由于 TypeScript 中的 “private” 关键字在编译到 JavaScript 时基本上被移除,这就意味着不能阻止位于类外部的代码访问私有属性。因此,我们必须谨慎更改属性名称,以避免在对象扩展、序列化和不同类共享相同属性名称时引发问题。

    使用 TypeScript 确保安全

    为了提高对混淆构建的信心,我们决定使用 TypeScript 进行验证。与其将混淆应用于编译后的 JavaScript 代码,我们可以将混淆应用于 TypeScript 源代码,然后使用 TypeScript 编译器编译带有混淆标识符名称的新 TypeScript 代码。这一编译步骤将大大提高我们的信心,因为它可以确保我们没有意外破坏我们的代码。

    此外,使用 TypeScript,我们可以真正找到所有的私有属性,而不仅仅是那些以 “_” 开头的属性。我们甚至可以使用 TypeScript 的重命名功能来智能地重命名符号,而不会以不符合预期的方式更改对象的形状。

    结

    果和进一步工作

    经过努力,我们成功地实现了混淆私有属性的构建步骤。这一步骤将 VS Code 的主要 “workbench.js” 脚本的大小从 12.3 MB 减小到 10.6 MB,减小了近 14%。这也加快了代码加载速度,因为需要扫描的源代码更少了。这对于几乎没有额外工程工作的优化来说,效果不错。

    在混淆私有属性之后,我们继续思考其他潜在的优化机会。我们发现可以使用相同的方法来混淆导出的符号名称,只要这些导出仅在内部使用。这个工作在上一次迭代中完成,进一步减小了 “workbench.js” 的大小,从 10.6 MB 减小到 9.8 MB。总的来说,通过混淆,这个文件现在比不使用混淆时小了 20%。在整个 VS Code 项目中,混淆删除了 3.9 MB 的 JavaScript 代码。这不仅减小了下载和安装的大小,还减少了每次启动 VS Code 时需要扫描的 JavaScript 代码量。

    结论

    通过名称混淆技术,我们成功地减小了 Visual Studio Code 的 JavaScript 代码的大小,提高了性能,减少了下载和存储的开销。这项工作展示了如何在不进行大规模代码更改或昂贵的重写的情况下,通过识别潜在的优化机会,以及谨慎地进行优化,可以在 VS Code 中找到显著的改进。

    优化是一个持续不断的过程,而不是一次性的事情。通过持续监测代码大小,我们能够意识到多年来代码的增长。这种意识无疑有助于阻止代码大小的进一步扩大,并鼓励我们不断寻找改进的机会。虽然名称混淆在一开始看起来可能是一种有吸引力的技术,但在深入研究之前,它几乎不可能被认真考虑。只有在我们努力降低风险、创建正确的安全保障和使采用名称混淆的成本几乎为零的情况下,我们才最终有足够的信心在我们的构建中启用它。

    我为最终的结果感到非常自豪,也为我们达到这个结果的方式感到自豪。

    关键词:

  • 安卓平台的好用局域网文件浏览器推荐

    安卓平台的好用局域网文件浏览器推荐

    你是否曾经遇到在家中局域网内浏览 NAS(网络附加存储)文件的需求?如果是的话,你可能会发现有些文件浏览器不再支持这项功能,或者广告过多令人感到不适。不用担心,这篇文章将向你推荐一些在安卓平台上好用的局域网文件浏览器,让你方便地访问 NAS 内的文件。

    1. Mix 文件管理器

    Mix 文件管理器 是一个免费的文件管理器应用,它提供了对局域网文件的支持。虽然需要手动下载更新,但它的功能强大,而且免费版本和收费版本功能一样。你可以使用它来轻松浏览和管理 NAS 中的文件。

    2. 质感文件(Material Files)

    质感文件 是一个开源的文件管理器应用,支持 FTP、SFTP 和 SMB 协议。它的用户界面简洁美观,可以帮助你快速访问和管理局域网文件。这款应用不仅功能强大,还是开源的,你可以自由地使用它。

    3. Solid Explorer

    Solid Explorer 是一个功能丰富的文件管理器,支持局域网文件的访问。它提供了直观的用户界面和强大的文件管理功能,虽然它是一款付费应用,但它的性能和功能绝对值得投资。

    4. Cx File Explorer

    Cx File Explorer 是一款多功能的文件管理器,支持 SMB、FTP 和 WebDAV 等多种协议。它提供了简单的操作界面和丰富的功能,适用于浏览局域网文件和其他文件管理任务。

    5. 猫头鹰(File Explorer)

    猫头鹰 是一款功能强大的文件管理器应用,支持局域网文件的访问。它提供了简洁的用户界面和多种功能,包括文件浏览、传输等,而且是免费的。

    6. Total Commander

    Total Commander 是一款经典的文件管理器,支持 SMB 和 LAN 文件浏览。它不仅在 Android 平台上表现出色,还适用于 Windows 和其他操作系统。这款应用可以通过各种协议访问局域网文件,非常方便。

    结语

    无论你是需要浏览 NAS 内的文件,还是在局域网内管理文件,以上推荐的安卓平台文件浏览器都能满足你的需求。你可以根据自己的喜好和需求选择合适的应用,让文件管理变得更加便捷。现在,你可以轻松访问和管理局域网文件,无需担心广告过多或功能不足的问题。

    希望这些推荐对你有所帮助,让你更轻松地在安卓设备上浏览和管理局域网文件。

    无论你是在家庭网络环境中还是在工作中需要访问局域网文件,这些应用都能满足你的需求。不妨试试它们,看看哪一个最适合你的用途。

  • 如何从专科学生转行计算机行业并找到工作

    如何从专科学生转行计算机行业并找到工作

    作者注:本文旨在为专科学生提供一些建议,帮助他们成功地转行计算机行业,并找到工作。

    开篇故事

    曾经有一个名叫小明的专科生,他在毕业后迷茫不已,不想再继续专升本,却又想进入计算机行业找到一份稳定的工作。他面临着竞争激烈的现实,但最终通过不懈的努力,成功地转行并找到了自己的理想工作。本文将分享小明的经验,为专科生提供一些建议,帮助他们在计算机行业中获得成功。

    选择方向

    首先,对于专科生来说,选择一个合适的方向至关重要。计算机行业非常广泛,涵盖了各种领域,如前端开发、后端开发、数据分析、人工智能等等。你需要根据自己的兴趣和能力来选择一个方向,这将有助于你更有动力地学习和发展。

    自学和培训

    专科生可能会担心自己的计算机基础不够扎实,但不要担心,你可以通过自学和在线培训来填补这一差距。有许多免费和付费的在线课程,如Coursera、edX和Udacity等,可以帮助你学习编程和计算机科学的基础知识。此外,你还可以参加一些培训班或课程,提升自己的技能。

    项目和实践

    在学习的过程中,不要只停留在理论知识上,要积极参与项目和实践。你可以在GitHub上参加开源项目,这不仅可以帮助你锻炼编程技能,还可以建立自己的项目组合。此外,你还可以写技术博客或制作开发视频,展示自己的成果。

    网络社区和人际关系

    在计算机行业,建立良好的人际关系是非常重要的。加入技术论坛、社交媒体群组和行业活动,与其他人互动并学习他们的经验。你还可以寻找导师或 mentor,他们可以指导你在行业中的发展,并提供宝贵的建议。

    持之以恒

    转行计算机行业并不是一蹴而就的事情,需要坚持不懈的努力。不要气馁,面对困难要有耐心和毅力。记住,学习是一个持续的过程,不断提升自己的技能和知识是关键。

    结语

    虽然专科生可能面临一些挑战,但只要你有决心和努力,就能够成功地转行计算机行业并找到工作。选择合适的方向,进行自学和培训,积极参与项目,建立人际关系,坚持不懈,这些都是帮助你实现目标的关键步骤。相信自己,你一定能够在计算机行业取得成功。

    希望这些建议对你有所帮助,祝你成功地转行计算机行业并找到理想的工作!

  • 打造自己的Virtual DSM:在Docker中体验Synology的强大功能

    打造自己的Virtual DSM:在Docker中体验Synology的强大功能

    你是否曾想过在自己的硬件上体验Synology的Virtual DSM,但不想购买他们的硬件?那么,你来对地方了。在这篇文章中,我们将介绍如何在Docker容器中运行Virtual DSM,让你能够在自己的计算机上享受Synology DSM的众多功能,而无需购买他们的NAS硬件。

    开篇故事

    想象一下,你在寻找一种方法来备份家庭照片和视频,或者建立一个私人云来存储重要文件。你听说过Synology的强大NAS设备,但你不想花大笔资金购买一台。然后,你听说有人将Virtual DSM安装在Docker容器中,并且一切都运行得非常出色。你兴奋地开始探索这个想法,想知道如何在自己的计算机上实现这一目标。

    好消息是,你来对地方了。在接下来的教程中,我们将逐步向你展示如何在Docker中运行Virtual DSM,并让你享受Synology DSM的全部功能。

    准备工作

    在开始之前,你需要满足一些要求:

    • 一台装有Docker的计算机。
    • 安装了docker-compose(如果你使用docker-compose)。
    • 能够运行KVM的硬件,并且已启用KVM虚拟化支持。

    安装Virtual DSM

    通过docker-compose.yml安装

    首先,你可以通过创建一个docker-compose.yml文件来配置Virtual DSM容器。这个文件将告诉Docker如何运行容器以及如何配置它。

    version: "3"
    services:
        dsm:
            container_name: dsm
            image: kroese/virtual-dsm:latest
            environment:
                DISK_SIZE: "16G"
            devices:
                - /dev/kvm
                - /dev/vhost-net
            cap_add:
                - NET_ADMIN                       
            ports:
                - 5000:5000
            volumes:
                - /opt/dsm:/storage
            restart: on-failure
            stop_grace_period: 1m

    这个docker-compose.yml文件的关键部分包括:

    • image:容器使用的Virtual DSM Docker镜像。
    • environment:可以设置的环境变量,例如磁盘大小(默认为16GB,你可以根据需要进行修改)。
    • devices:指定了容器可以访问的设备,包括KVM支持。
    • ports:将容器内的端口映射到主机的端口(例如,将容器的5000端口映射到主机的5000端口)。
    • volumes:将主机文件夹挂载到容器内,以便在容器中存储数据。
    • restart:设置容器在故障时自动重启。
    • stop_grace_period:定义了容器在关闭之前等待的时间。

    一旦你创建了docker-compose.yml文件,只需在包含该文件的目录中运行以下命令来启动Virtual DSM容器:

    docker-compose up -d

    通过docker run安装

    如果你不使用docker-compose,也可以通过以下命令手动运行Virtual DSM容器:

    docker run -it --rm -p 5000:5000 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 60 kroese/virtual-dsm:latest

    这个命令将以交互式模式启动容器,同时映射端口并配置KVM支持。

    配置Virtual DSM

    一旦容器运行,你可以通过浏览器访问 http://localhost:5000 来配置Virtual DSM。你将看到Synology DSM的初始设置页面,类似于在Synology硬件上的设置过程。

    你可以使用默认的管理员用户名和密码进行登录(通常是admin / admin)。登录后,你可以根据需要配置和使用Virtual DSM的各种功能,包括文件共享、备份、媒体服务器等。

    常见问题解答

    以下是一些常见问题的解答,以帮助你更好地配置和使用Virtual DSM。

    如何更改虚拟磁盘的大小?

    要扩展默认大小(16GB),只需在docker-compose.yml文件中找到DISK_SIZE设置并将其修改为所需的容量:

    environment:
        DISK_SIZE: "256G"

    这也可以用于在不丢失数据的情况下将现有磁盘的大小增加到更大的容量。

    如何更改虚拟磁盘的位置?

    要更改虚拟磁盘的位置,可以在docker-compose.yml文件中包含以下绑定挂载:

    volumes:
        - /home/user/data:/storage

    将示例路径/home/user/data替换为所需的存储文件夹。

    如何更改虚拟磁盘的空间保留方式?

    默认情况下,磁盘空间会提前保留。要创建一个只保留实际使用空间的可扩展磁盘,请添加以下环境变量:

    environment:
        ALLOCATE: "N"

    请注意,这不会影响任何现有磁盘,它只适用于新创建的磁盘。

    如何增加CPU或RAM的分配?

    默认情况下,容器分配了一个核心和512MB的RAM。要增加这些资源,添加以下环境变量:

    environment:
        CPU_CORES: "4"
        RAM_SIZE: "2048M"

    如何验证我的系统是否支持KVM?

    要验证系统是否支持KVM,运行以下命令:

    sudo apt install cpu-checker
    sudo kvm-ok

    如果kvm-ok返回错误,表示无法使用KVM加速,请检查你的BIOS设置。

    如何为容器分配独立的IP地址?

    默认情况下,容器使用桥接网络,与主机共享IP地址。

    如果要为容器分配独立的IP地址,你可以创建一个macvlan网络,如下所示:

    docker network create -d macvlan \
        --subnet=192.168.0.0/24 \
        --gateway=192.168.0.1 \
        --ip-range=192.168.0.100/28 \
        -o parent=eth0 vdsm

    确保修改这些值以匹配你的本地子网。

    一旦创建了网络,将你的docker-compose.yml文件更改如下:

    services:
        dsm:
            container_name: dsm
            ..
            networks:
                vdsm:             
                    ipv4_address: 192.168.0.100
    
    networks:
        vdsm:
            external: true

    这种方法的额外好处是,你不再需要执行任何端口映射,因为所有端口都将默认公开。

    请注意,由于macvlan的设计不允许两者之间的通信,因此来自Docker主机的IP地址将无法访问这个容器。如果这是一个问题,你需要创建第二个macvlan作为解决方法。

    如何让容器从我的路由器获取IP地址?

    在配置容器为macvlan(如上所述)后,DSM可以通过从你的路由器请求IP来成为你家庭网络的一部分,就像其他设备一样。

    要启用这个功能,请将以下行添加到你的docker-compose.yml文件中:

    environment:
        DHCP: "Y"
    devices:
        - /dev/vhost-net
    device_cgroup_rules:
        - 'c *:* rwm'

    请注意,即使你不需要DHCP,也建议启用此功能,因为它可以防止NAT问题,并通过使用macvtap接口来提高性能。

    如何安装特定版本的vDSM?

    默认情况下,将安装7.2版本,但如果你喜欢较旧的版本,可以将其URL添加到你的docker-compose.yml文件中,如下所示:

    environment:
        URL: "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_VirtualDSM_42218.pat"

    使用这种方法,你可以在保留文件数据的同时在不同版本之间切换。

    与标准DSM相比有什么区别?

    与标准DSM相比,只有两个小的区别:不提供Virtual Machine Manager软件包,Surveillance Station不包含任何免费许可证。

    这个项目是否合法?

    是的,这个项目只包含开源代码,不分发任何受版权保护的材料。它也没有试图绕过任何版权保护措施。因此,在所有适用的法律下,这个项目都被认为是合法的。

    然而,通过安装Synology的Virtual DSM,你必须接受他们的最终用户许可协议,该协议不允许在非Synology硬件上安装。因此,请只在官方Synology NAS上运行这个项目,因为任何其他用途都将违反他们的条款和条件。

    结论

    现在,你已经知道了如何在Docker容器中运行Virtual DSM,并且可以自己在计算机上体验Synology DSM的强大功能。无论你是想创建私人云、媒体服务器还是备份解决方案,Virtual DSM都为你提供了一个灵活且成本效益的选择。

    请记住,Synology的Virtual DSM仍然受其最终用户许可协议的约束,因此只能在官方Synology硬件上合法使用。希望这篇文章对你有所帮助,让你更好地理解如何配置和使用Virtual DSM。

  • 探索未知的游戏世界:Citra 3DS 模拟器

    探索未知的游戏世界:Citra 3DS 模拟器

    你是否曾怀念起那些在任天堂3DS上度过的美好时光?那些令人难忘的冒险、精彩的角色和充满创意的游戏?如今,有一个令人兴奋的项目,可以带你回到那个美好的时代——Citra 3DS 模拟器。
    file

    开篇故事

    还记得当初第一次拿起任天堂3DS掌机,那种全新的游戏体验吗?无论是探索《塞尔达传说》的神秘王国,还是在《口袋妖怪》世界中捕捉可爱的精灵,那些瞬间都令人难以忘怀。但是,时光不饶人,3DS已经逐渐退出历史舞台,留下了我们对那些游戏的美好回忆。

    然而,Citra 模拟器的出现改变了一切。这是一个令人兴奋的开源项目,它允许你在计算机上模拟运行任天堂3DS游戏,重新体验那些经典的冒险。无论你是怀念某个特定的游戏,还是想要发掘3DS世界的无限可能性,Citra都能满足你的需求。

    什么是Citra?

    Citra是世界上最受欢迎的开源任天堂3DS模拟器。这个项目采用C++编写,注重可移植性,并积极维护适用于Windows、Linux、Android和macOS的不同版本。无论你使用哪种操作系统,你都可以轻松地在Citra上运行你喜爱的3DS游戏。

    游戏兼容性

    一款好的模拟器必须具备强大的游戏兼容性,而Citra绝对不会让你失望。只要你满足必要的硬件要求,Citra能够以全速运行大多数商业游戏。想要查看Citra支持的游戏清单?请访问他们的兼容性页面

    如何获取Citra?

    Citra提供两种主要版本:夜版(Nightly)和金丝雀版(Canary)。

    • 夜版基于主分支构建,包含已经经过审查和测试的功能。
    • 金丝雀版也基于主分支,但包含仍在审查中的附加功能。带有”canary-merge”标签的PR仅合并到金丝雀版。

    无论你选择哪个版本,你都可以在Citra官方网站上找到安装程序。此外,如果你正在寻找特定版本或独立发布的版本,也可以在夜版和金丝雀版本的发布标签中找到它们。

    对于Android用户,你可以直接从Google Play商店下载Citra。

    如果你使用Flatpak,也可以在Flathub上找到Citra的Flatpak版本。关于构建过程的详细信息可以在他们的Flathub存储库中找到。

    参与开发

    Citra的大部分开发工作都在GitHub上进行。这也是他们的中央存储库的托管地。如果你想参与开发讨论,请加入他们的Discord服务器,或者在libera的#citra-dev频道中与他们互动。

    如果你想为项目做出贡献,请查看贡献者指南和开发者信息。你也可以在Discord上联系任何一位开发者,了解模拟器的当前状态。

    如果你想为用户界面翻译做出贡献,请查看Citra在Transifex上的项目。他们在那里集中进行翻译工作,并定期上游翻译。

    构建你自己的Citra

    Citra的多平台支持使得构建过程非常简单。无论你是使用Windows、Linux、macOS还是Android,你都可以找到相应的构建指南。

    支持Citra

    如果你喜欢Citra项目并想在财务上支持他们,可以考虑成为他们的Patron。你的捐赠将有助于项目的持续发展和改进。

    此外,Citra团队也非常乐意接受捐赠的游戏和硬件。如果你愿意捐赠3DS掌机、游戏或其他相关设备,请查看他们的捐赠页面,了解如何贡献给Citra项目。所有捐赠收到的资金将用于购买3DS掌机供开发人员研究硬件、进行游戏测试以及构建所需的基础设施。

    此外,他们也欢迎使用过的3DS

    掌机!如果你想要捐赠你的3DS掌机,请加入他们的Discord服务器,与他们的团队联系。

    结语

    Citra是一个令人兴奋的项目,它允许你重新探索任天堂3DS的游戏世界。无论你是怀念经典的游戏还是想要发掘未知的游戏宝藏,Citra都为你提供了一个机会。赶快下载并开始你的冒险吧!

    希望你会喜欢Citra,一款带你重返3DS游戏时光的模拟器。

  • 如何将网页保存为本地PDF并分享给家人和朋友

    如何将网页保存为本地PDF并分享给家人和朋友

    开篇故事: 你曾经遇到过这样的情况吗?你在浏览网页时,发现一篇非常有趣或者有用的文章,想要保存下来以备将来阅读或分享给亲朋好友。然而,由于网页链接可能会失效或者你不想依赖互联网连接,将网页保存为本地PDF成了一个明智的选择。在这篇文章中,我们将分享一些简单而有效的方法,教你如何将网页存储为本地PDF,并且可以轻松分享给你的家人和朋友。

    步骤一:使用浏览器内置功能

    有些现代浏览器已经内置了将网页保存为PDF的功能,最常见的是Edge和Opera浏览器。

    • Edge浏览器: 打开你想要保存的网页,然后按下CTRL+Shift+S组合键,即可捕获整个网页并保存为PDF格式。

    • Opera浏览器: 同样地,打开目标网页,然后点击浏览器菜单中的“文件”选项,选择“保存页面为PDF”。

    这两种方法都非常简单,适用于单页网页的保存。

    步骤二:使用浏览器扩展

    如果你需要保存多层级的网页,包括图片和文字,那么你可以考虑使用浏览器扩展来更灵活地操作。以下是一些常用的浏览器扩展:

    • SingleFile(Chrome扩展): SingleFile是一个Chrome扩展,它可以将整个网页保存为单个HTML文件,包括文字、图片和样式。你可以在Chrome网上应用商店中找到并安装它。

    • Print Friendly(Chrome扩展): 这个扩展可以将网页保存为干净的、易于打印的PDF文件。它通常会去除广告和多余的元素,使保存的PDF更具可读性。

    • GoFullPage(Chrome插件): 这款插件可以将整个网页(包括未显示的滚动区域)保存成长截图,然后导出为PDF。

    • IDM(Internet Download Manager): 如果你需要下载包含内部跳转链接的网站,IDM是一个非常方便的工具,它可以帮助你离线保存网站内容。

    步骤三:使用专业工具

    如果你需要更高级的功能,如全文搜索、服务器部署等,你可以考虑以下工具:

    • Hamsterbase: 这是一个功能强大的工具,可以完美保存几乎任何网站的文字、图片和样式,支持全文搜索,并且可以离线使用。你可以查找相关信息并了解如何使用它。

    • ArchiveBox: 这是一个开源工具,可以帮助你保存整个网站的快照,支持多层级的网页保存。你可以在官方网站archivebox.io上找到更多信息。

    步骤四:分享给家人和朋友

    保存好网页后,你可以轻松地分享给家人和朋友。将保存的PDF文件发送给他们,或者使用云存储服务如Google Drive或Dropbox分享链接,让他们可以方便地访问。

    无论是保存有趣的文章、备份重要信息,还是分享有价值的内容,将网页保存为本地PDF是一个非常实用的技巧,让你更好地管理和分享网络资源。

    在今天的教程中,我们分享了多种方法,希望它们对你有所帮助。现在,你可以尝试使用这些方法,将你最喜欢的网页保存为本地PDF,并与你的亲朋好友一起分享!

    结束语

    在数字时代,信息爆炸,如何高效地管理和分享网络内容成了一个重要的问题。通过将网页保存为本地PDF,你可以更好地掌控自己的信息流,随时随地访问你需要的内容。希望这些方法对你有所帮助,让你的网络生活更加便捷!

  • 如何彻底卸载macOS上的Homebrew安装软件?

    如何彻底卸载macOS上的Homebrew安装软件?

    你是否曾经使用Homebrew在macOS上安装过软件,然后试图卸载它们,却发现残留的痕迹仍然存在?这个问题困扰着许多Mac用户,但不要担心,本文将为你提供一种方法来彻底卸载Homebrew安装的软件,确保不留任何痕迹。

    起源故事:Homebrew的魅力和挑战

    在开始讨论如何卸载Homebrew安装的软件之前,让我们先了解一下Homebrew的魅力和挑战。Homebrew是一款强大的macOS包管理器,它使用户能够轻松安装各种开源软件和工具。但是,当你试图卸载这些软件时,Homebrew并不总是能够将所有相关文件和设置完全删除。

    这个问题曾经困扰过许多人,但现在让我们一起看看如何克服它。

    步骤1:使用Homebrew列出已安装的软件

    在尝试卸载软件之前,首先要了解你的系统上安装了哪些软件。为此,你需要打开终端并输入以下命令:

    brew list

    这将列出Homebrew安装的所有软件包的名称。浏览列表,找到你想卸载的软件的名称。

    步骤2:使用Homebrew卸载软件

    一旦你确定了要卸载的软件名称,接下来就可以使用Homebrew来卸载它。使用以下命令:

    brew uninstall 软件名称

    请将“软件名称”替换为你要卸载的软件的实际名称。运行此命令后,Homebrew将尝试卸载该软件。

    步骤3:使用Homebrew清理残留文件

    尽管Homebrew会尽力卸载软件,但有时它可能无法完全删除所有相关文件。为了确保彻底卸载,你可以运行以下命令来清理残留文件:

    brew cleanup

    这将清理Homebrew的缓存和旧版本文件,以释放磁盘空间并确保系统干净。

    步骤4:手动删除残留文件

    尽管Homebrew的清理功能非常有用,但仍然可能有一些残留文件留在你的系统上。为了彻底解决这个问题,你可以手动查找和删除这些文件。

    通常,Homebrew安装的软件的相关文件存储在以下位置:

    • /usr/local/Cellar:这个目录包含了Homebrew安装的软件的实际文件。
    • /usr/local/Homebrew/Caskroom:如果你使用Homebrew Cask来安装软件,那么相关文件可能存储在这个目录中。
    • ~/.config:有些软件的配置文件可能存储在你的用户配置文件夹中。

    使用Finder或终端,浏览这些目录,查找任何与你已卸载的软件相关的文件或文件夹,并将其删除。请小心操作,确保不删除系统关键文件。

    步骤5:重启你的系统

    最后,为了确保所有更改都生效,建议重新启动你的Mac。这将帮助清除任何悬挂的进程或缓存,并确保你的系统处于干净的状态。

    结论

    通过按照上述步骤,你可以彻底卸载Homebrew安装的软件,确保不留下任何残留文件。尽管Homebrew是一个强大的工具,但你需要采取额外的步骤来确保完全卸载软件。

    如果你曾经在尝试卸载Homebrew软件时感到困惑,希望这篇教程对你有所帮助。现在,你可以在需要的时候轻松安装和卸载软件,而不必担心留下任何不必要的痕迹。

    在使用Homebrew时,记得定期运行brew update和brew upgrade来保持软件包的最新版本。

    希望这篇文章对你有所帮助,如果你有任何问题或建议,请随时在评论中分享。

  • 如何安装PyTorch 1.5

    如何安装PyTorch 1.5

    嘿,大家好!深度学习和机器学习领域发展迅猛,而PyTorch是一个广泛使用的深度学习平台。然而,有时最新版本的PyTorch可能不适合你的项目,或者你需要与特定版本兼容。今天,我将向你展示如何在Ubuntu上安装PyTorch 1.5,以及如何检查安装是否成功。

    无论你是深度学习新手还是经验丰富的研究人员,这篇文章都将帮助你轻松安装PyTorch 1.5,并确保它与你的项目兼容。

    步骤1:准备工作

    在开始之前,确保你已经具备以下条件:

    1. 你可以运行Python,并且拥有包管理器如pip或conda。
    2. 你已经安装了Miniconda或Anaconda。如果没有,可以查看我们之前的文章,了解如何安装Miniconda。

    步骤2:检查是否已安装CUDA(可选)

    在安装PyTorch之前,强烈建议你已经安装了CUDA。请注意,PyTorch 1.5.0/1.5.1不支持CUDA 11.0。如果你尚未安装CUDA,请参考相关教程安装CUDA 10.2。

    一旦你安装了CUDA,可以使用以下命令检查其版本:

    nvcc --version

    步骤3:使用conda安装PyTorch 1.5

    接下来,我们将使用conda来安装PyTorch 1.5。根据你的CUDA版本选择适当的命令。

    • 对于CUDA 10.2:
    conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.2 -c pytorch
    • 对于CUDA 10.1:
    conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch
    • 对于CUDA 10.0:
    conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.0 -c pytorch
    • 对于CUDA 9.2:
    conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=9.2 -c pytorch
    • 仅CPU(注意,性能较差):
    conda install pytorch==1.5.1 torchvision==0.6.1 cpuonly -c pytorch

    步骤4:验证PyTorch 1.5.1是否安装成功

    安装完成后,我们来验证一下是否成功。打开Python(或Python3)交互式环境,并运行以下命令:

    import torch
    print(torch.__version__)

    这将输出你所安装的PyTorch版本,应该是1.5.1或1.5.0,取决于你的安装。

    步骤5:验证PyTorch 1.5.1是否使用CUDA

    如果你安装了CUDA并希望确认PyTorch是否使用了它,可以运行以下Python代码:

    import torch
    torch.cuda.is_available()

    这将告诉你PyTorch是否能够使用CUDA。如果它返回True,则表示PyTorch已成功配置为使用CUDA。

    结语

    恭喜你,你已成功安装PyTorch 1.5并验证了它是否使用了CUDA。现在你可以开始深入学习和实验深度学习模型了!

    什么是PyTorch?

    PyTorch是一个开源的深度学习平台,用于研究、测试、部署,具有可扩展性和灵活性。它通过一个自动梯度组件支持快速、模块化的实验,旨在实现快速、类似Python的执行。随着PyTorch 1.0的推出,该平台现在具有基于图的执行、混合前端以实现平滑的模式切换、协作测试以及在移动平台上的有效和安全部署。

    根据其官方主页,PyTorch有四个关键特点:

    1. PyTorch已准备好投入生产:TorchScript可平滑切换急切和图模式,TorchServe加速了生产过程。
    2. PyTorch支持分布式训练:torch.collaborative接口支持高效的分布式训练和研发中的性能优化。
    3. PyTorch具有强大的生态系统:它具有丰富的工具和库的生态系统,支持计算机视觉和自然语言处理等应用。
    4. PyTorch具备本地云支持:它以零摩擦的开发和在关键云提供商上的快速扩展而闻名。

    现在,你已经准备好在PyTorch的世界中踏上学习之旅!