Changkun's Blog欧长坤的博客

Science and art, life in between.科学与艺术,生活在其间。

  • Home首页
  • Ideas想法
  • Posts文章
  • Tags标签
  • Bio关于
Changkun Ou

Changkun Ou

Human-AI interaction researcher, engineer, and writer.人机交互研究者、工程师、写作者。

Bridging HCI, AI, and systems programming. Building intelligent human-in-the-loop optimization systems. Informed by psychology, sociology, cognitive science, and philosophy.连接人机交互、AI 与系统编程。构建智能的人在环优化系统。融合心理学、社会学、认知科学与哲学。

Science and art, life in between.科学与艺术,生活在其间。

276 Blogs博客
165 Tags标签
Changkun's Blog欧长坤的博客

Docker 极速入门教程01 - 基本概念和操作

Published at发布于:: 2016-08-07   |   Reading阅读:: 2 min

序言

为什么写这个系列

我加入了一家以 Docker 为技术栈核心的公司,如果走出去说自己不会 Docker,就显得有点不合适了。早在大三的时候就已经听说 Docker 技术的火爆,只是当时一心研究 iOS,并没有对此技术有太多在意,到了现在已经不得不研究了。

实习的这几个月,做的事情比较多,每周只能花很少的时间来了解 Docker 这一门技术,这也是我需要花很长时间才能完成这个系列的原因。网上关于 Docker 的资源、教程已经数不胜数,为什么我还要再写这样一个系列。这里面的原因有以下几点:

  1. 资源再多教程再多,也是别人的。别人写出来的东西是按照别人的思路进行,随着 Docker 技术的发展,我在学习 Docker 这门技术的过程中,发现了当下其实有更好更快捷的路径从新手直接入门整套技术;
  2. 自己写成了文章之后,才能够发现自己对这门技术究竟还有那些不懂不明白的地方;
  3. 装逼

为什么读这个系列

这个系列与其他网上的资源相比有以下几个特点:

  1. 只适用于有 Linux 基本基础的人,有很多教程都尝试向一些 Linux 基础薄弱的人由浅至深介绍 Docker,但实际上他们花了很大篇幅在介绍 Linux 本身上,却忽略了很多 Docker 的重要特性。
  2. 高速,无废话。Docker 的命令错综复杂,很多的书籍、教程反复针对同一个命令反复介绍,废话奇多。读者需要从中甄别这些无用信息,从而浪费大量时间。

好了,说了不废话还是废话了这么长,开始吧。

Read More阅读更多 »

阶段性沉默

Published at发布于:: 2016-07-31   |   Reading阅读:: 1 min
昨天和家里人视频,才发现已经不知不觉到了该被议论的下一个阶段。 本科毕业,本说反正读研,回家休整,却也琢磨不透家里人是希望我回家还是不希望我回家, 回家陪陪家人,在理。但是回去了之后没几天,用脚想一想就能明白,肯定会面对街坊四邻天天叨叨叨着『你咋没有工作呀闲在家里你看隔壁那谁谁谁如何如何,签了哪儿哪儿哪儿,不花家里一分钱』。 所以啊,在现在这个公司干得挺开心,索性干脆不回去,什么时候回去再说吧。 此外,前段时间在知乎看到一个问题:为什么博士生常常被一些国人所歧视?虽然我不是博士生,但是看到这样的答案确实是很有感触的: 『 对小孩子的评价标准是成绩如何,考的大学如何; 对大人他们的评价标准是你赚钱如何,住的房子开的车如何; 不符合评价标准的人、事或行为都会被非议、打压、歧视; 没人会在乎你怎么想,真正想做什么,在做什么』 可能受的教育越多,越能体会和不同阶层对思维、眼界脱节,也许这就是所谓的『清高』。里面还有一个答案也挺有感触的: 『我妈他们念大学那会儿,本科生就受歧视。念个大学有啥用?都22了才工作,你看谁谁上个小班中专,19就赚钱了。你毕业人家都是老员工了。 现在也是啊,你读博都二十七八了才工作,人家谁谁都是老员工了。 底层一般都只能看到眼前那一小块,看不到五年后的世界的。我还认识有人生下了孩子之后才意识到养不起,孩子送人的。 底层嘛。不开化,可以理解。』 // // 可能以后也不会想回去了 //

ELK+Redis 最佳实践

Published at发布于:: 2016-07-17   |   Reading阅读:: 5 min

上个月老板让我搭一个日志分析系统,选用了 ELK 作为技术栈,网上的文章较为混乱,前期刚接触的时候查资料踩了很多坑,所以根据我总共一个星期的接触(包括安装和后期运维),大致总结一下我个人的最佳实践。

本文主要内容为:

  • 架构逻辑
  • 安装
  • 配置
  • Docker 方案

这张图相信足以证明 ELK Stack 的强大之处了:

架构逻辑

E(lasticsearch) L(ogstash) K(ibana) 本身这里并不做过多介绍。

