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

Bài đăng

Đang hiển thị bài đăng từ Tháng 8, 2022

Đếm số chữ số thập phân khi chia 2 số

 Link: https://www.geeksforgeeks.org/count-number-digits-decimal-dividing-number/ We are given two numbers A and B. We need to calculate the number of digits after decimal. If in case the numbers are irrational then print “INF”. Examples:   Input : x = 5, y = 3 Output : INF 5/3 = 1.666.... Input : x = 3, y = 6 Output : 1 3/6 = 0.5 The idea is simple we follow school division and keep track of remainders while dividing one by one. If remainder becomes 0, we return count of digits seen after decimal. If remainder repeats, we return INF. // C# program to count digits after dot when a // number is divided by another. using System; using System.Collections.Generic; class GFG { static int count(int x, int y) { int ans = 0; // Initialize result var m = new Dictionary<int,int>(); // calculating remainder while (x % y != 0) { x = x % y; ans++; // if this remainder appeared before then // the numbers are 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ọ

Bài toán rải đậu

Mình đang gặp 1 vấn đề về việc phân phối số thập phân vào mảng cho trước nên viết bài này để ôn lại kiến thức giải thuật Bài toán 1 Giả sử có n hũ dùng để chứa các hạt đậu. m là tổng số hạt đậu trong túi. Điều kiện: n, m > 0. n, m là số nguyên dương Hãy phân phối đều các hạt đậu vào các hũ với sự chênh lệch số đậu mỗi hũ ít nhất là 1. Input 1: 5, 3 Input 2: 5, 8 Input 3: 5, 17 Bài toán 2 Giả sử có n hũ dùng để chứa các hạt đậu. m là tổng số hạt đậu trong túi. Có 2 loại hũ: hũ trắng: chưa chứa hạt đậu nào, hủ đỏ đã chứa sẵn 1 hạt đậu. Điều kiện: n, m > 0. n, m là số nguyên dương Hãy phân phối đều các hạt đậu vào các hũ với sự chênh lệch số đậu mỗi hũ ít nhất là 1. Input 1: 5, 3 [0,1,0,0,0] Input 2: 5,8 [0,1,0,1,0] Input 3: 5,17 [0,0,0,0,0]  Bài toán 3 Giả sử có n hũ dùng để chứa các hạt đậu. m là tổng số hạt đậu trong túi. Có 2 loại hũ: hũ trắng: chưa chứa hạt đậu nào, hủ đỏ đã chứa sẵn 1 hạt đậu. Điều kiện: n, m > 0. n là số nguyên dương, m là số thực Hãy phân phối đều các hạt

Geeksfor Geeks

  GeeksforGeeks trang web này tổng hợp rất nhiều bài viết code bổ ích về nhiều lĩnh vực như thuật toán và cấu trúc dữ liệu, cũng như là các bài toán đầy thử thách và hấp dẫn. Nếu bạn đang chuẩn bị tham gia một buổi phỏng vấn xin việc và muốn luyện tập trước nhà tuyển dụng thì đây chính là địa chỉ tin cậy để bạn ôn luyện và trau rồi.

Ôn lại kỹ năng lập trình trên Leetcode

Lâu rồi mình chưa làm lại thuật toán. Mình thấy trang Leetcode khá hay, dùng để ôn lại môn Cấu trúc dữ liệu và Giải thuật. Tuy nhiên, bạn cần xem lại kiến thức trước khi giải bài. Mình đã làm thử 1 bài về Merge Sort, thì đây là bài biến tấu, không phải bài dạng cơ bản, và bạn cần ôn lại kiến thức để đưa data về dạng dữ liệu của bài toán MergeSort Merge Sort là gì? Trong khoa học máy tính, sắp xếp trộn (merge sort) là một thuật toán sắp xếp để sắp xếp các danh sách (hoặc bất kỳ cấu trúc dữ liệu nào có thể truy cập tuần tự, v.d. luồng tập tin) theo một trật tự nào đó. Nó được xếp vào thể loại sắp xếp so sánh. Thuật toán này là một ví dụ tương đối điển hình của lối thuật toán chia để trị do John von Neumann đưa ra lần đầu năm 1945. Một thuật toán chi tiết được Goldstine và Neumann đưa ra năm 1948 Do Merge Sort đòi hỏi cần cấp phát vùng bộ nhớ lớn, nên cấu trúc dữ liệu phù hợp là con trỏ Bài toán You are given two integer arrays nums1 and nums2 , sorted in non-decreasing order , and two i

Sự khác nhau giữa RUN, ENTRYPOINT và CMD trong Dockerfile

