当前位置: 首页 > news >正文

Doc as Code (3):业内人士的观点

06f30fa33c174ee5bc05bffd3d5253ae.png 

作者 | Anne-Sophie Lardet

在技术传播国际会议十周年之际,Fluid Topics 的认证技术传播者和功能顾问 Gaspard上台探讨了“docOps 作为实现Doc as Code的中间结构”的概念。在他的演讲中,观众提出了几个问题,我们想分享Gaspard的见解!

首先,让我们从Doc as Code的介绍开始。

- 1 -

什么是Doc as Code

Doc as Code是应用软件开发流程和工具来交付技术文档。它使用与开发团队相同的工作流程和工具,包括版本控制系统、自动化测试、问题跟踪器等。它还依赖于轻量级文件的生产和管理。

Doc as Code相当容易获得且易于使用。 需要的工具是极简的,通常是免费的,并且像文本编辑器一样简单。Markdown 或 AsciiDoc 等轻量级格式是开始使用Doc as Code的最快方法,因为它们都可以处理纯文本文件。

与任何技术范例一样,Doc as Code有其优点和缺点。

优点

  • 它促进TW和开发人员之间的合作

  • 您可以使用与开发人员相同的工具

  • 它让开发人员一起参与文档生产制作

  • 它降低了软件许可和支持服务的总体成本

缺点

  • 需要更深的技术知识

  • 最适合软件产品的文档

许多机构和公司已转向Doc as Code作为他们的文档流程。英国政府的技术文档团队使用Doc as Code来提供服务和平台。Spotify、Cloudfare、Kubernetes、Twitch、Arundo、Netflix设备,甚至Bitcoin等公司都使用静态站点生成器(SSG)Jekyll,这是Doc as Code场景最常见的发布工具之一。

- 2 -

与DITA可能存在哪些交互?

Doc as Code和DITA的基本原理是不同的,但两者可以共存。

2019年6月,Heretto联合创始人兼首席执行官Patrick Bosek发表了《和睦相处:DITA和Markdown》。他做了如下类比:

Markdown就像一把铲子,DITA就像一台挖土机。有些人从未使用过挖土机,认为它太复杂了。然后,建造大型建筑的建筑工人说:你不能用铲子建造大型建筑。

如果你一个人开始一个项目,却不知道如何操作挖土机,那么铲子似乎是显而易见的选择。他们俩在世界上都有一席之地,任何建筑工地都会有铲子和挖土机。

Bosek强调了这样一个事实,即每个文档标准都有其优势,我们应该利用每一个标准的长处。

DITA和Doc as Code常用的格式之间存在潜在的联系。

  • 轻量级DITA

您可以使用轻量级DITA来弥合结构化内容和连续文档之间的差距,轻量级DITA是DITA的简化版本,使用DITA元素类型、属性、内容模型的子集和简化的功能子集。轻量级DITA旨在结合HTML5(HDITA)和Markdown(MDITA),它不是为了取代DITA。它主要针对那些将不懂DITA的员工融入文档组织。它允许作者跨不同的部门来进行编辑、协作或发布。

  • DITA辅助编辑模式

当有良好用户体验的界面提供支持时(即:有好用的编辑器),利用 XML 的好处可能是有意义的。随着文档化自动化技术向最终用户友好界面发展,开发人员可能需要访问专门的编辑和管理环境。有一些解决方案可以帮助生成一致的DITA,如Oxygen XML、IXIASOFT、Heretto、DitaToo、Composize等。

- 3 -

可以添加元数据吗?

有些内容需要比其他内容有更多的语义。在DITA系统中,有不同的方法可以在Topic或Map级别声明和添加元数据。不幸的是,使用Markdown,虽然可以调整现有内容并添加元数据,但没有像DITA那样提供语义化。以下是一些如何做到这一点的提示:

  • 使用YAML文件将元数据与模板语言相结合

  • 利用Markdown文件的header或为每个相关目录创建一个README文件

  • 使用Markdown特定风格,如Kramdown,它向内联元素添加类和ID

  • 将带有class属性的HTML标签与Markdown内容结合起来

  • 利用类似AsciiDocsy的SSG,它使用内联语义。

    例如:.term, .cite, .cmd, .code, .gui, .path, .case和.tip

- 4 -

是否仅限于软件行业?

