博客园翻车启示录

640

开发者的日常

640?wx_fmt=gif

作为一名996的开发者,我几乎每天只有两件事,制造bug和解决bug,这两件事,既替我解决了温饱问题、也替产品经理、测试工程师等一票人解决了吃穿问题。

嗯,有人为我这种程序员评了一个等级,我大概是第五等程序员。

       640      

但是。。。我是真的想写bug吗?。。。并不是。我也渴望能够编写更加优秀的代码,能够掌握更优秀的互联网技术框架、掌握更加优秀的开发方法,但是每天沉迷于搬砖之中不可自拔,哪怕每天认真阅读Robert大叔的《The Clean Code》,掌握好代码的速度也远远赶不上我写烂代码的速度。

(好吧,10个小时的写烂代码,却只有20分钟学习整洁代码。。。)

好吧,我的工作大概是这样的:

~溪源,你那个功能做完了吗?可以发布了么?

~可以发了,啥毛病都没有。

~那行,现在发吧。

~等下,我又发现了一个bug。

~那我等你五分钟。

~好的,只剩最后一个bug了,改完这个bug就可以发,就可以下班了。

-哎呀,卧槽,怎么天亮了。。

640?wx_fmt=jpeg

 ~你就不能做一个不写bug的程序员吗?

~对不起,我做不到啊。

~为毛啊。

~那天我去庙里上香,我虔诚的对菩萨说,菩萨,保佑我成为一个不写bug的程序员吧~

---然后我获得了永生。

以上内容纯属虚构,如有雷同,纯属巧合。

640?wx_fmt=jpeg

640?wx_fmt=gif

640

中国程序员的现状

640?wx_fmt=gif

中国的程序员大概是国内最苦逼的行业之一,每天996,下班还要回家学习各种新技术哪怕是BAT这样的大厂,优秀的开发者也不过是公司前进路上的一块砖石,无时无刻不面临着被牺牲的后果,如果未能在指定年龄之前,成为最拔尖的那一批人,那不管你多优秀,跟其他开发者没有任何区别。

“中年危机”,就像梦魇一般,既激发我们向前,更驱赶我们向鸭子一般,盲目的向前拼搏。或许我们可以逃出这座围城,但是围城之外却是留不住躁动心的舒适区。

无论如何,我们都得努力提高自己,先写更加优秀的代码,才能获得更多的机会,但是,bug却像魔咒一般。尤其是为了紧跟技术的步伐,我们会选择一些新技术,这就得迎接更加严酷的考验。

640?wx_fmt=gif

640

博客园翻车事件

640?wx_fmt=gif

例如,前不久,博客园就英勇而壮烈的翻车了。众所周知,博客园选择了一个构建在.NET平台之上的博客系统,而随着.NET Core的推出,博客园内部的许多系统也完成了从.NET FX到.NET Core的技术改造;而前不久,博客园也将博客系统升级到了.NET Core 3.0 Preview7,然后开始了挖坑、踩坑、填坑的过程。

前前后后,博客园进行了五次尝试,

【故障公告】发布 .NET Core 版博客站点引起大量 500 错误。

 https://www.cnblogs.com/cmt/p/11302666.html

【网站公告】.NET Core 版博客站点第二次发布尝试。

 https://www.cnblogs.com/cmt/p/11316324.html

暴风雨中的 online : .NET Core 版博客站点遭遇的高并发问题进展 。

https://www.cnblogs.com/cmt/p/11328141.html

Powered by .NET Core 进展:验证高并发性能问题嫌疑犯 docker swarm。

 https://www.cnblogs.com/cmt/p/11335456.html

同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线。

https://www.cnblogs.com/cmt/p/11347507.html

Powered by .NET Core 进展:第5次发布尝试(Windows部署)。

https://www.cnblogs.com/cmt/p/11357365.html

问题也从最开始的Docker swarm切换到Docker Compose的组件故障,到后来的.NET Core本身的一些故障,期间从博客园团队发布的一些内容来看,也似乎陷入了扯毛线扯掉了一件毛线衣的怪圈,不过最终还是发现了问题的核心,是来源于DbContextPool的线程池限制。

https://www.cnblogs.com/cmt/p/11355978.html

将这个对象去掉之后,终于尘埃落定,取得了短暂的平静,当然,即便如此也无法证明已经真正解决了所有问题,下周是否会重现本周的局面?不得而知。

640?wx_fmt=gif

640

问题分析

640?wx_fmt=gif

博客园对于.NET的执着,让无数优秀的.NET开发者钦佩,但是这些翻车事故,我个人认为,暴露了博客园的一些现存问题。

  • 1、使用还是处于预览版阶段的.NET Core Preview7,虽然已经属于go live,bug少不了,使用了非主流的容器编排技术Docker Swarm。

  • 2、未充分对业务进行大规模的压测和AB测试。

  • 3、将生产环境作为测试环境。

我也冒昧的提几点小建议:

  • 1、将这次环境切换过程的珍贵过程复盘,形成系统的.NET Fx互联网应用升级改造典型案例,让其他互联网开发者能够从中获益。

  • 2、将博客系统开源,让更多开发者参与其中来。

