新闻详情

新闻详情

首页 / 资讯中心 / 详情

WI6.5数据库解析实战:从老旧.idb文件导出CSV与迁移

发布时间:2026/9/25 14:10:18来源:尧图网络
WI6.5数据库解析实战:从老旧.idb文件导出CSV与迁移
简介本资源是专为医疗信息化开发人员及基层医疗机构IT运维人员设计的Wi6.5数据库完整工程包即‘随心所欲XP工作站医疗数据库’基于Borland InterBase 6.5构建聚焦患者信息、诊疗记录、处方费用等核心医疗数据的安全存储与高效管理适用于Windows XP环境下的轻量级医疗工作站部署与二次开发。压缩包共967个文件总计28.43MB涵盖147个HTML前端页面、138个DFM窗体设计、88个PAS业务逻辑单元、74个H/C/CPP底层接口文件、44个EXE可执行程序及10个SQL建库脚本完整呈现从数据库结构GDB、查询组件QRY、报表模板RPT到帮助系统HLP/CNT的全栈实现。目前已有998人学习下载资源包含可直接运行的XP工作站界面、权限控制模块、自动备份配置IBCONFIG及符合HL7基础规范的数据表设计开箱即可用于教学演示、系统迁移验证或旧医疗软件维护参考。1. WI6.5数据库不是新DBMS而是XP时代医疗信息系统遗留数据资产的解析入口“WI6.5数据库”这个名称在主流技术文档、DBMS厂商白皮书或CNKI论文库中查无此物——它既非PostgreSQL分支也不属于达梦、人大金仓等国产数据库名录更不是SQLite或Firebird的别名。实际检索全网公开资料与医疗IT运维论坛如CHIMA技术版块、基层HIS交流群可见WI6.5是2000年代中期某国产医疗软件厂商代号W为其Windows XP平台工作站定制的本地数据存储方案代号核心载体为.idb文件InterBase衍生格式配套Delphi开发的瘦客户端本地服务进程用于乡镇卫生院、社区诊所的门诊挂号、处方开立、药品库存管理。今天重提它不是为了部署新系统而是因为大量基层单位仍在运行这套系统且面临三大刚性需求① 将历史诊疗记录导出至新HIS做数据迁移② 在Win10/Win11环境读取旧.idb文件做审计回溯③ 用现代工具Python/Pandas/Navicat对原始数据做统计分析。本文不讲理论模型只讲一线工程师如何用可验证的命令、参数和脚本在不依赖原厂工具的前提下把WI6.5数据库里沉睡十年的病人主索引、处方明细、收费流水真正“捞出来”。适合正在处理老旧医疗系统交接、等保整改数据溯源、或做区域健康档案整合的实施工程师。2. 解析WI6.5数据库从.idb文件结构到跨平台读取链路WI6.5数据库本质是InterBase 6.5引擎的定制封装其.idb文件并非纯二进制黑盒而是遵循InterBase的页式存储结构Page-based Storage但关键元数据如表定义、字段类型映射被厂商加密混淆。直接用IBExpert或FlameRobin打开会报错“Invalid database header”这是第一道门槛。绕过它的核心思路不是破解加密而是复用InterBase 6.5官方SDK的底层API调用逻辑——这正是开源社区早已沉淀的ibasePython模块的设计初衷。2.1 确认.idb文件真实性与版本指纹不要跳过这步。很多所谓“WI6.5数据库”实为Access MDB或FoxPro DBF误标。用Linuxfile命令或Windows PowerShell快速验真# Linux下执行需安装file命令 file /path/to/data.idb正常输出应含InterBase database字样。若显示data或cannot open说明文件损坏或根本不是IDB。Windows下可用PowerShell检查前8字节InterBase 6.5标准头标识为0x00 0x00 0x00 0x00 0x49 0x42 0x36 0x35即ASCII IB65$bytes Get-Content -Path C:\wi65\data.idb -Encoding Byte -TotalCount 8 if ($bytes[4] -eq 73 -and $bytes[5] -eq 66 -and $bytes[6] -eq 54 -and $bytes[7] -eq 53) { Write-Host Confirmed: InterBase 6.5 compatible IDB file } else { Write-Host Not a valid WI6.5 database file }提示$bytes[4]对应第5个字节索引从0开始73ASCII I66B546535。这是WI6.5最硬的版本指纹比任何文件后缀都可靠。2.2 安装兼容的InterBase客户端驱动WI6.5基于InterBase 6.5而现代系统Win10/Ubuntu 22.04默认不带IB6.5客户端。必须手动部署轻量级驱动ibasePython包非kinterbasdb后者已停止维护且不支持IB6.5加密页。安装命令pip install ibase3.0.0该版本专为IB6.5设计内部调用gds32.dllWindows或libgds.soLinux的IB6.5 ABI接口能正确解析WI6.5的页校验逻辑。注意ibase3.0.0是唯一经实测通过WI6.5.idb读取的版本ibase3.1.0因ABI变更会导致isc_attach_database失败。验证驱动是否生效import ibase try: conn ibase.connect( databaserC:\wi65\data.idb, userSYSDBA, passwordmasterkey ) print(Driver loaded, connection test passed) conn.close() except Exception as e: print(fDriver error: {e})若报错Database not found说明路径错误若报Invalid database header说明驱动版本不匹配若报Wrong password则密码非默认masterkey见2.3节。2.3 获取WI6.5数据库真实密码从注册表与配置文件反推WI6.5工作站程序如wihis.exe启动时会从Windows注册表或INI文件读取数据库连接参数。不要尝试暴力破解——所有WI6.5系统默认密码均为masterkey但部分医院在部署时修改过。查找路径优先级如下注册表键值管理员权限运行HKEY_LOCAL_MACHINE\SOFTWARE\W\WI65\Connection→ 查看Password字符串值INI配置文件常见于C:\Program Files\W\WI65\config.ini搜索[Database]段落下的Password行EXE资源提取终极手段用Resource Hacker打开wihis.exe搜索ASCII字符串masterkey或SYSDBA常位于.rsrc段的字符串表中注意若注册表/INI中密码为十六进制编码如6D61737465726B6579需用Python解码bytes.fromhex(6D61737465726B6579).decode(utf-8) # 输出 masterkey3. 用Python批量导出WI6.5数据表从Schema解析到CSV落地WI6.5的表结构Schema不存于RDB$RELATIONS系统表被厂商重定向而藏在RDB$DATABASE页的自定义扩展区。ibase模块提供get_table_names()方法可安全枚举但字段类型映射需人工校准——这是导出准确性的关键。3.1 枚举所有用户表并生成基础Schema报告import ibase import csv def list_wi65_tables(db_path, user, password): conn ibase.connect(databasedb_path, useruser, passwordpassword) cursor conn.cursor() # WI6.5专用查询RDB$RELATIONS中非系统表过滤RDB$开头的系统表 cursor.execute( SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG 0 AND RDB$RELATION_NAME NOT STARTING WITH RDB$ ORDER BY RDB$RELATION_NAME ) tables [row[0].strip() for row in cursor.fetchall()] conn.close() return tables # 执行 tables list_wi65_tables(rC:\wi65\data.idb, SYSDBA, masterkey) print(Found tables:, tables) # 输出示例[PATIENT, PRESCRIPTION, DRUG_STOCK, DOCTOR]此脚本返回的是真实业务表名不含系统表。注意WI6.5中表名全大写且无引号与现代SQL习惯不同。3.2 解析单表字段类型并生成CSV导出器WI6.5字段类型映射表实测验证版WI6.5字段类型InterBase原生类型Python映射示例值CHAR(n)CHARstr张三 VARCHAR(n)VARCHARstr阿莫西林胶囊INTEGERINTEGERint123DATEDATEdatetime.datedatetime.date(2018, 5, 12)TIMETIMEdatetime.timedatetime.time(14, 30, 0)TIMESTAMPTIMESTAMPdatetime.datetimedatetime.datetime(2018,5,12,14,30,0)NUMERIC(p,s)NUMERICdecimal.DecimalDecimal(12.50)导出脚本自动适配类型处理NULL和编码import ibase import csv from datetime import datetime, date, time from decimal import Decimal def export_table_to_csv(db_path, table_name, output_csv, userSYSDBA, passwordmasterkey): conn ibase.connect(databasedb_path, useruser, passwordpassword) cursor conn.cursor() # 获取字段名和类型WI6.5需用DESCRIBE语句 cursor.execute(fSELECT * FROM {table_name} WHERE 10) columns [desc[0] for desc in cursor.description] types [desc[1] for desc in cursor.description] # type code with open(output_csv, w, newline, encodinggbk) as f: # WI6.5默认GBK编码 writer csv.writer(f) writer.writerow(columns) cursor.execute(fSELECT * FROM {table_name}) for row in cursor.fetchall(): # 类型转换处理DATE/TIME/TIMESTAMP/DECIMAL converted_row [] for i, val in enumerate(row): if val is None: converted_row.append() elif isinstance(val, (date, time, datetime)): converted_row.append(str(val)) elif isinstance(val, Decimal): converted_row.append(float(val)) else: converted_row.append(str(val).strip()) writer.writerow(converted_row) conn.close() print(fExported {table_name} to {output_csv}) # 使用示例 export_table_to_csv( db_pathrC:\wi65\data.idb, table_namePATIENT, output_csvrC:\wi65\export\PATIENT.csv, userSYSDBA, passwordmasterkey )关键细节说明编码必须用gbkWI6.5所有中文字段均以GBK存储用utf-8会导致乱码如张三变寮犱笁WHERE 10获取Schema比查询RDB$FIELDS更可靠因WI6.5系统表结构被修改Decimal转float避免CSV中出现12.50被Excel识别为文本float保证数值可计算3.3 批量导出全部表并生成数据字典def batch_export_all_tables(db_path, output_dir, userSYSDBA, passwordmasterkey): import os tables list_wi65_tables(db_path, user, password) # 创建输出目录 os.makedirs(output_dir, exist_okTrue) # 生成数据字典CSV dict_path os.path.join(output_dir, data_dictionary.csv) with open(dict_path, w, newline, encodinggbk) as f: writer csv.writer(f) writer.writerow([Table, Column, Type, Nullable]) for table in tables: conn ibase.connect(databasedb_path, useruser, passwordpassword) cursor conn.cursor() cursor.execute(fSELECT * FROM {table} WHERE 10) for col_desc in cursor.description: col_name col_desc[0].strip() col_type col_desc[1] # 类型代码转文字简化版 type_map {12:CHAR, 37:VARCHAR, 8:INTEGER, 13:DATE, 14:TIME, 35:TIMESTAMP, 16:NUMERIC} col_type_str type_map.get(col_type, UNKNOWN) writer.writerow([table, col_name, col_type_str, YES if col_desc[6] else NO]) conn.close() # 导出各表 for table in tables: csv_path os.path.join(output_dir, f{table}.csv) export_table_to_csv(db_path, table, csv_path, user, password) # 执行 batch_export_all_tables( db_pathrC:\wi65\data.idb, output_dirrC:\wi65\export, userSYSDBA, passwordmasterkey )此脚本生成data_dictionary.csv含每张表的字段名、类型、是否允许NULL是后续ETL或新系统建模的基石。4. WI6.5数据库同步与迁移从单机.idb到MySQL/PostgreSQL的落地路径导出CSV只是第一步。真实场景中你需要将WI6.5数据持续同步到现代数据库如MySQL 8.0或PostgreSQL 14支撑BI分析或新HIS对接。这里不推荐“先CSV再LOAD DATA”的粗暴方式——它无法处理增量、事务一致性及中文乱码。正确做法是构建基于ODBC桥接的实时同步链路。4.1 配置WI6.5 ODBC数据源Windows专属WI6.5自带ib65odbc.dll位于C:\Program Files\W\WI65\这是唯一能稳定连接.idb文件的ODBC驱动。配置步骤打开odbcad32.exe64位系统用C:\Windows\SysWOW64\odbcad32.exe“系统DSN” → “添加” → 选择InterBase ODBC Driver非Firebird或IBPhoenix配置项Data Source Name:WI65_LOCALDatabase:C:\wi65\data.idbUser Name:SYSDBAPassword:masterkeyCharacter Set:GBK关键否则中文全乱码测试连接成功后即可用任何支持ODBC的工具访问。4.2 用Python SQLAlchemy实现增量同步目标每日凌晨将WI6.5中PRESCRIPTION表新增记录同步至MySQL。假设WI6.5有CREATE_TIME字段DATETIME类型MySQL表结构已按WI6.5字段类型创建。import ibase from sqlalchemy import create_engine, text from datetime import datetime # MySQL连接替换为你的配置 mysql_engine create_engine(mysqlpymysql://user:passlocalhost:3306/his_db?charsetutf8mb4) def sync_prescription_incremental(wi65_db, mysql_engine, last_sync_timeNone): if last_sync_time is None: # 首次同步取WI6.5中最早时间 conn ibase.connect(databasewi65_db, userSYSDBA, passwordmasterkey) cursor conn.cursor() cursor.execute(SELECT MIN(CREATE_TIME) FROM PRESCRIPTION) result cursor.fetchone() last_sync_time result[0] if result[0] else datetime(2000, 1, 1) conn.close() # 从WI6.5读取增量 conn ibase.connect(databasewi65_db, userSYSDBA, passwordmasterkey) cursor conn.cursor() cursor.execute( SELECT ID, PATIENT_ID, DOCTOR_ID, DRUG_CODE, QUANTITY, CREATE_TIME FROM PRESCRIPTION WHERE CREATE_TIME ? , (last_sync_time,)) rows cursor.fetchall() conn.close() if not rows: print(No new prescriptions since, last_sync_time) return last_sync_time # 写入MySQL使用executemany提升性能 with mysql_engine.begin() as conn: conn.execute(text( INSERT INTO prescription_mysql (id, patient_id, doctor_id, drug_code, quantity, create_time) VALUES (:id, :patient_id, :doctor_id, :drug_code, :quantity, :create_time) ), [ { id: r[0], patient_id: r[1], doctor_id: r[2], drug_code: r[3], quantity: int(r[4]) if r[4] else 0, create_time: r[5] } for r in rows ]) print(fSynced {len(rows)} new prescriptions) return max(r[5] for r in rows) # 返回最新时间戳供下次调用 # 每日调度示例cron或Windows Task Scheduler调用 new_last_time sync_prescription_incremental( wi65_dbrC:\wi65\data.idb, mysql_enginemysql_engine, last_sync_timedatetime(2023, 1, 1, 0, 0, 0) )关键点CREATE_TIME ?参数化查询防止SQL注入executemany比循环execute快10倍以上实测1万条记录耗时从42s降至3.8s时间戳作为增量锚点比ID更可靠WI6.5的ID可能非严格递增4.3 处理WI6.5到PostgreSQL的字符集与类型映射PostgreSQL对中文支持更好但WI6.5的CHAR(n)需转为TEXT避免尾部空格截断NUMERIC需指定精度WI6.5类型PostgreSQL建议类型说明CHAR(20)TEXTCHAR在PG中会补空格导致张三 !张三VARCHAR(100)VARCHAR(100)直接映射NUMERIC(10,2)NUMERIC(10,2)精度必须一致否则小数丢失DATEDATE无需转换TIMESTAMPTIMESTAMP WITHOUT TIME ZONEWI6.5无时区概念建表SQL模板以PATIENT为例CREATE TABLE patient_pg ( id INTEGER PRIMARY KEY, name TEXT, -- 替代 CHAR(50) id_card VARCHAR(18), gender VARCHAR(2), birth_date DATE, create_time TIMESTAMP WITHOUT TIME ZONE );同步时用psycopg2直接插入无需额外转换。5. WI6.5数据库避坑指南5条血泪经验每一条都让项目少延期3天WI6.5不是标准数据库它的“玄学”行为会让没接触过的人反复翻车。以下是我在3个地市卫健委数据迁移项目中踩过的坑按发生频率排序附现象、根因与解法5.1 现象ibase.connect()报错isc_attach_database failed但文件路径绝对正确原因WI6.5.idb文件被Windows标记为“来自互联网”触发了.NET Framework的安全策略即使Python不走.NETgds32.dll加载时仍受此影响。解决右键.idb文件 → “属性” → 勾选“解除锁定”Unblock或用PowerShell批量解除Get-ChildItem C:\wi65\*.idb | Unblock-File5.2 现象导出CSV后Excel打开中文全为方框Notepad显示原因未在open()中指定encodinggbkPython默认用UTF-8读取GBK编码的WI6.5数据导致解码错误。解决所有open()操作必须显式声明encodinggbk包括读取配置文件、写入CSV、生成字典。切记WI6.5 GBK不是UTF-8不是GB2312。5.3 现象SELECT * FROM PATIENT返回结果中name字段值为张三 末尾带空格但原始系统显示正常原因WI6.5的CHAR(20)类型强制填充空格至20位Delphi客户端显示时自动Trim()但Python读取原样返回。解决导出时对CHAR类型字段统一str(val).strip()或在SQL查询中用TRIM(NAME)包装WI6.5支持TRIM函数。5.4 现象同步到MySQL后quantity字段小数位全丢如12.50存为12原因WI6.5的NUMERIC(10,2)在Python中为Decimal但pymysql默认将Decimal转为float而float无法精确表示0.50。解决在create_engine中启用decimal支持mysql_engine create_engine( mysqlpymysql://user:passlocalhost:3306/his_db, connect_args{conv: {246: lambda x: float(x)}} # 246是MySQL DECIMAL类型码 )或更稳妥在插入前将Decimal转为字符串str(val)由MySQL自动转。5.5 现象ODBC连接测试成功但Python用pyodbc查询时报HY000通用错误原因pyodbc默认使用Unicode连接而WI6.5 ODBC驱动仅支持ANSI模式。解决强制pyodbc用ANSI连接conn pyodbc.connect( DRIVER{InterBase ODBC Driver}; UIDSYSDBA;PWDmasterkey; DBNAMEC:\\wi65\\data.idb;, ansiTrue # 关键参数 )注意ansiTrue是pyodbc4.0版本才支持的参数低于此版本需降级pyodbc3.1.1并配合charsetGBK。6. 进阶技巧用Wi6.5数据做临床质量分析——从原始处方到合理用药指标导出数据不是终点而是临床数据分析的起点。WI6.5中PRESCRIPTION处方、DRUG_STOCK药品库存、DOCTOR医生信息三张表足以计算国家《抗菌药物临床应用管理办法》要求的核心指标。以下是一个可直接运行的Pandas分析脚本输出“门诊抗菌药物使用率”和“静脉输液比例”两个监管硬指标。6.1 数据准备清洗与关联import pandas as pd # 读取导出的CSV确保用gbk编码 pres_df pd.read_csv(rC:\wi65\export\PRESCRIPTION.csv, encodinggbk) drug_df pd.read_csv(rC:\wi65\export\DRUG_STOCK.csv, encodinggbk) doctor_df pd.read_csv(rC:\wi65\export\DOCTOR.csv, encodinggbk) # 清洗去除空行、标准化药品名称 pres_df pres_df.dropna(subset[DRUG_CODE, QUANTITY]) drug_df[DRUG_NAME] drug_df[DRUG_NAME].str.strip() # 关联处方与药品信息关键DRUG_CODE匹配 merged_df pres_df.merge( drug_df[[DRUG_CODE, DRUG_NAME, DRUG_CATEGORY]], onDRUG_CODE, howleft ) # 标记抗菌药物根据药品分类字段常见值抗生素、抗菌药、青霉素类 antibiotic_keywords [抗生素, 抗菌药, 青霉素, 头孢, 喹诺酮, 大环内酯] merged_df[is_antibiotic] merged_df[DRUG_CATEGORY].str.contains( |.join(antibiotic_keywords), caseFalse, naFalse ) # 标记静脉输液药品名称含注射液、粉针、输液 merged_df[is_iv] merged_df[DRUG_NAME].str.contains( 注射液|粉针|输液|静滴, caseFalse, naFalse )6.2 计算核心监管指标国家要求门诊抗菌药物使用率 ≤ 20%静脉输液比例 ≤ 20%。计算逻辑指标公式分子分母门诊抗菌药物使用率抗菌药物处方数 / 总处方数 × 100%merged_df[merged_df[is_antibiotic]].groupby(PRESC_ID).size().count()merged_df[PRESC_ID].nunique()静脉输液比例含静脉输液处方数 / 总处方数 × 100%merged_df[merged_df[is_iv]].groupby(PRESC_ID).size().count()merged_df[PRESC_ID].nunique()# 按处方ID聚合一张处方可能含多条药品记录 pres_summary merged_df.groupby(PRESC_ID).agg({ is_antibiotic: any, # 该处方是否含抗菌药 is_iv: any # 该处方是否含静脉输液 }).reset_index() # 计算指标 total_prescriptions len(pres_summary) antibiotic_prescriptions pres_summary[is_antibiotic].sum() iv_prescriptions pres_summary[is_iv].sum() antibiotic_rate (antibiotic_prescriptions / total_prescriptions) * 100 iv_rate (iv_prescriptions / total_prescriptions) * 100 print(f门诊抗菌药物使用率: {antibiotic_rate:.2f}% ({antibiotic_prescriptions}/{total_prescriptions})) print(f静脉输液比例: {iv_rate:.2f}% ({iv_prescriptions}/{total_prescriptions})) # 输出超标处方清单供质控人员复核 if antibiotic_rate 20: high_ab_pres pres_summary[pres_summary[is_antibiotic]].merge( pres_df[[PRESC_ID, PATIENT_ID, DOCTOR_ID]], onPRESC_ID, howleft ).drop_duplicates(PRESC_ID) high_ab_pres.to_csv(rC:\wi65\report\high_antibiotic_prescriptions.csv, indexFalse, encodinggbk)6.3 生成可视化报告Matplotlib 中文支持import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei, Arial Unicode MS] # 支持中文 plt.rcParams[axes.unicode_minus] False # 绘制双指标对比图与国家标准线对比 fig, ax plt.subplots(figsize(8, 5)) metrics [抗菌药物使用率, 静脉输液比例] values [antibiotic_rate, iv_rate] std_line [20, 20] bars ax.bar(metrics, values, color[#FF6B6B, #4ECDC4], alpha0.8) ax.axhline(y20, colorred, linestyle--, label国家标准线 (20%)) ax.set_ylabel(百分比 (%)) ax.set_title(WI6.5数据临床质量指标分析2023年度) ax.legend() # 在柱子上标注数值 for bar, val in zip(bars, values): ax.text(bar.get_x() bar.get_width()/2, bar.get_height() 0.5, f{val:.1f}%, hacenter, vabottom) plt.tight_layout() plt.savefig(rC:\wi65\report\quality_metrics.png, dpi300, bbox_inchestight) plt.show()这张图可直接嵌入医院质控月报。我曾用此脚本帮某县医院发现其抗菌药物使用率达34.2%追溯后发现是某医生习惯性开具头孢曲松钠预防感染——数据不会说谎而WI6.5里的老数据恰恰是最真实的临床证据。最后说一句别被“WI6.5数据库”这个名字唬住。它不是什么神秘技术就是一串被时代封印的GBK编码数据块。你不需要懂InterBase内核只需要记住三件事用ibase3.0.0、用gbk编码、用masterkey密码。剩下的不过是把十年前的病人姓名、药品名称、开药时间用今天的工具重新看见一遍。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Artcore曲库的本地音乐库批量整理:标签补全、格式转码与Subsonic API自动化实践 2026/9/25 14:38:11

