bandwagonhost(Ubuntu)上搭建V*P*N

之前买了一个便宜的低配VPS,一直没用起来,搭个VPN再好不过了。

VPS默认安装的系统的centos,相对来说还是熟悉ubuntu,于是把系统重新安装换成Ubuntu
1.安装pptpd
apt-get update
apt-get -y install pptpd

2.配置pptpd-options
vi /etc/ppp/pptpd-options
[code=java]

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
[/code]
这些内容在文件中都有,只是把ms-dns两行的注释去掉

3.配置/etc/pptpd.conf

option /etc/ppp/pptpd-options
logwtmp
localip 0.0.0.0 #替换成自己VPS的ip
remoteip 10.1.0.1-100 #访问VPN的客户端分配到的ip

4.vi /etc/sysctl.conf
把 net.ipv4.ip_forward=1 的注释去掉,如果没有就在最后一行添加

5.执行 iptables -t nat -A POSTROUTING -j SNAT --to 0.0.0.0 #最后的四个0替换自己VPS的ip
然后执行 iptables-save > /etc/iptables.conf

6.
vi /etc/network/if-pre-up.d/iptables
#!/bin/sh
iptables-restore < /etc/iptables.conf
chmod +x /etc/network/if-pre-up.d/iptables

7.vi /etc/ppp/ip-up
在最后添加 ifconfig ppp0 mtu 1400

8.添加用户
vi /etc/ppp/chap-secrets
依次填写 [用户名] * [密码] *
多个用户就多填几行就可以了

9.重启pptpd /etc/init.d/pptpd restart

其实这里(http://hengzhang.cn/0323153.html)有一个一键安装VPN的的脚本,我只是把脚本里的东西拿出来一步一步的手工执行了。

参考:
http://yes2.me/archives/1229
http://blog.sina.com.cn/s/blog_6797a6700100mhnl.html
http://hengzhang.cn/0323153.html
http://dadi.me

android笔记【AsyncTask的应用】

android笔记【AsyncTask的应用】

在android中,异步操作可以使用多线程(Thread/Runnable)、Handler、AsyncTask。
其中AsyncTask需要继承android.os.AsyncTask,至少实现 doInBackground()和onPostExecute()。

例如:

阅读剩余部分 -

西站见闻

IMG_20140430_1445512222222.jpg
在这里,等人的两个小时遇见了这么三件事。一,骗子。乌鸦刚从地铁站出来的时候,一个少妇领着一个小女孩迎面走来,说买票差4块钱,乌鸦转过头继续走路。但是,在这两个小时的时间,乌鸦至少看到这样的4个少妇,标配一个4岁左右的小女孩,都是买票差几块钱,甚至有人都准备掏钱了,不过被扫地的大叔给拦住了。骗子也倒不羞不恼,继续寻找下一个猎物。乌鸦势单力薄,不敢出面阻拦。遇到问路的,乌鸦尽力而为,仅此而已。乌鸦只敢偷拍骗子一个背影

阅读剩余部分 -

android笔记【控件的显示与隐藏】

一、在XML配置文件设置

可见:
android:visibility="visible"
不可见:
android:visibility="invisible"
隐藏:
android:visibility="gone"
这三种显示方式区别: visible就是正常可见状态,invisible是不可见状态,但其实还在占用排列空间,而gone则为隐藏状态,控件不再占用空间。

阅读剩余部分 -

android笔记【通知Notification】

[code=java]
public void startNotification(View v){
Editable userInput = editUserInput.getText();
Notification noti = new Notification.Builder(this)
.setContentTitle("You have a msg")
.setContentText("Tom and Jerry married!"+"_id:"+userInput.toString())
.setSmallIcon(R.drawable.ic_launcher)
.build();

NotificationManager notiManage = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notiManage.notify(Integer.parseInt(userInput.toString()),noti);
}

[/code]
NotificationManager 的方法notify(id,noti),其中id是通知的唯一标示,如果通知栏中有未处理的的同id通知,则会覆盖。