Mar5

【转载】JQuery Autocomplete自动完成插件参数说明

Author: leeon  Click: 8537   Comments: 0 Category: javascript  Tag: jquery,autocomplete
1、jquery.autocomplete参考地址
http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
http://docs.jquery.com/Plugins/Autocomplete
2、jquery.autocomplete详解
语法:
autocomplete(urlor data, [options] )
参数:
url or data:数组或者url
[options]:可选项,选项解释如下:
1) minChars (Number)
在触发autoComplete前用户至少需要输入的字符数,Default:1,如果设为0,在输入框内双击或者删除输入框内内容时显示列表。
2) width (Number)
指定下拉框的宽度,Default: input元素的宽度
3) max (Number)
autoComplete下拉显示项目的个数,Default: 10
4) delay (Number)
击键后激活autoComplete的延迟时间(单位毫秒),Default: 远程为400 本地10
5) autoFill (Boolean)
要不要在用户选择时自动将用户当前鼠标所在的值填入到input框,Default: false
6) mustMatch (Booolean)
如果设置为true,autoComplete只会允许匹配的结果出现在输入框,所有当用户输入的是非法字符时将会得不到下拉框,Default:false
7) matchContains (Boolean)
决定比较时是否要在字符串内部查看匹配,如ba是否与foo bar中的ba匹配.使用缓存时比较重要.不要和autofill混用.Default: false
8) selectFirst (Boolean)
如果设置成true,在用户键入tab或return键时autoComplete下拉列表的第一个值将被自动选择,尽管它没被手工选中(用键盘或鼠标).当然如果用户选中某个项目,那么就用用户选中的值. Default: true
9) cacheLength (Number)
缓存的长度.即对从数据库中取到的结果集要缓存多少条记录.设成1为不缓存.Default: 10
10) matchSubset (Boolean)
autoComplete可不可以使用对服务器查询的缓存,如果缓存对foo的查询结果,那么如果用户输入foo就不需要再进行检索了,直接使用缓存.通常是打开这个选项以减轻服务器的负担以提高性能.只会在缓存长度大于1时有效.Default: true
11) matchCase (Boolean)
比较是否开启大小写敏感开关.使用缓存时比较重要.如果你理解上一个选项,这个也就不难理解,就好比foot要不要到FOO的缓存中去找.Default: false
12) multiple (Boolean)
是否允许输入多个值即多次使用autoComplete以输入多个值. Default:false
13) multipleSeparator (String)
如果是多选时,用来分开各个选择的字符. Default:","
14) scroll (Boolean)
当结果集大于默认高度时是否使用卷轴显示 Default: true
15) scrollHeight (Number)
自动完成提示的卷轴高度用像素大小表示 Default: 180
16) formatItem (Function)
为每个要显示的项目使用高级标签.即对结果中的每一行都会调用这个函数,返回值将用LI元素包含显示在下拉列表中.Autocompleter会提供三个参数(row, i, max): 返回的结果数组, 当前处理的行数(即第几个项目,是从1开始的自然数), 当前结果数组元素的个数即项目的个数.Default: none, 表示不指定自定义的处理函数,这样下拉列表中的每一行只包含一个值.
17) formatResult (Function)
和formatItem类似,但可以将将要输入到input文本框内的值进行格式化.同样有三个参数,和formatItem一样.Default: none,表示要么是只有数据,要么是使用formatItem提供的值.
18) formatMatch (Function)
对每一行数据使用此函数格式化需要查询的数据格式. 返回值是给内部搜索算法使用的. 参数值row
19) extraParams (Object)
为后台(一般是服务端的脚本)提供更多的参数.和通常的作法一样是使用一个键值对对象.如果传过去的值是{ bar:4 },将会被autocompleter解析成my_autocomplete_backend.php?q=foo&bar=4 (假设当前用户输入了foo). Default: {}
20) result (handler) Returns:jQuery
此事件会在用户选中某一项后触发,参数为:
event: 事件对象. event.type为result.
data: 选中的数据行.
formatted:formatResult函数返回的值
例如:
[code="js"]
$("#singleBirdRemote").result(function(event, data, formatted){
//如选择后给其他控件赋值,触发别的事件等等
});
[/code]
Feb28

