IPv6开启转发并保持自动获取PPP提供的IPv6地址

标题想了好久……请不要吐槽晦涩难懂

先说一下应用场景:

  • 一台Linux-based box(ARM开发板如ODROID U3、Raspberry Pi,或者OpenWRT神马的)当作Host + Router,通过有线网卡连接交换机Hub作为局域网网关和服务器,再通过PPPoE拨号连接外网(PPPoE能自动配置并获取IPv6地址)。
  • 局域网PC配置好本地的IPv6地址透过局域网网关(上面那台Linux Box)连接外网,要求能以IPv4和IPv6协议访问Internet,但是获得的IPv4和IPv6地址都是内网地址

Continue reading IPv6开启转发并保持自动获取PPP提供的IPv6地址

Linux下连接无线网络后拨号(即PPP over WiFi)

连接一个无线网络(例如一个当交换机的无线AP),然后ADSL拨号上网。这一个在Windows下很简单的事情,在Linux下却变得稍微有点麻烦,甚至让人不知所措。今天有空在Fedora下捣鼓了一把,发现其实相当简单,只不过得通过命令行式的操作而已,下面就拿来和大家分享一下。

Continue reading Linux下连接无线网络后拨号(即PPP over WiFi)

将ODROID-U3 Debian镜像烧录进microSD卡并扩大根分区至整张卡

在HardKernel下单了ODROID-U3 Community Edition(和U3一模一样,就是ODROID用来扩展韩国海外市场的),不熟悉这个东西?Raspberry Pi总听说过吧?ODROID也是ARM开发板,不同在于ODROID是一家韩国公司出品的,芯片是清一色的三星Exynos系列,这款U3是性价比比较高的ARM开发板了,Exynos 4412 1.7GHz四核CPU,四核Mali-400 440MHz的GPU,2G低电压DDR2 880MHz的内存,可插eMMC模块或者microSD卡作为板子的存储器,3个USB2.0接口,1个以太网接口,1个HDMI接口(支持1080P),有RTC(需要接备用电池),更多详细的参数可以看官网

好了,回归主题,毕竟本文不是推销ODROID开发板的,虽然我的U3还没到,但是现在已经开始准备一张灌好Debian的microSD卡了(别问为什么不用eMMC,eMMC模块对于一个学生党还是太贵了!)

Continue reading 将ODROID-U3 Debian镜像烧录进microSD卡并扩大根分区至整张卡

优雅并极客地添加/更改Android系统的字体

Android换字体有很多办法,其一是用iFont之类的工具,优雅但不极客。其二是用root权限直接到/system/fonts里替换DroidSansFallback来更改中文字体,极客但是非常不优雅!

看看/system/etc/fallback_fonts.xml吧,注释都告诉我们如何优雅并极客地添加字体了。下面以添加苹果iOS自带的中文字体STHeiti为例,详细讲述一下整个过程。

Continue reading 优雅并极客地添加/更改Android系统的字体

Windows下VS2012编译安装Ruby 2.1.1(64位版)

虽然学过一段时间的Python,但是决心转投Ruby玩玩看,Ruby也有GTK+和Qt的扩展(还有KDE的API绑定呢!)。Linux下安装是so easy了,Windows下也有懒人安装包,不过版本比较老。所以我打算用VS2012编译安装最新的稳定版本2.1.1,下面就讲讲Windows下的编译安装过程(以编译安装64位版本为例)。

Continue reading Windows下VS2012编译安装Ruby 2.1.1(64位版)

我的新小米盒子综合体验

本文所描述的是299元的“新小米盒子”(又称小米盒子二代)。既然是说体验,先介绍一下使用的环境吧:

  • Toshiba 42″ LED背光液晶电视(1080P)
  • 长沙长城宽带(12Mbps带宽)
  • 腾达W308R无线路由器(100M的LAN,300M的WLAN)
  • 一台Windows PC(局域网共享视频)

Continue reading 我的新小米盒子综合体验

Linux下Qt创建和调用共享库文件.so

费了点功夫,总算get了编写共享库(Shared Library,Windows下称为“动态链接库”,即Dynamic Link Library)和调用的这个新技能!

动态链接库的好处是不言而喻的,一个稍微复杂一点的程序,顶层设计的时候良好的类库划分可以让工作变得很简单,而将不同类编译成共享库文件可以实现程序的模块化,提高代码复用程度,在保证接口兼容的情况下更新一个程序只用更新共享库(Windows下是dll,Linux下常见的是so)即可。

下面以Linux下的Qt Creator这个IDE为例,讲述Qt(严格意义上是C++)共享库文件的编译和调用。

Continue reading Linux下Qt创建和调用共享库文件.so

DragonFly BSD编译安装Qt 5.2.0

BSD系统在Qt世界里压根不是Tier 1的级别啊,看看Digia只提供Windows, Linux, Mac, Android的预编译文件就知道了。。没关系,好歹Qt是个开源软件,自己动手编译,丰衣足食。下载Qt 5.2.0的源代码这一步我就跳过去了,下面的路径都是Qt源码目录里的。

示例环境:DragonFly BSD 3.6.0(因DragonFly的dports是基于FreeBSD的ports树,所以下面的操作也适用于FreeBSD,详细附在正文后)

修改源码

Qt 5.2.0没有DragonFly BSD的mkspec,可以在FreeBSD的mkspec基础上做点改动来适配dfly,此外qtbase的qfileselector.cpp也需要做一个dirty patch不然编译会出错。

Continue reading DragonFly BSD编译安装Qt 5.2.0

Qt Creator在Windows上的调试器安装与配置

如果安装Qt时使用的是Visual Studio的预编译版,那么很有可能就会缺少调试器(Debugger),而使用MSVC的Qt对应的原生调试器是CDB(对应MinGW的Qt使用GDB调试器)。本文介绍如何下载安装CDB,并在Qt Creator配置之。

示例环境:Windows 8 x86 + Visual Studio 2012 + Qt 5.2.0

Continue reading Qt Creator在Windows上的调试器安装与配置

Qt 5.2+VS2012+OpenCV 2.4.7的环境配置

如果你安装的是使用Microsoft Visual Studio编译器的Qt(例如我安装的这个Qt,安装包文件名为:qt-windows-opensource-5.2.0-msvc2012-x86-offline.exe),则不需要网传的对OpenCV进行编译的这个麻烦过程,直接利用VS的预编译文件即可。

需要注意的一点是Qt不支持Visual Studio Express版。另外你最好先在Visual Studio下完成OpenCV简单demo的编译(参看我之前的博文),确保OpenCV环境设置正确。

使用Qt Creator这个IDE而不是VS的好处在于Qt Creator能够非常方便地调用所有Qt的组件,而且更加轻量级、启动也很快速,开发跨平台应用时也更加方便(主流平台下都有Qt Creator,而只有Windows才有Visual Studio)。

Qt程序的项目配置文件保存在.pro文件里,类似于VS2012中所配置的,Qt也没有“全局”的INCLUDE和LIB(库)路径的修改功能,而是通过对pro文件的改动来配置编译时需要包含的路径和库文件。

Continue reading Qt 5.2+VS2012+OpenCV 2.4.7的环境配置