MediaCMS × Moodle 集成实战:基于 LTI 1.3 的视频安全嵌入与完整配置、工作流指南
音视频CMS后端前端【免费下载链接】mediacmsMediaCMS is a modern, fully featured open source video and media CMS项目地址https://gitcode.com/gh_mirrors/me/mediacms点击查看免费下载本文基于 MediaCMS 仓库内的 Moodle 集成文档与配套插件源码系统讲解如何将 MediaCMS 接入 Moodle从两侧MediaCMS 与 Moodle的 LTI 1.3 配置、两个插件的安装与参数设置到讲师/学生的日常媒体工作流。读完后你将能够独立完成生产环境的对接并理解粘贴 URL 即自动转为 LTI 安全嵌入播放器背后的实现机制。1. 集成套件总览filter_mediacms 与 tiny_mediacms 两个插件协同MediaCMS 的 Moodle 集成由两个相互协作的插件组成源码位于 lms-plugins/mediacms-moodle/filter_mediacms— 文本过滤器插件。负责 LTI 1.3 认证与安全视频启动、把 MediaCMS URL 自动转换为嵌入式播放器并提供两个插件共享的核心设置MediaCMS URL、LTI 工具。管理入口Site Administration Plugins Filters Manage filters MediaCMS。tiny_mediacms— TinyMCE 编辑器按钮插件。在编辑器中提供Insert MediaCMS media按钮通过 LTI Deep Linking 浏览已认证的媒体库并配置嵌入选项核心设置直接读取自filter_mediacms。两个插件的关键工程事实可对照源码验证硬性依赖tiny/mediacms/version.php 中声明$plugin-dependencies [filter_mediacms 2026051100]即tiny_mediacms无法单独安装必须先安装filter_mediacms。版本要求两个插件的version.php均声明$plugin-requires 2024100700Requires Moodle 4.5release v1.0.0成熟度为MATURITY_STABLE。README 注明该套件已在 Moodle 5 上测试。安装方式推荐通过 Moodle 的 ZIP 上传机制Site Administration Plugins Install plugins先上传filter_mediacms再上传tiny_mediacms也可将插件解压到 Moodle 目录结构filter/mediacms/与lib/editor/tiny/plugins/mediacms/例如/var/www/moodle/public下随后打开 Moodle 触发自动安装详见 INSTALL.txt。过滤器必须置顶安装完成后必须在 Manage filters 中启用 MediaCMS 并将其放到过滤器列表最上方否则嵌入内容无法正确加载。前提与限制本套件以仓库lms-plugins/mediacms-moodle/目录下的当前版本v1.0.0为准集成需要一台可公开访问的 MediaCMS 实例与 Moodle 站点且建议两者使用同一主域名原因见下文 Note 1。2. 管理员指南四步完成安装与配置文档主体面向管理员的配置流程分为四个阶段下面按操作顺序完整给出。2.1 阶段一配置 MediaCMS 的local_settings.py在 MediaCMS 的local_settings.py中开启三个开关USE_IDENTITY_PROVIDERS True USE_RBAC True USE_LTI True修改后重启 MediaCMS 服务。对照 cms/settings.py 可以看到这三个开关在默认配置中均为FalseUSE_RBAC False、USE_IDENTITY_PROVIDERS False、USE_LTI False # Enable LTI 1.3 integration即 LTI 1.3 集成属于显式启用的可选能力。其中USE_LTI控制 LTI 路由与相关视图的加载USE_RBAC提供基于 RBAC 分组的课程级权限体系媒体按课程分组成员授权USE_IDENTITY_PROVIDERS则用于把 Moodle 等外部身份源与本地用户体系对接。2.2 阶段二Moodle 侧注册 LTI 1.3 External Tool在 Moodle 中进入Site Administration Plugins Activity Modules External tools Manage Tools选择Configure a Tool Manually按以下参数填写Tool Settings参数取值NameMediaCMSTool URLMediaCMS issuer URL /lti/launch/如https://mediacms.organisation.org/lti/launch/LTI versionLTI 1.3Client ID保存工具后由 Moodle 自动生成Public key typeKeyset URLPublic keysetMediaCMS issuer URL /lti/jwks/如https://mediacms.organisation.org/lti/jwks/Initiate login URLMediaCMS issuer URL /lti/oidc/login/如https://mediacms.organisation.org/lti/oidc/login/Redirection URI(s)MediaCMS issuer URL /lti/launch/Tool configuration usageShow in activity chooser and as a preconfigured toolDefault launch containerEmbed, without blocks Supports Deep LinkingServicesIMS LTI Assignment and Grade ServicesDo not use this serviceIMS LTI Names and Role ProvisioningUse this service to retrieve members information as per privacy settingsTool SettingsUse this servicePrivacyShare launchers name with toolAlwaysShare launchers email with toolAlwaysAccept grades from the toolAs specified in Deep Linking definition or Delegate to teacher最后 Save Changes。这三个 URL 在 MediaCMS 侧是真实存在的路由lti/urls.py 定义了oidc/login/OIDCLoginViewOIDC 登录发起、launch/LaunchView处理 LTI Launch JWT 验签与业务逻辑、jwks/JWKSView公开 MediaCMS 工具的公钥集、public-key/、select-media/Deep Linking 选媒、my-media/与embed/friendly_token/。工具密钥由 lti/models.py 中的LTIToolKeys模型管理——首次使用时自动生成 2048 位 RSA 密钥对JWK 格式algRS256JWKS 端点即基于该公钥提供。2.3 阶段三安装并配置两个 Moodle 插件安装顺序与方式见第 1 节。安装后依次完成以下配置Site Administration Plugins Filters Manage filters启用 MediaCMS 过滤器并置于列表顶部。Site Administration Plugins Filters MediaCMS共 4 个设置项对应 filter/mediacms/settings.php设置项说明My Media link placementMy Media链接的放置位置Top Navigation顶部导航、User Navigation用户头像下拉菜单或 None。源码中对应MEDIACMS_NAV_PLACEMENT_TOP/PROFILE/NONE三个常量filter/mediacms/lib.php由 classes/hooks.php 中的after_config钩子把链接追加到custommenuitems或customusermenuitemsMediaCMS URL如mediacms.organisation.org默认值https://lti.mediacms.io以 PARAM_URL 校验LTI Tool从lti_types表下拉选择第 2.2 步创建的 MediaCMS 工具显示为名称 (baseurl)Share Embedded Media勾选框默认开1。控制嵌入媒体是否出现在My Media Shared with Me语义见下文 Note 3Site Administration Plugins Text editors TinyMCE MediaCMS设置用户嵌入时的默认选项对应 tiny/mediacms/settings.php 的三个复选框默认均为 1Show video title在视频上方显示媒体标题Link video title标题链接到完整媒体播放页可下载、评论等Show user avatar在视频上方显示用户头像图标。Notes原文档注释务必理解Note 1同域建议随着浏览器厂商2026 年 Q2 起日益收紧跨站跟踪限制用户在系统 YMoodle中查看来自系统 XMediaCMS的嵌入内容可能受限。因此建议 MediaCMS 与 Moodle 使用同一主域名如moodle.organisation.org与mediacms.organisation.org。Note 2User Navigation 指 Moodle 界面右上角用户头像菜单含用户资料与偏好设置。Note 3Share Embedded Media 语义当用户访问 Moodle 活动/资源中嵌入的媒体时系统会自动为其授予该媒体的访问权限媒体 Publish State 被设为 Private and Shared不可通过复制链接的方式在 Moodle 之外分享该权限在用户失去课程访问权后不会自动移除可通过My Media Bulk Actions Course Cleanup手动清理。Option 1Share Embedded Media True访问过嵌入媒体的用户可在 Moodle 内的 My Media 以及 MediaCMS 视频门户中的My Media Shared with Me看到这些媒体。Option 2Share Embedded Media False若希望对嵌入内容执行严格访问控制、不依赖人工 Course Cleanup 流程应选此项。源码印证该开关在每次 LTI 启动时都会随 custom parameters 下发。filter/mediacms/launch.php 读取filter_mediacms/share_embedded_media配置后将其编码为embed_share_media参数放入 LTI 启动表单的隐藏字段MediaCMS 侧据此决定是否把媒体加入Shared with Me。2.4 阶段四MediaCMS 管理端添加 Moodle 为 LTI Platform在 MediaCMS 中进入Administration LTI 1.3 Integration LTI Platforms Add LTI Platform填写Basic InformationName按你的语境命名如 Moodle ProductionPlatform IDMoodle 平台的 issuer URLiss claim如https://moodle.organisation.orgClient ID从 Moodle Site Administration Plugins Activity Modules External tools Manage Tools MediaCMS Edit 中获取OIDC EndpointsAuth login URLMoodle issuer URL /filter/mediacms/lti_auth.phpAuth token URLMoodle issuer URL /mod/lti/token.phpAuth audienceMoodle issuer URL /mod/lti/certs.phpJWK ConfigurationKey set URLMoodle issuer URL /mod/lti/certs.phpDeployment FeaturesDeployment IDs从 Moodle 的 External tools MediaCMS View configuration details 获取Enable NRPSyesEnable deep linkingyesAuto-Provision SettingsRemove from groups on unenrollyes这些字段与 lti/models.py 中LTIPlatform模型一一对应platform_idiss claim、client_id、auth_login_url、auth_token_url、auth_audience、key_set_url、deployment_idsJSON 列表、enable_nrps、enable_deep_linking、remove_from_groups_on_unenroll其中(platform_id, client_id)构成唯一约束get_lti_config()方法将上述字段组装为 PyLTI1p3 所需的工具配置。一个值得注意的实现细节Auth login URL 使用的是 MediaCMS 插件自带的 filter/mediacms/lti_auth.php而非 Moodle 核心的/mod/lti/auth.php。从该文件头部注释看二者功能一致但插件版本的无活动id0启动分支只要求用户已登录不要求moodle/course:manageactivities能力——这正是普通学生也能触发媒体嵌入 LTI 启动的关键标准auth.php的该分支会拒绝学生。同时lti_auth.php头部注释要求把该地址追加到 Moodle 端 External Tool 的 Redirection URIs 中且其 OIDC 参数校验严格复刻了scopeopenid、response_typeid_token、response_modeform_post、login_hint必须等于 Moodle 用户 ID 等约束。配置完成后即可分别以管理员、讲师、学生等 Moodle 角色实测安装结果。3. 源码原理文本过滤器如何把 URL 变成 LTI 安全播放器文档中粘贴 MediaCMS URL 到编辑器即自动嵌入的行为实现于 filter/mediacms/classes/text_filter.php。filter()方法按以下管线处理页面文本[mediacms:TOKEN]标签正则/\[mediacms:([a-zA-Z0-9])\]/匹配手写标签直接生成 iframe已有iframe src...中的 MediaCMS URLTinyMCE 插件保存的嵌入只替换src值为launch.phpURL保留 iframe 其余属性width、style 等。此步必须先于第 3 步执行避免只替换 URL 字符串导致 HTML 损坏纯文本 MediaCMS URL先保护带data-mediacms-textlinktrue的纯链接占位符暂存再把形如https://HOST/PREFIX/(view|embed)?mTOKEN的 URL 替换为嵌入式 iframe最后把受保护链接还原为点击即弹层播放的跳转链接指向my_media.php。替换生成的 iframe 统一指向 Moodle 侧的/filter/mediacms/launch.php?token...courseid...而非直接加载 MediaCMS。launch.php 的处理逻辑包括解析token媒体 friendly_token、courseid以及嵌入参数showTitle、showUserAvatar、linkTitle、t开始时间、width/height、show_media_page将这些参数组装为 LTI custom parametersmedia_friendly_token、embed_show_title、embed_start_time、embed_share_media等并附加parent_media_base指向my_media.php供嵌入播放器中点击标题时让父框架导航回 Moodle调用 Moodle 核心lti_build_login_request()直接构建 OIDC 登录请求把 custom params 按launchid存入 PHP session键名mediacms_cp_launchid——源码注释说明这是为避免同一页面多个视频并发加载时共享 session 键产生竞态条件输出一个自动提交的表单指向 MediaCMS 配置的lti_initiatelogin端点携带client_id、login_hint当前 Moodle 用户 ID、lti_message_hint与全部隐藏字段。随后 MediaCMS 的OIDCLoginViewlti/views.py按iss client_id查找LTIPlatform重定向到 Moodle 的 OIDC 登录端点即 2.4 节配置的lti_auth.phpMoodle 验证参数后用平台密钥签发 id_token 回跳/lti/launch/MediaCMS 验签、映射用户LTIUserMapping按subclaim 绑定本地用户、应用角色并渲染播放页。这就是整个用户无感认证的完整闭环。My Media页面走的是另一条启动路径filter/mediacms/my_media.php 用mydashboard布局渲染全屏 iframe指向lti_launch.php后者用enrol_get_users_courses()收集用户所有在读课程及每门课的角色默认student编码为 base64 的publishdata存入 session 后再发起 OIDC 流程。MediaCMS 侧 lti/handlers.py 的provision_lti_bulk_contexts会据此批量创建/复用课程上下文Category RBAC Group。若用户没有任何在读课程启动仍会进行使用 SITEIDpublishdata 为空数组。嵌入参数小结编辑器保存 URL 时携带、过滤器解析时提取参数含义showTitle是否在媒体上方显示标题showUserAvatar是否在媒体上方显示用户头像linkTitle标题是否链接到完整播放页新标签页打开可用下载/评论/收藏t开始播放时间秒width/height最大尺寸iframe 使用aspect-ratio默认 16/9与max-width实现响应式此外过滤器生成的 iframe 样式为width:100%;max-width:widthpx;aspect-ratio:w / h;display:block;margin:0 auto;border:0;即用户设定的最大尺寸会自动适应浏览器窗口/设备显示。编辑器中的嵌入参数还会写入浏览器 cookie下次嵌入时自动沿用。4. 讲师工作流从上传到嵌入的完整链路集成覆盖的讲师日常操作文档第 2 节如下均可在 Moodle 的My Media内完成1. 上传媒体Moodle My Media 右侧相机图标Add Media Upload 拖拽/浏览文件。视频、音频、图片和 PDF 均可上传并与课程成员共享但只有视频和音频能嵌入 Moodle 活动/资源。2. 录制媒体Add Media Record 电脑用Record Screen with Audio、移动端用Record Video直接存入 My Media。注意Apple iPhoneiOS仅支持 480p 下 10 分钟录制Android 系统限制较少。3. 编辑媒体My Media 选中媒体 Edit Media缩略图上方铅笔图标支持3.1 Metadata标题、描述、标签、日期、poster 图、缩略图、启用评论3.2 Trim裁剪片段或将媒体拆分为多个新媒体文件3.3 Captions自动生成转录和/或英文翻译或手动上传.srt/.vtt文件3.4 Chapters创建章节显示在播放器中3.5 Publish与课程共享或设为 Unlisted 以在 Moodle 之外发布3.6 Replace替换媒体文件但保留全部元数据、字幕、章节。4. 与其他用户共享My Media 选择媒体 Bulk Actions Share with1. Co-Viewers / 2. Co-Editors / 3. Co-Owners / 4. Course Members。前三种分别授予 View、Edit、Co-owner可执行除删除外的一切操作权限第 4 种按课程内既有权限映射学生变 Viewer讲师等角色变 Co-Owner。也可用 单个媒体 Publish 选择课程 达到与 Course Members 共享同等效果。以 Course Members 方式共享后媒体会自动列在课程下完整播放页可访问该课程全部媒体清单用户只能看到自己是成员的课程清单。5. 嵌入到课程活动/资源两种基本工作流Workflow A从播放页复制My Media 点击播放 在播放区右键 Copy Video URL 到课程活动/资源 编辑模式 Content 区 在文本编辑器粘贴 URL 媒体显示 点 Edit 调整参数 Insert Save and Display。Workflow B从活动/资源侧插入任意活动/资源 启用 Editing Content 区 文本编辑器 点击绿色播放图标Insert MediaCMS media 选择媒体 调整参数 Insert Save and Display。需要调整时在活动/资源编辑模式下点击媒体上方的 edit若媒体是以文本链接方式插入的编辑模式下点击媒体链接后在编辑器中点绿色播放图标进入编辑。嵌入参数含义Show title / Show user avatar / Link title / Insert text link only / Dimensions见 3 节参数表。媒体被插入活动/资源后即获得Shared发布状态并会在用户访问该活动/资源时自动与其共享若管理员开启了 Share Embedded Media用户还能在My Media Shared with Me中看到。6. Moodle 之外引用或嵌入My Media 打开媒体 右键播放窗口 复制 URL 或嵌入代码 粘贴到外部门户或客户端。7. 收藏到播放列表完整播放页 Save 存入现有或新建 Playlist在 My Media Playlists 访问。8. Bulk Actions对多个媒体批量操作——启用/禁用评论、启用/禁用下载、修改 Publish StatePrivate / Shared / Unlisted、变更归属、复制或删除。9. Course CleanupMoodle My Media Bulk Actions Course Cleanup。管理员与讲师可在不选择任何媒体的情况下执行清理清理范围覆盖所有嵌入课程活动/资源的媒体以及 Shared with Course Members / Publish 到课程的媒体只选择部分媒体时则只作用于所选媒体。两个具体操作9.1 Remove present course permissions for all course members所有访问过该课程嵌入媒体的用户不再被列作共享伙伴通过 Course Members / Publish 共享的媒体同理。注意若用户仍保有对应 Moodle 活动/资源的访问权且媒体仍嵌入其中此操作不会剥夺其访问权。9.2 Remove Comments删除该课程嵌入媒体或共享给课程成员的媒体下的全部评论。课程结束学期后执行 Course Cleanup 是推荐实践清空权限与评论后媒体可在跨课程复用时不带旧课程的包袱。5. 学生工作流文档第 3 节指出学生支持的工作流与讲师几乎一致包括上传媒体编辑媒体与其他用户共享媒体将媒体嵌入 Moodle 课程活动/资源在 Moodle 之外链接或嵌入媒体收藏并归入播放列表Bulk Actions。两处限制Note 4学生只能嵌入到其在 Moodle 权限体系中允许编辑的活动/资源Note 7学生无法使用 Bulk Actions 中的 Course Cleanup。在 MediaCMS 侧学生身份用户通过 LTI 启动自动映射为本地账号LTIUserMapping其访问的媒体按 RBAC 分组课程 Category Group鉴权若学生未登录 MediaCMSlti_auth.php会先通过跨站 POST 重放repost机制确保其已在 Moodle 登录。6. 课程与用户的 Provisioning 及角色映射映射关系文档第 2.10 节Moodle 的一门课程对应 MediaCMS 的一个 Category课程角色映射为 MediaCMS 课程分组角色Student → ViewerTeacher → Manager课程 Category 的创建时机以下任一工作流触发My Media Bulk Actions Share with Course Members 添加课程 点 ProceedMy Media 媒体 Publish 课程加入列表 点 Publish MediaCourse 课程元素如 page Edit TinyMCE 编辑器 点击 Insert MediaCMS Media。用户则是在其访问 Moodle 中的嵌入媒体或 My Media、或内容被共享给课程成员时逐个加入对应的课程 Category Group。同步机制的现状文档明确说明尚未建立例如经 NRPS 的课程与用户自动持续同步未来版本可能包含。当前是面向单个用户的即席同步——当某课程成员点击 My Media 时其课程成员身份与角色变化如被移出课程、角色变更会被同步到 MediaCMS 的课程分组。这一点与 MediaCMS 侧源码相符lti/handlers.py 内置了DEFAULT_LTI_ROLE_MAPPINGS既覆盖标准 LTI 角色名Instructor、TeachingAssistant、Learner、Student、Administrator、Faculty也覆盖 Moodle 角色短名student、guest→memberteacher、editingteacher、manager、coursecreator→managerta→contributor默认兜底角色为member。这些 group_role 最终落到 RBAC 分组角色member/contributor/manager与文档中 Student→Viewer、Teacher→Manager 的产品化表述一致。平台级开关remove_from_groups_on_unenroll2.4 节 Auto-Provision Settings则决定退课用户是否被自动移出 RBAC 分组。7. 排查提示嵌入不加载优先检查 MediaCMS 过滤器是否在 Manage filters 中启用并置顶INSTALL.txt 特别强调My Media链接不出现或位置不对检查 Filters MediaCMS 的 My Media link placement 设置必要时按 README 的 Troubleshooting 一节在 Admin 高级主题设置中手动添加My Media|/filter/mediacms/my_media.phpLTI 启动失败MediaCMS 管理端的 LTI Platforms 记录中核对 Client ID、Deployment ID 与三个 OIDC 端点Moodle 端确认 Redirection URIs 已包含.../filter/mediacms/lti_auth.php两次握手涉及/lti/jwks/MediaCMS 公钥与/mod/lti/certs.phpMoodle 公钥任一不通都会导致验签失败。参考文件集成文档docs/moodle_plugin.md插件套件lms-plugins/mediacms-moodle/README.md、lms-plugins/mediacms-moodle/INSTALL.txt过滤器核心filter/mediacms/classes/text_filter.php、filter/mediacms/launch.php、filter/mediacms/lti_auth.php、filter/mediacms/lti_launch.php、filter/mediacms/my_media.phpMediaCMS LTI 实现lti/urls.py、lti/models.py、lti/views.py、lti/handlers.py功能开关cms/settings.py赞分享音视频CMS后端前端【免费下载链接】mediacmsMediaCMS is a modern, fully featured open source video and media CMS项目地址https://gitcode.com/gh_mirrors/me/mediacms点击查看免费下载相关推荐Moodle 内置 LTI 工具提供方类库LTI Tool Provider Library PHP技术解析与集成指南Moodle 内置 LTI 工具提供方类库LTI Tool Provider Library PHP技术解析与集成指南 导读 Moodle 仓库内置的 pu教育后端前端Moodle 内置 LTI 1.3 工具库lib/lti1p3深度解析IMS 认证的 PHP 工具提供方实现与 Moodle 化定制Moodle 内置 LTI 1.3 工具库lib/lti1p3深度解析IMS 认证的 PHP 工具提供方实现与 Moodle 化定制 public/lib教育后端前端免费开源 Video2X 快速指南三步把模糊老视频变 4K、再提速成 60fps免费开源 Video2X 快速指南三步把模糊老视频变 4K、再提速成 60fps Video2X 是一个免费开源、跨 Windows 与 Linux 的 AI音视频视频处理图像处理深度学习上一篇HowToCook 梅菜扣肉全流程实战指南客家经典硬菜的煮炸蒸三步火候详解下一篇HoloCubic_AIO硬件选择指南Naive、Metal、钢铁侠与天使底座版本全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

syzkaller Linux 内核配置指南:一份可复制的 .config 清单(KCOV 覆盖率、KASAN 检测与沙箱)

syzkaller Linux 内核配置指南:一份可复制的 .config 清单(KCOV 覆盖率、KASAN 检测与沙箱)

测试操作系统网络安全 【免费下载链接】syzkaller syzkaller is an unsupervised coverage-guided kernel fuzzer 项目地址: https://gitcode.com/gh_mirrors/syz/syzkaller 点击查看 免费下载 syzkaller 是一个无监督的、基于覆盖率引导(coverage-guid…

2026/10/13 3:12:46 阅读更多 →
IHP 框架安全指南:XSS、SQL 注入、CSRF 与认证安全的自动化防护与手动加固

IHP 框架安全指南:XSS、SQL 注入、CSRF 与认证安全的自动化防护与手动加固

后端 【免费下载链接】ihp 🔥 The fastest way to build type safe web apps. IHP is a new batteries-included web framework optimized for longterm productivity and programmer happiness 项目地址: https://gitcode.com/gh_mirrors/ih/ihp 点击查…

2026/10/13 3:12:46 阅读更多 →
TensorSpace 模型预处理实战:将单一输出预训练模型转换为层间多输出可视化格式

TensorSpace 模型预处理实战:将单一输出预训练模型转换为层间多输出可视化格式

数据可视化深度学习3D渲染AI 可解释性 【免费下载链接】tensorspace Neural network 3D visualization framework, build interactive and intuitive model in browsers, support pre-trained deep learning models from TensorFlow, Keras, TensorFlow.js 项目地址&#xff1…

2026/10/13 3:12:46 阅读更多 →

最新新闻

darknet运行报错libopencv_highgui.so.3.2缺失?动态库排查与解决全攻略

darknet运行报错libopencv_highgui.so.3.2缺失?动态库排查与解决全攻略

直接跑./darknet就报错error while loading shared libraries: libopencv_highgui.so.3.2,这种动态库缺失的问题,估计每个搞深度学习目标检测的人都被它堵过一阵子。明明编译都过了,运行却翻车,查了半天也不知道到底哪里没对上。如…

2026/10/13 4:02:58 阅读更多 →
AnyPS5:面向PS5主机的本地化系统工具链设计与实现

AnyPS5:面向PS5主机的本地化系统工具链设计与实现

项目标题本身“AnyPS5”未提供足够上下文,但结合命名惯例、技术社区常见实践及合规安全边界,可明确判断:这是一个面向 PlayStation 5 主机的本地化工具类项目代号,聚焦于主机端系统级功能增强、本地环境适配或用户侧体验优化&…

