易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
测试VPS的磁盘I/O功能

测试VPS的磁盘I/O功能

一般来说测试磁盘的IO功能时都是用的:dd if=/dev/zero of=/root/zerofile bs=1M count=256

这样生成出来的文件大约是268M
为什么是/dev/zero,那是因为:/dev/zero文件代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。

当然dd还有另外一个参数:oflag=dsync
但是有人和我说:

Why are you using the flag dsync? This does not test the disks correctly and often reports bad speeds on SSD systems.

dd also will not test the read/write, it only tests sequential writes. Using ioping you can test the various types of disk speeds including random (the most important) or sequential (the least important).
所以,仅作参考即可,不要太当一回事吧

version_compare

version_compare

在项目中遇到点小问题。。。
比如:1.4.0与1.4.1对比。还有1.2与1.21对比
在初期的时候,我都是直接使用version_compare来对比的,但这时候就出现了问题

在国人眼中,1.21其实是1.2的后续版本,它是比1.3小的一个版本。但。。。version_compare即不认的。它认为1.21>1.2,当然1.21也>1.3。。。
好纠结啊。。。

后面没办法,对于1.4.0这种用version_compare了。对于1.21的,直接浮点数来比较了。NND

以后对版本号还是需要有一个规划,不能乱写啊

参考:如何在 Debian / Ubuntu 服务器上架设PPTP / L2TP / IPSec VPN

参考:如何在 Debian / Ubuntu 服务器上架设PPTP / L2TP / IPSec VPN

之前有在自己博客上介绍怎么样安装PPTP的VPN,但很多人说l2tp其实更安全,所以在想办法升级到l2tp...

随便google了一下,结果文章倒是很多,但几乎都打不开,难道这已经是一个关键字了??
还好google 有cache,所以,打开cache看了一下,并且复制回来,等会我就试试:

第一部分:如何用 Debian / Ubuntu 服务器上架设 PPTP VPN服务器

如果你有一台linux主机,通过putty.exe 或苹果电脑的teminal用SSH登录到主机后要用文本编辑器,若是上传下载编辑好的配置文件就太麻烦了。 我先简单介绍一下VI编辑器的用法,学会VI了就不且上传下载编辑好的配置文件了:

vi /etc/ilovezola.conf 这是进入编辑ilovezola.conf的模式,然后hjkl四个键是方向键,分别是左下上右,按字母x可删除一个字符。按a进入插入模式,hjkl就 不能当方向键用了。退出插入模式按ESC键,保存文件输入命令冒号加字母:w 退出输入命令:q 退出并保存就是 :wq

有了这些基础就可以安装PPTP VPN服务器了。下面绿色的字就是可以复制到命令行里执行的,蓝色的字是需要你对比或复制到文件中的,懒人办事效率高,复制吧,不会错的。
先登录你的主机:
ssh root@114.114.114.114
vi /etc/apt/sources.list
然后删除所有deb前面的#号 ,你按照这里操作就行,我直接引用,这不算抄袭:

接着用下面的命令更新你的软件包数据库
apt-get update
现在我们可以正式安装VPN server了。这里我们选择pptp(vpn 协议的一种),因为简单,一条命令搞定。剩下的无非是一些配置。
apt-get install pptpd
pptpd安装完成后,编辑这个文件,
vi /etc/pptpd.conf
去掉下面两行的注释或者直接添加这两行(在文件的最后).这一步是配置ip地址的范围。
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

然后在编辑这个文件,
vi /etc/ppp/chap-secrets
在这个文件中添加vpn用户,按照下面的格式,每个用户一行。
username pptpd password *
为了让你的用户连上VPN后能够正常地解析域名,我们需要手动设置DNS. vi /etc/ppp/options,找到ms-dns这一项,设置你的DNS.这里我推荐的是Google 最近发布的Public DNS,原因是因为好记。
ms-dns 8.8.8.8
ms-dns 8.8.4.4

vi /etc/sysctl.conf文件,找到"net.ipv4.ip_forward=1"这一行,去掉前面的注释。
net.ipv4.ip_forward=1
运行下面的命令让配置生效。
sysctl -p
重启pptpd服务
/etc/init.d/pptpd restart
最后开启iptables转发
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
ok,安装完毕。