RUN, ENTRYPOINT, và CMD là 2 chỉ dẫn lệnh được sử dụng thường xuyên trong Dockerfiles. Vậy 3 câu lệnh đó khác nhau như thế nào? Câu lệnh RUN RUN được thực thi trong quá trình build. Khi ta build một Docker image, Docker sẽ đọc các câu lệnh trong chỉ dẫn RUN và build tới một layer mới trong image sử dụng. # Use an existing Docker image as a base FROM alpine:3.16.2 # Download and install a dependency RUN apk add --no-cache iputils # Tell the image what to do when it starts as a container CMD ["/bin/sh"] Chỉ dẫn RUN sẽ thực thi câu lệnh trong layer mới nằm trên images hiện đang sử dụng và commit kết quả. Kết quả là images đã được commit sẽ được sử dụng trong bước tiếp theo được khai báo trong Dockerfiles Câu lệnh ENTRYPOINT Lệnh ENTRYPOINT cho phép ta cấu hình container sẽ chạy dưới dạng thực thi. Lệnh ENTRYPOINT và các tham số không bị ignore khi Docker container chạy.  ENTRYPOINT có 2 dạng form: ENTRYPOINT ["executable", "param1", "param2"] (e

Hiển thị syntax highlighting trong Notepad++

Trong Notepad++, bạn tạo file với nội dung như sau: <NotepadPlus> <UserLang name="Dockerfile" ext="Dockerfile" udlVersion="2.1"> <Settings> <Global caseIgnored="no" allowFoldOfComments="no" foldCompact="no" forcePureLC="1" decimalSeparator="0" /> <Prefix Keywords1="no" Keywords2="yes" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" /> </Settings> <KeywordLists> <Keywords name="Comments">00# 01 02 03 04</Keywords> <Keywords name="Numbers, prefix1"></Keywords> <Keywords name="Numbers, prefix2"></Keywords> <Keywords name="Numbers, extras1"></Keywords>

Sử dụng MailGun để gửi email miễn phí

Trong bài viết này, mình sẽ hướng dẫn các bạn sử dụng MailGun để gửi email bằng cả 2 cách: SMTP và API MailGun là gì? Mailgun Technologies, Inc. là một dịch vụ gửi email để gửi, nhận và theo dõi email.   Các dịch vụ tương tự khác: SendGrid, Sendinblue, MailerSend, ... MailGun hỗ trợ 2 hình thức gởi email: smtp và Mail API SMTP SMTP (Simple Mail Transfer Protocol) là giao thức chuẩn TCP/IP được dùng để truyền tải thư điện tử (e-mail) trên mạng internet. SMTP là giao thức tiêu chuẩn để gửi email. Nó thiết lập kênh kết nối giữa mail client và mail server, và thiết lập kênh liên lạc giữa mail server gửi và mail server nhận. Email sẽ được đẩy từ mail client lên mail server và từ mail server nó sẽ được server này gửi đi đến mail server nhận. Các cổng kết nối: 25: Port 25 được dùng từ năm 1982, đây là port lâu đời nhất và thường bị chặn vì lý do spam email 587: cổng mặc định để gửi SMTP trên web hiện nay 465: cổng 465 hiện là cổng được khuyến nghị để gửi qua TLS. 2525: Cổng 2525 không phải là

Cách cài đặt và hủy đăng ký distro Windows Subsystem for Linux (WSL)

Giới thiệu về WSL WSL ra đời để giúp Windows hoạt động tốt hơn cho các nhà phát triển, những người cần liên kết với Linux backend một cách dễ dàng, hoặc sử dụng các công cụ thường có sẵn trên Linux mà không có trên Windows, hay trường hợp các công cụ đó đã được biên dịch thành các file nhị phân khi bạn sử dụng Linux với hệ thống file Linux  WSL là một Linux distro chứ không phải nhân hệ thống Linux WSL cài đặt Linux distro trên máy tính người dùng, mặc dù sẽ có nhiều tùy chọn hơn trong tương lai. Chương trình Linux thực hiện các cuộc gọi hệ thống như thường lệ, nhưng theo Turner, các cuộc gọi hệ thống đó sẽ đi tới Windows thay vì Linux. Ông cho hay: Các cuộc gọi từ công cụ dòng lệnh người dùng tương tác với nhân hệ thống OS. Nghĩa là bạn chỉ cần cài đặt và sử dụng chương trình Linux mà không cần thay đổi gì cả vì bạn đang sử dụng Windows. Giải thích Distro là bản phân phối Linux WSL không phải là máy ảo Khi bạn chạy Linux trên Windows trong một máy ảo, bạn sẽ có một hệ điều hành riên

