手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

Yii笔记

本文纯粹是笔记,记下来怕忘了
1、终止当前操作,一般情况下是用exit,但用了Exit后无法看到trace的内容。所以要采用Yii::app()->end();
2、createUrl和createAbsoluteUrl,这两个函数,如果需要宣传自己的网址和内容,还是用createAbsoluteUrl函数吧。里面带了全部路径,而CreateUrl只会显示/home/xxx这样的路径,不利于SEO
3、widget默认的render无法使用theme中的模版,于是写一个类继承自CWidget,然后所有的widget都继承这个类,比如我这样实现了。。

PHP代码
  1. class Widget extends CWidget{  
  2.     private static $_viewPaths;  
  3.     /** 
  4.      * 重写CWidget中的getViewPath 
  5.      */  
  6.     public function getViewPath($checkTheme=false)  
  7.     {  
  8.         $className=get_class($this);  
  9.         if(isset(self::$_viewPaths[$className]))  
  10.             return self::$_viewPaths[$className];  
  11.         else  
  12.         {          
  13.             if($checkTheme && ($theme=Yii::app()->getTheme())!==null){  
  14.                 return self::$_viewPaths[$className] = $theme->getBasePath().DIRECTORY_SEPARATOR."widgets";  //这是我自己的路径
  15.             }  
  16.             $class=new ReflectionClass($className);  
  17.             return self::$_viewPaths[$className]=dirname($class->getFileName()).DIRECTORY_SEPARATOR.'views';              
  18.         }  
  19.     }  
  20. }  

覆写父类方法,使得getViewPath找到我指定的目录,我目录在themes/classic/下建了一个widgets的目录。这样的好处很多。。而且对于CSS和JS等路径都可以和标准视图一致

先写这么多。。。

Tags: yii

JS实现的街头霸王

自从canvas越来越被大多数人接受后,基于它的游戏也越来越多了。。。
而这个,居然没用canvas也能实现这样的效果,看这里:http://www.cnblogs.com/Random/archive/2011/04/11/2011962.html

作者这么说了:
《天机》 之后,这次又山寨了个名为《街斗霸主》的经典格式游戏《街头霸王》的模仿版Demo,花了几个月的业余时间写了这么个东西,算是对目前的技术学习的一种练习吧。

其实这种练习的结果不是很重要,主要是体会其中的过程,虽然大部分的时间是在痛苦中渡过,但也是有很多收获的,同时也暴露出很多技术方面的不足,也为以后的学习明确了一些目标。

技术方面因为考虑到大部分IE用户(而且是非IE9),所以没有用HTML5的canvas,用的div的方式处理的,这样挑战也相对大了一些,

不过确实,性能上还是不理想,IE下的表现还是比较糟糕(特别是IE6。。。恩。。。- -!)。
目前兼容IE6/7/8(理论上也兼容IE9,只是没有测试),safari,FF3.5+(因为FF2.0/3.0不支持水平翻转的样式。。- -!),Chrome,Opera。
自己写了一个小型框架,包括了开发流程和js类库,类库用了OOP Like的方式包了个语法糖衣,看上去还算是像个OOP的样子,不过因为为了追求“优雅”,直接扩展了function的prototype,所以不建议在其它地方使用。
框架开发的整体思路就是用PHP作后端代码合并输出,js代码里用$import去建立了各个代码文件之间的关系,然后页面引用合并js的PHP文件,该模式需要在本地建立一个web服务器才能作测试,并且需要设置hosts为 127.0.0.1 aralork

  游戏说明

 

    游戏是一个Demo版本,实现了核心的整体流程。游戏分为“单人游戏”模式、“双人对战”模式和“练习模式”三种玩法,不过其实实现都是一样,只是改改初始化的参数而已,挺坑爹的。。。

    游戏只需要键盘操作,不需要鼠标,

    菜单的操作是方向键移动,Enter键选择,ESC键取消;

    玩家1的操作:

       上:W,下:S,左:A,右:D,拳:J / K / L,腿:U / I / O

     玩家2的操作:

      上:↑,下:↓,左:←,右:→,拳:小键盘 1 / 2 / 3,腿:小键盘 4 / 5 / 6

    这里的 ↑ ↓ ← → 代表方向键。

    游戏演示地址

     完整源代码下载

