Lời giải cho bài toán "tìm ngày sinh nhật" gây điên đảo cộng đồng mạng

Mới đây trên mạng xã hội Facebook tại Singapore đã xuất hiện những tranh luận xung quanh một bài toán cực kỳ hại não. Bài toán được đăng tải bởi Kenneth Kong trên trang Facebook cá nhân của anh và nó đã có tới gần 3.000 lượt chia sẻ tính từ hôm thứ 7 vừa qua.

Kenneth Kong cho biết bài toán này đã khiến anh và vợ mình tranh luận không ngừng mà vẫn chưa tìm ra được lời giải.


Tạo và deploy Azure Resource Manager templates bằng cách sử dụng Azure portal

Trong bài viết này, mình sẽ hướng dẫn các bạn cách tạo Azure Resource Manager (ARM) bằng cách phát sinh template từ Azure portal, edit lại, và deploy template từ Azure portal.

ARM là gì?

ARM (Azure Resource Manager) template là một tập tin có cấu trúc sử dụng định dạng JSON, định nghĩa các tài nguyên (resource) mà bạn sẽ triển khai trên Azure.
Để tìm hiểu về cấu trúc file ARM, bạn vào xem hướng dẫn ở link này: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates

A và B gặp nhau vào thứ mấy

Câu đố:

Giả dụ A chỉ nói dối vào Thứ hai, thứ ba và thứ tư nhưng nói sự thật vào tất cả những ngày còn lại. B nói dối vào thứ năm, thứ sáu, và thứ bảy nhưng nói thật vào những ngày còn lại. Một ngày A tuyên bố: "Hôm qua tôi đã nói dối" sau đó B nói với A: "Tôi cũng vậy". Vậy ngày nào trong tuần, A và B đã có cuộc nói chuyện này.

Tìm hiểu về TypeScript

Typescript là gì?

TypeScript cho phép bạn viết Javascript theo cách mà bạn thực sự muốn. Typescript là tập cha của JavaScript, cho phép biên dịch thành Jascript, với các bổ sung các tuỳ chọn kiểu tĩnh và lớp trên cơ sở lập trình hướng đối tượng tương tự như C# hoặc Java. Anders Hejlsberg, kiến trúc sư ngôn ngữ C# và là người tạo ra ngôn ngữ Delphi và Turbo Pascal đã tham gia phát triển TypeScript. TypeScript có thể sử dụng để phát triển ứng dụng chạy phía client, hay phía server (Node.js)

Và có 1 câu nói của Anders Hejlsberg rất hay:
What if we could strengthen JavaScript with the things that are missing for large scale application development, like static typing, classes [and] modules . . . that’s what TypeScript is about.

[SQL] Sử dụng Split String và Cross Join để tách chuỗi thành nhiều dòng

Trong bài viết này, tôi sẽ hướng dẫn các bạn cách tách chuỗi được phân cách bằng dấu phẩy thành nhiều dòng.
Giả sử bạn có table như sau:

Create Table #CustomerTemp(CustomerId int, Districts varchar(max))

Insert #CustomerTemp(CustomerId, Districts) Values(1, 'District 1, District 2, District 3');

Select * from #CustomerTemp

Drop Table #CustomerTemp

Và bạn muốn tách từng District ra thành nhiều dòng:

Gởi và nhận dữ liệu từ Azure Service Bus

Azure Service Bus là platform hàng đợi thứ 2 của Micorosft (cái thứ 1 là Azure Queue Storage), cung cấp Relay và Brokered message.
Về Relay message, bạn có thể tìm hiểu thêm ở link: https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-it
Mục đích của Azure Service Bus là cung cấp giải pháp hỗ trợ trao đổi dữ liệu và thông tin giữa các ứng dụng với nhau và không phụ thuộc vào nền tảng mà các ứng dụng đang hoạt động.

Topic

Topic tương tự như queue, cung cấp hàng đợi 1 chiều. Khác biệt ở chỗ 1 topic có thể có nhiều subscription (reiceivers) để có thể nhận message.

Azure Function Apps: Kết nối SQL Server

Trong bài viết này, mình sẽ hướng dẫn các bạn cách kết nối SQL Server khi sử dụng Azure Function App trong Visual Studio

Tạo Project Azure Function Apps

Trong Visual Studio, bạn tạo mới project Azure Function Apps
Chọn Azure Functions 1 (Net Framework) => HttpTrigger. Hiện tại với Azure Functions 2 (preview), mình chưa kết nối thành công với SQL Server

 Bạn bấm Ok để tạo Project mới.

Thêm JWT Bearer vào Swagger UI trong ASP.NET Core 2.1

Trong bài viết này, mình sẽ hướng dẫn các bạn tích hợp Swagger UI vào project ASP.NET Core 2.1

Swagger UI là gì?

Swagger UI là tập hợp các file HTML, Javascrpt, và CSS để tự động tạo tài liệu từ API tương thích với Swagger. Các bạn có thể tham khảo them Swagger từ địa chỉ: https://swagger.io

Setup Swagger UI trong ASP.NET Core

Bài viết này chỉ tập trung về Swagger UI, nên sẽ đi qua nhanh phần setup token sử dụng IdentityServer 4. Mọi người có thể tìm hiểu thêm về IdentityServer 4 ở link sau: https://nhatkyhoctap.blogspot.com/2017/08/tim-hieu-ve-identityserver-4.html

Làm quen với Logic Apps

Logic Apps giúp bạn xây dựng, lập lịch và tự động hóa workflows để bạn có thể tích hợp apps, data, systems, và các dịch vụ với nhau, bất kể nó nằm trên cloud hay on premises. Để làm quen với logic app, trong bài này, mình sẽ hướng dẫn các bạn tạo 1 logic app đơn giản để lấy copy data từ database 1 sang database 2.
Trong bài hướng dẫn này, bạn sẽ:
  • Tạo 1 logic app rỗng
  • Dùng Time Trigger để copy data từ stored procedure sp_GetPeople, sau đó push data vào Service Bus.
  • Dùng 1 LA khác để nhận message từ Service Bus, sau đó đưa vào database 2.

Trước khi đi vào ví dụ, bạn cần làm quen với 1 số khái niệm:
  • Workflow là 1 giao diện đồ họa bao gồm các step trong business process. được bắt đầu từ 1 event “trigger”.
  • Trigger là 1 sự kiện để bắt đầu 1 workflow dựa trên 1 số sự kiện đặc biệt như 1 record được insert vào database, time trigger, hoặc đơn giản là có 1 message được thêm vào queue…
  • Parameters được dùng để lưu lại các giá trị trong workflow.
  • Connectors được định nghĩa dùng để kết nối các process.
  • Action là các bước được thêm vào sau trigger.