2010 年 04 月

浏览模式: 标准 | 列表 | 图文
思考:内部博客历史上的今天

思考:内部博客历史上的今天

我这里说的历史上的今天并非网络上那种把几千年几百年的事情显示的那种历史上的今天,我说的是当某一个网站建站时间长后,数据量大的时候,可以开始考虑把前几年同一时刻发表的文章列出来。

我对于这个想法,在考虑用yii重构的时候就想过是否要加这个功能。虽然说这是画蛇添足,但在自己看自己的文章时,看到一年前两年前的文章时,你也可以了解到自己的思想到底有没有进步。去年这个时间你是在写一些垃圾,还是在写一些精华,现在呢?还是垃圾又或者已经进步了?

但,说白了,这个玩意对于其他浏览的用户来说,真的没有什么特别的意义,相反还会有反感,我为什么要看你一年前的东西,我关注是当前的内容,如果对于当前的内容有相关的资料,那还可以值得考虑一下。所以TAG相关文章就很容易被点击。

所以,历史上的今天对于增加内链是有好处的,但不是特别建议推广。我的思考是做类似于widget之类的功能放在内容页【并非一定】。

相反,我对于TAG有新的要求,一个网站,尽量不要超过200个TAG,最好都是一些有效TAG,否则一定会让人迷惑。或者说,其实你的网站也很乱,内容越杂,TAG也才会越多。当你精确于某几件事情,你的TAG应该是相对集中的。

wordpress的TAG表,设计的非常有意思。考虑过使用。crc和crt,如果真重构了,应该会用到。

Facebook新开源项目Flashcache:加速MySQL

Facebook新开源项目Flashcache:加速MySQL

Facebook发布了通过将数据缓存在SSD硬盘加速MySQL的内核模块Flashcache。代码已经放到Github上,目前只测试了Linux kernel版本2.6.18和2.6.20。
Facebook 称,Flashcache是其内部开发用于帮助扩展InnoDB/MySQL数据库,但同时Flashcache也是作为一个通用的缓存模块设计的,因此 能用在任何搭建在块设备之上的应用程序。

对于InnoDB,当工作集不与 InnoDB缓冲池一致,由于更多的工作集缓存在快速的媒介如固态硬盘上,将能显著的改进读取延迟。

--EOF--
没有测试,也无法测试,毕竟我没有SSD硬盘。纯新闻http://www.cnbeta.com/articles/109988.htm,突然发现,原来cnbeta的文章已经11万左右了

Kmeans算法

Kmeans算法

做电子商务的不可避免的都会遇到价格区间的问题。这,主要显示在搜索的时候,如果你区间设的过大,那几乎把所有产品都列出来了。那和没有分区间没啥分别。因此,还真有一种算法可以解决这个问题(当然也只是基本解决,看上去不是特别的乱而己)。

这是在老王的博客上看到的:

means算法

Web开发中,CRUD做多了难免厌烦,其实还有很多细节可以挖掘,比如很多电子商务网站上都有商品价格区间,都是诸如1000-2000,2000-3000之类定死的,而没有按商品自己的分布规律来划分,此时有一种名为Kmeans的算法可以使用,效果很好,网上有很多现成的代码可以参阅,比如PHP的版本:

kmeanspp
K-Means Clustering in PHP

--EOF--

到百科看了一下,这么解释K-means:k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。

虽然这样能够处理,老王也给了一个PHP的解决方案,但在实际中,应用的范围并能算是特别大,有时候还是直接手写的。以前的时候,我们是在分类里,直接把几个区间定义好,然后在搜索的时候指定某一分类时,自动调用这个区间。理由是,如果你的产品分的很散,从几块到几千块的都有,这种分类区间,就只能定义到分类上了。

不过上面的算法可以学习一下

犹豫:是否采用Yii把sablog重构

犹豫:是否采用Yii把sablog重构

一直在犹豫,是否要重构sablog,还是说仅仅把前台的模版系统重构一下就完事。

曾经想过是采用thinkPHP或者fleaPHP(用不惯Qee),但后来有各种各样的原因,导致就没有重构。

现在,文章数据也多了,有2年的数据了,也因此想要增加一点新功能,所以就在想着是否要重构一下。否则新功能加起来就很繁琐。

同时还要考虑一下模版,因为现在的模版太挫了,很多广告位都无法设定好,不是在顶部就是在侧部,根本没有人想点,如果在中间,或许点击的次数会多一点?

当然,我需要考虑的是缓存,一直以来sablog都是用的自带的文件缓存,虽然文件数量不大,但总也占着资源,为什么不把APC开启并使用呢?呵呵。。。

可是我还要考虑的是我原先博客里的代码高亮,虽然有想过要换到synaxhilight上面,但原来的数据怎么办?我总不可能一个个的改吧?

再然后就是,如果是换系统,那又得考虑数据迁移了,现在这样的后台,我还能够接受。一旦换系统,后台我还不一定能够熟悉呢。

最后,同一文章存放多个分类。。。【被朋友说话打断了,郁闷】

反正,就是一想法。

感慨:别把用户当傻子——写给那些Nokia黑

感慨:别把用户当傻子——写给那些Nokia黑

本文标题所涉及的文章是一篇软文,从文中的内容其实完全可以证明,特别是最后一段话:

一个摘自某IT网站的手机品牌排名:1. 诺基亚 2.三星 3.摩托罗拉 4.索尼爱立信 5.LG 6.苹果 7.魅族 8.夏普9.联想 10.多普达
知道多普达大约是在03年?那时候《英雄》电影刚刚出来,然后多普达的广告拼命做,手机中的英雄。从那之后就知道了,也确实从那之后才知道,原来手机可以这样玩。

再一样那时候的诺基亚6100?(不记得是不是这个型号了,就是传说中的小胖)最早的S40,用了多普达再用它,是绝对受不了的,因为响应非常慢。

其实我倒不是说SB不好,至少我在用索爱M608的时候,对于上面SB系统我还是很满意的,当然也可能是索爱功力深。

从01年到现在,我用过的手机不算太多,但也涉及多个品牌:从最初三星的N188,到索爱T618(为民族大团结而奉献),爱立信T39,诺基亚3100,诺基亚6???(不记得啥型号,在华师大后门买的,三个月就坏了,然后修了两次就被我扔了。)诺基亚ngage-QD,多普达586W,索爱M608,然后就是现在用的这个G2了。

用的最舒服(操作感)的就是多普达586W,索爱M608C,G2,最最爽的就是现在的G2,然后是M608,再然后是586W,因为586W的摇杆让我的手指在长时间操作后很疼,其他都挺好。M608是因为不支持edge才被我抛弃。G2目前为止,灰常满意。

上面提到的那个文章被人也痛批了,估计大概意思是:

楼主作为NOKIA的内部从业者,忍受了这么多压力,发泄一下也是可以理解的。只是你不要以为众人皆醉我独醒。至少我所见过的ITer们上至部门总管下至工作人员,没有几个用NOKIA的。我自己在高校做手机研发。我实在看不出NOKIA好在哪里。之所以中国那么多人用,是因为中国大部分人的要求很低,功能多不多无所谓,只要耐用就行。大部分人买NOKIA也是冲着他瓷实才买的。但是,君不见现在农村市场也是山寨机盖过NOKIA的势头了么?300块一个山寨机,还带触摸屏。就是一年换一个。三年也就900块。而且每月还有话费赠送。你900块的NOKIA能买个什么货?没有性价比,迟早完蛋。LZ88。不送!
很明显,这篇是针对Android系统的,虽然提到了其它的,其实都只是为抹黑Android作铺垫罢了。。。估计发文者应该与诺基亚Symbian有关。Android现在非常红,联想,魅族都要用Android系统。。Symbian太差,可能被老总骂了,于是在网上发泄。发文者说别人喷诺基亚,其实别人没喷诺基亚,倒是作者在喷别人。。还有一处非常搞笑,“只有你们这伙自以为是的ITer才会干这些浪费生命的事情”其实发文者又何尝不是在自己在骂自己呢。。。。自己打自己的嘴巴。。。
初期的挪鸡鸭确实很不错,但自从进入彩屏时代开始,挪鸡鸭就开始吃老本了。屏幕烂,智能机响应慢,质量开始下滑。作者感觉只不过是一个用手机没几年的小孩,商品排名是有惯性存在的,moto在崩塌之前的几年不也是市场大牛,以前的爱立信也曾经强壮过,现在强不代表将来也强,如果一直依赖旧有口碑做买卖而不思进取,被淘汰只是迟早的问题
果然是有钱没文化就用XXX。。

Zend Studio 7.2 Released

Zend Studio 7.2 is Here!
PHP Troubleshooting Made Easy.


Save time and troubleshooting hassles with a better, faster way to diagnose and resolve PHP issues. Zend Studio's new integrated viewer opens code trace files captured by Zend Server in your production environment, so you can quickly pinpoint functional errors or performance slowdowns.

Why is this a big deal? Zend Studio 7.2 eliminates the tedious process of trying to reproduce the production environment and recreate problems, a challenge that is compounded when you can't access production servers.

Download
Zend Studio 7.2

说实话,我不是特别喜欢它,因为他太大了,但是他又是php集成的最好的一个IDE,而且可以很细的指定任意一个文件的编码,使得你在有多编码的环境下作业时,不用过多烦恼,其他的IDE都只能指定项目编码不能指定单独文件的编码。这个,我真的很喜欢。

PHP的debug功能,我就一直没有使用成功过,phped的,netbeans的,包括这个zde的,我就不多做解释了。好象zendstudio.net上面有教你怎么配置,反正我是一次没有成功过。郁闷,可能是人品不好?


