<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.fanfou.dev/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Fanfou Wiki - program</title>
        <description>我等采石之人，当心怀建造大教堂之愿景。</description>
        <link>https://wiki.fanfou.dev/</link>
        <lastBuildDate>Thu, 30 Apr 2026 07:03:46 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wiki.fanfou.dev/lib/exe/fetch.php/wiki:dokuwiki.svg</url>
            <title>Fanfou Wiki</title>
            <link>https://wiki.fanfou.dev/</link>
        </image>
        <item>
            <title>Chart</title>
            <link>https://wiki.fanfou.dev/doku.php/program:chart</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;chart&quot;&gt;Chart&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Chart&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;chart&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-20&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ant-design-charts&quot;&gt;Ant Design Charts&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://g2.antv.vision/zh&quot; class=&quot;urlextern&quot; target=&quot;_balnk&quot; title=&quot;https://g2.antv.vision/zh&quot; rel=&quot;ugc nofollow noopener&quot;&gt;G2&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ant Design Charts&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ant-design-charts&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;21-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 21 Dec 2020 05:32:07 +0000</pubDate>
        </item>
        <item>
            <title>项目开发环境递进</title>
            <link>https://wiki.fanfou.dev/doku.php/program:develop</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;项目开发环境递进&quot;&gt;项目开发环境递进&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;div id='plant-uml-diagram-15ee9ad0a26aa66b0f48afc63a44d3392cecbd8b'&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; contentStyleType=&quot;text/css&quot; height=&quot;563px&quot; preserveAspectRatio=&quot;none&quot; style=&quot;width:210px;height:563px;background:#FFFFFF;&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 210 563&quot; width=&quot;210px&quot; zoomAndPan=&quot;magnify&quot;&gt;&lt;defs/&gt;&lt;g&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;14&quot; font-weight=&quot;bold&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;112&quot; x=&quot;47.5&quot; y=&quot;32.9951&quot;&gt;&amp;#39033;&amp;#30446;&amp;#24320;&amp;#21457;&amp;#29615;&amp;#22659;&amp;#36882;&amp;#36827;&lt;/text&gt;&lt;ellipse cx=&quot;164.5&quot; cy=&quot;57.2969&quot; fill=&quot;#222222&quot; rx=&quot;10&quot; ry=&quot;10&quot; style=&quot;stroke:#222222;stroke-width:1.0;&quot;/&gt;&lt;rect fill=&quot;none&quot; height=&quot;136.2344&quot; style=&quot;stroke:#000000;stroke-width:1.5;&quot; width=&quot;188&quot; x=&quot;11&quot; y=&quot;77.2969&quot;/&gt;&lt;path d=&quot;M77,77.2969 L77,86.5938 L67,96.5938 L11,96.5938 &quot; fill=&quot;none&quot; style=&quot;stroke:#000000;stroke-width:1.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;14&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;56&quot; x=&quot;14&quot; y=&quot;91.292&quot;&gt;&amp;#24320;&amp;#21457;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;path d=&quot;M21,118.0117 L21,143.1445 A0,0 0 0 0 21,143.1445 L120,143.1445 A0,0 0 0 0 120,143.1445 L120,136.0117 L140,130.5781 L120,128.0117 L120,128.0117 L110,118.0117 L21,118.0117 A0,0 0 0 0 21,118.0117 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;path d=&quot;M110,118.0117 L110,128.0117 L120,128.0117 L110,118.0117 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;13&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;78&quot; x=&quot;27&quot; y=&quot;135.0786&quot;&gt;&amp;#26412;&amp;#22320;&amp;#24320;&amp;#21457;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;rect fill=&quot;#F1F1F1&quot; height=&quot;33.9688&quot; rx=&quot;12.5&quot; ry=&quot;12.5&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot; width=&quot;49&quot; x=&quot;140&quot; y=&quot;113.5938&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;12&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;29&quot; x=&quot;150&quot; y=&quot;134.7324&quot;&gt;local&lt;/text&gt;&lt;path d=&quot;M24.5,171.9805 L24.5,197.1133 A0,0 0 0 0 24.5,197.1133 L123.5,197.1133 A0,0 0 0 0 123.5,197.1133 L123.5,189.9805 L143.5,184.5469 L123.5,181.9805 L123.5,181.9805 L113.5,171.9805 L24.5,171.9805 A0,0 0 0 0 24.5,171.9805 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;path d=&quot;M113.5,171.9805 L113.5,181.9805 L123.5,181.9805 L113.5,171.9805 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;13&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;78&quot; x=&quot;30.5&quot; y=&quot;189.0474&quot;&gt;&amp;#24320;&amp;#21457;&amp;#32852;&amp;#35843;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;rect fill=&quot;#F1F1F1&quot; height=&quot;33.9688&quot; rx=&quot;12.5&quot; ry=&quot;12.5&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot; width=&quot;42&quot; x=&quot;143.5&quot; y=&quot;167.5625&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;12&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;22&quot; x=&quot;153.5&quot; y=&quot;188.7012&quot;&gt;dev&lt;/text&gt;&lt;rect fill=&quot;none&quot; height=&quot;136.2344&quot; style=&quot;stroke:#000000;stroke-width:1.5;&quot; width=&quot;174&quot; x=&quot;23&quot; y=&quot;223.5313&quot;/&gt;&lt;path d=&quot;M89,223.5313 L89,232.8281 L79,242.8281 L23,242.8281 &quot; fill=&quot;none&quot; style=&quot;stroke:#000000;stroke-width:1.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;14&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;56&quot; x=&quot;26&quot; y=&quot;237.5264&quot;&gt;&amp;#27979;&amp;#35797;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;path d=&quot;M33,264.2461 L33,289.3789 A0,0 0 0 0 33,289.3789 L122,289.3789 A0,0 0 0 0 122,289.3789 L122,282.2461 L142,276.8125 L122,274.2461 L122,274.2461 L112,264.2461 L33,264.2461 A0,0 0 0 0 33,264.2461 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;path d=&quot;M112,264.2461 L112,274.2461 L122,274.2461 L112,264.2461 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;13&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;52&quot; x=&quot;39&quot; y=&quot;281.313&quot;&gt;&amp;#27979;&amp;#35797;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;rect fill=&quot;#F1F1F1&quot; height=&quot;33.9688&quot; rx=&quot;12.5&quot; ry=&quot;12.5&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot; width=&quot;45&quot; x=&quot;142&quot; y=&quot;259.8281&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;12&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;25&quot; x=&quot;152&quot; y=&quot;280.9668&quot;&gt;test&lt;/text&gt;&lt;path d=&quot;M51.5,318.2148 L51.5,343.3477 A0,0 0 0 0 51.5,343.3477 L124.5,343.3477 A0,0 0 0 0 124.5,343.3477 L124.5,336.2148 L144.5,330.7813 L124.5,328.2148 L124.5,328.2148 L114.5,318.2148 L51.5,318.2148 A0,0 0 0 0 51.5,318.2148 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;path d=&quot;M114.5,318.2148 L114.5,328.2148 L124.5,328.2148 L114.5,318.2148 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;13&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;52&quot; x=&quot;57.5&quot; y=&quot;335.2817&quot;&gt;&amp;#38598;&amp;#25104;&amp;#27979;&amp;#35797;&lt;/text&gt;&lt;rect fill=&quot;#F1F1F1&quot; height=&quot;33.9688&quot; rx=&quot;12.5&quot; ry=&quot;12.5&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot; width=&quot;40&quot; x=&quot;144.5&quot; y=&quot;313.7969&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;12&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;20&quot; x=&quot;154.5&quot; y=&quot;334.9355&quot;&gt;stg&lt;/text&gt;&lt;rect fill=&quot;none&quot; height=&quot;142.3828&quot; style=&quot;stroke:#000000;stroke-width:1.5;&quot; width=&quot;171&quot; x=&quot;28&quot; y=&quot;369.7656&quot;/&gt;&lt;path d=&quot;M94,369.7656 L94,379.0625 L84,389.0625 L28,389.0625 &quot; fill=&quot;none&quot; style=&quot;stroke:#000000;stroke-width:1.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;14&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;56&quot; x=&quot;31&quot; y=&quot;383.7607&quot;&gt;&amp;#32447;&amp;#19978;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;path d=&quot;M38,405.9141 L38,446.1797 A0,0 0 0 0 38,446.1797 L124,446.1797 A0,0 0 0 0 124,446.1797 L124,430.0469 L144,426.0469 L124,422.0469 L124,415.9141 L114,405.9141 L38,405.9141 A0,0 0 0 0 38,405.9141 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;path d=&quot;M114,405.9141 L114,415.9141 L124,415.9141 L114,405.9141 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;13&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;65&quot; x=&quot;44&quot; y=&quot;422.981&quot;&gt;&amp;#39044;&amp;#21457;&amp;#24067;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;13&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;52&quot; x=&quot;44&quot; y=&quot;438.1138&quot;&gt;&amp;#28784;&amp;#24230;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;rect fill=&quot;#F1F1F1&quot; height=&quot;33.9688&quot; rx=&quot;12.5&quot; ry=&quot;12.5&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot; width=&quot;41&quot; x=&quot;144&quot; y=&quot;409.0625&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;12&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;21&quot; x=&quot;154&quot; y=&quot;430.2012&quot;&gt;pre&lt;/text&gt;&lt;path d=&quot;M47,470.5977 L47,495.7305 A0,0 0 0 0 47,495.7305 L120,495.7305 A0,0 0 0 0 120,495.7305 L120,488.5977 L140,483.1641 L120,480.5977 L120,480.5977 L110,470.5977 L47,470.5977 A0,0 0 0 0 47,470.5977 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;path d=&quot;M110,470.5977 L110,480.5977 L120,480.5977 L110,470.5977 &quot; fill=&quot;#FEFFDD&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;13&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;52&quot; x=&quot;53&quot; y=&quot;487.6646&quot;&gt;&amp;#32447;&amp;#19978;&amp;#29615;&amp;#22659;&lt;/text&gt;&lt;rect fill=&quot;#F1F1F1&quot; height=&quot;33.9688&quot; rx=&quot;12.5&quot; ry=&quot;12.5&quot; style=&quot;stroke:#181818;stroke-width:0.5;&quot; width=&quot;49&quot; x=&quot;140&quot; y=&quot;466.1797&quot;/&gt;&lt;text fill=&quot;#000000&quot; font-family=&quot;sans-serif&quot; font-size=&quot;12&quot; lengthAdjust=&quot;spacing&quot; textLength=&quot;29&quot; x=&quot;150&quot; y=&quot;487.3184&quot;&gt;prod&lt;/text&gt;&lt;ellipse cx=&quot;164.5&quot; cy=&quot;542.1484&quot; fill=&quot;none&quot; rx=&quot;10&quot; ry=&quot;10&quot; style=&quot;stroke:#222222;stroke-width:1.5;&quot;/&gt;&lt;line style=&quot;stroke:#222222;stroke-width:2.5;&quot; x1=&quot;158.3128&quot; x2=&quot;170.6872&quot; y1=&quot;535.9613&quot; y2=&quot;548.3356&quot;/&gt;&lt;line style=&quot;stroke:#222222;stroke-width:2.5;&quot; x1=&quot;170.6872&quot; x2=&quot;158.3128&quot; y1=&quot;535.9613&quot; y2=&quot;548.3356&quot;/&gt;&lt;line style=&quot;stroke:#181818;stroke-width:1.0;&quot; x1=&quot;164.5&quot; x2=&quot;164.5&quot; y1=&quot;147.5625&quot; y2=&quot;167.5625&quot;/&gt;&lt;polygon fill=&quot;#181818&quot; points=&quot;160.5,157.5625,164.5,167.5625,168.5,157.5625,164.5,161.5625&quot; style=&quot;stroke:#181818;stroke-width:1.0;&quot;/&gt;&lt;line style=&quot;stroke:#181818;stroke-width:1.0;&quot; x1=&quot;164.5&quot; x2=&quot;164.5&quot; y1=&quot;67.2969&quot; y2=&quot;113.5938&quot;/&gt;&lt;polygon fill=&quot;#181818&quot; points=&quot;160.5,103.5938,164.5,113.5938,168.5,103.5938,164.5,107.5938&quot; style=&quot;stroke:#181818;stroke-width:1.0;&quot;/&gt;&lt;line style=&quot;stroke:#181818;stroke-width:1.0;&quot; x1=&quot;164.5&quot; x2=&quot;164.5&quot; y1=&quot;293.7969&quot; y2=&quot;313.7969&quot;/&gt;&lt;polygon fill=&quot;#181818&quot; points=&quot;160.5,303.7969,164.5,313.7969,168.5,303.7969,164.5,307.7969&quot; style=&quot;stroke:#181818;stroke-width:1.0;&quot;/&gt;&lt;line style=&quot;stroke:#181818;stroke-width:1.0;&quot; x1=&quot;164.5&quot; x2=&quot;164.5&quot; y1=&quot;201.5313&quot; y2=&quot;259.8281&quot;/&gt;&lt;polygon fill=&quot;#181818&quot; points=&quot;160.5,249.8281,164.5,259.8281,168.5,249.8281,164.5,253.8281&quot; style=&quot;stroke:#181818;stroke-width:1.0;&quot;/&gt;&lt;line style=&quot;stroke:#181818;stroke-width:1.0;&quot; x1=&quot;164.5&quot; x2=&quot;164.5&quot; y1=&quot;443.0313&quot; y2=&quot;466.1797&quot;/&gt;&lt;polygon fill=&quot;#181818&quot; points=&quot;160.5,456.1797,164.5,466.1797,168.5,456.1797,164.5,460.1797&quot; style=&quot;stroke:#181818;stroke-width:1.0;&quot;/&gt;&lt;line style=&quot;stroke:#181818;stroke-width:1.0;&quot; x1=&quot;164.5&quot; x2=&quot;164.5&quot; y1=&quot;347.7656&quot; y2=&quot;409.0625&quot;/&gt;&lt;polygon fill=&quot;#181818&quot; points=&quot;160.5,399.0625,164.5,409.0625,168.5,399.0625,164.5,403.0625&quot; style=&quot;stroke:#181818;stroke-width:1.0;&quot;/&gt;&lt;line style=&quot;stroke:#181818;stroke-width:1.0;&quot; x1=&quot;164.5&quot; x2=&quot;164.5&quot; y1=&quot;500.1484&quot; y2=&quot;532.1484&quot;/&gt;&lt;polygon fill=&quot;#181818&quot; points=&quot;160.5,522.1484,164.5,532.1484,168.5,522.1484,164.5,526.1484&quot; style=&quot;stroke:#181818;stroke-width:1.0;&quot;/&gt;&lt;!--SRC=[AyaioKbLUBbmv_FPwvxkQNZQF_5vt_gdYvfVDanwiN-s0XTNSKbYKGaNLm6Gp2p9pCzJG5QbKCsb00HMEVd9YJdMO7PUVacgGavgMWcO1mBFvgnvEcS3iZQmL6fU2bWn5yI8bDGoN0P0jBvedF9YGpCs0sgHdVTiQ_UBzLDHdLUIMbo2qtN8we40czkAIz9nQNyvk-rPnmI88NXSzNpN_YSxkb1TLL2KYjFKHIr07p_TWUnT47ZUkE7fhcMu0x6WA3y5bvd8Ji1mAP0D0000]--&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div id=&quot;plantumlparse_link_section&quot;&gt;&lt;a target='_blank' href='https://www.plantuml.com/plantuml/svg/ut8eBaaiAYdDpU4goIp9ILLukN3dyzdhdkvfUDe_yNdV-gUBcbysJ7gnVxO25nTO9HTN0P3CBCdCprD0LgLGpQK015Ov-Sc9ETPWTbv-IQf2JcfQ2PW70i_ch7awPmEoDh1KQbuAM34Nn8YKr39S1a2qlcYSyc93CpO3Qf6TzsnhzulrKr6TLv9QN8BJTSZgWG2RsufBqd5fVpcxxLd718WXU5prVDV-9pkwK5rLK9IAqzH5BK0VFzs1x5qGUDwuuUckPRW3iQ0eFmMNcSXEm70faCtb02H0IG80'&gt;SVG&lt;/a&gt; | &lt;a target='_blank' href='https://www.plantuml.com/plantuml/png/ut8eBaaiAYdDpU4goIp9ILLukN3dyzdhdkvfUDe_yNdV-gUBcbysJ7gnVxO25nTO9HTN0P3CBCdCprD0LgLGpQK015Ov-Sc9ETPWTbv-IQf2JcfQ2PW70i_ch7awPmEoDh1KQbuAM34Nn8YKr39S1a2qlcYSyc93CpO3Qf6TzsnhzulrKr6TLv9QN8BJTSZgWG2RsufBqd5fVpcxxLd718WXU5prVDV-9pkwK5rLK9IAqzH5BK0VFzs1x5qGUDwuuUckPRW3iQ0eFmMNcSXEm70faCtb02H0IG80'&gt;PNG&lt;/a&gt; | &lt;a target='_blank' href='https://www.plantuml.com/plantuml/txt/ut8eBaaiAYdDpU4goIp9ILLukN3dyzdhdkvfUDe_yNdV-gUBcbysJ7gnVxO25nTO9HTN0P3CBCdCprD0LgLGpQK015Ov-Sc9ETPWTbv-IQf2JcfQ2PW70i_ch7awPmEoDh1KQbuAM34Nn8YKr39S1a2qlcYSyc93CpO3Qf6TzsnhzulrKr6TLv9QN8BJTSZgWG2RsufBqd5fVpcxxLd718WXU5prVDV-9pkwK5rLK9IAqzH5BK0VFzs1x5qGUDwuuUckPRW3iQ0eFmMNcSXEm70faCtb02H0IG80'&gt;TXT&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Dec 2020 13:08:49 +0000</pubDate>
        </item>
        <item>
            <title>EditorConfig</title>
            <link>https://wiki.fanfou.dev/doku.php/program:editorconfig</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;editorconfig&quot;&gt;EditorConfig&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://editorconfig.org&quot; class=&quot;urlextern&quot; target=&quot;_balnk&quot; title=&quot;https://editorconfig.org&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Homepage&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;EditorConfig&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;editorconfig&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-66&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;配置文件&quot;&gt;配置文件&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wiki.fanfou.dev/doku.php/program:editorconfig?do=export_code&amp;amp;codeblock=0&quot; title=&quot;下载片段&quot; class=&quot;mediafile mf_editorconfig&quot;&gt;.editorconfig&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file ini&quot;&gt;# https://editorconfig.org
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; true&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;*&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;charset&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; utf-8&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;indent_style&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; space&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;indent_size&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 4&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;end_of_line&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; lf&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;trim_trailing_whitespace&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; true&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;insert_final_newline&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; true&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;*.&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;js,html&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;indent_size&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 2&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;*.&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;yaml,yml&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;indent_size&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 2&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u914d\u7f6e\u6587\u4ef6&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u914d\u7f6e\u6587\u4ef6&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;67-364&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;配置说明&quot;&gt;配置说明&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code ini&quot;&gt;# 表明这是最顶层的配置文件，这样才会停止继续向上查找 .editorconfig 文件；
# 查找的 .editorconfig 文件是从顶层开始读取的，类似变量作用域的效果，内部
# 的 .editorconfig 文件属性优先级更高
&lt;span class=&quot;re1&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; true&lt;/span&gt;
&amp;nbsp;
# 指定作用文件格式
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;*&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
# 缩进的类型 &lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;space | tab&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;indent_style&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; space&lt;/span&gt;
&amp;nbsp;
# 缩进的大小
# tab_width: 设置整数用于指定替代tab的列数。默认值就是indent_size的值，一般无需指定。
&lt;span class=&quot;re1&quot;&gt;indent_size&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 4&lt;/span&gt;
&amp;nbsp;
# 定义换行符 &lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;lf | cr | crlf&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;end_of_line&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; lf&lt;/span&gt;
&amp;nbsp;
# 编码格式。支持latin1、utf-&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;、utf-&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;-bom、utf-16be和utf-16le，不建议使用uft-&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;-bom。
&lt;span class=&quot;re1&quot;&gt;charset&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; utf-8&lt;/span&gt;
&amp;nbsp;
# 是否除去换行行首的任意空白字符
&lt;span class=&quot;re1&quot;&gt;trim_trailing_whitespace&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; true&lt;/span&gt;
&amp;nbsp;
# 文件是否以一个空白行结尾 &lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;true | false&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;insert_final_newline&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; true&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;*.&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;js,html&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;indent_size&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 2&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;*.&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;yaml,yml&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;indent_size&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 2&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u914d\u7f6e\u8bf4\u660e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u914d\u7f6e\u8bf4\u660e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;365-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 24 Dec 2020 02:31:09 +0000</pubDate>
        </item>
        <item>
            <title>ELK</title>
            <link>https://wiki.fanfou.dev/doku.php/program:elk</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;elk&quot;&gt;ELK&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.fanfou.dev/lib/exe/fetch.php/program:1592295103062-1a5b2c1a-dcc2-49e3-9240-8bbfc1557fdb.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
