技术笔记 — No comments
02
七 10
基本原理
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
随便写写 — 5 comments
24
四 10
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
读书笔记 — No comments
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
随便写写 — No comments
15
一 10
月初得了感冒至今咳嗽不止,感觉身体大不如以前。一直在阅读的某杂志主编,由于个人身体状况不得不离开他喜欢的岗位。
13号,带了好几年的眼镜摔坏了。下午笔记本和咖啡接触了,后果直接不能开机。
有些人为了看了场电影开始疯狂。
有些人已经用不同的方式开始悼念goolge。
我们的网络真的是开放的吗?
随便写写 — No comments
30
十二 09
Dreamhost虚拟主机服务过期,mysql数据都没有来得及备份。暂时借用同事的虚拟主机一用,原来才发现Dreamhost的速度原来如此之慢,而且又不便宜。
唉,又要重头开始新的blog。(话说这是第几次重头开始啊。。。)
明天就是2009年最后的一天了,疯狂的shopping night。希望能买到穿得下的衣服。