魔兽世界各职业颜色代码

伟大的墙把wowiki给墙了,我不得不翻墙去找这段WOW各职业的颜色的十六进制代码,为了避免麻烦这里备份下。

Class RGB RGB (dec) Hex
Death Knight 196 30 59 0.77 0.12 0.23 #C41F3B
Druid 255 125 10 1.00 0.49 0.04 #FF7D0A
Hunter 171 212 115 0.67 0.83 0.45 #ABD473
Mage 105 204 240 0.41 0.80 0.94 #69CCF0
Paladin 245 140 186 0.96 0.55 0.73 #F58CBA
Priest 255 255 255 1.00 1.00 1.00 #FFFFFF
Rogue 255 245 105 1.00 0.96 0.41 #FFF569
Shaman 36 89 255 0.14 0.35 1.00 #2459FF
Warlock 148 130 201 0.58 0.51 0.79 #9482C9
Warrior 199 156 110 0.78 0.61 0.43 #C79C6E

QQ2009Beta英文版

今天在月光博客上看到腾讯发布QQ2009Beta英文版英文主页,我想说的是:这版本的做的不错,是少数国人做的英文版会比中文版好用的软件之一。QQ2009Beta的用户界面一看就是精心设计的,个人该觉已经超越Live Messenger,QQ2009Beta英文版主要好用的地方就在于:你用这个版本的QQ没有任何广告和弹出窗口的干扰。。。

喜欢这个特点的朋友可以尝试下安装英文版。

分形矢量图形绘制工具Fractal4D

Fractal4D是一个使用Adobe AIR开发的绘制分形矢量图形的程序,可以通过鼠标的移动绘制出分形矢量的轨迹,作者是Matt Kenefick,以前在另一位Flash开发者Robert Penner制作的Flash源程序中看到过一个类似的分形树程序。除了能够绘制出矢量图形这个程序还支持导出Adobe Illustrator支持的矢量格式或者PNG图片,并且可以在选项中设置颜色、混合度、缓和度和不透明度。如果需要在背景上绘制漩涡曲线效果或者一些蒙太奇效果图片这个AIR程序也是个不错的选择。

Python中的__str__方法

Python中类的__str__方法可以用来设置当使用某个对象的str()方法时需要返还的字符,在django里有些表单在使用关系模型的时候会用到这个方法,比如ModelChoiceField会调用__str__的返还值作为选项。有时候会因为django和Python使用字符编码不同造成错误:

UnicodeEncodeError: 'ascii' codec can't encode characters

使用Python中的另一个方法__unicode__可以解决这个编码的问题。

为什么用Google搜索

前几天因为Microsoft Azure的网址有变化,原先的http://azure.microsoft.com不见了,碰巧想看看Azure的文档就用搜索引擎搜了一下,以下是分别是Live.com、baidu.com和google.com返还的前两个结果。

Live.com
自己做的搜索引擎上居然搜索不出自己的产品。

baidu.com
没搜索到http://www.microsoft.com/azure/这个目录返还结果也基本没有一个有用的。

google:
返还我需要的Microsoft Azure的官方网站http://www.microsoft.com/azure/,问题解决。

Windows 7 Beta下载

经历过xp、vista微软终于还是回到比较正常的版本命名方式了,很显然玩文字游戏是没啥意思的,vista这个版本windows的失败是很显而易见的,除了华丽的用户界面和一些系统安全的改进几乎再没啥可取之处。再说说windows里这个比较重要的东西——浏览器,IE这个垃圾浏览器和系统结合的是如此的紧密,许多人要不是因为登录银行卡的系统都要使用IE的话恐怕都会第一时间把这个东西删除掉。前几天有文章写到“FireFox和Chrome运行GMail速度比IE快2倍”,我感觉岂只是2倍,某些使用IE6的电脑打开Gmail的时候就会IE会直接死掉,IE7的性能也非常低,最近开始测试IE8似乎性能略有提升,但绝对变化不大,跟firefox等浏览器相比依然非常垃圾。而且是漏洞百出,加上某些垃圾网站的流氓软件、木马等花样百出的东西也是基于IE设计的,所以造成了IE这东西居然成为windows中最大的安全隐患。。。

