来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。

推荐几个H5页面制作工具,自己选一下吧

自从用H5做出的微场景风靡朋友圈,各类H5页面制作工具层出不穷。有了精美的H5展示,微信等新媒体更进一步地成为了企业营销的战场。吸引用户,留住用户,增加粉丝,都可以通过制作精美的H5微场景来实现。下面就由小编我来为大家一一介绍四大最好用的H5页面制作工具!

微页

微页是由咫尺网络开发的一款新产品,上线之后短时间内已经激增了数十万粉丝。其优势就在于页面简洁明了,操作简单。

推荐几个H5页面制作工具,自己选一下吧

  • 易上手度:★★★★★
  • 基础功能:★★★★★
  • 高级功能:★★★★★
  • 模板数量:★★★★
  • 模板精美程度:★★★★
  • 付费服务性价比:★★★★★
  • H5新媒体传播:有
  • 总评:★★★★★

体验地址:www.weiye.me

推荐用户:企业用户以及设计师,小白也能愉快地使用。

微页,拥有目前H5制作工具里,最丰富的功能组件,各种强大的功能可以组成交互丰富的H5场景。另外,微页平台其数量众多,制作精美的海量模板,小白用户也可轻松完成酷炫的H5页面制作。

易企秀

易企秀是比较早期发展起来的H5页面制作工具,所以功能上还是比较齐全的。由于起步较早,易企秀俨然是目前国内市面上使用最频繁的H5微场景制作工具。不过由于适配的原因,做出来在手机上观看两边会有留白。解决方法是将图片变成背景,这也是比较麻烦的地方。易企秀也有APP版,但是由于涉及很多复杂的操作,所以使用起来有点麻烦,效果不佳。在移动端制作这一块,易企秀还有待改进。

推荐几个H5页面制作工具,自己选一下吧

  • 易上手度:★★★★★
  • 基础功能:★★★★★
  • 高级功能:★★★
  • 模板数量:★★★★
  • 模板精美程度:★★
  • 付费服务性价比:★★★★
  • H5新媒体传播:无
  • 总评:★★★★

体验地址:http://eqxiu.com

推荐用户:贪懒的小白用户。

兔展

兔展也是发展的比较成熟一款产品,一开始是本着“免费、自由、简单”的理念发展的,不过慢慢发展壮大后,有许多功能是VIP才能使用的,比如说特效或者更精密的模板之类的。兔展的使用页面十分清新,不过预览页面比较小。

推荐几个H5页面制作工具,自己选一下吧

  • 易上手度:★★★★
  • 基础功能:★★★★★
  • 高级功能:★★★
  • 模板数量:★★★
  • 模板精美程度:★★★
  • 付费服务性价比:★★
  • H5新媒体传播:有
  • 总评:★★★★

体验地址:http://www.rabbitpre.com

推荐用户:综合性比较强的用户,可设计可推广。

MAKA

MAKA口号是简单、强大的HTML5创作工具。在不同的HTML5编辑工具中,编辑的对象名字是不同的,在MAKA中则称为项目,新建项目之后将会出现下面的编辑页面。MAKA的劣势可能在于它的模板比较少,并且预览页面也比较小,看起来比较费劲。MAKA的风格就像它的标语一般:简单。

推荐几个H5页面制作工具,自己选一下吧

  • 易上手度:★★★★
  • 基础功能:★★★★
  • 高级功能:★★★
  • 模板数量:★★
  • 模板精美程度:★★★
  • 付费账号性价比:★★★
  • H5新媒体传播:无
  • 总评:★★★

体验地址:http://www.maka.im/home/index.html

推荐用户:中高阶设计师。

总结:

上述四大平台都是优秀的H5页面制作平台,都采用了基础功能永久免费,高级功能按需付费的方式,能满足绝大多数企业日常的H5营销需求。其中,在模板数量方面,微页与易企秀都比较丰富,VIP付费账号性价比最高的是兔展,设计感最强的是MAKA,功能最丰富的是 微页 。

在这些工具出现之前,做一些H5特效的动态页面,需要专业技术团队和设计师耗时几周才能完成。现在通过这四大H5页面制作工具,你几分钟就能免费创作自己的H5页面。赶紧动手尝试一下,做出属于自己的专属H5微场景吧。

本文由 @cjl695 原创发布于人人都是产品经理 ,未经许可,禁止转载。

转:http://toutiao.com/i6229094248608694785/

Node.js是一个面向服务器的框架,立足于Chrome强大的V8 JS引擎。尽管它由C++编写而成,但是它及其应用是运行在JS上的。本文为开发者总结了4个Node.js要点。

1. 非阻塞(Non-blocking)或异步I/O

由于Node.js一个服务器端框架,所以它主要工作之一是处理浏览器请求。在传统的I/O系统中,每个请求的发出都是在上一请求到达之后才发出的。所以这被称为阻塞(blocking)I/O。服务器会阻挡其它的请求以处理当前请求,从而导致浏览器等待。

Node.js不以这种方式来进行I/O处理。如果一个请求需要长时间处理,Node.js会把该请求发送给一个事件循环(event loop),然后继续处理在调用堆栈(call stack)中的下一请求。当延后请求处理完毕时,它会告知Node.js同时浏览器会做出响应反馈。

以下使用一个事例来说明。

Blocking I/O

// take order for table 1 and wait...
var order1 = orderBlocking(['Coke', 'Iced Tea']);
// once order is ready, take order back to table.
serveOrder(order1);
// once order is delivered, move on to another table.
// take order for table 2 and wait...
var order2 = orderBlocking(['Coke', 'Water']);
// once order is ready, take order back to table.
serveOrder(order2);
// once order is delivered, move on to another table.
// take order for table 3 and wait...
var order3 = orderBlocking(['Iced Tea', 'Water']);
// once order is ready, take order back to table.
serveOrder(order3);
// once order is delivered, move on to another table.

