form action属性默认值与method属性相关的一个问题

form大家都很熟悉,都用老的了。这次我就碰到这么个问题,我想使用form来提交查询参数,但是要达到刷新页面这些参数还在的效果,那么最好是使用get方法来提交了。但是我不希望设置action,这样就不用关心原来的url了,而且不会冲掉之前的url参数。

但是get方法和post方法不一样:

get方法下,会将input里面的值添加到url后面,原来的参数会冲掉

post方法下,会将input里面的值作为http内容提交,因此不会影响原来的url也不会冲掉参数。

就是这个区别,会对你的编程思路造成影响。如果使用get,那么你还需要将之前的想办法参数手动保留下来,例如将参数写入input。

如果用post,你可能需要注意重置一些参数。

 

明天国庆,节日快乐!

Continue reading form action属性默认值与method属性相关的一个问题

Jquery tmplate 巧用

Jquery有个template插件,提供将html标签转为模板的功能,但是这个模板一定又得是个完整的html元素。它是设计为最终使用appendTo等方法添加到DOM中去得。

那么我要是想使用它作为纯粹的字符串模板,那就没法了?找了半天,就是不提供这个功能。

这里介绍怎样利用它来实现字符串模板:

将字符串模板放在textarea元素中,使用text()方法来获得展示好后的字符串。

function tpml(tpl, context) {
		// we can not use the same textarea, must remove it and use text() on it
		// one time
		ids.tpl_text.innerHTML = '<textarea id="txt_tmpl">' + +'</textarea>';
		return $('#txt_tmpl').text(ajax_tpls[tpl]).tmpl(context).text();
	}

注意,每次必须重新创建一个textarea来包含文本,因为我发现第二次对textarea使用text()不起作用。

 

但是我有点烦的就是这个基本功能怎么它就没提供呢。

Continue reading Jquery tmplate 巧用

wordpress i18n多语言支持实现

文档http://codex.wordpress.org/I18n_for_WordPress_Developers

WP使用gettext(GNU来源项目)来实现i18n,带式实际使用是WP的函数__()和_e(), __是返回对应字符串,_e则是加载对应字符串并echo到返回流中。

首先WP的多语言是个全局配置wp-config.php中的配置项WPLANG指定是哪个语言。

然后在程序中加载mo

load_theme_textdomain (theme对应函数)

或是plugin中使用load_plugin_textdomain( $domain, $path_from_abspath, $path_from_plugins_folder )

来加载文件夹中对应语言的mo文件。

然后在你的php代码中使用__或_e来使用这些多语言。

wordpress多语言要使用xgettext生成pot文件然后转为po文件再转为mo文件,这位台湾同胞写的比较详细:

http://blog.longwin.com.tw/2010/08/windows-gettext-2010/

 

Windows 的 GetText 工具安裝
GetText 所需相關 Library 安裝
  • 上述套件下載後, 於 Windows XP 會缺下述兩個 Library:
    • libexpat.dll
    • libiconv2.dll
  • 可自行去尋找, 或者 直接下載 我抓好的版本 : gettext-dll.tgz
  • 將這兩個檔案放到 C:\gettext\bin\ 即可.
