[Django]编写第一个Django app,第一部分——创建项目

mikel阅读(887)

转载:http://www.cnblogs.com/reallypride/archive/2008/11/28/1343356.html

编写第一个Django app,第一部分——创建项目

让我们通过例子来学习。

通过这个指导教程,我们将一步步地教你创建一个简单的投票系统。
这个系统分为两部分:
1.一个公共的页面让人们投票和查看投票结果。
2.一个管理员页面让你添加,修改和删除投票。

我们假定你已经安装了Django。你可以运行Python编译器并输入import django
来测试Django是否已经安装。如果命令运行成功,没有错误,说明Django已经安装了。

新建项目

如果你是第一次使用Django,你必须确保一些初始化已经完成。也就是,你需要自动生成
一些代码来创建Django项目——一系列的Django设置实例,包括数据库配置,Django特定
的选项和程序特定的设置。

使用命令行,cd进入你要保存你的代码的文件夹,运行命令django-admin.py startproject mysite。
它会在当前文件夹里创建一个mysite文件夹。

如果你是通过python setup.py安装Django的话,django-admin.py将会在你的系统路径下。
如果不在你的路径下,你可以在site-packages/django/bin中找到它,site-packages是你的Python的
安装目录。
(对于上面这段话我不是很理解,我是把django-admin.py拷贝到存放代码的文件夹下,然后运行命令
django-admin.py startproject mysite来创建项目的)。

让我们看一下startproject生成了些什么:
mysite/
 __init__.py
 manage.py
 settings.py
 urls.py
这些文件是:
1.__init__.py:一个空文件,它用来告诉Python把这个文件夹看成是一个Python包。(如果你是一个初学者,
  阅读Python的官方文档来了解更多的关于包的内容。)
2.manage.py:一个实用的命令行,它让我们通过各种各样的途径和Django项目进行交互。
3.settings.py:设置/配置Django项目
4.urls.py:Django项目的URL映射。

开发版服务器

让我们确认这些工作。切换到mysite文件夹,运行命令python manage.py runserver。你将会看到命令行
输出下面的信息。
Validating models…
0 errors found.

Django version 1.0, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

你已经启动了Django的开发版服务器,一个用纯Python写的轻量级Web服务器。我们已经把它包含在Djangok ,
所以你能快速地开发项目而不用配置产品服务——例如Apache——直到你将要发布产品。

现在这是一个好的时机来注意:不要使用这个服务器作为产品的运行环境。它仅仅是在开发的时候使用。
(我们的业务是开发Web框架而不是Web服务器。)
现在这个服务器已经运行,使用你的浏览器浏览http://127.0.0.1:8000/
你将会看到一个"Welcome to Django"的亮蓝色粉蜡笔的页面。它已经工作了。

改变它的端口
默认情况下,runserver命令在8000端口启动开发版服务器。如果你想改变服务器的端口,把端口号作为
命令行参数传入。例如,这条命令在8080端口中启动服务器:
python manage.py runserver 8080

(在我的电脑上,使用python manage.py runserver启动服务器会报错,把命令前面的python去掉
就能正常运行了,不知道是怎么回事。)

准备数据库

现在,编辑settings.py。它是一个包含有与Django设置相对应的模块级变量的常规的Python模块。
修改这些设置以匹配你的数据库连接参数:
1.DATABASE_ENGINE—— 'postgreSQL_psycopg2', 'mySQL' or 'sqlite3'中的一个,
  其它的也适用。
2.DATABASE_NAME——数据库的名字。如果你使用的是SQLite,数据库是你电脑上的一个文件;因些,
  DATABASE_NAME就是文件完整的绝对路径,包含文件名。如果文件不存在,它会在你第一次使用数据库
  的时候创建。
  当指定文件的路径时,要使用斜线,即使是在windows下(如C:/homes/user/mysite/sqlite3.db)。
3.DATABASE_USER——你的数据库的用户名(SQLite不使用)。
4.DATABASE_PASSWORD——你的数据库的密码(SQLite不使用)。
5.DATABASE_HOST——数据库所在的主机。如果你的数据库在相同的物理机器上,保留它为空字符串(SQLite不使用)。

如果你是个数据库新手,我们建议你使用简单的SQLite(把DATABASE_ENGINE设置为'sqlite3')。
SQLite是Python2.5和更新的版本的一部分,因此你不需要安装任何东西。
如果你使用的是PostgreSQL或者MySQL,要确保你已经创建了数据库。要创建数据库可以在数据库的交互对话框中
使用命令"Create DATABASE database_name;" 。
如果你使用的是SQLite,你不需要预先创建任何东西——数据库会在需要它的时候自动创建。

当你编辑settings.py的时候 ,注意下面的INSTALLED_APPS的设置。片个变量保存所有已经激活的Django应用
程序的Django实例的名字。Apps能在多个项目中使用,你可以打包和发布它们,让它们在其它项目中使用。

默认情况下,INSTALLED_APPS包含有下面的apps,它们都是来自于Django:
1.django.contrib.auth — 用户验证系统。
2.django.contrib.contenttypes — 内容类型框架。
3.django.contrib.sessions — session框架。
4.django.contrib.sites — 使用一个Django管理多个站点的框架。
这些应用程序默认是包含的,方便通常情况下的使用。

每个应用程序都需要使用和至少一个数据表,因些我们在使用它们之前要先创建数据表。0
要做这些事情,使用下面的命令即可:
python manage.py syncdb

syncdb命令在你的settings.py文件中查找NSTALLED_APPS的设置并使用数据库的设置创建所需要的数据表。
你将会看到每个数据表的创建信息,并且如果你为验证系统创建超级用户帐号的话,你将会看到一个对话框。
继续,并完成它。

如果你感兴趣,运行你的数据库客户端命令行,输入\dt (PostgreSQL), SHOW TABLES; (MySQL),
或者 .schema (SQLite)来显示Django创建的表。

就如上面所说的那样,默认应用程序包含这些是为了一般情况下的需求,但并不是每个人都需要使用它们。
如果你不需要它们,你可以把它们从INSTALLED_APPS中注释掉或者删除掉,不过这要在你运行syncdb命令之前。
syncdb命令只创建在INSTALLED_APPS中的apps的表。

[Delphi]Delphi Prism

mikel阅读(979)

  很多年来Delphi都是Windows平台上强有力的竞争者。它将VB的快速应用开发和更加强大的语言结合起来。然而当.NET横空出世 后,Delphi逐渐丧失了其霸主地位。Delphi的Win32编译器已经被人所淡忘,同时Borland也将精力转向了.NET开发。Delphi 8不再支持Win32开发,同时其.NET版本也与之前的程序不兼容。由于这个原因,再加上稳定性的问题,最终导致大多数开发者放弃了Delphi 8和9。

由于最近Embarcadero Technologies收购了Borland的开发部门,这令Delphi获得了新生。其核心产品Delphi 2009又重新开始关注Win32开发了。同时,微软最近在协议上的变化又给了新版本的Delphi一个出路。

去年,我们曾报道过微软准备向独立的系统供应商免费提供Visual Studio。这个名为Visual Studio Shell的版本可用作任何开发套件的基础。Embarcadero正在用其开发Delphi Prism。

Delphi Prism给Embarcadero带来了一些Borland未曾拥有的东西。通过将Visual Studio Shell作为起始点,他们可以立刻与微软的专业开发工具展开竞争而无需弥补迷失的那几年光阴。

凭借Delphi Prism,Embarcadero可以专注于微软比较欠缺的领域:跨平台开发。通过使用Visual Studio和Delphi Prism,开发者编写的程序可以运行在非微软的操作系统上。

敞开说吧,Delphi Prism提供了Gtk#的项目模板、OS X上的WinForms、面向OS X/Tiger的Cocoa以及面向OS X/Leopard的Cocoa。Tim Anderson补充到:

我推荐在Mac上的VM运行Visual Studio,因为Windows无法运行Cocoa应用。同时你需要使用Apple的Interface Builder,因为在Visual Studio中并没有GUI设计器。

这并不是第一次提出将Delphi作为一个跨平台的开发工具了。有一个名为Kylix的项目,它支持Linux操作系统。但它的价格太高,同时其稳定性还很让人质疑,更不用说与Delphi源代码的不兼容性了,因此它很快就失败了。

[Json]将List对象列表转换成JSON格式的类

mikel阅读(837)

转载:http://www.cnblogs.com/pcode/archive/2008/11/26/1341607.html

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。引用于[http://www.json.org/json-zh.html]

一般应用中,我习惯性地把结果集以更通用的IList<object>对象列表方式保存(可能会对性能有些影响)来保证类间交互时的通用性,降低函数功能对具体类的耦合。但AJAX调用时,还需要把对象列表转换成JSON数据交给前端显示。有麻烦。

     研究了一下JSON的对象定义和集合定义

 

     感觉利用反射来生成JSON还比较方便。代码如下:

 

Code

 OK,我们建立一个测试来验证一下它是否生效。

先建立一个对象定义person.cs

Code

然后建立测试类

我用了一种非常原始的方法生成了对象列表,其实可以从数据库查询,怕把事情搞得太复杂。呵呵。

Code

跑一下Nuint,我们想要的json串已经生成了。

[C#]项目管理实践【四】Bug跟踪管理【Bug Trace and Management】

mikel阅读(1850)

首先,向大家说一声抱歉,这篇文章耽误了这么久才和大家见面。
至于Bug的跟踪和管理的必要性和好处,我就不在这里说了,下面介绍几款Bug跟踪和管理的软件。

一、BugNET

BugNET是一个非常优秀的开源软件,基于.NET Framework2.0 ,使用ASP.NET+SQL Server开发的网站项目, 另外项目中还使用了Microsoft Report Viewer Redistributable 2005Microsoft ASP.NET AJAX 1.0。

最新版本是:BugNET 0.7.921.0

官方主页:http://bugnetproject.com/

最新版本下载:http://downloads.sourceforge.net/bugnet/BugNET-0.7.921-Install.zip

源代码下载:http://downloads.sourceforge.net/bugnet/BugNET-0.7.921-Source.zip

英文文档:http://bugnetproject.com/Documentation/tabid/57/topic/Installation/Default.aspx

它具有发送邮件、生成报表、项目配置管理、人员及权限管理、Bug管理等等功能。下面简单说一下它的安装和配置:

 1.解压缩最新的BugNET安装包到一个指定目录中(比如 C:\BugNET)。如果需要源代码,请到这里下载。

 2.确保你已经在你机器的IIS上为BugNET创建一个虚拟目录,指向你第一步中解压出来的文件所在的文件夹(比如:C:\BugNET)。那么URL就应该是http://localhost/BugNet

 3.使用Windows资源管理器,打开网站的根目录(默认是C:\BugNET)。右键点击该目录,在弹出菜单中选择"共享和安全"(请注意: 如果你是有的是Windows XP,在查看这些选项之前,你可能需要启用"简单文件共享")。选择"安全"选项卡。添加合适的用户帐户并设置权限。

如果你使用的是Windows2000-IIS5
– 用户帐户{Server}\ASPNET 必须具有BugNET对应的虚拟目录的读、写和修改权限
如果你使用的是Windows2003 – IIS6
– 用户帐户 NT AUTHORITY\NETWORK SERVICE必须具有BugNET对应的虚拟目录的读、写和修改权限

 4. 在你的SQL Server上创建一个空的数据库(例如数据库名称是'BugNET')。如果是升级操作,那么在做任何操作之前,请备份你的数据库。

5.使用文本编辑器编辑Web.config文件。找到"LocalSQLServer"连接字符串设置,并修改"connectionString"属性值和你在第四步中创建的数据库一致。

<connectionstrings>
</clear>
<add name="LocalSQLServer"
connectionstring="server=MyServer;database=BugNet;uid=BugNet;pwd=BugNet"
providername="" />
</connectionstrings>

6.浏览http://localhost/BugNet/Install/Install.aspx (或者你在第二步中创建的虚拟目录)。

7.安装进程开始。

8.安装完成后,你就可以使用admin用户帐户登录了。

用户名:admin
密码:password

这样,你的BugNET安装完成了,应该可以在http://localhost/BugNet 访问,如果有什么安装问题,请访问支持论坛

下面是运行后,BugNET首页的截图:

我想看完这篇文章,你一定会自己试一试吧!

OK, That's all what I say , and now, it's your turn.

不好意思,由于下面的二款软件不太熟悉,而且由于最近压力比较大,实在也抽不出时间,所以找了一些相关的资料给大家参考,请大家见谅!

二、BugFree

BugFree是借鉴微软公司 软件研发理念、免费且开放源代码、基于Web的精简版缺陷管理系统。它是目前唯一"克隆"微软内部Bug管理工具 Product Stuido(以前叫Raid)的自由软件。BugFree是用PHP+MySQL写,在Linux和Windows平台上都可以运行,我们推荐的使用环 境是LAMP(Linux+Apache+MySQL+PHP)。

下面是是园子里的一些资源,由于同类的资源较多,只选取了较新的几篇。

Bugfree使用点滴。

http://www.cnblogs.com/idragonet/archive/2008/06/04/1213357.html

[原创]如何在Windows下安装Bugfree2.0.0.1

http://www.cnblogs.com/mayingbao/archive/2008/09/09/1287523.html

缺陷管理工具bugfree安装说明

http://www.cnblogs.com/etian/archive/2008/06/05/1214588.html

 

三、Trac+Apache+SVN

Trac 是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。 Trac 以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件; Trac 应用力求不影响现有团队的开发过程。

Trac功能:

Wiki:这个就不用说了吧
Timeline: 可以看看最近有哪些文件被更新, 可以快速跟上进度
Roadmap:项目进度包括那些阶段, 可以看目前进度状况,依照 Ticket的设定, Ticket 可以指向某个 Milestone, 已便追踪目前项目的完成进度.
Browse Source: 和SVN集成后,可以查看源代码及SVN的代码提交日志
View Tickets: 看目前有哪些Ticket, 看哪些沒有完成(常用: My Tickets, Active Tickets) 等等
          Tickets包含下面的类型:

  1. Active Tickets – 目前有哪些 Tickets 是 Active 的
  2. Active Tickets by Version
  3. Active Tickets by Milestone – 靠 Milestone 划分 Active Tickets
  4. Assigned, Active Tickets by Owner
  5. Assigned, Active Tickets by Owner (Full Description)
  6. All Tickets By Milestone (Including closed) – 列出所有 Tickets
  7. My Tickets – 列出属于自己的 Tickets
  8. Active Tickets, Mine first – 列出所有 Active Tickets, 依照重要性排列

New Ticket:添加一个新的Ticket,即一个可能的Bug条目。
Search:搜索功能

下面是园子里的一些文章,大家如果有兴趣,也可以到网上找到很多类似的文章。

Trac 手记(一) : Windows 下安装 Trac

http://www.cnblogs.com/zealic/archive/2007/12/29/1019837.html

win32上安装Apache+SVN+Trac笔记

http://www.cnblogs.com/nobel1984/archive/2008/11/03/1325772.html

您可以查看这个系列的全部文章:项目管理实践入门系列教程


作者:ttzhangTechnology Life–张涛的技术博客
出处:http://ttzhang.cnblogs.com/
本文版权由作者全部保留,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Tag

[网站]FileRide——与众不同的社交网站

mikel阅读(813)

FileRide是一个很别致的社交网 站,总部位于斯德哥尔摩:该网站围绕你电脑上的文件,为你打造一个社交网络。比如说,可以让你知道在该网站上,哪个用户的电脑上有你喜欢的音乐和图片,你 可以把它们加为好友。你还可以就这些文件进行评论和即时交流。但是你不能通过该网站传送文件。目前该网站客户端支持XP和Vista,OSX和手机版正在 开发中。

围绕文件做文章

和基于现有关系网的其他网站不同,FileRide更加关注共同爱好。你不用再去寻找知音,你收藏的音乐和youtube视频就可以帮你打造一个关系网。

当你复制或者粘贴文件、图片或者链接时,FileRide桌面程序就会通知你是否将其加入FileRide。你还可以直接拖拽文件到FileRide。

FileRide会给图片和音乐制作“数字手印”,重命名之后也可以识别。

此外FileRide还包括微博客、类似Facebook的应用,朋友和小组的订阅种子,桌面消息提醒等。

FileRide很快就可以识别ISBN和其它格式文件了。

11月30日之前注册

如果你想使用,最好在11月30日之前,之后将改为邀请注册。

结论

总的来说该网站还不错,很多地方需要改进,但是正在高速增长,主要靠口碑传播。

[AJAX]Ajax与iframe

mikel阅读(810)

转载:http://www.cnblogs.com/blacktear23/archive/2008/11/26/1341408.html
  Ajax
已经如日中天,很多Ajax的框架让我们已经能轻松享受Ajax技术的美妙。不过Ajax也有美中不足。如果我们使用JQuery的话,用Ajax进行一个异步的调用,我们会发现一个小问题,如果请求一个以GB2312编码的页面,更新后的结果就会是乱码。无论是在FF还是在IE上都是如此:

1 <script>
2 $.get(“URL”, function(data) {
3        $(“#content”).html(data);
4 });
5 </script>
6 <div id=”content” />

 

    其原因在于JQueryAjax只支持UTF-8编码。当我们传入GB2312编码时,在解码的过程中会出现问题。不过这对于动态页面来说,非常容易解决,在输出页面内容时转换成UTF-8编码即可。不过如果请求的是一个静态页面,或者是别人的页面,那么我们就没有太好的办法来使用Ajax了。

    不过iframe倒是一个比较好的替代品,有经验的开发者都了解,把iframesrc属性指向另外一个URL就可以改变其中的内容,而且对编码并不敏感。但仍旧有一个问题就是iframe不能自动跟随内容的多少来调整其大小。

    在网上搜“iframe 自适应”可以搜到很多自动调整iframe大小来适应内容量的JavaScript代码。不过这些代码或多或少有一些跨浏览器问题。在IE上,基本上都是可行的。而在FF上有些代码就失去了效力了:

 1 function ResizeIFrame (id){
 2        var iframe=document.getElementById(id); //iframe id
 3        if (document.getElementById){
 4               if (iframe && !window.opera){
 5                      if (iframe.contentDocument && iframe.contentDocument.body.scrollHeight){
 6                             iframe.height = iframe.contentDocument.body.scrollHeight;
 7                      }else if(iframe.Document && iframe.Document.body.scrollHeight){
 8                             iframe.height = iframe.Document.body.scrollHeight;
 9                      }
10               }
11        }
12 }

 

    上面这段代码在IE上是没有问题的,而在FF3上就会出现问题:scrollHeight经常返回0,似乎FF3并不对iframe的内容计算其实际高度。不过如果你的用户只用IE,那么将就一下也算可以。如果你想做得更完美一些的话,这种“自适应”方法却有问题。

    不过从上面的代码中,我们可以发现一点:既然可以得到iframe内容的body对象,就可以得到bodyinnerHTML!这样我们可以再加入一个div或者span标签,把body对象的innerHTML复制到divinnerHTML中。利用div的高度自适应,加上iframe的异步请求和编码不敏感的特性,就可以达到一个很好的效果。

JavaScript代码:

 1 function LoadContent(src, iframeID) {
 2        var content = document.getElementById(iframeID);
 3        content.setAttribute('src', src);
 4 }
 5  
 6 function swipContent(src, to) {
 7        document.getElementById(to).innerHTML = getIFrameContent(src);
 8 }
 9  
10 function getIFrameContent(id){
11        var bobo=document.getElementById(id); //iframe id
12        if (document.getElementById){
13               if (bobo && !window.opera){
14                      if (bobo.contentDocument){
15                             return bobo.contentDocument.body.innerHTML;
16                      }else if(bobo.Document){
17                             return bobo.Document.body.innerHTML;
18                      }
19               }
20        }
21 }

 

HTML的代码:

1 <href=”#” onclick=”LoadContent(‘URL’, ‘icontent’)”>Link Button</a>
2 <iframe id=”icontent” width="600" height="0" scrolling="auto" frameborder="0"
3     onload="swipContent('icontent', 'dest')"></iframe>
4 <div id=”dest” />

    随着UTF-8编码的逐渐流行,这种“绕圈子”的方法的用武之地就逐渐变少了。而随着找到解决方法的这一连串的过程至少给了我一个启示:有时候换个思路就好多了。如果在寻找iframe的高度自适应功能上,仅仅只盯住scrollHeight就会花费更多的时间而且找不到好的办法。而跳出iframe,换一种思路:把iframe当作一个Ajax引擎来实现异步调用的功能,就是另一片天地了。

    在最后,也顺便说说,这种方法的问题:如果在iframe请求的页面中使用了主页面中未定义的CSS样式,那么上面这个移花接木的方法就会出现显示问题。至于解决方法,就是把iframe中的页面的CSS导入到主页面中。

[3D]Ha, I Can Touch The Ball Anywhere

mikel阅读(715)

转载:http://www.cnblogs.com/skyman/archive/2008/11/25/ik.html

   角色动画是构建虚拟世界(游戏和虚拟社区)一个比较重要的内容。因为虚拟世界最关键的是人与虚拟角色(即“化身”,Avatar)之间的交互,会动的世界才有生机。角色动画可分两种:预定义动画(predefined animation)和程序动画(procedural animation)。预定义动画是事先由美术师制作好的动画序列,程序运行时只能播放,不能改变;程序动画是在程序运行时实时生成。相比预定义动画,程序动画能实现更好的交互。
    程序动画可以用来实现物理动画(physics animation),物理动画可以让角色根据物理规律对外界作出相应的反应动作。物理动画现在已经开始应用到3D游戏里了。比如Crytek公司的CRYENGINE 2引擎就采用了这项技术,例如角色可以根据地形的坡度来自动调整站立的身姿,如下图所示:

    IK就是一种实现程序动画的方法。骨络动画分为FK(正向运动学,Forward Kinematics)和IK(逆向运动学, Inverse Kinematics)两种。FK这里就不细讲了,是最常用的设置动画的方法。这里主要讲一下IK,IK和FK相反,它是给定末端作用器的位置或方向,来反求各节点的位置。如下图所示:

    IK主要用于程序动画中,比如跑步时人的腿根据地形进行自适应,用手拿东西,用手握扶手开门等。如下图所示:


    IK计算有2种方法:解析法和迭代法。解析法速度快,但只适用于节点较少的情况;迭代法通用性强,但有时容易得到局部极小值。所以一般是这两种方法混用。IK的解的个数有多种情况:

                 

          (a) 无解                                  (b) 唯一解                      (c) 两个解                               (d) 许多解

    若节点数大于2个,就会出现有许多解的情况,那么如何选择最佳解呢,对人的手和腿来说,每个关键都有约束(转动角度的范围),那么就要考虑这些解有没有满 足这些约束。但是可能满足这些约束的解不止一个,这时就要选择一个最佳的,比如视觉效果最好的。一种方法是选择消耗能量最少的那个(比如手臂各关节抬得最 低)。
    FK可以实现比较自然的动画效果;IK可以用在程序中实时生成骨络的关键帧,这样就可以使角色根据外界环境实时的作出动作的反应,更真实。因为FK和IK各有优缺点,所以往往FK和IK混用(FK/IK blend)。

    上面说到IK能够更好的实现交互效果。比如在虚拟世界(游戏或虚拟社区)中,你可以让一个角色替你拿某样东西,等等,IK就能实现这种需求,这样会使我们 和虚拟角色的交互更加有趣。下面是我最近做的一个小demo,演示的就是你把红色小球放在某一个地方,虚拟角色都可以用手摸到它。技术要点主要是:实时 IK求解器和FK/IK混合。

高清版观看地址:http://www.youtube.com/watch?v=1cVD1zXcSz8&fmt=18

[Flash]Adobe 发布 Alchemy:编译C/C++代码为Flash

mikel阅读(881)

SnT2K 说道:Adobe最近发布了 Alchemy beta版本,Alchemy 能够编译C/C++代码为AS3字节码(运行在AVM2上)能够运行在Flash或者Flex平台,并且Adobe宣传Alchemy能够为计算密集型任 务提升性能(但是比原生C/C++慢),去年Adobe曾经在芝加哥AdobeMAX2007大会上通过演示Quake(雷神之锤)游戏来验证。几个月 后,Adobe又通过运行 Python解析器 和 任天堂模拟器 做了演示证明。比较有趣的一点是Alchemy是在开源 LLVM 编译架构 的基础上创建的。
详情访问:http://labs.adobe.com/technologies/alchemy/

[Google]谷歌(Google)中国推出手机软件包

mikel阅读(974)

谷歌移动搜索已经可以实现网页、地图、图片、资讯、财经、字典等手机搜索服务。现在,谷歌中国将这些移动搜索服务集成为一个“谷歌手机软件包”。通 过它,用手机上网搜索也可以像在台式机上一样的方便快捷。目前,这款新软件还只适用于采用Nokia Symbian S60平台的手机。面向更多手机平台的谷歌手机软件包(GMA)不久将与中国用户见面。

界面风格类似谷歌中国主页 集中展示谷歌搜索服务

     谷 歌中国主页(www.g.cn)一以贯之的简单直率的风格你喜欢吗?还有列在谷歌搜索框下面的跟随鼠标跃动的代表视频搜索、图片搜索、生活搜索等服务的八 个彩色动画图标?现在,只要下载一个谷歌手机软件包(Google Mobile App),你的手机屏幕也能实现同样的简洁生动的界面。

  谷歌手机软件包(GMA)可以在谷歌移动搜索页面(mobile.google.cn)下载,安装了这个软件包,你就可以在手机的待机画面上直接点击快捷键,进入一个与谷歌中国主页相似的简洁界面,立即开始使用谷歌搜索了。

  点击谷歌手机软件的快捷键之后,界面将变为:简单的网页搜索框,加上五个彩色动画图标,分别代表谷歌地图、谷歌图片、谷歌资讯、谷歌财经、谷歌词典的移动搜索服务。点击图标可以带你快速进入相关查询服务。


降低移动搜索平均耗时 带来方便快捷搜索体验

   手机用户使用搜索时,面临着浏览器启动不便、网络连接不畅、查询词输入慢等诸多困难。在使用谷歌手机软件包之后,这些繁琐的过程都由一个快捷键所代替。 只需在待机画面上点击快捷键,就可以直接输入查询词。当你输入搜索词时,谷歌手机软件还会根据你过去的搜索历史记录给出搜索建议(用户也可以选择不记录搜 索历史),并帮助用户完成搜索词。我们相信这可以大大缩短用户在手机上输入的时间。谷歌的实验结果表明,这种新的方式可以将一个移动搜索的平均耗费时间降 低一半以上。

  有了这个软件包,用户只需点击就可以在图片搜索、资讯搜索、财经搜索等不同搜索服务之间快捷切换。通过它,你还可以快捷地启动谷歌手机地图,获得实时交通状况、周边餐饮及生活信息、公交及驾车路线等诸多功能。


   谷歌中国开发这一软件包的目的是给你带来全新的方便快捷的搜索体验。谷歌中国开发的谷歌手机软件包(GMA)可供用户完全免费自由下载。目前这款谷歌手 机软件包(GMA)还只适用于采用Nokia SymbianS60平台的手机。面向更多手机平台的谷歌手机软件包(GMA)不久将与中国用户见面。

[MVC]Asp.Net MVC:基于cookie的用户自选视图引擎实现

mikel阅读(746)

转载:http://www.cnblogs.com/leven/archive/2008/11/25/aspnetmvc_selectviewengine.html

在 我以前的文章中详细介绍了目前mvc框架中的视图引擎管理,这个视图引擎可以方便的实现系统多视图引擎的管理,让系统可以轻松更好视图引擎,但是,在一些 应用,比如bbs,多用户blog中,往往需要提供用户自选skin的功能,比如bbs中某个用户通过菜单可以随意更换自己的skin设置,而mvc框架 的默认视图管理器对这个要求就无法做到了,而本文则是使用viewengine规则来实现一个用户自选视图引擎的功能.

在本系统中,用户选择的skin信息将保存在cookie中,这意味着可以让用户控制这个选择保存的时间.

首 先,这个系统仍然是基于ViewEngine,我们在以前的文章中可以看到,mvc框架用一个AutoViewEngine来管理存在的所有 ViewEngine,那么我们也可以考虑用一个SelectViewEngine来管理一系列我们特定的可选择ViewEngine.下面先看看这个核 心部分的类:

 

从图中可以看到,这儿我们提供了一个新的接口ISelectViewEngine,它在普通的ViewEngine上添加了一个新的Name属性,该属性标示着唯一的视图引擎名称,然后我们对WebFormViewEngine进行封装,并实现ISelectViewEngine接口:

Code

 

从上面的代码可以看到,默认的不同skin分别放在~/skins目录下,不同的SelectWebFormViewEngine对应不同的子目录.

然后我们实现一个基本的SelectViewEngine来管理所有的可选择ViewEngine,关键代码如下:

 

Code


那么我们如何确定用户选择了哪个ViewEngine呢?在本例中是采用了cookie的方式,在ViewEngineExtension中,我们封装了几个扩展方法用来获取cookie和设置cookie:

 

Code

 

总结下VIewEngine的工作流程:

Controller -> ViewEngines.Default.FindView -> SelectViewEngine.FindView -> SelectWebFormViewEngine.FindView

也就是说,系统调用FindView或者FindPartialView方法最终还是会调用到我们在系统中已经注册过的ISelectViewEngine的FindView或者FindPartialView方法.最后展示下如何注册这些SelectViewEngine:

 

Code

 

到此,所有功能实现
实例工程代码:

/Files/leven/LevenViewEngine.rar
Leven