<<上篇 | 首页 | 下篇>>

6个免费的翻页效果jquery插件

6 FREE JQUERY PAGE FLIPPING BOOK-LIKE PLUGINS

在过去的三到五年web开发世界,jQuery的引入和流行已经取得重大的进展。Web开发人员和程序员,不断引进新的概念和方法,创建类似Flash惊人效果,然而:Flash变得过时了,Flash正在越来越少被Web开发人员和网络管理员利用。

 

JQuery Page Flip

 

几年前,许多网站使用Flash来创建很多疯狂的Flash组件,但那些日子因为与其实现有关已经嘎然而止并逐渐让位给脚本语言,如jQuery和MooTools正复制Flash过去的效果。

 

页面翻转,已成为最流行的网页设计互动动画的捷径之一。他们可以很容易地实现在Flash,网站,文件,和你创建和发布的杂志中。结合HTML5和CSS3可以实现动画,也可以使用HTML、CSS和jQuery来实现动画。

 

这里收集了一些最新的JQuery的页面翻转,可用在你的下一个网上创业,如杂志网站,或网上购物网站。然而,翻页不仅限于这些,发挥你的想象力和需求,可以随时把它用在你想用到的任何地方。

 

1. Flip Page

Flip Page

FlipPage是一个用来创建翻页效果强大的jQuery插件,这个插件被开发用来在平板上触摸进行演示。插件使用HTML5、CSSS3和硬件加速,并可工作在手机浏览器上。 FlipPage插件可以将翻转效果用在显示图像(让你体验2D)。

 

下载

 

 

2。Turn.JS

turn_js

 

turn.js是一个jQuery的插件,用HTML5增添了一道亮丽的类似真实翻书或杂志的效果。它给你美丽的动画效果,您可以通过简单地转动所需的网页任何角落来浏览网页。 turn.js(15KB)是相当轻量级的和有效的翻页插件,适用于手机及平板浏览器以及利用硬件加速。

 

下载

 

3。Booklet

booklet

 

Booklet是在动画书布局的网页上显示的内容的jQuery插件工具。Booklet是有众多选项的插件之一。 JavaScript的转折点页面效果不强,因为它一直在角落(从书本身没有溢出)的东西,但工作可靠。可以手动打开网页,通过键盘上下键或自动翻动。每一页上也有一个独特的网址(使用Hashtags)。Booklet支持章节,页码和回调做进一步的互动。

 

下载

 

4。jPageFlip

jpageflip

 

jPageFlip是强大的,高度可定制的模拟翻页jQuery插件。 jPageFlip目前基于“画布技术,唯一被主流浏览器和IE9支持。 jPageFlip支持实现透明和半透明图像。HTML5视频的第一个版本已经实现,但处于实验阶段。 jFlipPage 在WebKit浏览器上有点不正常。

 

下载

 

5。Flip

Flip

 

Flip是一个jQuery插件,很容易在四个方向翻转元素。允许您定义翻转的方向,你也可以定义背景颜色,动画的速度,而且还支持 onAnimation和OnEnd动画在给定的时间执行。

 

下载

 

 

6。jFlip插件

jFlip

这个插件将一个图片库做成一本书。您可以翻动书页,以查看下一个或上一个图像,当悬浮在图像区域可点击或拖动图画。

 

下载

 来源:英文       中文编译:IT瘾   转载请保留原文链接

你能用Paper.js做什么?

       现在已经有很多利用HTML5的JavaScript框架。

       Paper.js是这些框架其中一个,它以容易理解的方式使用DOM构造对象。它提供了在支持<canvas>标签的web浏览器上以创造性和优雅的方式做大量操作。它也提供了一种新的和有趣的方式画矢量图形。

       基本的安装如下

<script src="js/paper.js" type="text/javascript"></script>

<script src="js/main.js" type="text/paperscript"></script>

<canvas id="draw" width="100%" height="100%" resize="true"></canvas>

       psper.js被包含在你加入你的代码文件"type='text/paperscript'"之前,通过canvas元素的id去画以确保你的代码文件包含使用paper.js所有的类和功能能使用。

       

       那么Paper.js到底能做什么呢?

       1、使用预定义图形

 Paper.js允许你使用不同维度预定义图形和创建线段。例如,下面的代码用“Circle”构造了圆形路径:

var myCircle = new Path.Circle(new Point(300, 70), 50);

