竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


307月/150

第一次见到这么棒的《三字经》

发布在 邵珠庆

第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》
第一次见到这么棒的《三字经》

297月/150

D3.js 接触

发布在 邵珠庆

1. 初识D3.js

相信大多数人对D3.js并不陌生。这是一个由纽约时报可视化编辑 Mike Bostock与他斯坦福的教授和同学合作开发的数据文件处理的JavaScript Library,全称叫做Data-Driven Documents。

D3的应用非常广泛,现在 成为了主流数据可视化工具之一,下图仅仅是给出了D3.js广泛应用的冰山一角。更多的作品可以访问这里

纽约时报出品的一些赫赫有名的数据产品,也都使用了D3.js,比如 “512 Paths to the White House”以及奥巴马2013财政计划

512waysToTheWhiteHouseNYT

nytimes_obama_budget2013

2.用D3.js制作动态图表

笔者手里有一份美国各大投资管理公司雇员数量从2000年到2012年的数据。这是一份应该算是最简单的,不需要任何整理的数据资料 —一张Excel表格中明确列出公司名字、年份、雇员数量。从这张表格开始,到最后成功使用D3完成图表,对于一个初学JavaScript的人来讲是一个艰难而充满乐趣的过程。幸运的是,这是一份整齐简单的数据,因此笔者可以直接跳过整理数据这一步。

– 设计的重要性

在设计之前,要想清楚以下一些基本问题:

数据点(data point)有哪些?

哪些内容是读者期待的?哪些是记者想要表现的?

用什么样的形式、动态效果表现数据?

数据作为单独内容还是伴以文字报道?

最适合制作的可视化的工具是什么?

作为新手,这个步骤尤其关键,多和产品经理以及文字编辑沟通,设计好最理想的方案是进行下一步的必要条件。笔者的作品可以作为一个反面教材。

初稿

终稿

由于各公司的规模不同,如果单一展示13年来雇员数量上的变化,很难看出各家公司成长和衰落的速度。因此以在第一版设计稿中,专门将雇员数量百分比变化拿出来单做了曲线图。关于曲线图,柱状图,饼图,甚至气泡,或者使用自定义的图片、图标等等选择需要依照具体情况来确定。笔者选择了最简单的线、柱图,是为了更加容易上手。

然而,按照第一版设计,将图表做出来后,发现操作体验并不好。由于图表上每一个元素都可以用来驱动效果(坐标轴、曲线、柱状图、年份、年份指示点等),反而会使读者略感困扰。并且,即使取消某些驱动,由于上下两图分开展示,读者体验不够流畅。另外一个先前没有注意到的巧合是,公司数量和年份数目都是13,柱状图和图表最上方时间轴的意外的对应有会产生误解。所以,最后不得不放弃第一版,重新设计下面的样式。

在新闻编辑室做图表设计,由于刊物的风格,受众的特殊,会有不同的限制,但总的来说有以下一些需要注意的方面:

 配色:要根据刊物的风格,选择合适且不超过三个以上的主色调。(一个由于元素过多令人难以消- 化的例子是卫报的同性恋权益报道)。

字体:考虑读者的年龄群。笔者所在的集团主要做商业投资和养老保险的报道,读者群主要是中年= 人士。这样便不易选择较小字号和较浅的颜色。

操作功能:操作越人性化、越明确越好。尽量让读者在不超过三次点击的情况下呈现出所有的数据变化可能性。

有关数据可视化设计的一些原则,可以参考本站《数据可视化三大致命错误》《信息图四宗罪》,以及 “Stephen Few on Data Visualization: 8 Core Principles”。

– 程序编写以及与IE的斗争

由于笔者第一次从头开始写 JavaScript 脚本,所以先学习了许多网上的资源,列表附在本文结尾。然而,除去外部参考资料,最核心也是最重要的资源就是D3 API Reference了。这是一个在编写D3文件时应该永远打开的页面。

