BASIC语言诞生50周年

50年前,最初只有政府、企业和大学有电脑,由那些编写数学公式构成的指令页的程序员来运作。达特茅斯学院的两位数学教授约翰·凯默尼和托马斯·库尔茨希 望其他学院的学生也能使用学校的电脑,就开发了一套简单的指令,这套指令名叫程序语言(BASIC)。“我们有意设计出一套避免其他语言中出现的技术细节。”BASIC将英国指令,如IF…THEN或GO...TO转换成电脑能理解的数字语言。

库尔茨说其反响很大。“我们的学生喜欢随时用电脑,可以做任何想做的事,而且我们的教员也对它感兴趣。当然不是每个人,是很多人都是。”

佩吉·基德韦尔是史密斯森国家历史博物馆数学馆长,他说这时电脑的运转速度开始快到足以同时处理很多指令。

“现在人人都能用电脑的理念已经深入全世界,我想说的是,这并不是BASIC的直接产物,而是基于BASIC而进行的开发的一部分。”

库尔茨和凯默尼将BASIC向公众公开,免费使用,这样这种语言很快就得到传播。库尔茨说他们希望BASIC能帮助解决即将到来的一个重大问题。“电脑将在全世界变得非常重要,而大多数都对之不了解,因为电脑掌握在专家手中。”伴随着电脑快速发展,出现了很多改进版的BASIC和其他容易使用的语言。

现在,不仅是爱好者使用BASIC,而且个人电脑的出现要归功于这种最早开发的人人都能使用的编程语言。

ASP.NET Identity 2新增双重认证、帐号锁定、防伪印章功能

  Microsoft 最近发布了 ASP.NET Identity 2,该版本支持双重认证、帐号锁定以及防伪印章功能,还增强了用户帐号和索引。此外新版本还包含一个改进的密码验证器并修复了一些 bug。

  借助于双重认证,开发者能够使用定制的提供程序保护用户帐号,而不是使用传统的 SMS 和基于 email 的验证。例如,开发者能够编写自己的自定义提供程序,例如 QR 代码生成器,并使用手机上的身份验证应用程序验证它们。

  新版本的 ASP.NET Identity 2.0 能够保护用户远离暴力破解的困扰,如果用户输入了错误的密码或��双重代码,那么相关的用户帐号会被锁定一段时间。作为一个开发人员,你可以配置无效尝试的次数和时间间隔,另外你也可以通过一个选项为某些用户帐号关闭该功能。

  新引入的防伪印章功能让你能够在密码或者相关的社会登录帐号发生改变的时候从应用程序中注销。你可以按照官方 MSDN 博客上的介绍通过注册一个 CookieAuthenticationProvider 在 Startup.Auth.cs 中进行配置。

  最新版本提供了一个扩展钩子,借助于该钩子你能指定用户表和角色表的主键,对于那些将 UserId 存储为 GUID 或者 Int 的应用程序而言这是非常有用的。

  在新版本发布之前,我们无法通过 UserManager 删除用户,这一问题已经被解决,你能够使用 DeleteAsync ()函数删除用户。

var result = await UserManager.DeleteAsync (user);

  你可以使用 Factory 实现从 OWIN 上下文中获取到一个 UserManager 的实例。这一模式与我们从 OWIN 上下文中获取 AuthenticationManager 从而进行登录和登出的模式类似。为了使用这一功能,我们需要在 StartupAuth.cs 类中添加下面的代码:

app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
HttpContext.GetOwinContext () .GetUserManager<ApplicationUserManager>();

  DbContextFactory 中间件每一个请求都会返回一个 ApplicationDbContext 实例,你可以在应用程序中使用它,同时可以在 StartupAuth.cs 中使用下面的代码进行配置:

app.CreatePerOwinContext (ApplicationDbContext.Create); 

  Microsoft 使用新的 IndexAttribute 为 Username 添加了唯一的索引;此外还增强了密码验证器,1.0 提供了一个仅能验证最小长度的基础验证器,而在新版本中我们能够通过配置对密码的复杂性进行更多的控制。该版本还提供了 NuGet 包以及示例 ASP.NET MVC 应用程序,并根据社区的反馈修复了一些 bug。

  与 ASP.NET Identity 2 RTM 一起发布的还有 Entity Framework 6.1,后者的特性包括工具整合、IndexAttribute 和公共映射 API,此外它还支持 .ToString、String.Concat、enum HasFlags,能够通过 App/Web.config 文件配置拦截器。

  来自于 Microsoft 的软件工程师 Pranav Rastogi 在他的博客中概括了应用程序从 ASP.NET Identity 1.0迁移到 2.0、从 2.0 beta 1 迁移到 2 所需要的步骤。除了上面提到的特性之外,该版本还包含一些其他的特性,例如帐号确认、密码重置、UsersStore 和 RolesStore 上的 IQueryable,这些功能最初都是在 2013 年 12 月份发布的预览版中添加的。

