重学Kubernetes - 读张磊的《深度剖析Kubernetes》
云计算从十年前的风起云涌却叫好不叫座的局面慢慢地变成了无人刻意提起的境地,这一切的幕后游戏规则改变者某种程度上来说 都是因为Kubernetes这个伟大的开源项目以及依托于它的云原生运动 (参考前文)) 的蓬勃发展而激发。
云计算从十年前的风起云涌却叫好不叫座的局面慢慢地变成了无人刻意提起的境地,这一切的幕后游戏规则改变者某种程度上来说 都是因为Kubernetes这个伟大的开源项目以及依托于它的云原生运动 (参考前文)) 的蓬勃发展而激发。
Kubernetes是目前炙手可热的云计算管理基础设施平台,并且是一个诞生不久就迅速鉴定了业界实际标准地位的一个容器编排平台。
领域驱动设计在最近几年里越来越多地走进了主流架构设计的中心舞台上来了,这一切其实似乎是在业界精神领袖Martin Folwer在 他的《企业软件架构模式》一书和各种各样的讨论中的推荐之下之后忽然就火了起来。 甚至有一种说法是:如果学完了设计模式之后感觉没有什么用武之地,那么你需要去好好看一下Eric Evans写...
不经意发现Bob大叔出版了新书,延续之前的命名风格定名为《Clean Architecture》,英文版已经于2017年底正式上市; 刚好公司的账户可以访问Orielly公司的在线书城,于是就断断续续地读了起来。 Bob大叔讲故事的能力即使在久负盛名的技术作家圈里面也是闪耀出众的,可以算作是高手中的高手,行文由浅...
不同于传统的工业标准的C++/Java语言缓慢的更新节奏(最近几年大家都加快了演进的节奏),Rust从一开始就采用了滚动发布的模型, 基本上是按照固定的步伐每个六个星期就会放出来一个新版本,并且从正式发布了1.0开始,最近两年来一直是保持向后兼容的。 社区在2018年初的时候,就约定好会在18年发一个大版本出来,...
C++标准的演进和推出速度过慢一直被内外社区批评,甚至当第一个21世纪的语言标准终于于2011年发布的时候,标准委员会的人都自嘲说我们是一门计算机语言,所以0x需要用十六进制数表示。 进入了第二个十年之后,社区的老学究们终于决定引入时髦的"发布火车"的模型,滚动地推出新的功能,之后新的语言标准总算按照一个大版本一...
最近遇到一个麻烦而繁琐的操作,需要从工作用的缺陷跟踪系统中导出报表,分析其中的一些数据模式,分类整理后用更好的方式整合出来; 本来这类反复重复的零碎工作,如果不是很复杂,依赖于Excel本身的强大的表格计算功能是很容易自动化的(在线系统比较古老仅仅支持CSV格式导出), 只是内部的字段量比较多,并且有很复杂的相互...
公司里面进来切换到了一个新的Backlog管理工具来管理日常的需求和项目规划,可惜新的工具虽然是名门之秀的JIRA(来自于澳大利亚的IT公司confluence),但是访问起来却异常痛苦, 经常一个页面打开需要等待大半天还是不是崩溃。有些心急的同时已经默默地回到了老的方式,导出数据到Excel然后打开Office...
随着岁月的推移,软件系统的规模、功能、复杂度都在呈现数量级增长,随之而来的变化带给软件开发者的压力与日俱增,更不要说各种敏捷方法和快速开发方法的流行极大地吊起了客户对交付时间和质量的期望。开源软件的日趋完善和其对应社区的指数级增长带来了数量庞大的框架、库等基本构造块,开发者可以借助各种成熟的基础设施和成熟完善的开...
静态、强类型而又不带垃圾收集的编程语言领域内,很久没有新加入者参与竞争了,大概大部分开发者认为传统的C/C++的思路已经不太适合新时代的编程需求,即便有Ken Tompson这样的大神参与设计的golang也采用了GC的思路来设计其新一代的语言;一方面垃圾收集技术和即使编译技术一直在发展和完善,另一方面是大量的未...
本文是第四部分,主要讨论方法论和方法设计的一些基本规则,已经如何清晰地定制和应用这些规则。
这本书的中文译名是一个平淡无奇的«敏捷软件开发»,这个名字是如此的平庸以至于放在书架上不会有几个人注意到它真正的价值,除非你仔细的阅读了书面封底的作者介绍和英文原版所获得的荣耀 - 17届Jolt大奖获奖作品;而Cockburn大师本身又属于一个人能连续两次获得Jolt的技术作家之一;但是能够在连续两年中获得两次...
这是一本讲述程序员开发哲学和思想的书,虽然出版了十余年仍然没有太多过时的东西,因为讲述的内容是一些永远不会过时的东西(至少从计算机程序设计职业化-即所谓的软件工程开启的时间算便是如此)。
lambda表达式(closure)是C++11中新引入的对程序组织构造改进最大的特性之一;这一特性并不是一个新的概念(几十年前的函数式于样都提供了该特性),然而对于一个深受过程式思维影响的语言而言,lambda的支持则极大提高了代码的抽象能力和可读性。
现有的C++03标准中,不必要的对象的拷贝和临时对象的构造经常会造成额外的性能开销(即使有返回值优化这样的编译器优化来帮忙也不能解决好多情况的问题);新的C++11标准通过对语言的修正,引入了RValue Reference和Move来解决这一问题。
C++11(C++0x)定稿已经满一年,主要的编译器这次跟进的速度也相当快,其中支持最好的要属最近声名雀起的llvm;作为一个历时8年之久的ISO标准,其诞生过程虽然过程很曲折,但是新标准对C++的改进和生产效率的提高无疑是大有益处的。
传统的并发变成模型通过Mutex/Conditional Variable/Semaphore的设施来控制对共享资源的访问控制,但是这一经典模型使得编写正确高效的并发程序变得异常困难: 遗漏合适的锁保护导致的race condition 锁使用不当导致的死锁deadlock 异常未...
Parallel和Concurrency的目标是一致的,然后Parallel更强调在多个物理并发处理单元(至少从OS之上的角度看如此)存在的情况下,如何最大限度地利用现有的CPU资源提高程序的性能。传统的过程式编程思维范式中,所有的操作都是顺行串行的,多核并发处理往往意味着需要对代码做大幅度的修改;而Haskel...
随着基于CPU频率的摩尔定律的失效,现代的计算机体系都采用多核的方式提高处理能力,传统的编程思维和模式在多核时代则遭遇越来越多的问题;而函数式编程则在很大程度上提供了完全不同但是更为优雅的思路。作为纯函数式编程语言,Haskell的并发编程则和传统的过程式语言有着明显的不同。
Haskell提供了抽象代数类型(Algebra Data Type)来完成对数据的封装;其中最直观的是 data 关键字声明,可以用C/C++中的struct/class 来类比。此外,我们还可以用 type 和 newtype 来定义一些数据抽象。type所定义的就是一个已有类型的别名,其主要作用就是为了提高...
Haskell 中也有class关键字,但其目的却和 OO 中的类有着巨大的差别。在 OO 世界中,类用来描述一大堆具有共同数据和行为的对象的抽象;而 Haskell 中的 class 则是用于抽象提供同样函数接口的数据类型。每一个 ADT 都可以用instance来生命其满足某个 class 并且给出对应于具体...
Haskell的类型系统是强类型的,并且没有任何强制类型转换。所有的类型检查均在编译器做检查。定义新的数据类型之后,即使它们内在的数据结构完全一样,也是完全不同的数据类型,不能混用。
文本处理是Python/Ruby这类脚本语言的重头戏之一,而强大的正则表达式支持对于文本处理来说也是必不可少的。Ruby的设计很多方面沿袭perl,正则表达式方面也不例外。
和其它的面向对象语言类似,ruby的类方法也分为_class method_ 和 instance method, module和class具有相当大程度的相似性, 但是用于重用module中定义的方法时( 同样也有 class method 和 instance method 之分 ),又有一些微妙的差异。
blocks&&closure ruby的blocks和closure特性明显有别于其它的语言,其closure本身是__real closure__,所绑定的context是共享的而非copy,其设计思路和_lisp_的相同;blocks本身则可以用于实现closure。二者的关系如下所述 li...
Markdown format
看得再多也不如自己动手试,最近有闲就打算认真研究一下ruby语言了。Pragmatic programmer中说,需要一年学一门新语言一遍改造思想,去年浅浅的学了javascript的皮毛,今年可以看看ruby这个有lisp之风的OO语言了。