WordPress CKEditor smiley表情图标定制化

WordPress默认的编辑器不是很好用,我习惯将它替换成CKEditor,安装CKEditor For WordPress即可。安装后编辑器将被替换,评论框的编辑器默认会被替换成CKEditor,有时候会导致模板样式错乱,可以在CKEditor->Basic Settings中禁用。

CKEditor默认的smiley表情不适合中国,我们可以将表情改造一下换成自己喜欢的表情,方法如下。

1. 下载你想要的表情包,一般是gif格式的图片,假设这些图片所在的文件夹叫mysmiley,将该文件夹拷贝到插件的表情目录中,路径为

wp-content/plugins/ckeditor-for-wordpress/ckeditor/plugins/smiley/images

2. 修改配置文件wp-content/plugins/ckeditor-for-wordpress/ckeditor.config.js

在CKEDITOR.editorConfig = function(config) { … }中添加如下代码

config.smiley_path=CKEDITOR.basePath+’plugins/smiley/images/mysmiley/’;

config.smiley_images=[‘1.gif’,’2.gif’];

第一行代码定义了表情文件所在的文件夹的路径,第二行是表情文件名字的数组。这样点击编辑器的表情按钮,自定义图标就会显示出来。

当你的图标过多时,由于显示不开会导致一部分图标无法显示,而且表情图标对话框没有滚动条,为了避免这种问题,我们可以修改一下css文件。找到wp-content/plugins/ckeditor-for-wordpress/ckeditor/skins/kama/dialog.css(假定你使用了默认的皮肤kama),在最后一行添加如下代码

.cke_dialog_ui_html{height:350px;overflow:auto;}

这个文件是经过压缩的,所以添加代码时注意不要有空格。height定义对话框的高度,可以根据自己的需要写。这样表情多时会出现滚动条,就可以正常使用了。如果你的表情很少,就不要做这个改动,不然显示会出问题。

下面是几个已经做好的表情包和大家分享一下,配置语句写在压缩包的readme.txt中

1. 洋葱头系列表情

下载地址:CKEditor洋葱头表情图标下载

2. qq表情图标

下载地址:CKEditor QQ表情

flash builder 4 序列号及使用方法

flash builder 4 hosts 破解 无限破解 序列号

 

flex 4 破解方法:
用注册机来破解是成功的,但是下一次重启的时候就不可以了,是因为他登陆了官方网站去验证的原因,所以我们来屏蔽它的验证网站,就可以达到破解了。
无论是新安装的,还是试用期过期了的,我们首先在C:\WINDOWS\system32\drivers\etc目录下的hosts文件进行修改,这个是系统文件是只读的,所以我们不进行修改的话是写不了内容进去的,点击这个文件的属性,先把只读这个属性取消掉,然后修改完之后改过来。我们不需要修改很多代码,我们只需增加一句话就可以了,在文件里面增加上127.0.0.1 activate.adobe.com这句话,注意了前面不能有#,这个是会被注释掉的,不起作用的。
如我的文件修改之后的内容:
# copyright (c) 1993-1999 microsoft corp.

127.0.0.1 activate.adobe.com
修改完之后我们就可以进行注册了,如果有注册机的话,就可以很容易获取序列号了,如果没有的话在网上找也可以找到很多,在这里我提供一些吧,不知道能不能用,应该是可以用的,
flex4注册码:
1424-4391-4624-5590-9520-3224
1424-4911-9190-5139-3387-1194
1424-4534-4173-3056-1444-4877
1424-4766-8976-4612-2545-2984
1424-4014-3600-4497-9399-5754

进行注册之后,以后就不会出现那个要求我们注册的框框了,烦人的东西.

(2010/11/12更新):有些朋友反应不能用,可能是序列号的原因,你最好用注册机自己生成新的注册号,

我再提供一些吧,

1424-4189-9907-1699-3951-0021
1424-4508-7679-2258-5890-8124
1424-4508-4533-6951-2570-7461
1424-4182-3201-8658-8407-5505
1424-4817-3306-7207-2955-4090
1424-4018-7091-8151-7090-1535
1424-4260-4080-5539-3256-1886
1424-4830-7950-7284-7868-9432

(2011/04/1更新):好像激活地址变了,如果还是不行的话,把下面这个话写上

127.0.0.1 wwww.adobe.com/cn/activation

吞噬星空

星空中。
“这颗星球,通体土黄色,没有任何生命存在,直径21ooo公里,咦,竟然蕴含‘星泪金’矿脉,真是天助我也,将这颗星球吞噬掉后,我的实力应该能恢复到受伤前的8o%。”脸色苍白的罗峰盘膝坐在一颗飞行的陨石上,遥看远处的一颗无生命存在的行星。
番茄第六部小说《吞噬星空》,将为大家展现出一个浩瀚广阔、神秘莫测的未来世界。

QQ截图未命名

我姐姐让我体验了一次性生活,感觉好低俗

表姐让我体验了一次性生活 表姐今年20出头,虽说不上美女吧,但长的也算上中等了,我们平时很少联系,都是过年过节的时候聚一聚,那天我在商场的餐厅吃饭,正好碰上了她,她刚在商场里买衣服,顺便吃饭,我是个比较内向的人,见了她也不知道说什么,她倒是挺主动的,要请我吃饭,餐厅没啥好吃的,都是快餐,用的都是一次性筷子,一次性纸杯,一次性餐巾,我平时是不怎么来这种地方吃饭,原来这就是“一次性生活”啊,太浪费资源了,我感觉这样不好,我们要爱护环境,尽量不用一次性产品 凡是把“一次性生活”看成了“性生活”的必须留言,并且今年好运连连。

男人要知道,女人的美有你一半的功劳,她的丑也有你一半的过错。

一个温顺女人变得泼辣,一定是男人不争气,她不得不出头。一个纯洁女人变得恶俗,一定是男人档次不够高。相反,一个平庸女人,相貌变得可爱,眼睛变得灵光,一定有一个好男人。男人要知道,女人的美有你一半的功劳,她的丑也有你一半的过错。

