Skip to content

Coronavirus application server for data crawling and RESTful service.

Notifications You must be signed in to change notification settings

lapth/CoronavirusData

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bài viết

Source code này làm DEMO cho bài viết Tạo ứng dụng điện thoại báo cáo tình trạng coronavirus trong vòng 2 ngày

Các nguồn dữ liệu

  1. Từ WHO
  2. Từ Bộ Y Tế
  3. Từ Bộ Y Tế - Sức Khỏe Đời Sống
  4. Kompa

Tải source code

PROJECT_FOLDER>git clone https://github.com/lapth/CoronavirusData.git

Thư viện sử dụng:

  1. Node: 10.x => Ở ứng dụng này, mình ép Node ở 10.x để tránh 1 số lỗi khi cần deploy ứng dụng này lên Serverless, môi trường mình ko config được gì.
  2. express: dùng tạo RESTful service
  3. node-schedule: dùng tạo bộ job scheduling
  4. nodemailer: hỗ trợ gửi mail
  5. node-fetch: load dữ liệu

Cấu hình ứng dụng để chạy DEMO

Ứng dụng Back-End bạn nên chạy thử luôn trên server không cần phải thử ở local, để tránh những vấn đề không tương thích do bạn cấu hình trên local 1 đường, server cần một kiểu.

  1. Cấu hình PORT default của Node. Trong trường hợp xài 1 số môi trường free, bạn không thể tùy biến khi chạy được nên bạn phải thay đổi thông số mặc định. Ở đây mình chọn 5454
  2. Cấu hình mail server để gửi mail, nếu bạn ko muốn thì bỏ dòng lệnh tương ứng trong file MailHelper.js là được.
  3. Cấu hình Ingress port 5454 cho GCP để ứng dụng có thể public ra ngoài mạng Internet ở port đó. Áp dụng cấu hình đó cho VM mình tạo cho dự án này hoặc đơn giản để Target = Apply to all

Start server và chạy thử ứng dụng trên máy thực

Một số lệnh bạn cần biết:

Start node server:

PROJECT_HOME>npm start 

Start node server ở chế độ background, không bị tắt sau khi đóng console. Với lệnh này server sẻ log ra file nohup.out

PROJECT_HOME>nohup npm start &

Start node server ở chế độ background, không bị tắt sau khi close console và bỏ luôn log

PROJECT_HOME>nohup npm start >dev/null &

Sau khi bạn chạy server này, ứng dụng sẻ đi lấy dữ liệu mỗi 5 phút / lần và lưu vào file public/data/data.json

File này được public ra ngoài cho ứng dụng client sử dụng.

Bạn cần start quá trình crawl dữ liệu trước khi hoàn tất

http:\\IP:5454\start

Đến đây ứng dụng trên điện thoại của bạn đã có thể truy cập vào và lấy dữ liệu thực để hiển thị.

Cải tiến

Do thời gian hạn chế, phần tổng hợp, phân tích dữ liệu còn sơ sài, để phần này tốt hơn chúng ta có thể bóc tách dữ liệu từ WHO và Bộ Y Tế. Để thực hiện phần này mình giới thiệu bạn 2 công nghệ:

  1. Web Crawler: dùng để bóc tách dữ liệu từ web, thư viện mình hay xài là JSDomPuppeteer
  2. Để bóc tách dữ liệu từ file hình ảnh, file pdf ... một trong những thư viện bạn có thể sử dụng là Tesseract

Để phần DEMO này tốt hơn cho cộng đồng mình welcome tất cả PRs (* _ *)

Chúc bạn thành công!

About

Coronavirus application server for data crawling and RESTful service.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published