‘开发笔记’ 分类的存档

[转载]11 个最常用的 AJAX 开发框架汇总_IT新闻_博客园.   AJAX(Asynchronous JavaScript and XML,异步 JavaScript 和 XML),是创建交互式 Web 应用的主要开发技术。互联网中也有大量的关于 AJAX 的框架,本文汇总了最常用的 11 个框架。 1.   jQuery JQuery 是一个轻量级的 JavaScript 库,兼容 CSS3,还兼容各种浏览器。JQuery 使用户能更方便地处理 HTML documents、events、实现动画效果,并且方便地为网站提供 AJAX 交互。 2.   MooTools MooTools 是一个简洁、模块化、面向对象的 JavaScript 库。它能够帮助你更快、更简单地编写可扩展和兼容性强的 JavaScript 代码。Mootools 跟 prototypejs 相类似,语法几乎一样。但它提供的功能要比 prototypejs 多,而且更强大。比如增加了动画特效、拖放操作等等。 3.   Prototype Prototype 是 Sam Stephenson 写的一个非常优雅的 JavaScript 基础类库,对 JavaScript [...]

2012年5月19日14:14 没有评论

[转载]Asp.Net MVC路由调试的好帮手RouteDebugger – Lyon.L – 博客园. RouteDebugger是什么? 在ASP.NET MVC程序中,路由(Route)是一个非常核心的概念,可以说是MVC程序的入口,因为每一个Http请求都要经过路由计算,然后匹配到相应的 Controller和Action。通常我们的路由都会注册在Global.asax.cs文件中的RegisterRoutes方法中,路由会从上往 下依次匹配,因此自定义的(优先级高)的路由需要放在默认(通用)路由的前面。但是,如何确保所有的路由都是正确的,或者是没有重复的 呢?RouteDebugger就是这样一个分析工具。 安装 可以使用NuGet很方便的安装RouteDebugger,在项目上面右键-”Manage NuGet Packages”-”Online”输入”RouteDebugger”然后”Install”,或者在”Package Manager Console”中输入:”Install-Package routedebugger”安装即可。由于NuGet有时会莫名其妙被墙,我上传了一个压缩文件:RouteDebugger 2.1.3 注意:RouteDebugger 2.x版本对应.NET4.0和MVC3,旧版本请参考Phil Haack的ASP.NET Routing Debugger 使用 当你成功安装后,可以看到项目引用了”RouteDebugger”,然后?然后按F5运行程序你就可以看到效果了。是的,你甚至都不需要配置任何 一行代码!这是因为.NET4.0新增的程序集Microsoft.Web.Infrastructure允许动态注册 HttpModule,RouteDebugger将格式化的路由调试信息追加(append)到每一个request里。对于.NET3.5和MVC3 之前的项目,如果要使用RouteDebugger,还需要在Application_Start中注册: ? 1 2 3 4 5 protected void Application_Start(object sender, EventArgs e) {   RegisterRoutes(RouteTable.Routes);   RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); } 从浏览器的输出我们可以看到详细的Route匹配信息,当前请求可以成功匹配哪些路由。 注意:{*catchall}路由是RoutDebugger自动添加的,这样即使没有任何一个路由匹配成功,也会显示相应的路由信息,而不是404(不过我本地测试发现非法url还是返回了404,有人在Phil Haack的博客提出了这个问题但是没有得到回答)。   禁用RouteDebugger 当使用了RouteDebugger后,你会发现每一个页面的后面都会附带路由信息。如果你需要禁用这个功能,打开Web.config: 将RouteDebugger:Enabled后面的value=”false”即可关闭RouteDebugger模式。

2012年5月18日15:05 没有评论

[转载]程序崩溃后如何更好的反馈信息 – 2012 – 博客园. 我们使用Windows都知道,整个Windows和微软提供的应用软件的稳定性和崩溃后的体验是逐步提升的。在大牛的作品《软件调试》 中有描述。 在Windows下,软件出错,常见的报告手段: 1、事件日志:这里记录了很多关键的错误信息 2、崩溃报告:可以自动提交错误的信息,或者手动提交,以不断的改进软件和方便排错 3、专用的日志工具:如Netmon,sysinternal等   那我们的软件在崩溃后如何处理呢?主要目的: 1、方便我们的排错 2、提供更好的使用体验 最近在设计一个应用系统时对这个问题进行处理。 这方面有比较多的参考: 首先在stackoverflow上可以看到,c++ release  program crashes report http://stackoverflow.com/questions/112831/how-to-get-a-stack-trace-when-c-program-crashes-using-msvc8-2005 以上有比较多的框架和工具 Windows应用程序处理的一个框架和详细参考资料 Integrating Crash Reporting into Your Application – A Beginners Tutorial http://www.codeproject.com/Articles/308634/Integrating-Crash-Reporting-into-Your-Application http://code.google.com/p/crashrpt/ http://www.codeproject.com/Articles/1934/Post-Mortem-Debugging-Your-Application-with-Minidu Google breakPad Google breakpad是 一个非常实用的跨平台的崩溃转储和分析模块,他支持Windows,Linux和Mac和Solaris。由于他本身跨平台,所以很大的减少我们在平台移 植时的工作,毕竟崩溃转储,每个平台下都不同,使用起来很难统一,而Google breakpad就帮我们做到了这一点,不管是哪个平台下的崩溃,都能够进行统一的分析。现在很多工程都在使用他:最著名的几个如 Chrome,Firefox,Picasa和Google Earth。另外他的License是BSD的,也就是说,我们即便是在商业软件中使用,也是合法的 http://code.google.com/p/google-breakpad/ http://bigasp.com/archives/450   调试Release发布版程序的Crash错误 http://www.cppblog.com/Walker/articles/146153.html http://blog.sina.com.cn/s/blog_48f93b530100fsln.html   对于托管程序也有 Good crash [...]