JavaScript不是一个非常严谨的语言,因而比较容易上手。这里说的严谨,仅指在编写过程中,对格式、标点等要求没有其他语言要求那么精确。这是一把双刃剑,一方面,大多数现代浏览器可以自动识别并且运行一份不完美的JavaScript文件(当然,这里只是说少量的符号小错误);另一方面,这样的不严谨会令后期修改文件、功能变得更加复杂,同时,稍旧一点的浏览器无法实现许多功能。

不幸的是,“稍旧一点的浏览器”中就包括了现在仍然在各大公司中广泛使用的Windows IE8浏览器。D3.js生来不兼容IE8及以下的浏览器,但一个产品推出之际,很少有公司能够像纽约时报那样大笔一挥,放弃掉众多IE8用户。这个时候,R2D3就显示出了他强大的兼容功能。R2D3是一个以Raphael.js支持的D3兼容包。使用起来也非常简单,只需要在文件的head中增加一行指向文件,让IE8-用户不运行d3.js而改为运行R2D3.js即可。

PaulIrishMakingFunOfIE

前端工程师大牛Paul Irish讽刺IE浏览器 >>>

与IE的斗争不仅在使用D3.js过程中会遇到,IE8及以下的浏览器(以及安卓2.3及以下版本)不支持可伸缩向量图形(SVG)以及HTML5 canvas,那么,所有在这些“画布”上的创作,都需要借助其他JS library来向下兼容。更多关于浏览器支持元素的查询可以点击这里

在程序的编写过程中,笔者得到了许多帮助,作为一个没有“程序员逻辑”的记者,无数次的返工让我体会到了“大局观”的重要性。以下几点是在编写程序过程中笔者的体悟:

“懒”是生产力:因为懒,所以希望电脑自动来做一切。正确的程序代码是可以实现这个目标的(在可视化范畴内),因此不要因为觉得“实现不了某项功能”而轻易放弃想法。

特殊情况也要自动解决:在遇到个别特殊数据时(比如空白数据),不应手动解决每个特殊问题,而要让程序拥有识别特殊性的能力,这是一套dynamic的程序应该有的功能。

3.新闻工作室的未来 — 人人都是多面手?

制作完人生第一个D3动态图表之后,笔者过足了写JavaScript的瘾,却觉得有些茫然。

记者本身是写作者、记录者,不断追求探索的是“事实”二字。没有什么比白纸黑字的数字更令人信服的,于是一直以来记者们对数据的探索趋之若鹜。随着大数据时代的到来,媒体对记者们的要求不断增加:既要有新闻记者敏锐的嗅觉和精准的写作,也要有利用数据的能力。这个“利用”的程度到底是怎样的呢?找到数据?展示数据?解释数据?可视化还是纯文字?

放眼各个新闻名校,都在不断加强着培养学生的“数据能力”。看新闻院校毕业后求职情况,会发现越多的数据处理能力意味着越高的求职成功率。彼此竞争、纸媒衰落的时代里,当每个记者都意识到数据的重要性而开始探索时,记者必备的能力中会不会有“编程”这一项?当未来的记者都成为了半个程序员的时候,在职记者又该学些什么,以免落后于时代呢?

 有兴趣的读者可以参考各大新闻院校开设的数据新闻课程,数据新闻网授权转载了几家新闻院校的课程:

-《走进哥伦比亚大学新闻学院—计算新闻学

-《走进香港大学新闻学院–数据新闻

– 《斯坦福纪录片 -数据时代的新闻学

资料附录:

书籍类:

– Interactive Data Visualization for the Web

– Eloquent JavaScript

教程类:

– Line Chart in D3

– D3 for Mere Mortals

– Thinking with joins

– How selections work

具体例子:

– D3 Bar Chart

– D3 Line Chart

– D3 Multi Series Line Chart

– Population Pyramids (参考了键盘控制功能)

– Interactive Line Graph

– Horizon Chart (对,我们还做出过horizon chart的版本)

其他:

– Mr. Data Converter

 

207月/150

如何跟踪用户在WAP页面的浏览

发布在 邵珠庆

一、背景