微软宣布.NET Native预览版 C#可编译为本地机器码

  微软在 MSDN 博客上宣布了 .NET Native 的开发者预览版。.NET Native 可以将 C# 代码编译成本地机器码。有了它,开发者将不仅能享受 C# 的高生产力,而且能拥有 C++ 般的性能。鱼与熊掌不可兼得,而有了 NET Native,我们都可以兼得 C# 的生产力与 C++ 的战斗力。使用 .NET Native 编译 Windows 商店应用程序,启动速度将会加快 60%,同时占用内存的内存也更少。

  目前开发者可以使用该开发者预览版构建基于 ARM 或 x64 架构的 Windows 商店应用程序(很快就会支持 x86 架构,敬请期待)。.NET Native 很快将会实现跨设备的无缝体验。今天的预览版只支持 Windows 商店应用程序,我们将继续努力改进 .NET Native 以支持所有 .NET 应用程序的本地编译。

  通过 .NET Native 与 Visual Studio 的无缝集成,开发者可以继续享用 Visual Studio 带来的无以伦比的开发体验,比如 Visual Studio 中强大的编辑/编译/调试环境。

  Surface 设备上一些最流行的 Windows Store 应用程序已经运行于 .NET Native,比如 Wordament, Fresh Paint,程序启动速度有了明显的提升。

  根据微软提供的 FAQ,.NET Native 预览版目前只支持 C# 语言,用 .NET Native 编译的程序将作为独立的原生编译代码部署到目标机器上,运行不再需要安装 .NET Framework。

  .NET Native 下载地址:.NET Native Developer Preview(32M)

  目前只支持 Visual Studio 2013 Update 2 RC

微软宣布将早期版MS-DOS和Word开源

据国外媒体报道,微软周二通过官方博客宣布,公司与计算机历史博物馆(Computer History Museum)合作,已将较早期版MS-DOS和Word for Windows的源码向公众开放。此次微软将自家核心软件产品开源的行动属历史上首次。

计算机历史博物馆在归档人类史上重要软件程序方面做出了杰出贡献。微软为帮助该机构延续其伟大项目,并让后来人可以见证人类电脑的发展史及技术根基,因此决定将曾于1980年代最被广泛使用的MS DOS 1.1和2.0,和Microsoft Word(Windows 1.1a版)的源码正式对公众开放。

博客链接:

http://blogs.technet.com/b/microsoft_blog/archive/2014/03/25/microsoft-makes-source-code-for-ms-dos-and-word-for-windows-available-to-public.aspx

源码传送门:

http://www.computerhistory.org/atchm/microsoft-ms-dos-early-source-code

http://www.computerhistory.org/atchm/microsoft-word-for-windows-1-1a-source-code

Entity Framework 6.1 RTM发布

