Jiliuke

激流客

配置好后发现收邮件很慢 多半是灰名单引起的, telnet 25测试出现这个Recipient address rejected: Greylisting in effect,请到/etc/policyd/cluebringer.conf中查找Greylisting, # Greylisting module [Greylisting] enable=1 enable=1改为0 然后重启灰名单处理即可 /etc/init.d/cbpolicyd restart

在安装CentOS 6.2时发现它没有提示我要怎么安装,而是“自作主张”地给我选择了最小化安装,结果装完之后只有终端界面,因为有时候不得不用图形界面,所以如果没有图形界面也是很麻烦的。 后来通过百度才知道为什么它不让我选了,因为我用的是虚拟机,由于物理机本身配置就不高,所以我就没给虚拟机分配太多内存,而CentOS 6.2会根据你分配的内存大小决定安装方式,具体的界定我也忘记了,好像是512M还是1G,不过没关系,我们可以自己来安装图形界面,下面来说一下怎么安装。 1.yum -y groupinstall Desktop 2.yum -y groupinstall “X Window System” 3.yum -y groupinstall chinese-support 4.编辑/etc/sysconfig/i18n文件,将en_US改成zh_CN 5.init 5 经过以上5个步骤就可以进入图形界面了,因为我的默认语言是英文,所以才有第3、4步,如果你安装时选择的是中文,就可以跳过第3、4步了。 因为CentOS 6.2图形界面需要中文支持,所以安装中文包是必须的。

一、环境介绍:   服务器:centos 192.168.1.225   客户端:centos 192.168.1.226 二、安装: NFS的安装配置: centos 5 : yum -y install nfs-utils portmap centos 6(在CentOS 6.3当中,portmap服务由rpcbind负责) : yum -y install nfs-utils rpcbind 三、服务器端配置: 1、创建共享目录: [root@centos2 /]# mkdir /usr/local/test 2、NFS文件配置: [root@centos2 /]# vi /etc/exports #增加一行: /usr/local/test/ 192.168.1.226(rw,no_root_squash,no_all_squash,sync) :x保存退出; 使配置生效: [root@centos2 /]# exportfs -r 注:配置文件说明: /usr/local/test/ 为共享的目录,使用绝对路径。 192.168.1.226(rw,no_root_squash,no_all_squash,sync) 为客户端的地址及权限,地址可以是一个网段,一个IP地址或者是一个域名,域名支持通配符,如:*.youxia.com,地址与权限中间没有空格,权限说明: rw:read-write,可读写; ro:read-only,只读; sync:文件同时写入硬盘和内存; async:文件暂存于内存,而不是直接写入内存; no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。 root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份; all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限; anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定; anongid:匿名用户的GID值。 3、启动: centos6: [root@centos2 /]# service rpcbind start Starting rpcbind: [ OK ] [root@centos2 /]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Stopping RPC idmapd: [ OK ] Starting RPC idmapd: [ OK ] Starting NFS daemon: [ OK ] [root@centos2 /]# centos 5 [root@centos2 /]# service portmap start [root@centos2 /]# service nfs start [root@centos2 /]# 四、客户端挂载: 1、创建需要挂载的目录: [root@localhost ~]# mkdir /usr/local/test [root@localhost ~]# 2、测试挂载: [root@localhost ~]# showmount -e 192.168.1.225 Export list for 192.168.1.225: /usr/local/test 192.168.1.226 [root@localhost ~]# 如果显示:rpc mount export: RPC: Unable to receive; errno = No route to host,则需要在服务端关闭防火墙(稍候会详细说)。 3、挂载: [root@localhost ~]# mount -t nfs 192.168.1.225:/usr/local/test /usr/local/test [root@localhost ~]# mount /dev/mapper/VolGroup-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nfsd on /proc/fs/nfsd type nfsd (rw) 192.168.1.225:/usr/local/test on /usr/local/test type nfs (rw,vers=4,addr=192.168.1.225,clientaddr=192.168.1.226) [root@localhost ~]# 如果信息如上显示则挂载成功! 4、测试: 客户端生成一个文件: [root@centos2 /]# cd /usr/local/test/ [root@centos2 test]# echo “hello nfs test”>>test [root@centos2 test]# ll total 4 -rw-r–r– 1 root root 15 Apr 9 13:24 test [root@centos2 test]# 服务端检查: [root@centos2 /]# cd /usr/local/test/ [root@centos2 test]# ll total 4 -rw-r–r– 1 root root 15 Apr 9 13:24 test [root@centos2 test]# 挂载成功! 五、解除挂载: [root@localhost ~]# umount /usr/local/test [root@localhost ~]# mount /dev/mapper/VolGroup-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nfsd on /proc/fs/nfsd type nfsd (rw) [root@localhost ~]# 如果遇到:umount.nfs: /usr/local/test: device is busy 可能用命令: [root@localhost /]# fuser -m -v /usr/local/test 用户 进程号 权限 命令 /usr/local/test/: root 2798 ..c.. bash root 2996 ..c.. su [root@localhost /]# kill -9 2798 [root@localhost /]# kill -9 2996 [root@localhost /]# umount /usr/local/test [root@localhost /]# 六、服务器端防火墙设置(NFS 开启防墙配置): 1、修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用) # Local services mountd 1011/tcp #rpc.mountd mountd 1011/udp #rpc.mountd rquotad 1012/tcp #rpc.rquotad rquotad 1012/udp #rpc.rquotad 2、重起Linux NFS服务 service nfs restart 3、此时rpc相关端口已经被固定,可以为Linux NFS添加防火墙规则 #portmap /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp –dport 111 -j ACCEPT /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp –dport 111 -j ACCEPT #nfsd /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp –dport 2049 -j ACCEPT /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp –dport 2049 -j ACCEPT #mountd /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp –dport 1011 -j ACCEPT /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp –dport 1011 -j ACCEPT #rquotad /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp –dport 1012 -j ACCEPT /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp –dport 1012 -j ACCEPT #rpc.statd /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp –dport 32768 -j ACCEPT /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp –dport 32768 -j ACCEPT —TCP方法成功——————————————- -A INPUT -m state –state NEW -m tcp -p tcp –dport 111 -j ACCEPT -A INPUT -m state –state NEW -m tcp -p tcp –dport 2049 -j ACCEPT -A INPUT -m state –state NEW -m tcp -p tcp –dport 1011 -j ACCEPT -A INPUT -m state –state NEW -m tcp -p tcp –dport 1012 -j ACCEPT -A INPUT -m state –state NEW -m tcp -p tcp –dport 32768 -j ACCEPT 客户端在挂载的时候遇到的一个问题如下,可能是网络不太稳定,NFS默认是用UDP协议,换成TCP协议即可: mount -t nfs 192.168.1.225:/usr/local/test /usr/local/test -o proto=tcp -o nolock /etc/init.d/iptables restart #最后重启防火墙使配置生效 防火墙端口说明: portmap或者rpcbind(CentOS 6.x)使用:tcp/udp 111 nfs使用:tcp/udp 2049 mountd使用: TCP/UDP 892 rquotad使用:tcp/udp 875 status使用: TCP/UDP 1001-1004共四个端口 nlockmgr使用:TCP/32803端口 UDP/32769端口 rpcinfo -p 查看rpcbind使用的端口号

安装crontab: yum install crontabs 说明: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 查看crontab服务状态: service crond status 手动启动crontab服务: service crond start 查看crontab服务是否已设置为开机启动,执行命令: ntsysv 加入开机自动启动: chkconfig –level 35 crond on 1,crontab命令 功能说明:设置计时器。 语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr] 补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下: Minute Hour Day Month DayOFWeek Command 参  数: -e  编辑该用户的计时器设置。 -l  列出该用户的计时器设置。 -r  删除该用户的计时器设置。 -u<用户名称>  指定要设定计时器的用户名称。 2,crontab 格式 基本格式 : * *  *  *  *  command 分 时 日 月 周  命令 第1列表示分钟1~59 每分钟用或者 /1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列 表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 crontab特殊的符号说明: ““代表所有的取值范围内的数字。特别要注意哦! “/“代表每的意思,如”/5”表示每5个单位 “-“代表从某个数字到某个数字 “,”分散的数字 crontab文件的一些例子: 30 21 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每晚的21:30重启 apache。 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每月1、 10、22日的4 : 45重启apache。 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每周六、周日的1 : 10重启apache。 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每星期六的11 : 00 pm重启apache。 * */1 * * * /usr/local/etc/rc.d/lighttpd restart 每一小时重启apache * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 晚上11点到早上7点之间,每 隔一小时重启apache 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 每月的4号与每周一到周三 的11点重启apache 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 一月一号的4点重启apache */30 * * * * /usr/sbin/ntpdate 210.72.145.44 每半小时同步一下时间 ——————————– 如何查看crontab的日志记录 ——————————————————– 昨天crontab中的同步任务没有执行,不知道是什么原因没有执行,貌似任务hang住了,想查询一下crontab到底问题出在哪里,或者hang在了什么地方。 1. linux 看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察 2. unix 在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。 3. mail任务 在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

关于PHP str_replace() $string = ‘2’; $array1 = array(‘0’,’1’,’2’); $array2 = array(‘替换0’,’替换1’,’替换2’); str_replace($array1,$array2,$string); 上述方法可以实现,但是如果是: $string = ‘10’; $array1 = array(‘0’,’1’,’2’,’10’); $array2 = array(‘替换0’,’替换1’,’替换2’,’替换10’); str_replace($array1,$array2,$string); 则不能成功!

    PHP默认的md5加密是32位的, 虽然php从5.0开始说是可以16位加密的, 但是16位加密会出现乱码问题.

md5($str, true)后跟true参数时为16位,但很多时候会出现乱码(因为生成的二进制有不可显示字符!)

其实32位的加密字符串的第8到24位,和16位MD5的字符串是一样的。

 我们可以先32位加密,再用substr()来截取;

    function md5_16($str){

         return substr(md5($str),8,16);

    }

    $str = “http://tools.jiliuke.com";

    echo md5($str);

    echo md5_16($str);

输出结果:

    0b8e0d6246125a11a1223bd9c6977770

    46125a11a1223bd9

php 16位加密也可以这样来写:

    substr(md5(“admin”),8,-8);

官方地址:http://docs.jquery.com/UI/Datepicker,官方示例: http://jqueryui.com/demos/datepicker/。 一个不错的地址,用来DIY jQuery UI界面效果的站点http://jqueryui.com/themeroller/ DatePicker基本使用方法: 代码如下:

DatePicker支持鼠标点选日期,同时还可以通过键盘控制选择:

page up/down - 上一月、下一月
ctrl+page up/down - 上一年、下一年
ctrl+home - 当前月或最后一次打开的日期
ctrl+left/right - 上一天、下一天
ctrl+up/down - 上一周、下一周
enter - 确定选择日期
ctrl+end - 关闭并清除已选择的日期
escape - 关闭并取消选择

实用功能:

$.datepicker.setDefaults( settings ) - 全局设置日期选择插件的参数.
$.datepicker.formatDate( format, date, settings ) - 格式化显示的日期字符串
$.datepicker.iso8601Week( date ) - 给出一个日期,确实他是一年中的第几周
$.datepicker.parseDate( format, value, settings ) - 按照指定格式获取日期字符串

日期格式:

d - 每月的第几天 (没有前导零)
dd - 每月的第几天 (两位数字)
o - 一年中的第几天 (没有前导零)
oo - 一年中的第几天 (三位数字)
D - day name short
DD - day name long
m - 月份 (没有前导零)
mm - 月份 (两位数字)
M - month name short
MM - month name long
y - 年份 (两位数字)
yy - 年份 (四位数字)
@ - Unix 时间戳 (从 01/01/1970 开始)
‘…’ - 文本
‘’ - 单引号
(其它) - 文本

其它标准日期格式:

ATOM - ‘yy-mm-dd’ (Same as RFC 3339/ISO 8601)
COOKIE - ‘D, dd M yy’
ISO_8601 - ‘yy-mm-dd’
RFC_822 - ‘D, d M y’
RFC_850 - ‘DD, dd-M-y’
RFC_1036 - ‘D, d M y
RFC_1123 - ‘D, d M yy’
RFC_2822 - ‘D, d M yy’
RSS - ‘D, d M y’
TIMESTAMP - ‘@’
W3C - ‘yy-mm-dd’

参数(参数名 : 参数类型 : 默认值)