附:使用PPTP VPN的方法:

  1. 如何在 Windows XP 中配置虚拟专用网络 (VPN) 连接 http://support.microsoft.com/kb/314076/zh-cn
  2. How to configure a connection to a virtual private network (VPN) in Windows XP http://support.microsoft.com/kb/314076/en
  3. iOS:设置 VPN http://support.apple.com/kb/HT1424?viewlocale=zh_CN
  4. iOS: Setting up VPN http://support.apple.com/kb/HT1424?viewlocale=en_US
  5. Mac OS X 10.6 Help 建立一个到虚拟专用网络的连接http://docs.info.apple.com/article.html?path=Mac/10.6/zh/9010.html
  6. 设定高级 VPN 选项 http://docs.info.apple.com/article.html?path=Mac/10.6/zh/11941.html
  7. Ubuntu下使用VPN http://wiki.ubuntu.org.cn/如何使用UbuntuVPN
  8. Installing personalVPN-PPTP on Android Mobile Phone http://wiki.witopia.net/wiki/Installing_personalVPN-PPTP_on_Android_Mobile_Phone

第二部分:如何用 Debian / Ubuntu 服务器安装成L2TP / IPSec VPN 服务器

Ubuntu 10.04 LTS(Lucid)自带的OpenSwan有NAT的BUG。10.10 openswan无此问题(但是10.10的xl2tpd有问题,不分配IP,需要手动指定,解决方案见下文,本文都是指使用Ubuntu 10.04 LTS)可以从OpenSWAN下载最新版本(2.6.24+)才可以。也可以使用非官方PPA源
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:openswan/ppa
sudo apt-get update

然后查查看是否是已经跟更新到最新
apt-cache policy openswan
openswan:
Installed: 1:2.6.23+dfsg-1ubuntu1
Candidate: 1:2.6.31-1xelerance1
Version table:
1:2.6.31-1xelerance1 0
500 http://ppa.launchpad.net/openswan/ppa/ubuntu/ lucid/main Packages
*** 1:2.6.23+dfsg-1ubuntu1 0
500 http://us.archive.ubuntu.com/ubuntu/ lucid/universe Packages
100 /var/lib/dpkg/status

可见源里面已经获得2.6.31+的版本
apt-get install openswan就可以可以开始配置了
安装的时候一律回车即可
vi /etc/ipsec.conf,改成这样:
version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey

conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=YOUR.SERVER.IP.ADDRESS
leftprotoport=17/1701
right=%any
rightprotoport=17/%any

vi /etc/ipsec.secrets,改成这样:
YOUR.SERVER.IP.ADDRESS %any: PSK "zhimakaimen"
(别忘了把红色的「YOUR.SERVER.IP.ADDRESS」这部分换成你的服务器的 IP 地址,把「zhimakaimen」部分换成随便一个字串,例如你喜欢的一句话如 ilovemoney,等等。)

运行以下命令,这下有点复杂了,前面的知识不够用了,继续补课,先
vi run.sh
然后复制下面的内容到run.sh并保存
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

然后
./run.sh 这样就执行上面的循环命令了。
检查一下 IPSec 能否正常工作:
sudo ipsec verify
如果在结果中看到「Opportunistic Encryption Support」被禁用(disable)了,没关系,其他项 OK 即可。

