大连对日外包程序员如何提高自己基础水平以及一些C#的资料链接

我在推上发了一些牢骚,有些朋友来面试,基础不是很扎实,理由是自己一直做对日外包,没有机会提升自己,掌握一些基础内容。

另外一个理由是公司只用了某某技术,没有用某某技术,只用了2.0,所以我不知道3.5、4.0等等。

这都不是理由。

这都不是理由!

 

这时候我假设自己是一个对日外包企业的程序员,吃完饭后老婆在看电视,我拿起Thinkpad笔记本,登录进著名的MSDN,开始继续自我提升的步骤。

坚持每天抽出半小时到一小时学习,足够你提升自己的水平!

这次也不推荐书了,只要能上网,就每天看一段MSDN的文章或者代码。保证能提高自己!

 

首先要知道自己缺少什么,有一个评估很有意思也很容易评估自己需要提升哪些地方:《程序员能力矩阵》http://static.icybear.net/%5BCN%5DProgrammer%20competency%20matrix.htm 这里假定我想提升Windows平台上DotNet、CSharp开发。

这里有一系列链接可以学习,每天一篇或者几天一篇应该没问题。其实比较好的办法是买本书系统学习,但我这里想说的是,资料到处都是,书籍唾手可及。

 

没用心不努力才是水平差基础薄弱的最大原因!

 

下面的链接没有什么系统性,如果有一两年经验了,看这些东西问题不大。

http://msdn.microsoft.com/en-us/library/3bwa4xa9.aspx Using Objects That Encapsulate Resources

这一篇要着重提一下,很多四五年经验的C#开发者,不知道using关键字的这种用法,怎么说呢,说你不求甚解好呢?还是说你不够努力好呢?

 

http://msdn.microsoft.com/en-us/library/dd642420.aspx Visual Studio 2010 Visual Basic and Visual C#

http://msdn.microsoft.com/en-us/library/618ayhy6.aspx C# Reference

http://msdn.microsoft.com/en-us/library/67ef8sbd.aspx C# Programming Guide

http://msdn.microsoft.com/en-us/library/dd460655.aspx Programming Concepts

http://msdn.microsoft.com/en-us/library/w0x726c2.aspx .NET Framework 4

http://msdn.microsoft.com/en-us/library/w0x726c2%28VS.90%29.aspx .NET Framework 3.5

http://msdn.microsoft.com/en-us/library/ff921347.aspx EnterpriseLibrary Unity MEF Prism这些概念,至少知道它们是什么

http://msdn.microsoft.com/zh-cn/magazine/default.aspx MSDN杂志

http://msdn.microsoft.com/en-us/library/orm-9780596516109-03.aspx C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers

http://msdn.microsoft.com/en-us/library/orm-9780596527730-01.aspx C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems

 

http://msdn.microsoft.com/en-us/library/k5532s8a.aspx .NET Framework 4 CLR Managed Execution Process

http://msdn.microsoft.com/en-us/library/f144e03t.aspx Automatic Memory Management (GC)

http://msdn.microsoft.com/en-us/library/ee787088.aspx Fundamentals of Garbage Collection

http://msdn.microsoft.com/en-us/library/ms404247.aspx Weak References

http://msdn.microsoft.com/en-us/library/ms172334.aspx Reflection and Generic Types

http://msdn.microsoft.com/en-us/library/a4a92379.aspx Accessing Custom Attributes

http://msdn.microsoft.com/en-us/library/ff519622.aspx Observer Design Pattern Best Practices

http://msdn.microsoft.com/en-us/library/sd10k43k.aspx Interoperating with Unmanaged Code

http://msdn.microsoft.com/en-us/library/hyz69czz.aspx Managed Threading Basics

http://msdn.microsoft.com/en-us/library/ms973850.aspx Microsoft .NET Framework FAQ

http://msdn.microsoft.com/en-us/library/ms973837.aspx Garbage Collector Basics and Performance Hints

http://msdn.microsoft.com/en-us/library/bb985748.aspx Displaying Metadata in .NET EXEs with MetaViewer

http://msdn.microsoft.com/en-us/library/ms973858.aspx Writing High-Performance Managed Applications : A Primer

http://msdn.microsoft.com/en-us/magazine/cc164086.aspx Implementing Coroutines for .NET by Wrapping the Unmanaged Fiber API

http://msdn.microsoft.com/en-us/library/aa479866.aspx Generics FAQ: .NET Framework

http://msdn.microsoft.com/en-us/library/aa479858.aspx Generics FAQ: Best Practices

http://msdn.microsoft.com/en-us/library/aa479859.aspx Generics FAQ: Fundamentals

http://msdn.microsoft.com/en-us/library/aa302329.aspx Improving String Handling Performance in .NET Framework Applications

http://msdn.microsoft.com/en-us/library/ms973880.aspx The Microsoft Shared Source CLI Implementation Refresh

http://msdn.microsoft.com/en-us/library/bb985613.aspx Migrating Native Code to the .NET CLR

http://msdn.microsoft.com/en-us/magazine/cc164123.aspx Calling Win32 DLLs in C# with P/Invoke

http://msdn.microsoft.com/en-us/magazine/cc164139.aspx The CLR’s Thread Pool

http://msdn.microsoft.com/en-us/magazine/cc164094.aspx Introducing Generics in the CLR

http://msdn.microsoft.com/en-us/library/ms973893.aspx Object Serialization in the .NET Framework

http://msdn.microsoft.com/en-us/library/ms973872.aspx An Overview of Managed/Unmanaged Code Interoperability

http://msdn.microsoft.com/en-us/library/ms973838.aspx Performance Considerations for Run-Time Technologies in the .NET Framework

