自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刚是程序员的博客

专注大数据,数据科学,机器学习

  • 博客(41)
  • 收藏
  • 关注

原创 Python 与 Javascript 之比较

最近由于工作的需要开始开发一些Python的东西,由于之前一直在使用Javascript,所以会不自觉的使用一些Javascript的概念,语法什么的,经常掉到坑里。我觉得对于从Javascript转到Python,有必要总结一下它们之间的差异。基本概念Python和Javascript都是脚本语言,所以它们有很多共同的特性,都需要解释器来运行,都是动态类型,都支持自动内存管理,都可以调用

2017-06-29 10:49:01 843

原创 使用开源软件快速搭建数据分析平台

最近,国内涌现出了不少数据分析平台产品,例如魔镜和数据观。这些产品的目标应该都是self service的BI,利用可视化提供数据探索的功能,并且加入机器学习和预测的功能。它们对标的产品应该是Tableau或者SAP Lumira。因为笔者曾经为Lumira开发数据可视化的功能,对这一块很感兴趣,于是就试用了一下这些产品,感觉这些产品似乎还有很大的差距,于是就想自己用开源软件搭一个简单的数据分

2017-06-29 10:34:33 4276 2

原创 容器集群管理平台的比较

容器化和微服务是当前最热话题,不久之前,笔者(据说因为现在都不用笔了,“笔者”的称谓已经不合适了,因为输入用键盘,叫“键人”更为合适)参加QCon上海一个微服务监控的Session,场面爆棚,我不得不在拥挤的过道听完了整个session。随着要管理的容器越来越多,容器的集群管理平台成为了刚需!Docker SwarmSwarm是Docker公司在2014年12月初新发布的容器集群管理工具。

2017-06-28 11:23:25 794

原创 大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk

本文就架构,功能,产品线,概念等方面就ElasticSearch和Splunk做了一下全方位的对比,希望能够大家在制定大数据搜索方案的时候有所帮助。简介ElasticSearch (1)(2)是一个基于Lucene的开源搜索服务。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发

2017-06-28 11:17:43 4986

原创 使用Heapster和Splunk监控Kubernetes运行性能

Kubernetes已经成为容器编排的事实上的王者,连Docker都已经向K8s女王大人低头。对于Kubernetes的cluster的数据收集和监控已经成为IT运维的一个重要话题。我们今天来看一看如何利用Splunk最新的Metircs Store来对Kubernetes的集群进行性能监控。部署架构下图是该方案的部署架构,主要包括:利用Heapster收集K8s的性能数据,包含CPU,Memor

2018-01-18 03:31:01 1070

原创 用Python实现一个大数据搜索引擎

搜索是大数据领域里常见的需求。Splunk和ELK分别是该领域在非开源和开源领域里的领导者。本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理。布隆过滤器 (Bloom Filter)第一步我们先要实现一个布隆过滤器。布隆过滤器是大数据领域的一个常见算法,它的目的是过滤掉那些不是目标的元素。也就是说如果一个要搜索的词并不存在与我的数据中,那么

2017-11-28 09:10:37 742

原创 图解机器学习

警告:多图杀猫!每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手。确实,机器学习的各种套路确实不少,但是如果掌握了正确的路径和方法,其实还是有迹可循的,这里我推荐SAS的Li Hui的这篇博客,讲述了如何选择机器学习的各种方法。另外,Scikit-learn 也提供了一幅清晰的路线图给大家选择:其实机器学习的基本算法都很简单,下面我们就利用二维数据和交互

2017-09-28 17:01:57 1865

原创 把代码执行演示嵌在你的PPT中

“Talk is cheap, show me your code!”当一个程序员在做技术分享的时候, 代码演示经常是不可或缺的一个环节。然而在你的演示PPT和代码运行之间切换是一件非常恼人事情,而且非常影响演示的节奏和流畅性。要做一个完美的技术分享,能不能把代码的运行嵌入到PPT中呢?当然可以,我前不久在公司内部分享了一起关于Python的小谜题,大家可以到斗鱼去观看这次分享的视频录播

