岁月流冰的技术博客--笨瑜

No prepare is prepare to lose~~~~~~

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  15 随笔 :: 0 文章 :: 8 评论 :: 0 Trackbacks

#

1. 所有的原则和原理都有其适用范围。无论他们如何正确,都只能在特定的场合发挥作用。
2. 从简单开始,逐步求精,直至满足为止。
3. 不要只准备1中解决手段应付关键的工作。
4. 如果某个方法无法奏效,则用有用的方法代替它。承认错误,从失败中总结经验教训,避免下次再犯同样的错误。
5. 如果某个方法奏效,则在今后的工作中善待这个方法。
6. 不要重复犯错,更不要简单重复。
7. 不要固执己见,要全面考虑各个方案的优缺点。


posted @ 2008-05-09 19:21 岁月流冰 阅读(140) | 评论 (0)编辑 收藏

做开发工作基本都要使用P4,VSS等版本控制工具来进行代码的维护。
开发者需要修改某个文件得时候,需要使用P4等工具将文件添加到changelist里,并将文件由只读改成可写。当开发者在完成一天的工作之后或需要更新文件时,往往希望能够将打开的文件做个备份。如果需要修改的文件较多,手动备份是很麻烦的事情。

文件备份工具 就是用来帮助大家备份属性为可写的文件的。使用这个工具,可以帮助你本分某个目录下面的可写文件到任意给定的目录,并保持原来的目录结构,而只读文件则会忽略不进行备份。这样,就可以对开发者进行修改的文件进行备份。

本工具使用C#进行开发。





源码见链接
/Files/jasson/FileBaker.zip

posted @ 2007-12-13 14:23 岁月流冰 阅读(431) | 评论 (1)编辑 收藏

转自:(很多网站都有...)
        1.把C++当成一门新的语言学习(和C没啥关系!真的。);
  2.看《Thinking In C++》,不要看《C++变成死相》;
  3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
  4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
  5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
  6.会用Visual C++,并不说明你会C++;
  7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
  8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
  9.看Visual C++的书,是学不了C++语言的;
  10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
  11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
  12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
  13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
  14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
  15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
  16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
  17.C++不仅仅是支持面向对象的程序设计语言;
  18.学习编程最好的方法之一就是阅读源代码;
  19.在任何时刻都不要认为自己手中的书已经足够了;
  20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
  21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
  22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
  23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
  24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
  25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
  26.请看《程序设计实践》,并严格的按照其要求去做;
  27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
  28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
  29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
  30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
  31.学习编程的秘诀是:编程,编程,再编程;
  32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
  33.记住:面向对象技术不只是C++专有的;
  34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
  35.把在书中看到的有意义的例子扩充;
  36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
  37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
  38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
  39.C++语言和C++的集成开发环境要同时学习和掌握;
  40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
  41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
  42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
  43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
  44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
  45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
  46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
  47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
  48.保存好你写过的所有的程序——那是你最好的积累之一;
  49.请不要做浮躁的人;
  50.请热爱C++!

posted @ 2007-12-12 16:01 岁月流冰 阅读(153) | 评论 (0)编辑 收藏

最近遇到一个问题,在一个WinForm窗口中,按ALT+Z能够实现最小化到托盘及从托盘回复正常窗口。
刚开始,试着在窗口的KeyPress事件中添加,但是当窗口最小化到托盘后,焦点已经不在窗口上了,因此将不能捕捉键盘按键按下的事件,因此不能从托盘弹出。经测试,这种方法是错误的。
既然KeyPress事件不能解决问题,那么为什么不能添加热键呢?
添加热键的方法是
BOOL RegisterHotKey( 
  HWND hWnd, 
  
int id, 
  UINT fsModifiers, 
  UINT vk 
);
其中参数hWnd是注册热键的窗口句柄,id是热键的标识符,fsModifiers是在创建WM_HOTKEY消息时必须跟用户定义的按键一同按下的特殊组合键,他的值为:
Value Description
MOD_ALT Either ALT key must be held down.
MOD_CONTROL Either CTRL key must be held down.
MOD_KEYUP Both key up events and key down events generate a WM_HOTKEY message.
MOD_SHIFT Either SHIFT key must be held down.
MOD_WIN Either WINDOWS key was held down. These keys are labeled with the Microsoft Windows logo.
我们可以使用这个函数注册我们的热键。
在C#中使用这个函数,我们必须从user32.dll中将此函数导入,而且必须重写WndProc函数来捕捉热键消息。
以下为示例代码:
[DllImport("user32.dll")]
        
