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

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

我不知道按代码量算钱在财务部那里是怎么算的?不过百分九十九几乎都是把代码放到一个工具里计算行数或者字数来确定你的工作量,然后按字母/按行算钱。难怪有些人被逼无奈把一行代码完成的事拆成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

web.py模板如何使用目录层级

web.py的模板使用非常容易,但有时候我们需要做目录层级以便管理。那么如何使用目录层级的模板呢?

通常我们使用模板的时候先声明模板文件夹

render = web.template.render('templates')

使用templates文件夹下index.html模板

return render.index()

使用templates文件夹下list.html模板

return render.list()

以上所有的html模板文件只放在tempates目录下,如果要在templates下建目录并使用目录下的模板文件只需加目录名称即可。

...

READ ALL

Linux awk命令

Linux有一个非常好用的命令awk,很多场景下都需要它,比如我要看看我的Nginx有没有运行,如果运行的话我就要杀掉它

获取NginxPID的命令如下:

[root@test01 ~]# ps -le | grep nginx
5 S     0 12601     1  0  80   0 - 31048 sigsus ?        00:00:00 nginx
5 S     0 30122 12601  0  80   0 - 31164 ep_pol ?        00:00:00 nginx
5 S     0 30123 12601  0  80   0 - 31164 ep_pol ?        00:00:00 nginx

...

READ ALL

利用Google API生成二维码

二维码的诞生就犹如短网址一样,应该是当前IT产物的代表了。当初微博推出短网址后,各大平台纷纷效仿,甚至API都提供了。现在二维码也在逐渐的成为一种规范,几乎百分之八十的应用都生成了自己的二维码。

谷歌提供了一个生成二维码的接口,通过接口我们可以生成二维码,方便又快捷。

接口地址

http://chart.apis.google.com/chart?chs=宽高值x宽高值&cht=qr&chld=等级|边距&chl=内容

参数说明

  • 宽高值:生成二维码尺寸,单位是像素,目前生成的二维码都是正方形的,所以两个宽高值都设置为一样的值
  • 等级:四个等级,L-默认:可以识别已损失的7%的数据;M-可以识别已损失15%的数据;Q-可以识别已损失25%的数据;H-可以识别已损失30%的数据
  • 边距:生成的二维码离图片边框的距离
  • 内容:生成二维码的内容,但一定要URLENCODE

...

READ ALL

如何高效的学习PHP

PHP由于入门门槛低,许多快速建站都采用它,好多同学开始学习PHP建站

这些建议都是我自身亲历成长过程中积累的一些看法,仅作参考,相信百分之八十对你都有帮助!

  • 熟悉PHP的语法,熟悉它的语法特性
  • 要有Web基础知识,如HTMLCSSJavaScript这样学习起来容易一些
  • 要重点看PHP的数据类型,数组操作,熟练的操作数组
  • 知道它如何取环境变量,如何获取GETPOST传餐
  • 用PHP写几个经典排序算法
  • 熟悉并知道如何维护php.ini
  • 随意添加扩展,如PDO扩展,并在PHP程序里尝试连接数据库
  • 如果你会C,你可以尝试写一个PHP模块
  • 配置PHP如何再Apache或者Nginx下工作,能明白工作的原理
  • 学会配置Debug环境,并可以在Debug模式下调试代码
  • 尝试写一个留言本,涉及增删改查
  • 尝试写一个上传文件的例子
  • 了解Smarty这类模板引擎的工作原理
  • 熟悉PHP类定义,如何实例化一个类
  • 知道什么是工厂模式、单例模式,它们之间有什么区别,什么场景下使用哪种方式

...

READ ALL

web.py如何在模板中使用美元符号

由于web.py已经在模板中定义$符号位定界符,所以在模板中如果要使用美元符号需要特殊处理。

如我要在模板中输出$name字符串:

$name

报错

<type 'exceptions.NameError'> at /
global name 'name' is not defined

$name被认定为一个变量而不是当作HTML字符串处理。如果想要输出$name字符串必须要这么写:

$$name

保存运行正确输出。

特别是跟jQuery里混合使用的时候,也要注意。如:

$("id").html("Nicholas Lee");

...

READ ALL