2008年8月 4日

使用Gmail为Discuz论坛发送激活邮件

使用gmail作为discuz论坛的邮件发送必须要apache/php支持OpenSSL.使用phpinfo()便可以看到PHP是否支持openSSL.

openssl
OpenSSL support   enabled
OpenSSL Version   OpenSSL 0.X.XX 23 Feb 2008

打开discuz论坛(6.1)的/include/sendmail.inc.php
54行改为:
fsockopen('ssl://' .$mail['server'], $mail['port'], $errno, $errstr, 30))

再参照Gmail帮助系统的设置一下Discuz的邮件发送参数即可.
Gmail的SMTP必须要通过SSL来连接,SMTP端口号是465.

邮件发送必须选择"通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)"

值得注意的是,apache支持ssl还不够,必须要php支持openssl才行,需要修改php.ini的设置.

上网搜索了一下,很多人发送不成功.反正我是成功了,呵呵~~




2008年7月18日

TinyMCE在线编辑器取值的问题

TinyMCE初始化之后,通过其他的方法都无法取到它的值.也无法用js来判断它是否为空.
通过查询手册,找到方法,特此记录一下:

var myContent = tinyMCE.get('editorArea').getContent();


2008年7月16日

Mootools-字符匹配与搜索

在用海内的时候,输入好友名字的时候会由一个自动提示的功能,在加入班级时,按照省份列出学校也会有一个搜索框,输入一个汉字就可以将含有这个汉字的大学名字列出来.并且将该关键词高亮. 如:输入"美"字,将会列出"中央美术学院","北京美国英语语言学院"等搜索结果.

搜索结果奇快,完全不需要查询数据库.只是事先必须将所有数据以JSON格式存在页面上.

按照这个思路,我用Mootools实现了一个这样的实例. 主要用到了Javascript的indexOf()和Mootools的Event和JSON相关的函数.

核心代码如下:(点这里看实例)




很有意义的0715

DSCF4377_m.jpg
昨天回家,开门以后,很意外的是看到女儿为我生日的特别扮相.并举着双手喊"生日快乐".

我敢说这绝对是我30年以来过过的最有纪念意义的生日.

而后是收到了妈妈和老婆的生日礼物.感动.不知道说什么好.决心要好好爱她们一辈子.

2008年7月15日

感恩-写在30岁生日之际

终于30了!

感谢母亲我生我,让我明白了生命的不平凡.
感谢父亲,让我懂得了做人的道理.
感谢老婆,让我感受到了家的温暖.
感谢女儿.让我懂得了父亲的责任.

感谢我的朋友们,你们在我最艰难的时候依然在支持我,鼓励我.




SyntaxHighlighter Installed!

效果演示:
CSS:


Javascript:


PHP:


安装方法:下载syntaxhighlighter软件包,解压缩传服务器上,在页面头文件上加如下代码,千万注意window.onload


2008年6月27日

Google Gears 初体验

最近抽空研究了一下Google Gears的API,并动手写了一个小玩意.感觉很不错,特别是因为之前没有接触过SQLite,没有想到数据库还可以这样玩,Gears提供了一个接口可以使用javascript直接操作数据库.在本地存点东西还是很方便的.

Google Gears是一个浏览器增强软件包,它可以让您的Web Application在离线的情况下也可以使用,并且内置了一个SQLite数据库,提供数据存储,还支持HttpRequest和Worker Pool,对于在线软件来说,是一个非常有用而且很有意思的玩意.

Gears推出有快一年了,最近正在大量装配Google系的产品,如Google calendar, Google reader, Google Docs等.连WordPress都要使用Gears来作为离线功能的支持了.我非常看好类似的产品,最近在Apple推出的Snow leopord内包含的Safari 4貌似也有类似的功能.可以想象,SAAS时代,离线应用是多么广泛.我也在考虑是否给BBCASH也装配上Gears和AdobeAIR,那可就好玩了.

著名的GTD工具Rememberthemilk的产品就使用了Google gear作为他离线使用的功能支撑,可以说应用得非常不错.我也尝试着为自己写了一个TodoList工具,方便自己的日常事物管理.

照例使用CodeIgniterMootools作为开发工具,SQLite管理工具SQLite Expert Personal,外加Google Gears API文档,写了两个晚上,基本上实现了在线存储、离线存储和数据同步功能.不过现在还没考虑用户管理模块,等更完善一点后挂上来再请高手指点,截图如下:

mpo.gif

如果在升级中遇到问题,比如1603错误之类的,建议使用微软出品的Windows Install Clean up工具先清除安装数据和记录再行升级.

BTW:
1.Dojo已经开始支持Gears了.推出了一个Offline模块,跟进速度真快.啥时候Mootools也有就好了.
2.有人写了一个Gears的ORM,很牛,还没用过
3.Gears最新版本已经支持Firefox 3.0了. 非常推荐使用.



2008年6月19日

哈利波特的妈妈-J.K.罗琳在哈佛大学毕业典礼上的演讲

看到一片好文,转载到自己的Blog,以此激励自己不抛弃不放弃.来自:阮一峰的网络日志

今年6月5日是哈佛大学的毕业典礼,请来的演讲嘉宾是《哈利波特》的作者J.K.罗琳女士。

她的演讲题目是《失败的好处和想象的重要性》(The Fringe Benefits of Failure, and the Importance of Imagination)。我读了一遍讲稿,觉得很好,很感染人。

她几乎没有谈到哈里波特,而是说了年轻时的一些经历。虽然J·K·罗琳现在很有钱,是英国仅次于女皇的最富有的女人,但是她曾经有一段非常艰辛的日子,30岁了,还差点流落街头。她主要谈的是,自己从这段经历中学到的东西。

去年的演讲嘉宾是比尔·盖茨,我翻译了他的演讲,影响挺大。今年,我只翻译了一部分,有兴趣的朋友可以在网上找到全部原文和视频。

二、

她首先回忆了自己大学毕业的情景:

I was convinced that the only thing I wanted to do, ever, was to write novels. However, my parents, both of whom came from impoverished backgrounds and neither of whom had been to college, took the view that my overactive imagination was an amusing personal quirk that could never pay a mortgage, or secure a pension.

当时,我只想去写小说。但是,我的父母出身贫寒,没有受过大学教育。他们认为,我那些不安分的想象力只是一种怪癖,根本不能用来还房贷,或者挣来养老金。

They had hoped that I would take a vocational degree; I wanted to study English Literature. A compromise was reached that in retrospect satisfied nobody, and I went up to study Modern Languages. Hardly had my parents' car rounded the corner at the end of the road than I ditched German and scuttled off down the Classics corridor.

他们希望我再去读个专业学位,而我想去攻读英国文学。最后,达成了一个双方都不甚满意的妥协:我改学外语。可是等到父母一走开,我立刻报名学习古典文学。

I cannot remember telling my parents that I was studying Classics; they might well have found out for the first time on graduation day. Of all subjects on this planet, I think they would have been hard put to name one less useful than Greek mythology when it came to securing the keys to an executive bathroom.

我不记得将这事告诉了父母。他们可能是在毕业典礼那一天才发现的。我想,在全世界的所有专业中,他们也许认为,不会有比研究希腊神话更没用的专业了,根本无法换来一间独立的宽敞卫生间。

I would like to make it clear, in parenthesis, that I do not blame my parents for their point of view. ... I cannot criticise my parents for hoping that I would never experience poverty. They had been poor themselves, and I have since been poor, and I quite agree with them that it is not an ennobling experience. Poverty entails fear, and stress, and sometimes depression; it means a thousand petty humiliations and hardships. Climbing out of poverty by your own efforts, that is indeed something on which to pride yourself, but poverty itself is romanticised only by fools.

我要申明,我并不责怪父母。......他们只是希望我不要过穷日子,我不能批评他们。他们自己很穷,我后来一度也很穷,所以我很理解他们,贫穷是一种悲惨 的经历。它带来恐惧、压力、有时还有抑郁。它意味着许许多多的羞辱和艰辛。靠自己的努力摆脱贫穷,确实让人自豪,但是只有傻瓜才会将贫穷本身浪漫化。

接着,她谈到了自己那些最悲惨的日子:

A mere seven years after my graduation day, I had failed on an epic scale.

我毕业后只过了7年,就失败得一塌糊涂。

An exceptionally short-lived marriage had imploded, and I was jobless, a lone parent, and as poor as it is possible to be in modern Britain, without being homeless. The fears my parents had had for me, and that I had had for myself, had both come to pass, and by every usual standard, I was the biggest failure I knew.

短命的婚姻闪电般地破裂,我还失业了,成了一个艰难的单身母亲。除了流浪汉,我是当代英国最穷的人之一,真的一无所有。我父母对我的担忧,我对自己的担忧,都变成了现实。用平常人的标准,我是我所知道的最失败的人。

That period of my life was a dark one. I had no idea how far the tunnel extended, and for a long time, any light at the end of it was a hope rather than a reality.

那段日子是我生命中的黑暗岁月。我不知道还要在黑暗中走多久,很长一段时间中,我有的只是希望,而不是现实。

但是,J.K. 罗琳认为,没有那段日子的失败,就不会有后来的她。

So why do I talk about the benefits of failure? Simply because failure meant a stripping away of the inessential. I stopped pretending to myself that I was anything other than what I was, and began to direct all my energy into finishing the only work that mattered to me.

为什么我说失败是有好处的?因为失败将那些非本质的东西都剥离了。我不再伪装自己,我找到了真正的我,我将自己所有的精力,投入完成对我最重要的唯一一项工作。

Had I really succeeded at anything else, I might never have found the determination to succeed in the one arena I believed I truly belonged.

要是我以前在其他地方成功了,那么我也许永远不会有这样的决心,投身于这个我自信真正属于我的领域。

I was set free, because my greatest fear had already been realised, and I was still alive, and I still had a daughter whom I adored, and I had an old typewriter and a big idea. And so rock bottom became the solid foundation on which I rebuilt my life.

我自由了,因为我最大的恐惧已经成为现实,而我却还依然活着,依然有一个深爱着的女儿,我还有一台旧打字机和一个大大的梦想。我生命中最低的低点,成为我重建生活的坚实基础。

Failure gave me an inner security that I had never attained by passing examinations. Failure taught me things about myself that I could have learned no other way. I discovered that I had a strong will, and more discipline than I had suspected; I also found out that I had friends whose value was truly above rubies.

失败使我的内心产生一种安全感,以前通过考试也没有的安全感。失败让我看清自己,以前我从没认识到自己是这样的。我发现,我比自己以为的,有更强的意志和决心。我还发现,我有一些比宝石更珍贵的朋友。

You will never truly know yourself, or the strength of your relationships, until both have been tested by adversity. Such knowledge is a true gift, for all that it is painfully won, and it has been worth more to me than any qualification I ever earned.

只有到逆境来临的那一天,你才会真正了解你自己,了解你结识的人。这种了解是真正的财富,虽然是用痛苦换来的,但是它比我以前得到的任何证书都有用。

在演说的下半部分,她还谈了毕业后在大*赦*国*际(Amnesty International)伦敦总部的第一份工作。这部分内容也很精彩,不过我就不翻译了,大家可以去看原文。

三、

我要重点谈的,是演说的结尾部分。

一般来说,在演讲结束时,嘉宾将对毕业生提出期望。我们可以看到,在这种场合,几乎所有嘉宾,都没有说"祝愿同学们取得个人成功",而是说"希望同学们努力去减轻人类的苦难"。

比尔·盖茨去年说:

Should Harvard encourage its faculty to take on the world's worst inequities? Should Harvard students learn about the depth of global poverty ... the prevalence of world hunger ... the scarcity of clean water ...the girls kept out of school ... the children who die from diseases we can cure?

哈佛是否鼓励她的老师去研究解决世界上最严重的不平等?哈佛的学生是否从全球那些极端的贫穷中学到了什么......世界性的饥荒......清洁的水资源的缺乏......无法上学的女童......死于非恶性疾病的儿童......哈佛的学生有没有从中学到东西?

Should the world's most privileged people learn about the lives of the world's least privileged?

那些世界上过着最优越生活的人们,有没有从那些最困难的人们身上学到东西?

These are not rhetorical questions - you will answer with your policies.

这些问题并非语言上的修辞。你必须用自己的行动来回答它们。

When you consider what those of us here in this Yard have been given - in talent, privilege, and opportunity - there is almost no limit to what the world has a right to expect from us.

想一想吧,我们在这个院子里的这些人,被给予过什么----天赋、特权、机遇----那么可以这样说,全世界的人们几乎有无限的权力,期待我们做出贡献。

J.K.罗琳今年说:

the fact that you are graduating from Harvard suggests that you are not very well-acquainted with failure. You might be driven by a fear of failure quite as much as a desire for success. Indeed, your conception of failure might not be too far from the average person's idea of success, so high have you already flown academically.

你们是哈佛毕业生的这个事实,说明你们并不很了解失败。你们也许极其渴望成功,所以非常害怕失败。说实话,你们眼中的失败,很可能就是普通人眼中的成功,毕竟你们在学业上已经很成功了。

But how much more are you, Harvard graduates of 2008, likely to touch other people's lives? Your intelligence, your capacity for hard work, the education you have earned and received, give you unique status, and unique responsibilities....... That is your privilege, and your burden.

但是,所有各位哈佛大学2008届毕业生,你们对其他人的生活了解多少?你们的智慧、你们的能力、你们所受的教育,给了你们独一无二的优势,也给了你们独一无二的责任。......你们的优势就是你们的责任。

