改善 phpPgAdmin 人体工学 GSoC 2010
引言
本项目将改善 phpPgAdmin 的人体工学,使用诸如 JQuery 的 Javascript 工具。此页面将描述该项目。
PostgreSQL 和 phpPgAdmin 社区的益处
改进 phpPgAdmin 的人体工学将使用户在使用此应用程序时感到更加舒适。代码也更简洁,因此,开发人员将更容易进行更改,这可以轻松吸引更多开发人员为 phpPgAdmin 做出贡献。在某些操作中,Ajax 有助于实现这一点。
phpPgAdmin 的使用质量越好,就可能拥有更多的用户以及更多的开发者。
可交付成果
Ajax:锁、进程和查询结果将使用 Ajax。因此,事务将更快,而且只需重新加载屏幕上的很小一部分内容即可。
导航:我打算利用 Ajax 为 phpPgAdmin 提供在外键上进行导航的可能性。因此,您可以“遍历”关系。
文档:还将制定一份关于开发内容的文档,其中包括结果以及可以改进的内容。
项目计划
这是项目的进度表
4 月 27 日:会议。我打算与他计划在社区融合期间需要学习的内容;
4 月 30 日至 5 月 24 日:每周举行会议,说明我正在做什么,我下周打算做什么以及我的疑虑和障碍。在此期间,我打算开始编写该想法的代码,并向导师展示我的代码和示例让他分析。
5 月 24 日:正式开始编写代码。在锁页面开始编写代码;
5 月 28 日:与导师会面。提交我的第一个代码进行评估;
6 月 4 日:与导师会面。在进程页面开始编写代码;
6 月 8 日:与导师会面。在这个日期,我打算开始使用纯 XHTML 编写外键浏览;
6 月 11 日:与导师会面。这周继续编写外键浏览的代码;
6 月 18 日:与导师会面。这周继续编写外键浏览的代码;
6 月 25 日:与导师会面。这周继续编写外键浏览的代码;
7 月 2 日:与导师会面。开始创建中期评估。用纯 XHTML 完成浏览外键的第一步。开始用 Ajax 进行实现;
7 月 9 日:与导师会面。修订中期评估。继续用 Ajax 编写外键浏览代码;
7 月 12 日:提交中期评估;
7 月 16 日:与导师会面。完成外键浏览上的 Ajax;
7 月 23 日:与导师会面。展示已实施的 Beta 版本。开始创建最终文档;
7 月 30 日:与导师会面。修订所有已实施内容;
8 月 6 日:与导师会面。对已实施内容进行最终修订;
8 月 13 日:与导师会面。完成应用程序;
8 月 16 日:提交应用程序;
活动
4 月 30 日至 5 月 24 日——社区联系期:
在社区联系期期间,我与导师 Jehan-Guillaume de Rorthais 以及 phpPgAdmin 社区的其他开发者就我的活动进行了大量讨论。在我的第一项活动中,我不得不创建开发环境以在 Google Summer of Code 期间使用。
该环境由以下内容组成:
* Operation System Linux Ubuntu; * Apache; * PHP; * Postgresql (postgresql-7.4.26, postgresql-8.0.24, postgresql-8.1.20, postgresql-8.2.7, postgresql-8.3.9, postgresql-8.4.3, postgresql-9.0beta1); * Scripts to make tests;
我还使用了 Firefox 插件
* Firebug * Web Developer * Selenium
我之所以需要使用所有这些版本的 Postgresql 是为了执行回归测试。换句话说,我使用一个版本的 PostgreSQL 开发的内容必须能与其他版本一起使用。因为有很多数据库管理员使用 phpPgAdmin 管理其 PostgreSQL 数据库。
我还创建了一个脚本来恢复我的开发环境。这非常重要,因为只有三个月时间来进行非常充分的规划,任何意外都可能带来很大问题。
在此期间,我还学习使用新的版本控制系统 GIT。我拥有 Subversion (SVN) 的经验,并且使用过 Mercurial 和 CVS。我以前接触过 GIT,但不是非常专业的使用。它与 SVN 没有太大的不同,并且我在使用 GIT 时的适应过程中得到了导师的大力帮助。这当然是我职业生涯中的另一点积极因素。
5 月 24 日至 31 日——锁定页面的改进
我致力于改进 phpPgAdmin 的屏幕锁定。
我的活动只是做锁定(locks),它们会被重新加载,并且会在给定的时间自动发生。
现在,使用 Ajax,每隔 X 秒,都会自动更新锁。用户还可以中断更新,只需单击“停止”图像,然后在希望继续更新数据时单击“启动”。
更新时间在 phpPgAdmin 配置文件中定义。
由于该屏幕可以包含很多记录,因此在底部添加了一个链接,以便用户可以跳转到顶部,在那里可以找到按钮和操作链接。
因为这是我的第一个补丁,其他的 phpPgAdmin 开发人员提出了改进的建议,并且我渐渐更加熟悉了 phpPgAdmin 的方法论以及编码。
正在运行
用户输入锁定页面, 因此 phpPgAdmin 获取锁定信息并显示出来。因此,phpPgAdmin 使用 Javascript 和 Ajax,使用在配置文件中定义的时间重新加载信息。
如果用户点击“停止图标”,刷新就会停止
6 月 1 日至 8 日 - 过程页面工效学
在 GSoC(01/06 到 08/06)的第二周期间,我开始研究 phpPgAdmin 的“过程”页面。现在的“过程”屏幕具有与锁定页面中实现的相同功能。
本周,我还根据我的导师 Jehan-Guillaume de Rorthais 以及开发者社区的建议,对迄今为止实施的内容做了一些改进。他们的经验和善意极大地帮助了我的工作。值得祝贺 phpPgAdmin 社区。
正在运行
它与锁定页面刷新非常类似。仅自动刷新“已准备事务”和“进程”。
如果用户点击“停止图标”,刷新就会停止
6 月 10 日至 7 月 15 日 - 外键浏览(xHTML 版本)
我正在研究 phpPgAdmin 中的一项新特性。
借助此功能,用户能够通过表格浏览页面逐层浏览外来数据。
这样会在外键上添加链接。当用户点击外键时,它会在当前行的正下方显示引用的记录数据,同时在其自己的外键上也带有链接。
7 月 15 日至 8 月 16 日(结束) - 外键浏览(Ajax 版本)
在我发表第一个补丁后,我的导师(Jehan-Guillaume's Rorthais 先生)向我发送了一些我在学术生涯中尚未接触过的测试案例。数据库在同一列中具有多个外来字段、表名、模式和带特殊字符的列。其他开发者也提出了想法和建议。
我们在编写此补丁时遇到的最大困难在于,在插入新行(表示需要显示的记录)时,主表被拉伸为新记录的大小,这搞乱了布局。然后,我和我的导师选择让记录(FK 行)浮动在其他行之上,以递归嵌套方式。
数据库测试
可以在 testDatabase1.sql 和 testDatabase2.sql 中找到一些奇怪的数据库示例,这些数据库可用,但不建议使用。
开发者
学生:Leonardo Augusto Sápiras
导师:Jehan-Guillaume de Rorthais