friendfeed

friendfeed

今天是FriendFeed爆发日。经历了几个月的测试以后,这个由数名Google的前员工组成的团队开发的聚合服务获得了500万美元的融资,并开始开放注册。

FriendFeed是一个在朋友之间交流各自最新在线活动的一个平台。它可以把用户所使用的网络服务的更新内容同步并聚合在一起。你只要在FriendFeed上添加你感兴趣的好友,就可以随时看到他们所更新的活动。我们也可以对这些朋友的每一项更新进行评论和收藏。FriendFeed已经内置了20多种常见的服务方便用户进行添加内容。

乍一看起来FriendFeed和其它LifeStreaming的服务貌似没有多少区别,但是通过一些细节就可以看出FriendFeed可以作的事情更多。你可以对你朋友的所有活动进行评论和收藏,而你所作的这些评论和收藏的数据都将被FriendFeed记录和分析。

通过这些记录和分析,FriendFeed提供了一些非常有趣的功能。它的统计功能可以帮你找出哪些人对你的内容感兴趣,而你又对哪些人的内容感兴趣;也可以看出你以及你的朋友使用哪些服务更为频繁;FriendFeed的推荐功能可以给你推荐你可能感兴趣的人;你甚至可以用你感兴趣的内容来虚拟出一个你感兴趣的人物。

FriendFeed的高明之处在于:它的初始用户数据来自于用户已经熟悉、且已被广泛使用的发布平台,不用担心内容的匮乏;而用户间的互动又需要在网站内完成,为数据的分析提供了便利;而数据的分析可以帮助用户更好的拓展和改良自己的朋友圈子,获得更有价值的内容。

所以说FriendFeed是一个可以跟踪你朋友所发布在线内容的平台。而这些朋友,可能来自现实生活,可能是和你有相同的爱好,可能是你感兴趣的人,甚至是一个虚拟的人物!

(转自http://webleon.org/2008/02/friendfeed.html)

tinyMCE 编辑器支持 iframe

今天同事问我tinyMCE编辑器能不能插入iframe,我也不是很确定,后来分别Baidu和Google了一把,得到了答案: tinyMCE 编辑器支持 iframe。

做法:只要打开tiny_mce.js(这是删除了换行的版本,源码在tiny_mce_src.js) ,找到valid_elements,在定义的字符串后面加入iframe[src|width|height|name|align]就可以了。

然后刷新浏览器,注意要用Ctrl+F5刷新,否则浏览器会加载缓存过的js。

也可以在html调用 tiny_mce.js的后面加上一个版本号,如tiny_mce.js?ver=leakon。

说点题外的,Baidu的英文搜索,相关性还真是差得远远的。

我要查标题的结论是否正确时,分别在两个浏览器输入了tinyMCE iframe,大家自己看看,百度都是什么样的搜索结果,再看看google,第一条就是我想要的,而且还解决了我的问题。

我现在做Symfony开发,这个框架在国外很火,论坛也很多,可惜在国内很少有相关内容。用Baidu是没办法了,Google帮我解决了很多问题。

赞一个~~~

虚拟主机 SSH

问题由来:

我买了美国的虚拟主机,机器性能很好,空间巨大(150G) ,唯一的也是最大的问题,就是访问速度慢。

其实服务器本身至少能保证3M的带宽,我用其他服务器,单线程wget美国主机的文件,都可以稳定地保持在300K/s以上。

但用浏览器访问,由于需要发起多次tcp连接,而每次连接只传很小的几k文件就立即断掉,所以很慢。

最让我抓狂的就是,我上传一个软件包,总大小也就4、5M,但文件数量特别多,至少有几百甚至上千,传这么一个文件夹,没有2小时根本完不了。

我就想,如果虚拟主机有命令行,可以执行压缩或解压命令就好了。

传单个文件,再慢,也能保证每秒50K,像这样几M的文件,几分钟就可以搞定。

但如何解压呢?

答案就是:web版的命令行工具。

最简单的,就是system或exec函数,可以像SSH客户端一样,执行我们想要的命令。

注意,有些虚拟主机限制执行system和exec这两个函数,但我做了测试,证明是有其他方法的,一会儿再说这个方法是什么。

请您看到这个方法后,不要大肆宣传,或利用这个方法做一些危害主机安全的操作。如果这个方法也被禁用了,那以后就再也没有类似的方法了。

有了web的ssh,我们该怎么用呢?

1、首先要有清晰的unix文件的路径知识,知道什么是绝对路径,什么是相对路径,如何引用一个路径,等等。因为web版ssh只能方便地在当前一个目录下操作,稍有不慎,就可能造成无法挽回的后果。

2、学会使用ls、df、du、cp、mv、tar、zip等常用命令。使用web版ssh的出发点,就是希望以后在上传或下载文件时,可以预先打包,然后只传一个文件,这样可以大大减少传输时间的浪费。因此,列出目录、复制、移动、压缩和解压,就是必备的命令工具。

3、web版ssh还有一个功能,就是可以执行命令行的MySQL!!!最近我刚试着迁移discuz论坛,俗称论坛搬家,就是把论坛从A服务器迁移(搬家)到B服务器,重要的过程就是dump数据库,再import。而传统的工具,只有phpmyadmin,导出sql文件到还容易,但导入到另一个服务器,尤其是导入到另一个虚拟主机的时候,会受B主机的上传文件大小限制,大文件没法导入。还有,就是我遇到的乱码问题,由于B主机的大小限制只有2M,我的sql有5M,没办法,只能先压缩。import的时候,没有出错,但是导完发现都是乱码。A服务器是utf8,B是gbk。import的时候,本来import时选择了utf8编码的,但貌似对zip压缩的sql文件无效,最终是按gbk编码导入utf8的sql文件,这必然是乱码啊,结果就是论坛变成“蝌蚪文”。逼得我没办法了,只能开发一个web版ssh工具,最后用 mysql –default-character-set=utf8 -uleakon -pleakon leakon < leakon.sql 这个命令行才成功导入。这回,导入过程快多了,瞬间完成,不必再等着phpmyadmin上传本地sql文件。这一切,多亏了我的ssh工具,也就是本为的主角:web_shell。

按说这不叫ssh,只是一个web的命令行转发函数,但为了大家搜索虚拟主机ssh的时候能方便一些,就故意写了好多ssh。

大家可以看看国外的虚拟主机,大部分都支持ssh,而且……

唉,我都不想重复这些了,国外主机的优势,真不是国内idc服务商们可以比的。国内用最烂的服务、最烂的技术、最烂的界面来提供的虚拟主机,价格却是国外的好几倍甚至几十倍。价格我真不想再说了,反正最贵的都比国内最便宜的便宜好多好多,而且服务好得更多。

跑题了,回来说我的web_shell。

这是我简单开发的一个辅助工具,专门解决我上文提到的各种问题,加了一个简单安全验证,文件放在服务上,别人无法使用,只有你自己能用。

源码在我的GoogleCode里可以找到,地址是:

http://leakon.googlecode.com/svn/trunk/leakon/php/web_shell/web_zip.php

现在充其量是alpha 0.0.0.1版,里面还有一大堆debug的注释,本来还想加入一些新功能,但没那么多时间,先解决眼前的问题吧。

使用的时候,需要自己写一个web_inc.php,里面只要定义一个AUTH_KEY就可以了,这是你的密钥,只有知道密钥的人才可以使用这个web_shell。

默认的密钥,我是用一个字符串加当天日期的md5写的,如何快速计算一个字符串的md5呢?我早就写了一个工具,也许大家都没注意过,我就再发一次吧:

http://code.leakon.com/php/tools/

可以做一些简单的编码、解码计算,很好用哦。

源码也在googlecode里,大家自己找吧。

盼望得到您的指点或回复,谢谢!

另,php本身还有一个popen,也可以执行命令,一般的虚拟主机都没禁用,还是那句话,请慎用,要是用烂了,以后也就没得用了。

两个注册机

PhotoShop CS 9:

http://down.leakon.com/software/2008/04/Photoshop_cs_9_genkey.exe

光影魔术手nEOiMAGINGV0.25注册机

http://down.leakon.com/software/2008/04/nEOiMAGINGV0.25_KeyGen.exe

Symfony Helper select_tag

我们做数据库设计时,会用数字标记某条记录的状态。最简单的例子,一个 gender 字段,是 tinyint 类型,用 1 代表男性,2 代表女性。

在设计 html 页面编辑这条记录时,我们总要写好多 html 代码,很麻烦。

用 Symfony 的 select_tag 可以非常方便地帮我们完成这些复杂的工作。

下面介绍一个实例。

有一个项目,需要提交问题处理记录,表单有一项“优先级”,分为 6 种级别,希望可以用下拉列表进行选择。

select_tag.png

详情请见:

http://wiki.leakon.com/SymfonyHelper-select_tag

PHP 函数调用的开销

处理大量数据,每个关键词有5000条数据,一共有50万个关键词。

要对每个关键词的每条数据进行加权处理。

写了一个加权函数,作为一个类的静态方法。

遍历这50万个关键词的数据,结果非常慢。

考虑问题原因,尝试把加权函数的逻辑拆出来,放到大循环中。

写了测试代码,结果性能提升非常明显。

调用类的静态方法,程序性能是 156 次/秒,而拆出逻辑,直接运行,性能是 625 次/秒!

速度是原来的 4  倍多!

Build FreeBSD Installation CDs To One DVD

本文分别以 Windows 平台和 Linux 平台描述了如何把 FreeBSD 的多张安装 CD 合并为一张 DVD。

Windows Platform

Windows 平台

通常需要CD2、CD3的情况是在安装CD1上的package时需要安装CD2上的某些package才会被用到,并且安装期间很容易出现频繁的置换两张CD。

所以得出一个简单的、为了实现方便安装package的、制作单张FreeBSD DVD的方法:

制作平台是Windows + UltraISO => Freebsd 7.0。

其实可以用任何编辑ISO的软件,如果配合一个虚拟光驱来测试镜像,制作起来会更方便些。

步骤:

1、将CD2、CD3中的packages文件夹完整的复制到计算机硬盘的一个临时位置;

2、编辑刚复制到硬盘的packages文件夹中的INDEX文件,CD1和CD2、CD3的是同样的内容,编辑一个就可以了,这个是关 键,它记录了一个FreeBSD发行版所有package的光盘位置的信息,安装package判断在CD1还是CD2、CD3就是靠这个文件来判断的;

3、现在我们找一个文本编辑器将他打开,搜索并将”|2″和”|3″替换为”|1″,从字面上看就能明白,就是将指向到CD2、CD3的package修改为指向CD1,因为我们只有一张DVD;

4、用UlrtaISO(或其他编辑镜像的软件)打开CD1,将刚才复制到硬盘上的CD2、CD3的packages文件夹追加到CD1 中,确保CD1的packages包含了发行版CD1和CD2、CD3所有packages的文件,并且INDEX文件是刚才我们编辑过的文件;

5、忽略CD2、CD3下的cdrom.inf,它已被遗弃;

6、还可以把docs盘的内容也相应的追加过来;

7、保存镜像 -> [测试镜像] -> 刻录光盘 -> 完成。

Linux Platform

详情请见 LeakonWiki

http://wiki.leakon.com/BuildFreeBSDInstallationCDsToDVD

Google

Google
LAMP-Linux-redhat LAMP-Apache LAMP-MySQL LAMP-Php Leakon-Wiki Leakon-BBS XueBaoBao Xyoyou