Fork me on GitHub

用免费的Google云服务将Github项目Webhook事件通知到钉钉 2016-05-15

本教程使用Go语言来实现

image

+

image

准备开发环境

首先你需要下载Google AppEngine的SDK:https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Go

安装好后执行goapp确认已安装好

4:30:40 Hugo-Mac-mini ~/Projects/hugozhu/godingtalk $ goapp env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/hugozhu/Projects/hugozhu/godingtalk"
GORACE=""
GOROOT="/Users/hugozhu/Projects/share/go_appengine/goroot"
GOTOOLDIR="/Users/hugozhu/Projects/share/go_appengine/goroot/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT="1"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

从树莓派上发消息到手机或桌面钉钉 2016-05-02

image

钉钉是阿里巴巴专为中小企业和团队打造的沟通、协同的多端平台,钉钉开放平台旨在为企业提供更为丰富的办公协同解决方案。通过钉钉开放平台,企业或第三方合作伙伴可以帮助企业快速、低成本的实现高质量的移动微应用,实现生产、管理、协作、运营的移动化。

访问钉钉开放平台的文档,请戳此

下面将介绍如何使用钉钉开放平台SDK在树莓派上发送消息到手机和桌面钉钉。

准备工作

首先,你需要在钉钉上创建一个组织,点这里开始

注册好后创建微应用

获取微应用的 agentid

用Grafana制作树莓派上的监控大盘 2016-04-24

Grafana是一个优秀的开源图表系统,支持多种数据源,其中包括 InfluxDBPrometheus

安装

export GOPATH=`pwd`
go get github.com/grafana/grafana
cd $GOPATH/src/github.com/grafana/grafana
go run build.go setup              # (only needed once to install godep)
$GOPATH/bin/godep restore          # (will pull down all golang lib dependencies in your current GOPATH)
go run build.go build              # (or 'go build .')

编译好后会在bin目录下生成grafana-servergrafana-cli

树莓派3变身iBeacon发射器 2016-04-19

iBeacon是apple公司提出的“一种可以让附近手持电子设备检测到的一种新的低功耗、低成本信号传送器”的一套可用于室内定位系统的协议。iBeacon技术通过低功耗蓝牙(BLE),也就是我们所说的智能蓝牙来实现。

设置

树莓派3内置了蓝牙芯片,最新的Raspian也已经安装好bluez,所以基本上不用什么设置,就可以把树莓派3当做iBeacon基站来使用了。

通过以下命令可以确认蓝牙芯片工作正常

hugo@raspberrypi3:~ $ sudo hciconfig
hci0:   Type: BR/EDR  Bus: UART
    BD Address: B8:27:EB:BF:E0:C5  ACL MTU: 1021:8  SCO MTU: 64:1
    UP RUNNING 
    RX bytes:3841 acl:0 sco:0 events:239 errors:0
    TX bytes:5213 acl:0 sco:0 commands:237 errors:0

在树莓派3上搭建监控系统 2016-04-17

之前用过tsar做监控,但没有基于浏览器的图表展示,而且tsar收集数据很频繁,容易写坏SD卡。后来一直用Xively SaaS服务,但因为服务在国外,访问速度一直不尽人意。直到今天早上读到InfoQ的一篇文章才知道了Prometheus,看了一下介绍后发现Prometheus的以下特点非常合适在树莓派上部署:

  1. 采用Go实现支持,天然支持跨平台,配置相当简单,维护和二次开发的成本小;
  2. 采集数据支持Pull和Push模式,可以自定义不同采集点的采样频率,适合轻量型应用降低能耗;
  3. 二次计算和查询方式很灵活
  4. 自带 Grafana数据可视化工具;
  5. 可配置的内存+磁盘存储大小,采用的时间序列文件和Level DB做索引效率较高,不会让监控软件本身消耗过多的树莓派计算和存储资源

监控系统架构

安装

Prometheus采集数据的主要方式是通过HTTP到指定的URL上定时采集,为了支持Push方式收集数据,我们还需要安装一个Prometheus Pushgateway作为HTTP服务器来给Prometheus提供数据,你的应用则可以通过命令行或编程接口方式将数据推送到Pushgateway

树莓派3初体验 2016-04-13

树莓派基金会今年推出的新品Raspberry Pi 3已经到手,官方宣传性能比树莓派2代快50%,比树莓派1代快10倍,第一次使用的64位四核处理器(博通BCM2837)配备了ARM Cortex-A53处理器,内置了802.11 b/g/n 2.4GHz WIFI和蓝牙4.1,显卡没变,还是双核VideoCore IV(并不支持4K视频)。CPU升级也对能耗有了更高的要求,官方说法最好是使用5V 2.5A的电源输入(iPad充电器),实测在无外设的情况下,2A的电流输出也可以让Pi 3正常运行。价格和树莓派2也一样,官方售价税前35美金,国内可以在淘宝上买到,238元一枚,点此购买

image