重启 openswan:
sudo /etc/init.d/ipsec restart
安装 L2TP。常用的 L2TP 后台软件包是 xl2tpd,它和 openswan 是同一帮人写的。
运行以下命令:
sudo aptitude install xl2tpd
vi /etc/xl2tpd/xl2tpd.conf,改成下面这样,或复制进去就好了
[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

这里要注意的是 ip range 一项里的 IP 地址不能和你正在用的 IP 地址重合,也不可与网络上的其他 IP 地址冲突。你照抄就不会错了。

安装 ppp。这是用来管理 VPN 用户的。
sudo aptitude install ppp
检查一下 /etc/ppp 目录里有没有 options.xl2tpd 这个文件,没有的话就建一个
vi /etc/ppp/options.xl2tpd
文件内容如下,把下面的内容复制进来 :
require-mschap-v2
ms-dns 208.67.222.222
ms-dns 208.67.220.220
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

注意 ms-dns 两行我填的是 OpenDNS。如果你想用其他的 DNS 服务器(例如谷歌的公共 DNS 8.8.8.8 8.8.4.4 ),请自行更换。
现在可以添加一个 VPN 用户了。用文字编辑器打开chap-secrets 文件
vi /etc/ppp/chap-secrets
# user server password ip
test l2tpd testpassword *

如果你之前设置过 PPTP VPN,chap-secrets 文件里可能已经有了其他用户的列表,如上面那个密码为gfw的fuck用户,就既可登录PPTP VPN,也可以登录l2tp的VPN,因为他的server没有指定为l2tp,而是用星号代替了。你只要把 test l2tpd testpassword * 这样加到后面即可。记得要有空格。

重启 xl2tpd
sudo /etc/init.d/xl2tpd restart
设置 iptables 的数据包转发,下面是两行命令哦:
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
因为某种原因,openswan 在服务器重启后无法正常自动,所以我们可以在 /etc/rc.local 文件里写入如下语句:
vi /etc/rc.local
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart

到这里,设置工作已经基本完成。你可以用 iPhone 或 iPad 试着连一下。记得在「Secret」中填入你在上述第三步里填的 zhimakaimen。

如果连接成功,上网也没问题的话,恭喜你,大功告成。我就是这么在linode的Ubuntu 10.04 LTS上搞定VPN的,我之前走了些弯路是因为openswan没安装到最新版,Apple4.us的文章提供的安装方法失败,还好有另一篇文章提供了安装openswan到最新版的方法。所以合并经验,让其他人少走弯路,可以节约学习的时间哦。

L2TP的VPN的使用方法:

  1. 苹果电脑上使用l2tp VPN http://support.apple.com/kb/HT1288?viewlocale=zh_CN

我参考了以下文献,综合了一下,写出以上修正版,由于 Apple4.us 保留一切权利,所以我等他们通知我删除这篇派生的文章吧,因为他们仍然保留让我派生的权利,也保留不让我基于他们的文章派生作品的权利。

  1. 在Linode VPS上安装pptp VPN
    http://blog.cuoluo.net/2009/12/install-pptp-vpn-in-linode-vps/
  2. 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN
    https://apple4.us/2010/05/setting-up-l2tp-vpn-on-debian-ubuntu.html
  3. L2TP Over IPSec On Ubuntu(Debian,CentOS) With OpenSwan
    http://ihipop.info/2010/12/1906.html

转:Emoji表情符号兼容方案

Emoji,原来的项目中没有遇到,因为从未想过别人会从网页里发送表情(表情 信息是从iphone手机上发出来的),查了一下资料,果然很多人遇到了这个问题。不过也幸好有了解决方案了。。。

Emoji表情符号兼容方案

一 什么是Emoji

emoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)
表情符号现已普遍应用于手机短信和网络聊天软件。
emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情。
手机上如何使用emoji:
1.iphone、ipad系统:安装emoji free,再设置-通用-键盘-国际键盘-添加新的键盘,然后把emoji添加在里面即可在发短信和一些输入文本的文本框中输入表情。
IOS 5用户可直接从通用中添加emoji 键盘,无需再安装emoji free
2.android系统:安装“GO输入法国际版”后,在输入法里面点选安装emoji插件可以使用。另外“百度输入法”也自带emoji表情
3.Windows Phone : 安装此 Emoji Keys,在其中输入之后复制粘贴到需要输入表情的地方即可

<此段摘自百度百科 http://baike.baidu.com/view/2631589.htm>

wps-office二次开发帮助文档.rar

二 Emoji表情符号问题
1 问题:
IOS版本之间发送的Emoji表情符号不兼容,只看到方块
不同IOS版本在数据库存数据时,有时会发生系统错误
2 现象:
IOS 4 输入Emoji表情符,在IOS5.01 显示正常,在IOS5.1中(大陆版)显现为方块, 但IOS5.01/5.1输入的表情符号,显示正 常
IOS5.01/5.1 输入表情符,在IOS5.01/5.1中显示正常,但在IOS4.X显示为方块
输入Emoji入帖子正文, 可正常存储。 但用户昵称在IOS4.X 输入Emoji,系统正常, 而IOS5.01/5.1则提示系统错误。
3 本质:
iOS 5 and OS X 10.7 (Lion) use the Unicode 6.0 standard ‘unified’ code points for emoji.
iOS 5 Emoji 采用Unicode 6 标准来统一code points

iOS 4 on SoftBank iPhones used a set of unofficial code points in the Unicode Private Use Area, and so aren't compatible with any other systems
iOS 4 采用SoftBank Unicode, 一种非官方的, 采用私有Unicode 区域。
4 举例:
one emoji symbol "tiger", it is "\U0001f42f" in iOS5, but "\ue050" in earlier iOS version
虎脸Emoji符号在iOS5 为Unicode:\U0001f42f;而在IOS4.x 为:\ue050 (SoftBank 编码)
另外: 按理讲, 从iOS5 应该兼容以前版本的emoji, 但现在出现5.01版本完美兼容(无论大陆版,美版,还是港版), 而5.1 大陆版出现了不兼容现象(腾讯微信也出现了同样的问题)。
三 问题分析
1 系统存储错误问题(如昵称,帖子内容)
原因:
由于IOS5.X 采用新的Unicode, 其UTF8 编码大多为4个字节, 而由于昵称/帖子内容column并没设成utf8mb4,因此存储会 发生错误。
解决方法:
将昵称/帖子内容设成utf8mb4
2 不同iOS 之间Emoji 不兼容的问题。
原因:
iOS 5 到4 不兼容的问题,很简单,unicode6 和softbank编码的不同
iOS 4 到 5,按理说应该兼容,也就是说,iOS应该自动判断如果是softbank编码,自动转成unicode6。但现在看来, iOS5.1(大陆版)好像只支持unicode6, 而不支持softbank.
解决方法:
客户端发送emoji-encoding: Softbank或unicode6, 由服务端分别给出相应的编码表。
四 解决方案
1 数据存储(MySQL varchar 数据类型对UTF8 支持问题)
MYSQL 5.5 之前, UTF8 编码只支持1-3个字节, 从MYSQL5.5开始,可支持4个字节UTF编码,但要特殊标记。例如我们的帖子内容项,我们加上了这个支持。服务端mysql统一存储为ios5.x也就是Unicode编码。
对应alter语句:

ALTER TABLE topic MODIFY COLUMN content varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '内容';

2 编码转换:
iphone手机方案
客户端输入内容时候,统一存储为unicode编码(这里需要从softbank编码转换为unicode编码)。客户端请求内容的时候,需要根据不同的客户端给出不同的编码,ios4采用softbank编码做替换,ios5采用unicode编码直接支持。
android或wp其他手机方案:
如果没有emoji表情库,将无法输入。针对输入问题,将统一采用unicode编码存储。客户端请求内容的时候,将统一用softbank编码,客户端需要把emoji表情符号内置到客户端,做对应的编码和img替换。
web解决方案:
参考android或wp其他手机方案
五 部分代码
1 sql代码

CREATE TABLE `ios_emoji` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`unicode` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Unicode编码',
`utf8` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'UTF8编码',
`utf16` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'UTF16编码',
`sbunicode` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'SBUnicode编码',
`filename` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件名',
`filebyte` longblob COMMENT '文件内容字节',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='ios表情编码表';

2 java代码

import java.io.UnsupportedEncodingException;
import org.apache.commons.lang.StringUtils;


public class IOSEmojiUtil {

public static String[] ios5emoji ;
public static String[] ios4emoji ;
public static String[] androidnullemoji ;
public static String[] adsbuniemoji;

public static void initios5emoji(String[] i5emj,String[] i4emj,String[] adnullemoji,String[] adsbemoji){
ios5emoji = i5emj;
ios4emoji = i4emj;
androidnullemoji = adnullemoji;
adsbuniemoji = adsbemoji;
}

//在ios上将ios5转换为ios4编码
public static String transToIOS4emoji(String src) {
return StringUtils.replaceEach(src, ios5emoji, ios4emoji);
}
//在ios上将ios4转换为ios5编码
public static String transToIOS5emoji(String src) {
return StringUtils.replaceEach(src, ios4emoji, ios5emoji);
}
//在android上将ios5的表情符替换为空
public static String transToAndroidemojiNull(String src) {
return StringUtils.replaceEach(src, ios5emoji, androidnullemoji);
}

//在android上将ios5的表情符替换为SBUNICODE
public static String transToAndroidemojiSB(String src) {
return StringUtils.replaceEach(src, ios5emoji, adsbuniemoji);
}

//在android上将SBUNICODE的表情符替换为ios5
public static String transSBToIOS5emoji(String src) {
return StringUtils.replaceEach(src, adsbuniemoji, ios5emoji);
}

//eg. param: 0xF0 0x9F 0x8F 0x80
public static String hexstr2String(String hexstr) throws UnsupportedEncodingException{
byte[] b = hexstr2bytes(hexstr);
return new String(b, "UTF-8");
}

//eg. param: E018
public static String sbunicode2utfString(String sbhexstr) throws UnsupportedEncodingException{
byte[] b = sbunicode2utfbytes(sbhexstr);
return new String(b, "UTF-8");
}

//eg. param: 0xF0 0x9F 0x8F 0x80
public static byte[] hexstr2bytes(String hexstr){
String[] hexstrs = hexstr.split(" ");
byte[] b = new byte[hexstrs.length];

for(int i=0;i<hexstrs.length;i++){
b[i] = hexStringToByte(hexstrs[i].substring(2))[0];
}
return b;
}

//eg. param: E018
public static byte[] sbunicode2utfbytes(String sbhexstr) throws UnsupportedEncodingException{
int inthex = Integer.parseInt(sbhexstr, 16);
char[] schar = {(char)inthex};
byte[] b = (new String(schar)).getBytes("UTF-8");
return b;
}

public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}


private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}

public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
byte[] b1 = {-30,-102,-67}; //ios5 //0xE2 0x9A 0xBD
byte[] b2 = {-18,-128,-104}; //ios4 //"E018"

//-------------------------------------

