<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.9.2" -->
<rss version="0.92">
<channel>
	<title>蓝色的华</title>
	<link>http://bluehua.org</link>
	<description>分享所学,backup一切~</description>
	<lastBuildDate>Sat, 06 Mar 2010 15:40:54 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>给图片定宽高减少reflow的一个想法</title>
		<description><![CDATA[近期的前端优化主要集中在提高渲染速度,回家在公车上想的一个方案:
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
页面渲染慢最重要的一个原因就是reflow, 而造成reflow的主要有两大块: 图片和javascript的dom操作,这里主要说图片.未指明宽高的图片,在页面dom渲染完毕时没有加载媒体时宽高是0&#215;0,当一张图片加载完毕,就不得不重新渲染图片宽高变化所影响的区域.
解决这个问题的最佳效果就是给每张图片定宽定高:

&#60;img width=&#34;300&#34; height=&#34;200&#34; src=&#34;abc.gif&#34; /&#62;

问题: 做页面的同学可以给自己切的图定宽高,但是用户上传的图片呢? 新鲜事里充斥了大量用户上传的图片~
参考解决方案:
这个方案的缺点就是需要一个良好的图片存储初期设计&#8230;
比如这是一个普通的图片上传后的地址

fmn041/20100302/2155/p_main_y8Hj_3b9e0000134b2d10.jpg

而这个方案需要在图片上传时就将宽度信息写到图片名称里,让使用它的cgi, httpd, javascript都能看名字就能知道它的三围

fmn041/20100302/2155/p_main_y8Hj_3b9e0000134b2d10_300_500.jpg

然后使用时就很灵活了

//对于新鲜事,使用自己的处理函数
&#60;img width=&#34;&#60;?php echo get_img_width&#40;$url&#41; ?&#62; height=&#34;&#60;?php echo get_img_height&#40;$url&#41; ?&#62;&#34; src=&#34;&#60;?php echo $url?&#62;&#34; /&#62;

而对于日志,帖子内容里的图片则需要输出过滤,给图片加宽高,或者是在发表阶段就通过js定宽高

//smarty里的输出过滤器
$smarty-&#62;load_filter&#40;'output', 'image_url_filter'&#41;;

cgi层过滤的话就不能及时flush输出,所以可以放到apache做http://httpd.apache.org/docs/2.2/filter.html
已有巨大量数据转换图片命名方案也是一件棘手的事&#8230;.
]]></description>
		<link>http://bluehua.org/2010/03/02/992.html</link>
			</item>
	<item>
		<title>一种字符串代替数组的场合</title>
		<description><![CDATA[曾经耍过一些小聪明,而且是相当然的,有人问我你做过验证吗,&#8230;.木有,然后也觉得自己很不靠普
下面是验证以前做一个选择器的时候用到的方法,主要是为了加速判断是否已选的操作

&#60;html&#62;
&#60;script&#62;
function ctime&#40;func&#41;
&#123;
    var s = new Date&#40;&#41;.getTime&#40;&#41;;
    func&#40;&#41;;
    return new Date&#40;&#41;.getTime&#40;&#41; - s;
&#125;
var time;
time = ctime&#40;function&#40;&#41;
&#123;
    var i = 0;
    astr = &#91;&#93;;
    while &#40;i &#60; 10000&#41;
    &#123;
       [...]]]></description>
		<link>http://bluehua.org/2010/02/25/982.html</link>
			</item>
	<item>
		<title>ie下暴力debug js</title>
		<description><![CDATA[ie下的脚本错误总是很神秘的样子,告诉你哪个行,确不告诉你哪个文件,Visual Studio带了一个调试工具倒是可以,long long ago之前用过一次,老崩溃的样子~
如果你又遇到了猜不透的bug,可以尝试下面的shell~

//现去firefox里收集一份js列表
var alljs = &#91;&#93;;
XN.array.each&#40;document.getElementsByTagName&#40;'script'&#41;,function&#40;i,v&#41;
&#123;
    if &#40;v.src&#41;
    &#123;
        alljs.push&#40;v.src&#41;;
    &#125;
&#125;&#41;;
console.log&#40;alljs.join&#40;'\n'&#41;&#41;;

把列表保存到一个文件,下面跑段shell,把所有js的报错位置的代码打印出来

// 10 100是ie里提示的错误位置
sh ~/bin/get_line.sh /tmp/jslist 10 100

附:

#!/bin/sh
LIST=&#34;$1&#34;
ROW=&#34;$2&#34;
COL=&#34;$3&#34;
&#160;
if &#91; ! -n &#34;$ROW&#34; &#93;;then
    exit
fi
&#160;
echo &#34;行:${ROW}&#34;
echo &#34;列:${COL}&#34;
&#160;
get_row&#40;&#41;
&#123;
    cat /tmp/js_debug_tmp &#124; sed -n &#34;${ROW}p&#34;
&#125;
&#160;
cat &#34;$LIST&#34; [...]]]></description>
		<link>http://bluehua.org/2010/02/25/976.html</link>
			</item>
	<item>
		<title>javascript做html字符串的截断</title>
		<description><![CDATA[2010.2.6 日修正
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
2010.2.3 日修正

&#60;html&#62;
&#60;!-- html字符截断第二版 bug修正 + 2.6日修正--&#62;
&#60;script&#62;
function sub_html_str&#40;str, num&#41;
&#123;
    var reg = new RegExp&#40; '&#60;[^&#62;]+&#62;' , 'g' &#41;;
    var rt, rts = &#91;&#93;, indexs = &#91;&#93;, tstr, endstr, rstr, sstr, endtag, rtstr;
&#160;
    //提取所有的html标签和标签在字符串中的位置 
    while &#40; &#40; rt = reg.exec&#40;str&#41; &#41; != null [...]]]></description>
		<link>http://bluehua.org/2010/02/01/927.html</link>
			</item>
	<item>
		<title>还原用户环境失败&#8230;</title>
		<description><![CDATA[话说昨天采集了用户的系统和软件信息,今天用虚拟机还原了一个,但是失败了,bug没有重现~
过程还是挺费功夫的:
首先用户用的番茄花园xp sp2, 虚拟机里用迅雷秒杀了,超赞公司网速~
Virtualbox里系统装好,下面就是比较头疼的,按照补丁列表打补丁&#8230;

hualu@lu-hua:patch$ cat /tmp/allsofts.txt &#124; grep -E &#34;\(KB[0-9]{6}&#34; &#124; sed -e 's/.*(\(KB[^)]*\).*/\1/' &#124; wc -l
138

软件列表里一共有138个补丁, 对着列表在360卫士里挨个找着选的话估计我这老眼就废了&#8230;
还是自己写脚本去微软下载

#!/bin/sh
&#160;
ID=&#34;$1&#34;
if &#91; ! -n &#34;$ID&#34; &#93;;then
    exit
fi
echo '-----------------------------------'
BASEURL='http://www.microsoft.com'
&#160;
get_first_link&#40;&#41;
&#123;
   cat &#34;$1&#34; &#124; grep &#34;Windows XP&#34; &#124; grep &#34;&#60;a&#34; &#124; sed -e 's/.*href=&#34;\([^&#34;]*\)&#34;.*/\1/' \
       -e 's/.*;u=//' \
    [...]]]></description>
		<link>http://bluehua.org/2010/01/29/914.html</link>
			</item>
	<item>
		<title>收集windows xp的系统信息</title>
		<description><![CDATA[最近又遇到了一个不是所有的IE6浏览器都会有的bug,于是今天去一个用户家里上门debug,这已经是第二次了,学乖了一点,提前查了以下收集系统信息的方法
1 . 主要信息
一个cmd命令就可以了

systeminfo &#62; system.txt

2 . 安装的所有软件和补丁列表
搜到一个老外写的vbscript脚本 : InstalledPrograms
恩,有了这两个列表,就可以用来重现一个用户类似的环境~
]]></description>
		<link>http://bluehua.org/2010/01/28/904.html</link>
			</item>
	<item>
		<title>ubuntu下mpd+mpc的安装配置</title>
		<description><![CDATA[今天大学的一个哥们说在ubuntu下面mpd一直配不好,俺就把俺的配置过程简单写一下
首先

sudo apt-get install mpd mpc

然后复制一份配置文件到自己的用户目录

cd ~
cp /etc/mpd.conf .mpdconf
#创建几个文件夹,后面用到
mkdir .mpd
mkdir .mpd/playlists

之后编辑.mpdconf,修改如下

#mp3所在的文件夹
music_directory		&#34;/media/data/music&#34;
#下面几个的user要替换成自己的用户名
playlist_directory		&#34;/home/user/.mpd/playlists&#34;
db_file			&#34;/home/user/.mpd/tag_cache&#34;
log_file			&#34;/home/hualu/.mpd/mpd.log&#34;
pid_file			&#34;/home/hualu/.mpd/pid&#34;
state_file			&#34;/home/hualu/.mpd/state&#34;
#替换成自己的用户名
user				&#34;user&#34;

除了上面几项,我还修改了下面几个配置,如果改完已上配置就可以运行就没有必要修改下面的了
我注释了下面这行,为了解决mpc报&#8221;unable to bind port 6600&#8243;错误的问题

#bind_to_address		&#34;localhost&#34;

声卡的配置我改成了下面,否则我用mpc调不了音量,而且有flash的时候会报&#8221;Failed to open ALSA device &#8220;plug:dmix&#8221;: Device or resource busy&#8221;

audio_output &#123;
	type		&#34;alsa&#34;
	name		&#34;My ALSA Device&#34;
        options &#34;dev=dmixer&#34;
	mixer_control	&#34;Master&#34;		# optional
	mixer_index	&#34;0&#34;		# optional
&#125;

配置完毕,可以使用了

#首次运行需要初始化一下
mpd --create-db
#把所有曲目添加到播放列表
mpc listall &#124; mpc add
#播放
mpc play

]]></description>
		<link>http://bluehua.org/2010/01/27/896.html</link>
			</item>
	<item>
		<title>准备做一个wordpress的离线编辑器</title>
		<description><![CDATA[2010.3.6 更新
由于最近的学习充电计划,这个东西暂时搁置了,现在已经可以自动保存了~
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
linux平台上一直没有这样一个所见即所得的blog离线编辑器,昨天试着用pyqt4写了一个小脚本,发现原来python做客户端软件是如此容易.然后下定决心要利用n个周末的时间自己写一个.
开始打算用纯qt的ui控件实现,但是感觉没有wordpress的编辑器这么亲切,于是想到一个界面亲切,实现也方便的方案: ui部分直接用web,框在一个pyqt的webkit组件里,逻辑部分用python的cgihttpserver在本地开一个cgi.
这个东西搞到今天雏形已经有了,可以实现跟wordress完全相同的书写体验.

顺带发那个pyqt的练手之作 :　emlreader.py 一个可以查看eml附件的脚本
]]></description>
		<link>http://bluehua.org/2010/01/24/886.html</link>
			</item>
	<item>
		<title>偶的mpd全局快捷键配置</title>
		<description><![CDATA[2010.1.27 更新
发现直接调用mpc next 切歌有时候会把mpd搞死, mpc pause;mpc next;mpc play;这么搞就没问题了&#8230;
mpc.sh.4
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
更新一个高级点的,使用zenity提示搜索

下载:mpc.sh.3
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
2010.1.19 更新
ubuntu.org.cn上开的帖子 http://forum.ubuntu.org.cn/viewtopic.php?f=21&#038;t=253241
更新下脚本:mpc.sh.2
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
换了好多播放器，最终还是回归mpd了&#8230; 配上快捷键和模糊搜索，好用多了。效果如下:
上一首,下一首可以使用notify-send提示

快捷键调出搜索框,跳转到某一首歌

配置过程如下，假设已经装好了mpd和mpc：
1 . 安装notify-send

sudo apt-get install libnotify-bin

2 . 下载一个shell脚本 : mpc.sh,将脚本解压到 ~/bin/ 目录
3 . 配置全局快捷键
可用命令如下

#停止
sh /home/yourname/bin/mpc.sh stop
#播放/暂停
sh /home/yourname/bin/mpc.sh toggle
#下一首
sh /home/yourname/bin/mpc.sh next
#上一首
sh /home/yourname/bin/mpc.sh prev
#弹出一个搜索窗口
sh /home/yourname/bin/mpc.sh popfav

偶的快捷键的配置

]]></description>
		<link>http://bluehua.org/2010/01/18/859.html</link>
			</item>
	<item>
		<title>google工具栏牛x的分享按钮</title>
		<description><![CDATA[偶火星了，更新了google的工具栏到7.0.20091216Lb1,发现多了一个牛x的分享功能。许多网站（包括renren）都提供了一个可以分享站外内容的书签，但是已经安装了google的工具栏，再开一个书签栏就太占地方了。这个按钮终于解决了这个问题，而且可以分享到n个站点。


列表里的人人网是我后来添进去的，默认列表里是没有的，一水的e文网站。工具栏还没有提供一个直接添加的方法，但是可以直接修改列表文件。列表文件位于：
~/.mozilla/firefox/这个目录名因人而异/GoogleToolbarData/components/share_providers.json

&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
补充：或直接找

cd ~/.mozilla
find ./ -name &#34;share_providers.json&#34;
#你会找到两个，覆盖我给的那个路径就可以

&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
可以直接下载偶修改好的文件：share_providers.json
曾经的分享按钮一直被冷落在菜单里：

]]></description>
		<link>http://bluehua.org/2010/01/16/842.html</link>
			</item>
</channel>
</rss>

<!-- Dynamic page generated in 1.272 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-11 17:01:09 -->