2012年5月18日13:44 没有评论

[转载]手机上的消息推送 – 心笑峰 – 博客园. 最近在找Android手机上的消息推送的解决方案。目前看来有以下几种常用的方式:1.定期查询:按照指定的时间间隔连接服务器查询获取最新的消息。实现起来简单,非实时,查询时间过短则流量耗费多,耗电量大。下面是一个爱立信的测试结果:   2.短信方式:需要及时发送消息给客户端时也可以通过这种方式,但大家都懂的,这个很花钱。   3.长轮询:基本上与目前很多网站使用的方式一样(WEB阿里旺旺、微博、人人等等)。客户端发起一个很长超时时间的请求,然后服务器端在没有消息的时候阻塞这个请求(一直不给返回值)直到快要超时为止,有消息到来再返回响应。客户端收到响应或超时后立即再发起请求。 这种算是比较好的方式了,消息能够及时地到达客户端。但考虑到移动互联网的特点(网络不稳定、设备内存小)这种方式不能保证重要的消息一定能推送到客户端,另外anroid在手机内存小的情况下可能会杀这个在等待PUSH消息不怎么活动的进程。   4.C2DM:GOOGLE提供了消息的PUSH功能,需要和GOOGLE账号绑定,目前看来这种方式在国内是没戏的。   5.XMPP:在客户端集成asmack,服务器端使用ejabberd或openfire等开源的XMPP服务器软件也是一种可行的方式。 缺点就是先要有注册、登陆等过程,无线网络环境下连接的效果不怎么样。重要消息的PUSH需要自己实现确认逻辑。   6.MQTT:基于代理发布/订阅 模式的消息传输协议,适用于受限环境: 网络代价昂贵、带宽低、不可靠; 在嵌入设备中运行、处理器和内存资源有限。 特点是: 使用发布/订阅模式,解除应用程序耦合; 对负载内容屏蔽的消息传输; 使用TCP/IP; 提供“至多一次”、“至少一次”、“有且仅有一次”三种级别的消息传输; 小型传输、流量开销少; 使用LAST WILL 和TESTAMENT特性通知有关各方客户端异常中断机制。 (听起来简直就是为移动互联网设计的 ) 下面是基于MQTT的简单实现方案:   服务器: 可以采用IBM的MQTT服务器RSMB; 开源的Mosquitto   客户端: IBM的wmqtt.jar 适用于JAVA客户端。   1.下载安装运行Mosquitto服务器。 2.在anroid客户端集成以下代码: import com.ibm.mqtt.IMqttClient; import com.ibm.mqtt.MqttClient; import com.ibm.mqtt.MqttException; import com.ibm.mqtt.MqttPersistence; import com.ibm.mqtt.MqttPersistenceException; import [...]

2012年5月18日10:03 没有评论

[转载]Android系统如何实现UI的自适应 – Melanie Deng – 博客园. 做Android应用的人都知道,要一个apk适用多个不同的手机屏幕是很容易的,就是在项目的res文件夹下面有多套相关的资源文件。程序运行的 时候,Android系统会根据当前设备的信息去加载不同文件夹下的资源文件。但是Android系统是怎么做到这一点的呢?上网上搜了一下,很少有这方 便的介绍,只好自己研究下代码了。下面是我研究代码得到的结果(正确性有待确认),在这里分享一下。   这里以ICS上在Activity的onCreate()方法里面调用setContentView(int resourceID)为例,介绍一下系统如何根据我们的id(R.layout.xxxx)找到合适的layout文件进行解析加载: 如果你的res下面有三种不同的layout:layout, layout-sw480dp和 layout-sw600dp,这里的sw<N>dp表示这个layout文件夹下面的布局文件只有在设备短边的最小宽带为N时才加载。你的 设备是800×480的分辨率,那么这个apk安装在你的设备上就会加载 layout-sw480dp里面的布局文件。下面是framework的 java层调用链: Activity.setContentView(int resourceID) -> PhoneWindow.setContentView(int resourceID) -> LayoutInflater.inflate(int resource, ViewGroup root) -> LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot) -> Resources.getLayout(int id) -> Resources.loadXmlResourceParser(int id, String type) -> Resources.getValue(int id, TypedValue outValue, boolean resolveRefs) -> AssetManager.getResourceValue(int ident, int density, TypedValue [...]

2012年5月18日09:14 没有评论
备案信息:冀ICP备10007948号