讲给女儿的故事

树袋熊小考拉和小袋鼠的故事 在澳大利亚,有一片非常壮美的森林;在这片森林里,有一片非常美丽的桉树林;在这片桉树林里,生活着一群非常可爱的树袋熊,它们也叫考拉。这些考拉都是以桉树叶为食物,它们长得毛茸茸的、萌萌的,超级可爱,它们总是趴在树上,一动不动的,只有吃桉树叶的时候才挪地一下。其中有一只非常可爱的小考拉,它和它的爸爸妈妈、哥哥姐姐住在最大的一棵桉树上面,它们过着悠闲、慵懒的生活。有一天,小考拉对它的爸爸妈妈说:我要到那边的红果树林去看一看,我想吃红果子。它的爸爸妈妈懒懒地抬起头来,对它说:不行,红果树林太远了,我们考拉家族都是住在桉树林的。 可是小考拉它打算去试一下,它爬下了树,开始向红果树林出发了。它走得非常地慢,已经快到傍晚了,它才从这个树爬到那个树。小考拉说:原来红果树林看起来很近,走起来那么远啊,按这个速度,等我走到那边,红果子早就掉光了。不过,小考拉没有放弃,它趁着天没有黑先爬到树上,因为晚上的时候树下面很危险,会有其他危险的动物出来。第二天,它有出发了,没走多久,它遇到了一只非常可爱的小袋鼠。小袋鼠问它:你要去哪里呢?小考拉说:我要到那边的红果树林,可是我走得很慢,我觉得等我到那边,红果子早就没有了。小袋鼠说:没关系,我可以带你过去,你可以到我的小口袋里来。小考拉非常地开心,它和小袋鼠成了好朋友。 小考拉钻进了小袋鼠的口袋,不到一个小时,它们就来到了红果树林。小考拉说:哇,这片红果树林真大,这是我第一次看到红果子,小袋鼠你在树下等我,我爬上去摘红果子,虽然我走得慢,但是我怕树特别厉害。小考拉摘了很多新鲜美味的红果子,又大又圆又红。小袋鼠说:这是我第一次吃到树上新摘下来的红果子,真棒。到下午的时候,它们准备回家了,回去之前,小考拉摘了两份红果子装进小袋鼠的口袋里面。 小袋鼠和小考拉回到了桉树林,小考拉对它的爸爸妈妈说:我到红果树林去了,还吃了很多红果子。它的爸爸妈妈说:这怎么可能呢?那边那么远。小考拉说:是小袋鼠带我过去的,你们看,我还带回来很多红果子。它的家人一听,都亮眼了,赶紧爬下树,一起吃美味的红果子。一家人都非常感谢小袋鼠,小袋鼠说:我要回家了,我爸爸妈妈也在等我。小考拉说:另外一份红果子是留给你家人的,你带回去吧。小袋鼠和小考拉互相拜拜了,从此以后,它们经常在一起玩耍、摘红果子,它们永远都是好朋友。

October 8, 2019

一个普通炮兵的传奇经历

