[Jquery]将Canvas转换为Flash

mikel阅读(953)

I'm trying to write a simple web application for iPhone/iPod touch.
The application have a dynamic grid of color.. like color picker.
My first implement is using JavaScript with DIVs but the performance is too slow.

That makes me learn how to draw the grid in "Canvas".

"Canvas" similar to flash's drawing API (Graphics class) but with different drawing procedure. Actually, it's 90% same as Quartz2D which invent before flash have drawing API.

for example,
flash set the stroke style, fill style before draw.
Quartz2D draw the path first, then stroke or fill it.

To reuse my drawing code, I make an adapter for it in AS3.
here's how it work:

code in html:

var ctx = canvas.getContext('2d');
// Draw shapes
ctx.beginPath();
ctx.arc(75,75,50,0,Math.PI*2,true); // Outer circle
ctx.moveTo(110,75);
ctx.arc(75,75,35,0,Math.PI,false); // Mouth
ctx.moveTo(65,65);
ctx.arc(60,65,5,0,Math.PI*2,true); // Left eye
ctx.moveTo(95,65);
ctx.arc(90,65,5,0,Math.PI*2,true); // Right eye
ctx.stroke();

code in flash:

var ctx:Canvas = canvas.getContext("2d");
// Draw shapes
ctx.beginPath();
ctx.arc(75,75,50,0,Math.PI*2,true); // Outer circle
ctx.moveTo(110,75);
ctx.arc(75,75,35,0,Math.PI,false); // Mouth
ctx.moveTo(65,65);
ctx.arc(60,65,5,0,Math.PI*2,true); // Left eye
ctx.moveTo(95,65);
ctx.arc(90,65,5,0,Math.PI*2,true); // Right eye
ctx.stroke();

here's the examples in MDC:
http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes

demo of the canvas port in flash:
http://www.gamemeal.com/canvas/

the source will release after I finish the implement of transform matrix and arcTo.

In the meanwhile, I found some issue in flash cannot 100% compatible with canvas.
* fill – flash use even odd fill, canvas using non-zero winding rule
* autoClosePath – flash will close path if 2 point is too close.
* antiAlias – it's slightly different from canvas. Flash make verticle and horizontal line sharp by shifting 0.5px.

and,
gecko's canvas draw slightly different from safari's canvas.
* default color of gecko is "#000000" and safari is "Black"
* lineTo
eg:
context.beginPath();
context.lineTo(100,200);
context.lineTo(200,0);
context.strokeStyle = "#FFFFFF"
context.stroke();

gecko draw a line from 100,200 to 200,0
safari draw nothing.

* arcTo
gecko seems not implement arcTo properly and I'm hard to find a example using arcTo in MDC

here's illustrate the parameters of arcTo(x1,y1,x2,y2,radius);

If you want to learn more about quartz2D, I'm recommend the book from R.Scott Thompson: Quartz2D Graphics for Mac OSX developer.

[JQuery]HTML5的Canvas

mikel阅读(880)

1.Canvas 是甚么?
下面网址可以找到html5 Canvas的完整定义
http://www.whatwg.org/specs/web-apps/current-work/#the-canvas
现在Firefox 2,safari 都直接支持Canvas,IE 需要一个ExCanvas 的js代码库转换。
下面网址可以找到 ExCanvas[此js库尚未提供对arcto(),clip()的支持,因此基于其上的各种chart组件天然的不能生成pie图]
http://excanvas.sourceforge.net/
Mozilla的Canvas入门
http://developer.mozilla.org/en/docs/Category:HTML:Canvas
Mininova的Canvas入门
http://labs.mininova.org/canvas/
2.Canvas 能做甚么?
(1)Msx模拟器
It emulates the underlying Z80 CPU, TMS9918 Video Display Processor (VDP), PPI, RAM slots and Megaram. In its present form, it should be able to run any program or game developed for MSX 1.0.
用js模拟Z80等硬件,读取rom信息,无声游戏
http://jsmsxdemo.googlepages.com/jsmsx.html
(2)Painter
假如性能允许,发展成Web photo也是可能的事情。
http://caimansys.com/painter/index.html
(3)效果
水波纹
http://timelessname.com/canvas/experiment01/
某个模糊理论视觉模型
http://timelessname.com/canvas/experiment02/
(4)3D
多面体
http://www.polyhedra.org/poly/
3D地图
Mozilla的例子,RayCaster 就是一个。
Canvascape – 3D walker,比上面例子更完善些,还提供纹理贴图功能
一个类似CS的界面
http://www.abrahamjoffe.com.au/ben/canvascape/
(5)chart组件
成形的有 WebFx Chart,Flot等,需要可自行搜索。
3.Canvas 的发展
(1)Canvas代码转换到flash(porting canvas to flash)
http://team.mixmedia.com/index.php?title=porting_canvas_to_flash&more=1&c=1&tb=1&pb=1
(2)支持Canvas的框架
mootools支持Canvas 的调用,并有一个mocha的基于mootools的组件提供一个窗体功能。