图片来源：&lt;a href=&quot;https://ops-coffee.cn/elk&quot; class=&quot;urlextern&quot; target=&quot;_balnk&quot; title=&quot;https://ops-coffee.cn/elk&quot; rel=&quot;ugc nofollow noopener&quot;&gt;运维咖啡吧&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
E：Elasticsearch&lt;br/&gt;
L：Logstash&lt;br/&gt;
K：Kibana  
&lt;/p&gt;

&lt;h2 class=&quot;sectionedit2&quot; id=&quot;elasticsearch&quot;&gt;Elasticsearch&lt;/h2&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;

&lt;p&gt;
Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎，具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的，并在Apache许可证下作为开源软件发布。
&lt;a href=&quot;https://zh.wikipedia.org/wiki/Elasticsearch&quot; class=&quot;urlextern&quot; target=&quot;_balnk&quot; title=&quot;https://zh.wikipedia.org/wiki/Elasticsearch&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://zh.wikipedia.org/wiki/Elasticsearch&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Elasticsearch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;elasticsearch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;--1&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;logstash&quot;&gt;Logstash&lt;/h2&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;

&lt;p&gt;
集中、转换和存储数据
Logstash 是免费且开放的服务器端数据处理管道，能够从多个来源采集数据，转换数据，然后将数据发送到您最喜欢的“存储库”中。
&lt;a href=&quot;https://www.elastic.co/cn/logstash&quot; class=&quot;urlextern&quot; target=&quot;_balnk&quot; title=&quot;https://www.elastic.co/cn/logstash&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.elastic.co/cn/logstash&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logstash&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logstash&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;--1&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;kibana&quot;&gt;Kibana&lt;/h2&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;