今天是国庆70周年,我们决定翻开女儿的妈妈的爷爷的一段封尘的历史,这是一个普遍炮兵的传奇经历。 爷爷上世纪二十年代生于桂西壮乡武鸣,1944年加入国民革命军46军,并成为美式炮兵营的一名炮兵,同年参加惨烈的桂柳会战,抵抗入侵广西的日军。1947年奉命随部队北上与鲁解放区作战,当时46军军长是地下党员韩练成,2月随部队并入华东野战军(后改编为三野)24军,编入72师炮兵营,先后参加孟良崮战役、豫东战役、济南战役、淮海战役、渡江战役和长山列岛战役。1952年成为志愿军进入朝鲜,协助防御上甘岭,1953年参加抗美援朝战争的最后一次战役金城战役。1954年返回桂西,加入广西军区训练营独立团,后来成为离休干部,直至1999年去世。 爷爷累积作战10次,负伤1次,他是反法西斯战争的英雄,也是共和国的缔造者。庆祝国庆、缅怀爷爷,我依然相信如墨西哥亡灵节所述,爷爷一直活在我们的心里。PS:愿战争永去、和平永续。 详细信息如下: 爷爷应该是1944年左右,被召入国民革命军四十六军,他是炮兵,而且是美式武器的炮兵(国军最精锐的部队,也是桂系最精锐的炮兵部队),同年年参加桂柳会战,也是抵抗日本攻占广西的会战,爷爷这时候应该已经完全掌握美式武器的使用了,此次会战之后一直镇守广西。 1947年第46军被调去山东战场参加进攻解放区,随部队北上,在山东莱芜一带与粟裕领导的华东野战军作战。当时军长是韩练成,他是解放前安插在国民党里面的地下党员。这场仗基本没怎么打,爷爷应该就随着军长归入华东野战军,作为能操作美式大炮的爷爷,自然而然成为了解放军。 1947年5月,参加孟良崮战役,歼灭国民党精锐74师。 1948年7月,参加豫东战役。 1948年11月,淮海战役,率先抢占运河铁桥,为保证大部队的通过,围歼黄百韬兵团赢得了时间,为表彰这次战斗,新华社专门播发了“运河桥头争夺战,歼灭黄匪立首功”的专稿。 1949年4月,参加渡江战役,5月参加上海战役。 1952年,随部队参加抗美援朝战争,总司令是彭德怀,当时军长王必成。1953年参加抗美援朝战争的最后一次战役金城战役。1954年6月,负伤(推测)回国。 1954年参加广西军区训练团,这个训练团1953年1月组建,始编3个营,后增1个营。1955年9月撤销,其第四营改编为广西军区训练营。1959年1月,改为广西军区训练队,次年3月撤销。

October 1, 2019

关于C#和.NET以及自己未来的一些计划

这几天把.NETCONF所有的视频都看了一遍,感叹微软的开放力度和对C#及.NET的推进力度。我写过Delphi、VB、C、C++、C#、Object-C、PHP、JAVA、Python,这一路过来总觉得太分散了,很难真正投入到推动一门语言的地步,现在看来,C#是初恋也是最爱,真不能在乱“移情别恋”了。未来最多使用Python进行一些ML(机器学习)涉及的方面的数据工作。 针对C#和.NET我一定持续关注,而且专注于她,这是工作需要,也是自己的发展需要。 1、全面梳理C#这门语言,虽然我已经写了12年C#了。 实际行动:把微软的文档看一遍,把那几本经典的书读完。(2019到2020) 2、应用.NET Core 3.0及未来版本。 实际行动:把公司的一个项目做成兼容linux平台。(2019) 3、研究Orchard Core项目。 实际行动:把自己的blog都迁移过来。(2019到2020) 4、研究ABP项目,顺便研究微服务架构和DDD结构。 实际行动:在公司的一个项目中完成。(2019到2020) 5、机器学习ML.NET研究和Python 实际行动:自己建模完成一些数据分析和预测。(2019起步,长期工作) 6、学习Azure、AWS技术和DevOps 实际行动:考下AWS证书,并在公司一个项目中完成Azure的DevOps。(2020到2021) 另外,学习nopCommerce和CSLA .NET两个开源项目的特点,吸收特长;学习Angular和Vue前端框架。

October 1, 2019

关于国家、政府、政党和公民的关系

**祖国、国家、政府、政党是四个不同的概念,这是一个基本的政治常识,一般有点文化的人都应该能予以区分。**但实际上,不管是有意还是无意,这一课我们就是没有学好,甚至很多高文化的人都没有搞清楚这四个不同的概念,常常把他们混为一谈。如此这般,便会造成我们思维上的混乱,影响我们对社会的分析与判断,还会闹出很多不该出现的笑话。 祖国、国家、政府、政党之间的关系。 祖国就好比是一块土地,这是个物理概念,这个地盘永远存在那里,不会消失,这个地方也是我们的祖先一直生活了几百年的地方; 国家就是这块土地暂时登记在谁的名下,国家是这个地盘最新的所有权人; 国家是个抽象的概念,这块土地的具体经营管理,还是需要一个总经理来执行,这个总经理即为政党; 一党制意味着只有一个总经理,多党制则意味着有几个总经理可以竞争上岗。 更简单一点的理解:国家好比我们居住的小区;政府是小区的物业;政党就是物业公司。

October 1, 2019

.NET Core 3.0 正式公布

根据微软博客的介绍,开发者可以面向 Windows、MacOS 以及 Linux 等系统平台下载 .NET Core 3.0 : .NET Core 3.0 SDK 与运行时 Snap 安装程序 Docker 镜像 此外, ASP .NET Core 3.0 与 EF Core 3.0 也已经一同发布。 Visual Studio 2019 16.3 与 Visual Studio for Mac 8.3 亦同时发布,且需要更新才能确保 .NET Core 3.0 与 Visual Studio 的协同使用。.NET Core 3.0 为 Visual Studio 2019 16.3 中的组成部分,开发者可以选择直接升级至 Visual Studio 2019 16.3,从而立刻获取 .NET Core。 感谢所有为 .NET Core 3.0 做出贡献的朋友们!此次最新版本的发布源自数百位团队成员的努力,也包括技术社区的重大贡献。 发行说明: .NET Core 3.0 发行说明 .NET Core 2.2 -> 3.0 API 的区别 .NET Core 3.0 贡献者名单 GitHub 发行版 关于 .NET Core 3.0 的 GitHub 问题解答 3.0 版本,开发者需要了解什么? 在深入探究 .NET Core 3.0 中的全部新功能之前,我们首先需要强调几项关键性的改进与指导内容。以下是整理出的要点清单: ...

September 25, 2019

讲给女儿的故事

“丑小鸭”的故事 在一片美丽的草原,有一条弯弯的小河;在小河的旁边,有一座美丽的小村庄;在村子的前面,有一棵高大的榕树;在榕树下面,鸭子妈妈正在孵她的小鸭蛋们。她已经孵了一个多月了,可是这些小家伙们一点动静都没有。又过了几天,终于有一只小鸭蛋有动静了,它摇来摇去,咕咚一声,从里面蹦出了一只黄色的毛茸茸的可爱的小鸭子。又过了几天,几乎所有的小鸭蛋都蹦出了一只又一只黄色的毛茸茸的可爱的小鸭子。可是,有一只最大的鸭蛋,它没有动静,它一动不动的,好像它哥哥姐姐的热闹跟她一点关系都没有。幸亏鸭子妈妈比较有耐心,她继续孵这只鸭蛋,又过了几天,这只鸭蛋终于有动静了,它摇来摇去,咕噜滚到了地上,从里面蹦出了一只黄色的…不!是一只浅灰色的大鸭子。它长得比它哥哥姐姐们都要大,而且它长得跟它们都不一样,它的哥哥姐姐觉得它长得有点奇怪,所以给它起了个名字叫丑小鸭。 就这样,丑小鸭跟它的爸爸妈妈、哥哥姐姐在一起生活玩耍。慢慢地,秋天过去了,冬天要来了,有一天,丑小鸭不小心走丢了!它找不到它的爸爸妈妈,也找不到它的哥哥姐姐了,这只小可怜。幸亏,它在路上遇到了小兔子乖乖,小兔子非常地热情,它对丑小鸭说:我们可以住在一起,我的窝里面特别的暖和,旁边还有很多好吃的东西。丑小鸭感谢小兔子乖乖,它和小兔子乖乖成了好朋友,它们在一起生活玩耍,过着非常快乐的生活。 慢慢地,冬天过去了,春天要来了,天气转暖了,冰雪融化了。丑小鸭从兔子窝里出来,它要到湖边去喝水,一路上很多小动物都朝着它这个方向大声地说:你们看,那边有一只美丽的小天鹅!可是丑小鸭没有看到小天鹅。丑小鸭来到了湖边伸头准备喝水,它发现湖里面真的有一只美丽的小天鹅,它微微笑跟小天鹅打招呼,小天鹅也微笑跟它打招呼,它对着小天鹅摇了摇头,小天鹅也对着它摇了摇头。这时候,它才意识到:原来它不是丑小鸭,它是一只美丽的小天鹅! 这时候,天空飞来了一群小天鹅,丑小鸭飞上去和它们打招呼,然后它就回来跟小兔子乖乖道别了,因为它要和小天鹅们去周游世界。丑小鸭每到一个新的地方,都会给小兔子乖乖寄明信片和礼物,小兔子非常地开心,虽然它不会飞,不能和丑小鸭一起去周游世界,但是它可以收到丑小鸭给它寄的明信片和礼物,它可以了解世界各地好玩的事情,它非常地开心。 丑小鸭和小兔子乖乖永远都是好朋友。