JQuery一个变态的问题小记

Author: leeon  Click: 7528   Comments: 0 Category: javascript  Tag: jquery,select,value

今天遇到一个奇怪的问题,用jquery提取表单值后ajax到后台存储,后台怎么存储都是1,用ie,chrome,ff测试,用断点测试的方式跟踪变量,发现在chrome,ff中都能将正确的值传到后台,唯独在IE下传到后台$_POST获取后是1。这里描述下问题的所在:

JQuery在提取select中的value值时一般写法都是:

[code="js"]
$("#rpm_group").val();
[/code]

这里alert出来是可以正常获取value的,但是今天在IE下却出了问题,后来用fiddler抓HTTP包头,发现传过去的的name是这样的:

但是用chrome抓包头是:

很明显IE画蛇添足给加了一个“[]”让PHP在解析的时候认为是数组。于是将jquery获取select值的方式修改成:

[code="js"]
$("#rpm_group").find("option:selected").val();
[/code]

这样IE在提交POST表单的时候就没有加上中括号了。这个问题很纠结,记得以前在IE下用第一种方式是没有出过问题的呀。

Feb28

【转载】System Dump与Core Dump的区别

Author: leeon  Click: 12216   Comments: 0 Category: 操作系统  Tag: systemdump,coredump
许多没有做过UNIX系统级软件开发的人士,可能只听说过Dump,而并不知道系统Dump和Core Dump的区别,甚至混为一谈。

系统Dump(System Dump)

所有开放式操作系统,都存在系统DUMP问题。

产生原因:
由于系统关键/核心进程,产生严重的无法恢复的错误,为了避免系统相关资源受到更大损害,操作系统都会强行停止运行,并将当前内存中的各种结构、核心进程出错位置及其代码状态,保存下来,以便以后分析。最常见的原因是指令走飞,或者缓冲区溢出,或者内存访问越界。走飞就是说代码流有问题,导致执行到某一步指令混乱,跳转到一些不属于它的指令位置去执行一些莫名其妙的东西(没人知道那些地方本来是代码还是数据,而且是不是正确的代码开始位置),或者调用到不属于此进程的内存空间。写过C程序及汇编程序的人士,对这些现象应当是很清楚的。

系统DUMP生成过程的特点:
在生成DUMP过程中,为了避免过多的操作结构,导致问题所在位置正好也在生成DUMP过程所涉及的资源中,造成DUMP不能正常生成,操作系统都用尽量简单的代码来完成,所以避开了一切复杂的管理结构,如文件系统、LVM等等,所以这就是为什么几乎所有开放系统,都要求DUMP设备空间是物理连续的——不用定位一个个数据块,从DUMP设备开头一直写直到完成,这个过程可以只用BIOS级别的操作就可以。这也是为什么在企业级UNIX普遍使用LVM的现状下,DUMP设备只可能是裸设备而不可能是文件系统文件,而且[b]只[/b]用作DUMP的设备,做 LVM镜像是无用的——系统此时根本没有LVM操作,它不会管什么镜像不镜像,就用第一份连续写下去。

所以UNIX系统也不例外,它会将DUMP写到一个裸设或磁带设备。在重启的时候,如果设置的DUMP转存目录(文件系统中的目录)有足够空间,它将会转存成一个文件系统文件,缺省情况下,[b]对于AIX来说是/var/adm/ras/下的vmcore*这样的文件,对于HPUX来说是 /var/adm/crash下的目录及文件。[/b]
当然,也可以选择将其转存到磁带设备。

会造成系统DUMP的原因主要是:
系统补丁级别不一致或缺少、系统内核扩展有BUG(例如Oracle就会安装系统内核扩展)、驱动程序有 BUG(因为设备驱动程序一般是工作在内核级别的),等等。所以一旦经常发生类似的系统DUMP,可以考虑将系统补丁包打到最新并一致化、升级微码、升级设备驱动程序(包括FC多路冗余软件)、升级安装了内核扩展的软件的补丁包等等。

