1.wroxWrox的基调基调历史
2.程序员如何写好技术文档?建议收藏
3.å¦ä½å¶ä½å±äºèªå·±çç½ç«
4.FFmpeg源码分析:视频滤镜介绍(上)
wroxWrox的历史
成立于年的Wrox出版公司,源于英国伯明翰,源码公司名称谐音于英语中的基调基调“rocks”,象征着在编程领域中稳如磐石的源码地位。从创立之初,基调基调Wrox就坚持“程序员为程序员而著”的源码editview源码理念,专注于编程类图书的基调基调出版,取得了巨大的源码成功。随后,基调基调Wrox引入了独特的源码编辑方法,为每本书提供完整源代码下载支持,基调基调并设立勘误、源码E-mail支持及P2P论坛,基调基调为读者提供便利。源码读者在学习过程中,基调基调如遇错误,可向Wrox反馈,编辑确认后,错误将被更新至网站,供其他读者参考。对于学习中遇到的问题,读者可随时通过E-mail向Wrox公司提交,由客户支持人员、技术编辑和作者三个层面共同解决。Wrox图书封面采用暗红色基调,并配有主要作者的人头像,极具辨识度,深受广大读者喜爱。除了在图书内容、编辑方式和封面形式上的一木记账源码特色外,Wrox还以多种方式为程序员提供解决方案,成为一家提供全面信息服务的实体。 作为编程界的领航者,Wrox始终以专业、创新的态度引领行业发展。其独特的编辑方式、全面的源代码支持和贴心的读者服务,不仅提高了学习效率,也增强了读者的阅读体验。图书封面设计的创新与独特性,进一步巩固了Wrox在编程图书市场的地位。除了传统的图书出版,Wrox还通过多种途径为程序员提供解决方案,满足不同需求,展现出其作为信息服务提供商的专业性和全面性。 综上所述,Wrox的历史是其成功的基础。从成立之初的专注编程图书出版,到引入独特编辑方法并提供全面的读者服务,再到图书封面设计的创新,都体现了Wrox对编程领域的深刻理解和对读者需求的精准把握。未来,Wrox将继续以专业、创新的态度引领编程领域的发展,为程序员提供更优质的服务和解决方案。扩展资料
Wrox公司是以“由程序员为程序员而著”为创作理念的著名出版公司。在这种理念的指导下,Wrox出版了几百本深受全世界程序员青睐的优秀编程类图书,内容涉及C、济源网站建设源码C++、PHP、Oracle、SQLServer、Java、.NET等各个主要的计算机程序开发领域,曾指引数以百万计的计算机编程爱好者迅速踏进编程殿堂,并帮助无数初中级开发人员成为开发高手。程序员如何写好技术文档?建议收藏
文档的范围很广,本文特指开发人员撰写的包含基本产品背景和主要技术设计的文档。
世界观为什么要写技术文档?
写技术文档可以帮助团队完成当前的信息共享和长期的知识传承。对个人而言,一方面可以节省时间,因为避免了回答重复问题,也便于检索过去的知识;另一方面可以塑造口碑,比如某次突然有同事给我发消息说我的文档写的很好,对新接触这块业务的人帮助很大。
某某同事的感谢
反驳不需要写文档的言论
有很多程序员都持有一个观点:“不用看(写)文档,文档都在代码里”,还有一部分人认为,文档容易过时,很难跟上代码的更新节奏,因而没有必要写文档。
对此,首先我个人认为涉及代码细节的部分确实没必要写文档,但是对于总体的设计和业务的变更是绝对需要写文档的。有些人觉得文档有过时问题,那是因为他们没有引入版本(ChangeLog)的概念,过时的100附图指标源码文档本身就是业务历史的一部分。在接手一个业务的时候,常常就需要这些历史信息来辅助理解。
附议:为什么要看文档
上周发生了一件趣事,一个产品跟我说,开发两句话能说明白的,为什么要看文档?确实,问开发能以最快速度准确地获取信息,毕竟人脑就是一个强大的搜索引擎。但是长期来看有以下问题:
一般来说,一份好的技术文档比起开发口述是不会有多余的理解成本的,甚至更低,因为对于很多信息,能比语言更好地表达。
什么算好的技术文档
我认为好的技术文档的核心是敏捷。一方面,好的的技术文档是高度可维护的并且经常维护的,比如新增了一些功能,文档的作者能够快速更新文档,文档的读者能及时获取更新;另一方面,好的技术文档是易理解的,更详细来说要表述准确、结构清晰、排版美观、风格统一。
文档&写文档的定义
最后,我想探讨下写文档到底是干吗?百度百科说:软件文档或者源代码文档是指与软件系统及其软件工程过程有关联的文本实体。那么写文档就是生产这个实体的过程了。但这样实在过于抽象,根据我最近一年的易语源引流源码经验来看,我更愿意将其定义为对特定信息进行结构化整理的过程。
以上就是写作技术文档的道了,也就是我们对于这件事最基础的世界观,接下来谈术,即基于此执行的方法论。
方法论基调
在正式开始写文档之前,我们必须要有以下三点认知:
结构
本章节讨论了一份技术文档应该具备的各个单元,可以作为今后技术文档写作的框架或者Checklist。
Introduction
简单介绍项目背景信息,如下面是我为某个项目写的 Introduction :
Content
目录,目录是结构的直接体现,必须有,一般文档写作工具都能自动生成:
Terms
术语解释,很多业务会衍生一些特定词汇,如“白条卡”、“大图卡”等,都是有特定语境的,需要单独解释。
Setup
如何运行这个项目,一般开源项目都会有,如果是SDK文档也常常有接入文档,就是这个模块。
Body
这部分就是文档的主体部分,具体结构需要视内容而定,有以下通用规则
对于具体的格式规范,推荐阅读 ruanyf/document-style-guide: 中文技术文档的写作规范。
Reference
这部分也可以放在附录里面,见下图。
FAQ
其他人经常问的问题,遇到就记录在这个模块,不断补充,日趋完善。
Appendix
一些比较冗长的信息可以放在附录里面,比如日志,避免放在正文影响排版和阅读。
ChangeLog
变更日志,一般开源项目都会记录每个版本的重要变更。
ReleaseNote
发版日志,一般开源项目都会有一个单独的Release页面。
过程
一般来说,文档写作的流程如下:
收集信息、整理框架、实践结论、写作文档。如果前期工作足够,写作所花的时间是很少的。此外,文档完成后,还要注意读者反馈,以不断完善自己的文档。写一份好的技术文档也不是一蹴而就的,需要不断打磨,要注意经常去刻意练习。
工具
写作工具
一般来说,只要别人发给我的文档是一份Word文档,我基本就把这份文档排在了最LowB的一档。对于这种文档,我就想问两点:为什么不是Markdown或Asciidoc格式?Markdown比较受开源社区的欢迎,因为它在表达力和简洁性之间找到了一个平衡点,但是它有一个致命问题就是无法应付稍微复杂一点的排版。Asciidoc则是我的主力文档工具,很多人不知道Github也是支持这种文档格式的,比如本文就是这种格式的。Asciidoc的语法比Markdown更加复杂,但我认为牺牲一点时间学习是完全值得的。最后是Latex,Tex的变种,表达力最强大,可以应付各种复杂排版,一般在学术圈比较流行(尤其是那些复杂数学公式的表达),但我认为放在日常的文档写作中有点矫枉过正了。
维护工具
对于文档的管理,我推荐使用Git,像管理代码一样管理文档。另外我推荐使用一个静态网站来存放自己的文档,这样其他同事访问的时候看到的总是最新的文档了。另外,公司目前在推iWiki,我觉得iWiki最大的优势是权限控制,对于一些敏感文档是必须的。但是,比起iWiki的变更记录,作为程序员的我更钟爱用Git进行管理,此外,iWiki是Web网页,编辑体验肯定也比不上本地自己配置的编辑器。当然,术没有绝对的优劣之分,也要看自己是否合适。
总结
以上,最近关于技术文档写作的一些思考。欢迎交流指正。
作者:慕用
链接:imooc.com/article/...
来源:慕课网
å¦ä½å¶ä½å±äºèªå·±çç½ç«
1ãæå¼æ·å®ç½é¡µï¼ç»éæ·å®ï¼è¿å ¥å家ä¸å¿ï¼ç¹å»æä½çé¢å·¦ä¾§çâåºéºç®¡çâï¼ç¶åè¿å ¥âåºéºè£ ä¿®â页é¢ãè¿å ¥è£ 修页é¢ï¼ä½ å¯ä»¥çå°å¾å¤æ¨¡åï¼æ¯ä¸ªæ¨¡åé½å¯ä»¥èªä¸»å°è¿è¡ç¼è¾ï¼ä¹å¯ä»¥å é¤æ¨¡åï¼æè æ·»å èªå®ä¹æ¨¡åã
é¦å ï¼ä½ éè¦åçå°±æ¯å¶ä½åºæï¼åºæä½äºåºéºç顶端ï¼éè¦æ§ä¸è¨èå»ã对äºåºæå¾çï¼ä½ å¯ä»¥äºå å¨ç½ä¸ä¸è½½ä¸ä¸ªæ¨¡æ¿ï¼å¡«å¥½æ é¢ï¼çæå¾çï¼å¹¶ä¿åãå¨è£ 修页é¢éä¸åºæçé¨åï¼åå»âç¼è¾âï¼ä¸ä¼ å·²ç»å¶ä½å¥½çå¾çï¼ä¸ä¼ å®æ¯ï¼åå»âä¿åâã
2ãæ¥çæ¯åºéºç页é¢å¸å±ãä½ éè¦ç¡®å®ä¸ä¸ªæ¨¡æ¿é£æ ¼ï¼æ¨¡æ¿é£æ ¼å¯ä»¥éæ©æ·å®èªå¸¦å è´¹çï¼å¦ææ³è¦ä¸ªæ§ä¸ç¹çè¯ï¼å¯ä»¥å»è£ ä¿®å¸åºä»è´¹è´ä¹°ã模åç¡®å®åï¼åç¹å»âå¸å±ç®¡çâï¼ä¸äºå¸å±åå å¯ä»¥éæè°æ¢ä½ç½®ï¼å¦å¤ï¼ä½ è¿å¯ä»¥éæ©æ§æ·»å å¸å±åå ã
ç¶åå°±è¿å ¥èªå®ä¹ç¼è¾é¶æ®µäºï¼å ·ä½èè¨ï¼å°±æ¯æåºéºäº§åçå类管çåè£ ä¿®ï¼è¿æ¯æ·å®åºéºè£ ä¿®è¿ç¨ä¸çé头æã
å¨èªå®ä¹å 容åºï¼ç¹å»âç¼è¾âï¼åç¹å»âæºç âå¾æ ï¼å¨ç¾åº¦ä¸æç´¢âå è´¹æ·å®æ¨¡æ¿ä»£ç âï¼æ代ç å¤å¶ç²è´´å°ç¸åºçåºåï¼æ¥çå°±æ¯è¦å¨æ¨¡æ¿ä¸æ·»å å®è´çå¾çåä¿¡æ¯äºã
3ãå ·ä½æä½æ¥éª¤æ¯ï¼
åå»æ¨¡çä¸è¦æå ¥å®è´å¾ççé¨åï¼ç¹å»âç¼è¾âãå¦æå·²ä¸ä¼ å¾çå°å¾ç空é´çè¯ï¼å°±å¨å¾ç空é´çå¾çä¸ç¨é¼ æ å³å»âå±æ§âï¼åºç°ä¸ä¸ªå¾ç大æ¡ã
å°å¾ççç½ç»å°åå¤å¶ç²è´´å°âå¾çå°åâæ¡å ï¼å¾çç宽度ãé«åº¦ã对é½æ¹å¼ãé´è·éè¦æ模æ¿æ设å®ç大å°è¿è¡è®¾ç½®ï¼é¾æ¥ç½å为å®è´æå¨é¡µçç½åã
模çæåé¨åçç¼è¾åºæ¬ä¸å¯ä»¥ç´æ¥å¨æ¨¡çä¸æ¹ï¼å¦æä¸è¡çå°±å¨âæºç âçç¶æä¸ï¼æ¾å°ç¸åºçä½ç½®è¿è¡æåçæ¿æ¢ãå¾çåæåé½è®¾ç½®å¥½ä»¥åï¼å°±å¯ä»¥ç¹å»âé¢è§âï¼å¦æ没æé®é¢çè¯ï¼å°±ç¹å»åå¸ï¼è¿æ ·ä¸æ¥ï¼å¤§æ¦çåºéºè£ 修就å®æäºã
æ©å±èµæï¼
æ·å®åºé¡µé¢åå¸ï¼
é£æ ¼å设计å ç´ è¦åæ´ä¸ªåºéºåºè°ç»ä¸,å¯ä½ä¸ºæ°´å°å¨æ¯ä¸ªå®è´ä¸éç°,åæ¶æ¹ä¾¿åºéºä¹é´äºæ¢é¾æ¥æç¨ã
åºæï¼
å¦ä»åºéºçåºæä¸è¬é½èµ°ä¸¤ä¸ªè·¯çº¿ï¼
第ä¸ä¸ªï¼ä¼ ç»æ§çåºæï¼éè¿ææçç¨å¿è£ ä¿®è强è°åçï¼
第äºä¸ªï¼éä¼ ç»æ§çåºæï¼å®å ¨åä¿éåºæè 左侧æ è为ä¸ä½ã
左侧æ ï¼
主è¦å å«æ¶èæ¬åºæ è¯ãèç³»æ¹å¼ã客æä¸å¿ãæºæºå¨çº¿ãæ·å®ææ说ãå ³é®åæç´¢æ ãæ°åæ¨èãéåæéãå®è´åç±»ãå®è´æè¡æ¦ãåæ é¾æ¥ãå å¼ä¸å¿çå 容;æ¯ä¸åç设计é½è¦åè°ï¼ä¸æ´ä½åºéºé£æ ¼ä¿æä¸è´ã
ä¿éåºï¼
主è¦å±ç¤ºä¿é产åå¾çï¼æ¶åå®è´å称ãå®è´å±ç¤ºå¾çãä¿éæ¹æ¡çå 容;
设计ææè¦éç®ï¼å¤ºäººç¼çï¼ä¿éæ¹æ¡è½å¤å åæ¿èµ·ä¹°å®¶è´ä¹°æ¬²æã
æ¨èå®è´ï¼
æ¨èå®è´åºä¸ºç½åºç主æåºï¼æ¤çå主è¦æ¶åæåè²å½©æé ã产ååç±»ãå¾çæµç¨ã产åç»èæè¿°ãä»·æ ¼å®ä½ãä¿éæ´»å¨çå 容ã
FFmpeg源码分析:视频滤镜介绍(上)
FFmpeg在libavfilter模块提供了丰富的音视频滤镜功能。本文主要介绍FFmpeg的视频滤镜,包括黑色检测、视频叠加、色彩均衡、去除水印、抗抖动、矩形标注、九宫格等。
黑色检测滤镜用于检测视频中的纯黑色间隔时间,输出日志和元数据。若检测到至少具有指定最小持续时间的黑色片段,则输出开始、结束时间戳与持续时间。该滤镜通过参数选项rs、gs、bs、rm、gm、bm、rh、gh、bh来调整红、绿、蓝阴影、基调与高亮区域的色彩平衡。
视频叠加滤镜将两个视频的所有帧混合在一起,称为视频叠加。顶层视频覆盖底层视频,输出时长为最长的视频。实现代码位于libavfilter/vf_blend.c,通过遍历像素矩阵计算顶层像素与底层像素的混合值。
色彩均衡滤镜调整视频帧的RGB分量占比,通过参数rs、gs、bs、rm、gm、bm、rh、gh、bh在阴影、基调与高亮区域进行色彩平衡调整。
去除水印滤镜通过简单插值抑制水印,仅需设置覆盖水印的矩形。代码位于libavfilter/vf_delogo.c,核心是基于矩形外像素值计算插值像素值。
矩形标注滤镜在视频画面中绘制矩形框,用于标注ROI兴趣区域。在人脸检测与人脸识别场景中,检测到人脸时会用矩形框进行标注。
绘制x宫格滤镜用于绘制四宫格、九宫格,模拟画面拼接或分割。此滤镜通过参数x、y、width、height、color、thickness来定义宫格的位置、大小、颜色与边框厚度。
调整yuv或rgb滤镜通过计算查找表,绑定像素输入值到输出值,然后应用到输入视频,实现色彩、对比度等调整。相关代码位于vf_lut.c,支持四种类型:packed 8bits、packed bits、planar 8bits、planar bits。
将彩色视频转换为黑白视频的滤镜设置U和V分量为,实现效果如黑白视频所示。