分类 劳动万岁 下的文章

从今天开始一个介绍Google Analytics进阶运用的系列日志,其实没有多少技术含量,主要内容来自
http://code.google.com/apis/analytics/docs/index.html

首先,要清楚以下几点:
1、Google Analytics用document.domain定义一个网站的cookies
2、独立的域名意味着独立的访问者和流量数据,也就是说,在只使用Google Analytics默认代码的情况下,即使是访问不同的二级域名,都会被单独计算
3、独立的域名并不一定是不同的内容
4、子目录使用主域名的cookies

ps:本系列的ID都是google文档中的,想使用的话请更换成自己的

只统计一个子目录

假如我有一个网站www.example.com,还有一个网店www.example.com/myStore/,我只想统计网店的访问数据,需要用到_setCookiePath()方法,统计代码这么写:
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setCookiePath("/myStore/"); pageTracker._trackPageview();
这是因为cookie路径设置为您的子目录,而不是根目录www.example.com

统计同域名下连个子目录

假如我有一个网店,还有一个购物车
www.example-commerce-host.com/myStore/
www.example-commerce-host.com/myCart/
想统计他们的访问数据,需要用的_cookieCopyPath()方法,统计代码这么写:
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setCookiePath("/myStore/"); pageTracker._cookiePathCopy("/myCart/"); pageTracker._trackPageview();
这样就是设置了一个特殊的cookie,由第一个目录提供,也就是myStore目录,这些cookie数据会被复制到myCart目录cookie中

统计A域名及B域名的一个子目录

这是我认为比较有用的应用方式。
假如我有一个网店,使用的是第三方的购物车,这时候需要设定主次,一般自己的是主,第三方的东西是次。统计代码这么写:
主:www.example-petstore.com
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false);
次:www.example-commerce-host.com/petStoreCart
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName("none"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false);
_setAllowLinker()方法是为了让目标网站读取到post过来的数据和cookie,但是这样还不够,还需要用到_linkByPost()方法,将网店的cookie通过HTTP POST传到购物车,因此,在网店的表单里需要这样修改:
onSubmit="pageTracker._linkByPost('www.example-commerce-host.com/petStoreCart/begin.php');"
当然网店的相关链接也要改为这样的:
购物车
还有js形式的写法,用到_link方法
购物车

统计主域名及其二级域名

类似这样的:
www.example-petstore.com
dogs.example-petstore.com
cats.example-petstore.com
统计代码这么写:
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName(".example-petstore.com"); pageTracker._trackPageview();
用_setDomainName方法设定主域名

统计多域名及二级域名

这是一种混杂的情况,基本上是前两种情况相加,统计代码要这么写:
主:www.example-petstore.com
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName(".example-petstore.com"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false);
如果有表单指向了其他域名,需要用_link()方法和_linkByPost()方法将cookie传到其他域名去,用法上面已经写过了。如果表单指向的是二级域名,就不一定要使用_link()方法和_linkByPost()方法了,因为已经设定了主域名。
次:dogs.example-petstore.com
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName(".example-petstore.com"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false);
同样的,如果有表单指向了其他域名,需要用_link()方法和_linkByPost()方法将cookie传到其他域名去
其他域名:www.my-example-blogsite.com
var pageTracker = _gat._getTracker("UA-12345-1"); pageTracker._setDomainName("none"); pageTracker._setAllowLinker(true); pageTracker._setAllowHash(false);

统计框架(iFrame)

假如想把框架中的www.my-example-iframecontent.com数据传到父一级www.example-parent.com的窗口中去,需要用到_getLinkerURL()方法,用js读取框架,统计代码要这么写:
var iframe = document.getElementById("myIFrame"); iframe.src = pageTracker._getLinkerUrl("http://www.my-example-iframecontent.com/");

今天先到这里,谢谢收看,欢迎交流 sluke520##yahoo.com.cn