除此之外,也暴露了国内.NET技术圈存在的一些问题。

  1. 多如牛毛的学习资料,却显得不够系统,许多博客都是面向初级开发者,介绍的都是如何编写HelloWorld这样的知识。更高层次的开发者,往往只能借鉴于科学上网,从国外获取有用的学习资源。

  2. 由于国内基于.NET的互联网企业不多,使用容器技术构建互联网体系的更是少之又少,所以缺乏真正能够让企业快速借鉴的容器知识分享或社区交流氛围。

  3. NET技术圈对于大并发的经验不足,对类似的技术缺少分享。

  4. 闭塞的行业应用范围是.NET技术圈的硬伤,与其他技术社区很容易针对技术点发生讨论相比,.NET技术圈依然过于安静,例如当出现问题时,往往大部分开发者都只能看热闹,想插手都无能为力。

640?wx_fmt=gif

640

总结

在这样的大背景下,博客园的勇气依然值得赞赏,毫无疑问,博客园的初衷是渴望通过这次新版本的发布,成功的将.NET Core的优秀宣传出来,让更多开发者能够亲历技术的变革、加入.NET Core的转型之中,不过过程中遇到了太多坎坷。

这恰好跟我们平时开发过程中经常遇到的问题或我们采取的解决问题的办法一模一样。

所以,不要妖魔化博客园,也不必神化博客园,在技术这条道路上,每个人都需要更加努力的学习,并不是为了面子、也不是为了成为第一,而是为了打造更加优秀而完美的产品。

限于时间仓促,胡言乱语,还请诸君见谅。

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314370.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[2020多校A层11.25]最大K段和(反悔贪心)

[2020多校A层11.25]最大K段和 对于一个长度为n的序列&#xff0c;求解不相交的k段使得他们的总和最大&#xff0c;输出最大值。 n<1e5 对于这种问题&#xff0c;我们没有思路求解&#xff0c;可以考虑枚举&#xff0c;发现无法枚举&#xff0c;然后考虑dp&#xff0c;发现…

asp.net core 从单机到集群

asp.net core 从单机到集群Intro这篇文章主要以我的活动室预约的项目作为示例&#xff0c;看一下一个 asp.net core 应用从单机应用到集群部署需要做什么。示例项目活动室预约提供了两个版本&#xff0c;集群版和 单机版单机版方便部署&#xff0c;不依赖其他环境&#xff0c;数…

杜教筛模板(P4213 【模板】杜教筛(Sum))

P4213 【模板】杜教筛&#xff08;Sum&#xff09; 套路推式子 求s(n)∑i1nf(i)∑i1n(f∗g)(i)∑i1n∑d∣if(d)g(id)∑d1n∑i1⌊nd⌋f(i)g(d)∑d1ng(d)S(⌊nd⌋)g(1)S(n)∑d2ng(d)S(⌊nd⌋)则有g(1)S(n)∑i1n(f∗g)(i)−∑d2ng(d)S(⌊nd⌋)求s(n) \sum_{i 1} ^{n}f(i)\\ \su…

[2020多校A层12.1]树(倍增/单调栈/dfs栈)

[2020多校A层12.1]树 求解树上从u到v的最长贪心上升序列&#xff0c;也就是只要有比它大的就选择它&#xff0c;可以发现这个问题性质&#xff0c;就是每个点对应了唯一的一个第一个比它大的点&#xff0c;那么我们可以向它们之间连边&#xff0c;然后问题就转化为求解从当前点…

通过Blazor使用C#开发SPA单页面应用程序(3)

通过Blazor使用C#开发SPA单页面应用程序(1)通过Blazor使用C#开发SPA单页面应用程序(2)今天我们来看看Blazor开发的一些基本知识。Blazor中组件的基本结构可以分为3个部分&#xff0c;如下所示&#xff1a;//Counter.razor//Directives section 指令部分page "/counter&qu…

NC14250 MMSet2

MMSet2 思路 这道题目显然能够通过31051063 \times 10 ^ 5 \times 10 ^ 63105106的复杂度来暴力&#xff0c;这显然不能达到题目要求的复杂度&#xff0c;因此我们可以对题目要求我们计算的东西进行转换。 某个点到所有点集的最大距离最小&#xff0c;这就有点像是重心的求法…

[2020多校A层12.3]虚构推理(语言/二分/数据结构)

[2020多校A层12.3]虚构推理 给定n个时钟精确到秒&#xff0c;求解一个时间&#xff0c;使得它的指针和所有其他的时钟时针和分针分别的角度最大值最小。 一道毒瘤的二分题&#xff0c;看到最大值最小&#xff0c;我们很容易想到二分答案。然后我们的关键是check&#xff0c;那…

ASP.NET CORE 2.* 利用集成测试框架覆盖HttpClient相关代码