[游戏]Javascript制作的吃豆子游子

mikel阅读(1626)

我不知道有多少人还记得这个古老经典的电玩游戏,这需要你的手指不停歇的做运动。
通过YUI 的博客,Kris Cieslak 使用YUI JavaScript库重新改造了这个游戏:
“警告!这些Ghosts是很聪明的,他们花费了大部分的时间试图去寻找你躲藏在什么地方,一旦他们发现了你的踪迹,他们就会立即采取行动。”(一个A.I. bug!)
对它的智能只进行了轻描淡写!只要我的手指速度少有缓慢,这些ghosts就会出击。

点击图片进入游戏

来自:ajaxian.com

[C#]在Google上创建了个项目Kiwing

mikel阅读(851)

最近想把自己.net下的持久层开发框架开源一下,于是在google上建了个开源项目
KiWing
地址:http://code.google.com/p/kiwing/
开发语言:C#
数据库:SQL Server 2005
概述:
基于C#语言的持久层开发框架,底层数据库基于SQL Server 2005

[Flex]Flex开发的工具集

mikel阅读(1041)

Sean Moore Bio 说道:秋天又一次来临了,是时候回顾一下2008年最热门的Flex和ActionScript 3.0 APIs,技巧和工具了,下面是我的总结,收集的比较全,Flex开发必备,欢迎补充。

 

介绍 Flex SDK 3.1 和 Flex Builder 3.0.1

Flex SDK 3.1 是一个Flex SDK里程碑式的版本,推荐开发者使用。
http://www.adobe.com/devnet/flex/articles/sdk3_fb301.html

Cairngorm 迁移进入Adobe开源网站(Cairngorm是Adobe 实验室中的Flex MVC框架)
http://weblogs.macromedia.com/amcleod/archives/2008/08/cairngorm_moved.html


Flex 架构基础 – 模块和数据转换对象

展示一个简单的方式使用模块和数据转换对象来设置简单Flex应用
http://nwebb.co.uk/blog/?p=228


教程: ActionScript 3 拖动函数

这个教程介绍ActionScript 3在布景中的拖动函数。
http://flashmymind.com/Tutorials/Actionscript/Advanced/actionscript-dragging.php


Flex 分页组件

一个小的Flex分页组件
http://www.darklump.co.uk/blog/?p=112


ModuleManager 和 IModuleInfo – 自动加载Flex模块

http://lowpitch.com/blog/2008/08/17/modulemanager-and-imoduleinfo-loading-flex-modules-dynamically/


Degrafa初学教程

Degrafa是一个Flex扩展,在FLEX中增加了对矢量数据的动态处理,包括动态添加,删除和修改,并支持SVG的路径格式数据。Mike Huntington一篇优秀文章。
http://www.mikehuntington.com/?p=22


同时使用Degrafa
高级CSS技巧
依然是Mike Huntington的文章。质量很高,推荐。
http://www.mikehuntington.com/?p=31


Alcon 3

为Adobe AIR重写过,一个简单好用的调试/日志工具。很酷。
http://blog.hexagonstar.com/alcon/


在Flex Builder中删除
css type selector 警告
在Flex Builder中删除 css type selector 警告的快速技巧
http://www.nutrixinteractive.com/blog/?p=135


在倾斜背景中的VBox, HBox Flex箱式模型
http://www.igorcosta.org/?p=160


Flex 设计/开发工作流程视频教程

http://www.ashorten.com/2008/08/11/flex-designerdeveloper-workflow-video-tutorials/


6个使用 ActionScript 3.0 的理由 – 作者Lee Brimelow

http://www.adobe.com/devnet/actionscript/articles/six_reasons_as3.html


定制 flex 皮肤

http://the.fontvir.us/b10g/?id=111


编写Flex组件, part 1

http://labs.flexperiments.nl/writing-components-in-flex-part-1/


编写Flex组件, part 2
http://labs.flexperiments.nl/writing-components-in-flex-part-2/


Actionscript 3 API 收集

http://flashenabledblog.com/2008/08/26/as3-actionscript-3-classes/


为展示对象创建 bitmap 数据对象

http://www.flexer.info/2008/08/20/how-to-make-a-bitmapdata-from-a-displayobjectuicomponent/


FCG 1.0 (Flex 代码生成器)

开源工具
http://www.dehats.com/drupal/?q=node/45


新的ActionScript 3 Singleton 函数

http://www.daniellove.net/blog/?p=81


CSKDebugger

Mac AIR 调试器
http://ultra-web.co.uk/?p=178


Fill Colors

Fill Colors 是一个分离Flex风格和布局工具,预览Flex应用外观皮肤。
http://www.fillcolors.com/


gTween

动画库 by Grant Skinner
http://www.gskinner.com/blog/archives/2008/08/gtween_a_new_tw.html


使用
Selenium来对AIR AJAX 应用做功能测试的框架
http://corlan.org/2008/08/15/functional-testing-framework-for-air-ajax-apps-based-on-selenium


Yahoo! Music API

The Yahoo! 音乐API给开发者权限来使用Yahoo! Music 目录。提供了多种方式浏览。
http://developer.yahoo.com/music/


ActionScript 3 灵活的布局类

The NpFlexLayout 类是设计用来简化DisplayObjects的布局。
http://www.blog.noponies.com/archives/109


mediacorelib –
ActionScript 3.0 核心媒体库
http://code.google.com/p/mediacorelib/


Servebox ActionScript Foundry

 ActionScript 3 / Java 框架为 Flex 2 应用设计,基于多个设计模式。
http://www.servebox.com/foundry/doku.php?id=


Flest Framework

Flest 是一个 ActionScript3 / Flex 应用框架,用来创建企业级别RIA应用。
http://code.google.com/p/flest/


Guasax Flex/AIR MVC – The MVC Flex/AIR Framework

Guasax是一个简单的框架提供可扩展的Flex应用。
http://www.guasax.com/guasax/web/en/index.php


Flex Mojos – HelloWorldTutorial

最简单的教程,创建一个HellowWorldFlex程序
http://code.google.com/p/flex-mojos/wiki/HelloWorldTutorial


Scott Evans – 对于新的 FlexBuilder 4 IDE 功能的公开讨论

Scott Evans, FlexBulder 团队的主导开发工程师,开始了一系列的新博客,讨论FlexBuilder 4 IDE 新功能,值得一看.
http://gettingandsetting.com/


dpHibernate – Hibernate lazy loading with Adobe BlazeDS

dpHibernate是一个定制的Flex库,和 custom BlazeDS Hibernate 一起使用提供对Flex应用内部的Hibernate对象 lazy loading(延迟加载)的支持。
http://blog.mikenimer.com/index.cfm/2008/5/21/dpHibernate–Hibernate-lazy-loading-with-Adobe-BlazeDS
http://code.google.com/p/dphibernate


Alternativa3D — browser 3D-engine based on Adobe Flash

Create 3D- 基于Flash场景 3D引擎。
http://alternativaplatform.com/en/alternativa3d/


KwikUML – build UML models of ActionScript and PHP classes

快速创建 ActionScript和PHP类,接口的 UML模型 的工具,以及提供SQL Entity关系设计 (ERDs).
http://labs.otuome.com/kwikuml


KitchenSync

KitchenSync 是一个 ActionScript 3.0 库,用来对动画排序以及其他基于时间的动作。
http://code.google.com/p/kitchensynclib/


as3xls – read and write Excel files in Flex

Flex读写excel文件工具

http://code.google.com/p/as3xls/


ASDebugger – A run-time debugger for AS3 Projects

AS 3项目的运行调试工具

http://labs.flexperiments.nl/asdebugger/


as3corelib update

这是一个ActionScript 3 库,包含很多有用的能使用在AS3中的 APIs 。
http://code.google.com/p/as3corelib/


swix framework – Flex development framework

Swiz 是一个简化RIA开发的Flex框架。
http://code.google.com/p/swizframework/


Gaia – open-source front-end Flash Framework for AS3 and AS2

Gaia 是一个开源的前台Flash框架,支持AS3和AS2,能够大量节省开发时间。
http://www.gaiaflashframework.com/


Penne Framework – lightweight framework for developing in Flex and Air

version 1.0 of The Penne Framework, 一个简单的 Flex and Air 框架, 是 Cairngorm 框架的备选方案.
http://www.flexpasta.com/index.php/2008/04/19/introducing-the-penne-framework-for-flex-3/


An ActionScript Compiler Written In ActionScript

一个用ActionScript写的ActionScript编译器
http://www.brooksandrus.com/blog/2008/08/27/an-actionscript-compiler-written-in-actionscript/

来自:seantheflexguy.com

[Web]Google App Engine的空间

mikel阅读(588)

Google App Engine - 500M支持Python免费虚拟主机

Google App Engine是Google推出的免费虚拟主机空间,其实这比一般虚拟主机强悍的多,你可以利用Google App Engine工具来开发网站或制作网络应用程序,Google会在自己的庞大服务器 集群上为你提供空间、带宽、资源等。目前Google App Engine为每个用户提供10个Application(简称App),每个App有500M免费空间,每个App限制1000个文件,单个文件1M以 内,每天流量20G。每个App提供免费二级域名1个,同时也可绑米。目前还仅支持Python一种语言脚本,不支持PHP、Perl、ASP等。

注意:这是Google面向程序开发人员提供的一项免费服务,如果你对Python不了解也不感兴趣建议不要申请,虽然很强悍但使用起来比任何一个免费空间都麻烦。

网址:http://appengine.google.com

如果你使用Google Apps,可以用“http://appengine.google.com/a/你的域名/”这个地址来申请,如果你要绑定域名,仅能绑定申请了 Google Apps服务的域名。另外,申请的时候需要填写手机号码,会给你发送确认码来确认申请,目前Google在中国仅支持中国联通,所以要用联通手机申请才能收到确认码,如果你用的不是联通手机,那就无缘Google App Engine了,且一个手机只能申请一个帐户。

官方入门指南:http://code.google.com/appengine/docs/gettingstarted

入门指南中文翻译版:http://hi.baidu.com/…/772eb07e43ff613d0cd7daa6.html

目前官方仅有英文版入门指南,所以在网上找了个网友翻译的中文版给大家做参考,有兴趣仔细看看吧。

配额限制:http://code.google.com/appengine/articles/quotas.html

Google App Engine详细配额限制,很全面。你的程序上传运行后,在Google App Engine的管理面板中可以看到配额使用情况。

Python运行限制:http://code.google.com/appengine/docs/python

Google App Engine中的Python是运行在一个受限的环境中,例如:对操作系统的底层调用、网络操作以及一些文件系统操作都是不允许的,尝试这些操作时会引起错误。

演示:http://free8.appspot.com

费了好大劲才弄好了一个页面,对于Python不太了解的新手来说,建议不要申请使用。
另外给大家两个用Google App Engine做的在线代理网站演示:

http://w3w.appspot.com

http://go2.appspot.com

[Web]Eurasia3 支持百万级用户的服务器和框架

mikel阅读(820)

项目名称: Eurasia3
发起时间: 2004年
代码托管:http://code.google.com/p/eurasia
项目介绍:
Eurasia3 是一种能够支持百万级同时在线长连接用户数量的 HTTP 服务器, 或者每秒处理上万次 CGI 请求的常规应用服务器。
Eurasia3 同时也泛指以 Eurasia3 应用服务器为核心的一系列组件形成的应用程序框架, 主要是一个嵌入式对象数据库 MissileDB, 和一个 JavaScript 框架 NJF。
Eurasia3 基于 Stackless Python。
产品信息:
运行平台: 支持 Stackless Python 2.5 的系统, 包括各种嵌入式平台
开发语言: Stackless Python
开源协议: BSD License
项目成员:
沈崴, 高级架构师, 上海,项目发起人。
赖勇浩, 某公司技术负责人,广州。
王健, 某公司技术负责人, 经理, 广州。
魏中华, 项目经理, 广州。
庄上林, 项目经理, 广州。
是什么促使你们发起/开始这个项目?
Eurasia 最初源于某个大型人工智能项目, 是为了解决大量逻辑数据的存储和管理的问题而形成的一个 Web 管理系统, 并发展成一套 AJAX 框架。
而 Eurasia3 项目则是源于一系列关于 Web Game 的尝试。我们试图在浏览器上在不使用任何插件和 Flash 的情况下, 就能实现即时类游戏的效果并维持几十乃至上百万人同时在线, 这最终导致了 Eurasia3 框架的产生。
该项目面向哪些使用群体?
黑客, Web Game 和 Web IM 从业人员, 对前沿技术感兴趣的人以及 Comet 爱好者。
举个例子说明下用户使用您的软件能做什么?
基于浏览器的 MMORPG, 玩家在地图上漫游时所看到的一切都是即时的。
基于浏览器的 Web IM, 服务器能负载传统 IM 服务器那样多的在线人数, 消息发送是即时的, 浏览器用户不需要插件就可以互传文件。
Comet 应用, 服务器程序可以在任何时候使用原生 Python 代码远程调用客户浏览器上的 JavaScript 函数。
在一两百块钱 200-300 MHz 主频的嵌入式系统 (诸如路由器, Stackless Python 官方发行版中已经带有我们贡献的补丁可以使 Stackless Python 运行在这类系统上) 上运行以 Eurasia3 为基础的网站可以接近或达到和常规服务器一样的性能。
您认为有多少人使用这个软件/项目/服务?
至少有四家以上的公司正在使用基于 Eurasia 的软件。
有什么迹象表明您的项目很成功?
尽管 Eurasia3 项目主要是面向黑客的, 并且我们相当低调 ──── 你知道我们主要还是以自己使用为主, 也回馈一下社区, 这并不会带来实际的利益。但是还是吸引了相当多的关注。
尽管 Eurasia3 目前仍然在 alpha4 阶段, 但是从 alpha2 开始我们就已经许多项目在实际使用 Eurasia3 了, 这些产品还是颇令我们满意的。
您觉得最大的惊喜是什么
尽管 Python 的框架已经很多, 我们也不期望 Eurasia3 在将来某一天像 Django 那样流行, 但是对 Eurasia3 感兴趣的人还是相当多, 有些人甚至表示在将来 Eurasia3 正式发布时用它来替代 Django (甚至 Nginx), 这比较意外。
您在该项目中遇到的最大挑战是什么?
最大的挑战是时刻保持领先。尽管目前 Eurasia3 是业内比较尖端的技术, 但是我们知道迟早会有超越 Eurasia3 的技术出现, 在此之前我们会努力保持领先。
您在该项目中认为获得成功的要素有哪些?
黑客的关注和参与。
持续地在正式项目中进行检验。
保证劣质的代码和编程思想不进入项目, 保证代码不膨胀不失控。
您对该项目有哪些期望?
一个使用 Eurasia3 编写的 Web Game, 事实上我们正在着手这件事情, 这在明年或许就会实现。然后就是大家在启动一个很酷的项目或者一个奇怪的想法时会自然而然地想到 Eurasia3。或许这些都不会真的出现, 但对我们也没有损失。
如果您能对项目进行修改,您会改善哪些地方?
文档, 当然了。从 alpha2 开始接口一直在缓慢变化, 到下一个冻结特性的 alpha5 版本或许会有更剧烈的变动, 而文档一直是滞后的。这也导致了许多用户的不满, 当然也包括我自己在内, 因为连我们自己都有许多产品都是基于老版本的。
你们如何来协调项目?
SVN、Gtalk
你们把所有精力都投入在这个软件上,还是有其他的什么工作?
我们大部分人都有自己的公司, 并且正带着自己的团队在做一些看上去很有前途的东西。
那你们一般花多长时间在这个项目上?
每周20小时, 10 小时, 或者 0小时。你知道在没有灵感时与其放一些垃圾代码进去, 还不如不写,
你们用的开发环境是什么
操作系统: Linux (主要是 Ubuntu)
编辑器: vim, gedit
项目里程碑
1999 年 NJF 框架开始设计, 这是 Eurasia 最早的组成部分。
2004 年 Eurasia 项目开始。
2006 年 9 月 Eurasia 2.0.2 版以 BSD License 开源, 年底 Eurasia3 项目开始。
2007 年 12 月 Eurasia 3.0.0 alpha 发布。
2008 年 Eurasia 3.0.0 alpha4 发布。
其他人如何给你们提供建议?
Eurasia3 用户组 http://groups.google.com/group/eurasia-users

[SQL]SQL Server中的视图概念

mikel阅读(1037)

最近项目中发现一个问题,就是按Not in top方法对视图 分页时候如果不指定order by 条件,分页出来的每页结果存在混乱现象,究其原因还是因为视图本身没有类似表一样的默认排序规则,导致数据分页无序读取的,看来还是
对视图不是很了解,特查了下SQL server的帮助,摘要如下:

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图在数据库中并不是以数据值存储集形式存在,除非是索引视图。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。例如,如果有多台不同的服务器分别存储您的单位在不同地区的数据,而您需要将这些服务器上结构相似的数据组合起来,这种方式就很有用。

通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。

 

标准视图

标准视图组合了一个或多个表中的数据,您可以获得使用视图的大多数好处,包括将重点放在特定数据上及简化数据操作。有关这些好处的详细信息,请参阅使用视图的情况

索引视图

索引视图是被具体化了的视图,即它已经过计算并存储。可以为视图创建索引,即对视图创建一个唯一的聚集索引。索引视图可以显著提高某些类型查询的性能。索引视图尤其适于聚合许多行的查询。但它们不太适于经常更新的基本数据集。有关详细信息,请参阅设计索引视图

分区视图

分区视图在一台或多台服务器间水平连接一组成员表中的分区数据。这样,数据看上去如同来自于一个表。联接同一个 SQL Server 实例中的成员表的视图是一个本地分区视图。

注意:
SQL Server 2005 中包含本地分区视图只是为了实现向后兼容,并且当前不推荐使用。本地分区数据的首选方法是通过已分区表。有关详细信息,请参阅已分区表和已分区索引

如果视图在服务器间联接表中的数据,则它是分布式分区视图。分布式分区视图用于实现数据库服务器联合。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负

视图通常用来集中、简化和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。视图可用于提供向后兼容接口来模拟曾经存在但其架构已更改的表。还可以在向 Microsoft SQL Server 2005 复制数据和从其中复制数据时使用视图,以便提高性能并对数据进行分区。

着重于特定数据

视图使用户能够着重于他们所感兴趣的特定数据和所负责的特定任务。不必要的数据或敏感数据可以不出现在视图中。

例如,AdventureWorks 示例数据库中的视图 vBikes 允许用户查看当前库存的所有自行车的名称。该视图将从 Product 表中筛选掉除 Name 之外的所有字段,并仅返回自行车成品的名称,而不是自行车配件的名称。

复制代码
Create VIEW vBikes AS
Select DISTINCT p.[Name] FROM Production.Product p
JOIN Production.ProductInventory i ON p.ProductID = i.ProductID
JOIN Production.ProductSubCategory ps
ON p.ProductSubcategoryID = ps.ProductSubCategoryID
JOIN Production.ProductCategory pc
ON (ps.ProductCategoryID = pc.ProductCategoryID
AND pc.Name = N'Bikes')
AND i.Quantity > 0

简化数据操作

视图可以简化用户处理数据的方式。可以将常用联接、投影、UNION 查询和 Select 查询定义为视图,以便使用户不必在每次对该数据执行附加操作时指定所有条件和条件限定。例如,可以将一个用于报表目的且执行子查询、外联接和聚合来从一组表中检索数据的复杂查询创建为视图。视图简化了对数据的访问,因为每次生成报表时无需编写或提交基础查询,而是查询视图。有关对数据进行操作的详细信息,请参阅查询基础知识

尽管不是复杂查询,AdventureWorks 示例数据库中的视图 vBikes 仍允许用户着重于特定数据,而不必构造生成视图所需的 JOIN 子句。

还可以创建用户定义的内联函数,在逻辑上作为参数化视图运行,或者作为在 Where 子句搜索条件或查询的其他部分中含有参数的视图运行。有关详细信息,请参阅内联用户定义函数

提供向后兼容性

视图使您能够在表的架构更改时为表创建向后兼容接口。例如,一个应用程序可能引用了具有以下架构的非规范化表:

Employee(Name, BirthDate, Salary, Department, BuildingName)

若要避免在数据库中重复存储数据,可以通过将该表拆分为下列两个表来规范化该表:

Employee2(Name, BirthDate, Salary, DeptId)

Department(DeptId, BuildingName)

若要提供仍然引用 Employee 中的数据的向后兼容接口,可以删除原有的 Employee 表并用以下视图替换:

复制代码
Create VIEW Employee AS
Select Name, BirthDate, Salary, BuildingName
FROM Employee2 e, Department d
Where e.DeptId = d.DeptId

此时,用于查询 Employee 表的应用程序可以从 Employee 视图中获取它们的数据。如果只从 Employee 中读取,则不必更改应用程序。通过向新视图添加 INSTEAD OF 触发器,将对视图的 Insert、Delete 和 Update 操作映射到基础表,有时也可以支持更新 Employee 的应用程序。有关详细信息,请参阅设计 INSTEAD OF 触发器

自定义数据

视图允许用户以不同方式查看数据,即使在他们同时使用相同的数据时也是如此。这在具有许多不同目的和技术水平的用户共用同一数据库时尤其有用。例如,可创建一个视图以仅检索由客户经理处理的客户数据。该视图可以根据使用它的客户经理的登录 ID 决定检索哪些数据。

导出和导入数据

可使用视图将数据导出到其他应用程序。例如,您可能希望使用 AdventureWorks 数据库中的 Customer 和 SalesOrderHeader 表在 Microsoft Excel 中分析销售数据。为此,可基于 Customer 和 SalesOrderHeader 表创建视图。然后,使用 bcp 实用工具导出由该视图定义的数据。如果可以使用 Insert 语句向视图中插入行,则还可以使用 bcp 实用工具或 BULK Insert 语句将数据从数据文件导入某些视图。有关向视图中复制数据的限制的详细信息,请参阅 Insert (Transact-SQL)。有关如何使用 bcp 实用工具和 BULK Insert 语句向视图复制数据和从视图复制数据的详细信息,请参阅从视图导出数据或将数据导入视图

跨服务器组合分区数据

Transact-SQL UNION 集合运算符可在视图内使用,将单独表的两个或多个查询的结果组合到单一的结果集中。这在用户看来是一个单独的表,称为分区视图。例如,如果一个表包含华盛顿的销售数据,另一个表包含加利福尼亚的销售数据,则可以对这两个表使用 UNION 创建一个视图。该视图代表这两个地区的销售数据。

使用分区视图时,请您首先创建几个相同的表,指定一个约束以确定可在各个表中添加的数据范围。然后,使用这些基表创建视图。查询视图时,SQL Server 将自动确定查询所影响的表并仅引用这些表。例如,如果一个查询指定只需要华盛顿州的销售数据,SQL Server 将只读取包含华盛顿销售数据的表,而不访问其他表。

分区试图可基于来自多个异类源(如远程服务器)的数据以创建数据库服务器的联合体。例如,若要将分别存储组织中不同区域数据的几台远程服务器上的数据组合起来,可以创建分布式查询,从每个数据源中检索数据,然后基于这些分布式查询创建视图。所有查询都只读取包含查询所请求数据的远程服务器上的表中的数据,而不访问由视图中的分布式查询所引用的其他服务器。

跨多个服务器对数据进行分区时,只访问一部分数据的查询可以较快地运行,因为只需扫描较少的数据。如果表位于不同服务器上,或者位于一台使用多个处理器的计算机上,则还可以并行扫描该查询所涉及的每个表。这可以提高查询性能。此外,维护任务(例如重新生成索引或备份表)可更快地执行。

通过使用分区视图,数据的外观象是一个单一表,并且能以单一表的方式进行查询,而无需手动引用正确的基础表。

注意:
本地分区视图或组合同一个服务器上表中的分区数据的视图包含在 Microsoft SQL Server 2005 中,只是为了提供向后兼容性。本地分区数据的首选方法是通过已分区表。有关详细信息,请参阅已分区表和已分区索引

如果满足下列任一条件,则分区视图可被更新:

  • 具有逻辑的视图定义支持 Insert、Update 和 Delete 语句的 INSTEAD OF 触发器。

[JQuery]JQuery的50个特色插件

mikel阅读(847)

原文:50+ Amazing Jquery Examples- Part1

JQuery是近段时间里比较流行的一个JavaScript框架,不断有使用者开发出新的 JQuery插件。下面收集了50个开发者最喜欢使用的JQuery插件。这仅仅是第一个系列,你先品尝,第二道大餐即将到来。
Sliding Panels -滑动门控制
1) Sliding Panels For jQuery -元素可以展开或关闭,创建出手风琴的滑动效果。

(2) jQuery Collapse -这个jQuery插件同样点击后滑动展开或关闭DIV层。
Menu - 菜单
3) LavaLamp

menu

(4) A Navigation Menu– 锚链接的无序列表嵌套, 可以添加2级菜单

menu

(5) SuckerFish Style

menu

Tabs – 选项卡
6) jQuery UI Tabs / Tabs 3 – 基于 jQuery 的一个Tab选项卡导航

(7) TabContainer Theme – 当用户在选项卡之间进行切换时,产生JQuery风格的淡出动效果。


Accordion- 手风琴效果
8 ) jQuery Accordion

Demo
accordion

(9) Simple JQuery Accordion menu

accordion
SlideShows - 幻灯片
10) jQZoom-让你在你的网页上很简单的实现图片的缩放功能。

rating

(11) Image/Photo Gallery Viewer– 一个图像/相片的画廊展示插件。可以让你对图片进行分组、并产生像Flash一样的多种浏览特效。

rating
Transition Effects – 过渡特效
12) InnerFade – 可以让网页中的任何元素产生淡化效果

(13) Easing Plugin-另外一个简单的过渡效果插件

(14) Highlight Fade

(15) jQuery Cycle Plugin– 拥有多种过渡效果的一个Gallery插件。

accordion

奇幻的jQuery
16) Riding carousels with jQuery – 这个jQuery插件可以生成一个水平或垂直的列表,并且允许你控制DIV层的滑动显示。

