Skip to main content

Posts

Showing posts from 2024

Next.js vs react

Next.js builds upon React and offers several advantages over using React alone: Key Advantages of Next.js over React: Server-Side Rendering (SSR) and Static Site Generation (SSG): Next.js provides built-in support for SSR and SSG, leading to faster initial page loads, improved SEO, and better performance for content-heavy applications. Simplified Routing: Next.js offers a file-based routing system, making it easier to manage routing configurations compared to React, where you might need to use additional libraries like React Router. Automatic Code Splitting: Next.js automatically splits your JavaScript code into smaller chunks, optimizing page load times by loading only the necessary code for each page. API Routes: Next.js allows you to easily create serverless API endpoints within your Next.js project, simplifying backend integration. Image Optimization: Next.js includes an optimized image component that automat...

React JS Basics

  What are side effects in React? In React, side effects are operations that interact with external systems or cause changes outside the component's rendering process. These can include: Data fetching: Retrieving data from APIs or other sources. Subscriptions: Setting up listeners for events or data changes. Timers: Creating timers for delayed actions or animations. DOM manipulation: Directly modifying the DOM (rarely used in modern React with declarative approach). Why use useEffect ? In class-based components, you would typically use lifecycle methods like componentDidMount , componentDidUpdate , and componentWillUnmount to handle side effects. Functional components don't have these methods directly. The useEffect Hook provides a way to manage side effects in functional components. It allows you to run a function after a component renders (or re-renders) and optionally clean up any resources created by that function before the component unmounts. How does useEffect wor...

OWASP API Security Top 10 vulnerabilities 2023

API Security Do's and Don'ts Don't trust input data for an API and do validate all inputs. Ensure you understand security and keep sensitive data out of code. Don't hardcode keys/tokens Don't reveal useful info in error messages. Don't have hidden/unadvertised features. Don't filter data in UI - control at app level Don't confuse authentication and authorization Always use API gateways to control access and traffic Do require API documentation. Do expect users/hackers to find and use undocumented endpoints Do continuous testing - attack simulation, test configs, fuzzing, injections OWASP API Security Top 10 Vulnerabilities 2023 API-1:2023 - Broken Object Level Authorization: BOLA is still the leading vulnerability that plagues APIs. When data objects do not have sufficient access controls in place, resources can be accessed by unauthorized users. API-2:2023 - Broken Authentication  Broken Authentication contains all vulnerabilities associated with auth...

Short notes on Application Layer in OSI model

  In the Open Systems Interconnection (OSI) model, Layer 7 is the Application Layer . It is the topmost layer and is responsible for providing network services to user applications. This layer interacts directly with the software applications that users interact with, providing the interface for them to access network resources. Functions of the Application Layer: User Interface: Provides a way for users to interact with network services through applications like web browsers, email clients, and file transfer programs. Application Services: Offers services like file transfer, email, remote login, and directory services. Service Identification: Identifies and distinguishes between different types of network services (e.g., HTTP for web browsing, SMTP for email). Data Representation: Ensures that data is in a format that can be understood by both the sending and receiving applications. Encryption and Decryption: Handles encryption and decryption of data for security purp...

Load Balancer Routing Algorithms - Draft version

The main purpose of the load balancer is to distribute the traffic evenly across multiple servers. The Load Balancer promises the efficient usage of the back-end servers without overloading and not keeping the server in busy times. Avoiding the server overload will reduce the downtime. Table of Content: Different types of LB Algorithms used by ALB ALB Features  Questions Configuring ALB in AWS  Creating K8S config files Factors to consider to ALB design There are different types of load balancers: Application Load Balancer (Layer 7) Network Load Balancer Global Server Load Balancer Let's narrow our discussion to Application Load Balancer(ALB). The ALB operates on layer 7 of OSI model.   Algorithms used by ALB are: Round Robin   Least connections Weighted Round Robin IP hash Least Connections Response time The ALB evaluates incoming requests to ensure efficient and reliable traffic distribution. LB has to ensure. High availability Scalability Performance opt...

Difference between SKU and Tenant in multi-tenant SaaS application

SKUs define what you get.  Tenants define who gets it in a securely isolated way. A SaaS provider benefits from SKUs for tiered pricing and multi-tenancy for efficient resource usage.   SKU (Stock Keeping Unit) Features and Pricing: SKUs in a SaaS application typically dictate the set of features, functionalities, and usage limits (e.g., storage, number of users, API call volumes) available to a customer. Customer Choice: Customers choose an SKU based on their needs and budget. Higher-tier SKUs usually offer more capabilities and resources at a higher cost. Within a Tenant: A single tenant (customer) can only be subscribed to one SKU at a time, but may potentially upgrade or downgrade over time. Tenant Data Isolation: A tenant represents a logically isolated instance of the SaaS application dedicated to a specific customer or organization. A customer's data, configurations, and often customizations are kept completely separate from other tenants. Multi-Te...

GIT Branching strategies

  What are GIT branching strategies? GIT branching strategies are patterns or approaches that tech teams use to organize & manage their code through different branches in a GIT system. Each strategy defines the rules & guidelines for the creation, naming & merging the branches for facilitating collaboration, stability, & release management. In this article, we're going to discuss  git branching strategy best use cases, hands-on on git, as well as the git branching strategies we follow. Along with recommendations on how to use git to accomplish work in a consistent and productive manner. ‍ GIT What are the different GIT branching strategies? Here are some commonly used git branching strategies: Master branch This is the  main  branch and one of the repository in which we have the latest stable code of production.   General rules: - Access to direct merge is restricted - Best practice is to create a CI/CD pipeline to merge code into this ...

Exchanger in Java's Concurrent API

The Exchanger class in Java's java.util.concurrent package offers a unique synchronization mechanism for concurrent programming. It facilitates exchange of objects between two threads in a pair , acting as a rendezvous point where both threads must arrive with their respective objects before any actual exchange occurs. Key Concepts: Object Exchange:  Each thread presents an object upon calling  exchange() . When both threads arrive, they exchange their objects and proceed. Synchronization:   exchange()  blocks the calling thread until its partner arrives, ensuring data consistency and preventing race conditions. Bidirectional Queue:  Consider  Exchanger  as a two-slot circular buffer where threads take and put items alternatively. Generic Type:  Accommodates exchange of objects of any type ( T ). Methods: exchange(T object) :  Exchanges the given object with another thread's and returns the received object. Blocks until another thread arriv...