Docker实践的自我认知

Docker实践的自我认知

前几天翻译了一篇文章,郁闷了好几天:
我自己.net阵营下开发已有经年。

在VS 2003年时代,在学校做毕业设计,一个Winform程序,单机版,SQL Server数据库十几个表,。

业务场景是的旅游管理系统,简单的一些CRUD操作,我用的
ADO.net,通过获得DataSet、DataReader,进行insert、select、update、delete。
反正系统没人用,自写自话,没有啥框架、分层概念(虽然理论上知道这些概念,但是实战中没有这个需求),就1个人使用,10几个表,几十条数据记录。

https://www.codeproject.com 看看文章、下载源码。
http://www.codeplex.com/ 微软出的源码共享平台

www.github.com 下载源码。

后来参加工作后,接触项目,慢慢框架、分层、缓存等等融入:核心是有需求场景、有数据量、有用户,技术就得更新升级。

IIS

轻量级网络服务器 Self Hosting Nancy

selfhost

SharpDevleop: plugin方式的

ORMs
方案1:NHibernate ORM to the .NET Framework
方案2:EF ( ADO.NET Entity Framework)
方案3:LINQ to SQL

iBATIS
在*.xml里面写SQL,由iBATIS进行DTO转换。

Select操作,表关联导致SQL优化。

插入数据库,涉及到批量。

如几十条记录,可以通过如下方式优化
性能分析:

foreach (var adjective in adjectives) {
    dataContext.AdjectivesExpanding.InsertOnSubmit(adjective)
    dataContext.SubmitChanges();
}

Or:

foreach (var adjective in adjectives) {
    dataContext.AdjectivesExpanding.InsertOnSubmit(adjective);
}
dataContext.SubmitChanges();

如果成百上千,则通过BCP进行批处理,项目中曾经通过BCP处理50万入库情况,速度在生产环境没问题。
BCP在Oracle、Sybase、SQL Server都支持。

Java Spring全家桶三件套,基本满足Java需求了。

Docker解决实际问题1:VPS搭建xifarm.com博客

采购了VPS,刚学习开始LAMP,大约需要1天,不会Ubuntu Linux系统走了很多弯路。
三四次反复实践后,通过shell批处理脚本,能在2~3小时内从0把VPS搭建好,换VPS方便极了。

在有了Docker后,找现成的LAMP镜像,短短20分钟即可搭建好(VPS在海外,Docker 网速不是问题)

即,效率从1天3小时20分钟,分别提高了70%,1000%
就这一点看,Docker在部署环境上,功不可没,极大提高了DevOps生产效率。

Docker解决实际问题2: Tensflow的学习

学习Python、学习Tensflow,配置环境是新人头大的事情。 Python默认安装的3.7最新版,但是Tensflow最好支持的是Python 3.5版本,还有其他环境,仅仅折腾Linux系统环境,以我的经历,半天都未必搞得定。
而有了Docker后,直接下载Tensflow镜像,20~30分钟时间即可开始写机器学习的hello world应用了,一下子飞了起来。
再也不用被烦人的环境配置问题困扰了。

做技术的,经常保持知识刷新,这个是必须的,尤其是teamLeader、架构师,吃老本很快就回出问题。

Docker docker实践的自我认知 Docker实践的自我认知 vGuay

Docker解决实际问题3: 干净环境的测试电脑。

快速干净部署一个虚拟机。

+------------+  docker build   +--------------+  docker run -dt   +-----------+  docker exec -it   +------+
| Dockerfile | --------------> |    Image     | --------------->  | Container | -----------------> | Bash |
+------------+                 +--------------+                   +-----------+                    +------+
                                 ^
                                 | docker pull
                                 |
                               +--------------+
                               |   Registry   |
                               +--------------+

微软.Net Core 3.0 预览版 7 发布:大幅减少 SDK 空间大小