2026/10/13 4:02:58 阅读更多 →
并查集动态维护连通块大小:‘星球联盟‘题解与易错点

并查集动态维护连通块大小:‘星球联盟‘题解与易错点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 4:02:58 阅读更多 →
AI原生IDE与插件深度对比:Cursor、Trae、通义灵码能力边界与选型指南

AI原生IDE与插件深度对比:Cursor、Trae、通义灵码能力边界与选型指南

这两年AI编程工具的变化速度,快得有点不讲道理。我回想最早用插件式AI补全的时候,代码行预测已经够惊艳了;但现在的AI原生IDE和新一代编程插件,已经把范围从“猜你下一个单词”扩展到了“替你改文件、跑命令、做收尾”。Cursor、T…

2026/10/13 4:02:58 阅读更多 →
GEO优化实战:让DeepSeek、Qwen、豆包、Kimi主动引用你的内容

GEO优化实战:让DeepSeek、Qwen、豆包、Kimi主动引用你的内容

上周我把同一个问题同时丢给 DeepSeek、Qwen、豆包、Kimi,问的是某工业软件厂商的产品优势。四个助手给出的答案里,只有两个提到了这个品牌,引用来源几乎没有交集;其中一个完整转述了官网页面上的一句话,另一个却把品牌…

2026/10/13 4:02:58 阅读更多 →
基于三菱PLC的自动配料控制系统设计:双速给料与落差补偿实战

基于三菱PLC的自动配料控制系统设计:双速给料与落差补偿实战

做自动配料控制系统,绕不开两件事:PLC的选型,和配料流程里那些让人头疼的细节——飞料、秤漂、配方切换、粘度变化导致的给料差异。这个“基于三菱PLC的自动配料控制系统的设计”项目,从需求拆解、硬件选型、控制逻辑到现场调试完…

2026/10/13 4:01:58 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →