Chuyển đến nội dung chính

Bài đăng

Hiển thị các bài đăng có nhãn Tản mạn cuối tuần

Học Machine Learning Trực Quan Và Sinh Động Với Interactive ML

Hôm trước lướt Facebook, mình tình cờ thấy một trang fanpage chia sẻ về trang web có tên là Interactive ML (địa chỉ: https://www.interactive-ml.com/ ). Tiện tay bấm vào nghía qua thử một lúc thì thấy nó hay quá, nên phải lưu lại và chia sẻ ngay với mọi người. Dù chưa có thời gian cày cuốc hết toàn bộ nội dung trên này, nhưng ấn tượng đầu tiên của mình là trang web này cực kỳ hợp cho những ai muốn hiểu bản chất thuật toán mà không bị ngợp bởi đống công thức toán hay code khô khan. Thay vì bắt mình đọc những bức tường chữ đầy lý thuyết, Interactive ML giải thích mọi thứ bằng biểu đồ tương tác trực quan . Điểm cộng lớn nhất là bạn có thể tự tay click chuột, kéo thả các điểm dữ liệu, tăng giảm tham số rồi nhìn thấy mô hình thay đổi ngay lập tức trước mắt. Dạo qua menu thì mình thấy trang web cover khá đầy đủ chủ đề, từ cơ bản đến nâng cao: Mấy thuật toán quen thuộc như Hồi quy (Linear, Ridge, Lasso) hay Phân lớp (KNN, Decision Tree, SVM...). Các chỉ số đo lường dễ gây lú...

Giới thiệu về Wukong Xiangqi

Giới thiệu Wukong Xiangqi là một engine cờ tướng (Xiangqi) tối giản được viết hoàn toàn bằng ngôn ngữ C thuần túy bởi tác giả Maksim Korzh. Dự án hỗ trợ giao thức UCCI (Universal Chinese Chess Interface), cho phép kết nối dễ dàng với các giao diện (GUI) cờ tướng phổ biến hiện nay. Kiến trúc bàn cờ mẫu (Board Representation) Wukong sử dụng mảng một chiều dựa trên hệ thống tọa độ mở rộng 11x14 để biểu diễn bàn cờ. Cách tiếp cận này giúp kiểm tra quân cờ đi ra ngoài biên một cách tự nhiên nhờ các ô đệm (Off-board). Dưới đây là cách định nghĩa các quân cờ bằng mã số nguyên trong mã nguồn mẫu: // Định nghĩa hằng số cho các quân cờ enum { COLOR_EMPTY, RED_PAWN, RED_ADVISOR, RED_BISHOP, RED_KNIGHT, RED_ROOK, RED_CANNON, RED_KING, BLACK_PAWN, BLACK_ADVISOR, BLACK_BISHOP, BLACK_KNIGHT, BLACK_ROOK, BLACK_CANNON, BLACK_KING }; Định hướng áp dụng Machine Learning (ML) tương lai Cấu trúc tìm kiếm Alpha-Beta kết hợp với hàm đánh giá tĩnh hiện tại của Wukong dựa trên mô hình ...

CAPTCHA là gì?

CAPTCHA là gì? Một CAPTCHA (ˈkæptʃə, đọc giống như "capture") là một loại kiểm thử dạng hỏi đáp được dùng trong máy tính để xác định xem người dùng có phải là con người hay không. "CAPTCHA" là chữ viết tắt của "Completely Automated Public Turing test to tell Computers and Humans Apart" (Phép thử Turing công cộng hoàn toàn tự động để phân biệt máy tính với người), được trường Đại học Carnegie Mellon cố gắng đăng ký thương hiệu nhưng đã bị bác bỏ[2]. Đây là một quá trình một máy tính (máy chủ) yêu cầu một người dùng hoàn tất một kiểm tra đơn giản mà máy tính có thể dễ dàng tạo ra và đánh giá, nhưng không thể tự giải nó được. Vì máy tính không thể giải quyết CAPTCHA, bất kỳ người dùng nào nhập vào lời giải đúng sẽ được xem là con người. Thuật ngữ CAPTCHA được Luis von Ahn, Manuel Blum, Nicholas J. Hopper (tất cả đều thuộc Đại học Carnegie Mellon), và John Langford (khi đó thuộc IBM) đặt ra vào năm 2000. Một loại CAPTCHA phổ biến yêu cầu người dùng phải nhập c...

Pascal Case, Camel Case và Kebab Case

Mình đã bối rối khi đặt tên cho blob file mà không biết nên đặt theo kiểu nào. Sau khi tìm hiểu, mình mới biết cách mình đang cần là Kebab Case. Chắc hẳn bạn đã nghe qua các cách đặt tên như Pascal Case hay Camel Case, nhưng Kebab Case thì có vẻ ít người quen thuộc hơn. Trong bài viết này, mình sẽ giới thiệu ba kiểu đặt tên này và cách áp dụng chúng. Ngoài ra chúng ta sẽ xem thêm về Proper Case. Pascal Case Pascal Case là cách đặt tên mà mỗi từ đều viết hoa chữ cái đầu tiên. Đối với chúng ta, các hàm trong C# thường được viết theo Pascal Case như một tiêu chuẩn chung.  Ví dụ, nếu bạn có một hàm tên là CalculateSum, UploadBlob, hoặc GenerateReport, chúng đều được viết theo Pascal Case. Việc đặt tên như vậy giúp code của chúng ta rõ ràng hơn và dễ nhận diện chức năng của từng hàm. Dưới đây là hàm chuyển 1 string bất kỳ thành string kiểu Pascal Case // Convert the string to Pascal case. public static string ToPascalCase(this string the_string) { // If there are 0 or 1 character...

Các công cụ lập trình thời đại - Phần 2

Trên số trước tôi đã giới thiệu một số bộ công cụ lập trình (CCLT) thời đại của các Nhà sản xuất Borland, Microsoft và IBM. Theo cách phân loại này, tôi xin tiếp tục giới thiệu với các bạn một số Nhà sản xuất khổng lồ khác là Sun, Oracle, MacroMedia và một số công cụ mã nguồn mở. Những cái tên này dường như rất quen thuộc với mọi người, nhưng những công cụ của họ nói riêng và lĩnh vực hoạt động của họ nói chung chưa được biết đến nhiều ở Việt Nam. Cũng xin nói thêm rằng việc gọi một chương trình phần mềm là Công cụ lập trình chỉ có tính tương đối, có thể vừa đúng vừa sai. Một người quen dùng Paint hay Notepad hỗ trợ cho việc lập trình, anh ta có thể gọi đó là CCLT. Nhưng chúng ta hiểu với nhau rằng CCLT là những “thứ” hỗ trợ ta trong quá trình tạo nên sản phẩm phần mềm, từ các khâu thiết kế - lập trình - kiểm thử và thường có sự gắn kết với các ngôn ngữ lập trình (NNLT) cụ thể. Sẽ là không thật chính xác khi nói C++ là một CCLT nhưng với các ngôn ngữ hiện đại ngày nay ngư...

Các bộ công cụ lập trình thời đại

(Trích bài viết cũ hơn 15 năm trước) I. Thảo luận Trước những năm 1990 người ta cho rằng ngôn ngữ lập trình quyết định kết quả lập trình. Chẳng hạn, trong một tình huống cụ thể nào đó, chương trình viết bằng C++ thì tốt hơn Pascal, viết bằng Pascal thì tốt hơn Fortran… Khi các công cụ lập trình còn thô sơ và các yêu cầu phần mềm chưa cao thì nhận định này là khá chính xác. Sau đó người ta cho rằng công nghệ lập trình mới ảnh hưởng lớn nhất đến sản phẩm cuối cùng, sự thống trị trong thập kỷ 90 của lập trình hướng đối tượng và RAD (viết tắt của Rapid Application Development nghĩa là Công cụ phát triển ứng dụng nhanh, thường gọi là lập trình trực quan hay Visual Programming) đã cho thấy tư duy của người lập trình bị ảnh hưởng bởi nền tảng phát triển phần mềm. Không ai phê phán Delphi - phiên bản phát triển từ ngôn ngữ Pascal là kém hơn Java hay Visual C++. Tuy mới có 1/20 thời gian của thế kỷ 21 trôi qua nhưng từ đầu thế kỷ đến nay Công nghệ thông tin đã có những bước phát triển mạnh mẽ t...

Docker: Khám phá quá trình build 1 image - Part 2

Giới thiệu Tiếp theo phần 1, trong bài này, mình sẽ tiếp tục lan man những chuyện ngoài lề để tập hợp thêm 1 chút kiến thức trước khi build 1 image hoàn chỉnh. Có một câu nói của Abert Einstein khá hay: Logic will get you from A to B. Imagination will take you everywhere. – Albert Einstein (Logic sẽ đưa anh từ điểm A tới điểm B. Trí tưởng tượng sẽ đưa anh tới mọi nơi) Lúc trước mình tìm hiểu và học về Docker. Người ta dạy sao, mình làm theo như vậy. Tạo được image, run được container thì thấy rất thành công rồi. Nhưng 1 chị trong nhóm bảo Dockerfile rất quan trọng, bảo mình tìm hiểu thêm. Mình mới bắt đầu tìm hiểu về cơ chế để build 1 image. Việc tìm hiểu cơ chế đòi hỏi bạn nên có 1 chút trí tưởng tượng, vì như vậy sẽ giúp bạn hiểu và nhớ nhanh những thứ quan trọng. Quay lại bài viết này, chúng ta sẽ đi thêm 1 đường vòng trước khi vô bài mới. Cài đặt Software Linux-Windows Tối ưu quá 1 Dockerfile đơn giản Multi-layer Multi-Stage Tối ưu Dockerfile cho multi-project Do bài viết khá dài, ...

Hoài niệm về Pascal - Lê Minh Hoàng

Nhớ lúc học cấp 3, mình được biết thầy Lê Minh Hoàng mà không có dịp học hỏi. Thật đáng tiếc. Thấy là người xuất sắc trong việc trình bày giải thuật nâng cao. Nay mình xin chia sẽ lại buổi phỏng vấn thầy, gọi là chút kỷ niệm thời xưa. Giới thiệu Nhân chuyện thảo luận về việc IOI 2019 sẽ dừng cho phép làm bài bằng Pascal, thầy Lê Minh Hoàng đã có chia sẻ rất ý nghĩa về việc tại sao Pascal lại được giảng dạy ở Việt Nam. Để những chia sẻ của thầy không bị thất lạc mất, mình sẽ lưu lại vào đây :). Đầu tiên: Tại sao VN lại học Pascal? Bây giờ có nhiều bạn chửi bới tùm lum, thậm chí cho đây là món quà cay độc của Bộ GDDT . Không phải mình bênh Bộ GD, nhưng các bạn đó không hiểu một vấn đề lịch sử: Từ những năm 1970s, 1980s là khi tin học bắt đầu vào VN, Pascal là ngôn ngữ chính của tạp chí công nghệ PC Magazine, Turbo Pascal vẫn là best IDE, phần mềm hiệu suất cao đa số viết bằng Pascal, sách vở về thuật toán, cấu trúc dữ liệu đều dùng Pascal. Vậy ngoài Pascal ra còn có thể chọ...

Tư duy lập trình

Không bao giờ sợ phải bắt đầu. Tôi sẽ không viết hai lần cùng một đoạn mã giống nhau. Khi phát triển phần mềm, hãy nghĩ đến tương lai. Viết mã càng ít bao nhiêu ,mắc lỗi càng ít bấy nhiêu. Bạn sẽ không bao giờ trở thành một lập trình viên giỏi nếu chỉ tập luyện 2 giờ mỗi ngày. Tất cả các công việc đều có phần thú vị và phần buồn chán, không có ngoại lệ. Kẻ thù số một của các lập trình viên là gì? Kiêu căng. Lập trình viên sử dụng hầu hết thời gian của mình vào việc sửa lỗi. Chương trình càng dễ đọc bao nhiêu càng tiết kiệm thời gian bấy nhiêu. Trường học khiến các bạn tin rằng chương trình của bạn chỉ cần thỏa mãn một mình bạn là đủ. Điều này hoàn toàn sai lầm. Chương trình phải thỏa mãn khách hàng và các lập trình viên khác. Giới thiệu Thế là bạn nghĩ rằng lập trình là một thế giới vô cùng thú vị, và bạn muốn tham gia vào thế giới ấy? Trước khi bạn bắt đầu, điều duy nhất mà tôi muốn khuyên là: nếu bạn thực sự yêu thích lập trình thì đó rõ ràng là công việc tốt nhất mà bạn có thể có đư...