网站分析工具基本的工作原理 这篇文章我们有讲到过,目前主流的网站分析工具都是使用页面标记法来收集网站数据的,一般使用的是JavaScript 代码的方式,我们可以称之为客户端实现。WAP 页面,在本文中特指使用WML编写的用于在功能手机和低端类手机显示的页面。对于WAP 页面,前端实现的方法显然是不可行的,这是因为:1)功能手机和其他低端类手机的网页浏览器很多不支持JavaScript;2)页面标记法代码执行时通常要伴加载一个超过10Kb的JavaScript文件,而这类手机内存非常之小,10Kb 对于它们来说太大了!

那么,如何才能跟踪这些手机上WAP 页面的数据呢?答案就是HTML 页面标记+服务端实现

二、实现方法

 

方法一:

1)根据服务器环境选择对应文件放到服务器上;

如服务器环境是PHP,用百度统计跟踪的话,将百度统计后台提供的hm.php 放到网站根目录。

2)在所需跟踪页面(动态页面)的<head>前用脚本定义好后边发送数据所需必要信息;

如引用hm.php 定义的方法,定义百度统计收数使用的站点ID。

3)在所需跟踪的页面的</body>结束之前插入一个img标签,其src属性使用第二步中定义好的方法来指定;

如src 的值指向百度统计的收数地址,即类似这种形式http://hm.baidu.com/hm.gif?……

具体案例:

多米音乐WAP页面:http://wap.duomi.com/

本站WAP(img) 测试页面:http://jeffshow.com/test/bd/wap_img.php

baidu-wap-tracking

方法二:

第1步、第2步和方法一相同,但是第3步不指向统计工具的收数地址,而指向本站的一个地址,再通过服务器设置302跳转,使之指向统计工具的收数地址。

具体案例:

虎扑体育论坛WAP页面:http://wap.hupu.com/bbs/nba

img-src-302

方法三:

为了帮用户节省流量,不少移动端浏览器可以开启无图模式,而前两种方式都是基于img标记来实现的,开启了无图模式之后,数据不能被发送出去,因而可能导致较大的误差。为了避免这种情况造成数据较大的误差,需要引入link标签代替img标签。

第1步和第2步和第二种方法一样,只是在第3步这里使用link标签来代替,相应的img标签的相关属性也被替换,如src被替换为href等。

具体案例:

手机瑞丽网:http://wap.rayli.com/

本站WAP(link)测试页面:http://jeffshow.com/test/bd/wap_link.php

badiu-wap-link

三、GA 中的实现方法

以上介绍的三种方法是通用型的,为了方便说明是以百度统计为例来介绍的。那么在GA 中,其实现方式如何?是否有什么不同之处?

本质上说,GA 中的实现方式与上述一样,不过细节方面又稍有不同。根据GA 帮助文档,在GA 中WAP 页面跟踪的实现方式分为两种:一种是基于ga.php;另一种是基于Measurement Protocol,GA 推荐的实现方法;

我们分别来看下这两种方法(以PHP环境为例):

基于ga.php

这种方法跟前面介绍的第一种方法相似,前两步是一样的,第3步在GA 中稍有不同。GA 中的实现并不是让img直接请求收数地址,而是附加查询参数请求已经上传的ga.php文件。当服务器收到这个请求后,会解析并执行携带参数的ga.php文件,ga.php文件中定义了发送数据到GA 服务器的方法,执行后相关数据就被发送到了GA 收数服务器。

需要注意的是:

1)不能直接使用property ID,需要把UA-替换为MO-;

2)此方法在2014-4-2 即已被GA 官方弃用,不过经测试,依然可以收数;

3)仅能满足pageview类型hit的发送,因此流量来源和会话相关报表可以正常使用,但是事件统计之类的满足不了;

具体案例:

多米音乐WAP页面:http://wap.duomi.com/

本站WAP测试页面:http://jeffshow.com/test/ga/wap_img.php

ga-wap-img

基于Measurement Protocol

GA 对于Measurement Protocol 的用处描述如下:

  • Measure user activity in new environments.
  • Tie online to offline behavior.
  • Send data from both the client and server.