byte[] b3 = {-16,-97,-113,-128}; //0xF0 0x9F 0x8F 0x80
byte[] b4 = {-18,-112,-86}; //E42A


ios5emoji = new String[]{new String(b1,"utf-8"),new String(b3,"utf-8")};
ios4emoji = new String[]{new String(b2,"utf-8"),new String(b4,"utf-8")};


//测试字符串
byte[] testbytes = {105,111,115,-30,-102,-67,32,36,-18,-128,-104,32,36,-16,-97,-113,-128,32,36,-18,-112,-86};
String tmpstr = new String(testbytes,"utf-8");
System.out.println(tmpstr);


//转成ios4的表情
String ios4str = transToIOS5emoji(tmpstr);
byte[] tmp = ios4str.getBytes();
//System.out.print(new String(tmp,"utf-8"));
for(byte b:tmp){
System.out.print(b);
System.out.print(" ");
}
}

}

六 参考资料
1 Emoji 全编码表:(我参考的这个)
http://punchdrunker.github.com/iOSEmoji/table_html/flower.html
2 Emoji全编码表
http://code.iamcal.com/php/emoji/

3 iOS5/4 Emoji 兼容性:
http://stackoverflow.com/questions/7856775/how-to-convert-the-old-emoji-encoding-to-the-latest-encoding-in-ios5
4 MySQL emoji问题
http://dropblood.com/archives/ios-mysql-emoji
5 Emoji 中文对应表
http://www.iapps.im/wp-content/uploads/2012/02/emoji-pinyin.png?r=010

七 下载资源

emoji图片和编码表 http://download.csdn.net/detail/qdkfriend/4309051

包括emoji文件表,emoji数据编码表(Unicode编码,UTF8编码,UTF16编码,SBUnicode编码)

[转]公安部:明年起司机闯红灯一律扣6分

[转]公安部:明年起司机闯红灯一律扣6分

这个转一下做个记录。。

核心提示:10月8日,公安部发布新修订的《机动车驾驶证申领和使用规定》规定,2013年起司机闯红灯一律扣6分。醉驾大中型客货车将终身禁驾,对3年以下驾龄的驾驶人发生交通死亡事故的,倒查考试发证民警的责任。

严管大中型客货车司机,吸毒驾车“零容忍”,“新手”撞死人倒查考试发证民警的责任,不按规定避让校车记6分……昨天公安部修订并发布的《机动车驾 驶证申领和使用规定》(公安部令第123号,以下简称123号令)中,明显加强了对大中型客货车司机的管理,并提高了涉及校车等交通违法行为的处罚力度。

123号令中,关于校车驾驶人管理的内容自发布之日起施行。其他规定将于2013年1月1日起正式施行。

醉驾大中型客货车终身禁驾

近年来,大中型客货车驾驶人肇事率较高。据统计,2009年至2011年,每年一次死亡10人以上的重特大道路交通事故中,大中型客货车驾驶人肇事导致事故起数和死亡人数均占70%以上。

为 严格限制有严重危险驾驶行为的驾驶人申请大中型客货车驾驶证,123号令规定:造成死亡交通事故负同等以上责任、醉酒驾驶记录的终身不得申请;被处以吊销 或者撤销驾驶证记录的10年内不得申请;记满12分的5年内不得申请大型客车驾驶证、3年内不得申请牵引车、中型客车驾驶证。

此外,针对近 年来暴露出的吸毒后驾驶机动车问题,新令中对吸毒人员申请驾驶证或者驾驶机动车采取“零容忍”措施,规定:3年内有吸食、注射毒品行为或者解除强制隔离戒 毒措施未满3年的,不得申请驾驶证;驾驶人吸食、注射毒品后驾驶机动车或者正在执行社区戒毒、强制隔离戒毒、社区康复措施的,要注销驾驶证。

新手肇事倒查发证民警责任

123 号令中规定,将科目一理论考试拆分为两部分,第一部分主要考核道路交通安全法律法规、交通信号、通行规则等知识,仍作为科目一。第二部分作为安全文明驾驶 考试项目,在实际道路考试后进行,考核安全文明驾驶要求、复杂条件下的安全驾驶知识等,加深驾驶人对安全文明驾驶常识的理解记忆。

此外,对 申领大中型客货车驾驶证的,在科目二场地驾驶技能考试中,增加模拟高速公路、雨雾天、湿滑路、紧急情况处置等考试项目,提高了考试针对性和考试难度。调整 后的大中型客货车科目二考试由原来的“训练10项、考试6项”修改为“训练、考试均为16项”。同时在科目三的实际道路驾驶技能考试中,增加山区、隧道、 陡坡等复杂道路考试,并明确大中型客车考试里程不少于20公里、牵引车和大型货车不少于10公里。