Tags: js, 街霸, div, canvas

netbeans and PHPdocs

我不知道是我的PHPDOC版本有问题还是有我的netbeans版本有问题,反正,我在netbeans里调 用生成phpdoc没有成功
但是我在命令行下,以及WEB管理界面,我都成功生成了。

OK说一下我的步骤
1、下载phpdocumentor并解压到某个目录
2、修改phpdoc.bat,把set PHPCli的路径改成我的PHP实际路径
3、在命令行下运行phpdoc,会提示你选择哪一个INI文件,选择0.即使用默认的phpdocumentor.ini
4、然后运行。。phpdoc -d xxx -t xxx就over了。
这是最简单的方法
然后是进入WEB管理,这时候,要把phpdocument解压到WEB可访问的目录下,打开http://localhost/xxx/phpdoc.php会跳转到builder目录下
然后设置一下directoy目录和Target目录。同时也可以选择生成的格式,最后选择create,就直接创建成功了。。

然而我在官方的介绍下(视频)我却没有配置成功。。。不知道怎么回事,想知道官方是怎么下载的,可以到官方看一下视频。。。地址是:http://netbeans.org/kb/docs/php/screencast-phpdoc.html



如果觉得我说的简单,这里有一份比较详细的介绍:

http://gyxuehu.iteye.com/blog/582517
  1. 写文档是一项乏味却不得不做的工作,而编写API级的文档更是意味着大量的重复劳动和难以保持的一致性。这里我们要推荐给大家的,是支持PHP5语法分析的文档工具——phpDocumentor。  
  2.   
  3. 使用phpDocumentor不仅可以自动从代码中提取出函数和方法定义,还可以自动处理各个class之间的关系,并据此生成class tree。你还可以选择将文档生成html、chm或者pdf。有了phpDocumentor,文档工作变得轻松了很多。  
  4.   
  5.   
  6. 安装phpDocumentor  
  7.   
  8. 在pear下安装phpDocumentor是一件极其简单的事情,只需要在cmd窗口中cd 到php安装目录下,然后输入  
  9.   
  10. Pear install phpDocumentor  
  11.   
  12.   
  13. Pear就会自己下载并完成phpDocumentor的安装。  
  14.   
  15. 在phpDocumentor成功安装后,php安装目录下会多出来一个phpdoc.bat。这个文件就是我们用来生成文档的批处理文件了。  
  16.   
  17. 〈? 相关知识 ?〉   
  18.    
  19.   
  20. phpDocumentor是phpDoc的升级版本,是专门为支持php5语法而重写的文档工具,当你的php版本为5时,运行phpDoc.bat,它会自动去调用phpDocumentor。所以文章中的提到的phpDoc和phpDocumentor实际上是相同的。  
  21.   
  22. 在phpdoc.bat所在目录下,输入  
  23.   
  24. Phpdoc –h  
  25.   
  26. 会得到一个phpDocumentor的详细参数列表。  
  27.   
  28. 我们从其中选出几个常用的来看看:  
  29.   
  30. 〈? 命令解释 ?〉  
  31.   
  32. -f  
  33. 要进行分析的文件名,多个文件用逗号分割  
  34.   
  35. -d  
  36. 要分析的目录,多个目录用逗号分割  
  37.   
  38. -t  
  39. 生成的文档的存放路径  
  40.   
  41. -o  
  42. 输出的文档格式,结构为输出格式:转换器名:模版目录,例如:HTML:frames:phpedit   
  43.    
  44. 我们会用到的就这几个了,其他的命令请大家阅读help的提示信息。  
  45.   
  46. 试用phpDocumentor  
  47.   
  48. 下面我们就以pear中的phpUnit2为例,演示一下如何使用phpDocumentor来生成文档。  
  49.   
  50. 首先,把我们需要的参数确定下来:  
  51.   
  52. 〈? 命令参数 ?〉  
  53.   
  54. -d  
  55. C:Program FilesEasyPHP5phpPEARPHPUnit2  
  56.   
  57. -t  
  58. C:Program FilesEasyPHP5phpphpunit2doc  
  59.   
  60. -o  
  61. HTML:frames:phpedit   
  62.   
  63.   
  64. 根据上边的参数,我们组合出下边的命令:  
  65.   
  66. Phpdoc -d “C:\Program Files\EasyPHP5\php\PEAR\PHPUnit2” -t “C:\Program Files\EasyPHP5\php\phpunit2doc” -o “HTML:frames:phpedit”  
  67. 运行上边的命令后,phpDocumentor开始解析源文件并输出工作信息。  
  68.   
  69. 命令运行完成后,我们的文档就已经生成好了。 进入我们指定的目标目录,用浏览器打开index.html就可以看见生成的文档了。 文档界面由frame分成了三个部分,左上是包信息,左下是导航信息,右边则是详细的信息呈现页。  
  70.   
  71. 上边的图很清楚地描述出了文档的内容: (膘叔:原文就没有图。)
  72.   
  73. 索引、函数列表、类列表、文件列表和子包。  
  74.   
  75. 点击上边的class(es)链接,我们可以清晰的看见整个包的class tree。  
  76.   
  77.    
  78.   
  79.   
  80. 我们点击其中一个class,就进入了class的描述页面。  
  81.   
  82. Class描述页面主要包含以下几方面内容:  
  83.   
  84.    
  85.   
  86. l 描述:版权、作者、类层次等  
  87.   
  88. l 类变量  
  89.   
  90. l 类常量  
  91.   
  92. l 方法  
  93.   
  94. l 继承的变量  
  95.   
  96. l 继承的方法:非常有用的一个功能  
  97.   
  98. 怎么样,是不是很详细呢?如果要生成chm,可以把前边的-o参数改为”CHM:default: default”,这样phpDocumentor会为你生成好chm项目文件,只要用微软的chm工具进行编译就可以得到可用的chm文件了。  
  99.   
  100.   
  101. 用phpDocumentor为自己的代码生成文档  
  102.   
  103. 虽然phpDocumentor可以自动从代码中分析出一些信息,但是,要形成一份详尽的文档还是需要我们在编码中进行配合的。为了让phpDocumentor读懂我们的代码,我们需要注意一些编码规范和在注释中增加一些tag:  
  104.   
  105. 〈? Tags ?〉  
  106.   
  107. @author  
  108. 作者信息  
  109.   
  110. @const  
  111. 由define定义的常量  
  112.   
  113. @deprecate  
  114. 不建议使用的API  
  115.   
  116. @global  
  117. 全局变量  
  118.   
  119. @package  
  120. 包信息  
  121.   
  122. @param  
  123. 函数参数  
  124.   
  125. @return  
  126. 返回值  
  127.   
  128. @see  
  129. 参考函数  
  130.   
  131. @since  
  132. 引入时间  
  133.   
  134. @static  
  135. 静态变量  
  136.   
  137. @var  
  138. 类成员变量   
  139.   
  140. 这里只是简单的列出了常用的一些Tag,大家可以阅读phpDocumentor的文档,里边有非常详细的编码规范。关于phpDocumento就介绍到这里,希望大家都能好好利用这个工具来规范自己的文档。  
  141.   
  142. PS:phpDocumentor也有Web界面的,你可以访问http://phpdoc.org获取Web版本。Web版本的安装很简单,直接放到web可以访问的目录就可以运行了。  
  143.   
  144.   
  145. 〈? 环境要求 ?〉  
  146.   
  147. PHP:5.0.0  
  148.   
  149. OS: 平台独立,本文演示OS为windows   

