2009年7月23日星期四

Grails on Google App Engine



Grails on Google App Engine


1. Download

2. Install
  • 设置系统环境变量:
    GROOVY_HOME
    GRAILS_HOME
    Path: %GROOVY_HOME%\bin;%GRAILS_HOME%\bin

3.Create App
  • 创建应用
    grails create-app hook-hub

  • 更改配置
    renli-resource/grails-app/conf/Config.groovy中添加如下行:
    google.appengine.application="hook-hub"

  • 安装AppEngine plugin
    cd hook-hub
    grails uninstall-plugin hibernate
    grails install-plugin app-engine

  • 运行AppEngine
    grails create-domain-class com.vickcy.Book
    grails install-plugin hibernate
    grails generate-all com.vickcy.Book
    grails uninstall-plugin hibernate

  • Delete : target/war/WEB-INF/datastore-indexes.xml

  • 运行AppEngine
    grails app-engine run

  • 向GAE部署应用
    grails set-version 1

    grails app-engine package

    %APPENGINE_HOME%/bin/appcfg.cmd update target/war
    * 部署时应用名必须与注册的GAE应用名一致


4.Develop Environment

 

  • Eclipse3.4 plugin
    Google App Engine plugin
        - update site: http://dl.google.com/eclipse/plugin/3.4

    TestNG plugin - Groovy plugin 的前提
        - update site: http://beust.com/eclipse

    Groovy plugin
        - update site: http://dist.groovy.codehaus.org/distributions/update/

 

 

  • Eclipse Project Setting
    Project -> Properties -> Java Build Path -> Libraries -> Edit ->Variable -> New
        Name: GRAILS_HOME
        Path: Grails根目录

 


















2009年7月19日星期日

2009年7月17日星期五

PHP Upload | PHP 上传

PHP服务器端允许接受的上传文件的最大Size默认是2M,由PHP.ini中的【upload_max_filesize】属性设置。
Request的最大Size默认是8M,PHP.ini中的【post_max_size】属性设置。

2009年3月23日星期一

Vistaのコピーコマンド

robocopy [source folder] [dest folder] /E

2009年3月11日星期三

2009年2月25日星期三

lime_test 对象中用于单元测试的方法

diag($msg) 仅输出备注信息而不进行测试
ok($test, $msg) 测试一个条件,如果条件为真, 则通过
is($value1, $value2, $msg) 比较两个数值,如果全等(==)则通过
isnt($value1, $value2, $msg) 比较两个数值,如果不等则通过
like($string, $regexp, $msg) 测试字符串是否匹配正则表达式
unlike($string, $regexp, $msg) 测试字符串是否不匹配正则表达式
cmp_ok($value1, $operator,$value2, $msg)比较两个参数的值是否与某个运算符匹配
isa_ok($variable, $type, $msg) 测试变量的类型
isa_ok($object, $class, $msg) 测试对象所属的类
can_ok($object, $method, $msg) 测试一个方法是否适用于某个对象或某个类
is_deeply($array1, $array2, $msg) 测试两个数组是否有相同的值
include_ok($file, $msg) 验证某个文件是否存在并且已经被包含
fail() 永远失败——用于测试异常
pass() 永远通过——用于测试异常
skip($msg, $nb_tests) 跳过$nb_tests 条后续的测试——用于条件测试
todo()作为一条测试参加测试计数 ——为将要写但还未写的测试预留位置

2009年2月15日星期日

境外访问迅雷看看的方法

XP

把C:\WINDOWS\system32\drivers\etc目录下的hosts文件用记事本打开,在文件最后添加如下行:
119.147.41.50 kankan.xunlei.com
保存关闭,重启浏览器即可

Vista

在开始菜单中找到记事本,右键单击记事本图标,选择用管理员身份打开,在记事本的菜单中选择文件->打开,找到C:\WINDOWS\system32\drivers\etc目录下的hosts文件并打开,在文件最后添加如下行:
119.147.41.50 kankan.xunlei.com
保存关闭,重启浏览器即可

2009年1月11日星期日

精神硬件网络

看到了CC在去年发表的一篇博客,题目为《OOO我的下一代操作系统中的概念之一》:
转载一下先,原文是在他的开心网日记里面看到的。

引用:———————————————————————————
OOO我的下一代操作系统中的概念之一

在我看来,操作系统经历了以下几代
第一代,单任务系统Dos等
第二代,多任务系统Windows MacOS Linux Hurd Unix Beos基本都属于这类
第三代,云系统和大型复杂智能系统,Google正在研发的,Windows7可能也是

这里我要说的是大脑中的第四代系统
第四代,我称之为寄生-虚拟-智能系统

回到题目,什么是OOO?
在底层,OOO即Os On Os,在操作系统上的系统,此系统将可以在任何平台的计算机轻松使用,当然也可以使用自己的底层。
在应用层,OOO又可解释为Object Oriented Os,系统在全对象级运行

关于几代系统的关系,这个第四代系统,将可以在无系统、第一代或第二代系统上运行,关于第三代系统,暂时我们还看不到他的样子,是不是能和平相处,还需等我了解了第三代系统才好分析。

FAQ:
为什么不是虚拟机?
因为虚拟化只是虚拟硬件罢了,很多问题还需要系统解决。

好了,yy结束。。。ZzzZzz。。

引用结束——————————————————————————


看完了这篇日记,我有如下感受:

传说中的第四代OS应该需要有SHN(Spirit Hardware Network)- 精神硬件网络的支持。


SHN是建立在SNP(Spirit Network Protocol)- 精神网络协议的基础上的,当SNP被人类进化委员会通过之后,一种名为精神催化剂的产品将被公诸于世,并且由各国政府免费强制提供。
精神催化剂是一个装有500ml无色无味透明气体的小瓶子,服用者打开瓶子之后必须用鼻子凑近瓶口闭嘴吸气30秒,确保大部分的精神催化剂进入体内。(感冒者可以用嘴或者任何其他可以吸气的身体部件完成精神催化剂的服用。)精神催化剂的作用就是将人类剩余的90%左右的未被开发的大脑机能按照SNP激活,用来为第四代系统提供与现今计算机硬件类似的运算、存储、数据传输等功能。


完成精神催化的大脑可以独立于人的思维对终端发来的请求进行运算,并将结果通过其他人类的大脑之间的精神互联通道进行传递,直至回到发出请求的终端。这一系列动作称之为SRR(Spirit Request Response) - 精神请求响应。由于SHN的节点是人脑,通信中使用了生物界最高阶的精神信息引导技术,所以精神数据的传输速率是接近自然界极限的,任何基于传输介质的传输方式都无法与之比拟。利用这样一个特性,SHN可以将任何从终端上接收到的精神信号发送到范围内的人脑节点上(很有可能是使用者本人,也可能是附近的其他人)进行分布式运算,并在感觉不到的应答时间内将响应信号传回终端的精神调制解调器(Spirit Modem - 简称SM)。第四代OS直接内置了SM的驱动,无论寄生在哪里,只要终端安装有SM都可以直接与SHN进行交互。


有了SHN,传统的硬件制造厂商,如Intel、nVidia、AMD、ATI等等都会相继一一倒下,某些硬件将会不再被需要。所以他们一定会在SHN出现之前一同组织起武装力量严厉打击SHN的建设,阻止人类进化历程的最终还是人类自己啊……


但是,SHN也有一定的局限性,由于人脑的功率不是无穷的,导致了每个人脑的SHN节点有一定的作用范围,就是说人越多的地方精神强度越大,计算能力也越强,就和BT下载X永远比BT下载Y的速度快Z个数量级的道理是One样的。所以在人少的地方可能你运行1,640,000 x 1,024,000分辨率的极品飞车14的时候会卡8死机。
有关人士认为,人类进化委员会需要为这一还未出现的BUG负责,并尽快制定出一个能够解决这一严重问题的措施。
人类进化委员会也已下令各下属机构积极研究其解决办法,并初步作出如下5天计划:

在未来的5天内:
实现精神放大药水全面向市场投放的伟大胜利!

精神放大药水:
产品说明: 服用者在2小时之内获得与精神卫星互联的能力,此效果的持续时间为地球时,不会在被具有某些超能力的物种释放时间停止超必杀时中断计时。
作用:服用者能够通过精神卫星在短时间内获得共享全世界精神强度总和的权力,专家建议在人烟稀少的地方使用,比如沙漠、海洋、高山、南极、月球、下水道等等,或者在需要获得超高计算能力,如计算求婚经费、计算1+1=几、计算通过一个直径等于编号为HD90开头的百元钞票的厚度的黑洞时所需要的时间等复杂运算的时候使用。
冷却时间:服用者在服用后会获得一个精神过剩的DEBUF,持续24地球时,在服用后的24地球时之内不能再次服用此类药物。
售价:原始灰尘 x 10

