q78kgblog 0.0.0-1727355622888 → 0.0.0-1727357319192

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/404.html +8 -8
  2. package/about/index.html +9 -9
  3. package/archives/2023/02/index.html +8 -8
  4. package/archives/2023/04/index.html +8 -8
  5. package/archives/2023/05/index.html +8 -8
  6. package/archives/2023/08/index.html +8 -8
  7. package/archives/2023/09/index.html +8 -8
  8. package/archives/2023/index.html +8 -8
  9. package/archives/2024/01/index.html +8 -8
  10. package/archives/2024/02/index.html +8 -8
  11. package/archives/2024/index.html +8 -8
  12. package/archives/index.html +8 -8
  13. package/atom.xml +11 -11
  14. package/bangumis/index.html +8 -8
  15. package/bigpie/index.html +6 -6
  16. package/categories/Hexo/index.html +8 -8
  17. package/categories/index.html +6 -6
  18. package/categories//345/271/264/347/273/210/346/200/273/347/273/223/index.html +8 -8
  19. package/categories//347/264/240/346/235/220/index.html +8 -8
  20. package/categories//351/227/262/350/201/212/346/235/202/350/260/210/index.html +8 -8
  21. package/content.json +1 -1
  22. package/css/ariasakablog.css +1 -1
  23. package/css/essay.css +1 -1
  24. package/fcircle/index.html +6 -6
  25. package/fontawesome/index.html +6 -6
  26. package/index.html +16 -16
  27. package/links/index.html +8 -8
  28. package/othersite/index.html +6 -6
  29. package/package.json +1 -1
  30. package/people.html +1 -1
  31. package/posts/164ef646/index.html +10 -10
  32. package/posts/228c2ef8/index.html +10 -10
  33. package/posts/a9a6c1fb/index.html +10 -10
  34. package/posts/c262e439/index.html +10 -10
  35. package/posts/c81531cf/index.html +10 -10
  36. package/posts/ccdf7cfc/index.html +11 -11
  37. package/posts/de1f83f4/index.html +10 -10
  38. package/posts/e54f7476/index.html +23 -23
  39. package/random.html +2 -2
  40. package/search.xml +2 -2
  41. package/sitemap.txt +2 -2
  42. package/sitemap.xml +5 -5
  43. package/tags/AI/index.html +9 -9
  44. package/tags/Butterfly/index.html +9 -9
  45. package/tags/Cloudflare/index.html +9 -9
  46. package/tags/DiffSinger/index.html +9 -9
  47. package/tags/Hexo/index.html +9 -9
  48. package/tags/Next/index.html +9 -9
  49. package/tags/RAID/index.html +9 -9
  50. package/tags/Vercel/index.html +9 -9
  51. package/tags/Workers/index.html +9 -9
  52. package/tags/index.html +6 -6
  53. package/tags//344/270/273/351/242/230/index.html +9 -9
  54. package/tags//345/206/231/344/275/234/index.html +9 -9
  55. package/tags//345/245/263/346/200/247/346/204/217/350/257/206/index.html +9 -9
  56. package/tags//345/255/246/344/271/240/index.html +9 -9
  57. package/tags//345/256/266/351/207/214/344/272/221/index.html +9 -9
  58. package/tags//345/271/264/347/273/210/346/200/273/347/273/223/index.html +9 -9
  59. package/tags//346/212/230/350/205/276/index.html +9 -9
  60. package/tags//346/227/245/345/270/270/index.html +9 -9
  61. package/tags//346/234/215/345/212/241/345/231/250/index.html +9 -9
  62. package/tags//346/265/252/346/275/256/index.html +9 -9
  63. package/tags//347/256/200/347/210/261/index.html +9 -9
  64. package/tags//350/207/252/345/212/250/346/240/207/346/263/250/index.html +9 -9
  65. package/tags//350/256/272/346/226/207/index.html +9 -9
  66. package/tags//350/260/267/346/255/214/347/277/273/350/257/221/index.html +9 -9
  67. package/tags//350/264/237/350/275/275/345/235/207/350/241/241/index.html +9 -9
  68. package/tags//351/207/221/345/217/245/index.html +9 -9
  69. package/tags//351/255/224/346/224/271/index.html +9 -9