http://msdn.microsoft.com/en-us/library/ms973839.aspx Performance Tips and Tricks in .NET Applications

http://msdn.microsoft.com/en-us/library/aa302338.aspx Primary Interop Assemblies (PIAs)

http://msdn.microsoft.com/en-us/library/bb264782.aspx Profiler Stack Walking in the .NET Framework 2.0: Basics and Beyond

http://msdn.microsoft.com/en-us/library/aa302324.aspx Using the .NET Framework SDK Interoperability Tools

http://msdn.microsoft.com/en-us/library/ms973826.aspx Using the ECMA Standards: An Interview with Miguel de Icaza

C语言中if (p==NULL)的是与非

博客园cnblogs不知为何最近开始渐有C语言开发重启的迹象,不少人开始写一些C语言的教程。

其中看到一段有趣的留言,提到这个写法:if (p == NULL),

有人说这是不好的~,经典不提倡的~,会写错出问题的~,华为都禁止的~。

 

我倒是有些不同的看法。

 

首先这种写法是有问题,一般来讲对于空指针可以这样写

if ( p )

或者反义是这样 if ( !p )

既简单,还节省字数。

 

如果是想写的比较容易懂,那么if (p == NULL) 是我提倡的方式。

你可以很简单的读成“如果p等于空值”,反过来的方式NULL==p就有些别扭,不是给人看的。

 

有人提到p==NULL很容易写成p=NULL,代码出错啦!会有bug啦!

 

好吧,我承认这是一种可能性,在早期编译器不完善的时候的确如此。那时候还提倡用匈牙利命名法,因为编译器对类型识别支持不好,很容易写出胡乱转型的代码(当然现在的C语言也容易)。但是针对正在使用的编译器以及将来更先进的编译器,在条件判断中使用p==NULL不是问题。

 

做一个很简单的实验,使用VC2010,项目设置为compile as C,注意关键一点“把warning级别提高到最高级别4”,这时候if (p=NULL )会得到如下警告:

1>purec.cpp(10): warning C4706: assignment within conditional expression

很简单吧,不需要你使用那种反人类常识的代码规范。

 

使用GCC(v4.5.2 in Ubuntu11.4)也很容易,它有一个编译选项-Wall,警告信息如下:

/home/sun/foobar-sample/main.c:24:2: warning: suggest parentheses around assignment used as truth value

 

如果工具支持,为何不使用一种更为合乎阅读习惯的方式呢,BTW,我查找了一下经典的K&R,其中==的使用都是我提到的p==0这种方式,其它更为经典的(有么?)我就不知道了。

Python程序员培训计划

Python程序员很幸福,因为他们不需要像C#程序员那样东一榔头西一棒子的找资源学习。

把下面资源按顺序学完,代码都自己手敲过,应该就是初级以上水平了。

http://docs.python.org/py3k/tutorial/

之所以选择py3k,是感觉新版本的生命力应该更长久一些。

 

学完tutorial,再看看这个Python竞赛,花个一两周时间搞定它。

http://www.pythonchallenge.com/

 

最后看看这本书,了解一些有趣的话题

http://product.china-pub.com/195771

 

如果有问题,搜索一下“python cookbook”或者到google新闻组python.cn发文都应该很快得到答案(只要你问的靠谱)

https://groups.google.com/forum/#!forum/python-cn

 

简单吧,Python就是这么简洁明朗!

C#初级程序员培训计划Junior Developer training plan

初级程序员培训计划

非技术培训目标

1)了解熟悉公司工作流程
2)如何进行团队合作,计划以及任务分解训练
3)一些有用的工作习惯养成锻炼,个人时间管理
4)演讲技能、英语技能、领导力提升
5)自学能力、解决问题能力的培养

 

技术培训目标

力争四个月时间将新人从C#新新手变成比较靠谱的C#程序员。

培训以个人阅读、实做为主,每天进行检查反馈,
每周有个可运行成果以及学习目标,每个月有个具有实用性完整的项目结果。

 

1)C#基础知识部分精读

http://msdn.microsoft.com/en-US/library/67ef8sbd%28v=VS.100%29.aspx
http://msdn.microsoft.com/en-US/library/618ayhy6%28v=VS.100%29.aspx
从1.0开始每个版本的What’s New精读。

时间:三到四周
结果:PPT,以及部分知识点的demo

2)C#代码示例解读

http://1code.codeplex.com/
http://msdn.microsoft.com/en-US/library/z9hsy596%28v=VS.100%29.aspx

时间:两周
结果:PPT,以及部分代码项目实际运行调试

3)C#常见手筋以及WPF/SilverLight/WCF使用

http://msdn.microsoft.com/en-US/practices
<Effective C#>
<More Effective C#>
<C# cookbook> http://go.microsoft.com/fwlink/?linkid=195369
<C# design pattern> http://go.microsoft.com/fwlink/?linkid=195402
SL数据绑定,CRUD操作
WPF的RSS阅读器以及本机ServiceBus的实现

时间:六周
结果:阅读笔记以及项目Demo

4)C#高级话题泛读以及快速应用

http://msdn.microsoft.com/en-us/vcsharp/aa336800
<CLR via C#>
垃圾收集等等

interview question for senior engineer
http://www.hanselman.com/blog/NewInterviewQuestionsForSeniorSoftwareEngineers.aspx

时间:两到三周
结果:PPT,以及部分代码项目实际运行调试

5)C#规范specification阅读,C#编程规范

http://msdn.microsoft.com/en-US/vcsharp/aa336809.aspx

时间:一周到九天
结果:PPT

6)C#开源项目快速阅读及应用,辅助工具使用

http://www.codeplex.com
http://csharp-source.net/
“mono project”