为四川人民祈祷! www.onefoundation.cn
logo of kjam.org

Archlinux

虽然一直用 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 更新整个系统了.
comments: 1  
by kernel1983

Django Pagination

新翻译完成的 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

Paginator 对象

方法

page(number) -- 传入一个的页码(从1开始), 返回对应的 Page 对象. 如果所给的参数不存在(越界)就会抛出 InvalidPage 异常.

属性

count -- 对象总数, 包括所有页面.

num_pages -- 总页码数.

page_range -- 从1开始的页码, 例如, [1, 2, 3, 4].

Page 对象

方法

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 对象.

QuerySetPaginator 对象

如果使用 Django 数据库 API 中的 QuerySet``的话, 请使用 ``QuerySetPaginator 来代替 Paginator. 这会提高效率, 并且这两个类在 API 上并不存在任何差异.

之前的 ObjectPaginator

PaginatorPage 类是在 Django 开发版本新加入的(版本 7306). 在此之前的版本中, Django 提供了provided an具有类似功能的 ObjectPaginator 类, 但是使用起来不够方便. ObjectPaginator 类仍然会被保留, 作为向后兼容. 但是当你试图使用它的时候 Django 会提示 DeprecationWarning.

comments: 0  
by kernel1983

GAE top 3 issues

看到了 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 的乐趣.
comments: 0  
by kernel1983

Nexuiz

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 应该也不会很麻烦.
comments: 0  
by kernel1983

让我们为四川人民祈祷!

让我们为四川人民祈祷!

那么多小孩子阿, 真可怜. 希望能救活更多的人.


发现一个可以在线捐款的地方:
www.onefoundation.cn 支持支付宝, 财付通以及 Firefox 可以用的 Paypal.
comments: 0  
by kernel1983
1234567...19