-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
103 lines (52 loc) · 24.4 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>DRJ's Blog - 技术学习笔记</title>
<subtitle>Notes on Technology learning</subtitle>
<link href="https://www.drjchn.com/atom.xml" rel="self"/>
<link href="https://www.drjchn.com/"/>
<updated>2024-03-07T02:21:37.275Z</updated>
<id>https://www.drjchn.com/</id>
<author>
<name>Renjie Deng</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>JetBrains系列IDE中文输入法问题</title>
<link href="https://www.drjchn.com/2021/04/21/jetbrains-input/"/>
<id>https://www.drjchn.com/2021/04/21/jetbrains-input/</id>
<published>2021-04-21T11:16:04.000Z</published>
<updated>2024-03-07T02:21:37.275Z</updated>
<content type="html"><![CDATA[<h2 id="Introduction"><a href="#Introduction" class="headerlink" title="Introduction"></a>Introduction</h2><p>最近在Linux上用JetBrains系列IDE的时候经常不能正常输入中文字符串,在网上查了一圈以后用的方法基本都是改环境变量或者换jbr(JetBrains Runtime)。前者没有效果,后者经过我的尝试只有一个特定老版本的Runtime可以正常用。最后在<strong>ibus-libpinyin</strong>的issue里面找到了解决方法。</p><h2 id="Method"><a href="#Method" class="headerlink" title="Method"></a>Method</h2><ol><li>打开IDE后进入 <code>Help -> Edit Custom VM Options...</code></li><li>在文件最后一行输入 <code>-Drecreate.x11.input.method=true</code></li><li>重启IDE</li></ol><h2 id="Reference"><a href="#Reference" class="headerlink" title="Reference"></a>Reference</h2><ul><li><a href="https://youtrack.jetbrains.com/issue/IDEA-23472">Editors stop responding to keyboard input, must restart IntellIJ </a></li></ul>]]></content>
<summary type="html"><h2 id="Introduction"><a href="#Introduction" class="headerlink" title="Introduction"></a>Introduction</h2><p>最近在Linux上用JetBrains系列IDE的时候经常不</summary>
<category term="Development" scheme="https://www.drjchn.com/categories/Development/"/>
<category term="JetBrains" scheme="https://www.drjchn.com/tags/JetBrains/"/>
<category term="中文输入" scheme="https://www.drjchn.com/tags/%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5/"/>
<category term="Linux" scheme="https://www.drjchn.com/tags/Linux/"/>
<category term="Ubuntu" scheme="https://www.drjchn.com/tags/Ubuntu/"/>
</entry>
<entry>
<title>使用Travis-CI或Circle-CI构建C++项目</title>
<link href="https://www.drjchn.com/2021/04/04/using-circleci/"/>
<id>https://www.drjchn.com/2021/04/04/using-circleci/</id>
<published>2021-04-04T09:51:22.000Z</published>
<updated>2024-03-07T02:21:37.275Z</updated>
<content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近几个星期整理了自己的服务器,把大部分服务都迁移到了Docker上,有些正在开发或者经常需要更新的项目也在Docker Hub配置了发Release自动构建镜像。然后过了几天以后突发奇想打算给一些正在维护的项目加上CI。刚开始因为Travis-CI比较有名,就打算用Travis-CI持续构建,结果折腾了一天以后发现Travis-CI过一段时间就要收费了,只好在<a href="https://shields.io/">shields.io</a>支持的CI里面看了一圈,最后决定采用Circle-CI。</p><h2 id="步骤"><a href="#步骤" class="headerlink" title="步骤"></a>步骤</h2><p>一般来说,持续构建的步骤里面有包括跑测试,不过因为我的项目都比较小,没有专门写过测试,构建步骤里面就直接编译了。</p><p>Travis-CI和Circle-CI虽然一个采用虚拟机,一个主推Docker,但是基本上默认系统都是Ubuntu,所以虽然配置文件不大一样,但是里面包含的步骤都基本如下:</p><ul><li>通过apt安装依赖,如<code>gcc</code>, <code>cmake</code>, <code>libboost-all-dev</code>等</li><li>编译安装依赖(如果apt没有)</li><li>编译</li><li>后续操作,如部署,发布等</li></ul><p>如果在apt安装依赖时出现问题,可能需要加上<code>sudo apt update</code>。</p><h2 id="Travis-CI-V-S-Circle-CI"><a href="#Travis-CI-V-S-Circle-CI" class="headerlink" title="Travis-CI V.S Circle-CI"></a>Travis-CI V.S Circle-CI</h2><p>由于前期采用了Travis-CI进行构建,在这里可以通过配置文件对两个CI进行相同工作进行对比。<br><strong>Travis-CI:</strong></p><figure class="highlight yaml"><figcaption><span>.travis.yml</span></figcaption><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><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">language:</span> <span class="string">cpp</span></span><br><span class="line"><span class="attr">sudo:</span> <span class="string">required</span></span><br><span class="line"><span class="attr">dist:</span> <span class="string">bionic</span></span><br><span class="line"><span class="attr">addons:</span></span><br><span class="line"> <span class="attr">ssh_known_hosts:</span> <span class="string">example.com</span></span><br><span class="line"> <span class="attr">apt:</span></span><br><span class="line"> <span class="attr">packages:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">cmake</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">gcc</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">g++</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">libjsoncpp-dev</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">uuid-dev</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">zlib1g-dev</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">openssl</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">libssl-dev</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">mariadb-client</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">mariadb-server</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">build-essential</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">libboost-all-dev</span></span><br><span class="line"><span class="attr">before_install:</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">openssl</span> <span class="string">aes-256-cbc</span> <span class="string">-K</span> <span class="string">$encrypted_5c5e58b15b48_key</span> <span class="string">-iv</span> <span class="string">$encrypted_5c5e58b15b48_iv</span></span><br><span class="line"> <span class="string">-in</span> <span class="string">id_rsa.enc</span> <span class="string">-out</span> <span class="string">~/.ssh/id_rsa</span> <span class="string">-d</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">chmod</span> <span class="number">600</span> <span class="string">~/.ssh/id_rsa</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">wget</span> <span class="string">https://github.com/google/googletest/archive/release-1.10.0.tar.gz</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">tar</span> <span class="string">xf</span> <span class="string">release-1.10.0.tar.gz</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">cd</span> <span class="string">googletest-release-1.10.0</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">cmake</span> <span class="string">.</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">make</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">sudo</span> <span class="string">make</span> <span class="string">install</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">cd</span> <span class="bullet">-</span></span><br><span class="line"><span class="attr">script:</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">git</span> <span class="string">submodule</span> <span class="string">update</span> <span class="string">--init</span> <span class="string">--recursive</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">mkdir</span> <span class="string">build</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">cd</span> <span class="string">build</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">cmake</span> <span class="string">..</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">make</span></span><br><span class="line"><span class="attr">after_success:</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">mkdir</span> <span class="string">shorturl</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">mv</span> <span class="string">etc/</span> <span class="string">static/</span> <span class="string">ShortURL</span> <span class="string">shorturl</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">tar</span> <span class="string">Jcvf</span> <span class="string">shorturl.tar.xz</span> <span class="string">shorturl/</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">scp</span> <span class="string">shorturl.tar.xz</span> <span class="string">[email protected]:~</span></span><br></pre></td></tr></table></figure><p><strong>Circle-CI:</strong></p><figure class="highlight yaml"><figcaption><span>.circleci/config.yaml</span></figcaption><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><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">version:</span> <span class="number">2.1</span></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line"> <span class="attr">build:</span></span><br><span class="line"> <span class="attr">docker:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">image:</span> <span class="string">circleci/buildpack-deps:focal</span></span><br><span class="line"></span><br><span class="line"> <span class="attr">steps:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">checkout</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">add_ssh_keys:</span></span><br><span class="line"> <span class="attr">fingerprints:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">"aa:bb:cc:dd:ee:ff:gg:hh:c1:d4:f3:88:d4:26:8f:95"</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"> <span class="string">sudo</span> <span class="string">apt</span> <span class="string">install</span> <span class="string">cmake</span> <span class="string">gcc</span> <span class="string">g++</span> <span class="string">libjsoncpp-dev</span> <span class="string">uuid-dev</span> <span class="string">zlib1g-dev</span> <span class="string">openssl</span> <span class="string">\</span></span><br><span class="line"> <span class="string">libssl-dev</span> <span class="string">mariadb-client</span> <span class="string">mariadb-server</span> <span class="string">build-essential</span> <span class="string">libboost-all-dev</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"> <span class="string">wget</span> <span class="string">https://github.com/google/googletest/archive/release-1.10.0.tar.gz</span></span><br><span class="line"> <span class="string">tar</span> <span class="string">xf</span> <span class="string">release-1.10.0.tar.gz</span> <span class="string">-C</span> <span class="string">~/</span></span><br><span class="line"> <span class="string">cd</span> <span class="string">~/googletest-release-1.10.0</span></span><br><span class="line"> <span class="string">cmake</span> <span class="string">.</span></span><br><span class="line"> <span class="string">make</span></span><br><span class="line"> <span class="string">sudo</span> <span class="string">make</span> <span class="string">install</span></span><br><span class="line"> <span class="string">cd</span> <span class="bullet">-</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"> <span class="string">git</span> <span class="string">submodule</span> <span class="string">update</span> <span class="string">--init</span> <span class="string">--recursive</span></span><br><span class="line"> <span class="string">mkdir</span> <span class="string">build</span></span><br><span class="line"> <span class="string">cd</span> <span class="string">build</span></span><br><span class="line"> <span class="string">cmake</span> <span class="string">..</span></span><br><span class="line"> <span class="string">make</span></span><br><span class="line"> <span class="string">mkdir</span> <span class="string">shorturl</span></span><br><span class="line"> <span class="string">mv</span> <span class="string">etc/</span> <span class="string">static/</span> <span class="string">ShortURL</span> <span class="string">shorturl</span></span><br><span class="line"> <span class="string">tar</span> <span class="string">Jcvf</span> <span class="string">shorturl.tar.xz</span> <span class="string">shorturl/</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"> <span class="string">ssh-keyscan</span> <span class="string">-t</span> <span class="string">rsa</span> <span class="string">example.com</span> <span class="string">>></span> <span class="string">~/.ssh/known_hosts</span></span><br><span class="line"> <span class="string">scp</span> <span class="string">build/shorturl.tar.xz</span> <span class="string">[email protected]:~</span></span><br><span class="line"></span><br><span class="line"><span class="attr">workflows:</span></span><br><span class="line"> <span class="attr">version:</span> <span class="number">2</span></span><br><span class="line"> <span class="attr">master_build:</span></span><br><span class="line"> <span class="attr">jobs:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">build:</span></span><br><span class="line"> <span class="attr">filters:</span></span><br><span class="line"> <span class="attr">branches:</span></span><br><span class="line"> <span class="attr">only:</span> <span class="string">master</span></span><br></pre></td></tr></table></figure><h3 id="配置文件"><a href="#配置文件" class="headerlink" title="配置文件"></a>配置文件</h3><p>Travis-CI和Circle-CI都采用yaml作为配置文件,Travis-CI的配置文件一般都是自己编写,然后push到github上面来触发构建,而Circle-CI则更为先进。Circle-CI在线上有专门的编辑器,在初次设置项目的时候会自动开一个新的分支并给出示例配置文件。在编辑配置文件时有自动检查功能,如果构建失败了还可以直接在线上编辑配置文件。这样的话相对于新手会有更好的体验。</p><h3 id="工作流程"><a href="#工作流程" class="headerlink" title="工作流程"></a>工作流程</h3><p>Travis-CI 把工作流程分成<code>before_install</code>, <code>install</code>, <code>before_script</code>, <code>script</code>, <code>after_success</code>等阶段。其中<code>install</code>系列与安装依赖阶段有关,<code>script</code>系列与构建阶段有关。而Circle-CI则是全部用<code>run</code>来代替。如果需要同时构建多个平台的Release,Travis-CI可以通过matrix来进行,而Circle-CI则是在workflow中包含多个jobs来代替。在构建流程中,Travis-CI 一般会直接到代码根目录,而Circle-CI一般需要在第一步用<code>- checkout</code>来定位到代码根目录。后面每次新开一个<code>run</code>都会自动切回代码根目录。</p><h3 id="运行环境"><a href="#运行环境" class="headerlink" title="运行环境"></a>运行环境</h3><p>Travis-CI一般采用预装好运行环境的虚拟机来运行,而Circle-CI则是主推docker运行。虽然看起来不同,但是即使在Circle-CI里面也可以把Docker直接当成一个虚拟机来看待。Circle-CI的docker镜像和一般的docker镜像不太一样。一般的docker镜像都是默认root用户,但是Circle-CI自己构建的docker镜像如果需要进行root操作,需要在命令之前加上<code>sudo</code>。Circle-CI的sudo默认不需要密码,而不是像Travis-CI一样需要提前指定需要sudo权限来避免输密码导致构建停止。</p><h3 id="自带功能"><a href="#自带功能" class="headerlink" title="自带功能"></a>自带功能</h3><p>Travis-CI似乎自带功能多一些,比如可以加密文件并自动把解密步骤放到配置文件里面,在Circle-CI里面的解决办法一般就是把密码写在Project Settings的环境变量里面,然后自己写命令来解密。如果涉及到把编译好的文件放到自己的服务器上或者一些git操作,Circle-CI支持上传SSH Key,就不需要像Travis-CI一样把SSH Key加密然后放到repo里面。</p><p>虽然Circle-CI在配置文件上自带功能少一些,但是通过像写bash脚本一样把Linux命令加上去也可以实现一样的效果。</p>]]></content>
<summary type="html"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近几个星期整理了自己的服务器,把大部分服务都迁移到了Docker上,有些正在开发或者经常需要更新的项目也在Docker Hub配置了发Re</summary>
<category term="Deployment" scheme="https://www.drjchn.com/categories/Deployment/"/>
<category term="CircleCI" scheme="https://www.drjchn.com/tags/CircleCI/"/>
<category term="Travis-CI" scheme="https://www.drjchn.com/tags/Travis-CI/"/>
<category term="CI" scheme="https://www.drjchn.com/tags/CI/"/>
<category term="Continuous Integration" scheme="https://www.drjchn.com/tags/Continuous-Integration/"/>
</entry>
<entry>
<title>Hello World</title>
<link href="https://www.drjchn.com/2021/04/02/hello-world/"/>
<id>https://www.drjchn.com/2021/04/02/hello-world/</id>
<published>2021-04-02T20:56:20.000Z</published>
<updated>2024-03-07T02:21:37.275Z</updated>
<content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p><h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">"My New Post"</span></span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/writing.html">Writing</a></p><h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/server.html">Server</a></p><h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/generating.html">Generating</a></p><h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p>]]></content>
<summary type="html"><p>Welcome to <a href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/">documentation</a> for</summary>
<category term="Deployment" scheme="https://www.drjchn.com/categories/Deployment/"/>
<category term="hexo" scheme="https://www.drjchn.com/tags/hexo/"/>
</entry>
</feed>