动态设计

什么是动态设计,不了解?木关系,百度移动用户体验部 高级视觉设计师 @TCWison 为动态设计吹响了集结号,从前世今生谈到在互联网的具体应用,还捎带个人的实战演示,推荐童鞋们来了解下,为什么说动态设计是碎片化阅读时代的一大利器。

相关推荐:
《让页面更上档次!网页设计细节大总结》
《巨人之争!IOS7和ANDROID4.4奇巧巧克力》
《网站字体渲染!聊聊各浏览器下字体排版一致的问题》

一、Motion Design 的前生今世

@TCWison (百度移动用户体验部 高级视觉设计师 ):什么是Motion Design?相信很多人在看到逼格如此高的两个单词后,都会产生这样的疑问。让我们先看一个视频,它会给你最直观的认识:What is Motion Design

怎么样?思路是否清晰了一些?简而言之,Motion Design就是动态设计,有时也称为Motion Graphic Design,即运动图形设计(以下统称MG。其实严格意义上讲,运动图形设计是动态设计里一个细分的风格,但由于它极具代表性且作品数量众多,在一些专业人士的定义里两者逐渐趋同。关于运动图形设计与动态设计之间的关系,《从信息传达角度解读Motion Graphics》这篇雄文阐述的非常清楚,大家可以拜读一下),它是遵循平面设计的原则和视听语言,用视频或动画技术创作出一种动态影像的设计形式。

动态设计(Motion+Graphic)在互联网时代的应用

MG通常结合了许多不同的元素,如二维和三维动画,视频素材,字体版式,插画,摄影,音乐等。MG通常并不像传统的动画具有个性鲜明的角色或者曲折的剧情,虽然有时也会有一些角色动画,但他们不是主角,而他们传递的信息或者表达的氛围才是。

二、Motion Design在互联网时代的应用

在长时间的历史演变中,MG常见的应用是电影片头片尾,在TVC广告末尾的标志动画,以及电视包装当中常用的Logo演绎,ID呼号,角标等等。而随着行业的不断发展,MG涉及的领域也开始细分,越来越多的从业人员从电影、电视这些传统的领域向其他新媒体迁移,这其中就包括互联网行业。

微博(Twitter)、人人(Facebook)、优酷(Youtube)等社交网络的兴起,使得人们能获取的信息呈爆炸式的增长。而溯本追源,信息的传播,无非三个方式:文字、图片和视频。作为其中最让人印象深刻,传播效果最好的载体,视频为MG提供了更大的展示舞台和想象空间。同时,也有越来越多的互联网团队和企业意识到MG的作用,并尝试利用它的特点与优势为自己创造效益。总结一下,MG在互联网领域的应用,可分为以下几个方面:

1、产品展示

展示产品(或概念原型)的功能、界面、交互操作等细节。更直观的让用户了解一款产品的核心特征、用途、使用方法等细节。

示例1、Campus Quad iOS app – Case Study preview

示例2、Snack Promotion

2、品牌建设

在展示功能的基础上,丰富的动态Video也是阐(tí)述(shēng)理(bī)念(gé)的好方式。有趣的故事大家都爱听。Apple前段时间的几个品牌宣传视频,就让人叹为观止:

示例1、Designed by Apple in California

示例2、iPhone 5c – Designed Together

另一家科技巨头Google在这方面也是佼佼者,几乎旗下的每款产品发布时,都会有相应的品牌视频推出。不但生动形象的推广了产品,也为这家极客气息浓重的公司,平添了几分人情味。

示例1、Google Now

示例2、Google Keep

示例3、Google Driver

示例4、Google Fiber

3、动效原型

除了Video Show之外,MG在产品领域也有大展拳脚的地方,这就是动效原型设计。传统意义上讲,产品的动效、界面transition是交互设计师的业务范畴。但相信广大交互设计师在工作中总会有这样的烦恼:1、动效设计很难用传统的交互文档表述,只能拿类似动态效果的应用与开发人员沟通,不够规范。2、交互设计师并非动态相关专业出身,对于动效规律并没有直观的认识。加之相关素材搜集有一定的难度,且缺乏管理,导致设计的时候缺乏灵感来源。

AE中的动画曲线可以解释不同属性在对应时间内的参数变化

动态设计(Motion+Graphic)在互联网时代的应用

动态设计(Motion+Graphic)在互联网时代的应用

(Picture from Tencent ISUX)

想要突破这些局限,就需要动态设计师(Motion Designer)的介入了。制作动效原型,降低沟通成本,与交互设计师合作,发挥各自优势,总结、收集、制作动效库平台。甚至与开发人员合作,将动画内容进行数据转化,以保证动画效果可以完美还原。寻找收集可复用的动效代码。这些都会对产品动效方面的创新,平台化、接口化的建设产生极大的推动。

示例1、UI8 Wireframe Kit 2.0

动态设计(Motion+Graphic)在互联网时代的应用

示例2、PassPic

动态设计(Motion+Graphic)在互联网时代的应用

