登录 |

foreach中unset引用元素?

2010年09月2日 上午 40:14 | 作者:hemon

  1. $array = array(1,2,3);
  2. foreach($array as &$value) {}
  3.  
  4. $value = 4;    //var_dump($array);
  5. unset($value); //var_dump($array);

array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
&int(4)
}
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(4)
}


foreach中unset引用&元素,只是unlink了引用(没收了变量的&)

gif2png sprite

2010年09月1日 上午 00:55 | 作者:hemon

动画图片一般都是使用gif格式,不过在游戏中,gif的帧率和播放速度就不太好控制了,解决办法就是使用png sprite(google
)技术,看图:


查看全文 »

Can nginx be used as a reverse proxy for a backend websocket server?

2010年08月27日 上午 11:31 | 作者:hemon

http://www.igvita.com/2009/10/21/nginx-comet-low-latency-server-push/

http://stackoverflow.com/questions/2419346/can-nginx-be-used-as-a-revers…

http://github.com/slact/nginx_http_push_module

启用open_basedir导致CURL失效的问题

2010年08月17日 上午 25:40 | 作者:hemon

  1. CURLOPT_FOLLOWLOCATION
    Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set
  2. curl_setopt_array()
    如果curl_setopt_array中包含CURLOPT_FOLLOWLOCATION键值,会导致所有options设置失败,让你感觉curl_setopt_array有问题,其实这个函数本身是没问题的。

强制下载文件,正确输出中文名

2010年08月16日 上午 30:25 | 作者:hemon

通杀浏览器:IE、Opear、webkit(Safari / Chrome)、Firefox

  1. function header_filename($filename){ // $filename 必须 UTF-8 encode
  2. $ua = $_SERVER['HTTP_USER_AGENT'];
  3. if ( strpos($ua, "MSIE") !== false ) {
  4. $encoded_filename = urlencode($filename);
  5. $encoded_filename = str_replace("+", "%20", $encoded_filename);
  6. header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
  7. } elseif ( strpos($ua, "Firefox") !== false ) {
  8. header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"');
  9. } else {
  10. header('Content-Disposition: attachment; filename="' . $filename . '"');
  11. }
  12. }

Crontab别忘了设置环境变量!

2010年08月7日 下午 31:08 | 作者:hemon

freebsd下,crontab未继承用户环境变量,需要在crontab头部加入PATH,HOME:

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
HOME=/home/zhangwei

* * * * * cd ~/script && php hello.php  #如果未设置HOME,那就找不到~,如果未设置PATH,就找不到php

腾讯-1亿个数取前1万大的整数-答

2010年08月1日 下午 11:31 | 作者:hemon

还是这位大爷牛:http://lanphaday.bokee.com/5145363.html

单机

1.先取10000个整数,从小到大排好序,形成一个有序队列Q[0~9999]。
2.然后取第10001个整数,是否比Q[0]小?
3.使用插入排序法(算法复杂度log2(N),二分法,10000个,找到自己的插入位置,需要查找14次::2^14=16384)插入到Q中。
4.剔除掉队列中最小的那个数Q[0];
5.重复2-4,直到1亿。

总的计算次数是:

10000 × 14+ (1亿-10000) × 14

14 × 1亿 ≈ 14亿

如果把队列Q增大为16384呢?貌似降低了后期排序的6384*14次计算,可是理论上时间复杂度没什么变化……

将Q增大为2^14,即Q[0~16363]

16384 × 14 + (1亿-16384) × 14

14 × 1亿 ≈ 14亿

随着遍历的进行,这个Q[0~9999]内的min最小数会越来越大,插入排序的概率也会越来越小。这个概率到底是多少呢?

分布式计算?

假设阁下有10000台机器 !

1.把1亿切分成10000×10000的分卷
2.在单台机器完成10000的快速排序(也可一边传输一边使用插入排序……)
3.在总机执行TOP10000的归并排序

1亿+网络传输(1亿)+10000×10000×14+网络传输(1万)+2×10000×14

1亿+14亿+28万+网络传输(1亿零1万) ≈ 计算(14亿零15万)+网络传输(1亿零1万)

快速排序的时间复杂度
最坏:N*(N-1)/2
最好:N*logN

归并排序的时间复杂度
N*logN

禁止选中

2010年07月29日 下午 37:46 | 作者:hemon

// ie
<script>document.onselectstart = function(){ return false; }</script>

// ff
<style>body{-moz-user-select:none}</style>

A*

2010年07月29日 上午 46:14 | 作者:hemon

A*寻路初探
http://blog.vckbase.com/panic/archive/2005/03/20/3778.html
在A*寻路中使用二叉堆
http://my.opera.com/jingze/blog/show.dml/434118

freebsd ports软件安装

2010年07月27日 下午 43:43 | 作者:hemon

  1. 进入ports目录
    cd /usr/ports
  2. 搜索软件
    make search key=[search software]

    Port: gmpc-libnotify-0.19.0_3
    Path: /usr/ports/audio/gmpc-libnotify
    Info: A libnotify for gmpc
    Maint: miwi@FreeBSD.org
    B-deps: ORBit2-2.14.18_1 atk-1.30.0_1 ……

  3. 进入path目录
    cd [Path]
  4. 使用sudo权限安装
    sudo make install