Snippets Collections
# Si acabas de instalar bash-it
source ~/.bashrc

# O manualmente
source ~/.bashrc

# O reinicia tu terminal
exit
# y abre una nueva terminal

# Después de hacer cambios
bash-it reload

Si quieres la funcionalidad de Zsh pero prefieres quedarte con Bash, bash-it es una excelente alternativa:

# Después de instalar bash-it, tendrás:
- Autocompletado avanzado
- Temas y plugins
- Globbing recursivo
- Y muchas características de Zsh

# bash-completion (mejor autocompletado)
sudo apt install bash-completion

# bash-it (como Oh My Zsh pero para Bash)
git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it
~/.bash_it/install.sh

# verificar si esta instalado Deberías ver una línea como esta en tu ~/.bashrc
cat ~/.bashrc | grep bash_it
la manera correcta de instalarlo
1.-php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
2.-php composer-setup.php

alternativamente los siguientes comandos instalarán Composer globalmente
3.-php composer-setup.php --install-dir=/usr/local/bin --filename=composer

borrar el instalador
4.-php -r "unlink('composer-setup.php');"

Por último, ejecuta el siguiente comando en tu terminal para comprobar si Composer se ha instalado correctamente:
5.-composer



esta es otra manera:
#inslatar:
curl -sS https://getcomposer.org/installer -o composer-setup.php
# Verificar el hash de seguridad (opcional pero recomendado)

sudo apt install php-cli curl

HASH=`curl -sS https://composer.github.io/installer.sig`
echo $HASH  # Debería mostrar un hash como: 55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae
# Instalar Composer globalmente
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
# Eliminar el archivo de instalación
rm composer-setup.php

# Ejecuta esto en otra terminal para obtener la clave correcta
curl -sS https://composer.github.io/releases.pub

# Para obtener todas las claves necesarias
curl -sS https://composer.github.io/installer.sig
curl -sS https://composer.github.io/snapshots.pub

#luego haz esto:
Ejecuta: composer self-update --update-keys

ejemplo:
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBFz...
[CONTENIDO COMPLETO DE LA CLAVE]
...=
-----END PGP PUBLIC KEY BLOCK-----

Cuando te pida Enter Dev / Snapshot Public Key:

Pega SOLO el bloque de la clave (sin el hash inicial)

es decir el resultado de esto no 
curl -sS https://composer.github.io/installer.sig
el resultado de esto si va:
curl -sS https://composer.github.io/snapshots.pub

Presiona Enter

Presiona Ctrl+D (esto indica "fin del input")


#instalar claves automaticamente:
#Comando alternativo todo-en-uno:
# Forzar la actualización sin interacción
sudo COMPOSER_ALLOW_SUPERUSER=1 composer self-update --update-keys --no-interaction

# O usar echo para automatizar
echo -e "-----BEGIN PGP PUBLIC KEY BLOCK-----\n...\n-----END PGP PUBLIC KEY BLOCK-----" | composer self-update --update-keys
# Configurar timeout global de 300 segundos (5 minutos)
composer config -g process-timeout 300
composer config -g github-protocols https

# Configurar timeout para descargas
composer config -g disable-tls false
composer config -g secure-http true

Verificación:
# Probar que funcione
composer diagnose
composer --version

reinstalar
# Remover Composer completamente
sudo rm /usr/local/bin/composer
rm -rf ~/.composer

# Instalar versión específica que no requiera keys inmediatamente
curl -sS https://getcomposer.org/installer | php -- --version=2.8.11
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

composer sin vericar las cllaves no recomendado:
Solución manual definitiva:
# Primero, actualizar Composer sin verificar claves
composer self-update --no-check-keys

# Luego actualizar las claves en modo interactivo
composer self-update --update-keys

#Verificar y configurar DNS/resolución opcional no necesario:
# Probar conectividad a getcomposer.org
ping -c 4 getcomposer.org

# Probar conexión HTTPS
curl -v https://getcomposer.org/versions --connect-timeout 30

# Si hay problemas de DNS, usar Google DNS temporalmente
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf
Actualizar SOLO pgAdmin4:
sudo apt install --only-upgrade pgadmin4-desktop pgadmin4-server pgadmin4-web

Después de actualizar, verifica las versiones:
# Verificar versiones instaladas
dpkg -l | grep pgadmin4

# Verificar estado de los paquetes
apt list --installed | grep pgadmin4

Reinstalar completamente pgAdmin4:
sudo apt install --reinstall pgadmin4-desktop pgadmin4-server pgadmin4-web

Importante: Backup (opcional pero recomendado)
Antes de actualizar, si tienes configuraciones importantes:
# Backup de configuraciones (si las tienes personalizadas)
sudo cp -r /var/lib/pgadmin4/ /var/lib/pgadmin4_backup/
sudo cp -r /etc/pgadmin4/ /etc/pgadmin4_backup/
<!-----  FROM TOBEY ------>

<script>
(function() {
  function initFH() {
    var p = parent.window.document;
    if (!p.getElementById('fhFixedButton')) {
      if (!p.getElementById('fhScript')) {
        var fhScript = p.createElement('script');
        fhScript.src = "https://fareharbor.com/embeds/api/v1/?autolightframe=yes";
        fhScript.id = "fhScript";
        p.body.appendChild(fhScript);
      }
      if (!p.getElementById('fhStyle')) {
        var fhStyleSheet = p.createElement('link');
        fhStyleSheet.href = 'https://fh-kit.com/buttons/v2/?orange=F7931F';
        fhStyleSheet.rel = 'stylesheet';
        fhStyleSheet.type = 'text/css';
        fhStyleSheet.id = "fhStyle";
        p.body.appendChild(fhStyleSheet);
      }
      var fhFixedButton = p.createElement('a');
      fhFixedButton.href = 'https://fareharbor.com/embeds/book/fuerteventuraquad/?full-items=yes';
      fhFixedButton.className = 'fh-lang fh-hide--mobile fh-shape--round fh-fixed--bottom fh-icon--cal fh-button-true-flat-orange';
      fhFixedButton.innerHTML = 'BOOK NOW';
      fhFixedButton.style = 'letter-spacing: 1.5px !important; padding: .3em 2em !important; border: 1px solid #FFFFFF !important; box-shadow:none !important; left: 20px !important; right: inherit !important;';
      fhFixedButton.id = 'fhFixedButton';
      var fhFixedButtonMobile = p.createElement('a');
      fhFixedButtonMobile.href = 'https://fareharbor.com/embeds/book/fuerteventuraquad/?full-items=yes';
      fhFixedButtonMobile.className = 'fh-lang fh-hide--desktop fh-size--small fh-fixed--side fh-button-true-flat-orange fh-color--white';
      fhFixedButtonMobile.innerHTML = 'BOOK NOW';
      fhFixedButtonMobile.style = 'font-size: 1.1em !important; margin-top: 6em !important; letter-spacing: .7px !important; border: 2px solid #FFFFFF !important; box-shadow:none !important; text-align: center !important; padding: .15em 2em !important;';
      p.body.appendChild(fhFixedButton);
      p.body.appendChild(fhFixedButtonMobile);
    }
    var lang = p.querySelector('html').getAttribute('lang');
    var buttons = p.querySelectorAll('a.fh-lang');
    buttons.forEach(function(btn) {
      switch(lang) {
        case 'en': btn.innerHTML = 'BOOK NOW'; break;
        case 'es': btn.innerHTML = 'RESERVA AHORA'; break;
        case 'it': btn.innerHTML = 'PRENOTA ORA'; break;
        case 'fr': btn.innerHTML = 'RÉSERVEZ MAINTENANT'; break;
        case 'de': btn.innerHTML = 'JETZT BUCHEN'; break;
      }
    });
  }
  document.addEventListener("DOMContentLoaded", initFH);
  window.addEventListener("popstate", initFH);
  window.addEventListener("pushState", initFH);
  window.addEventListener("replaceState", initFH);
  var observer = new MutationObserver(function() {
    initFH();
  });
  observer.observe(document.body, { childList: true, subtree: true });
})();
</script>
<?php
// Clase base o interfaz
interface Animal {
    public function hacerSonido();
}

// Clases que implementan la interfaz con su propia versión del método
class Perro implements Animal {
    public function hacerSonido() {
        echo "Guau Guau\n";
    }
}

class Gato implements Animal {
    public function hacerSonido() {
        echo "Miau Miau\n";
    }
}

// Función que usa polimorfismo para llamar el método hacerSonido de cualquier Animal
function hacerRuido(Animal $animal) {
    $animal->hacerSonido();
}

$miPerro = new Perro();
$miGato = new Gato();

hacerRuido($miPerro); // Imprime: Guau Guau
hacerRuido($miGato);  // Imprime: Miau Miau
?>
// Definición de la interfaz
interface Encendible {
    public function encender();
    public function apagar();
}

// Clase que implementa la interfaz
class Bombilla implements Encendible {
    public function encender() {
        echo "La bombilla está encendida\n";
    }

    public function apagar() {
        echo "La bombilla está apagada\n";
    }
}

