整理 | 王启隆
透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。
今天是 2023 年 2 月 13 日,在 2001 年的今天,跨国科技公司谷歌(Google)进行了其历史上的第一次收购,收购对象是 Deja 公司的网络服务 Usenet。Usenet 是一种分布式的互联网交流系统,源自通用用途的 UUCP 网络;谷歌收购 Usenet 后,便将其改造成了 Google 网上论坛,它与 BBS/Web 论坛的主要区别在于其缺少中央服务器和管理员。回顾计算机历史上的 2 月 13 日,这一天还发生过哪些逐渐没落而不为人所知的关键事件呢?
1910 年 2 月 13 日,美国物理学家和发明家威廉·肖克利(William Bradford Shockley)出生;他是贝尔实验室的一个研究小组的经理,他和小组里的约翰·巴丁、沃尔特·布莱顿共同发明了晶体管,并因此获得 1956 年的诺贝尔物理奖。20 世纪 50 至 60 年代,他在推动晶体管商业化的同时,造就了加利福尼亚州电子工业密布的硅谷地区。

肖克利在英国伦敦出生,父母是美国人。他从小在加利福尼亚州长大,1932 年毕业于加州理工学院,1936 年获得了麻省理工学院博士学位,其博士论文题目为“计算氯化钠晶体内的电子密度函数”。1936 到 1955 年期间,肖克利在贝尔实验室工作,曾任晶体管物理部主任。1938 年便获第一个专利“电子倍增放电器”,1948 年与他人合作发明了晶体管,1951 年成为美国国家科学院院士。
1945 年,战争结束后不久,贝尔实验室成立了一个固态物理学小组,由肖克利和化学家斯坦利·摩根(Stanley Morgan)领导,这些专家的任务是寻求一种固态器件来替代易碎的玻璃真空管放大器。而实验小组的首次尝试便是基于肖克利关于使用半导体上的外部电场来影响其导电性的想法,然而,这些实验总会在各种配置和材料上碰壁,以致于小组一直处于停滞状态;直到约翰·巴丁提出了一种引用表面态的理论,阻止了电场穿透半导体。到 1946 年冬天,实验小组已经获得了足够的结果,最终在 1948 成功研制了晶体管。
1955 年,肖克利在加州山景城创立了“肖克利实验室股份有限公司”,聘用了很多年轻优秀的人才。但擅长发明的肖克利在管理方面却过于严苛,导致了公司内部不合,八名主要员工(八叛逆)出走;这八位青年才俊于 1957 年成立了仙童半导体公司,后来开发了世界上第一块集成电路。而肖克利实验室则每况愈下,两次被转卖后于 1968 年永久关闭。肖克利从 1963 年开始任斯坦福大学教授,最终于 1989 年因前列腺癌去世。
资料来源:维基百科、百度百科
敏捷软件开发(Agile software development),又称敏捷开发,是一种从 1990 年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。
敏捷软件开发(或称快速程序开发 RAD)描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成。敏捷软件开发主张适度的项目、进化开发、提前交付与持续改进,并且鼓励快速与灵活的面对开发与变更;这些原则支持许多软件开发方法的定义和持续进化。而“敏捷”(Agile)一词便是由 2001 年 2 月 13 日诞生的“敏捷软件开发宣言”(Manifesto for agile software development)中开始推广,“敏捷软件开发宣言”还定义了相关的价值和原则。

迭代和增量式软件开发方法可以追溯到 1957 年;进化式项目管理和适应性软件开发出现在 1970 年代初期。在 1990 年代,因针对重量级的软件开发方法的批评,而发展了许多轻量化的软件开发方法、项目与细微化开发管理。虽然各式各样的开发法都起源于敏捷开发宣言之前,但它们最终都统称为敏捷软件开发法。2001 年 2 月 13 日,17 位轻量级软件开发者聚在美国犹他州雪鸟滑雪场,针对一个新的软件开发趋势聊出了一份共识——《敏捷软件开发宣言》。敏捷开发方法的核心是以人为本,专注于具体可行的目标,强调团队合作和快速响应变化。
在这个滑雪场会议中,17 位开发者共同起草了敏捷软件开发宣言。其中最重要的部分就是对一些与会者一致同意的软件开发价值观的表述:个体和互动高于流程和工具;工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划。虽然他们也很重视这四条价值观里右边没加粗的内容,但是更重视左边重点的内容。一些软件开发者后来还组织了敏捷联盟,为非营利组织,根据宣言的价值观和原则促进软件开发。你对高效率的工作方法都有哪些真知灼见?欢迎参与本期投票,在评论区共同进行讨论。
资料来源:维基百科、百度百科

在 20 年前的 2002 年,微软公布了下一代的软件、服务的愿景和路线:.NET Framework。这是一个致力于敏捷软件开发(agile software development)、快速应用开发(rapid application development)、平台无关性和网络透明化的软件框架,是微软为 2000 年代对服务器和桌面型软件工程迈出的第一步,包含许多有助于互联网和内部网应用迅捷开发的技术。2014 年 11 月 12 日,微软宣布将完全开放.NET 框架的源代码,并提供给 Linux 和 macOS 使用。
甲骨文公司的 Java 编程语言和 Java 平台企业版技术是.NET 平台的竞争对手之一。在 12 月 24 日专栏中介绍的微软和 Sun 之间的 Java 竞争大战之后,微软正是痛失了 Java,才开发了 .Net 和 C# 进行战略布局;.NET 框架是微软公司继 Windows DNA 之后的新开发平台,以通用语言运行库(Common Language Runtime)为基础,支持多种语言(C#、F#、VB.NET、C++、Python 等)的开发。
就在去年的 2 月 14 日上午 9 点,微软汇聚了全球开发者庆祝 .NET 诞生 20 周年,并在官方网站、LearnTV、YouTube、Twitch 和 Twitter 上进行 30 分钟的直播活动;直播内容包括微软名人访谈,分享来自客户和开发人员的故事,以及开源贡献者、MVP 和 .NET 团队成员的更多故事。
.NET 从一个只在 Windows 上运行的闭源技术,到如今转变为一个跨平台的开源技术;从最开始依附于桌面和网站框架, 到现在可以担当移动应用、游戏、云计算、大数据以及人工智能的多应用场景的技术,可以说 .NET 在不断地跟随时代的步伐,并逐渐开始定义时代。
以史为镜,可以知兴替。计算机科学发展至今,有许多至关重要的事件、人物。在《新程序员:我们的技术时代,我们的程序人生》中,来自四十余位技术人跨越半个世纪,用代码敲出一个个真实的程序人生故事!
扫描或点击《新程序员:我们的技术时代,我们的程序人生》订阅!

作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur
运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth