1
0
DavidZhang73.github.io/search.xml

399 lines
122 KiB
XML
Raw Normal View History

2020-01-27 20:30:21 +08:00
<?xml version="1.0" encoding="utf-8"?>
<search>
2020-10-09 14:46:16 +08:00
<entry>
<title>在线视频标注工具 - Vidat</title>
<link href="/vidat/"/>
<url>/vidat/</url>
2020-10-09 19:43:35 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="简介"><a class="header-anchor" href="#简介">¶</a>简介</h2><p><a href="https://github.com/anucvml/vidat" target="_blank" rel="noopener">Github</a> | <a href="http://users.cecs.anu.edu.au/~sgould/vidat/" target="_blank" rel="noopener">Host1 ANU</a> | <a href="https://vidat.davidz.cn/" target="_blank" rel="noopener">Host2 本站</a> | <a href="http://users.cecs.anu.edu.au/~sgould/vidatproto/" target="_blank" rel="noopener">Prototype ANU</a> | <a href="https://vidat.davidz.cn/?video=needinput.mp4&amp;annotation=needinput.json" target="_blank" rel="noopener">Demo</a></p><p>Vidat(VIDeo Annotation Tool)是我本科毕业设计的一部分,即设计实现一个开源的在线(浏览器内)视频标注工具,目前已经实现了四种标注功能,插值标注,导入导出等。</p><p>项目基于<a href="https://cn.vuejs.org/" target="_blank" rel="noopener">Vue.js</a>和<a href="https://quasar.dev/" target="_blank" rel="noopener">Quasar</a>开发。</p><h2 id="功能"><a class="header-anchor" href="#功能">¶</a>功能</h2><h3 id="Object"><a class="header-anchor" href="#Object">¶</a>Object</h3><p>使用矩形标注目标。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/object-1602225326.gif" alt="Object"></p><h3 id="Region"><a class="header-anchor" href="#Region">¶</a>Region</h3><p>使用多边形标注目标。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/region-1602225340.gif" alt="Region"></p><h3 id="Skeleton"><a class="header-anchor" href="#Skeleton">¶</a>Skeleton</h3><p>使用自定义的骨骼模型标注目标。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/skeleton-1602225346.gif" alt="Skeleton"></p><h3 id="Action"><a class="header-anchor" href="#Action">¶</a>Action</h3><p>定义动作的开始结束。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/action-1602225354.gif" alt="Action"></p><h3 id="视频教程"><a class="header-anchor" href="#视频教程">¶</a>视频教程</h3><p><a href="https://www.youtube.com/playlist?list=PLD-7XrNHCcFLv938DO4yYcTrgaff9BJjN" target="_blank" rel="noopener">Youtube</a></p><h2 id="特点"><a class="header-anchor" href="#特点">¶</a>特点</h2><ol><li>完善的配置选项,能够自定义 objectaction 标签,自定义骨架模型,并实时预览。</li><li>现代界面,实时预览标注情况。</li><li>插值功能,标注人员只需标注关键帧,两个关键帧之前的同一物体可以自动标注。</li><li>便利的导入导出,提供 Python 读取脚本,方便导入模型。</li><li>丰富的个性化设置,并且可以从 URL 读取设置,方便作为其他配套设施的一部分。</li><li>直接将源码复制到服务器即可运行,无需编译,集成。</li><li>Vue + Quasar 简单,高效,带有文档,方便二次开发。</li></ol>]]></content>
2020-10-09 14:46:16 +08:00
<categories>
<category> Productivity </category>
</categories>
<tags>
<tag> ANU </tag>
<tag> Javascript </tag>
</tags>
</entry>
2020-10-09 10:48:26 +08:00
<entry>
<title>宜家家居组装数据集</title>
<link href="/IKEA-ASM-Dataset/"/>
<url>/IKEA-ASM-Dataset/</url>
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="简介"><a class="header-anchor" href="#简介">¶</a>简介</h2><table><thead><tr><th style="text-align:center">Title</th><th style="text-align:center">The IKEA ASM Dataset: Understanding People Assembling Furniture through Actions, Objects and Pose</th></tr></thead><tbody><tr><td style="text-align:center">Author</td><td style="text-align:center">Yizhak Ben-Shabat</td></tr><tr><td style="text-align:center">Publish Year</td><td style="text-align:center">2020</td></tr><tr><td style="text-align:center">Link</td><td style="text-align:center"><a href="https://arxiv.org/abs/2007.00394" target="_blank" rel="noopener">https://arxiv.org/abs/2007.00394</a></td></tr><tr><td style="text-align:center">Code</td><td style="text-align:center"><a href="https://github.com/IkeaASM/IKEA_ASM_Dataset" target="_blank" rel="noopener">https://github.com/IkeaASM/IKEA_ASM_Dataset</a></td></tr></tbody></table><p>这个是我的导师小组里的研究员 Itzik 发布的一个组装宜家家居的视频数据集。其中数据集包括三个视角的 RGBD 图像,原子动作标注,人体姿势标注,物体分割标注,相机标定以及相关的辅助代码。</p><h2 id="总结"><a class="header-anchor" href="#总结">¶</a>总结</h2><h3 id="数据集"><a class="header-anchor" href="#数据集">¶</a>数据集</h3><p>背景方面,有 48 个人物5 个场景,场景是动态的,存在有无关人员走过的情况。每个场景下都组装两遍,一次在桌子上,一次在地板上,所以一共是 10 中场景设置。</p><p>家具方面4 种家居side table, coffee table, TV bench, and drawer每种三个颜色white, oak, and black。</p><p>标注方面,人工标注视频的$1%$左右,人工复核过。</p><h3 id="基准"><a class="header-anchor" href="#基准">¶</a>基准</h3><h4 id="Action-recognition"><a class="header-anchor" href="#Action-recognition">¶</a>Action recognition</h4><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/table2-1602211486.png" alt="Action recognition"></p><h4 id="Multi-view-and-multi-modal-action-recognition"><a class="header-anchor" href="#Multi-view-and-multi-modal-action-recognition">¶</a>Multi-view and multi-modal action recognition</h4><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/table3-1602211507.png" alt="Multi-view and multi-modal action recognition"></p><h4 id="Instance-segmentation"><a class="header-anchor" href="#Instance-segmentation">¶</a>Instance segmentation</h4><h4 id="Multiple-furniture-part-tracking"><a class="header-anchor" href="#Multiple-furniture-part-tracking">¶</a>Multiple furniture part tracking</h4><h4 id="Human-pose"><a class="header-anchor" href="#Human-pose">¶</a>Human pose</h4>]]></content>
<categories>
<category> Paper Review </category>
</categories>
<tags>
<tag> CV </tag>
<tag> Dataset </tag>
</tags>
</entry>
2020-06-27 12:58:00 +08:00
<entry>
<title>技巧速记Windows 10 透明效果无法正常工作</title>
<link href="/acrylic-not-working/"/>
<url>/acrylic-not-working/</url>
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="Q"><a class="header-anchor" href="#Q">¶</a>Q</h2><p>一开始我发现 <a href="https://github.com/microsoft/terminal" target="_blank" rel="noopener">Windows Terminal</a> 的 <code>useAcrylic</code> 选项无效github 之后发现 <a href="https://github.com/microsoft/terminal/issues/1414" target="_blank" rel="noopener">Acrylic transparency not working</a>,这个 Issue 里面有好几个描述的和我一样,不仅仅是 Windows Terminal很多系统的透明特效也都不工作。</p><p>原来Windows Terminal 是使用 <a href="https://www.microsoft.com/design/fluent/#/" target="_blank" rel="noopener">Fluent Design</a> 里面的 Acrylic 效果实现的透明,所以说,这个问题是个系统层面的,而不是 Windows Terminal 本身的。</p><p>问题的具体表现为,除了任务栏是透明的之外,其余所有的透明特效都不工作。所以我直接到 <a href="https://github.com/microsoft/microsoft-ui-xaml" target="_blank" rel="noopener">microsoft/microsoft-ui-xaml</a> 提了一个 <a href="https://github.com/microsoft/microsoft-ui-xaml/issues/2737" target="_blank" rel="noopener">Issue</a>。</p><h2 id="A"><a class="header-anchor" href="#A">¶</a>A</h2><p><a href="https://github.com/microsoft/microsoft-ui-xaml/issues/2737#issuecomment-650471950" target="_blank" rel="noopener">解决方案</a>,把英特尔显卡控制面板里面的输入范围调整成<code>全</code>,重启电脑即可。</p>]]></content>
<categories>
<category> Workaround </category>
</categories>
<tags>
<tag> Windows </tag>
</tags>
</entry>
2020-06-05 00:15:41 +08:00
<entry>
<title>技巧速记如何在Hexo中插入多行公式</title>
<link href="/multiline-equation-in-hexo/"/>
<url>/multiline-equation-in-hexo/</url>
2020-06-05 12:12:10 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="Q"><a class="header-anchor" href="#Q">¶</a>Q</h2><p>我在博客中写公式的时候使用双斜线<code>\\</code>来代表换行,效果是这样的,</p><p>$$<br>\begin{bmatrix}<br>cos\theta &amp; sin\theta \<br>-sin\theta &amp; cos\theta<br>\end{bmatrix}<br>$$</p><pre><code class="language-latex">$$\begin{bmatrix}cos\theta &amp; sin\theta \\-sin\theta &amp; cos\theta\end{bmatrix}$$</code></pre><p>那么如何插入多行公式呢?</p><h2 id="A"><a class="header-anchor" href="#A">¶</a>A</h2><p>根据<a href="https://github.com/gcushen/hugo-academic/issues/291#issuecomment-334746889" target="_blank" rel="noopener">Multiple lines Mathjax formulas flattened to one line</a>,应该插入 <em>六个</em> 斜线来表示换行应该是由于Markdown的渲染机制导致<code>\\</code>被反义。</p><p>$$<br>\begin{bmatrix}<br>cos\theta &amp; sin\theta \\\<br>-sin\theta &amp; cos\theta<br>\end{bmatrix}<br>$$</p><pre><code class="language-latex">$$\begin{bmatrix}cos\theta &amp; sin\theta \\\\\\-sin\theta &amp; cos\theta\end{bmatrix}$$</code></pre>]]></content>
2020-06-05 00:15:41 +08:00
<categories>
<category> Workaround </category>
</categories>
<tags>
<tag> Markdown </tag>
</tags>
</entry>
<entry>
<title>想法速记SVD求齐次线性方程组 Ax=0 的解</title>
<link href="/SVD-for-homogeneous-linear-equation/"/>
<url>/SVD-for-homogeneous-linear-equation/</url>
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><p>众所周知SVD(奇异值分解)可以用于最小二乘法求齐次线性方程组$A\vec{x}=\vec{0}$的解。我看了很多资料,大多使用数学公式推导,得出结论。但是,曾经线性代数差点挂科的我,总觉得有些蹊跷。想了两天,终于有了一些感性的认知(不一定是对的😂),赶紧记录下来。</p><h2 id="矩阵有何意义"><a class="header-anchor" href="#矩阵有何意义"></a>矩阵有何意义</h2><p>按照我的理解,一个矩阵的实际意义是对应一个线性变换,这个变换可以理解为瞬间运动。例如,一个旋转矩阵,</p><p>$$<br>A=\begin{bmatrix}<br>cos\theta &amp; sin\theta \\\<br>-sin\theta &amp; cos\theta<br>\end{bmatrix}<br>$$</p><p>它的意思是,把一个向量顺时针旋转$\theta$。也就是说,给定一个$\vec{v_1}=[-1, 1]^T$, 那么变换的结果就是$\vec{v_2}=A\vec{v_1}=[1, 1]^T$.</p><p>除了旋转,矩阵还可以表示包括缩放,投影在内的所有<strong>线性变换</strong></p><p>十分推荐大家去看 3Blue1Brown 的 <em>线性代数的本质</em>B 站有<a href="https://www.bilibili.com/video/BV1ys411472E" target="_blank" rel="noopener">官方翻译版</a>,它完全颠覆了我对线性代数的认知。</p><h2 id="SVD到底干了什么"><a class="header-anchor" href="#SVD到底干了什么"></a>SVD到底干了什么</h2><p>$$<br>A = U\Sigma V^T<br>$$</p><p>SVD把矩阵$A(m\times n)$分解成了,</p><ul><li>$U(m\times m)$: 左奇异矩阵</li><li>$\Sigma(m\times n)$: 奇异值矩阵</li><li>$V(n\times n)$: 右奇异矩阵</li></ul><p>重点来了SVD的意思就是把一个本来由矩阵$A$表示的变换,转化成一个由$U,\Sigma,V$表示的变换。这个变换是,把一个向量,从以$V$为基向量的空间线性变换到成以$U$为基向量的空间中去($\Sigma$的意义可以说是缩放,待证实,暂时忽略)。这样我们就可以更深入的理解这个变换了。</p><p>例如旋转$\vec{v_1}$90度得到$\vec{v_2}$</p><p><img src="//davidz.cn/static/blog/2020-06-04-SVD-for-homogeneous-linear-equation/rotate90.svg" alt="rotate 90"></p><p>其中,</p><p>$$<br>U=\begin{bmatrix}<br>0 &amp; 1 \\\<br>1 &amp; 0<br>\end{bmatrix}<br>$$</p><p>$$<br>\Sigma=\begin{bmatrix}<br>1 &amp; 1<br>\end{bmatrix}<br>$$</p><p>$$<br>V=\begin{bmatrix}<br>-1 &amp; 0 \\\<br>0 &amp; 1<br>\end{bmatrix}<br>$$</p><p>也就是说,矩阵$A$可以被理解为,我们把一个向量$\vec{v_1}$,从以$\vec{e_1}=[-1, 0]^T,\vec{e_2}=[0, 1]^T$为基向量的空间线性变换到了以$\vec{e_1}=[0, 1]^T,\vec{e_2}=[1, 0]^T$为基向量的空间中。这个变换表现为旋转了90度。</p><h2 id="所以如何理解"><a class="header-anchor" href="#所以如何理解"></a>所以如何理解</h2><p>说回求齐次线性方程组$Ax=0$的解来。</p><p>按照矩阵的意义,我们这里要求的是,已知一个线性变换$A$,给定一个$\vec{x}$,使得线性变换后的结果为$\vec{0}$。</p><p>此时非常重要的是,如果$x=\vec{0}$,那一定成立,但是我们想找一个非平凡的解。</p><p>我们暂时不关心这个解是否存在也就是说如果不存在我们就找个最接近的最小二乘法思想我们直接使用SVD分解矩阵$A$,得到对应的$U,\Sigma,V$。</p><p>按照SVD的作用我们现在可以说矩阵$A$这个线性变换,把一个$\vec{x}$,从以$V$为基向量的空间线性变换到了以$U$为基向量的空间中,而我们想找,在以$V$为基向量的空间中,哪个向量会在投影后趋近于或者等于$\vec{0}$。更重要的是,我们只在乎这个向量的方向,而不在乎他的大小,因为它等于$\vec{0}$是个平凡解,这就像
<categories>
<category> Idea </category>
</categories>
</entry>
2020-05-17 15:45:46 +08:00
<entry>
<title>技巧速记:更改 Rattle 的语言</title>
<link href="/rattle-change-language/"/>
<url>/rattle-change-language/</url>
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="Q"><a class="header-anchor" href="#Q">¶</a>Q</h2><p>如何把Rattle的语言设置成英文从而避免显示<code>XXX</code>。</p><h2 id="A"><a class="header-anchor" href="#A">¶</a>A</h2><p>在<code>R_HOME/etc/Rprofile.site</code>的最后添加,</p><pre><code class="language-R">Sys.setenv(LANG=&quot;en&quot;)</code></pre>]]></content>
<categories>
<category> Workaround </category>
</categories>
<tags>
<tag> R </tag>
</tags>
</entry>
2020-02-21 16:28:53 +08:00
<entry>
<title>墙内 Jenkins 插件下载的一种解决方案</title>
<link href="/jenkins-update-solution-inside-gfw/"/>
<url>/jenkins-update-solution-inside-gfw/</url>
2020-09-07 21:52:27 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="前言"><a class="header-anchor" href="#前言"></a>前言</h2><p>闲来无聊,在家折腾 DevOps第一步当然是部署一个 Jenkins 啦,然而一顿操作猛如虎,插件一个都下载不下来,总不能给 Jenkins 加个代理吧,所以有了下面这一通折腾。</p><h2 id="原因"><a class="header-anchor" href="#原因"></a>原因</h2><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/%E4%B8%8B%E8%BD%BD%E8%B6%85%E6%97%B6-1599485061.png" alt="下载超时"></p><p>根据经验,国外这些软件下载失败基本上都是因为链接不上服务器,换个源就好了。所以简单百度,找到大量相关教程,换了<a href="https://mirrors.tuna.tsinghua.edu.cn/" target="_blank" rel="noopener">清华源</a>在内的四五个镜像源,均无效。</p><p>这就非常奇怪了,所以我打开了清华源的<a href="https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json" target="_blank" rel="noopener">update-center.json</a>,仔细看了看,发现了蹊跷之处。原来,这个文件里面基本上所有插件的链接都指向了官网链接<code>http://updates.jenkins-ci.org/download/plugins/</code>。所以我们使用<code>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</code>只加速了下载这个文件的过程,而并没有加速下载插件的过程。</p><h2 id="解决方案"><a class="header-anchor" href="#解决方案"></a>解决方案</h2><p>那么解决方案就很简单了,我们只需要把<code>/var/jenkins_home/updates/default.json</code>这个文件中的所有</p><pre><code class="language-htmlmixed">http://updates.jenkins-ci.org/download/plugins/</code></pre><p>替换成,</p><pre><code class="language-htmlmixed">https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/</code></pre><p>这样就好啦,但是总不能每次都自己手动替换吧,所以有下面这两个稍微复杂一点的自动化解决方案。</p><h3 id="方案-1-使用-nginx-重定向"><a class="header-anchor" href="#方案-1-使用-nginx-重定向"></a>方案 1 使用 nginx 重定向</h3><p>这个方法是参考的<a href="https://my.oschina.net/VASKS/blog/3106314" target="_blank" rel="noopener">jenkins 插件下载加速最终方案</a></p><p>具体我没有试,但是我之前写过 Nginx 的重定向,简单来讲就是遇到官方的地址,就重定向到清华源,配置起来稍微复杂一点。</p><h3 id="方案-2-自己搭建-Jenkins-Update-Center"><a class="header-anchor" href="#方案-2-自己搭建-Jenkins-Update-Center"></a>方案 2 自己搭建 Jenkins Update Center</h3><p>这个是我自己尝试出来的,原理就是我在服务器上定时(每小时)从清华源下载<code>update-center.json</code>,然后再把里面的 URL 替换成正确的地址,然后对外提供服务。</p><p>但是 Jenkins 对于<code>update-center.json</code>的地址有验证,<a href="https://github.com/jenkins-zh/mirror-adapter" target="_blank" rel="noopener">具体验证方法</a>不清楚(<s>我实在是懒的研究了</s>)。</p><blockquote><p>山重水复疑无路,柳暗花明又一村</p></blockquote><p>我在 Jenkins 的 Issue 里面找到一个<a href="https://issues.jenkins-ci.org/browse/JENKINS-11598?focusedCommentId=212431&amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-212431" target="_blank" rel="noopener">老哥</a>说验证这个功能可以通过属性参数关闭,于是,这个问题就很简单啦。</p><pre><code class="language-shell">hudson.model.DownloadService.noSignatureCheck=true</code></pre><p>加上这个属性就好啦。</p><p><a href="https://jenkins-update.davidz.cn/" target="_blank" rel="noopener">具体教<EFBFBD>
2020-02-21 16:28:53 +08:00
<categories>
<category> DevOps </category>
</categories>
<tags>
<tag> Linux </tag>
</tags>
</entry>
2020-02-13 20:39:56 +08:00
<entry>
2020-02-14 14:43:05 +08:00
<title>使用 Markdown 编写基于 Latex 的报告</title>
2020-02-13 20:39:56 +08:00
<link href="/write-latex-report-with-markdown/"/>
<url>/write-latex-report-with-markdown/</url>
2020-09-09 15:27:17 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="前言"><a class="header-anchor" href="#前言"></a>前言</h2><p>计算机这个专业,有很多报告要做。在山威的时候,报告格式没有什么限制 WordPDF 都可以,那个时候我开始使用 Markdown 作为我的排版工具,因为实在是没有时间经历去研究 Word 的各种高级功能(<s>主要是懒</s>。Markdown 十分简单,易学,在<a href="https://github.com" target="_blank" rel="noopener">Github</a>等计算机专业相关平台使用也非常广泛,还可以通过各种模板快速生成<strong>好看</strong><strong>美观</strong><strong>专业</strong>的文档。</p><p>后来到了澳国立,老师教授们开始极力鼓吹 Latex 和 PDF基本上算是软性要求我们使用 Latex 编写,还规定了衬线字体,非衬线字体,字号,段落等等,图片还需要是 SVG 格式的矢量图片(最奇葩的是竟然一整节课只讲这个😂),最后生成 PDF 提交(据说这样分数高一些)。所以我开始了漫漫 Latex 学习之路。然而整个过程十分痛苦,装个 TeX Live 跑了好几个小时,换个字体换的我一脸懵逼,预览竟然都不是实时的!!!我甚至觉得还不如 Word 好用,又开始找那些 Latex 编辑器(同学的 MacOS 上有很不错的,然而我是 Windows之后是在线编辑器<a href="https://www.overleaf.com/" target="_blank" rel="noopener">Overleaf</a>,体验还行,但是一边学习 Latex 一边做实验写报告的体验实在是太差劲了,人都要<s>有丝</s>分裂了。我就先用 Markdown 记录下来,想着之后再改成 Latex 吧。然后,我用了 2 天左右的时间,找到了 Markdown 直接转报告的方法,就没再碰 Latex<s>还是懒</s>)。</p><h2 id="样例"><a class="header-anchor" href="#样例"></a>样例</h2><p><a href="https://github.com/Wandmalfarbe/pandoc-latex-template/#example-images" target="_blank" rel="noopener">eisvogel 主题样例</a></p><p>你也可以从<a href="https://davidz-blog.oss-cn-beijing.aliyuncs.com/asset/Report.pdf" target="_blank" rel="noopener">这里</a>看一下我的成果作为参考,我觉得完全符合我的要求。</p><h2 id="思路"><a class="header-anchor" href="#思路"></a>思路</h2><p>其实思路很简单,一切的一切都是因为<a href="https://pandoc.org/" target="_blank" rel="noopener">Pandoc</a>这个文档转换软件软件(类似于影音界的格式工厂?)的存在。它官网有一张巨型图片描述了它可以从那些格式转换成那些格式,基本上可以说覆盖了常见的所有文档格式。所以我们就可以用它把 Markown 语言写的文档转换成 PDF 格式的报告,过程中再用一套模板修饰一下就好啦。</p><blockquote><p>注意<br>Pandoc 通过 Markdown -&gt; Latex -&gt; PDF 的方式得到 PDF中间文件是 Latex</p></blockquote><h2 id="准备"><a class="header-anchor" href="#准备"></a>准备</h2><h3 id="Markdown-语法"><a class="header-anchor" href="#Markdown-语法"></a>Markdown 语法</h3><blockquote><p>注意<br>Markdown 实际上和 HTML 是“近亲”,你甚至可以直接使用 HTML 标签。</p></blockquote><p>这个百度或者谷歌一下很容易找到教程学起来也很简单10 分钟上手1 天熟练。</p><h3 id="Markdown-编辑器"><a class="header-anchor" href="#Markdown-编辑器"></a>Markdown 编辑器</h3><p>下面这俩我都有,看心情切换😄。</p><h4 id="选项-1-VSCode"><a class="header-anchor" href="#选项-1-VSCode"></a>选项 1: VSCode</h4><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/VSCode-1599485366.png" alt="VSCode with Markdown Preview Enhanced"></p><p>微软出品,宇宙最强 I
2020-02-13 20:39:56 +08:00
<categories>
<category> Productivity </category>
</categories>
<tags>
<tag> Windows </tag>
<tag> Markdown </tag>
</tags>
</entry>
2020-02-11 20:35:13 +08:00
<entry>
<title>卸载浪潮安装的 IP-GUARD 监控软件</title>
<link href="/inspur-ip-guard-uninstallation/"/>
<url>/inspur-ip-guard-uninstallation/</url>
2020-02-22 14:53:35 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="前言"><a class="header-anchor" href="#前言"></a>前言</h2><blockquote><p>屋漏更遭连夜雨,船迟又遇打头风。</p></blockquote><p>刚刚处理完 Docker 里面的“病毒”,又发现自己的笔记本被安装了监控软件,身后一阵凉风。</p><h2 id="发现"><a class="header-anchor" href="#发现"></a>发现</h2><blockquote><p>事发突然,因为影响我开发,所以也没有来得及截图。</p></blockquote><p>为了使用 WSL2 里面的 Docker我加入了 <code>Windows 预览体验计划 - 慢</code>,把系统升级到了 Windows 10 2004。结果怪事就出现了——基本上所有的命令行都会在执行前显示一个错误。</p><pre><code class="language-shell">ANOMALY: use of REX.w is meaningless (default operand size is 64)</code></pre><p>从来没见过这个错误,我进入安全模式发现竟然也会报错,在百度 + 谷歌 + stackoverflow 依然无任何有效答案后,陷入了绝望😢。</p><p>本来呢,这个只是报个错,并不是什么大问题(<s>我本身有一点强迫症,不能忍</s>),但是 JetBrains 全家桶全部报错找不到 GitCLion 报错找不到 VS。这就严重影响我开发了。Windows 预览体验计划还非常坑,不能回退,于是我又尝试了<code>Windows 预览体验计划 - 快</code>,结果问题依旧。</p><p>终于我突发奇想在 Github 上搜了一下(<s>不是到我当时咋想的,病急乱投医把</s>),发现了一个叫<a href="https://github.com/martona/mhook" target="_blank" rel="noopener">mhook</a>的项目,在其类库代码中发现了<a href="https://github.com/martona/mhook/blob/master/disasm-lib/disasm_x86.c#L1749" target="_blank" rel="noopener">disasm_x86</a>这个文件,在第 1749 行发现了错误提示的源代码。</p><pre><code class="language-c">if (!SuppressErrors) printf(&quot;[0x%08I64X] ANOMALY: use of REX.w is meaningless (default operand size is 64)\n&quot;, VIRTUAL_ADDRESS);</code></pre><p>现在我大体知道了这个问题产生的原因。</p><ol><li>disasm 是一个 hook钩子可以注入到别的程序。</li><li>更新系统后,这个钩子库和新的系统发生了冲突,于是报错,理论上所有被注入的程序都会报错。</li><li>这个钩子应该是个<strong>监控软件</strong>或者病毒木马之类的。</li></ol><p>我想起了在浪潮实习的时候,我的老师给我说浪潮作为面向政府国企的公司,对内部信息安全非常重视,所以会在员工的电脑里面安装监控软件,监控员工的一举一动,我当时感觉应该不会对实习生下手吧,想不到。。。回想起来,应该是入职浪潮的时候安装的那个上网小助手吧。</p><p>于是我下载了<a href="https://www.freefixer.com/" target="_blank" rel="noopener">freefixer</a>,查找注入的钩子,果不出其然,发现了在系统中安装的<a href="http://www.ip-guard.net/" target="_blank" rel="noopener">IP-GUARD</a>。按照官网的介绍,监控能力之强,范围之广令人汗颜,从网络到文件,邮件,应用等等,简直神通广大。</p><h2 id="处理"><a class="header-anchor" href="#处理"></a>处理</h2><p>我已经离职多日,第一时间肯定是卸载这个监控软件,直接删除文件肯定不行,结果 freefixer 也卸不掉(卸载完重启又出现),没有办法,只能到 WinPE 中手动逐一筛查,删除。</p><p>基本步骤如下</p><h3 id="1-进入-WinPE"><a class="header-anchor" href="#1-进入-WinPE"></a>1. 进入 WinPE</h3><blockquote><p>安全模式也会打开例如 explorer.exe 这样的系统进程,而监控软件也注入到了其中,所以安装全模式也不能删除</p></block
2020-02-11 20:35:13 +08:00
<categories>
<category> Internship </category>
</categories>
<tags>
<tag> Windows </tag>
</tags>
</entry>
2020-02-10 19:39:28 +08:00
<entry>
2020-02-13 22:12:47 +08:00
<title>&quot;寄生&quot;于 Docker 的病毒 - Kinsing</title>
2020-02-10 19:39:28 +08:00
<link href="/kinsing-virus/"/>
<url>/kinsing-virus/</url>
2020-09-07 21:52:27 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="前言"><a class="header-anchor" href="#前言">¶</a>前言</h2><p>2020 年开年不顺2019 新型冠状病毒肺炎爆发,从年三十居家隔离到了正月十五,没想到自己的服务器也”感染“上了病毒 - Kinsing(进程的名字,姑且这样称呼)。</p><h2 id="发现"><a class="header-anchor" href="#发现">¶</a>发现</h2><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/netdata-1599485973.png" alt="netdata"></p><p>偶然看了看服务器状态,发现 CPU 占用一直保持在 100%上下,有些蹊跷。</p><p>难道是我的博客访问量<s>暴增</s>???那是当然不可能的,然后我去看了看<a href="https://github.com/portainer/portainer" target="_blank" rel="noopener">Portainer</a>看了看,果然,</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/portainer-1599485974.png" alt="portainer"></p><p>这个随机名称的容器就是 Kinsing 基于 Ubuntu 的容器CPU 占用 100%。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/%E8%BF%9B%E7%A8%8B-1599485975.png" alt="进程"></p><p>简单看了看容器里面的进程表,第一个运行了一个 shell 脚本,这个病毒就是这个脚本下载启动的关键,我打开看了看,<s>也没看懂</s>,大概是下载了几个可执行文件。第二个是 cron这个是定时脚本我猜应该是病毒定时检查一下运行情况第三个好像是个守护进程第四个应该是用于容器保持第五个在网上能搜到是个<a href="https://www.baidu.com/s?wd=kdevtmpfsi" target="_blank" rel="noopener">挖矿的程序</a>。</p><p>无聊的我还简单看了看这个脚本的服务器 IP</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/ip-1599485976.png" alt="ip"></p><p>难道是俄罗斯大佬???</p><p>这个时候我突然想起来,前几天为了调试<a href="https://certbot.eff.org/" target="_blank" rel="noopener">certbot</a>的 Dockerfile, 我直接打开了 Docker 的<a href="https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-socket-option" target="_blank" rel="noopener">远程访问</a>,在默认的情况下是没有任何加密措施的。</p><p>这样,就真相大白了,这个病毒通过未加密的接口,在我的服务器上运行了挖矿的容器来盈利,同时也占用了服务器全部的 CPU😢.</p><h2 id="处理"><a class="header-anchor" href="#处理">¶</a>处理</h2><p>Kinsing 病毒还是很良心的(至少我遇到的这个是),把自己”关“在了容器里面,反正后来我也没有在别的地方发现相关文件。</p><p>所以处理起来也简单,</p><ol><li>删掉容器和镜像</li><li>关闭 Docker 远程访问即可。如果不想关闭的话也可以<a href="https://docs.docker.com/engine/security/https/" target="_blank" rel="noopener">用 https 的方式加密</a>。</li></ol><h2 id="小想法"><a class="header-anchor" href="#小想法">¶</a>小想法</h2><p>其实这个 Kinsing 病毒实现起来还是很简单的,</p><ol><li>扫描全网的 2375 这个默认端口</li><li>用 Docker API 连接并部署容器</li><li>执行脚本运行挖矿程序</li></ol><p><s>突然有一个邪恶的想法,一台机器一天就算 1 毛钱好啦</s>,哈哈哈,但是违法的事情不能做呀😄。</p><p>大家一定要注意呀,时刻谨记服务器安全,不要随意开放服务器端口。</p>]]></content>
2020-02-10 19:39:28 +08:00
<categories>
<category> DevOps </category>
</categories>
<tags>
2020-02-13 22:12:47 +08:00
<tag> Linux </tag>
2020-02-10 19:39:28 +08:00
<tag> Shell </tag>
<tag> Docker </tag>
</tags>
</entry>
2020-02-03 19:45:35 +08:00
<entry>
<title>Windows 包管理器 - Scoop</title>
<link href="/windows-package-manager-scoop/"/>
<url>/windows-package-manager-scoop/</url>
2020-09-07 21:52:27 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="前言"><a class="header-anchor" href="#前言"></a>前言</h2><p>一直以来作为开发者Windows 相较于 Linux 都缺少两样重要的工具,</p><ol><li><strong>好用</strong>的 Shell - 现在可以用 PowerShell Core 或者 WSL 暂时代替。</li><li><strong>好用</strong>的包管理器 - 在开发时 C/Cpp 的库可以用<a href="https://github.com/microsoft/vcpkg" target="_blank" rel="noopener">VCPKG</a>,而日常使用的软件就可以使用本文的主角<a href="https://github.com/lukesampson/scoop" target="_blank" rel="noopener">Scoop</a> 了。</li></ol><h2 id="安装"><a class="header-anchor" href="#安装"></a>安装</h2><blockquote><p>按照官网的<a href="https://github.com/lukesampson/scoop/wiki/Quick-Start" target="_blank" rel="noopener">教程</a>,只能使用 PowerShell 而不是 CMD 进行安装。</p></blockquote><pre><code class="language-powershell"># 指定 Scoop 的安装路径,之后安装的 APP 会安装在 path/to/scoop/apps/$env:SCOOP='path/to/scoop'[environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')# 安装 ScoopInvoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')</code></pre><h3 id="Buckets"><a class="header-anchor" href="#Buckets"></a><a href="https://github.com/lukesampson/scoop/wiki/Buckets" target="_blank" rel="noopener">Buckets</a></h3><p>Scoop 只是一个包安装器,我们还需要软件源。</p><p>使用,</p><pre><code class="language-powershell">scoop bucket known</code></pre><p>可以列出所有官方已知并推荐的源,使用,</p><pre><code class="language-powershell">scoop bucket add &lt;bucket-name&gt;</code></pre><p>即可安装源。</p><ol><li><code>main</code> - Scoop 官方默认主源,里面所有的软件符合<a href="https://github.com/lukesampson/scoop/wiki/Criteria-for-including-apps-in-the-main-bucket" target="_blank" rel="noopener">标准</a></li><li><code>extras</code> - Scoop 官方扩展你源,里面的软件不完全符合标准。</li><li><code>versions</code> - 可选版本的源。</li><li><code>nightlies</code> - nightly 软件源,不推荐。</li><li><code>nirsoft</code> - <a href="https://nirsoft.net/" target="_blank" rel="noopener">Nir Sofer</a>开发的软件。</li><li><code>php</code> - 不同版本的 php。</li><li><code>nerd-fonts</code> - <a href="https://github.com/ryanoasis/nerd-fonts" target="_blank" rel="noopener">Nerd Fonts</a> 和一些其他字体。</li><li><code>nonportable</code> - 非便携软件(可能需要 UAC</li><li><code>java</code> - 不同版本的 JDKJRE。</li><li><code>games</code> - 开源或免费的游戏以及游戏工具。</li><li><code>jetbrains</code> - JetBrains 全家桶。</li></ol><h2 id="使用"><a class="header-anchor" href="#使用"></a>使用</h2><p>和 Ubuntu 的 aptCentOS 的 yum 基本相同。</p><pre><code class="language-powershell"># 搜索scoop search &lt;package-name&gt;# 查看主页scoop home &lt;package-name&gt;# 安装scoop install &lt;package-name&gt;# 更新scoop update &lt;package-name&gt;# 卸载scoop uninstall &lt;package-name&gt;# 更新 Scoop所有源所有软件包scoop update *# 列出所有软件包scoop list</code></pre><h2 id="推荐的软件包"><a class="header-anchor" href="#推荐的软件包"></a>推荐的软件包</h2><h3 id="aria2"><a class="header-anchor" href="#aria2"></a><a href="https://aria2.github.io/" target="_blank" rel="noopener">aria2</a></h3><p>基本上常见的所有开源下载软件都是基于这个,不但可以跑在 x86 的电脑上, mips 的路由器arm 的手机都不是问题。</p><p>需要注意的是,安装 aria2 后Scoop 的默认下载器会自动改成 aria2并开启多线程下<E7A88B>
2020-02-03 19:45:35 +08:00
<categories>
<category> Productivity </category>
</categories>
<tags>
2020-02-11 20:35:13 +08:00
<tag> Windows </tag>
2020-11-12 16:10:48 +08:00
<tag> Open-Source </tag>
2020-02-03 19:45:35 +08:00
</tags>
</entry>
2020-02-01 21:30:36 +08:00
<entry>
<title>颜值是第一生产力 - Windows Terminal</title>
<link href="/beauty-is-productivity-windows-terminal/"/>
<url>/beauty-is-productivity-windows-terminal/</url>
2020-09-07 21:52:27 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="回顾"><a class="header-anchor" href="#回顾"></a>回顾</h2><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/cmd-1599486120.png" alt="CMD"></p><p>记得我最早的时候用 Visual Studio 写了第一个 Hello World 程序,激动的点运行,出来个黑框一闪就过去了,啥也没看到。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/powershell-1599486121.png" alt="PowerShell"></p><p>后来偶然了解 PowerShell又变成了一个蓝色的框还会有进度提示红的黑的突兀得很😢。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/bash-1599486122.png" alt="bash"></p><p>后来上了大学终于在 Ubuntu 上见到了 bash完全改变了我对 Shell 的认知。</p><p>傻傻分不清 Shell 和 Terminal 的我,激动的打开 Git 自带的 bash它却长成了这样。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/gitbash-1599486123.png" alt="Git-Bash"></p><p>一番优化之后也不是不能用,后来还入坑了 <a href="https://github.com/cmderdev/cmder" target="_blank" rel="noopener">Cmder</a>,用于替代 <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/" target="_blank" rel="noopener">Putty</a> 那个更加原始的 terminal。</p><p>终于2019 年微软开始进入开源世界,为我们带来了颜狗的胜利: <a href="https://github.com/microsoft/terminal" target="_blank" rel="noopener">Windows Terminal</a></p><iframe src="//player.bilibili.com/player.html?aid=51700920&cid=90502402&page=1&high_quality=1&danmaku=0" allowfullscreen="true" width="100%" height="600" scrolling="no" frameborder="0" sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts" ></iframe><h2 id="下载-安装"><a class="header-anchor" href="#下载-安装"></a>下载&amp;安装</h2><blockquote><p>截止 2020 年 2 月 1 号Windows Terminal 还处在测试阶段,但是已经相对比较完善了,正常使用没有什么大问题了。</p></blockquote><h3 id="方法-1-通过-Windows-Store"><a class="header-anchor" href="#方法-1-通过-Windows-Store"></a>方法 1: 通过 Windows Store</h3><p><a href="https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701" target="_blank" rel="noopener">点击这里安装</a></p><h3 id="方法-2-通过-Github"><a class="header-anchor" href="#方法-2-通过-Github"></a>方法 2: 通过 Github</h3><p>在 Github 的 <a href="https://github.com/microsoft/terminal/releases" target="_blank" rel="noopener">Release</a> 中下载最新的那个双击安装就好啦,和方法 1 是一样的。</p><h3 id="方法-3-通过-Scoop"><a class="header-anchor" href="#方法-3-通过-Scoop"></a>方法 3: 通过 Scoop</h3><blockquote><p><strong>不推荐</strong><br>用 wt 命令启动时会有一个 CMD 窗口,逼死强迫症。</p></blockquote><p>Windows Terminal 在 Scoop 的 extras bucket 里面。</p><pre><code class="language-powershell">scoop install windows-terminal</code></pre><h2 id="配置"><a class="header-anchor" href="#配置"></a>配置</h2><p>通过配置,最终 terminal 可以长成这个样子。</p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/windows-terminal-1599486124.png" alt="windows terminal"></p><p>现阶段只有 json 格式的配置文件,还没有图形化配置界面,项目组说正式版会有,最终应该会与 Vscode 的配置一样。</p><p>根据官网给出的 <a href="https://raw.githubusercontent.com/microsoft/terminal/master/doc/cascadia/profiles.schema.json" target="_blank" rel="noopener">Profiles Schema</a>,我们可以很快的配置我们自己定制化的 Terminal。</p><p>下面是我自己用的配置文件,</p><pre
2020-02-01 21:30:36 +08:00
<categories>
<category> Productivity </category>
</categories>
<tags>
2020-02-11 20:35:13 +08:00
<tag> Windows </tag>
2020-11-12 16:10:48 +08:00
<tag> Open-Source </tag>
2020-02-13 22:12:47 +08:00
<tag> Terminal </tag>
2020-02-01 21:30:36 +08:00
</tags>
</entry>
2020-01-27 20:30:21 +08:00
<entry>
<title>浪潮实习</title>
<link href="/inspur-internship/"/>
<url>/inspur-internship/</url>
2020-02-22 14:53:35 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><h2 id="前言"><a class="header-anchor" href="#前言"></a>前言</h2><p>到了期末都说要找个实习的工作,我也跟个风😂。</p><p>我是主要是在<a href="https://www.shixiseng.com/" target="_blank" rel="noopener">实习僧</a>上找的(就当免费做个广告吧),我住在美丽的泉城济南,<s>这个地方好就好在</s>,咳咳咳,我大概填了填简历,可能是没啥亮点,投了三四家都不要我😢。</p><p>我分析原因大概有以下几条:</p><ol><li>我最喜欢最熟练的语言是 Python但是现在国内的环境Python 很少作为 Web 的后端,主要是用在机器学习(大数据分析,量化交易之类的)方面。济南大多数都是 Java 和 Cpp 岗。</li><li>我个人没有参加过 acm 之类的比赛,除了几个项目没法有效证明我的能力。</li><li>我这个寒假只能干 2 个月,<s>其实最终只干了一个半月</s></li><li>我是个大三的学生。可能培养了对于公司来说也没啥意义吧。</li></ol><p>最后还是十分感谢秦老师❤️,不但收了我到浪潮实习,还在实习过程中给了我很多帮助和指导。</p><p>下面列一列我学习了解的项目工具之类的。</p><h2 id="CppMicroServices"><a class="header-anchor" href="#CppMicroServices"></a><a href="https://github.com/CppMicroServices/CppMicroServices" target="_blank" rel="noopener">CppMicroServices</a></h2><p>我们主要做了一个插件管理器,是基于 CppMicroServices 的二次开发。这是一个 Cpp 的微服务框架,主要实现了 Bundle 的全生命周期管理,注册,启动,停止,状态管理等。</p><h2 id="CLion"><a class="header-anchor" href="#CLion"></a><a href="https://www.jetbrains.com/clion" target="_blank" rel="noopener">CLion</a></h2><p>大爱 Jetbrains 全家桶,我实习的第一件事大概就是给组里所有人安利了 CLion 吧。与宇宙第一 IDE Visual Studio 相比最突出的优点有</p><ol><li>精美的全功能编辑器。不是我吐槽VS 的编辑器为了向下兼容现在甚至已经落后 VSCode 了,这还是曾经的宇宙第一 IDE 嘛。举一个简单的例子,连字功能连个开关都找不到,重启 VS 没成功,重启电脑就成功了?再加上没有拼写检查?没有自动注释补全?没有缺陷提示?你可能觉得没什么,但是这些都是 CLion 的自带功能啊。</li><li>丰富完善的插件生态。虽然感觉比不上 VSCode但是相对于 VS😄。</li><li>CMake 项目的原生支持。VS 虽然也有,但是感觉应该还处在开发状态。</li><li>SVN &amp; Git 的原生支持。</li><li>远程开发功能。因为我们要求项目有跨平台能力所以需要在多个平台切换。VS 虽然也有这个功能,但是也是感觉在开发状态,相比 CLion 少了很多配置的灵活性。</li><li>丰富的主题。VS 硬伤。</li></ol><p>综上所述,对于 Cpp 的 CMake 跨平台项目,还是推荐使用 CLion 作为 IDE。</p><p>我猜测 Visual Studio 是宇宙第一 IDE 应该说的是对于 C# 项目吧。</p><h2 id="CMake"><a class="header-anchor" href="#CMake"></a><a href="www.cmake.org">CMake</a></h2><p>以前的 C/Cpp 项目对我来说就是个谜解决方案、项目傻傻分不清楚Visual Studio 写单文件程序,解算法题还是很溜的,但是两个文件以上就很晕。</p><p>傻瓜式的配置的优点和确定都是非常显著的,好用是好用,用好是真的难。</p><p>CMake 作为这几年流行的跨平台构建工具,实现了配置式构建,终于让我理解了大学里 Linux 老师讲的程序编译链接都是些啥。</p><p>下面我简单写一写 CMake 的入门知识。</p><h3 id="常见编
2020-01-27 20:30:21 +08:00
<categories>
<category> Internship </category>
</categories>
<tags>
2020-02-13 22:12:47 +08:00
<tag> Cpp </tag>
2020-11-12 16:10:48 +08:00
<tag> Windows </tag>
2020-02-11 20:35:13 +08:00
<tag> Linux </tag>
2020-01-27 20:30:21 +08:00
</tags>
</entry>
<entry>
2020-02-14 14:43:05 +08:00
<title>ANU COMP2310(2019) Assignment 1</title>
2020-01-27 20:30:21 +08:00
<link href="/anu-comp2310-assignment1/"/>
<url>/anu-comp2310-assignment1/</url>
2020-09-09 15:27:17 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><blockquote><p><strong>敬告</strong></p><div style="color: red">本博客仅供参考,请不要抄袭。</div></blockquote><h2 id="前言"><a class="header-anchor" href="#前言"></a>前言</h2><p>这是 ANU <a href="http://courses.cecs.anu.edu.au/courses/COMP2310/" target="_blank" rel="noopener">COMP2310</a>的第一次大作业,历时一个月左右,也是这个学期我写的最认真的一次作业,所以在博客搭建伊始,我先把这个记录下来。</p><h2 id="问题"><a class="header-anchor" href="#问题"></a>问题</h2><p>根据<a href="https://davidz-blog.oss-cn-beijing.aliyuncs.com/asset/Assignment1.pdf" target="_blank" rel="noopener">Assignment 1 PDF</a>中的描述,大概的意思就是在三维空间中有许多的<code></code>,具有速度和加速度(都是三维向量),而且不管是否加速,都会消耗一定的能量,当然加速也会加快能量的消耗。然后就是有一个或多个<code>能量球</code>,当然也是在运动中的,同样具有速度和加速度。当<code></code><code>能量球</code>靠近的时候,<code></code>能够获取到<code>能量球</code>的信息(加速度,速度,位置),并且加满能量,而当<code></code><code></code>靠近的时候,能够互相交换一次信息,这个信息的内容是自己定义的。<code></code>在能量耗尽后就消失了,而我们需要做的就是在一定的时间内,保证尽可能多的<code></code>存活。</p><h2 id="分析"><a class="header-anchor" href="#分析"></a>分析</h2><p>其实这个问题最关键的地方在于,没有一个中央的控制节点,也就是说对于每一个<code></code>来说都是完全平等且独立的。所以我们需要他们能够尽可能的一直处在能够交流的状态,并且都能知道<code>能量球</code>在哪里。</p><blockquote><p><strong>注意</strong><br>这个问题在没有中央控制时<strong>不存在</strong>最优解,我们只能无线接近最优解。<br>我采用的是<strong>球形模型</strong>,这个模型参考于这次作业的 <a href="https://cs.anu.edu.au/courses/comp2310/1-Labs-Assignments.html" target="_blank" rel="noopener">Examples</a><br>在和我的同学互相交流时,这个模型是最普遍的,解决方案是最多的,效果也是相对最好的。</p></blockquote><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/3D%E7%90%83%E5%BD%A2%E6%A8%A1%E5%9E%8B-1599486499.png" alt="3D球形模型"></p><p><img src="https://davidz-blog.oss-cn-beijing.aliyuncs.com/img/2D%E7%90%83%E5%BD%A2%E6%A8%A1%E5%9E%8B-1599486500.png" alt="2D球形模型"></p><p>球形模型设计的两大重点是:</p><ol><li>所有的<code></code>都均匀平等地分布在球面上(球面是个相对概念,可以是球壳???)。</li><li>所有的<code></code>都能随时交流,也就是说大家形成一个通讯网络。</li></ol><h2 id="实现"><a class="header-anchor" href="#实现"></a>实现</h2><blockquote><p><strong>注意</strong><br>所有的 Ada 代码都是示意性的,有可能不能直接在项目中使用。</p></blockquote><h3 id="Stage-A-B"><a class="header-anchor" href="#Stage-A-B"></a>Stage A&amp;B</h3><p>这个阶段中,能量球只有一个,我们让所有的<code></code>都围绕这个能量球运动来实现一个基本的球形模型。</p><h4 id="基本程序结构Basic-Program-Structure"><a class="header-anchor" href="#基本程序结构Basic-Program-Structure"></a>基本程序结构Basic Program Structure</h4><p>程序基本的结构是一个死循环,每次循环分为 4 个步骤:</p><ol><li>判断<code>能量球</code>信息</li><li>发送信息</li><li>
2020-01-27 20:30:21 +08:00
<categories>
<category> Study </category>
</categories>
<tags>
2020-02-01 21:30:36 +08:00
<tag> Ada </tag>
2020-01-27 20:32:37 +08:00
2020-02-05 21:11:19 +08:00
<tag> ANU </tag>
2020-01-27 20:30:21 +08:00
</tags>
</entry>
<entry>
<title>Hello World</title>
<link href="/hello-world/"/>
<url>/hello-world/</url>
2020-02-22 14:53:35 +08:00
<content type="html"><![CDATA[<blockquote><p>原创发表于 <a href="https://blog.davidz.cn">DavidZ Blog</a>,遵循 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" target="_blank" rel="noopener">CC 4.0 BY-NC-SA</a> 版权协议,转载请附上原文出处链接及本声明。</p></blockquote><p>哈哈哈,这是一个经典的测试页面。</p><p>一直以来都想拥有一个自己的博客,从<a href="https://wordpress.org/" target="_blank" rel="noopener">WordPress</a>开始,到<a href="http://typecho.org/" target="_blank" rel="noopener">Typecho</a>,再到<a href="https://halo.run/" target="_blank" rel="noopener">Halo</a>,甚至中途尝试用 Django 自己实现了一个(不过样子也太丑了),虽然说一直在捣鼓博客,但是从来都是安装=&gt;部署=&gt;安装插件=&gt;选择主题=&gt;发布第一篇文章,然后就没有然后了。</p><p>今天我突然看到<a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a>的<a href="https://github.com/TriDiamond/hexo-theme-obsidian" target="_blank" rel="noopener">Obsidian</a>主题,我觉得时机到了,毕竟颜值是第一生产力。</p><p>给自己列一个简单的 TODO LIST 吧。</p><ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 完善 BLOG</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> COMP2310 作业整理</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 浪潮实习</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 终端与 WSL</li></ul><p>希望这个寒假能做完这些吧。</p><p>就这样。</p>]]></content>
2020-01-27 20:30:21 +08:00
<categories>
<category> Personal </category>
</categories>
<tags>
<tag> Others </tag>
</tags>
</entry>
</search>