自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

原创 十五天学习做一款模拟经营类游戏

Day01. OpenTTD游戏简介以及为什么要研究它 (计划2021.10.4推出)Day02. 搭建OpenTTD的编译环境-Linux、windows和OSX(计划2021.10.7推出)Day03. OpenTTD源代码框架分析(计划2021.10.11推出)Day04. 新建一个HelloWorld对话框(计划2021.10.14推出)Day05. OpenTTD的Sprite介绍(计划2021.10.18推出)Day06. 自己动手编译OpenGFX库(计划2021.10.21推出)

2021-10-09 13:56:20 1262

原创 MiniSheet目录

MiniSheet目录Day 1 为什么会有mini_sheetDay 2 配置开发环境

2021-02-07 16:37:47 1182 3

原创 LuckySheet源码分析目录

目录1.源代码项目结构2.core.js源码分析3.function实现4.界面绘制

2020-11-10 18:25:34 2341

原创 【鉴赏】当点击dify的召回测试按钮时,后台程序做了一些什么?

本文深入分析了Dify项目源代码的知识库文档的召回测试的业务逻辑和架构

2025-05-28 19:24:44 285

原创 【部署】手搓一个dify可用的rerank模型

本文介绍了如何本地部署适用于Dify平台的rerank模型,解决数据保密需求。程序源码基于modelscope以及BAAI/bge-reranker-large模型。

2025-05-28 17:43:06 177

原创 【排错】kylinLinx环境python读json文件报错UTF-8 BOM

kylinLinux环境下python读取json报错解决办法

2025-05-26 18:15:00 193

原创 【部署】在离线服务器的docker容器下升级dify-import程序

kylin Linux环境下,离线升级docker 镜像的命令行执行程序的方法。主要内容包括:1)在有互联网机器下载最新程序并传输到离线服务器;2)确认并启动Docker容器;3)复制编辑配置文件;4)进入容器交互模式启动虚拟环境;5)修改配置后运行程序。适用于Kylin Linux环境下的dify 0.1.0-release版本升级,新版本增加了对制度类txt文件知识库父子分段支持。

2025-05-26 18:00:00 278

原创 【部署】读取制度类txt文件导入dify的父子分段知识库

通过引入dify-import项目,支持读取高质量的txt制度类文件批量导入父子分段dify知识库并通过语言模型的推理产生相关关键字生成字段。

2025-05-26 17:45:00 428

原创 【部署】如何离线环境创建docker容器执行python命令行程序

本文以dify_import项目 https://gitee.com/zhouweng/dify_import为例,讲解如何在离线服务器上,搭建docker容器环境,执行python命令行程序

2025-05-22 18:00:00 273

原创 【部署】读取excel批量导入dify的QA知识库

本文描述一个读取excel文件批量导入dify知识库QA分段的解决方案

2025-05-17 18:46:05 677

原创 【技巧】GoogleChrome浏览器开发者模式查看dify接口

使用Google Chrome浏览器的开发者模式查看dify各个接口报文交互情况

2025-05-17 16:23:27 251

原创 【评测】免费体验dify工作流模式下腾讯语音转文字speech2text服务

使用dify的workflow引入腾讯云的speech to text 大模型技术,实现mp3文件的语音转文字服务测试。

2025-05-14 18:00:00 380

原创 【技巧】使用UV创建python项目的开发环境

使用uv工具解决python繁琐的依赖关系

2025-05-13 21:36:45 616

原创 【技巧】使用frpc点对点安全地内网穿透访问ollama服务

通过frpc工具实现安全的点对点内网穿透,访问另外一台机器的服务

2025-05-12 19:30:00 808

原创 【技巧】离线安装docker镜像的方法

内网无互联网环境,通过镜像文件导入docker镜像

2025-05-12 18:00:00 582

原创 【技巧】wsl 安装 pyenv 运行环境

dify的编译环境需要用到pyenv进行python管理,文章主要内容是在win10 wsl环境下安装pyenv工具

2025-05-11 04:00:00 685

原创 【排错】dify1.3.1插件市场安装报错问题