myCircle.fillColor = 'black';

 这个代码片段创建了一个黑色圆形,半径为50pts,圆心坐标x300,y为70。

 为了创建一个长方形,像圆形相同的方式通过“Rectangle”构造器,代码如下:

var rectangle = new Rectangle(new Point(50, 50), new Point(150, 100));

var path = new Path.Rectangle(rectangle);

path.fillColor = '#e9e9ff';

path.selected = true;

 

       2、创建交互

 Paper.js支持拖放功能也支持键盘操作。下面演示一个在鼠标路径上画线段:

<!DOCTYPE HTML>

<html>

<head>

<script src="lib/paper.js" type="text/javascript"></script>

<script type="text/paperscript" canvas="draw">

// Create a new path once, when the script is executed:

var myPath = new Path();

myPath.strokeColor = 'black';

// This function is called whenever the user

// clicks the mouse in the view:

function onMouseDown(event) {

   // If the path is empty, we need to add two segments

   // to the path. The first one will stay put,

   // and the second one will be moved while dragging.

   if (myPath.segments.length == 0) {

       myPath.add(event.point);

   }

   // Add a segment to the path at the position of the mouse:

   myPath.add(event.point);

}

function onMouseDrag(event) {

   // Move the last segment point of the path to the

   // current position of the mouse:

   myPath.lastSegment.point = event.point;

}

</script>

</head>

<body>

<canvas id="draw" width="100%" height="100%" resize="true"></canvas>

</body>

</html>

上面的代码允许你通过拖拉画线。

其他的鼠标处理功能当某个事件发生时能够被paper.js调用和触发。依赖于你想完成的哪种和什么级别的交互,你可以组合鼠标处理功能像event.point,event.downpoint 或 event.pressure 等能收到的不同有关鼠标事件对象

 

      3、 创建动画

 Paper.js通过调用“onFrame”handler来创建动画。像下面这样定义:

function onFrame(event) {

    // Your animation code goes in here

}

 动画的可以用onFrame handler创建包或旋转、移动,颜色效果和路径段动画等等

 

下面的代码创建并3度旋转顺时针方向的矩形

// Create a rectangle shaped path with its top left point at

// {x: 75, y: 75} and a size of {width: 75, height: 75}

var topLeft = new Point(75, 75);

var size = new Size(75, 75);

var path = new Path.Rectangle(topLeft, size);

path.strokeColor = 'black';

function onFrame(event) {

   // Each frame, rotate the path by 3 degrees:

   path.rotate(3);

}

下载paper.js:http://paperjs.org/download/

 例子:

官方例子:http://paperjs.org/examples/

风吹蒲公英:http://zgrossbart.github.com/Dandelion/

 Paper.js浏览器支持:需要Internet Explorer 9+, Firefox 4+, Safari 5+ or Chrome

来源:英文原文   中文编译: IT瘾     转载请保留原文链接

Blur 上手 - 建于Hadoop 和 Lucene上的搜索工具

Getting Started with "Blur" - Search on Top of Hadoop and Lucene.

Blur是一个新的Apache 2.0许可的软件项目,提供了建于Hadoop和Lucene之上一个搜索功能。elasticsearch和Solr已经存在,为什么建立新的东西?虽然这些项目运作良好,不过他们没有与一个坚实的Hadoop生态系统集成。Blur始建专门针对大数据,从一开始考虑到可扩展性,冗余和性能,同时利用Hadoop堆栈中已经存在的所有优势。

 

一年半前,我的项目开始使用Hadoop的数据处理。很早,我们有网络问题,这使我们的HDFS集群网络连接充其量参差不齐。在一个周末,我们逐步失去了在集群的数据节点90中的47个网络连接。当我们在星期一早上的时候,我注意到,MapReduce系统是有点呆滞,但仍在工作。当我检查HDFS中,我看到我们的能力下降了约50%。集群上运行的fsck后,我惊奇地发现,上周末灾难性的失败但似乎文件系统仍然健康。这方面的经验,给我留下了深刻的印象。就在那时,我有个想法,以某种方式利用冗余和HDFS的容错来建立搜索系统的下一个版本,我才刚刚开始(重新)写。

 

我已经写了一个已在生产系统中几年的分片式Lucene的服务器。 Lucene的工作非常出色,做了一切我们需要的搜索工作。我们面临的问题是,它是运行在大铁箱是不是多余的,并不能很容易地扩展。看到Hadoop的一流的的可伸缩特征后,我决定寻找结合已经成熟和令人印象深刻的Lucene的功能设置与内置在Hadoop平台的可扩展性和冗余。因此这个实验项目Blur被创建。

 

