感悟一
其实有很多事情,你根本说不出它是对是错,即使你用很正确的逻辑,花很长的时间,你仍然不能得到令你满意的答案。就像《美丽心灵》中的主人公,他希望用自己的才华和惊人的逻辑思维弄懂一切东西,包括感情,可最终都是不可能的。
其实有很多事情,你根本说不出它是对是错,即使你用很正确的逻辑,花很长的时间,你仍然不能得到令你满意的答案。就像《美丽心灵》中的主人公,他希望用自己的才华和惊人的逻辑思维弄懂一切东西,包括感情,可最终都是不可能的。
今天在电脑面前从中午坐到晚上,终于将用来计算电脑开机时间的软件写完了,使用这个软件可以知道某段日子你的电脑的总工作时间,进而推断出电费情况,这在人们使用电脑时间很不均匀而又要交纳昂贵的电费的宿舍里比较有用,可以根据每个人的开机时间交纳相应比例的电费。
这次编写软件使用的是原本再也不想接触的vb.net,高中的时候读过一本这方面教程而且上机操作过,但直到现在还没有很认真的学习过,可以说是完全荒废了。更重要的事,编写当前软件要解决的问题非常之多,令我根本无从下手。一开始只能从google搜索相关信息从0学习日志的使用,学习vb的类及其成员。到黄昏的时候,这些问题就渐渐明朗了,到晚上,经过深入分析,终于写完了。
这件事让我想到,将来走向社会的话,所从事的行业很可能根本就不是我们在大学里学习研究过的,要想在社会中成长,就应该掌握从一个行业迅速转入另一个行业的能力,其中自学能力和自信心非常重要。我们应该在大学里就注意培养自己的这方面能力,主动扩展自己的知识面,同时还要一直相信没有什么是不可能的,我能过完成任何事情。
鉴于对开源的热爱,我也将这个程序的源代码及注释公布出来,希望一起交流学习。
(由于是可视化的开发工具,相应控件没有在代码中表现出来。)
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
Public Sub New()
MyBase.New()
‘该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
‘在 InitializeComponent() 调用之后添加任何初始化
End Sub
‘窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
‘Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
‘注意: 以下过程是 Windows 窗体设计器所必需的
‘可以使用 Windows 窗体设计器修改此过程。
‘不要使用代码编辑器修改它。
Friend WithEvents EventLog1 As System.Diagnostics.EventLog
Friend WithEvents cong As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents screen As System.Windows.Forms.Label
Friend WithEvents displayItem As System.Windows.Forms.Button
Friend WithEvents fromDatetime As System.Windows.Forms.DateTimePicker
Friend WithEvents toDatetime As System.Windows.Forms.DateTimePicker
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.EventLog1 = New System.Diagnostics.EventLog
Me.screen = New System.Windows.Forms.Label
Me.displayItem = New System.Windows.Forms.Button
Me.fromDatetime = New System.Windows.Forms.DateTimePicker
Me.cong = New System.Windows.Forms.Label
Me.Label2 = New System.Windows.Forms.Label
Me.toDatetime = New System.Windows.Forms.DateTimePicker
CType(Me.EventLog1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
‘
‘EventLog1
‘
Me.EventLog1.Log = "System"
Me.EventLog1.MachineName = "xombat-thinkpad"
Me.EventLog1.SynchronizingObject = Me
‘
’screen
‘
Me.screen.Location = New System.Drawing.Point(24, 112)
Me.screen.Name = "screen"
Me.screen.Size = New System.Drawing.Size(200, 40)
Me.screen.TabIndex = 2
‘
‘displayItem
‘
Me.displayItem.Location = New System.Drawing.Point(56, 168)
Me.displayItem.Name = "displayItem"
Me.displayItem.Size = New System.Drawing.Size(120, 48)
Me.displayItem.TabIndex = 3
Me.displayItem.Text = "显示开机时间"
‘
‘fromDatetime
‘
Me.fromDatetime.Location = New System.Drawing.Point(40, 24)
Me.fromDatetime.Name = "fromDatetime"
Me.fromDatetime.Size = New System.Drawing.Size(120, 21)
Me.fromDatetime.TabIndex = 4
‘
‘cong
‘
Me.cong.Location = New System.Drawing.Point(16, 32)
Me.cong.Name = "cong"
Me.cong.Size = New System.Drawing.Size(24, 16)
Me.cong.TabIndex = 5
Me.cong.Text = "从"
‘
‘Label2
‘
Me.Label2.Location = New System.Drawing.Point(64, 72)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(16, 16)
Me.Label2.TabIndex = 6
Me.Label2.Text = "到"
‘
‘toDatetime
‘
Me.toDatetime.Checked = False
Me.toDatetime.Location = New System.Drawing.Point(88, 64)
Me.toDatetime.Name = "toDatetime"
Me.toDatetime.Size = New System.Drawing.Size(120, 21)
Me.toDatetime.TabIndex = 7
‘
‘Form1
‘
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(240, 230)
Me.Controls.Add(Me.toDatetime)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.cong)
Me.Controls.Add(Me.fromDatetime)
Me.Controls.Add(Me.displayItem)
Me.Controls.Add(Me.screen)
Me.Name = "Form1"
Me.Text = "显示开机时间"
CType(Me.EventLog1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
‘此软件在什么情况下不适用:
‘1.通宵干电脑,而且在规定的断电时间前死机
‘2.玩电脑经常死机,而且断电时间和东北大学六舍的断电时间严重不一样的宿舍
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
fromDatetime.Value = DateTime.Now.AddDays(1 - DateTime.Now.Day) ‘默认值设为从这个月的第一天开始算起
toDateTime.Value = DateTime.Now ‘将当前时间设为默认值,作为时间段的末端
End Sub
Private Sub DisplayItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles displayItem.Click
Dim entry As EventLogEntry
Dim a As DateTime ‘a作为开机时间在下面的循环中被使用
Dim opened As Boolean = False
Dim spanTime As New TimeSpan(0)
‘”””””””””””””””””””””””””””””””””””'’用她的生日作为日期来填充这两个断电时间变量的初始化参数
Dim forceShutdownTime As New DateTime(2006, 1, 15, 23, 0, 0, 0) ‘周日到周四晚上的关机时间11点
Dim fromTime As DateTime = fromDatetime.Value ‘处理起始时间,使之从该天的0点0分0秒开始算起
fromTime = fromTime.AddHours(0 - fromTime.Hour) ‘否则,该天的时间会设为现在的时间
fromTime = fromTime.AddMinutes(0 - fromTime.Minute)
fromTime = fromTime.AddSeconds(0 - fromTime.Second)
For Each entry In EventLog1.Entries
‘”””””””””””””””””””””””””””””””””'’筛选时间段和特定事件
If (entry.EventID = 6005 Or entry.EventID = 6006) And entry.TimeGenerated >= fromTime And entry.TimeGenerated <= toDatetime.Value Then
If entry.EventID = 6005 And Not opened Then ‘开机时间
a = entry.TimeGenerated
opened = True
ElseIf (entry.TimeGenerated.Month > a.Month Or (entry.TimeGenerated.Month = a.Month And entry.TimeGenerated.Day > a.Day)) And entry.EventID = 6005 And opened Then
‘如果有死机事件发生,则会出现连续的多次6005事件,
‘如果这些6005事件发生在同一天,则后面的6005事件信息舍去;如果发生在不同的日期,
‘那么第一个开机事件相对应的关机事件被认为是强制关机(, 关机事件为学校规定的断电时间)
forceShutdownTime = forceShutdownTime.AddYears(entry.TimeGenerated.Year - forceShutdownTime.Year) ‘将日期设为当前日期才能加减计算出开机时间
forceShutdownTime = forceShutdownTime.AddMonths(entry.TimeGenerated.Month - forceShutdownTime.Month)
forceShutdownTime = forceShutdownTime.AddDays(entry.TimeGenerated.Day - forceShutdownTime.Day)
spanTime = spanTime.Add(forceShutdownTime.Subtract(a))
If entry.TimeGenerated.DayOfWeek > DayOfWeek.Thursday Then ‘如果在星期五星期六这两天死机,断电时间为11点
spanTime = spanTime.Add(forceShutdownTime.Subtract(forceShutdownTime.AddDays(-2)))
End If
a = entry.TimeGenerated
opened = True
ElseIf entry.EventID = 6006 And opened Then ‘关机时间
spanTime = spanTime.Add(entry.TimeGenerated.Subtract(a))
opened = False
End If
End If
Next
If toDatetime.Value.Day = DateTime.Now.Day Then
spanTime = spanTime.Add(DateTime.Now.Subtract(a)) ‘当前这次的开机时间
End If
screen.Text = "开机时间:" + CStr(spanTime.TotalHours)
End Sub
End Class
如果心中全是迷茫,那就用歌来发泄吧
海阔天空
我曾怀疑我 走在沙漠中 从不结果 无论种什么梦
才张开翅膀 风却便沉默 习惯伤痛能不能 算收获
庆幸的是我 一直没回头 终于发现 真的是有绿洲
每把汗流了 生命变的厚重 走出沮丧才看见 新宇宙
海阔天空 在勇敢以后 要拿执着 将命运的锁打破
冷漠的人 谢谢你们曾经看轻我 让我不低头 更精采的活
凌晨的窗口 失眠整夜以后 看着黎明 从云里抬起了头
日落是沉潜 日出是成熟 只要是光一定会 灿烂的
海阔天空 在勇敢以后 要拿执着 将命运的锁打破
海阔天空 狂风暴雨以后 转过头 对旧心酸一笑而过
最懂我的人 谢谢一路默默的陪着我
让我拥有好故事可以说 看未来 一步步来了

Google AdSense:通过广告获得收入
Google Sitemaps:提交您所有的网址供 Google 索引
Google Analytics介绍:精明. 易用. 免费.以上是我在使用windows live产品一段时间后的体会。而且我想采取的最主要计划便是,远离他。恩,不久我的myspace会完全转移到另一个站点,hotmail已经转到yahoo!,至于msn,会尝试完全卸载掉。
再回过头来看看微软的动作,风风火火要启动Windows Live计划,希望推出很多新服务,但是却没有在这方面倾注足够的精力。大家都知道,微软公司已经"进化"得和中国政府部门很像了,或者高层投入大量资金,但到达下面的却很少;或者只是雷声大雨点小,拿不出资金来,白白耗费了内力。
但是不能不说微软的初衷是好的,“您的朋友、最新的信息、电子邮件、搜索、PC 文件以及所有信息,您联机时关心的所有内容都融为一体”,这固然会给用户带来极大的方便,但微软没有注意到其他许多同样重要的方面。比如整合的同时还要注意独立,没有人希望自己要查看邮件的同时,还要分出一些宝贵的网络资源去打开目前不想使用的msn,myspace等;增加用户体验的同时还要注意性能,看看微软那极其妩媚的wollop,他确实增加了用户的体验,说实话设计得非常好,但是除了一些网络带宽足够快的用户,我相信大多数网民不会轻易登陆自己的wollop吧,很明显,没有人有哪些闲工夫,望着loading…的窗口等半天,然后耐着性子看着她慢腾腾地处理一些简单的动作。性能对大多数用户,尤其对于商务人士来说,非常重要,在时间(效率)和美观面前,他们当然会选择前者。
《微软离职员工称windows Live濒临瘫痪》见:http://tech.sina.com.cn/i/2006-08-11/08041081306.shtml
希望讨论一切有关windows Live策划方面的问题,不包括开发的技术问题
鉴于msn space种种无法令人忍受的缺点,我决定更换BSP,blogsome提供的blog是基于wordpress的,应该不错,就定居在这里了