Thursday, November 13, 2008

javascript 操作 iframe 的 src

$('mainFrame').contentWindow.document.location= 'f_account.jsp'; //IE FF 都正常

$('mainFrame').src = 'f_account.jsp'; //IE正常,FF2下不能使用

不得不知道的小技巧。

Thursday, October 30, 2008

Python字符串操作

'''1.复制字符串'''
#strcpy(sStr1,sStr2)
sStr1 = 'strcpy'
sStr2 = sStr1
sStr1 = 'strcpy2'
print sStr2

'''2.连接字符串'''
#strcat(sStr1,sStr2)
sStr1 = 'strcat'
sStr2 = 'append'
sStr1 += sStr2
print sStr1

'''3.查找字符'''
#strchr(sStr1,sStr2)
sStr1 = 'strchr'
sStr2 = 'r'
nPos = sStr1.index(sStr2)
print nPos

'''4.比较字符串'''
#strcmp(sStr1,sStr2)
sStr1 = 'strchr'
sStr2 = 'strch'
print cmp(sStr1,sStr2)

'''5.扫描字符串是否包含指定的字符'''
#strspn(sStr1,sStr2)
sStr1 = '12345678'
sStr2 = '456'
#sStr1 and chars both in sStr1 and sStr2
print len(sStr1 and sStr2)

'''6.字符串长度'''
#strlen(sStr1)
sStr1 = 'strlen'
print len(sStr1)

'''7.将字符串中的小写字符转换为大写字符'''
#strlwr(sStr1)
sStr1 = 'JCstrlwr'
sStr1 = sStr1.upper()
print sStr1

'''8.追加指定长度的字符串'''
#strncat(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = 'abcdef'
n = 3
sStr1 += sStr2[0:n]
print sStr1

'''9.字符串指定长度比较'''
#strncmp(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = '123bc'
n = 3
print cmp(sStr1[0:n],sStr2[0:n])

'''10.复制指定长度的字符'''
#strncpy(sStr1,sStr2,n)
sStr1 = ''
sStr2 = '12345'
n = 3
sStr1 = sStr2[0:n]
print sStr1

'''11.字符串比较,不区分大小写'''
#stricmp(sStr1,sStr2)
sStr1 = 'abcefg'
sStr2 = 'ABCEFG'
print cmp(sStr1.upper(),sStr2.upper())

'''12.将字符串前n个字符替换为指定的字符'''
#strnset(sStr1,ch,n)
sStr1 = '12345'
ch = 'r'
n = 3
sStr1 = n * ch + sStr1[3:]
print sStr1

'''13.扫描字符串'''
#strpbrk(sStr1,sStr2)
sStr1 = 'cekjgdklab'
sStr2 = 'gka'
nPos = -1
for c in sStr1:
if c in sStr2:
nPos = sStr1.index(c)
break
print nPos

'''14.翻转字符串'''
#strrev(sStr1)
sStr1 = 'abcdefg'
sStr1 = sStr1[::-1]
print sStr1

'''15.查找字符串'''
#strstr(sStr1,sStr2)
sStr1 = 'abcdefg'
sStr2 = 'cde'
print sStr1.find(sStr2)

'''16.分割字符串'''
#strtok(sStr1,sStr2)
sStr1 = 'ab,cde,fgh,ijk'
sStr2 = ','
sStr1 = sStr1[sStr1.find(sStr2) + 1:]
print sStr1

实现URL编码解码的python程序

import urllib
import sys

string = sys.argv[1]
string = unicode(string,"gbk")
utf8_string = string.encode("utf-8")
gbk_string=string.encode("gbk")
gbk=urllib.quote(gbk_string)
utf8=urllib.quote(utf8_string)
print gbk
print utf8

解码使用unqute和decode函数

Tuesday, October 28, 2008

Python的String实用方法

x = ‘hello’

x.upper() 会将所有的小写字母转换成大写。

x.capitalize() 会将首字母转换成大写。

Thursday, October 16, 2008

IE和FF很重要的差异

在HTTP并发请求上,IE和FF有很大的区别,IE有并发限制,FF却没有,这时就要更好组织HTTP请求顺序

在数组上,length 长度也存在区别
var list = [a,b,c,d,]
在IE上 list.length = 5
在FF上list.length = 4
这样来看FF更聪明些,确实只有4个值,而IE把最后个逗号也算上了

在使用时这样解决,[a,b,c,d,null],length-1就是正确长度了。

datastore的一个索引bug?

自动生成的index.yaml里面多出来一个
# Unused in query history -- copied from input.
- kind: Comment
properties:
- name: True
direction: desc
奇怪了,model里面我没有name为True的property。

问题出来了,model里面有个name为yes的property,在dev环境下yes的indexes自动生成并且是生效的,查询成功,update到GAE上并不会生效,查询失败的,提示需要这个索引,奇怪了?

找了很久的原因,最后把问题给解决了。

在一个model的里面不能取叫yes的property,否则datastore会认为是True,就会产生一个为True的indexs,恰恰这个
indexs从未被使用过,并且本应name叫yes的的indexs反而不能生效,就导致问题产生,也许是GAE的一个bug吧,我现在的问题就是这样解决的。

Monday, October 13, 2008

用javascript来控制页面跳到指定锚点

用javascript来控制页面跳到指定锚点
window.location.hash = "here"; //here为锚点的名字
纯ajax开发时能用到。

Wednesday, October 08, 2008

Firefox和ie下都能得到的鼠标坐标

function getMousePt(evt){
alert( evt.clientX +" , "+ evt.clientY );
}

getMousePt(event);

Monday, October 06, 2008

设置response头,输出xml,并设置编码

self.response.headers['Content-Type'] = 'text/xml;charset=utf-8'
self.response.out.write('<res>RPC</res>')

Sunday, October 05, 2008

302临时跳转

302临时跳转,也就是重定向:

self.redirect('http://www.google.com')

datastore根据key的id查询

查询:

    mid = int(self.request.get('mid'))
    marker = Marker.get_by_id(mid)
    self.response.out.write('%s' % marker.click)

查询并更新,Datastore真的很方便:

    mid = int(self.request.get('mid'))
    marker = Marker.get_by_id(mid)
    click = marker.click
    click += 1
    marker.click = click
    marker.put()
    self.response.out.write('%s' % click)

string转int

marker.uid = int(self.request.get('uid'))

HTML输出转换

      self.response.out.write('content: ' + cgi.escape(marker.content))

时间操作

时区转换,转为东8区,加上8小时

from datetime import timedelta

      self.response.out.write('
datetime: '
+ (marker.date + timedelta(hours=+8)).strftime("%Y-%m-%d %H:%M:%S %Z%z") )