MagicMongoDBTool的开发已经有50天了,在此期间,获得了很多朋友的帮助和支持,在这里先感谢一下大家:
最近追加的功能 又重新着眼于数据的检索查询。
1.聚合-Count
聚合的Count功能,这个Count值收到当前数据的IMongoQuery条件影响。可以在数据查询条件中修改。由于功能简单,没有独立窗体。
2.聚合-Distinct
聚合的Distinct功能。这个功能拥有独立的窗体,可以选择Distinct字段,可以选择加载一个查询条件。
3聚合-Group
4.JS执行
使用Eval功能执行简单的Js脚本。
5.Sql转Query(雏形完成)
解析Sql语句,捕获查询条件,将条件保存到一个XML文件中,让其他模块调用。
如果你现在拥有C#开发WinForm的知识,同时熟悉MongoDB,也拥有空余时间,邀请你加入开发团队。
昨天,群发了一封邮件给现在开发团队的朋友,
如果你想加入的话,可能对你有参考价值。 具体开发课题,你可以自己选择。任何对于项目有好处的贡献,都欢迎。
大家好。收到这封信的朋友,现在您的GitHub账号已经可以直接提交更新到代码库了,也就是说,你已经是MagicMongoDBTool项目的一员了。
【收到邮件后,请发一个确认函,以后,我将用这个邮箱和大家沟通,请不要向这个邮箱发送大文件。任何问题可以发到这个邮箱】
在下一个阶段开始之前,先将一些注意事项和大家谈一下。
首先,欢迎大家走到一起来开发这个项目,当然,我不是你们的Boss,大家都是志同道合的人。如果你有什么困难,不能继续投入时间和精力到这个项目, 你可以随时离开。
其次,关于你能对于这个项目的贡献,我的意见是
1.你可以贡献代码,也可以帮忙修正Bug,也可以帮忙维护GitHub上的Wiki,也可以只是提供一枚图标。反正只要对于项目有正面作用的,不论形式。例如这次Dragon同志提供了一份CodingRule给项目,也是对项目的贡献。写代码固然是最直接的贡献,但是代码只是项目的一部分,测试,文档,图标,翻译(国际化)都是项目质量的影响因素。
2.请量力而行。如果你的时间不是很充裕,不能保证开发时间,请选择一些小的课题进行开发。这个项目是团队开发,每两周都会有一个小预览版本给博客园的朋友试用。如果开发的功能长时间不能完成,或者做到一半没有兴趣再开发了,将会对项目造成很大的伤害。
3.开发课题的选择:由于大家都是自由的,自愿加入的,你可以选择任何你感兴趣的课题来研究,开发。在满足2的前提下,在通知我以后,你可以立刻动手了。
关于代码提交:
由于是团队开发,请一定保证您的代码不要覆盖别人的版本。关于GitHub的使用,在邮件最后有一个参考。
由于项目需要Merger,所以,请尽量及时提交代码。如果代码积累很多修改再提交,很有可能别人难以Merge(合并)
请尽量不要Rename一些全局变量的名字
关于开发
1.你的开发课题,最好独立在一个新的窗体里面,然后告诉我窗体名字和功能,我会将它放入菜单里面的。
(你可以决定菜单名称,位置等等,这个可以商量,如果有其他特殊要求,可以告诉我)
2.如果你需要新建Module文件,可以不告知我,新建新的Module文件,但是一定请放在Module文件夹下面
3.请尽量使用MongoDBHelper的既存函数,欢迎添加新函数
备选课题:
1.代码注释的订正
可能是比较无聊的工作,但是,很重要。一个专业的项目,注释也是非常重要的。你可以帮忙修改注释,包括订正错误。
例如,参数变了,但是没有反应到注释中。参数名称变了,没有反应到注释里面。
2.帮忙添加一些图标。
现在项目还缺少图标。包括这个项目的图标。你可以帮助找一些图标,放到GUIResource的资源文件里面去。
3.工具的使用介绍文章。维护Wiki (GitHub的Wiki)
4.数据的图形化展示:
MongoVUE里面有一个可视化功能,模仿这个做一个可视化的功能
5.SQL转MongoDB的Query
现在的Query功能的强化。直接通过SQL生成IMongoQuery
6.在数据展示的树形控件中,直接修改Document的内容,增加,修改,删除元素等等的功能
不通过Sql,直接通过可视化的方法操作数据展示区得树形结构,达到修改数据的功能
7。服务器状态,数据库状态查看功能的强化
在现有基础上的强化,有些状态值,MongoVUE里面有,但是我不知道怎么获取。
8.其他任何你觉得需要强化,修正的地方,包括UI布局等等。
现在已经在GitHub上发布了一个编译过的可执行文件,没有NET编译环境的同志可以直接下载使用。
(不过该文件是由NET4.0编译而成的)
关于讨论:
任何你想和大家讨论的问题,你可以在GitHub的 Issue上留言。请大家踊跃留言
关于项目现在状态
MoLing正在开发国际化功能
Dragon负责代码规范方面的内容,(今天早上,Dragon不能使用SVN提交文件,我帮他提交了他贡献的代码规范文档)
现在希望有人开发的课题:
(我接下来重点做Sql文的处理和Bug的修正)
大致思路和左边那颗树的操作一样,在加载数据到树形控件的时候,通过设置TreeNode的Tag属性来标示这个数据元素的位置。
当用户选中某个节点的时候通过读取Tag来定位数据。然后就可以删除某个节点,增加某个元素,修改某个元素了。
GitHub正确的提交代码:先fetch最新代码,然后Merger!!
http://gotgit.github.com/gotgithub/04-work-with-others/020-shared-repo.html
4.2.3. 合并后推送
当用户gotgithub完成推送后,共享版本库以及三个用户的本地版本库如图4-21所示。其中共享版本库变得和gotgithub用户的本地版本库相一致。
图4-21:用户gotgithub完成推送
此时如果用户ossxp-com执行推送,会遇到错误:非快进式推送。
ossxp-com$ git push
To https://ossxp-com@github.com/gotgithub/helloworld.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://ossxp-com@github.com/gotgithub/helloworld.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
GitHub并不对强制推送进行限制,但是用户ossxp-com不要用 git push -f 命令强制推送,因为那样会覆盖掉共享版本库中用户gotgithub的推送,正确的做法是获取共享版本库中新提交,并在本地版本库中和本地提交合并。过程如图4-22所示。
图4-22:合并操作示意图
图4-22是一个分节动作,实际上用户ossxp-com只需执行一条命令,即完成所有的操作:
ossxp-com$ git pull
如果一切顺利,合并后共享版本库以及三个开发者各自本地版本库的示意图如图4-23所示。
图4-23:用户ossxp-com完成合并的示意图
但是合并操作并不总是会成功,如果自动合并失败,会在暂存区对合并前后文件进行标识,工作区进入冲突解决状态,在冲突解决完成之前不能提交。冲突解决Git支持和多种命令行及图形工具的整合,只需执行如下命令,即可调用已安装工具进行冲突解决。
ossxp-com$ git mergetool
冲突解决完毕,执行提交。
ossxp-com$ git commit
如果在冲突解决过程把本地文件搞得一团糟,随时可以取消合并操作,让本地版本库的 master 分支退回到合并之前的状态,操作如下:
ossxp-com$ git reset --hard
这时用户ossxp-com的本地版本库示意如图4-24所示。
图4-24:取消合并后版本库示意图
取消合并操作后,分支 master 回退到合并之前,而分支 origin/master 则由于 git fetch 操作而变得和共享版本库当前 master 分支一样。若要再次开始合并操作,执行:
ossxp-com$ git merge origin/master
无论是自动合并还是手工合并,完成合并后的版本库示意图都如图4-23所示。用户ossxp-com若要将本地合并后的提交同步到共享服务器,还是执行推送操作。
ossxp-com$ git push
完成推送后的版本库示意图如图4-25所示。