ASP.NET CORE 集成测试官方介绍我的asp.net core 项目里面大部分功能都是去调用别人的API &#xff0c;大量使用HttpClient&#xff0c;公司单元测试覆盖率要求95%以上&#xff0c;很难做到不mock HttpClient 达到这个指数。以下方法是我自己总结的在单元测试里 mock httpClien…

Expected Value Again(咕咕咕)

Expected Value Again 神题&#xff01;&#xff01;&#xff01;

[51 nod 1238] 最小公倍数之和 V3(杜教筛)

1238 最小公倍数之和 V3 推式子 ∑i1n∑j1nlcm(i,j)∑i1n∑j1nijgcd(i,j)∑d1n∑i1n∑j1nijd(gcd(i,j)d)∑d1nd∑i1nd∑j1ndij(gcd(i,j)1)∑d1nd∑i1nd∑j1ndij∑k∣gcd(i,j)μ(k)∑d1nd∑k1ndk2μ(k)∑i1ndk∑j1ndkij\sum_{i 1} ^{n} \sum_{j 1} ^{n} lcm(i, j)\\ \sum_{i…

Let's Encrypt网站推出中文版

如今很多网站都强制使用 HTTPS 加密协议访问&#xff0c;安全性有了很大的提高&#xff0c;最起码在数据传输的初始阶段数据包不会被劫持&#xff0c;保证了客户端与服务器端的通讯安全性。说到 HTTPS 加密协议&#xff0c;就不得不提 Let’s Encrypt。Let’s Encrypt 是一家不…

动态分配内存

https://www.runoob.com/cplusplus/cpp-dynamic-memory.html

[51 nod 123] 最大公约数之和 V3(杜教筛)

1237 最大公约数之和 V3 推式子 ∑i1n∑j1ngcd(i,j)∑d1nd∑i1n∑j1n(gcd(i,j)d)∑d1nd∑i1nd∑j1nd(gcd(i,j)1)∑d1nd∑i1nd∑j1nd∑k∣gcd(i,j)μ(k)∑d1nd∑k1ndμ(k)∑i1nkd∑j1nkd1套路地设tkd∑t1n(⌊nt⌋)2∑d∣tdμ(td)∑t1n(⌊nt⌋)2ϕ(t)接下来就是杜教筛求∑i1nϕ(…

使用WebDeploy部署远程IIS网站

目录 使用WebDeploy部署远程IIS网站后台服务部署服务器配置本地WebDeploy发布文件配置前端页面部署WebDeploy服务端配置WebDeploy发布文件配置使用WebDeploy部署远程网站后台服务部署服务器配置打开IIS管理器(开始->控制面板->管理工具->IIS管理器)添加网站(右键网站…

数列分块入门

文章目录数列分块入门1数列分块入门2数列分块入门3数列分块入门4数列分块入门5数列分块入门6数列分块入门7数列分块入门8数列分块入门9数列分块入门1 区间加&#xff0c;单点查询 分块后&#xff0c;维护标记&#xff0c;零散块暴力加&#xff0c;查询时输出值加标记 数列分块…

CF436F Banners(分块/凸包/单调队列)

CF436F Banners 首先有n个物品分别有ai和bi&#xff0c;然后定义价值为 c∗wp∗(ai大于p且bi小于c的用户个数)c*wp*(ai大于p且bi小于c的用户个数)c∗wp∗(ai大于p且bi小于c的用户个数) 然后我们需要求解对于每一个c的最大价值和对应的p 首先我们先枚举c&#xff0c;然后每次加…

译 | 改进 Visual Studio 及 Windows 上 .NET Core 的安装体验

点击上方蓝字关注“汪宇杰博客”原文&#xff1a;Lee Coward翻译&#xff1a;Edi Wang导语Visual Studio 2019 16.3 和 .NET Core 3.0 Preview 7 改进了 Windows 上 .NET Core 的安装体验。目标是减少计算机上可能存在的 .NET Core 版本的数量。这些改进基于客户反馈和我们自己…

F. Ivan and Burgers(前缀线性基模板)

前缀线性基模板 F. Ivan and Burgers /*Author : lifehappy */ #pragma GCC optimize(2) #pragma GCC optimize(3) #include <bits/stdc.h>#define mp make_pair #define pb push_back #define endl \n #define mid (l r >> 1) #define lson rt << 1, l, …

P2231 [HNOI2002]跳蚤(裴蜀定理/莫比乌斯反演)

P2231 [HNOI2002]跳蚤 给定一个长度为n1的一列数&#xff0c;第n1位为m&#xff0c;前n位小于m 求解使得他n1个数的加减可以凑出1的方案数 首先可以凑出1&#xff0c;这显然是裴蜀定理&#xff0c;推一推就发现他要求所有数的gcd为1 那么对于要求gcd恰为x的计数问题&#xff…

HDU 6579 Operation (前缀线性基模板题)

Operation 思路 只要套上前缀线性基的板子然后按照题意模拟即可&#xff0c;前缀线性基模板题了。 代码 /*Author : lifehappy */ #pragma GCC optimize(2) #pragma GCC optimize(3) #include <bits/stdc.h>#define mp make_pair #define pb push_back #define endl …