[转]D3.JS-SVG格式

Posted by & filed under Uncategorized.

通过前两节,或许你已经感觉到了,通过HTML的那些基本标签来展示数据的可视化,功能实在有限。不错,D3.js之所以强大离不开同样强大的SVG。(当然了,在HTML5日渐风靡的今天,canvas的使用越来越多。这完全看个人偏好) 简要介绍下SVG 网络上对于SVG的概括是:基于XML,用于描述二维矢量图形的一种图形格式。如果将D3.js理解为画家,那么SVG就是为画家提供的画板,纸张,油笔等等。在此,也就不对SVG进行更为细节的介绍了。随着教程的深入,各位对于SVG的里了解也会逐渐加深。 关于SVG的百度百科 w3school关于SVG的介绍 从创建SVG标签开始  

  .append(“svg”)添加SVG。任何SVG图形的表现都必须在SVG内部实现。 .attr(“width”,300)注意与HTML标签的区别。svg标签的许多属性是没有“px”的。 在这里我们添加circle元素,每个circle元素包含着一组data.member的成员数组。 创建坐标系 若想将需要的数据表示在页面上,必定需要坐标系,这样数据才能找到属于自己的指定位置。 在D3中,对于坐标系的考虑要比我们在学习数学时对坐标系更加复杂些。因为我们不仅要定义数学意义上的可视范围,还要定义网页像素意义上的可视范围。  

  如上,这种D3钟爱的cascade风格,古怪的定义变量方式出现了。还是那句老话,熟悉了也就见惯不怪了。 d3.scale.linear()D3专门提供的创建可视范围的方法。(也可理解为创建坐标系的方法,但个人理解更倾向于可视范围的理解)。linear表示坐标的变化是线性的,不是对数形式之类。 .range([20,280])网页像素意义上的可视范围。表示可视范围是从20px-280px。(先不用管是横向的还是纵向的) .domain([20,50])数学意义上的可视范围。在这里横坐标的数学意义是年龄,从我已有的数据来看,20-50已经足够囊括所有的数据了。 同理我们可以创建y轴的可是范围  

  横纵的可视范围就这样被确定了。但实际上除了你自己,网页并不知道它的实际意义。你必须告诉他怎么使用它。 让数据在你的坐标轴上确定  

  如我们数学所知,一个圆被确定,只需要知道它的横纵坐标及其半径。 .attr(“cx”,function(d){return Read more […]

[转]最基本的D3语句2

Posted by & filed under Uncategorized.

上一节,我们接触到了基本的D3语句。对JSON中的数据进行了一些简单的操作。这一节,我们稍微更上一层楼点,通过改变标签style(主要是针对div啦),让数据的表现更为形象一些。  

  跟上一节的方法相比,语法上几乎没有什么特别需要关注的。熟悉HTML以及JQUERY,应该很快理解到新加的几个方法的含义。 .attr(“class”,””)旨在改变标签的class属性。 .selectAll(“.age_bar”)选择一组class=”age_bar”的标签。 .style(“”,””)旨在改变标签的style。 可以添加自定义的CSS,使得展示出来的东西更加美观。 demo

 

  Read more […]

[转]从最基本的D3语句

Posted by & filed under Uncategorized.

在D3中,selection是一个重要的概念。(至于selection如何翻译,仁者见仁)说得通俗一点,我们想将数据放置在某个元素内进行操作,离不开对元素的选择。这样,我们通过对基本网页端元素的操作,来完成最基本的数据可视化的实现。 不妨先让我们的JSON数据更加丰富一点  

  接下来,我们正式开始使用D3语句了。在script标签下中,我们定义一个名为show的方法,形参来自全局变量data(上一节提到过)  

  在D3中,这种名为“cascade”(或者直译为瀑布流)式的代码风格是典型而普遍存在的。瀑布流中的每一行的方法,都选定了某一个selection,以便我们进行下一行的操作。 d3.select(“body”)我们选择了body这个元素标签; .append(“ul”)然后我们在body中添加ul标签。但注意,此时我们的selection不再是body,而是ul。 Read more […]

[转]Jsonp原理实例及MVC使用

Posted by & filed under Uncategorized.

最近,由于工作用到了json和jsonp,由于前台是Android的,后台是MVC。一般MVC后台要返回JSON和XML这两种格式,所以选择了JSON。同时,也用到了JSONP, 简单来说,Jsonp的原理就是通过<script>标记引入一个定义好json数据的js,因为<script>标记是不受域名限制的,JSONP是基于JSON的一种形式,可以跨域传输数据。 创建一个员工类

创建一个JsonpResult类,继承了ActionResult。 另外,JavaScriptSerializer序列器要应用System.Web.Extensions的程序集。

  MVC后台数据设置: MVC控制器方法 public ActionResult ShopSetting() { Employee e = new Employee(); e.Age = 20; e.Company Read more […]

[转].NET开发邮件发送功能的全面教程(含邮件组件源码)

Posted by & filed under Uncategorized.

       今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能。在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         邮件发送相关.NET类库 3)         介绍我开发的一个发送邮件的小组件(MailHelper) 4)         MailHelper组件的一个示例以及几种方式发邮件的优劣测试 示例及组件源码:(有几位园友反馈IE浏览器解析不出下载地址) .NET开发邮件发送功能的全面教程(含邮件组件源码).rar 邮件基础理论知识 什么业务需要邮件功能? 服务提供方:需提供邮件收发客户端或Web服务。(eg:Outlook、QQ邮箱)。当然这些服务都是知名商提供。若是一般的小网站提供的邮件收发服务,不知道节操如何,谁敢用呢?就算你用了,别的知名商SMTP服务器也不认可从这小网站发出的邮件,出现SMTP服务器拒收来源邮件(视为恶意邮件或垃圾邮件)。 安全性、机密性:比如某安全部门需要提供自己发邮件的SMTP服务器和收邮件POP3服务器以及相应的操作软件 电子商务、论坛等会员机制社区:主家需要向会员发送通知信息,比如:密码重置、降价通知、留言通知、回复通知、订阅通知、会员间交流等等。主家保证邮箱有效性的办法常常是通过会员注册、更换邮箱时发送“激活邮件”。 邮件营销:在大数据时代的现在,企业可以根据所掌握的数据预测客户的需求,来提供主动推送营销消息的功能(数据化运营);当然也有没有预测能力的小商家通过邮件群发器进行撒网式邮件营销。(邮件营销是:在恰当的时间传递合适的信息给需要的客户,目的是产生销售) Read more […]

[转]不定义JQuery插件,不要说会JQuery

Posted by & filed under Uncategorized.

一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$(“#”),$(“.”),写了几年就对别人说非常熟悉JQuery。我曾经也是这样的人,直到有一次公司里的技术交流,我才改变了自己对自己的看法。 二:普及JQuery知识 知识1:用JQuery写插件时,最核心的方法有如下两个: $.extend(object) 可以理解为JQuery 添加一个静态方法。 $.fn.extend(object) 可以理解为JQuery实例添加一个方法。 基本的定义与调用:

知识2:jQuery(function () { }); 与  (function ($) { })(jQuery);的区别:

jQuery(function () { });是某个DOM元素加载完毕后执行方法里的代码。 (function Read more […]

[转].Net Mvc3框架调用服务端控件解决方案

Posted by & filed under Uncategorized.

1.先说说.net mvc2以前版本以及普通.net网页窗口的使用方式,即没有使用Razor模板以前使用服务端控件的方法。(这里以TreeView控件为例) 新建一个.aspx文件,点击设计视图,选择工具箱,在导航选项里面找到TreeView控件,将其拖到窗口中去,添加几个节点即可使用。 看一下它的源文件,如下 <html> <head runat=”server”> <title>这是个测试页面</title> </head> <body> <form id=”form1″ runat=”server”> <div> <asp:Panel ID=”Panel1″ runat=”server” Height=”307px”> <br /> <asp:TreeView ID=”TreeView1″ runat=”server” ImageSet=”XPFileExplorer” NodeIndent=”15″> <HoverNodeStyle Font-Underline=”True” ForeColor=”#6666AA” Read more […]

[转]Lazy在Entity Framework中的性能优化实践(附源码)

Posted by & filed under Uncategorized.

在使用EF的过程中,导航属性的lazy load机制,能够减少对数据库的不必要的访问。只有当你使用到导航属性的时候,才会访问数据库。但是这个只是对于单个实体而言,而不适用于显示列表数据的情况。 这篇文章介绍的是,使用Lazy<T>来提高显示列表页面的效率。 这里是相关的源代码 PerformanceTest.zip 阅读目录: 一、问题的描述 二、数据表和EF实体介绍 三、lazy load的性能 四、使用StudentExtensionRepository来提高效率 五、进一步改进,使用StudentExtensionRepository1来实现按需访问数据库 一,问题的描述 在使用EF的过程中,导航属性的lazy load机制,能够减少对数据库的不必要的访问。只有当你使用到导航属性的时候,才会访问数据库。 比如有个学生Student实体,只有当我访问Student的StudentScore(成绩实体)导航属性的时候,才会去访问StudentScore表。 问题是导航属性只是解决了单个实体访问导航属性时候的性能问题,而在实际开发过程中,常常遇到的问题是,我要显示一个列表的Student的信息,并且每个Student都要获取StudentScore信息,怎么办? 也许有人会说,可以使用EF的eager Read more […]

[转]什么是闭包(Closure)?

Posted by & filed under Uncategorized.

本文是从 What is a Closure? 这篇文章翻译而来。   这个问题是在最近一次英格兰Brighton ALT.NET Beers活动中提出来的。我发现,如果不用代码来演示,你很难单用话语把它解释清楚,所以,在这里,我打算用C#来解释一下什么是闭包(closures)。维基百科上说: 在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。 所以,一个闭包就是一个“捕获”或“携带”了其被生成的环境中、所属的变量范围内所引用的所有变量的函数。的确,很难描述,但当你看完了这些代码后,你就很容易理解了。

这里我们首先定义了一个变量“x”,值为1。然后我们定义了一个匿名函数(一个lambda表达式)赋给类型Action。Action没有参数,没有返回值,但如果你观察“action”里的定义,你会发现它使用了“x”变量。这是变量是被action“捕获”或“携带”的,自动被添加到了action的运行环境中了。 当我们执行action时,它输出了我们预期的结果。请注意,当我们执行时,原始的“x”此时已经脱离了它当初的变量环境,但它仍然能用。 当你在代码调试器(debugger)里观察“action”时,会发现很有趣的事情。我们可以看到,C#编译器为我们创建了一个Target类,里面封装了x变量: 闭包(和higher Read more […]

[转]IIS是如何处理ASP.NET请求的

Posted by & filed under Uncategorized.

      前言 每次服务器接受到请求,都要先经IIS处理。这不是一篇描述ASP.NE生命周期的文章,仅仅是关于IIS操作的。在我们开始之前,先了解这些会有助于对全文的理解,同时欢迎反馈和建议。 什么是Web Server? 每当我们通过VS运行ASP.NET网站时,VS集成的ASP.NET引擎会响应各种请求,这个引擎的名字叫“WebDev.WebServer.exe”。 当我们配置一个Web程序时,总会涉及到一个词“Web Server”,它的功能便是会响应所有请求。 什么是IIS? IIS(Internet Information Server)是微软Web Server的一种,用来配置ASP.NET站点。IIS拥有自己的ASP.NET处理引擎来处理请求,因此,当一个请求到达时,IIS接收并处理请求,然后返回内容。 请求处理过程 现在,你应能搞清楚Web Read more […]