Pylons使用小记

活着就是折腾,最近事情多的一塌糊涂,烦躁的很,导致log4d也荒废一个月了。今天趁着周五晚上,梳理一下最近学习的pylons知识。

image
image

关于Pylons

Pylons是一个用pythons写的web框架,优点是配置灵活,默认使用Mako作为Template,SQLAlchemy作为 ORM映射。使用BSD作为授权协议。

托WSGI的福,python的web框架超多,甚至高手5分钟可以自己手写一个web框架,这种情况也导致了Python web框架的纷杂。我这里选择Pylons(其实是被选择),并不是说Pylons一定最好,而是比较适合当前项目。更多的Python web框架对比建议看这篇浅谈Python web框架,另外,这个Best Web- Framework有直观的对比。

Pylons环境配置

因为开发机是刚到手的ThinkPad,没有冒险安装Linux,所以这里的安装环境是Win7 + Python 2.6 + MySQL5.1。

1、安装Pylons

Pylons似乎没有方便的easy_install,原因是由于Pylons在安装过程中 …

more ...

Eclipse中运行Pylons

官方中pylons都是通过在shell中运行paster serve –reload development.ini来运行应用实例。而整天在任务栏跑着一个黑乎乎的shell很碍眼,通过一下步骤可以在Eclipse中运行pylons。

配置Run Configuration - Python Run如下。

Main页签中Main Module指向paster-script.py,可以使用绝对路径。

image
image

配置Arguments页签的参数,添加serve –reload development.ini,后面的ini配置文件可以使用绝对路径。

image
image

勾选Common下的Allocate Console来进行paster调试信息输出。

在Windows - Preference - Pydev - Interpreter - Python中的PYTHONPATH加入pylons目标环境 ,报过site-packages目录和site-packages目录下面的egg文件(理解为jar包,称之为蟒蛇蛋)。

不出意外的话,就可以通过Run跑起整个应用了。

很可惜的是,这样做还是不能对应用进行Debug,pylons的debug依然依赖于pylons的“交互调试页面”。

参考http://stackoverflow.com/questions/147650/debug-pylons-application-through- eclipse

more ...

Ubuntu安装之后设定操作

前几天使用chmod时候,多打了一个/,导致根目录下面所有文件权限设定出了问题,额~重装系统吧,正好把装系统之后的配置过程记录下来。

这些都是我操作过的命令,确切可靠,适用于Ubuntu 10.10 Desktop Edtion。

= init Linux programs and setting =
:author: alswl
:email: alswlx#gmail.com
:toc:
:numbered:

== first of all ==

.update (打补丁、升级)

sudo apt-get update
Update System(fix bugs for sercurity): 299.0MB

.reset permission(谨慎使用,设定文件为644,设定文件夹为755)

find /home …
more ...

Maven 下 Jetty 启动

部门最近开发的产品使用的开发服务器是 Jetty(挂载在 GWT 中),启动方法是通过 Eclipse 的 External Tool 执行。我对此表示很好奇,特意在自己电脑下面组建了一个 Jetty 开发环境,发现 Maven 和 Jetty 合作起来非常愉快,现在小记之。

准备 Maven 配置文件

我使用 Maven 推荐的标准 webapp 结构,结构如下,官方文档可以参考 Maven - Introduction to the Standard Directory Layout

  • src/main/java
    • Application/Library sources
  • src/main/resources
    • Application/Library resources …
more ...

Ubuntu桌面自动换背景

GNOME桌面系统可以使用一系列的图片作为背景,每过一段时间能够自动更换。这个功能核Win7下面自动换背景效果一致。不过很可惜,系统自带的可自动更换图片集只 有几张,也找不到什么按钮可以直接设定。

下图就是系统自带的两个图片集(第二行第一组和第二组)。

image
image

我们可以通过撰写xml自己制作图片集,xml格式模板在/usr/share/gnome-background-properties/cosmos.xml ,实际的xml存放在类似于/usr/share/backgrounds/cosmos/background-1.xml的配置文档里面。

除了手工撰写xml,我们还可以通过crebs小软件来自动生成xml文件。

官方介绍如下:

A background slideshow creator for the GNOME desktop wallpaper.

The GNOME desktop is able to use a sequence of images for its …

more ...

历史记录-歌词复制器

之前写过一个Java的小工具叫做Mp3Lrc歌词复制器,用来复制歌词到Mp3播放器中的对应目录下面。之前的文章参见Mp3Lrc的可执行文件Java写的Mp3歌词复制器