If you choose to use your status and influence to raise your voice on behalf of those who have no voice; if you choose to identify not only with the powerful, but with the powerless; if you retain the ability to imagine yourself into the lives of those who do not have your advantages, then it will not only be your proud families who celebrate your existence, but thousands and millions of people whose reality you have helped transform for the better.

你们要用自己的地位和影响,为那些被忽略的人们说话;你们不仅要看到那些有权有势者,也要看到那些无权无势者;你们要学会设想,那些条件不如你们的人们是如何生活的;那样的话,不仅你们的亲人们将为你们感到自豪,而且千千万万的人们将因为你们的帮助而生活得更好。

We do not need magic to change the world, we carry all the power we need inside ourselves already: we have the power to imagine better.

我们不需要改变世界的魔法,我们自己的体内就有这样的力量:那就是我们一直在梦想,让这个世界变得更美好。

(完)


2008年6月18日

看Google中国的生活搜索的产品细节

Google生活搜索是Google中国公司新推出的一个产品.

生活搜索集合了G家的搜索和地图两大拳头产品,是一个交集,也是一个很好的衍生案例.不过,在使用过程中,对这个产品还是有点失望的,Google因为其首页的设计,被成为是用户体验大师.但我们不能过分的神话Google,毕竟事情也是人做出来的.人的因素在产品设计和实施的过程中的影响是非常显著的,我认为在这个过程中,应该将设计人员的个体影响缩小到最少,而为用户的考虑放大到最大.

好话就不说了,下面说说我觉得还可以改进的地方:
1.粘性表单
在生活搜索的搜索表单上,并没有使用粘性表单的设计,而在google.cn首页是使用的.如果说是因为房屋、工作、票务、餐饮不适用与使用的话,那么切换城市总应该要"黏"一下吧? 我觉得这样会让用户行为更为流畅.

2.首页布局
延续google.cn首页的简介布局当然是不错的,不过生活搜索的首页下方文字确然人有点迷糊,我们来看看:
gs_1.gif

搜索1000多个网站的房源信息.与切换城市、热点业务和地域快速选择的区块中间莫名的插了一个地震寻亲.

由此可以看出,google的工程师文化对用户体验的影响是如此严重,设计师在Google肯定是超级没地位的^_^

在如此简洁的页面,却没有一行引导用户快速选择地区的文字.切换城市的链接使用10px的文字,目的是让人看不清楚?搜索框上方的提示性文字使用灰色就很好,有层次,也能起到作用.这样的细节在其他地方怎么就得不到延续呢?

BTW: Google生活搜索的前端页面技术其实也不怎么讲究,表格和div混用.CSS也有点乱,缺少美感:)


3.用户最关心什么?
gs_2.gif在搜索页面的右侧,由一个这样的图表,工作搜索结果页出现的是行业分布,餐饮搜索结果页出现的是菜系分布,房屋搜索侧边出现的是地图和租房价格走势.很有意思,也很值得思考.

为什么会是这样的内容?还跟随页面滚动而滚动,应该是和用户相当有关联的内容了.但普通消费者真的会对行业或者菜系分布有兴趣吗?恐怕这也是数据挖掘或研究的结果,只是想表示一下google知道这些数据?

工程师文化对用户体验和运营的影响又出来了:)这样的例子下面我们还有.

这个地方适合放什么,我想得仔细考虑考虑用户的心理和阶段生命周期了.呈现热门搜索结果、相关职位或供求关系比例数据也比这个来得更有用.

产品设计的各个细节如果不随时考虑用户或运营的需求和方针,做出来的产品可能真只是产品了.

BTW: 租房价格走势不怎么准确,至少长沙的不太准确.



4.手机短讯
gs_3.gif昨天测试了一下免费发送到手机的功能,结果收到的是这样的(如图).

很显然,参考价值不大.还不如生成RSS添加到Google reader. 有点类似Google alert那种关键词监测并通知的意思.

很奇怪的是,Google为什么用的是腾讯科技的短信通道呢?

难道Google就不打算自己申请一个SP执照或收购一家SP公司嘛.


5.关于地图
地图功能很好很强大,但有几个小细节需要优化.框选搜索和点选搜索按钮离地图远了点吧?左文右图的布局让人感觉有点别扭.不太习惯.
点选搜索的示例关键词"王府井",搜索结果为0,这会让人质疑点选搜索的有效性和准确性.

从Googlechinablog了解到,生活搜索目前也只是一个Beta版本,不过比其他产品的Beta水平来看,确实还不够Google水准, 不过Gfans们也不要迷信Google.


今天太晚了,下次有时间接着写.





