一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Programming Language

“System.Data.Entity.Internal.AppConfig"的类型初始值设定项引发异常。

必须写在

之后 。 from:http://www.cnblogs.com/A2008A/archive/2012/08/10/2631443.html

龙生   02 Jun 2016
View Details

2016 年你应该学习的语言和框架

2015年,软件开发界发生了很多变化。有很多流行的新语言发布了,也有很多重要的框架和工具发布了新版本。下面有一个我们觉得最重要的简短清单,同时也有我们觉得值得你在2016年花时间精力去学习的新事物的一些建议。 大趋势 在过去的几年里,有一个越来越明显的趋势是web应用的商业逻辑逐步从后端转移到了前端,然后后端变得只需要处理简单的数据API。这就让前端开发框架的选择变得尤为重要了。 另外一个重要的改变是2015年发布的 Edge 浏览器。这是IE的替代品,拥有全新的界面和更好的性能。跟IE不一样的是它同样采用了跟 FireFox 和 Chrome 一样的快速发布策略。这让JavaScript 开发者社区能够以周为单位获得最新版JavaScript 和 Web标准特性支持而不是像过去一样需要等很多年。 语言和平台 Python 3.5 在今年发布了,带来了很多新特性 比如 Asyncio,为你带来了类似 node.js 的事件机制,还有type hints。 鉴于Python 3 终于真正地火起来了我们强烈建议你替换掉 Python 2。几乎所有的库都已经支持 Python 3 了,所以现在是一个升级历史遗留代码的好时机。 PHP 7  是一个重要的新版本,这个版本修复了很多问题并且带来了新特性和性能提升(看看概览) 。 PHP 7 大约比 PHP 5.6 快2倍, 这对一些大型项目还有WordPress 和 Drupal之类的CMS系统影响很大。 我们强烈推荐 PHP之道,已经更新到最新的PHP7版本。 如果你需要更快的速度并且不介意换一个解释引擎的话,可以试试Facebook在用的 HHVM。 JavaScript 也以ES2015 标准 (大家通常叫做 ES6)的形式发布了更新。 为我们带来了激动人心的新功能。 感谢大多数浏览器版本的快速更新, 对 ES2015 的支持已经非常棒了,并且还有 Babel.js 这样的工具可以让你的新代码跑在低版本浏览器上。 Node.js 在这一年变化很多,开发者社区曾经分裂成 Node.js 和 io.js,然后又再度合并。 经历过这些之后的结局就是我们得到了一个有很多代码贡献者积极维护的项目,并且拥有了两个版本的 Node : 一个稳定的LTS (长期支持) 版本,这个版本注重稳定性,比较适合长期项目和大公司,和一个非长期支持但是最快实现新特征的版本。 Swift 2 在今年初发布了。 这是 Apple 出品的旨在简化 iOS 和 OS X 开发的现代编程语言。 几周前, Swift 正式开源并已经兼容 Linux。这意味着你可以用它来编写服务端应用了。 Go 1.5 在几个月前发布了, […]

龙生   02 Jun 2016
View Details

C#使用Dotfuscator混淆代码以及加密

C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破。使用Dotfuscator可以实现混淆代码、变量名修改、字符串加密等功能。 这里介绍的是DotfuscatorPro_4.9.7750_2.0 版本,有需要的可以到网上搜索下载https://skydrive.live.com/?cid=d2b11227abf128d8&id=D2B11227ABF128D8%21104。安装 Dotfuscator 好 打开界面,有几个需要配置的地方: Options、Input、Rename、String Encryption、Build,其他的默认即可,下面一一讲解。     Settings->Global Options 这是全局配置选项: 把 Disable String Encryption 设为 NO,即启用字符串加密;检查 Disable Control flow、Dsiable Renaming 也为 NO,即保证控制流和混淆功能打开,其他默认。如下图:   Input 选项里 选择你需要混淆加密的 dll、exe文件,其中Library不要勾选,否则有些类、变量等等不会混淆;   Rename 选项 勾选“use enhanced overload induction”(使用增强模式),注意:不要勾选下方的“ Do not suppress on serializable types”,即序列化类型的变量不加密,否则编译后可能异常; “Renaming Scheme” 选择“Unprintable”(不可打印字符,即乱码),也可以选择其他如小写字母、大写字符、数字的方式。如下图:   String Encryption 选项 include里勾选需要字符串加密的工程文件exe、dll等。   Settings->Build Settings 选项 设置输出目标文件夹,点击上方的按钮即可重新生成新的 exe、dll文件了。   好了,我们来看一下加密混淆后的效果:   原来的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static readonly int A = B * 10; static readonly int B = 10; //const int A = B * 10; //const int B = 10; public static void Main(string[] args) { Person p = new Person(); Console.WriteLine("A is {0},B is {1} ", A, B); } } public class Person { static int age; […]

龙生   27 May 2016
View Details

Google 打败 Oracle 赢得 Java 版权案官司

Google 和 Oracle 关于 Java 侵权案的陪审团裁定,谷歌使用 Oracle 创建的 Java 软件来创建 Android 系统是合理使用,不构成版权侵犯。 此判决标志着 Oracle 在 2012 年起诉 Google 关于侵犯 Java 版权的案子正式结束,Google 因此避免了 90 亿美元的赔偿。此案同时也给在编写不同平台上应用程序但没有许可证的程序员们最大的安慰。 甲骨文认为,谷歌需要一个许可才能在 Android 操作系统上使用 Java 编程语言,但是陪审团周四在旧金山联邦法院否认了这种说法,认为谷歌是合理使用代码,符合著作权。 IDC 分析师 Al Hilwa 表示:很多人都松了一口气!判决结果为软件企业提供保障,使得他们在开发各种可互操作的软件时没有法律风险。而数以万计使用 API 的软件开发人员更将将庆祝这一判决结果。谷歌的胜诉解决了他们在开发从游戏到企业应用中一个非常关键的问题。 from:http://www.oschina.net/news/73784/google-defeats-oracle-copyright-java-android

龙生   27 May 2016
View Details

asp.net signalR 专题—— 第一篇 你需要好好掌握的实时通讯利器

一:背景 我们知道传统的http采用的是“拉模型”,也就是每次请求,每次断开这种短请求模式,这种场景下,client是老大,server就像一个小乌龟任人摆布, 很显然,只有一方主动,这事情就没那么完美了,所以为了能够让server也能主动点,html5就应运而生了,或许大家都知道html5中有两种server的主动 模型,第一种叫做websockect,也就是基于tcp模式的双工通讯,还有一种叫做SSE,也就是客户端来订阅服务器的一种事件模型,当然了,在html5出 来之前,如果要做到服务器主动,我们只能采用变相的longpool和foreverframe勉强实现,而signalR这吊毛就是一个对他们进行了高层封装,也就是说 signalR会在这四种技术中根据浏览器和服务器设置采取最优的一种模式,废话不多说,我们快速建立一个例子。   二:快速搭建 这里我们采用 PersistentConnection模式来构建一个持久连接让大家快速接触下:   1. PersistentConnection 在新建项目中,我们选择”Sig“这里我们就使用默认的名字MyConnection1。  

  在上面,我们简单的看出来了,"持久连接“类有点像socket连接,有OnConnected和OnReceived事件,这里我们就不过多介绍,只要知道 Connection.Send方法中有一个叫做connectionID就好了,而这个connectionID就是客户端和服务器建立连接的唯一标识,比如上面我们看到的 return Connection.Send(connectionId, "Welcome!");就是当客户端连接到服务器之后,服务器主动将客户端推送一个”Welcome",以示欢迎。   2. Startup类 由于signalR采用的是Owin中间件的模式来把signalR和FCL进行隔离,这样的话,大家就可以相互独立,谁也不依赖于谁,也就方便signalR快速独立 发展和更新,而Startup类的Configuration方法就是将一些中间件配置送到Owin管道中,下面我们要做的就是把MyConnection1和"/myconnection" 地址的映射送到Owin管道中,这样当我访问”/myconnection“的时候,就可以触发MyConnection1这个类了,如下图:

  3:新建客户端 这里我们采用web客户端的形式来连接server,这就必须引用一些js文件,比如这里的signalR.js和jquery.js,如下图:

  上面的代码很简单,第一个就是$.connection("/myconnection")用于找到对应的服务器端的Myconnection处理类,第二个start()方法就是开始建 立连接,后面的 received事件就是获取服务器端推送过来的消息,也就是welcome,对吧。。。然后我们在chrome中试试看。 现在,你可以对应代码看一看,start方法成功的拿到了connectionID,而received方法成功的拿到了服务器推送的"welcome"数据,对吧。   四:用Fiddler监视一下 下面就是我用Fiddler监视到的截图,从图中的http 101状态码就可以看出,这里将http协议转换成了websocket协议。然后我们从websocket 协议中看到了服务器端推送过来的“welcome”数据。   好了,本篇大概就这么说了,是不是非常简单,当然里面还有很多的细节没有说,后续我们来慢慢解读。   from:http://www.cnblogs.com/huangxincheng/p/5280630.html

龙生   26 May 2016
View Details

emulator: ERROR: x86 emulation currently requires hardware acceleration!Please ensure Intel HAXM is properly installed and usable.CPU acceleration status: HAX kernel module is not installed!

Android Studio 1.0 已经放出来了,以后的Android平台开发激昂逐步从Eclipse向Android Studio迁移,为了能不落伍我也特意从Google下载了Android Studio的安装包,并且兴高采烈地创建了我的第一个android项目。但是当运行的时候就他么悲催了。

妈 妈的,模拟器居然启动不起来! 随随便便扔出这样一段话就了事!我就是想开一下模拟器用得着这样子对我吗? 好吧谁让我特能忍呢,迁移的路注定不会一帆风顺。报错信息告诉我说是 HAXM没有开,可是“HAXM”到底是什么呀? 这是Inter官网告诉我的,作用是管理硬件加速的,估计是用了这个东西模拟器就能告别Eclipse时代的龟速。 你也可以在Inter官网下载这个HAXM,当然Android SDK已经集成了这个软件,你需要做的就是找到他,然后安装它就是了。 他的位置放在这个目录下: 当然你的位置可能会不一样,如果找不到就没必要死磕开发了。 如果问题就这样解决了,那也太小儿科了吧;当我双击安装,问题又来了:

好吧,继续寻求帮助Inter官方的教程有这样一段话:连接地址:https://software.intel.com/en-us/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-windows Intel VT-x not enabled In some cases, Intel VT-x may be disabled in the system BIOS and must be enabled within the BIOS setup utility. To access the BIOS setup utility, a key must be pressed during the computer’s boot sequence. This key is dependent on which BIOS is used but it is typically the F2, Delete, or Esc key. Within the BIOS setup utility, Intel VT […]

龙生   25 May 2016
View Details

关于AppendFormat("{0:X2}")

StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0:X2}", 10); Response.Write(sb); 输出A X2表示十六进制格式(大写),域宽2位,不足的左边填0。 [csharp] view plain copy int[] recvLen = { 10, 11, 12, 13, 14, 15, 16, 17, 18 }; StringBuilder uid = new StringBuilder(); for (int i = 0; i <= recvLen.Length – 1; i++)     uid.AppendFormat("{0:X2}\r\n", recvLen[i]); Console.WriteLine(uid.ToString()); 输出: 0A 0B 0C 0D 0E 0F 10 11 12 from:http://blog.csdn.net/joyhen/article/details/41576841

龙生   22 May 2016
View Details

MVC5 网站开发实践 2、后台管理

目录 MVC5 网站开发实践 概述 MVC5 网站开发实践 1、建立项目   从这一部分开始做后台管理,首先是基本框架的 一、Data项目 1、项目添加EntityFramework引用 在Data项目的引用上右键-> 管理NuGet程序包。 在弹出的窗口中选择 EntityFramework 安装 2、添加排序枚举 在Data项目上点右键新建文件夹Type。在文件夹内添加类【OrderType】,代码如下

3、添加数据访问类 在Data项目上点右键新建类输入类名【BaseRepository】,这个类主要负责数数据的存取。 类内添加私有成员DbContext _baseDbContext用来在数据库进行增、删、改和查询。 BaseRepository的构造函数public BaseRepository(DbContext dbContext)中dbContext为数据上下文。在该类中写了一些数据的增删改和查询方法。整个代码如下。

4、添加业务逻辑基类 在data项目右键添加【BaseService】,此类通过调用BaseRepository进行数据处理,作为业务逻辑的基类,其他业务类继承自此类。这个类的方法与BaseRepository比较相似,建立此类的主要体现分层的思路,一些数据访问的异常处理应该放在此类中。代码如下:

二、User项目 1、建立管理员模型 在User项目的引用上点右键添加System.ComponentModel.DataAnnotations的引用和Ninesky.Data项目、E的引用。 在User项目上点右键新建文件夹Models,在文件夹中添加类Administrator。代码如下:

2、建立管理员业务逻辑类 在User项目上点右键添加AdministratorService类,该类继承自BaseService。

三、Website项目 1、添加User项目的引用上右键添加对User项目的引用。 2、建立数据上下文 在Site项目上点右键添加类【NineskyDbContext】,继承自DbContext

3、建立数据库连接 打开Web.config文件,在</configSections><appSettings>之间添加数据库的连接

4、建立简单工厂 在Website项目上点右键添加类【ContextFactory】,代码如下:

5、Config区域主界面 在Site项目的Config区域的Controller文件夹上点右键添加Home控制器,类型选择【MVC5控制器-空】。在添加的控制器中添加【Index】 action

在Config区域Views/Share文件夹添加布局页【_Layout.cshtml】 在Index action上右键添加一个空视图 =========================== 代码下载:http://pan.baidu.com/s/1sj6Ya2D from:http://www.cnblogs.com/mzwhj/p/4155896.html

龙生   21 May 2016
View Details

ASP.NET MVC删除数据

单条: WeiXinOpenId weiXinOpenId = _db.WeiXinOpenId.Find(1); _db.WeiXinOpenId.Remove(weiXinOpenId); _db.SaveChanges(); 另一种方法: WeiXinOpenId weiXinOpenId = _db.WeiXinOpenId.Find(1); _db.Entry(weiXinOpenId).State = EntityState.Deleted; _db.SaveChanges(); ================================================ 批量: var openids = _db.WeiXinOpenId.Where(item => item.Uid == uid).ToList(); _db.WeiXinOpenId.RemoveRange(openids); return _db.SaveChanges();

龙生   21 May 2016
View Details

C#webbrowser控件技巧(取得javascript变量值,禁止显示脚本错误)

C#中的webbrowser控件比较好用. 下面本人搜索整理的几个小技巧. 1. 从C#中取得javascript的变量值. using mshtml; using System.Reflection; IHTMLDocument2 vDocument = webBrowser1.Document.DomDocument as IHTMLDocument2; IHTMLWindow2 vWindow = vDocument.parentWindow; Type vWindowType = vWindow.GetType(); object xpt = vWindowType.InvokeMember("_xpt", BindingFlags.GetProperty, null, vWindow, new object[] { }); xpt 就是取得的javascript中的变量"_xpt"的值. 2. 禁止显示脚本错误窗口. webBrowser1.ScriptErrorsSuppressed = true; 3. 如何取弹出网页的网址 string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href"); 4. 禁止打开新窗口, 在本窗口打开. 4.1 设置属性. void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //将所有的链接的目标,指向本窗体 foreach (HtmlElement archor in this.webBrowser1.Document.Links) { archor.SetAttribute("target", "_self"); } //将所有的FORM的提交目标,指向本窗体 foreach (HtmlElement form in this.webBrowser1.Document.Forms) { form.SetAttribute("target", "_self"); } } 将 WebBrowser 的 AllowWebBrowserDrop 设为 false 将 WebBrowser 的 WebBrowserShortcutsEnabled […]

龙生   19 May 2016
View Details
1 121 122 123 175