aria2相关项目

aria2

aria2 官网
aria2 源码
aria2 package for OpenWrt
Aria2 Manual
aria2c manual

webui-aria2

webui-aria2 官网
webui-aria2 源码
webui-aria2 package for OpenWrt
webui-aria2 package for OpenWrt by nanpuyue

yaaw

binux/yaaw
yaaw 官网
yaaw package for OpenWrt
yaaw package for OpenWrt by nanpuyue

luci-app-aria2

luci-app-aria2
luci-app-aria2 by 981213

OpenWrt集成aria2

主要参考
路由器OpenWrt如何脱机(离线)下载BT文件

编译aria2

执行menuconfig勾选所有和aria2相关的配置

1
2
3
4
5
6
7
8
9
10
11
huzhifeng@Ubuntu1404:~/git/openwrt_trunk$ make menuconfig
Network --->
File Transfer --->
<*> aria2....................................... lightweight download utility
Aria2 configuration --->
SSL library (OpenSSL) --->
(X) OpenSSL
( ) GNUTLS
( ) No SSL support
[*] Enable bittorrent support
[*] Enable metalink support

阅读全文 »

序言

有时候我们想在办公室访问家里的机器,或者反之在家里访问办公室的机器,一般有两种解决方案,一种是通过端口映射,另一种则是通过反向连接方式。
两者各有缺点:
端口映射:你需要权限管理上级网关或者路由器或者防火墙
反向连接:你需要有一台运行在互联网上的服务器(VPS)

AutoSSH介绍

autossh
autossh(1) - Linux man page
Autossh is a program to start a copy of ssh and monitor it, restarting it as necessary should it die or stop passing traffic.

AutoSSH安装

Debian / Ubuntu $ sudo apt-get install autossh
CentOS / Fedora / RHEL $ sudo yum install autossh
ArchLinux $ sudo pacman -S autossh
FreeBSD # pkg install autossh
OSX $ brew install autossh

或者从源码安装

1
2
3
4
5
6
wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
gunzip -c autossh-1.4e.tgz | tar xvf -
cd autossh-1.4e
./configure
make
sudo make install

网络环境

公司主机A(192.168.1.10)->VPS服务器S(huzhifeng.com)->家里主机B(192.168.8.10)

阅读全文 »

前言

由于众所周知的原因,Google系列的产品在国内的网络环境下都不好使,Android SDK也不例外,不仅下载速度慢,大多数时候根本无法连接,对此,已经有一些国内搭建的镜像,如AndroidDevTools,但下载速率严重依赖于镜像服务器的带宽和你自己的带宽。所以在内网搭建一个Android SDK镜像服务器很有必要,一方面可以保证速度,另一方面也可以保证安全性。

方案

我这里选择的是苏州GDG的开源方案
android-repository

详细步骤

安装指引

参考作者的一个幻灯片文档即可
Make a LAN mirror of everything you need to develop Android apps
主要步骤如下:

1
2
3
4
5
6
7
8
9
cd /var/www/hu.dushu.studyjams
git clone https://github.com/renfeng/android-repository script
./script/download.sh
sudo aptitude install apache2

# apache httpd 2.4
<VirtualHost *:80>
DocumentRoot /var/www/hu.dushu.studyjams
</VirtualHost>

以下是我在Ubuntu 12.04.5 LTS系统上的操作步骤

克隆git仓库

1
2
3
4
5
6
7
8
9
huzhifeng@Ubuntu12045:~/temp$ mkdir -p diy-mirrors
huzhifeng@Ubuntu12045:~/temp$ cd diy-mirrors/
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ git clone https://github.com/renfeng/android-repository.git script
Cloning into 'script'...
remote: Counting objects: 373, done.
remote: Total 373 (delta 0), reused 0 (delta 0), pack-reused 373
Receiving objects: 100% (373/373), 614.85 KiB | 203 KiB/s, done.
Resolving deltas: 100% (188/188), done.
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$

设置代理

因为下载SDK需要翻墙,脚本download.sh是通过wget命令下载,所以设置环境变量http_proxyhttps_proxy即可

1
2
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ export http_proxy=http://192.168.1.189:1080
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ export https_proxy=http://192.168.1.189:1080

下载SDK

现在可以开始执行./script/download.sh下载了,这是一个相当漫长的过程,因为总共要下载二十多GB的数据

1
2
3
4
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ ./script/download.sh
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ du -hs .
23G .
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$

安装HTTP服务

其中开启Nginx的目录列表显示参考了官网
Module ngx_http_autoindex_module

1
2
3
4
5
6
7
8
9
10
11
12
13
14
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ sudo apt-get install -y nginx
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ cp /etc/nginx/sites-enabled/default ~/temp/default.bak
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ sudo vim /etc/nginx/sites-enabled/default
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ diff /etc/nginx/sites-enabled/default ~/temp/default.bak
24,25c24
< #root /usr/share/nginx/www;
< root /home/huzhifeng/temp/diy-mirrors;
---
> root /usr/share/nginx/www;
37d35
< autoindex on;
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ sudo service nginx status
huzhifeng@Ubuntu12045:~/temp/diy-mirrors$ sudo service nginx start

阅读全文 »

程序员的百科全书Stack Overflow+Quora

Stack Overflow 程序员的百科全书
Quora 不仅限于编程方面的问答
Github 程序员的社交网络

神奇的四步编程法则

How to Program (in four easy steps)
How to Program (in four easy steps)

万能的Google

如何打开Google

