简单静态资源分发脚本
网站静态资源太多的情况下有时候我们需要分成多个域名来请求这些静态资源。 如原来我们使用的 http://static.ioio.name/upload/hello.jpg 改成随机的使用 http://s1.ioio.name/upload/hello.jpg http://s2.ioio.name/upload/hello.jpg http://s3.ioio.name/upload/hello.jpg 这时候我们需要将s1/s2/s3服务器上的文件跟源服务器static同步。以使得他们都是访问的static上同名文件的拷贝。 这里我写了一段简单的php脚本采用溯源的策略来更新这些文件,当s1/s2/s3服务器上不存在该文件的时候,就向源服务器(static)请求该文件,并且保存在本地cache一份以便后续的相同请求使用。 1.在s1/s2/s3服务器上添加名为cdn.php的文件,内容如下: <?php $path = $_GET["name"]; $filename = md5($path); $file = "save/".$filename.".data"; if(file_exists($file)){ header(’Content-type: ‘.mime_content_type($file)); echo file_get_contents($file); }else{ $content = file_get_contents("http://source.ioio.name/upload/".$path); file_put_contents($file,$content); header(’Content-type: ‘.mime_content_type($file)); echo $content; } ?> 这段脚本会将读取到的文件存在本地的save文件夹里,需要save文件夹的读写权限。 2.配置.htaccess文件,添加一行记录: RewriteRule ^upload/(.*)$ /cdn.php?name=$1 [L] 这样配置后s1/s2/s3就能按照static的路径规则访问到相同的文件了。在实际的生成环境,可能会需要更复杂的cache策略,这里就不深入讨论。 -EOF-
Object-Oriented JavaScript笔记(TBD)
第二章 基本数据类型、数组、循环和条件语句 变量是大小写敏感的 基本类型 基本类型(5类) Number、String、Boolean、Undefined、Null 除了基本类型外的,都是object,特例 >>> typeof null “object” Infinity是number类型的 >>> typeof Infinity “number” JS中最大的数是1.7976931348623157e+308 最小的分数是5e-324 非0数除以0得到Infinity,0除以0得到NaN 1/0 = Infinity 0/0 = NaN Infinity 与非NaN运算值为Infinity Infinity – 1 = Infinity NaN 与任何number运算值为NaN 一个String与一个变量做除’+’(加)以外的运算,都会转换成做数学运算 >>> var s = ’3′; s = 3 * s; typeof s; “number” >>> var s = ’3′; s = [...]
[CentOS]如何清空登陆历史记录(wtmp/btmp)?
在Linux系统中,可以使用last命令查看用户登陆成功的记录(Last Logged In Users);以及可以用lastb查看登陆失败的记录(Bad Login Attemps Log)。它们以文件形式(wtmp/btmp)存在/var/log/目录下,时间长了不免会变得越来越大,这时候我们需要做一些清理工作。 1.备份wtmp/btmp cp /var/log/wtmp ~/log/wtmp 2.清空wtmp/btmp 使用命令 cat /dev/null > /var/log/wtmp 或者 > /var/log/wtmp 上面的例子为清空登陆成功记录,将wtmp改成btmp即清空失败记录。 -EOF-
获得git版本库地址
有时候我们需要快速的确定当前版本库remote服务器的路径,以确定是否pull或push。 像svn可以使用: svn info hg可以使用: hg path 从而快速的获得远端服务器地址. 而git也不例外,它也有相关的命令,只是比较复杂一点: git config –get remote.origin.url 使用这个命令便可获得git库地址,虽然长点但有总比没有好。 -EOF-
JavaScript 模板存放方法小结
Web开发时常常需要在页面种存放JavaScript需要使用到的html模板片段,这里是我使用过的三种方式,欢迎补充。 1.使用隐藏的div存放 如放一段{{ mustache }}的模板: <div style="display:none;"> {{#items}} {{#first}} <li><strong>{{name}}</strong></li> {{/first}} {{#link}} <li><a href="{{url}}">{{name}}</a></li> {{/link}} {{/items}} </div> 刚做web开发那会常使用这种方法来放html模板片段,但这种情况下里面的内容会被页面解析,特别是当img标签在里面的时候,由于src还没有被赋具体的URL,浏览器就会向服务器发一条无意义的请求,导致服务器产生不必要的404日志。 2.使用隐藏的textarea存放 后来想了个办法,既然textarea里的内容不会被解析,那可以把模板内容放到隐藏的textarea里。 <textarea style="display:none;"> // template </textarea> 3.使用script标签指定浏览器不认识的type来存放 再后来,了解到浏览器当遇到不认识的script类型时就不会解析里面的内容,就慢慢习惯将模板内容放在script标签里,赋上一个浏览器不认识的类型(如: text/tpl),这样连display:none的也省了。 <script type="text/tpl"> // template </script> 当然,还有把模板压缩成JS字符串,使用一个js常量的来保存html模板。这种情况下一般需要借助外部工具来压缩成字符串,直接手工处理费时且容易出错。 -EOF-