Demo :

Color Picker -拾色器
17) Farbtastic -这个 jQuery 插件可以让你通过JavaScript添加一个或多个拾色器widgets到一个页面中。

Demo :

(18) jQuery Color Picker
LightBox -灯箱效果
19) jQuery ThickBox – is a webpage user interface dialog widget written in JavaScript.

Demo :

(20) SimpleModal Demos – its goal is providing developers with a cross-browser overlay and container that will be populated with content provided to SimpleModal.

Demo :

(21) jQuery lightBox Plugin – simple, elegant, unobtrusive, no need extra markup and is used to overlay images on the current page through the power and flexibility of jQuery′s selector.

Demo :

(
iframe
22) JQuery iFrame Plugin


Form Validation -表单验证器
23) Validation – 有一套完整相当的形式验证规则。该插件还动态地创建ID和联系信息。

Demo :

(24) Ajax Form Validation – 在客户端使用jquery验证的一种形式,它可以验证用户名是否有效等。

Demo :

(25) jQuery AlphaNumeric -欢迎对对表单域中的某些字符进行限制


Form Elements - 表单事件

(26) jquery.Combobox – 从现在的选择元素中创建一个个性的HTML组合 Demo is here.

(27) jQuery Checkbox -样式化选择框,从而提高交互能力。