// Uso
$miBombilla = new Bombilla();
$miBombilla->encender();  // Salida: La bombilla está encendida
$miBombilla->apagar();    // Salida: La bombilla está apagada
Ctrl+Mayús+P" para que aparezca la instancia de "Paleta de comandos" y empiece a escribir "display" para filtrar y mostrar el comando "Configure Display Language"
// Online Java Compiler
// Use this editor to write, compile and run your Java code online
import java.util.*;
class Main {
    public static void main(String[] args) {
       String s="hello    world hi";
       
       String[] str=s.split("\s+");
       ArrayList<String> ar=new ArrayList<>();
       for(String x:str){
               StringBuilder sb=new StringBuilder(x);
         
           ar.add(sb.reverse().toString());
       }
       StringBuilder sb=new StringBuilder();
       int j=0;
       int k=0;
       boolean iswhite=false;
      for(int i=0;i<s.length();i++){
           if(Character.isLetter(s.charAt(i))){
               if(iswhite)
                j++;
               sb.append(ar.get(j).charAt(k));
               k++;
               iswhite=false;
               
               
           }else{
               sb.append(" ");
               iswhite=true;
               k=0;
           }
      }
       System.out.println(sb.toString());
    }
    // public static string reverse(String res){
    //     StringBuilder sb=new StringBuilder(res);
    //     return sb.revrese().toString();
    // }
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
body {
  font-family: Arial;
}
​
* {
  box-sizing: border-box;
}
​
.openBtn {
  background: #f1f1f1;
  border: none;
  padding: 10px 15px;
  font-size: 20px;
  cursor: pointer;
}
​
.openBtn:hover {
  background: #bbb;
}
​
.overlay {
  height: 100%;
  width: 100%;
  display: none;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: rgb(0,0,0);
  background-color: rgba(0,0,0, 0.9);
}
​
.overlay-content {
  position: relative;
  top: 46%;
Zengo wallet clone scripts are designed to deliver flexibility and scalability, making them highly adaptable for businesses that require support for multiple blockchain ecosystems and a diverse range of digital assets. They support leading networks including Ethereum, BNB Chain, Polygon, Tron, and Solana while facilitating seamless management of cryptocurrencies, stablecoins, and custom tokens. With built-in cross-chain functionality, businesses can enable smooth transactions across different ecosystems, and the customizable framework allows easy extension of blockchain and token support based on specific needs. If you are looking to build a feature-rich solution, Maticz provides tailored Zengo wallet clone development services to align with your business goals.
Driving the future of connectivity begins with smart Polkadot blockchain development. With Touch Crypto, businesses can build secure and scalable solutions that link different blockchains into one powerful network. Our services include parachain setup, cross-chain integration, and custom smart contract development. Using Polkadot’s ecosystem, we help companies achieve faster performance, lower costs, and stronger security. Every project is built with flexibility to support long-term growth and innovation. From planning to launch, we deliver solutions that make ideas practical and connected. Work with us to unlock the full potential of Polkadot technology.
string button.send_doc_via_docu_sign1(String Deal_id)
{
try 
{
	// ================= FETCH DEAL & VALIDATE ==================
	get_Details = invokeurl
	[
		url :"https://www.zohoapis.com/crm/v8/Deals/" + Deal_id
		type :GET
		connection:"newzohocrm"
	];
	data = get_Details.get("data");
	for each  rec in data
	{
		existing_envelope_id = rec.get("Envelope_ID");
		if(existing_envelope_id != null && existing_envelope_id != "")
		{
			return "Document already sent for this reservation";
		}
		unit_map = rec.get("Unit");
		unit_name = "";
		if(unit_map != null)
		{
			unit_name = ifnull(unit_map.get("name"),"");
		}
		//info unit_name;
		customer_id = rec.get("Contact_Name").get("id");
		contact_Details = zoho.crm.getRecordById("Contacts",customer_id);
		single_buyer_email = ifnull(contact_Details.get("Email"),"");
		single_buyer_name = ifnull(contact_Details.get("Full_Name"),"");
		single_buyer_phone = ifnull(contact_Details.get("Mobile"),"");
		// use Mobile for OTP
		Joint_buyer_details = ifnull(rec.get("Joint_buyer_name"),null);
		if(Joint_buyer_details != null)
		{
			Joint_buyer_id = Joint_buyer_details.get("id");
			Joint_Buyer_contact_details = zoho.crm.getRecordById("Contacts",Joint_buyer_id);
			Joint_Buyer_email = ifnull(Joint_Buyer_contact_details.get("Email"),"");
			Joint_Buyer_name = ifnull(Joint_Buyer_contact_details.get("Full_Name"),"");
		}
		Reservation_File_Upload = rec.get("Reservation_File_Upload");
		for each  file_data in Reservation_File_Upload
		{
			file_id = file_data.get("File_Id__s");
			response = invokeurl
			[
				url :"https://www.zohoapis.com/crm/v8/files?id=" + file_id
				type :GET
				connection:"newzohocrm"
			];
		}
	}
	// ================= CONVERT TO BASE64 ==================
	base64_pdf = zoho.encryption.base64Encode(response);
	doc = Map();
	doc.put("documentBase64",base64_pdf);
	doc.put("name","Sale Purchase Agreement");
	doc.put("fileExtension","docx");
	doc.put("documentId","1");
	// ================= SIGNERS ==================
	sign_here_buyer = List();
	sign_here_buyer.add({"anchorString":"Signed by Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"168","anchorYOffset":"32","required":true});
	sign_here_buyer.add({"anchorString":"Signed for and on behalf of the Purchaser","anchorUnits":"pixels","anchorXOffset":"172","anchorYOffset":"4","required":true});
	date_signed_buyer = List();
	date_signed_buyer.add({"anchorString":"IN WITNESS WHEREOF the Parties have executed this Agreement.","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"115","required":false});
	date_signed_buyer.add({"anchorString":"I/We acknowledge that in the event there is a Constitution, I/we agree to comply with the provisions","anchorUnits":"pixels","anchorXOffset":"155","anchorYOffset":"215","required":false});
	date_signed_buyer.add({"anchorString":"Signed for and on behalf of the Purchaser","anchorUnits":"pixels","anchorXOffset":"167","anchorYOffset":"63","required":false});
	initials_buyer = List();
	initials_buyer.add({"anchorString":"Purchaser’s initials","anchorUnits":"pixels","anchorXOffset":"145","anchorYOffset":"16","required":true});
	tabs_buyer = Map();
	tabs_buyer.put("signHereTabs",sign_here_buyer);
	tabs_buyer.put("dateSignedTabs",date_signed_buyer);
	tabs_buyer.put("initialHereTabs",initials_buyer);
	signer1 = Map();
	signer1.put("email",single_buyer_email);
	signer1.put("name",single_buyer_name);
	signer1.put("recipientId","1");
	signer1.put("routingOrder","2");
	signer1.put("tabs",tabs_buyer);
	// ---- Phone OTP Identity Verification ----
	if(single_buyer_phone != "")
	{
		identity_verification = Map();
		identity_verification.put("workflowId","c368e411-1592-4001-a3df-dca94ac539ae");
		input_option = Map();
		input_option.put("name","phone_number_list");
		input_option.put("valueType","PhoneNumberList");
		phone_list = List();
		phone_item = Map();
		phone_item.put("countryCode","971");
		phone_item.put("number",single_buyer_phone);
		phone_list.add(phone_item);
		input_option.put("phoneNumberList",phone_list);
		identity_verification.put("inputOptions",{input_option});
		signer1.put("identityVerification",identity_verification);
	}
	signers_list = List();
	signers_list.add(signer1);
	// ---- Witness for Signer 1 ----
	sign_here_witness = List();
	sign_here_witness.add({"anchorString":"IN WITNESS WHEREOF the Parties have executed this Agreement","anchorUnits":"pixels","anchorXOffset":"168","anchorYOffset":"168","required":true});
	sign_here_witness.add({"anchorString":"Signed for and on behalf of the Purchaser","anchorUnits":"pixels","anchorXOffset":"172","anchorYOffset":"90","required":true});
	text_tabs_witness = List();
	text_tabs_witness.add({"anchorString":"IN WITNESS WHEREOF the Parties have executed this Agreement","anchorUnits":"pixels","anchorXOffset":"160","anchorYOffset":"190","tabLabel":"witness1_name","value":"","locked":false,"required":true});
	text_tabs_witness.add({"anchorString":"IN WITNESS WHEREOF the Parties have executed this Agreement","anchorUnits":"pixels","anchorXOffset":"160","anchorYOffset":"218","tabLabel":"witness1_address","value":"","locked":false,"required":true});
	text_tabs_witness.add({"anchorString":"IN WITNESS WHEREOF the Parties have executed this Agreement","anchorUnits":"pixels","anchorXOffset":"160","anchorYOffset":"243","tabLabel":"witness1_occupation","value":"","locked":false,"required":true});
	text_tabs_witness.add({"anchorString":"Signed for and on behalf of the Purchaser","anchorUnits":"pixels","anchorXOffset":"160","anchorYOffset":"110","tabLabel":"witness2_name","value":"","locked":false,"required":true});
	text_tabs_witness.add({"anchorString":"Signed for and on behalf of the Purchaser","anchorUnits":"pixels","anchorXOffset":"160","anchorYOffset":"135","tabLabel":"witness2_address","value":"","locked":false,"required":true});
	tabs_witness = Map();
	tabs_witness.put("signHereTabs",sign_here_witness);
	tabs_witness.put("textTabs",text_tabs_witness);
	witness1 = Map();
	witness1.put("witnessFor","1");
	witness1.put("recipientId","2");
	witness1.put("routingOrder","3");
	witness1.put("email","");
	witness1.put("name","");
	witness1.put("tabs",tabs_witness);
	// ---- Signer 2 (Joint Buyer, no OTP) ----
	if(Joint_buyer_details != null)
	{
		sign_here_joint = List();
		sign_here_joint.add({"anchorString":"Signed by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"172","anchorYOffset":"28","required":true});
		sign_here_joint.add({"anchorString":"Signed by joint Purchaser","anchorUnits":"pixels","anchorXOffset":"172","anchorYOffset":"29","required":true});
		sign_here_joint.add({"anchorString":"Signed for and on behalf of the Joint Purchaser","anchorUnits":"pixels","anchorXOffset":"175","anchorYOffset":"5","required":true});
		date_signed_joint = List();
		date_signed_joint.add({"anchorString":"Signed by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"173","anchorYOffset":"79","required":false});
		date_signed_joint.add({"anchorString":"Signed by joint Purchaser","anchorUnits":"pixels","anchorXOffset":"182","anchorYOffset":"80","required":false});
		date_signed_joint.add({"anchorString":"Signed for and on behalf of the Joint Purchaser","anchorUnits":"pixels","anchorXOffset":"174","anchorYOffset":"65","required":false});
		tabs_joint = Map();
		tabs_joint.put("signHereTabs",sign_here_joint);
		tabs_joint.put("dateSignedTabs",date_signed_joint);
		signer2 = Map();
		signer2.put("email",Joint_Buyer_email);
		signer2.put("name",Joint_Buyer_name);
		signer2.put("recipientId","3");
		signer2.put("routingOrder","4");
		signer2.put("tabs",tabs_joint);
		signers_list.add(signer2);
		// ---- Witness for Signer 2 (Joint Buyer) ----
		sign_here_witness2 = List();
		sign_here_witness2.add({"anchorString":"Signed by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"173","anchorYOffset":"140","required":true});
		//////Changed
		sign_here_witness2.add({"anchorString":"Signed for and on behalf of the Joint Purchaser","anchorUnits":"pixels","anchorXOffset":"174","anchorYOffset":"103","required":true});
		//////Changed
		//////////////////////
		/////////////////////////////
		text_tabs_witness2 = List();
		text_tabs_witness2.add({"anchorString":"Signed by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"173","anchorYOffset":"160","tabLabel":"witness3_name","value":"","locked":false,"required":true});
		//////Changed
		text_tabs_witness2.add({"anchorString":"Signed by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"173","anchorYOffset":"185","tabLabel":"witness3_address","value":"","locked":false,"required":true});
		///changed
		text_tabs_witness2.add({"anchorString":"Signed by Joint Individual Purchaser","anchorUnits":"pixels","anchorXOffset":"173","anchorYOffset":"210","tabLabel":"witness3_occupation","value":"","locked":false,"required":true});
		///changed
		////////////
		///////////////////////////
		text_tabs_witness2.add({"anchorString":"Signed for and on behalf of the Joint Purchaser","anchorUnits":"pixels","anchorXOffset":"174","anchorYOffset":"118","tabLabel":"witness4_name","value":"","locked":false,"required":true});
		///chnages
		text_tabs_witness2.add({"anchorString":"Signed for and on behalf of the Joint Purchaser","anchorUnits":"pixels","anchorXOffset":"170","anchorYOffset":"145","tabLabel":"witness4_address","value":"","locked":false,"required":true});
		///changed
		witness2_tabs = Map();
		witness2_tabs.put("signHereTabs",sign_here_witness2);
		witness2_tabs.put("textTabs",text_tabs_witness2);
		witness2 = Map();
		witness2.put("witnessFor","3");
		witness2.put("recipientId","4");
		witness2.put("routingOrder","5");
		witness2.put("email","");
		witness2.put("name","");
		witness2.put("tabs",witness2_tabs);
	}
	// ---- Manager Final Signer (Lani Alipio) ----
	sign_here_manager = List();
	sign_here_manager.add({"documentId":"1","pageNumber":"2","xPosition":"100","yPosition":"600"});
	tabs_manager = Map();
	tabs_manager.put("signHereTabs",sign_here_manager);
	manager_signer = Map();
	manager_signer.put("email","Lani.Alipio@leosuk.com");
	///
	manager_signer.put("name","Lani Alipio");
	manager_signer.put("recipientId","11");
	if(Joint_buyer_details != null)
	{
		manager_signer.put("routingOrder","6");
	}
	else
	{
		manager_signer.put("routingOrder","5");
	}
	manager_signer.put("tabs",tabs_manager);
	signers_list.add(manager_signer);
	// ---- CC LIST (Mark + Lani) ----
	cc_list = List();
	cc_mark = Map();
	cc_mark.put("email","Manthony@leosuk.com");
	//
	cc_mark.put("name","Mark");
	cc_mark.put("recipientId","12");
	cc_mark.put("routingOrder","1");
	cc_list.add(cc_mark);
	cc_noor = Map();
	cc_noor.put("email","Lani.Alipio@leosuk.com");
	///
	cc_noor.put("name","Lani Alipio");
	cc_noor.put("recipientId","13");
	cc_noor.put("routingOrder","1");
	cc_list.add(cc_noor);
	////
	////
	cc_ana = Map();
	cc_ana.put("email","anamay@leosuk.com");
	//////
	cc_ana.put("name","Ana May S. Zamora");
	cc_ana.put("recipientId","14");
	cc_ana.put("routingOrder","1");
	cc_list.add(cc_ana);
	// ================= RECIPIENTS MAP ==================
	recipients = Map();
	recipients.put("signers",signers_list);
	if(Joint_buyer_details != null)
	{
		recipients.put("witnesses",{witness1,witness2});
	}
	else
	{
		recipients.put("witnesses",{witness1});
	}
	recipients.put("carbonCopies",cc_list);
	envelope = Map();
	envelope.put("documents",{doc});
	envelope.put("emailSubject","SPA for Signature - " + unit_name + " Final");
	envelope.put("status","sent");
	envelope.put("recipients",recipients);
	// ================= FETCH DOCUSIGN ACCESS TOKEN ==================
	access_token_response = invokeurl
	[
		url :"https://www.zohoapis.com/crm/v6/settings/variables/5971686000102746225"
		type :GET
		connection:"newzohocrm"
	];
	access_token = access_token_response.get("variables").get(0).get("value");
	headers = Map();
	headers.put("Authorization","Bearer " + access_token);
	headers.put("Content-Type","application/json");
	response = invokeurl
	[
		url :"https://eu.docusign.net/restapi/v2.1/accounts/2a0daa7d-a770-4979-8208-9543d21f12e5/envelopes"
		type :POST
		parameters:envelope.toString()
		headers:headers
	];
	info response;
	envelopeId = response.get("envelopeId");
	update_map = Map();
	update_map.put("Envelope_ID",envelopeId);
	update_map.put("Next_Status_Sync_Time",zoho.currenttime.toString("yyyy-MM-dd'T'HH:mm:ss","Asia/Dubai"));
	update_map.put("Docu_Sign_Status","Sent");
	Update_Rec = zoho.crm.updateRecord("Deals",Deal_id,update_map);
	return "Document has been successfully sent to all recipients.";
}
catch (e)
{
	sendmail
	[
		from :zoho.loginuserid
		to :"zoho.failure@leosinternational.zohodesk.com"
		subject :"[DocuSign Error | Deal " + Deal_id + "]"
		message :"An error occurred while sending the document via DocuSign.\n\nDeal ID: " + Deal_id + "\nError Details: " + e.toString()
	]
	return "Error occurred: " + e.toString();
}
return "";
}
import matplotlib.pyplot as plt
plt.plot([2,6,11],[4,6,9],"r",label="line one",linewidth=5)
# plt.plot([2,4,5,6,8,9],[4,5,6,7,8,9],"g",label="line two",linewidth=5)
plt.legend()
plt.xlabel("X-Axis---------------------->")
plt.ylabel("Y-Axis-------------------->")
plt.title("Information")
plt.grid(True,color="k")
plt.show()
import matplotlib.pyplot as plt
plt.bar([0.25,1.25,2.25, 3.25, 4.25], [50,40,70,80,20],label="Science",width=0.5)
plt.bar([0.75, 1.75, 2.75, 3.75, 4.75],[80,20,20,50,60],label="Maths",width=0.5,color="r")
plt.legend()
plt.xlabel("Months---------------------->")
plt.ylabel("Subject-------------------->")
plt.title("Information")
plt.show()
Para solucionar esto, siga estos pasos de instalación manual:

Asegúrese de que su sistema esté actualizado e instale los paquetes necesarios:

texto
sudo apt update
sudo apt upgrade
sudo apt install build-essential git dkms linux-headers-$(uname -r)
Clone la fuente del controlador rtl8188fu desde el repositorio oficial de GitHub:

texto
git clone https://github.com/kelebek333/rtl8188fu.git
Cambiar el directorio al repositorio clonado:

texto
cd rtl8188fu
Agregue el controlador a DKMS:

texto
sudo dkms add .
Construya el controlador:

texto
sudo dkms build rtl8188fu/1.0
Instalar el controlador:

texto
sudo dkms install rtl8188fu/1.0
Copiar el archivo de firmware:

texto
sudo cp ./firmware/rtl8188fufw.bin /lib/firmware/rtlwifi/
Cargar el controlador:

texto
sudo modprobe rtl8188fu
Reinicie su sistema.
Smart contracts are the foundation of blockchain innovation, self-executing programs that bring automation, transparency, and trustless transactions without the need for intermediaries. They power everything from supply chain solutions and enterprise-grade applications to DeFi platforms and NFT marketplaces. But with such immense potential comes high risk: even the smallest potential can result in significant losses. That’s why Block Intelligence is here. We provide expert smart contract audit and development services designed to secure your code, protect your assets, and strengthen user confidence.


Know more >>> https://www.blockintelligence.io/smart-contract-audit-company

What’s app:+91 77384 79381

Mail to : connect@blockchain.ai.in
Blockchain is the key to secure, transparent, and efficient business systems, and Block Intelligence is the Blockchain Development Company that makes it simple. We create practical blockchain solutions like crypto wallets, NFT platforms, smart contracts, and custom applications turning complex technology into easy-to-use tools. With blockchain, your business gains stronger security, faster transactions, lower costs, and greater trust. Whether you’re a startup innovating or an enterprise scaling, our team delivers solutions tailored to your growth. At Block Intelligence, we believe blockchain is the future of business, and we’re here to help you unlock its full potential.


Know more >>> https://www.blockintelligence.io/Blockchain-Development

What’s app:+91 77384 79381

Mail to : connect@blockchain.ai.in
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: What's on in Melbourne this week! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n Hey Melbourne, happy Monday and Hello September! Please see below for what's on this week. "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Xero Café :coffee:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n :new-thing: *This week we are offering:* \n\n :caramel-slice: *Sweet Treats*: Selection of Lamingtons & cookies \n\n :coffee: *Weekly Café Special*: Salted Caramel Latte"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 3rd September :calendar-date-3:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":Xerocon: Join us in the Wominjeka Breakout Space on *Level - 3* at 9.15am to watch Xerocon Showcase Live. This is Xerocon’s opening showcase, to hear from XLT on key announcements, Xero’s future and our latest product innovations. We also have some delicious cupcakes to enjoy :xero: :cupcake: \n\n:lunch: Join us for an Mediterranean lunch From *12pm* in the Wominjeka breakout space! Menu in the:thread: "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 4th September :calendar-date-4:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast*: Join us for Breakfast from *8:30am - 10:30am* in the Wominjeka Breakout Space.  \n\n\n * Social Happy Hour*: Join us at *4.00pm* for the Footy Fevers Social. Think Mini Hot Dogs, Hot Jam Donuts and Beer tasting from *CbCo Brewery*. Dress in your best AFL gear for the chance to win a prize! :beer: :hotdog: More details to come during the week.\n\n *What Else? :green_heart:*"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " Feedback on our Boost Offerings? We want to hear more. Let us know what you love by filling out our form <https://docs.google.com/forms/d/e/1FAIpQLScGOSeS5zUI8WXEl0K4WGoQUkmpIHzAjLlEKWBob4sMPhDXmA/viewform|here.>  \n\n Stay tuned to this channel, and make sure you're subscribed to the <https://calendar.google.com/calendar/u/0?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Melbourne Social Calendar*> :party-wx:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: What's on in Melbourne this week! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n\n Hey Melbourne, happy Monday and Hello September! Please see below for what's on this week. "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Xero Café :coffee:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n :new-thing: *This week we are offering:* \n\n :caramel-slice: *Sweet Treats*: Selection of Lamingtons & cookies \n\n :coffee: *Weekly Café Special*: Salted Caramel Latte"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 3rd September :calendar-date-3:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":Xerocon: Join us in the Wominjeka Breakout Space on *Level -3* at 9.15am for a live screening of Xerocon and some delicious cupcakes :xero: :cupcake: \n\n:lunch: Join us for an Mediterranean lunch From *12pm* in the Wominjeka breakout space! Menu in the:thread: "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 4th September :calendar-date-4:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast*: Join us for Breakfast from *8:30am - 10:30am* in the Wominjeka Breakout Space.  \n\n\n * Social Happy Hour*: Join us at *4.00pm* for the Footy Fevers Social. Think Mini Hot Dogs, Hot Jam Donuts and Beer tasting from *CbCo Brewery*. Dress in your best AFL gear for the chance to win a prize! :beer: :hotdog: More details to come during the week.\n\n *What Else? :green_heart:*"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " Feedback on our Boost Offerings? We want to hear more. Let us know what you love by filling out our form <https://docs.google.com/forms/d/e/1FAIpQLScGOSeS5zUI8WXEl0K4WGoQUkmpIHzAjLlEKWBob4sMPhDXmA/viewform|here.>  \n\n Stay tuned to this channel, and make sure you're subscribed to the <https://calendar.google.com/calendar/u/0?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Melbourne Social Calendar*> :party-wx:"
			}
		}
	]
}
Datacenter -> Storage -> local -> Content
	add 
		Disk Image
		Import

Go to Datacenter -> server -> Storage Local (local)

You now see "Import" Option.
Block Intelligence powers Cross-DEX trading with seamless multi-chain connectivity, liquidity aggregation, and advanced swaps.We deliver secure, scalable, and efficient solutions for minimized losses and superior UX. Lead the future of DeFi with innovation and confidence.

Know more >>> https://crossdex.web5.nexus/
What’s App: +91 77384 79381
Mail to :  connect@web5.nexus
add_action('woocommerce_after_add_to_cart_button','devvn_quickbuy_after_addtocart_button');
function devvn_quickbuy_after_addtocart_button(){
    global $product;
    ?>
    <style>
        .devvn-quickbuy button.single_add_to_cart_button.loading:after {
            display: none;
        }
        .devvn-quickbuy button.single_add_to_cart_button.button.alt.loading {
            color: #fff;
            pointer-events: none !important;
        }
        .devvn-quickbuy button.buy_now_button {
            position: relative;
            color: rgba(255,255,255,0.05);
        }
        .devvn-quickbuy button.buy_now_button:after {
            animation: spin 500ms infinite linear;
            border: 2px solid #fff;
            border-radius: 32px;
            border-right-color: transparent !important;
            border-top-color: transparent !important;
            content: "";
            display: block;
            height: 16px;
            top: 50%;
            margin-top: -8px;
            left: 50%;
            margin-left: -8px;
            position: absolute;
            width: 16px;
        }
    </style>
    <button type="button" class="button buy_now_button">
        <?php _e('Mua ngay', 'devvn'); ?>
    </button>
    <input type="hidden" name="is_buy_now" class="is_buy_now" value="0" autocomplete="off"/>
    <script>
        jQuery(document).ready(function(){
            jQuery('body').on('click', '.buy_now_button', function(e){
                e.preventDefault();
                var thisParent = jQuery(this).parents('form.cart');
                if(jQuery('.single_add_to_cart_button', thisParent).hasClass('disabled')) {
                    jQuery('.single_add_to_cart_button', thisParent).trigger('click');
                    return false;
                }
                thisParent.addClass('devvn-quickbuy');
                jQuery('.is_buy_now', thisParent).val('1');
                jQuery('.single_add_to_cart_button', thisParent).trigger('click');
            });
        });
    </script>
    <?php
}
add_filter('woocommerce_add_to_cart_redirect', 'redirect_to_checkout');
function redirect_to_checkout($redirect_url) {
    if (isset($_REQUEST['is_buy_now']) && $_REQUEST['is_buy_now']) {
        $redirect_url = wc_get_checkout_url(); //or wc_get_cart_url()
    }
    return $redirect_url;
}
-- UtilityEventTxnLImit
DROP TABLE team_kingkong.onus_UtilityEventTxnLImit_breaches;

-- CREATE TABLE team_kingkong.onus_UtilityEventTxnLImit_breaches AS 
INSERT INTO team_kingkong.onus_UtilityEventTxnLImit_breaches 
SELECT A.*, case when m1.mid is not null then category else 'Others' end as business_category
, 1000001 as per_txn_threshold
, 'per txn threshold breached' as breach_reason
FROM 
    (select distinct userid, transactionid,
    cast(eventAmount as double) / 100 as amt,
    dateinserted,
    substr(cast(dateinserted as varchar(30)), 1, 7) as mnth,
    paymethod, paytmmerchantid, responsestatus, actionrecommended
    FROM cdp_risk_transform.maquette_flattened_onus_snapshot_v3
    WHERE DATE(dl_last_updated) BETWEEN DATE'2025-01-01' AND DATE'2025-01-31'
    AND SOURCE = 'PG' AND paymethod IN ('DEBIT_CARD', 'CREDIT_CARD')
AND responsestatus = 'SUCCESS' AND actionrecommended <> 'BLOCK'
    AND (cast(eventAmount as double) / 100) > 1000001
    AND eventid IN (SELECT eventlinkid
    FROM risk_maquette_data_async.pplus_payment_result_prod_async_snapshot_v3
    WHERE dl_last_updated BETWEEN DATE'2025-01-01' AND DATE'2025-01-31'
    AND payresult = 'payment_success')) a
left join
    (select * from team_kingkong.voc_mid_categorization where mid != '') m1
on a.paytmmerchantid = m1.mid;
settings.json

{
    "php.docblock.propertySnippet": {},
    "editor.fontFamily": "'Fira Code'",
    "editor.fontLigatures": true,
    "editor.fontSize": 14,                      // Tamaño de fuente cómodo para lectura
    "editor.lineHeight": 22,                    // Espaciado entre líneas para mejor claridad
    "editor.fontWeight": "400",                 // Peso regular de la fuente
    "editor.renderWhitespace": "all",          // Muestra espacios y tabulaciones para mejor control del código
    "editor.cursorSmoothCaretAnimation": "on",// Animación suave del cursor
    "editor.minimap.enabled": false,            // Desactiva minimapa para menos distracciones (opcional)
    "workbench.colorTheme": "Default Dark+",   // Tema oscuro para menos fatiga visual (puedes cambiarlo)
    "editor.smoothScrolling": true,
    "sqltools.connections": [
        {
            "previewLimit": 50,
            "server": "localhost",
            "port": 5432,
            "driver": "PostgreSQL",
            "name": "indicadires_jobran",
            "username": "jdrodriguezg",
            "database": "indicadores_jobran"
        },
        {
            "previewLimit": 50,
            "server": "localhost",
            "port": 5432,
            "driver": "PostgreSQL",
            "database": "indicadores_jobran",
            "username": "postgres",
            "name": "Localhost-jobran"
        }
    ],
    "editor.guides.indentation": true // Muestra guías de indentación para mejor estructura visual
}

/* Selects an h1 heading with a
paragraph element that immediately follows
the h1 and applies the style to h1 */
h1:has(+ p) {
  margin-bottom: 0;
}
###Inicializacion

git init 			 			#inicializa un nuevo repositorio
git clone <repo-url> 			#clona desde una url

###desarrollo diario
git status 			 			#Muestra el estado de la rama
git add <archivo>	 			#a~adir cambios al area de preparacion
git commit -m "mensaje"			#confirma los cambios con un mensaje

###Gestion de ramas
git branch						#lista las ramas
git branch <nombre-rama>		#crea una rama nueva
git switch <nombre-rama>		#cambia a una rama
git branch -d <nombre-rama>		#elimina una rama

###Integracion y colaboracion
git merge <rama>				#fusiona los cambios de una rama
git remote add <nombre> <url> 	#a~ade un repositorio remoto
git push <remoto> <rama>
git pull <remoto> <rama>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Manejo de Eventos en HTML y JavaScript</title>
    <script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
    <style>
        :root {
            --primary: #2563eb;
            --secondary: #4b5563;
            --accent: #10b981;
            --light: #f3f4f6;
            --dark: #1f2937;
        }
        
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        
        body {
            background-color: #f9fafb;
            color: var(--dark);
            line-height: 1.6;
            padding: 20px;
        }
        
        header {
            text-align: center;
            margin-bottom: 40px;
            padding: 20px;
            background: linear-gradient(135deg, var(--primary), var(--accent));
            color: white;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        }
        
        h1 {
            font-size: 2.5rem;
            margin-bottom: 10px;
        }
        
        .description {
            max-width: 800px;
            margin: 0 auto 30px;
            font-size: 1.1rem;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
        }
        
        .download-btn {
            display: inline-block;
            background-color: var(--accent);
            color: white;
            padding: 12px 24px;
            border-radius: 5px;
            text-decoration: none;
            font-weight: bold;
            margin: 20px 0;
            cursor: pointer;
            border: none;
            transition: background-color 0.3s;
        }
        
        .download-btn:hover {
            background-color: #059669;
        }
        
        .events-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
            gap: 20px;
            margin-bottom: 40px;
        }
        
        .event-card {
            background-color: white;
            border-radius: 8px;
            padding: 20px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            transition: transform 0.3s, box-shadow 0.3s;
        }
        
        .event-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
        }
        
        .event-card h3 {
            color: var(--primary);
            margin-bottom: 15px;
            border-bottom: 2px solid var(--light);
            padding-bottom: 10px;
        }
        
        .event-card p {
            margin-bottom: 15px;
        }
        
        .code-example {
            background-color: var(--light);
            padding: 12px;
            border-radius: 5px;
            font-family: monospace;
            font-size: 0.9rem;
            overflow-x: auto;
            margin-bottom: 15px;
        }
        
        .demo-area {
            background-color: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            margin-bottom: 40px;
        }
        
        .demo-area h2 {
            color: var(--primary);
            margin-bottom: 20px;
            text-align: center;
        }
        
        .demo-buttons {
            display: flex;
            flex-wrap: wrap;
            gap: 15px;
            justify-content: center;
        }
        
        .demo-btn {
            padding: 10px 20px;
            background-color: var(--primary);
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        
        .demo-btn:hover {
            background-color: #1d4ed8;
        }
        
        .demo-output {
            margin-top: 20px;
            padding: 15px;
            background-color: var(--light);
            border-radius: 5px;
            min-height: 100px;
        }
        
        footer {
            text-align: center;
            margin-top: 40px;
            padding: 20px;
            color: var(--secondary);
        }
        
        @media (max-width: 768px) {
            .events-grid {
                grid-template-columns: 1fr;
            }
            
            h1 {
                font-size: 2rem;
            }
        }
    </style>
</head>
<body>
    <header>
        <h1>Manejo de Eventos en HTML y JavaScript</h1>
        <p class="description">Guía completa de todas las formas de manejar eventos en HTML y JavaScript con ejemplos prácticos y la posibilidad de descargar la información en formato Excel.</p>
    </header>

    <div class="container">
        <button class="download-btn" onclick="exportToExcel()">Descargar en Excel</button>

        <div class="events-grid">
            <div class="event-card">
                <h3>Atributos HTML inline</h3>
                <p>Manejo de eventos directamente en los elementos HTML usando atributos como onclick, onmouseover, etc.</p>
                <div class="code-example">
                    &lt;button onclick="miFuncion()"&gt;Click me&lt;/button&gt;
                </div>
            </div>

            <div class="event-card">
                <h3>Propiedades del objeto DOM</h3>
                <p>Asignación de eventos mediante propiedades del objeto DOM como element.onclick.</p>
                <div class="code-example">
                    element.onclick = function() {<br>
                    &nbsp;&nbsp;console.log('Click detectado');<br>
                    };
                </div>
            </div>

            <div class="event-card">
                <h3>addEventListener()</h3>
                <p>Método moderno y recomendado para manejar eventos. Permite múltiples manejadores para el mismo evento.</p>
                <div class="code-example">
                    element.addEventListener('click', function() {<br>
                    &nbsp;&nbsp;console.log('Click con addEventListener');<br>
                    });
                </div>
            </div>

            <div class="event-card">
                <h3>removeEventListener()</h3>
                <p>Elimina manejadores de eventos previamente agregados con addEventListener().</p>
                <div class="code-example">
                    element.removeEventListener('click', miFuncion);
                </div>
            </div>

            <div class="event-card">
                <h3>Delegación de eventos</h3>
                <p>Manejo eficiente de eventos para múltiples elementos mediante un ancestro común.</p>
                <div class="code-example">
                    parent.addEventListener('click', function(e) {<br>
                    &nbsp;&nbsp;if (e.target.tagName === 'LI') {<br>
                    &nbsp;&nbsp;&nbsp;&nbsp;console.log('Item clickeado');<br>
                    &nbsp;&nbsp;}<br>
                    });
                </div>
            </div>

            <div class="event-card">
                <h3>Eventos personalizados</h3>
                <p>Creación y despacho de eventos personalizados según las necesidades de la aplicación.</p>
                <div class="code-example">
                    const evento = new CustomEvent('miEvento', {<br>
                    &nbsp;&nbsp;detail: { mensaje: 'Hola' }<br>
                    });<br>
                    element.dispatchEvent(evento);
                </div>
            </div>

            <div class="event-card">
                <h3>Eventos de teclado</h3>
                <p>Manejo de eventos relacionados con el teclado como keydown, keyup y keypress.</p>
                <div class="code-example">
                    document.addEventListener('keydown', function(e) {<br>
                    &nbsp;&nbsp;console.log('Tecla presionada:', e.key);<br>
                    });
                </div>
            </div>

            <div class="event-card">
                <h3>Eventos de formulario</h3>
                <p>Manejo de eventos específicos de formularios como submit, change, input, focus y blur.</p>
                <div class="code-example">
                    form.addEventListener('submit', function(e) {<br>
                    &nbsp;&nbsp;e.preventDefault();<br>
                    &nbsp;&nbsp;console.log('Formulario enviado');<br>
                    });
                </div>
            </div>

            <div class="event-card">
                <h3>Eventos de mouse</h3>
                <p>Manejo de eventos del ratón como click, dblclick, mousemove, mouseover, mouseout, etc.</p>
                <div class="code-example">
                    element.addEventListener('mouseover', function() {<br>
                    &nbsp;&nbsp;console.log('Mouse sobre el elemento');<br>
                    });
                </div>
            </div>
        </div>

        <div class="demo-area">
            <h2>Zona de Demostración</h2>
            <div class="demo-buttons">
                <button class="demo-btn" onclick="demoClick()">onclick</button>
                <button class="demo-btn" id="domEvent">DOM Event</button>
                <button class="demo-btn" id="listenerEvent">addEventListener</button>
                <button class="demo-btn" onmouseover="demoMouseOver()" onmouseout="demoMouseOut()">Mouse Over/Out</button>
            </div>
            <div class="demo-output" id="demoOutput">
                El resultado de las demostraciones aparecerá aquí.
            </div>
        </div>
    </div>

    <footer>
        <p>Guía completa de manejo de eventos en HTML y JavaScript</p>
    </footer>

    <script>
        // Datos para exportar a Excel
        const eventosData = [
            ["Método", "Descripción", "Ejemplo"],
            ["Atributos HTML inline", "Manejo de eventos directamente en los elementos HTML", "&lt;button onclick=\"miFuncion()\"&gt;Click me&lt;/button&gt;"],
            ["Propiedades del objeto DOM", "Asignación de eventos mediante propiedades del objeto DOM", "element.onclick = function() { console.log('Click detectado'); };"],
            ["addEventListener()", "Método moderno y recomendado para manejar eventos", "element.addEventListener('click', function() { console.log('Click con addEventListener'); });"],
            ["removeEventListener()", "Elimina manejadores de eventos previamente agregados", "element.removeEventListener('click', miFuncion);"],
            ["Delegación de eventos", "Manejo eficiente de eventos para múltiples elementos", "parent.addEventListener('click', function(e) { if (e.target.tagName === 'LI') { console.log('Item clickeado'); } });"],
            ["Eventos personalizados", "Creación y despacho de eventos personalizados", "const evento = new CustomEvent('miEvento', { detail: { mensaje: 'Hola' } }); element.dispatchEvent(evento);"],
            ["Eventos de teclado", "Manejo de eventos relacionados con el teclado", "document.addEventListener('keydown', function(e) { console.log('Tecla presionada:', e.key); });"],
            ["Eventos de formulario", "Manejo de eventos específicos de formularios", "form.addEventListener('submit', function(e) { e.preventDefault(); console.log('Formulario enviado'); });"],
            ["Eventos de mouse", "Manejo de eventos del ratón", "element.addEventListener('mouseover', function() { console.log('Mouse sobre el elemento'); });"]
        ];

        // Función para exportar a Excel
        function exportToExcel() {
            const wb = XLSX.utils.book_new();
            const ws = XLSX.utils.aoa_to_sheet(eventosData);
            
            XLSX.utils.book_append_sheet(wb, ws, "Manejo de Eventos");
            XLSX.writeFile(wb, "Manejo_Eventos_HTML_JavaScript.xlsx");
        }

        // Configuración de demostraciones
        document.getElementById('domEvent').onclick = function() {
            document.getElementById('demoOutput').innerHTML += '<p>Evento manejado mediante propiedad DOM</p>';
        };

        document.getElementById('listenerEvent').addEventListener('click', function() {
            document.getElementById('demoOutput').innerHTML += '<p>Evento manejado con addEventListener</p>';
        });

        // Funciones de demostración
        function demoClick() {
            document.getElementById('demoOutput').innerHTML += '<p>Evento onclick ejecutado</p>';
        }

        function demoMouseOver() {
            document.getElementById('demoOutput').innerHTML += '<p>Mouse sobre el botón</p>';
        }

        function demoMouseOut() {
            document.getElementById('demoOutput').innerHTML += '<p>Mouse fuera del botón</p>';
        }

        // Evento de teclado para demostración
        document.addEventListener('keydown', function(e) {
            document.getElementById('demoOutput').innerHTML += `<p>Tecla presionada: ${e.key}</p>`;
        });
    </script>
</body>
</html>
#!/bin/bash
#Jobran Rodriguez
day_name=$(LC_TIME=es_ES.UTF-8 date -d "$year-$month-$day" +%A)
fecha_es=$(LC_TIME=es_ES.UTF-8 date -d "$year-$month-$day" +"%A %d de %B de %Y")


# Definir lista de personas (en orden) con 7 nombres (sin Aguedo)
persons=("Juan" "Jobran" "Luis" "Jose" "Gabriel" "Jonathan" "brian" "robert")

# Detectar carpeta de escritorio válida (prioriza "Escritorio" si existe, si no "Desktop")
if [ -d "$HOME/Escritorio" ]; then
    DESKTOP_DIR="$HOME/Escritorio"
elif [ -d "$HOME/Desktop" ]; then
    DESKTOP_DIR="$HOME/Desktop"
else
    # No existe ninguna, crear "Escritorio"
    DESKTOP_DIR="$HOME/Escritorio"
    mkdir -p "$DESKTOP_DIR"
    echo "No se encontró carpeta de escritorio, se ha creado '$DESKTOP_DIR'."
fi

# Crear carpeta asignacion
A="$DESKTOP_DIR/asignacion"
mkdir -p "$A"

# Definir archivo de salida
OUTPUT_FILE="$A/asignacion_caja.txt"

echo "Hola! Este script te dirá qué días te toca buscar la caja de comida este mes."
read -p "Por favor, ingresa tu nombre: " name

# Validar mes
while true; do
    read -p "Ingresa el número del mes (1-12): " month
    if [[ "$month" =~ ^[0-9]+$ ]] && (( month >= 1 && month <= 12 )); then
        break
    else
        echo "Error: Debes ingresar un número válido entre 1 y 12 para el mes."
    fi
done

# Validar año
while true; do
    read -p "Ingresa el año actual (2025): " year
    if [[ "$year" =~ ^[0-9]{4}$ ]] && (( year >= 1900 && year <= 3000 )); then
        break
    else
        echo "Error: Debes ingresar un año válido de 4 dígitos (por ejemplo, 2023)."
    fi
done

# Verificar nombre con mensaje específico
index=-1
for i in "${!persons[@]}"; do
    if [[ "${persons[$i],,}" == "${name,,}" ]]; then
        index=$i
        break
    fi
done
if [ $index -eq -1 ]; then
    echo "Error: Debes ingresar un nombre válido de las personas que trabajan en la oficina de sistemas y usan el servicio del comedor."
    exit 1
fi

# Fecha actual
current_year=$(date +%Y)
current_month=$(date +%m)
current_day=$(date +%d)

show_individual=1
if (( year < current_year )) || { (( year == current_year )) && (( month < 10#$current_month )); }; then
    show_individual=0
fi

days_in_month() {
    case $1 in
        1|3|5|7|8|10|12) echo 31 ;;
        4|6|9|11) echo 30 ;;
        2)
            if (( ($2 % 400 == 0) || (($2 % 4 == 0) && ($2 % 100 != 0)) )); then
                echo 29
            else
                echo 28
            fi
            ;;
        *)
            echo 30
            ;;
    esac
}

total_days=$(days_in_month $month $year)

# PRE-CALCULAR días laborales y asignados para evitar múltiples llamadas
declare -a laboral_days
declare -a asignacion_personas
laboral_count=0

for (( day=1; day<=total_days; day++ )); do
    wd=$(date -d "$year-$month-$day" +%u)
    if (( wd >= 1 && wd <= 5 )); then
        laboral_days[laboral_count]=$day
        assign_index=$(( laboral_count % 7 ))
        asignacion_personas[laboral_count]=${persons[$assign_index]}
        ((laboral_count++))
    fi
done

# Crear o sobreescribir archivo
echo "Asignación de búsqueda de caja para $month/$year" > "$OUTPUT_FILE"
echo "--------------------------------------------" >> "$OUTPUT_FILE"

assigned_days=()

for (( i=0; i<laboral_count; i++ )); do
    day=${laboral_days[i]}
    assigned_person=${asignacion_personas[i]}

    # Nombre del día en español, solo llamar una vez por día
    day_name=$(LC_TIME=es_ES.UTF-8 date -d "$year-$month-$day" +%A)

    # Filtrar fechas desde hoy en adelante para archivo y asignación individual
    if (( year > current_year )) || \
       { (( year == current_year )) && (( month > 10#$current_month )); } || \
       { (( year == current_year )) && (( month == 10#$current_month )) && (( day >= 10#$current_day )); }; then
        echo "$day_name $day/$month/$year : $assigned_person" >> "$OUTPUT_FILE"

        # Mostrar solo asignación individual para el usuario si corresponde
        if [[ $assigned_person == "${persons[$index]}" && show_individual -eq 1 ]]; then
            assigned_days+=("$day_name $day/$month/$year")
        fi
    fi
done

if (( show_individual == 1 )); then
    echo
    echo "¡Hola, $name! 🎉 Aquí están los días que te toca buscar la caja de comida este mes:"
    if [ ${#assigned_days[@]} -eq 0 ]; then
        echo "¡Nada esta vez! Pero recuerda estar listo para la próxima ronda. 😉"
    else
        for d in "${assigned_days[@]}"; do
            echo "  - $d"
        done
    fi
else
    echo
    echo "Tu asignación individual no se mostrará porque el mes seleccionado ($month/$year) ya pasó."
fi

echo
echo "Además, se ha creado o actualizado el archivo con la asignación completa en:"
echo "  $OUTPUT_FILE"
echo
echo "¡Gracias por colaborar con el equipo! 💪🍱"

exit 0
#!/bin/bash

# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

# Función para mostrar mensajes de error
error() {
    echo -e "${RED}Error: $1${NC}" >&2
}

# Función para mostrar mensajes de éxito
success() {
    echo -e "${GREEN}$1${NC}"
}

# Función para mostrar advertencias
warning() {
    echo -e "${YELLOW}Advertencia: $1${NC}"
}

# Función para mostrar información
info() {
    echo -e "${BLUE}$1${NC}"
}

# Función para mostrar detalles
detail() {
    echo -e "${CYAN}$1${NC}"
}

# Función para normalizar nombres (remover guiones bajos y convertir a minúsculas)
normalizar_nombre() {
    echo "$1" | tr '[:upper:]' '[:lower:]' | sed 's/_//g'
}

# Función para obtener migraciones existentes
obtener_migraciones_existentes() {
    local migraciones=()
    if [ -d "database/migrations" ]; then
        while IFS= read -r -d '' archivo; do
            # Extraer el nombre de la tabla del archivo de migración
            local nombre_archivo=$(basename "$archivo")
            # Buscar varios patrones comunes de migraciones
            if [[ "$nombre_archivo" =~ create_(.*)_table\.php ]] ||
               [[ "$nombre_archivo" =~ _(.*)_table\.php ]] ||
               [[ "$nombre_archivo" =~ create_(.*)\.php ]] ||
               [[ "$nombre_archivo" =~ _(.*)\.php ]]; then
                migraciones+=("${BASH_REMATCH[1]}")
            fi
        done < <(find database/migrations -name "*.php" -print0 2>/dev/null)
    fi
    echo "${migraciones[@]}"
}

# Función para verificar si una migración ya existe (comparación normalizada)
migracion_existe() {
    local tabla="$1"
    local migraciones_existentes=($(obtener_migraciones_existentes))
    
    # Normalizar el nombre de la tabla a verificar
    local tabla_normalizada=$(normalizar_nombre "$tabla")
    
    for migracion in "${migraciones_existentes[@]}"; do
        # Normalizar el nombre de la migración existente
        local migracion_normalizada=$(normalizar_nombre "$migracion")
        
        if [ "$migracion_normalizada" == "$tabla_normalizada" ]; then
            return 0 # true - existe
        fi
    done
    return 1 # false - no existe
}

# Función para obtener el nombre real del archivo de migración existente
obtener_nombre_archivo_existente() {
    local tabla="$1"
    local migraciones_existentes=($(obtener_migraciones_existentes))
    
    local tabla_normalizada=$(normalizar_nombre "$tabla")
    
    for migracion in "${migraciones_existentes[@]}"; do
        local migracion_normalizada=$(normalizar_nombre "$migracion")
        
        if [ "$migracion_normalizada" == "$tabla_normalizada" ]; then
            # Encontrar el archivo real
            archivo_existente=$(find database/migrations -name "*${migracion}*" -print -quit 2>/dev/null)
            if [ -n "$archivo_existente" ]; then
                echo "$(basename "$archivo_existente")"
                return
            fi
        fi
    done
    echo ""
}

# Función para verificar si una palabra está en plural (inglés y español)
es_plural() {
    local palabra="$1"
    local palabra_lower=$(echo "$palabra" | tr '[:upper:]' '[:lower:]')
    
    # Reglas para plural en inglés
    local plural_ingles=(
        "s$" "es$" "ies$" "ves$" "xes$" "zes$" "ches$" "shes$"
    )
    
    # Reglas para plural en español
    local plural_espanol=(
        "s$" "es$" "ces$" "ses$" "res$" "nes$"
    )
    
    # Verificar reglas en inglés
    for regla in "${plural_ingles[@]}"; do
        if [[ "$palabra_lower" =~ $regla ]]; then
            return 0 # true - es plural
        fi
    done
    
    # Verificar reglas en español
    for regla in "${plural_espanol[@]}"; do
        if [[ "$palabra_lower" =~ $regla ]]; then
            return 0 # true - es plural
        fi
    done
    
    # Palabras comunes que son plurales
    local plurales_comunes=(
        "people" "children" "men" "women" "feet" "teeth" "mice" "geese"
        "data" "criteria" "phenomena" "personas" "gentes" "naciones"
        "usuarios" "personas" "productos" "categorias" "articulos"
    )
    
    for plural in "${plurales_comunes[@]}"; do
        if [ "$palabra_lower" == "$plural" ]; then
            return 0 # true - es plural
        fi
    done
    
    return 1 # false - no es plural
}

# Función para sugerir plural en inglés (convención Laravel)
sugerir_plural() {
    local palabra="$1"
    local idioma="${2:-en}" # default inglés
    
    # Convertir a minúsculas para procesamiento
    local palabra_lower=$(echo "$palabra" | tr '[:upper:]' '[:lower:]')
    local resultado=""
    
    if [ "$idioma" == "en" ]; then
        # Reglas de pluralización en inglés
        if [[ "$palabra_lower" =~ y$ ]] && ! [[ "$palabra_lower" =~ [aeiou]y$ ]]; then
            resultado="${palabra_lower%y}ies"
        elif [[ "$palabra_lower" =~ f$ ]]; then
            resultado="${palabra_lower%f}ves"
        elif [[ "$palabra_lower" =~ fe$ ]]; then
            resultado="${palabra_lower%fe}ves"
        elif [[ "$palabra_lower" =~ s$ ]] || [[ "$palabra_lower" =~ x$ ]] || [[ "$palabra_lower" =~ z$ ]] || 
             [[ "$palabra_lower" =~ ch$ ]] || [[ "$palabra_lower" =~ sh$ ]]; then
            resultado="${palabra_lower}es"
        else
            resultado="${palabra_lower}s"
        fi
    else
        # Reglas básicas de pluralización en español
        if [[ "$palabra_lower" =~ [áéíóú]$ ]]; then
            resultado="${palabra_lower}es"
        elif [[ "$palabra_lower" =~ z$ ]]; then
            resultado="${palabra_lower%z}ces"
        elif [[ "$palabra_lower" =~ [aeiou]$ ]]; then
            resultado="${palabra_lower}s"
        elif [[ "$palabra_lower" =~ [bcdfghjklmnpqrstvwxyz]$ ]]; then
            resultado="${palabra_lower}es"
        else
            resultado="${palabra_lower}s"
        fi
    fi
    
    # Mantener capitalización original si la palabra comenzaba con mayúscula
    if [[ "$palabra" =~ ^[A-Z] ]]; then
        resultado="$(echo "${resultado:0:1}" | tr '[:lower:]' '[:upper:]')${resultado:1}"
    fi
    
    echo "$resultado"
}

# Mostrar migraciones existentes
mostrar_migraciones_existentes() {
    local migraciones_existentes=($(obtener_migraciones_existentes))
    
    if [ ${#migraciones_existentes[@]} -eq 0 ]; then
        info "No hay migraciones existentes en la carpeta database/migrations"
    else
        info "Migraciones existentes:"
        for migracion in "${migraciones_existentes[@]}"; do
            detail "  - $migracion"
        done
        echo ""
    fi
}

# Función para solicitar nombre de tabla con todas las validaciones
solicitar_nombre_tabla() {
    local numero_tabla="$1"
    local tablas_existentes=("$2") # Tablas ya ingresadas en esta sesión
    
    while true; do
        read -p "Ingrese el nombre de la tabla $numero_tabla: " nombre_tabla
        
        # Validar que no esté vacío
        if [ -z "$nombre_tabla" ]; then
            error "El nombre no puede estar vacío."
            continue
        fi
        
        # Validar formato
        if [[ ! "$nombre_tabla" =~ ^[a-zA-Z0-9_áéíóúÁÉÍÓÚñÑ]+$ ]]; then
            error "El nombre contiene caracteres no válidos."
            continue
        fi
        
        # Verificar si está en plural
        if ! es_plural "$nombre_tabla"; then
            warning "El nombre '$nombre_tabla' parece estar en singular."
            
            # Ofrecer sugerencias en inglés y español
            sugerencia_en=$(sugerir_plural "$nombre_tabla" "en")
            sugerencia_es=$(sugerir_plural "$nombre_tabla" "es")
            
            echo "Sugerencias:"
            echo "  1) Inglés (recomendado): $sugerencia_en"
            echo "  2) Español: $sugerencia_es"
            echo "  3) Mantener '$nombre_tabla'"
            
            read -p "Seleccione una opción (1/2/3): " opcion_plural
            
            case $opcion_plural in
                1) nombre_tabla="$sugerencia_en" ;;
                2) nombre_tabla="$sugerencia_es" ;;
                3) info "Manteniendo: $nombre_tabla" ;;
                *) 
                    error "Opción no válida. Manteniendo nombre original."
                    ;;
            esac
        fi
        
        # Verificar si la migración ya existe en el sistema (comparación normalizada)
        if migracion_existe "$nombre_tabla"; then
            warning "¡La migración para '$nombre_tabla' ya existe!"
            
            # Mostrar el archivo existente
            archivo_existente=$(obtener_nombre_archivo_existente "$nombre_tabla")
            if [ -n "$archivo_existente" ]; then
                detail "Archivo existente: $archivo_existente"
            fi
            
            # Pedir nuevo nombre inmediatamente
            read -p "Por favor, ingrese un nombre diferente: " nombre_tabla
            
            # Continuar el ciclo para validar el nuevo nombre
            continue
        fi
        
        # Verificar si ya fue ingresado en esta misma sesión (comparación normalizada)
        for tabla_existente in "${tablas_existentes[@]}"; do
            if [ "$(normalizar_nombre "$tabla_existente")" == "$(normalizar_nombre "$nombre_tabla")" ]; then
                warning "El nombre '$nombre_tabla' ya fue ingresado en esta sesión."
                read -p "Por favor, ingrese un nombre diferente: " nombre_tabla
                continue 2
            fi
        done
        
        # Si llegamos aquí, el nombre es válido, no existe y no es duplicado
        echo "$nombre_tabla"
        break
    done
}

# Validar que estamos en un proyecto Laravel
if [ ! -f "artisan" ]; then
    error "No se encontró el archivo artisan. Asegúrate de estar en el directorio raíz de un proyecto Laravel."
    exit 1
fi

# Validar que PHP está disponible
if ! command -v php &> /dev/null; then
    error "PHP no está instalado o no está en el PATH."
    exit 1
fi

# Mostrar migraciones existentes al inicio
mostrar_migraciones_existentes

# Solicitar y validar la cantidad de tablas
while true; do
    read -p "Ingrese la cantidad de tablas que desea crear: " cantidad_tablas
    
    if [[ ! "$cantidad_tablas" =~ ^[0-9]+$ ]]; then
        error "Por favor, ingrese un número válido."
        continue
    fi
    
    if [ "$cantidad_tablas" -lt 1 ]; then
        error "La cantidad debe ser al menos 1."
        continue
    fi
    
    break
done

# Inicializar arreglo para almacenar los nombres de las tablas
tablas=()

info "Convenciones de Laravel:"
info "- Nombres de tablas en PLURAL (inglés preferido)"
info "- Ejemplos: users, products, categories, posts, comments"
info "- También se acepta español: usuarios, productos, categorías"

# Solicitar los nombres de las tablas con validación inmediata
for ((i=1; i<=cantidad_tablas; i++)); do
    nombre_tabla=$(solicitar_nombre_tabla $i "${tablas[@]}")
    
    tablas+=("$nombre_tabla")
    success "Tabla agregada: $nombre_tabla"
done

if [ ${#tablas[@]} -eq 0 ]; then
    warning "No se agregaron tablas para crear migraciones."
    exit 0
fi

# Mostrar resumen antes de proceder
echo -e "\n${YELLOW}Resumen de migraciones a crear:${NC}"
for table in "${tablas[@]}"; do
    echo "  - create_${table}_table"
done

# Confirmar antes de ejecutar
read -p $'\n¿Desea continuar con la creación de las migraciones? (s/N): ' confirmar

if [[ ! "$confirmar" =~ ^[SsYy]$ ]] && [ -n "$confirmar" ]; then
    warning "Operación cancelada por el usuario."
    exit 0
fi

# Crear las migraciones
echo -e "\nCreando migraciones..."
for table in "${tablas[@]}"; do
    echo "Creando migración para: $table"
    
    if php artisan make:migration "create_${table}_table" --quiet; then
        success "✓ Migración para '$table' creada exitosamente."
    else
        error "✗ Error al crear la migración para '$table'"
    fi
done

# Mostrar migraciones actualizadas
echo -e "\n"
mostrar_migraciones_existentes

success "¡Proceso completado! Se crearon ${#tablas[@]} migraciones."
below json settings is for 0 width gutter size
"editor.lineNumbers": "off",
    "scm.diffDecorations": "none",
    "errorLens.gutterIconsEnabled": false,
    "debug.gutterMiddleClickAction": "none",
    "editor.showFoldingControls": "never",
    "editor.hideCursorInOverviewRuler": true,
    "editor.overviewRulerBorder": false,
    "editor.glyphMargin": false,
<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header set X-Frame-Options SAMEORIGIN
Header set Referrer-Policy: no-referrer-when-downgrade
</ifModule>
واجهة USB عالية السرعة: تجربة نقل البيانات بسرعة مع USB ، مما يضمن معالجة الملفات بكفاءة لجميع احتياجات التخزين الخاصة بك.
star

Thu Sep 04 2025 14:07:31 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Thu Sep 04 2025 14:03:59 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Thu Sep 04 2025 13:18:35 GMT+0000 (Coordinated Universal Time) Configurar timeout más largo para Composer:

@jrg_300i #php #polimorfismo

star

Thu Sep 04 2025 12:11:11 GMT+0000 (Coordinated Universal Time)

@jrg_300i #php #polimorfismo

star

Thu Sep 04 2025 09:07:28 GMT+0000 (Coordinated Universal Time)

@Shira

star

Thu Sep 04 2025 08:17:26 GMT+0000 (Coordinated Universal Time) https://myassignmenthelp.expert/

@lucywilliams

star

Wed Sep 03 2025 18:15:37 GMT+0000 (Coordinated Universal Time)

@jrg_300i #php #polimorfismo

star

Wed Sep 03 2025 18:15:09 GMT+0000 (Coordinated Universal Time)

@jrg_300i #docker

star

Wed Sep 03 2025 15:30:58 GMT+0000 (Coordinated Universal Time)

@jrg_300i #docker

star

Wed Sep 03 2025 11:13:16 GMT+0000 (Coordinated Universal Time) https://www.firebeetechnoservices.com/cryptocurrency-exchange-software-development-company

@aanaethan #crypto #cryptoexchangedevelopment #cryptoexchangedevelopmentcompany

star

Wed Sep 03 2025 10:51:50 GMT+0000 (Coordinated Universal Time)

@javads

star

Tue Sep 02 2025 19:08:08 GMT+0000 (Coordinated Universal Time)

@xooeem

star

Tue Sep 02 2025 13:44:37 GMT+0000 (Coordinated Universal Time) https://maticz.com/zengo-wallet-clone-script

@austinparker #rummy #rummygame #rummygamedevelopment #rummygameapp

star

Tue Sep 02 2025 12:32:54 GMT+0000 (Coordinated Universal Time) https://www.touchcrypto.org/polkadot-blockchain-development-company

@AthurLuis7801 #polkadot #blockchaindevelopment #web3 #cryptodevelopment #defi

star

Tue Sep 02 2025 10:52:58 GMT+0000 (Coordinated Universal Time)

@usman13

star

Tue Sep 02 2025 04:38:53 GMT+0000 (Coordinated Universal Time)

@root1024 ##python #matplotlib

star

Tue Sep 02 2025 04:25:12 GMT+0000 (Coordinated Universal Time)

@root1024 ##python #matplotlib

star

Mon Sep 01 2025 17:03:05 GMT+0000 (Coordinated Universal Time)

@jrg_300i #docker

star

Mon Sep 01 2025 10:46:26 GMT+0000 (Coordinated Universal Time) https://maticz.com/meme-coin-development

@carolinemax

star

Mon Sep 01 2025 10:00:21 GMT+0000 (Coordinated Universal Time) https://www.thecryptoape.com/bitfinex-clone-script

@Davidbrevis

star

Sun Aug 31 2025 10:28:25 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Sun Aug 31 2025 10:17:22 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Sat Aug 30 2025 15:11:56 GMT+0000 (Coordinated Universal Time)

@marcopinero

star

Sat Aug 30 2025 06:49:53 GMT+0000 (Coordinated Universal Time) https://crossdex.web5.nexus/

@Clarapeters #crossdex #defi #cryptotrading #blockchain #dex

star

Sat Aug 30 2025 04:18:01 GMT+0000 (Coordinated Universal Time) https://www.patreon.com/posts/51382164

@gina0993

star

Sat Aug 30 2025 04:17:41 GMT+0000 (Coordinated Universal Time) https://www.patreon.com/posts/51382164

@gina0993

star

Fri Aug 29 2025 16:55:35 GMT+0000 (Coordinated Universal Time)

@vanthien

star

Fri Aug 29 2025 07:02:29 GMT+0000 (Coordinated Universal Time)

@shubhangi.b

star

Fri Aug 29 2025 05:09:05 GMT+0000 (Coordinated Universal Time) https://www.b2bcert.com/iso-27001-certification-in-bangalore/

@b2bcert #iso27001 certification in bangalore #iso27001 consultants in bangalore #iso27001 certification consultants in bangalore

star

Thu Aug 28 2025 16:56:26 GMT+0000 (Coordinated Universal Time)

@jrg_300i #docker

star

Thu Aug 28 2025 11:34:41 GMT+0000 (Coordinated Universal Time) https://cryptiecraft.com/how-to-create-cryptocurrency-exchange-platform/

@RileyQuinn #howto start a crypto exchange business #howto start a crypto exchange

star

Wed Aug 27 2025 12:59:30 GMT+0000 (Coordinated Universal Time) https://developer.mozilla.org/de/docs/Web/CSS/:has

@Sebhart #css

star

Wed Aug 27 2025 11:59:03 GMT+0000 (Coordinated Universal Time) https://www.joviindia.com/pages/wholesale-womens-wear

@FashionIndia ##wholesalewomenwear ##fashion ##womendress ##business ##womenwear

star

Tue Aug 26 2025 20:27:16 GMT+0000 (Coordinated Universal Time)

@jrg_300i #docker

star

Tue Aug 26 2025 18:44:04 GMT+0000 (Coordinated Universal Time)

@jrg_300i #docker

star

Tue Aug 26 2025 17:20:47 GMT+0000 (Coordinated Universal Time)

@jrg_300i #docker

star

Tue Aug 26 2025 16:13:26 GMT+0000 (Coordinated Universal Time)

@jrg_300i #docker

star

Tue Aug 26 2025 12:35:26 GMT+0000 (Coordinated Universal Time) https://cryptiecraft.com/coinbase-clone-script/

@RileyQuinn #coinbaseclone #coinbaseclonescript

star

Tue Aug 26 2025 10:10:55 GMT+0000 (Coordinated Universal Time)

@StephenThevar

star

Tue Aug 26 2025 10:08:02 GMT+0000 (Coordinated Universal Time) https://www.newassignmenthelpaus.com/physics-assignment-help

@henryjones0116

star

Tue Aug 26 2025 09:02:01 GMT+0000 (Coordinated Universal Time) https://maticz.com/blockchain-game-development

@carolinemax #maticz #blockchain #game

star

Mon Aug 25 2025 08:00:28 GMT+0000 (Coordinated Universal Time) https://www.wpbeginner.com/beginners-guide/how-to-add-http-security-headers-in-wordpress/#securityheaders-htaccess

@andersdeleuran #php #wordpress #htaccess #security

star

Sun Aug 24 2025 19:54:36 GMT+0000 (Coordinated Universal Time) https://www.pynerds.com/argparse-module-with-examples-turn-python-scripts-to-commandline-applicatio/

@pynerds #python

star

Sun Aug 24 2025 08:41:39 GMT+0000 (Coordinated Universal Time) https://www.patreon.com/posts/312-park-ave-era-136611522

@gina0993

star

Fri Aug 22 2025 22:55:34 GMT+0000 (Coordinated Universal Time) https://apploidstudios.com/

@edwardcoleman #mobileappdevelopment #crossplatformapp development

Save snippets that work with our extensions

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