macOS上基于httpd-dav搭建WebDav服务
文章目录
- 配置 Apache httpd
- 修改 ServerName
- 启动验证 httpd 服务
- 启用 Dav 扩展服务配置
- 配置 httpd 扩展 Dav 服务
- 设置共享目录文件夹
- 配置 DavLockDB 目录
- 创建 WebDAV 访客用户
- httpd-dav.conf 主要改动部分
- Basic
- Digest
- 共享多个目录
- 授予 httpd 完全磁盘访问权限
- 验证更新配置重启Apache Httpd
- 局域网连接验证WebDAV服务
- curl 命令行访问操作 WebDAV
- linux 挂载 WebDAV 云盘
- 参考
在局域网中,要想共享或访问 macOS 机器上的文件,可以通过文件共享、屏幕共享或 远程登录 这几种方式:
- FS(SMB): Set up file sharing on Mac,Control access to your Public folder on Mac。
- SSH+SFTP: Allow a remote computer to access your Mac
- Screen Sharing(VNC): Turn Mac screen sharing on or off,Share the screen of another Mac。
- RD: Enable remote management for Remote Desktop
FS 模式一般默认开放给 everyone 只读,可以以 Guest User 身份免登录访问,但是一旦涉及到要开放写权限,会涉及到系统账户分级分组管理和ACL权限控制和分配粒度问题。局域网内怎么样部署简易轻量的共享同步存储系统呢?
在多终端设备时代,很多人都购买了在线网络云盘服务,或者自己动手DIY搭建部署家庭局域网NAS私有云服务器,作为家里的数据和影音中心,方便文件共享和存储备份同步。另一个日益增长的需求就是分布式协作,Google文档、腾讯文档等产品就是解决这类问题的在线协同编辑的办公软件。
早在1996年,加州大学尔湾分校博士毕业生Jim Whitehead就与W3C共同主办了两场会议讨论了万维网上的分布式创作问题,并成立了WebDAV工作小组。
WebDAV 是 Web-based Distributed Authoring and Versioning 的缩写,即基于Web的分布式编写和版本控制。它是对 HTTP 的扩展,为用户在服务器上创建、更改和移动文档提供了一个框架,方便用户间协同编辑和管理存储在万维网服务器上的文档。
因为基于HTTP,WebDAV 在广域网上共享文件有天然的优势,移动端文件管理APP大多都支持WebDAV协议,使用HTTPS还能保安全性。微软的Office和自家Sharepoint服务器通信,苹果的iWork套件也是基于WebDAV。Apache和Nginx都扩展支持WebDAV,可作为WebDAV文件共享服务器软件。
本文记录了在 macOS 上基于内置的 Apache Httpd 搭建 WebDAV 服务的步骤流程,以供备忘和参考。
配置 Apache httpd
Apache Httpd 配置文件:/etc/apache2/httpd.conf。
$ cd /etc/apache2/
// 备份文件,以防不测
$ sudo cp httpd.conf httpd.conf.bak
$ sudo vim httpd.conf
默认的文档服务目录:
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
修改 ServerName
通过以下命令获取主机名:
- hostname
- scutil --get ComputerName
- scutil --get LocalHostName
搜索 ServerName 注释行,设置与主机名称一致
ServerName mbpa1398:80
启动验证 httpd 服务
由于尚未配置 webdav 扩展服务,暂时先不管 webDAV 服务,先把 httpd server 跑起来。
请检查 wfsctl status 是否为禁用状态:
$ sudo wfsctl status
disabled
如果否,请先执行 sudo wfsctl stop 停止,否则可能会有端口冲突等问题导致后续无法访问。
执行 sudo apachectl -k start 启动 Apache Httpd 服务,然后在本地命令行输入 curl localhost,正常应返回 DocumentRoot 下的 index.html.en 页面:
<html><body><h1>It works!</h1></body></html>
或在浏览器输入 http://localhost 或 http://mbpa1398.local 看看是否正常输出 It works! 。
Stopping and Restarting Apache HTTP Server - Apache HTTP Server Version 2.4
# 停止内置 Apache 方法
sudo apachectl -k stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
启用 Dav 扩展服务配置
移除以下配置文件中 5 行行首的注释:
92 #LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
165 #LoadModule dav_module libexec/apache2/mod_dav.so
176 #LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
177 #LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so533 #Include /private/etc/apache2/extra/httpd-dav.conf
- LoadModule 加载 mod_dav 相关的三个动态库和用于 digest auth 验证的动态库。
- Include 包含(引入)dav 扩展服务配置(extra/httpd-dav.conf)。
如果使用默认的认证方式 AuthType Digest,则需加载 mod_auth_digest.so。
如果改为 Basic,默认已经加载了 mod_auth_basic.so,无需加载 mod_auth_digest.so。
配置 httpd 扩展 Dav 服务
Httpd 的 Dav 扩展服务配置文件:/etc/apache2/extra/httpd-dav.conf。
$ cd extra
# 备份配置文件
$ sudo cp httpd-dav.conf httpd-dav.conf.bak
# 编辑配置文件
$ sudo vim httpd-dav.conf
设置共享目录文件夹
macOS 开启 Apache 并定义网站文件放在 /Users/你的用户名/Sites 目录中。
在你的 Sites 目录下新建 DAVNAS 目录用作 WebDAV 服务目录。
第19行指定共享服务目录:/Users/faner/Sites/DAVNAS。
第17行设置 alias 名字为 /webdav,为后续访问 URL 的根路径。
17 Alias /webdav "/Users/faner/Sites/DAVNAS"1819 <Directory "/Users/faner/Sites/DAVNAS">
httpd.conf 中指定了运行 httpd daemon 进程的用户和组:
User _www
Group _www
macOS 下 mkdir/touch 新创建的文件(夹),默认对 staff 工作组和 everyone 都开放了 Read Only 权限。
客户端通过 HTTP Basic/Digest 认证访问 web 服务,运行 httpd 服务的 _www._www 用户作为 everyone,拥有对 Directory 目录的只读浏览权限。
想要写共享的 Directory 目录,需要将该目录更改为 _www._www 用户组名下。调用 chown 命令即可:
chown -R _www:_www /Users/faner/Sites/DAVNAS
配置 DavLockDB 目录
创建 /opt/webdav/var 目录:
$ sudo mkdir -p /opt/webdav/var
# -R?
$ sudo chown _www:_www /opt/webdav/var
修改 httpd-dav.conf 第 15 行的 DavLockDB 路径配置:
# 15 DavLockDB "/usr/var/DavLock"
15 DavLockDB /opt/webdav/var/DavLock
创建 WebDAV 访客用户
新建存储密码的文件 user.passwd,并修改所属的用户和组。
$ sudo touch /opt/webdav/user.passwd
$ sudo chown _www:_www /opt/webdav/user.passwd
紧接着,为 webdav 域新增用户 username。
如果 AuthType 是 Digest,执行 htdigest 命令:
$ sudo htdigest -c /opt/webdav/user.passwd webdav $username
如果 AuthType 改为了 Basic,则执行 htpasswd 命令:
$ sudo htpasswd -c /opt/webdav/user.passwd $username
其中, -c 选项将 truncate 已存在的密码文件。
根据提示,为新增的用户(username)设置密码并确认。
可以提前创建多个账号,分配给不同的局域网访客用户。
httpd-dav.conf 主要改动部分
Basic
- 改:DavLockDB
- 改:AuthName
- 改:AuthUserFile
- 注:AuthDigestProvider
15 DavLockDB "/opt/webdav/var/DavLock"
16
17 Alias /webdav "/Users/faner/Sites/DAVNAS"
18
19 <Directory "/Users/faner/Sites/DAVNAS">
20 Dav On
21
22 AuthType Basic
23 AuthName webdav
24 # You can use the htdigest program to create the password database:
25 # htdigest -c "/usr/user.passwd" $AuthName $username
26 AuthUserFile "/opt/webdav/user.passwd"
27 # AuthDigestProvider file
29
30 # Allow universal read-access, but writes are restricted
31 # to the admin user.
32 <RequireAny>
33 Require method GET POST OPTIONS
34 Require user $username
35 </RequireAny>
36 </Directory>
Digest
- 改:DavLockDB
- 改:AuthName
- 改:AuthUserFile
- 增:Require valid-user
- 注:<RequireAny>…</RequireAny>
15 DavLockDB "/opt/webdav/var/DavLock"
16
17 Alias /webdav "/Users/faner/Sites/DAVNAS"
18
19 \<Directory "/Users/faner/Sites/DAVNAS">
20 Dav On
21
22 AuthType Digest
23 AuthName webdav
24 # You can use the htdigest program to create the password database:
25 # htdigest -c "/usr/user.passwd" DAV-upload admin
26 AuthUserFile "/opt/webdav/user.passwd"
27 Require valid-user
28 AuthDigestProvider file
29
30 # Allow universal read-access, but writes are restricted
31 # to the admin user.
32 # \<RequireAny>
33 # Require method GET POST OPTIONS
34 # Require user admin
35 # \</RequireAny>
36 \</Directory>
共享多个目录
建议把要共享的内容放在一个共享目录(DAVNAS),然后通过 /webdav 访问。
如果有多个共享目录,可以复制 Alias、Directory,建立多组 URL 路径映射。
Alias /webdav1 "/Users/faner/Sites/DAVNAS1"<Directory "/Users/faner/Sites/DAVNAS1">Dav On# Dav access control
</Directory>Alias /webdav2 "/Users/faner/Sites/DAVNAS2"<Directory "/Users/faner/Sites/DAVNAS2">Dav On# Dav access control
</Directory>
这样,后续就可以通过 /webdav1, /webdav2 分别访问不同的共享目录。
授予 httpd 完全磁盘访问权限
将 DAVNAS 共享目录分配给 _www:_www 后,还得给 httpd 相关 daemon 进程分配磁盘访问权限,这样才能读写磁盘文件系统。
打开 macOS 设置(System Settings),隐私与安全性(Privacy & Security),完全磁盘访问权限(Full Disk Access),
点按左下角的 + 号,在打开的访达窗口按 Shift+Command+G 调出路径访问方式,输入 /usr/sbin/httpd 回车,找到 httpd 命令添加。
依此方法,添加 /usr/sbin/htdigest(或 /usr/sbin/htpasswd)。
验证更新配置重启Apache Httpd
执行 apachectl configtest 检查 Apache Httpd 配置文件:如果仅输出一行 Syntax OK 代表配置正确;否则,表示配置有问题,请按提示检查配置文件,也可查看分析问题日志 /var/log/apache2/error_log。
配置文件验证无误后,执行 sudo apachectl graceful 重载配置文件使生效。
最后,重新启动 Apache 服务器:sudo apachectl -k restart。
局域网连接验证WebDAV服务
打开本机访达(Finder),按 Command+k 连接服务器,输入 http://mbpa1398.local/webdav/,然后输入在 user.passwd 中配置的账户密码,看看是否可以正常访问。
- 如果机器名无法解析(unable to resolve host),可以换成局域网 IP 访问:http://192.168.0.100/webdav , 或者考虑在 /etc/hosts 中添加条目:127.0.0.1 mbpa1398.local 。
本机验证通过后,在局域网其他终端(例如 Mac Finder,iPhone PDF expert)上尝试连接 webdav 服务。连接成功后,即可进行简单的多用户协作。
这样,就将 DAVNAS 配置为家庭局域网内的数据中心,支持多设备共享和编辑同步文件。
DAVNAS 目录隶属
_www:_www用户组,所有用户统一通过 WebDAV 客户形式以_www身份对其执行写入操作。
将配置文件 httpd-dav.conf 中的 Directory 配置为外挂硬盘,例如 /Volumes/WDHD,即可变为简陋的 NAS。
有条件的,可以进一步升级支持 HTTPS 安全访问,需要在 httpd.conf 引入 httpd-ssl.conf 并配置加载 ssl 相关模块,还得使用 openssl 创建自签名证书。
如果家里的宽带有分配公网 IP,可以在路由器中配置端口映射,支持外网访问。这样,即使身在外边,也可远程访问家里的 WebDAV 服务。
curl 命令行访问操作 WebDAV
-
认证方式可选
--basic,--digest,不指定相当于--anyauth,让 cURL 自动选择。 -
-u(–user) 后面可只指定用户名
-u $username,将提示输入密码;也可连带指定密码-u $username:$password。 -
拉取文件列表(也可指定其他目录,以/结尾):
curl -i --basic -u $username -X PROPFIND http://mba1398.local/webdav/ --upload-file - -H "Depth: 1" <<end
<?xml version="1.0"?>
<a:propfind xmlns:a="DAV:">
<a:prop><a:resourcetype/></a:prop>
</a:propfind>
end
- 新建目录:
curl -v -u $username -X MKCOL http://mba1398.local/webdav/curltest/
- 上传文件(也可在 url 后续接上传后的自定义目标文件名):
curl -v -u $username -T test.txt http://mba1398.local/webdav/curltest/
- 移动文件(同目录相当于重命名):
curl -v -u $username -X MOVE http://mba1398.local/webdav/curltest/test.txt --header 'Destination: http://mba1398.local/webdav/curltest/test2.txt'
- 复制文件:
curl -v -u $username -X COPY http://mba1398.local/webdav/curltest/test2.txt --header 'Destination: http://mba1398.local/webdav/curltest/test3.txt'
- 下载文件(或 > test2.txt,重定向 stdout 到文件;-v 是 stderr):
curl -v -u $username http://mba1398.local/webdav/curltest/test3.txt -o test3.txt
- 删除文件(夹):
curl -v -u $username -X DELETE http://mba1398.local/webdav/curltest/test3.txt
linux 挂载 WebDAV 云盘
在 Ubuntu 或 CentOS 下可以将 WebDAV 挂载为本地磁盘。
- 安装 davfs2:
# Ubuntu
sudo apt-get install davfs2 -y
# CentOS
sudo yum install davfs2 -y
- 创建本地挂载点目录:
$ mkdir /mnt/webdav@mbpa1398
- 执行 mount 命令挂载 WebDAV:
$ sudo mount -t davfs http://mbpa1398.local/webdav /mnt/webdav@mbpa1398
Please enter the username to authenticate with server
http://mbpa1398.local/webdav or hit enter for none.Username: $username
Please enter the password to authenticate user $username with server
http://mbpa1398.local/webdav or hit enter for none.Password: $password
- 直接编辑 WebDAV 上的文件,然后保存同步:
sudo vim /mnt/webdav@mbpa1398/test/test.c
- 用完之后,记得解除挂载:
sudo umount /mnt/webdav@mbpa1398
-
可考虑配置开机自动挂载,涉及以下配置文件:
- davfs2配置文件:/etc/davfs2/davfs2.conf
- davfs2密码配置:/etc/davfs2/secrets
- 自动挂载配置文件:/etc/fstab
参考
wiki - WebDAV
网络存储文件共享之 WebDAV
在 Mac mini Server 上配置 WebDAV 文件共享
WEBDAV WITH CURL:curl 测试 webdav,学习 WebDav
如何在Ubuntu或CentOS将WebDAV挂载为本地磁盘
Linux 挂载 WEBDAV,Linux将WebDAV为本地磁盘
相关文章:
macOS上基于httpd-dav搭建WebDav服务
文章目录 配置 Apache httpd修改 ServerName启动验证 httpd 服务启用 Dav 扩展服务配置 配置 httpd 扩展 Dav 服务设置共享目录文件夹配置 DavLockDB 目录创建 WebDAV 访客用户 httpd-dav.conf 主要改动部分BasicDigest共享多个目录 授予 httpd 完全磁盘访问权限验证更新配置重…...
Java-设计模式-单例模式
单例模式 从单例加载的时机区分,有懒汉模式/饥饿模式。 从实现方式区分有双重检查模式,内部类模式/Enum模式/Map模式等。在《Effective Java》中,作者提出利用Enum时实现单例模式的最佳实践。 内容概要 实现单例模式的几个关键点 利用Enu…...
图片html5提供的懒加载与vue-lazyload的区别
原生HTML lazy loading特性 <img src"/images/ocean.jpeg" alt"Ocean" loading"lazy"> loading"lazy" 是HTML5的一个原生特性,它允许浏览器延迟加载图片直至图片距离视口很近或者即将进入视口时。这是一种由浏览器…...
golang 根据某个特定字段对结构体的顺序进行排序
文章目录 方法一方法二方法三 在Go语言中,我们可以使用 sort.Slice() 函数对结构体进行排序。假设你有一个结构体,并且希望根据其中的某个字段进行排序,你可以使用自定义的排序函数。 方法一 下面是一个示例代码,假设有一个包含…...
React Router 参数使用详解
React Router 参数使用详解 React Router 是 React 中用于处理路由的常用库,它提供了丰富的功能来管理应用程序的导航和路由状态。在 React Router 中,我们经常需要使用不同类型的参数来处理路由信息,包括 params 参数、search 参数和 state…...
Vue中$set用法解析
当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值,但是遇到以下情况不会进行数据的双向绑定。 当你利用索引直接改…...
进制,码制及其表示范围
一 进制 1 常见的进制及其简写 十进制(Dec)二进制(Binary)十六进制(Hex)八进制(Octal) 2 进制之间的相互转换 二 码制 1 常用的码制 三 各码制在定点整数时表示的范围 个人推导…...
钡铼技术R40工业4G路由器加速推进农田水利设施智能化
钡铼技术R40工业4G路由器作为一种先进的通信设备,正在被广泛应用于各行各业,其中包括农田水利设施的智能化改造。通过结合钡铼技术R40工业4G路由器,农田水利设施可以实现更高效的管理和运营,提升农田灌溉、排水等工作效率…...
基于龙芯2k1000 mips架构ddr调试心得(一)
1、基础知识 DDR2的I/O频率是DDR的2倍,也就是266、333、400MHz。 DDR3传输速率介于 800~1600 MT/s之间 DDR4的传输速率目前可达2133~3200 MT/s 2k1000内存:板载2GB DDR3 ,可选4GB 使用龙芯芯片最好用他们自己的Bo…...
智能合约语言(eDSL)—— 使用rust实现eDSL的原理
为理解rust变成eDSL的实现原理,我们需要简单了解元编程与宏的概念,元编程被描述成一种计算机程序可以将代码看待成数据的能力,使用元编程技术编写的程序能够像普通程序在运行时更新、替换变量那样操作更新、替换代码。宏在 Rust 语言中是一种功能&#x…...
敏捷开发——elementUI/Vue使用/服务器部署
1. 创建vue项目 2. 安装element-ui组件库 npm i -S element-ui或 npm install element-ui3. 在main.js中导入element-ui组件 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(ElementUI)element-ui 组件库地址:Element …...
uniapp 使用sqlite时无法读取到db文件中的数据
问题 {“code”:-1404,“message”:“android.database.sqlite.SQLiteException: no such table: user (Sqlite code 1): , while compiling: select * from user, (OS error - 2:No such file or directory),http://ask.dcloud.net.cn/article/282”} at pages/index/index.vu…...
Linux 网络接口管理
为了更深入的了解linux系统,为此做出网络接口管理的知识总结。看起来麻烦,其实一点都不难,相信多看多了解总会是没错的!❤️❤️ 一起加油吧!✨✨🎉🎉 文章目录 前言一、网络配置的文件介绍二、…...
【设计模式】Java 设计模式之模板策略模式(Strategy)
策略模式详解:模式结构、实现与应用场景 一、策略模式概述 策略模式是一种行为设计模式,它使得算法可以独立于使用它的客户端变化。策略模式使得算法可以在运行时切换,从而增强了系统的灵活性和可维护性。在策略模式中,我们定义…...
SpringBoot项目前端Vue访问后端(图片静态资源) 配置
静态资源配置 Configuration public class WebMvcConfig extends WebMvcConfigurationSupport {Value("${file.save-path}")private String fileSavePath;Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {//映射本地文件夹registry…...
colab中数据集保存到drive与取出的方法
from google.colab import drive drive.mount(/content/drive) 一、下载数据集 from datasets import load_dataset max_length 32 # Maximum length of the captions in tokens coco_dataset_ratio 50 # 50% of the COCO2014 dataset# Load the COCO2014 dataset for tr…...
React 应该如何学习?
学习 React 是现代 Web 前端开发中的重要一步,因为它是一个流行且强大的 JavaScript 库,用于构建用户界面。React 的学习过程需要掌握一系列的概念、技术和最佳实践。 1. 基础知识 1.1 HTML、CSS 和 JavaScript React 本质上是一个 JavaScript 库&…...
跨平台无缝操作:ShareMouse让多电脑协同更高效
ShareMouse是一款功能强大的鼠标和键盘共享软件,它支持多台计算机之间的无缝连接,让用户能够通过一套键鼠设备轻松控制多台电脑,提高工作效率。此外,ShareMouse还具备剪贴板共享、文件拖放等功能,实现不同计算机间的便…...
Vue使用pandoc-wasm进行各格式转换
前端使用pandoc-wasm的问题和建议 docx转md npm install --save pandoc-wasmimport { Pandoc } from "pandoc-wasm";const pandoc new Pandoc()pandoc.init().then(async (pandoc) > {const result await pandoc.run({text: "Some input text",opti…...
springboot284基于HTML5的问卷调查系统的设计与实现
问卷调查系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,问卷信息因为其管理内容繁杂,管理数量繁多导…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