即Measurement Protocol 可以用来衡量新场景下的用户的行为,打通线上和线下,从客户端或服务端发送数据。相比前一种方法,使用Measurement Protocol的方法可以实现复杂的事件统计、电商统计等功能。其具体使用方法和前述类似,即构造http请求发送到GA 收数服务器即可。

四、总结与扩展

随着智能手机的普及,不支持JavaScript 的情况越来越少,相应的,WAP 页面也几乎消失殆尽。尽管如此,服务端实现的方法依然有其价值所在。比如说,我们要实现某些敏感数据的统计,但是这些数据又不能出现在页面源代码中;或者要统计一些文档(如PDF文档)被用户直接浏览或下载的次数,这些文档对应的地址显然是用不了JavaScript代码的;再比如说,我们要尽可能完整地收集使用无图模式的用户的浏览页面的数据。

以上举例,只是实际可能碰到情况的一个很小的子集。当使用客户端实现的方法难以较好地解决当前的问题,或许是时候考虑下服务端实现的方法了。

五、参考资料

1. Google Analytics for Mobile Websites

2. Measurement Protocol – Using a Proxy -Server

3. 百度统计贴吧

4. Tracking PDFs & Downloads Inside Google Analytics, Server-Side!

Read more: http://jeffshow.com/how-to-track-wap-based-site-in-ga.html#ixzz3gPkMwsaX

107月/150

10个帮程序员减压放松的网站

发布在 邵珠庆

同学们工作之余,不妨放下微博跟朋友圈,来这10个网站感受一下看着就醉了的情境:「念完往上一推音乐键,我往后一靠,潮乎乎的软皮耳机里头,音乐排山倒海。」今天推荐的网站,利用代入感强的图片与音频,迅速帮你抹平焦虑,获得平和心态,特别献给改稿千遍的设计师们。

1.  Calm

这是同类型中最火的网站了,站如其名,「平和」,通过自然的图像(阳光下的暖流、淙淙的小溪等)与缓缓的音乐,帮你在短时间内放松下来。

左侧有时间设定,从 2 分钟到 20 分钟,右底部可以改变音频、图像,调节音量等。还有 IOS 客户端下载呦。

熬夜改稿的设计师们!10 个帮你减压放松的良心网站!

2.  Do Nothing For 2 Minutes

「木头人,两分钟」,这是一个简单到极致的网站,当你打开的时候,自动开始计时,这时间你不能触碰键盘和鼠标,否则 2 分钟会重置。

你需要做的,就是放下手头的工作,静静地享受潮声,这也很棒,不是吗?两分钟足够你冷静下来,休息一下了。

熬夜改稿的设计师们!10 个帮你减压放松的良心网站!

3.  Get Relaxed

如果两分钟不足以让你彻底放松,试试这个。如下图,打开网站后,头枕着双手往后仰,欣赏自然风光,聆听网站为你精心挑选的音乐。

图像 3 秒一换,有 15 种,每种持续大概 2 – 4 分钟,现在,开始吧!

提醒:网站有简陋广告,稍微影响体验。

get-relaxed

4.  LoungeV Studio

前三个都是图像,现在来个新鲜的。这个网站提供高清的自然风光视频 + 音乐。有沙滩、瀑布、水下景色等等,网站背景是一个温馨的客厅,右侧有视频可选,对喜欢看视频的同学来说,还是蛮不错的。

熬夜改稿的设计师们!10 个帮你减压放松的良心网站!

5.  A Soft Murmur

这个网站太棒了!小编玩了好久都舍不得停下来。网站让你自由创造美妙的声音。你可以通过混合不同的声音(雨声、火柴燃烧的声音、打雷声、海潮声…..不一而足。但是,总有一款令你爱不释手!)当然,声音的大小也可以自己调节。

如果你对混合的声音非常满意,也可以分享到脸书、谷歌等….

熬夜改稿的设计师们!10 个帮你减压放松的良心网站!

6.  Nature Sounds For Me