package/search.xml CHANGED
@@ -97,7 +97,7 @@
97
97
  <link href="/posts/ccdf7cfc/"/>
98
98
  <url>/posts/ccdf7cfc/</url>
99
99
 
100
- <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h2 id="事情起因"><a class="markdownIt-Anchor" href="#事情起因"></a> 事情起因</h2><p>这两天,把我的某个网站的评论系统换成了twikoo,过了几天一看,因为网站访问量比较高(日2k+),vercel的云函数使用量直接爆炸</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/6f3c565b/1.webp" alt="" /><br />我这一想,嘶~这到时候vercel给我封了咋整。随即,我就开始查找相关负载均衡的资料。因为我之前完全没有做过这方面的功课,所以光是查资料就用了半天。瞎找半天,发现结果cloudflare支持基于dns的负载均衡方案,但是我定睛一看,只有A记录和AAAA记录支持,各种云函数平台基本上都是cname的,这可难办啊。</p><p>再看Cloudflare的动态负载均衡方案,5刀,死贵,当即放弃。</p><h2 id="一线曙光"><a class="markdownIt-Anchor" href="#一线曙光"></a> 一线曙光</h2><p>当我在吃饭的时候,突然想到Cloudflare有Workers这个功能,那我是不是可以去薅cf的羊毛呢?</p><p>Cloudflare Workers每天有100k次的请求次数,对于我这种每天全站最大请求次数只有31k的小站足够了,何况我目前要分流的仅仅是一个twikoo!</p><h2 id="解决方案"><a class="markdownIt-Anchor" href="#解决方案"></a> 解决方案</h2><p>于是乎,我当即就让一个朋友<del>(无中生友)</del>帮我写了Workers代码。这个代码能够将发送到Workers的流量根据权重分流到不同的url。(是的你没听错,它甚至支持配置权重!)</p><p>下面是完整代码</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 要分流的url,支持添加多条url</span></span><br><span class="line"><span class="keyword">const</span> <span class="variable constant_">TARGETS</span> = [<span class="string">&quot;https://example1.com&quot;</span>, <span class="string">&quot;https://example2.com&quot;</span>]</span><br><span class="line"><span class="comment">// url权重,数字一样就是对半分</span></span><br><span class="line"><span class="keyword">const</span> <span class="variable constant_">WEIGHTS</span> = [<span class="number">5</span>, <span class="number">5</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">handleRequest</span>(<span class="params">request</span>) &#123;</span><br><span class="line"> <span class="keyword">let</span> random = <span class="title class_">Math</span>.<span class="title function_">random</span>()</span><br><span class="line"> <span class="keyword">let</span> sum = <span class="variable constant_">WEIGHTS</span>.<span class="title function_">reduce</span>(<span class="function">(<span class="params">a, b</span>) =&gt;</span> a + b, <span class="number">0</span>)</span><br><span class="line"> random = random * sum</span><br><span class="line"> <span class="keyword">let</span> target = <span class="literal">null</span></span><br><span class="line"> <span class="keyword">let</span> acc = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">let</span> i = <span class="number">0</span>; i &lt; <span class="variable constant_">TARGETS</span>.<span class="property">length</span>; i++) &#123;</span><br><span class="line"> acc += <span class="variable constant_">WEIGHTS</span>[i]</span><br><span class="line"> <span class="keyword">if</span> (random &lt; acc) &#123;</span><br><span class="line"> target = <span class="variable constant_">TARGETS</span>[i]</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> <span class="keyword">let</span> url = <span class="keyword">new</span> <span class="title function_">URL</span>(request.<span class="property">url</span>)</span><br><span class="line"> <span class="keyword">let</span> targetUrl = <span class="keyword">new</span> <span class="title function_">URL</span>(target)</span><br><span class="line"> url.<span class="property">protocol</span> = targetUrl.<span class="property">protocol</span></span><br><span class="line"> url.<span class="property">hostname</span> = targetUrl.<span class="property">hostname</span></span><br><span class="line"> url.<span class="property">pathname</span> = targetUrl.<span class="property">pathname</span></span><br><span class="line"> url.<span class="property">search</span> = targetUrl.<span class="property">search</span></span><br><span class="line"> url.<span class="property">hash</span> = targetUrl.<span class="property">hash</span></span><br><span class="line"> <span class="keyword">let</span> newRequest = <span class="keyword">new</span> <span class="title class_">Request</span>(url, request)</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">await</span> <span class="title function_">fetch</span>(newRequest)</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="title function_">addEventListener</span>(<span class="string">&quot;fetch&quot;</span>, <span class="function"><span class="params">event</span> =&gt;</span> &#123;</span><br><span class="line"> event.<span class="title function_">respondWith</span>(<span class="title function_">handleRequest</span>(event.<span class="property">request</span>))</span><br><span class="line">&#125;)</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
100
+ <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h2 id="事情起因"><a class="markdownIt-Anchor" href="#事情起因"></a> 事情起因</h2><p>这两天,把我的某个网站的评论系统换成了twikoo,过了几天一看,因为网站访问量比较高(日2k+),vercel的云函数使用量直接爆炸</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/6f3c565b/1.webp" alt="" /><br />我这一想,嘶~这到时候vercel给我封了咋整。随即,我就开始查找相关负载均衡的资料。因为我之前完全没有做过这方面的功课,所以光是查资料就用了半天。瞎找半天,发现结果cloudflare支持基于dns的负载均衡方案,但是我定睛一看,只有A记录和AAAA记录支持,各种云函数平台基本上都是cname的,这可难办啊。</p><p>再看Cloudflare的动态负载均衡方案,5刀,死贵,当即放弃。</p><h2 id="一线曙光"><a class="markdownIt-Anchor" href="#一线曙光"></a> 一线曙光</h2><p>当我在吃饭的时候,突然想到Cloudflare有Workers这个功能,那我是不是可以去薅cf的羊毛呢?</p><p>Cloudflare Workers每天有100k次的请求次数,对于我这种每天全站最大请求次数只有31k的小站足够了,何况我目前要分流的仅仅是一个twikoo!</p><h2 id="解决方案"><a class="markdownIt-Anchor" href="#解决方案"></a> 解决方案</h2><p>于是乎,我当即就让一个朋友<del>(无中生友)</del>帮我写了Workers代码。这个代码能够将发送到Workers的流量根据权重分流到不同的url。(是的你没听错,它甚至支持配置权重!)</p><p>下面是完整代码</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 要分流的url,支持添加多条url</span></span><br><span class="line"><span class="keyword">const</span> <span class="variable constant_">TARGETS</span> = [<span class="string">&quot;https://example1.com&quot;</span>, <span class="string">&quot;https://example2.com&quot;</span>]</span><br><span class="line"><span class="comment">// url权重,数字一样就是对半分</span></span><br><span class="line"><span class="keyword">const</span> <span class="variable constant_">WEIGHTS</span> = [<span class="number">5</span>, <span class="number">5</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">handleRequest</span>(<span class="params">request</span>) &#123;</span><br><span class="line"> <span class="keyword">let</span> random = <span class="title class_">Math</span>.<span class="title function_">random</span>()</span><br><span class="line"> <span class="keyword">let</span> sum = <span class="variable constant_">WEIGHTS</span>.<span class="title function_">reduce</span>(<span class="function">(<span class="params">a, b</span>) =&gt;</span> a + b, <span class="number">0</span>)</span><br><span class="line"> random = random * sum</span><br><span class="line"> <span class="keyword">let</span> target = <span class="literal">null</span></span><br><span class="line"> <span class="keyword">let</span> acc = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">let</span> i = <span class="number">0</span>; i &lt; <span class="variable constant_">TARGETS</span>.<span class="property">length</span>; i++) &#123;</span><br><span class="line"> acc += <span class="variable constant_">WEIGHTS</span>[i]</span><br><span class="line"> <span class="keyword">if</span> (random &lt; acc) &#123;</span><br><span class="line"> target = <span class="variable constant_">TARGETS</span>[i]</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> <span class="keyword">let</span> url = <span class="keyword">new</span> <span class="title function_">URL</span>(request.<span class="property">url</span>)</span><br><span class="line"> <span class="keyword">let</span> targetUrl = <span class="keyword">new</span> <span class="title function_">URL</span>(target)</span><br><span class="line"> url.<span class="property">protocol</span> = targetUrl.<span class="property">protocol</span></span><br><span class="line"> url.<span class="property">hostname</span> = targetUrl.<span class="property">hostname</span></span><br><span class="line"> url.<span class="property">pathname</span> = targetUrl.<span class="property">pathname</span></span><br><span class="line"> url.<span class="property">search</span> = targetUrl.<span class="property">search</span></span><br><span class="line"> url.<span class="property">hash</span> = targetUrl.<span class="property">hash</span></span><br><span class="line"> <span class="keyword">let</span> newRequest = <span class="keyword">new</span> <span class="title class_">Request</span>(url, request)</span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">await</span> <span class="title function_">fetch</span>(newRequest)</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="title function_">addEventListener</span>(<span class="string">&quot;fetch&quot;</span>, <span class="function"><span class="params">event</span> =&gt;</span> &#123;</span><br><span class="line"> event.<span class="title function_">respondWith</span>(<span class="title function_">handleRequest</span>(event.<span class="property">request</span>))</span><br><span class="line">&#125;)</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
101
101
 
