-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
190 lines (163 loc) · 13.3 KB
/
index.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
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Home on tobefan</title>
<link>/</link>
<description>Recent content in Home on tobefan</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-hans</language>
<lastBuildDate>Sat, 22 Jun 2019 19:27:25 +0800</lastBuildDate>
<atom:link href="/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>核心数据结构</title>
<link>/5-learn/data_struct/</link>
<pubDate>Wed, 13 Nov 2019 12:39:07 +0800</pubDate>
<guid>/5-learn/data_struct/</guid>
<description>简介 可以阅读一下 程序员面试经典(第6版), 其中第 7 章是可以公开阅读的, 第 7 章 技术面试题.
里面介绍了一下解面试题的技巧, 但第一步是熟练掌握核心的数据结构算法和概念.
数据结构 算法 概念 链表 广度优先搜索 位操作 树、单词查找树、图 深度优先搜索 内存(堆和栈) 栈和队列 二分查找 递归 堆 归并排序 动态规划 向量/数组列表 快排 大 O 时间及空间 散列表 只记录最基础常见的内容, Python 实现.
数据结构 链表 链表是一种线性表, 通过在每个节点上存储下一个节点的指针, 来实现对整个链表的访问.
链表插入删除可以达到 O(1), 查找需要 O(n).
class Node: def __init__(self, item, next): self.</description>
</item>
<item>
<title>使用 Go 模块</title>
<link>/4-go/go_module/</link>
<pubDate>Sat, 24 Aug 2019 13:08:05 +0800</pubDate>
<guid>/4-go/go_module/</guid>
<description>简介 Go 终于要有自己的模块了, 以前只有包, 而模块是包的上一级.
以下是阅读官网上的两篇文章的总结.
https://blog.golang.org/using-go-modules https://blog.golang.org/migrating-to-go-modules 使用 Go 模块 一个模块是存储在文件树中的一系列的 Go 包的集合, 根目录有一个 go.mod 文件.
go.mod 文件定义了模块的 module path, 这也是用于根目录的导入路径. 还定义了 dependency requirements, 这是构建需要的外部模块.
模块的常见操作 创建一个新的模块 在 $GOPATH/src 之外, 创建一个目录, 并添加文件 hello.go:
package hello func Hello() string { return &quot;Hello, world.&quot; } 添加一个测试文件, hello_test.go:
package hello import &quot;testing&quot; func TestHello(t *testing.T) { want := &quot;Hello, world.&quot; if got := Hello(); got != want { t.</description>
</item>
<item>
<title>Mobaxterm</title>
<link>/3-linux/mobaxterm/</link>
<pubDate>Sun, 28 Jul 2019 19:06:55 +0800</pubDate>
<guid>/3-linux/mobaxterm/</guid>
<description> 简介 mobaxterm 是一个 windows 上的 shell 工具.
对我而言, 最方便的是, 它的左右两栏分别是 stfp 和 shell.
设置 local shell mobaxterm 有一个 local shell, 可以选择多种类型的终端, 包括 bash 和 WSL.
我的配置如下:
勾选 Use Windows PATH environment 勾选 Paste using right click 设置 Persistent home directory 为用户的主目录 C:\Users\tzh </description>
</item>
<item>
<title>Kubeadm</title>
<link>/2-docker/kubeadm/</link>
<pubDate>Wed, 17 Jul 2019 19:39:16 +0800</pubDate>
<guid>/2-docker/kubeadm/</guid>
<description>腾讯云上使用 kubeadm 我在腾讯云上有台 2h8g 的机器, 平时就用来吃灰, 偶尔实践一下 linux 上的各种操作. 这次就来尝试 kubeadm 在腾讯云上安装 kubernetes.
因为腾讯云默认是 unbuntu 账户, 不是 root 账户, 所以基本所有命令都要加上 sudo.
安装 kubeadm 软件 sudo apt-get update &amp;&amp; apt-get install -y apt-transport-https curl # 失败, 替换为下面的 alibaba 镜像 curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - # 使用 alibaba 的镜像 https://opsx.alibaba.com/mirror?lang=zh-CN curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - # 其实就是 将 deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main # 这句话写到文件 /etc/apt/sources.list.d/kubernetes.list 中 sudo bash -c 'cat &lt;&lt;EOF &gt;/etc/apt/sources.</description>
</item>
<item>
<title>安装启动</title>
<link>/1-hugo/install/</link>
<pubDate>Sat, 22 Jun 2019 18:57:32 +0800</pubDate>
<guid>/1-hugo/install/</guid>
<description>快速安装 Hugo 虽然是基于 go 语言的项目, 但最懒的方式还是去 releases 页面 手动下载预编译的二进制包.
解压出来也只有单个的二进制文件, 如果想全局使用, 就添加到环境变量中吧. 但对我的博客项目来说, 没什么必要, 直接新建一个 bin 目录丢进去就行. 直接放在根目录也是行的, 甚至更方便.
必要假设 接下来运行的命令都基于以下假设
根目录下有个 bin 文件, 里面是名为 hugo 的二进制程序 运行路径是根目录 因为都是在根目录运行的, 所以运行 hugo 时, 需要指定选项 -s ./blog 新建站点 新建一个站点, 取名为 blog, 这个是网站的根目录名称.
./bin/hugo new site blog 添加主题 这里我使用的是 HUGO LEARN THEME 主题.
git submodule add https://github.com/matcornic/hugo-theme-learn.git blog/themes/hugo-theme-learn echo 'theme = &quot;hugo-theme-learn&quot;' &gt;&gt; blog/config.toml 使用 git 的 submodule 添加, 目的地路径是 blog/themes/hugo-theme-learn.</description>
</item>
<item>
<title>Template 笔记</title>
<link>/4-go/template/</link>
<pubDate>Sat, 02 Nov 2019 14:33:53 +0800</pubDate>
<guid>/4-go/template/</guid>
<description>简介 包名 text/template , 文档
实现了数据驱动的模版, 用于生成文本输出.
要在生成 html 文件, 可以使用包 html/template .
语法 模版中的注解引用数据结构的元素来控制执行, 获取值并显示. 数据结构通常是一个 struct 中的 field 或者一个 map 中的 key. 执行模版时遍历结构并设置光标 使用一个前缀 . 表示, 叫做 dot, 作为执行过程中当前位置的值.
数据执行或者控制语句都是有 {{ 和 }} 包围的.
type Inventory struct { Material string Count uint } sweaters := Inventory{&quot;wool&quot;, 17} tmpl, err := template.New(&quot;test&quot;).Parse(&quot;{{.Count}} items are made of {{.Material}}&quot;) if err != nil { panic(err) } err = tmpl.Execute(os.Stdout, sweaters) if err !</description>
</item>
<item>
<title>Gitlab</title>
<link>/3-linux/gitlab/</link>
<pubDate>Mon, 29 Jul 2019 20:42:29 +0800</pubDate>
<guid>/3-linux/gitlab/</guid>
<description>简介 gitlab 不仅是一个 git 代码托管平台, 更是 DevOps 平台. 这点是我最喜欢的, 所以迫切想要实践一下.
安装 对我而言, 主要有两种安装方式: docker 和 kubernetes.
当然, 装完主体之后, 还需要安装 gitlab runner.
TODO: 经过我一段时间的摸索之后, 还是有点问题
以下的安装方式都是基于 docker-compose 的
安装 gitlab 主体 首先, 安装之前, 我们需要确定以下几点.
确定 external_url, 这个是用户可以访问的外部链接, 参考 这个链接 是否使用内置的 nginx, 如果使用外部的 nginx, 可以参考 这个链接 是否使用 HTTPS, 参考 这个链接 这其中的几点对我来说非常致命, 因为我手头没有备案的域名, 所以我在腾讯云上部署就非常蛋疼.
如果你只是想要一个 ip 地址显示的 gitlab, 那么还是挺容易的.
# docker-compose.yml version: &quot;3.7&quot; services: gitlab: image: &quot;gitlab/gitlab-ce:12.1.1-ce.0&quot; restart: &quot;no&quot; hostname: &quot;gitlab&quot; environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://x.</description>
</item>
<item>
<title>Helm</title>
<link>/2-docker/helm/</link>
<pubDate>Sun, 28 Jul 2019 11:45:49 +0800</pubDate>
<guid>/2-docker/helm/</guid>
<description>Helm 简介 Helm 是 kubernetes 上的包管理器.
Helm Charts 帮助你定义, 安装, 升级在 kubernetes 上的应用.
安装 Helm 分为 client(helm) 和 server(Tiller).
安装 client 去 github 上的 release 页面 上下载预编译的二进制文件.
解压之后放在 bin 目录下就行, linux 通常可选 /usr/local/bin/helm. windows 就自己建个目录, 然后添加到环境变量 Path 中.
安装 server # 直接安装会失败, 因为镜像下载不下来 helm init # 使用 ali 的镜像 helm init --tiller-image=registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.2 helm init --upgrade --tiller-image=registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.2 # 检查安装结果 kubectl get pods --namespace kube-system helm version 如果前面 helm init 失败的话, 使用下面的两种方式之一删除 helm init</description>
</item>
<item>
<title>Hugo New Theme 使用指南</title>
<link>/1-hugo/theme/</link>
<pubDate>Tue, 25 Jun 2019 19:49:17 +0800</pubDate>
<guid>/1-hugo/theme/</guid>
<description>简介 这里, 我使用的是 Hugo New Theme 主题.
这个主题是我在 search 分类下, 一眼就相中的, 可能是紫色太耀眼了. 其实, 我就是想把它作为自己的博客和笔记用, 有个搜索框方便些. 也可能是因为它的结构有点像 Python 很多库所用的文档生成器 Sphinx.
官方的简介里也说了, 这个主题是完全为 文档 设计的.
安装配置 前面有介绍过安装主题. 基本上有两种方式:
直接下载主题的 zip 包, 然后手动解压到 themes 目录下 使用 git submodule 添加依赖 简单介绍下 git submodule 的用法.
git submodule add https://github.com/matcornic/hugo-theme-learn.git blog/themes/hugo-theme-learn 当然, 最后一步是去 config.toml 中配置一下主题.
theme = &quot;hugo-theme-learn&quot; 添加内容 这个主题下, 内容结构大致是这样的.
content 下的每个目录都是一个章节, 每个章节都有一个 _index.md 文件, 当作是章节的介绍. 然后, 就是普通的文章了.
创建章节 ./bin/hugo new 1-hugo/_index.</description>
</item>
<item>
<title>使用 Github Action</title>
<link>/1-hugo/github_action/</link>
<pubDate>Tue, 10 Aug 2021 20:32:22 +0800</pubDate>
<guid>/1-hugo/github_action/</guid>
<description>简介 以前也为这个仓库设置过 CI. 当时用的是 buddy. 这个是当时在 github market 中找的, 配置好了用着也挺舒服的.
唯一有点问题的是, 如果你长期不使用自己创建的 CI 流程, 那么基本上过一会时间, 大概是两三个月, 就会收到一封邮件, 提示如果再不登录的话, 就会自动注销账号.
在连续好几次这样的操作后, 终于在前段时间, 因为没有使用, 也没有及时查看邮件, 导致被注销了账号.
所以, 这就引出了这次的主题, Github Action.
PS. 被微软收购后, 没想到文档都有中文了.
使用 当前仓库使用的文件, 可以在 .github/workflows/go.yml 中查看.
name: Go on: push: branches: [master] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token fetch-depth: 0 # otherwise, you will failed to push refs to dest repo - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.</description>
</item>
<item>
<title>Draft</title>
<link>/2-docker/draft/</link>
<pubDate>Sun, 28 Jul 2019 12:44:58 +0800</pubDate>
<guid>/2-docker/draft/</guid>
<description> draft 简介 draft 是一个帮助开发者在 kubernetes 上创建云原生应用的工具, 简化了应用开发和部署的过程.
这是我在 vscode 上安装 kubernetes 相关插件时看到的.
最近好像没有更新, 还是停留在 18 年的 0.16 版本.
安装 去 github 上的 release 页面 下载二进制文件.
# 初始化 draft init # 创建应用 draft create # 部署应用 draft up 参考 draft </description>
</item>
<item>
<title>Bash 脚本使用指南</title>
<link>/3-linux/bash/</link>
<pubDate>Sun, 21 Jun 2020 08:30:15 +0800</pubDate>
<guid>/3-linux/bash/</guid>
<description>简介 Bash 脚本在 linux 上还是非常有用的. 以前没有仔细用过, 这些结合教程, 好好学习了一遍, 顺便做些笔记, 也当作自己的快速参考指南.
当前所看的教程是 Bash 脚本教程.
Shell Shell 可以理解为与内核交互的环境, 同时也是一个命令解释器.
查看当前时使用的 Shell
echo $SHELL 查看当前系统里已安装的所有 Shell
cat /etc/shells 进入和退出 Bash
bash exit 查看 Bash 版本
bash --version echo $BASH_VERSION 基础语法 echo 是一个非常基础的输出命令, 用于在屏幕上输出一行文本.
一些常见的用法如下:
# 常见用法 echo hello world # -n 取消行尾的换行符 echo -n hello world # -e 解释引号中的特殊字符 echo -e &quot;hello\nworld&quot; Bash 使用空格(或 Tab)区分不同的参数. 使用分号 ; 作为命令的结束符.</description>
</item>
</channel>
</rss>