public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);
        [DllImport(
"user32.dll")]
        
public static extern bool UnregisterHotKey(IntPtr hWnd, int id); 

        
private void Form1_Load(object sender, EventArgs e)
        
{
            RegisterHotKey(
this.Handle, 8881, Keys.Z);
            
this.Hide();
            
this.ShowInTaskbar = true;
            
this.comboBox1.SelectedIndex = 0;
        }


        
protected override void WndProc(ref Message m)
        
{
            
switch (m.Msg)
            

                
case 0x0312:
                    
if (m.WParam.ToString().CompareTo("888"== 0)
                    
{
                        
if (bIsShowed)
                        
{
                            
this.Hide();
                            
this.ShowInTaskbar = true;
                            
this.WindowState = FormWindowState.Minimized;
                            
this.notifyIcon1.Visible = true;
                            
this.bIsShowed = false;
                        }

                        
else
                        
{
                            
this.Visible = true;
                            
this.ShowInTaskbar = false;
                            
this.WindowState = FormWindowState.Normal;
                            
this.Activate();
                            
this.notifyIcon1.Visible = false;
                            bIsShowed 
= true;
                        }

                        UnregisterHotKey(
this.Handle, 888);
                        RegisterHotKey(
this.Handle, 8881, Keys.Z);
                    }

                    
break;
                
default:
                    
break;
            }


            
base.WndProc(ref m);
        }
posted @ 2007-12-10 09:37 岁月流冰 阅读(1172) | 评论 (2)编辑 收藏

今天读了converse的文章《程序设计总结》,感触良多,说出了很多程序员经常遇到的问题,而像作者那种时常反思自己工作过程的习惯是值得我们学习的。
(文章地址:http://www.cppblog.com/converse/archive/2007/11/21/37107.html
我进入这个行业也有很长一段时间了,也有一些很深的体会,希望能够跟大家分享。
 1.    在完成自己的工作之后,一定要double check自己的作品,确认自己真的完成了任务,而且采用的是最好的解决方案。
        刚刚开始工作的时候,很喜欢追求所谓的effective,但是对effective的理解仅仅存留在了quick对层次上,对质量则报了一种比较放任的态度。结果,自己经常提交一些自己认为已经完成了的工作,结果往往会在被他人review的时候指出多处错误,颜面尽失,而因为过于追求进度,代码质量很差,经常会写出一些学生代码。鉴于此,在submit你的工作之前还是务必认真check一下,确认自己真的很好的完成了工作。
 2.    把一个feature当成一个完整的作品来做。
        往往我们拿到的工作只是一个系统的一个feature,这样我们会抱以一种这只是一个模块,做得怎么样都只是一个feature而已,在这种情况下,我们的提交往往都是灾难。所以,如果大家都把一个feature当作一个完整的作品,一个真正由自己完成的作品,那么你就会真正把这个feature当作自己的孩子一样对待,仔细揣摩,认真编码,最终,我们完成的会是一个质量很高的作品,而你也会为此自豪。
 3.    当你不了解一个系统是如何运行的时候,建议尽快进入debug,而不只是钻进文档的海洋。
        通过debug,你会很清晰的把握住一个系统运行的详细过程,这将对你掌握这个系统很有帮助。
 4.    尽量使用基本的方法解决问题。
        俗语说:简单就是美。虽然我们现在接触的编程手段一般都是OOP,继承,多态在很多人心里会是编程时的第一选择,而为了表现自己技术的全面,往往还要加入设计模式show一下。其实,最美的程序还是由基本的数据结构+算法组成,继承,多态,设计模式只是在我们没有其他方法可用的时候的一种妥协。
 5.    考虑问题尽量从大的方面开始,先把事情的骨架勾画出来,再fresh out。
        很多人在考虑一个问题的时候往往会钻进一个很小的角落,把所有精力集中于一个局部的问题上。其实,在我们刚刚开始考虑一个解决方案的时候,最好的办法还是先考虑High Level Design,然后才考虑一些局部的问题。对一个系统来说,设计才是最重要的。

posted @ 2007-12-08 22:43 岁月流冰 阅读(1351) | 评论 (4)编辑 收藏

仅列出标题
共2页: 1 2