102
102
 
103
103
  <categories>
@@ -134,7 +134,7 @@
134
134
  <link href="/posts/e54f7476/"/>
135
135
  <url>/posts/e54f7476/</url>
136
136
 
137
- <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>以下文章来源于张洪Heo,作者张洪Heo</p><a class="tag-Link" target="_blank" href="https://blog.zhheo.com/p/e54f7476.html"> <div class="tag-link-tips">引用站外地址</div> <div class="tag-link-bottom"> <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.zhheo.com/p/e54f7476.html.png);"></div> <div class="tag-link-right"> <div class="tag-link-title">全国首款支持多环境开发的 CEC-IDE,卡脖子问题解决,国产崛起了?</div> <div class="tag-link-sitename">张洪Heo</div> </div> <i class="fa-solid fa-angle-right"></i> </div> </a><p>今天早上就被这个重磅消息吸引了,这个文章得好好宣传一下继国产自研浏览器、国产自研操作系统、国产自研手机系统后的全新力作:国产自研IDE!</p><p>先给不了解的小伙伴介绍一下什么是IDE:</p><p>IDE代表集成开发环境(Integrated Development Environment)。它是一个软件应用程序,旨在为开发人员提供一个集成的工作区,以便他们可以更轻松地编写、调试和测试软件应用程序。</p><p>意思就是开发者写代码得有个工具来写、来调试,那么就需要IDE来进行操作。在过去IDE一直被国外垄断,常见的IDE工具:</p><ul><li>Visual Studio: 适用于多种编程语言,如C#、C++、Python等,广泛用于Windows开发。</li><li>Eclipse: 一个开源的IDE,支持多种编程语言和框架,如Java、Python、C++等。</li><li>IntelliJ IDEA: 主要用于Java开发,但也支持其他语言,如Kotlin。</li><li>Xcode: 专门用于开发苹果的操作系统(iOS、macOS)应用程序的IDE。</li><li>Android Studio: 专门用于开发Android应用程序的IDE。</li><li>PyCharm: 面向Python开发的IDE,提供丰富的功能和工具。<br />那么这个“卡脖子”难题终于得到了解决!我们也有了自研的IDE辣!</li></ul><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo.webp" alt="" /></p><p>公众号截图</p><h2 id="欣赏一下logo"><a class="markdownIt-Anchor" href="#欣赏一下logo"></a> 欣赏一下logo</h2><p>要是说想要拿下国产高地,界面就不能输,最重要的就是要将logo设计好,这可是整个项目工程的<strong>重中之重</strong>!可能占据了整个项目非常大的工作比例,所以LOGO一定要至关重要。我们看一下logo:</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(1).webp" alt="" /></p><p>这个logo一看就有科技推动的感觉,让我们人与人之间通过app联系在了一起!</p><p>诶,不对,上传错了,是这个:</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(12).webp" alt="" /></p><p>通过一个重叠的感觉让整个应用富有立体感,和飘带般的质感和体积感,非常不错!</p><p>诶,不对,拿错了,是这个:</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(2).webp" alt="" /></p><p>我再三确认过了,就是这个图标,蓝色的渐变色运用非常的巧妙,充分的体现了科技感,并且还用了当下最流行的扁平化设计,有国际潮流的感觉。非常的棒👍!</p><h2 id="是时候欣赏一下界面辣"><a class="markdownIt-Anchor" href="#是时候欣赏一下界面辣"></a> 是时候欣赏一下界面辣</h2><p>图片是非常的漂亮,一看就是请了平面设计师来做过设计的。然后我们来安装一下应用吧!</p><p>下面图片来自@云默安喵~</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(3).webp" alt="" /></p><p>左侧是在安装我们的国产之光,右侧是截图一不小心截到的,忘记裁掉了,大家凑合看吧。</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(11).webp" alt="" /></p><p>安装完成,终于可以看到界面啦!</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(4).webp" alt="" /></p><p>安装成功之后,我们发现需要登录。果然,为了保障用户的数据安全,我们必须要登录,义不容辞,避免一些恶意开发者编写一些违反法律的代码,比如拿到国外去编写,严厉杜绝了这种情况的发生,给国产好评!</p><p>主界面也是非常的漂亮,还有一个蓝色的横幅,让整个界面充满了活力。特有的敏感词工具、数字广东智能网关插件等服务很好的适应了在中国本地的开发需求,让开发者更加方便的开发出自己想要的东西,不需要花费大量时间研究合规问题,大大减少了开发者的开发时间。</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(5).webp" alt="" /></p><h2 id="代码编写界面"><a class="markdownIt-Anchor" href="#代码编写界面"></a> 代码编写界面</h2><p>代码编写是IDE最重要的部分,因为绝大多数开发者都是英文编程。所以我们虽然是国产的IDE,但是也要适应国情,采用英文的界面,大大降低了开发者的迁移成本,让开发者使用国产IDE也能有一种宾至如归的感觉。</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(13).webp" alt="" /></p><p>当然,我们也考虑到一些新的开发者更加习惯中文,我们也贴心的准备了中文界面帮助开发者去开发,极大的降低了新的开发者门槛。</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(6).webp" alt="" /></p><h2 id="软件属性"><a class="markdownIt-Anchor" href="#软件属性"></a> 软件属性</h2><p>虽然我们是国产自研,但是毕竟很多代码语言都是用的英文,我们的国产IDE也创新性的与国际大厂微软进行合作,通过将版权授权给微软来保证我们的IDE在编写和调试都不会出现版权问题。所以开发者可以放心的在国产IDE上进行编写代码,不必担心使用其他语言给企业带来版权纠纷的风险。</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(7).webp" alt="" /></p><h2 id="会员服务"><a class="markdownIt-Anchor" href="#会员服务"></a> 会员服务</h2><p>当然,所有的一切都离不开来自开发者的支持,构建这么庞大的项目包括请设计师设计logo都花了巨大的时间精力和金钱,所以不得不适应时代发展,为了扛起推动经济复苏的重担,国产IDE不得不推出了以保护开发者福祉的会员服务。</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(8).webp" alt="" /></p><h2 id="来自国外的威胁"><a class="markdownIt-Anchor" href="#来自国外的威胁"></a> 来自国外的威胁</h2><p>国产IDE的成长真的非常多灾多难,由于国产IDE的问世让漂亮国产生了深深的威胁,漂亮国疑似开展了针对国产IDE的封锁、制裁和攻击。现在很多国内的小伙伴都无法访问官网了,让我们坚信我们国产的崛起、卡脖子问题的攻克不会被国外的宵小阻挠!</p><p><img src="https://img-r2.yumetsuki.moe/q78kg/appendix/e54f7476/zhheo%20(9).webp" alt="" /></p><h2 id="总结"><a class="markdownIt-Anchor" href="#总结"></a> 总结</h2><p>今天在上班路上看到直接给我当头一棒,我个人觉得如果做不到不要紧,既然吹出了牛,就应该接受被喷的准备。国产乌龙这种已经见的太多了,但是总有人能定期给我们展现出眼前一黑的全新高度。写这个文章也算是过了嘴瘾,真的是下头。</p><h2 id="参考资料"><a class="markdownIt-Anchor" href="#参考资料"></a> 参考资料</h2><p><a href="https://mp.weixin.qq.com/s/v_smby8ua1vmnxI8mOhq8w">“粤”上高地|麒麟软件与数字广东携手推动广东数字政府建设</a></p>]]></content>
137
+ <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>以下文章来源于张洪Heo,作者张洪Heo</p><a class="tag-Link" target="_blank" href="https://blog.zhheo.com/p/e54f7476.html"> <div class="tag-link-tips">引用站外地址</div> <div class="tag-link-bottom"> <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.zhheo.com/p/e54f7476.html.png);"></div> <div class="tag-link-right"> <div class="tag-link-title">全国首款支持多环境开发的 CEC-IDE,卡脖子问题解决,国产崛起了?</div> <div class="tag-link-sitename">张洪Heo</div> </div> <i class="fa-solid fa-angle-right"></i> </div> </a><p>今天早上就被这个重磅消息吸引了,这个文章得好好宣传一下继国产自研浏览器、国产自研操作系统、国产自研手机系统后的全新力作:国产自研IDE!</p><p>先给不了解的小伙伴介绍一下什么是IDE:</p><p>IDE代表集成开发环境(Integrated Development Environment)。它是一个软件应用程序,旨在为开发人员提供一个集成的工作区,以便他们可以更轻松地编写、调试和测试软件应用程序。</p><p>意思就是开发者写代码得有个工具来写、来调试,那么就需要IDE来进行操作。在过去IDE一直被国外垄断,常见的IDE工具:</p><ul><li>Visual Studio: 适用于多种编程语言,如C#、C++、Python等,广泛用于Windows开发。</li><li>Eclipse: 一个开源的IDE,支持多种编程语言和框架,如Java、Python、C++等。</li><li>IntelliJ IDEA: 主要用于Java开发,但也支持其他语言,如Kotlin。</li><li>Xcode: 专门用于开发苹果的操作系统(iOS、macOS)应用程序的IDE。</li><li>Android Studio: 专门用于开发Android应用程序的IDE。</li><li>PyCharm: 面向Python开发的IDE,提供丰富的功能和工具。<br />那么这个“卡脖子”难题终于得到了解决!我们也有了自研的IDE辣!</li></ul><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo.webp" alt="" /></p><p>公众号截图</p><h2 id="欣赏一下logo"><a class="markdownIt-Anchor" href="#欣赏一下logo"></a> 欣赏一下logo</h2><p>要是说想要拿下国产高地,界面就不能输,最重要的就是要将logo设计好,这可是整个项目工程的<strong>重中之重</strong>!可能占据了整个项目非常大的工作比例,所以LOGO一定要至关重要。我们看一下logo:</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(1).webp" alt="" /></p><p>这个logo一看就有科技推动的感觉,让我们人与人之间通过app联系在了一起!</p><p>诶,不对,上传错了,是这个:</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(12).webp" alt="" /></p><p>通过一个重叠的感觉让整个应用富有立体感,和飘带般的质感和体积感,非常不错!</p><p>诶,不对,拿错了,是这个:</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(2).webp" alt="" /></p><p>我再三确认过了,就是这个图标,蓝色的渐变色运用非常的巧妙,充分的体现了科技感,并且还用了当下最流行的扁平化设计,有国际潮流的感觉。非常的棒👍!</p><h2 id="是时候欣赏一下界面辣"><a class="markdownIt-Anchor" href="#是时候欣赏一下界面辣"></a> 是时候欣赏一下界面辣</h2><p>图片是非常的漂亮,一看就是请了平面设计师来做过设计的。然后我们来安装一下应用吧!</p><p>下面图片来自@云默安喵~</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(3).webp" alt="" /></p><p>左侧是在安装我们的国产之光,右侧是截图一不小心截到的,忘记裁掉了,大家凑合看吧。</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(11).webp" alt="" /></p><p>安装完成,终于可以看到界面啦!</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(4).webp" alt="" /></p><p>安装成功之后,我们发现需要登录。果然,为了保障用户的数据安全,我们必须要登录,义不容辞,避免一些恶意开发者编写一些违反法律的代码,比如拿到国外去编写,严厉杜绝了这种情况的发生,给国产好评!</p><p>主界面也是非常的漂亮,还有一个蓝色的横幅,让整个界面充满了活力。特有的敏感词工具、数字广东智能网关插件等服务很好的适应了在中国本地的开发需求,让开发者更加方便的开发出自己想要的东西,不需要花费大量时间研究合规问题,大大减少了开发者的开发时间。</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(5).webp" alt="" /></p><h2 id="代码编写界面"><a class="markdownIt-Anchor" href="#代码编写界面"></a> 代码编写界面</h2><p>代码编写是IDE最重要的部分,因为绝大多数开发者都是英文编程。所以我们虽然是国产的IDE,但是也要适应国情,采用英文的界面,大大降低了开发者的迁移成本,让开发者使用国产IDE也能有一种宾至如归的感觉。</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(13).webp" alt="" /></p><p>当然,我们也考虑到一些新的开发者更加习惯中文,我们也贴心的准备了中文界面帮助开发者去开发,极大的降低了新的开发者门槛。</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(6).webp" alt="" /></p><h2 id="软件属性"><a class="markdownIt-Anchor" href="#软件属性"></a> 软件属性</h2><p>虽然我们是国产自研,但是毕竟很多代码语言都是用的英文,我们的国产IDE也创新性的与国际大厂微软进行合作,通过将版权授权给微软来保证我们的IDE在编写和调试都不会出现版权问题。所以开发者可以放心的在国产IDE上进行编写代码,不必担心使用其他语言给企业带来版权纠纷的风险。</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(7).webp" alt="" /></p><h2 id="会员服务"><a class="markdownIt-Anchor" href="#会员服务"></a> 会员服务</h2><p>当然,所有的一切都离不开来自开发者的支持,构建这么庞大的项目包括请设计师设计logo都花了巨大的时间精力和金钱,所以不得不适应时代发展,为了扛起推动经济复苏的重担,国产IDE不得不推出了以保护开发者福祉的会员服务。</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(8).webp" alt="" /></p><h2 id="来自国外的威胁"><a class="markdownIt-Anchor" href="#来自国外的威胁"></a> 来自国外的威胁</h2><p>国产IDE的成长真的非常多灾多难,由于国产IDE的问世让漂亮国产生了深深的威胁,漂亮国疑似开展了针对国产IDE的封锁、制裁和攻击。现在很多国内的小伙伴都无法访问官网了,让我们坚信我们国产的崛起、卡脖子问题的攻克不会被国外的宵小阻挠!</p><p><img src="https://hf-mirror.com/datasets/Q78KG/imgcdn/resolve/main/q78kg/appendix/e54f7476/zhheo%20(9).webp" alt="" /></p><h2 id="总结"><a class="markdownIt-Anchor" href="#总结"></a> 总结</h2><p>今天在上班路上看到直接给我当头一棒,我个人觉得如果做不到不要紧,既然吹出了牛,就应该接受被喷的准备。国产乌龙这种已经见的太多了,但是总有人能定期给我们展现出眼前一黑的全新高度。写这个文章也算是过了嘴瘾,真的是下头。</p><h2 id="参考资料"><a class="markdownIt-Anchor" href="#参考资料"></a> 参考资料</h2><p><a href="https://mp.weixin.qq.com/s/v_smby8ua1vmnxI8mOhq8w">“粤”上高地|麒麟软件与数字广东携手推动广东数字政府建设</a></p>]]></content>
138
138
 