进程Core Dump

进程Core Dump产生的技术原因,基本等同于系统DUMP,就是说从程序原理上来说是基本一致的。

但进程是运行在低一级的优先级上(此优先级不同于系统中对进程定义的优先级,而是指CPU代码指令的优先级),被操作系统所控制,所以操作系统可以在一个进程出问题时,不影响其他进程的情况下,中止此进程的运行,并将相关环境保存下来,这就是core dump文件,可供分析。

如果进程是用高级语言编写并编译的,且用户有源程序,那么可以通过在编译时带上诊断用符号表(所有高级语言编译程序都有这种功能),通过系统提供的分析工具,加上core文件,能够分析到哪一个源程序语句造成的问题,进而比较容易地修正问题,当然,要做到这样,除非一开始就带上了符号表进行编译,否则只能重新编译程序,并重新运行程序,重现错误,才能显示出源程序出错位置。

如果用户没有源程序,那么只能分析到汇编指令的级别,难于查找问题所在并作出修正,所以这种情况下就不必多费心了,找到出问题的地方也没有办法。

进程Core Dump的时候,操作系统会将进程异常终止掉并释放其占用的资源,不可能对系统本身的运行造成危害。这是与系统DUMP根本区别的一点,系统DUMP产生时,一定伴随着系统崩溃和停机,进程Core Dump时,只会造成相应的进程被终止,系统本身不可能崩溃。当然如果此进程与其他进程有关联,其他进程也会受到影响,至于后果是什么,就看相关进程对这种异常情况(与自己相关的进程突然终止)的处理机制是什么了,没有一概的定论。

如何生成coredump文件?

登陆LINUX服务器,任意位置键入 
       echo "ulimit -c 1024" >> /etc/profile
退出LINUX重新登陆LINUX
键入 ulimit -c 
如果显示 1024 那么说明coredump已经被开启。

//---------------------------------------------------------------
1. core文件的简单介绍
//---------------------------------------------------------------

在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。


//---------------------------------------------------------------
2. 开启或关闭core文件的生成
//---------------------------------------------------------------

用以下命令来阻止系统生成core文件:
ulimit -c 0
下面的命令可以检查生成core文件的选项是否打开:
ulimit -a
该命令将显示所有的用户定制,其中选项-a代表“all”。

也可以修改系统文件来调整core选项
在/etc/profile通常会有这样一句话来禁止产生core文件,通常这种设置是合理的:
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
但是在开发过程中有时为了调试问题,还是需要在特定的用户环境下打开core文件产生的设置
在用户的~/.bash_profile里加上ulimit -c unlimited来让特定的用户可以产生core文件
如果ulimit -c 0 则也是禁止产生core文件,而ulimit -c 1024则限制产生的core文件的大小不能超过1024kb


//---------------------------------------------------------------
3. 设置Core Dump的核心转储文件目录和命名规则
//---------------------------------------------------------------

/proc/sys/kernel/core_uses_pid可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0
proc/sys/kernel/core_pattern可以设置格式化的core文件保存位置或文件名,比如原来文件内容是core-%e
可以这样修改:
echo "/corefile/core-%e-%p-%t" > core_pattern
将会控制所产生的core文件会存放到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
以下是参数列表:
    %p - insert pid into filename 添加pid
    %u - insert current uid into filename 添加当前uid
    %g - insert current gid into filename 添加当前gid
    %s - insert signal that caused the coredump into the filename 添加导致产生core的信号
    %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
    %h - insert hostname where the coredump happened into filename 添加主机名
    %e - insert coredumping executable name into filename 添加命令名


//---------------------------------------------------------------
4. 使用core文件
//---------------------------------------------------------------

在core文件所在目录下键入:
gdb -c core
它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等
如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:
gdb -c core MyServer
以下怎么办就该去学习gdb的使用了