2017-09-07 09:43:11 22685 1

原创 程序员量子力学-海森堡式BUG

今天在阅读《The Pragmatic Programmer》的时候发现书中提到了Heisenbug让我想起来了多年以前在开发中碰到的一个海森堡式的BUG。海森堡是德国著名的物理学家,量子力学的创始人之一,“哥本哈根学派”的代表人物。如果大家对这段历史或者物理原理不清楚的话,推荐大家阅读《上帝掷骰子吗》,非常好看的一本关于量子力学历史的科普书。海森堡对量子力学的一个重要贡献

2017-06-30 09:59:40 1746

原创 用编程的思路模拟解决脑筋急转弯问题

前些日子看了可汗学院的这个关于诚实人和说谎者的脑筋急转弯问题,我觉得如果能用程序来模拟,那一定很有趣。这个题目是这样的,有两扇门,一扇通往天堂,一扇通往地狱,你要做出选择打开那扇门。门口各有一个人,他们都知道门后面的情况,其中一个总是说实话,而另一个总是撒谎。你可以问他们问题。要怎样问问题,才能做出正确的选择?在揭开答案之前,我们先看看我是如何用JavaScript来模拟这个问题的。

2017-06-30 09:58:35 685

原创 用可视化来讲故事

在科学松鼠会的网站上有一篇漫画,来自imgur.com,讲述了 科学理论是如何建立的我用到d3.js把这个静态的图改成了动态效果,代码可见githubSee the Pen Occam's Razor cn by gangtao (@gangtao) onCodePen.注:这个其实主要就是奥卡姆剃刀原理,“若无必要,勿增实体”。附原图 :

2017-06-30 09:57:50 541 1

原创 数据可视化中的视觉属性

Stephan Few 是数据可视化领域里面数一数二的专家,他的几本书《Show Me The Numbers》,《Information Dashboard Design》和《Now You See It》都是非常优秀的关于数据可视化的书。Stephan Few 和 Tableau 的合作非常紧密,在 Tableau 的数据可视化的设计中,处处可见 Stephan Few 的思想

2017-06-30 09:57:01 1537

原创 软件中的质量属性(一)

开发高质量的软件是一件极具挑战的工作。其中一个重要的原因就是对于“质量”的定义各不相同,变化莫测。杰拉尔德温伯格在他的四部曲巨作《质量软件管理》的第一卷第一章中就谈到了什么是质量以及质量的重要性。温伯格在书中讲了一个很有趣的故事。某软件企业每年都会根据所开发软件的质量对开发团队进行奖励,质量好的团队将会获得相应的嘉奖。可是如何评价软件的质量是一个令人头疼问题,于是他们采用了量化指标,根据用户反

2017-06-30 09:55:59 14173 1

原创 软件中的质量属性(二)

