Fork me on GitHub

树莓派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) 提供的,比较简单音质一般,达不到高清音频的要求。

在树莓派上用Node.js监视网页变化并通知手机 2015-03-07

最近互联网理财很流行, 好的理财产品一出来很快就抢光了。有24x7运行的低功耗树莓派在就可以帮你检查网页是否有更新并将更新的内容通知到你的手机上。

安装phantomjs

https://github.com/piksel/phantomjs-raspberrypi 下载已经编译好的phatomjs,并复制到$PATH

安装Node.js

在树莓派上编译Node.js非常非常耗时。。。你也可以下载已经编译好的node和npm

wget https://s3-eu-west-1.amazonaws.com/conoroneill.net/wp-content/uploads/2015/02/node-v0.12.0-linux-arm-pi.tar.gz
tar -zxvf node-v0.12.0-linux-arm-pi.tar.gz
cd node-v0.12.0-linux-arm-pi
sudo cp -R * /usr/local/

用16M的SD卡启动树莓派,在U盘上安装和运行Linux 2015-03-05

树莓派官方的操作系统Raspbian最少需要4G的SDCard,如果你恰好有比较小的SD卡怎么办呢?设计上树莓派只能从SD卡引导启动,但我们可以在SD卡上装一个最小的引导系统,然后把树莓派引导到U盘上启动。SD卡连续运行,读写比较频繁也容易损坏(我已经坏掉3张了。。。),相比之下U盘价格便宜些,读写速度可以比SD卡还高。

制作引导SD卡

这个引导系统只需要16M容量的SD卡,先把SD卡格式化成FAT(windows),然后拷贝下面的文件到根目录。

git clone https://github.com/hugozhu/mini_raspbian_boot

修改 cmdline.txt 中的 root=/dev/mmcblk0p2root=/dev/sda2 以指定用U盘启动

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait cgroup_enable=memory

安装操作系统Raspbian到U盘

方法和安装到SD卡一样,在Mac上使用 dd 命令安装,在Windows上可以用win32diskimager:

用Telegram和树莓派交互 2015-02-27

如果你的树莓派不能通过路由器端口转发直接从家庭网络外访问,你还可以用类似聊天App一样的方式来和防火墙后的树莓派轻松交互,通过命令来控制树莓派。

Telegram

image

Telegram是一个跨平台的即时通讯软件,客户端和通讯及加密协议完全公开且开源。官方有正式发布Android,iOS,Mac OS X, Web等客户端版本;Telegram允许多端同时登录。我们在手机上安装Telegram客户端,同时在树莓派上用同一个帐号或另一个帐号也登录Telegram,那么就可以用手机和树莓派聊天了,更高级的一些用法可以是把树莓派帐号加到群聊中,实现类似微软小冰的功能;也可以由树莓派主动向你的手机Push消息实现提醒功能。

安装telegram-cli

Linux的Telegram客户端telegram-cli源代码在 https://github.com/vysheng/tg,按照Readme在树莓派上编译好。telegram-cli支持消息事件对lua脚本中的函数进行回调,支持的函数列表在:https://github.com/vysheng/tg/blob/master/README-LUA,也支持外部程序通过telegram-cli侦听的端口发送交互命令(一次连接只能一个命令)

Lua交互脚本

用树莓派2代打造智能家庭路由 2015-02-26

家里的宽带上下行都有10Mbps了吧?除了可以BT下载外还能让你的移动设备在外的时候也能科学上网。

区别于在海外架设VPN服务:

  • 国内和大部分国外网站都可以直连而不降低速度;不像海外VPN所有流量(国内和国外网站)都要经过海外服务器,速度有一定的延迟
  • 这个方案代理可以使用免费的Goagent服务;或低成本的ssh帐号;而租用海外VPS服务器自建服务或购买VPN帐号费用较高些;
  • 利用的是家里的宽带,只有树莓派的硬件成本,没有主机托管成本;

假设家里的路由器IP地址为:192.168.1.1,树莓派2的IP地址为:192.168.1.3,以下是需要安装和设置步骤。

PPTP和L2TP VPN Server

首先在树莓派上安装和设置VPN服务器,移动设备就可以通过运营商网络连接回家里的树莓派(iPhone和Android都内置了PPTP和L2TP客户端),这样移动设备将以树莓派为路由访问网站,通过一些设置我们可以让树莓派提供科学上网服务。

关于PPTP和L2TP VPN设置和安装可以参考: http://hugozhu.myalert.info/2013/03/01/setup-l2tp-pptp-openvpn-on-ubuntu.html

零佣金的券商靠什么赚钱? 2015-02-10

最近一家叫Robinhood的创业公司推出了零佣金的股票交易服务公测,用户可以通过iOS上的专用App交易。

这家公司的两个创始人斯坦福大学毕业后去了纽约给华尔街的大型股票经济公司做交易系统,做了几年后突然有一天发现券商公司对每一笔交易付出的成本微乎其微,但要收取每个客户多达10美金的佣金。。。于是他们毅然决定辞职,回到硅谷创业去了。

公司打出的口号是就是零佣金,如果你交易的资金来源于自己,那么买入和卖出交易,以及银行转入和转出(不包括电汇)都是免费的。

零佣金对资金不那么充裕的年轻人来说非常有吸引力。那么问题来了,这家公司靠什么赚钱呢?

  1. 交易过股票的人大概都知道,券商会提供融资服务给流动资金不充足的投资者,融资交易(Securities Margin Trading)就是投资者以资金或证券作为质押,向券商借入资金用于证券买卖,并在约定的期限内偿还借款本金和利息。相应的还有融券服务,融券交易是投资者以资金或证券作为质押,向券商借入证券卖出,在约定的期限内,买入相同数量和品种的证券归还券商并支付相应的融券费用。所以Robinhood首先可以通过融资融券服务盈利;

  2. 对于投资者在Robinhood账户里的未购买股票的闲余资金,Robinhood可以通过金融市场获得一部分利息收入;

  3. 提供收费接口给小型的量化和对冲基金;

目前Robinhood已经完成了千万美元的风险投资,现阶段提供颠覆性的交易体验,吸引更多年轻的新投资者,赢得用户的信任显然更为重要。用户多了,盈利就不是问题了。。。

App界面