(28) File Style Plugin for jQuery -File Style插件让你可以使用图像做为文件浏览按钮,你还可以样式化文件名称区域。
Star Rating - 星形评级系统
rating

(29) Simple Star Rating System

30)Half-Star Rating Plugin
ToolTips -提示工具
31) Tooltip Plugin Examples – 一个花俏的提示应用。 可以对提示信息进行自定义位置, 设置阴影效果和添加更多内容等.你可以点击demo 演示.

(32) The jQuery Tooltip

tool tip
Tables Plugins -表格插件
33) Zebra Tables Demo -使用jQuery来创建出斑马线风格的数据表格,鼠标悬浮时能改变背景色。

Demo :

zebra tables

(34) Table Sorter Plugin – 把一个标准的HTML表格分解成Thead和Tbody标签构成的分类表格,不需要刷新。它能够成功地解析和整理多种类型的数据,包括联系资料。

table sorter

(35) AutoScroll for jQuery -可以生成网页表格的热点自动滚动效果

auto scroll

(36) Scrollable HTML table plugin– 用来转换表格为普通的滚动HTML。不需要额外的编码。

Demo :

Scrollable table
Draggable Droppables And Selectables 拖拽
37) Sortables – 一个简单强大的拖拽插件。

sort

(38) Draggables and droppables– 这是一个很好的演示。用来实现拖拽树形菜单项目的操作

