虽然一直用 OS X, 但是心中总是憧憬着满世界都是 Linux 的那一天
但是我不喜欢 Ubuntu, 我相信它会变成一个 Windows 操作系统的 clone . 一切设置都有对应的图形化来的工具来完成, 我不喜欢这种风格.
于是在浏览了很多 Linux 发行版本以后, 发现了 Archlinux, 非常清爽的一个版本. 在这里不和其他发行版做任何对比, 没有意义还会引来口水. LinuxToy上面有不少介绍, 还有网友们整理的非常详尽的
打造完美的 Linux 桌面 PDF.
昨天在 VitrualBox 成功安装, 安装时间比 Debian / CentOS 要长一些, 不过远远小于自己动手搞定 Gentoo 的时间. 光盘大小只有158M, 一个很base的系统, 不强迫你做任何事情, 让你选择 nano 还是 vim, 选择包(当然是全选), 自己配置 /etc 下面的文件(这点很好, 不像某些发行版刻意用 bug 无数的图形化工具来做本来就很简单的事情, 并且向用户隐藏最本质的配置文件, 把用户当傻子 ).
唯一遇到的问题是网络, VitrualBox 可以让用户选择三种网卡, 选 intel 的那块就行了, 否则内核似乎不支持. VitrualBox 的 Nat 内网网关是 10.0.2.2, DNS 服务器要设为 10.0.2.3(/etc/resolv.conf). eth0 还不能用dhcp, 必须设成 10.0.2.x net mask 255.255.255.0 broadcast 10.0.2.255.
之后就可以运行 pacman -Syu 更新整个系统了.
post on 2008-06-4 14:25
新翻译完成的 Django Pagination,
djangodoccn虽然进度很慢, 但是还是 keep going.
分页系统
Django 开发版本新加入
Django 为需要分页的数据提供了一些类. 具体说就是那些, 需要被分成若干页的数据,
通常有 "上一页/下一页" 的超链接. 这些类被放在 django/core/paginator.py 模块文件里.
给 Paginator 传入一个对象列表, 以及每页需要显示的数量, 然后对象就可以告诉你分页后的数据:
>>> from django.core.paginator import Paginator
>>> objects = ['john', 'paul', 'george', 'ringo']
>>> p = Paginator(objects, 2)
>>> p.count
4
>>> p.num_pages
2
>>> p.page_range
[1, 2]
>>> page1 = p.page(1)
>>> page1
>>> page1.object_list
['john', 'paul']
>>> page2 = p.page(2)
>>> page2.object_list
['george', 'ringo']
>>> page2.has_next()
False
>>> page2.has_previous()
True
>>> page2.has_other_pages()
True
>>> page2.next_page_number()
3
>>> page2.previous_page_number()
1
>>> page2.start_index() # The 1-based index of the first item on this page
3
>>> page2.end_index() # The 1-based index of the last item on this page
4
>>> p.page(0)
Traceback (most recent call last):
...
InvalidPage
>>> p.page(3)
Traceback (most recent call last):
...
InvalidPage
page(number) -- 传入一个的页码(从1开始), 返回对应的 Page 对象.
如果所给的参数不存在(越界)就会抛出 InvalidPage 异常.
count -- 对象总数, 包括所有页面.
num_pages -- 总页码数.
page_range -- 从1开始的页码, 例如, [1, 2, 3, 4].
has_next() -- 如果有下一页, 返回 True.
has_previous() -- 如果有上一页, 返回 True.
has_other_pages() -- 如果不是第一页也不是最后一页, 返回 True.
next_page_number() -- 返回下一页的页码. 请注意此方法有些 "愚蠢",
不管接下来的页码是否存在都会返回一个数字.
previous_page_number() -- 返回上一页的页码. 请注意此方法有些 "愚蠢",
不管接下来的页码是否存在都会返回一个数字.
start_index() -- 返回当前页面对象列表中最开始对象的序号(从1开始),
相对于页码对象列表中的元素. 例如, 当页码对象列表中一共有5个对象, 并且设定每页对象个数为2,
则第二个page对象的 start_index() 方法返回 3.
end_index() -- 返回当前页面对象列表中最后对象的序号(从1开始),
相对于页码对象列表中的元素. 例如, 当页码对象列表中一共有5个对象, 并且设定每页对象个数为2,
则第二个page对象的 end_index() 方法返回 4.
object_list -- 当前页面对象上对应的元素列表.
number -- 当前对象的页码(从1开始).
paginator -- 指向对应的 Paginator 对象.
如果使用 Django 数据库 API 中的 QuerySet``的话,
请使用 ``QuerySetPaginator 来代替 Paginator.
这会提高效率, 并且这两个类在 API 上并不存在任何差异.
Paginator 和 Page 类是在 Django 开发版本新加入的(版本 7306).
在此之前的版本中, Django 提供了provided an具有类似功能的 ObjectPaginator 类,
但是使用起来不够方便. ObjectPaginator 类仍然会被保留, 作为向后兼容.
但是当你试图使用它的时候 Django 会提示 DeprecationWarning.
post on 2008-05-29 11:31
看到了 Google App Engine 的 issues 列表上三个需求最多的 features
1559 please add java or groovy support
1079 PHP support is a must
1070 Please add ruby support
语言之争永远是大多数开发者们的热门话题.
当然, GAE 是没有操作系统方面的问题, 否则一定也会很热门.
在 PHP 的支持者里, 还看到了唯一一个用中文提问的
kafeifei. 真有才啊!
不过在我看来, 如果 Google 的这群上帝们答应了这些家伙的请求, GAE Team 绝对会面临一场灾难.
很多成熟的基于 PHP/Java 的产品想要 port 上去, 估计也得满头大汗了.
还是希望 GAE 早点公开放号, 让大伙都有机会享受 python 的乐趣.
post on 2008-05-28 23:29
Free Game?
应该说, 不要钱的游戏还是很多的, 不过
Nexuiz 还是比较特别的. 三百多M的zip下载玩之后解压, 无论你在用什么系统(OS X, Linux 或者 Windows), 居然都可以直接运行.
游戏是 3D 类死亡竞赛游戏, FPS. 自从大学里玩 CS 的那个时代以后, 再也没有碰过这玩意.
zip包中还带有这个游戏引擎 DarkPlaces的源代码, 全部 C 语言写成, 编译也超级简单. Linux 和 OS X 只需要 make 就可以了, Windows可以选择的 IDE 有 Visual Studio 和 DevCpp(推荐这个, 免费的 mingw IDE). 当然由于有 makefile, 导入到 Eclipse 应该也不会很麻烦.
post on 2008-05-27 10:41
让我们为四川人民祈祷!
那么多小孩子阿, 真可怜. 希望能救活更多的人.
发现一个可以在线捐款的地方:
www.onefoundation.cn 支持支付宝, 财付通以及 Firefox 可以用的 Paypal.
post on 2008-05-14 10:44