当一个大的国家数据集显示一个 退伍军人事务部的大规模增加 8月份落在我们的书桌上,我们向自己询问了同样的问题,通常开始我们的数据应用程序开发过程:我们可以使用哪些工具和技术来最佳展示此材料?我们在过去几年中磨练了杠杆的方法,同时融入了一些新的方法。我们甚至在路上学到了一些教训,这可能有助于您的新闻室在嘎嘎作响的数据中考虑。

这篇文章分为两部分。首先,我们将讨论建立“研究应用程序”是如何快速开发智能新闻产品的伟大方法。其次,我们将讨论我们用于构建此特定应用的工具以及我们如何将JavaScript MVC框架用于我们的优势。

我们希望通过使用以下新闻应用程序的一些技术,开发人员可以建立在纪录速度下使用复杂(和自由!)工具的应用程序并创建参与新闻产品。

研究应用程序

数据以许多不同的方式来到我们的新闻室。通常,它是为了响应报告者提交了公共记录请求,但我们还刮掉了网站,并将我们的钩子陷入了多个不断更新的数据流。

所以,一旦我们拥有数据,我们如何制作.dbf,.xls,.csv,.pdf和.json文件一起播放?我们的答案是编写清理我们获得的各种数据集的加载脚本并将所有数据推向框架。

这就是我们如何开始研究应用程序。一项研究应用程序是一个创建的应用程序,以“采访”数据,并找出我们有问题的答案。我们通常使用Django和PostgreSQL进行这些东西,但研究应用程序不是特定于堆栈的。通过将数据投入数据库和框架,我们开始在建模数据时开始。它还可以节省大约一段时间,是否会收集它的数据或过程。具体与Django,我们可以使用ORM管理和编织所有数据源。

它还允许我们利用许多强大的Python工具,例如 fuzzywuzzy. 名称匹配和 熊猫 用于统计分析和地理查询。一些例子:在追逐戴维斯的指导下,我们的前技术总监我们使用了一种空间聚类算法来寻找加利福尼亚州社区学院办事处的集群。我们还使用机器学习算法从美国海关和边境保护中挑选出与药物相关的新闻稿。

研究应用程序允许我们进行强大的分析形式,所有在一个可再现的捆绑包中。对于长期项目,我们可以发布非常基本的网页,显示整个团队可以从地图,图表和表格中显示正在进行的分析。显示的所有数据都是最新的,易于更新。从乱扔垃圾收件箱和文件系统中保留过日期电子表格。如果记者有一个特定的查询来运行,我们会编写一个模型方法:立即记录和易于调整。从乱扔垃圾分析师的笔记中保留了缺乏的SQL查询。

API统治了我周围的一切

由于我们所做的大部分都有很多前端交互性(映射,滑块等),因为我们经常为我们的国家数据集的切片获得请求,我们发现它有助于自己从自己的应用程序运行我们的应用程序蜜蜂。这种方法还有助于使我们的数据更加开放,并且可以对想要进行自身分析,本地化和报告的人们更开放和访问。

我们的选择工具是 django tastypie.,因为它很容易设置和合理地记录。它输出JSON(以及其他格式),这是表示数据的好方法,并使基于JavaScript的交互式微风。发布时间,我们的数据驱动的交互式,以及我们用于构建它的数据,可以同时启动。

我们在我们正在进行的等待时间覆盖申请VA福利的退休时间的覆盖范围内取得了巨大成功。通过开辟数据并鼓励全国范围内的媒体合作伙伴,为自己的地区本地化,我们已经启用了超过15个媒体网点来创建来自我们工作的原始的,当地故事,其中几十多个引用了他们的报告中的信息。我们的突出显示圈子 互动地图 显示我们的媒体合作伙伴将数字与当地退伍军人的经历配对的地方。

我们也用我们的方法 美国 - 墨西哥边境药物癫痫发作API。它是令人难以置信的富人,有超过130,000人癫痫发作的大麻,可卡因,甲基苯丙胺和海洛因的数据,并由美国海关和边境保护和美国边境巡逻。如果您对数据感兴趣,请挖掘或联系。

我们与Apiate处方数据相进一步,创建一个 逐步的本地化指南 除了应用程序以及帮助人们了解这些数字。我们是 已经看到了结果.

建立前端

在我们对此项目的初始工作中,我们使用了通常的嫌疑人:Supplbars.js for模板,用于DOM操作和Ajax的jQuery,用于CSS框架的映射和引导3的传单。此应用程序的早期版本使服务器调用API来检索JSON并将响应发送到车把以创建模板。我们花了大约一个月的时间,我们很接近包裹起来,但我们因缺乏枯萎病而感到困扰。

