某人的栖息地

  • Links
Illustration of a bird flying.
  • 用mysql触发器自动更新memcache

    mysql 5.1支持触发器以及自定义函数接口(UDF)的特性,如果配合libmemcache以及Memcached Functions for MySQL,就能够实现memcache的自动更新。简单记录一下安装测试步骤。 安装步骤 安装memcached,这个步骤很简单,随处可见 安装mysql server 5.1RC,安装办法也很大众,不废话了 编译libmemcached,解压后安装即可 ./configure; make; make install 编译Memcached Functions for MySQL,在http://download.tangent.org/找一个最新的版本下载就是, ./configure –with-mysql=/usr/local/mysql/bin/mysql_config –libdir=/usr/local/mysql/lib/mysql/ make make install 接下来有两个办法让Memcached Functions for MySQL在mysql中生效 在mysql的shell中执行memcached_functions_mysql源码目录下的sql/install_functions.sql,这会把memcache function作为UDF加入mysql 运行memcached_functions_mysql源码目录下的utils/install.pl,这是一个perl脚本,作用同上一条 测试memcache function 以下测试脚本摘自memcached_functions_mysql的源码目录,有兴趣可以试试 drop table if exists urls; create table urls ( id int(3) not null, url varchar(64) not null default ”, primary […]

    July 9, 2008
  • 用firebug来调试actionscript

    往常调试actionscript,是用的trace,在flash debug player里头输出变量内容。今天看到的方法比较有趣,是利用javascript在firebug中输出as的调试信息。 用firebug调试as的基本原理 ExternalInterface.call(‘console.log’, “string is [%s]”, “abcde”); 利用as的ExternalInterface和js交互,然后调用firebug的console.log,将as的变量输出到控制台,这样也能达到调试的目的。 当然,要使用firebug,前提当然是你使用的firefox浏览器。如果是ie,那么只好使用alert弹出信息。

    July 3, 2008
  • diablo3终于是露脸了

    blizzard终于不再遮掩,即将发布的游戏的确是暗黑破坏神3.进入暴雪首页之后,就是这样一张大大的flash。 试玩视频中可以看到熟悉的野蛮人(但是已是满头白发),还是让人看着舒心的第三人称视角,这实在是太好了,babarian面对大群怪物,照旧是咆哮几下以壮士气,打击方式,仍然是傻傻的挥砍,还有跳跃攻击:) 目前可以确认一共有五种角色,公布了两种角色野蛮人以及巫医 barbarian 野蛮人barbarian仍然是强力的坦克兼近战输出角色,有部分技能沿袭了diablo2,比如跳跃攻击,现在的跳跃攻击看上去有群攻的效果,可惜攻击频率较低,还有野蛮人的终极技能旋风斩也没落下。在20分钟的试玩视频中,可以看到野蛮人新的远程攻击技能,以及类似魔兽世界中战士的冲撞技能。 Warlock doctor 巫医类似于前作的死灵法师,可以召唤傀儡攻击,但是攻击方式又不尽相同,傀儡似乎不仅仅是肉盾,还能被击破作为肉弹使用。另外一个没啥特色攻击技能就是抛火蛋,这个技能是不是法师丢出来更靠谱一些? 从暴雪官方的FAQ来看 所有的角色都可以选择男,女性别 前作中的部分角色会被延续 diablo3的最低配置以及价格尚未确认,要到发布前夕才会透露 将会尽可能的同时出各个语言的版本 除了可以上Battle.net联机游戏以外,也可以在局域网内和朋友一起游戏 diablo3讨论区 刚开始玩暗黑2的时候,我大概是20岁的愣头青。

    June 28, 2008
  • 在命令行里执行mysql的sql

    平常执行sql,需要登录到mysql的shell下,然后再执行。比如: $ /usr/bin/mysql -u root mysql> select * from users; 但是如果写一点简单的脚本,也可以在命令行下直接运行sql并显示结果,比如: $ cat executemysql.sh #!/bin/sh qry=$1; echo “Executing the following query” echo “$qry” mysql -u root

    June 23, 2008
  • Memcache的备忘

    把memcache使用时的一些细节记录下来. 用memcache保存session的例子,非常简单 <?php $session_save_path = “tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10, ,tcp://$host:$port “; ini_set(‘session.save_handler’, ‘memcache’); ini_set(‘session.save_path’, $session_save_path); ?> memcache每一个item上限是1M,注意不要超出上限 memcache本身并不支持namespace,但是可以通过一些手段模拟出namespace的效果来,见Memcache 中模拟 namespace 刚接触memcache的时候,可能会写出这样的代码来 $zhang = $memcache->get(‘key1’); $li = $memcache->get(‘key2’); $wang = $memcache->get(‘key3’); 这种写法实际运行效果是 get(key1) – 客户端发出请求 – 服务器端查询 – 客户端获取 get(key2) – 客户端 – 服务器端 – 客户端 get(key3) – 客户端 – 服务器端 – 客户端 … 如此一来,会有三次客户端和服务器端交互的过程。但是如果用批量查询的方法,就只有一次交互的过程。比如: $all = $memcache->get(array(‘key1’, ‘key2’, […]

    June 20, 2008
  • 图片预加载效果的实现

    使用picasa的时候,注意到它首先是显示模糊的图片,然后图片突然变得清晰,这样做有一定的好处——picasa的图片翻页是用javascript实现的,如果直接载入大图,中间势必会有个空档,用户在这中间会感觉很空虚~~ 于是我花了点时间,打探它的实现方式,发觉很简单,不是用的lowsrc之类的标记,而是简单的js。 代码示例 var img = new Image(); img.src = “http://imghost/big_640_480.jpg”; img.onload = function() { document.getElementById(‘myImage’).src = this.src; } 如此这般,待大图载入完成之后,利用js替换原小图的src,就完成了图片预加载效果。关键点是图片的onload事件利用。

    June 16, 2008
  • 用memcache.php监测memcache的状况

    最新的memcache pecl中,新增了一个memcache.php,这个php文件可以用来方便的查看memcache的状况,界面上与apc自带的apc.php风格一致。 如图: 应该算是最方便的监测memcache的办法了。 memcache.php源文件下载

    June 6, 2008
  • facebook平台真的开源了

    facebook平台开源了,这次开源的部分是API infrastructure, FQL parser, FBML parser以及FBJS。facebook真是超级彪悍,不需要解释。开放的很彻底,绝对步兵——无码。比某些公司口里喊着开放,实际上还遮遮掩掩要好上百倍。 正在下载中,呆会好好端详一下。 This release includes the API infrastructure, the FQL parser, the FBML parser, and FBJS, as well as implementations of many common methods and tags. We’ve included samples and some dummy data to help you get started fast.

    June 3, 2008
  • 查看xdebug profile文件的几个程序

    在优化php代码执行效率过程中,有个好办法是利用xdebug生成profile文件,然后查看整个程序的瓶颈在哪里。现在xdebug profile的查看程序有好几个,在这里罗列一下. Wincachegrind Wincachegrind是windows下的profile查看程序,使用起来感觉还不错,profile文件太大的话偶尔会崩溃。 今天在高春辉的博客上看到这些: 最近又开始拿 Xdebug 和 wincachegrind 对项目的 PHP 代码进行分析和优化,但是发现和自己输出的执行时间总是相差十倍,差的不是零头,而是十倍。 上网搜索了一下,原来在 Xdebug 2.0.0RC4 版本开始,对 profiler 日志中的时间单位进行了修改。 (“Use µ seconds instead of a tenths of µ seconds to avoid confusion in profile information. ”) 而 wincachegrind 又不再升级维护了,所以凡是用 2.0.0RC4 以及之后版本的 Xdebug 输出的 profiler 日志用 wincachegrind 来分析的话,都会有十倍的时间差距。 他已经提供了hack后的版本,可以解决时间差距的问题,有兴趣的同学可以试试。 CachegrindVisualizer CachegrindVisualizer是一个xdebug的profile文件查看客户端,采用Adobe的AIR制作。 更详细的介绍可以看以前写的关于CachegrindVisualizer的介绍。 Kcachegrind Kcachegrind是linux下的一个图形化profile查看工具,功能很强劲。 Callgrind uses runtime […]

    May 13, 2008
  • 如何避免使用php的require_once

    我们知道,在php中使用require_once/include_once虽然方便,但是代价昂贵,据测试数据来看,require_once比require慢3-4倍,所以在php开发中,我们应该尽量使用require/include。 列一下俺常用的避免require/include的方法。 使用__autoload php5可以使用__autoload来避免require,用的好的话,代码里头甚至看不到几个require,实在是安逸啊。测试结果表明,使用__autoload之后的new Foo; 比 require_once ‘foo.php’; new Foo; 大概要快3倍左右。 补充:为了避免autoload冲突,可以考虑使用spl_autoload_register(PHP 5 >= 5.1.2)来改变魔术函数__autoload的行为。 使用defined检测是否载入过 在代码开头使用defined检测是否定义过对应的常量,如果有的话,直接return。 <?php if(!defined(‘_MYCLASS_’)) return; define(‘_MYCLASS_’, 1); class MyClass { … } ?> 测试了一下,defined的性能也不是太好… require前检查 用class_exists或者function_exists检查一下,确认没有载入过再出手,至少比require_once能快上3倍。php4也可以用上。 class_exists(‘myClass’) or require(‘/path/to/myClass.class.php’);

    May 8, 2008
←Previous Page
1 … 4 5 6 7 8 … 11
Next Page→

某人的栖息地

Proudly powered by WordPress