值得一提的是,为了让整个系统更好的分层,是非常建议引入 Redis 的。Redis 作为一个缓存,能够帮助我们在主节点上屏蔽掉多个从节点之间不同日志文件的差异,负责管理日志端(从节点)的人可以专注于向 Redis 里生产数据,而负责数据分析聚合端的人则可以专注于从 Redis 内消费数据。

同时,Kibana 本身并不具备访问限制,这不是我们期望的,因此可以用考虑用 Nginx 做一层反向代理,并做身份验证。

综上所述,整个 ELK 的架构应该是下图所示的样子:

Read More阅读更多 »

终于全面启用了 HTTPS

Published at发布于:: 2016-07-16   |   Reading阅读:: 2 min
经历过这次迁移,我的博客站点算是维护过四次之多了。这个博客最初诞生的时候是部署在一个网友的服务器上的,第一次上线的时候还是一个 Wordpress 的站点。后来因为想弄到自己的服务器上,就搬了出来。随后了解到了 Hexo,就干脆整个迁移到 GitHub 上。而这次,却又从 GitHub 上迁移回个人的服务器,算是折腾了好大一圈。估计这次迁移后,就不会再有太大改动了。 这次迁搬出来后主要维护了以下几点: 将服务器系统从 CentOS 更改为 Ubuntu 将博客的整体主题做了更换 关闭了原有的博客站点 强制使用 HTTPS 访问本站 从 GitHub 迁移到自己的服务器上 下面来依次谈谈这几点维护的原因。 从 CentOS 更换到 Ubuntu 以前整个站点用的 LNMP 的架构,因为第一版的博客是使用 Wordpress 搭建的,第一次接触 Linux,就是接触的 CentOS。但随着时间的推移,我个人接触更多的反而是 Ubuntu,索性这次搬迁,全部做一次规整了。 博客整体主题做了更换 博客的主题使用的是 Hexo Next,在页面的 Footer 处我也保留了主题的链接,如果对这个主题感兴趣,可以点过去。 主题做了很多修改,最明显的修改就是可以看到博客的背景上有 一个粒子特效。 有不少人来信问我是怎么做到的,其实并不复杂,GitHub 上面有一个项目叫做 ParticlesJS。 有兴趣的可以自己研究一下。还有一些修改,比如底部 Footer 的修改,菜单栏的修改等等。由于只是一些符合自己品味的优化,这里就不做详细说明了。 关闭了原有的博客站点 最初的时候脑子被门挤了,注册了个 euryugasaki.com 的域名,则根本不可能有人记得住啊。但是这个长得恶心的域名还是被我上线了三年左右的时间,一些我留下过痕迹的地方,都有这个域名在。 而恰好,这个域名还是在国内的服务商里购买的。保不准那一天挂了,就完蛋了。所以后来就注册了几个好记的域名:changkun.us。并且,我决定以后一直用这几个域名而再不更换了。 强制使用 HTPPS 访问本站 从去年开始,我就一直想要将整个博客部署成 HTTPS 站点,当时也只是随便一搜发现证书还得花钱,对于我这种个人网站,是很不地道的。 直到最近,几经周折,总算找到一个比较满意的证书提供商,StartSSL。 制作证书非常方便,假设在 /etc/nginx/ssl/ 目录下: 1 $ sudo openssl req -newkey rsa:2048 -keyout server.
Read More阅读更多 »

苹果开源了LZFSE无损压缩

Published at发布于:: 2016-07-11   |   Reading阅读:: 2 min
开源地址:https://github.com/lzfse/lzfse 苹果开源了新的无损压缩算法 LZFSE ,该算法是去年在iOS 9和OS X 10.10中引入 的。按照苹果公司的说法,LZFE的压缩增益和ZLib level 5相同,但速度要快2~3倍,能源效率也更高。 所以,马上找来测试与 zip 的情况 PK 一下,感觉无论从压缩速度还是压缩率来说都有点差强人意,说好的速度更快能源效率利用率更高呢? 文件1: 2014data.csv 文件大小: 83.5 MB zip 压缩大小: 7.3 MB lzfse 压缩大小: 9.2 MB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ time zip test.zip 2014data.csv -v updating: 2014data.csv ....... (in=83523458) (out=7286164) (deflated 91%) total bytes=83523458, compressed=7286164 -> 91% savings zip test.zip 2014data.
Read More阅读更多 »

Hash 碰撞的一种思路

Published at发布于:: 2016-07-09   |   Reading阅读:: 3 min

今天在熊猫 TV 上看乌云白帽子大会,下面有三道互动的题目挺有意思的。

前面两题都很简单,第一题是解一个莫斯电码、第二题答案很简单,但是要提交答案需要在网页源码上懂点手脚。

第三题是重头戏,不过难度也不高,题目如下:

第三题每个人的答案都不一样,图片里被我划掉的这部分是我的用户名(手机号) K。