September 20, 2019

提交NSW和VIC的EOI

今天非常开心,通过了职业评估,应该可以获得15分的加分,但这个只是万里长征的一半-_- 收到评估结果,我马上就提交了NSW和VIC的EOI,不知道前途怎么样,这是我唯一的190希望了,真的希望两个州有一个能捞我… 念经、念经、念经

August 14, 2019

[转]SignalR Core 尝鲜-A developer's tour of SignalR Core Alpha

几个月前,SignalR Core 团队发布了一个非官方版本的 ASP.NET Core SignalR。为此,开发人员有机会了解其工作原理以及 ASP.NET SignalR 与 Signal Core 新架构之间的区别。 SignalR Core 中移除了哪些特性 通过对比两个版本的 SignalR 可以发现,新版本不再支持一些重要的特性。首先是移除了对 jQuery 和其他第三方类库的依赖,因为新版本的 JavaScript 客户端是使用 TypeScript 开发的。其次是自动连接后的消息重放功能,移除该功能主要是出于性能方面的考虑。服务器需要为每一个连接维护一个缓冲区,用于保存消息,以便后续重新发送。当客户端断开连接,可以尝试重新恢复连接,然后将未发送的消息发送给客户端。可以想象,如果有很多客户端断开连接,而且每个客户端都发送大量的消息,对于服务器来说是个很大的负担。另一个被 SignalR 团队移除特性是多 Hub 端点,所以,在新版本里,每个连接只有一个 Hub。 新版本的 SignalR Core 不再支持横向扩展(Scale Out)模型,原因是 MessageBus 被当成了横向扩展的“万灵丹”,但它实际上只支持Azure Service Bus、Redis 和 SQL Server。在实际的协作场景当中(客户端到客户端),随着客户端和消息数量的增长,通过以上三种方式进行横向扩展会有瓶颈问题。 不过,我认为,移除横向扩展功能这一决定有点太过激进,因为在某些场景下,MessageBus 仍然十分有用。例如,在将 SignalR 作为一个广播服务器时,它可以控制发送消息的数量。而在 SignalR Core 的 alpha 版本中,开发者可以根据实际情况选择是否进行横向扩展,如业务需求、系统约束或基础设施,这种设计更加“可插拔”。SignalR Core 团队提供了一个使用 Redis 进行横向扩展的示例。其他扩展方式可能会被包含在 SignalR Core 的最终版中。 最后一个被移除的功能是多服务器间的双向复制(backplane),因为这个功能会在服务器场生成太多的流量。ASP.NET SignalR 通过 MessageBus 在服务器间复制每一个消息,因为客户端无法直接连接到服务器场,而现在,SignalR 使用粘性会话来避免在所有服务器间复制消息。这样一来,SignalR Core 就可以知道哪个客户端连接到了哪台服务器上。 SignalR Core 中增加了哪些新特性 现在让我们来看一下 SignalR Core 带来了哪些新的特性。首先是使用了二进制协议来发送和接收消息。在 ASP.NET SignalR 中只能使用 JSON 格式的文本来发送和接收消息,而现在则可以使用二进制协议,该二进制协议基于MessagePack序列化格式,比 JSON 更快、体积更小。 ...