这个预览版是 .Net Core 3 中重要的版本,可以视为原计划在 7 月发布的 RC 版本 (引自微软 .NET Core 首席 Program Manager Richard 先生原话),故可在生产环境进行开发和部署。

据悉,这个预览版是 .Net Core 3 中重要的版本,可以视为原计划在 7 月发布的 RC 版本 (引自微软 .NET Core 首席 Program Manager Richard 先生原话),故可在生产环境进行开发和部署。 Windows, macOS 和 Linux 版本的Download .NET Core 3.0 预览版 7 下载地址如下: 与此同时,ASP.NET Core 和EF Core 实体框架 也同于同一天发布。 针对 .NET Core 3.0 预览版 7 的新特性,Visual Studio 用户需要在 Visual Studio 2019 16.3 预览 1 中使用。 Microsoft .NET 站点已更新为.NET Core 3.0 预览版 7(请参阅网站页脚中提示 Powered by .NET Core 3.0.0-preview7-27912-14)。 且该站点已经在预览 7 上正常运行了两周多。 微软声称可能会在几周内将 Microsoft .NET 网站迁移到.NET Core 3.0 预览 8 版本。 另外,开发团队正在努力确保与 .NET Core 1.x 和 2.x 应用程序的高度兼容性,从而可以直接将现有应用程序快速升级到 .NET Core 3.0 版本。

.NET Core SDK 大小精简

使用 .NET Core 3.0 的 .NET Core SDK 要小得多。 主要原因是改变了构建 SDK 的方式改变,转而使用各种特定的“包”(引用程序集,框架,模板)。 在以前的版本(包括 .NET Core 2.2)中,我们使用 NuGet 包构建了 SDK,其中包含许多不需要的引用,导致浪费了大量空间。 您可以在.NET Core 3.0 SDK Size Improvements如何计算这些文件大小。 文章提供了详细说明,以便在自己的环境中运行相同的测试。 .NET Core 3.0 SDK 大小(括号中标注了大小更改)
操作系统 安装包大小 占用磁盘大小
Windows 164MB (-440KB; 0%) 441MB (-968MB; -68.7%)
Linux 115MB (-55MB; -32%) 332MB (-1068MB; -76.2%)
macOS 118MB (-51MB; -30%) 337MB (-1063MB; -75.9%)
Linux 和 macOS 的大小改进是令人惊奇的。 Windows 的改进较小,因为我们已将 WPF 和 Windows Forms 添加作为 .NET Core 3.0 的一部分。 令人惊讶的是,我们在 3.0 中添加了 WPF 和 Windows Forms,并且安装程序仍然(稍微)小一些。 您可以通过.NET Core SDK Docker映像包看到改进也不错(此处仅限于 x64 Debian 和 Alpine)。
发行版 2.2 压缩大小 3.0 压缩大小
Debian 598MB 264MB
Alpine 493MB 148MB
.NET Core 3.0 版本即将完成,故不再构建新功能,因此团队专注于稳定性和可靠性。 请尽快通过 Github 告诉开发团队您发现的任何问题,这样在发布 3.0 版本之前尽可能多地修复问题。

电脑要从娃娃抓起—技术布道

       IT技术社区,极大繁荣者,无外乎大学校园技术爱好者社区。  如此起彼伏的,***大赛、***技术爱好者社区……. 其背后大多类似有微软(Microsoft)、谷歌(Google)、火狐(FireFox)等行业巨头厂商默默的支持–真金白银的资助之。一个可以肯定的现象是,过去3年,西安的IT社区活动,如无较多的学生参与,鲜有超过30人以上活动(除了求职高峰期的月份外)。在2013年底的一次FireFox的市场推广活动,现场观众竟然有超过100人,令我震惊不已:随机打听了周围坐的人,均是***学校的–且是同宿舍的相约而来,我就说嘛,FF有这么火?

u=3516774791,1706111856&fm=23&gp=0  电脑要从娃娃抓起—技术布道 u35167747911706111856fm23gp0 thumb

     这些现象充分说明了未来的技术发展脉络:学生是祖国的未来、IT人才的源头、也是企业人才的风向标。

学生学习***技术,为了未来寻找***相关的工作。反之,企业需要***技术,首先得看目前市场可供选择的人才简历库,尤其是应届生的数量(在不考虑质量的情况下–数量很关键)。 有时候,往往因为某技术人才难招,企业不得不进行技术转型,把使用了多年了框架重新开发:因为没有后备人才,越往后拖,技术转型的压力越大。以西安的IT人才统计,2014年同期C#.net简历较2011年的少了一半以上—-某IT研发负责人透露。
或许,实际情况是,微软拥有.net独家技术,长期一家独大,加之Visual Studio正版价格居高不下,对于创业企业而言启动成本较高。另外一个可能的情况是,在悄悄默默的原因下,微软削减对IT技术社区的投入;与此同时,谷歌对开源社区-HTML5、JavaScript等Google相关的社区一直持续的投入者。
     2014年是个神奇的年份,距离1984年创业爆发年足足30年,说不定2014年也是一个历史爆发年。 抓住未来,抓住85后的潮流,则可把握未来的脉搏。

开发复用之表格控件:研发成本降低途径

最近,想起了比尔.盖茨的一句话:“免费是最贵的” ! 曾经很是不解。 免费不是很好吗? 可以网络下载盗版软件,下载盗版mp3;企业可以下载盗版控件等等。可以省钱,可以使用旗舰版,可以随时随地不受资金困扰——随心所欲的想干啥就干啥。

经历之后,对这句话才慢慢有所体悟。

本文就企业开发之控件简单聊一聊:曾几何时,在电信OSS行业,为了实现数据的导入、录入、导出、保存等这些重复的功能。使得多少程序员、在重复的事情上,渡过了多少个不眠之夜、挑灯夜战、风餐露宿的出差光影。。。。。。

Excel的批量导入、导出的通用功能点列举如下:

  • Excel导入的预览功能
  • Excel导入的编辑功能
  • Excel导入多Sheet页面的功能
  • Excel导入的嵌入图片功能
  • Excel导入的模板映射功能
  • Excel导入的数据校验功能
  • Excel导入兼容Office2003、2007、2010功能
  • Excel导出的风格格式功能
  • Excel导出的大数据功能
  • Excel导出的嵌入图片功能
  • ………

为了实现这些function point,大多数情况下,需要一行一行编写代码。

我们以2万/月/程序员 (外包成本核算), 推论出每个程序员每日成本约为1000元人民币。上述的feature,设计、开发、测试、发布,就以5个工作日估算 (理想情况下)。 仅为了实现这些商通用功能,软件企业需要支付的成本的至少在5万以上 (10个feature * 5天 * 1000元),这仅仅是一个产品的估算。 一个软件企业有5个以上的产品很常见。在国内的软件企业内部,各个产品之间,能够实现无缝的功能代码级的复用,实际上,难度比我们想象的大得多 (以笔者亲历的几家软件公司度量)。

维护成本呢? (软件生命周期中,前期研发和后期维护成本约为:20% : 80%)

走了一拨人,新来的一拨人重头再改造—推倒重来? 是的,现实确实很残酷!

 

以一个产品的3年生命周期算, 仅仅Excel导入、导出:

企业支付的货币成本:

1个产品: 15万人民币以上

5个产品: 30万人民币以上 (假设产品间同功能复用度达到了出奇高的80%)

备注:上述数字属于个人项目结合后自己的经验推算,仅供参考。

 

以笔者自己曾动手“傻乎乎”的开发的Excel导入、导出功能而言, Spread表格控件的Excel导入导出是数据分析系统的的最佳利器,没有之一。

假如多年前,我知道Spread存在的化,或许就会少死不少脑细胞—人生哪有那么多假如,洗洗睡吧!

Silverlight again

     自2012年秋天撂下SL编码的担子,大半年时间没有动Silverlight代码了。最近由于公司负责A项目的同事LX生病住院了,临近验收。领导说:“养兵千日、用兵一时。你手快”。

故,就上了。

动手、学习、犯错,断断续续约花费了3天时间恢复手艺:具体开发的东西能忘嘛! 稍微生疏而已; 分析业务、分解问题的能力还大大增强了呢。 毕竟咱靠开发这门手艺吃饭哩。

最大的一个经验:广义的复用!

这句话非常恰当描述我此刻所要表达:“你不会,你的同事会;而你们关系又不差,那就等于你会了”。任何人,在一家公司干的时间久的人,台阶就高,身后可依靠的人、资源就越多,故越容易出活。 即:任何产出物,它的贡献属于虚拟的、广义上的团队的结果,而不单单是个人之力。

开发过程疑难项

帮助过我的同事列表

美化UI,样式

Frq

绑定菜单

WCF通信

Gjf

WCF规则

UI规则开发

gwb

zy

复杂SQL

Lj

业务沟通

Zmf

SilverLight:前台新建SilverLight的项目,后台新建普通C#类库,两者不可依赖引用。可通过WCF、链接源码方式实现前、后台通信、代码共享。下面用表格把这PHP、HTML5、SL编程的异同列出来。

 

PHP

HTML5

Silverlight

前台-页面呈现

HTML5

HTML5

微软的style

前台-逻辑算法

JavaScript

嵌入的PHP语言

JavaScript

JQuery

简化版C#类库

JQuery

前台-样式美化

CSS3

CSS3

微软自己的,原理类似CSS

前台-源码可见

100%

100%

0%

前台-插件

不需要

不需要

需要安装SilverLight5插件

前台-后台通信方式

PHP API函数

XMLHttpRequest

JSONP

WCF

前台-后台通信格式

JSON

原始格式

JSON

原始格式

JSON

原始格式

后台-逻辑算法

PHP

Node.js?

C#类库?

完整版C#类库

经验:

1 磨刀不误砍柴工:前三天,因为写SilverLight代码手生,没有动代码。 把需求文档、DB文档反反复复看了三遍,整理出规律,实践证明,后来“机器人开发2500”行代码,是因为前期理解帮了大忙。

2 抽象设计能力,复用,极大的复用UI元素、SQL片段。 能不重复写代码就不重复写代码。 业务是多样化的,程序逻辑上有通用之处,要花大力气挖掘出来,而不是一块一块的搬砖写代码。

[译] 开发者角度,王道之论:Android 与 Windows Phone

前几天,在codeproject搜索Silverlight资料,偶然看到这篇文章,耐心读了2遍,非常不错:文章通过访谈聊天形式叙述,2位主角目前在《斯法克斯国家工程学院》软件学院上学。

周五晚上,我给作者Houssem Dellai发gmail,咨询能否授权我翻译为中文,并发布。 3个小时后,他很爽快的回邮件说没有问题,给我一个原文链接就行。

英文原文地址: Android vs Windows Phone

———————————————————————————————————————————

作者目前在突尼斯,属于非洲北部一个小国家,人口1000万左右,约西安市人口的规模。

自我介绍

大家好,我是Houssem Dellai: 一名Windows Phone 开发者(译:他曾多次参加突尼斯Windows Phone编程挑战赛并屡屡获奖,且已获得微软Windows 8认证)。我身边的这位是我的同学Zied Jaballah: 他是Android 开发者 (译: 他已有3年Android开发经验).

我们一起曾在droidcon conference in tunis中做了一个session分享:从开发者的视角分别就Android和Windows Phone移动终端开发平台的几个方面问答。

Android和Windows Phone PK:

首先,我们通过应用商店,即一个移动终端开发者如何挣钱这个话题展开讨论;紧接着又讨论了手机终端支持情况。 然后,对IDE集成开发环境进行了分析: Visual Studio和Eclipse. 再然后,讨论了开发者最关注的模拟器。最后,我们又讨论了Google和微软对UI设计的规范要求。 结尾部分,又聊了一下平板电脑的话题。

1 – 应用商店

Houssem: 首先,让我们从应用商店开始讨论吧,看看Google为开发者做了些什么?

Zied: Google的应用商店叫 Google Play, 目前包含了近百万的app应用, 全球下载次数超过250亿次以上。那么,Houssem, 微软应用商店的情况如何?

Houssem: Windows Phone 应用商店目前有超过13万应用app. 虽然在数量远远不如Android商店的庞大, 但是,你可以找到你需要的所有应用app程序。

Zied: 开发者如要在google商店发布Android应用, 首先需要拥有一个 Google Play账号,申请注册费用为25刀。 那么,开发者申请一个微软的商店账号,需要多少钱?

Houssem: 在微软商店发布应用,有2类不同账号:开发者账号,需要49刀;还有一个是企业账号,需要99刀的费用。

Zied: 为了在Googe Play商店发布你的应用,你必须要通过Google的验证审核,这个过程很快,大约需要15到30分钟。 那么, 微软的应用审核策略呢?

Houssem: 微软商店的审核大约需要5天时间。 如果你的app被拒绝,你同样会受到一个审核错误报告,微软会告之你如何改进。 Zied! 我注意到你的PPT中提到了’恶意软件’ ?!!

Zied: 是的, 这不是笔误。Google play商店良莠不齐,有很多恶意软件, 这个可能是因为审核过程过快,且 Android开发者群体数量庞大导致的。 事实上,google已经认识到这个问题的严重性,并且出了一个新政策,它参考了微软和苹果的做法,即通过应用的使用反馈情况来代替审核制度,如:Google允许你发布你的应用app, 然后它会扫描app是否属于恶意软件。 在今年2月,Google创记录的从应用商店下架了6万款应用程序。

Houssem: 感谢上帝,在Windows Phone商店,你不会受到恶意软件侵扰,她值得信赖。

2 – 手机终端

Zied: Ok, 我们现在讨论手机终端吧。你知道Android阵营拥有数量庞大的终端吗? 这些是为数众多的手机厂商生产的,如我们耳熟能详的三星、LG、摩托罗拉等。(译:还包括HTC和华为、中兴) 这些手机终端,纵横了低端、中端、高端市场的不同的用户需求。那么Windows Phone手机的情况如何?

Houssem: 拥抱Windows Phone的手机厂商有诺基亚、三星、HTC、LG等等(译:还包括华为、中兴)。微软出于想给消费者以最佳体验品质,故对硬件比较挑剔, 所以,目前市场上的终端的售价都较高。

3 – 集成开发环境(IDE)

Houssem: 截止现在,我们讨论应用商店和手机终端, 下面接着讨论一下集成开发环境(IDE)吧。为了开发Windows Phone 8程序,你需要安装Visual Studio 2012,如免费的Express版。 那么Zied, 谈谈Eclipse吧?

Zied: Eclipse是Android程序员使用最多的IDE,免费且开源。呵呵,最重要的是,它没有太多的需求。( Zied望着Houssem乐了一下 :P ).

Houssem: 对于要通过VS 2012来开发WP8应用程序,确实对运行环境比较挑剔,或者说稍微有点困难吧。如,VS 2012要求操作系统和硬件必须达到最低配置:硬件需要支持能够安装虚拟环境; 操作系统的要求是Win 8 专业版或者企业版,Basic版本不支持,更重要的是,要求Win8操作系统是64位的。

Zied: 那么对你来说,能够满足WP8开发的必备条件, 你算是很幸运了。 但是, 对于Eclipse 来说,则更幸运:压根就不挑剔操作系统和硬件环境。 如,你只需要安装JVM虚拟机即可。事实上,只要能够安装JVM虚拟机,程序员可以在Windows、Mac、Linux等任何操作系统下用Eclipse开发Android应用程序。