//---------------------------------------------------------------
5. 一个小方法来测试产生core文件
//---------------------------------------------------------------

直接输入指令:
kill -s SIGSEGV $$

Feb19

【原创】使用gitosis和tortoisegit打造自己的git服务

Author: leeon  Click: 33201   Comments: 5 Category: 软件工程  Tag: gitosis,tortoisegit,git

最近在折腾git服务器和windows git客户端的部署,网上的教程很多都不完整,没有一个很系统的教程描述如何使用tortoisegit来连接gitosis的教程,并使其正常工作,这里将自己的总结分享一下。

 

首先是要安装好python,和git这里就不用多说了。另外需要注意的是我前面的一篇博文关于python bin路径的问题。

安装gitosis的方法网上有很多教程,这里讲解的都是正确的,我就不多言了。

首先要在本地创建一个ssh密钥,这里有一个细节必须注意,不能用tortoisegit自带的Putty Key Generator来生成公私密钥,需要执行msysgit里面的msys.bat并在命令行中输入

[code="bash"]
ssh-keygen.exe -t rsa
[/code]

然后一路回车,这样就会在

C:\Users\leo\.ssh (“leo”这里根据每个人电脑里面的用户名不同而不同)

下生成一个公钥一个私钥,

再在mysysgit的命令行下输入命令将id_rsa.pub文件传给远程的linux git服务器端。

[code="bash"]
scp id_rsa.pub git@www.leeon.me:~
[/code]

server端接收后就可以用gitosis-init命令来初始化gitosis服务了

[code="bash"]
gitosis-init < id_rsa.pub
[/code]

这里执行的init操作是在/home/git下执行的,那么会在/home/git下生成几个文件和文件夹:

这些是gitosis管理服务的文件,我们要修改gitosis的配置的时候不能直接修改这里面的文件需要git clone一份到本地修改后在git commit回去。

做法和网上的教程是一致的,这里会git clone一份gitosis的配置文件包含一个文件和一个文件夹。

如果是直接在linux服务器上git clone,那么要注意路径问题:

git clone git@localhost:/home/git/repositories/gitosis-admin.git

也就是说不能写成网上说的:

git clone git@localhost:gitosis-admin.git

这样写会提示:

[code="bash"]
fatal: 'gitosis-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
[/code]

如果是在本地windows端git clone gitosis的配置文件,那么在需要一点注意

在安装玩msysgit后,安装tortoisegit的时候会提示有选择项:

如果选择第一个,在安装后配置git的时候就需要注意一些东西,如果选择第二项则git的连接都是通过ssh完成,后续配置简单一些。

选择plink模式在git clone的时候需要加载ppk

putty key的生成方式:

启动putty key generator

点击load按钮将刚才最先生成的ssh中的密钥id_rsa文件导入,然后弹出对话框提示导入成功,接着点击save private key来保存ppk文件,最后在git clone的对话框中加载ppk文件即可,连接的时候会提示输入git用户的密码,输入一下即可git clone gitosis的配置文件。

如果选择ssh模式的tortoisegit,那么就无需配置ppk,直接git clone。

这里在对话框中的git url填写的时候需要注意,是直接写gitosis-admin.git,而不是加有/home/git的绝对路径了。

关于gitosis的配置问题可以参考这篇博文:http://blog.prosight.me/index.php/2009/07/271

 

分类

标签

归档

最新评论

Abyss在00:04:28评论了
Linux中ramdisk,tmpfs,ramfs的介绍与性能测试
shallwe99在10:21:17评论了
【原创】如何在微信小程序开发中正确的使用vant ui组件
默一在09:04:53评论了
Berkeley DB 由浅入深【转自架构师杨建】
Memory在14:09:22评论了
【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
leo在17:57:04评论了
shell中使用while循环ssh的注意事项

我看过的书

链接

其他

访问本站种子 本站平均热度:9360 c° 本站链接数:1 个 本站标签数:464 个 本站被评论次数:94 次