使用JavaScript开发象棋在线对弈程序
老葛制作的视频课程,放在在B站上了,欢迎大家学习交流。
https://www.bilibili.com/video/BV1wgXsBME1n/
源代码:
https://github.com/g089h515r806/build_xiangqi_online
主要内容包括:
老葛制作的视频课程,放在在B站上了,欢迎大家学习交流。
https://www.bilibili.com/video/BV1wgXsBME1n/
源代码:
https://github.com/g089h515r806/build_xiangqi_online
主要内容包括:
我开发的nextcrawler,使用 使用Playwright + Next.js + Prisma等主流技术搭建的网页数据采集器,项目已经开源: https://github.com/g089h515r806/nextcrawler
最初开发的时候,prisma还是6.x版本,最近发现prisma已经升级到了7.x版本,而且是主版本升级。决定将自己项目的prisma版本从6.x 升级到7.x,踩了不少坑。
当前使用的版本:
"@prisma/client": "^6.18.0",
"prisma": "^6.18.0",
开发的时候,这个版本已经比较高了,初步开发完了以后,出来了7.x版本,
准备升级,尝试了一下,不行,
我们在做Drupal项目的时候,特别时Drupal8版本以上的项目,我们经常使用Twig Tweak模块。这个模块小巧玲珑,方便易用。
模块地址:https://www.drupal.org/project/twig_tweak
它为Drupal核心的Twig模板,增加了扩展函数,方便可以在twig模板文件中嵌入区块、视图,等等。
在模板中嵌入区块:
{{ drupal_block('plugin_id') }}
{{ drupal_entity('block', 'block_id', check_access=false) }}
我们知道,Drupal是一个PHP版本的CMS系统,这个系统开始涉及,就是面向HTTP 请求的,底层逻辑就是一个请求,启动一次引导指令,请求结束后,进程结束。这种模式比较简单。
随着技术的进步,其它语言,都可以实现程序启动后,处理多个请求,比如Java,Nodejs,这种模式的优点是性能卓越。PHP里面也有类似的框架,比如Swoole,这个国产的框架,底层C++;以及 ReactPHP, PHP-PM等等,都可以实现启动后,处理多个请求。
受限于Drupal历史代码的负担,让Drupal兼容持久性应用服务器并不是一件容易的事情,Drupal社区有部分人士,多次呼吁,讨论的也很激烈,这里有一个专门的讨论帖子:
最近几年,自然语言大模型的快速落地应用发展迅猛,呈现百花齐放的局面。作为内容管理系统里面的领头羊,Drupal社区也推出了AI的集成模块。模块地址:
https://www.drupal.org/project/ai
这个模块提供了一个框架,用于在Drupal站点集成AI功能,支持多种AI供应商。这个模块包含一些列模块,并提供了一个基础的API,用来生成文本内容,图片、内容分析,等等。
它吸取了Search API, Open AI等Drupal模块的成功经验,他提供了一个统一的抽象层,方便集成OpenAI (ChatGPT, DALL-E), Anthropic (Claude), Fireworks, Mistral 这些商用大模块,也可以集成开源的大模型,Olama, LMStudio and Hugginface,支持本地化部署。
近期2025年9月2日,Experience builder模块更名为Drupal Canvas,并发布了1.0.0-alpha1版本。更名的原因很简单,与别人的商标名称冲突了。
Canvas,前端web里面意思是画布,web特有的技术。Drupal Canvas模块使用到了web前端的画布功能,它的用途是让非技术人员,通过画布技术,拖拽的方式构建前端页面。易用性方面有了很大的提升。
如果说Panels模块,是面向Drupal程序员的,那么Drupal Canvas则是面向Drupal终端用户的,特别是内容管理人员。允许用户拖拽的内容,支持Drupal系统自带的区块、视图、等等,方便易用,并且内容可以复用。
Drupal Canvas除了Drupal端的代码以外,大量的使用React前端框架,整个预览的前端界面,都是基于React框架开发的,这是Drupal + React的一次非常好的实践。
部分单位出于安全的考虑,管理页面只让内网访问,特别是护网阶段。我们的Drupal站点,通常使用Nginx,这里介绍一下通过nginx的配置文件,实现这个功能
location /admin {
# 第一步:允许内网网段
allow 10.0.0.0/24;