分类: 计算机

  • Behind Tetris5 – Basic

    Tetris5是一个使用HTML5和JavaScript技术实现的俄罗斯方块游戏。俄罗斯方块是前苏联科学家阿列克谢·帕基特诺夫(Алексей Леонидович Пажитнов)在1984年6月发明的,具有数学性和动态性,是实现常见的游戏实现示例。HTML5是HTML下一个的主要修订版本,现在仍处于草案阶段。她的目标是取代1999年所定订的HTML 4.01XHTML 1.0 标准,在互联网应用迅速发展的时候,使HTML的表达能力达到当代的网络需求。Tetris5基于的HTML5技术不只是狭义上的使用HTML5标签(tag),而是广义上使用HTML5提供的各种新特性,结合CSS3和JavaScript编写网络应用的一种新方法。

    HTML5是目前正在开发过程中的新一代HTML标准,虽然没有最终定案,但是像Mozilla Gecko引擎、WebkitOpera新版IE都引进部分实现了该标准。HTML5为网络应用开发带来了许多新特性,在HTML的层面上,增加了一些新的标签(tag):

    (更多…)

  • Tetris5 基于 HTML5 的俄罗斯方块

    http://www.sunjw.us/tetris5

    基于 HTML5 技术,完全使用 Javascript 编写的俄罗斯方块游戏。

    菜单支持快捷键,游戏控制:上下左右、ASDW,X,或者用鼠标点击控制。

    也可以在 iPhone Safari 或者 Android 手机上玩。

    游戏编写内幕稍后奉上。

    tetris5-1

    tetris5-2

    tetris5-3

  • Google Logo 弹吉他,今天还想玩怎么办

    Google Logo 弹吉他使大家陷入了疯狂,不过只能玩24小时,今天已经更换回了普通的 Logo。

    幸好阿呆同学用其超强力的技术将它保存了下来,试玩地址:

    http://www.topfun.us/google-guitar/google-guitar.htm

    其博客上还有高清自爆写真,欢迎围观。

  • [5P]Ubuntu 11.04 试用

    今天下了 Ubuntu DVD,试着用了一下,主要是冲着被广泛诟病的 Unity 界面,想看看到底有多难用。有可能是之前试用过新的 Gnome 3 的 Gnome Shell已经曾经用过一小段时间的苹果电脑,所以没有觉得 Unity 完全不会用,其基本思想和 Gnome Shell 是一样的,就是左边的类似 Mac OSX 的 Dock,统一的软件中心(或者叫应用列表),新的右上角的通知区域。Unity 走得比较远的就是类似 Mac OSX 的全局菜单,如果没有接触过 Mac 的用户的确在使用习惯上有一点不适应,而且我相信许多并非专门考虑过全局菜单的应用程序会有一些兼容性问题。

    上截图: (更多…)

  • KB2465361 补丁导致 VS08 编译 MFC 体积增大

    微软的 KB2465361 补丁导致 VS08 编译出来的 MFC 体积明显的增大。发现这个问题是在编译 fHash 的时候,原来只有 297KB 的 Release Build 一下子变成了 2MB 多,一开始还以为是我自己修改了代码所致,但是仔细查看变大前后的代码,没有可能会导致体积明显变化的修改。用 Dependency Walker 查看后发现,新的二进制链接了 gdiplus.dll 等一堆新的链接库,而代码中根本就没有用到它们。

    仔细想想和上一次编译之间唯一的变化就是安装了 KB2465361 补丁。上网查了一下,有这一篇博客确认了这个问题,并提出了解决方法。 (更多…)

  • Yahoo! 邮箱新版截图画廊[7P]

    今天收到邮件,可以将 Yahoo! 邮箱升级到新版本,于是就尝试一下。新版 Yahoo! 邮箱仍然保持了原版的标签式浏览,但是变得更简洁,色块更大,更漂亮(也许是老版看多了,审美疲劳了)。左边的导航集成了聊天和应用程序,选项里面多了主题,叫做“邮箱炫外观”。不多说了,看截图: (更多…)

  • [9P] Gnome3 截图画廊

    今天下了 Gnome 3 Live CD,上几张截图

    一进入系统的桌面:

    screenshot-desktop

    (更多…)

  • Catia CAA Addin 正确的建立方法

    最近有幸参与一些 Catia 的二次开发,在这个方面的文档很少是很令人头疼的一件事。

    首先入门的时候,比较大的问题就是怎么样能添加一个工具栏到 Catia 界面里。许多教程(例如这个)都会介绍到使用 Addin 为 Catia 添加一个工具栏,但是如果你完全照着做 99% 是不会成功的(剩下的 1% 可能是你电脑出错了:))。其中主要的一个步骤是在添加 Component 的时候,选择一个 TIE mode,教程上说是选择安装路径中的 CATIPrtWksAddin,如果你也是这样选择的,虽然后面的步骤都是对的,编译也完成了,运行后你不会看到这个工具栏在之前步骤建立的Workbench中视看不到这个工具栏的,它其实在 Part Design 工作空间中。如果现在刚才建立的 Workbench 中使用,在一进入这个对话框的时候,在当前工作目录下有一个 CATIAddinWorkbenchAddin 1,直接选择 Implement 这个接口就可以了。

    catia_insert_components

    因为在建立 Workbench 的时候,就已经建立了这个接口,Workbench 运行的时候,会载入一个实现的接口,并且运行里面的函数来建立菜单和工具栏。而你如果选择 CATIPrtWksAddin,Workbench 载入时并不知道应该用哪个实现类。

    向导之后会为你建立好框架,你需要做的就和大多数教程一样,实现 CreateToolbars() 和 CreateCommands() 即可。

    如果不想将建立的过程封装起来,也可以不建立 Addin,直接在 Workbench 的 Headers.h 和 Workshop.h 中编写代码。在 CATAddinWorkbenchCmdHeader 1 中会有一个默认的实现名称,例如 MacImplementHeader(CATAddinWorkbenchCmdHeader),使用 CATAddinWorkbenchCmdHeader 可以直接在 Headers.h 中使用和实现 CreateCommands() 时类似的方法建立按钮与命令之间的连接,在 Workshop.h 中也可以使用实现 CreateToolbars() 的方法来建立工具栏和菜单项。

    1 下划线部分会由于你所建立的 Workbench 的不同而变化

  • SpiderMonkey

    最近刚好要用到嵌入脚本,所以用了一下 MozillaSpiderMonkey JS 引擎。从 Mozilla 的 ftp 上下载了 1.7.0 的源代码,包里面有编译脚本,但是在 VS 05 的环境中会出错,于是在网上找了一个新的编译脚本:js.vs2005。编译后,得到 js32.dll, js32.lib, js32.dll.manifest 三个有用文件。

    在 vs 05 的项目中,如果需要用到 js32 库,除了在链接器中加入 js32.lib,还要在清单中加入 js32.dll.manifest,否则编译一点问题都没有,运行的时候就出错。

    Tips: 为了避免清单文件的麻烦,用 VC6 编译环境执行 js.vs2005 脚本得到的 js32.dll 跟容易使用。

    另外一点就是 Mozilla Docs 上的文档应该是对应 1.8 版的,和 1.7 有一些不同,没法直接用的,IBM 的这一篇比较有参考价值。

  • 非官方的 Firefox 4 修补

    Firefox 4 RC1 发布临近,不过仍然有一个在外观上的小 bug 没有修正(至少在目前最新的编译中没有)。

    这个 bug 发生在 Windows 版 Firefox 4 RC1 及之前的版本,Tabs on top 打开且关闭菜单栏时,网页中的链接如果是在新窗口打开的(也就是 target=”_blank”),那么新打开窗口的“标题栏”高度会有问题,如下图:

    attachment

    图中可见,标题栏的高度小于标签的高度。如果是手动打开一个新窗口,或者按右键选择“在新窗口打开链接”,那个新窗口则不会有问题。

    这个 bug 详见:Bugzilla@Mozilla – Bug 636951 以及 Bugzilla@Mozilla – Bug 625367

    从 bug 625367 可见,已经有了一个 patch 修复这个问题,不过由于是一个 soft block,所以 rc1 没有加入这个 patch,不过我们可以根据 patch 手工修复 Firefox 4。

    在 Firefox 4 安装目录中有一个 omni.jar 文件,它是 Firefox 最主要的部分。用压缩软件将它解压开,导航到这个目录:chromebrowsercontentbrowser,其中有一个 browser.js 文件,用编辑器打开,定位到 10186 行 -_-!,函数 allowBy,第10191行(第一个 if 条件为 true 的代码块)的 this._update(); 修改为 setTimeout(function (self){self._update();}, 0 ,this);,保存文件,重新压缩为 omni.jar,这个 bug 就修复了。

    希望这个 bug 的修复能包含在 Firefox 4 的正式发布中。

    这里提供两个已经修复的版本:

    For Firefox 4b12 Windows 32bit: omni.b12fixed

    For Firefox 4rc Windows 32bit: omni.rc1fixed