4、趣味性应用

人的想象力无限,任何条条框框都无法将她束缚。总会有一些趣味的动效应用能让人眼前一亮。与静态的图片相比,动态图好比画龙点睛的一笔,为运营设计增加了诸多趣味。

示例1、@财新新世纪周刊:“富”道人家 by @L-X-U

动态设计(Motion+Graphic)在互联网时代的应用

示例2、@韩寒:问题写在脸上,答案飘在风中 by @L-X-U

动态设计(Motion+Graphic)在互联网时代的应用

示例3、@绿色和平:如何跑赢雾霾? by @L-X-U

动态设计(Motion+Graphic)在互联网时代的应用

更有甚者,在新版手机QQ和新浪微博客户端的启动画面中,也看到了MG的身影,有兴趣的同学们一定要更新体会一下。

示例1、手机QQ安卓4.6.1版开机启动画面

动态设计(Motion+Graphic)在互联网时代的应用

示例2、微博客户端4.2.5 beta1版开机启动画面

动态设计(Motion+Graphic)在互联网时代的应用

三、人员要求及制作流程

理论说了这么多,大家心中是否会有这样一个问题,如何才能制作出精彩的MG作品?我们可以从人员和流程这两个方面探讨一下。

1、只有优秀的人才能完成优秀的作品。

那么怎样才算是一名优秀的动态设计师呢?不同于传统的电视、影视制作公司,互联网公司的动态设计师通常隶属于UE设计部门,人数通常很少(这是因为大部分互联网公司对视频并没有系统的需求,且一些大型项目还有专门的外包团队支持,所以无需大量招聘相关人员组成专门的团队),像专业制作公司那样前期、后期、三维、合成各司其职的情况几乎不可能出现。这就要求每个设计师必须具备独立完成项目的能力,不能奢望每个项目都能有同事在专业上进行配合。

其次,互联网公司产品迭代的速度非常快,每个月甚至每周都可能有新版发版,这也决定了设计师必须仔细权衡制作成本,在效果与效率之间寻求平衡,能四两拨千斤的解决问题才是王道。第三,互联网公司的动态设计师必须是具备横向能力的T型人才。从某种意义上讲,设计是相通的。一个优秀的动态设计师,也应该是一名合格的视觉设计师。在项目的间歇期,融入产品线,利用自己的特长(如三维能力、合成能力等)为其他设计运营的同事提供视觉支持,这样才能将自己的价值最大化的展现出来,而非被动的等待需求,逐渐成为产品的局外人。

动态设计师的T型能力模型

动态设计(Motion+Graphic)在互联网时代的应用

最后,保持好奇心。关注探索身边的互联网产品,培养自己的产品感,愿意投身于这个充满竞争与机会的行业,参与设计影响亿万人的产品。满满的爱辅以你专业的能力,谁又能想象会爆发出怎样的能量呢?想想还真有点儿小激动呢……

2、MG的制作流程其实并不神秘。

软件上说,Adobe的After Effects是主力制作工具(Flash更多应用于互动开发等领域,MG制作上并没有优势,所以不是主力软件)。三维方面,可以选择Cinema 4D、Maya、3D Max等等任一一款。配合PS、AI,解决绝大多数制作需求是绰绰有余了。

作者常用的软件

动态设计(Motion+Graphic)在互联网时代的应用

这里再通过两个案例,简单讲一讲具体的制作流程(请注意,这不是一个教程……)。

案例1、百度手机桌面3.0版宣传视频 ——制作周期:2周

动态设计(Motion+Graphic)在互联网时代的应用

动态设计(Motion+Graphic)在互联网时代的应用

动态设计(Motion+Graphic)在互联网时代的应用

案例2、百度手机助手品牌宣传视频 ——制作周期:4周

动态设计(Motion+Graphic)在互联网时代的应用

动态设计(Motion+Graphic)在互联网时代的应用

动态设计(Motion+Graphic)在互联网时代的应用

动态设计(Motion+Graphic)在互联网时代的应用

四、最后的话

感谢每一个坚持读到这里的朋友,你们用实际行动证明了自己是一个有追求的人;一个脱离了低级趣味的人……

回顾一下本文重点:

1、Motion Design是遵循平面设计的原则和视听语言,用视频或动画技术创作出一种动态影像的设计形式。

2、Motion Design在互联网领域的4种常见应用:产品展示、品牌建设、动效原型和趣味性应用。

3、互联网公司的动态设计师必须是具备单兵作战能力的T型人才。

4、Motion Design的制作需要前期(PS、AI)、后期(Cinema 4D、After Effects)等多种软件的联合运用,互相配合。

行文于此,已至尾声。这是一个碎片化的时代,网络带宽的增长,社交媒体的爆发,人们沉浸在纷乱复杂的信息中,难免迷茫。如何找到一种方式,更直观便捷的传递、获取信息,是这个时代的难题。也许,Motion Design就是答案之一。这也正是我们钻研它的意义。文笔粗浅,权当抛砖引玉,与各位共勉。

