02
七 10

Nginx给图片加上访问时间限制

基本原理

ngx_http_secure_download_module的wiki.

PHP

$prefix = "image";
$timeToHex = sprintf('%X',(time() + 3600));  //过期一小时
$privateStr = long2ip(ip2long($_SERVER['REMOTE_ADDR'])); //不同IP不能访问
$imagePathToMd5 = md5('/'.$prefix.'/'.$imagePath.'/'.$privateStr.'/'.$timeToHex); //生成唯一标示
return sprintf('%s/%s/%s/%s', $prefix, $imagePath, $imagePathToMd5, $timeToHex); //返回图片url

10
六 10

Chris的广告征选

照片:

视屏:


24
四 10

Ruby 二分叉查询

class BinarySearch
  attr_accessor :needle, :haystack

  def initialize(needle, haystack)
    @needle = needle
    @haystack = haystack
  end

  def in
    min = 0
    max = @haystack.size - 1
    while min <= max
      mid = min + ((max-min)/2)
      if @needle == @haystack[mid]
        return true
      else
        if @needle < @haystack[mid]
          max = mid -1
        else
          min = mid + 1
        end
      end
    end
    return false
  end
end

require "test/unit"
class TestBinarySearch < Test::Unit::TestCase
  def testSearch
    search = BinarySearch.new(7, [1,2,5,7,9,10])
    assert_equal(true, search.in)
  end
end

12
四 10

<<重构>>读书笔记(一)

重构第一步

为即将修改的代码建立一组可靠的测试环境 。

第一个案例

Extract Method – 提炼函数,把过长的代码分割成较小块的代码放入合适的class内 。

Move Method – 搬移函数,把代码拷贝到比较适应的class内。

Replace Temp with Query  – 用查询式替换临时变量,从而去除临时变量。

运用多态取代条件逻辑

Replace Type Code with State/Strategy – 用State/Strategy代替型代码,步骤:

  • 使用Self Encapsulate Field, 封装type code (get/set)。
  • 为type code新建class, 并且以type code命名,即state object。
  • 新建sub classes继承state object。
  • 使用Move Method,调成代码至合适的类中。
  • 使用Replace Conditional with Polymorphism,去除switch

15
一 10

2010不好的开头

月初得了感冒至今咳嗽不止,感觉身体大不如以前。一直在阅读的某杂志主编,由于个人身体状况不得不离开他喜欢的岗位。
13号,带了好几年的眼镜摔坏了。下午笔记本和咖啡接触了,后果直接不能开机。
有些人为了看了场电影开始疯狂。
有些人已经用不同的方式开始悼念goolge。
我们的网络真的是开放的吗?


30
十二 09

忘记备份博客数据,杯具啊!

Dreamhost虚拟主机服务过期,mysql数据都没有来得及备份。暂时借用同事的虚拟主机一用,原来才发现Dreamhost的速度原来如此之慢,而且又不便宜。

唉,又要重头开始新的blog。(话说这是第几次重头开始啊。。。)

明天就是2009年最后的一天了,疯狂的shopping night。希望能买到穿得下的衣服。