Doc as Code确实适合很多公司,但通常仍与软件开发有关。

重工业在编制技术文件时使用有约束力的规范,如航空、航天、海军、核能和铁路的S1000D标准。有一些特定的要求和时间表与软件行业不同,因此Doc as Code很难应用。

另一方面,Doc as Code作为一个全球的环境可能适用于不同的内容来源、知识库、教育内容,甚至依赖聊天机器人的技术。

- 5 -

给初次尝试团队的建议

  • 循序渐进,从试点开始,熟悉版本控制系统和协作工作流

  • 提升TW的GIT技能

  • 促进技术文档团队和开发人员之间的沟通,让他们参与到文档流程中,并帮助他们确定工作的优先级

  • 花点时间选择和评估用于发布的现有解决方案(如静态站点生成器)是否符合您的需求

  • 为每个存储库创建一个README文件,以了解项目范围、所需资源、原则和指南

  • 开发模板,实施样式指南,代码检查,并考虑将其集成到CI/CD管道中

  • 比较Markdown的不同风格,并考虑使用AsciiDoc甚至轻量级DITA进行创作

  • 随时了解专业社区共享的文章、研讨会和资源:

    • Write the docs:

      https://www.writethedocs.org/

    • Tom Johnson:

      https://idratherbewriting.com/

    • Anne Gentle:

      https://justwriteclick.com/

    • Brian Dominick:

      https://github.com/briandominick

 

英文原文地址: https://www.fluidtopics.com/blog/tech-talk/an-insiders-look-at-docs-as-code/

 

相关文章:

Doc as Code (3):业内人士的观点

作者 | Anne-Sophie Lardet 在技术传播国际会议十周年之际,Fluid Topics 的认证技术传播者和功能顾问 Gaspard上台探讨了“docOps 作为实现Doc as Code的中间结构”的概念。在他的演讲中,观众提出了几个问题,我们想分享Gaspard的见解&#x…...

【Kafka】消息队列Kafka基础

目录 消息队列简介消息队列的应用场景异步处理系统解耦流量削峰日志处理 消息队列的两种模式点对点模式发布订阅模式 Kafka简介及应用场景Kafka比较其他MQ的优势Kafka目录结构搭建Kafka集群编写Kafka一键启动/关闭脚本 Kafka基础操作创建topic生产消息到Kafka从Kafka消费消息使…...

Java的第十五篇文章——网络编程(后期再学一遍)

目录 学习目的 1. 对象的序列化 1.1 ObjectOutputStream 对象的序列化 1.2 ObjectInputStream 对象的反序列化 2. 软件结构 2.1 网络通信协议 2.1.1 TCP/IP协议参考模型 2.1.2 TCP与UDP协议 2.2 网络编程三要素 2.3 端口号 3. InetAddress类 4. Socket 5. TCP网络…...

【深度学习】High-Resolution Image Synthesis with Latent Diffusion Models,论文

13 Apr 2022 论文:https://arxiv.org/abs/2112.10752 代码:https://github.com/CompVis/latent-diffusion 文章目录 PS基本概念运作原理 AbstractIntroductionRelated WorkMethodPerceptual Image CompressionLatent Diffusion Models Conditioning Mec…...

前端学习——Vue (Day6)

路由进阶 路由的封装抽离 //main.jsimport Vue from vue import App from ./App.vue import router from ./router/index// 路由的使用步骤 5 2 // 5个基础步骤 // 1. 下载 v3.6.5 // 2. 引入 // 3. 安装注册 Vue.use(Vue插件) // 4. 创建路由对象 // 5. 注入到new Vue中&…...

STM32MP157驱动开发——按键驱动(tasklet)

文章目录 “tasklet”机制:内核函数定义 tasklet使能/ 禁止 tasklet调度 tasklet删除 tasklet tasklet软中断方式的按键驱动程序(stm32mp157)tasklet使用方法:button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “tasklet”机制: …...

PostgreSQL构建时间

– PostgreSQL构建时间 select make_timestamp(2023,7,27,7,34,16);...

2023-将jar包上传至阿里云maven私有仓库(云效制品仓库)