drag drop
Style Switcher - 切换风络
39) Switch stylesheets with jQuery允许访客选择他们喜欢的网站样式,使用了Cookie记录,也就是同一个用户下次再访问时,除非他不切换,否则会保留他选择的样式。

Demo演示.
Rounded Corners 圆角效果
40) jQuery Corner Demo

rounded corners

(41) JQuery Curvy Corners– 这个插件可以让你生成光滑、无锯齿的圆角效果。

rounded corners
Must See jQuery Examples 应该了解的一些jQuery应用实例
42) jQuery Air – 一个非常非常特别的客户管理界面应用插件,太特别了,太太太特别了。

Demo :

(43) HeatColor

Demo :

(44) Simple jQuery Examples

(45) Date Picker -一个灵活个性的jQuery日历组件。

Demo :

(46) ScrollTo -这个jQuery插件可以让你实现当点击链接时中滚动到页面中的某一对象

(47) 3-Column Splitter Layout 一个3栏布局分配插件。

(48) Pager jQuery -一个小巧的 jQuery插件,用来增加分页的页码效果

(49) Select box manipulation

(50) Cookie Plugin for jQuery

51) JQuery BlockUI Plugin




[CSS]页面中的Pre标签换行问题

mikel阅读(1155)

本站文章中使用了 pre 格式输出 代码。 而浏览器默认是强制不换行输出 pre 里的内容。这样的话,代码一长就出现了撑到页面外部的样子。在之前我都是有意的在代码里强制换行… 累啊. 今天有意的google了下,找到了:

pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}

经测试,除IE[当前使用6] 外, 其他可以…. 郁闷,然后增加 width:600px; 后,ok,.换行了,其实位置还是衍生出去了。样子是这样的: 代码是在里面了,但下面的叙述性的东西却出了去。在说,定义一个这个宽度也不是个好的方法,其他的不直接改这个css的方法基本没有了。

然后看上面css想到, 为什么定义其他的都用 white-space 而定义 IE 的不使用呢? 又不是IE 不支持。。于是加上就可以了[翻了google的前5页, 没找到一个改css解决的…汗]。

 pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
white-space : normal ;       /* Internet Explorer 5.5+ */
}

至于本站上使用的是把ie和其他的分开了,因为white-space 在最后也都作用于其他了….

pre {
white-space: pre-wrap;       /* css-3 */
white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
white-space: -pre-wrap;      /* Opera 4-6 */
white-space: -o-pre-wrap;    /* Opera 7 */
}
* html pre {
word-wrap: break-word;       /* Internet Explorer 5.5+ */
white-space : normal ;       /* Internet Explorer 5.5+ */
}

End. by Autoit.


Permanent URL: http://www.autoit.cn/index.php/content/view/96/2.html