说了Windows这么多坏话Windows 7 Beta我还是要用的,想看看Windows 7比起Vista和Xp有哪些改进。以前Windows相比Linux的一些发行版的优势在于有较好的用户体验、更好的硬件驱动、和更多的软件支持,如今但ubuntu、fedora这些Linux发行版在这些方面已经赶超Windows的时候微软会在Windows 7中有怎样的变化,这是我所关注的。

据说Windows 7 Beta下载非常火爆,上周微软CEO史蒂夫·鲍尔默在CES上宣布公测Windows 7之后下载服务器曾经一度被用户挤爆,不过目前已经恢复,同时提供32和64位版本的下载,文件为2.44GB。下载时会提示需要登录Live账户,然后会提供给用户用于测试的激活码。

链接:

采用ObjectPaginator分页

以前的分页是从网上搜索的一些代码,居然不知道Django有ObjectPaginator这么个东西。最近看看了Gae Cookbook上的几个关于django分页的处方,其实用ObjectPaginator做分页模板非常简单。

ObjectPaginator的构造函数需要提供query_set和num_per_page这两个参数,也就是你要使用的数据集和每页的文章数。还有一个orphas参数默认为0,用来避免出现最后一页文章过少的情况。

def __init__(self, query_set, num_per_page, orphans=0):
        self.query_set = query_set
        self.num_per_page = num_per_page
        self.orphans = orphans
        self._hits = self._pages = None

这里我只生成了一个文章分页的数量列表和前一页、下一页三个链接,然后用ObjectPaginator类的方法判断这些链接是否显示,也就是用get_page()方法来取得当前请求页面的文章,用has_next_page()方法判断是否存在下一页,用has_previous_page()方法判断是否存在前一页。

paginator = ObjectPaginator(all_posts,10)
	if page >= paginator.pages:
		page = paginator.pages - 1
	posts=paginator.get_page(page)
	pages=range(1,paginator.pages+1)	
	show_prev = paginator.has_previous_page(page)
	show_next = paginator.has_next_page(page)
	page=page+1

参考:

Once in a Lifetime by Beyonce

完全是冲着2008 Fashion Rocks上Beyonce演唱At Last时和原唱者Etta拥抱的感人场景

Beyonce - Once in a Lifetime

JIEblog几个更新,搜索引擎优化

最近按照谷歌搜索引擎优化提到的几个项目对JIEblog进行一些改动,包括生成动态的description和keywords标签、为每篇日志生成title标签、生成可读的URL、新的站点地图、添加分类和分类页面,另外正在编写的是成就页面Archives Page。以前对分类Catagory和标签Tag的理解有些问题,分类应该是唯一的而标签应该是一种关键词,这样在使用的时候总的标签云正好可以对应站点的meta keywords,而每篇日志所包含的标签也正好对应每篇日志的meta keywords。

django.forms中ChoiceField的一个问题

按照django源代码中ChoiceField的构造函数只需要定义Choices这个参数就可以构建一个选择按钮。

class ChoiceField(Field):
    def __init__(self, choices=(), required=True, widget=Select, label=None, initial=None, help_text=None):
        super(ChoiceField, self).__init__(required, widget, label, initial, help_text)
        self.choices = choices

这个Choices参数可以是一个复合的列表或者元组类型,一个表示Choice的名称另一个表示Choice的值。通过这样构造表单应该可以按照选定的Choice来返还值。比如我需要通过一个名为Catagroy的models建立这个Choices,Catagory包括两个字段name和slug,那么这段代码应该类似:

choices=[(catagory.name,catagory.slug) for catagory in Catagory.all()]

这段代码在appengine里似乎有些问题,choices总是不能包括最近添加的选项。也就是说,本来你已经更新了添加了新的catagory,但是ChoiceField的选项并未随之更新,而ChoiceField的更新只在重启Develop Server或者改写代码之后,程序上传到服务器也是一样。不知道这是不是一个bug,或者Django的ChoiceField不是这样的用法。

最后我选择了用ModelChoiceField来代替ChoiceField,和ChoiceField不同的是ModelChoiceField接受的是一个查询,返还的是一个key而不是一个值,所以和Catagory关联的Post的catagory字段需要定义成一个ReferenceProperty。

catagory = djangoforms.ModelChoiceField(Catagory,query=Catagory.all())
Creative Commons 3.0 BY