2008年6月14日

基于Mootools的图片标注

用过FlickrYupoo的童鞋可能都知道图片标注的功能,其实就是可以在图片上直接发表评论或者留言.因项目需要,用Mootools写了一个图片标注的功能,目前功能还比较简单,很多小的细节还可以优化!

CSS写得比较乱,局部也用了些表格,这都不是重点,关键是Javascript的实现.这个示例中主要用到了MootoolsEvent / Element 类和 Drag 插件。

演示页面请点这里


附图一张,就是这种效果~
photo_tag_demo.jpg

可以扩充的细节和功能:
1.用ajax保存Note.并在图片载入完成之后,再载入Note数据.
2.图片太大的话,可以做一个loading动画
3.删除Note.


2008年6月11日

Mootools Update to 1.2 !

Mootools 1.2 Dev 了很长时间,终于迫不及待的发布了.连新版本的demo都还在编写中.

官网同时也改版了.Mootools的Logo有些小的改动,事实上我觉得原来那个黑色版本挺裤的,干嘛要改成白色呢?

1.2版本提供了不少新东西,最爱的就是集成了SwfUpload,什么时候可以像Dojo一样搞一个Offline模块呢...

顺手做了个Mootools 1.2 的文档镜像到本地,供国内开发者和我自己查阅.

Mootools 1.2 文档/手册


上次做的Mootools范例依然有效。


2008年6月 6日

Mootools复制DIV对象并更改它的ID

在使用Mootools的clone()功能时,经常会与到被clone对象有Id号,在HTML文档内,ID号是不能重复的.
想了一下.找了个简单的方法.

代码如下:

假定现在要复制暂时是hidden的divTemplate,则可以用如下方式来写:



Mootools很简洁,使用起来也很方便, 经过YUI compress压缩后,用gZip输出后大小只有20K左右.

目前我写过的最复杂的一个js是类似于又拍网的照片标注.

Yupoo其实用的也是Mootools,不过他的JS是被加密的,无奈只好按照自己的需求重写了一个.js代码大概是150行,基本上实现Yupoo上照片标注的功能.




 

2008年5月26日

我们家的那两个女人

当然,小的那个暂时不能称之为女人,不过臭美的表现已经足够让人侧目了...





2008年5月19日

FireFox 3.0 对CSS解析的18项改善

FireFox3 Beta了5个版本,终于RC1了,自从Beta4之后,对内存泄露的问题的改善以及Javscript解析速度的提升确实给人感觉不错.因为遇到一些FF2和FF3在CSS表现细节上的不同,于是查阅了一下FF3对于CSS解析带来的改变.本人粗糙翻译,原文链接在此.

FireFox 3 对CSS解析的18项改善:

  • Display属性的inline-block和inline-table已经被支持
  • font-size-adjust属性已经可以在全部平台上使用(之前值支持Windows)。
  • rgba()和hsla()这两种色彩描述方式已经可以在color属性中使用
  • 开始支持:default伪类
  • -moz-max-content, -moz-min-content, -moz-fit-content和-moz-available 已经 加入到Width,min-width,max-width属性中
  • HTML的软联字符(­)已经被支持
  • 在等宽字符的环境内,预格式化tabs在FF3内可以工作得更好(依据CSS2.1规范)
  • ime-mode已经被支持
  • text-rendering已经被支持.
  • -moz-border-*-start and -moz-border-*-end等CSS属性已经被支持
  • -moz-initial 已经可以在全部的CSS属性内使用 (除 quotes 和 -moz-border-*-colors 之外)
  • window.getComputedStyle()支持所有被支持的CSS属性
  • 无内容的content已被支持
  • 空关标属性cursor:none已被支持.
  • 背景图在 -moz-border-radius 下已经可以被正确的裁剪.
  • white-space属性已经支持pre-wrap.
  • 选择器类似first-child,:only-child,:last-child,:empty和 + 号连接符可以被动态更新.
  • z-index的负值已被支持.



2008年5月16日

生命的价值并不止于自己的幸福

donate_to_redcross_468X200_r.png

关于本人

刘扬,男,生于七十年代末,从事过教育、广告、互联网行业.现在SOHO,美术科班,但目前主要工作是互联网产品设计和WEB前端技术.
抽烟,但不喝酒,不打麻将纸牌游戏.已婚,有一女儿.
生活历经风雨,所幸激情和理想还在.
有任何需要,可用邮件或评论联系我.

最新评论

订阅本站内容



关于本站的MT模版

本站页面模版依据DBANotes模版修改而来.
获取更多模版,请访问Moveabletype.

Powered by Movable Type 4.0