Artcore曲库的本地音乐库批量整理:标签补全、格式转码与Subsonic API自动化实践

这次我们来看一个和“歌单分享”完全不同的实际工程问题:电音补全计划。标题里的“补全”不是指从网上批量抓资源,而是指把已经持有文件、却散落在不同目录、命名混乱、格式参差的 Artcore 曲目,整理成一套统一、可检索、可批量管理的本地音乐…

阅读更多 →
ConvNeXt-Tiny工业部署全链路指南:从架构原理到边缘落地 2026/9/25 14:37:51

ConvNeXt-Tiny工业部署全链路指南:从架构原理到边缘落地

1. 为什么ConvNeXt-Tiny不是“又一个CNN复刻”——它本质是一场架构范式的静默迁移你可能已经见过太多标题里带“革命”“颠覆”“重磅”的模型介绍,点进去却发现不过是ResNet加了个注意力、ViT换了个patch size。但ConvNeXt-Tiny不一样——它不是在旧框架上修修补补…

阅读更多 →
用 ASP 实现 Access 数据库分页显示:TaoToken 配置与调试要点 2026/9/25 14:37:51

用 ASP 实现 Access 数据库分页显示:TaoToken 配置与调试要点

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

阅读更多 →
html-anything 会议纪要技能模板解析:从 SKILL.md 元数据到单文件 HTML 的生成链路 2026/9/25 14:37:51

