Snippets Collections
document.addEventListener('DOMContentLoaded', function() {

    var wishlistButton = document.getElementById('wishlistBtn');

​

    wishlistButton.addEventListener('click', function() {

        // Create or toggle popup container

        var popupContainer = document.querySelector('.popup');

        if (!popupContainer) {

            popupContainer = document.createElement('div');

            popupContainer.className = 'popup';

            popupContainer.innerHTML = `

                <div class="popup-content">

                    <span class="close" onclick="closePopup()">&times;</span>

                    <h2>Wishlist</h2>

                    ${getWishlistContent()} <!-- Insert WooCommerce Smart Wishlist shortcode content here -->

                    <p><a href="#" id="wishlistLink">View Wishlist</a></p>

                </div>

            `;

            // Set the link to the wishlist page (replace with your wishlist link)

            var wishlistLink = popupContainer.querySelector('#wishlistLink');

            wishlistLink.href = '#'; // replace with your wishlist page URL

            // Append the popup container to the body

            document.body.appendChild(popupContainer);

        } else {

            // Toggle display property

            var currentDisplay = window.getComputedStyle(popupContainer).getPropertyValue('display');

            popupContainer.style.display = currentDisplay === 'none' ? 'block' : 'none';

        }

    });

​

    // Function to close the popup

    window.closePopup = function() {

        var popupContainer = document.querySelector('.popup');

        if (popupContainer) {

            document.body.removeChild(popupContainer);

        }
//File dataSlice.jsx (Redux)

import { createSlice } from '@reduxjs/toolkit';

const initialState = [];

export const dataSlice = createSlice({
  name: 'data',
  initialState,
  reducers: {
    saveToLocal: (state) => {
      localStorage.setItem('data', JSON.stringify(state));
    },
    getFromLocal: (state) => {
      const localData = JSON.parse(localStorage.getItem('data'));
      if (localData) {
        return localData;
      }
      return state;
    },
  },
});

export const { saveToLocal, getFromLocal, addData } = dataSlice.actions;

export default dataSlice.reducer;


//File input.jsx

const handleSubmit = async () => {
    const uri = encodeURIComponent(inputValue.toString());
    const url = "https://cleanuri.com";
    const shortenAPI = `${url}/api/v1/shorten`;
    if(uri!==""){
      try {
        const res = await fetch(shortenAPI, {
          method: "POST",
          body: `url=${uri}`,
          headers: {
            "Content-Type": "application/x-www-form-urlencoded",
          },
        });
  
        if (!res.ok) {
          throw new Error(`HTTP error! status: ${res.status}`);
        }
  
        const dataJSON = await res.json();
        console.log(dataJSON)
        if(dataJSON?.result_url){
          const newData = { url: inputValue, shortLink: dataJSON.result_url };
          setData([...data, newData]);
          console.log(newData);
          // localStorage.setItem('data', JSON.stringify([newData]))
          dispatch(saveToLocal(newData))
          setInputValue("");
        }
        
      } catch (error) {
        console.error("Fetch error:", error);
      }
    }
    else{
      setAlertInput(!alertInput)
    }
  };
{
   "client_id": "123456.7654321",
   "events": [
     {
        "name": "campaign_details",
        "params": {
          "campaign_id": "google_1234",
          "campaign": "Summer_fun",
          "source": "google",
          "medium": "cpc",
          "term": "summer+travel",
          "content": "logolink",
          "session_id": 1231313, // must be integer value
          "engagement_time_msec": "100"
        }
     },
     {
      "name": "purchase",
      "params": {
        "currency": "USD",
        "transaction_id": "T_12345",
        "value": 12.21,
        "coupon": "SUMMER_FUN",
        "shipping": 3.33,
        "tax": 1.11,
        "session_id": 1231313,
        "items": [
          {
            ...
          }
        ]
      }
   ]
  }
import axios, { AxiosError } from 'axios';

// Crea una instancia de Axios
const instance = axios.create({
  baseURL: 'https://tu-dominio.com',
  // Aquí puedes añadir más configuraciones si es necesario
});

// Simula un error 503 en todas las respuestas utilizando un interceptor
instance.interceptors.response.use(
  response => {
    // Crea un error de Axios simulado
    const axiosError = new AxiosError(
      "Service Unavailable", // mensaje de error
      "ECONNABORTED", // código de error, este es un ejemplo, puede ajustarlo según sea necesario
      undefined, // config, puedes añadir la configuración de la solicitud aquí si es necesario
      undefined, // request, puedes añadir la solicitud aquí si es necesario
      { // response, aquí construyes la respuesta simulada
        status: 503,
        statusText: 'Service Unavailable',
        headers: response.headers,
        config: response.config,
        data: 'Service Unavailable'
      }
    );

    // Rechaza la promesa con el error de Axios simulado
    return Promise.reject(axiosError);
  },
  error => {
    // Este bloque maneja errores reales de las peticiones
    return Promise.reject(error);
  }
);

export const extractName = async (
  text: TExtractNamePayload
): Promise<{ data: TExtractNameResponse; status: number }> => {
  instance.defaults.headers['Authorization'] = `Bearer ${process.env.EXPO_PUBLIC_SERVER_SECRET_KEY}`;
  try {
    const response = await instance.post<TExtractNameResponse>('/api/v1/conversation/entity-extraction/names', text);
    return { data: response.data, status: response.status };
  } catch (error) {
    if (axios.isAxiosError(error)) {
      // Aquí capturas el error simulado o real y lo devuelves
      return { data: error.response?.data, status: error.response?.status };
    }
    // Manejo de otros tipos de errores
    throw error;
  }
};
CustomerID | CustomerName   | Phone      | Address                     | request_to
-----------|----------------|------------|-----------------------------|-----------
1          | Sandeep Kumar  | 44444444   | 147 Main Street, Sydney     | 1
2          | Honey Singh    | 99999999   | 789 Brooke Street, Melbourne| 2
def dfs(root):
    if not root:
        return []

    stack = [root]
    traversal = []

    while stack:
        node = stack.pop()
        traversal.append(node.value)

        if node.right:
            stack.append(node.right)
        if node.left:
            stack.append(node.left)

    return traversal
def bfs(root):
    if not root:
        return []

    queue = deque([root])
    traversal = []

    while queue:
        node = queue.popleft()
        traversal.append(node.val)

        if node.left:
            queue.append(node.left)
        if node.right:
            queue.append(node.right)

    return traversal
var member = "my name is Mate";

var last2 = member.slice(-2);

alert(last2); // "te"
<style>
body{background:url("https://static.wikia.nocookie.net/life-is-strange/images/a/ac/LIS_-_Victoria-Bedroom.jpg/revision/latest?cb=20150712212736") no-repeat fixed; background-size:cover;}
</style>

<style>
.profile {
background:#b7a7aa;
border-radius: 15px;

 }
</style>

<style>
.general-about {

 background:#948789;

  border-radius: 30px;
</style>

<style>
.blog-preview {

  background:#948789;

  border-radius: 15px;
</style>

<style>
.blurbs {

    background:#948789;

  border-radius: 3px;
 }
</style>

<style>

.contact .inner a img {

font-size: 0;

}

.contact .inner a img:before {

font-size: 1em;

display: block

}

</style>

<style>
main a {
  color: var(--black);
</style>

<style>
.profile .contact, .profile .table-section, .profile .url-info {
  border: 5px solid #948789;
border-radius: 20px;
}
</style>

<style>
.profile .contact .heading, .profile .table-section .heading, .home-actions .heading {
  background-color:#948789;
  color: ;
border-radius: 10px;
</style>

<style>
.profile .table-section .details-table td {
  background-color: #948789;
  color: #5e5657;
border-radius: 10px;
}
</style>

<style>
.profile .blurbs .heading, .profile .friends .heading {
  background-color: #948789;
  color: #fff;
border-radius: 60px;
</style>

<style>
@import url("https://robins.one/spacehey/addons/modern-comments.css");

</style>

<style>
p {
color: #5e5657;
}
</style>

<style>

 .blurbs .section h4{display: none !important;}

</style>

<style>

  .blurbs .heading{ font-size:0; }

.blurbs .heading:before{ content: "❝Now you're totally stuck in the retro zone.. sad face :(❞"; font-size:.8rem; font-weight:bold; color:insert color; }

</style>

<style>
@import url('https://fonts.googleapis.com/css2?family=Fasthand&family=Patrick+Hand&display=swap');
p{
  font-family: 'Patrick Hand', cursive;
  font-size: 140%;
}
h1,h2,h3,h4,h5{
  font-family: 'Patrick Hand', cursive;
  font-size: 160%;  
</style>

<style>
@import url("https://fonts.googleapis.com/css2?family=Fasthand&family=Oleo+Script:wght@400;700&family=Patrick+Hand&display=swap");

.w-40 h1{
font-family: Oleo Script;
font-size: 40px;
text-align: center;
background: -webkit-linear-gradient(#ffff, #ffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-text-stroke: 1px white;
}
</style>


<img src="https://i.pinimg.com/564x/1c/44/de/1c44dee19868220819132782ea4dfb5a.jpg"/>
  

<img src="https://i.pinimg.com/564x/c8/ff/e1/c8ffe11c8a99bb3894f6923274c0035e.jpg"/>

<style>
.online { visibility: hidden; } .online img { content: url("https://xyz.crd.co/assets/images/gallery08/6f775f2c.png?v=4ca63763"); animation-name: none; visibility: visible; height: 30px; width: 30px
</style>


<style>
nav{background-color:#948789;(--box_color_and_seethru); !important;border-radius: 0px 0px var(--curve) var(--curve); !important; border-radius: 15px;}

nav ul{background:none !important;}

nav img{filter: opacity(80%) !important;}

nav ul a img, .mood a img{display:none !important;}

.top{background:none !important;background-color:rgba(0, 0, 0, 0.1); !important;}

<style>
li.active .icon { content:url('https://xyz.crd.co/assets/images/gallery12/f45cb68e.gif?v=4ca63763'); width: 20PX;height: 20px;}
</style>

<style>
.profile-pic {
    background: #fff;
    padding: 5px 5px 196px;
    box-shadow: 3px 3px 10px silver;}
</style>

<style>
main:before {
	width: 100%;
	height: 150px;
	display: block;
	content: "";
	background-image: url('https://64.media.tumblr.com/6f9e0446ee841569d2c4b20542b74e5e/a8177aa47ca07e3c-5f/s540x810/cdd595853101e9027bfd218859e60821687d203b.gif');
	background-position: center center;
	background-size: cover;
border-radius: 15px;
}
@media only screen and (max-width: 600px) {
	main:before{
		height: 200px;
	}
}
</style>

<style>
.profile .friends .person img:not(.icon):hover {
    transform: scale(1.2);
    transition: 0.5s ease;
}
.profile .friends .person img:not(.icon) {
    transition: 0.5s ease
}
</style>

<style>
 .profile .friends .person img {
        border-radius: 500px;
    }
</style>

<style>
img.logo{
content: url("https://s7.ezgif.com/tmp/ezgif-7-affb9fb609.png");
width: 60px !important;
height: 60px !important;
</style>


<style>

body:before {

content: " ";

height: 100vh;

width: 100vw;

display: block;

position: fixed; 

top: 0; 

left: 0; 

z-index: 100;

background-image: url('https://64.media.tumblr.com/4330af98ddd856c140ef079da0e462a4/tumblr_pfffh4pYjL1un7uhro5_400.gif');

background-size: cover;

background-repeat: no-repeat;

background-position:center;

animation: yourAnimation 1s ease 1s 1 normal forwards;

pointer-events: none;}

@keyframes yourAnimation { 0.0%{ opacity: 1;} 75%{ opacity: 1; } 100%{ opacity: 0;} } 

</style>

<style>* {cursor: url(http://www.rw-designer.com/cursor-view/109862.png), url(http://www.rw-designer.com/cursor-view/109862.png), auto !important;}</style>

<iframe width="1" height="1" src="https://www.youtube.com/embed/3JPA3z5PmJQ?si=ZIZIrF30D5E9dUUv?&;amp;;autoplay=1&;loop=1" title="Youtube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope;picture-in-picture" allowfullscreen=""></iframe>
def binary_search(arr, target):
    low, high = 0, len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1  # Not found
[
  {
    $match: {
  $and: [
    { "age": { $type: "string" } },
    { $expr: { $gt: [{ $strLenCP: "$age" }, 5] } }
  ]
}
  },
    {
      $project: {
        email:1
      
    }
    }
  
]
import phonenumbers
nohp = input("Masukan No HP (+62 xxxx):")
#Modul ini berfungsi untuk melacak negara
from phonenumbers import geocoder
#Modul ini berfungsi untuk melacak provider yang digunakan
from phonenumbers
import carrier
lokasi_no = phonenumbers.parse(nohp, "CH")
provider_no = phonenumbers.parse(nohp,'RO')
print("\n#################################")
print('Negara :',geocoder.description_for_valid_number(lokasi_no, "en"))#geocoder.description_for_valid_number digunakan untuk melacak negara
print('Provider : ',carrier.name_for_number(provider_no, 'en'))#geocoder.description_for_valid_number digunakan untuk melacak provider
#ketik pada cmd/terminal kalian
pip install phonenumbers
#Avoid entering password everytime #Global
git config --global credential.helper store
or
git config credential.helper store #Non-Global


#Delete a key=value pair from git repository
git config --global --unset user.email
$userinfos = $f3->get('SESSION.userinfos');
$codeuser = $userinfos[1]->CheckAuthentificationResult->Code;
$codeResponsableUSer = $userinfos[1]->CheckAuthentificationResult->CodeResponsable;
// Compontent

Import { useState } from "react"
import data from "./data";
import './style.css'


const Accordian = () => {
    const [selected ,setSelected] = useState(null);
    const handlerSingleSelection = (getcurrentId) => {
    setSelected(getcurrentId === selected ? null : getcurrentId)
    console.log(selected);
    }
    return <div className="wrapper">
        
        <div className="accordian">
          {
            data && data.length > 0 ? 
            data.map(dataItem => <div className="item">
                <div onClick={() => handlerSingleSelection(dataItem.id)} className="title">
                    <h3>{dataItem.question}</h3>
                    <span>+</span>
                </div>
                {
                    selected === dataItem.id ? <div className="content">{dataItem.answer}</div>  : null
                }
            </div>)
            : <div>No data found!</div>
          }
        </div>
    </div>
}
export default Accordian;

// style.css

.wrapper{
    display: flex;
    height: 100vh;
    width: 100vw;
    justify-content: center;
    align-items: center;
   
}

.accordian{
    width: 600px;
    
}

.item{
    background-color: rgb(239, 148, 115);
    margin-bottom: 10px;
    padding: 10px 20px;
    border-radius: 6px ;
    box-shadow: 8px 4px 3px ;
}
.title{
    color: white;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
}

.content{
    color: white;
    height: auto;
}

//data

const data = [
    {
      id  : '1',
      question: "What are accordion components?",
      answer:
        "Accordion components are user interface elements used for organizing and presenting content in a collapsible manner. They typically consist of a header, content, and an expand/collapse action.",
    },
    {
      id  : '2',
      question: "What are they used for?",
      answer:
        "They are commonly employed in various contexts, including FAQs, product descriptions, navigation menus, settings panels, and data tables, to save screen space and provide a structured and user-friendly interface for presenting information or options.",
    },
    {
      id  : '3',
      question: "Accordion as a musical instrument",
      answer:
        "The accordion is a musical instrument with a keyboard and bellows. It produces sound by air passing over reeds when the player expands or compresses the bellows, used in various music genres.",
    },
    {
      id  : '4',
      question: "Can I create an accordion component with a different framework?",
      answer:
        "Yes of course, it is very possible to create an accordion component with another framework.",
    },
  ];

  export default data;
import UIKit
import PDFKit
import SVProgressHUD

class PdfViewController: UIViewController {
    
    @IBOutlet weak var dummyPdfView: UIView!
    
    @IBOutlet weak var courseLAbel: UILabel!
    
    var pdfView : PDFView!
    
    var pdfString = ""
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        setPDF()
    }
    
    func setPDF() {
        
        SVProgressHUD.show(withStatus: "Loading...")

        DispatchQueue.global(qos: .background).async {
            if let pdfURL = URL(string: self.pdfString), let pdfDocument = PDFDocument(url: pdfURL) {
                DispatchQueue.main.async {
                    // Create and configure the PDFView on the main thread
                    let newPDFView = PDFView(frame: self.dummyPdfView.bounds)
                    newPDFView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
                    self.dummyPdfView.addSubview(newPDFView)
                    
                    // Set properties and assign document to PDFView
                    newPDFView.autoScales = true
                    newPDFView.displayDirection = .vertical
                    newPDFView.displayMode = .singlePageContinuous
                    newPDFView.document = pdfDocument
                    
                    SVProgressHUD.dismiss()
                }
            } else {
                DispatchQueue.main.async {
                    SVProgressHUD.showError(withStatus: "Failed to load PDF")
                }
            }
        }
    }
    
    @IBAction func backButtonPressed(_ sender: Any) {
        SVProgressHUD.dismiss()
        self.dismiss(animated: true)
    }
}
git checkout development —-> move from current branch to master

git pull origin development —-> take the latest content from master

git checkout receptionist_API —-> move from master to your current branch

git merge development —-> merging the latest content of master into your branch
//Outputs a number within the range of indexes
//return {integer} - index within the cereal data
function getRandomIndex() {
  var nameList = getColumn("Cereal Nutrition", "Name");
  var index = randomNumber(0, nameList.length - 1);
}

//returns name at that index
// index {integer} - location in list
// return {string} - name at that index
function getName(index) {
  var nameList = getColumn("Cereal Nutrition", "Name");
  var name = nameList [index];
  return name;
}
// Outputs the location of a image of the cereal box
// index {integer} - number of index of image you need
// picture {string} - image a
function getCerealImage(index) {
  var allPictures = getColumn("Cereal Nutrition", "Box Image");
  var picture = allPictures [index];
  return picture;
}

//Check Calories, Check True
function checkCalories(guess, index) {
  var correct = false;
  var allCalories = getColumn("Cereal Nutrition", "Calories");
  if (guess == allCalories [index]) {
    correct = true;
  }
  return correct;
}
// Compares calories guessed to cereal and counts matches
// guess {intger} - user input the amount calories
// count {integer} - number of other cereal with that many calories
function allCaloriesCheck(guess) {
  var allCalories = getColumn("Cereal Nutrition", "Calories");
  var count = 0;
  for (var i = 0; i < allCalories.length; i++) {
    if (guess == allCalories[i]) {
      count = count + 1;
    }
  }
  return count;
}
//Check Sugar, Check True
function checkSugar(guess, index) {
  var correct = false;
  var allSugar = getColumn("Cereal Nutrition", "Sugar");
  if (guess == allSugar [index]) {
    correct = true;
  }
  return correct;
}
//Comapres sugar guessed to cereal and counts matches
//guess (integer) - nurser input the amount of Sugar
//count (integer) - number of other cereal with that many Sugar
function allSugarCheck(guess) {
  var allSugar = getColumn("Cereal Nutrition", "Sugar");
  var count = 0;
  for (var i = 0; i < allSugar.length; i++) {
    if (guess == allSugar[i]) {
      count = count + 1;
    }
  }
  return count;

// userContext.js
import { createContext } from "react";

const userContext = createContext();

export default userContext;

//UserState.js
import React, { useEffect, useState } from "react";
import userContext from "./userContext";

const UserState = ({ children }) => {
  const [user, setUser] = useState(null);

  useEffect(() => {
    if (localStorage.getItem("codeswear-token")) {
      setUser(localStorage.getItem("codeswear-token"));
    }
  }, []);

  return (
    <userContext.Provider value={{ setUser, user }}>
      {children}
    </userContext.Provider>
  );
};

export default UserState;
javascript: (function () {
  if (
    location.host.includes("youtube.com") &&
    (location.pathname.startsWith("/channel") ||
      location.pathname.startsWith("/@"))
  ) {
    const feed = document
      .querySelector("link[title='RSS']")
      .getAttribute("href");
    if (feed.includes(".xml")) {
      let toClip = prompt("copy to clipboard", feed);
      navigator.clipboard.writeText(toClip);
    } else {
      window.alert("failed");
    }
  } else {
    window.alert("current page isn't YouTube Channel");
  }
})();
sizeguide/script/release-theme walmart 

script/release sizeguide
https://axuat.sanabil.com/namespaces/AXSF/api/services/RecruitmentDashboardServiceGroup/RecruitmentDashboardService/getRecruitment

https://axuat.sanabil.com/namespaces/AXSF/data/ApplicantEducations

https://axuat.sanabil.com/namespaces/AXSF/data/ApplicationInterviews

https://axuat.sanabil.com/namespaces/AXSF/data/Applications

https://axuat.sanabil.com/namespaces/AXSF/data/Applicants

Interviews
ManagementInterviewFeedbackTables
TechnicalInterviewFeedbackTables
HRInterviewFeedbackTables
Approaches to Determine the Error Type
To correctly handle an error in an application, it's important to determine its error type. That's because there is no one-size-fits-all solution for errors when dealing with real-world applications.

There are two primary approaches to determining error types in JS:

Using the name of an error (stored in the name field)
Using the error class with the instanceof operator
First, let's talk about some general rules that must be followed regardless of the chosen approach.

The main rules for error handling
Here is the general approach when coding error handlers of a certain type: in the error handling block, make sure to add a condition for checking the error type using an if statement and describe the handling in the body of the if statement.

Like so:

...
} catch (err) {
  if (check_condition_for_error_1) {
    // Logic for handling error 1    ...
    return;
  }

  if (check_condition_for_error_2) {
    // Logic for handling error 2
    ...
    return;
  }

  // Logic for handling unknown errors
  // In this example we only log them
  console.log(`An unknown error ${err.name} has occurred: ${err.message}`);
}
When coding error handlers, regardless of the approach you're using to determine the error type (check condition), adhere to these two rules:

At the end of the catch block, you must describe the logic for handling unknown errors or, as often referred to, you'll need to implement "default error handling". You'll need to do this for the error to be handled in any situation, even if it doesn't meet any of the listed conditions. If there is no "default" branch and the error doesn't fall under any of the conditions (an unknown error), it will be ignored, which is unacceptable.
At the end of each block that handles a specific error, add an execution stop with return to exit try...catch. We do this to avoid repeated checks in subsequent if blocks when the error has already been handled. Moreover, return doesn't allow execution to reach the "default branch". If the error has already been handled, the code execution will simply terminate earlier.
Imagine what would happen if there were no return. The first error would be handled in a corresponding if block, and then once again in the handler for unknown errors.

Determining the error type using its name
In the JS world, it is common to use unique names for different types of errors. This allows the name of the error (the name field) to be used to determine its type.

But there is a problem: for instances of standard errors of the class Error, the default error name is also equal to Error, which means we can't distinguish these errors from each other. To avoid this, engineers usually use the custom error we talked about in the previous lesson.

To describe an error handler of a certain type, we can simply add a corresponding if check to the catch block. Here, the check condition will look like this: err.name === "ErrorName".

Now look at the handler used with this approach:


...
} catch (err) {
  // Check the name of the error
  if (err.name === "ErrorName") { 
    // Describe the logic for handling the error
    ...
    return;
  }
  ...
} 
We'll need to describe a separate check for each error type.

This approach, using the error name, is simple and straightforward, but there are some drawbacks:

The engineer needs to track the uniqueness of error names. While engineers often check that error names don't conflict within the code itself, they also need to ensure that errors don't overlap with third-party libraries. Tracking these cases can be challenging at times.
It's easy to make a typo in the error name in the check block. Eventually, the check condition won't work and the error won't be processed correctly. This would happen, for example, if we misspelled SomeError as SomeEror.
There is no convenient way to describe handlers for a group of errors. If you want the handler to be triggered for several types of errors, you'll need to explicitly specify each of them in the check condition. For example, if you need the handler to be triggered for the SomeError, AnotherError, and ThirdError errors, then you'll need to write the following condition: javascript err.name === "SomeError" || err.name === "AnotherErrror" || err.name === "AnotherErrror"
Indeed, this is not very convenient or intuitive.

Now let's look into the second way of determining if the type of error is devoid of these drawbacks: the instanceof operator.

Hierarchy of errors: the instanceof operator
Error classes can be inherited like any other classes in JavaScript. This allows us to describe a hierarchy of errors, group them, and describe the common handling logic.

In this case, the instanceof operator is used. It allows us to determine whether the specified object (error) is an instance of a certain class, taking into account the inheritance hierarchy.

For example, to check whether err is a SomeErrorName error or its special case (an inheritor class), we'd write the following: err instanceof SomeErrorName. If it is, the expression evaluates to true. Otherwise, it evaluates to false.

To better understand how the instanceof operator works, let's look at an example. We'll describe three error classes: SomeErrorName,AnotherErrorName, and ChildOfAnotherErrorName. We'll also indicate that ChildOfAnotherErrorName is the inheritor (that is, a special case) of AnotherErrorName.

Next, we'll check the result returned by instanceof for each of them:

class SomeError extends Error {};
class AnotherError extends Error {};
class ChildOfAnotherError extends AnotherError;

let someError = new SomeError("SomeError")
let anotherError = new AnotherError("AnotherError")
let childOfAnotherError = new ChildOfAnotherError("Child error of AnotherError")

// This will return true because someError is an instance of SomeError
console.log(someError instanceof SomeError)

// This will return false because anotherError is an instance of AnotherError, not SomeError
console.log(anotherError instanceof SomeError)

// This will return true, childOfAnotherError is an instance of ChildOfAnotherError
// and ChildOfAnotherError is inherited from AnotherError
console.log(childOfAnotherError instanceof AnotherError)

// This will return true, childOfAnotherError is an instance of ChildOfAnotherError
console.log(childOfAnotherError instanceof ChildOfAnotherError)
Note that although the AnotherError class was specified in the test condition, the expression returned true because childOfAnotherError inherits from AnotherError.

Thanks to this operator, one handler is enough for us to handle a group of errors. instanceof checks the class, taking inheritance into account. Since a specific class is indicated in the check condition, we are insured against problems associated with the intersection of the error names and typos in the check conditions. Moreover, the IDE will prompt if there is no class with the specified name.

When an inherited error requires handling logic that differs from other errors in this group, the handler is placed in a catch block above the one for the group of errors.

class ErrorGroup extends Error {};
class FirstChildOfErrorGroup extends ErrorGroup;
class SecondChildOfErrorGroup extends ErrorGroup;

try {
....
} catch( err) {
  // Separate handler for FirstChildOfAnotherError
  if (err instanceof FirstChildOfErrorGroup) { ... }

  // Handler for a group of errors
  if (err instanceof ErrorGroup) { ... }
}
The error hierarchy helps us organize our code by grouping errors of the same type, such as errors that would happen while working with the database, validation errors, etc.

One of the most popular scenarios for using error grouping is describing API errors. In this case, instead of an endless list of conditions, the engineer just needs to describe the general class HttpError and the errors themselves (special cases); for example, DocumentNotFoundError (error 404) and ForbiddenError (error 403) should be implemented as its inheritors. For this, we can just describe one handler for HttpError. Inside this handler, we'll return an error to the user.

If we need to describe an additional error, e.g. Unathorized (error 401), we won't need to change the check condition for it to be handled correctly.

That's that! You've almost completed this chapter. It's time to move on to the final lesson.
Global Error Handlers and Custom Errors
Sometimes, despite all our efforts, some errors may still go unhandled, our code will fail, and the application will crash. Fortunately, Node.js has a mechanism to deal with this. Meet global error handlers.

Global error handlers
To add a global error handler, we'll subscribe to the uncaughtException event of the built-in process module.

You can implement your own logic to handle errors. However, for now, we'll focus on logging information about errors to the console.

The code for implementing a global handler looks like this:

const process = require('process');

process.on('uncaughtException', (err, origin) => {
  console.log(`${origin} ${err.name} with the message ${err.message} was not handled. Pay attention to it!`);
});

// Throw a synchronous error
throw new Error(`The missed error`);
This handler catches errors in both synchronous functions and promises. You can see this if you replace throw with Promise.reject(...).

We can determine where the error occurred by referring to the value stored in the origin parameter of the handler function. If its value is unhandledRejection, this means an error occurred in the promise. Otherwise, it means it was thrown using throw.

Defining custom errors in JavaScript
Engineers often need to extend the Error object to include additional information necessary for handling errors. For example, we may have a situation where we need to set our own error name or indicate the response status code we want to be sent to the user.

Since errors are normal objects, we can do this manually. All we need to do is specify the desired information as a property of a specific error instance.

However, in practice, engineers usually define custom error classes by extending the standard Error class. By reusing code, engineers prevent code duplication.

Let's describe your first custom error: a data validation error:

class ValidationError extends Error {
  constructor(message) {
    super(message);
    this.name = "ValidationError";
    this.statusCode = 400;
  }
}
We simply extended the standard Error class by setting the values of the name and statusCode fields in the constructor. In the future, we'll need the name field to determine the type of error.

You can use your own error in the same way you'd use a standard one, for example: throw new ValidationError("A validation error occurred").

Different problems require different handling scenarios, so it is important to be able to distinguish between different types of errors. We'll talk about how to do this in the next lesson.



$ nmap --top-ports 1000 -T4 -sC http://example.com

Nmap scan report for example.com {redacted}

Host is up (0.077s latency).

rDNS record for {redacted}: {redacted}

Not shown: 972 filtered ports

PORT      STATE  SERVICE

21/tcp    open   ftp

22/tcp    open   ssh

| ssh-hostkey:

|   {redacted}

80/tcp    open   http

| http-methods:

|_  Potentially risky methods: TRACE

|_http-title: Victim Site

139/tcp   open   netbios-ssn

443/tcp   open   https

| http-methods:

|_  Potentially risky methods: TRACE

|_http-title: Site doesn't have a title (text/html; charset=UTF-8).

|_{redacted}

445/tcp   open   microsoft-ds

5901/tcp  open   vnc-1

| vnc-info:

|   Protocol version: 3.8

|   Security types:

|_    VNC Authentication (2)

8080/tcp  open   http-proxy

|_http-title: 400 Bad Request

8081/tcp  open   blackice-icecap
Handling Errors in JS
JavaScript doesn't have a universal way of handling errors, which means we're sometimes faced with a pretty difficult task. Error handling is implemented differently depending on whether the functions are synchronous or asynchronous, and the approach to implementing asynchrony can vary as well. Let's examine these cases.

Error handling in synchronous code
To handle errors in synchronous code, we use the try...catch statement.
You're already familiar with it, so let's briefly recall how it works. We place the error handling code in the try block, and describe how to handle the error in the catch block. 

For simple synchronous code, that's that. Unfortunately, the try...catch statement has a significant drawback: since it doesn't work with asynchronous code, it'll skip any errors that occur in promises or callbacks. 
We can observe this by adding a promise to the try block. It will return an error via Promise.reject:

(function testAsyncError() {
  try {
    console.log("Function execution started");
    return Promise.reject(new Error("Something went wrong..."));
  } catch (err) {
    console.log(`Error ${err.name} with the message ${err.message} has occured, but we've handled it`);
  }
  console.log("Function execution completed successfully");
})();
When we run this code, we'll see that the error has not been caught, and our code has crashed.


The error was not caught, and the code crashed

Fortunately, there is a way to fix this behavior. We can use the async/await syntax.

Error handling in asynchronous code: async/await
The purpose of the async/await syntax is to enable the engineer to write asynchronous code in a synchronous style. Simply put, it tells the JS engine where to "wait" for the result of a promise before proceeding any further in the code.

Let's rewrite the code from the example above using the async/await syntax.

For more clarity, we'll move the code that returns a promise with an error into a separate function returnPromiseError(). For the await expression to work inside a function, we need to add the async keyword to the function declaration. In the code below, we'll add it to the testAsyncAwaitError() function. Likewise, we'll add await before returnPromiseError().

As a result, we end up with the following code:

// Moved the code returning the promise with an error to an external function
function returnPromiseError() { 
  return Promise.reject(new Error("Something went wrong...")); 
}

(async function testAsyncAwaitError() {
  try {
    console.log("Function execution started");
    await returnPromiseError(); // wait till returnPromiseError() is executed
  } catch (err) {
    console.error(`${err.name} with the message ${err.message} has occured, but we've handled it`);
  }
  console.log("Function execution completed successfully");
})();
We're now ready to run the code in the browser console.

This time the function successfully executes and we can see our console has logged our success message: "Function execution completed successfully."


Successful function execution with error handling

In addition, the error itself goes into the handler inside the catch block and is handled accordingly (in our case, it's logged to the console). Success!

This is not the only way to handle errors that occur in promises. Let's move on to the next one.

Error handling in promises: the .catch handler
Another approach is to use the .catch promise handler — you're already familiar with that too. Here's how it works: if an error occurs when executing code in a promise, the error goes to the nearest .catch block described after it.

It may sound a bit complicated, but it's easier to understand with an example:

// Moved the return code of a promise with an error to an external function
function returnPromiseError() { 
  return Promise.reject(new Error("Something went wrong..."));
}

(function testPromiseRejectHandler() {
  returnPromiseError();
})();
When we run this code, an error will occur when returnPromiseError() is called. It will be inside the testPromiseRejectHandler() function, and the code will crash.

To fix this, let's handle the error by adding a .catch handler at the end of the call:

function returnPromiseError() { 
  return Promise.reject(new Error("Error. Something went wrong..."));
}

(function testPromiseRejectHandler() {
  returnPromiseError();
  .catch((err) => {
    console.error(`Error ${err.name} with the message ${err.message} has occurred while executing the code, but we've handled it`);
  });
})();
The error that occurred while executing the code was successfully caught and handled.

Note that when handling a sequence of promise calls, there may be multiple .catch handlers in the chain. In this case, the error will be caught by the first block that matches the error. Therefore, you should list your catch blocks with the most specific errors first and less specific errors towards the end.

Using console.error() to log errors
You're already familiar with using console.error() to log error messages to the console. In the context of back-end development with Express, console.error() is useful for identifying issues that might occur with your server, such as connection errors or other unexpected behavior. It can also be employed to log errors related to specific routes or middleware functions.

Error handling in callbacks
When asynchronous functions in JS are implemented using callbacks, they handle errors a little differently.

JavaScript engineers have a convention where the result of function execution is returned to the callback as two arguments:

The error object (if it occurs)
The result of the operation
Let's look at an example to get a better idea of error handling in callbacks. We'll create a function that writes some text to a specified file. For this, we'll use the writeFile() method from the fs module:

const fs = require('fs');
// Function that writes some text to a specified file
function writeTextToFile(filename, text) {
  fs.writeFile(filename, text, function (err, res) {
    console.log(`fs.writeFile has ended with the following result: ${res}`);
  })
}

// Call the funtion and pass an incorrect file name - ''
writeTextToFile('', 'sometext');
To run this, and the following examples in this lesson, you'll need a Node.js interpreter. To run the example code, save it in any location on your computer and run it with the command node <file_name>.

Contrary to our expectations, upon running this code, we don't see an error. It looks like everything has worked correctly, but this isn't entirely true. This is because there is virtually no error handling in the code. The error object is passed as the first argument to the callback function. Its value is not checked in any way, and the error itself won't be handled.

The problem with callback functions is that missed errors inside them don't cause application crashes and often go unnoticed. Let's fix this by adding the appropriate check:

const fs = require('fs');
function writeTextToFile(filename, text) {
  fs.writeFile(filename, text, function (err, res) {
    // check that the error object is not empty
    if (err) {
      console.error(`An error has occurred while writing the file: ${err.message}`);
      // end the function execution if an error occurs
      return;
    }
    console.log(`fs.writeFile has ended with the following result: ${res}`);
  })
}

writeTextToFile('', 'sometext');
Now the error is handled correctly, and the corresponding message appears in the console: An error has occurred while writing the file: ENOENT: no such file or directory, open ''.

Error handling and Mongoose: the orFail() helper
When attempting to find a record with Mongoose, such as with findOne or findById, if the record is not found, instead of throwing an error, it will simply pass null into your .then handler:

Card.find({ _id: "507f1f77bcf86cd799439011" }) // some nonexistent ID
  .then((cardData) => {
    // incorrectly sends `null` back to the client with a 200 status!
    res.send(cardData);
  })
  .catch((error) => {
    // does not run because no error was thrown
  });
You could handle this by checking if (cardData == null) in .then and throwing an error there, but the orFail helper can streamline your code by running when no record is found:

Card.find({ title: "nonexistant card" })
  .orFail() // throws a DocumentNotFoundError
  .then((cardData) => {
    res.send(cardData); // skipped, because an error was thrown
  })
  .catch((error) => {
    // now this does run, so we can handle the error and return an appropriate message
  });
You can also pass in a custom function to the orFail method:

.orFail(() => {
  const error = new Error("No card found with that id");
  error.statusCode = 404;
  throw error; // Remember to throw an error so .catch handles it instead of .then
})
Unfortunately, sometimes error handling is skipped and crashes happen. In the next lesson, we'll talk about global error handlers that are useful for preventing this, and we'll also learn to define our own error classes.

Next up, a small 3 question quiz to consolidate what we've just learned.
class Solution:
    def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        res = 0

        def dfs(root):
            nonlocal res

            if not root:
                return 0
            left = dfs(root.left)
            right = dfs(root.right)
            res = max(res, left + right)

            return 1 + max(left, right)

        dfs(root)
        return res
class Codec:
    def serialize(self, root):
        res = []

        def dfs(node):
            if not node:
                res.append("N")
                return
            res.append(str(node.val))
            dfs(node.left)
            dfs(node.right)

        dfs(root)
        return ",".join(res)

    def deserialize(self, data):
        vals = data.split(",")
        self.i = 0

        def dfs():
            if vals[self.i] == "N":
                self.i += 1
                return None
            node = TreeNode(int(vals[self.i]))
            self.i += 1
            node.left = dfs()
            node.right = dfs()
            return node

        return dfs()
class Solution:
    def maxPathSum(self, root: TreeNode) -> int:
        res = [root.val]

        # return max path sum without split
        def dfs(root):
            if not root:
                return 0

            leftMax = dfs(root.left)
            rightMax = dfs(root.right)
            leftMax = max(leftMax, 0)
            rightMax = max(rightMax, 0)

            # compute max path sum WITH split
            res[0] = max(res[0], root.val + leftMax + rightMax)
            return root.val + max(leftMax, rightMax)

        dfs(root)
        return res[0]
class Solution:
    def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
        if not preorder or not inorder:
            return None

        root = TreeNode(preorder[0])
        mid = inorder.index(preorder[0])
        root.left = self.buildTree(preorder[1 : mid + 1], inorder[:mid])
        root.right = self.buildTree(preorder[mid + 1 :], inorder[mid + 1 :])
        return root
class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root:
            return []

        q = deque([root])
        level = 1
        res = []

        while q:
            if (level % 2): ## < this is nice
                res.append([x.val for x in q])
            else:
                res.append([x.val for x in reversed(q)])
            for _ in range(len(q)):
                node = q.popleft()
                if node.left:
                    q.append(node.left)
                if node.right:
                    q.append(node.right)
            level += 1
        return res
my_list.reverse() ### <<< in-place! 
my_list[::-1]
list(reversed(my_list))
[item for item in reversed(my_list)]
// validators.jsx

// Function to validate email
export const validateEmail = (email) => {
    const re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\\.,;:\s@\"]+\.)+[^<>()[\]\\.,;:\s@\"]{2,})$/i;
    return re.test(email);
};

// Function to validate password
export const validatePassword = (password) => {
    if (password.length < 8 || password.length > 32) return false;
    if (!/[A-Z]/.test(password)) return false; // At least one uppercase letter
    if (!/[a-z]/.test(password)) return false; // At least one lowercase letter
    if (!/[0-9]/.test(password)) return false; // At least one digit
    if (!/[^A-Za-z0-9]/.test(password)) return false; // At least one special character
    return true;
};


// LoginForm.jsx

import React, { useState } from 'react';
import { validateEmail, validatePassword } from './validators.jsx';

const LoginForm = () => {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');
    const [alert, setAlert] = useState('');

    const handleSubmit = (event) => {
        event.preventDefault();
        setAlert(''); // Clear previous alerts

        // Validate inputs
        if (!validateEmail(email)) {
            setAlert('Please enter a valid email address.');
            return;
        }

        if (!validatePassword(password)) {
            setAlert('Please enter a valid password. Password must be at least 8 characters.');
            return;
        }

        // Call backend API here if validations pass
        console.log('API call here');
    };

    return (
        <div>
            {alert && (
                <div className="alert">
                    {alert}
                    <button onClick={() => setAlert('')}>Okay</button>
                </div>
            )}
            <form onSubmit={handleSubmit}>
                <label>
                    Email:
                    <input type="email" value={email} onChange={(e) => setEmail(e.target.value)} />
                </label>
                <label>
                    Password:
                    <input type="password" value={password} onChange={(e) => setPassword(e.target.value)} />
                </label>
                <button type="submit">Login</button>
            </form>
        </div>
    );
};

export default LoginForm;



// In your route file, e.g., authRoutes.js

const { check, validationResult } = require('express-validator');

// Define the validation chain for the password and email
const validationChain = [
    check('email')
      .normalizeEmail()
      .isEmail()
      .withMessage('Invalid email address.'),
    check('password')
      .isLength({ min: 8, max: 32 })
      .withMessage('Password must be between 8 to 32 characters long.')
      .matches(/[A-Z]/)
      .withMessage('Password must contain at least one uppercase letter.')
      .matches(/[a-z]/)
      .withMessage('Password must contain at least one lowercase letter.')
      .matches(/[0-9]/)
      .withMessage('Password must contain at least one digit.')
      .matches(/[^A-Za-z0-9]/)
      .withMessage('Password must contain at least one special character.')
];

// Add to your route, e.g., for user registration or login
app.post('/your-route', validationChain, (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(400).json({ success: false, errors: errors.array() });
    }

    // Proceed with backend logic here if validation passes
});

# -- weird, I think my version is better than NC: I just don't add None nodes
class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        if not root:
            return []

        q = deque([root])
        res = []

        while q:
            res.append(q[-1].val)
            for _ in range(len(q)):
                node = q.popleft()
                if node.left:
                    q.append(node.left)
                if node.right:
                    q.append(node.right)
        return res

# class Solution: NC version 
    def rightSideView(self, root: TreeNode) -> List[int]:
        res = []
        q = collections.deque([root])

        while q:
            rightSide = None
            qLen = len(q)

            for i in range(qLen):
                node = q.popleft()
                if node:
                    rightSide = node
                    q.append(node.left)
                    q.append(node.right)
            if rightSide:
                res.append(rightSide.val)
        return res
class Solution:
    def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        
        # -- VERY good for a review!
        # -- mine 
        res = [0]
        def dfs(node):
            if not node:
                return 0
            
            left = dfs(node.left)
            right = dfs(node.right)

            res[0] = max(left+right, res[0])
            return 1 + max(left, right) # Don't forget +1 for current node!

        dfs(root)
        return res[0]
import 'package:flutter/material.dart';
import 'package:notes_app/homepage.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomePage(),
    );
  }
}
.gelatine {
  animation: gelatine 0.5s infinite;
}
@keyframes gelatine {
  from, to { transform: scale(1, 1); }
  25% { transform: scale(0.9, 1.1); }
  50% { transform: scale(1.1, 0.9); }
  75% { transform: scale(0.95, 1.05); }
}
String jsonMessageString = Files.readString(Paths.get("src/main/resources/data.json").toAbsolutePath());
JSONObject jsonObject = new JSONObject(jsonMessageString);
jsonObject.getJSONObject("message").put("from", credentials.getAddress());
jsonObject.getJSONObject("message").put("nonce", nonce);
jsonObject.getJSONObject("message").put("data", encodedFunction);

String modifiedJsonString = jsonObject.toString();
Sign.SignatureData signature = Sign.signTypedData(modifiedJsonString, credentials.getEcKeyPair());
MinimalForwarder minimalForwarder = MinimalForwarder.load("<minimalForwarder_contract_address>", web3j, credentials, new StaticGasProvider(BigInteger.valueOf(4_100_000_000L),BigInteger.valueOf(6721975L)));
Recipient recipient = Recipient.load("<recipient_contract_address>", web3j, credentials, new StaticGasProvider(BigInteger.valueOf(4_100_000_000L),BigInteger.valueOf(6721975L)));
MinimalForwarder minimalForwarder = MinimalForwarder.load("<minimalForwarder_contract_address>", web3j, credentials, new StaticGasProvider(BigInteger.valueOf(4_100_000_000L),BigInteger.valueOf(6721975L)));
Recipient recipient = Recipient.load("<recipient_contract_address>", web3j, credentials, new StaticGasProvider(BigInteger.valueOf(4_100_000_000L),BigInteger.valueOf(6721975L)));
Introduction to SQL
SQL
Let's get back to relational databases and take a look at the basics of how to access tables and work with table data. 

SQL (Structured Query Language) is the most common computer language for managing data in relational databases. With the power of SQL, you can insert, modify or remove data, and manage data tables.

Your First SQL Statement
To do anything with tables, you need to write a statement, also known as a query. A statement is a request written according to SQL syntax. Your statement should specify what data to select and how to process it. 

SELECT
The SELECT operator takes the selection of one or many rows or columns from a table. SELECT statements look like this:

-- Select columns from the table
SELECT 
    column_1,
    column_2, 
    column_3 ...  
FROM 
    table_name;
 Save
We have two keywords in our statement: SELECT and FROM. SELECT specifies the necessary columns from the database table. FROM specifies the table from which the data should be taken. To keep things tidy and easy to read, we indent the lines after operators. The statement ends with a semicolon  ;. The beginning of a single-line comment is marked with two hyphens:  --.

Note that commands are written in capital letters, and line breaks are inserted after each keyword. These are common, but not required, practices.

Now let's see how this statement works by trying to get data from columns in the Stock table:

Stock
ID	Name	Price	Amount
19960	Hermione Granger's wand	10	15
79789	Delorean DMC-12	500	7
51339	Luke Skywalker's lightsaber	15	3
16307	Daenerys Targaryen's necklace	20	2
-- Getting the columns containing names and prices from the Stock table
SELECT 
    Name, 
    Price
FROM 
    Stock;
 Save
Here's the result of our query:

Stock
Name	Price
Hermione Granger's wand	10
Delorean DMC-12	500
Luke Skywalker's lightsaber	15
Daenerys Targaryen's necklace	20
To select all columns from the table, add  * to the SELECT operator:

SELECT 
    *
FROM 
    Stock;
 Save
To add a condition to our query, we'll use the WHERE operator:

SELECT 
    *
FROM 
    Stock
WHERE 
    Price < 100; -- Defining the condition of row selection
 Save
The order of operators is strictly defined:

1)SELECT 

2)FROM

3)WHERE

The query above will return the following result:

Stock
ID	Name	Price	Amount
19960	Hermione Granger's wand	10	15
51339	Luke Skywalker's lightsaber	15	3
16307	Daenerys Targaryen's necklace	20	2
PostgreSQL: Using Relational Databases in Express.js Apps
If you decide to use relational databases for your application, you'll need to choose an appropriate database management system (DBMS) and use its Node.js driver to connect it to your app.

We recommend using PostgreSQL (or Postgres), a free and open-source relational database management system. PostgreSQL is widely used by companies for their database needs.

Install the npm module called pg-promise first:

npm install pg-promise
 Save
pg-promise is a PostgreSQL client for Node.js that is based on a powerful query-formatting engine and supports methods that return a promise.

Connect your database to the Express.js app:

var pgp = require('pg-promise')(/* options */)
var db = pgp('postgres://username:password@host:port/database') //connect to your local databasw

db.one('SELECT $1 AS value', 123) //create a query to pull desired data
  .then(function (data) {
    console.log('DATA:', data.value)
  })
  .catch(function (error) {
    console.log('ERROR:', error)
  })
 Save
Going deeper into SQL
This lesson just covers the basics of SQL — do you want to know more? Perfect! We've prepared a completely free, self-paced course for SQL newcomers, chock full of helpful theory and exercises. Check SQL101 out!
star

Wed Mar 20 2024 06:02:28 GMT+0000 (Coordinated Universal Time) https://staging3.taiga.green/wp-admin/theme-editor.php?file

@Ashu@1208 #undefined

star

Wed Mar 20 2024 03:53:30 GMT+0000 (Coordinated Universal Time)

@fazmi322

star

Tue Mar 19 2024 23:59:32 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/76704673/ga4-correct-way-to-send-utm-campaign-data-using-measurement-protocol

@Clairebear

star

Tue Mar 19 2024 22:15:26 GMT+0000 (Coordinated Universal Time)

@RobertoSilvaZ #ssh #git #github #gitlab

star

Tue Mar 19 2024 19:18:40 GMT+0000 (Coordinated Universal Time)

@sathviksurineni

star

Tue Mar 19 2024 18:13:23 GMT+0000 (Coordinated Universal Time)

@mina

star

Tue Mar 19 2024 18:10:51 GMT+0000 (Coordinated Universal Time)

@mina

star

Tue Mar 19 2024 18:03:35 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/10741899/how-to-select-last-two-characters-of-a-string

@@Bicky0

star

Tue Mar 19 2024 18:00:12 GMT+0000 (Coordinated Universal Time)

@sunnywhateverr

star

Tue Mar 19 2024 16:25:24 GMT+0000 (Coordinated Universal Time)

@mina

star

Tue Mar 19 2024 16:09:32 GMT+0000 (Coordinated Universal Time)

@CodeWithSachin #aggregation #mongodb

star

Tue Mar 19 2024 15:05:36 GMT+0000 (Coordinated Universal Time) https://www.kevintekno.com/2021/11/membuat-aplikasi-sederhana-tracking-no.html

@Nadhil

star

Tue Mar 19 2024 14:51:44 GMT+0000 (Coordinated Universal Time) https://www.kevintekno.com/2021/11/membuat-aplikasi-sederhana-tracking-no.html

@Nadhil

star

Tue Mar 19 2024 12:28:43 GMT+0000 (Coordinated Universal Time) https://maticz.com/hospital-management-software

@carolinemax #hospitalmanagement software development #customhospitalmanagement software #besthospitalmanagement software 2024

star

Tue Mar 19 2024 10:13:41 GMT+0000 (Coordinated Universal Time)

@hardikraja #commandline #git

star

Tue Mar 19 2024 10:06:08 GMT+0000 (Coordinated Universal Time) https://darkwebmarketbuyer.com/product/dmt-cart/

@darkwebmarket

star

Tue Mar 19 2024 10:04:22 GMT+0000 (Coordinated Universal Time)

@ProjetsK #php #+f3 #+lrc

star

Tue Mar 19 2024 05:39:29 GMT+0000 (Coordinated Universal Time)

@amangupta

star

Tue Mar 19 2024 05:26:56 GMT+0000 (Coordinated Universal Time)

@hasnat #pdf #ios #swift

star

Tue Mar 19 2024 04:48:54 GMT+0000 (Coordinated Universal Time)

@vigneshAvelator

star

Tue Mar 19 2024 02:08:50 GMT+0000 (Coordinated Universal Time) https://www.siamblockchaincompany.com/Trade/tradelist

@todsakan

star

Mon Mar 18 2024 22:51:51 GMT+0000 (Coordinated Universal Time) https://studio.code.org/s/csp7-2023/lessons/9/levels/1

@piercethedeamon

star

Mon Mar 18 2024 22:50:30 GMT+0000 (Coordinated Universal Time) https://studio.code.org/s/csp7-2023/lessons/9/levels/1

@piercethedeamon

star

Mon Mar 18 2024 15:05:04 GMT+0000 (Coordinated Universal Time)

@Hritujeet

star

Mon Mar 18 2024 14:14:36 GMT+0000 (Coordinated Universal Time)

@agedofujpn #javascript

star

Mon Mar 18 2024 14:06:03 GMT+0000 (Coordinated Universal Time)

@kblanka #javascript

star

Mon Mar 18 2024 10:53:44 GMT+0000 (Coordinated Universal Time)

@MinaTimo

star

Mon Mar 18 2024 09:22:47 GMT+0000 (Coordinated Universal Time)

@Ria

star

Mon Mar 18 2024 03:44:06 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/2871bc55-4085-49fa-936d-e552ddda9db7/

@Marcelluki

star

Mon Mar 18 2024 03:11:06 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/600d6e0b-1367-49cd-8934-923171247549/

@Marcelluki

star

Mon Mar 18 2024 00:03:30 GMT+0000 (Coordinated Universal Time)

@Duy3412

star

Sun Mar 17 2024 21:44:53 GMT+0000 (Coordinated Universal Time) https://intelx.io/tools

@okokokok

star

Sun Mar 17 2024 21:14:35 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/a3d27ec1-b7ac-420a-b120-85e50dee9633/

@Marcelluki

star

Sun Mar 17 2024 20:37:35 GMT+0000 (Coordinated Universal Time)

@playadust

star

Sun Mar 17 2024 20:12:45 GMT+0000 (Coordinated Universal Time) https://leetcode.com/problems/diameter-of-binary-tree/

@playadust

star

Sun Mar 17 2024 20:06:40 GMT+0000 (Coordinated Universal Time) https://www.youtube.com/watch?v=u4JAi2JJhI8

@playadust

star

Sun Mar 17 2024 20:05:10 GMT+0000 (Coordinated Universal Time) https://www.youtube.com/watch?v=Hr5cWUld4vU

@playadust

star

Sun Mar 17 2024 20:04:19 GMT+0000 (Coordinated Universal Time) https://www.youtube.com/watch?v=ihj4IQGZ2zc

@playadust

star

Sun Mar 17 2024 19:39:05 GMT+0000 (Coordinated Universal Time)

@playadust

star

Sun Mar 17 2024 19:32:15 GMT+0000 (Coordinated Universal Time)

@playadust

star

Sun Mar 17 2024 19:21:00 GMT+0000 (Coordinated Universal Time) https://chat.openai.com/c/e49ca8a6-55e3-4648-8c33-02e68cee1123

@eziokittu

star

Sun Mar 17 2024 19:15:30 GMT+0000 (Coordinated Universal Time)

@playadust

star

Sun Mar 17 2024 17:50:58 GMT+0000 (Coordinated Universal Time) https://app.powerbi.com/groups/a68e8e20-031e-49c1-9beb-fe81f6c95c8c/synapsenotebooks/d9c7fc1c-bbb9-488a-851f-063010bd1f80?experience

@okokokok

star

Sun Mar 17 2024 17:43:08 GMT+0000 (Coordinated Universal Time)

@playadust

star

Sun Mar 17 2024 15:05:57 GMT+0000 (Coordinated Universal Time)

@GQlizer4

star

Sun Mar 17 2024 13:24:39 GMT+0000 (Coordinated Universal Time)

@marcopinero #css

star

Sun Mar 17 2024 06:23:53 GMT+0000 (Coordinated Universal Time) https://docs.web3j.io/4.10.0/use_cases/meta_transaction/

@katyno

star

Sun Mar 17 2024 06:21:49 GMT+0000 (Coordinated Universal Time) https://docs.web3j.io/4.10.0/use_cases/meta_transaction/

@katyno

star

Sun Mar 17 2024 06:21:33 GMT+0000 (Coordinated Universal Time) https://docs.web3j.io/4.10.0/use_cases/meta_transaction/

@katyno

star

Sun Mar 17 2024 02:54:24 GMT+0000 (Coordinated Universal Time) https://tripleten.com/trainer/web/lesson/c484c09d-cf39-4399-a67c-fcfa866665f0/

@Marcelluki

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension