Trăng hoa

TRĂNG HOA

Gửi tặng Đinh Phạm Vinh Hiển


Chuyện kể đời tôi lắm trăng hoa
Chẳng phải tại tôi, ắt tại trời
Cha mẹ sinh con trời sanh tính
Làm sao thoát được kiếp trăng hoa?

Chỉ tại đời tôi nó trăng hoa
Gặp ai cũng thích mặc người ta
Chẳng cần hoa kia nào phải đẹp
Chỉ cần trăng tỏ sáng không mờ

Có phải là tôi vốn trăng hoa?
Chỉ do tôi thích chốn bôn ba
Bốn phương bốn bể tôi bè bạn
Nhờ thế đời tôi bớt nỗi phiền

Đâu phải đời tôi nó trăng hoa
Chẳng hoa chẳng gió chỉ người ta
Thích thì trăm vạn, yêu chỉ một
Mặc kệ người đời nói trăng hoa

Không phải do trăng chẳng phải hoa
Tại tôi thích gió với thích moa
Tại tôi đây thích đời cởi mở
Tâm sự lòng tôi bỏ nỗi sầu

Người nhìn sao bảo thế trăng hoa
Yêu lắm người ta chứ phải hoa
Hoa tàn trăng lặn nào biết được
Chỉ một người ta trái tim nồng.

Phạm Ngọc Vinh – ngẫu hứng 8/5/2013
Người đời nhìn ngỡ trăng hoa
Tôi đây nhìn lại khác xa người đời

Thuật toán biểu diễn số bằng que diêm

Hi các bạn, lâu quá không viết blog nên là lục nghề mất rồi :3
Mình có dạo chơi mấy group facebook về lập trình thì có thấy một bài toán mà bản thân cảm thấy rất thích nó @@

Đề bài que diêm


Đề bài que diêm

Thế là ngồi nghiên cứu nó liền, và do là chưa thấy ai (chưa thấy chứ không phải là không có) đề xuất ra cách nào nên mình chỉ suy nghĩ đến một ý tưởng của mình thôi, và blog này sẽ trình bày ý tưởng đó cùng cách thực hiện cho bạn ^^

Mình bắt đầu suy nghĩ, và nhận ra hai cái khó khăn: thứ nhất là chọn sao không được để thừa diêm, và chọn làm sao để được hai số nhỏ nhất và lớn nhất.

Các số hạng được hình thành từ các chữ số, và vì vậy, bài toán này mình nghĩ là chúng ta sẽ đi theo hướng tìm các chữ số và ghép chúng lại với nhau. Mình nhận ra rằng, nếu chúng ta có:
  • - 2 que diêm: chúng ta ghép được số 1
  • - 3 que diêm: chúng ta ghép được số 7
  • - 4 que diêm: chúng ta ghép được số 4
  • - 5 que diêm: chúng ta ghép được số 2, 3, 5
  • - 6 que diêm: chúng ta ghép được số 0, 6, 9
  • - 7 que diêm: chúng ta ghép được số 8


Như vậy, có thế thấy rằng, chúng ta phải có 2 que diêm trở lên để ghép thành 1 số. Điều này có nghĩa là khi ghép các que diêm lại với nhau, chúng ta không được phép để lại thấp hơn 2 que diêm. Ví dụ có 3 que diêm, chúng ta phải ghép thành số 7, vì nếu chúng ta ghép thành số 1, chúng ta sẽ dư 1 que diêm và không thể ghép số nào từ 1 que diêm cả. Và đó là mấu chốt để giải quyết khó khăn thứ hai: không để thừa que diêm nào

Thế còn khó khăn thứ nhất, nếu có n que diêm thì để tạo thành một số hạng nhỏ nhất, mình sẽ ưu tiên chọn những số tốn nhiều que diêm nhất để chúng ta chọn được ít các chữ số nhất. Ví dụ nhé, mình có 15 que diêm, mình sẽ ưu tiên chọn số 8 tốn 7 que diêm, còn dư 8 que diêm mình sẽ ưu tiên chọn số 0 hoặc 6 hoặc 9 tốn 6 que, và cuối cùng còn lại 2 que mình chọn số 1.

Thế thì ở bước hai, chọn 0 hay chọn 6 hay chọn 9? Lúc này mình suy nghĩ tiếp, chúng ta sẽ phải chọn số nhỏ nhất nghĩa là số 0. Và giả sử khi chọn xong hết toàn bộ chữ số đều là số 0 thì chúng ta phải tránh số 0 bằng cách đổi 1 chữ số đã chọn thành chữ số lớn nhì là 6, vì điều kiện đề bài không cho chữ số 0 xuất hiện đằng trước. Giả sử nếu chúng ta chọn được số 0, 1, 3 thì không vấn đề gì, chúng ta có thể xếp thành 103, nhưng nếu chúng ta chọn được 0, 0 thì rõ ràng chúng ta cần đổi số 0 thành số 6 để xếp thành 60, và bạn yên tâm chúng ta sẽ không bao giờ chọn được tất cả chữ số đều là số 0 (nếu như số đó kết hợp từ 2 chữ số trở lên). Vì sao ư?

Ta xét thử nhé, giả sử chúng ta chọn trường hợp 2 chữ số, thì nếu chọn được 2 số 0 thì nghĩa là chúng ta có 12 que diêm (mỗi số 0 chiếm 6 que diêm), nếu có 12 que diêm, thì rõ ràng theo ý tưởng, chúng ta đã chọn số 8 với 7 que diêm rồi. Suy ra không có trường hợp nào chúng ta chọn mà tất cả chữ số đều là số 0. Trừ trường hợp số hạng của chúng ta chỉ có 1 số. Thì chúng ta sẽ chuyển số 0 thành số 6, đây sẽ là điều kiện cần và đủ.

Vậy tóm lại, để tìm một số min, ta sẽ phải:
  • - Sử dụng nhiều số diêm nhất có thể để chọn các chữ số
  • - Chọn chữ số nào nhỏ nhất có thể
  • - Không được để dư 1 que diêm
  • - Nếu sau khi chọn hết mà chỉ được 1 chữ số bằng 0 thì đổi chữ số 0 đó thành số 6
  • - Sắp xếp các chữ số đó lại theo thứ tự tăng dần
  • - Nếu vị trí đầu là số 0, ta đổi số 0 thành vị trí sau nó.
  • - Ghép các vị trí lại thành 1 số hạng hoàn chỉnh


Ví dụ nhé: ta có 15 que diêm
  • - Max ghép số là 7 que, ta sử dụng 7 que: chọn được số 8
  • - Dư được 8 que, max ghép số là 7 que, nhưng nếu dùng 7 que thì dư 1 que, không được, giảm xuống còn 6 que, dùng 6 que thì dư 2 que, được: ta chọn 0 hoặc 6 hoặc 9. Ưu tiên chọn số nhỏ nhất là 0
  • - Max ghép số là 7 que, ta chỉ có 2 que, mà 2 que thì ứng với số 1: ta chọn số 1
  • - Rốt cục ta chọn được số: 8, 0, 1 sau khi sort lại ta được 0, 1, 8
  • - Do số 0 đứng đầu, ta chuyển nó về vị trí sau đó thành: 1, 0, 8
  • - Đã ổn, ta ghép thành số 108 là min.


Quá ổn luôn. Tới phần tìm max, ôi dào, có ý tưởng tìm được min thì ứng dụng qua max dễ thôi. Chúng ta sẽ ưu tiên chọn ít diêm để chọn được nhiều chữ số, rồi cũng sort lại nhưng sort từ lớn tới bé rồi ghép lại ^^.

Ví dụ nhé: ta có 15 que diêm
  • - Min ghép là 2, ta lấy 2 điêm: chọn được số 1
  • - Dư 13, min ghép là 2, ta lấy 2 diêm nữa: chọn được số 1
  • - Dư 11, tiếp tục ghép 2: chọn số 1
  • - Dư 9, lại ghép 2: chọn số 1
  • - Dư 7, y chang: chọn số 1
  • - Dư 5, lại ghép 2: chọn số 1
  • - Dư 3, không thể ghép 2, vì ghép 2 sẽ dư 1, mà dư 1 thì không có số, ta ghép 3: chọn 7
  • - Suy ra ta chọn được: 1, 1, 1, 1, 1, 1, 7
  • - Sort lại ta được: 7, 1, 1, 1, 1, 1, 1
  • - Quá ổn ghép thành số: 7111111


Ý tưởng đã xong, nhưng ta sẽ giải quyết vấn đề như thế nào? Phần thuật toán các bạn tự suy nghĩ nhé ^^
Dưới đây là demo bằng AutoIT mình làm sẵn, rất mong được các bạn góp ý ^^


School Confession, hệ thống kiểm duyệt confession

School Confession là một hệ thống nhỏ gọn, có vai trò hỗ trợ các admin / mod của các trang confession có thể dễ dàng kiểm duyệt, đăng và quản lý confession một các hiệu quả được xây dựng trên nền PHP, với cơ sở dữ liệu MySQL và phong cách Metro GUI.


Ra mắt OPA1 License phiên bản web

Nhằm để phục vụ nhu cầu cho nhiều cá nhân, hôm nay OPA1 License sẽ chính thức bổ xung phiên bản website.



OPA1 License là một phần mềm hỗ trợ học và thi thử bằng lái A1 ra mắt vào đầu tháng 2/2016. Với tiêu chí miễn phí, nhỏ gọn, tiện lợi, OPA1 License mong muốn hỗ trợ tối đa người người, và hôm nay, ngày 5/8/2016, OPA1 License chính thức ra mắt phiên bản web nhằm hoàn thiện tiêu chí đề ra.


Phiên bản web của OPA1 License hiện tại hỗ trợ học và thi thử với nhiều chế độ tự học và 8 đề thi thử.
Mời các bạn trải nghiệm OPA1 License phiên bản web tại đây

OPAds, trao đổi quảng cáo hình ảnh giữa các blogger

TRAO ĐỔI QUẢNG CÁO MIỄN PHÍ




 

🔥 GIỚI THIỆU

OPAds là một dự án nhỏ của opdo.vn. Nhằm giúp các bạn thích viết blog, ngoài việc trao đổi, giới thiệu các địa chỉ blog của nhau thì với OPAds các bạn có thể quảng cáo chéo cho nhau những bài viết hay của mình bằng hình ảnh để tìm kiếm thêm các độc giả cho blog của mình.

Trao đổi quảng cáo chéo đơn giản, miễn phí

Các quảng cáo được trao đổi sẽ hiển thị ngẫu nhiên trên các blog tham gia. Hay nói cách khác, OPAds chính là một cách để những người chơi blog có thể trao đổi quảng cáo chéo một cách có hiệu quả.
OPAds hiện có các đặc điểm sau:

1. Được xây dựng trên nền tảng web, có thể dụng mọi lúc mọi nơi
OPAds, trao đổi quảng cáo chéo giữa các blogger
OPAds được xây dựng trên nền tảng web, có địa chỉ truy cập là opdo.top , vì vậy bạn có thể thay đổi, chỉnh sửa hoặc theo dõi quảng cáo của mình mọi lúc, mọi nơi, trên desktop, laptop hoặc cả điện thoại smartphone.

2. Tiện lợi, dễ tiếp cận và sử dụng
OPAds được xây dựng với tiêu chí tối giản, các chức năng không quá phức tạp giúp người sử dụng dễ dàng tiếp cận với mọi chức năng mà không cần thông qua bất kỳ hướng dẫn nào.

3. Nhúng quảng cáo đơn giản chỉ với 1 dòng lệnh javascript
Trao đổi quảng cáo chéo miễn phí và đơn giản
OPAds hỗ trợ nhúng quảng cáo thông qua javascript, chỉ cần vào mục Tích hợp, copy đoạn mã quảng cáo mà bạn muốn và paste vào khu vực quảng cáo mà bạn muốn hiển thị trên blog của bạn. Quá đơn giản!

4. Cung cấp số liệu về chiến dịch quảng cáo của bạn bao gồm lượt view và lượt click
Trao đổi quảng cáo chéo giữa các blogger
Hiện tại OPAds hỗ trợ thống kê về lượt hiển thị quảng cáo (lượt view) và lượt click của chiến dịch bạn tạo, tương lai mình sẽ hỗ trợ nhiều hơn các số liệu thống kê hữu ích.

5. Hỗ trợ hình ảnh quảng cáo 970x90 hoặc 300x250 (tỉ lệ phân giải có thể nhân lên)
OPAds, trao đổi quảng cáo chéo blogger

OPAds hỗ trợ 2 loại tỉ lệ hình ảnh quảng cáo phổ biến: ngang 970x90 hoặc vuông 300x250, hình ảnh cũng có thể có độ phân giải cao hơn dựa trên tỉ lệ này (giả sử 600x500 vẫn được chấp nhận)


6. Dễ dàng tùy biến dài, rộng quảng cáo dựa vào bố cục của blog
Chỉ cần thêm một vài trường đơn giản vào đoạn mã quảng cáo, bạn sẽ có thể dễ dàng tùy chỉnh rộng và cao của hình ảnh quảng cáo, để phù hợp với bố cục của blog mình.

 🌟 SỬ DỤNG

Nếu yêu thích ý tưởng của mình và muốn tham gia quảng cáo chéo trên blog của bạn, hãy liên hệ với mình, hoàn toàn miễn phí ^^. Tuy nhiên chúng ta có một số ràng buộc trong điều khoản sử dụng bên dưới.


 🚀 ĐIỀU KHOẢN THỎA THUẬN SỬ DỤNG

Để sử dụng hệ thống quảng cáo trao đổi chéo OPAds, bạn cần tuân thủ các điều khoản sử dụng bên dưới.
  1. Nếu blog bạn không thể treo quảng cáo OPAds quá 3 ngày, hãy liên hệ và trình bày lý do với mình, trường hợp mình không thấy quảng cáo chạy trên trang của bạn 3 ngày liên tục mà không có phản hồi, mình sẽ đóng tài khoản của bạn.
  2. Blog của bạn tham gia vào OPAds không được chứa nội dung phản cảm, đồi trụy, nội dung lừa đảo, hoặc các nội dung xấu khác.
  3. Hình ảnh quảng cáo, tên chiến dịch quảng cáo không được:
  • Chứa các nội dung đồi trụy, nhạy cảm
  • Chứa các nội dung liên quan tới chính trị
  • Chứa các nội dung lừa đảo, không đúng với sự thật
  • Nếu phát hiện vi phạm, tùy mức độ mình có thể dừng tài khoản của bạn hoặc xóa quảng cáo.

 😸 MÃ NGUỒN

Hiện dự án vẫn đang phát triển, mã nguồn sẽ được chia sẻ rộng rãi vào thời gian tới ^^

Simple System, mô phỏng xây dựng hệ thống online đơn giản

Simple System AutoIT làm ứng dụng đăng nhập đăng ký online

SIMPLE SYSTEM

🌟 GIỚI THIỆU

Simple System là một hệ thống đơn giản được xây dựng trên php, mysql và autoit nhằm mô phỏng các tác vụ:
  • Đăng nhập và đăng ký tài khoản người dùng, cho phép giới hạn mỗi tài khoản đăng nhập trên một máy
  • Giới hạn ngày hoặc số lần của tài khoản
  • Hệ thống nạp thẻ để tăng số ngày hoặc số lần sử dụng
  • Cho phép người dùng dùng thử dựa vào việc click vào link quảng cáo
  • Hệ thống quản lý, quản trị tài khoản người dùng
Simple System có thể dùng để xây dựng nhanh chóng một ứng dụng online đơn giản cho bạn. Simple System được xây dựng nâng cấp toàn vẹn từ UDF _CheckKey.

🔐 KHẢ NĂNG BẢO MẬT DỮ LIỆU

  • Các dữ liệu quan trọng được lưu trên php và mysql, password được mã hóa md5 nên giảm thiểu các khả năng bị thất thoát dữ liệu.
  • Bất kỳ một  truy vấn nào từ AutoIT lên php đều phải thông qua việc xác thực tài khoản, nên giảm thiểu khả năng bị lấy cắp thông tin.
  • Ngoài ra có thể phát sinh một số trường hợp khác do bản thân mình không lường được.

🎓 YÊU CẦU CƠ BẢN


📐 HƯỚNG DẪN CÀI ĐẶT

  • Edit các thông tin system trong file ss_setting.php
  • Edit các thông tin trong file _SimpleSystem_UDF.au3
  • Import file mysql
  • Upload các file php lên host
  • Include UDF vào và sử dụng, xem example để biết thêm thông tin.

📕 HƯỚNG DÂN SỬ DỤNG



📕 TẢI BẢN SIMPLE SYSTEM


[AutoIT] TurnOff WinDefender, tắt Defender và Update Windows

TurnOff WinDefender

(Phiên bản 1.0 ngày 3/7/2016)


🔥 Giới thiệu

Windows Defender là một phần mềm chống virus được tích hợp sẵn cho Windows 10 do Microsoft phát triển. Tuy nhiên, nó không có quá nhiều điểm mạnh, mặc khác đôi khi còn gây rắc rối do sử dụng quá nhiều Ram cũng như CPU khiến máy rơi vào tình trạng chậm chạp, lag và nóng máy. Chính vì vậy, nhiều người đã chọn tắt tính năng này trong Setting.


Tuy nhiên, chúng ta chỉ có thể tắt tạm thời, Windows sẽ tự khởi động nó lại, và vì vậy chúng ta phải thực hiện các bước khá phức tạp để tắt Windows Defender vĩnh viễn. Bạn có thể tham khảo các cách tắt Windows Defender thông thường tại đây.

Vì vậy tool TurnOff WinDefender ra đời như một giải pháp nhanh gọn lẹ, thích hợp sử dụng cho mọi người dùng với những ưu điểm:
  • Tắt, mở Windows Defender và Windows Update chỉ trong 1 cú nhấp chuột
  • Giao diện gọn, nhẹ, thân thiện dễ sử dụng
  • Tool rất nhẹ, chưa đến 1Mb
  • Sử dụng phương pháp ghi registry do chính Microsoft hướng dẫn nhằm đảm bảo an toàn cho máy tính


 Hướng dẫn sử dụng

Bạn có thể tải tool ở bên trên bài viết (<1Mb). Tiến hành mở tool và  đơn giản là chọn "turn on" hoặc "turn off" một service của Windows.

Sau khi đã thực hiện xong, bạn cần khởi động lại máy để các thiết lập trên có hiệu quả.

Turn off Windows Defender


Trường hợp bạn gặp lỗi không thể "turn on" hoặc "turn off" một service của Windows, hãy thử chuột phải vào file chương trình, chọn "Run as admin" để chạy với quyền admin.


Turn off Windows Defender


🚀 Thông tin thêm

🚩Thông tin chương trình
Tên chương trình Turnoff WinDefender
Phiên bản 1.0 (Opensource)
Tác giả Vinh Phạm (opdo.vn)

🏰 Điều khoản sử dụng
Chương trình được phát hành miễn phí bao gồm cả source code theo điều khoản sử dụng của opdo.vn

🌟 Lưu ý sử dụng
  1. Chương trình sử dụng tốt trên phiên bản Windows 8 trở lên, không sử dụng cho Windows 7 trở xuống
  2. Chương trình đôi khi cần quyền admin để có thể ghi registry theo hướng dẫn của Microsoft
  3. Chương trình không thu thập hay gửi nhận bất kỳ thông tin nào trên máy tính của bạn

Menly App dịch vụ lưu trữ mã nguồn trực tuyến


Menly App - dịch vụ trữ mã nguồn trực tuyến

Menly App là một dịch vụ miễn phí tương tự pastebin dành cho các lập trình viên với nhu cầu lưu trữ mã nguồn trực tuyến tại Việt Nam nhiều loại ngôn ngữ phổ biến. Menly App cho phép bạn cá nhân hóa lưu trữ mã nguồn của mình với nhiều tùy chọn:


  • Mã hóa mã nguồn
  • Chế độ private
  • Hạn chế thời gian tồn tại mã nguồn

Tất cả đều đơn giản và miễn phí với vài cú click chuột.

Dễ dàng tạo, dễ dàng dùng

Menly App hỗ trợ bạn cá nhân hóa kho mã nguồn của mình với tính năng lưu trữ trên thiết bị, phân cấp bởi thư mục dễ dàng tìm và xem lại. Bạn có thể dễ dàng xem lại mã nguồn của mình mà không cần internet.

Lưu trữ mã nguồn với thư mục tiện lợi

Lưu trữ mã nguồn với thư mục tiện lợi

Menly App cho phép bạn lưu trữ, chia sẻ đa dạng các mã nguồn phổ biến mọi lúc mọi nơi, dễ dàng và tiện lợi chỉ với vài cú click chuột.

Đa dạng ngôn ngữ lưu trữ mã nguồn

Thông tin phần mềm

Tên dự án Menly App
Phiên bản hiện tại 1.0.1
Phát hành lần đầu 22/6/2016
Phát triển bởi - Vinh Pham Huân Hoàng
- Menly service: Huỳnh Phúc Huy

Điều khoản sử dụng

1. Dịch vụ được cung cấp bởi menly.ml thông qua API của trang. Nên việc tải và sử dụng phần mềm này đồng nghĩa bạn đã đồng ý với các điều khoản và thỏa thuận sử dụng của menly.ml và opdo's Blog.
2. Không tải các nội dung xấu bao gồm các tài liệu vi phạm pháp luật (chính trị, khiêu dâm,...), mã nguồn không được sự cho phép người khác, mã độc, virus, botnet, spam,..
3. Menly.ml có quyền xóa mã nguồn và chặn IP của người sử dụng nào có hành vi chính sách sử dụng.

Liên hệ

- Liên hệ Menly.ml Service: Huỳnh Phúc Huy
- Liên hệ góp ý, xây dựng MenlyApp: Vinh Phạm, Huân Hoàng