-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
279 lines (219 loc) · 14.6 KB
/
index.html
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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Home - Thought Atlas</title>
<link rel="alternate" href="/feed.atom" title="Recent Blog Posts" type="application/atom+xml">
<link type="text/css" href="/static/css/bootstrap.css" rel="stylesheet">
<link type="text/css" href="/static/css/style.css" rel="stylesheet">
<link type="text/css" href="/static/css/pygments.css" rel="stylesheet">
</head>
<body data-offset="50">
<header class="container">
<div class="title">
<a class="title" href="/">Thought Atlas</a>
<nav class="pull-right">
<ul class="primary nav nav-pills">
<li><a href="/">blog</a>
<li><a href="/archive/">archive</a>
<li><a href="/tags/">tags</a>
<li><a href="/about/">about</a>
</ul>
</nav>
</div>
<p>finding the right way of doing somethings.</p>
</header>
<div class="container">
<div id="content">
<div class="section-unit">
<section class="entry-overview">
<div class="details">
<h1><a href="/2015/01/02/a-few-things-i-know-about-the-carbon">关于 Carbon 我所了解的几个事儿</a></h1>
<div class="date-attr">
<small>2015-01-02 by jason lai</small>
</div>
<div class="summary"><p>现在工作中相当多的一些事情都是基于 python 来处理,原因也简单,就是有更好的可控性。在自动化运维的重要一环 -- 监控 -- 我们使用 Graphite 来作为监控数据汇总和展示的解决方案。Graphite 包含三大部件,graphite-web 提供 界面 和 api 来展示监控的数据(图片和原始数据), carbon 提供接口来接收监控数据(自定义协议), whisper 是类 rrd 的数据库用于保存监控数据(numeric time-series data)。</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/graphite/">graphite</a> and
<a href="/tags/python/">python</a>
<a class="readmore" href="/2015/01/02/a-few-things-i-know-about-the-carbon">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2014/11/13/happy-hacking">Happy Hacking</a></h1>
<div class="date-attr">
<small>2014-11-13 by jason lai</small>
</div>
<div class="summary"><p>今年上半年的时间是我人生最难忘的时光之一,可以说无论身体和心理都是持续处于高压的状态,总有处理不完的问题出现,技术跟不上的压力,服务器 IO 的压力,业务增长的压力,公司财务的压力,感情生活的压力。也曾出现几度泪崩的情况。现在回头再看,确实是,如人饮水,冷暖自知。一方面来说是...</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/hacking/">hacking</a>,
<a href="/tags/life/">life</a>,
<a href="/tags/programming/">programming</a> and
<a href="/tags/%E8%BF%90%E5%8A%A8/">运动</a>
<a class="readmore" href="/2014/11/13/happy-hacking">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2014/09/16/parallel-programming-in-ipython">IPython 中的并行计算处理简介</a></h1>
<div class="date-attr">
<small>2014-09-16 by jason lai</small>
</div>
<div class="summary"><p>首先, IPython 确实是个非常好用的 Python REPL Shell,习惯一开机就会打开一个 terminal session 并常开着 ipython ,以便随时进行 python 相关的实时交互。不过一直是保持够用就好的心理,有很多 magic function 都不太熟悉呢。还有就是 ipython notebook 了,玩过几次,投奔 evernote 后就没有怎么碰过了,不过时不时看到别人用 notebook 做的分享,还是相当不错的啦。然后就是准备要讲东西,基于 ipython 支持的并行计算处理。虽然我的了解还很肤浅,不太可靠,但这个 parallel 相关项目给我的感觉就是 amazing!</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/Python/">Python</a>,
<a href="/tags/ipython/">ipython</a> and
<a href="/tags/%E5%B9%B6%E8%A1%8C%E8%AE%A1%E7%AE%97/">并行计算</a>
<a class="readmore" href="/2014/09/16/parallel-programming-in-ipython">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2013/03/23/process-simple-resource-scheduling">处理简单的资源调度</a></h1>
<div class="date-attr">
<small>2013-03-23 by jason lai</small>
</div>
<div class="summary"><p>要在中国“扭曲“的网络环境中发展 CDN 服务,需要付出许多额外的努力,其中,敏感信息是不得不面对的事情。在去年,我们还一度认为只要网站备案了,或者接入时经过初审通过,流量信息应该就是足够可靠的了。结果在年末时出了些不大不小的烦人事情,被迫临时无限期停止公众的注册活动。也没办法,需要将危机看作转机,我们决定继续将时间放在基础服务的开发上,并开始专注企业客户的服务。</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/LevelDB/">LevelDB</a>,
<a href="/tags/Python/">Python</a> and
<a href="/tags/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/">程序设计</a>
<a class="readmore" href="/2013/03/23/process-simple-resource-scheduling">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2013/02/03/some-ideas-and-design-of-the-configuration-management">记配置管理的相关设计和想法</a></h1>
<div class="date-attr">
<small>2013-02-03 by jason lai</small>
</div>
<div class="summary"><p>最近工作的主旋律是围绕着监控和配置系统的构建进行相关设计和实现,包括原始数据的收集和传输,汇总数据的处理、存储和展示,以及相关配置的设置和分发,等等一系列相关任务。对于这个相对较大型的项目,需要多个程序相互协作,且对整体运行的可靠性和稳健性都有很高的要求。面对此类高要求项目,感到颇具挑战性,故这段时间是开足马力地投入到开发中去。
在项目实现的过程中,除了接触到很多新鲜的工具和技术外,感受最深的是,如何宏观地看待程序设计,让整体项目保持足够的简单,以便组合各程序一起去完成大规模的任务。</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/Python/">Python</a>,
<a href="/tags/%E4%BC%98%E5%8C%96%E4%B8%8E%E6%8A%80%E5%B7%A7/">优化与技巧</a> and
<a href="/tags/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/">程序设计</a>
<a class="readmore" href="/2013/02/03/some-ideas-and-design-of-the-configuration-management">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2013/01/04/conclude-2012">2012</a></h1>
<div class="date-attr">
<small>2013-01-04 by jason lai</small>
</div>
<div class="summary"><p>简直难以置信,这就一年过去啦?!光阴白驹过隙,在时间大神精确无情的操控下,2012年悄无声息且永不回头的离我们而去。世界没有毁灭,生活依然继续。在这年,我终于离开了校园,踏入社会开始独立生活。在格安工作的大半年时间里,感受到了很多不一样的东西,或疑惑,或开心,或激动。最庆幸的,虽然身边的许多东西都在不停变化,依然能保持着自己的态度,尽力做好每一件事。</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/life/">life</a> and
<a href="/tags/%E4%B8%AA%E4%BA%BA%E6%80%BB%E7%BB%93/">个人总结</a>
<a class="readmore" href="/2013/01/04/conclude-2012">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2012/12/27/out-of-their-minds">Out of Their Minds - 近观大师的生平</a></h1>
<div class="date-attr">
<small>2012-12-27 by jason lai</small>
</div>
<div class="summary"><p>在21世纪的今天,我们愉悦地使用着各种计算设备,自由地畅览互联网(好吧,这点中国还是比较特殊),信息的获取、产生和处理在我们身边无时无刻地进行着。是数不清的计算机基础理论,在支撑这些美好事物的持续运行。而在那些计算机基础理论的后面,是数代计算机科学家研究探索的成果。这个时代的程序员无疑是幸福的,不必再去开拓许多基础的东西,可以站在更高的层次去解决实际问题。但同时,我很多时候都会很好奇,在那个使用穿孔卡纸来进行机器编程的年代,那些为计算机的魔力所吸引的人,是如何去探索发现其中的乐趣。</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6/">计算机科学</a> and
<a href="/tags/%E9%98%85%E8%AF%BB/">阅读</a>
<a class="readmore" href="/2012/12/27/out-of-their-minds">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2012/12/09/talk-about-the-tee-function-in-itertools-module">对于 itertools.tee 的理解</a></h1>
<div class="date-attr">
<small>2012-12-09 by jason lai</small>
</div>
<div class="summary"><p>在 Python 编程中,生成器(Generator)和迭代器(Iterator)是两个非常有用 + 好用的语言特性。在函数中使用 yield 关键字即定义了生成器对象,通过 yield 语句可以对外生成值序列,实际上就是返回了一个特殊的迭代器。生成器每次迭代的值( 调用 next() )都是实时生成的,其会在生成的前后对生成器对象的状态进行保存/恢复,从而可以间隔有序地运行代码,持续生成值。生成器的这种延迟计算特性( lazy evaluation )在很多情况下都非常好用,最典型的,可以让程序动态遍历那些需要可观资源(CPU 或 I/O)生成的对象,平摊生成对象的时空开销。在日常的 Python 编程中,用生成器搭配程序中的一些 for 循环结构,往往可以减少程序实现的逻辑复杂度。为什么?因为我们可以将控制循环的逻辑转移到生成器中, 从而将不同的处理逻辑分离开来,各个击破,当然会好处理不少。</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/Generator/">Generator</a>,
<a href="/tags/Iterator/">Iterator</a> and
<a href="/tags/Python/">Python</a>
<a class="readmore" href="/2012/12/09/talk-about-the-tee-function-in-itertools-module">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2012/11/13/what-is-technology">科技是什么</a></h1>
<div class="date-attr">
<small>2012-11-13 by jason lai</small>
</div>
<div class="summary"><p>科技是什么?在我的眼中,科技是一个高尚的名词,意味着进步,抗生素的发明让人类的寿命增长,电磁原理的发现让人类跨入电气时代,计算机的发明让人类获得了巨量计算的能力。我的身体和心灵都已经习惯了现代科技带来的生活,依然会为科技进步而感到欢喜,相信科技能带来更多不同的东西以及体验;作为一名程序员,一直认为自己正亲身参与自上世纪末开始的信息化浪潮,并看到了信息科技的进步正不断加快全球信息的流动(以及产生)。但是,工业革命带来的环境污染,现代热武器战争的疯狂(一战与二战),因为能源矿产需求正变得千疮百孔的土地,无一不是让人触目惊心的事实,科技发展带来的“恶”同样巨大。
最近看了 KK (Kevin Kelly) 的《科技想要什么》(What Technology Wants) ,感觉非常有趣,在阅读的过程中获得了许多有益的思考。</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/%E7%A7%91%E6%8A%80/">科技</a> and
<a href="/tags/%E9%98%85%E8%AF%BB/">阅读</a>
<a class="readmore" href="/2012/11/13/what-is-technology">阅读全文</a>
</div>
</div>
</section>
<section class="entry-overview">
<div class="details">
<h1><a href="/2012/09/19/concise-programming">简洁编程</a></h1>
<div class="date-attr">
<small>2012-09-19 by jason lai</small>
</div>
<div class="summary"><p>干净优雅,就是 Python 在我心中的主要印象。 当然 Python 绝不是什么完美的编程语言,但其独特的编程风格确实很招人喜爱。得益于强制缩进和优秀的编码规范(类 PEP8 和 The Zen of Python ),使用 Python 编写的代码一般都能具有颇高的可读性。结合 Python 强大的动态特性(如 duck-typing, closure, lazy evaluation 等),我们可以大幅度降低解决问题所需的代码量。代码量越少意味着可能存在的 Bug 也就越少,也意味着工作量的降低,从而提高我们的生产力,让程序质量更容易得到保障和维护。</p>
</div>
<div class="tags-attr">
<i class="icon-tags"></i> Tags:
<a href="/tags/Python/">Python</a> and
<a href="/tags/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/">程序设计</a>
<a class="readmore" href="/2012/09/19/concise-programming">阅读全文</a>
</div>
</div>
</section>
</div>
<div class="pager">
<span class=disabled>« Previous</span> — <strong>1</strong> — <a href="/page/2/">Next »</a>
</div>
</div>
</div>
<footer data-offset=50>
<div class="container">
<p>© Copyright 2012 by Jason Lai. </p>
</div>
</footer>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-38208289-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>