关于 gemfield

CivilNet maintainer

从Qt C++到QML功能的扩展

QML语法形成的qml文件在被declarative模块parse到内存后形成了一个object的树。这棵树描述了界面看起来的样子,以及附着在树中每颗节点上的方法及属性。但是,QML语法内置的element数量有限,有时需要扩展我们自己的element及方法,怎么办?

Qt c++ 一直是让Gemfield引以为豪的一种机制,使用元对象、属性系统等扩展了c++;现在,就来让Qt C++来解决上面的问题吧。事实上,这也是QML自身element的由来。QML中的每个element都映射到Qt C++中的一个对应的类型。像gemfield一样的Qt使用者就可以使用Qt c++提供的机制来创建新的QML element 。 继续阅读

CivilNet Mail Project

登陆CIVILNET MAIL(CivilNet邮箱:http://mail.civilnet.cn)

什么是CivilNet MAIL?

CIVILNET MAILCivilNet Server Project的子项目,是CivilNet社区采用netease mail技术的企业邮箱,邮箱格式为*@civilnet.cn。

如何使用CivilNet MAIL ?

第一、申请CivilNet邮箱(仅限CivilNet社区成员、SYSZUX社区成员、GB社区成员申请),CivilNet邮箱是后台人工分配账号,因此你需要在我要申请CIVILNET MAIL处回复你的账号。
第二、如无特殊情况,24小时之内将予以审核,邮箱默认密码为civilnet,在你首次登陆时,系统将强制你进行修改。
第三、通过给a@civilnet.cn发送申请信,可以新建或加入CivilNet邮件列表。 继续阅读

CivilNet Doodle Project

根据《CivilNet Act》,CivilNet Doodle ProjectCivilNet Blog上设置项目主页,也就是你看到的此文。

Project简介:

CivilNet Doodle Project 来自于CivilNet社区的涂鸦艺术,CivilNet社区决定将这些艺术以及负载的价值观传播更广,因此设立此项目;目前,CivilNet Doodle Project 维护着以下四个CivilNet Doodle: 继续阅读

CivilNet 社区

什么是CivilNet ?

CivilNet社区成立于2009年1月15日,是一个以法治、公民、科技、软件为主线的社区,遵循CivilNet社区的核心价值观——法治与公民。CivilNet社区置于《CivilNet Act》法律栈监管之下,并维护着CivilNet Project项目——这一项目囊括了若干个子项目,项目的资金来自于CivilNet Foundation (CF)。

CivilNet Act

稍后上线。。。

CivilNet Project

1、CivilNet Server Project (maintainer : Gemfield)

2、CivilNet Doodle Project (maintainer : daoke_li)

3、CivilNet SYSZUX Project (maintainer : Gemfield)

4、CivilNet Food & Drug Project (maintainer : Gemfield)

5、CivilNet Mobile House Project (maintainer : Canminco)

6、CivilNet House Project (maintainer: Capucivar)

7、CivilNet GB Project (maintainer : Gemfield)

CivilNet Foundation

目前,CF的资金来源全部为CivilNet Maintainer以及Approver的donate。

如何加入CivilNet?

CivilNet社区愿意与你分享关于法治、公民、科技、软件等领域的探索与进步,依据《CivilNet Act》加入CivilNet——继而更多的关注法治、关注公民、关注科技。

SYSZUXcom

根据《CivilNet Act》,CivilNet SYSZUXcom ProjectCivilNet Blog上设置项目主页,也就是你看到的此文。

Project简介:

SYSZUXcom是基于Qt框架的串口调试助手。
SYSZUXcom 使用了SYSZUXSerialPort串口类。
SYSZUXcom 支持windows平台、linux平台、mac os x平台。
SYSZUXcom采用GPL V2条款发布。

备注:SYSZUXcom的代码管理将于2012年年底迁移至CivilNet Server下的CivilNet Code系统中。

如何使用SYSZUXcom

1、下载SYSZUXcom windows系统安装包,直接安装使用;

或者

2、下载SYSZUXcom 源代码,自己在Qt支持的平台上编译发布; 继续阅读

SYSZUXmysql

根据《CivilNet Act》,CivilNet SYSZUXmysql ProjectCivilNet Blog上设置项目主页,也就是你看到的此文。

Project简介:

SYSZUXmysql 是CivilNet SYSZUX Project 维护的一个子项目;

SYSZUXmysql是一个标准的Qt工程,用于快速的、自动化的构建Qt的mysql插件库。

SYSZUXmysql使用了Qt提供的sql模块。

SYSZUXmysql采用GPL V2条款发布。

备注:SYSZUXmysql的代码管理将于2012年年底迁移至CivilNet Server下的CivilNet Code系统中。 继续阅读

SYSZUXpinyin

根据《CivilNet Act》,CivilNet SYSZUXpinyin ProjectCivilNet Blog上设置项目主页,也就是你看到的此文。

Project简介:

SYSZUXpinyin 是CivilNet SYSZUX Project 维护的一个子项目;

SYSZUXpinyin是一款基于Qt for Embedded linux的拼音输入法,可以输入字母、汉字、符号。目前支持Qt4.6以上的版本。旧的版本尚未测试。

SYSZUXpinyin 1.0使用了Qt提供的输入法接口QWSInputMethod。
SYSZUXpinyin 1.0SYSZUXpinyin的第一个版本,也是目前最新的版本。
SYSZUXpinyin 1.0采用GPL V3条款发布。 继续阅读

CivilNet SYSZUX Project

根据《CivilNet Act》,CivilNet SYSZUX ProjectCivilNet Blog上设置项目主页,也就是你看到的此文。

Project简介:

这个星球上的生命,都是珍贵与脆弱、卑微和自尊的混合体。我们害怕垄断,因为其是不公、专制、残暴、要挟的同义词。软件领域亦如此。任何时候,我们需要的都不过是一个“选择”。我们可以选择衣食住行,选择科教文卫,选择各种服务,选择国籍抑或是政府服务……有了这个选择,我们就显得珍贵而不是那么脆弱;有了这个选择,我们的个体就会有尊严而不是那么卑微。有了这个“选择”,就意味着有了制衡和约束,因而就有了民主和尊严,因而最终才会有美好的生活。而现在,在软件(software)的世界里,SYSZUX就是一个 “选择”。

CivilNet SYSZUX Project 现在维护以下子项目:

1、SYSZUXpinyin

2、SYSZUXmysql

3、SYSZUXcom

4、SYSZUXn9

5、SYSZUXbbs 继续阅读

CivilNet GB Project

根据《CivilNet Act》,CivilNet GB ProjectCivilNet Blog上设置项目主页,也就是你看到的此文。

Project简介:

CivilNet GB Project概念起源于CivilNet maintainer Gemfield的《你好,G币》一文,从“1小时社会生存成本”这个概念而来,你可以访问《你好,G币》来获得更多信息。 G币的意义在于让人们知道,对于智力的投资永远是最有价值的投资。文明的社会正在各种力量博弈中进化着,如果博弈失衡,大屠杀将不可避免。而现在,有的人在粉饰数据,G币则还原真实;有的人在莺歌燕舞,G币则曝光残酷。G币带着使命感的出现,正是想带给人们一种普世价值观:对自由和幸福的追求。 继续阅读

nokia N9的超频以及程序验证

自从N9有了INCEPTION工具后,USB host mode和cpu overlock就显得近了一步,当然还有其他功能——不过现在,N9的cpu超频来了。

gemfield本文作为CivilNet社区对N9的支持之一,将系统的说明如何在N9上进行超频,并使用程序加以验证。

第一步:安装N9的越狱工具——INCEPTION,该软件的官方主页在 https://endno.de/~itsnotabigtruck/inception/

你可以从 http://civilnet.cn/bbs/topicno/76515 下载此工具包。

安装步骤: 继续阅读

行走婺源

我的梦从未离开婺源。

听说,那里的徽派建筑错落有致,沉淀了徽商的文化遗存;听说,那里的茶园在青山绿水中写就了“祁红婺绿”的美名;听说,遍布于溪水巷陌间的古樟树,守卫着温润的家园;听说,江岭梯田油菜花开遍时,分不清天上与人间的好;听说,清华古镇边的彩虹桥,写有“两水夹明镜,双桥落彩虹”的诗卷……

继续阅读

雾灵山踏青?踏冰?

人间四月柳芽绿,山寺冰雪始消融。–题记

这次的清明假期,CivilNet社区发起了“雾灵山踏青”的活动。这是CivilNet社区今年第二次实际意义上的驴行。

但未曾料到,雾灵山因为高海拔山区的原因,我们的踏青活动变为踏冰之行了。但也不尽然,其中的甘甜与苦已经由美味的晚饭和温馨的热炕做了最好的总结。
继续阅读

温榆河的雪

流动的光辉之中,一切都失了正色:浓黑的树林,浅蓝的天空,莹白的雪地,这三色衬成的宇宙,充满了凝静,超逸与庄严;中间流溢着满空幽哀的神意,只能凝视,不能言语。      —–题记

周末闲来无聊,就想去温榆河边走走。但没想到,拉开窗帘却看到了雪的世界。

拍摄自N9;拍摄于2012年3月18日。

继续阅读

N9与Unix文化——UNIX基础知识、标准化

《第一台MeeGo Harmattan PC》一文中,gemfield提到了使用N9来学习《UNIX环境高级编程》的想法,并放出了硬件配置方面的视频。但是当CivilNet的maintainer canminco也表达了同样的兴趣后,gemfield觉得,应该制定个时间表——对于那些真的对UNIX感兴趣的人来说,至少gemfield的博客能提供一个稳定的期望。既然说到这里,我就再说的详细点吧。

《第一台MeeGo Harmattan PC》一文可以说是《N9与UNIX文化》系列文章的第一篇,而本文就是第二篇了,以后gemfield每周会在CivilNet BLOG上放出一篇文章。内容就是《UNIX环境高级编程》一书——每周对应一个章节。而gemfield此文对应的就是前2章。 继续阅读

为什么要研究排序算法?

排序算法是学习编程技术时的必修环节,也是算法类书籍的入门章节,那么,为什么我们要研究排序算法?

gemfield将其归纳为如下几点:

1、很多场合要用到排序。比如身份证系统、银行卡号、数据库记录等;这些记录很多的场合,快速的查找记录依赖于已完成的排序;
2、很多算法通常把排序作为关键子程序;
3、排序是具有历史意义的问题,是算法史的一个缩影;
4、哲学上的意义——万物皆有序。 继续阅读

第一台MeeGo Harmattan PC

诺基亚N9是一款非常amazing的手机(把800的广告拿来了 :-) ),CivilNet的maintainers中,使用N9的人比使用非N9的人还要多,由此可见一斑。

