自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Techgogogo

做个有追求的全栈程序员。当前在做的产品-晓日程: http://xricheng.com。自主博客: http://techgogogo.com; 最新动向: 回炉重造高数线代概论,为机器学习打基础...

原创 自己动手实现区块链

简介 本教程将带领大家从零开始开发一套可行的加密货币系统。开发的基本原则就是尽量的简单易懂。 我们打造的这个项目的名称叫做Naivecoin。 用的开发语言是Typescript。总共分为六个章节。大家可以选择相应的分支进去查看相应的代码。 如果你只是对区块链的实现原理感兴趣,那么你只需要看第一章...

2019-06-23 11:53:14 1905 0

翻译 第六章 钱包管理界面和区块链浏览器

第三章 交易 概览 非对称加密和签名 私钥和公钥 交易概览 交易outputs 交易inputs 交易数据结构 交易id 交易签名 未消费的交易outputs 未消费交易outputs清单更新 交易有效性验证 原始交易 测试体验 小结 概览 本章我们将引入加密货币中的交易机制。有了交易这个机制...

2019-06-23 11:50:05 396 0

翻译 第五章 自己动手写区块链之交易中继

概览 交易池 广播 未决交易有效性验证 记账 更新交易池 体验 小结 概览 上一章节中,我们要给一笔交易记账的话,必须自己手动进行一次挖矿,才会把交易记录加到一个区块里面去。 这一章节中,我们将会引入未决交易中继的机制。有了这个机制之后,我们要进行一笔交易的时候,就不需要自己动手挖矿,而是将自己...

2019-06-23 11:49:28 242 0

翻译 第四章 自己动手写区块链之钱包

第四章 钱包 概览 生成钱包 钱包余额 生成交易 使用钱包 测试体验 小结 概览 钱包的目的是为了给用户创建更高层的抽象接口来对交易进行管理。 我们最终的目的是让用户可以方便的: 创建一个新钱包 查看钱包的余额 在钱包之间进行交易 以上这些生效后,用户就不需要知道上一章节中描述的input...

2019-06-23 11:48:27 193 0

翻译 第三章 自己动手写区块链之交易

第三章 交易 概览 非对称加密和签名 私钥和公钥 交易概览 交易outputs 交易inputs 交易数据结构 交易id 交易签名 未消费的交易outputs 未消费交易outputs清单更新 交易有效性验证 原始交易 测试体验 小结 概览 本章我们将引入加密货币中的交易机制。有了交易这个机制...

2019-06-23 11:47:22 204 0

翻译 第二章 自己动手写区块链之工作量证明和挖矿

第二章 工作量证明和挖矿 概览 工作量证明拼图和难易度 挖矿 难易度共识 时间戳校验 累积难易度 验证测试 小结 概览 本章节我们将会在我们的玩具版区块链的基础上加入工作量证明(POW)的支持。在第一章节的版本中, 任何人都都可以在没有任何工作量证明的情况下添加一个区块到区块链中。 当我们引入...

2019-06-23 11:46:01 172 0

翻译 第一章:自己动手写区块链之最小可行区块链

第一章:最小可行区块链 概览 区块数据结构 区块哈希 创世块 创建区块 保存区块链 验证区块完整性 选择最长链 节点间通信 操作节点 架构 运行测试 小结 概览 区块链的基础概念非常简单, 说白了就是一个维护着一个持续增长的有序数据记录列表的这么一个分布式数据库。在此章节中我们将实现一个简单的...

2019-06-23 11:44:40 461 0

原创 晓日程-首款打通微信和桌面的免费日历应用

新年伊始,新年新决心, 各大网站到处大肆标榜高效率人士是如何提高生产率的,其中一个共同点就是如何高效的利用好有限的时间。什么有效的单位时间划分,番茄工作法, GTD(Get Things Done),《清单革命》等方法论和书籍再次随着大家的唾沫子到处传播。 作为缺乏运动而免疫力底下且脑洞长期大开的...

2019-03-13 10:21:30 349 0

原创 nodejs通过lodash合并去重由unixtime和Date组成的两个数组

1. 问题起源 最近在实现一个API,其中有一部分功能是需要从Mongodb中取出一个由Date对象组成的数组,然后将客户端传过来的unixtime合并到该数组中,并且去重复。 比如,假设从mongodb中取回来的数据中有一个叫做gaming的项,专门用来记录用户进入游戏的开始时间和退出时...

2017-04-28 13:32:48 5944 0

原创 小白学react之调用微信jssdk实战

本打算网上找个react调用微信的jssdk的实例进行学习的,但可惜搜索了半天而未果,只有一些基于其他框架的。估计是大牛们都觉得太简单或者太忙了,懒得提笔花几个小时来给我们做个Demo。对于处于快速学习年代的我们,一个可以运行起来的示例是多么的重要。希望本示例可以起到抛砖引玉的作用,让大家能快速的...

2017-04-23 11:30:12 7334 2

原创 小白学react之网页获取微信用户信息

通过上一篇《小白学react之EJS模版实战》我们学习了如何通过EJS模版生成我们高定制化的index.html文件。本篇我们将会继续延续我们的alt-tutorial项目的实战计划,去获取微信扫码用户的信息,并将头像显示在我们页面的右上角上。最终实战效果将如下所示。首先根据我们的网站url生成二...

2017-04-23 11:29:05 4686 0

原创 小白学react之EJS模版实战

通过上一篇《小白学react之由FOUC引发的一次webpack变革》我们学习了webpack的一些高级用法,比如如何生成哈希文件,如何将开发和生产配置分离,如何解决FOUC问题,以及如何运用html格式的模版来自动生成我们的index.html。但是在尝试将我们的应用部署到我的一个阿里云服务器上...

2016-10-12 12:38:56 2643 0

原创 小白学react之由FOUC引发的一次webpack变革

上一篇《小白学react之页面BaseLayout框架及微信的坑》我们学习了如何为各个Components提供一个基础的父框架组件来处理不同页面的Title的显示和Style样式的显示。今天本人会尝试就自己踩到的一个坑开始,通过对webpack做进一步的修改,来学习更高级点的webpack相关的知...

2016-10-12 12:37:26 1681 0

原创 小白学react之页面BaseLayout框架及微信的坑

上一篇《小白学react之SASS实战》我们学习了如何通过运用sass来为我们的应用页面“上色”,加入css的支持。但是我们到现在为止,每个页面的标题还是系统默认的,这多多少少显得不专业: 今天我的目标就是为所有页面提供一个通用的基础布局框架,以便在同一个地方控制不同页面的布局,比如背景颜色以及...

2016-10-12 12:35:55 1424 0

原创 小白学react之SASS实战

上一篇《小白学react之restful api获取服务器数据实战》我们学习了如何通过superagent的两个模块提供的功能,调用远程Express服务器上通过restful api提供的数据,并且学习了如何打造一个简单的Express api服务器。今天本人准备将我们的示例应用alt-tuto...

2016-10-12 12:34:19 1907 0

原创 小白学react之restful api获取服务器数据实战