139
139
 
140
140
  <categories>
package/sitemap.txt CHANGED
@@ -6,14 +6,14 @@ https://yumetsuki.moe/posts/ccdf7cfc/
6
6
  https://yumetsuki.moe/posts/a9a6c1fb/
7
7
  https://yumetsuki.moe/posts/c81531cf/
8
8
  https://yumetsuki.moe/posts/de1f83f4/
9
+ https://yumetsuki.moe/tags/index.html
9
10
  https://yumetsuki.moe/manifest.json
10
11
  https://yumetsuki.moe/othersite/index.html
11
- https://yumetsuki.moe/tags/index.html
12
12
  https://yumetsuki.moe/links/index.html
13
13
  https://yumetsuki.moe/fcircle/index.html
14
14
  https://yumetsuki.moe/fontawesome/index.html
15
- https://yumetsuki.moe/bangumis/index.html
16
15
  https://yumetsuki.moe/bigpie/index.html
16
+ https://yumetsuki.moe/bangumis/index.html
17
17
  https://yumetsuki.moe/categories/index.html
18
18
  https://yumetsuki.moe/about/index.html
19
19
  https://yumetsuki.moe/
package/sitemap.xml CHANGED
@@ -74,7 +74,7 @@
74
74
  </url>
75
75
 
