-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
147 lines (70 loc) · 48.1 KB
/
Copy pathsearch.xml
File metadata and controls
147 lines (70 loc) · 48.1 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>Caddy 反向代理 google</title>
<link href="/2022/07/09/caddy/"/>
<url>/2022/07/09/caddy/</url>
<content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>Caddy 是一个 Go 编写的 Web 服务器,类似于 Nginx,Caddy 提供了更加强大的功能,随着 v2 版本发布 Caddy 已经可以作为中小型站点 Web 服务器的另一个选择;相较于 Nginx 来说使用 Caddy 的优势如下:</p><ul><li>自动的 HTTPS 证书申请(ACME HTTP/DNS 挑战)</li><li>自动证书续期以及 OCSP stapling 等</li><li>更高的安全性包括但不限于 TLS 配置以及内存安全等</li><li>友好且强大的配置文件支持</li><li>支持 API 动态调整配置(有木有人可以搞个 Dashboard?)</li><li>支持 HTTP3(QUIC)</li><li>支持动态后端,例如连接 Consul、作为 k8s ingress 等</li><li>后端多种负载策略以及健康检测等</li><li>本身 Go 编写,高度模块化的系统方便扩展(CoreDNS 基于 Caddy1 开发)</li></ul><p>就目前来说,Caddy 对于我个人印象唯一的缺点就是性能没有 Nginx 高,但是这是个仁者见仁智者见智的问题;相较于提供的这些便利性,在性能可接受的情况下完全有理由切换到 Caddy。</p><h2 id="常用命令"><a href="#常用命令" class="headerlink" title="常用命令"></a>常用命令</h2><figure class="highlight text"><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></pre></td><td class="code"><pre><span class="line">commands:</span><br><span class="line"> adapt Adapts a configuration to Caddy's native JSON</span><br><span class="line"> add-package Adds Caddy packages (EXPERIMENTAL)</span><br><span class="line"> build-info Prints information about this build</span><br><span class="line"> environ Prints the environment</span><br><span class="line"> file-server Spins up a production-ready file server</span><br><span class="line"> fmt Formats a Caddyfile</span><br><span class="line"> hash-password Hashes a password and writes base64</span><br><span class="line"> help Shows help for a Caddy subcommand</span><br><span class="line"> list-modules Lists the installed Caddy modules</span><br><span class="line"> reload Changes the config of the running Caddy instance</span><br><span class="line"> remove-package Removes Caddy packages (EXPERIMENTAL)</span><br><span class="line"> reverse-proxy A quick and production-ready reverse proxy</span><br><span class="line"> run Starts the Caddy process and blocks indefinitely</span><br><span class="line"> start Starts the Caddy process in the background and then returns</span><br><span class="line"> stop Gracefully stops a started Caddy process</span><br><span class="line"> trust Installs a CA certificate into local trust stores</span><br><span class="line"> untrust Untrusts a locally-trusted CA certificate</span><br><span class="line"> upgrade Upgrade Caddy (EXPERIMENTAL)</span><br><span class="line"> validate Tests whether a configuration file is valid</span><br><span class="line"> version Prints the version</span><br></pre></td></tr></table></figure><h2 id="配置google反向代理"><a href="#配置google反向代理" class="headerlink" title="配置google反向代理"></a>配置google反向代理</h2><p>假设域名为:<code>example.com</code> ,且配置DNS A类解析为:<code>google.example.com</code></p><p>修改 <code>/etc/caddy/Caddyfile</code> 配置文件</p><figure class="highlight text"><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></pre></td><td class="code"><pre><span class="line">google.example.com {</span><br><span class="line"> reverse_proxy https://www.google.com {</span><br><span class="line"> header_up Host {upstream_hostport}</span><br><span class="line"> header_up X-Real-IP {remote}</span><br><span class="line"> header_up X-Forwarded-For {remote}</span><br><span class="line"> header_up User-Agent {>User-Agent}</span><br><span class="line"> header_up Accept-Language zh-CN</span><br><span class="line"> header_up Accept-Encoding identity</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">import sites/*</span><br></pre></td></tr></table></figure><p>修改完执行:</p><figure class="highlight text"><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></pre></td><td class="code"><pre><span class="line">## 校验配置文件</span><br><span class="line">caddy validate</span><br><span class="line"></span><br><span class="line">## 重新加载配置文件</span><br><span class="line">caddy reload</span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category> tool </category>
</categories>
<tags>
<tag> tool </tag>
</tags>
</entry>
<entry>
<title>Hello World</title>
<link href="/2022/05/29/hello-world/"/>
<url>/2022/05/29/hello-world/</url>
<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>
</entry>
<entry>
<title>Python 简单使用</title>
<link href="/2022/05/28/how-to-use-python/"/>
<url>/2022/05/28/how-to-use-python/</url>
<content type="html"><![CDATA[<h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>安装pip3:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt install python3-pip</span><br></pre></td></tr></table></figure><p>配置国内源:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim ~/.pip/pip.conf</span><br></pre></td></tr></table></figure><figure class="highlight text"><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></pre></td><td class="code"><pre><span class="line"># 阿里源</span><br><span class="line">[global]</span><br><span class="line">index-url = https://mirrors.aliyun.com/pypi/simple</span><br><span class="line">[install]</span><br><span class="line">trusted-host = mirrors.aliyun.com</span><br><span class="line"></span><br><span class="line"># 豆瓣源</span><br><span class="line">[global]</span><br><span class="line">index-url = http://pypi.douban.com/simple</span><br><span class="line">[install]</span><br><span class="line">trusted-host = pypi.douban.com</span><br><span class="line"></span><br><span class="line"># 清华源</span><br><span class="line">[global]</span><br><span class="line">index-url = https://pypi.tuna.tsinghua.edu.cn/simple</span><br><span class="line">[install]</span><br><span class="line">trusted-host = pypi.tuna.tsinghua.edu.cn</span><br></pre></td></tr></table></figure><p>更新pip3:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python3 -m pip install --upgrade pip</span><br></pre></td></tr></table></figure><h2 id="数据类型"><a href="#数据类型" class="headerlink" title="数据类型"></a>数据类型</h2><h3 id="list"><a href="#list" class="headerlink" title="list"></a>list</h3><p>声明list:</p><figure class="highlight python"><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></pre></td><td class="code"><pre><span class="line">l = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>]</span><br><span class="line"></span><br><span class="line">la = l[:] <span class="comment"># ['a', 'b', 'c', 'd', 'e']</span></span><br><span class="line"></span><br><span class="line">lb = l[:<span class="number">3</span>] <span class="comment"># ['a', 'b', 'c']</span></span><br><span class="line"></span><br><span class="line">lc = l[<span class="number">1</span>:] <span class="comment"># ['b', 'c', 'd', 'e']</span></span><br></pre></td></tr></table></figure><p>索引:</p><figure class="highlight text"><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></pre></td><td class="code"><pre><span class="line">列表: ['a', 'b', 'c', 'd', 'e']</span><br><span class="line"> | | | | |</span><br><span class="line">正索引: 0 1 2 3 4</span><br><span class="line">负索引: -5 -4 -3 -2 -1</span><br></pre></td></tr></table></figure><p>判断元素是否存在:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> <span class="string">'a'</span> <span class="keyword">in</span> [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>]:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">'a'</span>)</span><br></pre></td></tr></table></figure><p>遍历:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> x <span class="keyword">in</span> [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>]:</span><br><span class="line"> <span class="built_in">print</span>(x)</span><br></pre></td></tr></table></figure><p>内置方法:</p><figure class="highlight python"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 添加元素</span></span><br><span class="line">a=[<span class="number">1</span>,<span class="number">2</span>];a.append(<span class="string">'a'</span>) <span class="comment"># [1,2,'a']</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 添加元素到指定位置</span></span><br><span class="line">a=[<span class="number">1</span>,<span class="number">2</span>]; a.insert(<span class="number">1</span>, <span class="string">'c'</span>) <span class="comment"># [1, 'c', 2]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除元素</span></span><br><span class="line">a=[<span class="number">1</span>,<span class="number">2</span>]; a.remove(<span class="number">2</span>) <span class="comment"># [1]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除元素并返回某个位置的元素</span></span><br><span class="line">a=[<span class="number">1</span>,<span class="number">2</span>];a.pop(<span class="number">1</span>) <span class="comment"># [1]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 清空列表</span></span><br><span class="line">a=[<span class="number">1</span>,<span class="number">2</span>];a.clear() <span class="comment"># []</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 返回遇到的第一个某值的索引,如果列表不包含该值则抛出错误</span></span><br><span class="line">a=[<span class="number">1</span>,<span class="number">1</span>,<span class="number">1</span>];a.index(<span class="number">1</span>) <span class="comment"># 0</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 返回列表中某值的个数</span></span><br><span class="line">a=[<span class="number">1</span>,<span class="number">1</span>,<span class="number">2</span>];a.count(<span class="number">1</span>) <span class="comment"># 2</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 对列表进行排序</span></span><br><span class="line">a=[<span class="number">3</span>,<span class="number">2</span>,<span class="number">1</span>];a.sort() <span class="comment"># [1,2,3]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表倒置</span></span><br><span class="line">a=[<span class="number">2</span>,<span class="number">1</span>,<span class="number">3</span>];a.reverse() <span class="comment"># [3,1,2]</span></span><br></pre></td></tr></table></figure><h3 id="dict"><a href="#dict" class="headerlink" title="dict"></a>dict</h3><figure class="highlight python"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 声明赋值</span></span><br><span class="line">d = {} <span class="comment"># d = dict()</span></span><br><span class="line">d = {<span class="string">'a'</span>: <span class="number">1</span>, <span class="string">'b'</span>: <span class="number">2</span>, <span class="string">'c'</span>: <span class="number">3</span>}</span><br><span class="line"></span><br><span class="line"><span class="comment"># 取值</span></span><br><span class="line">d.get(<span class="string">'a'</span>) <span class="comment"># 1</span></span><br><span class="line"></span><br><span class="line">d.get(<span class="string">'e'</span>) <span class="comment"># None</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 更新</span></span><br><span class="line">d[<span class="string">'a'</span>] = <span class="number">8</span> <span class="comment"># {'a': 8, 'b': 2, 'c': 3}</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 新增</span></span><br><span class="line">d[<span class="string">'e'</span>] = <span class="number">9</span> <span class="comment"># {'a': 1, 'b': 2, 'c': 3, 'e': 9}</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除某个键及其值</span></span><br><span class="line"><span class="keyword">del</span> d[<span class="string">'c'</span>] <span class="comment"># {'a': 1, 'b': 2}</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除某个键及其值并得到其值</span></span><br><span class="line">d.pop(<span class="string">'c'</span>) <span class="comment"># 3</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 排序</span></span><br><span class="line"><span class="built_in">sorted</span>({<span class="string">'a'</span>: <span class="number">1</span>, <span class="string">'c'</span>: <span class="number">3</span>, <span class="string">'b'</span>: <span class="number">4</span>}) <span class="comment"># ['a', 'b', 'c']</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 清空字典</span></span><br><span class="line">d.clean() <span class="comment"># {}</span></span><br></pre></td></tr></table></figure><p>判断某个键是是否存在:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> <span class="string">'a'</span> <span class="keyword">in</span> {<span class="string">'a'</span>: <span class="number">1</span>, <span class="string">'b'</span>: <span class="number">2</span>, <span class="string">'c'</span>: <span class="number">3</span>}:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">'exist'</span>)</span><br></pre></td></tr></table></figure><p>遍历字典:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> key <span class="keyword">in</span> {<span class="string">'a'</span>: <span class="number">1</span>, <span class="string">'b'</span>: <span class="number">2</span>, <span class="string">'c'</span>: <span class="number">3</span>}: </span><br><span class="line"> <span class="built_in">print</span>(key)</span><br></pre></td></tr></table></figure><h2 id="字符串格式化"><a href="#字符串格式化" class="headerlink" title="字符串格式化"></a>字符串格式化</h2><figure class="highlight python"><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">print</span>(<span class="string">'I am learning {} with {}'</span>.<span class="built_in">format</span>(<span class="string">'Python'</span>, <span class="string">'blog'</span>))</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">'I am learning {0} with {1}'</span>.<span class="built_in">format</span>(<span class="string">'Python'</span>, <span class="string">'blog'</span>))</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">'I am learning {skill} with {method}'</span>.<span class="built_in">format</span>(skill=<span class="string">'Python'</span>, method=<span class="string">'blog'</span>))</span><br></pre></td></tr></table></figure><h2 id="读取文件"><a href="#读取文件" class="headerlink" title="读取文件"></a>读取文件</h2><figure class="highlight python"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> csv</span><br><span class="line"></span><br><span class="line"><span class="comment"># 写文件</span></span><br><span class="line">f = <span class="built_in">open</span>(<span class="string">"a.txt"</span>, <span class="string">"w+"</span>)</span><br><span class="line">f.write(<span class="string">"test"</span>)</span><br><span class="line">f.close()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 读文件</span></span><br><span class="line">f = <span class="built_in">open</span>(<span class="string">"a.txt"</span>, <span class="string">"r"</span>)</span><br><span class="line">data = f.read()</span><br><span class="line">f.close()</span><br><span class="line"><span class="built_in">print</span>(data)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 写csv</span></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">'a.csv'</span>, mode=<span class="string">'w'</span>, newline=<span class="string">''</span>) <span class="keyword">as</span> f:</span><br><span class="line"> w = csv.writer(f, delimiter=<span class="string">','</span>)</span><br><span class="line"> w.writerow([<span class="string">'Name'</span>, <span class="string">'Age'</span>])</span><br><span class="line"> w.writerow([<span class="string">'zhangsan'</span>, <span class="string">'18'</span>])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 读csv</span></span><br><span class="line"><span class="keyword">with</span> <span class="built_in">open</span>(<span class="string">'a.csv'</span>, mode=<span class="string">'r'</span>) <span class="keyword">as</span> f:</span><br><span class="line"> r = csv.reader(f, delimiter=<span class="string">','</span>)</span><br><span class="line"> <span class="keyword">for</span> row <span class="keyword">in</span> r:</span><br><span class="line"> <span class="built_in">print</span>(row)</span><br></pre></td></tr></table></figure><table><thead><tr><th>操作模式</th><th>描述</th></tr></thead><tbody><tr><td>‘r’</td><td>默认模式,即只读模式</td></tr><tr><td>‘w’</td><td>写入模式。如果文件不存在,则创建一个文件</td></tr><tr><td>‘x’</td><td>创建新文件,如果文件存在,则操作失败</td></tr><tr><td>‘a’</td><td>追加模式,如果文件不存在,则创建一个文件</td></tr><tr><td>‘b’</td><td>以二进制模式打开文件</td></tr><tr><td>‘+’</td><td>读写模式, 适合更新文件</td></tr></tbody></table><h2 id="日志"><a href="#日志" class="headerlink" title="日志"></a>日志</h2><figure class="highlight python"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 基础配置</span></span><br><span class="line"><span class="keyword">import</span> logging</span><br><span class="line">logging.basicConfig(filename=<span class="string">"a.log"</span>, level=logging.DEBUG)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 持久化文件,备份,日志切割</span></span><br><span class="line">file_handler = TimedRotatingFileHandler(‘<span class="string">'logs/api.log'</span>),</span><br><span class="line"> when=<span class="string">"D"</span>, interval=<span class="number">1</span>, backupCount=<span class="number">10</span>,</span><br><span class="line"> encoding=<span class="string">"UTF-8"</span>, delay=<span class="literal">False</span>, utc=<span class="literal">True</span>)</span><br><span class="line">formatter = logging.Formatter(<span class="string">'%(asctime)s - %(name)s - %(levelname)s - %(message)s'</span>)</span><br><span class="line">file_handler.setFormatter(formatter)</span><br><span class="line">file_handler.setLevel(logging.INFO)</span><br><span class="line">logger.addHandler(file_handler)</span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category> python </category>
</categories>
<tags>
<tag> python </tag>
</tags>
</entry>
<entry>
<title>Makefile 简单使用</title>
<link href="/2022/05/28/how-to-use-makefile/"/>
<url>/2022/05/28/how-to-use-makefile/</url>
<content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>简单记录使用makefile</p><h2 id="开始"><a href="#开始" class="headerlink" title="开始"></a>开始</h2><figure class="highlight makefile"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">hello:</span></span><br><span class="line"> echo <span class="string">"hello world"</span></span><br></pre></td></tr></table></figure><h2 id="变量声明"><a href="#变量声明" class="headerlink" title="变量声明"></a>变量声明</h2><figure class="highlight makefile"><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></pre></td><td class="code"><pre><span class="line">files := file1 file2</span><br><span class="line"><span class="section">some_file: <span class="variable">$(files)</span></span></span><br><span class="line"> echo <span class="string">"Look at this variable: "</span> <span class="variable">$(files)</span></span><br><span class="line"> touch some_file</span><br><span class="line"></span><br><span class="line"><span class="section">file1:</span></span><br><span class="line"> touch file1</span><br><span class="line"><span class="section">file2:</span></span><br><span class="line"> touch file2</span><br><span class="line"></span><br><span class="line"><span class="section">clean:</span></span><br><span class="line"> rm -f file1 file2 some_file</span><br></pre></td></tr></table></figure><ul><li>变量声明使用 <code>:=</code> <code>=</code></li><li>引用变量使用 <code>${}</code> <code>$()</code>,不推荐 <code>$</code></li></ul><h2 id="目标"><a href="#目标" class="headerlink" title="目标"></a>目标</h2><figure class="highlight makefile"><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></pre></td><td class="code"><pre><span class="line"><span class="section">all: one two three</span></span><br><span class="line"></span><br><span class="line"><span class="section">one:</span></span><br><span class="line"> touch one</span><br><span class="line"><span class="section">two:</span></span><br><span class="line"> touch two</span><br><span class="line"><span class="section">three:</span></span><br><span class="line"> touch three</span><br><span class="line"></span><br><span class="line"><span class="section">clean:</span></span><br><span class="line"> rm -f one two three</span><br></pre></td></tr></table></figure><p>运行 <code>all</code> 可执行所有命令</p><figure class="highlight makefile"><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></pre></td><td class="code"><pre><span class="line"><span class="section">all: one two</span></span><br><span class="line"></span><br><span class="line">one two:</span><br><span class="line"> echo <span class="variable">$@</span></span><br></pre></td></tr></table></figure><h2 id="自动推导类型"><a href="#自动推导类型" class="headerlink" title="自动推导类型"></a>自动推导类型</h2><figure class="highlight makefile"><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></pre></td><td class="code"><pre><span class="line"><span class="section">hey: one two</span></span><br><span class="line"> <span class="comment"># Outputs "hey", since this is the first target</span></span><br><span class="line"> echo <span class="variable">$@</span></span><br><span class="line"></span><br><span class="line"> <span class="comment"># Outputs all prerequisites newer than the target</span></span><br><span class="line"> echo <span class="variable">$?</span></span><br><span class="line"></span><br><span class="line"> <span class="comment"># Outputs all prerequisites</span></span><br><span class="line"> echo <span class="variable">$^</span></span><br><span class="line"></span><br><span class="line"> touch hey</span><br><span class="line"></span><br><span class="line"><span class="section">one:</span></span><br><span class="line"> touch one</span><br><span class="line"></span><br><span class="line"><span class="section">two:</span></span><br><span class="line"> touch two</span><br><span class="line"></span><br><span class="line"><span class="section">clean:</span></span><br><span class="line"> rm -f hey one two</span><br></pre></td></tr></table></figure><p>更多自动推导变量查看<a href="https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html">GUI make</a></p><h2 id="if-x2F-else条件"><a href="#if-x2F-else条件" class="headerlink" title="if/else条件"></a>if/else条件</h2><figure class="highlight makefile"><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></pre></td><td class="code"><pre><span class="line">foo = ok</span><br><span class="line"></span><br><span class="line"><span class="section">all:</span></span><br><span class="line"><span class="keyword">ifeq</span> (<span class="variable">$(foo)</span>, ok)</span><br><span class="line"> echo <span class="string">"foo equals ok"</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"> echo <span class="string">"nope"</span></span><br><span class="line"><span class="keyword">endif</span></span><br></pre></td></tr></table></figure><h2 id="判断变量是否为空"><a href="#判断变量是否为空" class="headerlink" title="判断变量是否为空"></a>判断变量是否为空</h2><figure class="highlight makefile"><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></pre></td><td class="code"><pre><span class="line">nullstring =</span><br><span class="line">foo = <span class="variable">$(nullstring)</span> <span class="comment"># end of line; there is a space here</span></span><br><span class="line"></span><br><span class="line"><span class="section">all:</span></span><br><span class="line"><span class="keyword">ifeq</span> (<span class="variable">$(<span class="built_in">strip</span> <span class="variable">$(foo)</span>)</span>,)</span><br><span class="line"> echo <span class="string">"foo is empty after being stripped"</span></span><br><span class="line"><span class="keyword">endif</span></span><br><span class="line"><span class="keyword">ifeq</span> (<span class="variable">$(nullstring)</span>,)</span><br><span class="line"> echo <span class="string">"nullstring doesn't even have spaces"</span></span><br><span class="line"><span class="keyword">endif</span></span><br></pre></td></tr></table></figure><h2 id="判断变量是否声明"><a href="#判断变量是否声明" class="headerlink" title="判断变量是否声明"></a>判断变量是否声明</h2><figure class="highlight makefile"><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></pre></td><td class="code"><pre><span class="line">bar =</span><br><span class="line">foo = <span class="variable">$(bar)</span></span><br><span class="line"></span><br><span class="line"><span class="section">all:</span></span><br><span class="line"><span class="keyword">ifdef</span> foo</span><br><span class="line"> echo <span class="string">"foo is defined"</span></span><br><span class="line"><span class="keyword">endif</span></span><br><span class="line"><span class="keyword">ifdef</span> bar</span><br><span class="line"> echo <span class="string">"but bar is not"</span></span><br><span class="line"><span class="keyword">endif</span></span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category> tool </category>
</categories>
<tags>
<tag> tool </tag>
<tag> makefile </tag>
</tags>
</entry>
<entry>
<title>Hexo 简单使用</title>
<link href="/2022/05/27/how-to-use-hexo/"/>
<url>/2022/05/27/how-to-use-hexo/</url>
<content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>简单记录常见hexo博客使用的命令</p><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g hexo-cli && npm install hexo</span><br></pre></td></tr></table></figure><h2 id="建站"><a href="#建站" class="headerlink" title="建站"></a>建站</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo init <folder></span><br><span class="line">cd <folder></span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><p>目录如下:</p><figure class="highlight txt"><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></pre></td><td class="code"><pre><span class="line">.</span><br><span class="line">├── _config.yml</span><br><span class="line">├── package.json</span><br><span class="line">├── scaffolds</span><br><span class="line">├── source</span><br><span class="line">| ├── _drafts</span><br><span class="line">| └── _posts</span><br><span class="line">└── themes</span><br></pre></td></tr></table></figure><h2 id="新建独立页"><a href="#新建独立页" class="headerlink" title="新建独立页"></a>新建独立页</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo new page "about"</span><br></pre></td></tr></table></figure><h2 id="新建文章"><a href="#新建文章" class="headerlink" title="新建文章"></a>新建文章</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo new post "hello world"</span><br></pre></td></tr></table></figure><h2 id="标签与分类"><a href="#标签与分类" class="headerlink" title="标签与分类"></a>标签与分类</h2><figure class="highlight shell"><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></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">title: Hello World</span><br><span class="line">date: 2022/5/35 23:46:25</span><br><span class="line">tags:</span><br><span class="line">- tag1</span><br><span class="line">- tag2</span><br><span class="line">categories:</span><br><span class="line">- category1</span><br><span class="line">---</span><br></pre></td></tr></table></figure><h2 id="生成博客"><a href="#生成博客" class="headerlink" title="生成博客"></a>生成博客</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo clean && hexo g && hexo s</span><br></pre></td></tr></table></figure><h2 id="部署github-page"><a href="#部署github-page" class="headerlink" title="部署github page"></a>部署github page</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm i hexo-deployer-git</span><br></pre></td></tr></table></figure><figure class="highlight yml"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># _config.yml 配置</span></span><br><span class="line"><span class="attr">deploy:</span></span><br><span class="line"> <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line"> <span class="attr">repo:</span> <span class="string">https://github.com/<username>/<project></span></span><br><span class="line"> <span class="comment"># example, https://github.com/hexojs/hexojs.github.io</span></span><br><span class="line"> <span class="attr">branch:</span> <span class="string">main</span></span><br></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo clean && hexo deploy</span><br></pre></td></tr></table></figure>]]></content>
<categories>
<category> hexo </category>
</categories>
<tags>
<tag> hexo </tag>
</tags>
</entry>
<entry>
<title>Code 效率工具</title>
<link href="/2022/05/27/code-tool/"/>
<url>/2022/05/27/code-tool/</url>
<content type="html"><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>收集平时好用的开发软件或插件</p><h2 id="vscode"><a href="#vscode" class="headerlink" title="vscode"></a>vscode</h2><table><thead><tr><th>插件名称</th><th>插件描述</th></tr></thead><tbody><tr><td>Go</td><td>Go 语言插件。</td></tr><tr><td>VSCode Great Icons</td><td>VSCode 美化不同的文件。</td></tr><tr><td>vscode-icons</td><td>VSCode 美化不同的文件。</td></tr><tr><td>Vim</td><td>Vim 插件</td></tr><tr><td>Better Comments</td><td>代码注释</td></tr><tr><td>Terminal</td><td>命令行工具插件。</td></tr><tr><td>filesize</td><td>在 VSCode 底部工具栏,非常方便的显示文件大小。</td></tr><tr><td>WakaTime</td><td>统计项目代码的时间。</td></tr><tr><td>Code Runner</td><td>针对非常多的语言而快速方便执行的小插件。</td></tr><tr><td>GitLens</td><td>非常方便的查看文件代码的 commit 信息(提交时间,提交人等)。</td></tr><tr><td>markdownlint</td><td>格式化markdown语法</td></tr><tr><td>Docker</td><td>创建、管理docker应用</td></tr><tr><td>Bracket Pair Colorizer 2</td><td>代码块染色</td></tr></tbody></table><h2 id="k8s"><a href="#k8s" class="headerlink" title="k8s"></a>k8s</h2><table><thead><tr><th>插件名称</th><th>插件描述</th></tr></thead><tbody><tr><td>kube-shell</td><td>kubectl语法提示</td></tr></tbody></table><h2 id="mysql"><a href="#mysql" class="headerlink" title="mysql"></a>mysql</h2><table><thead><tr><th>插件名称</th><th>插件描述</th></tr></thead><tbody><tr><td>navicat</td><td>连接MySQL客户端工具</td></tr></tbody></table><h2 id="zsh"><a href="#zsh" class="headerlink" title="zsh"></a>zsh</h2><table><thead><tr><th>插件名称</th><th>插件描述</th></tr></thead><tbody><tr><td>zsh-autosuggestions</td><td>历史命令补全</td></tr><tr><td>zsh-syntax-highlighting</td><td>语法高亮</td></tr><tr><td>git</td><td>git命令缩写</td></tr></tbody></table><h2 id="goland"><a href="#goland" class="headerlink" title="goland"></a>goland</h2><table><thead><tr><th>插件名称</th><th>插件描述</th></tr></thead><tbody><tr><td>Statistic</td><td>统计代码行数</td></tr><tr><td>GitToolBox</td><td>git提交信息</td></tr><tr><td>highlihgtBracketPair</td><td>代码块高亮</td></tr></tbody></table>]]></content>
<categories>
<category> tool </category>
</categories>
<tags>
<tag> tool </tag>
</tags>
</entry>
</search>