我在code.google.com新建了一个项目,用来存放自己调整过的scite,姑且叫作scite4chinese

目前是基于SciTE1.79,主要是利用了scite-ru的扩展,所以比较厚颜……
争取将scite打造成最轻便的php编辑器

各目录下存放的东西:
abbrev 存放缩写配置文件
api 存放API文件
doc 存放文档
languages 存放语言配置文件
tools 存放Lua扩展文件

功能及改进(与scite原版比较):
1、加入简体中文翻译
2、增加文件管理,自动列出当前文件所在目录中的文件
3、增加收藏,用于管理最常用文件
4、增加函数列表,可列出当前文件中的函数及参数
5、加强缩写功能,可根据不同文件使用Ctrl+B
6、加入tab转换成空格的功能,快捷键Ctrl+8
7、使用SciTePHPSuit项目加强对PHP的支持,包括自动完成、提示、PHP Doc等等

http://scite4chinese.googlecode.com/files/SciTE.zip

已知bug:
不保存收藏

传说中三月底谷歌的重量级产品上线了,事先听说了各种消息,直到访问了新版音乐搜索才把各种琐碎的线索(主要是知情者各种隐晦的表现)串起来,这个产品真的是蓄谋已久。这几天网络上到处都是有关谷歌音乐搜索的文章,喝彩远大于批评。

最有创新性的无疑是那个泡泡选歌,有些评论将这个功能当作是玩具,实际上并不是。谷歌的第一身份始终是一家搜索技术公司,核心产品就是“搜索”,泡泡选歌是提供给用户一种不同于关键词搜索的新的搜索形式,想到这一点,这个产品并不会让我惊讶。

在这里可以猜测一下这个泡泡选歌是怎么实现的。泡泡选歌的前三个选项分别是:节奏、声调、音色。这三个属性可以看作是歌曲的物理属性,创新点就在这里,后面几个选项更多是文化意义上的(各大试听网站都提供类似的选项)。需要解释一下这三个物理属性的概念,有助于理解技术实现。(部分概念引自维基百科)

节奏是一种以一定速度的快慢的节拍,主要是运用速度上的快慢和音调上的高低把它们组合到一起。通常用中音的长短和强弱表现,现在的流行歌曲里一般都是背景鼓点。节拍就好理解了,小时候上音乐课,一首歌曲会标上2/4、3/4、4/4这样的标记,指的就是节拍,分别是强弱、强弱弱、强弱弱弱。谷歌用舒缓和强烈来区分。
声调的完整意义是指音节在发音过程中的高低抑扬性(音调,或称音高)及顿挫性(韵尾或闭塞音)。这里个人感觉是谷歌音乐搜索的一处错误,后面会谈到。谷歌用低沉和高亢来区分。
音色是声音的特色,取决于不同的泛音,也就是发声体局部振动的频率,根据不同的音色,即使在同一音高和同一声音强度的情况下,也能区分出是不同乐器或人发出的。谷歌用丰富和单纯来区分。

原本区分声音最好的方法是通过区分声音三要素的不同,也就是音色、音调、响度。因为响度决定于发声体振幅的大小,对于搜索歌曲内容没有多少参考价值,谷歌就用了节奏作为替代,形成了三个搜索的参数。每一首歌都有这三个物理属性,可以通过音乐的波形图来表现(如果不好理解,可以打开一个mediaplayer,看看可视效果)。

要考察节奏参数,只需要考察中音区的波动即可,波动剧烈又频繁的,节奏一定快而强,反之节奏缓而弱,同时,歌曲节拍可以作为搜索参数参考,影响搜索命中;考察声调参数,只需要考察高音区和低音区的波动分布即可;考察音色参数,可能需要计算整首歌曲波形峰值的衰减和峰值出现的频率(这里我确实没有想清楚)。

除了波形,还有一些显而易见的因素在搜索中给与更高的权重,比如摇滚歌曲通常节奏较强、新世纪音乐通常节奏舒缓、伴奏音乐和民谣通常音色单纯、交响乐及合唱通常音色复杂、某些歌手擅长高音、某些歌手擅长低音等等。