Houssem: 众所周知,Visual Studio给程序员非常爽的体验,如:调试源码很容易、高效的编程能力、定位错方便误、修复问题非常快等等优势。

Zied: Houssem,在调试源码这一点上你获胜了, Visual Studio的的确确在调试上把Eclipse远远甩在后面。 但是,我更喜欢Ecipse数量众多的插件,通过这些插件的配合,你可以做得更出色。那么,VS有插件吗?

Houssem: 插件,Visual Studio当然有啦! VS也有大量的插件,且这些插件大部分开源。 你可以通过VS来搜索不同的插件,安装或升级来扩展Visual Studio的IDE。

4 – 模拟器

Houssem: Ok, 我们接着讨论下一个开发者关注的话题:模拟器.

Zied: Android 模拟器运行的不够快,我周围的很多开发者都饱受其害。但是,Google 对一些新机器,通过类似快照技术加速,目前看效果还不错。 如,这里还有一个模拟器开源项目Android x80, 其运行效率非常高,或许是Google模拟器的可选方案之一吧。让我们看看,微软为开发者在模拟器方面做了些什么?

Houssem: Windows Phone 模拟器运行效率非常高。她采用了hyper-v作为虚拟化环境,所以响应很及时。

5 – UI设计

Zied: Ok, 对比WP8的模拟器,Android确实显得力不从心。那么,微软的UI设计方面的支持情况如何呢?

Houssem: 呵呵, 我很欣赏你的坦率。Windows8采用了一种叫做现代UI设计的新的图形风格。它基于“内容胜过形式”的思路,这也意味着,编程开发者只需要把心思放在编码逻辑上,而不用太多注意主题、颜色、外形等。 这种UI设计有其严格的设计规范,但也有一些可复用的模板和控件,故UI可以被做的很漂亮。 如,作为WP8的程序员或者美工,你将会通过微软的expression Blend设计工具的做出最佳视觉效果。 Blend是一个IDE,专门为美工而生,即美工不用安装VS 这种程序员专属的IDE。 当程序员熟悉这些规则后,他将在一开始的时候不用美工。等程序demo成型后,在考虑美工介入提升UI设计、美化等。

Zied: 在Android这一侧,设计是程序员较头痛的一件事情。 你不得不写大量的XML去调整UI,拖拽的方式调试UI元素效果往往不好。 但是,一旦你精通XML的设计模式,则会爽翻天。Google也有自己的设计规范,只是没有微软这么严格罢了。

截止目前,我们讨论应用商店、IDE、设计规范、手机终端。 下面讨论一下平台电脑情况吧。

6 – 平板电脑

Houssem: Windows tablet平台没有运行WP的操作系统,它运行的是Windows RT,这是一种轻量级的Windows 8操作系统,专为平板电脑设计: 不能运行.exe程序, 仅只能运行Windows商店里面应用程序。但是,另外一种叫做Surface Pro平板可以运行
windows 8操作系统和.exe程序。

我猜测WP8有80%的API和Windows8 API相同。故,你可以很容易的在WP8和Windows 8之间共享代码。

Zied: Android操作系统不仅可运行在手机终端,也可以运行在平板电脑。从Android 3.0开始, Google新增了专门为大尺寸屏幕设计的API,故你可以开发专门适用于平板电脑的应用。其平板应用程序使用起来效果非常好。

总结

一般而言,这种讨论无法一决雌雄。某些方面,Windows Phone占据优势, 另外一方面说,Android获得胜利。至于谁是王者,这取决于你选择采用哪个平台,选择权在你。

岁月在挑灯夜战中走过:亲历的软件框架