这个比上面那个界面稍逊,但是玩起来更嗨!它提供的声音除了以上的自然类声音,还有很多你想不到的:绵羊咩咩、骏马跺脚喷气、不同的鸟叫声,甚至是心脏跳动、厨房叮当的声音,不仅令人身临其境,而且搭配起来简直不能更欢乐!

当然,它还有 IOS 客户端。

7.  Noisli

这个网站根据你的情绪变化,选择不同的音乐和背景颜色。颜色大多朴素平和,背景声音也有对应的图标可以选择。还有一点贴心的设计是,网站右侧有便签本,你可以一边享受静谧时光一边随手记点事。

为了造福大众,网站还提供 IOS 版。

熬夜改稿的设计师们!10 个帮你减压放松的良心网站!

8.  Soundrown

网站一进去,有 3 个关键词:放松、专注、逃离。的确,它成功做到了这一点。它有 10 种不同的声音帮助你放松心情,也可以混合使用。不同的声音对应不同的背景,网站非常有设计感,相信你会重新回来体验一次。

熬夜改稿的设计师们!10 个帮你减压放松的良心网站!

9.  The Thoughts Room

一句话简洁:世界的秘密——树洞类网站。你可以在这里向全世界倾诉你的任何想法,网站支持 37 种语言,不过看了一下,没有中国…

熬夜改稿的设计师们!10 个帮你减压放松的良心网站!

10.  Raining.Fm

有时候,我们需要的仅仅是一点点雨声来帮助我们平静。网站专门提供雨声,因为单一,所以也更加专业。网站有 3 种不同的雨声类型,右侧有定时器可以在你放松时提醒你,简单也好用的一个网站,赞一个。

熬夜改稿的设计师们!10 个帮你减压放松的良心网站!

107月/150

国内外权威的网上学习资源网站

发布在 邵珠庆

艺术与音乐

  • Dave Conservatoire — 一个完全免费的音乐学习网站,口号是“让每一个人都可以接受世界级的音乐教育”,有视频,有练习。
  • Drawspace — 如果你想学习绘画,或者提高自己的绘画技能,就来Drawspace吧。
  • Justin Guitar — 超过800节免费的吉他课程,有自己的app,还有电子书、DVD等实用内容。

数学,数据科学与工程

设计,网页设计与开发

  • HOW Design University — 主要教授图像与交互设计。
  • HTML Dog — 学习 HTML, CSS 和 JavaScript 编程技能。
  • Skillcrush — 提供职业网页设计与开发课程。
  • Hack Design — 全球顶级设计师教你网页/app设计,完全免费。

综合

  • Scratch – Imagine, Program, Share — 为小孩子设计,通过游戏学编程。
  • Udemy — 通过教学视频教你生活和工作中的实用技能,需要付费。
  • E-learning for kids — 向5-12岁的儿童提供小学程度基础课程。
  • Ed2go — 又一个学习技能的线上课程网站,主要面向成年人。
  • GCF Learn Free — 由 Goodwill Community Foundation 和 Goodwill Industries 创办,教授实用技能。(我已经词穷了。。)
  • Stack Exchange — 嘿!一个类似果壳问答的超赞的问答网站,回答质量都超级高。
  • HippoCampus — 主要面向中学生。
  • Howcast — 通过视频学习日常生活小技能。
  • Memrise — 用游戏化的概念学习语言。
  • SchoolTube — 面向中小学生,称有50万视频。。
  • Instructables — 一个DIY网站。
  • creativeLIVE — 教你摄影、音乐、设计等技能,要付费。
  • Do It Yourself — 教你成为家居改造达人。
  • Adafruit Learning System — 提供免费电子设备DIY教程。
  • Grovo — 学习如何使用上百种网站应用,提高自己的工作效率。

大学课程

IT与软件开发

语言类

  • Duolingo – 中文名「多邻国」,据说学习方式非常有效。我感觉它的app设计得不错。主要推荐英语和别的欧洲语言。(@秋纫 补充)
  • lernu.net – 在多邻国的世界语课程出来之前,这应该是学习世界语最好的网站了吧。不过,它除了课程以外还有一个挺好玩的社区,和一些阅读材料。(@秋纫 补充)