为什么CivilNet的maintainers如此钟爱这款设备呢?我想可以归结为以下几条:

1、N9是世界上最漂亮的手机,没有之一;

2、N9是世界上最自由的设备,自由软件包的比重最多;

3、N9是一款Qt powered的手机,Qt基于LGPL的版权、基于Meritocratic Governance Model的Open governance、以及跨平台的特性,使得Qt深受开发者喜爱;

4、N9还是一款很节约的手机,该有的软件大都有,而一些看似用户量很大,实际一点用都没有的废物软件还没污染到N9上;

5、N9是一款学习的机器,学习是我们的生活方式。这篇文章将是gemfield介绍UNIX文化的开始; 继续阅读

c++标准库的容器及算法

在有关数据结构的经典内容讲解中,数据结构和附着其上的算法可以算得是两大华彩乐章。让我们稍微回想一下,数据结构在入门级领域都涉及到 一些什么内容?

首先是排序算法,各种各样的;其次是数据结构,有栈、队列、堆、链表、二叉树、哈希表、红黑树、B树、跳跃表等;然后是更复杂和抽象的,我也不了解了,像图、矩阵神马的,gemfield的日常编程工作中用不到,所以就没有学习和了解的欲望了。

然而,即使对于上面的那些提到的数据结构,c++标准库也提供了完整的实现,让我们来看看:

———字符串容器————
string

——–顺序容器———
vector
list
deque

——-顺序容器适配器—-

stack
queue
priority_queue

——-关联容器———-

set
map

****************************gemfield的分割线**************

上面的这些c++容器内部或者使用了堆、栈、红黑树、跳跃表等结构,或者其中的操作使用了排序等算法,然后结合了泛型编程技术,就形成了伟大的耐用的c++容器及算法库——STL(标准模板库)。下面详细说说:

C++ 语言中,大多数类型都可用作容器的元素类型。容器元素类型必须满足以下两个约束:元素类型必须支持赋值运算,元素类型的对象必须可以复制。

大多数类型满足上述最低限度的元素类型要求。除了引用类型外,所有内置或复合类型都可用做元素类型。引用不支持一般意义的赋值运算, 因此没有元素是引用类型的容器。

第一部分:关于顺序容器的操作:

每种顺序容器都提供了一组有用的类型定义以及以下操作:
1、在容器中添加元素;

2、在容器中删除元素;

3、设置容器大小以及相关大小的操作;

4、(如果有的话)获取容器内的第一个和最后一个元素;

5、关系操作符,如果两个容器具有相同的长度而且所有元素都相等,那么这两个容器就相等;否则,它们就不相等;

6、访问元素;

7、赋值与 swap。

特别的,对于vector容器来说:vector元素是连续存储的,当我们在容器内添加一个元素时,想想会发生什么事情:如果容器中已经没有空间容纳新的元素,此时,由于元素必须连续存储以便索引访问,所以不能在内存中随便找个地方存储这个新元素。于是,vector 必须重新分配存储空间,用来存放原来的元素以及新添加的元素:存放在旧存储空间中的元素被复制到新存储空间里,接着插入新元素,最后撤销旧的存储空间。如果 vector 容器在在每次添加新元素时,都要这么分配和撤销内存空间,其性能将会非常慢,简直无法接受。

对于不连续存储元素的容器,不存在这样的内存分配问题。例如,在 list 容器中添加一个元素,标准库只需创建一个新元素,然后将该新元素连接在已存在的链表中,不需要重新分配存储空间,也不必复制任何已存在的元素。

为了使 vector 容器实现快速的内存分配,其实际分配的容量要比当前所需的空间多一些。vector 容器预留了这些额外的存储区,用于存放新添加的元素。于是,不必为每个新元素重新分配容器。所分配的额外内存容量的确切数目因库的实现不同而不同。比起每添加一个新元素就必须重新分配一次容器,这个分配策略带来显著的效率。事实上,其性能非常好,因此在实际应用中,比起 list 和 deque 容器,vector 的增
长效率通常会更高。

vector 容器处理内存分配的细节是其实现的一部分。然而,该实现部分是由 vector 的接口支持的。vector 类提供了两个成员函数:
capacity 和 reserve 使程序员可与 vector 容器内存分配的实现部分交互工作。capacity 操作获取在容器需要分配更多的存储空间之前能够存储的元素总数,而 reserve 操作则告诉 vector 容器应该预留多少个元素的存储空间。

弄清楚容器的 capacity(容量)与 size(长度)的区别非常重要。size 指容器当前拥有的元素个数;而 capacity 则指容器在必须分配新存储空间之前可以存储的元素总数。

程序使用这些操作的程序将决定应该选择哪种类型的容器。vector 和 deque 容器提供了对元素的快速随机访问,但付出的代价是,在容器的任意位置插入或删除元素,比在容器尾部插入和删除的开销更大。list 类型在任何位置都能快速插入和删除,但付出的代价是元素的随机访问开销较大。