依照我上面的猜测,就需要做一个相当复杂的工作,那就是建立一个庞大的波形库,好在技术的力量是强大的,市场上已经有了一种专利:音乐指纹。这种技术是通过特殊算法对歌曲波形进行采样,确定歌曲的唯一值,在实际应用中,只要预先载入一首歌曲的部分,就可以准确找到该歌曲。假如谷歌购买了这项技术,它的音乐搜索就完全可以实现现有的功能,而且还可以开发出只需哼唱几句就能帮用户找到歌曲的功能(国外已经有类似的网站出现,不过效果一般)。以Google的技术储备以及谷歌手里的资金,完成这项工作根本不是难点,当然他们可能有更简单的解决方案,只是我想不到或不敢想而已。

面对谷歌音乐这样一个优秀的产品,我不再去夸奖它的优点,只说说我认为有几点不妥的地方:

Flash播放器的内存占用问题。尽管现在的机器内存通常都很大,但是我依然看到有相当部分用户在抱怨谷歌音乐播放的时候内存占用惊人,当然,这不能怪罪于谷歌。
前面我说“声调”这个参数是谷歌的一处错误(也可能是我理解错了)。声调的概念指的是抑扬顿挫,而谷歌给的形容词分明指的是高音和低音,用“音调”这个概念才准确。
搜索关键词时有一种情况考虑不周。在曲库录入中,有一种情况常常遇到,那就是一首歌曲可能有多种语言版本,这时候曲库编辑习惯上会在歌曲名后加上一个括号,写入语种进行标示。比如张国荣的《我》这首歌,直接在谷歌里输入“我”这个关键词搜索是不会返回正确结果的,但是曲库里存在这首歌,名字叫《我(国语版)》。如果能通过正则忽略掉括号部分,可能搜索结果会更加准确。
搜索无结果的时候没有推荐内容(可能与产品定位有关,谷歌不是内容提供商,只是搜索引擎)。

还有几点是我不理解的:
泡泡点歌的翻页。谷歌使用了透视的方法来表现当前泡泡后面还有其他的泡泡,也就是还有其他的结果,箭头成上下状,个人觉得用传统的左右状表现更符合传统,当然,左右状与泡泡目前的表现形式不够符合。
色彩无意义。泡泡的色彩使用了google色,也就是红、黄、绿、蓝这几种logo色,虽然能代表这是谷歌的产品,但是稍显肤浅,不知道下一步会不会向色彩搜索改进。
泡泡形状无意义。使用泡泡这个形式,除了新颖一点,至少我没看出来其他的意义,换成三角也不影响表现形式,如果在试听时泡泡能有一点动作会更好。
播放页需要弹出播放器窗口。虽然可以跟前一代产品结合更好,逻辑上也很清晰,但是毕竟多了一步,我就被浏览器拦截过几次弹出。

要做出谷歌音乐搜索类似的产品,门槛还是相当高的。除技术难点外,最关键还是要解决音乐版权的问题,包括试听和下载的授权。音乐是一种复杂的商品,音乐版权的构成更加复杂,完全可以写一本厚厚的专著。简单来说,一首歌曲的版权是属于一个或多个版权商的,市场上存在大大小小各种版权商(大的如华纳、索尼这样的巨头,他们通常对数字音乐的接受程度不高,甚至是排斥网络发行),要获得一个庞大曲库的试听和下载授权,就需要获得这数量众多的版权商许可,除要花费巨额版权费之外,商务沟通的成本也极高。以谷歌的做法来看,它或它的合作伙伴用金钱硬砸开了四大唱片公司(这里是指版权所有公司,不指运作艺人和专机的经济人公司),然后通过唱片业联合会购买其他歌曲的授权,并许诺给版权商广告分成。歌曲的授权有其特殊性,有一个“保底费”的说法,就是类似于手机话费的“最低消费”,无论某家版权商今年出多少专辑版权,“保底费”不能少。难得的还有谷歌音乐提供了192kbs高音质MP3(普通用户使用普通设备已经很难区分这种音质和CD音质的区分)的正版音乐下载,要知道,下载是一定会影响到歌手专辑销量的,可推测其中的开销巨大。

