Hot For Coding
郁闷的Smarty变量调节器

Smarty的变量调节器是个不错的东西,一直以来都用着顺手,可昨天使用变量调节器时发现不管用。

{$name | upper}

仔细看了手册,看了Smarty加载路径,上上下下检查了将近一个小时也没有发现问题所在。即将要陷入无奈的困境时,把代码删除了重新写成

{$name|upper}

结果好了。原来是变量后要直接跟着竖线,函数名,中间不能有空格,否则变量调节器的功能将失效。闹了半天,原来就是一个空格引起的,太不值当了!!!

看来以后调Smarty程序,得注意空格问题~,说不定其它问题也可能是空格引起的,而空格引起的问题最不容易发现。

...

READ ALL

PHP连接MySQL主机127.0.0.1与localhost的区别

发现问题

昨天在帮同事编译安装Linux环境时,遇到一个问题:Web Server是Apache,数据库是MySQL。

于是写了一个测试连接数据库的PHP页面:

$mysql = mysql_connect('localhost','root','');

打开http://localhost/test.php测试

提示:

Can’t connect to local MySQL server through socket...

检查环境正常

以为是数据库没有启动,于是查看一下进程,MySQL在进程里,重启了一下MySQL.

...

READ ALL

IE浏览器A标签下包含img诡异BUG

看来我真的是跟IE啃上了,这会不只是IE6,就连IE7、IE8都发现有问题。先来阐述下事情缘由:项目里有一个页面其中一排图片是被A标签包含着的,正常情况下点击图片会链接到目标地址,可测试发现在IE下无法正常链接到目标地址。

于是我自己写了一个Demo:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>IE下诡异BUG</title>
    <style type="text/css">
      span {display:block;width:100px;height:100px;}
    </style>
  </head>
  <body>
    <a href="https://www.qttc.net" target="_blank">
      <span><img src="5.jpg" width="100" /></span>
    </a>  
  </body>
</html>

...

READ ALL

IE6除a标签外其它标签伪类解决!

做前端样式都知道IE6伪类的问题,虽然这个问题到现在也不具有时效性,并且使用IE6的人也渐渐减少,但解决IE6伪类的方法还是值得借鉴。

IE6似乎只对A标签伪类有效,但如今的页面架构以不同以往的简单。div、p、span、li等标签的伪类样式更是经常使用。目前解决IE6伪类的方法只能通过JavaScript去实现,比如hover伪类就相对于JavaScript的移入移出事件。

自己写JavaScript

比如要给DIV一个hover伪类,触发时背景颜色改变为红色。

div { width:300px; height:300px; background:blue;}
div:hover { background:red; }

...

READ ALL

IE6不能加载样式,原来是编码导致!

我向来是鄙视IE浏览器的,它总是不合群,特别是IE6。痛苦的是虽然微软已经开始IE6倒计时,国外使用IE6者几乎绝灭,而国内IE6用户依然众多。公司不肯放弃这些特殊用户,只得累生死调IE6兼容。

今天这个IE6出现的错误比较独特,页面打开后跟其它页面效果差别非常大,等于说是IE6下完全没有样式的HTML页面。首先得确定问题方向,因为样式文件是外链的,所以我在样式文件里给body来个背景颜色,结果发现除IE6以外其它浏览器背景都能正常变色。于是我在html页面直接加上body样式,这下IE6才生效。

html页面加写样式对于IE6有效,CSS文件写样式对于IE6无效只能说明IE6下无法加载样式文件。

...

READ ALL

按代码量算钱,伤不起啊!

早闻不少公司按代码量计费,如今我怀疑公司也这么干了。

我不知道按代码量算钱在财务部那里是怎么算的?不过百分九十九几乎都是把代码放到一个工具里计算行数或者字数来确定你的工作量,然后按字母/按行算钱。难怪有些人被逼无奈把一行代码完成的事拆成N行来写,注释也更多了一些,空白也更多了一些,代码越臃肿工钱越多。

每个人都有自己的代码风格,包括我。我历来追求精简,提高代码运行效率,因此我的代码拿到了财务部那里经过工具一算就是少得可怜的工钱。想想有点亏,我应该尽量把代码写的多一些。甚至可以这样

function(){
  $a=1;
  $b=$a;
  $c=$b
  ...
  return $c;
}

...

READ ALL

文件名编码后浏览器访问提示找不到文件解决方法

昨天做一个项目,其中有一个需求是每一张图片对应一小段文字对图片的说明,普通的做法是新建一个表然后把图片名与说明文字都记录到数据库内。仔细考虑后感觉这个应用不要数据库也能完成,我实现的方案是把说明文字url encode后当做文件名,这样当我读取文件的时候再把文件名url decode就可以后驱图片的文字说明了。

可是通过浏览器访问图片时却提示找不到文件,如有一张图片的说明文字为琼台博客,url encode后生成的文件名如下

%E7%90%BC%E5%8F%B0%E5%8D%9A%E5%AE%A2.jpg

于是我通过浏览器访问图片,提示找不到

...

READ ALL

Python除法不能求小数位数解决方法

求一个算式

a = 1
b = 2
c = 3
 
print c * (a / b)

运行结果总是0,反复检查拆开以后,发现在Python里,整数初整数,只能得出整数

也就是ab这个结果永远是0,只要把a或者b其中一个数改成浮点数即可。

a = 1
b = 2
c = 3
 
print c * (a / float(b))
print c * (float(a) / b)

这样才能准确算出ab的正确结果,当然,如果ab大,并且不需要小数位数部分可以不用float。

如:

a = 1
b = 2
c = 3
 
print c / a # 3
print c / b # 1
print c / float(b) # 1.5

...

READ ALL

web.py获取上传文件名一个需要注意的细节

直接切入主题,从HTML页面上传文件,Python接收处理。但其中发现有些小问题,把它写出来,算是积累吧!

HTML页面代码:

<form action="/admin/addgoodsaction/" method="post" enctype="multipart/form-data">
  <input type="file" name="image" />
</form>

Python处理部分代码:

i = web.input()

return i.image.filename

执行结果切提示:

<type 'exceptions.AttributeError'> at /admin/addgoodsaction/
'str' object has no attribute 'filename'

...

READ ALL

Python version 2.7 required, which was not found in the registry

安装PIL库的时候,直接提示

Python version 2.7 required, which was not found in the registry

如图:

full

大意是说找不到注册表,网上搜索解决方案。

新建一个register.py文件写入代码:

import sys
  
from _winreg import *
  
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
  
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)
  
def RegisterPy():
  try:
    reg = OpenKey(HKEY_CURRENT_USER, regpath)

  except EnvironmentError as e:
    try:
      reg = CreateKey(HKEY_CURRENT_USER, regpath)
      SetValue(reg, installkey, REG_SZ, installpath)
      SetValue(reg, pythonkey, REG_SZ, pythonpath)
      CloseKey(reg)
    except:
      print "*** Unable to register!"
      return
    print "--- Python", version, "is now registered!"
    return

  if (QueryValue(reg, installkey) == installpath and
    QueryValue(reg, pythonkey) == pythonpath):
    CloseKey(reg)
    print "=== Python", version, "is already registered!"
    return

  CloseKey(reg)

  print "*** Unable to register!"
  print "*** You probably have another Python installation!"

...

READ ALL