altField : String : ‘’
将选择的日期同步到另一个域中,配合altFormat可以显示不同格式的日期字符串。
初始:$(‘.selector’).datepicker({ altField: ‘#actualDate’ });
获取:var altField = $(‘.selector’).datepicker(‘option’, ‘altField’);
设置:$(‘.selector’).datepicker(‘option’, ‘altField’, ‘#actualDate’);

altFormat : String : ‘’
当设置了altField的情况下,显示在另一个域中的日期格式。
初始:$(‘.selector’).datepicker({ altFormat: ‘yy-mm-dd’ });
获取:var altFormat = $(‘.selector’).datepicker(‘option’, ‘altFormat’);
设置:$(‘.selector’).datepicker(‘option’, ‘altFormat’, ‘yy-mm-dd’);

appendText : String : ‘’
在日期插件的所属域后面添加指定的字符串。
初始:$(‘.selector’).datepicker({ appendText: ‘(yyyy-mm-dd)’ });
获取:var appendText = $(‘.selector’).datepicker(‘option’, ‘appendText’);
设置:$(‘.selector’).datepicker(‘option’, ‘appendText’, ‘(yyyy-mm-dd)’);

buttonImage : String : ‘’
设置弹出按钮的图片,如果非空,则按钮的文本将成为alt属性,不直接显示。
初始:$(‘.selector’).datepicker({ buttonImage: ‘/images/datepicker.gif’ });
获取:var buttonImage = $(‘.selector’).datepicker(‘option’, ‘buttonImage’);
设置:$(‘.selector’).datepicker(‘option’, ‘buttonImage’, ‘/images/datepicker.gif’);

buttonImageOnly : Boolean : false
Set to true to place an image after the field to use as the trigger without it appearing on a button.
初始:$(‘.selector’).datepicker({ buttonImageOnly: true });
获取:var buttonImageOnly = $(‘.selector’).datepicker(‘option’, ‘buttonImageOnly’);
设置:$(‘.selector’).datepicker(‘option’, ‘buttonImageOnly’, true);

buttonText : String : ‘…’
设置触发按钮的文本内容。
初始:$(‘.selector’).datepicker({ buttonText: ‘Choose’ });
获取:var buttonText = $(‘.selector’).datepicker(‘option’, ‘buttonText’);
设置:$(‘.selector’).datepicker(‘option’, ‘buttonText’, ‘Choose’);

changeMonth : Boolean : false
设置允许通过下拉框列表选取月份。
初始:$(‘.selector’).datepicker({ changeMonth: true });
获取:var changeMonth = $(‘.selector’).datepicker(‘option’, ‘changeMonth’);
设置:$(‘.selector’).datepicker(‘option’, ‘changeMonth’, true);

changeYear : Boolean : false
设置允许通过下拉框列表选取年份。
初始:$(‘.selector’).datepicker({ changeYear: true });
获取:var changeYear = $(‘.selector’).datepicker(‘option’, ‘changeYear’);
设置:$(‘.selector’).datepicker(‘option’, ‘changeYear’, true);

closeTextType: StringDefault: ‘Done’
设置关闭按钮的文本内容,此按钮需要通过showButtonPanel参数的设置才显示。
初始:$(‘.selector’).datepicker({ closeText: ‘X’ });
获取:var closeText = $(‘.selector’).datepicker(‘option’, ‘closeText’);
设置:$(‘.selector’).datepicker(‘option’, ‘closeText’, ‘X’);

constrainInput : Boolean : true
如果设置为true,则约束当前输入的日期格式。
初始:$(‘.selector’).datepicker({ constrainInput: false });
获取:var constrainInput = $(‘.selector’).datepicker(‘option’, ‘constrainInput’);
设置:$(‘.selector’).datepicker(‘option’, ‘constrainInput’, false);

currentText : String : ‘Today’
设置当天按钮的文本内容,此按钮需要通过showButtonPanel参数的设置才显示。
初始:$(‘.selector’).datepicker({ currentText: ‘Now’ });
获取:var currentText = $(‘.selector’).datepicker(‘option’, ‘currentText’);
设置:$(‘.selector’).datepicker(‘option’, ‘currentText’, ‘Now’);

dateFormat : String : ‘mm/dd/yy’
设置日期字符串的显示格式。
初始:$(‘.selector’).datepicker({ dateFormat: ‘yy-mm-dd’ });
获取:var dateFormat = $(‘.selector’).datepicker(‘option’, ‘dateFormat’);
设置:$(‘.selector’).datepicker(‘option’, ‘dateFormat’, ‘yy-mm-dd’);

dayNames : Array : [‘Sunday’, ‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Saturday’]
设置一星期中每天的名称,从星期天开始。此内容用于dateFormat时显示,以及日历中当鼠标移至行头时显示。
初始:$(‘.selector’).datepicker({ dayNames: [‘Dimanche’, ‘Lundi’, ‘Mardi’, ‘Mercredi’, ‘Jeudi’, ‘Vendredi’, ‘Samedi’] });
获取:var dayNames = $(‘.selector’).datepicker(‘option’, ‘dayNames’);
设置:$(‘.selector’).datepicker(‘option’, ‘dayNames’, [‘Dimanche’, ‘Lundi’, ‘Mardi’, ‘Mercredi’, ‘Jeudi’, ‘Vendredi’, ‘Samedi’]);

dayNamesMin : Array : [‘Su’, ‘Mo’, ‘Tu’, ‘We’, ‘Th’, ‘Fr’, ‘Sa’]
设置一星期中每天的缩语,从星期天开始,此内容用于dateFormat时显示,以前日历中的行头显示。
初始:$(‘.selector’).datepicker({ dayNamesMin: [‘Di’, ‘Lu’, ‘Ma’, ‘Me’, ‘Je’, ‘Ve’, ‘Sa’] });
获取:var dayNamesMin = $(‘.selector’).datepicker(‘option’, ‘dayNamesMin’);
设置:$(‘.selector’).datepicker(‘option’, ‘dayNamesMin’, [‘Di’, ‘Lu’, ‘Ma’, ‘Me’, ‘Je’, ‘Ve’, ‘Sa’]);

dayNamesShort : Array : [‘Sun’, ‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’, ‘Sat’]
设置一星期中每天的缩语,从星期天开始,此内容用于dateFormat时显示,以前日历中的行头显示。
初始:$(‘.selector’).datepicker({ dayNamesShort: [‘Dim’, ‘Lun’, ‘Mar’, ‘Mer’, ‘Jeu’, ‘Ven’, ‘Sam’] });
获取:var dayNamesShort = $(‘.selector’).datepicker(‘option’, ‘dayNamesShort’);
设置:$(‘.selector’).datepicker(‘option’, ‘dayNamesShort’, [‘Dim’, ‘Lun’, ‘Mar’, ‘Mer’, ‘Jeu’, ‘Ven’, ‘Sam’]);

defaultDate : Date, Number, String : null
设置默认加载完后第一次显示时选中的日期。可以是Date对象,或者是数字(从今天算起,例如+7),或者有效的字符串(‘y’代表年, ‘m’代表月, ‘w’代表周, ‘d’代表日, 例如:’+1m +7d’)。
初始:$(‘.selector’).datepicker({ defaultDate: +7 });
获取:var defaultDate = $(‘.selector’).datepicker(‘option’, ‘defaultDate’);
设置:$(‘.selector’).datepicker(‘option’, ‘defaultDate’, +7);

duration : String, Number : ‘normal’
设置日期控件展开动画的显示时间,可选是”slow”, “normal”, “fast”,’’代表立刻,数字代表毫秒数。
初始:$(‘.selector’).datepicker({ duration: ‘slow’ });
获取:var duration = $(‘.selector’).datepicker(‘option’, ‘duration’);
设置:$(‘.selector’).datepicker(‘option’, ‘duration’, ‘slow’);

firstDay : Number : 0
设置一周中的第一天。星期天为0,星期一为1,以此类推。
初始:$(‘.selector’).datepicker({ firstDay: 1 });
获取:var firstDay = $(‘.selector’).datepicker(‘option’, ‘firstDay’);
设置:$(‘.selector’).datepicker(‘option’, ‘firstDay’, 1);

gotoCurrent : Boolean : false
如果设置为true,则点击当天按钮时,将移至当前已选中的日期,而不是今天。
初始:$(‘.selector’).datepicker({ gotoCurrent: true });
获取:var gotoCurrent = $(‘.selector’).datepicker(‘option’, ‘gotoCurrent’);
设置:$(‘.selector’).datepicker(‘option’, ‘gotoCurrent’, true);

hideIfNoPrevNext : Boolean : false
设置当没有上一个/下一个可选择的情况下,隐藏掉相应的按钮。(默认为不可用)
初始:$(‘.selector’).datepicker({ hideIfNoPrevNext: true });
获取:var hideIfNoPrevNext = $(‘.selector’).datepicker(‘option’, ‘hideIfNoPrevNext’);
设置:$(‘.selector’).datepicker(‘option’, ‘hideIfNoPrevNext’, true);

isRTL : Boolean : false
如果设置为true,则所有文字是从右自左。
初始:$(‘.selector’).datepicker({ isRTL: true });
获取:var isRTL = $(‘.selector’).datepicker(‘option’, ‘isRTL’);
设置:$(‘.selector’).datepicker(‘option’, ‘isRTL’, true);

maxDate : Date, Number, String : null
设置一个最大的可选日期。可以是Date对象,或者是数字(从今天算起,例如+7),或者有效的字符串(‘y’代表年, ‘m’代表月, ‘w’代表周, ‘d’代表日, 例如:’+1m +7d’)。
初始:$(‘.selector’).datepicker({ maxDate: ‘+1m +1w’ });
获取:var maxDate = $(‘.selector’).datepicker(‘option’, ‘maxDate’);
设置:$(‘.selector’).datepicker(‘option’, ‘maxDate’, ‘+1m +1w’);
$(‘.selector’).datepicker(‘option’, ‘maxDate’, ‘12/25/2012’);

minDate : Date, Number, String : null
设置一个最小的可选日期。可以是Date对象,或者是数字(从今天算起,例如+7),或者有效的字符串(‘y’代表年, ‘m’代表月, ‘w’代表周, ‘d’代表日, 例如:’+1m +7d’)。
初始:$(‘.selector’).datepicker({ minDate: new Date(2007, 1 - 1, 1) });
获取:var minDate = $(‘.selector’).datepicker(‘option’, ‘minDate’);
设置:$(‘.selector’).datepicker(‘option’, ‘minDate’, new Date(2007, 1 - 1, 1));
$(‘.selector’).datepicker(‘option’, ‘minDate’, ‘12/25/2012’);

monthNames : Array : [‘January’, ‘February’, ‘March’, ‘April’, ‘May’, ‘June’, ‘July’, ‘August’, ‘September’, ‘October’, ‘November’, ‘December’]
设置所有月份的名称。
初始:$(‘.selector’).datepicker({monthNames:[‘Januar’,’Februar’,’Marts’,’April’,’Maj’,’Juni’,’Juli’,’August’,’September’,’Oktober’,’November’,’December’]});
获取:var monthNames = $(‘.selector’).datepicker(‘option’, ‘monthNames’);
设置:$(‘.selector’).datepicker(‘option’, ‘monthNames’, [‘Januar’,’Februar’,’Marts’,’April’,’Maj’,’Juni’,’Juli’,’August’,’September’,’Oktober’,’November’,’December’]);

monthNamesShort : Array : [‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec’]
设置所有月份的缩写。
初始:$(‘.selector’).datepicker({monthNamesShort:[‘Jan’,’Feb’,’Mar’,’Apr’,’Maj’,’Jun’,’Jul’,’Aug’,’Sep’,’Okt’,’Nov’,’Dec’]});
获取:var monthNamesShort = $(‘.selector’).datepicker(‘option’, ‘monthNamesShort’);
设置:$(‘.selector’).datepicker(‘option’, ‘monthNamesShort’, [‘Jan’,’Feb’,’Mar’,’Apr’,’Maj’,’Jun’,’Jul’,’Aug’,’Sep’,’Okt’,’Nov’,’Dec’]);

navigationAsDateFormat : Boolean : false
如果设置为true,则formatDate函数将应用到 prevText,nextText和currentText的值中显示,例如显示为月份名称。
初始:$(‘.selector’).datepicker({ navigationAsDateFormat: true });
获取:var navigationAsDateFormat = $(‘.selector’).datepicker(‘option’, ‘navigationAsDateFormat’);
设置:$(‘.selector’).datepicker(‘option’, ‘navigationAsDateFormat’, true);

nextText : String : ‘Next’
设置“下个月”链接的显示文字。
初始:$(‘.selector’).datepicker({ nextText: ‘Later’ });
获取:var nextText = $(‘.selector’).datepicker(‘option’, ‘nextText’);
设置:$(‘.selector’).datepicker(‘option’, ‘nextText’, ‘Later’);

numberOfMonths : Number, Array : 1
设置一次要显示多少个月份。如果为整数则是显示月份的数量,如果是数组,则是显示的行与列的数量。
初始:$(‘.selector’).datepicker({ numberOfMonths: [2, 3] });
获取:var numberOfMonths = $(‘.selector’).datepicker(‘option’, ‘numberOfMonths’);
设置:$(‘.selector’).datepicker(‘option’, ‘numberOfMonths’, [2, 3]);

prevText : String : ‘Prev’
设置“上个月”链接的显示文字。
初始:$(‘.selector’).datepicker({ prevText: ‘Earlier’ });
获取:var prevText = $(‘.selector’).datepicker(‘option’, ‘prevText’);
设置:$(‘.selector’).datepicker(‘option’, ‘prevText’, ‘Earlier’);

shortYearCutoff : String, Number : ‘+10’
设置截止年份的值。如果是(0-99)的数字则以当前年份开始算起,如果为字符串,则相应的转为数字后再与当前年份相加。当超过截止年份时,则被认为是上个世纪。
初始:$(‘.selector’).datepicker({ shortYearCutoff: 50 });
获取:var shortYearCutoff = $(‘.selector’).datepicker(‘option’, ‘shortYearCutoff’);
设置:$(‘.selector’).datepicker(‘option’, ‘shortYearCutoff’, 50);

showAnim : String : ‘show’
设置显示、隐藏日期插件的动画的名称。
初始:$(‘.selector’).datepicker({ showAnim: ‘fold’ });
获取:var showAnim = $(‘.selector’).datepicker(‘option’, ‘showAnim’);
设置:$(‘.selector’).datepicker(‘option’, ‘showAnim’, ‘fold’);

showButtonPanel : Boolean : false
设置是否在面板上显示相关的按钮。
初始:$(‘.selector’).datepicker({ showButtonPanel: true });
获取:var showButtonPanel = $(‘.selector’).datepicker(‘option’, ‘showButtonPanel’);
设置:$(‘.selector’).datepicker(‘option’, ‘showButtonPanel’, true);

showCurrentAtPos : Number : 0
设置当多月份显示的情况下,当前月份显示的位置。自顶部/左边开始第x位。
初始:$(‘.selector’).datepicker({ showCurrentAtPos: 3 });
获取:var showCurrentAtPos = $(‘.selector’).datepicker(‘option’, ‘showCurrentAtPos’);
设置:$(‘.selector’).datepicker(‘option’, ‘showCurrentAtPos’, 3);

showMonthAfterYear : Boolean : false
是否在面板的头部年份后面显示月份。
初始:$(‘.selector’).datepicker({ showMonthAfterYear: true });
获取:var showMonthAfterYear = $(‘.selector’).datepicker(‘option’, ‘showMonthAfterYear’);
设置:$(‘.selector’).datepicker(‘option’, ‘showMonthAfterYear’, true);

showOn : String : ‘focus’
设置什么事件触发显示日期插件的面板,可选值:focus, button, both
初始:$(‘.selector’).datepicker({ showOn: ‘both’ });
获取:var showOn = $(‘.selector’).datepicker(‘option’, ‘showOn’);
设置:$(‘.selector’).datepicker(‘option’, ‘showOn’, ‘both’);

showOptions : Options : {}
如果使用showAnim来显示动画效果的话,可以通过此参数来增加一些附加的参数设置。
初始:$(‘.selector’).datepicker({ showOptions: {direction: ‘up’ });
获取:var showOptions = $(‘.selector’).datepicker(‘option’, ‘showOptions’);
设置:$(‘.selector’).datepicker(‘option’, ‘showOptions’, {direction: ‘up’);

showOtherMonths : Boolean : false
是否在当前面板显示上、下两个月的一些日期数(不可选)。
初始:$(‘.selector’).datepicker({ showOtherMonths: true });
获取:var showOtherMonths = $(‘.selector’).datepicker(‘option’, ‘showOtherMonths’);
设置:$(‘.selector’).datepicker(‘option’, ‘showOtherMonths’, true);

stepMonths : Number : 1
当点击上/下一月时,一次翻几个月。
初始:$(‘.selector’).datepicker({ stepMonths: 3 });
获取:var stepMonths = $(‘.selector’).datepicker(‘option’, ‘stepMonths’);
设置:$(‘.selector’).datepicker(‘option’, ‘stepMonths’, 3);

yearRange : String : ‘-10:+10’
控制年份的下拉列表中显示的年份数量,可以是相对当前年(-nn:+nn),也可以是绝对值 (-nnnn:+nnnn)
初始:$(‘.selector’).datepicker({ yearRange: ‘2000:2010’ });
获取:var yearRange = $(‘.selector’).datepicker(‘option’, ‘yearRange’);
设置:$(‘.selector’).datepicker(‘option’, ‘yearRange’, ‘2000:2010’);

事件

beforeShow : function(input)
在日期控件显示面板之前,触发此事件,并返回当前触发事件的控件的实例对象。
初始:$(‘.selector’).datepicker({ beforeShow: function(input) { … } });

beforeShowDay : function(date)
在日期控件显示面板之前,每个面板上的日期绑定时都触发此事件,参数为触发事件的日期。调用函数后,必须返回一个数组:[0]此日期是否可选(true/false),[1]此日期的CSS样式名称(“”表示默认),[2]当鼠标移至上面出现一段提示的内容。
初始:$(‘.selector’).datepicker({ beforeShowDay: function(date) { … } });

onChangeMonthYear : function(year, month, inst)
当年份或月份改变时触发此事件,参数为改变后的年份月份和当前日期插件的实例。
初始:$(‘.selector’).datepicker({ onChangeMonthYear: function(year, month, inst) { … } });

onClose : function(dateText, inst)
当日期面板关闭后触发此事件(无论是否有选择日期),参数为选择的日期和当前日期插件的实例。
初始:$(‘.selector’).datepicker({ onClose: function(dateText, inst) { … } });

onSelect : function(dateText, inst)
当在日期面板选中一个日期后触发此事件,参数为选择的日期和当前日期插件的实例。
$(‘.selector’).datepicker({ onSelect: function(dateText, inst) { … } });

方法:

destory
从元素中移除拖拽功能。
用法:.datepicker( ‘destroy’ )

disable
禁用元素的拖拽功能。
用法:.datepicker( ‘disable’ )

enable
启用元素的拖拽功能。
用法:.datepicker( ‘enable’ )

option
获取或设置元素的参数。
用法:.datepicker( ‘option’ , optionName , [value] )

dialog
在dialog插件中打开一个日期插件。
用法:.datepicker( ‘dialog’ , dateText , [onSelect] , [settings] , [pos] )

isDisabled
确实日期插件是否已被禁用。
用法:.datepicker( ‘isDisabled’ )

hide
隐藏(关闭)之前已经打开的日期面板。
用法:.datepicker( ‘hide’ , [speed] )

show
.datepicker( ‘show’ )
显示日期插件。
用法:.datepicker( ‘show’ )

getDate
返回当前日期插件选择的日期。
用法:.datepicker( ‘getDate’ )

setDate
设置日期插件当前的日期。date参数可以是数字(从今天算起,例如+7),或者有效的字符串(‘y’代表年, ‘m’代表月, ‘w’代表周, ‘d’代表日, 例如:’+1m +7d’),null表示当天。
用法:.datepicker( ‘setDate’ , date )

jquery-ui-datepicker的用法讲解 1:先在页面引入相关的js,注意引入顺序不能错 jquery-1.4.2.min.js jquery-ui.min.js jquery.ui.datepicker.min.js jquery.ui.datepicker-zh-CN.min.js jquery.ui.datepicker-fr.min.js ….等等语言包(用到哪些加入哪些) 注意:在语言包的最后一句话设置了该datepicker的缺省Localization 类似这句:setDefaults(….regional[…]) 所以页面的datepicker如果不再自己设置的话,缺省会以最后一个引入的语言包的Localization为准. 2:页面示例 其中的注释已经很清楚了,datepicker的官方文档对于option的设置是先init datepicker,再setter or getter

        不同的Linux之间copy文件常用有3种方法,

        第一种就是ftp,也就是其中一台Linux安装ftp Server, 这样可以另外一台使用ftp的client程序来进行文件的copy。 (注意文件大小不能超过2G) 第二种方法就是采用samba服务,类似Windows文件copy的方式来操作,比较简洁方便, 第三种就是利用scp命令来进行文件复制。 scp是有Security的文件copy,基于ssh登录。操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令。 scp /soft/squid-2.6.STABLE2.tar root@192.168.1.1:/soft 然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始copy了。 如果想反过来操作,把文件从远程主机copy到当前系统,也很简单。 scp root@172.19.2.75:/home/root /home/daisy/full.tar.gz

原创:

1.安装centos ,这里使用CentOS-6.5-x86_64-LiveDVD.iso

下载地址:http://mirrors.sohu.com/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-LiveDVD.iso

安装完毕后进入系统

2.关闭系统防火墙,selinux

打开终端,输入命令

#service iptables stop //关闭防火墙

#setenforce 0 //关闭selinux

3.下载apache源码,php源码,mysql源码

首先,在根目录(/)创建一个文件夹,命名source,创建一个文件夹,命名lamp,然后进入source目录,以下是命令方法

桌面右键,在终端中打开,然后输入命令

#cd /

#mkdir source

#mkdir lamp

#cd source

下载apache2.2.27

#wget http://mirrors.sohu.com/apache/httpd-2.2.27.tar.gz

下载mysql5.6.20

#wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.21.tar.gz

下载php5.4.27

#wget http://mirrors.sohu.com/php/php-5.4.27.tar.gz

3.1安装apache2.2.27

解压安装包httpd-2.2.27.tar.gz

#tar -xzf httpd-2.2.27.tar.gz

进入目录

#cd httpd-2.2.27

# ./configure –prefix=/lamp/apache

接下来会报错

需要安装gcc gcc++

#yum -y install gcc gcc-c++

再次编译,顺利安装

# ./configure –prefix=/lamp/apache

#make;make install

拷贝启动启动文件到/etc/init.d/

#cp /lamp/apache/bin/apachectl /etc/init.d/httpd

启动apache,输入物理地址,提示It works!以下界面则提交成功

#service httpd start

3.2 安装mysql5.6.20

安装mysql需要安装cmake,首先下载cmake,其次还要安装ncurses-devel

#cd /source

#wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz

#tar -xzf cmake-2.8.12.2.tar.gz

#cd  cmake-2.8.12.2

#./configure

#gmake

#make;make install

#yum install ncurses-devel

安装mysql

#cd /source

#tar -xzf mysql-5.6.20.tar.gz

#cd  mysql-5.6.20

#cmake -DCMAKE_INSTALL_PREFIX=/lamp/mysql && make && make install

#cd /lamp/mysql

#scripts/mysql_install_db –basedir=/lamp/mysql –datadir=/lamp/mysql/data –user=mysql

#cp support-files/my-default.cnf /lamp/mysql/my.cnf

#cp support-files/mysql.server /etc/init.d/mysqld

增加环境变量

#vim /etc/profile

在文件末尾加入PATH=$PATH:/lamp/mysql/bin

#source /etc/profile

启动mysql

#service mysqld start

如果我无法启动,看看是否有mysqld进程没有关闭,全部kill -9   ,查看命令ps -ef|grep mysqld

3.3 安装php5.4.27

#cd /source

#tar -xzf php-5.4.27.tar.gz

# cd php-5.4.27

# ./configure –prefix=/lamp/php –with-mysql=/lamp/mysql –with-mysqli=/lamp/mysql/bin/mysql_config –with-apxs2=/lamp/apache/bin/apxs –enable-mbstring

#cp /source/ php-5.4.27/php.ini-development /lamp/php/lib/php.ini

设置默认时区

#vim /lamp/php/lib/php.ini

大概909行修改为date.timezone = PRC

可能会报错,这里是perl未安装

#yum -y install perl

可能会报错,这里是libxml2 libxml2-devel未安装

#yum -y install libxml2 libxml2-devel

增加环境变量

#vim /etc/profile

在文件末尾加入PATH=$PATH:/lamp/php/bin

#source /etc/profile

修改apache配置,让其支持php解析

#vim /lamp/apache/etc/httpd.conf

搜索AddType,大概310行

增加AddType application/x-httpd-php .php

搜索Directory,大概168行

修改为DirectoryIndex index.php index.html

重启apache

#service httpd restart

到此安装成功

在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。

具体作用:

1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;

2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。

LayoutInflater 是一个抽象类,在文档中如下声明:

public abstract class LayoutInflater extends Object

获得 LayoutInflater 实例的三种方式

1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater()

2. LayoutInflater inflater = LayoutInflater.from(context);

3. LayoutInflater inflater = (LayoutInflater)context.getSystemService

                              (Context.LAYOUT_INFLATER_SERVICE);

其实,这三种方式本质是相同的,从源码中可以看出:

getLayoutInflater():

Activity 的 getLayoutInflater() 方法是调用 PhoneWindow 的getLayoutInflater()方法,看一下该源代码:

public PhoneWindow(Context context)

{

 super(context);

    mLayoutInflater = LayoutInflater.from(context);

}

可以看出它其实是调用 LayoutInflater.from(context)。

LayoutInflater.from(context):

public static LayoutInflater from(Context context)

{

 LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService

         (Context.LAYOUT_INFLATER_SERVICE);

    if (LayoutInflater == null)

    {

     throw new AssertionError(“LayoutInflater not found.”);

    }

    return LayoutInflater;

}

可以看出它其实调用 context.getSystemService()。

结论:所以这三种方式最终本质是都是调用的Context.getSystemService()。

另外getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。

传入的Name 返回的对象 说明

WINDOW_SERVICE WindowManager 管理打开的窗口程序

LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定义的view

ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态

POWER_SERVICE PowerManger 电源的服务

ALARM_SERVICE AlarmManager 闹钟的服务

NOTIFICATION_SERVICE NotificationManager 状态栏的服务

KEYGUARD_SERVICE KeyguardManager 键盘锁的服务

LOCATION_SERVICE LocationManager 位置的服务,如GPS

SEARCH_SERVICE SearchManager 搜索的服务

VEBRATOR_SERVICE Vebrator 手机震动的服务

CONNECTIVITY_SERVICE Connectivity 网络连接的服务

WIFI_SERVICE WifiManager Wi-Fi服务

TELEPHONY_SERVICE TeleponyManager 电话服务

inflate 方法

通过 sdk 的 api 文档,可以知道该方法有以下几种过载形式,返回值均是 View 对象,如下:

public View inflate (int resource, ViewGroup root)

public View inflate (XmlPullParser parser, ViewGroup root)

public View inflate (XmlPullParser parser, ViewGroup root, boolean attachToRoot)

public View inflate (int resource, ViewGroup root, boolean attachToRoot)

示意代码:

LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.custom, (ViewGroup)findViewById(R.id.test));

//EditText editText = (EditText)findViewById(R.id.content);// error

EditText editText = (EditText)view.findViewById(R.id.content);

对于上面代码,指定了第二个参数 ViewGroup root,当然你也可以设置为 null 值。

注意:

·inflate 方法与 findViewById 方法不同;

·inflater 是用来找 res/layout 下的 xml 布局文件,并且实例化;

·findViewById() 是找具体 xml 布局文件中的具体 widget 控件(如:Button、TextView 等)。

0%