摘要:        
用过Editplus的同学基本都会对它的轻巧与强大赞不绝口。我这样用了3年以上的,早已是离不开它了。无论是在几万行文本里执行复杂正则替换;还是一次打开几百个文本修改编码;或者在结构层次很复杂的目录中批量查找,它都能轻松胜任。 但是这么好用的软件有一个我无法忍受的缺陷:自带的资源管理器非常难用,分开显示目录和文件,还无法同时展开多个目录。Editplus到现在还没支持真正意义上的插件,一直以来都很郁闷。 今天突然想到,自己实现个界面,树状结构显示目录,贴边显示在Editplus窗体旁,就能解决这个困扰我好久的问题。考虑到实现成本,打算用几年前接触过的C#试一下。还算顺利,现在已经实现一个基本可用    阅读全文
        
            posted @ 2012-01-11 10:57
ChaunceyHao
阅读(830)
评论(1)
推荐(0)
        
        
            
        
        
摘要:        
QuQuBlog相册中的图片列表,之前是把图片定高,容器定宽来排的。这样实现起来简单粗暴,但在图片大小不一,尤其是横竖图片混排时,竖着的图片两侧很空,不好看,还占地方。 最近,用了一种新策略来改进图片排列,效果大约是这样: 在各种分辨率下都是这样的效果: 列表左右两侧对齐; 每个图片容器边距一致; 图片定高,不压缩不拉伸,尽可能保证原本高宽比例。 点顶部导航中的“相册”或者点这里可以看到实际效果,想知道具体策略继续往下看。 每个图片容器都是绝对定位,hidden掉overflow;图片容器高度总等于图片高度,宽度和位置是在页面加载完和每次窗口resize时算出来的。计算的步骤如下: 首...    阅读全文
        
            posted @ 2012-01-11 10:57
ChaunceyHao
阅读(278)
评论(0)
推荐(1)
        
        
            
        
        
摘要:        
Web中的JS动画原理并不复杂,JK前些时写过系列文章《动画组件(wagang版)》,讲解帧动画的原理以及QWrap版的实现,偷懒直接贴过来: 我们把动画抽象一下,它由以下几个组成部分: 时长(dur),即动画播放的时间总长。 进度(per),播放的进度,在区间[0,1]之内。 帧间隔时间(frameTime),即多长时间播放一帧。 动画函数(animFun),它是每一帧的渲染函数。定时器每隔frameTime来调用一下animFun(per)。也就是说按进度播放一帧动画。这四个基本参数将动画抽象成为一个js类,系统的理解就是:“在dur时间内,每隔frameTime时间,播放一次animF.    阅读全文
        
            posted @ 2012-01-11 10:45
ChaunceyHao
阅读(173)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
之前写过一篇使用Flash实现本地存储的文章,介绍如何使用flash存储本地数据。这个方案用在早期IE下是非常合适的,我所在的项目一直在用。出于安全的考虑,我们需要在as代码里设置允许与flash交互的域名,也就是前文代码里的这一行: Security.allowDomain("*");//修改为自己的域名 以前,我是把需要交互权限的域名list编到as文件中,这个list很少需要改,所以一直也没什么问题。最近有意把storage组件放在QWrap提供下载,这个做法就不适用了。GitHub上有个叫SwfStore的同类组件遇到类似的问题,作者写了一段说明,挺有意思的: ==    阅读全文
        
            posted @ 2012-01-11 10:37
ChaunceyHao
阅读(482)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
QWrap是一个BSD协议下的开源JS框架,前身是百度有啊WED团队内部使用的BBlib。关于她的设计理念、核心架构,JK和月影两位同学的博客上有很多文章。这里我简单介绍下实际项目中,如何用QWrap开发组件。 动手之前,建议先看下这几十篇QWrap介绍,对QWrap有个全面的了解。然后,通过git获取JK分支的QWrap,或者从这里下载最新主干的zip包。QWrap官方版暂时还没放组件,我们先选择有组件的JK版,两者核心库是一致的。做完这些准备工作后,进入正题~ 我们来做一个价格筛选器组件。需求是:给定最小值和最大值,通过拖动两个滑块让用户直观地选择价格区间。效果图如下: 先不急着写,想..    阅读全文
        
            posted @ 2012-01-11 10:31