为强调实用性,123号令取消了小型汽车桩考两个桩位之间的移库、通过连续障碍、单边桥等现实生活中应用性不强的考试项目。调整后,小型汽车场地考试项目由原来的“训练10项、考试4项”改为“训练和考试均为5项”,即倒车入库、坡道定点停车与起步、侧方停车、曲线行驶和直角转弯。此外,场地考试中用标线替换现有的标杆,更加贴近实际道路场景。

新规中同时还明确了发证民警的责任。建立了考试培训质量公告制度和违规考试发证责任追究制度,设置考试工作纪律“高压线”,明确民警违规考试发证的法律责任,并规定对3年以下驾龄的驾驶人发生交通死亡事故的,倒查考试发证民警的责任。

新手上高速必须由老手陪同

据统计,我国驾驶人以平均每年2000多万人的速度快速增长,1年以下驾龄的实习期驾驶人肇事比率较高,大中型客货车驾驶人交通违法较为突出。

针 对这一现象,123号令中规定,除第一次领取驾驶证的人以外,增驾新取得大型客车、中型客车、牵引车等驾驶证的驾驶人一并纳入实习期管理。特别是大中型客 货车驾驶人,实习期结束后要参加安全文明驾驶等知识考试,接受交通事故案例警示教育;在实习期内违法记6分以上的,实习期限延长一年,再次记6分以上的, 取消其实习车型的驾驶资格。同时,还规定实习期内有记满12分记录的,要予以注销实习车型的驾驶资格。考虑到高速公路道路情况的特殊性,实习期驾驶人驾车 上高速公路时,必须由持相应或者更高车型驾驶证3年以上的驾驶人陪同。

在驾驶证审验方面,规定大中型客货车驾驶人每年参加审验,但没有记分 的可以免于审验。同时,规定持有其他准驾车型驾驶证且发生交通死亡事故承担同等以上责任的,也要参加当年的审验。此外,加强了审验时的学习教育,规定除审 验交通违法、事故处理,违法记分和满分学习、申报身体条件情况以外,还要参加不少于3小时的法律法规、交通安全文明驾驶等知识学习,并接受交通事故案例警 示教育。

对发生死亡交通事故负同等以上责任、有记满12分记录或者连续3年不审验的,注销最高准驾车型驾驶资格,逐级降低其驾驶资格,最终只保留其小型汽车驾驶资格,加强对驾驶人的管理。

故意遮挡污损号牌记12分

123号令对校车、大中型客货车、危险品运输车等重点车型驾驶人的严重交通违法行为提高了记分分值,记分项由38项增加至52项。

其 中新增的内容有:使用伪造和变造校车标牌、校车超员20%以上记12分、不按规定避让校车记6分等14个涉及校车管理的记分项;中型以上客货车、危险品运 输车在高速公路、城市快速路行驶超速20%以上,或者在其他道路行驶超速50%以上,驾驶营运客车、校车超员20%以上、未取得校车驾驶资格驾驶校车的等 行为记12分,以及疲劳驾驶载客汽车、危险品运输车记12分等记分项。

提高处罚力度的有:将未悬挂或者不按规定安装号牌、故意遮挡污损号牌等违法行为记分由6分提高到12分,将违反道路交通信号灯通行等违法记分由3分提高到6分。

同时,考虑到《道路交通安全法》已规定醉酒驾驶机动车的、吊销机动车驾驶证且5年内不得重新取得驾驶证,取消了原醉酒驾驶机动车违法行为记分。晨报记者 何欣

交管部门新增六项便民服务措施

将驾驶证补换领、审验和小型汽车驾驶证考试等业务向县级车辆管理所下放,方便县乡、农村群众在家门口申领、换领汽车驾驶证,缩短群众办事距离,减少群众往返时间。

将核发和补换领驾驶证的时限由3日缩短为1日。群众在驾驶证遗失或损坏后,在申请办理补换证的当日即可领取新的驾驶证,方便群众驾车出行。同时,对于申领驾驶证的群众,在三个科目考试合格和宣誓仪式后,当日就可领取驾驶证。

将申领大型货车驾驶证的年龄条件由21岁放宽至20岁。

考虑到一些群众由于平时学习工作较忙,不能在2年内完成培训和考试,将驾驶准考证明有效期由2年延长至3年,方便群众通过法规知识考试后,有更充裕的时间参加驾驶技能培训学习,参加考试。

推行互联网、电话等远程自助预约驾驶人考试服务,公开考试预约计划、预约人数和考试人数,方便群众根据自己的学习、工作和生活需要,合理选择时间参加考试。

