</2016><2017>

本文回顾了作者2016年在前端开发领域的项目经历,包括移动BI系统的重写、订餐系统的开发以及首个React项目的上线。同时,文章也概述了在维护老旧项目时遇到的问题及解决方案,并对2017年的技术学习方向进行了规划。

不觉间,2016已悄然离去;
恍然后,2017正慢慢袭来。

又到了总结过去,展望未来的时候了,那就先总结16年的收获和经验教训,再展望17年对自己及行业的一些期望吧。

16年的那些事

clipboard.png

先说一下16年的github贡献图吧。这一年中,除了年中的四个月很少push代码,其他时间都还算没有偷懒。

今年主要做了下面这些项目

mobile BI

至于github上缺失的这四个月在干嘛,我要给个解释。公司的一个Hybird项目,要全新的改版,在这之前,前端架构是用jQuery来写的多个页面组装的一个移动端BI系统。我来主导,将整个前端架构换成ionic,目标是产出一个Hybird的SPA应用。所以,这四个月,我在做这几件事:

  1. 重写项目,搭建ionic架构开发,重构highcharts组件;

  2. 组织团队(4人)技术培训,尽快熟悉架构及ionic组件开发;

  3. 功能开发。

订餐系统

这是一个业余项目,用于解决多人团队实时点餐,不容易统计的痛点。
项目的灵感:项目内多个人,点外卖时,每个人都点餐,最后一个人来统计点餐结果,再发给店家。这个过程很费时费力,本着程序员思维,能自动化的东西,绝不浪费自己时间,所以就有了这个项目。

//TODO 已完成一期内容,只包含买家点餐功能,二期准备做卖家及支付功能。

项目使用的技术栈:Express + MongoDB + Angular + Bootstrap

Github: https://github.com/zollero/me...
项目部署地址:http://bearzzz.xyz

第一个上线的react项目

项目是公司的一个dashboard项目,也是我的第一个上线的React SPA项目。

技术栈:es6 + react + react-router + redux + react-redux + webpack + express + echarts + nginx

项目地址:http://addmp.ffan.com

维护一些老项目

工作中,还维护了一些老的项目,这些项目是一些java web项目,使用的技术栈是:java + spring + jquery + bootstrap

这些系统的页面都是业余的前端人员来开发的,所以存在很多代码的问题:

  1. 代码风格不统一,有一些语法错误和全局污染的问题;

  2. 没有任何的代码复用,很多都是复制粘贴的,维护起来太麻烦;

  3. 代码没有模块化的架构,没有使用任何的模块化工具(gulp, webpack等)或框架(requirejs, seajs等);

  4. 没有任何的自动化工具,如:eslint, sass, less, concat, uglify等。

面对这个局面,有两个选择:

  1. 重构整个项目,但是时间不允许,再加上重构的风险太大,这个不可取;

  2. 就按照之前的代码风格进行新功能开发,这个有点太无作为,也不可取。

经过考虑和评估,我决定对这两个选择进行一个折中。

  1. 对新功能使用一些自动化工具;

  2. 更多的使用代码复用,开发公共组件;

  3. 统一代码风格,当遇到对旧模块进行修改和维护时,尽量进行简单的重构。

总结

  • 上半年以ES5开发为主,下半年以ES6 + React语法为主;

  • 15年以Java web和H5 Hybird开发为主;

  • 16年上半年主要是ionic架构的Hybird项目开发,下半年主要react为主的web项目和Hybird项目;

  • 深入学习python语言,写一些python爬虫小工具;

  • 熟练掌握了angular、ionic、react等框架,并在前端架构方面积累了一些经验。

  • Nodejs项目部署,及nginx代理转发等配置。

17 展望

新的一年,从改变开始。

自从入了这个坑,就不停的在学,在写,在练。过程中,有辛苦,有快乐,还好对我来说,乐趣的感觉大于辛苦的烦恼。

新的一年,肯定要给自己制定一些计划的。虽然往年的计划只完成了一部分,但是计划还是要有的,万一都实现了呢?

语言
  • 作为一个前端,ES5 + ES6 + ES7肯定是首选;

  • Python作为第二语言,来开发服务器脚本,爬虫系统;

  • Ruby、Go脚本语言开发;

  • Java作为辅助,开发些辅助系统。

框架
  • React、Vue技术栈,总结两者差异;

  • Webpack、NodeJS、Koa等;

  • WebGL、D3数据可视化框架;

  • React Native技术栈开发;

  • 深入了解并使用tensorflow等机器学习框架。

