百摩网
当前位置: 首页 生活百科

corona面板怎么设置(COVID仪表板升级)

时间:2023-07-24 作者: 小编 阅读量: 4 栏目名: 生活百科

COVID仪表板升级我最近升级我之前构建的COVIDRails仪表板在这篇文章中,我描述了动机和升级的细节以及共享代码片段每天‬分享‬最新‬软件‬开发‬,Devops,敏捷‬,测试‬以及‬项目‬管理‬最新‬,最热门‬的‬。

我最近升级我之前构建的COVID Rails仪表板。 在这篇文章中,我描述了动机和升级的细节以及共享代码片段。

每天‬分享‬最新‬软件‬开发‬,Devops,敏捷‬,测试‬以及‬项目‬管理‬最新‬,最热门‬的‬文章‬,每天‬花‬3分钟‬学习‬何乐而不为‬,希望‬大家‬点赞‬,评论,加‬关注‬,你的‬支持‬是我‬最大‬的‬动力‬。

早在2020年, 我写了一个使用Rails 6.0.2和ruby 2.5.1 COVID仪表板 。 给定一个日期范围,它显示一个线图的累积以及增量数据证实,死者,恢复情况。 其数据来源:

  1. COVID-19存储库的数据中心系统科学与工程(CSSE)约翰霍普金斯大学:这个GitHub库提供了一个CSV文件每天与国家层面的累积数据。
  2. 这个网站用来提供印度state-wise统计数据 但不幸的是已经停止操作。 国家级数据只有通过30 - 10月- 2021和可以获得通过REST API以JSON格式。

CSSE每天提供累积数据,而covid19india.org提供每日增量数据。我最近升级应用程序。 在这篇文章中,我描述了动机和升级的细节以及共享代码片段。

目标

该系统有两个 Python 和 Ruby 脚本 生成CSV格式的数据集 。 数据插入到数据库,Rails仪表板访问。

四个生成器脚本:

    gdc.py :环球数码创意代表全球每日累计。 脚本CSV文件作为命令行参数,提取每个国家的数据,并打印出来。 输出重定向到一个文件中 数据集/ global_daily_cumulative 文件夹中。 一个控制台的命令来运行它:

python3 gdc.py ../COVID-19/csse_covid_19_data/csse_covid_19_daily_reports/04-25-2020.csv > datasets/global_daily_cumulative/04-25-2020.csv

    gdd.py :GDD代表全球每日三角洲。 脚本计算三角洲数字减去一天的前一天的累积的号码的那一天。 输出重定向到一个文件中 数据集/ global_daily_delta 文件夹中。 一个控制台的命令来运行它:

python3 gdd.py datasets/global_daily_cumulative/04-25-2020.csv > datasets/global_daily_delta/04-25-2020.csv

    idd.rb :IDD代表印度日常三角洲。 脚本中提取的数据一天,日期作为命令行参数提供。 输出重定向到一个文件中 数据集/ india_daily_delta 文件夹中。 一个控制台的命令来运行它:

ruby idd.rb 25-Apr-20 > datasets/india_daily_delta/04-25-2020.csv

注意日期格式使用covid19india.org dd-month-yy。

    idc.rb :IDC代表印度日常累积。 脚本计算通过添加那一天一天的累积数据的增量(δ)前一天累积的号码。 输出重定向到一个文件中 数据集/ india_daily_cumulative 文件夹中。 一个控制台的命令来运行它:

ruby idc.rb 04-25-2020 > datasets/india_daily_cumulative/04-25-2020.csv

daily_all。 rb程序读取所有CSV文件在每个数据集目录,使聚合数据文件整理文件的内容。 例如,在global_daily_cumulative文件夹中所有文件的内容是global_daily_cumulative.csv整理。 主文件中的每一行数据的日期作为第一个字段。 文件名称:

  • global_daily_cumulative.csv
  • global_daily_delta.csvindia_daily_cumulative.csvindia_daily_delta.csv

生成的日常文件和四个聚合数据文件都有相同的数据格式:日期,地点,确认,死亡,恢复。

问题是,我必须运行的四个程序一天的数据。 当然,我可以堆一组命令一个星期在脚本文件并运行文件,但它仍然需要手动工作准备。

我曾经将数据插入到PostgreSQL通过使用 psql 通过CSV文件作为参数。 一个典型的命令,如下所示(在Windows上):