这里还有一篇操作步骤的:

http://xieye.iteye.com/blog/229131
  1. phpDocumentor有两种正式的安装方法。  
  2. (以下都翻译自pear.php.net的文档, -- xieye --)  
  3.   
  4. 第一种方式是从pear.php.net 或 sourceforge.net下载压缩包并解压。另一种方式是通过pear安装  
  5.   
  6. 注意:以下假定用户使用PHP5,window系统!  
  7.   
  8. 第一种方法:  
  9. 下载后,如果希望使用命令行接口,解压到任意路径(假设在C:\Program Files\),  
  10. 修改C:\Program Files\PhpDocumentor-1.4.2\phpdoc.bat  
  11. 把第一行修改SET phpCli=C:\usr\local\php\cli\php.exe  
  12. 令等号右边的值为php.exe的路径  
  13. 我的机器是SET phpCli=D:\php5\php.exe  
  14.   
  15. 在命令行输入C:\Program Files\PhpDocumentor-1.4.2\phpdoc,其实是一个批处理文件  
  16. 会出现一个dos界面,给你选择ini文件。  
  17. 后面就不知道了。  
  18.   
  19.   
  20. 如果想使用web接口,你必须先把apache和php装好,把PhpDocumentor-1.4.2这个文件夹  
  21. 拷贝到文档根目录下,然后在浏览器url栏输入:  
  22. http://localhost/PhpDocumentor-1.4.2/phpdoc.php  
  23. 然后浏览器会自动跳转,选择index.html,后面的操作就很简单了。  
  24.   
  25.   
  26.   
  27.   
  28.   
  29. 第二种方法:通过pear安装  
  30. 进入dos的php目录  
  31. 输入pear install -a PhpDocumentor  
  32.   
  33. 如果想使用web接口,则必须首先改变一个配置,  
  34. pear config-set data_dir /path/to/document_root/pear  
  35. 最后的路径应该是/php文档根路径/pear  
  36. (也可以在web接口中改变这个值)  
  37.   
  38. 我没在第二种方法的web接口试验成功。  
  39.   
  40.   
  41. 如果使用web接口的话,还有选择,  
  42. 一种是每次都选择输入文件,输出文件之类。  
  43. 另一种是使用一个配置文件,里面把什么都定义好,  
  44. 进入页面后,先选择这个配置文件,然后点击“创建”按钮,  