周边
  • 搭建自己的网站,包含:博客、工具集、技能树、GitLab库;

  • 把更多精力放在开源库上,专注于好的事情上;

  • 多积累博客。

书单

16年忙于工作,没有读几本书,只是看了三四本技术方面的书籍,并且京东上买了三次书籍,买的大都是技术书籍。发现最近,已经对非技术类书籍少了很多兴趣。17年必须让自己多充充电,除了技术类书籍,还要多涉猎其他学科,让自己保持一种多学科知识的冲撞,摩擦出新的创意。

先给自己列个简单的书单:

  • 百年孤独

  • 硅谷钢铁侠:埃隆·马斯克的冒险人生

  • 乌合之众

  • 强权与铁腕:普京传

  • 霍乱时期的爱情

  • 疯狂的简洁

  • 了不起的盖茨比

(完)

clipboard.png

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <xml-fragment xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16sdtdh="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape"> <m:nary> <m:naryPr> <m:chr m:val="∑"/> <m:supHide m:val="1"/> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:iCs/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:naryPr> <m:sub> <m:eqArr> <m:eqArrPr> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:iCs/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:eqArrPr> <m:e> <m:r> <m:rPr> <m:sty m:val="p"/> </m:rPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>0≤ i ≤ m</m:t> </m:r> </m:e> <m:e> <m:r> <m:rPr> <m:sty m:val="p"/> </m:rPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t xml:space="preserve">0<j<n </m:t> </m:r> </m:e> </m:eqArr> </m:sub> <m:sup/> <m:e> <m:r> <m:rPr> <m:sty m:val="p"/> </m:rPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>P</m:t> </m:r> <m:d> <m:dPr> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:iCs/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:dPr> <m:e> <m:r> <m:rPr> <m:sty m:val="p"/> </m:rPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>i,j</m:t> </m:r> </m:e> </m:d> </m:e> </m:nary> <m:nary> <m:naryPr> <m:chr m:val="∏"/> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:i/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:naryPr> <m:sub> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>k=1</m:t> </m:r> </m:sub> <m:sup> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>n</m:t> </m:r> </m:sup> <m:e> <m:sSub> <m:sSubPr> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:i/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:sSubPr> <m:e> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>A</m:t> </m:r> </m:e> <m:sub> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>k</m:t> </m:r> </m:sub> </m:sSub> </m:e> </m:nary> <m:nary> <m:naryPr> <m:chr m:val="⋃"/> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:i/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:naryPr> <m:sub> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>n=1</m:t> </m:r> </m:sub> <m:sup> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>m</m:t> </m:r> </m:sup> <m:e> <m:d> <m:dPr> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:i/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:dPr> <m:e> <m:sSub> <m:sSubPr> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:i/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:sSubPr> <m:e> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>X</m:t> </m:r> </m:e> <m:sub> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>n</m:t> </m:r> </m:sub> </m:sSub> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>∩</m:t> </m:r> <m:sSub> <m:sSubPr> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:i/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:sSubPr> <m:e> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>Y</m:t> </m:r> </m:e> <m:sub> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>n</m:t> </m:r> </m:sub> </m:sSub> </m:e> </m:d> </m:e> </m:nary> <m:nary> <m:naryPr> <m:chr m:val="∑"/> <m:limLoc m:val="subSup"/> <m:supHide m:val="1"/> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:i/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:naryPr> <m:sub> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>k</m:t> </m:r> </m:sub> <m:sup/> <m:e/> </m:nary> <m:nary> <m:naryPr> <m:chr m:val="∐"/> <m:limLoc m:val="subSup"/> <m:supHide m:val="1"/> <m:ctrlPr> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math"/> <w:i/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> </m:ctrlPr> </m:naryPr> <m:sub> <m:r> <w:rPr> <w:rFonts w:ascii="Cambria Math" w:hAnsi="Cambria Math" w:hint="eastAsia"/> <w:sz w:val="28"/> <w:szCs w:val="28"/> </w:rPr> <m:t>m</m:t> </m:r> </m:sub> <m:sup/> <m:e/> </m:nary> </xml-fragment> 这个xml是 word公式的xml 经过 OMML2MML.XSL 转完变成了 <?xml version="1.0" encoding="UTF-16" standalone="no"?> <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"> <mml:mrow> <mml:msub> <mml:mo stretchy="false">∑</mml:mo> <mml:mrow> <mml:mtable> <mml:mtr> <mml:mtd> <mml:mrow> <mml:maligngroup/> <mml:mn>0</mml:mn> <mml:mo>≤</mml:mo> <mml:mi> </mml:mi> <mml:mi>i</mml:mi> <mml:mi> </mml:mi> <mml:mo>≤</mml:mo> <mml:mi> </mml:mi> <mml:mi>m</mml:mi> </mml:mrow> </mml:mtd> </mml:mtr> <mml:mtr> <mml:mtd> <mml:mrow> <mml:maligngroup/> <mml:mn>0</mml:mn> <mml:mo><</mml:mo> <mml:mi>j</mml:mi> <mml:mo><</mml:mo> <mml:mi>n</mml:mi> <mml:mi> </mml:mi> </mml:mrow> </mml:mtd> </mml:mtr> </mml:mtable> </mml:mrow> </mml:msub> <mml:mrow> <mml:mi mathvariant="normal">P</mml:mi> <mml:mfenced separators="|"> <mml:mrow> <mml:mi mathvariant="normal">i</mml:mi> <mml:mo>,</mml:mo> <mml:mi mathvariant="normal">j</mml:mi> </mml:mrow> </mml:mfenced> </mml:mrow> </mml:mrow> <mml:mrow> <mml:msubsup> <mml:mo stretchy="false">∏</mml:mo> <mml:mrow> <mml:mi>k</mml:mi> <mml:mo>=</mml:mo> <mml:mn>1</mml:mn> </mml:mrow> <mml:mrow> <mml:mi>n</mml:mi> </mml:mrow> </mml:msubsup> <mml:mrow> <mml:msub> <mml:mrow> <mml:mi>A</mml:mi> </mml:mrow> <mml:mrow> <mml:mi>k</mml:mi> </mml:mrow> </mml:msub> </mml:mrow> </mml:mrow> <mml:mrow> <mml:msubsup> <mml:mo stretchy="false">⋃</mml:mo> <mml:mrow> <mml:mi>n</mml:mi> <mml:mo>=</mml:mo> <mml:mn>1</mml:mn> </mml:mrow> <mml:mrow> <mml:mi>m</mml:mi> </mml:mrow> </mml:msubsup> <mml:mrow> <mml:mfenced separators="|"> <mml:mrow> <mml:msub> <mml:mrow> <mml:mi>X</mml:mi> </mml:mrow> <mml:mrow> <mml:mi>n</mml:mi> </mml:mrow> </mml:msub> <mml:mo>∩</mml:mo> <mml:msub> <mml:mrow> <mml:mi>Y</mml:mi> </mml:mrow> <mml:mrow> <mml:mi>n</mml:mi> </mml:mrow> </mml:msub> </mml:mrow> </mml:mfenced> </mml:mrow> </mml:mrow> <mml:mrow> <mml:msub> <mml:mo stretchy="false">∑</mml:mo> <mml:mrow> <mml:mi>k</mml:mi> </mml:mrow> </mml:msub> <mml:mrow/> </mml:mrow> <mml:mrow> <mml:msub> <mml:mo stretchy="false">∐</mml:mo> <mml:mrow> <mml:mi>m</mml:mi> </mml:mrow> </mml:msub> <mml:mrow/> </mml:mrow> </mml:math> 这个xml 转之后的xml 怎么区分 下标 在正下方还是右下方
10-16
<h1>注册信息</h1> <form action="action_page.php" method="get"> <label>姓名:</label><input type="text" placeholder="请输入真实姓名"> <br></br> <label>密码:</label><input type="password" placeholder="请输入密码"> <br></br> <label>确认密码:</label><input type="password" placeholder="请输入确认密码"> <br></br> <label>性别:</label> <label><input type="radio" name="gender"> 男</label> <label><input type="radio" name="gender" checked> 女</label> <br></br> <label>居住城市:</label> <select> <option>北京</option> <option>上海</option> <option>广州</option> <option>深圳</option> <option>武汉</option> </select> <h2>教育经历</h2> <label>最高学历:</label> <select> <option>博士</option> <option>硕士</option> <option>本科</option> <option>大专</option> </select> <br></br> <label>学校名称:</label><input type="text"> <br></br> <label>所学专业:</label><input type="text"> <br></br> <label>在校时间:</label> <select> <option>2015</option> <option>2016</option> <option>2017</option> <option>2018</option> </select> <br></br> <select> <option>2019</option> <option>2020</option> <option>2021</option> <option>2022</option> </select> <br></br> <h2>工作经历</h2> <label>公司名称:</label><input type="text"> <br></br> <label>工作描述:</label> <br> <textarea></textarea> <br></br> <input type="checkbox"><label>已阅读并同意以下协议:</label> <ul> <li><a href="#">《用户服务协议》</a></li> <li><a href="#">《隐私政策》</a></li> </ul> <br></br> <button>免费注册</button> <button type="reset">重新填写</button> </form>
04-03
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16sdtdh="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex w16sdtdh wp14"> <w:body> <w:sdt> <w:sdtPr> <w:tag w:val="第一个表格"/> <w:id w:val="-2094155386"/> <w:placeholder> <w:docPart w:val="DefaultPlaceholder_-1854013440"/> </w:placeholder> </w:sdtPr> <w:sdtEndPr/> <w:sdtContent> <w:p w14:paraId="43354026" w14:textId="77777777" w:rsidR="0072677C" w:rsidRDefault="0072677C" w:rsidP="0072677C"/> <w:tbl> <w:tblPr> <w:tblStyle w:val="af0"/> <w:tblW w:w="0" w:type="auto"/> <w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/> </w:tblPr> <w:tblGrid> <w:gridCol w:w="4148"/> <w:gridCol w:w="4148"/> </w:tblGrid> <w:tr w:rsidR="0072677C" w14:paraId="0866E40D" w14:textId="77777777" w:rsidTr="0072677C"> <w:tc> <w:tcPr> <w:tcW w:w="4148" w:type="dxa"/> </w:tcPr> <w:p w14:paraId="65000D41" w14:textId="09B95308" w:rsidR="000E7097" w:rsidRDefault="000E7097" w:rsidP="00B63674"> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rPr> <w:t>新的第一行</w:t> </w:r> </w:p> <w:sdt> <w:sdtPr> <w:tag w:val="1"/> <w:id w:val="1564297420"/> <w:placeholder> <w:docPart w:val="DefaultPlaceholder_-1854013440"/> </w:placeholder> </w:sdtPr> <w:sdtEndPr/> <w:sdtContent> <w:p w14:paraId="606D1F67" w14:textId="77777777" w:rsidR="009F3887" w:rsidRDefault="00CA3AE7" w:rsidP="00B63674"> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rPr> <w:t>第一</w:t> </w:r> </w:p> <w:p w14:paraId="3C339B7B" w14:textId="4937A893" w:rsidR="009F3887" w:rsidRDefault="009F3887" w:rsidP="00B63674"> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rPr> <w:t>撒旦发射点发射点</w:t> </w:r> </w:p> <w:p w14:paraId="2B37EA91" w14:textId="04153234" w:rsidR="00CA3AE7" w:rsidRDefault="00CA3AE7" w:rsidP="00B63674"> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rPr> <w:t>行</w:t> </w:r> </w:p> </w:sdtContent> </w:sdt> <w:sdt> <w:sdtPr> <w:tag w:val="2"/> <w:id w:val="163139992"/> <w:placeholder> <w:docPart w:val="DefaultPlaceholder_-1854013440"/> </w:placeholder> </w:sdtPr> <w:sdtEndPr/> <w:sdtContent> <w:p w14:paraId="5954A74D" w14:textId="3611993C" w:rsidR="007D2919" w:rsidRDefault="007D2919" w:rsidP="00B63674"> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rPr> <w:t>特特特特同仁堂</w:t> </w:r> </w:p> <w:p w14:paraId="0C4EC9D4" w14:textId="1EB3230F" w:rsidR="00CA3AE7" w:rsidRDefault="00CA3AE7" w:rsidP="00B63674"> <w:r> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rPr> <w:t>第二行</w:t> </w:r> </w:p> </w:sdtContent> </w:sdt> <w:p w14:paraId="6D1D9E65" w14:textId="7D527DD1" w:rsidR="00C64D2A" w:rsidRDefault="008D1766" w:rsidP="00B63674"> <w:sdt> <w:sdtPr> <w:tag w:val="3"/> <w:id w:val="297726752"/> <w:placeholder> <w:docPart w:val="DefaultPlaceholder_-1854013440"/> </w:placeholder> </w:sdtPr> <w:sdtEndPr/> <w:sdtContent> <w:r w:rsidR="00CA3AE7"> <w:rPr> <w:rFonts w:hint="eastAsia"/> </w:rPr> <w:t>第三行</w:t> </w:r> </w:sdtContent> </w:sdt> <w:r w:rsidR="00CA3AE7"> <w:t>111</w:t> </w:r> </w:p> </w:tc> <w:tc> <w:tcPr> <w:tcW w:w="4148" w:type="dxa"/> </w:tcPr> <w:p w14:paraId="245267DA" w14:textId="77777777" w:rsidR="0072677C" w:rsidRDefault="0072677C" w:rsidP="0072677C"/> </w:tc> </w:tr> </w:tbl> <w:p w14:paraId="3C3AC845" w14:textId="08691AC9" w:rsidR="00152B8F" w:rsidRPr="0072677C" w:rsidRDefault="008D1766" w:rsidP="0072677C"/> </w:sdtContent> </w:sdt> <w:sectPr w:rsidR="00152B8F" w:rsidRPr="0072677C"> <w:headerReference w:type="even" r:id="rId8"/> <w:headerReference w:type="default" r:id="rId9"/> <w:footerReference w:type="even" r:id="rId10"/> <w:footerReference w:type="default" r:id="rId11"/> <w:headerReference w:type="first" r:id="rId12"/> <w:footerReference w:type="first" r:id="rId13"/> <w:pgSz w:w="11906" w:h="16838"/> <w:pgMar w:top="1312" w:right="1800" w:bottom="1440" w:left="1800" w:header="779" w:footer="992" w:gutter="0"/> <w:cols w:space="425"/> <w:docGrid w:type="lines" w:linePitch="312"/> </w:sectPr> </w:body> </w:document> 这个xml数据结构是 sdt包裹整个表格 P标签里面也包括sdt 为什么修改后 sdt控件会移动到段落上一个系欸但
09-20
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- Copyright (c) 2016-2017, 2019, 2021 The Linux Foundation. All rights reserved Not a Contribution. --> <!-- Copyright (C) 2015 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude"> <!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” --> <!-- Global configuration Decalaration --> <globalConfiguration speaker_drc_enabled="true"/> <!-- Modules section: There is one section per audio HW module present on the platform. Each module section will contains two mandatory tags for audio HAL “halVersion” and “name”. The module names are the same as in current .conf file: “primary”, “A2DP”, “remote_submix”, “USB” Each module will contain the following sections: “devicePorts”: a list of device descriptors for all input and output devices accessible via this module. This contains both permanently attached devices and removable devices. “mixPorts”: listing all output and input streams exposed by the audio HAL “routes”: list of possible connections between input and output devices or between stream and devices. "route": is defined by an attribute: -"type": <mux|mix> means all sources are mutual exclusive (mux) or can be mixed (mix) -"sink": the sink involved in this route -"sources": all the sources than can be connected to the sink via vis route “attachedDevices”: permanently attached devices. The attachedDevices section is a list of devices names. The names correspond to device names defined in <devicePorts> section. “defaultOutputDevice”: device to be used by default when no policy rule applies --> <modules> <module name="primary" halVersion="2.0"> <attachedDevices> <item>Speaker</item> <item>Speaker Safe</item> <item>Earpiece</item> <item>Telephony Tx</item> <item>Built-In Mic</item> <item>Built-In Back Mic</item> <item>Telephony Rx</item> </attachedDevices> <defaultOutputDevice>Speaker</defaultOutputDevice> <mixPorts> <mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY AUDIO_OUTPUT_FLAG_FAST"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW AUDIO_OUTPUT_FLAG_FAST"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="hifi_playback" role="source" /> <mixPort name="deep_buffer" role="source" flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER"> <profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED" samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="compressed_offload" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD"> <profile name="" format="AUDIO_FORMAT_MP3" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/> <profile name="" format="AUDIO_FORMAT_AAC_LC" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/> <profile name="" format="AUDIO_FORMAT_AAC_HE_V1" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/> <profile name="" format="AUDIO_FORMAT_AAC_HE_V2" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/> </mixPort> <mixPort name="voice_tx" role="source"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="voip_rx" role="source" flags="AUDIO_OUTPUT_FLAG_VOIP_RX"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="incall_music_uplink" role="source" flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> <mixPort name="primary input" role="sink"> <profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_3"/> </mixPort> <mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_FAST"> <profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_3"/> </mixPort> <mixPort name="hifi_input" role="sink" /> <mixPort name="voice_rx" role="sink"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> </mixPort> <mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_3"/> </mixPort> <mixPort name="voip_tx" role="sink" flags="AUDIO_INPUT_FLAG_VOIP_TX"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/> </mixPort> </mixPorts> <devicePorts> <devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink"> </devicePort> <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink"> </devicePort> <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink"> </devicePort> <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink"> </devicePort> <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink"> </devicePort> <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink"> </devicePort> <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink"> </devicePort> <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink"> </devicePort> <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink"> </devicePort> <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink" encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </devicePort> <devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink" encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </devicePort> <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink" encodedFormats="AUDIO_FORMAT_LDAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000 88200 96000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </devicePort> <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source"> </devicePort> <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source"> </devicePort> <devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source"> </devicePort> <devicePort tagName="Telephony Rx" type="AUDIO_DEVICE_IN_TELEPHONY_RX" role="source"> </devicePort> <!-- TODO: Enable multi-channel recording --> <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source"> </devicePort> <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source"> </devicePort> </devicePorts> <routes> <route type="mix" sink="Earpiece" sources="primary output,raw,deep_buffer,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="Speaker" sources="primary output,raw,deep_buffer,compressed_offload,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="Speaker Safe" sources="primary output,raw,deep_buffer,compressed_offload,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="BT SCO" sources="primary output,raw,deep_buffer,voip_rx"/> <route type="mix" sink="BT SCO Headset" sources="primary output,raw,deep_buffer,voip_rx"/> <route type="mix" sink="BT SCO Car Kit" sources="primary output,raw,deep_buffer,voip_rx"/> <route type="mix" sink="USB Device Out" sources="primary output,raw,deep_buffer,compressed_offload,hifi_playback,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="USB Headset Out" sources="primary output,raw,deep_buffer,compressed_offload,hifi_playback,mmap_no_irq_out,voip_rx"/> <route type="mix" sink="Telephony Tx" sources="voice_tx,incall_music_uplink"/> <route type="mix" sink="primary input" sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/> <route type="mix" sink="fast input" sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/> <route type="mix" sink="voice_rx" sources="Telephony Rx"/> <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" /> <route type="mix" sink="mmap_no_irq_in" sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/> <route type="mix" sink="voip_tx" sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/> <route type="mix" sink="BT A2DP Out" sources="primary output,deep_buffer,compressed_offload,voip_rx"/> <route type="mix" sink="BT A2DP Headphones" sources="primary output,deep_buffer,compressed_offload,voip_rx"/> <route type="mix" sink="BT A2DP Speaker" sources="primary output,deep_buffer,compressed_offload,voip_rx"/> </routes> </module> <!-- A2DP Input Audio HAL --> <module name="a2dp" halVersion="2.0"> <mixPorts> <mixPort name="a2dp input" role="sink"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> </mixPort> </mixPorts> <devicePorts> <devicePort tagName="BT A2DP In" type="AUDIO_DEVICE_IN_BLUETOOTH_A2DP" role="source"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/> </devicePort> </devicePorts> <routes> <route type="mix" sink="a2dp input" sources="BT A2DP In"/> </routes> </module> <!-- Usb Audio HAL --> <module name="usb" halVersion="2.0"> <mixPorts> <mixPort name="usb_accessory output" role="source"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </mixPort> </mixPorts> <devicePorts> <devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink"> <profile name="" format="AUDIO_FORMAT_PCM_16_BIT" samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/> </devicePort> </devicePorts> <routes> <route type="mix" sink="USB Host Out" sources="usb_accessory output"/> </routes> </module> <!-- Remote Submix Audio HAL --> <xi:include href="r_submix_audio_policy_configuration.xml"/> </modules> <!-- End of Modules section --> <!-- Volume section --> <xi:include href="audio_policy_volumes.xml"/> <xi:include href="default_volume_tables.xml"/> <!-- End of Volume section --> </audioPolicyConfiguration> 以上文件位于:vendor/etc/audio_policy_configuration.xml 一加13 coloros15,修改该文件,绕过安卓音频src实现系统全局自适应采样率、自适应位深(16bit、24bit、32bit齐全,并保持音频文件原始位深)、禁用升频和重采样,关闭所有音频音效(effect)以及影响音频质量无损输出的一切音频处理,并且最大程度上抑制降低音频抖动(jitter)、音频失真和噪声、电源噪声,以输出最干净最高质量的hifi无损原始音频信号直出,输出修改过的完整文件
08-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值