这几天整理硬盘时候发现大四时候还用Delphi写了一个完整的GUI界面的Mp3歌词复制工具叫做PLrcMatch4D。

源码已经丢失,只剩下可执行文件,T_T。

如果非要定义以下这个工具的作用,就是从某个固定文件夹(歌词文件夹)复制对应Mp3播放器中歌曲的lrc文件到目标文件夹,从而让Mp3播放器可以正常显示歌词。

下载点击这里,PLrcMatch4D.zip

界面比较实在,大致是这样:

image
image
more ...

在Eclipse中使用Maven

一提到Eclipse中使用Maven,都会想到m2eclipse这个插件。其实在Ecli pse下使用Maven不用插件也能完成,我们只需要使用bin/mvn下面的mvn即可。

3分钟Maven

Maven官方提供了Getting Started in 5 MinutesGetting Started in 30 Minutes两种教程,我这里再简化一下,记录一下常用命令。

#建立一个空项目,包含一个HelloWorld,可以通过
#-DarchetypeGroupId=<archetype-groupId> -DarchetypeArtifactId=<archetype-artifactId>
#命令创建更多类型项目
mvn archetype:create -DgroupId=com.dddspace.java -DartifactId=helloworld

#编译打包到jar或者war,根据pom中定义

maven package

#jUnit跑跑

mvn test

#神奇的命令,帮助创建Eclipse项目 …

more ...

使用DataConnectionDialog来获取连接字符串

在系统开发中,数据库连接字符串经常被保存到.config/.ini等配置文件中,以提高系统的灵活性。上大学时候,为了实现灵活配置数据库的效果,用拼字符串的方 法来动态生成连接字符串,这种方法充满了Bad Smell。

昨天用CodeSmith时候,看到它的数据连接配置界面,如此的眼熟,如下图。

image
image

Google了一下,原来这家伙的名字叫做DataConnectionDialog,所属命名空间为Microsoft.VisualStudio.Data。

使用的方法也很简单,引用Microsoft.Data.ConnectionUI.dll和Microsoft.Data.ConnectionUI.Dialog .dll,这两个文件位于Microsoft Visual Studio 9.0Common7IDE下面。

这两个dll并没有其他依赖关系,可以放心的放到自己的程序中使用。

使用代码如下

DataConnectionDialog dataConnectionDialog = new DataConnectionDialog();
DataSource.AddStandardDataSources(dataConnectionDialog);
if (DataConnectionDialog.Show(dataConnectionDialog) == DialogResult …
more ...

在.net中使用GAC

GAC

GAC是什么?是用来干嘛的?GAC的全称叫做全局程序集缓存,通俗的理解就是存放各种.net平台下面需要使用的dll的地方。GAC的具体目录在windows/ assembly。

喜欢使用破解软件的朋友可能会经常使用替换DLL这招,这个DLL虽然和.net下面的DLL有所不同,但大致起的作用还是一样的:使用共同的动态链接库来提高库复用 ,减少文件体积。在.net平台之前,程序们都把可能用到的公共DLL存放到system32文件夹下。由于版本的不一致及其他原因(将控制信息存放到注册表),造成 了很有名的DLL Hell

最近在读俞甲子的《程序员的自我修养》,中间花了很大的篇幅描述程序编译中 的链接这个过程。而比较巧合的是,我的《C#与.NET 3.5高级程序设计》也正好读到程序集这一块。微软使用了GAC来避免DLL重蹈覆辙。现在,我就来部署一个简单的通用类库到GAC中。

获取强名称(签名)

并不是随便一个DLL都可以放到GAC中,如果这样的话,和之前的DLL Hell也没什么区别了。GAC使用一个强名称(签名)的方式来区分不同的DLL。每个签名 都是独一无二的公钥私钥对。现在我们使用SDK的sn工具为我的DUtil库生成一个snk签名 …

more ...

正则表达式抓捕替换

问题情境

需要将RDL报表里的GetComment( Parameters!F0001.Value , Parameters!F0002.Value ,“total”, Parameters!Language.Value)函数修改为GetCommentForComment( Parameters!F0001.Value , Parameters!F0002.Value ,“total”, Parameters!Language.Value, “ReportConnection0107”)。

思路

使用正则表达式里面的分组进行抓获,再用1将中间固定的参数取出,组成新的字符串。

Vim实现

%s/GetComment(((sw+!w+.w+s,){2}s“w+”s,sw+!w+.w+s))/GetCommentForReport(1 , “ReportConnection0107”)/gc

解释 …

more ...