Tags: netbeans, phpdoc

永中OFFICE破产

铺天盖地的新闻都在说着这件事,稍稍看了一下,都是讲着经营管理不善之类的。永中也总算是获得过上亿的资金注入过,但时隔这么多年,却没有推销得出去几套不能不说是一件非常悲哀的事情。

曹参向记者介绍,正是因永中Office跨系统、跨平台运行和新旧版本相互兼容的特性,与国家科技部对办公软件的战略规划高度一致,曾经获得“863”重 大专项给予的3000余万元资金支持,江苏省政府和无锡市政府也相应配套了3500万元以上的资金,再加上自有资金及借款,总投入在1.5亿元以上。

但细细想想,其实 也很正常,永中如果不做跨平台,那么他永远都获得不了这上亿的资金。但获得之后呢,却又卖不出去。。

永中科技原副董事长、总经理曹参提供的销售业绩显示,2005年永中科技销售额冲高到2071万元以后,2006年就下滑到888万元,2007年更是降 到549万元,2008年为613万元。曹说,2008年的销售额中,有243.6万元是某省教育厅拖欠了约两年的销售款,扣除后只剩下369万元,销售 额不及2007年,经营显得艰难。

永中获过奖吗?是的,获过不少的奖项,比如说

据永中科技的公开资料介绍,2004年9月,国家科技部公布了“863计划”国产办公软件2004年度的测评结果,永中集成Office以综合得分 2023.99分的成绩取得5个参与测评的软件的第一名。中共中央联络部2008年对永中集成Office2009和其他3家国产Office测试的结果 显示,永中集成Office的支持率最高,达到80%以上。

