作者归档:猪立业

解决Linux(ubuntu 14.04 server)中文环境语言错误

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "zh_CN:zh",
        LC_ALL = (unset),
        LC_TIME = "zh_CN",
        LC_MONETARY = "zh_CN",
        LC_ADDRESS = "zh_CN",
        LC_TELEPHONE = "zh_CN",
        LC_NAME = "zh_CN",
        LC_MEASUREMENT = "zh_CN",
        LC_IDENTIFICATION = "zh_CN",
        LC_NUMERIC = "zh_CN",
        LC_PAPER = "zh_CN",
        LANG = "zh_CN.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Selecting previously unselected package language-pack-zh-hans-base.

安装Ubuntu时,选择的是中文,在下载软件的时候,因为网速不好,取消了。安装完之后,经常出现上面的错误,呵呵,导致有时候apt-get 安装软件时有些软件不能成功,也不知道为什么,反正知道了问题,就把语言包装上就好了。ubuntu 安装语言包还算容易,下面是ubuntu14.04 server版的安装方法。

sudo apt-get install language-pack-zh-hans language-pack-zh-hans-base

安装好之后,中文也正常显示了。

有关Linux 中文语言的一些知识,来自网络,没有验证,大家自己看看吧。

查看当前安装有那些语言:

locale -a

当前语言相关配置:

root@ubuntu:/etc/sphinxsearch# locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC=zh_CN
LC_TIME=zh_CN
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY=zh_CN
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER=zh_CN
LC_NAME=zh_CN
LC_ADDRESS=zh_CN
LC_TELEPHONE=zh_CN
LC_MEASUREMENT=zh_CN
LC_IDENTIFICATION=zh_CN
LC_ALL=