原始灰尘取得办法:
1个原始灰尘可通过10个灰尘微粒组合得到,灰尘微粒会在扫大街时随机掉落,受《共产人品法》的约束,灰尘微粒的掉落几率与人品有密切的关系,人品越高,掉落的几率就越大,并且有极小的机会在清理令人恶心到极点的污物时,直接爆出原始灰尘。如想暂时性的提高人品,您可以购买金山制药研制的【三金人品胶囊】,服用后可以在接下来的2小时以内提高人品200%,对人体无不良副作用,但是无法作用于人品为0或者低于0的生物。
受《共产平等法》的约束,灰尘微粒是拾取后绑定的,不能倒卖、赠送、抢夺或偷取,并在转手他人的时候立刻化为鸟有。你丫再有钱,还是要参与清洁环境的大工程。

综下所述,还是没了。

没了。

2009年1月5日星期一

symfony学习笔记

环境配置:
  1. Apache2.2的httpd.conf文件中添加如下的虚拟主机设定:

    <VirtualHost *:80>
        ServerName myapp.example.com
        DocumentRoot "/home/steve/myproject/web"
        DirectoryIndex index.php
        Alias /sf /$sf_symfony_data_dir/web/sf
        <Directory "/$sf_symfony_data_dir/web/sf">
            AllowOverride All
            Allow from All
        </Directory>
        <Directory "/home/steve/myproject/web">
            AllowOverride All
            Allow from All
        </Directory>
    </VirtualHost>

  2. 在Eclipse中新建PHP项目。
  3. CMD窗口中进入新建项目的根目录。
  4. > symfony init-project myproject 初始化项目
  5. > symfony init-app myapp 初始化应用
  6. > symfony init-module myapp mymodule 初始化模块框架
  7. > symfony propel:build-sql 根据schema.yml和数据库配置自动生成数据库建表语句
  8. > symfony propel:insert-sql 根据schema.yml和数据库配置自动在DB中创建表
  9. > symfony propel:build-model 根据schema.yml自动生成数据模型

注意事项:
  1. 由于symfony有自动载入类的功能,每次在项目中添加类的时候需要用symfony clear-cache命令清空symfony缓存。
  2. symfony是大小写敏感的。
  3. 使用symfony模板的辅助函数有助于HTML页面代码的简洁并提高效率。
  4. 使用Javascript辅助函数 <?php use_helper('Javascript') ?\>
  5. 查询时使用Join来减少查询语句的数量。
  6. symfony核心和生成的php文件都不包含?>的关闭标签,因为关闭标签不是必须的,而且如果在关闭标签之后包含了空格会造成问题。
  7. 任何传递给Criteria 的值都会在整合入SQL 代码之前被转义,这能防止SQL 注入的风险。
  8. 在PHP5 下,对象是引用传递的, 所以要避免修改原始的,你必须克隆它:
    $criteria = clone $criteria;

常用代码:
  1. 用【self::】来调用当前类的静态方法。
  2. return sfView::ERROR;
    return 'MyResult';
    return sfView::NONE;
    return sfView::HEADER_ONLY;
    使用特殊模板时:$this->setTemplate('myCustomTemplate');
  3. $this->forward('otherModule', 'index');
    $this->redirect('otherModule/index');
    $this->redirect('http://www.google.com/');
    $this->forward404();
    $this->xxxIf(判断, xxx);
    $this->xxxUnless(判断, xxx);
    forward和redirect之后的代码不会被执行。
  4. public function preExecute() {} 在动作之前执行
    public function postExecute() {} 在动作之后执行
  5. $this->setFlash('attrib', $value);
    $value = $this->getFlash('attrib');
    在显示出下一页之后Flash属性就被删除了。

模板:
  1. 模板内置变量:
    $sf_user
    $sf_flash->has('attrib')
    $sf_flash->get('attrib')
  2. sfLoader::loadHelper($helpers) 在模板之外载入辅助函数

过滤器:
  1. isFirstCall() - 让第一个动作通过过滤器
  2. return $this->getController()->forward('mymodule', 'myAction'); 转发