现在我们接着上一次的话题来看看其它的质量属性。互操作性 (Interoperability)互操作性指的是系统内或者系统之间不同的组件可以有效地进行信息交换,通常是以服务(Service)的形式来进行的。互操作性的关键因素包括通信协议,接口定义,数据格式的定义等等,而标准化是实现互操作性的重要手段。实现互操作性的主要挑战有以下这些方面:系统内部或者和已有的旧系统(legac

2017-06-30 09:46:41 4910

原创 神奇的阿基米德螺线

今天在读数学史,正巧读到阿基米德螺线,于是写了一段js代码,生成螺线。更多的有趣内容请参考这篇文章代码如下(需要jquery和d3):HTMLCSSbody {background-color:#000000;}JSfunction drawCircile(pc, r, container) {    var circle = 

2017-06-30 09:45:11 4457 2

原创 使用Python抓取欧洲足球联赛数据

背景Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤数据的采集和获取数据的清洗,抽取,变形和装载数据的分析,探索和预测数据的展现其中首先要做的就是获取数据,并提炼出有效地数据,为下一步的分析做好准备。数据的来源多种多样,以为我本身是足球爱好者,而世界杯就要来了,所以我就想提取欧洲联赛的数据

2017-06-30 09:44:20 5882 1

原创 用Python做单变量数据集的异常点分析

大数据时代,数据的异常分析被广泛的用于各个场合。 今天我们就来看一看其中的一种场景,对于单变量数据集的异常检测。所谓单变量,就是指数据集中只有一个变化的值,下面我们来看看今天我们要分析的的数据,点击这里数据文件下载数据文件。分析数据的第一步是要加载文件, 本文使用了numpy,pandas,scikit learn等常见的数据分析要用到的Python库。import numpy a

2017-06-30 09:39:11 1965

原创 在Mac OS X上构建wget来抓取静态网站内容

我们的目标是在Mac OS上获取一个静态服务器的内容,通常用wget是一个很好的选择。wget是一个命令行工具用于从网络服务器来获取内容。但是在Mac OS X(Mountain Lion/ Mavericks / Snow Leopard)上没有提供该工具,但是有curl。wget VS curlcurl基于跨平台的库libcurl支持unix管道返回错误

2017-06-30 09:38:00 1321

原创 在ipython notebook中调用ggplot的三种不同的方法

在大数据时代,数据可视化是一个非常热门的话题。各个BI的厂商无不在数据可视化领域里投入大量的精力。Tableau凭借其强大的数据可视化的功能成为硅谷炙手可热的上市公司。Tableau的数据可视化的产品,其理论基础其实是《The Grammar of Graphic》,该书提出了对信息可视化的图表的语法抽象体系,数据的探索和分析可以由图像的语法来驱动,而非有固定的图表类型来驱动,使得数据的探索过程变

2017-06-30 09:37:03 996

原创 利用Splunk做应用程序的性能分析

在我们的开发过程中,经常会需要对我们开发的程序做性能分析,有很多性能分析的工具,很多语言都提供了不同的profiling工具,这些工具很有用,提供了程序运行的原始记录数据,通过对这些数据的分析,可以得到程序运行的性能状况,找到问题所在。然而,这样的工具手机的数据比较原始,往往还需要一些更进一步的分析,才能定位问题。Splunk是一个可以运行在不同平台上的机器数据的实时运维平台,所谓机器数据,就

2017-06-30 09:35:56 2289

原创 用HTML5构建一个流程图绘制工具

在我们的开发工程中经常会使用到各种图,所谓的图就是由节点和节点之间的连接所形成的系统,数学上专门有一个分支叫图论(Graph Theroy)。利用图我们可以做很多工具,比如思维导图,流程图,状态机,组织架构图,等等。今天我要做的是用开源的HTML5工具来快速构造一个做图的工具。工具选择工预善其事,必先利其器。第一件事是选择一件合适的工具,开源时代,程序员还是很幸福的,选择很多。

2017-06-30 09:34:48 13634 1

原创 使用sphinx快速生成Python API 文档

不管是开源还是闭源,文档都是很重要的。当然理论上说,最好的文档就是代码本身,但是要让所有人都能读懂你的代码这太难了。所以我们要写文档。大部分情况,我们不希望维护一份代码再加上一份文档,这样做很容易造成文档和代码的不一致,程序员最讨厌更新文档了。所以最佳实践就是在程序员代码中加注释,然后通过构建脚本自通生成文档。对应于Pyhon,有很多可供选择的工具:sphinx 中文版介绍 Sph

2017-06-30 09:34:01 2387

原创 Python 并行分布式框架之 Celery

Celery (芹菜)是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。架构设计Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。消息中间件Celery本身不提供消息服务,但是可以方便的和第三方提供的消

2017-06-30 09:33:17 2293

原创 用Python抓取亚马逊云(AWS)的日志(CloudTrail)数据

如今是云的时代,许多公司都把自己的IT架构部署在基础架构云(IaaS)上。著名的IaaS提供商有亚马逊,微软(Azure),IBM等,国内也有诸如阿里云等。这里亚马逊毫无疑问是该市场的领军者。AWS提供了非常多的服务,领先了竞争对手一大截。并且AWS提供非常丰富的API,其API基于Rest,所以很容易被不同的语言的平台来调用。在如今的大数据时代,利用数据在做决策是大数据的核心价值,AWS

2017-06-29 17:07:15 2328 1

原创 使用Python进行分布式系统协调 (ZooKeeper,Consul, etcd )

笔者之前的博文提到过,随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题。今天我们就来看看如何使用Python,利用开源对分布式服务做协调。在对分布式的应用做协调的时候,主要会碰到以下的应用场景:业务发现(service discovery)找到分布式系统中存在那些可用的服务和节点

2017-06-29 17:04:53 692

原创 谈谈程序员面试之刷题

前一段时间有一个非常有趣的故事(http://www.pingwest.com/sorry-cant-hire-you/  ),Max Howell (Homebrew的作者) 在 Google 面试时遇到了让人悲伤的情境,google拒绝了Max, 给出了答复:“我们90%的工程师都用你写的软件,但抱歉我们不能聘用你,因为你没法在白板上翻转二叉树”。这确实是一个令人悲伤的故事,作为一个程序员

2017-06-29 17:03:58 21372 2

原创 美丽的曼陀罗曲线

最近看到一篇微信朋友圈上的文章,说两个行星运行轨迹的中心连线可以画出一个美丽的曼陀罗曲线,于是就写了一段代码生成这样的曲线,结果真是令人惊叹的美丽。代码参见 :http://runjs.cn/detail/lbgqwfiu或者http://codepen.io/gangtao/pen/oXKqYB这里是一部分生成曲线的图v1=15,v2=50, 七瓣花

2017-06-29 17:02:42 2181

原创 在云上的机器学习

随着大数据日新月异的飞速发展,机器学习也变的越来越性感。云和大数据是天生的一对,那么云上的机器学习又是什么样呢?我们今天就来看看几个基于云的机器学习平台:亚马逊,微软和bigml亚马逊机器学习我们先来看看云的领军人物亚马逊的机器学习平台 Amazon Machine Learning首先,要是用亚马逊的机器学习,你需要有一个AWS的账号(废话)。在Analytics服务区域你会找到

2017-06-29 17:00:45 1551

原创 Spark Python 快速体验

Spark是2015年最受热捧大数据开源平台,我们花一点时间来快速体验一下Spark。Spark 技术栈如上图所示,Spark的技术栈包括了这些模块:核心模块 :Spark Core集群管理 Standalone SchedulerYARNMesosSpark SQLSpark 流 StreamingSpark

2017-06-29 16:59:53 671

原创 Spark 机器学习实践 :Iris数据集的分类

今天试用了一下Spark的机器学习,体验如下:第一步,导入数据我们使用Iris数据集,做一个分类,首先要把csv文件导入。这里用到了spark的csv包,不明白为什么这么常见的功能不是内置的,还需要额外加载。--packages com.databricks:spark-csv_2.11:1.4.0from pyspark.sql import SQLContextsqlCo

2017-06-29 16:58:34 2803 5

原创 用JS实现简单的神经网络算法

笔者尝试用JavaScript实现最简单的神经网络算法。神经网络简介神经网络试图模拟大脑的神经元之间的关系来处理信息。它的计算模型通常需要大量彼此连接的节点。每个神经元通过某种特殊的输出函数来处理来自其它相邻神经元的加权输入值。神经元之间的信息传递的强度,用所谓的加权值来定义,算法会不断的调整加权值来实现自我的学习过程。神经网络分为多层,如上图,有输入层,隐藏层和输出层。J

2017-06-29 10:57:24 2301

原创 一道据说是苹果的面试题

这是一道据说来自苹果的面试题目,求下图橙色部分围成的面积:据说要15分钟给出答案,这里我思考了一下,给出我的分析。其实就是计算上图中的四边形(其实是正方形)和4个弧形围出的面积。作出上图的辅助线,ADC是正三角形,角ADC是60度,角EDA是30度,角BDC也是三十度,所以角ADB是30度。最后弧形围成的面积就等于30度角扇形面积减去三十度角等腰三角形(腰边长等于正

2017-06-29 10:56:30 756

原创 Go语言的类IPython 交互式编程界面

Bret Victor 的 Inventing on principle 是我看到过的最令人激动和震撼的演示,没有之一。虽然这位前苹果公司的UI大牛早在2012年就作出的这次演示,但他的影响一直没有减弱,编写程序过程中的任何变化,应该直接的产生反馈,让程序猿能够看到结果,或者说创造者需要对自己的创造的东西有实时的反馈。之前一直在使用Python,非常喜欢IPythonn Notebook,

2017-06-29 10:55:41 2742

原创 持续交付的架构成熟度模型

随着云和容器技术的发展,大家对DevOps和CI/CD的重要性有了更深入的认识。今天我们就讨论一下架构设计如何更好的支持CI/CD。什么是持续集成,交付和部署(CI/CD)Martin Fowler 和 Kent Beck 首次提出 Continuous Integration (简称:CI),将之描述为:持续集成是一种软件开发实践:许多团队频繁地集成他们的工作,每位成员通常进行 日常集成

2017-06-29 10:54:29 4672

原创 微服务中的模式和反模式

微服务中的常见设计模式软件开发者对“四人帮”的《设计模式》一书应该都很熟悉,微服务中也会有一些常见的模式:部署模式如何部署服务是微服务中的一个重要问题,微服务的部署方式非常灵活,有以下的不同选项可供选择 (参考 http://www.open-open.com/lib/view/open1462434484246.html)多服务共享主机/虚机单服务部署单一主机/虚机

2017-06-29 10:53:36 1334

原创 微服务部署方式的演进

Mutable Monster Server最早的巨石架构,应用本身包含状态,整个应用部署在物理节点上,要升级通常需要对整个应用升级,一般需要停止服务。并且这样的架构很难横向扩展。Immutable Server and Reverse Proxy过渡到微服务后,应用是不可变的服务部署在容器或虚机上,服务自身不包含状态,利用反向代理提供访问。这样的架构便于升级和横向扩展,当

2017-06-29 10:52:11 465

原创 开源中国用户分析

加入开源中国也有超过三年的时间了,觉得开源中国已经越办越好了,突然很想知道它究竟有多好,我是不是开源中国最老的用户,我有176个开源中国的积分能够排名第几,带着这些问题,我抓取了部分开源中国的用户信息,做了一个简单的分析。数据获取要获得用户数据,可以通过开源中国的网页来进行。这个是我的主页面这个页面包含了用户的基本信息,包括用户名,积分,粉丝,关注等等。点击粉丝链接可以获得所有

2017-06-29 10:51:20 359

原创 使用开源Echarts为Splunk打造类似语法驱动的分析可视化

Splunk是业内领先的机器数据平台,有非常易用的用户界面的可视化的选项。Splunk的可视化图表是使用开源的highcharts构建的。但是Splunk内置的可视化选项不够灵活,不能动态的进行数据到图表的绑定。可喜的是,最新版本的Splunk提供了客户自定义图表的功能, 利用该功能,我们可以打造一个类似Tableau或者ggplot的语法驱动的可视化工具。代码在github ht

2017-06-29 10:50:30 1599

原创 探索Javascript异步编程

笔者在之前的一片博客中简单的讨论了Python和Javascript的异同,其实作为一种编程语言Javascript的异步编程是一个非常值得讨论的有趣话题。JavaScript 异步编程简介回调函数和异步执行所谓的异步指的是函数的调用并不直接返回执行的结果,而往往是通过回调函数异步的执行。我们先看看回调函数是什么:var fn = function(callback) {

2017-06-29 10:38:07 236

原创 使用Python进行并发编程

让计算机程序并发的运行是一个经常被讨论的话题,今天我想讨论一下Python下的各种并发方式。并发方式线程(Thread)多线程几乎是每一个程序猿在使用每一种语言时都会首先想到用于解决并发的工具(JS程序员请回避),使用多线程可以有效的利用CPU资源(Python例外)。然而多线程所带来的程序的复杂度也不可避免,尤其是对竞争资源的同步问题。然而在python中由于使用了全局解释锁(G

2017-06-29 10:37:18 2721

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除