在这个餐馆例子中,服务员接收了菜单指令,等待饭菜处理,然后在饭菜处理完成后把饭菜端到桌子上。在服务员等候饭菜处理期间,他会拒绝其它客人的菜单指令。

Non-blocking I/O

// take order for table 1 and move on...
orderNonBlocking(['Coke', 'Iced Tea'], function(drinks){
  return serveOrder(drinks);
});
// take order for table 2 and move on...
orderNonBlocking(['Beer', 'Whiskey'], function(drinks){
  return serveOrder(drinks);
});
// take order for table 3 and move on...
orderNonBlocking(['Hamburger', 'Pizza'], function(food){
  return serveOrder(food);
});

而在非阻塞模式下,服务员会告知厨师他接受到的菜单指令,然后去接收下一桌的指令。当第一桌饭菜处理完毕时,他会为那桌客人上菜,然后继续接收其它客人的指令。这样一来服务员不会由于阻塞指令而造成时间浪费。

2. 原型(Prototype)

原型在JS中是一个复杂的概念。在典型继承机制语言如Java或C++中,为了实现代码复用,你必须先创建一个类然后透过它来生成对象或透过类扩展来生成对象。但是在JS中没有类似的类概念。在JS中创建一个对象后,你需要透过它来扩展对象或创建新对象。这就叫做原型继承(prototypal inheritence)。

每个JS对象都连接着一个原型对象并对并继承该对象的属性。每个对象与预定义JS的Object.prototype相联系。如果你透过obj.propName或obj['propName'>方式来查找对象属性但查找失败时,这时可尝试通过obj.hasOwnProperty('propName')的方式进行查找,JS运行时会在在原型对象中查找属性。如果属性不存在于原型链中,那么将返回undefined值。

让我们用以下例子来进行说明:

if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        var F = function  {};
        F.prototype = o;
        return new F;
    };
var otherPerson = Object.create(person);

当你创建了一个新对象,你必须选定一个以原型为基础的对象。在这里,我们为对象函数添加了一个create方法。create方法创建了一个以其它对象为原型的对象,并作为参数传入。

当我们变更新的对象时,它的原型是保持不变的。但是,当我们改动了原型对象,该变更会影响所有基于该原型的对象。

3. 模块(Modules)

如果你曾在Java中使用过包,那么Node.js的组件与之类似。如果没有,也不用担心;组件其实是简单的JS文件,用于实现特定的功能。组件模式的意义是让你工作得更加轻松。要使用组件,你必须像在JAVA中导入包一样进行JS文件导入。Node.js中有两种组件

核心组件(Core Modules)- 核心组件是结合Node.js库被预编译的。其目的是把程序员经常使用的功能开放出来,避免重复劳动。常见的核心组件有HTTP, URL, EVENTS, FILE SYSTEM等等。

用户自定义组件(UserDefined Modules)- 用户自定义组件是提供给用户使用以实现具体功能的组件。当核心组件不足以满足程序员需要的时候,自定义组件就可派上用场了。

组件是通过require函数被抽取的。如果这是一个核心组件,那么参数就是组件名。如果这是一个用户自定义组件,那么参数就是其在文件系统中的组件路径。例如:

// extract a core module like this
var http = require('http);
// extract a user defined module like this
var something = require('./folder1/folder2/folder3/something.js');

4. 回调(Callbacks)

在JS中,函数是第一类对象。也就是说你可以像对常规对象那样对函数进行所有操作。例如指派函数到一个变量,把这些作为参数传给方法,把它们声明为对象的属性,甚至是把它们从函数里返回。

回调在JS中是异步函数,可以作为参数传递给其它函数或从其它函数里执行或返回而后再执行。这是回调的基本概念。

当我们把一个回调函数作为参数传递给另外的函数时,我们传递的仅仅是函数的定义;换言之,我们不会知道回调函数的执行时间。这完全依赖于回调函数机制。它会在稍后某个时间点进行回调调用。这是Node.js的非阻塞或异步行为的基本概念,可用下例进行说明:

setTimeout(function {
    console.log("world");
}, 2000)
console.log("hello");

这是一个最简单的调用。我们把一个匿名函数作为参数进行传递,作用是为setTimeout函数进行控制台的输出记录登记。因为这仅仅是个函数定义,我们不知道函数何时会被执行。这取决于setTimeout函数的second参数,即2S后。

首先,second记录语句记录了对控制台的输出,2S后,在回调函数中的记录语句记录了输出的内容。

// output
hello
world

写在最后

以上4点对Node.js开发者来说是要彻底理解和掌握的,建议多动手来好好体会这4个要点的含义。

原文出自: Dzone

(责编/夏梦竹)

 

转:http://toutiao.com/news/6228307537867833858/

1、思路

如何把网站流量做大,这是每个SEO第一个要思考的问题,无非从3个方面入手,1,词库,2,内容,3,链接。

可一般的SEO根本没有SEO词库的概念,只是把几个目标关键词放在首页,就不停发外链,这就是大多SEO的做法。

其实不管你是做几个关键词,只要分析下竟争对手,就是目标关键词在百度首页有排名的网站,就明白,他的收录数量,目标关键词,外链数,答案就马上出来。

最简单常见的做法是,直接把数据结果提高2倍,排名就上去了。无非就是拼数量,当你的整体收录量上去了,排名上去了,流量就来了,无非是流量多少的问题。

关键词有排名,就有流量,可你要想一想,你准备了多少个关键词,竟争对手有多少,行业网站又用了多少?如果你没有全局观,不站在行业顶端来看待这个领域,SEO的思路是非常有限的。

在SEO实战交流群,我给所有学员第一个任务是,做SEO词库,也许做词库会花费一些时间,可一旦完成,你的优化思路会非常清楚,然后去做几个SEO频道和内容模板,就可以上内容了,其实SEO就是这么简单。

2、案例

对于SEO感兴趣的同学,可以分析下玛峰窝,这是一个旅游分享网站,把旅游相关的大部份内容,从不同维度都做出来了,虽然很多细节没做好,可整体而言,还是不错的。

例如,天气,很多人出国前都会查下天气,例如,韩国天气

郑刚:SEO如何轻松做大流量?

郑刚:SEO如何轻松做大流量?

这也是一个相关流量入口,一个用户想去韩国旅行,肯定会先查查天气,如果到了这个页面,再看到自己想去的城市,点进去,又会看到相关酒店的价格,问答,游记等,很容易就提升了转化率。

所以天气也是一个不错的维度,而且,天气的全世界地区搜索量非常巨大,把这些流量拿来是很容易,也会产生部份转化。

3、实际流量分析

很多SEO刚做排名时,总是这样想,例如,SEO这个词有5000人搜索,然后死命去做这个词,可发现排名上去后,根本没有这么多流量。

正常流量比例会按阶梯式下分,首1,50%,首2,30%,首3,10%,也可能会更低,这是没有竟价的情况下,如果有竟价,流量按排名位置再往下排,你会看到,你上了首1,也没有什么流量。

所以这是一个误区,不要只盯着一个词,做过SEO超过1年以上的都应知道,网站的流量主要来自长尾流量,大量的长尾,实际首页关键词,来不了几个流量。

如果单个排,可能首页主词会多少些,可整体来看,就算不上什么流量了。

正确的做法在第1部份已经说了,实际流量的算法是,100流量=总关键词数量,减去,整体收录页面数量,减去,有排名的页面数量,等于网站实际流量。

如果有竟价因素,可能实际流量不到20%,这要和总SEO词库的关键词数量来计算。

例如,你想做1000的流量,准备1000个词,然后做了1000个页面,然后收录一部份,100%收录是不可能的。去掉没有排名的页面,等于最后网站的实际流量。

可能是30%,也可能是20%,如果想提高这个比例,最简单的方法就是,不断的扩展SEO词库数量,从不同维度生产更多页面,当你的收录量有50万时,你的流量有5万,就很容易实现了。

我是郑刚,微信号/qq:611247,每天写一篇文章,希望能给大家一些启发。

欢迎分享,转载,请保留版权,谢谢!

 

转:http://toutiao.com/i6227747498333569538

若何判定关头词的优化难度?

作为济南网站扶植公司和收集营销推行公司,当有客户找到我们需求我们帮手优化网站的时辰,我们常常会先让客户供给所需求优化的关头词,拿到客户关头词以后,我们会来判定这个词我们能不克不及做。那末我们是若何来判定一个关头词的优化难度的呢?

如何判断关键词的优化难度?

1,从全体阐发这个网站

若是这个网站,都是纯静态页面,没有内容办理零碎,我们没法停止内容更新,那末会谢绝客户的要求。从网站结构的公道性下去判定这点,这是我们所需把握的技术。

2,从域名春秋上

年夜家都晓得,搜刮引擎偏心老域名,越老的域名越有优势。若是一个刚注册没几天的域名,优化起来难度会年夜良多。

3,从百度指数下去阐发

百度指数越高,意味着搜刮的人越多,竞争也越剧烈,为了包管客户的关头词能做上去,普通不会接百度指数跨越一千的关头词。

4,从百度首页来判定

拿客户供给的关头词,去百度首页搜刮,看百度快照在首页的是哪些网站,若是都是百度百科百度晓得之类的,那末难度也是很年夜,可以跟客户申明这个成绩。

转:http://toutiao.com/i6222232776150614530/

Dynamics.js是设计基于物理规律的动画的重要JavaScript库。它可以赋予生命给所有包含CSS 和SVG属性的DOM(文本对象模型)元素,换句话说,Dynamics.js适用于所有JavaScript对象以及一系列其它的元素。目前,Dynamics.js常被用于设计交互式菜单栏、同步下拉菜单、加载器、按钮以及其它功能。这个库提供了可定制动画类型的各种基本选项,如频率、反弹力、旋转、摩擦、持续时间等等。

创建酷炫动画效果的10个JavaScript库

Cta.js 是用于在网页上创建动画元素“Action-to-Effect”路径的轻量级库。它常被用在tile-based应用程序的导航、模态窗口的打开、侧边栏上可点击的按钮等等。

创建酷炫动画效果的10个JavaScript库

Beep.js是一个通过使用WebAudio API创建基于网页的电子合成器的JavaScript库。它可以用于创建音乐或者设计和音乐相关的学习教程。

创建酷炫动画效果的10个JavaScript库

Rainyday.js是一个使用HTML5 canvas创建雨滴落在玻璃表面的出色效果的强大JavaScript库。它拥有一个集成了各种可自定义实现的动画组件的可扩展应用程序接口。

创建酷炫动画效果的10个JavaScript库

Iconate.js是一个可将设计图标转化为流行动画元素的伟大资源。它拥有大量可供选择的字体、字形图标以及自定义图标集。

创建酷炫动画效果的10个JavaScript库

Dom-Animator.js是一个在DOM(文本对象模型)中可显示内容节点里ASCII动画的JavaScript库。

创建酷炫动画效果的10个JavaScript库

Famous 是用于设计流行动画的强大JavaScript库,它包含的基于事件的系统(event-based system)使得渲染平滑动画和过渡特效这类的更新转换工作变得非常简单。Famous还有一个可创建自定义动画和动画仿真的3D物理引擎,你可以做出包含在不同的重力、拖放和碰撞下的粒子或者3D物体的状态。

创建酷炫动画效果的10个JavaScript库

Bounce.js 是一个在CSS 3的支持下能做出各种酷炫动画的JavaScript库。你可以设计不同的动画和运动效果,如自转、公转、来回运动、急加速等。

创建酷炫动画效果的10个JavaScript库

Snabbt.js是一个使用CSS3转换矩阵的轻量级JavaScript动画库。它的结构非常简单,支持各种过渡和运动效果的应用,如缩放、尺寸调整、扭曲、旋转等等。Snabbt.js还支持attention animation功能,这个功能在表单验证方面是非常有用的。

创建酷炫动画效果的10个JavaScript库

Rekapi是用于CSS动画关键帧动画以及DOM中JavaScript动画的高级avaScript库。在复杂动画的设计方面,Rekapi以其实用性被人们广为熟知。您可以使用Rekapi创建生动的饼图和曲线图、五彩纸屑、交互性时间线以及各种用户界面。

创建酷炫动画效果的10个JavaScript库

本文翻译自codecondo.com

本站文章除注明转载外,均为本站原创或翻译

转:http://toutiao.com/i6221939614307844609/

昨天SEO实战交流群有同学问,小网站和大网站优化有哪些不同?我当时就作了解答,但我想,那只是方向性的东西,今天抽时间,专门解答下这个问题。

1、结构

大网站和小网站从结构上是差不多的,只是多几个专题页和列表页,SEO频道的模式有点差别。

2、内容

相对而言,大网站的内容来源更丰富,客户1部份,自身发布1部份,然后分解或采集一部份。而小网站,只是自己发布或去复制内容。内容很少,也很单一。

3、链接

大网站光内部的链接量级都非常庞大,而小网站只有几十个页,多则几百个页面,内部优化是很有限的,顶多就去换几个友链而已,资源非常少。

4、流量页

大站的SEO频道少则几十万,多少几百万个,小企业站点,顶多就是一个产品列表页,实际获取流量少的可怜,更多流量只是来源于首页,这样单一的模式,从量级上就没法比。

如果要想获取更多流量,最简单的方法,就是获取更多流量页面,如果单一靠首页去优化,是非常有限的。一个页面能承载的关键词也是有限的,最好的模式,是让更多页面获取长尾流量,从而提升整体流量。

那小网站要注意优化哪些细节呢?

1、关键词的研究

小网站优化的页面有限,就更应该去做关键词研究,调用的资源有限,就要尽量让每一个页面产生价值,获取流量。研究的越清楚,你就越明白,哪些词可以做出排名,哪些词是重要的有价值的。

2、页面的落脚词分布

其实就是关键词的布局,在小网站里,堆关键词密度还是有效果的,现在很多做SEO的方法,都是从关键词密度上延伸的,从顶部,导航栏,次导航,标题,内容,相关页,相关介绍内容模块,热门标签,相关评论,底部,这几个点去布局关键词。

3、内容页的安排

小网站很多时间没有排名,和内容有着极大的关系,内容就是很僵化的,或产品的一些说明,并没有做好用户体验,用户关注什么,或需要解决什么,没有从内容里说明,完全就是按自己的想法在做网站。特别是一些模板,首页,产品大全,新闻资讯,行业动态,招聘,联系我们,关于我们,这就是一些企业站的全部。

看到很多栏目,都不是客户想看的,那有存在的必要性吗?没有,没有为什么不拿掉,放客户想看的,想要的呢?

4、收录量

说到收录量,很多站长想到site,实际上这根本不是实际收录量,关于收录量,首先要想下,你有多少个URL,不能只看你后台发布了多少新闻或产品,那不是实际的页面数量。

这个可以用软件爬下,就能知道,网站倒底有多少URL页面,然后在百度站长平台看数据,你有多少页是收录的,答案就马上清楚,而不是总盯着site的显示数量。

如何解决收录量:

a、Ping

百度站长平台有说明和代码,实际很简单,dede和WP都有现成的插件,包括百度也有这样的插件开放。

b、网站地图

这个肯定是有比没有好,xml,txt,html,这3个模式都要做,然后到百度后台提交,在网站顶部和底部做入口,在robots里放一个入口。

c、相互调用

把产品页和新闻页面做交叉调用,让页面有更多的展示机会,这样会大大提高蜘蛛的爬行,每个页面增加一个全站最新内容页。

5、链接建设

这里的链接,不只是说首页的链接,首页天生就能获取链接,例如,全站的链接,更多时候,我们要把链接导向我们要优化的页面,不只是首页。

你想这个页有排名,就要给他足够的投票,就这么简单。这是最简单的部份,这里就不展开了。

我是郑刚,微信号/qq:611247,每天写一篇文章,希望能给大家一些启发。

欢迎分享,转载,请保留版权,谢谢!

转:http://toutiao.com/i6222942834027135490/

PHP遭弃用!Wordpress.com开源并转用Javascript

站长之家(Chianz.com)11月30日消息 据外媒消息称,Wordpress母公司Automattic将完全重写Wordpress.com网站代码,并将此项计划命名为“Calypso”,代码开源并被托管于Github平台。此外,最新的wordpress.com放弃了php,转而启用Javascript,且通过API调用数据。

以下为几个主要更新点:

1、如今的Wordpress.com为一个管理界面,完全独立于Wordpress的核心代码,且与其(wordpress核心代码)的交互方式类似于其他第三方接口、app。通过REST API来获取发布的内容、上传照片等数据。

2、Wordpress.com 不再使用PHP+MySQL的组合模式,而是采用了Javascript语言及API调用模式。也就是说,当你访问wordpress网站时,会触发服务器分发一个几乎完全运行于用户浏览器上的、功能齐全wordpress客户端。

上面所说的WP客户端实际上是一个单页应用(Single Page Application),这样一来就可大大减少用户与界面进行交互时页面加载的次数。此外,它采用的是响应式设计,因而对手机、平板等移动设备也十分友好。

在新版wordpress.com中,用户可以通过Wordpress原有的后台管理系统来维护博客。也可以通过Jetpack插件来管理wordpress站点,Jetpack插件里面还内置了社会化分享,社会化登录和社会化评论的功能。

3、重写后的Wordpress.com是完全开源的,托管于Github上(地址:https://github.com/Automattic/wp-calypso),用户可在遵从GNU GPL(General Public License)规定情况下查看完整代码、重新使用该代码。

除了wordpress.com开源外,wp团队还针对Mac用户推出了一款类似于桌面应用程序的app。这款App简化了用户访问、维护Wordpress.com的工作,后续还将推出Windows和Linux版本。

Calypso:荷马《奥德赛》中人物,海之女神卡吕普索。

搜索引擎优化(seo)有很多工作要做,其中对代码的优化是一个很关键的步骤。为了更加符合SEO的规范,下面是目前流行的CSS+DIV的命名规则:

页头:header

登录条:loginBar

标志:logo

侧栏:sideBar

广告:banner

导航:nav

子导航:subNav

菜单:menu

子菜单:subMenu

搜索:search

滚动:scroll

页面主体:main

内容:content

标签页:tab

文章列表:list

提示信息:msg

小技巧:tips

栏目标题:title

友情链接:friendLink

页脚:footer

加入:joinus

指南:guild

服务:service

热点:hot

新闻:news

下载:download

注册:regsiter

状态:status

按钮:btn

投票:vote

合作伙伴:partner

版权:copyRight

CSSID的命名

外套:wrap

主导航:mainNav

子导航:subnav

页脚:footer

整个页面:content

页眉:header

页脚:footer

商标:label

标题:title

主导航:mainNav(globalNav)

顶导航:topnav

边导航:sidebar

左导航:leftsideBar

右导航:rightsideBar

旗志:logo

标语:banner

菜单内容1:menu1Content

菜单容量:menuContainer

子菜单:submenu

边导航图标:sidebarIcon

注释:note

面包屑:breadCrumb(即页面所处位置导航提示)

容器:container

内容:content

搜索:search

登陆:login

功能区:shop(如购物车,收银台)

当前的current

样式文件命名

主要的:master.css

布局版面:layout.css

专栏:columns.css

文字:font.css

打印样式:print.css

主题:themes.css

文/丁向明

做一个有博客的web前端自媒体人,专注web前端开发,关注用户体验,加我qq/微信交流:6135833

http://dingxiangming.com

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品

京东产品运营手记

刚刚接触运营的时候我其实很羡慕那些做商务的同事。

他们能说会道,八面玲珑,往往几个电话就搞定了一个资源互换或者异业合作的项目。

随着我在运营这一行也算入了门,对于商务合作方面的项目我也开始跃跃欲试。

终于有一天,机会来了。

由于我们运营的是母婴社区APP,再加上京东的门头很响,所以找上门来的合作商极其多。那时我们的商务合作由一位美妈负责,她经验丰富,虚实探听之间就能把那些不靠谱或者想空手套白狼的合作商统统给排除掉。最终大浪淘沙,在这其中发现一家极其优质的合作商。

它是一家影业集团,旗下经营了数百家影楼。

为了避免打广告的嫌疑,我是不会告诉你它的品牌。

这家影楼极其有诚意,承诺给我们提供几百套儿童摄影套餐作为奖品。

每一套价值千元。统统免费。

可唯一美中不足的是,

由于这家连锁影楼扩张的地方有限,这个奖品有着极强的地域限制。

它仅限上海地区。

再丰厚的奖品也瞬间有了鸡肋的感觉。

我们为了如何好好利用这些奖品讨论了好久。

拿它促进APP的活跃度?太奢侈。

而且拿着有地域性限制的奖品在我们这种用户遍布全国的APP里搞活动本身就是一种地域歧视。

拿它换量?这主意不错。

一份价值千元的奖品肯定能换来一个下载哦!

但如果最后真的搞成了一换一的结果那还不如叫我们窝囊废算了。

换量的精髓就在于要将手中的资源通过各种不同的手段和花样取得利益的最大化。

这么丰厚的奖品做到一换二,一换三,一换五,甚至是一换十都不足以达到利益的最大化。我们甚至想为此专门做一个H5,但奖品仅限上海地区的这个软肋再次让线上无差别营销也变得有心无力。

怎么样快速在线上锁定一个区域的目标用户,并以此为噱头将他收拢进来呢?

我们望着窗外的大楼,陷入了深深的沉思。

突然某位同事望着公司窗外的大楼一拍大腿!

去找企业合作!

圈定起特定地区的特定目标用户,数量极少可以直接地推;数量稍多可以找社团;数量再多可以找企业;要是数量还多些,可以找本地论坛;要是数量更多的话…..

那你干脆打广告吧。

为什么我们没有找本地的论坛和网站呢?

首要原因是因为我们的目标用户并不是那种出没在本地BBS的主要人群;其次如果我们要去竞品的垂直论坛找人的话,被删帖也是分分钟的事情;再者我们这种小项目里面的小推广,公司实在无暇顾及到我们,真要申请集团资源的话估计得等到黄花菜都凉了;最后我们为什么不去做投放,那就更简单了,一个字:

穷。

综上所述,在排除掉社团这种可控性不好把握的合作团体之后,我们将目标锁定在了寻找企业级进行合作的方式,不仅效率高,而且最后收集活动效果也很方便。

我们很快锁定了一家上海地区员工数达几万人的公司,里面的目标用户大致有几千人。

估算下来,这个量可以做到1换20~40。并且这家企业同样也是互联网企业,里面的用户素质与普通用户不可同日而语。

那接下来问题来了,怎么对接到这家企业负责员工关怀和福利的负责人呢?

京东同样是一家几万人的企业,我们有时候在公司里找自己的同事都找的很费劲,更何况找另一家公司主要部门的负责人……

那时刚到公司,急于表现自己同时又非常想参与进这个商务项目的我主动请缨:

就让我来帮你们联络到那家公司的福利负责人吧!

其实我倒不太担心最后找不到这个人,毕竟只要不是找公司的老总和股东,稍微用点心,中层和基层员工还是比较容易找到的,我比较担心的是:

如果我找到后,人家会不会不care我呢?

也管不了那么多了,先找起来再说。拐了几个弯,我最终成功的对接到这家公司负责员工关怀和福利的负责人。

那我是怎么找到这个人的呢?

我首先发动了微信朋友圈,虽然那时微信里的好友比较少,但由于这家公司很大,通过朋友托朋友的查找,我顺利的先认识了一位这家公司的员工。

但由于和这位员工萍水相逢,并且朋友的面子又不是那么好使。所以这位员工对我的引荐面露难色,我也知趣的没有多问,但是从这位员工的口中我知道了这位负责人的名字。

仅仅知道名字又有什么用呢?

我迅速的用了一款职场社交APP(为了避免广告嫌疑,在此不透露此名字)进行人名的搜索。

搜索不到。

没关系,我接着利用该APP每天有限的加人机会,一口气加了多位这家公司负责人事和行政的好友,当时我估摸着员工关怀这样的部门肯定是架构早人事或者行政部门的体系下,所以加这两个岗位的人一定能快速找到。

加了几个人并且打完招呼之后,我点名告诉他们我希望认识你们公司的XXX。

为什么要点名道姓的说?

因为每个人都是有防备心的,我和他们并不认识,如果上去就唯唯诺诺的恳切请求引荐他们公司负责员工关怀部的负责人,那对方一定认为我可能有骚扰和推销的嫌疑,拒绝我十有八九。

但如果我能知道对方公司具体架构里关键人物的名字,那结果就完完全全不同了。

因为他们潜意识里会认为我这么清楚的知道找谁,连名字都知道,说不定是真有急事。

果然,该公司一位好心的姐姐直接给了我这位负责人的邮箱。在此文中向她表示感谢。

只是这个邮箱我没用上。

后来,之前面试过我的某公司老总出于好心,在朋友圈里看到了我的请求,托他的朋友替我直接对接到了那位负责人,还加上了微信,通了电话。

在这里向这位老总表示感谢。

总之,最终能对接上这位负责人可以说是比较幸运的,但我一直相信,幸运一定是依靠平时的积累而来。

总之各位运营同学,多交朋友是不会错的。

接下来沟通就比较顺畅了。在朋友的面子下,这位负责人给予了我们全力的配合。通过这事我也重新开始觉得,在中国任何行业,哪怕是非常有前瞻性的互联网行业,人脉,面子,交情这些传统企业极其看重的东西依然无比重要。

那这个活动我们是怎么做的呢?

首先负责人群发公司福利邮件,然后几千名目标用户通过邮件下载我们的APP。

我们在APP内专门搭建来了一个活动入口,并设置了一个专属密码,而这个专属密码,自然也会出现在邮件中

目标用户下载APP后,按照提示进入我们的活动页面,输入密码。

奖品我们当然是要白给并且一定要给的啦,但是由于人数众多,为了公平起见:

所以大家都来抽奖吧!

今天抽不到,明天继续抽,持续一个星期,顺便还能促促活…….

你们有没有觉得我好鸡智?

不过这仅仅是搞定了C 端而已。

搞定了C端,我要去搞定B端。

虽然合作商提供给你的是免费的奖品,但你拿过来之后一定要好好掂量掂量。

这种线下合作商提供的服务型奖品最怕出现两点,一个是隐形消费,另一个就是服务不周。

其中任何一点发生,给我们的产品带来的都是灾难。

对京东的品牌更是灾难,因为合作之中,我们的品牌会无形的为商家做背书。

所以在活动发布之前,我和同事们特意跑过去好几次,通过各种途径了解他们本次的推广目标和服务质量。

确实感觉到这是一家放心的合作商。

活动就这样开始了。

貌似一切都不错。活动开始后。中奖信息不断而来。

这时候,我开始使出杀手锏。

我要有意地降低用户对于奖品的期望体验,以做到结果控盘!

我给每位中奖的用户都打了电话,每天至少打100个,打不通的一直打,只强调两点:

  1. 本次活动没有任何附加消费,如果出现问题,第一时间向我投诉
  2. 本次活动不赠送任何底片,但是会赠送一本小相册,请知悉。

以上这些信息在我们的活动规则都有写,不过我太了解用户了,大部分人根本不会去看那冗长的活动规则,这时候,最好的方式就是一个个去口述。

用户们纷纷表示理解,我长舒一口气。

至少当他们拍完照片之后发现商家居然不赠送底片,也不至于太失落。

做运营,既要学会给予用户超期望的用户体验,也要学会适当调低用户的期望

对的,有时候,运营需要左手打右手。

为了更好的控制结果,我还特意偷偷的去跟着我们的中奖用户去拍了外景。

结果这家影业集团扎扎实实的上了一课。

虽然每位用户都是免费拍摄,但上到老板,下到工作人员的服务态度简直一流。

有种恍惚间觉得自己是在在享受尊贵消费的感觉。

我当时很纳闷,既然都是免费的,你们干嘛要这么上心?

后来就明白了。

当用户们的照片纷纷拍出来后,效果极佳。

那大家肯定都想要底片喽。

合作商大手一挥:

底片坚决不赠送!

好在我已经和用户提前打好了招呼……..

但是由于那套照片拍的真是极好,大多数用户纷纷自掏腰包购买了底片。

并且很多用户甚至还感觉物有所值。

当然了,这是用户们的自愿行为,不能算作隐形消费的范畴。

那些没有购买底片的用户也得到了一本精美的相册,不亏。

大家皆大欢喜。

我,商家,用户,不仅双赢,而是三赢。(当然后来还是出现了问题,具体请看后记)

回去之后我在工作日记里写下这么一段话。

你产品中的先进技术是在竞争中保持不败之地的核心,而优质服务则是让它形成口碑并不断让用户产生粘性的关键。商业上的成功归根到底就是两者的结合,很多企业从创立到死亡,也未曾拥有过两者其一。

而对于这家企业逆市发展到逐渐壮大的历史,我也算是深深理解,并看好他们在上海,这个既重视产品,更重视服务的地区的发展。

后记:

这篇文章写于三个月前,应该说随着每个月做项目积攒各种各样的经验,再结合自己的思考和反思,重新再看这个项目,会发现它依然存在着很多问题。

首先,虽然这家合作商非常优质,但最后我们没有想到的是,他们的工作人员还是发生了疏忽,导致某些用户拍好的相册丢失。由于是免费,肯定无法赔偿,但补拍的话用户的体验则大大受损。所以现在双方一直在扯皮当中。我的同事还抽出时间进行了专门的调节。

由此可见,在选择线下合作商的时候,即使已经再谨慎,但因为线下机构人员以及各种环节上总会有人为的疏忽和不负责,就使得合作项目一直处于一个高风险的境地。这也是现在很多O2O项目为什么始终无法提升服务质量的根本原因。因为相比线上的很多推广和服务可以用程序代替,线下更多的是需要充满着无限变数的“人”来服务。哪怕海底捞已经把人的管控做到了极致,但纵观整个线下行业,又有几家服务媲美得过海底捞呢?

而此项目做完之后,我们重新评估来看,这种线上和线下的结合方式非常不适合我们这种人数少的团队人数去做。因为中间涉及的沟通成本,流程成本,执行成本都极其高昂,合作又中充满太多不确定性,效果其实也并不见得很好。在后期我又参加过两场地推活动后,更加深刻认识到,如果是小团队,不到万不得已,千万不要切入线下去,投入产出比极其不成比例。APP的推广本质上还是要先充分吃透线上渠道和合作,非O2O类的产品,注意,是非O2O类的产品!在人手本就不足的情况下,去做地推,做线下活动,本身也侧面证明着自己在运营和线上推广的无能。

所以在2015年10月,当我接手APP的商务工作之后,线下所有合作全部暂停。

刘玮冬

写于2015年11月25日

#专栏作家#

刘玮冬,微信公众号:刘玮冬运营手记,人人都是产品经理专栏作家。京东上海分公司无线运营经理,负责京东旗下某APP的运营及推广工作。平时专注于互联网运营领域的研究和总结,在APP推广,社区运营,内容运营,用户运营,社会化营销方面有其深刻的思考和独到见解。

转:http://toutiao.com/i6221446989452673538/

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品

一看就明白的爬虫入门讲解-基础理论篇

关于爬虫内容的分享,我会分成两篇,六个部分来分享,分别是:

  1. 我们的目的是什么
  2. 内容从何而来
  3. 了解网络请求
  4. 一些常见的限制方式
  5. 尝试解决问题的思路
  6. 效率问题的取舍

本文先聊聊前三个部分。

一、我们的目的是什么

一般来讲对我们而言需要抓取的是某个网站或者某个应用的内容,提取有用的价值,内容一般分为两部分,非结构化的文本,或者结构化的文本。

关于非结构化的数据

1.1 HTML文本(包含javascript代码)

HTML文本基本上是传统爬虫过程中最常见的,也就是大多数时候会遇到的情况,例如抓取一个网页,得到的是HTML,然后需要解析一些常见的元素,提取一些关键的信息。HTML其实理应属于结构化的文本组织,但是又因为一般我们需要的关键信息并非直接可以得到,需要进行对HTML的解析查找,甚至一些字符串操作才能得到,所以还是归类于非结构化的数据处理中。

常见解析方式如下:

CSS选择器

现在的网页样式比较多,所以一般的网页都会有一些CSS的定位,例如class,id等等,或者我们根据常见的节点路径进行定位,例如腾讯首页的财经部分:

这里id就为finance,我们用css选择器,就是"#finance"就得到了财经这一块区域的html,同理,可以根据特定的css选择器可以获取其他的内容。

XPATH

XPATH是一种页面元素的路径选择方法,利用chrome可以快速得到,如:

一看就明白的爬虫入门讲解-基础理论篇

copy XPATH 就能得到——//*[@id="finance"]

正则表达式

正则表达式,用标准正则解析,一般会把HTML当做普通文本,用指定格式匹配当相关文本,适合小片段文本,或者某一串字符,或者HTML包含javascript的代码,无法用CSS选择器或者XPATH。

字符串分隔

同正则表达式,更为偷懒的方法,不建议使用。

1.2 一段文本

例如一篇文章,或者一句话,我们的初衷是提取有效信息,所以如果是滞后处理,可以直接存储,如果是需要实时提取有用信息,常见的处理方式如下:

分词

根据抓取的网站类型,使用不同词库,进行基本的分词,然后变成词频统计,类似于向量的表示,词为方向,词频为长度。

NLP

自然语言处理,进行语义分析,用结果表示,例如正负面等。

关于结构化的数据

结构化的数据是最好处理,一般都是类似JSON格式的字符串,直接解析JSON数据就可以了,提取JSON的关键字段即可

二、内容从何而来

过去我们常需要获取的内容主要来源于网页,一般来讲,我们决定进行抓取的时候,都是网页上可看到的内容,但是随着这几年移动互联网的发展,我们也发现越来越多的内容会来源于移动app,所以爬虫就不止局限于一定要抓取解析网页,还有就是模拟移动app的网络请求进行抓取,所以这一部分我会分两部分进行说明。

1 网页内容

网页内容一般就是指我们最终在网页上看到的内容,但是这个过程其实并不是网页的代码里面直接包含内容这么简单,所以对于很多新人而言,会遇到很多问题,比如:

明明在页面用Chrome或者Firefox进行审查元素时能看到某个HTML标签下包含内容,但是抓取的时候为空。

很多内容一定要在页面上点击某个按钮或者进行某个交互操作才能显示出来。

所以对于很多新人的做法是用某个语言别人模拟浏览器操作的库,其实就是调用本地浏览器或者是包含了一些执行javascript的引擎来进行模拟操作抓取数据,但是这种做法显然对于想要大量抓取数据的情况下是效率非常低下,并且对于技术人员本身而言也相当于在用一个盒子,那么对于这些内容到底是怎么显示在网页上的呢?主要分为以下几种情况:

网页包含内容

这种情况是最容易解决的,一般来讲基本上是静态网页已经写死的内容,或者动态网页,采用模板渲染,浏览器获取到HTML的时候已经是包含所有的关键信息,所以直接在网页上看到的内容都可以通过特定的HTML标签得到

javascript代码加载内容

这种情况是由于虽然网页显示时,内容在HTML标签里面,但是其实是由于执行js代码加到标签里面的,所以这个时候内容在js代码里面的,而js的执行是在浏览器端的操作,所以用程序去请求网页地址的时候,得到的response是网页代码和js的代码,所以自己在浏览器端能看到内容,解析时由于js未执行,肯定找到指定HTML标签下内容肯定为空,这个时候的处理办法,一般来讲主要是要找到包含内容的js代码串,然后通过正则表达式获得相应的内容,而不是解析HTML标签。

Ajax异步请求

这种情况是现在很常见的,尤其是在内容以分页形式显示在网页上,并且页面无刷新,或者是对网页进行某个交互操作后,得到内容。那我们该如何分析这些请求呢?这里我以Chrome的操作为例,进行说明:

一看就明白的爬虫入门讲解-基础理论篇

所以当我们开始刷新页面的时候就要开始跟踪所有的请求,观察数据到底是在哪一步加载进来的。然后当我们找到核心的异步请求的时候,就只用抓取这个异步请求就可以了,如果原始网页没有任何有用信息,也没必要去抓取原始网页了。

2 App内容

因为现在移动应用越来越多,很多有用信息都在App里面,另外解析非结构化文本和结构文本对比而言,结构化文本会简单多了,不同去找内容,去过多分析解析,所有既有网站又有App的话,推荐抓取App,大多数情况下基本上只是一些JSON数据的API了。那么App的数据该如何抓取呢?通用的方法就是抓包,基本的做法就是电脑安装抓包软件,配置好端口,然后记下ip,手机端和电脑在同一个局域网里面,然后在手机的网络连接里面设置好代理,这个时候打开App进行一些操作,如果有网络数据请求,则都会被抓包软件记下,就如上Chrome分析网络请求一样,你可以看到所有的请求情况,可以模拟请求操作。这里Mac上我推荐软件Charles,Windows推荐Fiddler2。

具体如何使用,之后我再做详述,可能会涉及到HTTPS证书的问题。

三、了解网络请求

刚刚一直在宽泛的提到一些我们需要找到请求,进行请求,对于请求只是一笔带过,但请求是很重要的一部分,包括如何绕过限制,如何发送正确地数据,都需要对的请求,这里就要详细的展开说下请求,以及如何模拟请求。

我们常说爬虫其实就是一堆的HTTP请求,找到待爬取的链接,不管是网页链接还是App抓包得到的API链接,然后发送一个请求包,得到一个返回包(也有HTTP长连接,或者Streaming的情况,这里不考虑),所以核心的几个要素就是:

  1. URL
  2. 请求方法(POST, GET)
  3. 请求包headers
  4. 请求包内容
  5. 返回包headers

在用Chrome进行网络请求捕获或者用抓包工具分析请求时,最重要的是弄清楚URL,请求方法,然后headers里面的字段,大多数出问题就出在headers里面,最常限制的几个字段就是User-Agent, Referer,Cookie 另外Base Auth也是在headers里面加了Autheration的字段。

请求内容也就是post时需要发送的数据,一般都是将Key-Value进行urlencode返回包headers大多数会被人忽视,可能只得到内容就可以了,但是其实很多时候,很多人会发现明明url,请求方法还有请求包的内容都对了,为什么没有返回内容,或者发现请求被限制,其实这里大概有两个原因:

  • 一个是返回包的内容是空的,但是在返回包的headers的字段里面有个Location,这个Location字段就是告诉浏览器重定向,所以有时候代码没有自动跟踪,自然就没有内容了;
  • 另外一个就是很多人会头疼的Cookie问题,简单说就是浏览器为什么知道你的请求合法的,例如已登录等等,其实就是可能你之前某个请求的返回包的headers里面有个字段叫Set-Cookie,Cookie存在本地,一旦设置后,除非过期,一般都会自动加在请求字段上,所以Set-Cookie里面的内容就会告诉浏览器存多久,存的是什么内容,在哪个路径下有用,Cookie都是在指定域下,一般都不跨域,域就是你请求的链接host。

所以分析请求时,一定要注意前四个,在模拟时保持一致,同时观察第五个返回时是不是有限制或者有重定向。