Blur解决的最大的技术问题/功能:

 

  • 整个数据集的快速大规模索引
  • 自动分片Server故障转移
  • 通过Lucene的NRT实现近实时更新的兼容性
  • Lucene的FDT的文件压缩,同时保持随机存取性能
  • Lucene的的WAL(预写日志)提供数据的可靠性
  • Lucene直接R/W到HDFS中(seek写的问题)
  • Lucene的目录缓存块的随机存取性能

 

数据模型

 

在Blur的数据存储在包含行的表中。行必须有一个唯一的行ID,并包含一个或多个记录。记录有一个独特的记录ID(行内唯一)和逻辑上弥补了单个记录的列进行分组的列家族。列包含一个名称和一个值,一个记录可以包含多个列具有相同的名称。

 

01.{
02.rowid:"[email protected]",
03.records:[
04.{
05.recordid:"324182347",
06.family:"messages",
07.columns:[
08.{name:"to",value:"[email protected]"},
09.{name:"to",value:"[email protected]"},
10.{name:"subject",value:"important!"},
11.{name:"body",value:"This is a very important email...."}
12.]
13.}, {
14.recordid:"234387219",
15.family:"messages",
16.columns:[
17.{name:"to",value:"[email protected]"},
18.{name:"subject",value:"This is cool!"},
19.{name:"body",value:"Check this out....."}
20.]
21.}, {
22.recordid:"234123412",
23.family:"contacts",
24.columns:[
25.{name:"name",value:"Jon Doe"},
26.{name:"email",value:"[email protected]"}
27.]
28.}
29.]
30.}

 

 

架构

 

Blur使用Hadoop的MapReduce框架索引数据,Hadoop的HDFS文件系统用于存储索引。Thrift 用于所有的进程间通信同时 Zookeeper 被用于了解系统状态和存储元数据。Blur的架构是由两种类型的服务器进程:

 

  • Blur控制服务器
  • Blur分片服务器

分片服务器,从所有当前在线的表提供0个或多个碎片服务。在每个碎片服务器中哪些碎片在线是通过在Zookeeper的状态信息来计算的。如果碎片服务器宕机,通过与Zookeeper的余下的碎片服务器交互检测到故障,并确定他们的丢失的碎片需要从HDFS得到服务。

 

控制服务器提供了集群单一的入口点(逻辑),撒出查询,收集回复,并提供一个单一的响应。控制器和分片服务器暴露相同的 Thrift API,这有助于方便调试。它还允许开发人员启动一个单一的分片服务器,并与它进行交互,以与大型集群同样的方式。许多控制服务器可以(并且应该)冗余运行。控制器作为网关承担服务于分片服务器所有数据。

 

更新/加载数据

目前有两种方法来加载和更新数据。首先是通过MapReduce的大量载入,第二个是用Thrift通过突变调用。

 

大量载入 MapReduce的范例

 

01.public class BlurMapReduce {
02.public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
03.Configuration configuration = new Configuration();
04.String[] otherArgs = new GenericOptionsParser(configuration, args).getRemainingArgs();
05.if (otherArgs.length != 2) {
06.System.err.println("Usage: blurindexer <in> <out>");
07.System.exit(2);
08.}
09. 
10.AnalyzerDefinition ad = new AnalyzerDefinition();
11. 
12.TableDescriptor td = new TableDescriptor();
13.td.setShardCount(16);
14.// Location in HDFS
15.td.setTableUri("hdfs://<;namenode>:<port>/blur/tables/test-table");
16.td.setAnalyzerDefinition(ad);
17. 
18.BlurTask blurTask = new BlurTask();
19.blurTask.setTableDescriptor(td);
20.blurTask.setSpinLockPath("/copy-locks");
21.blurTask.setZookeeperConnectionStr("localhost");
22.blurTask.setMaxNumberOfConcurrentCopies(10);
23. 
24.// The copy locks are used to throttle how many concurrent
25.// copies from the reducers are occuring at the same time.
26.// This is normally needed because the indexing cluster is
27.// typically larger in size than the blur cluster.
28. 
29.Job job = blurTask.configureJob(new Configuration());
30.job.setJarByClass(BlurExampleMapper.class);
31.job.setMapperClass(BlurExampleMapper.class);
32.job.setInputFormatClass(TextInputFormat.class);
33.job.setOutputFormatClass(TextOutputFormat.class);
34. 
35.FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
36.FileOutputFormat.setOutputPath(job, new Path(otherArgs[1], "job-" + System.currentTimeMillis()));
37.System.exit(job.waitForCompletion(true) ? 0 : 1);
38.}
39. 
40.public static class BlurExampleMapper extends BlurMapper<LongWritable, Text> {
41.@Override
42.protected void map(LongWritable k, Text value, Context context) throwsIOException, InterruptedException {
43.// Reset record
44._record.clearColumns();
45. 
46.// Set row id
47._record.setRowId("rowid");
48. 
49.// Set record id
50._record.setRecordId("recordid");
51. 
52.// Set column family
53._record.setColumnFamily("cf1");
54. 
55._record.addColumn("name", "value");
56. 
57.// Set the key which is usual the rowid
58.byte[] bs = _record.getRowId().getBytes();
59._key.set(bs, 0, bs.length);
60.context.write(_key, _record);
61._recordCounter.increment(1);
62.context.progress();
63.}
64.}
65.}