Everything happens for a reason 这个世界,没有偶然。

常常想一个人反而会模糊了影子,只剩下依稀的几个片段.回忆里那些许的画面让人纠缠.如今我一个人安静的生活,默默的想念.没有你没有争吵没有眼泪,亦没有快乐.我很想念你,只是我的骄傲,我的固执,我的任性不允许我先低头.对不起.我依然爱着你.你依旧是我的伤.

 

The rain falls because the sky can no longer handle its weight. Just like the tears fall because the heart can no longer handle the pain..—– 雨水落下来是因为天空无法承受它的重量,眼泪掉下来是因为心再也无法承受那样的伤痛.

In the end you’ll see who’s fake, who’s true and who would risk it all just for you. 到最后,你总会明白,谁是虚心假意,谁是真心实意,谁为了你不顾一切。

Warmness is luxury—which is reflected by deep cold and hurt. 温暖是奢侈的东西,奢侈到需要用很深的寒冷和疼痛才能体现。

Love does not consist in gazing at each other, but in looking outward together in the same direction.——爱不是彼此凝视,而是一起注视着同一个方向。

If the whole world betrays you, I’m gonna betray the whole world for you. 如果全世界背叛了你,我愿为你背叛全世界。

Be thankful for your past relationships, someone better suited to you is waiting out there.–感谢你逝去的恋情,因为更合适的人正在某处等你。

到底如何征服恐惧呢?If you want to conquer fear, don’t sit at home and think about it. Go out and get busy. 如果你想征服恐惧,不要坐在家里去胡思乱想。走出去,让自己忙碌起来。这就是战胜恐惧最有效的方法。

Many people do not need good-bye, because of just going by. Forget is that we give each other the best souvenir. 很多人不需要再见,因为只是路过而已。遗忘就是我们给彼此最好的纪念。

The best way to get over someone,is to get under someone else.—— 忘记某个人最好的方法,就是喜欢上其他人。

关键时刻,相信全球通

一朋友去厕所,方便完发现没带纸,又等不到人,手机又欠费。绝望中他给10086打电话,请求帮助。。。据说那边沉默了很久,后来……他的一个朋友半天后收到了这样一条短信:尊敬的中国移动用户你好,你的好友谁谁谁在厕所里,让你给他送手纸。详情请咨询10086

念你

我的字典里没有放弃
因为已锁定你
我从不写空白的日记
日记里全是你
眼前这月亮翘翘溜走
又见那太阳缓缓升起
多少个昼夜变换
多少次一年四季
爱不偷懒终於如一
我的字典里没有放弃
因为已锁定你
我从不写空白的日记
日记里全是你
我的字典里没有放弃
因为已锁定你
我从不写空白的日记
日记里全是你
眼前这月亮翘翘溜走
又见那太阳缓缓升起
多少个昼夜变换
多少次一年四季
爱不偷懒终於如一
我的字典里没有放弃
因为已锁定你
我从不写空白的日记
日记里全是你

7.29世界爱虎日

7.29世界爱虎日

对于热爱冒险的小米来说,7月29日是神奇的一天。因为他在穿越森林的途中,发现了受伤的虎王,经过一番细心照料,老虎的身体逐步好转,并逐渐消除了对小米的戒心。小米也因此有幸和它有了一次深入的对话。
小米:看到你身体好多了,我也感到欣慰。
虎王:谢谢你的照顾,看来你和别的人类不同,是真的帮我。
小米:当然,人类一直以来都把你们当朋友。
虎王:这话很可笑,看看你们都做了什么!
小米:你知道吗?我们已经将7月29日定为世界爱虎日,也一直在为此做出努力。
虎王:我表示欣慰,我们的生存状况得到了人类的关注。可是这还远远不够,我怀念我的祖
辈生活。
小米:你的祖辈?
虎王:20世纪初,我的同胞野生虎大约有10万只。它们雄踞森林,是令百兽心惊胆颤俯首
称臣的王者。那时候森林植被丰富,生存环境很好,我们都生活得很开心。各种动物也很多,寻找食物是一天中最大的乐趣,大家都吃得饱饱的,那真是一段美丽的时光呀。
谈到此时,虎王的眼神中透露出幸福的憧憬,然而很快闪现出一丝忧虑与愤怒。
小米:看来你遇到了不好的事。对了,你是如何受伤的呢?
虎王:我的遭遇有人真的在意吗?如果你真想知道的话,明天继续到这里等我,到时我自然
会告诉你。
虎王为什么会受伤呢?

推送时间:2011.07.29

sqlserver 迁移到mysql详细步骤数据库表结构迁移

最近在开发的一个项目,需要从MS SQLServer迁移到MYSQL,以下把迁移过程记录下来,与大家共享!

sqlserver迁移到mysql 在数据库方面的工作主要是表的迁移,以及存储过程的迁移,这里先说说表的迁移.

首先先将MSSQL Server表结构导出为.sql文件. 表迁移,mysql一律不能运行带有[,],dbo.等带有sqlserver特征的脚步, 所以在导出的sqlserver脚步里面,首先要把这些字符全部过滤掉(可使用editplus进行过滤),在表创建方面的不支持的字符如下:[,],[dbo].,GO, on primary,.

在过滤完以上的字符后, 由于导出的sql文件都包含多个表, 为了能够一次性装载完所有的scripts并运行,需要在每个表的create语句后面加上分号, (同时还有加上ENGINE=InnoDB),否则你会发现只能一个一个表的进行运行,比如原来是这样:

CREATE TABLE bmapnamebidsg (
bword nvarchar (100) NOT NULL ,
bids text NULL ,
status int NOT NULL ,
cr_date datetime NOT NULL
)

CREATE TABLE BookStaticSortStatus (
sid int NOT NULL ,
sortStatus int NOT NULL ,
mxReviewStatus int NOT NULL ,
lReviewStatus int NOT NULL ,
up_date datetime NOT NULL
)

改动后是这样的:

CREATE TABLE bmapnamebidsg (
bword nvarchar (100) NOT NULL ,
bids text NULL ,
status int NOT NULL ,
cr_date datetime NOT NULL
)ENGINE=InnoDB ;

CREATE TABLE BookStaticSortStatus (
sid int NOT NULL ,
sortStatus int NOT NULL ,
mxReviewStatus int NOT NULL ,
lReviewStatus int NOT NULL ,
up_date datetime NOT NULL
)ENGINE=InnoDB ;

接下来就是数据类型了!

在数据类型方面,mysql基本对应了sqlserver的数据类型, 向bit,text,varchar,等,都对应得比较好, 但是,mysql并不支持smalldatetime(这个是sqlserver特有的),需要转成datetime,另外, sqlserver中的identity自增长属性在mysql中则表现为auto_increament属性,并且声明该属性的列必须是key!

最后我们看看主键,索引以及缺省值如何对应,一些是MS SQLServer(建一个主键,为两个字段定义缺省值,再为一个字段定义成索引):

ALTER TABLE BookStaticSortStatus WITH NOCHECK ADD
CONSTRAINT PK_BookStaticSortStatus PRIMARY KEY CLUSTERED
(
sid
)

ALTER TABLE BookStaticSortStatus ADD
CONSTRAINT DF_BookStaticSortStatus_status DEFAULT ((-1)) FOR sortStatus,
CONSTRAINT DF_BookStaticSortStatus_up_date DEFAULT (getdate()) FOR up_date

CREATE INDEX [sort2_books] ON [dbo].[books]([s2id]) ON [PRIMARY]

MySQL:

CREATE TABLE `bmapnamebidsg` (
`bword` varchar(100) character set utf8 NOT NULL default ‘1’,
`bids` text NOT NULL,
`status` int(11) NOT NULL,
`cr_date` datetime NOT NULL,
PRIMARY KEY (`bword`),
KEY `bids` (`bids`(1))
) ENGINE=InnoDB DEFAULT CHARSET=latin1

完成以上动作,表结构的迁移就基本完成了!

其实,很多故事不必说给每个人听,就当做是一段记忆,伤感却也美丽。

又是深夜了,不知道有多少人和我一样还没有睡。你在想些什么呢?或许每个人心里都有那么一段故事,无法述说。就只能放任那些在深夜里对自己倾述。其实,很多故事不必说给每个人听,就当做是一段记忆,伤感却也美丽。——人,总是要醒来的,在某个时刻。唯美文字

你愿意容忍的恰是你会拥有的。没有你的允许,没有人能毁掉你的一天。昨天是所有抱怨的最后期限

Whatever you are willing to put up with, is exactly what you will have.No one can ruin your day without your permission.Yesterday was the deadline for all complaints. 你愿意容忍的恰是你会拥有的。没有你的允许,没有人能毁掉你的一天。昨天是所有抱怨的最后期限。。

innodb引擎Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.