参考资料:

1. 《什么是 Motion Graphic?》
2、《从信息传达角度解读Motion Graphics》
3、《创造流动的瞬间—探讨移动端交互动效设计》
4、《[QQ空间V8项目总结]动画篇》

作者: @TCWison

via http://www.uisdc.com/the-internet-motion-graphic

Advertisements

human vision system

The light that falls onto the retina is processed by photoreceptors, better known as rods and cones. The rods respond to light of relatively low luminance levels, while
the less sensitive cones are more responsive to higher luminance levels.

There are three types of cones that together produce the sensation of color. Each cone has a different response curve

The cones are characterized by the peak value of the response curves: S, M and L, which respectively stand for short, middle and long wavelengths.

L, M and S cone responses to light

two colors will appear the same to us if they produce the same cone responses.

the number of S-cones on the retina is lower than the M- and L- cone numbers.

luminance is weighted by the human cone response curves. Luminance is often normalized according to a specified reference white. Lightness is the perceptual response to luminance.

 

 

can’t boot

[NOEXECUTE=OPTIN/MININT ]

problem is happening every time I re-boot, the MININT thing is re-appearing and bringing the blue screen and not loading Windows.

It is especially common on hard drives that contain multiple partitions (ie. almost all OEM installs).

Sometimes the MBR just becomes damaged, other times a boot virus is the cause.

A problem has been detected and windows has been shut down to prevent damage to your computer.

IRQL_NOT_LESS_OR_EQUAL

Check to make sure any new hardware or software is properly installed. If this is a new installation, ask your hardware or software manufacturer for any windows update you might need.

If problems continue, disable or remove any newly installed hardware or software. Disable BIOS memory optioins such a caching or shadowing.

Technical informaiton:

*** STOP: 0000000A (0xFFFFFFFFFFFFFF8D,0x000000000000002,0x000000000000000,0xFFFFF8000C186434)

在此 Stop 错误消息中,每个参数均是一个指代特定问题的十六进制数字:

  • 参数 1 – 引用不正确的地址。
  • 参数 2 – 访问内存所需的 IRQL。
  • 参数 3 – 访问类型,其中 0 是读操作,1 是写操作。
  • 参数 4 – 在参数 1 中引用内存的指令的地址。

安装过程中当在内核模式下试图以过高的进程内部请求级别 (IRQL) 接触可分页内存时,此 Stop 错误通常会出现。此错误通常在驱动程序使用不正确的内存地址时发生。此错误其他可能的原因包括设备驱动程序不兼容、常规硬件问题以及软件不兼容。

