Saturday

Sideproject: Chiti.app


Chiti.app is from "Chi tiêu" in Vietnamese translates to "expenses" in English. The application is a user-friendly platform designed for straightforward daily expense tracking.



This is my personal side project built on a robust technology stack featuring Spring Boot, MySQL, Docker, and Concourse CI.

Thursday

Text manipulation: Find and replace Linux commands


Text manipulation is a key aspect of working with text data in various fields such as data science, data engineering, web development, and system administration. There are many tools and techniques available for text manipulation in Linux or Unix-based systems. Some popular tools for text manipulation include:

Wednesday

What is API Gateway?


 What does API gateway do?


The diagram below shows the detail.

Step 1 - The client sends an HTTP request to the API gateway.

Step 2 - The API gateway parses and validates the attributes in the HTTP request.

Step 3 - The API gateway performs allow-list/deny-list checks.

Step 4 - The API gateway talks to an identity provider for authentication and authorization.

Step 5 - The rate limiting rules are applied to the request. If it is over the limit, the request is rejected.

Steps 6 and 7 - Now that the request has passed basic checks, the API gateway finds the relevant service to route to by path matching.

Step 8 - The API gateway transforms the request into the appropriate protocol and sends it to backend microservices.

Steps 9-12: The API gateway can handle errors properly, and deals with faults if the error takes a longer time to recover (circuit break). It can also leverage ELK (Elastic-Logstash-Kibana) stack for logging and monitoring. We sometimes cache data in the API gateway.


 

Source: 
(23) Post | LinkedIn

Thursday

How to Install SQL Server on MacOS with docker


 I'm writing a small tut for who need to install SQL Server on macOS using docker

Step 1: Download the SQL Server Image

sudo docker pull mcr.microsoft.com/mssql/server:2019-latest

Step 2: Launch the SQL Server Image in Docker

docker run -d --name example_sql_server -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pass.word-123' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest

Step 3: Check the SQL Server Docker Container

docker ps -a


Step 4: Install SQL Server Command-Line Tool

sudo npm install -g sql-cli

Step 5: Connect to SQL Server 

5.1 Using Command

mssql -u sa -p Pass.word-123

5.2: Using VSCode to connect to sql server

Using the extension SQL Server (mssql)



Sunday

[DP] Minimum number of coins need for a specific amount


 322. Coin Change - LeetCode

You are given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money.

Return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

You may assume that you have an infinite number of each kind of coin.

Example 1:

Input: coins = [1,2,5], amount = 11
Output: 3
Explanation: 11 = 5 + 5 + 1

Example 2:

Input: coins = [2], amount = 3
Output: -1

Explanation:

We use dynamic programming for this problem: First, we try to resolve the smaller problem!

Suppose we have numbers type of coins = [1,2,5]
We need to get minimum coins for amount 2
        The smallest amount is 0 then we need 0 coin
        With amount 1 we need 1 coin
        With amount 2:
            For case: coin 1 < 2, mean coin 1 can be used, then 1 coin
                      We need to calculate the coins for remain amount
                            The reimain amount is 2-1 = 1 
                            No. of coin for amount 1 is 1
                       => for this case we need 2 coins.
            For case: coin 2 <= 2, mean coin 2 can be used, then we have 1 coin
                      We need to calculate the coins for remain amount
                            The reimain amount is 2 - 2 = 0
                            No. of coin for amount 0 is 0
                       => for this case we need 1 coins.
                       compare with the previouse case, 1<2 then the answer is 1
            For case 5: 5 > 2, cannot use
 Then we just continue until the amount we're looking for.


Solution:

public int coinChange(int[] coins, int amount) {
        int[] dp = new int[amount+1];
        Arrays.fill(dp, amount + 1);
        dp[0] = 0;
        Arrays.sort(coins);
        for (int a = 1; a <= amount; a++){
            for(int i = 0; i<coins.length; i++){
                if (coins[i] <= a){
                    int remain = a - coins[i];
                    int numOfCoin = 1 + dp[remain];
                    dp[a] = Math.min(dp[a], numOfCoin);
                }
            }
        }
        return dp[amount] > amount? -1: dp[amount];
    } 

Free App - Layout Application Windows in Mac OS


One of my favorite built-in features in Windows OS is arranging the windows. This feature is very useful for me when implementing the front end, or do some translation stuff. Unfortunately, this feature is not available for Mac OS, we must use a window manager application.

   Windows management in Windows 11

In my opinion, the best application for organizing workspace on Mac is Magnet. Magnet is paid application, it cost ~2$ and we buy it here ‎Magnet on the Mac App Store (apple.com)

Today I would like to introduce an alternative free solution is that Rectangle (rectangleapp.com). Rectangle App is free and very lightweight. It's also very fast.




The following screenshot displays the windows positions and the corresponding shortcut in Rectangle.