Wordpress自动升级和plugin插件更新的问题

Wordpress自动升级和plugin插件更新的问题

为了文章中所说的问题,我删除了我VPS上的wordpress。如果早知道这个问题,我就不会换了。不过,想想WORDpress在那么小内存的VPS上跑,也会很痛苦吧?所以还是让他跑跑一些简单的内容就完事了。原文在http://www.jefflei.com/post/884.html

--START--

Wordpress2.7的一键自动更新很好用。可是在使用Wordpress插件自动更新和安装时,有时发现需要提示输入ftp信息:
FTP Connection Information
Host:
Username:
Password:

这是Wordpress的一个bug,在某些文件系统上有问题从wordpress2.5到2.7都一直没有更新,在国外网站上查了下修复方法如 下:

1. 编辑wp-admin/includes/file.php找到以下这行
if(getmyuid()==fileowner($tempFile)){
把这句中把getmyuid改成posix_getuid

2. 完成以上修改应该不会再要输入ftp信息了,但是有时候会告知目录不对,在wp-content目录下建立upgrade目录
chown www:www wp-content/upgrade
chmod +w wp-content/upgrade

做完以上设置应该就可以自动更新了。

--EOF--

根据我的估计,有两个人可能会用到这个,虫少侠(http://enjoyphp.com)和拉拉(http://www.ifotos.net)。我想,他们两个看到我这篇博客的时候,估计会感动的帮我点广告的吧?

linux命令行抓取网页快照 -(xvfb+CutyCapt)

linux命令行抓取网页快照 -(xvfb+CutyCapt)

一直以来对于网页缩图,我都是想着用网上现成的工具来解决,网上也有很多网站提供类似服务,其实我也想做这样的功能,但PHP默认的功能只在windows下面才有,系统有一个默认的函数支持网页缩图的。
网上找了找资料,发现linux server下也可以达到这个效果。嗯,是利用xvfb模拟x server,然后利用cutycapt(一款利用qt框架开发的截屏程序)截图,可以存成PNG和JPG等多种格式的图片。

方法有点简单,我是说在ubuntu下面。直接:

apt-get update
apt-get install xvfb
apt-get install subversion libqt4-webkit libqt4-dev g++
svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt
cd cutycapt/CutyCapt
qmake
make

操作完后就可以调用命令行截图了。

xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=http://www.zol.com.cn --out=test.png

截下来你会发现,图片中的中文是乱码,就象这张<<-点击看大图
然后安装中文字体,最简单的办法就是从windows拷一些ttf的文字到/usr/share/fonts/truetype/目录下。
然后再截图就是现在这样了

参考:http://blog.saymoon.com/2009/11/take-snapshot-in-linux-command-line/

PS:过段时间可以尝试考虑用接口+队列,生成相应的命令,然后用shell调用命令行。逐步运行,生成缩图,只是生成的缩图都较大,不敢自己做这样服务,硬盘估计很容易就会满了。

我在VPS上面无法运行xvfb,可能是虚拟机不支持x-server模拟?妖了。。。

用按位或操作将 浮点数 转成 整数

看到一篇文章,是这样说的:

use bitwish Operators "|" Convert a floating-point value to an int
意思就是:
由于位操作只对整型才有意义,所以表达式中的浮点数会首先被js解析器转换成整型.
然后再用js解析器本身的语言(例如:c++)的或操作将算 运符两边的数值运算,所以该例的结果得到整数1.
alert(0|'123.55');
alert(parseInt('123.55'));
alert(Math.round('123.55'));

上面三种都可以转成int,但是math.round会四舍五入。

javascript:void(0);

我看的这篇文章介绍的很少,只是一个简单的说明,在网页中,很多人把void当成了一个阻止默认事件发生的工具,因为他没有返回值,所以使用的时候可以肆无忌惮一点。

原文如下:

Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
注:expression 是一个要计算的 Javascript 标准的表达式,圆括号是可选的。

当使用 void 操作符指定的超链接时,表达式会被计算但是不会在当前文档处装入任何内容。

举例:

<A HREF="javascript:void(0)">单此处什么也不会发生</A>
<A HREF="javascript:void(document.form.submit())">单此处提交表单</A>

跳转的几种办法:

1.window.open("url")

2. 用自定义函数
<script>
function openWin(obj,target,args)
{
obj.target="_blank";
obj.href = target+"?stationno="+args;
obj.click();
}
</script>

<a href="javascript:void(0)" onclick="openWin(this,"…………",3)">XXXX</a>

3.window.location.href="";

上述第二种就是所谓利用void来阻止默认链接事情的发生。
还有一种情况就是在href里加入"###",即href="###",为什么是3个而不是一个?这也有一个缘故,请查看:FORM不能跳转,当找不到相应的锚点时,页面才不会往上滚动,如果指定锚点,而锚点名称为空,页面会滚动到顶部。###,其实只是指定一个不存在的锚点而已(又写的乱了)