Data Mutation Thrift Example

 

01.import static com.nearinfinity.blur.utils.BlurUtil.*;
02. 
03.public class ThriftMutationExample {
04.public static void main(String[] args) throws BlurException, TException, IOException {
05.final RowMutation mutation = newRowMutation("test-table", "rowid-1234",
06.newRecordMutation("column-family", "recordid-5678",
07.newColumn("columnname", "value")));
08. 
09.BlurClientManager.execute("controller1:40010", new BlurCommand<Void>() {
10.@Override
11.public Void call(Client client) throws BlurException, TException {
12.client.mutate(mutation);
13.return null;
14.}
15.});
16.}
17.}

 

 

 

 

搜索数据

 

任何Blur数据模型中的元素是通过正常的Lucene的语义检索:analyzers。Analyzers 定义在Blur表中。

 

标准Lucene查询语法是搜索 Blur 默认的方式。如果标准语法以外的任何需要,可以直接用Java对象创建一个Lucene的查询,并通过专家查询API提交他们。

 

行内的列家庭分组允许跨列家庭类似什么,你会得到一个内部联接两个表之间共享相同的键(或在rowid)。对于有多个列家族复杂的数据模型,这使得有一个非常强大的搜索能力。

 

下面的示例搜索“value”作为一个完整的全文检索。如果我想在列家族"famB"中的单个字段"colA"中搜索“value”,查询应该类似“famB.colA:value”。

 

01.public class ThriftSearchExample {
02. 
03.public static void main(String[] args) throws BlurException, TException, IOException {
04.BlurResults blurResults = BlurClientManager.execute("controller1:40010",new BlurCommand<BlurResults>() {
05.@Override
06.public BlurResults call(Client client) throws BlurException, TException {
07.BlurQuery blurQuery = new BlurQuery();
08.SimpleQuery simpleQuery = new SimpleQuery();
09.simpleQuery.setQueryStr("value");
10.blurQuery.setSimpleQuery(simpleQuery);
11.blurQuery.setSelector(new Selector());
12.return client.query("test-table", blurQuery);
13.}
14.});
15.for (BlurResult result : blurResults.getResults()) {
16.// do something with the result
17.}
18.}
19.}

 

 

 

读取数据

 

取数可以通过按行或按记录。通过指定的ROWID或recordid创建一个选择的对象,指定列家庭或你想返回的列。如果没有指定,返回整个行或记录。

 

01.public class ThriftFetchExample {
02.public static void main(String[] args) throws BlurException, TException, IOException {
03.Row row = BlurClientManager.execute("controller1:40010", newBlurCommand<Row>() {
04.@Override
05.public Row call(Client client) throws BlurException, TException {
06.Selector selector = new Selector();
07.selector.setRowId("rowid-1234");
08.FetchResult fetchRow = client.fetchRow("test-table", selector);
09.FetchRowResult rowResult = fetchRow.getRowResult();
10.return rowResult.getRow();
11.}
12.});
13.}
14.}

 

 

现状

 

Blur正接近它的第一个版本0.1,是相对稳定的。首次发布的候选应是在未来几周内可供下载。在此期间,可以在github上检查出来:

 

https://github.com/nearinfinity/blur

http://blur.io

来源:英文原文           中文编译:IT瘾       转载请保留原文链接

 

 

标签 : , ,