所谓重量级产品,对市场的冲击必然是明显的,在谷歌音乐推出后,据说百度的股价下跌了5%,百度MP3搜索一直被认为是谷歌无法超越百度的重要原因,这次谷歌釜底抽薪,结结实实捅了百度一刀。从这次产品发布的公关力度来看,李开复对整个产品寄予厚望,虽然我觉得公关文写得一般。再者,它将可能改变国内数字音乐的版图,虽然巨鲸网在与谷歌合作前一直是走正版音乐路线,但受限于品牌不强和网站流量不大,并没有影响到唱片公司和广大最终用户。国内其他试听网站一直想成为数字音乐的发行渠道,不断与唱片公司博弈,取得了一些成果,比如一些歌手的新歌开始在网络首发。当谷歌攻下四大唱片公司之后,就宣告了主流音乐生产商们比以前更加重视和接受网络媒体(更多可能是被迫,因为歌手大部分收入来自演出走穴和广告代言,而不是专辑销售,所以曝光度比销量重要),网络媒体的话语权可能会更强。但是这也是一个洗牌的过程,版权商们势必将谷歌作为合作范例要求其他数字音乐网站与之合作,纵观国内网络,有几个能像谷歌一般有钱?能像李开复一般散财?在版权的压力下,必然有一批中小型音乐网站死掉,用户会向大音乐网站聚集,我想这也是谷歌和唱片公司愿意看到的,因为这才是他们想制定的新游戏规则。

最后展望一下音乐搜索的未来,随着技术的发展,音乐搜索必然要提供更丰富的搜索方式,除了需要完善的旋律搜索外,对歌曲的情感描述、对歌曲的色彩感受、对歌曲的嗅觉感受等都会成为搜索的方式,搜索出了提供音乐本身外,也一定会提供音乐的相关内容,如乐评等,音乐搜索会向拟人化和内容再整理方向发展,因此,谷歌音乐或是网络音乐搜索都还有很长的路要走。

学识浅薄,恐贻笑大方……

:ohh: :ohh: :ohh: :ohh:
Typecho是一个开源的博客程序,它是轻量级的,面向对象的,抛弃了繁琐的MVC构建方式,将所有的功能单纯地封装为一个模块(也就是Widget),使其更加适合开源地并发开发模式,由于没有了Model层的存在,Widget必须直接与数据库联系。现在发布一个0.3预览版。
因为是预览版,所以一定有很多功能的不足,这不是问题,有需求,你可以在
http://code.google.com/p/typecho/issues/list这里提出

官方:http://www.typecho.net/
论坛:http://forum.typecho.org
下载:http://code.google.com/p/typecho/downloads/list
更新记录:http://code.google.com/p/typecho/updates/list
WIKI:http://typecho.org/start
SVN:http://typecho.googlecode.com/svn/trunk/typecho-read-only

事先说明:没编辑器、没附件管理(尤其是这个,以后也可能不会做)

如果你是PHP爱好者,看看代码,一定不会让你失望
如果你是设计师,看看后台设计和CSS,一定不会让你失望
如果你是狂热的开源粉丝,看看typecho使用的GPL开源协议,一定不会让你失望
如果你是一个普通的博客程序用户,可以忽略本帖,因为一个襁褓里的程序不适合你

-----2009-01-05-----
想起个事儿,补充一下,目前可以使用mysql和sqlite,实际上也支持postgresql以及其他的数据库。还有就是可以使用客户端来写博客,比如live writer
WP的转换工具我修改了一下,虽然有点问题,凑合凑合也能用。