可是他终究还是倒下了,回想一下当年的绿坝和孔子学府的事情,永中向国家要的也算是很少的了,只是坚持了这么多年,做出来的东西却还是不能够走出去也确实是很悲哀的事情。
再想想,永中走不出去其实也很正常,金山WPS到现在也属于死撑阶段。社会上的OFFICE培训有多少是培训国产软件的?都是ms office,在这种情况下培训出来的学生,有多少会想着去使用国产软件?
哀悼一下而已,无法帮助他们,所幸,我除了使用正版的office之外(仅为了onenote),还在坚持用着wps。

文中的一些内容来源于:http://news.ccidnet.com/art/1032/20110407/2355761_1.html

Tags: office

被荐的网站:flextheworld

在群里被人推荐了这个网站:http://www.flextheworld.com
看了一下,还不错,主要是讲flex,和我目前的方向还是有冲突的。不过,我也就是纯粹记录了一下,大约在3年前,尝试着用flex写过一个大文件上传,然后就再也没有用过它。。。

主要是看这个网站还有这些基础的教程,其实当初那个AIR的安装包就自带一个教程来着的。直接就是案例,也不错。
看一下这些列表,或许有你想要的:

Flex迷你教程的索引,新教程发出后会及时更新目录


  1. Adobe Flex迷你教程 – Super easy实现Mac系统下滑式Alert窗口
  2. Adobe Flex迷你教程 – Super easy获取ip所在城市
  3. Adobe Flex迷你教程 – 合理使用Module分割项目以及对Module的使用
  4. Adobe Flex迷你教程 -使用Share object保存信息到客户端
  5. Adobe Flex迷你教程 — DataGrid,itemrender以及多行多列值的控制
  6. Adobe Flex迷你教程 — DataGrid,全选,删除选中项
  7. Adobe Flex迷你教程 — DataGrid,搜索数据,搜索结果多页显示
  8. Flex 迷你教程 — DataGrid, 拖拽数据到chart中显示
  9. Flex迷你教程 — SDK3.2+TweenLite实现Amazon window shop 3D浏览效果
  10. Flash Builder 4快速入门
  11. Flex 迷你教程 — 在AdvancedDataGrid中合并单元格 (合并行)

Adobe AIR 迷你教程索引

  1. Adobe AIR迷你教程 — 在Flex builder3 中创建、发布AIR程序以及 AIR程序的安装运行
  2. Adobe AIR迷你教程 — 使用自定义窗口以及对窗口的移动,缩放,关闭操作
  3. Adobe AIR迷你教程 — 创建多窗口以及弹出窗口与父窗口的通讯
  4. Adobe AIR迷你教程 — 本地文件(XML文件)的操作(1)
  5. Adobe AIR迷你教程 — 本地文件的操作(与文件选择器的结合)(2)
  6. Adobe AIR迷你教程 – 监测网络状态,离线/在线应用程序的实现
  7. AIR 迷你教程 — 用AIR 2.0创建迷你Web服务器(ServerSocket 实例)
  8. AIR 迷你教程 — 在AIR 2.0 程序中嵌入TOMCAT(NativeProcess 实例)

P2P教程索引

  1. Flex 迷你教程 — 基于Stratus的P2P网络电话 (1)
  2. Flex 迷你教程 — 基于Stratus的P2P网络电话 (2)
  3. Flex 迷你教程 — 基于Stratus的P2P网络电话 (3)
  4. Flex 迷你教程 — 基于Stratus 2的P2P一对多视频直播 (NetGroup, Multicast实例)
  5. 基于Stratus 2的P2P多人文件共享 (2010年8月6日)