例如,读者如何使用社交媒体或电子邮件专门对其本地VA系统分享信息?这几乎总是一个我们想要的功能。我们以前建立在分享各个较大的数据集的片段中,但它涉及大量的自定义代码来读取URL获取参数,然后在后台拉出一些杠杆。此外,管理一般的JavaScript对象一般是一个艰难的任务,代码越来越难以读取。

开发人员和记者相似地处理了对其产品的11小时变化。有时它是一个错误修复,有时它是从上面的请求,有时它会为一个故事找到更好的角度或来源。在我们的情况下,我们意识到通过重构应用程序,我们可以用一块石头杀死很多鸟类。

ember + django

在我们以前的应用程序中 VA的残疾福利积压, 我们用了 backbone.js. 处理VA处理中心的位置。为了探索新领域,我们决定建立 ember.js..

ember.js是漂亮的流血优势。事实上,它的API只有1.0(即他们锁定了API的变化),同时我们建立VA Apiates Interactive。尽管是全新的全新,Ember.js证明有助于在URL周围构建应用程序,并为管理应用程序提供了很大的功能。

笔记: 让ember和django很好地参加一些工作,但幸运的是许多伟大的开发人员已经完成了艰苦的工作。查看此帖子的底部,用于我们用于使Ember与Django一起使用的版本/工具。

在我们的最终产品中,作为用户点击应用程序,模板和地图将在不实际重新加载整个页面的情况下进行调整。编辑任何URL,例如/ region / 14到/ region / 13,并且该应用程序将移动到该模型,更新模型的模板并立即获取相应的传单信息。按浏览器中的“返回”,同样的事情会发生。这是ember.js在工作。 Ember正在观看显示的模型的状态。这一切都始于 ember路线:

app.router.map(功能 () {
    //截断的输出
    .resource('区域',{path: '地区/:Region_id'});
});

Ember看到了这一点 地区 路由并隐式创建在查找我们的区域模型的内存中的RegionController对象,并为路线提供正确的数据。 ember中的控制器在模型和路线之间移动数据。如果您的JSON格式化了Ember期望的方式,您甚至不需要明确创建模型。特殊:Region_ID语法告诉Ember要对API进行AJAX调用以获取模型的ID属性。例如,前往Va-opiates.Apps.CironLine.org/#/Region/13在浏览器中获取Va-Opiates.Apps.CironLine.org/api/v1/Region/13,并将数据返回给应用程序。

Ember观点 允许您控制某人与页面交互时会发生什么,例如,单击按钮。该应用程序使用Amber视图来根据用户交互来调整内容。

ember.js也让你 观察 更改应用程序状态。例如,当用户从一个区域到另一个区域时,我们确保运行一个函数来基于新模型重建地图。

app.regionmapview. = Ember.View.extend({
        //截断的代码
    modelChanged: 功能(){
        var. Region_id. = .get('控制器')。得到('id');
        Apiates.region.buildMap(Region_ID);
    } .observes('controller.model')
});

在这里,Ember在更改模型时会观察模型并在ModelChanged()函数中运行代码。

值得一无所获,而Ember在网页周围移动内容,它不会很好地处理疯狂嵌套的JSON。考虑到推动新闻应用程序的数据往往是漂亮的嵌套,值得将API保持尽可能简单。否则,你必须乱搞以做事。确保您讨论您的API 第一的 - 在深入摩羯座之前。

得到教训

今天开发人员可用的灵活性是令人惊讶的,我们在CIR努力使我们的开发过程尽可能顺利,简单。实时,我们可以将数据加载到数据库中,使用框架模拟它并具有完成的数据的Live JSON馈送 在晚餐前。进步!

虽然前端代码很有趣,但首先建立研究申请至关重要。通过从头开始使用Live API,我们看到SewHand如何使用我们的数据来建立应用程序。此外,我们能够根据我们需要的内容来改进API本身。滚雷!

代码附录

●      django tastypie.适配器

●      Ember 1.0.0.rc-6

●      ember数据0.13

●      把手1.0.0.rc-4

Agustin Armendariz

Agustínarmendariz是一位专门从事调查报告中心数据分析的调查记者。他以前在圣地亚哥联盟 - 论坛上工作,他是看门狗报告团队的数据库专家。虽然在那里,他已经登记了城市财务,重建项目和丧失抵押品赎回权。他在华盛顿的美国大学赢得了硕士学位,D.C.Agustin在公众诚信中心工作,是出版物的贡献者“购买总统”(2004年),这是纽约时报畅销书。

Michael Corey

迈克尔库伊是透露的高级数据编辑器。他带领一支关于使用新闻,统计和编程的工具蒸馏出大量数据集的数据记者团队。他的专业包括映射,美国墨西哥边境,科学数据和遥感。 Corey的工作已经荣获了在线新闻奖,艾美奖奖,波尔克奖,IRE奖章和其他国家奖项。他以前为Des Moines注册并毕业于德雷克大学。他是在美社资讯加利福尼亚州的埃米德维尔,办公室。