通过上一篇文章《[小白学react之React Router实战](http://techgogogo.com/2016/09/react_router/)》我们学习了在React Router的基本功能,并根据路由功能建立了一个导航栏,可以方便的切换查看Locations和About。 但是,...

2016-09-29 15:38:02 6996 0

原创 小白学react之React Router实战

通过上一篇文章《[小白学react之altjs下的Action和Store](http://techgogogo.com/2016/09/altjs_action_store/)》我们学习了在alt框架下的Action和Store的特色,以及对alt-tutorial的代码做了重构,让其更简洁且各...

2016-09-29 08:06:33 900 0

原创 微信应用号开发知识贮备之altjs的Action和Store

过上一篇文章《[微信应用号开发知识贮备之打通React Component任督二脉](http://techgogogo.com/2016/09/altcontainer/)》我们学习了AltContainer是如何通过对Component职责的解绑,让Component的尽可能的关注在如何进行页...

2016-09-27 20:43:02 676 0

原创 微信应用号开发知识贮备之打通React Component任督二脉

随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生。作为行业内人士,我们很应该去拥抱这个趋势。这段时间在忙完工作之余准备储备一下这方面的知识点,以免将来被微信应用号的浪潮所淹没...

2016-09-25 20:45:11 1123 0

原创 微信应用号开发知识贮备之Webpack实战

随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生。作为行业内人士,我们很应该去拥抱这个趋势。这段时间在忙完工作之余准备储备一下这方面的知识点,以免将来被微信应用号的浪潮所淹没 通过上一篇《微信应用号开发知识贮备之altjs官方实例初探》,我们已经将altjs的官方实例所用到的依赖包升到...

2016-09-24 10:49:58 2007 0

原创 微信应用号开发知识贮备之altjs官方实例初探

天地会珠海分舵注:随着微信应用号的呼之欲出,相信新一轮的APP变革即将发生。作为行业内人士,自己之前从来没有做过web及webapp开发,所以这方面算是一名小白。时下最热的技术栈当然还是围绕着javascript的nodejs,mongodb,express, angularjs,HTML5,re...

2016-09-23 09:12:11 852 0

原创 开辟新战场,打造新的商业模式

在当今商业竞争异常激烈的年代,“差异化”和“革新”这两个词被广泛的交替使用,人们对它们之间的差别已经变得越来越模糊。比如我们经常会听到人说,我们要革新我们的商业模式,对我们的产品重新进行定位,找到有差异化的新商业模式和产品定位。其实它们之间是有着明显的区别的,“差异化”形容的是当前事物和旧事物还是...

2016-04-22 09:13:18 1581 0

原创 需求驱动还是技术驱动,大跃进的聊天机器人在开着一辆往历史倒退的车

F8大会的那个引爆的聊天机器人相信大家已经耳熟能详,但我们真的是需要这样的一个聊天机器人吗?Facebook是在大跃进穿越未来,还是在开着历史的倒车呢?李敖有话说:“是这样吗?真的是这样子吗?”

2016-04-22 09:10:33 6101 0

翻译 苹果产品设计中鲜为人知的10个细节

说到设计,无论是软件还是硬件上面,毫无疑问苹果对于细节上面的把控可以说无人能与之匹敌。在过去的几十年里,苹果对细节的注重可谓有口皆碑,很多细节上面的设计在无人指出的情况下很多消费者都没有注意到。令人惊讶的是,很多注重细节的iPhone和Mac的忠实拥趸也尝尝会忽略掉苹果设计上面的一些细节。下面我们...

2016-02-02 09:55:51 1692 0

翻译 破坏性创新第一原则

如果在位者的关键用户们没有尽其所能的去揶揄你在打造的产品是如何的功能匮乏的话,那么,你的这个产品没有足够的破坏力...

2015-12-23 13:23:16 1562 1

翻译 云端办公?除了访问不了的谷歌和付费的微软,您其实还有其他选择

LibreOffice的商业合作伙伴Collabora和ownCloud共同发布了一个在线LibreOffice版本,其中ownCloud是一个类似Dropbox的开源文件存储和共享系统(其实就是一私有云产品)...

2015-12-17 10:14:43 1852 0

翻译 如日中天的Uber究竟是用什么开发语言做到的?

Uber的网站可靠性工程师Tom Croucher在最近于波兰举行的Node.js互动大会上详尽的对该公司所用的语言平台进行了阐述...

2015-12-17 10:04:35 2297 1

翻译 2分钟读懂大数据框架Hadoop和Spark的异同

谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考...

2015-12-17 09:55:35 2770 3

翻译 谁在吞噬着这个世界

Marc Andreessen曾抛出著名的言论说:“软件正在吞噬着整个世界”,这句话如今在IT界可谓是无人不知,无人不晓。同样是做风投的同行John Vrionis更进一步的断言说:“开源软件正在吞噬着整个世界”。那么何出此言?John是在大放阙词呢?还是言之有理呢?

2015-12-17 09:46:34 1729 0

原创 第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件

到了现在,万事已经俱备,控件树这个东风也已经就绪了,我们也终于可以火烧赤壁大展拳脚,通过控件的ID在控件树中找到我们想要的控件了。 HierarchyViewer只允许用户通过控件的ID去查找控件,这比Robotium,UiAutomator和Appium这些框架是少了很多查找控件的方式的,但聊胜...

2015-12-08 11:02:18 2014 1

原创 第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树

在上几节的描述中,我们把HierarchyViewer初始化好,也把ViewServer给装备好了。那现在距离获得一个控件去操作它是万事具备只欠东风了,欠了那一股春风了?欠了的是建立控件树这个东风,因为HierarchyViewer根据ID去获取一个控件之前是需要先建立好控件树,然后从该控件树上根...

2015-12-08 11:01:46 2006 0

原创 第14章7节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-获取版本号

这里获取的版本号有两个,一个是ViewServer自身的版本号,一个是ViewServer当前使用协议的版本号。 我们这里为什么需要获取ViewServer版本以及其协议版本呢?其实主要原因是ViewServer有些功能在老版本上是不支持的,比如HierarchyViewer在列出当前所有Acti...

2015-12-08 11:00:57 1781 0

原创 第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer

在获得ViewServer的运行状态后,如果ViewServer还没有启动的话,HierarchyViewer的setupViewServer的下一步就会去启动ViewServer。调用的方法是DeviceBridge.startViewServer,我们进去看看:190 public s...

2015-12-08 11:00:24 1740 0

原创 第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态

上一小节我们描述了HierarchyViewer是如何组建ADB协议命令来实现ViewServer的端口转发的,在端口转发设置好后,下一个要做的事情就是去检测目标设备端ViewServer线程是否已经启动起来了。我们进入setupViewServer调用的DeviceBridge的isViewSe...

2015-12-08 10:59:54 1702 0

原创 第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发

在初始化HierarchyViewer的实例过程中,HierarchyViewer会调用自己的成员方法setupViewServer来把ViewServer装备好,那么我们这里先看下这个方法: 39 private void setupViewServer() { 40 ...

2015-12-08 10:57:43 1626 0

原创 第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化

既然要使用HierarchyViewer来获取控件信息,那么首先我们看下在脚本中,我们是怎么获得HierarchyViewer的,看下面一段脚本代码:1 device = MonkeyRunner.waitForConnection() 2 device.wake() 3 device.sta...

2015-12-08 10:56:02 1685 0

原创 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述

HierarchyViewer库的引入让MonkeyRunner可以以面向控件的方式进行脚本编写,那么它是怎么做到这一点的呢?它的实现原理又是怎么样的呢?在这一小节开始我们就会开始一起揭开它的神秘面纱。 HierarchyViewer这个框架的工作需要ViewServer的协同工作,它们是以CS(...

2015-12-08 09:18:28 1879 0

原创 第14章1节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-面向控件编程VS面向坐标编程

到此为止我们描述的MonkeyRunner对应用的点击拖放等操作都是直接通过指定坐标点来实现的,比如下面触摸一个坐标点为(60,90)的按钮的脚本例子:1 device.touch(60,900,MonkeyDevice.DOWN_AND_UP)代码14-1-1 直接使用坐标点操作应用  这样子做...

2015-12-08 09:17:42 1498 0

原创 第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结

最后我们对MonkeyRunner启动的过程做一个总结,当然,其中也包括启动Monkey,虽然它不属于启动过程的一部分:monkeyrunner这个shell脚本会先设置一些运行环境的系统属性保存到JVM的System.Propery里面然后该脚本会通过java -jar直接运行sdk下面的mon...

2015-12-08 09:16:19 1290 0

原创 第8章6节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动Monkey

大家可能会觉得奇怪,为什么启动目标设备端的monkey进程会放在“运行测试脚本”这一节之后来阐述。 纵观前面整个MonkeyRunner的启动流程,我们看到并没有提及到monkey进程启动的地方。那么就奇怪了,monkey是什么时候被MonkeyRunner启动起来的呢? 我们的测试脚本一开始时几...

2015-12-08 09:15:42 1581 0

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