软件框架(Software framework),也称为软件架构(software architecture),是建立大型、规范软件研发的基本准则, “无规矩不成方圆”。 如,对超过10人的开发团队,超过12个月构建周期的软件产品的,是100%需要的。 在我所亲历的工作中,共有3个软件框架。 注意:软件框架和软件产品是2个概念,一个成熟的软件框架可为公司搭建好维持3年以上的基础,可在其上组合、构建不同市场的软件产品,可支撑上亿的项目簇、产品簇的。 这些框架各自实现方法不同,各有特色,但是有几个是所谓大型软件框架必备的:

  • 支持重用性
  • 支持插件组件 (依赖注入IOC)
  • 支持多人同时协同开发多个模块
  • 支持模块间通信(消息发送)
  • 可选的数据库切换
  • 可选的支持不同组件销售license控制
  • 可选的支持序列化
  • 可选的菜单配置
  • 可选的UI组件风格
  • 可选的日志记录

1. 软件架构一: 单机版、 三层架构:.net反射、观察者模式 关键词语:消息,组件,注册消息,业务视图类,数据采集、解码器、设计模式 应用周期:2005~2009年 亲历总结:至少4个版本的产品,单项目市场约50万人民币。 回头看,单机版的产品是相对较好设计的,层次也不多,方便新人较好的理解。由于未采用业内现成的框架,故有机会参与架构规则制定,故对学习的设计模式的有机会实战应用。 2. 软件架构二:RDBMS、 n层架构:Sharp Develop、IBatis、log4net 、开源框架 关键词语: Add-In插件、IOC依赖注入、OR mapping、异地团队协同开发、SQL 应用周期:2009~2012年 亲历总结:至少20个版本的产品,单项目市场约500万人民币。SD框架,是业内成熟的一个.net开源集成开发环境,其Add In尤为被人推崇,也较成熟。同时,由于多数据库的介入,如Sybase、Oracle同时要支持,故结合IBatis构建。 方便远程问题反馈,对log4net进行了移植。相对第一个土生土长的软件架构,参与构建的要少一些,更多的精力在做Add In业务模块。后来,对冗余的分层改造,如把Add in, Domain Model, DTO, Persistence, Services, Interfaces, UI这7层,在部分组件修改为: Add in, Services, Interfaces, UI4层,减少了3层。减少了系统构建的冗余度,利于新人介入,利于减少重复浪费。 3. 软件架构三: web、RIA 、SilverlightPrism框架(Unity)IBatis、末代技术 关键词语: XAP、XAML、Entity、WCF、DAO、bootstrapper、MVVM、JSON 应用周期:2012~2013年 亲历总结:至少10个版本的产品,单项目市场约500万人民币。作为微软最忠实的”信徒”,是业内极少采用SilverLight技术作大型系统案例的,更悲催的是在2012.12月,Silverlight被微软抛弃了。第一次有机会从事web的开发:通过快速学习这种末代web RIA技术和架构,搭建了目前已经商用的系统。业务方面是基于上面《软件架构二》的,换了一种新的技术而已。不过,对于习惯桌面应用系统开发者来说,还是有很大挑战的。如序列化,由于web的前端和后端两者有不同的类库,导致刚开始设计犯了不少低级错误。所幸,有链接类、条件编译,可以方便的实现前、后端源码复用,这种web的编程效率到非常高,商用的部署、升级也很方便。   关联文章: 职业话题杂谈

我的微软.net演进路线图

我的微软.net演进路线图

我的这几年,编程方面主要是跟在微软旗下奔跑的,主要语言是C#

集成开发环境(IDE) .NET Framework版本 介入年份
Visual Studio 2003 .net 1.1 2004
Visual Studio 2005 .net 2.0 2006
Visual Studio 2008 .net 3.0 2009
Visual Studio 2010 .net 4.0 2011
Visual Studio 2012 .net 4.5 2013
  • .net 1.1: 我记忆的关键词为ArrayList、Hashtable、DataTable、ado.net, delegate、event、纯粹的面向对象:单类继承,多接口继承。 String, thread, reflect, CLR、序列化、xml
  • .net 2.0: 我记忆的关键词为<T>泛型、List<T>、Dictionary<T>、partial, 匿名方法,PIvoke
  • .net 3.0: 我记忆的关键词为 var, getset自动属性, LINQ, silverLight, WCF、WPF,MVC,MVVM, Lambda
  • .net 4.0 我记忆的关键词为 并行计算、dynamic、可选参数