我深深的认为每个程序员都需要有一块树莓派,24*7的运行在家里的网络上 ,投入成本在300人民币以内(树莓派加电源:250,SD卡:50),每年电费在10元以内。树莓派支持各种编程语言的开发,安装体验各种操作系统非常简单,丰富的外部接口,支持很多类型的传感器和控制器外设,可以让你轻松设计和实现智能硬件,技术让生活更美好~

外观

树莓派3的规格大小则和树莓派2完全一样,你甚至可以直接用树莓派2的外壳,完全贴合。

image

背面看略有不同,中间的芯片是1G内存,树莓派3的内存速度快了1倍,右边是CF卡插槽,树莓派2是回弹式卡槽(取出CF卡时只要往力再摁一下就会弹出),树莓派3可能为了降低成本或是因为板卡空间的问题改成了更紧凑的插入式,装上外壳后取出的时候有点费劲,我需要用瑞士军刀的镊子夹出来。

image

用iptables搭建稳定的加速代理 2016-04-06

设置步骤

在阿里云中国和美国都购买一个VPS,用同样的操作系统,都安装好 shadowsocks-libev ( https://github.com/shadowsocks/shadowsocks-libev )

编辑配置文件 config.json 如下:

{
    "server":"<your_ip_address>",
    "local_address":"0.0.0.0",
    "server_port":10080,
    "local_port":1080,
    "password":"password",
    "method":"bf-cfb",
    "timeout":600
}

在树莓派上运行Docker 2015-04-12

Docker

Docker是目前非常流行的代码运行容器,操作系统虚拟化,运维自动化架构和开源的解决方案。

Docker的基础是Linux容器(LXC)技术,相比传统的VM虚拟化技术, LXC更轻量,性能更好。

Docker采用Golang语言开发,在LXC基础上Docker进行了封装,简化了容器的管理。

Docker还提供了一个标准(Dockerile)来实现软件部署环境代码化,全球的开发和运维工程师可以通过官方的Docker Hub仓库分享自己创建的镜像,使用者则可以快速的把系统和应用部署到自己的环境。

树莓派二代

树莓派二代的CPU有4核,运行速度是第一代的6倍,通过Docker快速部署开发环境,开发应用,再把开发好的系统通过镜像分享和发布出去也是非常有意义的事。因为树莓派的官方操作系统Raspbian并不支持Docker,本文主要介绍下如何在树莓派二代上运行Docker的几种方法。

Arch Linux ARM

Arch Linux ARM 是由开源社区维护专为ARMv6(如树莓派一代)和 ARMv7(如树莓派二代, pcDuino3)等嵌入式硬件提供内核及软件支持的Linux发行版本。

使用树莓派搭建低成本,便携,多用户的弱网模拟器:高效测试手机App在弱网下的可用性 2015-03-28

背景

我们的手机经常会处于弱网情况下,电梯里,高铁上,在地铁站,电影院里。。。如果手机应用不针对弱网做优化,就会出现:白屏页面刷不出来,界面卡死,错误提示一堆,菊花转不停,用户抓狂。。。

移动应用开发团队应该将App在弱网下的可用性作为一个重要的性能指标,在设计和开发阶段考虑在弱网下的体验。

Linux可以使用netemiptables来实现以下网络模拟:

  1. packet delay 网络包延迟
  2. packet loss 网络包丢失
  3. packet corruption 错误的网络包
  4. packet duplication 重复发送网络包
  5. packet re-ordering 网络包传输顺序
  6. bandwidth 带宽控制

Facebook最近也开源了他们的augmented traffic control: https://github.com/facebook/augmented-traffic-control 主要使用iptablespython实现,架构合理容易扩展,其控制方法允许多台手机同时使用,并应用不同的网络控制策略;因为提供了RPC接口,在其基础上二次开发也可以较方便的实现自动化弱网测试。

自己搭建Airplay高清音乐播放系统 2015-03-15

先看一下在iPhone 6 plus上用虾米播放高音质音乐的效果:

Airplay

pcDunio Acadia

苹果的Airplay协议是通过基于RSTP(Real Time Streaming Protocol)协议通过UDP传输的无损编码音频流(Apple Lossless codec,音频流本身经过了AES加密,私钥是不公开的,这样只有苹果和其合作伙伴才能使用这个协议。但是2004年有人通过逆向工程获得了私钥并将其公开,这样我们也可以自己搭建低成本高音质的基于Airplay的音乐系统。在iPhone成为街机的时代,每个人的手机里有很多喜欢的音乐,如果在家里可以通过无线网络在音响系统里播放会方便很多。

硬件

  1. pcDunio Acadia 或 Raspberry Pi 一只
  2. 3.5mm音频线一根,类似这种
  3. 有源音箱一对
  4. 网线一根或USB无线网卡一只

音频芯片

好的音质需要好的音源,无损音乐加好的前端输出是必不可少的。 pcDuino Acadia集成的音频芯片是业界领先的英国Wolfson(欧胜微电子)为高清音频设计的WM8962 。树莓派集成的音频芯片则是由美国Broadcom(博通)封装在主芯片BCM2835里通过PWM (pulse-width modulation) 提供的,比较简单音质一般,达不到高清音频的要求。