Trời tính không bằng máy tính

blog

#15: Về MUC 2018…

Đôi lời đầu

Anh là Nui, K66, nhưng thôi a ko giới thiệu nhiều nữa vì năm nào a cũng đứng đằng sau mấy vụ bình chọn online này :)) Blog này đc viết vào đầu tháng 5 nhưng do 1 vài việc nên anh delay đến giờ này mới up đc.

Năm nay MUC lại gặp tình trạng lộn xộn và cãi nhau. Điều này do BTC năm ngoái không nghiêm túc với vấn đề này, và không cảnh báo lại cho BTC năm nay (trong khi bên prom đã chỉ động hỏi a để phòng tránh trước). Tuy trách như thế nhưng a vẫn giúp, ko có nghĩa là a hiền đâu nha. A chỉ cần mấy đứa hoà thuận hộ anh thôii :'( già rồi mà, ko thích ồn ào.

Phần mềm lẫn cách tính của a ko phải là hoàn hảo. Tất nhiên sẽ có sai sót nhỏ nhưng a sẽ cố giữ độ chính xác ở mức cao nhất (và tất nhiên vẫn chính xác hơn nhiều so với việc lọc bằng tay)

Dù sao thì cũng là một trò chơi, và cũng là một thử thách đối với anh. Anh mong là dù dăm ba cái “hack” like, dăm ba câu chửi nhau trên cfs thì các bạn vẫn sẽ có những kỷ niệm thật đáng nhớ.

Đối với các projects vote online tiếp theo, các bạn hoàn toàn có thể sử dụng cách bình chọn mới của a (sẽ giải thích sau đây), để đảm bảo an toàn.

Kết quả tham khảo

Lưu ý rằng kết quả này là do luật của mình khác hoàn toàn với của BTC. Phần mềm này mình thử nghiệm để lấy kết quả tham khảo thôi.



(Bấm vào đây nếu không xem đc)

Cách app hoạt động (dễ hiểu)
  1. Đầu tiên app lấy danh sách những người đã like/react post này (số lượng like/react chính là số ở cột Total Votes)
  2. Sau đó app vào wall cá nhân của từng người và xem tất cả những bài đăng từ 3 ngày trở lại
  3. Nếu wall người đó có ít hơn 6 post => đánh dấu là nick clone và lần sau đừng check lại (đc đếm vào cột đỏ trong bảng)
  4. Nếu wall người đó có bài share post này => đánh dấu là OK và lần sau đừng check lại (đc đếm vào cột xanh trong bảng)
  5. Nếu người đó chưa share => lần sau sẽ check lại (tối đa 4 lần)
  6. Toàn bộ công việc trên đc thực hiện vào lúc 0h và 12h hằng ngày

Chắc chắn rằng nhiều người sẽ thắc mắc tại sao a không đếm mỗi ngày 1 bài share? Vấn đề mà a gặp phải là việc tối ưu bộ nhớ, nếu đếm theo ngày thì a sẽ phải ghi lại bằng chứng rằng ngày hôm nay bạn đã share bài lúc nào. Như vậy bộ nhớ sử dụng sẽ rất lớn, khó khăn cho việc đồng bộ giữa database và server chính.

Còn về việc tại sao anh ko chỉ đơn giản là bấm vào nút “xem ai đã share”? Đơn giản vì xem chỗ đó bị thiếu rất nhiều, và thậm chí năm ngoái lớp chuyên văn đã báo cáo nhiều trường hợp facebook lỗi ko hiện đủ, dù đã share ở chế độ công khai.

Thông tin kĩ thuật
  1. Danh sách reactions được lấy ở endpoint {post-id}/reactions
  2. List các bài post trên wall cá nhân đc lấy qua endpoint

    {user-id}/feed?fields=link,id&since={thời điểm 3 ngày trước, format epochtime}


    ngoài ra để xem người này có đủ 6 post ko, endpoint đc dùng là

    {user-id}/feed?fields=id&limit=7

     

  3. Cấu trúc của file JSON lưu lại bằng chứng (raw data):

    {
      “page-post-id”: {
        “user-id”: {
          “react”: (int) //loại reaction, theo thứ tự: [0, "LIKE", "LOVE", "WOW", "HAHA", "SAD", "ANGRY", "THANKFUL"]
          “is_clone”: (boolean), // có phải nick clone không
          “share”: (shared-post-id) // id của bài share trên tường nhà người đó
        }
      }
    }
    

     

MỚI! Đăng ký nhận bài viết mới nhất qua chatbot: