Skip to content

LiveCoronaDetector/livecod

master
Switch branches/tags
Code

Latest commit

 

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
css
 
 
 
 
 
 
img
 
 
js
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

LiveCorona

crawl current data crawl cumulative data

취지와 목적

  • 코로나바이러스감염증-19(COVID-19)에 대한 정확한 정보의 전달, 정보의 확산을 위해 2020년 1월 28일 오후 1시 개시된 비영리 정보 공유 서비스
  • 감염병이 재창궐하였을 때 보다 적은 리소스로 해당 사이트를 구축 할 수 있도록 의료 정보 오픈 소스를 만드는데 목적

초창기 이슈

  • 가짜 뉴스 대응 : 가짜 뉴스는 정치적인 목적을 가지고, 어느정도 진실을 포함하고 있어 민사 소송에 여지가 있습니다. 따라서 팩트체크는 언론이나 포털에 링크 연결시켜주는 쪽으로 정리를 하시는 것이 좋습니다.
  • 확진자 이동 경로 표시 : 감염자 이동 경로를 표시하는 것은 매우 민감한 문제입니다. 초창기 텍스트로만 제공하였고, 질병관리본부에서 확인되지 않은 정보는 개시하지 않았습니다.
  • 초창기에는 확진자 인원에 매우 민감하기 때문에 속보를 잘 반영해주실 필요가 있습니다. 하지만, 실시간으로 반영되지 않는다는 것을 꼭 명시해주세요. 속보는 크롤러로 잡기 힘듭니다. 또 오보의 가능성도 있어서 질병관리본부의 발표를 듣고 나서 게시하시는 것이 좋습니다.
  • 초창기에는 크롤러가 잘못 작동할 확율이 높습니다. 크롤링 하는 사이트에서 잘못 집계하고 있을 확율이 높습니다. 또한 외국의 경우 시차가 있기 때문에 시차를 반영한 데이터가 필요합니다.

기술 스택

  • Bootstrap CSS
  • Javascript (Vanilla JS, JQeury, ChartJS)
  • Python

데이터 형식

// 1. 세계 맵에 마커를 찍기 위한 확진자수와 완치자수
var marker = [
    {
        "Name": "이란",
        "Name_en": "Iran",
        "Name_ch": "伊朗",
        "lat": 35.6970118,
        "lng": 51.2097373,
        "확진자수": 139,
        "사망자수": 19,
        "완치자수": 25,
        "추가날짜": "2/21"
    },{
        "Name": "이집트",
        "Name_en": "Egypt",
        "Name_ch": "埃及",
        "lat": 30.0594838,
        "lng": 31.2234448,
        "확진자수": 1,
        "사망자수": 0,
        "완치자수": 1,
        "추가날짜": "2/16"
    }, {
        "Name": "벨기에",
        "Name_en": "Belgium",
        "Name_ch": "比利时",
        "lat": 50.8550625,
        "lng": 4.3053503,
        "확진자수": 1,
        "사망자수": 0,
        "완치자수": 1,
        "추가날짜": "2/5"
    } ...
];

// 2. 선차트용 데이터 세계 확진자수, 세계 사망자수, 세계 완치자수
// data : 확진환자
// data2 : 사망
// data3 : 완치자

var marker2 = {
    labels: ["1/24", "1/25", "1/26", ...],
    data: [845, 1315, 2010, ... ],
    data2: [25, 41, 56, ... ],
    data3: [36, 49, 54, ... ]
}

// 3. 도청과 협조하여 얻은 자료, 입도객현황 그래프 찍는 용도

var 입도객현황 = {
    날짜: ["19년평균", "2/3", "2/4" ...],
    내국인: [37150, 19209, 17633, ... ],
    외국인: [4729, 1866, 1285, ... ],
    중국인: [2957, 755, 156, ... ]
}

// 4. 업데이트 시각이 메인 페이지에 업데이트
var updateLog = {
  date: "2/29",
  time: "17:00"
};

// 5. 지역별 Map을 작성키 위한 데이터
var 지역별확진자 = [
  77, //서울
  6, //인천
  82, //경기
  ...
];

// 6. 여러 데이터 차트를 위한 날짜, 확진자, 전날과 편차, 사망자
var 분석차트_한국누적확진자 = [
  ["2/1",12, 1, 0],
  ["2/2",15, 3, 0],
  ["2/3",15, 0, 0],
  ...
];

지도에 마커 찍는 방법

  • 네이버 지도 API 문서를 참고하여 JS로 작성
  • 경도와 위도는 Google Maps 및 Bing Maps 등에서 별도로 참조해야 함

데이터 출처 및 참고논문

  1. 질병관리본부 코로나 국내발생 동향
  2. 존스홉킨스 CSSE 코로나 데이터셋
  3. 월드오미터 코로나 데이터
  4. 참고 논문
    • Early epidemiolobical analysis of the coronavirus disease
    • Estimation of the reproductive number of Novel Coronavirus

멤버

  • 멤버는 매월 기수를 뽑고 있는 상황이며 프론트엔드 팀, 백엔드 팀, 데이터 분석팀, 디자인팀, 번역팀, 크롤러 팀이 있음
  • 강민성 : 서울시립대(수학과/컴퓨터 과학부 복수 전공)
  • 강태욱 : 한국국제고등학교(제주캠퍼스)
  • 김경남 : 세종대학교(소프트웨어학과)
  • 김남규 : 프론트엔드 웹 개발자
  • 김성진 : 프리랜서
  • 김승민 : 제주대학교(컴퓨터교육과)
  • 김민욱 : 한국해양대학교(IT융합 전공)
  • 김정동 : 부산대학교(기계공학부, 빅데이터 복수 전공, DSC PNU 리드)
  • 김진 : 제주대학교(컴퓨터공학과)
  • 백기승 : Data Scientist
  • 백지오 : 세종대학교(컴퓨터공학과)
  • 석찬희 : 경북대학교(컴퓨터학부)
  • 송진영 : 휴멜로(데이터 엔지니어)
  • 유승엽 : 인하대학교(산업경영공학과)
  • 이권석 : 부산대학교(디자인학과)
  • 이수연 : 프리랜서, 웹 퍼블리셔
  • 이호준 : 바울랩 대표, GDG 제주 오거나이저, JSA 부회장, 제주코딩베이스캠프 운영진
  • 이희원 : 단국대학교(소프트웨어학과)
  • 장성원 : 경북대학교(컴퓨터학부)
  • 전진환 : GDG 제주 이벤트 운영진
  • 조희주 : GDG 판교 오거나이저, 카카오게임즈 데이터분석플랫폼 개발/분석
  • 태재성: 예일대학교 (통계학과)
  • 한연희 : 명지대학교(디지털콘텐츠디자인 전공), GDG 서울 운영진
  • 황예진 : 숙명여자대학교(컴퓨터과학 전공)
  • Eden : 머신러닝 엔지니어
  • 우지호 : 자원봉사, gap year
  • 정다영 : 웹디자이너, GDG 부산 운영진
  • 박현상 : 목포 중앙고등학교 방송영상과, 프론트엔드 개발자
  • 지건우 : 광주소프트웨어마이스터고등학교 소프트웨어학과, 프론트엔드 개발자

팀을 만들어 팀 별로 진행하시는 것을 권해드립니다.

1기 Team

  • PM : 이호준
  • 프론트엔드 : 한재현(PL), 한연희, 강태욱
  • 백엔드 : 강민성(PL), 백지오, 조희주, 송진영
  • 다국어 번역
    • 중국어 : 김미영(PL), 유승엽
    • 영어 : 김민욱(PL), 김정동
  • 데이터 수집 : 김진, 김승민
  • 데이터 분석 : 조희주(PL), 김정동, 송진영, 백지오, 전진환
  • DevOps : 강태욱

2기 Team

  • PM : 이호준
  • 프론트엔드 : 이수연(PL), 강태욱, 황예진
  • 백엔드 : 김성진(PL), 백지오, 강태욱
  • 데이터 수집 : 황예진
  • 데이터 분석 : 백지오, 석찬희, 장성원, 송진영, Eden

3기 Team

  • PM : 이호준
  • 프론트엔드 : 이수연(PL), 강태욱, 장근호, 강현욱, 김형규, 한종우, 조희주
  • 백엔드 : 강태욱(PL), 조희주
  • 데이터분석 : 강태욱(PL), 조희주
  • 크롤러 : 강태욱, 강현욱, 남수연, 강민철, 황예진, Eden
  • 데이터수집 : 백기승,송지영,남수연,전창삼,황예진,송진영,우지호
  • 디자인 : 한연희(PL)
  • 중국어 번역 : 변현홍

4기 Team

  • PM : 이호준
  • 프론트엔드 : 강태욱, 장근호, 박현상, 정다영, 성기동
  • 백엔드 : 강태욱(PL)
  • 데이터분석 : 태재성, 백기승, Eden, 조희주
  • 크롤러 : 김경남, 태재성, 백기승, Eden
  • 글로벌 서비스 : 강태욱, 우지호, 변현홍, 정다영
  • 데이터수집 : 백기승, 우지호
  • 디자인 : 정다영(PL)

5기 Team

  • PM : 이호준
  • 프론트엔드 : 강태욱
  • 백엔드 : 강태욱(PL)
  • 데이터분석 : 태재성, 백기승
  • 크롤러 : 태재성, 백기승
  • 데이터수집 : 태재성

6기 Team

  • PM : 이호준
  • 프론트엔드 : 강태욱
  • 백엔드 : 강태욱(PL)
  • 데이터분석 : 태재성, 백기승
  • 크롤러 : 태재성, 백기승
  • 데이터수집 : 태재성

도움을 주신 곳

  • 제주특별자치도청(미래전략국)
  • 제주대학교 SW융합교육센터
  • 제주대학교 링크플러스사업단
  • 제주스타트업협회
  • NAVER(NBP, 서버지원)
  • Google Korea(GDG 멤버 지원)
  • 제주수흉부외과
  • 강민철님
  • 양수완(오현중학교)
  • 박승우(오름중학교)
  • 김유정님
  • 최경민님
  • 현정운(탐라중학교)
  • 오준혁(도남초등학교)
  • 이혜은(NLCS JEJU)