Skip navigation

简单的说需要几个指令

iptables -I FORWARD -i br-lan -j ACCEPT

这条指令让路由器接受局域网的转发请求

iptables -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -A POSTROUTING -o wan -j MASQUERADE

这两条指令指定了NAT映射,自动将内网IP转换成外网IP

 

二FORWARD和POSTROUTING分别是iptables的两个chain table

细节请看 Iptables的结构

 

假设原串S,模式串M

简单的说这个算法的主要思想就是利用模式串M自身的匹配性质,快速找到下一跳的位置。

而这个下一跳的位置只与模式串相关,所以可以根据这个串制作一个next的表T,来指示出一旦匹配不成功需要右跳多远。

使用next表的方式就是,当匹配不成功时查看M当前下标所对应的next表,如果T[i]>-1,那么就可以从S[m+i-T[i]],M[T[i]],继续进行匹配。

 

详情请猛击这里

折腾了半天终于搞定了,开心
用的是bluez3.36,大概说一下流程

1. 配置/etc/bluetooth/rfcomm.conf

rfcomm0 {
#       # Automatically bind the device at startup
        bind no;
#
#       # Bluetooth address of the device
        device XX:XX:XX:XX:XX:XX;
#
#       # RFCOMM channel for the connection
        channel 1;
#
#       # Description of the connection
        comment "Example Bluetooth device";
}

2. 关闭本地pin验证
1)

hciconfig hci0 noauth ; # 关闭本地的pin验证

3. 设置连接pin码
编辑/var/lib/bluetooth/XX:XX:XX:XX:XX:XX/pincodes (XX:XX:XX:XX:XX:XX为本地设备地址)
文件格式为:
XX:XX:XX:XX:XX:XX 1234 (XX:XX:XX:XX:XX:XX为目标设备地址)

4. 运行

mknod /dev/rfcomm0 c 216 0
chmod 666 /dev/rfcomm0
rfcomm connect 0;

5. 输出字符到蓝牙串口

echo y>/dev/rfcomm0

最近用Tornado写点小东西,发现每改动一次py文件或者html文件都要重启服务器才能生效。

于是想找找有没有方便点的自己重启的方法。

发现在tornado源码里面有个autoreload.py的文件,这个会自动监视py文件的改动并重启。

现在而且里面有个watch方法可以添加自己需要监视的文件,现在代码如下:

 

    loop = tornado.ioloop.IOLoop.instance()
    autoreload.watch(r'templates\home.html')
    autoreload.start(loop)
    loop.start()

安装过程很简单

sudo apt-get install daemontools

很快就装好了,但是这就是恶梦的开始。。。

本来使用daemontools来监控程序的,结果这东西不兼容Ubuntu的启动方式,

安装好了以后不会自动启动。没办法研究研究,经过各种翻墙搜索,发现Ubuntu中启动方式已经被改为了Upstart,它要求我们把启动文件放在/etc/init这个目录中,

可以用

initctl start svscand

来启动,在ubuntu里可以用

start svscand

代替

initctl start svscand

 

(如果配置文件的格式不对,在运行initctl控制的时候会显示Unknown job)

 

好了,现在就差写启动脚本了,编辑

/etc/init/svscand.conf

内容如下

start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec /usr/bin/svscanboot

 
然后运行

start svscand

(ubuntu中默认daemontools的service文件在/etc/service)

(另外要补充的是/usr/bin/svscanboot这个脚本会改变你的配置环境,包括PATH等,所以如果出现什么奇怪的问题可以编辑一下这个文件,去除不要的配置)

其中img是Image图片对象,而d开头的都是destinetiong,s开头的是source。

也就是说在这里,你分别定义好来源和目标的两个矩形的左上角和右上角的点,它会自动帮你剪裁和适应。

当然为了保证不失真,最好宽度和高度相同。

 

 

g.drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer)

 

由于Swing中默认都是使用了tohoma字体,而不是 Dialog 这样的family font。

public class Main {
    @SuppressWarnings("unchecked")
    public static void initGlobalFontSetting(Font fnt) {
        FontUIResource fontRes = new FontUIResource(fnt);
        for (Enumeration keys = UIManager.getDefaults().keys(); keys.hasMoreElements();) {
            Object key = keys.nextElement();
            Object value = UIManager.get(key);
            if (value instanceof FontUIResource)
                UIManager.put(key, fontRes);
        }
    }

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceOfficeBlue2007LookAndFeel());
                    JFrame.setDefaultLookAndFeelDecorated(true);
                    JDialog.setDefaultLookAndFeelDecorated(true);
                    initGlobalFontSetting(new Font("微软雅黑",Font.PLAIN,12));
                    new MainFrame();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

 

 

韩寒的《18禁》

《1Q84》 3

Kindle3

ipad/android pad-xoom!!

NB android phone

 

首先,有几点不一样的地方就是,在NDK中,

需要在LOCAL_C_INCLUDES中加入

core/include

system/include

这两个依赖的头文件。