Stop 0×0000000A: IRQL_NOT_LESS_OR_EQUAL – This Windows stop error indicates that a kernal mode process or driver tried to access a memory location that it did not have permission to access, or at a IRQL that was too high (a kernal mode process can only access a IRQL that is lower than or equal to its own IRQL.

This stop message usually means that there is incompatable or faulty hardware. In personal experience its usually bad ram.

Tech Advise :

Remove and Check any of the following devices:

1. SCSI Devices

2. IDE Devices

3. Network Adapter

4. Internal Modem & Sound Card

5. Extra Hard Disks (You have to have at least one to complete the installation)

6. Cd Drive or DVD Drive (If you are installing from the local hard disk)

7. Upgrade Computer BIOS if possible

Check Event Log

Open Event Viewer

Here you need to look for red X with error reports. This will let you know what caused your pc to crash last time or program conflicting on your PC. Advisable to remove the program and  then check if your PC works better or not.

3.  Repair Windows to fix

STOP: 0×0000000A  | Error – IRQL_NOT_LESS_OR_EQUAL

How to Repair windows – Check this link on how to run windows repair

4. Check your RAM

Check If any of your RAM is malfunctioning. If you have 2 rams installed then try removing one them and reboot PC. Poor and damaged RAM can also cause such errors.

Stop 0×0000001E KMODE_EXCEPTION_NOT_HANDLED

Windows Stop Error Codes

Stop 0×00000003 UNSYNCHRONIZED_ACCESS
Stop 0×0000000A IRQL_NOT_LESS_OR_EQUAL
Stop 0×0000001E KMODE_EXCEPTION_NOT_HANDLED
Stop 0×00000023 FAT_FILE_SYSTEM
Stop 0×00000024 NTFS_FILE_SYSTEM
Stop 0×0000002E DATA_BUS_ERROR
Stop 0×0000003F NO_MORE_SYSTEM_PTES
Stop 0×00000044 MULTIPLE_IRP_COMPLETE_REQUESTS
Stop 0×00000050 PAGE_FAULT_IN_NONPAGED_AREA
Stop 0×0000006B PROCESS1_INITIALIZATION_FAILED
Stop 0×00000073 CONFIG_LIST_FAILED
Stop 0×00000074 BAD_SYSTEM_CONFIG_INFO
Stop 0×00000076 PROCESS_HAS_LOCKED_PAGES
Stop 0×00000077 KERNEL_STACK_INPAGE_ERROR
Stop 0×00000079 MISMATCHED_HAL
Stop 0×0000007A KERNEL_DATA_INPAGE_ERROR
Stop 0×0000007B INACCESSIBLE_BOOT_DEVICE
Stop 0×0000007E SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
Stop 0×0000007F UNEXPECTED_KERNEL_MODE_TRAP
Stop 0×0000008E KERNEL_MODE_EXCEPTION_NOT_HANDLED
Stop 0×0000009C MACHINE_CHECK_EXCEPTION
Stop 0×0000009F DRIVER_POWER_STATE_FAILURE
Stop 0×000000BE ATTEMPTED_WRITE_TO_READONLY_MEMORY
Stop 0×000000C2 BAD_POOL_CALLER
Stop 0×000000C4 DRIVER_VERIFIER_DETECTED_VIOLATION
Stop 0×000000CA PNP_DETECTED_FATAL_ERROR
Stop 0×000000CB DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS
Stop 0×000000CE DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS
Stop 0×000000D1 DRIVER_IRQL_NOT_LESS_OR_EQUAL
Stop 0×000000D5 DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL
Stop 0×000000D8 DRIVER_USED_EXCESSIVE_PTES
Stop 0×000000DA SYSTEM_PTE_MISUSE
Stop 0×000000EA THREAD_STUCK_IN_DEVICE_DRIVER
Stop 0×000000ED UNMOUNTABLE_BOOT_VOLUME
Stop 0×000000F2 HARDWARE_INTERRUPT_STORM
Stop 0×000000FC ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY
Stop 0×000000FE BUGCODE_USB_DRIVER
Stop 0xC0000218 UNKNOWN_HARD_ERROR
Stop 0xC000021A STATUS_SYSTEM_PROCESS_TERMINATED
Stop 0xC0000221 STATUS_IMAGE_CHECKSUM_MISMATCH
Stop 0xC0000244 STATUS_AUDIT_FAILED

Since I have fixed countless PC problems I can tell you by experience that a majority of the blue screen errors I have encountered are due to one of three things:

  1. Device drivers
  2. RAM errors
  3. HEAT

That’s it. There are less common causes such as a failing PSU (power supply), but for most users it’s going to be one of the top three culprits listed above

Steps To Fix Blue Screen Errors (Windows 7)

Note: You may be prompted to enter your administrator’s password when you try to execute certain system tasks!

Method 1: Using System Restore

  1. Click on the Start button on the Taskbar.
  2. Type “System Restore” (without quotes) in the Search box and hit Enter or,
  3. Click on System Restore (when you see System Restore pop up  in the list of search results).
  4. Make sure the “Recommended restore” radio button is checked on the restore utility window.
  5. Click on Next and follow the instructions given.

Note: There is the option on the restore utility to select “Choose a different restore point”. Unless you have a specific reason to select a different date and time than what Windows recommends, just select the recommended option stated in the steps above. If you choose to select another one, follow these steps:

  1. Click on that desired date and time, and Windows 7 will perform a scan for any affected programs in that restore point.
  2. Once completed, click Next and follow the instructions given.

Once you have selected the restore point, your system will start the restoring process, after which you will have to restart the system.

Method 2: Check memory problems

Memory management issues can also cause a BSOD in Windows 7. Thankfully, Windows 7 has a Memory Management Diagnostic tool that detects and solves problems related to system memory.

  1. Click on the Start button on the Taskbar.
  2. Type “Windows Memory Diagnostic Tool” or “Memory” (without quotes) in the Search box or,
  3. Click on Windows Memory Diagnostic Tool (in the search results).
  4. Click on “Restart now and check for problems (Recommended)”.
  5. The system will restart, and you need to follow the instructions given on the screen.

Method 3: Remove unsupported devices

Unsupported hardware may also result in a BSOD error. The easiest solution to this problem is to uninstall such hardware. You can detect the hardware that’s creating the problem through the Device Manager in Windows.

  1. Click on the Start button on the Taskbar.
  2. Type “Device Manager” in the Search box.
  3. Click on Device Manager (in the list of results).
  4. Expand all categories in the hardware tree – (click the little arrow icons).
  5. Look for devices that have a red cross (x) against their name. These devices are not supported by Windows 7 and may be one of the reasons for BSOD errors.
  6. Right click on these devices, and select Uninstall.

A corrupt registry can also lead to BSOD errors in Windows 7. I would suggest you to download a good registry cleaner and scan your system for registry errors. You can find one on my recommended software page. There are both free and paid versions available and they both have pros and cons. Most of the registry cleaners available are easy to install and operate.

The cleaning process is automated, and the programs also backup the registry before cleanup, which acts as a safeguard. You can restore the registry to its previous state if you encounter system errors after the cleaning process.

There’s really no need to panic when you see a BSOD error on your screen. Just stay calm and follow the checklist above to fix the error.

via http://windows-exe-errors.com/how-to-fix-blue-screen-of-death-in-windows-7/

TortoiseSVN获取已有的版本库文件

常见的版本控制软件有VSS、CVS和SVN

  • VSS(Visual Source Safe)为微软的产品,较为易学易用,使用微软的产品进行开发通常都用这个,但是VSS只能在windows平台上运行,并且不是免费软件,安全性也不高,因此应用并不太广泛。
  • CVS(Concurrent Version System)是免费开源的配置管理工具,其源代码和安装文件都可以免费下载。由于其简单易用、功能强大,跨平台,支持并发版本控制,而且免费,它在全球中小型软件企业中得到了广泛使用。不过CVS的部署比VSS要复杂一些。
  • SVN(Subversion)作为CVS的重写版和改进版,其目标就是作为一个更好的版本控制软件,取代CVS.总的来说,CVS在发展的过程中逐渐失去优势,已经不再适合现代开发,目前,绝大多数CVS服务已经改用SVN.目前流行的Google Code开源项目托管平台就是使用SVN进行版本控制。

所有的TortoiseSVN命令都是通过windows资源管理器的右键菜单执行。右键点击一个文件或者文件夹,大多数菜单项都能够直接显示。比较常用的功能是“更新”和“提交”。通过“更新”可以从SVN服务器上下载最新的代码,“提交”则可以将本地修改的代码上传到SVN服务器上。

版本库是Subversion的核心部分,是数据的中央仓库。版本库以典型的文件和目录结构形式文件系统树来保存信息。任意数量的客户端连接到Subversion版本库,读取、修改这些文件。客户端通过写数据将信息分享给其他人,通过读取数据获取别人共享的信息。

TortoiseSVN可以通过file://、http://和svn://多种协议连接版本库。

现在尝试获取互联网上的一个开源系统的版本库文件。

E.g.  Cnpack是面向Delphi的一个开源工具组织,代码版本库的http地址是:http://cnpack.googlecode.com/svn/trunk。

(1)建立一个工作目录,如d:\源码。

(2)在工作目录中,选择TortoiseSVN右键菜单“SVN检出”,显示检出对话框,输入cnpack版本库url,检出目录设定为工作目录下的cnpack目录。

(3)确定后,TortoiseSVN获取到文件,并在工作目录中建立cnpack文件夹,里面为最新的代码文件。文件夹状态已为SVN关联状态,如图。

(4)你也可以在TortoiseSVN菜单中选择“版本库浏览器”,输入版本库url,显示版本库浏览器,并可以直接查看和管理版本库中文件。

命令行方法:

Ex1:更新目录,使用命令

TortoiseProc.exe /command:update /path:”c:/svn_wc/”

Ex2:更新多个目录,path命令的参数用*号分割

TortoiseProc.exe /command:update /path:”c:/svn_wc/*c:/svn_wc2/”

本机版本管理

Wamp webserver

Wamp就是Windows Apache Mysql PHP集成安装环境,即在window下的apache、php和mysql的服务器软件。拥有简单的图形和菜单安装和配置环境。PHP扩展、Apache模块,开启/关闭鼠标点点就搞定,再也不用亲自去修改配置文件了,WAMP它会去做。再也不用到处询问php的安装问题了,WAMP一切都搞定了。

如何选择数据交换协议

两个系统要交换数据,也需要定义一种双方都明白的协议,我们称为“数据交换协议”。 数据交换协议的目的是让两个系统进行正确的数据交互。

所以几乎各种开发语言都提供了方便使用的数据交换功能。比如说使用JAVA语言的开发的系统使用 MySQL数据库存储数据,就是通过MySQL数据交换协议跟MySQL做数据交换;通过JAVA的RMI可以方便的做跨机器的分布式数据交换,RMI也就是一种数据交换协议。

那么究竟在我们的系统中应该选择什么样的协议呢?

开发是否方便、接口是否容易发布、是否需要考虑带宽占用成本、序列化和反序列化的性能、接口协议的扩展性等等。下面我们看下几个比较常用的交换协议实现。

协议 实现 跨语言 性能 传输量 RPC
xml 广泛 几乎所有 很大 N(可实现)
json 广泛 大量 一般 一般 N(可实现)
php serialize PHPRPC 大量 一般 一般 Y
hessian hessian 大量 一般 Y
thrift thrift 大量 Y
protobuf protobuf 大量 N(可实现)
ice ice 大量 Y
avro Apache Avro 少量 Y
messagepack messagepack 大量 Y

这里并没有比较好坏,只是想说明不同数据交换协议是有区别的,所以我们需要在我们的应用场景中进行选择

开放式

微博,SNS这种开放平台、对静态html页面提供javascript接口调用的系统都属于这种类型 。这种类型的特点是:

  • 调用方不完全可控,而且是针对公网的,你可能不知道是谁、是什么语言、是什么方式在调用你提供的数据接口;
  • 接口访问量一般都非常大,要求具有很高的性能和吞吐量
  • 需要考虑安全问题,外部提交的数据可能不是合法的。

所以在这种情况下,需要考虑数据传输的带宽消耗和数据交换协议的易用性,以及多语言支持程度。以前对于html页面使用的javascript接口调用一般都使用XML格式,最近几年几乎都转成了json格式了,因为json传输量更小,比XML更加容易使用。 而对于开放平台,由于使用的场景很多,所以需要提供多种交换协议格式。基本上都会提供XML和json。为了提高平台本身的性能和客户端的性能,也可以提供protobuf这种二进制交换协议并且增加压缩支持,以节省带宽传输和解析的性能消耗

内部服务

对于一个大型系统来说,内部服务的数据交换无处不在。从最基本和常见的数据库数据交换、memcached缓存数据交换、消息队列的数据交换到系统之间使用的RPC服务框架等等,都可以算作内部服务的数据交换。内部服务的特点是不用考虑防火墙,不对外开放,速度快(基本无带宽成本)

内部服务的数据交换协议的选择空间非常大,一般需要考虑:

  • 数据交换协议的性能
  • 是否需要跨语言支持
  • 数据交换协议的消息体大小

持久化存储

对于持久化存储来说,每一种数据交换协议其实都可以实现。一般需要根据应用场景考虑:

  • 是否人工可阅读
  • 存储的空间消耗
  • 序列化和反序列化的性能
  • 是否经过压缩

跨语言

假设我们的网站前端页面展示层使用PHP语言开发,中间

内部服务

对于一个大型系统来说,内部服务的数据交换无处不在。从最基本和常见的数据库数据交换、memcached缓存数据交换、消息队列的数据交换到系统之间使用的RPC服务框架等等,都可以算作内部服务的数据交换。内部服务的特点是不用考虑防火墙,不对外开放,速度快(基本无带宽成本)。

内部服务的数据交换协议的选择空间非常大,一般需要考虑:

  • 数据交换协议的性能
  • 是否需要跨语言支持
  • 数据交换协议的消息体大小

持久化存储

对于持久化存储来说,每一种数据交换协议其实都可以实现。一般需要根据应用场景考虑:

  • 是否人工可阅读
  • 存储的空间消耗
  • 序列化和反序列化的性能
  • 是否经过压缩

跨语言

假设我们的网站前端页面展示层使用PHP语言开发,中间业务逻辑使用JAVA语言开发,那么就涉及到跨语言数据交换的问题。只要系统不是单纯的使用一种语言,那么就必须考虑这个问题。事实上,考虑未来的扩展和需求变化问题,也最好考虑跨语言的数据交互协议

使用JAVA语言开发,那么就涉及到跨语言数据交换的问题。只要系统不是单纯的使用一种语言,那么就必须考虑这个问题。事实上,考虑未来的扩展和需求变化问题,也最好考虑跨语言的数据交互协议。

数据交换协议可升级

在选择数据交换协议的时候,我们同样需要考虑类似于数据库表的?schema设计时的扩展问题。比如一个提供用户信息的数据交换协议接口,现在包含用户名、性别、住址的信息,在升级过程中,增加了一个最后登录的IP信息。如果不考虑数据交换协议升级带来的影响,很可能会导致以前的客户端出现异常或者旧的数据无法正确解析的问题。

兼容协议的巧用

兼容协议的巧用非常有用,新产品兼容提供现有成熟的数据交换协议,可以降低使用门槛和产品的开发速度。比如新浪开源的memcacheQ就使用了memcached协议

总结

数据交换协议的各种通用开源实现非常多,数据交换协议只是一个非常宽泛的说法,其实只要实现了数据的序列化和反序列化 ,那么就可以说是一个可以交换数据的协议。数据交换协议的性能其实就是序列化和反序列化的性能,如果加上RPC,那么跟RPC实现本身的性能也有非常大的关系。

via http://www.cnblogs.com/sunli/

 

Web服务器VS应用服务器

Application Server应用服务器:就是提供应用服务器,这里的应用很多,如果java应用、C#应用、ruby应用;常见的应用服务器:IBM WebSphere、BEA WebLogic、IPlanet、Oracle IAS、TOMCAT等

Web Server web服务器:提供web功能的服务器,主要就是http服务器,包括图片的下载等一系列和文本相关的。(当然,应用服务器也提供http服务,例如tomcat为了提供方便。)在UNIX和LINUX平台下使用最广泛的免费web服务器是W3C、NCSA、APACHE服务器,而Windows平台使用IIS的Web服务器比较多。

  • Web服务器其中一个优点就是处理静态信息上,例如一些静态的html,图片等静态资源比较快;Web服务器可以解析(handle)http协议,当web服务器接收到一个http请求(request),会返回一个http响应(response),例如送回一个html页面。为了处理一个请求,web服务器可以响应一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如cgi脚本jsp(javaserver pages)脚本servletsasp(active server pages)脚本,服务器端(server-side) javascript,或者一些其它的服务器端(server-side)技术.
  • web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响 应(response)的环境,而不会超出职能范围。
  • 服务器端(server-side):无论它们的目的如何,这些服务器端(server-side)的程序通常产生一个html的响应来让浏览器可以浏览。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。虽然web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。
  • 应用服务器主要就是做如何解释一个jsp,如果处理java文件等等,而Web服务器就是如果快速向浏览器传递信息,如果快速让浏览器下载图片等;应用程序服务器提供访问商业逻辑的途径以供客户端应用程序x使用。应用程序使用此商业逻辑就象你调用对象的一个方法 (或过程语言中的一个函数)一样。
  • 应用程序服务器的客户端(包含有图形用户界面(gui)的)可能会运行在一台pc、一个web服务器或者甚至是其它的应用程序服务器上。在应用程序 服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态html,所以客户端才可以随心所欲的使用这种被暴露 的商业逻辑。

在大多数情形下,应用程序服务器是通过组件(component)的应用程序接口(api)把商业逻辑暴露(expose)(给客户端应用程序) 的,例如基于j2ee(java 2 platform, enterprise edition)应用程序服务器的ejb(enterprise javabean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling),和消息(messaging)。就象web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。

  • Web服务器:主要是处理web的数据元素的应用软件就叫Web服务器,如IIS、apache,Web服务器与客户端大交道,它要处理的主要信息有:session、request、response、HTML、JS、CS等
  • 应用服务器:应用服务器如JSP,处理的是非常规性Web页面(JSP文件),他动态生成Web页面生成的Web页面再发送给客户端(实际上当应用服务器处理完一个JSP请求并完成JSP生成HTML后它的任务就结束了,其余的就是WEB处理的过程了)。

两者之间的关系:

WEB服务器一般是通用的,而应用服务器一般是专用的,如Tomcat只处理JAVA应用程序而不能处理ASPX或PHP。而Apache是一个WEB服 务器(HTTP服务器),后来连接Tomcat应用服务器来支持java。

via http://xdwangiflytek.iteye.com/blog/1339874

 

压缩/解压缩软件 7-zip 的命令行用法

压缩/解压缩软件 7-zip 的命令行用法

7zip是一个开源的压缩软件,非常小巧,提供的功能和WinRAR差不多,但支持的格式几乎比后者多一倍。7z完全开源,包括压缩算法,而且还可以方便地使用它提供的库,在自己的程序中集成压缩功能。

解压缩c.7z到E:\Program Files:
7z x c.7z -oE:\”Program Files” -o表示输出目录,其与目录路径之间没有空格) //这样解压包含下级目录名,但不会在E:\Program Files下新建一个c文件夹,如果需要,就把输出目录设为E:\Program Files\c,这样会自动创建文件夹c。

列出c.7z的内容:
7z l c.7z

压缩a.txt和b.txt到c.7z:
7z a c.7z a.txt b.txt (命令a后的第一个为目标压缩文档名,然后是文件列表)

压缩a.txt和b.txt到D:\Program Files\c.7z:
7z a D:\”Program Files”\c.7z a.txt b.txt目录名包含空格,用引号

7z <command> [<switches>…] <archive_name> [<file_names>…] [<@listfiles…>]
command 为操作指令,如下:
a 添加到压缩文件
b 基准测试,测试7z当前性能
d 从压缩文件中删除
e 从压缩文件中解压缩,但不包含目录结构(即所有各级文件都解压到一个目录里)
l 列出压缩文件的内容
t 测试压缩文件
u 更新文件到压缩文件
x 从压缩文件中解压缩,包含目录结构

Issues 27/02/2013

1. PHP + Sqlite + JSon (server code)

2. Android interpret JSon data

3. URLs

4. screencast

1. 1 服务端返回json格式的数据

echo json_encode(array('data'=>array("hasnext"=>0,"info"=>$rows)));

$rows是查询数据库出来的数组
Json data example:
1. {“value”:[{"nid":"1","title":"迎新","keyword":"迎新","date_time":"1309791386","content":"某某学院将于XX年XX月XX日XX点于XX地举办XX届迎新晚会! "},{"nid":"2","title":"南岭校区艺术活动中心","keyword":"南岭,艺术","date_time":"1309791498","content":"赛后,康永刚处长致闭幕辞,祝贺比赛圆满结束,恭喜参赛选手斩获佳绩。"}]}
2. {"data":{"hasnext":0,"info":[{"username":"\u201c\u6f02\u4eae\u59d1\u5a18\u4f22\u201d\u62db\u52df\u5566\uff01","email":"2011-03-14 16:31:34","avatar":"http:\/\/172.23.23.13\/Server\/images\/1.gif","timestamp":1332122180,"isvip":1},{"username":"\u51e1\u5ba2\u8bda\u54c1\u6b66\u6c49\u63a8\u5e7f\u6d3b\u52a8\u706b\u7206\u767b\u573a","email":"2011-03-17 13:58:17","avatar":"http:\/\/172.23.23.13\/Server\/images\/1.gif","timestamp":1332122180,"isvip":1},{"username":"\u3010\u4e00\u4ed4\u5e26\u4f60\u5403\u3011\u9080\u4f60\u5230\u5df4\u897f\u5361\u7279\u5170\u514d\u8d39\u54c1\u5c1d\u81ea\u52a9\u70e7\u70e4","email":"2011-04-02 09:13:19","avatar":"http:\/\/172.23.23.13\/Server\/images\/1.gif","timestamp":1332122180,"isvip":1}]}}

via android通过json解析到的路径后异步加载网络图片

Android中使用HttpGet方式获取服务器端PHP Json返回数据

php服务器端与android客户端通信问题

Android上解析Json格式数据

Android异步加载网络数据(PHP做服务端返回的json格式)

Adapter

Simple put, 一般是先获取Josn或xml数据,然后解释显示。 重写ListView的适配器(BaseAdapter),从网络获取图片,图片缓存的处理,xml的解析Adapter Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系: Android中所有的Adapter一览: 比较常用的有 BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。

  • BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性

有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮。添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上。但是事实并非这样,因为按钮是无法映射的,即使你成功的用布局文件显示出了按钮也无法添加按钮的响应,这时就要研究一下ListView是如何现实的了,而且必须要重写一个类继承BaseAdapter

  • ArrayAdapter支持泛型操作,最为简单,只能展示一行字
  • SimpleAdapter有最好的扩充性,可以自定义出各种效果。

可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等;使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。

  • SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。
    • 可以认为是SimpleCursorAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
    • 一定要以数据库作为数据源的时候,才能使用SimpleCursorAdapter,这里特别需要注意的一点是:不要忘了在AndroidManifest.xml文件中加入权限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

使用步骤 不论是哪种适配器模式,也不管是Listview也好还是gridview也好,对他们填充数据,都是分三步走。 第一:创建一个数据填充的对象,可以是ListView, GridView, Gallery。

listView=(ListView) findViewById(R.id.listview_simple);

第二步:创建一个数据填充器,可以是BaseAdapter、SimpleAdapter,也可以是与数据库相关联的CursorAdapter。 例如:SimpleAdapter可以使用系统封装好的,你也可以自己去继承一个Simpleadapter,来重写其中的方法。继承 simpleadapter的好处在于,你可以对listitem中每个单一的控件设置监听事件等等一系列操作。如果用的是系统封装好的就有点爱莫能助了。 第三步:将数据填充到对象中去 listView.setAdapter(simpleAdapter); e.g. listView在开始绘制的时候,系统首先调用getCount()函数:根据他的返回值得到listView的长度(这也是为什么在开始的第一张图特别的标出列表长度),然后根据这个长度,调用getView()逐一绘制每一行。如果你的getCount()返回值是0的话,列表将不显示;同样return 1,就只显示一行。 系统显示列表时,首先实例化一个适配器(这里将实例化自定义的适配器)。当手动完成适配时,必须手动映射数据,这需要重写getView()方法,系统在绘制列表的每一行的时候将调用此方法。 getView()有三个参数:position表示将显示的是第几行,covertView是从布局文件中inflate来的布局。我们用LayoutInflater的方法将定义好的vlist2.xml文件提取成View实例用来显示。然后将xml文件中的各个组件实例化(简单的findViewById()方法)。这样便可以将数据对应到各个组件上了。但是按钮为了响应点击事件,需要为它添加点击监听器,这样就能捕获点击事件。至此一个自定义的listView就完成了,现在让我们回过头从新审视这个过程。系统要绘制ListView了,他首先获得要绘制的这个列表的长度,然后开始绘制第一行,怎么绘制呢?调用getView()函数。在这个函数里面首先获得一个View(实际上是一个ViewGroup),然后再实例并设置各个组件,显示之。好了,绘制完这一行了。那再绘制下一行,直到绘完为止。在实际的运行过程中会发现listView的每一行没有焦点了,这是因为Button抢夺了listView的焦点,只要布局文件中将Button设置为没有焦点就OK了。 via

Android之Adapter用法总结

生活在西班牙

自己动手丰衣足食

BlueAsteroid

Just another WordPress.com site

Jing's Blog

Just another WordPress.com site

Start from here......

我的心情魔方

天才遠私廚

希望能做一個分享各種資訊的好地方

语义噪声

西瓜大丸子汤的博客

笑对人生,傲立寰宇

Just another WordPress.com site

Where On Earth Is Waldo?

A Project By Melanie Coles

the Serious Computer Vision Blog

A blog about computer vision and serious stuff

Cauthy's Blog

paper review...

Cornell Computer Vision Seminar Blog

Blog for CS 7670 - Special Topics in Computer Vision

datarazzi

Life through nerd-colored glasses

Luciana Haill

Brainwaves Augmenting Consciousness

槑烎

1,2,∞

Dr Paul Tennent

and the university of nottingham

turn off the lights, please

A bunch of random, thinned and stateless thoughts around the Web