红色部分的一串数字就是经过上面的 DEKHash 算出的结果,所以题意就很明显了,找到 K' 使得 DEKHash(K') == DEKHash(K)。

题目中给出的是 Java 代码,我作为 Java 黑,显然是不能忍受的,所以弄成了 C++的版本:

1
2
3
4
5
6
7
long DEKHash(string str) {
    long hash = str.length();
    for(int i = 0; i < str.length(); i++) {
        hash = ((hash<<5)^(hash>>27))^str.at(i);
    }
    return hash;
}

下面来看我是怎么寻找这样的 K'。

Read More阅读更多 »

记一次完整的 Kaldi-TIMIT 示例运行

Published at发布于:: 2016-06-05   |   Reading阅读:: 35 min

整个例子从 Sat Jun 4 22:45:55 CST 2016 开始,于 Sun Jun 5 11:16:53 CST 2016 结束,共经历约 12 个小时。

在 TIMIT 的代码中,一共分为了以下几个示例:

  1. 数据预处理;
  2. MFCC 特征提取 & 训练集和测试集的 CMVN,这里只提取了 MFCC,Kaldi 里支持 MFCC,PLP,PITCH;
  3. 单音树训练和解码,是语音识别最基础的部分
  4. 三音素的训练和解码(Deltas + Delta-Deltas)
  5. 三音素模型基础上做了LDA + MLLT变换的训练和解码
  6. 三音素模型基础上做了LDA + MLLT +SAT变换的训练和解码
  7. 三音素模型基础上做了SGMM2的训练和解码,SGMM2是povey 提出的
  8. 三音素模型基础上做了 MMI + SGMM2 的训练和解码
  9. DNN 混合训练和解码(povey 版本模型,看网上说不建议使用?)
  10. 系统融合(DNN+SGMM)
  11. Karel DNN 通用深度学习模型的训练和解码
  12. 获取结果
Read More阅读更多 »

Kaldi 上的 TIMIT 例子

Published at发布于:: 2016-06-04   |   Reading阅读:: 3 min

Kaldi 上提供了很多例子让我们学习,这里有一个 Kaldi 上提供例子的列表:

http://kaldi-asr.org/doc/examples.html

但是大部分的数据库来源于LDC,并且需要成为会员才能下载。

我们这里使用一个叫做 TIMIT 的例子,当然他也是需要付费才能使用的数据集。

然而幸运的是我们可以在这个链接里找到所有的内容:

http://www.fon.hum.uva.nl/david/ma_ssp/2007/TIMIT/

因为版权问题我不准备提供直接下载的链接,但是我作为老司机可以指一条路:wget -r,剩下的就看你自己的造化了。

数据拿到后,目录下会多出很多 .html 的文件。我这里写了一个脚本用于删除这些多余的文件,并将小写目录转换成大写目录(在 Kaldi 的 TIMIT 脚本中写出的目录都是大写的):

Read More阅读更多 »

Kaldi 安装与部署

Published at发布于:: 2016-06-04   |   Reading阅读:: 2 min

Kaldi 是一个用于语音识别的开发平台(工具包),目前已经较为成熟,而且文档很多。

本文提供一个 Kaldi 在 Mac OS X 10.11。5 下的安装教程,如果你用 Windows,请买一台 Mac。

下载源码

Kaldi 在 Github 上开源,我们应该直接下载他最新的源码执行编译。

1
git clone https://github.com/kaldi-asr/kaldi

编译

编译这种大型框架不应该去互联网上搜索任何安装教程,而是应该阅读官方的安装教程。(那我写这篇文章干嘛呢…(╯‵□′)╯︵┻━┻

Read More阅读更多 »

从科研写作谈起

Published at发布于:: 2016-05-24   |   Reading阅读:: 3 min

目录

  • 写在前面的话
  • 科研创意的来源
  • 准备篇
    • 主题的选取
    • 确定论文的类型
    • 提出论点
    • 会议投稿
    • 期刊投稿
  • 写作篇
    • 写作动机
    • 写作阶段
  • 工具篇
    • 写作工具
    • 版本控制和存储
    • 文献工具
    • 图表工具
  • 后记
  • 进一步阅读的文献
## 写在前面的话

马上就要进入研究生阶段了,本科的最后一个学期很多人问我为什么不直接找工作,而是选择继续读研。这里面有两个原因:

  1. 喜欢做研究,可以说我读研的最根本目的就是搞研究、做科研;
  2. 学历不补回来,这个算作是次要目的,那就是提高自己的学历。

总的来说,我个人的想法就是:一辈子只有一次机会,钱什么时候都可以赚,但错过了深造的机会,就一切都不可挽回了。

作为整个大学阶段的总结,我决定写一系列文章来总结我在大学中学到的一些科研经验和心得,并以此激励我在日后的路上发表更多更有价值的论文。

Read More阅读更多 »
11 12 13 14 15 16 17 18 19
© 2008 - 2026 Changkun Ou. All rights reserved.保留所有权利。 | PV/UV: /
0%