今天在做innodb参数配置的时候,对其默认配置加以修改–结果导致启动后的server竟然不支持innodb引擎。Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
错误日志:
InnoDB: Data file /usr/local/mysql4/data/ibdata2 did not exist: new to be created
InnoDB: Setting file /usr/local/mysql4/data/ibdata2 size to 20 MB
InnoDB: Database physically writes the file full: wait…
InnoDB: No valid checkpoint found.
InnoDB: If this error appears when you are creating an InnoDB database,
InnoDB: the problem may be that during an earlier attempt you managed
InnoDB: to create the InnoDB data files, but log file creation failed.
InnoDB: If that is the case, please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/error-creating-innodb.html
[ERROR] Plugin ‘InnoDB’ init function returned error.
[ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
在遇到这些情况的时候,我起初考虑是没有建立新日志文件的权限。
实则不然
当我在未正常关闭server的情况下对其参数修改,
修改之后没有删除ib_logfile文件,ib_logfile文件中记录些innodb引擎非常有用的信息比如说默认的innodb默认的配置信息,你又是在未正常关闭server情况下操作的,所以导致重启后的server不支持innodb引擎。
rm -rf ib_logfile*
正确配置参数
重启server。

windows下Mysql解决启动1067和Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

2011年02月26日 星期六 01:43

关于手动修改mysql目录下的my.ini的数据库保存路径后,在启动的时候出错。

查看错误日志后,发现Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

原错误日志内容:

110226 1:20:46 [Note] Plugin ‘FEDERATED’ is disabled.

C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld: Table ‘mysql.plugin’ doesn’t exist

110226 1:20:46 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.

InnoDB: The first specified data file D:\mysite\database\ibdata1 did not exist:

InnoDB: a new database to be created!

110226 1:20:47 InnoDB: Setting file D:\mysite\database\ibdata1 size to 10 MB

InnoDB: Database physically writes the file full: wait…

110226 1:20:47 InnoDB: Log file .\ib_logfile0 did not exist: new to be created

InnoDB: Setting log file .\ib_logfile0 size to 10 MB

InnoDB: Database physically writes the file full: wait…

110226 1:20:47 InnoDB: Log file .\ib_logfile1 did not exist: new to be created

InnoDB: Setting log file .\ib_logfile1 size to 10 MB

InnoDB: Database physically writes the file full: wait…

InnoDB: Doublewrite buffer not found: creating new

InnoDB: Doublewrite buffer created

InnoDB: Creating foreign key constraint system tables

InnoDB: Foreign key constraint system tables created

110226 1:20:48 InnoDB: Started; log sequence number 0 0

110226 1:20:48 [ERROR] Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

从网上查了半天都是linux下的解决方法,没有windows的。不过仔细看了看linux下的解决方法,发现是因为

windows下Mysql解决启动1067和Fatal error: Can't open and lock

这个文件闹得,从日志上来看是因为不能够打开私有权限的表格。

这个文件闹得,从日志上来看是因为不能够打开私有权限的表格。

解决方法直接把这个文件夹全都复制到你要修改的目录下,重启mysql就ok了。

Microsoft .NET Framework 3.5 sp1离线安装(DotNetFX35)中文版制作

1. 离线安装包的bug. .NET Framework 3.5 SP1发布了,兴冲冲…下载,当然是完全离线安装包.net Framework 3.5 Service pack 1(Full Package) 231MB,网络慢呀!终于下载完了,安装….遇到新情况,还要连接网络下载,不是完全离线安装包吗?(急…等待中…大概需要30多分钟) 上火…啪啪的… 说明:呵呵,查了资料后才知道是微软制作安装程序时的一个无奈bug.在这里微软没有提醒大家,确实忽悠了我们。原来,.NET Framework 3.5 SP1(Full Package)是默认英文的安装包,如果要同时包含所有语言,那体积会太大了,可能考虑到这一点,发布时并没有包含其它的语言包,而是通过安装时在线下载,因而Full Package的称呼有点言不符实。
2. 自己动手,制作离线安装包. 自己能办到的,一般不求别人…
第一 下载.net Framework 3.5 Service pack 1 (Full Package) 231MB
安装包后dotnetfx35.exe,用WinRAR将其解压缩。
http://www.microsoft.com/downloads/details.aspx?familyid=D0E5DEA7-AC26-4AD7-B68C-FE5076BBA986&displaylang=zh-cn

第二 下载中文简体语言包。
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=8489ed13-b831-4855-96f7-dd35e4c02a20
文件名 文件大小 dotnetfx35langpack_ia64zh-CHS.exe 16.9 MB
dotnetfx35langpack_x64zh-CHS.exe 33.3 MB
dotnetfx35langpack_x86zh-CHS.exe 27.4 MB
一般用户下载dotnetfx35langpack_x86zh-CHS.exe 即可 说明:也可从vs2008 sp1
提取,里面dotnetfx35langpack_x64zh-CHS.exe和
dotnetfx35langpack_x86zh-CHS.exe都有,前提是你已经下载了VS2008 sp1。
3.
将语言包dotnetfx35langpack_x86zh-CHS.exe复制到第一步解压缩的\wcu\dotNetFramework\dotNetFX35\x86文件夹里。
(如果是x64位的,可将dotnetfx35langpack_x64zh-CHS.exe
复制到\wcu\dotNetFramework\dotNetFX35\x64文件夹里。) 第四
点击运行dotNetFx35setup.exe,可彻底的离线安装了。安装之后需要重启计算机。
================================================
在没有装VS2008的机器上单独安装3.5SP1的时候,无论你下载的什么完整版还是非完整版,安装程序都需要连接Internet,去下一些东东,而且超慢。更要命的是:提示有63M的东西要下,然后已经下了63M了,还是在下。等了好久,快抓狂了。去网上找到了一个解决办法。
先说解决方案:
1.到官网上下载3.5SP1的完整安装包。
2.下载完成后,命令行下运行dotnetfx35.exe /x解压到一个目录
3.进入解压目录下进入wcu\dotNetFrameWork
4.从命令行运行dotNetFx35setup.exe /lang:ENU
5.OK一路畅通了。

Doodle:雕塑大师亚历山大·考尔德诞辰 113 周年

感谢读者 轩辕十四 的提醒。

image

鼠标拖动产生动态效果,下面的影子也同时变化……雕塑大师亚历山大·考尔德诞辰 113 周年

静态图片地址:http://www.google.com.hk/logos/2011/calder11.png

这是一个动态doodle,可用鼠标拖动,同时在搜索框下方看到同步变化的光影效果。其实去年Google就用同样的图片纪念过历山大·考尔德112周年,但一年之后的今天,他们将其进化到了更高级的动态形式。

亚历山大·考尔德(1898.7~1976.11)出生于美国费城,他的父亲以及祖父都是雕塑家。1919年,考尔德在新泽西州霍普肯史蒂文斯理工学院的机械工程系毕业,打下以后从事活动雕塑的 发明与设计的基础。1922年,他去纽约业余学习绘画。翌年,加入了美国“垃圾箱”画派领导的艺术学生联合会。真正从事雕塑,大约是在1926年去巴黎之 后。他在欧洲现代派雕塑的鼓舞下,开始用铁丝、木头等来制作玩具动物,把制成的动物组成一个微型“马戏班”,并公开展出,引起了人们的兴趣。接着,考尔德 又用金属线制作真人大小的模特儿。1930年,荷兰的蒙德里安画室给了他很大的启示,他开始思考艺术的抽象化问题。1931~1932年,他创作了许多由 机器牵动的雕塑品,受到杜桑的鼓励。至1937年,他为巴黎世界博览会西班牙馆设计了一件《水银喷泉》,以流注的水银冲击连在旋转杆上的金属板,成为他第 一件真正的“活动雕塑”作品。这一件纵横有259×290厘米大的活动雕塑《虾笼子与活动鱼尾》,是他在此基础上于1939年新设计的大型活动雕塑代表作之一。

考尔德是美国最受欢迎、在国际上享有崇高声誉的现代艺术家,是20世纪雕塑界重要的革新者之一。

图文结合案例解析淘宝店铺运营

投身电子商务做淘宝运营的朋友以及一些中小卖家问到以下几个问题:

一、运营是做什么?

二、运营人员需要具备什么知识?

三、学习运营可以看些什么书?

这三个问题我从后往前按自己的理解先来回答一下。

第三:学习运营可以看些什么书?——淘宝运营更多的是实际操作经验的积累,到目前为止,我还没有看到一本理论体系非常适合的书。所以建议在实操中自学。没事逛逛派代也能学到不少东西。

第二:运营人员需要具备什么知识?——在我看来,优秀的运营人员需要具备非常庞大的知识体系,推广技巧方面,营销策划方面,交互设计方面,视觉设计方面,用户体验方面,数据分析方面,消费者形为心理学等等,当然还要懂产品。

第一:运营是做什么?——这个问题我想不同的团队不同的发展阶段对它的理解都不尽相同。从广义上来看,运营是要来解决以下三个关键问题:流量、转化率、用户粘度。从狭义的角度来看,运营是解决转化率和用户粘度两个问题。关于这三点通俗的理解如下:

流量:把人带到店铺来

转化率:让进来的人买东西

用户粘度:让买过东西的人以后还经常来买

图解:除了把运营工作定义为解决三大关键问题之外。还有另外一种理解方式。运营是解决上游产品到下游客户两者端到端的问题,所以掌握产品,摸清客户成为另一种运营工作思路。

理论的空话先不多说。以下店铺是一朋友所开,近日发给我看,让我给他们提一些建议,那我就结合具体店铺来谈一下我做淘宝运营的几个思路:

一、流量方面

朋友没有给我店铺账号密码,所以对于他们店铺的流量分析就无从做起了,但解决流量问题,我还是可以通过我的思路来说一下有哪些工作分解

以上部分,可能内容还有不尽详实之处。各位派友也可以帮我补充补充。

二、转化率方面

在分析问题之前,同样我先将我的思路图列出来

关于如何提高店铺转化率,可能很多人都能说上来不少方法。按工作内容不同来划分,我将之归为三类,一是产品设计,也可理解为产品的挖掘包装;二是店铺装修,这个大家容易理解,淘宝上卖的就是文字和图片,所以店铺装修是个大问题。三是活动策划。好的产品,好的页面展示,当然配合诱人的活动形式才容易产生最快的购买。

以下就细细来说一下我朋友的店铺。

1、店铺首页设计

首页图片我只截了首屏如下:

分析情况如下:

1)主色调:店铺首页的主色调为大红色,整体效果有点跟小也香水类似。使用醒目色红色来引起注意,聚集视觉焦点,这本身无可厚非。但考虑到当前是炎炎夏目,暖色系大红大黄容易让用户产生烦燥情绪,造成跳失率偏高的情况。相比之下芳草集的绿色调,御泥坊的灰蓝色调,相宜本草的蓝绿色调都更胜一筹,让用户看起来清新舒爽。其实类似这个店铺首屏这张焦点图的效果就非常友好。因此建议在做店铺整体风格设计的时候考试到季节因素气候因素。

