0%

[TOC]

什么是基数

基数(cardinality,也译作势),维基百科中的解释是: cardinality of a set) is a measure of the “number of elements) of the set”。我们可以理解为一个集合(这里的集合允许存在重复元素)中不重复元素的个数。例如集合{1,2,3,1,2},它有5个元素,但它的基数/Distinct数为3。

阅读全文 »

在工作中,我们使用Scala作为在Spark应用的开发语言,由于公司的代码托管平台暂不支持Scala代码的规范检测,团队内部拟定了一个的代码规范,希望能在统一代码风格的同时,足够简单且可操作。

基本原则

  • 遵循Baidu Java代码规范
  • 使用Eclipse/IntelliJ idea的format文件格式化代码,地址
  • 使用空格代替tab/文件编码UTF-8
  • 使用驼峰命名法则
阅读全文 »

数据科学与传统的程序开发开发有些许不同,数据科学面向非专业的研发人员,更需要简单的,所见即所得的开发方式。因此,通常选择一种可交互的解释型语言,如Python、Ruby、Scala等。其次,数据科学更加注重推理的逻辑与过程,因此它需要可读性强的注释、图标,这往往通过Notebook来实现,这类Notebook可以实现代码的直接运行与保存结果,并且在代码中嵌入macdown来添加详细的讲解注释。本文主要涉及下面几个方面:

  • 开发语言:Python。这里我们选择了最常见、最容易入门的开发语言Python3,由于Python3与python2并不完全兼容,在不特殊说明的情况下,我们使用Python3作为标准。
  • Notebook:Jupyter。这也是Python最常用的Notebook,可以在其中选择编译环境,运行Pythhon代码,添加macdown代码块。绘制图标这些常见的功能。值得注意的是,Jupyter只是一个前端显示笔记本,其后端可以支持除了Python以外的其他语言。
  • 环境管理:Conda。由于Python版本兼容问题,不同的package可能需要不同的Python环境。因此,需要一款可以管理不同环境的工具,Conda提供了一个虚拟的环境,我们可以在不同环境中设置不同的Python版本,开发包版本,并且可以在这些环境中切换(类似的工具有virtualenv)。

环境管理:Conda

阅读全文 »

人工智能的未来世界令人神往。当我看到媒体上各种神乎其神的报道,作为一名咸鱼程序员时不时有这样的冲动:What the fuck it is?与此同时,与『人工智能』这个热点伴随出现的是『深度学习』、『机器学习』这些不明觉厉的玩意。甚至在圈内交流(chuiniubi)的时候言必谈XX学习。为了可以跟上时代的脚步,储备知识能力(可以一起chui),今年我又一次开始入门机器学习/深度学习之旅。本文是我最近学习内容的概括。

前传

这是或许是我第N次试图入门机器学习。大约三年前,当我试图打开这扇大门时,发现找到一份能看懂的资料十分困难。于是,我潜心搜索入门资料,当时最火的入门资料是Andrew Ng的视频:斯坦福机器学习课程。 这门课现在依旧是很多人的入门首选,可是当课程讲到反向传播推导各种微积分的时候,我没能坚持下来。我更习惯从书本学习入门知识,便开始寻找一本最基础的入门的书籍。皇天不负有心人,终于在国外一个热门的机器学习入门帖子中发现了一本好书《集体智慧编程》(Programming Collective Intelligence),如获至宝。全书使用Python作为开发语言,讲解了机器学习的基本概念,没有数学公式,侧重实践与代码。可惜的是,这本书也因为一些自身原因半途而废了。

阅读全文 »

译者注

在流式系统方面,网络上流传了两篇精彩的文章,Streaming 101Streaming102。这两篇文章的作者是Google流式系统的负责人Tyler Akidau,他是MillWheel与DataFlow的开发者,在流式系统方面十分权威。恰巧这两篇文章非常详细并且适合初学者,可以帮助我们理清流式系统的各种概念与面临的挑战,是十分难得的佳作。其中Streaming101已经有很多翻译的版本,质量参差不齐。官方的翻译版本参考这里,然而不幸的是它依然晦涩难懂。这里并不打算翻译101这篇文章,读者可以参考原文和译文进行学习,它主要介绍了流式系统的一些基本概念和困境,同时提出了一个核心观点:设计优良的流式系统完全可以代替批量系统,并从原理上分析了如何实现这一目标。在流式102这篇文章中,作者以实际的流式系统(DataFlow)的设计为例,列举了多个场景,具体讲解了如何设计流式系统,解决这些问题。这里将翻译流式102这篇文章,我会参考原文采用意译的方式,力求更好的帮助读者理解。

在阅读流式102之前,请务必通篇阅读流式101,理解核心概念,这里的思维导图仅供参考。Let’s Go!

阅读全文 »

参考资料:

知识图谱:

阅读全文 »

这一篇给自己。

漫长的2016,像是过了一辈子。回想年初的Flag,完成了多少?

首先,抱歉没能完成来深圳最重要的事情,甚至不知道如何开始,而且再也不会开始。在今年的最后一刻斩断了青春长长的尾巴。So,Sorry!我一直相信自己的感觉,一直努力让自己强大,做到说的每一句话,每当我凝望远方,总觉得这一切都是有意义的。。。。希望,如果,也许,或者。。。

阅读全文 »

效率是一个合格程序员逃不过去的话题。最近一周我被开发环境所累,所以痛下决心解决这个问题。粗略的估计了一下环境问题可以占用到一半的工作时间,这是十分低效的,浪费了青春而且消磨了耐心。

解决效率问题的关键就是工具。使用既有的工具和创造合适的工具。很多人忽视工具的力量,尤其是一些”勤快”的人,他们不厌其烦的做一些重复的操作,过着”充实”的生活,用加班和努力来振奋自己。唉。。我毕竟还是个懒人。在做前端开发时,对工具的需求不强烈,还没有到影响效率的程度:一个好用顺手的IDE,一个不错的notebook,That’s all。然而,最近接触的后台开发,尤其是一些运维的工作(坑爹的自运维!)让我认识到是时候鸟枪换炮。

终端配置

阅读全文 »

一个多月没有动笔写博客了。十月底做了一次技术方向的调整,出差了两周的时间,期间接触了大量新的知识,Blog就这么落下了,罪过罪过。从这周起继续开始写一些技术小结,主要偏向当前的技术方向。
这一篇还是总结的文章,总结一下我欠的技术债。有些是迟早要还的,有些遥遥可能无期了,但是谁知道了,且当这里做一个CheckPoint吧。分几个方面说:

  • Android开发方向
  • 全沾工程师计划的方向
  • 要还的债

Android技术债

阅读全文 »

自大学接触编程起,我没有想到会从事Android应用开发,更没有想到这么一搞就是3年。

这话得从大学说起,作为一名软件工程的理工男,也是兴趣使然,立志从事开发软件。然而我并不知道,这个目标还是多少有些宽泛的。对那时的我而言,软件直觉上是那一个个精美的界面,是那一行行酷酷的命令行,甚至是搞启动盘重装系统😌。C语言作为启蒙语言,就像打开了新世界的大门,让人痴迷的喜爱,我甚至隔三差五去网吧包宿刷教科书(没错就是那本再破千万的神书,迷之微笑)。那时的我都有C语言情节—以为这才是正统,Java这个low逼!

大一下学期,我和班长一起打鸡血地跑到实验室找到了C语言的任课老师—车老板,希望在实验室找点事情干。没想到凭着班长同志的神力和我那超高的C语言成绩的一丝印象,车老板留下了我们,于是我们成了实验室唯一的大一学生。天真的我们,开始了愉快的搞机时光。

阅读全文 »