dify1.3.1安装插件报错PrivkeyNotFoundError

2025-05-10 18:39:28 350 1

原创 【部署】win10的wsl环境下启动dify的web前端服务

windows笔记本搭建dify开发调试环境,在wsl下部署dify1.3.1版本的web前端,用到node.js/npm/pnpm等工具

2025-05-10 17:11:13 424

原创 【目录】学习如何使用dify建设专业知识库

1.1. 测试dify的父子分段知识库效果2.1. win10的wsl环境下启动dify的web前端服务2.2. win10的wsl环境下调试dify的api后端服务3.1. 如何把win10 wsl的安装目录从c盘迁移到d盘3.2. 离线安装python包的方法

2025-05-10 17:06:54 304

原创 【部署】win10的wsl环境下调试dify的api后端服务

文章内容为windows笔记本的wsl环境下,部署dify的api后端程序全过程,包括docker中间件、源码启动pyenv和uv等工具安装,vscode通过remote ssh方式连接源代码项目并通过远程调试方式项目代码。

2025-05-10 16:46:35 833

原创 【技巧】离线安装python包的方法

图01]

2025-05-10 11:03:57 261

原创 【技巧】如何把win10 wsl的安装目录从c盘迁移到d盘

研究如何把win10 wsl迁移到数据盘,为后续本地搭建dify的开发调试环境作准备

2025-05-09 21:59:48 498

原创 【评测】测试dify的父子分段知识库效果

测试云服务商提供的模型在dify父子分段知识库建设的效果

2025-05-08 20:38:47 242

原创 Day15_城镇是怎么发展起来的

返回目录上一篇文章我们看了一下工厂的产量逻辑还是比较简单的,相关逻辑直接一个函数实现。今天我们看一下相对比较复杂的城镇发展逻辑。同样,我们也可以在官网https://wiki.openttd.org/en/Manual/Towns#town-growth 看一些Tips。1.公交车和火车运送乘客对城镇的发展影响效果一致;2.转运货物的火车站一样也可以得到发展;3.玩家可以通过捐赠新建筑在短期内迅速发展城镇;4.城市比乡镇发展速度快1倍;5.玩家必须确保城镇不被火车轨道,机场和水路包围;(这个好像

2021-11-22 15:26:34 1415

原创 Day14_工厂的产量是怎么发展的

返回目录openttd 工厂的发展基本逻辑是物流越发达,运货效率越高发展越快,没有交通接入的工厂发展缓慢,最后甚至从地图消失,我们从 OpenTTD | Game Mechanics 可以了解到工厂发展的算法逻辑,简单讲就是每个月会有一定概率改变产量,交通运输服务越好的工厂,变好的概率越高,交通运输服务越差的工厂,变坏的概率越高,工厂产量变化逻辑如下:1.每个月4.5%概率发生变化2.不同交通服务变化比例:poor- 33%增产 67%减产: good 67%增产 33%减少; excellent 8

2021-11-18 10:47:32 841

原创 Day13_交通工具是怎么移动起来的

