Categories
Learning Learning Tech

Quick Things Learned about React JS HOOKS in details with the help of AI ChatGPT for Interview Preparations 2023

Hello, welcome to this precious post on learning of most advance and interview questioned ReactJS Hooks

Topics covered to be learned:

We will learn all this in reverse order so it stays the harder ones more in our mind for longer time or get it clear in our mind for ever lasting.
Each topic can help you to understand and learn about why each hook used in react and it purpose and one use case scenario for detail understandings. (topic maybe cut and shorten for its sweetness for you to read and grasp the main understandings)

Let’s Dive into each one by one by one

useDebugValue – Hook

The useDebugValue is not a hook for managing state or performing side effects like other hooks such as useState, useEffect, etc. Instead, it is a hook provided by React that allows you to display custom labels for custom hooks in React DevTools. It’s primarily used for debugging purposes to provide more descriptive labels and information about custom hooks when inspecting them in the browser’s development tools.

Use Case: Custom Hook Labeling for Debugging:

When you create custom hooks, they may appear in the React DevTools as “Custom Hook” by default, which might not be very informative when you have multiple custom hooks in your application. useDebugValue allows you to customize the label displayed in the DevTools for better debugging and understanding.

Here’s an example of how you might use useDebugValue in a custom hook:

import { useEffect, useDebugValue, useState } from 'react';

// Custom hook to fetch data and display debug value
function useDataFetcher(url) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const fetchData = async () => {
      setLoading(true);
      try {
        const response = await fetch(url);
        const jsonData = await response.json();
        setData(jsonData);
        setLoading(false);
      } catch (error) {
        console.error('Error fetching data:', error);
        setLoading(false);
      }
    };

    fetchData();
  }, [url]);

  // Use the custom hook's url as the debug value label
  useDebugValue(url);

  return { data, loading };
}

In this example, we have a custom hook called useDataFetcher, which fetches data from a given URL using the fetch API. By using useDebugValue with the url parameter as an argument, we’re setting the custom label to the url. When you inspect this custom hook in React DevTools, you will see the specified label instead of a generic “Custom Hook.”

Open DevTools in your Browser (Chrome) (Windows Keyboard Shortcut : CTL+SHIFT+I )

Remember that useDebugValue is used only for debugging purposes and has no effect on the actual behavior of the custom hook. It’s a helpful tool for developers to gain more insights into custom hooks during the development process.

Back to Topics

useLayoutEffect – Hook

The useLayoutEffect hook in React is similar to the useEffect hook, but it runs synchronously after the DOM has been updated but before the browser repaints. This makes it suitable for performing DOM manipulations or measurements that require the latest DOM layout information before the user sees the updated content.

Use Case: DOM Measurements and Synchronous Updates:

A common use case for useLayoutEffect is when you need to interact with the DOM, such as reading element measurements (e.g., width, height, position) or updating the DOM synchronously after a render. This is useful when you need to adjust or animate elements based on their current size or position.

Here’s an example to illustrate its use case:

import React, { useState, useLayoutEffect, useRef } from 'react';

function ElementSizeDisplay() {
  const [width, setWidth] = useState(0);
  const [height, setHeight] = useState(0);
  const divRef = useRef();

  useLayoutEffect(() => {
    const updateSize = () => {
      if (divRef.current) {
        setWidth(divRef.current.clientWidth);
        setHeight(divRef.current.clientHeight);
      }
    };

    updateSize();

    // Attach a resize event listener to update size on window resize
    window.addEventListener('resize', updateSize);

    // Clean up the event listener on component unmount
    return () => {
      window.removeEventListener('resize', updateSize);
    };
  }, []);

  return (
    <div ref={divRef}>
      <p>Width: {width}px</p>
      <p>Height: {height}px</p>
    </div>
  );
}

In this example, we have a ElementSizeDisplay component that displays the width and height of a div element. We use useLayoutEffect to set up a resize event listener and update the state variables width and height whenever the div element’s size changes. We also trigger the initial update immediately after the component mounts.

Using useLayoutEffect ensures that we get the most up-to-date measurements of the div element before it’s displayed to the user, which is essential when working with layout calculations or animations that rely on accurate dimensions.

Note: The key difference between useEffect and useLayoutEffect is the timing of their execution. While useEffect runs after the render is committed to the screen, useLayoutEffect runs before the actual painting, so it can cause the component to block painting if the logic inside it is too slow. For most cases, useEffect is sufficient, but if you need to make synchronous DOM updates or perform measurements, useLayoutEffect is the appropriate choice. Just be aware of potential performance implications and use it judiciously.

Back to Topics

useImperativeHandle – Hook

The useImperativeHandle hook in React is used to customize the instance value that is exposed when a parent component calls ref on a child component. It allows you to define what properties or functions of the child component’s instance should be accessible from the parent component.

Use Case: Exposing Child Component’s Functionality to Parent Component:

A common use case for useImperativeHandle is when you want to allow the parent component to interact with specific methods or properties of a child component directly. This can be useful when the child component encapsulates certain behaviors or actions, and you want to provide an easy-to-use API for the parent component to access those behaviors.

Let’s see an example to illustrate its use case:

import React, { forwardRef, useImperativeHandle, useRef } from 'react';

// Child component that uses useImperativeHandle
const ChildComponent = forwardRef((props, ref) => {
  const inputRef = useRef();

  // Exposing the focusInput function to the parent component using useImperativeHandle
  useImperativeHandle(ref, () => ({
    focusInput: () => {
      inputRef.current.focus();
    },
  }));

  return <input ref={inputRef} type="text" />;
});

// Parent component
function ParentComponent() {
  const childRef = useRef();

  const handleButtonClick = () => {
    // Using the exposed function to focus the input inside the child component
    childRef.current.focusInput();
  };

  return (
    <div>
      <ChildComponent ref={childRef} />
      <button onClick={handleButtonClick}>Focus Input</button>
    </div>
  );
}

In this example, we have a ChildComponent that encapsulates an input element and exposes a focusInput function to the parent component using useImperativeHandle. The useImperativeHandle hook is used to define an object with the properties and functions that the parent component can access through the ref of the ChildComponent.

The ParentComponent renders the ChildComponent and a button. When the button is clicked, the handleButtonClick function is called, and it, in turn, calls the focusInput function exposed by the ChildComponent, focusing the input element inside the child component.

Using useImperativeHandle can be handy when you want to expose specific functionalities of a child component to its parent, especially when dealing with custom components or third-party libraries. However, be cautious when using this pattern, as it might break encapsulation and lead to a less maintainable codebase. Whenever possible, prefer to manage state and interactions through props and callbacks to maintain a more predictable and React-friendly component architecture.

Back to Topics

useRef – Hook

The useRef hook in React is used to create a mutable reference to a value that persists across renders. Unlike state variables (useState), updating a useRef value does not trigger a re-render. This makes useRef suitable for storing and accessing mutable values or accessing DOM elements imperatively.

Use Case: Storing Mutable Values:

One of the primary use cases for useRef is to store mutable values that don’t need to trigger a re-render when updated. Since the component won’t re-render when the useRef value changes, it can be useful for keeping track of some data that doesn’t affect the component’s visual output.

Here’s an example where useRef is used to keep track of a previous value:

import React, { useState, useEffect, useRef } from 'react';

function Counter() {
  const [count, setCount] = useState(0);
  const prevCountRef = useRef();

  useEffect(() => {
    prevCountRef.current = count;
  }, [count]);

  const prevCount = prevCountRef.current;

  return (
    <div>
      <p>Current Count: {count}</p>
      <p>Previous Count: {prevCount}</p>
      <button onClick={() => setCount((prev) => prev + 1)}>Increment</button>
    </div>
  );
}

In this example, we use useRef to create a prevCountRef that keeps track of the previous value of the count state variable. We update the prevCountRef using the useEffect hook whenever count changes. Since updating prevCountRef does not trigger a re-render, we can safely access its current value without causing an infinite loop.

Use Case: Accessing DOM Elements:

Another common use case for useRef is to access and interact with DOM elements directly. Since React components are typically declarative, there might be cases where you need to manipulate a DOM element imperatively (e.g., focusing an input, measuring its size, etc.).

Here’s an example of using useRef to focus an input element when a button is clicked:

import React, { useRef } from 'react';

function FocusInput() {
  const inputRef = useRef();

  const handleButtonClick = () => {
    inputRef.current.focus();
  };

  return (
    <div>
      <input ref={inputRef} type="text" />
      <button onClick={handleButtonClick}>Focus Input</button>
    </div>
  );
}

In this example, we use useRef to create the inputRef, which is attached to the input element through the ref attribute. When the button is clicked, the handleButtonClick function is called, which uses inputRef.current to access the underlying DOM element and invoke the focus() method on it.

Remember that using useRef for accessing DOM elements should be done sparingly, as it goes against React’s declarative approach. Whenever possible, try to manage component state and behavior through props and state variables to maintain the React flow of data and rendering. However, there are cases where direct DOM manipulation with useRef can be necessary or more efficient.

Back to Topics

useMemo – Hook

The useMemo hook in React is used for memoizing expensive computations, so they are only recomputed when their dependencies change. It helps optimize the performance of functional components by avoiding unnecessary re-computations of values that haven’t changed between renders.

Use Case: Memoizing Expensive Computations:

The primary use case for useMemo is when you have a computationally expensive function or calculation that doesn’t need to be re-evaluated on every render, especially if the function relies on some props or state that might remain unchanged for a while.

Let’s see an example to illustrate its use case:

import React, { useMemo, useState } from 'react';

function ExpensiveComponent({ data }) {
  // This is a computationally expensive function that we want to memoize
  const expensiveResult = useMemo(() => {
    let result = 0;
    for (let i = 0; i < data.length; i++) {
      result += data[i];
    }
    return result;
  }, [data]); // The dependency array contains 'data'

  return <div>{expensiveResult}</div>;
}

function App() {
  const [dataArray, setDataArray] = useState([1, 2, 3, 4, 5]);

  return (
    <div>
      <ExpensiveComponent data={dataArray} />
      <button onClick={() => setDataArray([1, 2, 3, 4, 5])}>Update Data</button>
    </div>
  );
}

In this example, ExpensiveComponent takes an array called data as a prop and computes the sum of its elements. The computation can be costly, especially if the data array is large.

By using useMemo with the data array as a dependency, we ensure that the expensiveResult is only recalculated when the data array changes. So, when the parent component (App) renders and updates the dataArray, ExpensiveComponent will not recompute the sum unless the dataArray changes.

useMemo should be used when the computation is relatively expensive and depends on certain inputs (props or state) that might not change often. It’s essential to remember that using useMemo comes with some overhead, so you should only use it when the performance benefits outweigh the costs.

It’s also worth noting that the improvement in performance gained by using useMemo depends on the nature of the computation and the size of the data. For simple or small computations, the performance gain might be negligible, and in such cases, using useMemo might not be necessary. Always profile and measure your application’s performance to determine the most effective optimizations.

Back to Topics

useReducer – Hook

The useReducer hook in React is used for managing more complex state logic in functional components. It is an alternative to using the useState hook when the state has a complex structure or when the state transitions depend on previous state values. useReducer follows the same principles as the standard Reducer concept in JavaScript, similar to how it works with the Array.reduce method.

Use Case: Managing Complex State Logic:

The primary use case for useReducer is when you need to handle state changes that are more involved and involve multiple sub-values or when you have actions that depend on the previous state. It’s beneficial when the state transitions are not straightforward and need to be calculated based on existing state.

Here’s an example to illustrate its use case:

import React, { useReducer } from 'react';

// Reducer function
function reducer(state, action) {
  switch (action.type) {
    case 'INCREMENT':
      return { count: state.count + 1 };
    case 'DECREMENT':
      return { count: state.count - 1 };
    default:
      return state;
  }
}

function Counter() {
  // useReducer returns the current state and a dispatch function to send actions.
  const [state, dispatch] = useReducer(reducer, { count: 0 });

  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'INCREMENT' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'DECREMENT' })}>Decrement</button>
    </div>
  );
}

In this example, the useReducer hook is used to manage the state of a simple counter component. The reducer function defines how state transitions should happen based on different action types. The state is initialized with { count: 0 }, and clicking the buttons dispatches actions to increment or decrement the count.

useReducer provides a structured way to handle more complex state updates, especially when you need to consider multiple factors before updating the state. It can be particularly useful when working with state machines, form handling, or managing state in contexts and reducers for more extensive applications.

However, for simpler cases where the state doesn’t involve complex transitions or doesn’t depend on the previous state, useState may be more suitable and easier to manage. Choose the right approach based on the specific requirements and complexity of your component’s state management.

Back to Topics

useCallback – Hook

The useCallback hook in React is used to memoize functions, which helps to optimize the performance of functional components that rely on callbacks, especially when passing them down to child components. Memoization means that the function returned by useCallback will only change if its dependencies change, otherwise, the same memoized function instance will be reused.

The syntax of the useCallback hook is as follows:

const memoizedCallback = useCallback(callbackFunction, dependencies);
  • callbackFunction: The function that you want to memoize.
  • dependencies (optional): An array of dependencies. If any of these dependencies change, the memoized callback will be recomputed; otherwise, it will be reused.

Use Case: Preventing Unnecessary Re-renders:

In React, passing down new function references to child components can lead to unnecessary re-renders. For example, consider a parent component rendering multiple instances of a child component, and each child component receives a callback prop from the parent. If the parent component creates a new function instance for the callback prop on every render, each child component will think that its prop has changed, resulting in re-renders even if the actual logic of the callback hasn’t changed.

Using useCallback, you can avoid this behavior by memoizing the callback function:

import React, { useCallback } from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const handleClick = useCallback(() => {
    // Callback logic
  }, []);

  return (
    <div>
      <ChildComponent onClick={handleClick} />
    </div>
  );
}

By providing an empty dependency array ([]) as the second argument to useCallback, we ensure that the handleClick function remains the same across re-renders, preventing unnecessary re-renders of the child component.

Remember, while useCallback can help with performance optimizations in certain situations, it’s essential to use it judiciously. Overusing useCallback might lead to less predictable behavior and unnecessary overhead. As with all performance optimizations, it’s best to measure and profile your application to identify actual performance bottlenecks before applying optimizations like useCallback.

Back to Topics

Hope this helps you in interview preparation and your successful selection.

Drop us your love and kindness, by sharing this article. Thank you!

Categories
Learning Learning Tech

How to build Android APK/apk from command line interface on windows/mac?

Hello,

If you are looking for, to build or generate the android apk file (in your capacitor project) directly from the command line rather then opening Android Studio and building up.

I will share few steps and challenges face to build android apk from CLI on windows and also would share below the mac version of command line code too incase you are mac user.

First step first,

Before running the CLI command which I will be sharing below, we make sure we add the two things under Environment variables of windows system.

  • Java JDK or JAVA_HOME path
  • zipalign if not set or when you run command your cli throw error not zipalign command (so we need it too in the PATH variable of the windows system)
See last two entries in the image above, second entry were zipalign.exe is available under your real Android Studio folder.

Next, just try out these command you will be good to go

Windows CLI command for Android APK release build
cd android && 
gradlew.bat assembleRelease && 
cd app/build/outputs/apk/release &&
jarsigner -keystore YOUR_KEYSTORE_PATH -storepass YOUR_KEYSTORE_PASS app-release-unsigned.apk YOUR_KEYSTORE_ALIAS &&
zipalign 4 app-release-unsigned.apk app-release.apk

In Code above, note we are using gradlew.bat which is important to note for window users reset is same for MAC command too (didn’t tested on mac, channel of command source from the post), result would working for me on windows!

Note the date and time of output (compare to post date and time, I renamed the file to mdw-app-release.apk for use)
Mac CLI command for Android APK release build
cd android && 
./gradlew assembleRelease && 
cd app/build/outputs/apk/release &&
jarsigner -keystore YOUR_KEYSTORE_PATH -storepass YOUR_KEYSTORE_PASS app-release-unsigned.apk YOUR_KEYSTORE_ALIAS &&
zipalign 4 app-release-unsigned.apk app-release.apk

If you like to generate for debug just changed assembleRelease to assembleDebug and change the file names accordingly, from release to debug or whatever names you would like to prefix or suffix.

Hope this gives ideas and info for the challenge you might facing.

Happy Learning & Thanks for visit.

Categories
Learning Learning Tech

How to sync generated next.js out folder build to android/android studio in capacitor?

Hello, Welcome to the feel and question.

Here is a quick way do it out!

Build the Next.js project: Run the build command for your Next.js project, which typically generates a production-ready build in the “out”/ “build” folder.

npx next build && npx next export

Locate the build output: Once the build process is finished, locate the generated “out” folder in your Next.js project directory.

Copy the build output: Copy the entire contents of the “out” folder, including any subfolders and files.

Paste the build output in the Android project: Navigate to the root directory of your Android project in Capacitor. The default location is usually the “android” folder within your Capacitor project.

Paste the build output: Paste the contents of the “out” folder into the appropriate location in your Android project. By default, you can paste it into the “app/src/main/assets/public” directory of your Android project.

Sync the Android project: After pasting the build output, trigger a sync operation in Android Studio to ensure the changes are recognized. This can be done by clicking on the “Sync Project with Gradle Files” button or by selecting “File” -> “Sync Project with Gradle Files” in the Android Studio menu.

Build and run the Android project: Once the sync operation is complete, you can build and run your Android project to deploy the updated Next.js web application within your Capacitor app.

Voila you are done!.

Hope this question and learning helps.

Happy Learning!

Categories
Learning Learning Tech

Laravel getting error: Target class [App\Http\Controllers\GurbaniReadingController::class] does not exist. But file already exists!!

Hello Guys,

Facing this issue and struggling to find the cause?, okay then lets direct jump in to the fix I found or more precisely mistake I found!

In picture you might seeing controller name is different than I have mentioned below; I am changed it to Book, so don’t get confuse.

In my case I was wrapped the loading on controller in web.php route with single quotes!

Line of code causing this error:

Route::get('/book-readings/upload-photos', ['App\Http\Controllers\BookReadingController::class', 'uploadPhotos']);

Very carefully watch in above code code was wrapped in quotes: ‘App\Http\Controllers\BookReadingController::class’,
Controller should be loaded without single quotes;

And second important reason is it, this line should shall fall before the resource route if you have similar to this controller, in my case it was :

Route::resource('/book-readings', App\Http\Controllers\BookReadingController::class); 
// this line was defined before the above route I wanted to work! (I am not sure why this line causing to stop showing the page :/)

Finally I make these changes so everything started working smoothly & all routes loading fine and up!.

// Upload Audio Files:
Route::get('/book-readings/upload-photos', [App\Http\Controllers\BookReadingController::class, 'showPhotos'])->name('book-readings.upload-photos');
Route::post('/book-readings/upload-photos', [App\Http\Controllers\BookReadingController::class, 'uploadPhotos']);
Route::delete('/book-readings/upload-photos/{id}', [App\Http\Controllers\BookReadingController::class, 'destroyPhoto']);

Route::resource('/book-readings', App\Http\Controllers\BookReadingController::class);

Hope this will give you a hint to point the issue you might come up like this mostly when we are new and learning and developing new things!

Happy Learnings

Categories
Blog Learning

Curios Question: Wanted to know how much rate would cost me running 10W Laser Machine for 14 mins?

Hello

Welcome here, If you also wondering how much it would cost us for running certain electrical appliance at home for our small work or business and you wondering how to make those calculations to find the rate for that mins or hours of machine running assuming just its running in your home nothing else.

If you were looking for similar answer, lets dive how I have tried to find it out myself with help of latest tech programs online!

Lets Dig In!

Here how I frame my question using the data from my latest Electricity Bill (In India, I am using Tata Power the great source of electricity provider to the nation!)

Based on following data 101-300 Units Energy Charge: 5.65 rupee /kwh, RA charges 0.00 rupee /kwh, CSS charges: 0.35 rupee /kwh, Wheeling Charges : 2.21 rupee /kwh, Fixed Demand Charges: 125.00 rupees, ED 16.00%, Tose: 0.2604 rupee /kwh
If I am running a single machine of 10W laser for 14 mins how much my electricity bill would be?

Question I formed to put in the mouth of AI tool 😛

Here is how AI calculated from the above that and calculate out the result for me:

To calculate the electricity bill, we need to convert the power consumption of the machine from Watts to kilowatts and then multiply it by the energy rate per unit.


10 W = 10/1000 kW = 0.01 kW

The time period is 14 minutes, which we need to convert to hours:

14 minutes = 14/60 hours = 0.2333 hours

The total energy consumption can be calculated as:

Energy consumed = Power x Time = 0.01 kW x 0.2333 hours = 0.002333 kWh

Now, we can calculate the energy charges, demand charges, and other charges as follows:

Energy Charges = Energy consumed x Energy rate per unit
= 0.002333 kWh x 5.65 Rs/kWh = 0.0132 Rs

Fixed Demand Charges = Fixed Demand Charges per billing cycle
= 125.00 Rs (for a single machine)

Wheeling Charges = Energy consumed x Wheeling charges per unit
= 0.002333 kWh x 2.21 Rs/kWh = 0.0051 Rs

CSS Charges = Energy consumed x CSS charges per unit
= 0.002333 kWh x 0.35 Rs/kWh = 0.0008 Rs

ED Charges = Energy charges + Wheeling charges + CSS charges
= 0.0132 Rs + 0.0051 Rs + 0.0008 Rs = 0.0191 Rs

Taxes and Other Surcharges = Energy charges + Wheeling charges + CSS charges + ED charges x Tose rate
= 0.0191 Rs x 0.2604 = 0.00498 Rs

Total Electricity Bill = Energy Charges + Fixed Demand Charges + Wheeling Charges + CSS Charges + ED Charges + Taxes and Other Surcharges
= 0.0132 Rs + 125.00 Rs + 0.0051 Rs + 0.0008 Rs + 0.0191 Rs + 0.00498 Rs
= 125.043 Rs (rounded off to two decimal places)

Therefore, if you run a single 10W laser machine for 14 minutes, your electricity bill would be approximately 125.043 Rs.

Then I said Wow so nice and quick, isn’t it?

But then thought & put my attention on the Fixed Demand Charges which 125/-, would it be a for day? then I thought No its for a month, so how it would calculate for a day? it simply as you would also know this to divide in my number of days in a month, right?

So to see if AI response the result back with more in detail with assuming and consuming similar data passed before, here is reframed question I have put (in the mouth of AI tool)

can you do this divide fixed charges by month of days and return everything again?

question for AI tool

This is what it finally answered back;

Sure, to calculate the fixed demand charges per day, we can divide the monthly fixed demand charges by the number of days in the month.

Assuming a 30-day billing cycle, the fixed demand charges per day would be:

Fixed Demand Charges per day = Fixed Demand Charges per month / Number of days in the month
= 125.00 Rs / 30 days
= 4.1667 Rs per day

Now, we can calculate the updated energy charges, wheeling charges, CSS charges, ED charges, and taxes and other surcharges per unit of energy consumed, which would be:

Energy Charges = 5.65 Rs /kWh
Wheeling Charges = 2.21 Rs /kWh
CSS Charges = 0.35 Rs /kWh
ED Charges = Energy charges + Wheeling charges + CSS charges
= 5.65 Rs/kWh + 2.21 Rs/kWh + 0.35 Rs/kWh
= 8.21 Rs/kWh

Taxes and Other Surcharges = ED charges x Tose rate
= 8.21 Rs/kWh x 0.2604
= 2.1384 Rs/kWh

To calculate the total electricity bill for running a 10W laser machine for 14 minutes per day, we can use the same method as before, but now we have updated values for the fixed demand charges, ED charges, and taxes and other surcharges.

Energy consumed per day = Energy consumed per hour x Hours per day
= 0.01 kW x 0.2333 hours/day
= 0.002333 kWh/day

Energy Charges per day = Energy consumed per day x Energy rate per unit
= 0.002333 kWh/day x 5.65 Rs/kWh
= 0.0132 Rs/day

Fixed Demand Charges per day = Fixed Demand Charges per month / Number of days in the month
= 125.00 Rs / 30 days
= 4.1667 Rs/day

Wheeling Charges per day = Energy consumed per day x Wheeling charges per unit
= 0.002333 kWh/day x 2.21 Rs/kWh
= 0.0051 Rs/day

CSS Charges per day = Energy consumed per day x CSS charges per unit
= 0.002333 kWh/day x 0.35 Rs/kWh
= 0.0008 Rs/day

ED Charges per day = Energy charges per day + Wheeling charges per day + CSS charges per day
= 0.0132 Rs/day + 0.0051 Rs/day + 0.0008 Rs/day
= 0.0191 Rs/day

Taxes and Other Surcharges per day = ED charges per day x Tose rate
= 0.0191 Rs/day x 0.2604
= 0.00498 Rs/day

Total Electricity Bill per day = Energy Charges per day + Fixed Demand Charges per day + Wheeling Charges per day + CSS Charges per day + ED Charges per day + Taxes and Other Surcharges per day
= 0.0132 Rs/day + 4.1667 Rs/day + 0.0051 Rs/day + 0.0008 Rs/day + 0.0191 Rs/day + 0.00498 Rs/day
= 4.2098 Rs/day

Therefore, if you run a single 10W laser machine for 14 minutes per day, your electricity bill would be approximately 4.2098 Rs/day

Hurray! Isn’t it fun?

Hope you enjoyed this puzzle solving question answer game when really you want to know the difficult question you have all time in our head, but latest techs help’s out in secs with such quick answers!

Keep exploring keep learning!

Source : Open AI Chat GPT

P.S. Not sure what it calculated it reflect exact what we are looking, I assuming it calculated to be accurate!

Categories
Javascript Learning

How to fix Uncaught TypeError: Cannot assign to read only property ‘0’ of object occurring in JavaScript?

Hello,

This type error mostly get in scenario when you try to sort the readyonly data array.

For me this was occoured when I tried to sort the direct result from my GraphQL query response data like below:

const sortedData = data.bhangarwalas.sort((a, b) => a?.firstname > b?.firstname ? 1 : -1);

In above, data.bhangarwalas is graphql query response results which is readonly in nature as response.

To fix this issue the solution is quick fix for which I have too google to know the result!

Error Screenshot Uncaught TypeError: Cannot assign to read only property ‘0’ of object ‘[object Array]’

Here is the quick solution:

const sortedData = [...data.bhangarwalas];
      sortedData.sort((a, b) => a?.firstname > b?.firstname ? 1 : -1);

In code above, We need to clone or you in other words, copying the “data.bhangarwalas” into new array variable and then over that variable, we need to perform sorting operation, which results us right response.

Hope this help you to solve the quick error or to know what scenario this type of error is generated.

Thanks for reading.

Happy learning!

Categories
Learning

What to do when you don’t quickly find UTS scan code at a Mumbai Railway Station you are at?

Hello,

You are facing too? Not to worry.

The challenge of finding UTS Mumbai Station Scan QR scan code if you are standing at other the end of the station where UTS scan code is not available quickly.

Just quickly jump over to this site : MUMBAI RAILWAY STATION UTS SCAN CODE find the station and scan the code right away and Book your ticket from UTS App.

UTS Scan code Mumbai [Western|Centeral|Eastern]

Incase if you not find the UTS Scan code you can quickly drop a note to them at  utsqrscan@doableyo.com to add your favorite station QR code on the list!

Hope this helps.

Thanks for visiting. Please share with your friends and family if you love their work!

Categories
Javascript Learning Tech

What to do when you get nextjs error (Module not found: Error: Can’t resolve ‘private-next-pages/’ in ‘/vercel/path0’) on vercel/nextjs deployment?

Hello,

If you too facing this error : Module not found: Error: Can’t resolve ‘private-next-pages/’ in ‘/vercel/path0’

while deploying your NextJs project over Vercel platform, please follow what solution and mistake I was doing.

Error Screenshot of error occurring from the NextJs Project deployment on vercel platform.

As, I tried to debug this error by right away check the the next in the log highlighted (in screenshot above) recommending to following alias rule to be set if you have touched you next.config.js file with any webpack settings.

In my case I did have to touched the next.config.js file and so I have add the same lines of code recommend in the follow link of Next.js doc

https://nextjs.org/docs/messages/invalid-resolve-alias

But for me still I didn’t found the right solution, because was in the naming of folder under nextjs project.

Basically, I was loading the static content into the dynamic route in Nextjs (Like example reference here).

What I have missed was the name of the folder under pages directory I have created named as “learn” it should be similar to name “posts” as created one at root level of the project to hold the “.md” or “.html” file content to pass down to dynamic route page which will be under /pages/posts/[id].js

Sharing here screenshot of the directory where the naming was a mistake

Here highlighted “learn” folder should be same as “posts” below

After renaming the folder name “learn” to “posts” the error went off and found my deployment working successfully.

Hope this small mistake tip help you to solve this problem.

If you have found any mistake in the post. Please don’t hesitate to hit me on my email jat@doableyo.com to rectify.

Enjoyed reading this? How about sharing with your friends or in groups, this would help!

Thanks, Happy Learning!

Categories
Learning

