当前位置:  互联网>综合
本页文章导读:
    ▪[Django1.5]two-scoops-django-best-practics 笔记四      chapter 7  Function-and Class-Based Views  Django1.5 有这两种模式 function-based views FBVs class-based views CBVs  什么时候使用FBVs或者CBVs? Keep view Logic out of URLconfs  *views模块应该包含view逻辑 *.........
    ▪正则表达式 入门      好的工具可以提高工作效率,正则表达式绝对是这其中一员。最近抽时间大概了解了一下这方面的知识,整理了一下自己的一些笔记,文中示例通过vim编辑器来演示,匹配到的字符为黄色高亮.........
    ▪wordpress使用memcached缓存数据       1、安装memcached 2、编译安装: /usr/local/bin/memcached -p 11211 -d -u www -m 16 -c 1024 -vvv //查看是否启动 [root@AY120919111755c246621 ~]# ps -ef | grep memcache www 18739 1 0 09:32 ? 00:00:00 /usr/local/bin/memcache.........

[1][Django1.5]two-scoops-django-best-practics 笔记四
    来源: 互联网  发布时间: 2013-10-21
chapter 7  Function-and Class-Based Views 

Django1.5 有这两种模式
function-based views FBVs
class-based views CBVs 

什么时候使用FBVs或者CBVs?


Keep view Logic out of URLconfs 
*views模块应该包含view逻辑
*URL模块应该包含URL逻辑
而不是混为一谈


最好不要有这样的代码:
# Similar to the Polls example
	from django.conf.urls import patterns, url
	from django.views.generic import DetailView
	from tastings.models import Tasting
	urlpatterns = patterns('',
	    url(r'^(?P<pk>\d+)/$',
	        DetailView.as_view(
	            model=Tasting,
	            template_name='tastings/detail.html'),
	        name='detail'),
	    url(r'^(?P<pk>\d+)/results/$',
	        DetailView.as_view(
	            model=Tasting,
	            template_name='tastings/results.html'),
	        name='results'),
	)


这样的代码也可以使用,但是违法了松耦合,DRY原则,并且会使项目的可维护性大大降低。


Loose Coupling 松耦合的URLConfs案例:
# tastings/views.py
	from django.views.generic import DetailView
	from .models import Tasting
	class TasteDetailView(DetailView):
	    model = Tasting
	class TasteResultsView(TasteDetailView):
	    template_name = 'tastetests/results.html'

	# tastings/urls.py
	from django.conf.urls import patterns, url
	from .views import TastingDetailView, TastingResultsView
	urlpatterns = patterns('',
	    url(
	        regex=r'^(?P<pk>\d+)/$',
	        view=TastingDetailView.as_view(),
	        name='detail'
	    ),
	    url(
	        regex=r'^(?P<pk>\d+)/results/$',
	        view=TastingResultsView.as_view(),
	        name='results'
	    ),
	)
好处:DRY,松耦合原则等
这个还没有在实际项目中用过CBVs原则,需要研究下,FBVs做练习比较快,但是设计上还有缺陷。

chapter 8  CBVs最佳实践:


Class Based Views从django1.3开始支持,可以提高view代码的重用性,使得代码更加有力和灵活。


在django1.5的文档中有专门的DBVs的说明。


CBVs指导原则:
*越少的view代码越好
*不要重复view中的代码
*Views应该处理表现层代码,业务逻辑应该交给Models或者Forms
*保持你的views简洁
*保持你的混合类使用更加简单


多态接口(Mixins): 不好翻译,没见过,直翻。。
混合类:



在多继承编程语言中,mixins是一种聚集功能的方法。
多继承中使用原则:
*Django自身提供的类应该在右边(多继承中父类排列方式)
*mixins应该在左边
*mixins应该继承python内置object类
ex:
from django.views.generic import TemplateView
	class FreshFruitMixin(object):
	    def get_context_data(self, **kwargs):
	        context = super(FreshFruitMixin,
	                    self).get_context_data(**kwargs)
	        context["has_fresh_fruit"] = True
	        return context
	class FruityFlavorView(FreshFruitMixin, TemplateView):
    template_name = "fruity_flavor.html"

那么CBV应该在什么样的任务场景呢?

django.views.generic?是什么??


声明:图片和代码均引用自 《two-scoops-django-best-practics》

作者:lzz957748332 发表于2013-5-10 23:34:12 原文链接
阅读:90 评论:0 查看评论

    
[2]正则表达式 入门
    来源: 互联网  发布时间: 2013-10-21

好的工具可以提高工作效率,正则表达式绝对是这其中一员。最近抽时间大概了解了一下这方面的知识,整理了一下自己的一些笔记,文中示例通过vim编辑器来演示,匹配到的字符为黄色高亮显示,并在下面注明了显示结果。


首先,正则表达式的定义:一些用来匹配和处理文本的字符串

主要用途:搜索,替换


在正式开始之前,有一点需要特别强调:正则表达式的语法很容易掌握,但是真正的挑战是如何运用那些语法把实际问题分解为一系列正则表达式并最终解决,必须通过自己多多实践才能掌握。


1. 匹配单个字符

下面一个示例就是普通的文本匹配,我在vim中默认大小写敏感,这样我们可以观察正则表达式的表现。事实证明,正则表达式是大小写敏感的。


上面例子中,第1  4两行是高亮的,显示效果不太好,将就看下吧。


下面示例一个通配符'.'的用法

.字符(英文符号)可以匹配任何一个单一的字符、字母、数字、甚至是.本身。但是在绝大多数的正则表达式实现里,不能匹配换行符。

上面例子中,只有第4行是高亮的。


在同一个正则表达式中,允许使用多个.字符,可以连续,也可以间隔出现。

\. \是转义字符,\.意思是匹配.本身,而不是任意字符

上面例子中,第1  3两行是高亮的。


2. 匹配一组字符

这个主要通过字符集的方式来实现。用[]来定义一个字符集

字符集只能匹配特定的字符和字符区间

字符集的匹配结果是:能够与该字符集中的任何一个成员相匹配的文本

字符区间用'-'来定义,例如[0-9],表示0,1,2,。。。9 10个阿拉伯数字

常用字符区间有[a-z], [A-Z], [0-9]。但是[A-z]不常用,因为它除了包含26个英文字母的大小写,还包括[  ^等在ASCII字符表中排列在Z和a之间的字符。如果想匹配26个英文字母的大小写,那么可以用[a-zA-Z]这样的形式。


上面的例子中,可以看到前两行是高亮的

'-'是一个特殊的元字符,用在[]中,作为元字符,在其他地方,只是一个普通的字符,只能与本身匹配,并且不需要转义。


取非匹配:^, [^0-9], ^的效果作用于给定字符集合中的所有字符或字符区间,而不仅限于在^字符后面的那一个字符或字符区间。


上面例子中,只有第4行是高亮的。


3. 元字符

其实上面已经提到这个概念了,用在[]中的'-'是元字符。

元字符要匹配本身的话,需要用\来进行转义。

空白元字符:

[\b] 回退(并删除)一个字符(backspace键)
\f   换页符
\n   换行符
\r   回车符
\t   制表符(Tab键)
\v   垂直制表符


\s   任何一个空白字符,等价于[\f\n\r\t\v]
\S   任何一个非空白字符,等价于[^\f\n\r\t\v]   注意:[\b]不包含在内


首先,在vim中使用:set list命令来使空白字符显示出来,


可以看到所有的$都高亮了。

btw,试了一下\s,好像vim的正则实现不支持这个。


数字元字符:

\d   任何一个数字字符,等价于[0-9]
\D   任何一个非数字字符,等价于[^0-9]


前3行中的几个数字都高亮了。

字母数字元字符

常用于匹配各种名字(如文件名,子目录名,变量名,数据库对象名等等)
\w   任何一个字母数字字符(大小写均可)或下划线字符,等价于[a-zA-Z0-9_]

\W   任何一个非字母数字或下划线字符,等价于[^a-zA-Z0-9_]


根据字符的16进制表示来匹配
16进制:\x0a == \n,ascii字符10
8进制: \012 等价于上面


这个在vim中不支持,试了一下不行。


POSIX字符类:

[:alnum:]    任何一个字母或数字,等价于[a-zA-Z0-9]
[:alpha:]    任何一个字母,等价于[a-zA-Z]
[:blank:]    空格或制表符,等价于[\t ]
[:cntrl:]    ASCII控制字符(ASCII0-31,再加上ASCII127)

    
[3]wordpress使用memcached缓存数据
    来源: 互联网  发布时间: 2013-10-21
1、安装memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
Memcached官网:http://memcached.org/
安装步骤:
1、下载源码包:

wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz

2、编译安装:

//确定libevent是否安装,centos使用yum
yum -y install libevent
tar -zxvf memcached-1.4.15.tar.gz
./configure --prefix=/usr/local/
make &amp;&amp; make install
make clean

OK,Memcached安装成功
启动memcached
目标:使用11211端口、www 用户、最大占用16M内存、1024个软连接,输出
客户端请求,以守护进程方式运行

/usr/local/bin/memcached -p 11211 -d -u www -m 16 -c 1024 -vvv
//查看是否启动
[root@AY120919111755c246621 ~]# ps -ef | grep memcache
www      18739     1  0 09:32 ?        00:00:00 /usr/local/bin/memcached -p 11211 -d -u www -m 12 -c 1024 -vvv

OK,Memcached启动成功

2、安装memcache php扩展

扩展官网:http://pecl.php.net/package/memcache
你可以查看最新稳定包(stable)下载:

 wget http://pecl.php.net/get/memcache-2.2.7.tgz

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
java开源软件 iis7站长之家
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3