2)分类模块:如下图所示:店铺的产品分类存在结构混乱,内容不全的情况。而这个版块又恰恰是非常重要的一个部分。欧美用户更愿意使用搜索功能,因为他们的民族更强调个性化,有冒险精神,而亚洲用户则更偏好使用类目导航的固定路径,相对求同存异,对已知有依赖性。所以,好的类目导航会对用户体验有非常大的提升。

目前为止,我还算是一个化妆品门外汉,但我觉得,化妆品产品的分类至少需要切以下几个维度:一是按功能分,有护肤类,彩妆类,美发美体类;二是按性别分:男士专用,女士专用;三是按肤质分:油性皮肤,中性皮肤,干性皮肤;第四,按品牌分,欧莱雅,The Face Shop,相宜本草等;第五,按热门关键词;第六,按价格区间。。。

也许有人会说,左侧分类栏有详细的分类啊,其它通栏位置还有必要这样详细的分类导航模块吗,我的答案是肯定的,需要。

如果不做这样的分类。举个例子,我是一个油性皮肤的人,进了店铺半天也没看到跟油性相关的产品或关键词,那我可能没有兴趣浏览下去了,直接关掉网页

3)框架布局。在框架布局方面,应该更多的考虑到用户的浏览习惯。根据Google的眼动仪测试报告。用户在浏览网页的时候,习惯路径是从上到下,从左到右。综合起来,就是“F”型的热点区域。因此店铺首页在做布局设计的时候,也要考虑到这些方面。西红柿美肤馆这个店铺显然没有考虑到这一点,三屏以下,基本上采用的都是相类似模块的重复堆砌,例如下图,两张图如此近的堆砌,究竟是让用户看哪一张呢

2、单品页设计问题

1)宝贝标题:我将当前店铺中销量最高的一个拿来做案例。此商品标题如下:

镇店之宝 Cetaphil/丝塔芙 舒特肤温和洗面奶118ML 洁面/抗敏感

首先说一个常识,宝贝标题不是简单对产品作一个文字描述,宝贝标题中的每一个关键词都是一条路径,这条路径在用户进行搜索行为的时候,就能把陌生的他与自己的商品建立一条通道联系。所以选择匹配度高的热门关键词作为宝贝标题是正确的选择。先看一下这个宝贝标题各个关键词在淘宝的日搜索量。

从上面这个图就能看出来,有两个宝贝标题关键词日搜索量为0,还有一个搜索量不到300,那么这三个关键词就应该被优化掉。举个例子“护肤”这个关键词日搜索量就有5000多,为什么不用呢。

2)产品介绍:这个单品页里面对产品的介绍顺序如下:

产品文字描述——使用需知——产品图片展示——品牌介绍——名人推荐——效果评测——用户体验反馈——产品细节展示——热销纪录

当我看完整个单品页后觉得脑子里面很混乱,我发现我没有装进去多少有价值的信息。是内容不够多吗,不是,内容已经够多了。问题在于,陈列顺序出现了逻辑上的混乱。

当你向我推荐一个东西的时候,你先要告诉我你是个什么东西(品牌),买来有什么用(功效),如果我觉得有兴趣,我还会接着问,你这个东西是正品行货吗(资质认证),还有谁在用(热销记录)。最后被你说服了,我想买了,但我还有最后一个问题,这个东西怎么用呢?(使用需知)

结合以上思维路径,我建议单品页的内容介绍按以下步骤来:

产品文字描述——产品图片展示——产品细节展示——品牌介绍——效果评测——名人推荐——用户体验反馈——热销纪录——使用需知

另外,西红柿美肤馆这个单品页的部分图片也太不专业了,例如如下所示,感觉很山寨。

3、分流页设计问题

分流页我想说两个问题:

第一:不同类的产品,应该使用不同的单品页模板。不同的单品页模板设置不一样的分流模块。

为什么这么说呢,如果所有的单品页点进去都是相同的分流模块,那跟人家想进商场你在门口硬塞给他一张传单有什么区别呢。其实应该这样,例如卖服装的,外套的单品页里面分流模块就应该放裤装的产品,男士护肤品的单品页里面分流模块就应该放男士护肤的专用产品。油性皮肤护肤单品的分流模块就应该推荐一些其它适合油性皮肤的产品,等等。

第二:分流模块的产品其实除了掌柜热卖和特价秒杀团购外有更多选择。

还是举个例子来说,单品页的分流模块分为宝贝详情上方,宝贝详情下方两个位置。在一个洗面奶的单品页里面,宝贝详情上方的分流模块可以放什么呢,我认为在这个位置,你要告诉客户的是,买了这个洗面奶,你还可以买以下相配套的爽肤水,隔离霜哦。那宝贝详情下方的分流模块又可以放什么呢?我认为客户浏览到这里的时候有可能会对本产品不感兴趣,有跳失的可能。所以在这里,我们可以告诉他,如果这个洗面奶你不喜欢,还可以选择其它品牌性价比更多的洗面奶哦。

综合来说,分流页模块不是简单地把自己热卖的,或者搞特价的商品强推给客户。如果是这样,关联销售根本就提高不起来。我想超市里面啤酒和尿不湿的案例大家都听过了吧。

有句话是这么说的,关联销售不是为不同的买家找共同的产品,而是为不同的产品找到共同的买家。这句话有点绕,大家慢慢理解。

我这朋友家西红柿美肤馆的分流页模块就犯了这个问题,既单调又单一。如下图所示:

4、活动策划问题

为什么产品好,还要做活动呢,我想用一句话可以概括。在中国人的思维里,买东西不是为了买便宜,而是为了占便宜。有一个案例是这样的:某超市某品牌牙膏正常日销量为2000盒。有一次,他们做了一个促销活动,降价5毛,仅限一日。结果当天该品牌牙膏的日销量是10000盒。真的是消费者买到便宜了吗?不见得,一盒牙膏正常情况下一个人可以用一个月。也就是说超市降价5毛等于每个人每个月节约了5毛钱。5毛钱多吗,如果我说地上每天有一毛钱让你捡,一个月捡3块,我估计没有几个人愿意捡的。因此。店铺经常策划一些活动就是为了让消费者觉得在你这里买东西占到了便宜。

我观察过西红柿美肤馆这个店铺一段时间。发现他们的店铺活动非常之简单,没有花样,没有主题。除了打折,还是打折。

其实店铺活动策划这方面,是有很多种选择的。我分成了下面这四类

一是常规营销活动:比如常年满多少包邮之类的,收藏送红包,送优惠券之类的

二是主题系列活动:例如周未购,每周秒杀,新品抢先购之类。通过第一季,第二季,第三季这样的持续形式来促使新用户的回头,老用户的积累。相当于每周给客户一点盼头。

三是节点促销活动:例如情人节,感恩节,国庆节,暑假等等,都可以包装成活动。活动形式灵活多变,满减,满送等,例如:五一我要“价”给你,暑“价”集中营等等

四是噱头促销活动:这个很多店铺玩过,比如说冲冠特价,掌柜搬家清仓等等。

本来还有再分析下其它几个方面,奈何本人一向不喜欢篇幅太长,打住吧

三、用户粘性方面

还是先上图,把我的思路先抛出来,如果有高手觉得内容不充分,也可补充。在我看来,要解决用户粘性的问题,需从以下几方面着手:

以上内容不作解释了,相信应该都看得懂。具体到西红柿美肤馆这个店铺,因为在他们这没买过东西,所以CRM做得如何,售后服务做得如何,就不得而知了。我仅仅从页面上获取的信息提出几点想法。

1、化妆品的消费人群有一个特性,就是除了买东西之外,还有一个交流分享的需求。在这方面,NALA做得还不错。通过QQ群来进行有效的管理。给客户一个自由交流分享的渠道。

其它除了QQ群。还有淘宝店铺帮派这个东西可以充分利用起来。把店铺帮派打造成一个小论坛,小社区。满足客户在这方面的需求。此外,店铺帮派还可以填充一些关于美妆护肤的专业知识。做信息内容的输出。提高可读性。

再有,就是利用时下比较热的微博来做CRM。通过与客户的在线沟通互动,增加用户的粘性。提高客户的复购率。

很遗憾的是,在这两方面,我朋友这家店铺都没有重视起来。

2、对于淘宝上的用户来说,店铺忠诚度是非常低的,那么如何来打造自己的忠实客户人群呢。我想利用好售后服务卡是非常关键的。

一般情况下,售后服务卡大多数人都理解为退换货表。在我看来,不仅仅如此简单,里面大有文章可做。一张设计精美的售后服务卡,可以让用户爱不释手,可以拿来当书签。增加了跟用户的“对话”时间,也即增加了用户回访店铺的可能性。不要好不容易跟一个客户产生了交易又彻底消失在他的世界里。要学会挖掘客户终生价值。

此外,如果可以的话,这张售后服务卡上还可以印上店铺红包的领取代码,或者直接充当一张有限期为一个月的包邮卡均可,让客户在收到货的同时有一个小小的惊喜。也大大提高了店铺的回访率和复购率。

总结一下,淘宝运营是做什么呢?

第一:通过运营手段提高店铺流量,降低店铺流量获取成本

第二:通过营销策划,店铺设计来提高店铺的转化率

第三:通过CRM,来增加店铺的忠实客户。

UCenter中上传头像功能的剥离

UCenter中上传头像功能的剥离

