Django应用程序部署到生产服务器

Django 是一个基于 Python 的开源 Web 应用程序框架,其目的是使创建数据库驱动的 Web 站点和 Web 应用程序更加容易。开发 Django 应用程序很简单,因为该框架包含了一个开发 Web 服务器。但是这个框架不适合在生产环境中使用,因此需要进一步将 Django 应用程序部署到 Web。在本文中,您将了解 Django 框架,以及如何在本地机器上安装它。探索 Django 应用程序是如何开发的,以及为您的应用程序创建的自动管理界面。接着您将了解如何在运行 Apache 和 mod_python 的服务器上将 Django 应用程序部署到 Web。最后,了解如何根据应用程序需求的增长而扩展 Django 应用程序。

Django

Django 是一个针对 Python 语言的开源 Web 开发框架,其目的是尽可能自动化更多的开发流程,使您能够专注于软件开发。这个框架既是松散耦合的,又是紧密相连的,因为框架的各个部分可以相互连接,但它们之间是彼此独立的。框架的独立性意味着您可以仅使用所需的 Django 部分,而不用担心依赖性带来的问题。

Django 加快了 Web 应用程序的编写,并且大大减少了所需的代码,从而使维护应用程序更加容易。Django 严格遵循 Don’t Repeat Yourself (DRY) 原则,因此每个不同的代码片段或数据仅在一个位置上出现。这意味着需要进行更改时,只修改一个地方就行,从而使更改软件更快、更轻松。

Django 是由 Lawrence Journal-World 报的 Web 开发团队在 2003 年开发的。当时该团队需要在很紧迫的时间内发布应用程序和改进,因此他们决定创建一个能节省时间的 Web 框架,以在期限内交付产品。该团队在 2005 年 7 月以开源软件的方式发布了这个框架,现在由来自世界各地的开发人员进行维护和开发。

Django 框架是在 Berkeley Software Distribution (BSD) 开源许可下发布的,因此能够再分发或重用这些源代码和二进制文件(可以修改),但必须在再分发包中保留版权需知、许可条款和免责声明。这些注意事项必须包含在再分发软件的文档和补充材料中。该许可规定,在未获得书面许可的情况下,不得使用 Django 这个名称或 Django 贡献者的名称冠名或促销衍生产品。 (continue reading…)


python遍历文件夹和文件

在Python中,文件操作主要来自os模块,主要方法如下:

os.listdir(dirname):列出dirname下的目录和文件
os.getcwd():获得当前工作目录
os.curdir:返回当前目录(’.’)
os.chdir(dirname):改变工作目录到dirname (continue reading…)


时间格式的正则表达式

//日期格式yyyy

PatternsDict.date_y= /^(\d{4})$/;

//日期格式yyyy-mm
PatternsDict.date_ym= /^(\d{4})-(0\d{1}|1[0-2])$/;

//日期格式yyyy-mm-dd
PatternsDict.date_ymd= /^(\d{4})-(0\d{1}|1[0-2])-(0\d{1}|[12]\d{1}|3[01])$/;

//时间格式hh
PatternsDict.time_h=/^(0\d{1}|1\d{1}|2[0-3])$/;

//时间格式hh:mm
PatternsDict.time_hm=/^(0\d{1}|1\d{1}|2[0-3]):([0-5]\d{1})$/;

//时间格式hh:mm:ss
PatternsDict.time_hms=/^(0\d{1}|1\d{1}|2[0-3]):[0-5]\d{1}:([0-5]\d{1})$/;

 

格式为时间,就是说前两位都不能少,而且不能大于23,后面的时和分不能大于59,必须写在16:02:01而不能为16:2:1

 

[0-2][0-3]:[0-5][0-9]:[0-5][0-9]

 

用Comparidator
operator设成DateTypeCheck
type设成Date

这里是判断YYYY-MM-DD这种格式的,基本上把闰年和2月等的情况都考虑进去了,不过我已经忘了在哪里找到的。

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$

下面的是加了时间验证的

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$

【aspx页面内:<%# DataBinder.(Container.DataItem,”Company_Ureg_Date”)%>
显示为: 2004-8-11 19:44:28
我只想要:2004-8-11 】

<%# DataBinder.(Container.DataItem,”Company_Ureg_Date”,”{0:yyyy-M-d}”)%>

应该如何改?

【格式化日期】
取出来,一般是object
((DateTime)objectFromDB).ToString(“yyyy-MM-dd”);

A.以下正确的输入格式: [2004-2-29], [2004-02-29 10:29:39 pm], [2004/12/31]

^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|
(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))
|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])
|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$

B.以下正确的输入格式:[0001-12-31], [9999 09 30], [2002/03/03]

^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$

 

 


jQuery live() failing with jQuery UI datepicker

I’ve got it to bind to the lightbox’d inputs on the first appearance of the lightbox, but it’s not working afterwards.

I’m doing the following:

$(function() { 
    $('.jQueryCalendar').live('click', function () {
            $(this).datepicker({showOn: 'both'}).focus();
    });
});

When the lightbox closes, I’m re-appending it’s content to the page (in order to not lose the content div), and this seems to be killing the live() call. [NB the re-appending takes place after the original content is destroyed]