&lt;p&gt;
通过 Kibana，您可以对自己的 Elasticsearch 进行可视化，还可以在 Elastic Stack 中进行导航，这样您便可以进行各种操作了，从跟踪查询负载，到理解请求如何流经您的整个应用，都能轻松完成。
&lt;a href=&quot;https://www.elastic.co/cn/kibana&quot; class=&quot;urlextern&quot; target=&quot;_balnk&quot; title=&quot;https://www.elastic.co/cn/kibana&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.elastic.co/cn/kibana&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 26 Dec 2020 01:53:37 +0000</pubDate>
        </item>
        <item>
            <title>Kafka</title>
            <link>https://wiki.fanfou.dev/doku.php/program:kafka</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;kafka&quot;&gt;Kafka&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.fanfou.dev/lib/exe/fetch.php/program:kafka%E6%9E%B6%E6%9E%84%E5%9B%BE1.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Jan 2021 01:49:59 +0000</pubDate>
        </item>
        <item>
            <title>Language</title>
            <link>https://wiki.fanfou.dev/doku.php/program:language</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;language&quot;&gt;Language&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
JavaScript&lt;br/&gt;

TypeScipt&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
PHP&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Java&lt;br/&gt;

Kotlin&lt;br/&gt;

Scala&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Python&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Rust&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 10 Feb 2021 02:17:46 +0000</pubDate>
        </item>
        <item>
            <title>SSO</title>
            <link>https://wiki.fanfou.dev/doku.php/program:sso</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sso&quot;&gt;SSO&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;h2 class=&quot;sectionedit2&quot; id=&quot;cas-规范&quot;&gt;CAS 规范&lt;/h2&gt;

&lt;p&gt;
&lt;a href=&quot;https://apereo.github.io/cas/development/protocol/CAS-Protocol-Specification.html&quot; class=&quot;urlextern&quot; target=&quot;_balnk&quot; title=&quot;https://apereo.github.io/cas/development/protocol/CAS-Protocol-Specification.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;CAS - CAS Protocol Specification&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.notion.so/CAS-Protocol-Specification-8491cce5c32440888c79d88324e49879&quot; class=&quot;urlextern&quot; target=&quot;_balnk&quot; title=&quot;https://www.notion.so/CAS-Protocol-Specification-8491cce5c32440888c79d88324e49879&quot; rel=&quot;ugc nofollow noopener&quot;&gt;CAS-Protocol-Specification&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 21 Dec 2020 04:56:26 +0000</pubDate>
        </item>
    </channel>
</rss>