首先,我们做一个有趣的实验,在viewport.cpp 的 AddSortableSpriteToDraw() 增加一行代码viewport.cpp Line659void AddSortableSpriteToDraw(SpriteID image, PaletteID pal, int x, int y, int w, int h, int dz, int z, bool transparent, int bb_offset_x, int bb_offset_y, int bb_offset_z,

2021-11-15 11:55:22 2828

原创 Day12_OpenTTD的页面刷新原理

返回目录每次我打开游戏看到菜单背景的时候,就惊叹于这个背景动画就像进入正式的游戏界面一般细致。研究源码后,我才知道原来这个背景动画真的就是一个游戏进度,我们只需要注释一行代码,就可以像下面一样拖动菜单的背景。window.cpp Line2787static void HandleAutoscroll(){ if (_game_mode == GM_MENU || HasModalProgress()) return; <=只需要注释这一行代码...普通的存档文件以.sav作为

2021-11-12 11:32:11 2368

原创 Day11_MapTiles是怎么绘制出来的

返回目录OpenTTD的界面通过viewport.cpp 实现,界面上由相对静止的网格Tile以及不断移动的交通工具vehicle组成,在Tile上可能是各种气候条件的陆地、海洋、工业设施、城镇等,交通工具则主要包括汽车、火车、轮船和飞机四大类。我们看一下网格Tile绘制的原理。viewport.cpp ViewportAddLandscape()是绘制Tile的关键,这个函数通过双重循环,先行row再列column 实现了各种气候地形和建筑物的绘制。viewport.cpp Line1164stat

2021-11-08 11:38:57 315

原创 Day10_Linux环境下的SDL2简介

返回目录20211104_Day10_Linux环境下的SDL2简介OpenTTD在Linux环境下通过SDL2来驱动显示,./openttd -d 2 启动后,我们可以看到以下日志,验证确实使用到 sdl ,大家可以试一下在windows环境下,启动命令行,看看下面的最后一行 video driver 后面显示的是什么内容。游戏启动阶段创建窗口调用链SDL_CreateWindow()<- sdl2_v.cpp VideoDriver_SDL_Base::CreateMainWindow

2021-11-04 09:57:02 850

原创 Day09_OpenTTD的Viewport介绍

返回目录OpenTTD的视觉系统2.5D形式展现,素材都是图片,通过屏幕贴图的方式生成界面元素,因此不能像真3D游戏那样在游戏过程中旋转视角,看到3D模型侧面或者背面的情况。这种2.5D的展示方式对显卡要求较低,大量使用在手机游戏里面,比如 王者荣耀、部落冲突、三国志策略版的界面,我们都能看到这种显示模式的身影。Openttd.cpp 代码量不大(行数 3000+),函数数量多(50+),其中对外服务函数26个,私有服务 27个。上层调用者主要包括 gui类、cmd类以及游戏初始化阶段的各种类,向下调用

2021-11-01 17:13:01 648

原创 Day08_OpenGfx源码分析

返回目录在 《Day05_OpenTTD的Sprite介绍》,我们学习了OpenTTD的资源文件以及加载内存的全过程,在ubuntu环境下,资源文件放在 ~/.openttd/baseset 目录下,我们把grf文件用16进制方式打开后,发现都是 00 00 47 52 46 82 0D 0A 1A 0A 开头,如下:通过 https://newgrf-specs.tt-wiki.net/wiki/Main_Page 的学习,我们了解到 OpenGfx使用nml进行数据压缩生成grf文件,然后压缩成

2021-10-28 09:34:18 1451

原创 Day07_Sprite是如何绘制到界面上的

返回目录前面的章节,我们讲述了Sprite加载的原理,最终是放到一个 SpriteCache这样一个数据结构里面。今天,我们继续看一下在loop里面,程序如何将这些Sprite绘制到界面上。首先 研究 SpriteCache.cpp ,在《Day05_OpenTTD的Sprite介绍》 我们了解到 游戏启动阶段,LoadNextSprite() 函数加载 SpriteCache的过程。在 spritecache.h 里面还定义了 GetRawSprite(),这个函数向外提供服务,通过SpriteI

2021-10-25 15:16:18 395 3

原创 Day06_自己动手编译OpenGFX库

返回目录OpenGFX是OpenTTD的资源库,Linux环境下,正式环境部署位置 ~/.openttd/baseset 目录下,编译后的文件扩展名 .grf 。游戏启动后,程序会搜索指定文件夹,将这些文件解码并加载到内存里面备用。$ git clone https://github.com/OpenTTD/OpenGFX从git拉取源代码后,直接 make 会报错 缺少 grfcodechttps://www.openttd.org/downloads/grfcodec-releases/l

2021-10-21 09:29:24 572

原创 Day05_OpenTTD的Sprite介绍

返回目录今天的内容终于要与游戏沾边了,sprite是游戏里面贴图的小组件,比如地形上面的每一个方块,草地、水面、道路、铁轨,以及在上面跑的汽车、火车,天上的飞机,都是属于sprite。OpenTTD里面在游戏启动阶段会扫描预设的磁盘路径,把扩展名 grf 的文件信息解密加载到内存cache里面,后面的贴图直接采用内存块拷贝的方式推送到显卡上面。我们使用 openttd -d 2 启动游戏,在主控上可以看到大量包含 Replacing sprites 关键字的信息,如下:通过这个关键字,我们可以检索

2021-10-18 17:08:31 722

原创 Day04_新建一个HelloWorld对话框

今天,我们在欢迎首页的menu增加一个button,点击后弹出一个对话框窗口,显示 HelloWorld,效果如下:要完成这个看起来很简单的小功能可没这么简单。这一篇文章,强烈建议大家动动手,对于掌握编译方法和熟悉项目的框架很有帮助,不过动手前,大家要有心理准备,可以先上一个洗手间、倒杯茶调整好心态,有任何问题欢迎评论区提出。第一步,我们增加 菜单项目,名称为 HelloWorld1、intro_gui.cpp , _nested_select_game_widgets[] 定义了菜单选项,我们在

2021-10-14 10:21:19 969

原创 Day03_OpenTTD源代码框架分析

返回目录首先,我们找程序的主入口,根据关键字 main( ,我们可以定位到 opentpp.cpp 的 openttd_main() 是程序的主入口。我这里整理了 openttd_main() 调用的思维导图如下,可以在文章最下面下载这个文件大致流程:1.解析命令行参数(与大部分的c和c++处理初始化变量的方法类似,值得学习);2.扫描指定路径获取文件列表(图形、音乐、音效、文字等);3.初始化 窗口(Linux环境下是通过SDL2的方法开启窗口;4.初始化Palettes(图片画板);

2021-10-11 17:20:37 1392

原创 Day02_搭建OpenTTD的编译环境-Linux

返回目录首先,我们配置一套舒服的源码阅读和编译环境。在这个介绍系列中,我们使用Visual Studio Code作为源码的阅读器,主要原因有两点:一、c++的函数调用查询(ctrl+鼠标左键) ;二、历史查询结点跳转(alt+键盘左右键) 。下载源代码地址:https://gitee.com/mirrors/OpenTTD使用VSC打开项目后,效果如下:编译环境 Ubuntu20.04 ,相比windows环境 openttd在Linux下的编译更加简便(windows环境下的vs201

2021-10-09 13:54:24 1345

原创 Day01_OpenTTD游戏简介以及为什么要研究它

OpenTTD是一款传奇的开源游戏项目,官网 openttd.org有它的详细介绍,他是基于1994年推出的交通大亨这款游戏改编而来,令人惊奇的是,经过近30年的社区热心群众发展,这个项目的生命力异常强韧,从最初存在大量bug和兼容性问题的小厂游戏,发展成一款跨平台、运行稳定性非常好的优秀游戏作品。游戏中,玩家扮演新成立的运输公司老板,通过建设铁路、公路、桥梁、机场、车站等设施,运输旅客、货物和各种自然资源的模拟经营游戏。游戏最终目标是通过运输赚取最大利润,经过残酷的竞争,最终打败对手,成为运输大亨。在国内

2021-10-09 13:48:23 1752

原创 Day22 行高和列宽的设置

返回目录以下知识源码位置: [Git:https://gitee.com/zhouweng/mini_sheetversion=57b9e280346579fe061b4671fbf2c7ed245fab50]源代码回滚版本,参考这里[https://blog.csdn.net/u010593516/article/details/113767587] 时间很快,一转眼就到了这个系列最后一篇文章,通过luckysheet这个优秀的前端开源项目,我们可以学习到很多前端...

2021-04-25 11:02:45 2004

原创 Day21 工具条设置单元格颜色

返回目录以下知识源码位置: [Git:https://gitee.com/zhouweng/mini_sheetversion=70263c0bec9d1e878e2042b8b545e23664ec384d]源代码回滚版本,参考这里[https://blog.csdn.net/u010593516/article/details/113767587]今天,我们首先对代码进行优化,menuButton.js文件长度 800+,我们入手这个文件的优化,把一些静态资源剥离出来。...

2021-04-22 11:07:06 180

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除