ReactJS Component Skeleton for Register/Create Account

Hello,

Welcome, here is how you can create a get to started ReactJS Register/Create Account component from scratch with very basic fields for your website or application.

import React from "react";

function CreateAccount() {

    const [formValues, setFormValues] = useState({
        role: '',
        name: '',
        mobile: '',
        email: '',
        password: '',
        confirmPassword: ''
    });

    const handleInputChange = e => {
        const { name, value } = e.target;
        setFormValues({ ...formValues, [name]: value });
    };

    const handleSubmit = e => {
        e.preventDefault();
        // You can perform your form submission logic here
        console.log(formValues);
    };

    return (<>
        <div className="card">
            <div className="card-body">
                <form method="POST" action="https://doableyo.com/atamsamagam/admin/register">
                    {/* <input type="hidden" name="_token" defaultValue="zdDR1NfxywhlhmpIqNTZ7uNUvl1luoUe7X0N6GOh" /> 
                        for CSRF!
                    */}
                    <div className="form-group row">
                        <label htmlFor="role" className="col-md-4 col-form-label text-md-right">Role</label>
                        <div className="col-md-6">
                            <select id="role" name="role" className="form-control  text-capitalize" required autoComplete="role" autofocus>
                                {/* need a fix of admin */}
                                <option value="user">user</option>
                                <option value="admin">admin</option>
                            </select>
                        </div>
                    </div>
                    <div className="form-group row">
                        <label htmlFor="name" className="col-md-4 col-form-label text-md-right">Name</label>
                        <div className="col-md-6">
                            <input id="name" type="text" className="form-control " name="name" defaultValue required autoComplete="name" autofocus />
                        </div>
                    </div>
                    <div className="form-group row">
                        <label htmlFor="mobile" className="col-md-4 col-form-label text-md-right">Mobile</label>
                        <div className="col-md-6">
                            <input id="mobile" type="number" required minLength={10} maxLength={10} className="form-control " name="mobile" defaultValue autoComplete="mobile" />
                            <small>Enter without country code or + character</small>
                        </div>
                    </div>
                    <div className="form-group row">
                        <label htmlFor="email" className="col-md-4 col-form-label text-md-right">E-Mail Address</label>
                        <div className="col-md-6">
                            <input id="email" type="email" className="form-control " name="email" defaultValue required autoComplete="email" />
                        </div>
                    </div>
                    <div className="form-group row">
                        <label htmlFor="password" className="col-md-4 col-form-label text-md-right">Password</label>
                        <div className="col-md-6">
                            <input id="password" type="password" className="form-control " name="password" required autoComplete="new-password" />
                        </div>
                    </div>
                    <div className="form-group row">
                        <label htmlFor="password-confirm" className="col-md-4 col-form-label text-md-right">Confirm Password</label>
                        <div className="col-md-6">
                            <input id="password-confirm" type="password" className="form-control" name="password_confirmation" required autoComplete="new-password" />
                        </div>
                    </div>
                    <div className="form-group row mb-0">
                        <div className="col-md-6 offset-md-4">
                            <button type="submit" className="btn btn-primary">
                                Create
                            </button>
                        </div>
                    </div>
                </form>
            </div>
        </div>

    </>)
}

export default CreateAccount;

Source: Self Learned & AI ChatGPT Channel

Happy learning!

Categories
Blog Learning Learning

Picture tag in HTML

The <picture> tag in HTML is a semantic element that is used to define multiple source images for a single content. The <picture> element is used to specify multiple sources for an image, allowing the browser to choose the most appropriate source based on the user’s device and screen size. This allows you to display images that are optimized for different devices, without having to rely on JavaScript or CSS media queries.

Here’s an example of how you might use the <picture> tag:

<picture >
  < source srcset="large.jpg" media="(min-width: 800px)">
  < source srcset="small.jpg" media="(max-width: 799px)">
  < img src="small.jpg" alt="A picture">
</ picture >

In this example, the < source > elements define different sources for the image, based on the screen size of the user’s device. If the screen is at least 800 pixels wide, the browser will choose the large.jpg image, while if the screen is smaller than 800 pixels, it will choose the small.jpg image. The <img> element is used as a fallback for browsers that do not support the <picture> element.

hope you understand the basic concepts and use of Picture Tag in HTML

Source: AO Interaction Channel