EDIT

Ok, the live() event IS firing (thanks to Nick Craver for that), however the datepicker is no longer being shown. Does anyone have an idea why?

EDIT #2

Ok, the use of .html() to re-append causes the events to need rebinding, but the element to bind still has the class hasDatepicker, which messes with the datepicker() initialisation.

To fix, simply user

$(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus();

 


Elance:网络公司最需要百项技术PHP居首

根据2010年Elance第四季关于美国地区的就业资讯整理,发现了关于网络方面的工作机会有大幅的提升,比上一季增加了38%。尤其是在创意,行销及移动产业的工作机会有显着的增幅。除了想法以外企业家也需要有技术的人才,但企业们最需要僱员具备的技能是甚么呢?又反应了怎么样的市场趋势呢?下图是Elance整理出公司最需要的百项技术。

 

 

图表,Elance也做了一些分析,也就跟目前最热门的两项网络趋势有关,手机及社群网站:

首先他们指出App开发者在市场上的需求增加了20%, 当中iPad类的App开发者市场需求目前每季增长15%,而iPhone类App开发者的市场需求则每季增长10%。同时,市场对于Android的程式开发者也有大量需求。而现阶段对移动设备的程序开发者尚未饱满,同时Apple及Android手机又不断出现在市面上,因此短期内还是需要大量的程序开发人员。

至于网络营销,由于社群网络(如Facebook)的发达,所以是在各个类别中成长速度最快的,企业们非常重视也仰赖线上营销,尤其是社群媒体营销(Social Media Marketing),联盟营销(Affiliate Marketing),以及搜索引擎营销(Search Engine Marketing)这三方面。

另外Elance也特别强调了Html5的增幅也很大,每一季增加了48%的需求,原因是除了需要更新网站的界面外,也需要因应在平板电脑以及行动装置上的浏览经验而做出调整,话虽如此,对Flash(#29)的需求还是持平(甚至走下坡)。另外网站架构方面最需要的人才还是 WordPress(#2)为主,还有Joomla!(#21)及Drupal(#56)。

 

1 Comment more...

Linux ./configure –prefix命令

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是一个可执行脚本,它有很多选项,使用命令./configure –help输出详细的选项列表,如下:
-bash-3.00# ./configure –help
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
–cache-file=FILE     cache test results in FILE
–help             print this message
–no-create         do not create output files
–quiet, –silent     do not print `checking…’ messages
–version           print the version of autoconf that created configure
Directory and file names:
–prefix=PREFIX       install architecture-independent files in PREFIX
[/usr/local]
–exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
[same as prefix]
–bindir=DIR         user executables in DIR [EPREFIX/bin]
……….(省略若干)
很多的选项,个人认为,你可以忽略其他的一切,但请把—prefix加上。这里以安装supersparrow-0.0.0为例,我们打算把它安装到目录 /usr/local/supersparrow,于是在supersparrow-0.0.0目录执行带选项的脚本./configure –prefix=/usr/local/supersparrow,执行成功后再编译、安装(make,make install);安装完成将自动生成目录supersparrow,而且该软件所有的文件都被复制到这个目录。为什么要指定这个安装目录?是为了以后的维护方便,如果没有用这个选项,安装过程结束后,该软件所需的软件被复制到不同的系统目录下,很难弄清楚到底复制了那些文件、都复制到哪里去了—基本上是一塌糊涂。

用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。


让IE也有类似firebug的功能

虽然现在的浏览器都有类似firebug的功能,但也只是类似,像我们前端用得最多的功能却没有(也可能是我还不会玩吧),举个例子:我在firebug里用得最多的功能就是修改css,然后直接在页面上看到效果,而不是修改css文件后,刷新浏览器。这个功能好像除了firebug,其他的浏览器上的开发工具都没有吧,今天无意中看到了firebug lite.让IE也可以有这样的功能。以后做页面就会轻松不少,呵。 (continue reading…)


putty远程登陆linux

方法一:使用puttygen.exe

第一步:生成密匙
运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了。
passphrase可以为空,免得登录时还是要输入一次密码。

点击Save private key 按钮保存公匙和私匙,例如key.ppk,public key不用保存,以后使用Puttygen.exe Load功能就可以显示public key。 (continue reading…)


Why substituteMarkerArrayCached is bad

In the previous article we talked about TYPO3 template functions. I mentioned that  substituteMarkerArrayCached is a function that developers should not use. In this article I am going to explain why.

As you remember there are four “substitute” functions for use with TYPO3 templates:

  • substituteMarker
    This function substitutes a single marker
  • substituteMarkerArray
    This function does the same as above but for many markers in the array
  • substituteSubpart
    Substitutes a single subpart
  • substituteMarkerArrayCached
    Our today’s case.

The first two functions substitute marker and marker array. The third substitutes template subpart. The obvious missing function is the one to substitute subpart array. (continue reading…)


#!/usr/bin/env python与#!/usr/bin/python的区别

这个在unix类的操作系统才有意义。
#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;
#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。

 


Copyright © 1996-2010 Add Lives. All rights reserved.
iDream theme by Templates Next | Powered by WordPress