规定异地从事营运的驾驶人和货车,在备案登记一年后,可以直接在营运地参加驾驶证审验或车辆年检,避免群众多次往返办理业务。

相关新闻

校车驾驶人建立退出机制

记 者昨天从公安部获悉,为贯彻落实国务院《校车安全管理条例》,公安部发布了《关于修改〈机动车登记规定〉决定》(公安部令第124号,以下简称124号 令)和《机动车驾驶证申领和使用规定》(公安部令第123号,以下简称123号令),明确了公安机关交通管理部门参与校车许可条件审查,发放校车标牌和校 车驾驶人资格许可的业务程序和要求。124号令和123号令中关于校车驾驶人管理的内容自发布之日起施行。

规定明确了参与校车使用许可审查工作职责和事项,规范了校车标牌核发条件和程序。同时,严格校车登记检验和报废制度。规定校车在办理注 册登记前必须进行安全技术检验,并按照《校车安全管理条例》每半年参加一次安全技术检验,保证校车安全技术性能。校车标牌有效期与安全技术检验有效期一 致,均为半年。规定达到报废标准的校车必须在车辆管理所的监督下解体,杜绝报废校车流向社会、继续上路行驶。

加强校车使用的日常监管。规定公安交通管理部门要每月清理校车交通违法和事故情况,督促及时接受处理,同时要每月向本级政府、教育行政部门通报校车标牌发放情况和校车交通违法、事故等情况。

严格校车驾驶人资格许可和管理制度。明确了申请校车驾驶资格应具备的条件,以及办理许可的手续和程序,建立了校车驾驶人每年审验、联合监管以及退出机制。

又迁移了。。。

又迁移了。。。

博客又迁移了。。这回是在rockmyweb上面。
感觉好象还行,价格也还能接受。如果运行一阵良好的话,直接备份就Over了(再买一台双机互备),还能做负载均衡。

perl: warning: Setting locale failed.

perl: warning: Setting locale failed.

由于VPS的空间比较小,所以。。。偷懒装了一个debian,其实还有更小的,但我想debian相对会较小一点。。

在执行一些命令的时候会报这种错误 :

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "zh_CN.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

这个问题其实很简单,摆明了就是没设置本地环境变量嘛,不过,我也没有设置lang为zh_CN呀。这年头,还是en_US比较安全吧。
在ubuntu下面,可以通过:apt-get install language-pack-en-base 来解决,但debian下没有这个命令,所以只能:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

然后会出来一个界面,你在里面选择en_US.UTF-8,然后一切就都解决了。很方便

参考:禁用 UIWebView 里面的链接长按弹出效果

参考:禁用 UIWebView 里面的链接长按弹出效果

张宴在他的博客里说到:苹果一直拒绝 UIWebView 内嵌 HTML5 页面的 iPhone、iPad APP应用上架到 App Store,建议这样的APP去做成Safari的Web应用
但是,他用另外的办法解决了这个小问题,即不让别人感觉到HTML5页面可以被touch:

1、URL不让直接通过浏览器访问(UIWebView的请求Header头中加点东西,在服务器端将APP内嵌的访问和通过直接浏览器访问区分开来),或者通过浏览器访问时,返回JSON、XML信息,输出“Interface Error”,忽悠苹果审核人员说这是HTTP协议的接口,不是网页。

2、禁用、禁止 UIWebView 里面的链接长按弹出效果。加入一行 CSS 代码,禁用类似下图的链接长按弹出效果:
html,body{-webkit-touch-callout: none;}

以前没有注意过这些,以前只是注意到连续的数字会被当成电话可以被Call。所以只是加了一个telphone=no。黑黑。。
反正先了解一下总是好的。

备份:自动备份VPS数据到Dropbox

备份:自动备份VPS数据到Dropbox

以下的文字来自于网址:http://www.wutianqi.com/?p=3115,我和他一样,都遇到了类似的问题
上个月我的数据全没有了,所幸我真的只丢了一小部分数据。还能忍。但现在。。。我想自动化一点,这样或许会安全一点吧?
全文如下:

最近一直在考虑备份的问题,因为随着站越来越大,付出了两年的心血,如果真因为没有备份而导致数据丢失,那就真是欲哭无泪了,而对于那么多的站点及 数据,如果要时常备份,肯定会烦躁的,在网上找到了一个脚本,专门可以把VPS上的数据和数据库中的数据自动备份到dropbox中。

dropbox是什么?不解释,美丽的度娘,万能的谷哥,等着你去找他们。

脚本来至这个网站:http://davehope.co.uk/Blog/backup-your-linux-vps-to-dropbox/