locale 把按照所涉及到的文化传统的各个方面分成12个大类,这12个大类分别是:
1、语言符号及其分类(LC_CTYPE)
2、数字(LC_NUMERIC)
3、比较和排序习惯(LC_COLLATE)
4、时间显示格式(LC_TIME)
5、货币单位(LC_MONETARY)
6、信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等(LC_MESSAGES)
7、姓名书写方式(LC_NAME)
8、地址书写方式(LC_ADDRESS)
9、电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式 (LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。

Locale是软件在运行时的语言环境, 它包括语言(Language), 地域 (Territory) 和字符集(Codeset)。一个locale的书写格式为:语言[_地域[.字符集]]。完全的locale表达方式是 [语言[_地域][.字符集] [@修正值]。zh_CN.GB2312=中文_中华人民共和国.国标2312字符集。

设定locale就是设定12大类的locale分类属性,即 12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG。它们之间有一个优先级的关系:
LC_ALL>LC_*>LANG
可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。
1、如果你设定了LC_ALL=zh_CN.UTF-8,那么不管LC_*和LANG设定成什么值,它们都会被强制服从LC_ALL的设定,成为 zh_CN.UTF-8。

2、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_*=en_US.UTF-8,并且没有设定LC_ALL的话,那么系统的locale设定以LC_*=en_US.UTF-8。

3、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_*,和LC_ALL均未设定的话,系统会将LC_*设定成默认值,也就是LANG的值 zh_CN.UTF-8 。

4、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_CTYPE=en_US.UTF-8,其他的LC_*,和LC_ALL均未设定的话,那么系统的locale设定将是:

LC_CTYPE=en_US.UTF-8,其余的 LC_COLLATE,LC_MESSAGES等等均会采用默认值,也就是LANG的值,也就是LC_COLLATE=LC_MESSAGES=……= LC_PAPER=LANG=zh_CN.UTF-8。

所以,locale是这样设定的:
1、如果你需要一个纯中文的系统的话,设定LC_ALL= zh_CN.XXXX,或者LANG= zh_CN.XXXX都可以,当然你可以两个都设定,但正如上面所讲,LC_ALL的值将覆盖所有其他的locale设定,不要作无用功。
2、如果你只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。这样LC_CTYPE=zh_CN.XXXX,而 LC_COLLATE=LC_MESSAGES=……= LC_PAPER=LANG=en_US.XXXX。

C.LANG和LANGUAGE的区别:
LANG – Specifies the default locale for all unset locale variables
LANGUAGE – Most programs use this for the language of its interface
LANGUAGE是设置应用程序的界面语言。而LANG是优先级很低的一个变量,它指定所有与locale有关的变量的默认值

Cordova 调试利器 Ripple

Ripple是Chrome(谷歌浏览器)的一个插件,主要功能是用来调试Cordova(Photogap)软件。可以有效的提高Cordova的开发效率,防止每次都将软件Run 到android虚拟机的麻烦,并且,在这里,调试可以使用 javascrpt debug。

Ripple是一个开源的Apache项目(http://incubator.apache.org/projects/ripple.html)。它允许浏览器作为移动设备的模拟器。目前已经支持Blackberry和Cordova(PhoneGap)。

一旦安装了Ripple,Chrome浏览器将得到一个新的工具图标:

Linux Iptalbes 功能 命令行常用记录

Iptables 是linux 系统常见的防火墙,弄服务器的化,经常会用到。因为基本只能用命令操作,且命令比较长,经常记不住,比较蛋痛,就顺便记在这里了,呵呵。免得老是要去百度找。

常用命令列表:

命令 -A, –append
范例 iptables -A INPUT …
说明 新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。

命令 -I, –insert
范例 iptables -I INPUT 1 –dport 80 -j ACCEPT
说明 插入一条规则,原本该位置上的规则将会往后移动一个顺位。

命令 -L, –list
范例 iptables -L INPUT
说明 列出某规则链中的所有规则。 可以使用 –line-number 参数列出行好 iptables -L –line-number

命令 -D, –delete
范例 iptables -D INPUT –dport 80 -j DROP
iptables -D INPUT 1
说明 从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。

命令 -R, –replace
范例 iptables -R INPUT 1 -s 192.168.0.1 -j DROP
说明 取代现行规则,规则被取代后并不会改变顺序。

命令 -F, –flush
范例 iptables -F INPUT
说明 删除某规则链中的所有规则。

命令 -Z, –zero
范例 iptables -Z INPUT
说明 将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。

命令 -N, –new-chain
范例 iptables -N allowed
说明 定义新的规则链。

命令 -X, –delete-chain
范例 iptables -X allowed
说明 删除某个规则链。

命令 -P, –policy
范例 iptables -P INPUT DROP
说明 定义过滤政策。 也就是未符合过滤条件之封包,预设的处理方式。

命令 -E, –rename-chain
范例 iptables -E allowed disallowed
说明 修改某自订规则链的名称。

常用封包比对参数:
参数 –line-number
范例 iptables -L –line-number
说明 显示出每条命令的行号,便于使用行号操作
参数 -p, –protocol
范例 iptables -A INPUT -p tcp
说明 比对通讯协议类型是否相符,可以使用 ! 运算子进行反向比对,例如:-p ! tcp ,意思是指除 tcp 以外的其它类型,包含
udp、icmp …等。如果要比对所有类型,则可以使用 all 关键词,例如:-p all。
参数 -s, –src, –source
范例 iptables -A INPUT -s 192.168.1.1
说明 用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:-s 192.168.0.0/24,比对 IP 时
可以使用 ! 运算子进行反向比对,例如:-s ! 192.168.0.0/24。
参数 -d, –dst, –destination
范例 iptables -A INPUT -d 192.168.1.1
说明 用来比对封包的目的地 IP,设定方式同上。
参数 -i, –in-interface
范例 iptables -A INPUT -i eth0
说明 用来比对封包是从哪片网卡进入,可以使用通配字符 + 来做大范围比对,例如:-i eth+ 表示所有的 ethernet 网卡,也
以使用 ! 运算子进行反向比对,例如:-i ! eth0。
参数 -o, –out-interface
范例 iptables -A FORWARD -o eth0
说明 用来比对封包要从哪片网卡送出,设定方式同上。
参数 –sport, –source-port
范例 iptables -A INPUT -p tcp –sport 22
说明 用来比对封包的来源埠号,可以比对单一埠,或是一个范围,例如:–sport 22:80,表示从 22 到 80 埠之间都算是符合
件,如果要比对不连续的多个埠,则必须使用 –multiport 参数,详见后文。比对埠号时,可以使用 ! 运算子进行反向比对。
参数 –dport, –destination-port
范例 iptables -A INPUT -p tcp –dport 22
说明 用来比对封包的目的地埠号,设定方式同上。
参数 –tcp-flags
范例 iptables -p tcp –tcp-flags SYN,FIN,ACK SYN
说明 比对 TCP 封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号,第二部分则列举前述旗号中哪些有被设
,未被列举的旗号必须是空的。TCP 状态旗号包括:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)
PSH(强迫推送) 等均可使用于参数中,除此之外还可以使用关键词 ALL 和 NONE 进行比对。比对旗号时,可以使用 ! 运算子
行反向比对。
参数 –syn
范例 iptables -p tcp –syn
说明 用来比对是否为要求联机之 TCP 封包,与 iptables -p tcp –tcp-flags SYN,FIN,ACK SYN 的作用完全相同,如果使用 !
运算子,可用来比对非要求联机封包。
参数 -m multiport –source-port
范例 iptables -A INPUT -p tcp -m multiport –source-port 22,53,80,110
说明 用来比对不连续的多个来源埠号,一次最多可以比对 15 个埠,可以使用 ! 运算子进行反向比对。
参数 -m multiport –destination-port
范例 iptables -A INPUT -p tcp -m multiport –destination-port 22,53,80,110
说明 用来比对不连续的多个目的地埠号,设定方式同上。
参数 -m multiport –port
范例 iptables -A INPUT -p tcp -m multiport –port 22,53,80,110
说明 这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。注意:在本范例中,如果来源端口号为 80
目的地埠号为 110,这种封包并不算符合条件。
参数 –icmp-type
范例 iptables -A INPUT -p icmp –icmp-type 8
说明 用来比对 ICMP 的类型编号,可以使用代码或数字编号来进行比对。请打 iptables -p icmp –help 来查看有哪些代码可
用。
参数 -m limit –limit
范例 iptables -A INPUT -m limit –limit 3/hour
说明 用来比对某段时间内封包的平均流量,上面的例子是用来比对:每小时平均流量是否超过一次 3 个封包。 除了每小时平均
次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、 /minute、/day。 除了进行封
数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。
参数 –limit-burst
范例 iptables -A INPUT -m limit –limit-burst 5
说明 用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超过 5 个(这是默认值),超过此上限的封
将被直接丢弃。使用效果同上。
参数 -m mac –mac-source
范例 iptables -A INPUT -m mac –mac-source 00:00:00:00:00:01
说明 用来比对封包来源网络接口的硬件地址,这个参数不能用在 OUTPUT 和 Postrouting 规则炼上,这是因为封包要送出到网
后,才能由网卡驱动程序透过 ARP 通讯协议查出目的地的 MAC 地址,所以 iptables 在进行封包比对时,并不知道封包会送到
个网络接口去。
参数 –mark
范例 iptables -t mangle -A INPUT -m mark –mark 1
说明 用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过 MARK 处理动作,将该封包标示一个号码,号码最
不可以超过 4294967296。
参数 -m owner –uid-owner
范例 iptables -A OUTPUT -m owner –uid-owner 500
说明 用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用 root 或其它身分将敏感数据传送出
,可以降低系统被骇的损失。可惜这个功能无法比对出来自其它主机的封包。
参数 -m owner –gid-owner
范例 iptables -A OUTPUT -m owner –gid-owner 0
说明 用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。
参数 -m owner –pid-owner
范例 iptables -A OUTPUT -m owner –pid-owner 78
说明 用来比对来自本机的封包,是否为某特定行程所产生的,使用时机同上。
参数 -m owner –sid-owner
范例 iptables -A OUTPUT -m owner –sid-owner 100
说明 用来比对来自本机的封包,是否为某特定联机(Session ID)的响应封包,使用时机同上。
参数 -m state –state
范例 iptables -A INPUT -m state –state RELATED,ESTABLISHED
说明 用来比对联机状态,联机状态共有四种:INVALID、ESTABLISHED、NEW 和 RELATED。

INVALID 表示该封包的联机编号(Session ID)无法辨识或编号不正确。
ESTABLISHED 表示该封包属于某个已经建立的联机。
NEW 表示该封包想要起始一个联机(重设联机或将联机重导向)。
RELATED 表示该封包是属于某个已经建立的联机,所建立的新联机。例如:FTP-DATA 联机必定是源自某个 FTP 联机。

如何给Xenserver安装gcc和make

这几天折腾虚拟机,原本以为还容易,跟windows一样,现在才知道麻烦还真不少,主要是用了新系统,和一些旧系统上的操作不一样。好多东西都找不到教材了,唉! 最主要的还是,买的机器驱动不行,不的不折腾啊!

在默认情况下,Xen Server不允许利用yum自动安装GCC,这让我们在服务器上安装、编译一些程序的时候很麻烦!有没什么方法能安装?

By default CentOS base repositories won’t be configured on XenServer. To compile and install nagios/bacula or any other app on server you might end up searching for compiler tools like gcc etc.

Here is a simple way to enable base repo and install gcc on your XenServer.

yum --enablerepo=base install gcc make

This will enable the base repository and pull the required packages for gcc.

来自http://www.fuwuqiweihu.com/xen-server-install-gcc/

设置linux固定IP地址

因为虚拟机操作系统是 linux ubuntu server 14.04 amd64 位命令行界面的,操作不方便,经常是启动系统后,通过远程ssh链接上去操作,这样可以方便的使用鼠标和浏览网页等。

但是vmware虚拟机里面的ip是使用dhcp自动获取IP的,所以每次启动都会变更IP地址,比较麻烦。

现在,我们来将虚拟机的IP地址设置为固定的。

我使用的是vmware play,所以没有nat的高级设置。所以使用“桥接(bridged)”上网,这样,就可以使用的我路由器的IP地址段了。

注意:每个路由器的IP地址段有可能不一样,有的是192.168.0.1。有的是192.168.1.1,目前发现大部分路由器的ip地址是 1.1的。呵呵。大家自己看吧,不知道就看本地连接里面的“详细信息” 就可以了。

因为我的是192.168.0.1的ip段

在虚拟机里面执行:

vi /etc/network/interfaces

 

可以看到一下信息:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
# hjb@2014-11-17
iface eth0 inet dhcp

这里的 iface eth0 inet dhcp 表示使用dhcp动态获取IP地址。

我们修改成以下:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
# hjb@2014-11-17
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.110
gateway 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

就可以使用静态ip地址登录了,以后,启动虚拟机也会固定的使用这个IP地址,有多个虚拟机的化,address 后面的ip地址要稍微变一下,以免启动多个虚拟机时冲突。

另外,还需要重启下网络才可以,重启网络使用一下命令:

service networking restart

注:本来使用这个命令应该是没有错的,但是我使用了,发现不行。所以重启了下虚拟机。

重启后,可以用:

ifconfig

查看下是不是ip地址是不是正确。

好了,今天就说这个,有点啰嗦,呵呵,只是希望新手也可以看得明白。

关于IE6、7、8下实现盒阴影的几个注意点

通常,我们实现盒阴影都是通过这段代码来实现的

-moz-box-shadow: 3px 3px 4px #000;
-webkit-box-shadow: 3px 3px 4px #000;
box-shadow: 3px 3px 4px #000;

但是,IE6、7、8不认识这段样式,所以我们会考虑用滤镜来实现这功能

/* For IE 8 */
-ms-filter:"progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')";
/* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');

其实如果要求不是那么苛刻的话,IE下用滤镜已经能达到我们要的效果了。当然,如果你觉得滤镜不那么完美,非要用图片去实现,那也可以,就不用继续往下读我要说明的几个注意点了。

首先,滤镜里的颜色属性必须写完整,不能用缩写。比如#000000不能写成#000,不然就会出现这样的效果

  而且,不管你用什么颜色的缩写,都会变成这样,哪怕你写成#fff,最终效果也会是这样。

第二,滤镜的阴影是计算在宽高内的。比如我的盒子宽高都是100px,当我设置阴影的宽度为4px的时候,实际我盒子的宽度和高度就都变成了104px

第三,在盒阴影下,box会自动加上overflow:hidden。

  

作者:胡尐睿丶

来源:http://www.cnblogs.com/hooray/archive/2011/11/22/2258240.html

MySQL Fabric 工具帮助实现数据库集群

自从5.5开始,mysql推出了很多新的工具,用于简化服务器集群的实现,不像以前,想要实现mysql集群,想要自己在程序编写复杂代码和配置mysql的配置文件。

MySQL Fabric 是一个用于管理 MySQL 服务器群的可扩展框架。该框架实现了两个特性 — 高可用性 (HA) 以及使用数据分片的横向扩展。这两个特性既可以单独使用,也可以结合使用。

这两个特性都基于以下两个层面实现:

mysqlfabric 是处理任何管理请求的进程。使用 HA 特性时,还可以让此进程负责监视主服务器并在发生故障时,开始故障转移,将从服务器升级成主服务器。

  1. MySQL Fabric-aware 连接器把从 MySQL Fabric 获取的路由信息存储到缓存中,然后凭借该信息将事务或查询发送给正确的 MySQL 服务器。
  2. MySQL Fabric 为 MySQL 服务器提供高可用性和数据库分片

高可用性

       HA 组由两个或更多个 MySQL 服务器组成;任何时刻,其中都有一台服务器作为主服务器(MySQL 复制功能的主服务器),其他服务器则作为从服务器(MySQL 复制功能的从服务器)。HA 组的作用就是确保该组中保存的数据始终可访问。

MySQL 的复制功能可通过复制来确保数据安全,MySQL Fabric 的高可用性解决方案在此基础上提供了两个必不可少的额外要素:

故障检测和升级 — MySQL Fabric 监视 HA 组中的主服务器,在主服务器发生故障时选择一个从服务器并将其升级为主服务器
数据库请求路由 — 将写入请求路由到主服务器以及将读取请求在各个从服务器之间进行负载均衡的操作对应用是透明的,即使在故障转移期间拓扑发生变化时也是如此

分片 — 横向扩展

当接近一个 MySQL 服务器(或 HA 组)的容量或写入性能极限时,MySQL Fabric 可在多个 MySQL 服务器“组”中对数据进行分区,从而支持数据库服务器横向扩展。请注意,一个组可以只包含一个 MySQL 服务器,也可以是一个 HA 组。

管理员定义这些服务器之间的数据分片方式;指定应将哪些表的列用作分片键,以及是使用 HASH 映射还是 RANGE 映射将这些键映射至正确的分片。

如果需要进一步分片,MySQL Fabric 可以拆分现有分片;此外,还可以重新分配分片。

MySQL Fabric-aware 连接器

目前,提供了针对 Java 的、PHP 的和 Python 的 MySQL Fabric-aware 连接器。这些连接器自动从 MySQL Fabric 获取路由信息并将其存储在缓存中,以便将查询和事务直接路由至正确的 MySQL 服务器。应用只需提供分片键即可,无需了解服务器场的拓扑或任何服务器的状态。

无代理运行

因为事务和查询直接路由至正确的 MySQL 服务器,因此并不需要代理功能 — 有助于减少延迟和降低复杂性。此外,任何目标机器上都不需要运行代理。

windows 7/xp 使用设置环境变量让cmd使用代理服务器

作为一个码农,为什么需要经常上google,上一些国外的开源网站,chockout 一些开源的代码来用,这个时候,“墙”就起到了致命性的作用,让人苦不堪言!不过没有办法,谁让我们是在“墙”内的人呢!废话不多说。回正题!

一般情况下,在IE等设置代理还是比较容易的,有界面,不懂“百度”一下;

但是有时候,我们是在 命令行(cmd)上进行的,入git和一些只提供了命令行工具的地方(golang),这个时候就没有办法了,只能设置cmd的环境变量来所以代理。

 

具体步骤:

1、启动代理软件(我常用轮子做我的翻墙软件),或者是找到代理服务器。

 

2、启动cmd

3、输入

set http_proxy=http://127.0.0.1:8580
//(每个人的电脑或者找到的代理不一定一样) 
set http_proxy_user=username
set http_proxy_pass=password

使用 Windows Live Writer 来写日志

    呵呵,一如既往的看好windows的桌面程序,虽然我现在在linux上倒腾东西的时间特别的多(工作需要,服务器上的东西大部分还是linux跑的比较好啊!),但是,还是喜欢在windows上折腾和工作不是很沾边的东西(或者说,和界面有太多相关的东西)。

希望linux也可以越来越好,这样以后就不用两个系统切来切去了啊!

--猪立业