Một số đều lưu ý về Typography

Typography is the art and technique of arranging type to make written language readable and beautiful Use a font-size between 15 and 25 pixels The optimal point size for print is usually between 10-12 points while that for web, the optimal point size is between 15-25 points. In CSS, you should set font-size in ems or rems than pixels as the former are scalable in nature. Recently, there has been much talk about fluid typography using the newly introduced units vw and vh. Use (really) big font sizes for headlines Some of us may very well have body fonts that range between 20px - 24px and headers that are 30px - 70px, but that doesn’t always mean your website's typography is without issue. Use line spacing betwwen 120 and 150% 45 to 90 characters per line Use good font

Bài toán bóng đen bóng trắng

Hộp đầu tiên có hai quả bóng màu trắng. Hộp thứ hai có hai quả bóng màu đen. Hộp thứ ba có một quả trắng và một quả đen. Các hộp được dán nhãn nhưng mọi nhãn đều sai. Bạn được quyền mở một hộp, lấy ngẫu nhiên một quả bóng, xem màu và bỏ lại vào hộp mà không thể nhìn thấy màu quả bóng còn lại. Vậy bạn cần mở hộp với nguyên tắc trên bao nhiêu lần để có thể dán đúng nhãn cho các hộp?

CSS processor

  Trích từ http://tek.eten.vn