#!/bin/bash
DROPBOX_USER="Your Dropbox username" #dropbox账号
DROPBOX_PASS="Your Dropbox password" #dropbox密码
DROPBOX_DIR="Directory in your dropbox account to store the backups, e.g. /backups" #dropbox中存放备份的文件夹
BACKUP_SRC="/home /var/www /var/git /etc /root" #VPS中需要备份的目录
BACKUP_DST="/tmp" #备份存放的地方
MYSQL_SERVER="127.0.0.1" #本地数据库服务器
MYSQL_USER="root" #数据库用户名
MYSQL_PASS="Your MySQL password" #数据库密码
#下面的就不需要修改了

#
# Stop editing here.
NOW=$(date +"%Y.%m.%d")
DESTFILE="$BACKUP_DST/$NOW.tgz"

#
# Upload a file to Dropbox.
# $1 = Source file
# $2 = Destination file.
function dropboxUpload
{
#
# Code based on DropBox Uploader 0.6 from http://www.andreafabrizi.it/?dropbox_uploader
LOGIN_URL="https://www.dropbox.com/login"
HOME_URL="https://www.dropbox.com/home"
UPLOAD_URL="https://dl-web.dropbox.com/upload"
COOKIE_FILE="/tmp/du_cookie_$RANDOM"
RESPONSE_FILE="/tmp/du_resp_$RANDOM"

UPLOAD_FILE=$1
DEST_FOLDER=$2

# Login
echo -ne " > Logging in..."
curl -s -i -c $COOKIE_FILE -o $RESPONSE_FILE --data "login_email=$DROPBOX_USER&login_password=$DROPBOX_PASS&t=$TOKEN" "$LOGIN_URL"
grep "location: /home" $RESPONSE_FILE > /dev/null

if [ $? -ne 0 ]; then
echo -e " Failed!"
rm -f "$COOKIE_FILE" "$RESPONSE_FILE"
exit 1
else
echo -e " OK"
fi

# Load home page
echo -ne " > Loading Home..."
curl -s -i -b "$COOKIE_FILE" -o "$RESPONSE_FILE" "$HOME_URL"

if [ $? -ne 0 ]; then
echo -e " Failed!"
rm -f "$COOKIE_FILE" "$RESPONSE_FILE"
exit 1
else
echo -e " OK"
fi

# Get token
TOKEN=$(cat "$RESPONSE_FILE" | tr -d '\n' | sed 's/.*<form action="https:\/\/dl-web.dropbox.com\/upload"[^>]*>\s*<input type="hidden" name="t" value="\([a-z 0-9]*\)".*/\1/')

# Upload file
echo -ne " > Uploading '$UPLOAD_FILE' to 'DROPBOX$DEST_FOLDER/'..."
curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE -F "plain=yes" -F "dest=$DEST_FOLDER" -F "t=$TOKEN" -F "file=@$UPLOAD_FILE" "$UPLOAD_URL"
grep "HTTP/1.1 302 FOUND" "$RESPONSE_FILE" > /dev/null

if [ $? -ne 0 ]; then
echo -e " Failed!"
rm -f "$COOKIE_FILE" "$RESPONSE_FILE"
exit 1
else
echo -e " OK"
rm -f "$COOKIE_FILE" "$RESPONSE_FILE"
fi
}

# Backup files.
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql"
tar cfz "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql"

dropboxUpload "$DESTFILE" "$DROPBOX_DIR"

rm -f "$NOW-Databases.sql" "$DESTFILE"

代码只需要在几个地方修改,已在上面的代码中注释出来。

直接:

#随便找个地方,存放backup.sh,比如我:
#cd /home/wwwroot/到这里来放置这个shell script
vi backup.sh
#粘贴上代码后
chmod +x backup.sh
#因为授予了权限,所以直接运行即可:
./backup.sh
#接着设置定时任务,可以man crontab自己看看具体用法
$ crontab -e
# m h dom mon dow command
#这里分别对应minute hour 'day of month' month 'day of week'
#下面这行,意思就是每月第一天备份
0 0 1 * * /bin/bash /home/wwwroot/backup.sh

OK,玩网站,就一句话,勤备份,靠别人不如靠自己,要想玩得好,首先要勤劳!

---EOF---
其实类似的软件很多,比如 还有google drive,而且相应的工具也已经有了,当然你甚至可以搞一台VPS来做双机互备,rsync,多方便啊。

国庆快乐

国庆快乐

国庆和中秋双节并一节。
我和老婆乘这个长假出去游玩一下,本来要带小孩出去的,结果很多亲戚说,新车。。。很毒 ,还是不要带小孩吧,想想也是,在高速上不能开窗。也就只能不带他出去了。。

过两天回来后再带他去东方绿洲什么的玩玩吧。

童鞋们,国庆快乐 .