Microsoft 最近发布了 Entity Framework 6.1,新版本的主要特性包括:

  • 工具合并,为新 Entity Framework 模型的创建提供了一致的方式。该功能扩展了 ADO.NET 实体数据模型向导,支持创建 Code First 模型,支持对已有数据库的逆向工程。这些功能之前存在于测试版本的 Entity Framework Power Tools 中。
  • 事务提交失败的处理,提供了 CommitFailureHandler,该处理器利用新引入的能力拦截事务操作。CommitFailureHandler 允许在提交事务的时候从连接失败中自动恢复。
  • 索引特性 用户能够通过在 Code First 模型的一个属性(或者多个属性)上放置[Index]特性指定索引。Code First 会根据这些设置在数据库中创建对应的索引。
  • 公共映射API,用户能够通过该 API 获取 Entity Framework 所拥有的实体属性和类型与数据库中的列和表之间的映射信息。 在之前的版本中这个 API 是内部的。
  • 通过App/Web.config文件配置拦截器的能力,不需要重新编译应用程序就能添加拦截器。
  • System.Data.Entity.Infrastructure.Interception.DatabaseLogger是一个新拦截器,它能够让用户很容易地将所有的数据库操作记录到某个文件中。结合前面提到的特性,我们能够很容易地为已部署的应用程序打开数据库操作记录功能,不需要重新编译。另外还改进了迁移模型变更发现(Migrations Model Change Detection功能,能够更加精确的搭建迁移;变更发现的处理性能也得到了增强。
  • 性能提升,包括减少初始化期间的数据库操作,优化 LINQ 查询中的 null 相等比较,快速视图生成(模型创建)支持更多的场景,拥有多个关联的跟踪实体可以更有效的实例化。
  • LINQ查询支持.ToStringString.Concat和枚举HasFlags
  • System.Data.Entity.Infrastructure.Interception.IDbTransactionInterceptor 是一个新拦截器,组件能够通过该拦截器在 Entity Framework 启动事务操作的时候收到通知。

  用户可以从 NuGet 上获取运行时。如果你使用的是 Code First 的开发模式,那么根本没有必要安装相关工具,只需要按照获取页面上提供的步骤安装最新版本的 Entity Framework 运行时即可。针对 Visual Studio 2012 和 Visual Studio 2013 的工具可以从 Microsoft 下载中心获取。如果你想使用 Model First 或者 Database First 开发模式,那么只需要安装这些工具。

TypeScript成为VisualStudio的正式成员

  Microsoft 的开源编程语言 TypeScript 设计的初衷是为了使大型 JavaScript 应用开发更容易,同时提供现代工具的支持。相比 TypeScript 先前的 0.95 版本,即将发布的 1.0 版本的最新发布候选版本有不少变化,其中最重要的要属处理泛化的新方式。TypeScript 的开发团队改变了关键字“any”的行为,这样做是为了简化创建接口和子类时的类型检查。

  此外,对泛型的处理也产生了一些变化,这两种改变结合在一起后,会有利于处理某些场景,如“承诺参数是全类型泛化的类型”。另外还有重要的一点是,与 TypeScript 一起发布的库 lib.d.ts 也做了更新,提供对触摸和 WebGL 的支持。

  虽然对此发布版本的反馈总体上比较好,但是它毕竟是发布候选版本,所以不建议将其安装在关键的生产系统中,除非你愿意承担部分风险。据一些早期的使用者反映,还有若干稳定性问题需要处理。

  除了通过 Update 2 获取 TypeScript 1.0RC 外,也可以通过下载方式获取并作为独立工具使用。项目的源码放在 Codeplex 上。除了可以在 Visual Studio 中使用 TypeScript 外,在其他流行的文本编辑器中,如 Eclipse 和 Sublime 也支持该语言

ERROR: The version of SQL Server in use does not support datatype 'datetime2'

我把程序中的Entity Framework的SQL2012的数据库转为SQL2005后

出现了错误:

The version of SQL Server in use does not support datatype 'datetime2'.

解决办法:

把.edmx后缀文件中的

<Schema Namespace="NerdDinnerModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2012" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">

改为

<Schema Namespace="NerdDinnerModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">

即可

微软开放了.NET 4.5.1的源代码

.NET Reference Source 发布了 beta 版,可以在线浏览 .NET Framework 4.5.1 的源代码,并且可以通过配置,在 Visual Studio 2013 中调试 .NET Framework

  .NET Framework 团队的项目经理 Alok Shriram 在.NET Framework 的博客中撰文介绍了最新的 .NET Reference Source。它不仅可以用来浏览最新的 .NET 代码,而且通过强大的 Roslyn,改善了“Go to Defination”和“Finding Reference”的在线体验。此外,开发者还可以下载整个源代码包,在 Visual Studio 中打开并浏览。使用 Schabse Laks 编写的插件,可以在 VS 中直接导航到该网站。

  通过简单的配置,开发者可以在 Visual Studio 中单步调试 .NET Framework 4.5.1 及其后续补丁和更新。这无疑是广大开发者翘首以盼的功能。启动 Visual Studio 2013,打开 Tools -> Options -> Debugging -> General 菜单,进行如下配置:

  • 禁用 Just My Code
  • 禁用 Step over properties and operators
  • 禁用 Require source files to exactly match the original version
  • 选中 Enable .NET Framework source stepping
  • 选中 Enable source server support

  这样,开发者在调试代码时,就可以通过 F11 直接进入 .NET 代码。

  这并不是微软第一次开放 .NET Framework 的源代码。早在 2007 年,他们就第一次公布了 .NET 3.5 的源代码并支持 Visual Studio 调试。并且对于后续的 4.0 和 4.5,也都提供了相应的源代码包。但当框架升级时,这些旧的包就变得毫无价值了。从 4.5.1 开始,.NET Framework 团队彻底改变了符号索引和发布的过程,使其与构建过程同步,这样在新版本发布时,相应的 PDB 文件也会从 Reference Source 网站进行更新。

  目前的 beta 站点只是临时的,届时将会取代现在的旧站点。后续微软也会将还未公布源代码的程序集逐步添加进来。

  新的 .NET Reference Source 许可协议回归到了 MS-RSL,这也使得像 Mono 这样的团队可以放心大胆地使用。

  正如 Scott Hanselman所说:微软可能并不是开源的,但却绝对是源代码开放的。