Như mọi người đã biết, việc bình chọn qua like và share gần đây đã bị chỉ trích rất nhiều. Ko thể phủ nhận thể lệ bình chọn như vậy giúp tăng lượt tương tác rất mạnh mẽ, tuy nhiên chúng ta lại phải đánh đổi lại là sự công bằng khi việc gian lận qua like/share thì “nhan nhản” mà cách phòng tránh thì gần như không thể.

Quá nhiều share cho 1 bài post…
Vì vậy, chuỗi bài viết này mình sẽ nêu ra từng bước xây dựng 1 thể lệ bình chọn mới qua số lượt like/comment. Đảm bảo các tiêu chí:
  • Minh bạch
  • Chính xác
  • Dễ hiểu

Bài viết này sẽ hướng đến tiêu chí là dễ hiểu, tránh việc gây tranh cãi trong tương lai.

Trong bình chọn K&Q vòng tài năng đợt vừa rồi, nhiều bạn đã đc tiếp xúc với cách bình chọn bằng cmt mã số, bạn có thể đọc chi tiết tại đây: https://www.facebook.com/notes/chat…

Tuy nhiên, cách này vẫn gặp phải 1 vài vấn đề như:

– Mã số bình chọn đc tạo random, là 1 dãy số không có ý nghĩa
– Như vậy, bên mình cần lưu lại mã nào đc tạo ra vào lúc nào.
– Và nếu có người liên tục truy cập vào lấy mã (nhưng ko comment), thì mình sẽ càng phải lưu nhiều mã “rác”, và khi có quá nhiều thì việc xử lý sẽ trở nên khó khăn.

Và để giải quyết vấn đề trên, có 1 vài giải pháp như sau:

– Ko chọn 1 mã số bình chọn random nữa mà sẽ mã hóa luôn thông tin về thời gian vào mã số đó, và do đó mình ko cần lưu lại mã đã tạo.
– “Mượn” tính năng google app script của google luôn. Nhờ vậy mọi thứ đc xử lý qua máy chủ của google, mạnh mẽ và hoàn toàn free.

Ngoài ra, gg app script còn giúp liên kết giữa các dịch vụ của google

Sau đây chúng ta sẽ đi sâu hơn vào cách tạo mã số mới này.

Ý tưởng ở đây là:
– Ví dụ mình bắt đầu mở bình chọn lúc 8h
– Lúc 8h0p16s là đã 16s trôi qua, mình cấp cho họ mã số 16
– Lúc 8h1p10s là đã có 60+10=70 giây trôi qua, mã số 70
– Lúc đúng 9h là đã có 3600s trôi qua, mã số 3600
Chỉ cần kiểm tra thời gian lấy mã và thời gian cmt gần nhau => hợp lệ.
Tuy nhiên, nếu 1 ngày trôi qua thì sao? Mã số sẽ trở nên rất dài. Vậy tại sao thay vì chỉ dùng số, mình ko dùng cả chữ để biểu thị. Tuy nhiên, do các ký tự 0,O, i, l (L thường), I (i in hoa) khá giống nhau nên phải loại chúng ra.
Sau khi đã cân nhắc kỹ, chúng ta còn 33 ký tự tương ứng với 33 số:
Giờ chỉ còn vấn đề là đổi số bình thường thành dạng chữ như trên. Đối với các bạn đã học về toán/tin, chắc hẳn ai cũng biết thừa đây là đổi từ hệ cơ số 10 sang hệ 33. Thuật toán cũng chỉ đơn giản là chia lấy phần dư cho đến khi ko chia đc nữa:

nhìn quen ko?
Như vậy mình sẽ cấp cho người muốn bình chọn má số là W4A vào lúc 33 phút 18 giây kể từ lúc bắt đầu bình chọn.
Tuy nhiên, để tránh bị các mã số trùng nhau, mình sẽ thêm 1 ký tự random ở đầu, như vậy ví dụ vào cùng 1 thời điểm, có người sẽ đc lấy mã số AW4A, có người lại đc mã CW4A,…

phiên bản thử nghiệm
Tuy nhiên, như vậy chẳng phải là ai cũng tự tạo mã số cho riêng mình đc sao? Và như thế họ có thể lập trình 1 phần mềm auto tạo mã, auto login vào nick clone và auto comment?
Để giải quyết vấn đề này, ở phần tiếp theo đây, mình sẽ “tự chế” một chữ ký kĩ thuật số đơn giản. Hãy chú ý đón xem nhé!