PowerShell

"C:\Program Files\PostgreSQL\13\bin\psql.exe" -h localhost -U postgres -d covid19 -c "SET client_encoding TO 'UTF8';" -c "\copy global_daily_cumulative(date, place, confirmed, deaths, recovered) FROM 'E:\Code\Corona2020\covid19\global_daily_cumulative.csv' DELIMITER ',' CSV;"

在Linux上,命令是:

psql -d covid19 -c "SET client_encoding TO 'UTF8';" -c "\copy india_daily_delta(date, place, confirmed, deaths, recovered) FROM '/var/www/datasets/covid19/india_daily_delta.csv' DELIMITER ',' CSV;"

完整的工作流程如下图所示:

有三个手动步骤。 我的目标是要做 的端到端自动化 。 的想法是只做一个git克隆或把我的电脑和运行一个Ruby文件。 就是这样。 同时,我也打算 升级的仪表板的技术堆栈 .

实现

我选择的语言肯定是Ruby,我移植两个Python程序Ruby。 四生成器脚本成为Ruby关联类的业务逻辑调用方法。 同样,我封装psql命令关联 InsertCovidDataInDb 。 global_daily_cumulative插入数据的文件。 csv, global_daily_delta。 csv, india_daily_cumulative。 csv和india_daily_delta。 csv表global_daily_cumulative, global_daily_delta india_daily_delta和india_daily_cumulative分别。

一个关联是一个Ruby类,包括关联的宝石,调用方法,编写业务逻辑。 没有创建一个类的对象,调用“叫”的方法来运行业务逻辑。 使用类似于Java静态方法。 环球数码创意的文件。 rb有很棒的课 GenerateGdcData gdd。 rb已经 GenerateGddData ,国际国内直拨电话。 rb已经 GenerateIddData 最后idc。 rb已经 GenerateIdcData 类。 例如,下面的代码 GenerateGdcData :

Ruby

require 'interactor'brrequire 'date'brrequire 'csv'brbr$indexes_to_read = {}br$indexes_to_read['format1'] = [1,3,4,5]br$indexes_to_read['format2'] = [3,7,8,9]brbrclass GenerateGdcDatabrinclude Interactorbr brdef callbrcountry_data_hash = {}brDir[context.folder'/*.csv'].each do |file_path|brfile_name = File.basename(file_path, ".*")br br# if file_name is before 03-22-2020, file_format = format1 else format2brfile_date= Date.new(file_name[6..9].to_i, file_name[0..1].to_i, file_name[3..4].to_i)brfile_format= file_date < Date.new(2020, 03, 22) ? "format1" : "format2"brfile_date_str = file_date.to_sbr brcountry_index= $indexes_to_read[file_format][0]brconfirmed_index= $indexes_to_read[file_format][1]brdeaths_index= $indexes_to_read[file_format][2]brrecovered_index= $indexes_to_read[file_format][3]brbrCSV.foreach(file_path, headers: true) do |row|brcountry = row[country_index]brif country == "Mainland China"brcountry = "China"brelsif country == "Korea, North"brcountry = "South Korea"brelsif country == "Korea, South"brcountry = "South Korea"brelsif country == "Gambia, The"brcountry = "Gambia"brelsif country == "Bahamas, The"brcountry = "Bahamas"brelsif country == "The Bahamas"brcountry = "Bahamas"brelsif country == "Gambia, The"brcountry = "Gambia"brelsif country == "The Gambia"brcountry = "Gambia"brendbrbrrow[confirmed_index] = row[confirmed_index] ? row[confirmed_index] : 0brrow[deaths_index]= row[deaths_index]? row[deaths_index]: 0brrow[recovered_index] = row[recovered_index] ? row[recovered_index] : 0brbrconfirmed = row[confirmed_index].to_ibrdeaths= row[deaths_index].to_ibrrecovered = row[recovered_index].to_ibrbrif file_format == "format2"brrow[0] = row[0] ? row[0] : 0brrow[5] = row[5] ? row[5] : 0.0brrow[6] = row[6] ? row[6] : 0.0brendbrbrif country_data_hash.has_key? [file_date,country]brcountry_data_hash[[file_date_str,country]][0]= confirmed if confirmedbrcountry_data_hash[[file_date_str,country]][1]= deaths if deathsbrcountry_data_hash[[file_date_str,country]][2]= recovered if recoveredbrelsebrcountry_data_hash[[file_date_str,country]] = [confirmed, deaths, recovered]brendbrendbrendbrcontext.gdc = country_data_hashbrendbrend