GetText 工具使用
  • C:\gettext\bin\xgettext.exe --from-code=UTF-8 -d hello hello.php
  • C:\gettext\bin\msgmerge.exe -o hello.po locale/zh_TW/LC_MESSAGES/hello.po hello.po
  • C:\gettext\bin\msgfmt.exe -o locale/zh_TW/LC_MESSAGES/hello.mo hello.po
  • 但是我试过了,不是很好用,其实在windows下最方便的是使用poedit了。
  • http://www.poedit.net/download.php 
  • 它是一个开元免费的工具,可以批量从php中导入生成po并且编辑,生成mo。

    这里我来讲一下怎么使用:

    新建File/New Catalog,出现对话框,红色框式必填的且要保证正确,

    Snap1

    Snap2

    source path就是php代码文件夹

    Snap3

    由于使用php所以需要添加关键字_e和__

    这样点击ok一路ok下去,就发现所有需要翻译的都加进来了。还可以编辑,它自动生成po,mo文件。

    很方便是吧。

  • Continue reading wordpress i18n多语言支持实现

  • mysql_函数引出的问题

    这次碰到个问题,写的php代码访问时总是超时,凭经验判断是数据库问题。

    但是逐步调试下去,发现是mysql_real_escape_string导致超时。

    后来才发现,php文档里写了,这样的函数是需要数据库连接的,我这个调用是在数据库连接建立之前,所以php一直尝试获取最近的连接,但是又没有,结果就超时了。

    同样的问题存在mysql_开头的函数中。

    另外的问题是mysql_insert_id没有返回值,发现是之前的insert操作执行后马上关闭了连接,导致再打开一个新连接再调用mysql_insert_id就会没有返回值。

    所以mysql_insert_id应该与insert 语句使用同一个连接。

    Continue reading mysql_函数引出的问题

    Perl web开发 windows下配置

    这几天忙的手都打搅了,稀里糊涂的某个项目要用Perl,尝试了一下,windows下配置apache和Perl执行CGI还是很简单的。

    首先要有Perl环境,每个perl cgi文件的顶部都有个路径

    #!d:/perl/bin/perl.exe

    这里就是说明使用哪里的perl引擎来执行此脚本,所以刚开始的同学很能copy个helloworld放在那里,结果运行报错,像apache日志里:The system cannot find the path specified.  : couldn't create child process

    这种情况下就要检查代码第一行与实际安装的Perl环境是否一致了。

    windows下使用ActivePerl是最好的了。安装我没碰到什么问题,最好让其建立环境变量。

     

    然后是Apache的配置:

    也很简单,只要两点:

    1 : AddHandler cgi-script .cgi .pl 这个是需要的

    2:Options execCGI 这个也是需要的

    将这两个设置配置到文件夹下,则可以和php handler同时使用。

    另外较“普遍”的方式是使用

    ScriptAlias /cgi-bin/ "D:/cgi-bin/"  需要反注释

    AddHandler cgi-script .cgi .pl 需要反注释,在<IfModule mime_module>中

    Options execCGI 在配置的文件夹中。

     

    其中/cgi-bin/可以改为你想要的名字,这样做会将所有此apache服务的站点中以/cgi-bin/开头的请求转为D:/cgi-bin/中的cgi文件来执行,比如

    apache配置了localhost:8001,localhost:8002两个站点,那么请求

    localhost:8001/cgi-bin/test.pl -->执行D:/cgi-bin/test.pl

    localhost:8002/cgi-bin/test.php -->执行D:/cgi-bin/test.php

    localhost:8002/cgi-bin/test.html -->执行D:/cgi-bin/test.html

    不管扩展名是什么,都认为是cgi脚本。

     

    参见:

    http://programmingnote.com/blog/?p=28 中文
    http://www.thesitewizard.com/archive/addcgitoapache.shtml 这里最详细

    Continue reading Perl web开发 windows下配置

    linux下dns server安装配置

    使用bind作为dns server.

    首先检查服务器是否已经安装bind: http://linux.vbird.org/linux_server/0350dns.php#what_software

    rpm -qa | grep '^bind'

    没有的话安装:

    http://ftp.isc.org/isc/bind9/cur/9.7/doc/arm/Bv9ARM.html

    cd /opt/zk

    wget http://ftp.isc.org/isc/bind9/cur/9.7/bind-9.7.6-P2.tar.gz

    tar zxvf bind-9.7.6-P2.tar.gz

    cd bind-9.7.6-P2

    ./configure --prefix=/usr/local/named --enable-threads && make && make install

     

     

     

     

     

     

     

     

    参见:

    http://linux.vbird.org/linux_server/0350dns.php#what_software

    http://www.cdnunion.com/htmldata/11/7/2006_04/DNSPeiZhi-BINDAnZhuangPeiZhiQuanGuoCheng107_1.html

    Continue reading linux下dns server安装配置

    web缓存-squid

    安装:

    cd /home/root
    wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.20.tar.gz
    tar zxvf squid-3.1.20.tar.gz
    cd squid-3.1.20
    ./configure --prefix=/usr/local/squid
    make && make install

    这个要说明一下,尝鲜不一定是好事,因为我此时先下了最新版本3.2.1安装,结果就报错,然后才转为安装3.1.20,一点问题都没有。这是经验之谈,最后那个版本号越大的越保险。

     

    配置文档:

    http://www.squid-cache.org/Doc/config 

    结合实际应用场景的原理解释:

    http://www.cnblogs.com/PeterBi/archive/2011/03/25/1995228.html 

    反向代理,负载均衡集群配置:

    http://www.ibm.com/developerworks/cn/linux/l-cn-squid/

    上面的链接解决了我的疑惑,cache_peer 这个配置既可以配置兄弟代理服务器,也可以配置原始服务器。

    看这个配置会明白很多:

    cache_effective_user squid 
     cache_effective_group squid 
     ######### 设定 squid 的主机名 , 如无此项 squid 将无法启动
     visible_hostname squid1.nlc.gov.cn 
     ############# 配置 squid 为加速模式 ################# 
     http_port 80 accel vhost vport 
     icp_port 3130 
     ##### 配置 squid2、squid3 为其邻居,当 squid1 在其缓存中没有找到请求的资源时,
              通过 ICP 查询去其邻居中取得缓存
     cache_peer squid2.ibm.com.cn sibling 80 3130 
     cache_peer squid3.ibm.com.cn sibling 80 3130 
     ##### squid1 的三个父节点,originserver 参数指明是源服务器,
     round-robin  参数指明 squid 通过轮询方式将请求分发到其中一台父节点;
     squid 同时会对这些父节点的健康状态进行检查,如果父节点 down 了,
    那么 squid 会从剩余的 origin 服务器中抓取数据
     cache_peer 210.82.118.195 parent 8080 0 no-query originserver round-robin \ 
                                                  name=webServer1 
     cache_peer 192.168.76.226 parent 8080 0 no-query originserver round-robin \ 
                                                  name=webServer2 
     cache_peer 192.168.76.227 parent 8080 0 no-query originserver round-robin \ 
                                                name=webServer3 
     #### 将 wenjin.cache.ibm.com.cn 域的请求通过 RR 轮询方式转发到三个父节点中的一个
     cache_peer_domain webServer1 webServer2 webServer3 wenjin.cache.ibm.com.cn 
     ##### 下面是一些访问控制、日志和缓存目录的设置
     acl localnet src 192.168.76.223 192.168.76.224 192.168.76.225 
     acl all src 0.0.0.0/0.0.0.0 
     http_access allow all 
     icp_access allow localnet 
     cache_log /usr/local/squid/var/logs/cache.log 
     access_log /usr/local/squid/var/logs/access.log squid 
     cache_dir ufs /usr/local/squid/var/cache/ 1000 16 256 
     ####### 对 squid 的一些优化 ############### 
     maximum_object_size 10240 KB  ### 能缓存的最大对象为 10M 
     maximum_object_size_in_memory 512 KB ### 内存中缓存的最大对象 512K 
     cache_mem 256 MB  ###squid 用于缓存的内存量

     

    Squid安装设试命令:

    1,初始化你在 squid.conf 里配置的 cache 目录

    #/usr/local/squid/sbin/squid -z //初始化缓存空间

    如果有错误提示,请检查你的 cache目录的权限。

    2,对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。

    #/usr/local/squid/sbin/squid -k parse

    如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。

    3,在前台启动squid,并输出启动过程。

    #/usr/local/squid/sbin/squid -N -d1

    如果有到 ready to server reques,恭喜,启动成功。

    然后 ctrl + c,停止squid,并以后台运行的方式启动它。

    其实这种方式打印的就是cache.log的内容

    这前三步是验证你是否能运行squid的重要步骤


    4,启动squid在后台运行。

    #/usr/local/squid/sbin/squid -s

    这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。

    5,停止 squid

    #/usr/local/squid/sbin/squid -k shutdown

    这个不用解释吧。

    6,重引导修改过的 squid.conf

    #/usr/local/squid/sbin/squid -k reconfigure //载入新的配置文件

    这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让squid重新按照你的 squid.conf 来运行。

    7./usr/local/squid/sbin/squid -k rotate 轮循日志

    8,把squid添加到系统启动项

    编辑 /etc/rc.d/rc.local

    添加如下行: /usr/local/squid/sbin/squid -s

    利用Runc脚本........

     

     

    关于配置问题:

    #设置cache 内存大小为1G

    cache_mem 1000 MB

    #设置cache_dir 地址,第一个数字参数不能小于cache_mem设置的大小,否则会出警告“WARNING cache_mem is larger than total disk cache space!”,所以设为1000。16,256表示第一级和第二级目录。设置完了需用 squid -z来使cache目录生效。

    cache_dir ufs /var/spool/squid 1000 16 256

     

    注意

    acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

    /16不是指0-16,16是指netmask

     

    测试:

    例如我有个应用在局域网192.168.0.2:10080/appweb/

    我这样配置

    cache_peer 192.168.0.2 parent 10080 no-query originserver

    那么我将我的浏览器启用代理,将其指向我配置的squid服务器和对应端口。

    那么我访问www.google.com/appweb/

    嘿嘿,访问的其实是192.168.0.2:10080/appweb/

    因为这里配置缓存服务器是192.168.0.2:10080

    然而要注意squid默认只是缓存get请求,如果www.google.com/appweb/有个post的ajax请求www.google.com/appweb/ajax的话,squid还是会找实际的www.google.com/appweb/ajax的。

     

    查看日志:

    tail -f /usr/local/squid/var/logs/access.log

    日志意义:

    http://wiki.squid-cache.org/SquidFaq/SquidLogs#access.log

    http://blog.csdn.net/starxu85/article/details/3256469

    发现日志里一个HIT也没有,晕!倒是有些TCP_REFRESH_UNMODIFIED/304

    从浏览器中看,似乎TCP_REFRESH_UNMODIFIED/304对应的资源是命中的。X-Cache HIT from xxx.xxx.COM

    搞不懂。

    squid命中又有很多因素,它和http 请求状态(头部信息)有很大关系,另外带参数的get请求也是默认不缓存的。

     

    另外测试squid,也可以配置一个dns服务器,然后使用浏览器来访问测试。

    参见DNS  server配置 http://kazge.com/archives/896.html

     

     

    参见:

    http://blog.51yip.com/server/638.html squid cache 服务器端的安装,配置

    http://blog.51yip.com/apachenginx/898.html apache利用mod_cache缓存图片等

    http://blog.51yip.com/cache/618.html varnish cache 反向代理服务器和http加速器的安装和配置

    http://www.cnblogs.com/sxwgf/archive/2012/03/10/2389470.html 浅谈Squid在图片存储架构中的应用

    http://os.51cto.com/art/201009/225813.htm 巧用Squid的ACL和访问列表实现高效访问控制

    Continue reading web缓存-squid

    CLaunch和vstart

    办公我目前还是使用的xp系统,桌面上一堆快捷方式,听说CLaunch比较好,就用了一下,感觉如下:

    界面太简单,刚开始我都不知道怎么用,不知道怎么设置快捷键,设置界面拉长,结果有些部分看不见(在win7下没有这个问题)。

    没有搜索功能!这个怎么会没有呢,要是有该多。

    批量导入快捷方式不方便,我的做法是把桌面的快捷方式拖到Claunch中去,结果很多快捷方式导入无效(点击没作用),看来批量导入的效果不行,最后我还是一个个导入的。-----这个是由于这种方式的导入是指向拖进来的快捷方式,例如我在桌面上建个文件夹的快捷方式,将其拖入Claunch,这样导入的快捷方式是指向桌面这个快捷方式的快捷方式(有点拗口),如果你将桌面的快捷方式删除了,那么claunch中的快捷方式由于找不到这个文件所以就不起作用了。

    有些快捷方式导入不了。例如skype,outlook这样形式的快捷方式,导入后不起作用。

    我来讲一下怎样设置快捷键,这个网上讲得少:

    以设置显示/隐藏 CLaunch主界面为例:

    右键Claunch托盘图标,点击options,出现设置界面:

    Snap1

    如上图所示,这里是设置显示主界面快捷键,红框中是要设置的快捷键(在键盘上按对应的键即可)。

    Snap2

    如上图所示,这里是设置隐藏主界面快捷键,红框中是要设置的快捷键。

    我也不太清楚Assigned key和Hot key的区别,反正大家看图,如果不照着做就不行。

    这样就设置好了。

     

    这里也顺便说说Vstart(音速启动):

    我的系统安装后,它默认的快捷方式中文的都是乱码,我将其全部删除,然后再导入,又不是乱码了。

    它主界面上有个搜索框,但是是网页搜索而不是我最想要的快捷方式搜索,它的快捷方式搜索要右键点击出搜索菜单项再来搜索,这样的设计真是厉害哈!

    如果是win7用户这个东西基本就是鸡肋了。

    Continue reading CLaunch和vstart

    Pagination


    Total views.

    © 2013 - 2020. All rights reserved.

    Powered by Hydejack v6.6.1