本文的内容仅供技术交流学习之用,相关的代码并未考虑实际应用系统中所必需的用户身份验证等功能,同时由于 UCenter 发行许可的限制,请勿将本文附带的代码直接用于实际的产品或项目中。
Discuz! 和 UCHome 中的头像上传功能很好用,大概有不少人和我一样想弄清楚它是怎么实现的,甚至希望移植到自己的应用系统中。
这个功能其实是在 UCenter 中实现的(这是 Discuz! 和 UCHome 等其它相关产品都依赖的公共模块),通过一个 Flash 文件(camera.swf),跟服务端的 PHP 程序配合完成的。
UCenter/UCHome 本身是开源的,但那个 camera.swf 并没有提供源代码。我们可以通过对 PHP 程序进行分析研究,进而基本摸清这个功能操作的细节,并最终将其剥离出来,独立于 UCenter 而独立运行。本文内容依据的是 UCenter1.5.0/UCHome2.0 。
首先我们来看一下 UCenter/UCHome 中这个功能是怎么工作的。
基本步骤
0. 浏览器访问 UCHome 中的一个 web 页面,其中包含 camera.swf。为保证 camera.swf 能正常工作,在其相同的路径下需要有 locale.xml 文件。
装载 camera.swf 的 HTML 代码可以由下面的程序生成:
home/uc_client/client.php : uc_avatar()
生成的内容大致如下:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="447" height="477" id="mycamera" align="middle">
<param name="allowScriptAccess" value="always" />
<param name="scale" value="exactfit" />
<param name="wmode" value="transparent" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="movie" value="http://localhost/center/images/camera.swf?inajax=1&appid=1&input=6b49vKhr%2FC4VpMIMCAt07Kr2eQk8jjY%2F6vtvDonod47dU7JK%2BxVFJPIVY%2FJGMQoSpzHylapBa8FbsEWFGorPwZDJRM10wGjxvbHKTVmVgrng%2BpoSTTsk%2BE3U&agent=a523e70c80e13e4eaee37c7f4bde4f2c&ucapi=http%3A%2F%2Flocalhost%2Fcenter&avatartype=virtual" />
<param name="menu" value="false" />
<embed src="http://localhost/center/images/camera.swf?inajax=1&appid=1&input=6b49vKhr%2FC4VpMIMCAt07Kr2eQk8jjY%2F6vtvDonod47dU7JK%2BxVFJPIVY%2FJGMQoSpzHylapBa8FbsEWFGorPwZDJRM10wGjxvbHKTVmVgrng%2BpoSTTsk%2BE3U&agent=a523e70c80e13e4eaee37c7f4bde4f2c&ucapi=http%3A%2F%2Flocalhost%2Fcenter&avatartype=virtual"
quality="high"
bgcolor="#ffffff"
width="447"
height="477"
name="mycamera"
align="middle"
allowScriptAccess="always"
allowFullScreen="false"
scale="exactfit"
wmode="transparent"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
参数分解如下:
inajax 1
appid 1
input 6b49vKhr%2FC4VpMIMCAt07Kr2eQk8jjY%2F6vtvDonod47dU7JK%2BxVFJPIVY%2FJGMQoSpzHylapBa8FbsEWFGorPwZDJRM10wGjxvbHKTVmVgrng%2BpoSTTsk%2BE3U
agent a523e70c80e13e4eaee37c7f4bde4f2c
ucapi http://localhost/center
avatartype virtual
其中的关键参数为 ucapi,后面两步 POST 的 URL 为 <ucapi>/index.php
这里的 "/index.php" 似乎是 hardcode 在 camera.swf 里的,不过在最后的程序代码中会看到,如果我们指定的 ucapi 明确给定了一个 php 文件的话,可以绕开 index.php 这个文件名。换句话说,如果服务端不是采用 PHP,而是另外一种编程语言的话(比如 Java/.NET 等),也是可以实现的。
1. 用户在 camera.swf 中"选择图片"后,camera.swf 会立刻把选中的图片上传到服务器。
$_SERVER
REQUEST_URI /center/index.php?m=user&inajax=1&a=uploadavatar&appid=1&input=ca68o1L41a1HkbmhMJVGHu0oFjxYXwadnUT9HnFpnyz5AgiZcsVGecPP38w%2BwM7XtT79zC5WMWlH8T7LvluCSXS3YUsrcJDoD1ySILNO2xo63hmBAvXVX24f&agent=a523e70c80e13e4eaee37c7f4bde4f2c&avatartype=virtual
METHOD POST
$_GET
m user
inajax 1
a uploadavatar
appid 1
input ca68o1L41a1HkbmhMJVGHu0oFjxYXwadnUT9HnFpnyz5AgiZcsVGecPP38w+wM7XtT79zC5WMWlH8T7LvluCSXS3YUsrcJDoD1ySILNO2xo63hmBAvXVX24f
agent a523e70c80e13e4eaee37c7f4bde4f2c
avatartype virtual
$_POST
Filename something.jpg
Upload Submit Query
$_FILES
图片文件内容
处理程序为:
center/control/user.php : onuploadavatar()
程序返回的内容为保存该文件的临时位置,比如:
http://localhost/center/data/tmp/upload5.jpg
camera.swf 会通过上面这个网址来读取图片,显示供操作。还可以有以下返回值作为错误代码:
-1 : Invalid identity!
-2 : Invalid photograph!
-3 : No photograph be upload!
-4 : Can not write to the data/tmp folder!
-5 : Server can not upload!
2. 用户在 camera.swf 中"确定"后,camera.swf 会向服务器上传 3 个图片数据,作为大、中、小尺寸的头像图片。
$_SERVER
REQUEST_URI /center/index.php?m=user&inajax=1&a=rectavatar&appid=1&input=ca68o1L41a1HkbmhMJVGHu0oFjxYXwadnUT9HnFpnyz5AgiZcsVGecPP38w%2BwM7XtT79zC5WMWlH8T7LvluCSXS3YUsrcJDoD1ySILNO2xo63hmBAvXVX24f&agent=a523e70c80e13e4eaee37c7f4bde4f2c&avatartype=virtual&randomnumber=5478
METHOD POST
$_GET
m user
inajax 1
a rectavatar
appid 1
input ca68o1L41a1HkbmhMJVGHu0oFjxYXwadnUT9HnFpnyz5AgiZcsVGecPP38w+wM7XtT79zC5WMWlH8T7LvluCSXS3YUsrcJDoD1ySILNO2xo63hmBAvXVX24f
agent a523e70c80e13e4eaee37c7f4bde4f2c
avatartype virtual
randomnumber 5478
$_POST
avatar1 …<big>
avatar3 …<middle>
avatar2 …<small>
处理程序为:
center/control/user.php : onrectavatar()
程序的返回内容为:
成功时: <?xml version="1.0" ?><root><face success="1"/></root>
失败时: <root><message type="error" value="-1" /></root>
3. 上传完成后,如果 camera.swf 能找到名为 updateavatar() 的 Javascript function,就会调用它。
参数分析
在上面第 0 步生成的 HTML 中,指向 camera.swf 的 URL 携带了一些参数,其中最关键的是 ucapi,它决定了第 1 步和第 2 步的 HTTP Request 发往哪里。
其它几个都是 UCenter 应用系统所需要的参数。camera.swf 是专为 UCenter 设计的,所以它特别支持这几个参数值,也就是说,在访问 camera.swf 的 URL 里包含了什么值,在后续访问 ucapi 的时候就会原样传回来。
camera.swf 没有提供源代码,没办法改造,但并不妨碍我们使用它。比如,我们可以借用 input 这个参数,把自己应用程序所需要的自定义参数(比如 user id)统一编码装在这个值里。
剥离实现
搞清楚了功能操作的细节和参数含义,重新实现这个功能就很容易了。
所谓重新剥离实现,就是在直接借用 camera.swf/locale.xml 这两个文件的前提下,重新编写服务器端的处理程序,实现头像上传功能,脱离 UCenter 独立运行。
理论上任何服务端编程语言都可以,我这里只给出 PHP 的代码。
包含了三个程序文件:
avatar.php — 实现了上面"基本步骤"中提到的全部功能
camera.swf — 提取自 UCenter
locale.xml — 提取自 UCenter
将这三个文件部署到 web server 上,然后访问 http://localhost/avatar.php 即可。还可以在 URL 上指定一个 uid 作为"用户标识",比如 http://u.liyunde.org/avatar.php?uid=1