ChaunceyHao
阅读(191)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
大家都知道FaceBook发明了BigPipe,把页面分为多个PageLet来加载,让服务端运算与客户端加载并行进行,使得页面可交互时间往前提了不少。我这里不谈如何实现BigPipe,而是分析下FaceBook如何处理不支持JavaScript的场景。 对于不支持BP的浏览器,服务端必须一次生成所有HTML,每个模块用到的JS和CSS也需要合并。那怎么让服务器尽早知道客户端不支持JS呢?FaceBook的办法是在BP模式的HTML里加上了NoScript标签和Meta跳转: <noscript><meta http-equiv="refresh" cont    阅读全文
        
            posted @ 2012-01-11 10:01
ChaunceyHao
阅读(182)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
提供YUI2一样的静态方法库,同时又用所谓的Helper规范来做到真正的绝对静态,让组件开发者可以发布出无依赖的组件。 其中,组件无依赖化,也就是核心库定制这个特性,在某些场景下还是非常有用的。QWrap提供了相应的工具来实现,JK这篇文章有详细说明。只是这个工具藏得很深没多少人知道,好酒也怕巷子深~ 最近我在这个工具的基础上增加了代码选取的功能,一起再给大家介绍下。 首先,访问代码选取小工具页面。 第一步,选择要用到的方法。这 一步比较好理解,例如要用到数组迭代就选中ArrayH下的forEach,需要格式化日期功能就选择DateH下的format,依此类推。特别 的,Browser(浏览器    阅读全文
        
            posted @ 2012-01-11 09:56
ChaunceyHao
阅读(185)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
先来句题外话,最开始Ajax应该是用来特指用XMLHttpRequest传输数据这门技术,但就像最近大家把一切web新技术都归到html5名下一样,现在一切异步获取数据的手段都被人称之为Ajax。 由 于JavaScript同源策略的存在,跨域数据交互是个老生常谈的话题了。网上相关文章很多,不过随着时间的推移和浏览器的更新,一部分解决方案已经不 适用了,同时也出现了一些更好的方法。抛开纯服务器Proxy这种跟前端没什么关系的方案不说,这里简单总结下常见的其他几种方式。 JSONP JSONP 是最常见的跨域数据交互的方式,原理是html的script标签可以加载并执行其他域JS文件。站点B把要    阅读全文
        
            posted @ 2012-01-11 09:49
ChaunceyHao
阅读(371)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
今天看到某大牛之前写的某段代码里,用到了"| 0"这种写法将字符串取整。这本来没什么,很多人都这样做,但他那段代码里处理的是一个时间戳。如: "1325239449538" | 0; 结果是-1905444926,这显然不是我们想要的。这个问题产生的原因是:A | B是将A、B先ToInt32再运算,返回结果是32位符号型整数。只要A超过2147483647,也就是231-1,就杯具了。 另一个常用的parseInt函数也容易发生杯具,如: parseInt(0.0000001); 在大部分浏览器上,结果是1(新版firefox会得到0),这也显然不符合    阅读全文
        
            posted @ 2012-01-11 09:46
ChaunceyHao
阅读(169)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
首先看原理: a <= <random number>t1 http://a-doppler.facebook.com/test_pixel?HTTP1.0&t=1&size=0kt2 http://a-doppler.facebook.com/test_pixel?HTTP1.1&t=2&size=0kt3 http://a-doppler.facebook.com/test_pixel?HTTP1.1&t=3&size=0kt4 http://a-doppler.facebook.com/test_pixel?HTTP1.1    阅读全文
        
            posted @ 2012-01-11 09:43
ChaunceyHao
阅读(903)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
对于跟进用户反馈这个事情,再多说点。有时候用户在论坛或微博抱怨自己啥啥功能用不了,但这个问题没办法复现,也没有其他人反馈,要怎么解决呢?如果能联系到用户并且用户配合,能用上面的工具跑出结果来当然最好了;联系不上呢?那得从侧面下手: 如 果有截图,大概扫一眼可以排查样式是否加载失败和样式兼容性问题,也可以排查缺少字体、缩放文本、调整DPI等常见问题。有些截图还能看到当时使用的浏览 器,这就可以把问题定位到某个浏览器的某个版本。如果图上没浏览器,根据一些元素例如表单的默认样式差异,也差不多可以定位OS和浏览器类型。看截图还可 以判断页面内容是否加载正常,例如页面上空了一块,那就要考虑是不是Ajax    阅读全文
        
            posted @ 2012-01-11 09:43
ChaunceyHao
阅读(152)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
在代码层次上看,SinaCMS是使用C++编码的,模板取数据的时候则使用了perl脚本。SinaCMS里面频道、项目和模板是结合在一起的,他们三者的关系是: 1.一个频道就是一个项目,在数据库里面体现就是一个数据库,比如说新闻中心,对应一个名为news的数据库; 2.一个频道会有若干个模板,例如首页,新闻页,这些在数据库中体现为相关的表; 3.模板需要定义模板域,模板域有表单类型模板域(Form)和应用类型模板域(Application)两种类型,前者面向编辑的提供数据界面接口功 能,后者面向技术支持人员提供高级的二次开发功能。模板域在数据库中就是模板表中相对应的数据扩展字段,例如Form::    阅读全文
        
            posted @ 2012-01-11 09:26
ChaunceyHao
阅读(263)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
平时都用ubuntu,所以处理问题的时候经常都是想到linux下提供的程序。sed和awk是其中两个很强大的工具,用它们来作查找和替换非常方便。 以下是我最近使用过的几个实际例子 123456789101112#使用脚本中的$VERSION变量替换{VERSION}字串,注意这里得使用双引号sed -i "s/{VERSION}/$VERSION/g" $UPDATE_FILE#去掉含有updateKey的行sed -i "s/.*updateKey.*//" install.rdf#替换含有js/core.js?v=1234为<?php Html    阅读全文
        
            posted @ 2012-01-11 09:25
ChaunceyHao
阅读(273)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
昨天帮朋友处理一段文本正好用到了这个,记录一下。 12345678910var str = '<a href="http://google.com" target="_blank">google</a>123<a title="百度" href="http://baidu.com">baidu</a>abce<a href="http://msn.com" class="msn">msn</a>k    阅读全文
        
            posted @ 2012-01-11 09:25
ChaunceyHao
阅读(499)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
放在crontab中自动执行登录,有时候挺有用的。 1234567891011#!/bin/bash# cookie 临时文件COOKIEFILE=cookie_tmp.txt# 登录curl $LOGINURL -d"username=$USERNAME&password=$PASSWORD&autologin=1" -c $COOKIEFILE -sRESPONSE=`curl $UPDATEURL -s -b $COOKIEFILE |grep $USERNAME`TIME=`date +'%Y-%m-%d %H:%M:%S'`echo    阅读全文
        
            posted @ 2012-01-11 09:21
ChaunceyHao
阅读(345)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
劣质电脑椅是办公室的头号杀手,它正在悄悄地谋杀你。如果每天在电脑前工作超过十个小时,那么不出两三 年,腰背和颈椎就会出现不同程度的疼痛。慢性疾病都没有特效药,想通过休息一段时间或采用某种偏方来治愈,是不可能的事情。因此为了对自己的身体好一点, 几个月前就有添置一把人体工学椅的计划,并开始寻找最好最合适的产品,以下是最后确定的备选方案。 一、美国赫曼米勒(Herman Miller) Aeron和Embody Aeron被誉为” 人类有史以来最健康舒适的工作座椅”,由赫曼米勒公司两名顶尖工业设计师Don Chadwick和Bill Stumpf联手设计了这部神作,从1994年推出一直到现在都..    阅读全文
        
            posted @ 2012-01-11 09:20
ChaunceyHao
阅读(2036)
评论(1)
推荐(0)
        
        
 浙公网安备 33010602011771号
浙公网安备 33010602011771号