Nui Blog (ngxson)

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 đó
        }
      }
    }
    

     

3 Comments

  1. Em chào anh ạ, hiện tại em cũng đang tham gia 1 cuộc thi về video, cũng tính điểm bằng like share, cmt. Hiện tại em đều đếm thủ công, bây giờ em được biết đến bài này của anh, anh có thể chỉ em cách làm cái này được không ạ. Em cám ơn anh ạ

  2. Step

    Em muốn hỏi về điều 3 ạ.
    « Xem tất cả những bài đăng từ 3 ngày trở lại.
    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). »
    Có những trường hợp acc ít đăng hay share bài fb thì trong 3 ngày trở lại cũng có thể không đủ 6 post thì sao ạ ? Nếu cũng bị đánh dấu là nick clone thì có hơi bất công không ?

    • nuiblog

      Chào em,

      Cảm ơn em đã dành thời gian theo dõi. Về vấn đề này có lẽ do anh chưa ghi rõ rằng 6 post này là 6 post bất kỳ, tính từ lúc người này bắt đầu dùng fb nên em hiểu nhầm.

      Về mặt kỹ thuật anh có ghi endpoint được dùng cho việc này là {user-id}/feed?fields=id&limit=7, tức chỉ có thông tin limit 7 post, chứ không có thông tin về thời gian.

      Điều này đã đc anh cân nhắc kỹ. Thực tế với 1 nick fb hoạt động thực sự thì chí ít cũng phải có vài bài đăng về việc đổi avatar hay đc người khác tag vào ảnh/post… và con số 6 post thực chất là quá ít. Tuy nhiên do các dịch vụ trao đổi like chỉ yêu cầu về số bạn bè để tham gia, nên anh nghĩ việc đếm số post trên wall này là hiệu quả nhất (anh cũng đã thử thực tế các dịch vụ này để nắm điểm yếu của chúng).

      Nếu có câu hỏi gì thêm, em có thể reply trực tiếp xuống đây nhé!

Leave a Reply

Theme by Anders Norén