76
76
  <url>
77
- <loc>https://yumetsuki.moe/manifest.json</loc>
77
+ <loc>https://yumetsuki.moe/tags/index.html</loc>
78
78
 
79
79
  <lastmod>2024-09-26</lastmod>
80
80
 
@@ -83,7 +83,7 @@
83
83
  </url>
84
84
 
85
85
  <url>
86
- <loc>https://yumetsuki.moe/othersite/index.html</loc>
86
+ <loc>https://yumetsuki.moe/manifest.json</loc>
87
87
 
88
88
  <lastmod>2024-09-26</lastmod>
89
89
 
@@ -92,7 +92,7 @@
92
92
  </url>
93
93
 
94
94
  <url>
95
- <loc>https://yumetsuki.moe/tags/index.html</loc>
95
+ <loc>https://yumetsuki.moe/othersite/index.html</loc>
96
96
 
97
97
  <lastmod>2024-09-26</lastmod>
98
98
 
@@ -128,7 +128,7 @@
128
128
  </url>
129
129
 
130
130
  <url>
131
- <loc>https://yumetsuki.moe/bangumis/index.html</loc>
131
+ <loc>https://yumetsuki.moe/bigpie/index.html</loc>
132
132
 
133
133
  <lastmod>2024-09-26</lastmod>
134
134
 
@@ -137,7 +137,7 @@
137
137
  </url>
138
138
 
139
139
  <url>
140
- <loc>https://yumetsuki.moe/bigpie/index.html</loc>
140
+ <loc>https://yumetsuki.moe/bangumis/index.html</loc>
141
141
 
142
142
  <lastmod>2024-09-26</lastmod>
143
143