July 19, 2019

关于.NET Core情况

这几天终于抽出空啦看微软的Build 2019,看到.NET Core 3.0及相关技术的详细介绍,并且了解.NET的未来规划,感叹微软的伟大。 上图是.NET Core的web开发部分。 上图是.NET 平台大统一设计。 上图是.NET未来的Roadmap。 这就叫做技术领域的一统江湖。二十年前很多人嘲笑Windows的垄断和Microsoft的不开源(现在依然有老古董如此认为),如今,Sun寄人篱下并且靠着Java专利法残喘苟活。我一直觉得微软汇聚的是软件世界最优秀的工程师,这些人要是投身开源代码,那是很恐怖的,短短不到5年时间,微软现在成为开源代码贡献最大的公司。 如今.NET Core 在海外若日中天,当国内经济持续下滑,人力成本持续提高,你们就会想到用.NET Core了,一个公司只需要三名码农就可以搞定后端、前端、移动开发。不过很可惜,公司的人力部门都听CTO的,而这群Java养出来的没落贵族是不会自己变革的。 ​​​​

July 17, 2019

[转]WebAssembly 和 Blazor:解决了一个存在十年的老问题

本文要点 WebAssembly 是一种新的客户端技术,可以在所有现代浏览器(包括移动浏览器)中实现近乎原生的性能,而且不需要插件。 许多语言,包括 C、C#、Go 和 Rust,都可以编译成面向基于栈的 WebAssembly 虚拟机的代码。 .NET 代码可以在任何地方运行,包括浏览器内部。 Blazor 是一个客户端库,它在 WebAssembly 上使用.NET 来支持借助 Razor 模板使用 C# 编写的单页应用程序。 Blazor 支持代码重用和将遗留代码移植到现代 Web 应用程序的能力。 在 2019 年 4 月中旬,微软悄悄地推出了一个年轻的框架,从“一切皆有可能”的实验阶段过渡到“我们致力于实现这一目标”的预览版。这个框架名为Blazor,因为它在浏览器中运行,并利用了一个名为 Razor 的模板系统或“视图引擎”,促成了这个.NET 开发人员几乎放弃了的场景。它不仅允许开发人员使用 C# 构建客户端代码(不需要 JavaScript),还允许开发人员在没有插件的情况下在浏览器中运行现有的.NET 标准 DLL。 Blazor 有两种托管模式。本文主要关注客户端版本。你可以阅读“Blazor 服务器端托管模型”了解更多关于服务器端版本的信息。 Silverlight 的希望 在任何地方运行.NET 的梦想始于 2006 年,当时有一个名为“Windows Presentation Foundation/Everywhere(WPF/E)”的应用程序框架以 Silverlight 的形式向公众发布。第一个版本支持通过 WPF 引入的声明性用户界面,即可扩展应用程序标记语言(Extensible Application Markup Language,简称 XAML)。该平台提供了对 UI 元素的细粒度控制,并提供了自己的文档对象模型(DOM),可以通过 JavaScript 访问。 当 Silverlight 2 在 2008 年发布时,它通过一个作为浏览器插件运行的公共语言运行时(CLR)实现.NET 的完全支持,从而加快了采用速度。开发人员可以使用任何.NET 语言来构建 Web 应用程序,利用成熟的数据绑定模式,如 Model-View-ViewMode(MVVM),并使用 REST 或 Windows Communication Foundation(WCF)客户端与 Web API 通信。看起来,.NET 开发人员可以摆脱 JavaScript 的束缚,不用再担心跨浏览器测试,而是专注于一个具有公共代码库的平台来交付他们的应用程序。 ...

July 12, 2019