由于GFW的存在,需要使用一些特殊的手段才能打开Google,常见的有VPN/GoAgent/Shadowsocks,也可以通过一些Google镜像
google搜索镜像
Google 镜像站搜集

阅读全文 »

序言

USB接口类型的设备有很多很多,比如USB存储盘、USB网卡、USB声卡、USB串口、USB蓝牙等,大部分操作系统默认能够自动驱动,但也有许多需要额外的或者专门的驱动程序,有时候难免遇到找不到驱动程序的情况,比如安装光盘不见了或者重装系统了。这时候如果知道设备型号的话还好,去官网下载就是了,但是大部分并没有注明型号,例如我最近重装了系统,USB转串口设备就显示为未知设备,如下图:

注:其实系统已经识别出设备型号为CP2102 USB to UART Bridge Controller了,直接搜索该型号应该就能找到对应的驱动,为方便记录和总结,把详细流程记录如下,同样适用于无法识别型号的情形。

查看未知设备VID和PID

在未知设备上按右键查看其属性,切换到详细信息标签页,在属性列表里选择硬件ID就可以看到VID和PID了,如下图:

可以找到该USB设备的VID和PID分别是0x10C4和0xEA60

阅读全文 »

Protocol Buffers简介

Protocol Buffers
google/protobuf
Google Protocol Buffer 的使用和原理
数据传输格式有很多种,最常见XML和JSON,这两种格式生成速度非常快,但是解析的效率却很低。尤其在数据量非常大的情况下,会卡住好半天。并且这种格式的传输也会使得传输所耗费流量变大。解析效率最高,传输消耗流量最小的数据格式自然是Buffer。很多公司都封装过自己的Buffer流传输的模块。Google公司将他们封装的Buffer流模块给贡献了出来!也就是我这里所提到的Protocol Buffers。
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

Protocol Buffers编译安装

参考
C++ Installation - Unix
安装步骤总结如下:

1
2
3
4
5
6
7
$ sudo apt-get install autoconf automake libtool curl
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig

阅读全文 »

前言

每一位开发人员都应该有一台高效的开发主机,而不是把时间浪费在无尽的等待之中。
虽然从零开始DIY一台开发主机需要做不少功课,但个中乐趣,不妨一试。

最终配置

  • CPU: 英特尔 i7-6700K (2699元)
  • 主板: 华硕 Z170-A (1099元)
  • 内存: 金士顿 骇客神条 2 x 8G DDR4 2400(HX424C15FB/8) (440元)
  • SSD: 闪迪加强版240G固态硬盘 (399元)
  • 显示器: 飞利浦25英寸(257E7QDSA) (优惠后实付909元)
  • 电源: 航嘉jumper500 (优惠后实付239元)
  • 机箱: 先马奇迹3中塔机箱 (109元)
  • CPU散热器: 九州风神玄冰400金鳞版(主板赠送)
  • 主机散热器: 先马游戏风暴散热风扇(机箱赠送)
    总价: 2699+1099+440+399+909+239+109=5894元 (另有部分京东白条优惠)

注: 所有组件均是京东3C电脑节期间从京东购买,分成了好几个订单,优惠力度还是不错的

CPU(首选i7-6700K/备选i7-6700)

i7-6700K规格
i7-6700规格
JD旗舰店
Tmall旗舰店

阅读全文 »

以下操作是在虚拟机中模拟进行的,破解的系统是Ubuntu 15.04,但实际上在大部分Linux系统上是通用的

破解流程

启动时按注Shift键显示启动菜单,如下图:
注:虚拟机中无需按住Shift也会显示GRUB菜单,但是在物理机器上操作时可能需要按住Shift

按一下键盘上的字母e,进入下图:

阅读全文 »

问题描述

在执行git sstatus时中文文件名无法正常显示,其实也不是乱码,而是显示成中文对应的Unicode编码了,如下:

1
2
3
4
5
6
7
8
9
10
root@huzhifeng:~/blog# git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)

"source/_posts/WiFi\345\256\232\346\227\266\345\274\200\345\205\263.md"

nothing added to commit but untracked files present (use "git add" to track)
root@huzhifeng:~/blog#

解决方案

只需要配置git config --global core.quotepath false

1
root@huzhifeng:~/blog# git config --global core.quotepath false

阅读全文 »

Failsafe介绍

Failsafe可以理解为OpenWrt系统的一种安全模式,详见官网说明
OpenWrt Failsafe

OpenWrt SquashFS-Images have a built-in failsafe mode. OpenWrt failsafe mode bypasses all configuration located on the JFFS2 partition (that is the writable partition), in favor of a few hard coded defaults located on the SquashFS partition (that is the read-only partition), resulting in a device that boots up as 192.168.1.1/24 on the eth0 network interface with only essential services running.

手动进入Failsafe模式

系统在启动过程中看到有Failsafe的提示时,按f键并回车就能进入Failsafe模式,出现Failsafe提示的时候,系统状态灯会开始慢闪
Triggering via keyboard key combination in a serial console

  1. Unplug the router’s power cord.
  2. Connect the router’s WAN port directly to your PC.
  3. Configure your PC with a static IP address between 192.168.1.2 and 192.168.1.254. E. g. 192.168.1.2 (gateway and DNS is not required).
  4. Plugin the power.
  5. Connect via serial
  6. Wait until the following messages is passing: Press the [f] key and hit [enter] to enter failsafe mode
  7. Press “f” and the “enter” key
  8. You should be able to telnet (not SSH) to the router at 192.168.1.1 now (no username and password)
阅读全文 »