程序下载地址: http://maquan.download.csdn.net/

基于xmlrpc的PingBack 规范形象介绍 在wordpress中广泛使用

Pingback是在博客圈的背景下诞生的一个新鲜玩意,说白了,其目的等同于csdn上的trackback。不过,它有更加完善的机制,而且用php很容易实现。
传统的博客是这样的,我写了篇很牛X的文章,你不巧看到了,但是我的观点你不同意,而且更不巧,你还非常喜欢抬杠,为了能和我抬杠,你就得在我的博客上留言,而且你啰里啰唆的打了1000个字上去。问题是,我不喜欢抬杠,所以我限制留言字数为100字。
问题来了,如果你对我的博客文章有几K个字节的感想,单单发表在我的博客评论里显得有点屈才。你可以在你的博客里重新发布一篇文章,为了让我知道你的大作,以便我们抬杠,你还得给我发封电子邮件告诉我。这个流程虽然不怎么复杂,但还是很麻烦。
Pingback简化了这个流程,只要在你啰里啰唆的评论里加个超链接,指向我的文章。我就会收到有关你的评论,而且还会自动显示在我的博客评论中。
神奇吧,神奇的背后是老瓶装新酒。要理解Pingback,最好有点web服务的知识,不知道也没关系,所谓web服务就是俩服务器之间没事倒腾数据玩,当然,俩服务器得使用同一种语言进行交流。目前,有两种倒腾语言,SOAP和xmlrpc,php5已全面支持。SOAP稳定可靠,但是很复杂,xmlrpc就简单实用的多。pingback就是基于xmlrpc实现的。
来看看具体的操作流程:
1、首先我发布文章,我的文章地址是:http://www.renseng.com/learning/dede-cms-remove-page-index-html.html。如果你乐意打开这个网页,并看下源文件,会注意到,在页面上有个link元素,内容是<link rel=”pingback” href=”http://www.renseng.com/xmlrpc.php” />。这玩意标示了一个pingback服务器的地址:http://www.renseng.com/xmlrpc.php。
2、然后你看了文章,开始在你的博客写你的啰里啰唆的评论,评论一开始可能会这样:carche在<a href=”http://www.renseng.com/learning/dede-cms-remove-page-index-html.html”>CURL……….</a>中 提到,我对此不敢苟同…………….
3、之后提交你的文章,如果你的blog系统是wordpress架构,当你提交文章之后,wordpress会扫描你文章中提到的链接,这时它发现了http://www.renseng.com/learning/dede-cms-remove-page-index-html.html这个链接。wordpress会抓取这篇文章,然后用一个像这样的正则表达式  ”/<link\s+rel=\”?pingback\”?\s+href=\”?(^>*)\”?\s+>/” 来寻找pingback服务器地址,找到这个地址后,开始倒腾数据。
4、你的blog系统会给找到的pingback服务器发送以下信息:你好,在某某博客文章中曾经引用了http://www.renseng.com/learning/dede-cms-remove-page-index-html.html这个超链接。
5、我的pingback服务器收到信息之后,先检查一下是不是确实有这回事,如果是就返回随便什么字符;如果不是,就返回一段错误码。之后,我的blog系统会根据你请求的信息,到你的评论里面抓取内容,并显示在我的blog评论中。
大致流程是这样的,如果要看详细的规范,参考:http://www.hixie.ch/specs/pingback/pingback