主程序是在一个新的文件,generate_covid19_data.rb。 它的功能很简单:叫五个扶少团团员。

随着自动化升级,我升级堆栈:即。 从2.5.1 Ruby红宝石3.1.1; Rails从6.0.2 7.0.2.3 importmap顺风 ; 4.1.3 Chartkick从3.4.2; 最后,从12到14 PostgreSQL。

每当我现有的应用程序升级到Rails 7,我的方法是生成一个示例应用程序和非功能性文件复制到现有的应用程序。 具体地说,这些都是本、自由和app / javascript文件夹。 从那里我做其他的变化取决于哪种包装方法我选择。 在这种情况下,我改变了 webpacker 来 importmap 的,所以我需要确保文件bin / importmap。 rb在场并在application.html.erb javascript_importmap_tags。

如何运行

克隆CSSE GitHub回购。

$ git clone https://github.com/CSSEGISandData/COVID-19.git

克隆存储库。

$ git clone https://github.com/mh-github/covid19.git

创建一个名为covid19在PostgreSQL数据库的数据库。 创建四个表。 的命令是 可以在GitHub从92行开始 .rails更新covid19 / /仪表板/ config /数据库。 yml与数据库用户名、密码和端口号。 在文件insert_covid_data_in_db输入相同的值。 rb。到项目根目录:

$ cd covid19

你需要ruby-3.1.1。 如果你使用数位视讯,安装这个版本和使用。

$ rvm install 3.1.1br$ rvm use 3.1.1

安装 httparty , pg , 很棒的 宝石,如果你没有在你的系统。

$ gem install httparty pg interactor

插入数据到数据库中。

$ ruby generate_covid19_data.rb path/to/COVID-19

去仪表板文件夹:

$ cd rails/dashboard

切换到ruby 3.1.1。

$ rvm use 3.1.1

安装所需的宝石。

$ bundle install

运行服务器。

$ rails s

在浏览器中访问仪表盘http://locahost: 3000。 这是澳大利亚的截图显示的图表。

我把代码捕获数据插入时间。 psql似乎非常快。 以下数字:

表格

行

时间(秒)

global_daily_cumulative

171502年

3.09

global_daily_delta

171502年

3.087

india_daily_cumulative

21677

0.335

india_daily_delta

21195年

0.323

这些都不是坏的考虑到我的基础设施是我的桌面PC与i5 - 4570 CPU @ 3.20 ghz处理器,20 GB RAM, Windows 10 Pro v21H1, WSL2。 我PostgreSQL在Windows上运行,在WSL-Ubuntu主程序。

结论