Docker: Tạo Docker file cho nhiều project trong ASP.NET Core - Part 4.1 (Extension)

Trong bài viết này, mình sẽ hướng dẫn các bạn tạo file Dockerfile từ nhiều project trong ASP.NET Core. Nếu bạn chưa biết cách build 1 project đơn giản ASP.NET Core thế nào, mời bạn xem bài viết: https://nhatkyhoctap.blogspot.com/2022/06/docker-tao-docker-file-part-4.html Giả sử bạn có project có cấu trúc như sau: 📁 containerize-a-net-app     └──DockerizeMultiProject.sln     └──📂 DockerizeMultiProject         ├──DockerizeMultiProject.csproj         ├──*.*     └──📂 DockerizeMultiProject.Domain         ├──DockerizeMultiProject.Domain.csproj         ├──*.*     └──📂 DockerizeMultiProject.Infrastructure         ├──DockerizeMultiProject.Infrastructure.csproj         ├──*.* Bạn có thư mục chứa toàn bộ các project Folder chứa file *.sln Tạo Dockerfile  Đầu tiên, cấu trúc để tạo Dockerfile trong project ASP.NET Core 6 như sau: # syntax=docker/dockerfile:1 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env WORKDIR /app #Copy csproj and restore as distinct layers COPY *.csproj ./ RUN dotnet r

Tổng hợp những extension làm Visual Studio Code giống Visual Studio hơn

Visual Studio có ba phiên bản. Community miễn phí và được hỗ trợ cho các cá nhân hoặc cho tối đa năm người dùng trong “các tổ chức phi doanh nghiệp”. Vì vậy, các bạn buộc phải dùng Visual Studio Code trong công ty. Dưới đây là các extension để hỗ trợ Visual Studio Code mạnh mẽ hơn Tạo Project *.sln và thêm Visual Studio File pannel explorer: https://marketplace.visualstudio.com/items?itemName=fernandoescolar.vscode-solution-explorer (còn tiếp)

Docker: Sử dụng Docker để chạy PostgresSQL

Nếu các bạn chưa biết cách tạo Docker-compose, các bạn có thể xem trước bài viết này: https://nhatkyhoctap.blogspot.com/2022/07/docker-su-dung-docker-compose-part-9.html Trước tiên, chạy PostgresSQL trong Docker khá dễ dàng. Nhưng trong bài viết này, mình có hướng dẫn các bạn tích hợp thêm giao diện PgAdmin để quản lý Docker. Ngoài ra bạn có thể sử dụng DBeaver nếu chỉ host PostgresSQL. PostgresDb Trước tiên, bạn cần tìm kiếm trên Docker Hub với từ khóa PostgresSQL. Sau khi xác định đúng image cần tìm, tiếp theo bạn sẽ chọn phiên bản, sau đó bạn đọc description để cần biết sẽ khai báo thêm biến môi trường nào. PostgresSQL on Docker Hubs: https://hub.docker.com/_/postgres/ docker pull postgres Có rất nhiều phiên bản, từ latest, beta, đến những phiên bản chính thức. Nếu bạn không chỉ rõ phiên bản, mặc định Docker sẽ pull về phiên bản latest. Trong bài viết này, mình sử dụng phiên bản 14.4 Để biết cần thêm environment variable nào, các bạn cần đọc kỹ description bên dưới. https://hub.do

Kubernetes: Setup project ASP.NET core trên minikube - Day 4

Trong bài viết này, chúng ta sẽ triển khai 1 ứng dụng ASP.NET trên minikube từ đầu đến cuối. Trước khi bắt đầu, bạn cần tìm hiểu về Docker, cách cài đặt minikube trên máy cá nhân trước. Sau đó tìm hiểu về Images, Containers, Pods, Services. Docker và Minikube Docker là một dự án mã nguồn mở giúp tự động triển khai các ứng dụng Linux và Windows vào trong các container ảo hóa. Sự khác biệt cơ bản là Docker chỉ quản lý 1 node (nhiều container trong 1 node) duy nhất trong khi Kubernetes quản lý 1 cụm các node. Pods là một khái niệm trừu tượng của Kubernetes, đại diện cho một nhóm gồm một hoặc nhiều ứng dụng containers Service được xác định dựa trên label, đại diện cho một entry point để truy cập vào ứng dụng. Minikube thực sự tạo ra một Máy ảo (VM) bên trong docker và trong máy ảo này, nó chạy các vùng chứa docker Để khởi động minikube, bạn gõ: minikube start --vm-driver=hyperv Trường hợp bạn sử dụng driver khác, tham khảo tại đây: https://minikube.sigs.k8s.io/docs/drivers/ Pod in Kuber