当前位置:  互联网>综合
本页文章导读:
    ▪web.py应用工具库:webpyext      缘起在前面关于Backbone的文章里提到过要谈后端的,现在就来简单说说在那个离线客户端的后端实现中用到的一些东西。用了很长时间的web.py,之所以选择web.py,是走过很多弯路的。早年主要.........
    ▪zend studio代码自动补全功能      首先:window--prerferences--php--editor--content assist--- enable auto activation 打钩  然后: 1、找到Zend Studio所在的文件夹 (在Windows 7是"C:\Users\[your profile]\Zend\workspaces\.metadata\.plugins\org.eclipse.core.runtim.........
    ▪hdu2544-最短路      http://acm.hdu.edu.cn/showproblem.php?pid=2544 Dijkstra模版题,Dijkstra模版终于初步确定了 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std ; const int INF = 1000000 ;.........

[1]web.py应用工具库:webpyext
    来源: 互联网  发布时间: 2013-10-24
缘起

在前面关于Backbone的文章里提到过要谈后端的,现在就来简单说说在那个离线客户端的后端实现中用到的一些东西。

用了很长时间的web.py,之所以选择web.py,是走过很多弯路的。早年主要是一些重量级框架,接触过Django、TurboGears和Pylons相当长时间,尤其是TG1用了很久,具体在《SD2C之三种Python的Web框架 》里说过。后来还有一段时间用了web2py——因为它是all in one。但后来发现这类重量级的框架太笨重,安装部署都麻烦,最关键的是局限性太大——且不说Django/web2py这种,全要按它们的路子走,TG1换了模板和ORM,有些功能也没了,Pylons则是换起来麻烦。于是转向轻量级的框架。

当时也没太多研究,就大致看了一下,感觉web.py比较简单,而且资源也挺丰富,就用起来了。关于web框架的选择,我曾经零散谈过几次,主要的理由有几个:

首先是轻量。重量级的框架实在是用烦了,所有的功能都要按它们设定的路子走,稍有不慎就掉坑里。除此之外还有个问题就是,它们各自的实现都不一样,一但需要切换,原来的经验全部作废,这是我不能接受的——年纪大了,从头学新东西太费事。

其次是要易学易用易部署。易学需要有简单全面的文档,各种资源相对丰富。易用是基本的功能要能简单实现——比如REST。易部署……这个只要是WSGI现在用gunicorn都容易,没什么好说的,但还有一点很关键的是尽量不要有我不认识的外部依赖。

第三就是我现在比较熟悉的SQLAlchemy和Mako模板能直接用上,我可不想再学别的ORM和模板了。

最后则是一些小原因:比如Django这种名字不好读的我就不太喜欢。还有像Flask和uliweb依赖的那个Werk什么什么的,那名字我不搜索从来就没法正确拼出,更不要说读了。

这几个条件一出,常见的web框架大部分都被毙了:Django太重,名字不好,没法简单地换掉模板和ORM。TurboGears/Pylons/Pyramid外部依赖太多。web2py局限太大,模板和ORM都没法换。flask/uliweb依赖那个我很不喜欢的Werk什么什么。Tornado之类的异步框架太不易学。于是就剩下web.py和bottle。而选择web.py完全是因为先入为主。

因为之前用了TG1很长时间,有些功能用着挺习惯,所以也在web.py下也自己打造了一堆类似的东西,于是有了这个webpyext(起初把它叫做webtg)。

使用

使用方法参见前面的《Backbone笔记之三(Controller与集成) 》里的例子程序(注意:仅限目前的版本,以后计划改用bottle)。

这个项目已经发布在bitbucket——除了fork或依赖在github上现有的项目会放在github上以外,我自己创建的项目都放在bitbucket:

https://bitbucket.org/raptorz/webpyext

当然,如这个项目的说明上所说,我已经改用bottle,所以这个项目以后可能都不会再更新,仅供参考,或者有兴趣的人可以自行fork继续。

关于bottle

选择bottle的理由其实与选择web.py一样:轻量、无依赖、简单易用。但是放弃web.py的理由有一个:Aaron去世了。目前看来暂时还没有谁要接手web.py的迹象,所以还是换了吧。

关于bottle与web.py的比较,可以看一下令狐虫的这篇《bottlepy及其它》。

当然,对我来说换到bottle也是有不少问题的。首先就是这些为web.py写的代码大部分用不上了,我需要按bottle的方式重写一套(这个工作正在进行中)。其次是bottle的某些方面功能比web.py更弱一些,比如没有session,比如plugin+route对象的方式不如web.py的processor+web.ctx方便好用。而且bottle的插件模型与自定义decorator有冲突,也就意味着你必须将所有自定义的处理都做成插件,然后插件之间的交互又成了新的问题。

不过有失有得,bottle的request不错,甚至包括了对json请求的支持,这样的话用作backbone后端就更省事了(web.py的话,我是在这个webpyext里做了一个decorator来处理的)。

还有一个选择bottle的次要原因是它的性能略好,详见《继续小测python web server 》。更多关于webserver性能方面的比较,可参见这个《Web Framework Benchmarks》。

作者:Raptor 发表于2013-5-16 10:33:01 原文链接
阅读:51 评论:0 查看评论

    
[2]zend studio代码自动补全功能
    来源: 互联网  发布时间: 2013-10-24
首先:window--prerferences--php--editor--content assist--- enable auto activation 打钩 

然后:

1、找到Zend Studio所在的文件夹 (在Windows 7是"C:\Users\[your profile]\Zend\workspaces\.metadata\.plugins\org.eclipse.core.runtime\.settings"  提示:[your profile]请自行换成你自己的目录名,如我的Zend Studio的目录在C:\Users\pzh\Zend\workspaces\DefaultWorkspace\.metadata\.plugins\org.eclipse.core.runtime\.settings)。


2、删除.settings文件夹下面的"org.eclipse.dltk.ui.prefs" 文件即可。
作者:u010258505 发表于2013-5-16 14:46:04 原文链接
阅读:60 评论:0 查看评论

    
[3]hdu2544-最短路
    来源: 互联网  发布时间: 2013-10-24

http://acm.hdu.edu.cn/showproblem.php?pid=2544

Dijkstra模版题,Dijkstra模版终于初步确定了

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std ;

const int INF = 1000000 ;
const int maxn = 105 ;
int edge[ maxn ][ maxn ] ;
int used[ maxn ] ;
int path[ maxn ] ;
int dist[ maxn ] ;
int S[ maxn ] ;
int n , m ; 

int Dijkstra( int v0 )
{
	int i , j , k ;
	memset( used , 0 , sizeof( used ) ) ;
	for( i = 1 ; i <= n ; i++ )
	{
		dist[ i ] = INF ;
	}
	dist[ v0 ] = 0 ;
	for( i = 1 ; i < n ; i++ )
	{
		int MIN = INF , u = v0 ;
		for( j = 1 ; j <= n ; j++ )
		{
			
			if( !used[ j ] && dist[ j ] < MIN )
			{
				MIN = dist[ j ] ;
				u = j ;
			}
		}
		used[ u ] = 1 ;
		for( k = 1 ; k <= n ; k++ )
		{
			if( !used[ k ] && edge[ u ][ k ] && edge[ u ][ k ] + dist[ u ] < dist[ k ] )
			{
				dist[ k ] = dist[ u ] + edge[ u ][ k ] ;
			}
		} 
	}
}

int main()
{
	int x , y , temp ;
	int i , j , k ;
	while( scanf( "%d%d" , &n , &m ) != EOF && ( n + m ) )
	{
		memset( edge , 0 , sizeof( edge ) ) ;
		for( i = 1 ; i <= m ; i++ )
		{
			scanf( "%d%d%d" , &x, &y , &temp ) ;
			edge[ x ][ y ] = edge[ y ][ x ] =  temp ;
		}
		Dijkstra( 1 ) ;
		printf( "%d\n" , dist[ n ] ) ;
	}
}


作者:liujie619406439 发表于2013-5-15 21:54:25 原文链接
阅读:26 评论:0 查看评论

    
最新技术文章:
▪用户及权限基础 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的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---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