无论项目大小,总会有机会的 重构 和自动化。 即使你的程序是一个基本教程类型,其技术堆栈升级到最新版本给实践和学习,你可以应用到你的工作的应用程序

    推荐阅读
  • 流沙鱼缸的过滤怎么解决(流沙鱼缸的过滤怎么办)

    跟着小编一起来看一看吧!流沙鱼缸的过滤怎么解决可以使用物理过滤,滤材为过滤棉(粗/细)。利用滤棉中的纤维把水中的不溶性杂质、废物阻隔下来。滤棉常洗常换,能有效减少缸中有机物的含量,进而减少硝化系统的负担,再进而减少最终矿物质废物的产出。忽视物理过滤的过滤配置方案,不客气的说,是把鱼缸当成化粪池了。

  • 经常熬夜的人终于不用太担心了(熬夜等于慢性自杀)

    熬夜等于慢性自杀人的一生有1/3的时间花在睡觉上,假如一个人能活到78岁,那么其中有26年是⽤来睡觉的,我们为什么会需要这么⻓的睡眠时间呢?因为⼈体在进⾏学习和⼯作活动后,⼤脑机能的损耗会远远超过其恢复速度,表现为疲。

  • 室内健身器材有哪些(看看你知道几种)

    在跑步机上,健身者可以根据自己的情况来设置跑步的速度、里程以及时间等,同时也能够快速计算出健身者消耗的卡路里、心率等,是健身者颇为喜欢的一种健身器材。哑铃“有雕塑肌肉的锤凿”之美誉,分为固定重量哑铃和可调式哑铃两种,主要用于肌肉训练和肌肉复合动作训练,不同的锻炼方法可使身体不同部位的肌肉得到锻炼。

  • 康熙微服私访记中小桃红扮演者(38岁34)

    近日,《康熙微服私访记》里的"小桃红"刘淼更新视频,谈及了她与侯堃打算拍摄《康熙微服私访记》外传的原因。刘淼表示,在去年夏天因为一场聚会,她与演员侯堃以及其他的工作人员萌生了想要拍摄《康熙微服私访记》外传的想法。当时只有16岁的她在戏中饰演宜妃的侍女"小桃红",如今这么多年过去,刘淼的外表似乎没有发生太大变化,依然十分清纯。

  • 阀阅是什么意思(阀阅的意思是什么)

    阀阅是什么意思阀阅是一个汉语词汇,读音为fáyuè,释义为:功绩和经历。是指有功勋的世家、巨室。仕宦人家门前题记功业的柱子。宋叶适《上孝宗皇帝札子》:“以奔趋官簿为阀阅,以勾校朱墨为详陈。”清和邦额《夜谭随录·赵媒婆》:“奄至一巨宅,闳高峻,阀阅焕然。”宋秦观《王俭论》:“自晋以阀阅用人,王谢二氏,最为望族。”清刘大櫆《序》:“而世俗以门第相高,往往自矜其阀阅,而轻视他族为小姓。”

  • 种生瓜子的方法(种生瓜子的方法如下)

    选择产量高、质量好、品质佳、商品性好、抗叶部斑病、耐菌核病、空瘪率低、发芽率高、发芽势强的优良品种,并进行种子处理,充分发挥“种尽其用,地尽其力”的作用。施足底肥是夯实向日葵生长发育的基础。适时早播,可防止或减轻叶部斑病和菌核病的发生,对向日葵的产量和质量影响很大。合理密植,有利通风。加强中耕,适时追肥。要搞好病虫害的预测预报,一旦发生,立即防治,力争做到治早治小治了。

  • 剧本杀拿到剧本怎么玩(线下剧本杀玩法)

    作为一个年轻人,相信大家对于剧本杀还是非常熟悉的。因为这也是目前非常火爆的一个桌游,在当前会拥有着较好的地位。其实剧本杀游戏本身就是一种强社交属性的游戏,慢慢的也得到众多年轻人的认可,在周末的时候完全可以叫上自己的朋友一起玩耍,但是到底应该怎么玩呢,首先就应该掌握线下剧本杀玩法。相信当你在玩这个游戏时,也同样能够知晓这中间到底会有哪一些细节,如何才能够拥有着更好的游戏体验。

  • 电灯泡是什么意思(网上经常说的电灯泡什么意思)

    电灯泡是什么意思电灯泡:主要指男女谈恋爱时碍手碍脚又不知趣的第三者。很多人认为灯泡可以发光,而影响了现场浪漫气氛,这是一个误解。日常生活中多用于第三人调侃另两个人之间较为亲密的关系。因为在粤方言里有一个歇后语,电灯胆——唔通气。灯泡,是真空的物体,不能通气的;广东话之“唔通气”,是指一个人不懂世情,不知回避的意思。后来随着语言交流的扩大化,使得普通话中电灯泡也多了这一层意思。

  • 贵阳旅游攻略(需要怎么玩)

    贵阳旅游攻略黔灵山公园是国家4A级景区,深受外地来的游客喜爱。景区内风景优雅,秀美安逸,是本地广大市民喜爱的休闲养生之所。我们的路途可以相对简单一些,游玩过黔灵山公园之后可以在出来的街头小巷品尝一些贵阳的特色小吃,如:豆花面等。可以选择相对于城市靠南边的花溪公园以及市中心的繁华商业区游玩。花溪公园位于南郊17公里花溪区内,占地800余亩,也是一个休闲养生的要去处。

  • 汽车贴膜选购指南纯干货(干货)

    但强生的质地硬一些,抗划性好。目前前档加车身应在2000元左右。其前档C70是目前目前市场上销售最好的高端前档贴膜之一,售价基本上在3600多元。