做了两天的jremind,我想把它继续做下去,做一个能拿的出手的软件,学习了版本的定义,也更改了软件的图标,要图标和软件的作用基本一致的啊!
版本我使用GNU 风格的版本号命名格式,因为这种命名格式可以从0开始,而Windows 风格的版本号命名格式和.Net Framework 风格的版本号命名格式都是从1开始的,我们要低调些,对吧!比如著名的foobar2000到现在还是在0.9的版本,还没1呢!所以我重新整理了一下版本,现在的最新版本是0.1.1.0的版本,0.1就是刚出生的版本,0.1.1.0今天刚添加了一个功能,并没有修改bug等功能。如果在0.1.1版本上局部修改或 bug 修正,那么版本就是0.1.1.1了!最后还可以添加一个编译版本号,就是被编译器编译过的次数了,可以没有这个了!还能用alpha beta等之类的,我的还没有成形,那就先不加了啊!
软件的图标我使用的是使用鹦鹉,添加了hello的文字,提醒一下了!hello,现在想想还可以学学酷狗啊!呵呵!可以发展,不过想的太远了啊!先发图看看吧! 做这个软件的初衷是用来提醒自己的,jremind的口号就是“时刻提醒着你自己!”!
软件版本号的知识
自己的无知啊!不知道怎么去定义软件的版本号,就乱给jremind定了一个。
好好学习一下版本的定义规则。
为了维护软件项目, 我们提出了对版本进行管理控制的要求. 而对于用户来说, 版本直接体现在版本号的命名上. 那么, 如何对版本号进行命名呢? 我查了许多的资料, 希望能解释得比较具体, 同时也希望您在阅读本文的时候, 能够对版本号的命名格式提出自己的见解, 这当然包括一些版本号命名的个例. 下面, 让我们看一下比较普遍的 3 种命名格式.
GNU 风格的版本号命名格式: 主版本号.子版本号[.修正版本号[.编译版本号]]
英文对照: Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]
示例: 1.2.1, 2.0, 5.0.0 build-13124
Windows 风格的版本号命名格式: 主版本号.子版本号[修正版本号[.编译版本号]]
英文对照: Major_Version_Number.Minor_Version_Number[Revision_Number[.Build_Number]]
示例: 1.21, 2.0
.Net Framework 风格的版本号命名格式: 主版本号.子版本号[.编译版本号[.修正版本号]]
英文对照: Major_Version_Number.Minor_Version_Number[.Build_Number[.Revision_Number]]
官方说明参考:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemVersionClassTopic.asp
由于, 有官方解释, 所以本文不做说明.
GNU 风格的版本号管理策略
当项目初版本时, 版本号可以为 0.1 或 0.1.0, 也可以为 1.0 或 1.0.0, 如果你为人很低调, 我想你会选择那个主版本号为 0 的方式;
当项目在进行了局部修改或 bug 修正时, 主版本号和子版本号都不变, 修正版本号加 1;
当项目在原有的基础上增加了部分功能时, 主版本号不变, 子版本号加 1, 修正版本号复位为 0, 因而可以被忽略掉;
当项目在进行了重大修改或局部修正累积较多, 而导致项目整体发生全局变化时, 主版本号加 1;
另外, 编译版本号一般是编译器在编译过程中自动生成的, 我们只定义其格式, 并不进行人为的控制.
Window 下的版本号管理策略
当项目初版时, 版本号为 1.0 或 1.00;
当项目在进行了局部修改或 bug 修正时,主版本号和子版本号都不变, 修正版本号加 1;
当项目在原有的基础上增加了部分功能时, 主版本号不变, 子版本号加 1, 修正版本号复位为 0, 因而可以被忽略掉;
当项目在进行了重大修改或局部修正累积较多, 而导致项目整体发生全局变化时, 主版本号加 1;
另外, 编译版本号一般是编译器在编译过程中自动生成的, 我们只定义其格式, 并不进行人为的控制.
另外, 还可以在版本号后面加入 Alpha, Beta, Gamma, Current, RC (Release Candidate), Release, Stable 等后缀, 在这些后缀后面还可以加入 1 位数字的版本号.
对于用户来说, 如果某个软件的主版本号进行了升级, 用户还想继续那个软件, 则发行软件的公司一般要对用户收取升级费用; 而如果子版本号或修正版本号发生了升级, 一般来说是免费的.
jremind内存优化
jremind启程
一直想做一个每隔一段时间给自己一个提醒的工具,在选取语言的时候,一直考虑着跨平台,想使用java或者python或者其他语言来做,但java需要虚拟机,很麻烦的,而python想很好的做出来,对我来说很有困难!而且我一直是在windows平台下工作的,最后选取了C#,不仅因为他容易上手,运行速度高,而且我相信,在以后的将来c#,也一定能实现款平台的!
使用C#来做jremind的时候,我还不会C#,但我把他当作VB来使用了,边学边做,还一边和朋友海聊,一共用了5个小时左右吧!现在实现的功能是,每隔30秒提醒一次,停留5秒,这些都是固定死的,以后在改吧!唯一可以修改的就是文字了!
暂时先这样了,以后看自己有兴趣了没,再添加其他功能。反正这个东西仅仅是为了给自己做个提醒而已。
开发用的是vs2008,运行这个还需要.net3以上的平台,如果为了用这个,还需要装个.net3,好像有点得不偿失了啊!呵呵!
今天又修改了一下,更新一下版本。
简单的dom4j和xpth的使用
公司项目要解析xml文件,很简单的,也就需要一点点信息,用的是java本身的解析方式,很麻烦。我做了一个DEMO,使用了dom4j中的xpath,简单,想去哪里的信息就去哪里的信息,简单灵活。
package com.inspur.eoms.pbb.open;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
public class TestMain {
public static void main(String[] args) throws UnsupportedEncodingException,
DocumentException {
StringBuffer sb1 = new StringBuffer();
sb1.append("
");
sb1.append("0
");
sb1.append("失败原因
");
sb1.append("
");
sb1.append("
");
sb1.append("接入设备ID
");
sb1.append("接入设备类型
");
sb1.append("预占端口ID
");
sb1.append("预占端口名称
");
sb1.append("
");
sb1.append("
");
sb1.append("
");
Document doc = DocumentHelper.parseText(sb1.toString());
List list = doc.selectNodes("/RESPONSE/RESULTS/RESULT/NAME");
Element elm = (Element) list.get(0);
System.out.println(elm.getText());
list = doc.selectNodes("/RESPONSE/DESCRIPTION");
elm = (Element) list.get(0);
System.out.println(elm.getText());
list = doc.selectNodes("/RESPONSE/RESULTS/RESULT");
Node node = (Node) list.get(0);
System.out.print(node.valueOf("@TYPE"));
}
}
dom4j需要的jar包的地址
http://www.box.net/shared/axb0oesgsu
时间管理101招
js实现打印
因为工作中使用需要打印,刚刚测试号的,可以使用。
日子慢慢过
来南京也好几天了,虽然一直在公司有网络,但一直都没有时间来写写!刚到公司,好多的东西需要学习,时间真紧的啊!说这个SSH2、WPS(IBM的WPS,一种工作流)、SOA,等等,好多的东西啊!
而且刚来就烦了几个错误,要改改啊!自己好好努力,现在的这个项目很大,学的东西也很多。多多学,不为别人,为自己努力!
释迦牟尼讲的话
看到的释迦牟尼讲的话,经典:
不要相信只凭听说的任何事物。不要相信世世代代流传下来的传统。不要因为众人都这么说而相信它。不要因为经典上的记载而相信它。不要相信权威、导师或长辈的教导。当你经过观察和分析后,认为事物与原则一致,并有助于个人和大家的善行与利益,才接受实行。