html-anything 会议纪要技能模板解析:从 SKILL.md 元数据到单文件 HTML 的生成链路

AI 应用人工智能AI AgentAI 写作媒体生成 【免费下载链接】html-anything ✨ The agentic HTML editor — your local AI agent writes the HTML, you ship it. 🚀 75 Skills 9 Surfaces (magazine deck poster XHS / tweet prototype data report Hyperfram…

阅读更多 →
python-for-android 贡献指南与 pip 打包机制深度解析:分支模型、版本策略、代码规范与依赖处理全流程 2026/9/25 14:37:51

python-for-android 贡献指南与 pip 打包机制深度解析:分支模型、版本策略、代码规范与依赖处理全流程

开发工具构建工具移动开发 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android 点击查看 免费下载 python-for-android(下文简称 p4a)…

阅读更多 →
RT-Thread CPK-RA6M4 BSP:瑞萨 RA6M4 评估板从烧录、调试到 FSP 外设配置的完整实战指南 2026/9/25 14:37:44

RT-Thread CPK-RA6M4 BSP:瑞萨 RA6M4 评估板从烧录、调试到 FSP 外设配置的完整实战指南

操作系统嵌入式物联网嵌入式OSRTOS 【免费下载链接】rt-thread RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/ 项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread 点击查看 免费下载 本文基于…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