一、背景介绍 如果要将平时积累的代码工具jar包,上传至云端,方便团队大家一起使用,一般的方式就是上传到Maven中心仓库(但是这种方式步骤多,麻烦,而且上传之后审核时间比较长,还不太容易通过&a…...

嵌入式linux之OLED显示屏SPI驱动实现(SH1106,ssd1306)

周日业余时间太无聊,又不喜欢玩游戏,大家的兴趣爱好都是啥?我觉得敲代码也是一种兴趣爱好。正巧手边有一块儿0.96寸的OLED显示屏,一直在吃灰,何不把玩一把?于是说干就干,最后在我的imax6ul的lin…...

关于element ui 安装失败的问题解决方法、查看是否安装成功及如何引入

Vue2引入 执行npm i element-ui -S报错 原因:npm版本太高 报错信息: 解决办法: 使用命令: npm install --legacy-peer-deps element-ui --save 引入: 在main.js文件中引入 //引入Vue import Vue from vue; //引入…...

Selenium多浏览器处理

Python 版本 #导入依赖 import os from selenium import webdriverdef test_browser():#使用os模块的getenv方法来获取声明环境变量browserbrowser os.getenv("browser").lower()#判断browser的值if browser "headless":driver webdriver.PhantomJS()e…...

浅谈 AI 大模型的崛起与未来展望:马斯克的 xAI 与中国产业发展

文章目录 💬话题📋前言🎯AI 大模型的崛起🎯中国 AI 产业的进展与挑战🎯AI 大模型的未来展望🧩补充 📝最后 💬话题 北京时间 7 月 13 日凌晨,马斯克在 Twiiter 上宣布&am…...

【CesiumJS材质】(1)圆扩散

效果示例 最佳实践: 其他效果: 要素说明: 代码 /** Date: 2023-07-21 15:15:32* LastEditors: ReBeX 420659880qq.com* LastEditTime: 2023-07-27 11:13:17* FilePath: \cesium-tyro-blog\src\utils\Material\EllipsoidFadeMaterialP…...

实战-单例模式和创建生产者相结合

实际中遇到了这样一个问题: The producer group[xxxx] has been created before, specify another instanceName (like producer.setInstanceName) please. 发生的原因是:一个进程内,创建了多个相同topic的producer。 所以问题就转换成了如何…...

[SQL挖掘机] - 窗口函数介绍

介绍: 窗口函数也称为 OLAP 函数。OLAP 是 OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理。窗口函数是一种用于执行聚合计算和排序操作的功能强大的sql函数。它们可以在查询结果集中创建一个窗口(window)&#xf…...

原生js实现锚点滚动顶部

简介 使用原生js API实现滚动到指定容器的顶部,API是scrollIntoView 使用 let eldocment.querySelector() 获取dom元素el.scrollIntoView()该元素滚动到其父元素的顶部 高级用法 scrollIntoView(Options)//option可以配置如下 options{behavior:smoot…...

使用mysql接口遇到点问题

game_server加入了dbstorage的代码。dbstorage实现了与mysql的交互:driver_mysql。其中调用了mysql相关的接口。所以game_server需要链接libmysql.lib。 从官网下载了mysql的源码:在用cmake构建mysql工程的时候,遇到了一些问题。 msyql8.0需…...

excel绘制折线图或者散点图

一、背景 假如现在通过代码处理了一批数据,想看数据的波动情况,是不是还需要写个pyhon代码,读取文件,绘制曲线,看起来也简单,但是还有更简单的方法,就是直接生成csv文件,csv文件就是…...

ChatGPT长文本对话输入方法

ChatGPT PROMPTs Splitter 是一个开源工具,旨在帮助你将大量上下文数据分成更小的块发送到 ChatGPT 的提示,并根据如何处理所有块接收到 ChatGPT(或其他具有字符限制的语言模型)的方法。 推荐:用 NSDT设计器 快速搭建可…...

FFmpeg-swresample的更新

auto convert的创建 在FFmpeg/libavfilter/formats.c中定义了negotiate_video和negotiate_audio,在格式协商,对于video如果需要scale,那么就会自动创建scale作为convert,对于audio,如果需要重采样,则会创建…...

回答网友 修改一个exe

网友说:他有个很多年前的没有源码的exe,在win10上没法用,让俺看一下。 俺看了一下,发现是窗体设计的背景色的问题。这个程序的背景色用的是clInactiveCaptionText。clInactiveCaptionText 在win10之前的系统上是灰色,但…...

数据可视化 - 动态柱状图

基础柱状图 通过Bar构建基础柱状图 from pyecharts.charts import Bar from pyecharts.options import LabelOpts # 使用Bar构建基础柱状图 bar Bar() # 添加X轴 bar.add_xaxis(["中国", "美国", "英国"]) # 添加Y轴 # 设置数值标签在右侧 b…...

【JVM】JVM五大内存区域介绍

目录 一、程序计数器(线程私有) 二、java虚拟机栈(线程私有) 2.1、虚拟机栈 2.2、栈相关测试 2.2.1、栈溢出 三、本地方法栈(线程私有) 四、java堆(线程共享) 五、方法区&…...

自动驾驶感知系统--惯性导航定位系统

惯性导航定位 惯性是所有质量体本身的基本属性,所以建立在牛顿定律基础上的惯性导航系统(Inertial Navigation System,INS)(简称惯导系统)不与外界发生任何光电联系,仅靠系统本身就能对车辆进行连续的三维定位和三维定向。卫星导…...

Netty简介

Netty Netty初体验基础概念Reactor模型传统的阻塞IO模型基础Reactor模型多线程Reactor模型 为什么要使用Netty? (NIO的框架,用于解决高并发出现的问题) *BIO:同步且阻塞的IO NIO:同步且非阻塞的IO(不是说线程&#x…...

基于TCP/IP对等模型对计算机网络知识点的整合

目录 前言 应用层 Telnet SSH FTP/TFTP SNMP:简单的网络管理协议 HTTP:超文本传输协议 SMTP:电子邮件传输协议 DNS:域名解析协议 DHCP:动态主机配置协议 NTP:网络时钟协议 传输层 TCP UDP 端…...

【SQL应知应会】表分区(一)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区…...

PostgreSQL 常用空间处理函数

1.OGC标准函数 管理函数: 添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geometry_columns中归档 Probe_Geometry_Columns() 给几何对象设置空间参考(在通过一个范围做空间查询时常用&…...

ubuntu初始化/修改root密码

1.登录ubuntu后,使用sudo passwd root命令,进行root密码的初始化/修改,注:这里需要保证两次输入的密码都是同一个,才可成功 ubuntugt-ubuntu22-04-cmd-v1-0-32gb-100m:~/ocr$ sudo passwd root New password: Retype…...

【Linux后端服务器开发】select多路转接IO服务器

目录 一、高级IO 二、fcntl 三、select函数接口 四、select实现多路转接IO服务器 一、高级IO 在介绍五种IO模型之前,我们先讲解一个钓鱼例子。 有一条大河,河里有很多鱼,分布均匀。张三是一个钓鱼新手,他钓鱼的时候很紧张&a…...

国内十大网站制作公司/哪个好用?

1.1 复习jQuery操作DOM 选择器 基本选择器:#id 、.class 、element、* 、 层级选择器: 空格、>、、~基本过滤选择器::first、:last、:eq(index)、:lt(index)、:gt(index)、:odd、:even筛选选择器:.eq(index)、.children()、.…...

驻马店营销型网站建设/北京有限公司

分析MySQL数据类型的长度 mysql有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECI…...

网站做等保测评/廊坊seo关键词优化

https://blog.csdn.net/zzq900503/article/details/49123387 运用场景: 导出excel后 发现 数值类型的字段 在excel中表现为文本类型,这样不利于计算。 解决办法: // 创建一个可写入的工作表 // Workbook的createSheet方法有两个参数,第一…...

wordpress $show_date/友情链接交易购买

最近在做一个项目,其中用到了TabActivity,想截取OnKeyDown事件来提示用户退出程序在api lever 5以上有OnBackPressed重载函数,可以达到同样的效果。 但是我一直没有成功,调试程序发现,因为TabActivity压根没有获取我按…...

重庆市官方网站/惠州seo代理计费

假设您的DataFrame具有类似于以下内容的架构(即Assets和Revenue是数字): df.printSchema() #root # |-- ID: long (nullable true) # |-- Assets: integer (nullable true) # |-- Revenue: integer (nullable true) 您可以在已设置的条件下将DataFrame自身设置为…...

建设网站需要哪些设备/职业技能培训学校

weboffice js操作word导读:就爱阅读网友为您分享以下“js操作word”的资讯,希望对您有所帮助,感谢您对92的支持!1.保存html页面到word***************************************************************************************单元格1单元格…...