通常来说,除非找到选择使用其他容器的更好理由,否则 vector 容器都是最佳选择。

适配器(adaptor)是标准库中通用的概念,包括容器适配器、迭代器适配器和函数适配器。本质上,适配器是使一事物的行为类似于另一事物的行为的一种机制。容器适配器让一种已存在的容器类型采用另一种不同的抽象类型的工作方式实现。

例如,stack(栈)适配器可使任何一种顺序容器以栈的方式工作。

第二部分:关于关联容器的操作:

在开始介绍关联容器之前,必须先了解一种与之相关的简单的标准库类型——pair,该类型在 utility 头文件中定义。 继续阅读

CivilNet的核心价值观

在《CivilNet社区法》中,关于CivilNet的核心价值观是这样描述的:法治+公民。

法治

法治强调的是在法律框架下的治理。法治的侧重点是最大限度的对公权力形成制约与监督。为什么呢?

让我们先来讨论下执政合法性这个问题。古代皇帝号称天子,天赋神权,在统治一国时尚需为自己来寻找合法性基础——权力来自上天赐予,这当然是建立在人们愚昧的基础上的。

执政合法性的本质在这里,一个国家或者一个地区在最初的时候,是没有政府或者公权力的,那么政府有什么必要存在呢?这是因为群聚的人类需要共同的基础服务,比如国防(抵御外族的入侵)、交通、应对自然灾害……还需要一些公权力来充当裁判,以及对内部恶势力的制裁;任何时候,我们都不要忘记,政府存在的合法性基础,以及公权力存在的本质——公民有选择的让与其私权利。

但即使是有选择的让与,众多公民私权利的让与所汇聚而成的公权力还是拥有很强大的力量。这也意味着公权力更容易造成更强大的侵害性、破坏力。为了阻止这种悲剧的发生,公权力必须约束在法治的框架下。这也是公权力法理层面上的合法性基础——法治的核心正是对公权力的制约。

因此,公权力的执行者必须要被牢牢束缚在法治的框架之下,具体的表现形式可以用一个常见的例子来描述: 继续阅读

从Meritocratic Governance Model到CivilNet社区的治理模型

在《CivilNet社区法》的立法过程中,关于“CivilNet社区如何治理”成为了一个关键的区域。不得不承认,自由软件社区——比如Qt-project,对CivilNet社区产生了重大的影响。我们在此借鉴了Qt社区的Meritocratic Governance Model(基于OSS-Watch Meritocratic Governance Model),意译过来就是——精英治理——有能力的人治理——能者居之。

Qt社区是一个对Qt感兴趣的、能者居之的、基于共识的社区;任何人只要愿意分享他对Qt的兴趣便可加入社区,参与Qt社区的决策过程,并为Qt的发展做出贡献。
Gemfield本文描述了Qt社区的MGM, 即5个层级的成员如何参与社区的决策。这一模型当然也会随着社区的发展而有所修正。
Qt社区的这一治理模型主要有2个目标:

继续阅读

N9升级MeeGo 1.2 Harmattan PR1.2及带来的新特性

此文作为CivilNet社区对N9持续支持的一部分,将详细描述N9升级PR1.2的过程。

正如先前诺基亚某官员放出的消息——N9将在二月多出的那一天迎来PR1.2的升级,这一天来得似乎还早了点。gemfield的N9也迎来了更新。

由于升级是推送在手机上的,所以首先是通过wifi,由手机自动进行升级。不过当280多M的更新包下完后,悲剧出现了——N9提示更新中断。并且重新升级也不行。

然后在设置里清理N9,经过20分钟的漫长等待后,重新下载升级,还是在下载完成后提示更新中断。我猜,可能是我在N9上编译Apache等软件包导致升级包校验错误了吧。

最后改用NSU更新成功。下面是我的步骤,对那些没有wifi环境的也同样适用。 继续阅读