其中,.net2.0我系统的学习,那段时间刚进入软件开发这个行当2年,通过工作实战、上百的demo习惯,极大的树立了做一个高级程序员的上进心。而.net 2.0较.net 1.1革命式的进步,相对后面的几个版本演进,对我影响深刻的,如泛型的理解,编译期、运行期学习,对2008年全面介入C++标准模板库,起到了承前启后的铺垫作用。

既然从事windows桌面应用系统研发,自然要用到如下几种UI控件:GIS、chart、Grid,大量小众的UI如:textbox、button、richTextBox、GroupBox、Combox、label等等。

而这些UI控件,除了使用微软标准的控件外,大部分是采用了如下.net framework UI控件,排名仅仅代表我接触这些UI的时间早晚:

1. Component One: winForms

2. DotNetBar

3. Steema : Teechart for .NET

4. GIS: mapInf, mapTreme, ArcGIS, supermap

5. Qt

6. DevExpress for .NET

7. Infragistics netadvanage: UltraGrid

8. Telerik.silverlight

2013年7月11日,微软重组了。 网上有人说,微软要死了, 真的吗? 上次参加西安Qclub活动《那些年我们用过的框架 —— OpenParty好声音》, 在车上和ZhangSichu聊到这个话题, 他嘿嘿一笑,说就算微软挂了,3、5年内还不至于微软的东西大家都不用了。

除此之外,还涉猎了若干其他语言:

1. C++ 2008年,工作用一年时间,STL类库和Boost类库,采用Qt框架,买的书最多,花费了心思最多,当时听说C++比C#的工资高,干劲很足呢。

2. Lua 工作用了半年多,为了结合C++做分析规则引擎的。

3. Php、JavaScript、CSS,为了弄这个播客网站,自学WordPress的。

较好的学习思路,可参考:《每个研发人员都应树立的一个demo模式

每个研发人员都应树立的一个demo模式

在我早期学习编程实践的生涯中,有人告诉我, 要动手,多写快速demo,来验证学习的效果,即通过demo走,能够学习的很好,且持续的效果。长期应用这一招,屡试不爽,往往能够受到非常良好的效果。故我的第一台工作PC的Visual Studio 2005Projects文件夹下有上百的project demos。 后来,在学习设计、管理理论东西,也慢慢渗入demo的思想,均取得了较不错的效果。 如管理上的理论东西,可通过短、小的调查问卷、案例总结,也很有趣的。 如下面这个小故事: 某天早晨我做了个访谈实验:“你被毒蛇咬了,怎么办?” 儿子答,我把毒蛇打跑,谁让你咬“哥哥”。 奶奶说,用纱布包扎,去医院打针。 妈妈曰,用嘴把毒吸出来,包扎,去医院打针。

三个简单的问答含义却意义重大: 毒蛇咬人: 和同事的工作冲突、家人的争吵、公司的发展 应对方法: 借口、反抗、攻击; 吵架升级、影响面扩大到更大的程度,情感等极端事件; 自我颓废、消极应对工作、迟到、工作时间上网-聊天。 这些不良处理方法,会类似毒液,慢慢会渗入你的骨髓、心脏 ,导致你荒废了宝贵的年轻岁月,而到头来自己不仅不能有更加良好的收获,同时别人对你的看法也日渐行远。 较佳处理办法: 遇到问题,分析、思考,积极心态应对。 麦肯锡三原则较适用: 1 基于事实 2 系统化 3 大胆假设,小心验证   古人云:见微知著就是这个意思吧。