Snippets Collections
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

omz update

1️⃣ Ver qué paquete es
bash
apt list --upgradable
Esto te mostrará el nombre y la versión nueva disponible.

2️⃣ Actualizarlo
Si quieres actualizar solo ese paquete:

bash
sudo apt install nombre-del-paquete
(reemplaza nombre-del-paquete por el que te mostró el comando anterior)

Si prefieres actualizar todo lo pendiente (aunque sea solo uno):

bash
sudo apt update
sudo apt upgrade
o, para que no te pregunte confirmación:

bash
sudo apt update && sudo apt upgrade -y
💡 Tip extra para Mint/Debian: Si quieres que también se actualicen dependencias que cambian de versión o paquetes que requieren eliminar otros, usa:

bash
sudo apt full-upgrade
1️⃣ Repositorio de pgAdmin4 sin fichero de Publicación
Ese error significa que el repo ya no es válido o no está preparado para tu versión de Linux Mint. Solución: quitarlo o corregirlo.

Para quitarlo:

bash
sudo rm /etc/apt/sources.list.d/pgadmin4.list
sudo apt update
(Si el archivo tiene otro nombre, revisa todos con ls /etc/apt/sources.list.d/ y elimina el que contenga pgadmin)

Si quieres mantenerlo, revisa la documentación oficial de pgAdmin para añadir el repo correcto para tu versión.

2️⃣ Error de GPG con Visual Studio Code (NO_PUBKEY EB3E94ADBE1229CF)
Esto pasa porque falta la clave pública para verificar el repo de Microsoft.

Solución rápida:

bash
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EB3E94ADBE1229CF
o, con el método moderno (recomendado):

bash
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft.gpg > /dev/null
Luego edita el archivo del repo:

bash
sudo nano /etc/apt/sources.list.d/vscode.list
y cambia la línea para que use la clave:

Código
deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main
Guarda, cierra y actualiza:

bash
sudo apt update
sudo apt update
sudo apt install plasma-discover
green on black por Felix Hummel
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
verificar que shell estas usando:
En lugar de mirar $SHELL, prueba:
echo $SHELL
echo $0
ps -p $$ #estos comandos hacen los mismo muestran que shell estas usando

#este comando te permite cambiar de un shell a otro
chsh -s $(which zsh)
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins

Clonar los repositorios

bash
git clone https://github.com/zsh-users/zsh-autosuggestions.git
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path zsh)"
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="powerlevel10k/powerlevel10k"

alias pman='function _pman() { curl -s https://www.php.net/manual/en/function.$1.php | lynx -stdin -dump | less; }; _pman'

#funciones para abrir la carpeta de indicadores
function indicadores() {
  cd /var/www/html/jobran/indicadores/ && ls -lt --color=auto
}

function proyectos() {
  cd /var/www/html/jobran/ && ls -lt --color=auto
}

php-server() {
  local framework=$1
  local port=${2:-8000}
  local ruta=$3

  case "$framework" in
    yii2)
      ruta=${ruta:-backend/web}
      php -S localhost:$port -t "$ruta"
      ;;
    laravel)
      ruta=${ruta:-public}
      php -S localhost:$port -t "$ruta"
      ;;
    *)
      echo "⚠️ Framework no reconocido: '$framework'"
      echo "Usa: yii2 o laravel"
      ;;
  esac
}

#Alias para iniciar el servidor PHP para Yii2
#alias php-s-yii2='php -S localhost:8001 -t "backend/web"'
#alias php-s-laravel='php -S localhost:8001 -t "public"'

plugins=(
  git
  zsh-autosuggestions
  zsh-syntax-highlighting
  sudo
  history-substring-search
  colored-man-pages
  composer
  laravel
  docker
  extract
)


source $ZSH/oh-my-zsh.sh

# Activar globbing avanzado
setopt extendedglob
setopt globdots
setopt nomatch

# Alias Laravel
alias art="php artisan"
alias tinker="php artisan tinker"
alias serve="php artisan serve"
alias migrate="php artisan migrate"
alias seed="php artisan db:seed"
alias fresh="php artisan migrate:fresh --seed"

# Alias Composer
alias cdu="composer dump-autoload"
alias ci="composer install"
alias cu="composer update"

# Alias PostgreSQL
alias psqlc="psql -h localhost -U postgres -W"
alias pgstart="sudo systemctl start postgresql"
alias pgstop="sudo systemctl stop postgresql"
alias pgrestart="sudo systemctl restart postgresql"
alias pgstatus="sudo systemctl status postgresql"
alias psql-iniciar="psql -h localhost -U postgres -W"

# Cargar configuracin de Powerlevel10k
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh


# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

🛠 1. Verificar tu shell actual
En tu terminal:

bash
echo $SHELL
Si ves algo como /bin/bash, estás usando Bash.

📦 2. Instalar Zsh
En Linux:

bash
sudo apt install zsh        # Debian/Ubuntu
sudo dnf install zsh        # Fedora
sudo pacman -S zsh          # Arch
En macOS, Zsh ya viene instalado (desde macOS Catalina es el shell por defecto).

🔄 3. Cambiar tu shell por defecto a Zsh
bash
chsh -s $(which zsh)
Cierra y vuelve a abrir la terminal para que el cambio surta efecto.

🎨 4. Instalar Oh My Zsh
Ejecuta:

bash
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Esto creará un archivo ~/.zshrc con configuración inicial y activará un tema por defecto.

🧩 5. Activar plugins útiles
Edita ~/.zshrc y en la línea:

bash
plugins=(git)
puedes añadir más, por ejemplo:

bash
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
Luego recarga:

bash
source ~/.zshrc
🎭 6. Cambiar el tema
En ~/.zshrc busca:

bash
ZSH_THEME="robbyrussell"
y cámbialo por otro, por ejemplo:

bash
ZSH_THEME="agnoster"
Puedes explorar más de 100 temas incluidos.

📂 7. Migrar tus alias y funciones de Bash
Si tienes alias en ~/.bashrc o ~/.bash_profile, copia esas líneas a ~/.zshrc para no perder tus atajos.

🚀 8. Ajustes extra para sacarle jugo
Globbing avanzado: aprovecha patrones como **/*.md o *(.m-1) para búsquedas rápidas.

Autocompletado inteligente: con plugins como zsh-autosuggestions y zsh-syntax-highlighting.

Historial compartido: activa setopt SHARE_HISTORY en ~/.zshrc para que todas las sesiones compartan historial.

💡 Tip final: Guarda una copia de tu .bashrc antes de migrar, por si quieres volver atrás o recuperar configuraciones.
📌 Globbing en Zsh — Chuleta Rápida
Patrón	Qué hace	Ejemplo
*	Coincide con cualquier cadena (excepto /)	ls *.txt → todos los .txt
?	Coincide con un solo carácter	ls file?.txt → file1.txt, fileA.txt
[abc]	Coincide con uno de los caracteres listados	ls file[12].txt → file1.txt, file2.txt
[a-z]	Coincide con un rango de caracteres	ls file[a-c].txt → filea.txt, fileb.txt
^patrón	Niega el patrón	ls ^*.log → todo menos .log
**	Coincide recursivamente en subdirectorios	ls 
**/*.md → todos los .md en cualquier carpeta
*(.)	Solo archivos regulares	ls *(.)
*(/)	Solo directorios	ls *(/)
*(Lk+100)	Archivos de más de 100 KB	ls *(Lk+100)
*(m-1)	Archivos modificados en el último día	ls *(.m-1)
*(om)	Ordenar por fecha de modificación	ls *(om)
*(oc)	Ordenar por fecha de creación	ls *(oc)
*(On)	Ordenar por nombre	ls *(On)
*(u:usuario:)	Archivos de un usuario específico	ls *(u:jobran:)
💡 Consejos rápidos
Puedes combinar filtros:

zsh
ls **/*.txt(.m-7)   # .txt modificados en los últimos 7 días, en cualquier carpeta
Usa setopt extendedglob en tu ~/.zshrc para habilitar patrones más avanzados.

El globbing de Zsh puede reemplazar muchos usos de find, grep y sort en tareas rápidas.
🛠 Guía rápida: Instalar y usar Oh My Zsh
1️⃣ Instalar Zsh (si no lo tienes)
En Debian/Ubuntu/MX Linux:

bash
sudo apt update && sudo apt install -y zsh git curl
Verifica:

bash
zsh --version
2️⃣ Cambiar tu shell por defecto a Zsh
bash
chsh -s $(which zsh)
Cierra y abre la terminal para que el cambio surta efecto.

3️⃣ Instalar Oh My Zsh
bash
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Esto creará ~/.zshrc con configuración inicial y activará un tema por defecto.

4️⃣ Activar plugins
Edita ~/.zshrc:

bash
nano ~/.zshrc
Busca la línea:

bash
plugins=(git)
y añade más:

bash
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
Guarda y recarga:

bash
source ~/.zshrc
5️⃣ Cambiar el tema
En ~/.zshrc:

bash
ZSH_THEME="agnoster"
O instala Powerlevel10k para un prompt más avanzado:

bash
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
y en ~/.zshrc:

bash
ZSH_THEME="powerlevel10k/powerlevel10k"
6️⃣ Actualizar Oh My Zsh
bash
omz update
💡 Tip: Si vienes de Bash, copia tus alias y funciones de ~/.bashrc a ~/.zshrc para no perderlos.
Item Discount
@PT-1406 or @PT-184 or @PT-1741 or @PT-1742 or @PT-1760 or @PT-1761 or @PT-1740 or @PT-1759 or @PT-1758 or @PT-1745 or @PT-1755 or @PT-1743 or @PT-1757 or @PT-1756 or @PT-2357 or @PT-187 or @PT-186 or @PT-188 or @PT-185 or @PT-189 or @PT-2362 or @PT-2354 or @PT-391 or @PT-257 or @PT-253 or @PT-256 or @PT-254 or @PT-263 or @PT-2497 or @PT-2498 or @PT-2513 or @PT-2514 or @PT-2515 or @PT-2516 or @PT-2517 or @PT-2512 or @PT-2525 or @PT-2526 or @PT-2365 or @PT-2527 or @PT-7648 

Transcation Discount
@PT-10657 or @PT-180 or @PT-1409 or @PT-1410 or @PT-1413 or @PT-1414 or @PT-1415 or @PT-1416 or @PT-1762 or @PT-1417 or @PT-1418 or @PT-1421 or @PT-1747 or @PT-1748 or @PT-182 or @PT-1420 or @PT-1749 or @PT-1751 or @PT-1753 or @PT-1763 or @PT-183 or @PT-179 or @PT-1750 or @PT-1754 or @PT-2361 or @PT-2363 or @PT-2364 or @PT-2358 or @PT-2353 or @PT-1775 

Transfer Out
@PT-1429 or @PT-1425 or @PT-1423 or @PT-1424 or @PT-1405 or @PT-1370 or @PT-1422 or @PT-1404 or @PT-6373 or @PT-6374 or @PT-1411 or @PT-4125 or @PT-4126 or @PT-6369 or @PT-6371 or @PT-6368 or @PT-8633 or @PT-4139 or @PT-10071

Transfer In
@PT-4091 or @PT-9307 or @PT-9306 or @PT-9308 or @PT-9309 or @PT-1843 or @PT-287 

Promotion
@PT-1291 or @PT-524 or @PT-522 or @PT-74 or @PT-382 or @PT-383 or @PT-384 or @PT-77 or @PT-79 or @PT-88 or @PT-89 or @PT-11638 or @PT-9281 or @PT-73 or @PT-75 or @PT-81 or @PT-83 or @PT-85 or @PT-86 or @PT-338 or @PT-78 or @PT-80 or @PT-332 or @PT-6437 or @PT-6454 or @PT-82 or @PT-65 or @PT-392 or @PT-10717 or @PT-10715 or @PT-12604 or @PT-12606 or @PT-12601 or @PT-12603 or @PT-12605 or @PT-10719

Tax
@PT-9974 or @PT-241 or @PT-242 or @PT-1313 or @PT-1312 or @PT-1308 or @PT-1310 or @PT-1311 or @PT-513 or @PT-514 or @PT-515 or @PT-516 or @PT-517 or @PT-1150 or @PT-1292 or @PT-1293 or @PT-1294 or @PT-1295 or @PT-1298 or @PT-1299 

Web Report
@PT-12558 or @PT-12559 or @PT-12560 or @PT-10630 or @PT-10474 or @PT-10631 or @PT-10632 or @PT-6258 or @PT-6259 or @PT-6260 or @PT-7481 or @PT-7580 or @PT-7581 or @PT-7582 or @PT-7608 or @PT-7609 or @PT-7610 or @PT-7611 or @PT-7590 or @PT-7595 or @PT-7598 or @PT-7600 or @PT-7602 or @PT-7603 or @PT-7604 or @PT-7586 or @PT-7587 or @PT-7588 or @PT-7573 or @PT-7576 or @PT-7577 or @PT-7578 or @PT-7584 or @PT-7583 

Display Report
@PT-1188 or @PT-1189 or @PT-1190 or @PT-1191 or @PT-1192 or @PT-1193 or @PT-1194 or @PT-1195 or @PT-1196 or @PT-1197 or @PT-1198 or @PT-1199 or @PT-1200 or @PT-1201 or @PT-1202 or @PT-1203 or @PT-1204 or @PT-1205 or @PT-1206 or @PT-1207 or @PT-1208 or @PT-1209 or @PT-1210 or @PT-1211 or @PT-1212 or @PT-1213 or @PT-1214 or @PT-1215 or @PT-1216 or @PT-1217 or @PT-1218 or @PT-1219 or @PT-1220 or @PT-1221 or @PT-1222 or @PT-1223 or @PT-1224 or @PT-1225 or @PT-1226 or @PT-1227 or @PT-1228 or @PT-1229 or @PT-1230 or @PT-1231 or @PT-1232 or @PT-1233 or @PT-1234 or @PT-1235

Gift
@PT-1184 or @PT-1 or @PT-319 or @PT-5 or @PT-1185 or @PT-63 or @PT-1186 or @PT-1187 or @PT-3 or @PT-4 or @PT-512 or @PT-807 or @PT-1811 or @PT-10449 or @PT-9950 or @PT-321 or @PT-1285 or @PT-10844 or @PT-10499 or @PT-6 or @PT-331 or @PT-12133 or @PT-330 or @PT-8 or @PT-11560 or @PT-11595 

Returns
@PT-344 or @PT-197 or @PT-1060 or @PT-196 or @PT-347 or @PT-346 or @PT-909 or @PT-6834 or @PT-6837 or @PT-6836 or @PT-938 or @PT-8661 or @PT-908 or @PT-12003 or @PT-3500 or  @PT-345 or @PT-333 or @PT-6423 or @PT-976 or @PT-290 or @PT-350 or @PT-367 or @PT-978 or @PT-997 or @PT-977 or @PT-998 or @PT-6838 or @PT-9870 or @PT-10789 or @PT-3497 or @PT-14221 or @PT-4723 or @PT-9688 or @PT-9996 or @PT-16773 or @PT-15283 or @PT-11628 or @PT-6839 or @PT-194 or @PT-10843 or @PT-12177

CRM
@PT-212 or @PT-1360 or @PT-8565 or @PT-8564 or @PT-8563 or @PT-8561 or @PT-208 or @PT-209 or @PT-9937 or @PT-9938 or @PT-297 or @PT-296 or @PT-294 or @PT-232 or @PT-223 or @PT-1365 or @PT-233 or @PT-234 or @PT-236 or @PT-238 or @PT-306 or @PT-307 or @PT-1362 or @PT-229 or @PT-10839 or @PT-467 or @PT-215 or @PT-1363 or @PT-462 or @PT-222 or @PT-465 or @PT-214 or @PT-292 or @PT-293 or @PT-295 or @PT-299 or @PT-291 or @PT-288 or @PT-3154 or @PT-216 or @PT-9928 or @PT-9941 or @PT-298 or @PT-240 or @PT-459 or @PT-1156 or @PT-13490 or @PT-13488  or @PT-13774

Safe Cash Management & Adjust Stock
@PT-161 or @PT-157 or @PT-9981 or @PT-650 or @PT-649 or @PT-651 or @PT-156 or @PT-160 or @PT-652 or @PT-653 or @PT-159 or @PT-158 

Terminal
@PT-594 or @PT-146 or @PT-139 or @PT-151 or @PT-150 or @PT-149 or @PT-152 or @PT-137 or @PT-153 or @PT-144 or @PT-586 or @PT-142 or @PT-140 or @PT-154 or @PT-155 or @PT-138

Transfer Out History, Application log, Top Menu Buttons, Log on to Locations, Cancel from Search Quote screen, Create a Quote using the Sale Menu 'Quote' button, Search quote which will not return any results, Void Quote, Reprint Archive, Item Exchange
@PT-11823 or @PT-5463 or @PT-1767 or @PT-1768 or @PT-1769 or @PT-1085 or @PT-2019 or @PT-1947 or @PT-2032 or @PT-2028 or @PT-12134 or @PT-1317 or @PT-1318 or 

Print Report
@PT-1236 or @PT-1237 or @PT-1238 or @PT-1239 or @PT-1240 or @PT-1241 or @PT-1242 or @PT-1243 or @PT-1244 or @PT-1245 or @PT-1246 or @PT-1247 or @PT-1248 or @PT-1249 or @PT-1250 or @PT-1251 or @PT-1252 or @PT-1253 or @PT-1254 or @PT-1255 or @PT-1256 or @PT-1257 or @PT-1258 or @PT-1259 or @PT-1260 or @PT-1261 or @PT-1262 or @PT-1263 or @PT-1264 or @PT-1265 or @PT-1266 or @PT-1267 or @PT-1276 or @PT-1277 or @PT-1278 or @PT-1279 or @PT-1280 or @PT-1281 or @PT-1282 or @PT-1283 or @PT-1268 or @PT-1269 or @PT-1270 or @PT-1271 or @PT-1272 or @PT-1273 or @PT-1274 or @PT-1275

Rich Product
@PT-460 or @PT-269 or @PT-8130 or @PT-267 or @PT-10493 or @PT-10494 or @PT-10495 or @PT-266 or @PT-1158 or @PT-198 or @PT-10492 or @PT-247 or @PT-1604 or @PT-268 or @PT-1606 or @PT-1605 or @PT-310 or @PT-311 or @PT-312 or @PT-313 or @PT-3151 or @PT-7756 or @PT-7757 or @PT-10850 or @PT-10894 or @PT-6529 or @PT-6544 or @PT-6545 or @PT-15820 or @PT-274 

CustomerDepositAccountEnquiry, Customer Deposit Account Payment, Department Sale, Employee Sale
@PT-2342 or @PT-2343 or @PT-2345 or @PT-2347 or @PT-2350 or @PT-2351 or @PT-9201 or @PT-9212 or @PT-7018 or @PT-252 or @PT-251 or @PT-1154 or @PT-1155 or @PT-264 or @PT-32 or @PT-519 or @PT-518 or @PT-10864 or @PT-10867

Item Sale
@PT-202 or @PT-1371 or @PT-378 or @PT-337 or @PT-199 or @PT-201 or @PT-248 or @PT-13840 or @PT-246 or @PT-200 or @PT-1920 or @PT-1943 or @PT-324 or @PT-328 or @PT-327 or @PT-8719

Void
@PT-1151 or @PT-1944 or @PT-205 or @PT-204 or @PT-206 or @PT-390 or @PT-176 or @PT-277 or @PT-10709 or @PT-1152 or @PT-177 or @PT-10726

Discount Overlap Restrictions
@PT-2574 or @PT-2618 or @PT-2528 or @PT-2616 or @PT-2575 or @PT-2619 or @PT-2531 or @PT-2617 or @PT-2371 or @PT-2612 or @PT-2568 or @PT-2614 or @PT-2373 or @PT-2613 or @PT-2569 or @PT-2615 or @PT-2576 or @PT-2620 or @PT-2529 or @PT-2577 or @PT-2621 or @PT-2532 or @PT-2578 or @PT-2624 or @PT-2530 or @PT-2622 or @PT-2533 or @PT-2579 or @PT-2625

Price Override, Activate Prices
@PT-273 or @PT-271 or @PT-272 or @PT-278 or @PT-279 or @PT-190 or @PT-6965 or @PT-529 or @PT-530 or @PT-531 or @PT-532 or @PT-526 or @PT-528

Loyalty
@PT-342 or @PT-349 or @PT-339 or @PT-351 or @PT-340 or @PT-226 or @PT-227 or @PT-1419 or @PT-228 or @PT-1884 or @PT-1886 or @PT-11911 or @PT-11912 or @PT-11913 or @PT-10485 

Quantity Sale
@PT-12258 or @PT-12264 or @PT-12261 or @PT-12265 or @PT-12262 or @PT-12263 or @PT-12266 or @PT-6514 or @PT-825 or @PT-250 or @PT-162 or @PT-2585 or @PT-2586 or @PT-2587 or @PT-2588 or @PT-2875 or @PT-2876

Sale with Customer Capture, Sale with Salesperson Capture, Tender With Foreign Currency, Transaction search, Tender with Card - Key Entry, Tender With Foreign Currency, Tender Transactions with User tender limits
@PT-1061 or @PT-1149 or @PT-527 or @PT-1019 or @PT-8658 or @PT-8660 or @PT-8659 or @PT-123 or @PT-388 or @PT-357 or @PT-380 or @PT-1859 or @PT-1861 or @PT-1860

Sign on/off
@PT-885 or @PT-1352 or @PT-1353 or @PT-1354 or @PT-1355 or @PT-1820 or @PT-1819 or @PT-3180 or @PT-9287 or @PT-9289 or @PT-9291 or @PT-5514

Automatic Recall Transaction by User, Store/Recall Transaction by User, Store/Recall Transaction, Transaction Stored On SignOut, Reason Configuration With Witness Capturing
@PT-386 or @PT-387 or @PT-168 or @PT-7866 or @PT-169 or @PT-170 or @PT-1153 or @PT-1812 or @PT-1813 or @PT-12120 or @PT-12121 or @PT-12122 or @PT-12123 or @PT-1063 or @PT-1064 or @PT-1068 or @PT-1069 or @PT-1070 or @PT-1075 or @PT-1078 or @PT-1083 or @PT-1084 or @PT-1076 or @PT-1077

Load the Employee Maintenance screen in the pos application, Load the User Maintenance screen in the pos application
@PT-12504 or @PT-5603 or @PT-5604 or @PT-5605 or @PT-5606 or @PT-5607 or @PT-5608 or @PT-538 or @PT-817 or @PT-820 or @PT-818 or @PT-6974 or @PT-6975

Transaction Discount
@PT-262 or @PT-275 or @PT-276 or @PT-265 or @PT-2496 or @PT-2524 or @PT-2495 or @PT-2518 or @PT-2521 or @PT-2522 or @PT-2523 or @PT-2566 or @PT-255 or @PT-258 or @PT-259 or @PT-260 or @PT-261

Transfer Out Container
@PT-9326 or @PT-9327 or @PT-9328 or @PT-9329

Product with selling options, Tender with Cheque, Stock Adjustments Page
@PT-10758 or @PT-2722 or @PT-2723 or @PT-2724 or @PT-2725 or @PT-1301 or @PT-1302 or @PT-1303 or @PT-1300 or  or @PT-12492 or @PT-12493 or @PT-12494 or @PT-12495 or @PT-12496

-------------------------------------------------
@PT-6370 or @PT-1071 or @PT-12172 or @PT-14725 or @PT-1164 or @PT-12260 or @PT-5498 or @PT-5470 or @PT-5472 or @PT-9933 or @PT-9310 or @PT-533 or @PT-4461 or @PT-4485 or @PT-927 or @PT-929 or @PT-803 or @PT-933 or @PT-806 or @PT-1774 or @PT-9213 or @PT-9215 or @PT-9216 or @PT-9217 or @PT-521

@PT-1765 or @PT-8871 or @PT-3506 or @PT-10704 or  or @PT-10727 or @PT-10731 or @PT-11442 or @PT-8696 or @PT-320 or @PT-325 or @PT-5468 or @PT-11940 or @PT-13504 or @PT-12491 or @PT-14164 or @PT-11627 or @PT-1082 or @PT-1080 or @PT-1081 or @PT-4462 or @PT-10602 or @PT-16727 or @PT-11565 or @PT-145 or @PT-5527 or @PT-1074  or @PT-16116 or @PT-16153 or @PT-5458 or @PT-5459 or @PT-5460 or @PT-5461 or @PT-17038

@PT-10601 or @PT-10741 or @PT-10742 or @PT-11533 or @PT-11955 or @PT-12868 or @PT-12885 or @PT-13458 or @PT-13549 or @PT-14165 or @PT-14172 or @PT-14422 or @PT-14464 or @PT-14484 or @PT-16566 or @PT-16643 or @PT-16644 or @PT-16645 or @PT-16646 or @PT-16683 or @PT-16717 or @PT-17478 or @PT-17655 or @PT-18218 or @PT-18667 or @PT-19509 or @PT-19999 or @PT-20000 or @PT-20001 or @PT-21957 or @PT-22038 or @PT-323 or @PT-5465 or @PT-5467 or @PT-6999 or @PT-7000 or @PT-8632 or @PT-887 or @PT-916 or @PT-9744 or @PT-9934


El comando para copiar una carpeta (directorio) de un lugar a otro de manera rápida desde el terminal en Linux es usar cp con la opción -r (recursiva), ya que así se copian todos los archivos y subdirectorios dentro de la carpeta.
La sintaxis básica es:

cp -r /ruta/de/carpeta_origen /ruta/de/carpeta_destino

Esto copiará la carpeta y su contenido mostrando qué se está copiando. Es la forma rápida y común de copiar carpetas en el terminal Linux. La opción -r es obligatoria para copiar directorios.

cp -rv mi_carpeta ~/Escritorio/

Para copiar carpetas de manera más rápida desde el terminal, el comando básico sigue siendo cp -r, pero hay algunas estrategias y alternativas para hacer la copia más eficiente dependiendo del caso:

Usar opciones como -u con cp para copiar solo archivos nuevos o modificados, evitando copiar todo nuevamente y ahorrando tiempo:

text
cp -ru carpeta_origen carpeta_destino
Cómo funciona
Rsync solo copia los archivos que han cambiado o que no están en el destino, lo que hace que las transferencias sean más rápidas y menos costosas en recursos que otros comandos como cp.

Puede copiar directorios completos, preservar permisos, dueños, grupos y enlaces simbólicos.

También puede reanudar transferencias interrumpidas, lo que es útil para conexiones inestables.

Es muy usado para hacer copias de seguridad o sincronizar directorios entre servidores.

Sintaxis básica:
text
rsync [opciones] origen destino
origen y destino pueden ser rutas locales o remotas (usando SSH).

Ejemplo local:

text
rsync -av --progress carpeta_origen/ carpeta_destino/
Donde:

-a es modo archivo (preserva permisos, enlaces, etc.),

-v para modo verbose (muestra el progreso),

--progress muestra progreso detallado.

El comando

tar cf - carpeta_origen | (cd carpeta_destino && tar xf - )
se utiliza para copiar el contenido de un directorio a otro, mientras se crea y extrae un archivo tar "en vuelo", sin dejar un archivo intermedio en el disco.

Explicación paso a paso:
tar cf - carpeta_origen:

tar es la herramienta Linux para agrupar archivos en un archivo llamado "tarball".

c significa "crear" un archivo tar.

f - indica que el archivo tar resultante se enviará a la salida estándar (representado por -), en lugar de a un archivo en disco.

carpeta_origen es el directorio que se empaqueta.

|

Es un pipe que pasa la salida del comando anterior como entrada al siguiente comando.

(cd carpeta_destino && tar xf - ):

cd carpeta_destino cambia al directorio destino donde queremos extraer los archivos.

&& indica que el siguiente comando se ejecuta solo si el anterior fue exitoso.

tar xf - extrae (x) el contenido del archivo tar que llega por la entrada estándar (f -).
Terminal › Integrated › Suggest: Enabled
activar el chack

code ~/.bashrc
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)"


code ~/.zshrc
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path zsh)"
#!/usr/bin/env python3
# vuln_summarizer.py
# AI‑Powered Vulnerability Summarizer using Google Gemini 2.5 Flash


import os
import sys
import json
import requests
from datetime import datetime
import google.generativeai as genai
# ─── Configuration ────────────────────────────────────────────────────────────
NVD_API = "https://services.nvd.nist.gov/rest/json/cves/2.0"
CVE_COUNT = 5
MODEL_NAME = "gemini-2.5-flash"
OUTPUT_MD = "report.md"
OUTPUT_JSONL = "report.jsonl"
def fetch_latest_cves(count=CVE_COUNT):
    params = {"startIndex": 0, "resultsPerPage": count}
    resp = requests.get(NVD_API, params=params)
    resp.raise_for_status()
    return resp.json().get("vulnerabilities", [])
def configure_gemini(api_key: str):
    genai.configure(api_key=api_key)
    return genai.GenerativeModel(model_name=MODEL_NAME)
def generate_summary(model, cve_id: str, description: str):
    prompt = f"""
You are a cybersecurity expert. Given the following CVE:
ID: {cve_id}
Description: "{description}"
Please provide:
1. A one‑sentence technical summary.
2. Who or what is affected? (e.g., software, users, services)
3. Recommended remediation steps in bullet points.
Format your response as Markdown with headings.
"""
    return model.generate_content(prompt).text.strip()
def main():
    api_key = os.getenv("GOOGLE_API_KEY") or "YOUR_API_KEY"
    if not api_key:
        print("Error: set your GOOGLE_API_KEY", file=sys.stderr)
        sys.exit(1)
    print(f"[{datetime.now()}] Fetching latest {CVE_COUNT} CVEs...")
    vulns = fetch_latest_cves(CVE_COUNT)
    print(f"[{datetime.now()}] Configuring Gemini model '{MODEL_NAME}'...")
    model = configure_gemini(api_key)
    md_lines = ["# AI‑Powered Vulnerability Report",
                f"_Generated: {datetime.now()}_\n"]
    jsonl_f = open(OUTPUT_JSONL, "w", encoding="utf-8")
    for entry in vulns:
        cve = entry.get("cve", {})
        cve_id = cve.get("id")
        description = next((d["value"] for d in cve.get("descriptions", [])
                            if d["lang"] == "en"), "")
        if not cve_id or not description:
            continue
        print(f"[{datetime.now()}] Summarizing {cve_id}...")
        summary_md = generate_summary(model, cve_id, description)
        md_lines.append(f"## {cve_id}\n")
        md_lines.append(f"**Original description:** {description}\n\n")
        md_lines.append(summary_md + "\n")
        record = {"cve_id": cve_id,
                  "description": description,
                  "summary": summary_md}
        jsonl_f.write(json.dumps(record, ensure_ascii=False) + "\n")
    jsonl_f.close()
    with open(OUTPUT_MD, "w", encoding="utf-8") as md_f:
        md_f.write("\n".join(md_lines))
    print(f"\nDone! Report written to:\n • {OUTPUT_MD}\n • {OUTPUT_JSONL}")
if __name__ == "__main__":
    main()
{
	"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 hope you all had a fab weekend! 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 Donuts & cookies \n\n :coffee: *Weekly Café Special*: Salted Caramel Latte"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": " Wednesday, 10th September :calendar-date-10:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " \n\n:lunch: Join us for a Carvery lunch From *12pm* in the Wominjeka breakout space! Menu in the:thread: "
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": "Thursday, 11th September :calendar-date-11:",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":breakfast: *Breakfast*: Join us for our Breakfast Buffet from *8:30am - 10:30am* in the Wominjeka Breakout Space.*"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": " 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:"
			}
		}
	]
}
I wanted to introduce a service I’ve been working with recently – Proxy4Free. They specialize in providing residential proxies, which are sourced from real residential devices rather than datacenters. This makes them far more reliable for tasks that require anonymity and low detection rates.

Here are some of the common use cases:

Web Scraping & Data Collection – Gather large amounts of data from websites without constant IP bans.

SEO Monitoring – Track search engine rankings, competitors, and keyword performance across different locations.

Ad Verification – Verify online advertisements, ensure correct placement, and detect fraudulent activities using geo-targeted IPs.

Automation & Testing – Perfect for QA teams and automation scripts that need stable and clean IP addresses.

What makes Proxy4Free stand out is their competitive pricing, flexible plans, and unlimited scaling options. Whether you are an individual freelancer, a digital agency, or an enterprise, there are packages that can meet your needs. They also offer trial options so you can test their network before committing to a bigger plan.

If you are looking for reliable and secure residential proxies, I recommend checking them out at: proxy4free.com

Visit proxy4free.com to learn more and start your proxy journey today.

Get started here: https://proxy4free.com
Contact us anytime: support@proxy4free.com​
antes de todo instalar python3

Pasos principales:

Instalar la llave pública del repositorio:

text
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add -
Añadir el repositorio oficial a las fuentes:

text
sudo sh -c '. /etc/upstream-release/lsb-release && echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && sudo apt update'
Instalar pgAdmin desktop:

text
sudo apt install pgadmin4-desktop
deb http://packages.linuxmint.com elsie main upstream import backport #id:linuxmint_main

deb https://deb.debian.org/debian bullseye main contrib non-free
deb https://deb.debian.org/debian bullseye-updates main contrib non-free
deb http://security.debian.org bullseye-security main contrib non-free

deb https://deb.debian.org/debian bullseye-backports main contrib non-free
sudo service apache2 restart
sudo apt-get remove composer
Si quieres eliminar también archivos de configuración:

bash
sudo apt-get purge composer
Y para remover dependencias que ya no se necesiten:

bash
sudo apt-get autoremove
Desinstalar Composer instalado manualmente (por ejemplo con curl)
Si instalaste Composer descargando el archivo composer.phar y moviéndolo a /usr/local/bin/composer o similar, simplemente elimina el archivo:

bash
sudo rm /usr/local/bin/composer
O bien, si tienes el archivo en otro lugar, elimina esa ubicación.

Verifica dónde está instalado Composer con:
bash
which composer
bash-it enable alias general
bash-it enable alias git
bash-it enable alias apt
🚀 Para qué sirven estos comandos en bash-it:
📋 Resumen rápido:
Activan conjuntos de aliases predefinidos que te ahorran tiempo y comandos largos.

🎯 1. bash-it enable alias general
Aliases generales para uso diario

Ejemplos de aliases que activa:
bash
# Navegación
..="cd .."                          # Subir un directorio
...="cd ../.."                      # Subir dos directorios
....="cd ../../.."                  # Subir tres directorios

# Listados mejorados
ll="ls -alF"                        # Listado detallado
la="ls -A"                          # Listar incluyendo ocultos
l="ls -CF"                          # Listado compacto

# Seguridad
rm="rm -i"                          # rm con confirmación
cp="cp -i"                          # cp con confirmación  
mv="mv -i"                          # mv con confirmación

# Utilidades
c="clear"                           # Limpiar pantalla
h="history"                         # Ver historial
Uso práctico:
bash
# En lugar de:
ls -alF
cd ../../..

# Puedes usar:
ll
...
🎯 2. bash-it enable alias git
Aliases para Git - ¡Ahorra mucho tiempo!

Ejemplos de aliases que activa:
bash
# Estados y commits
gst="git status"                    # Estado rápido
gc="git commit -v"                  # Commit con verbose
gca="git commit -v -a"              # Commit de todos los cambios

# Ramas
gco="git checkout"                  # Cambiar de rama
gb="git branch"                     # Ver ramas

# Logs
gl="git pull"                       # Pull rápido
gp="git push"                       # Push rápido
glog="git log --oneline --graph"    # Log bonito

# Diferencias
gd="git diff"                       # Diff simple
gdc="git diff --cached"             # Diff staged
Uso práctico:
bash
# En lugar de:
git status
git commit -m "mensaje"
git push origin main

# Puedes usar:
gst
gc -m "mensaje"
gp origin main
🎯 3. bash-it enable alias apt
Aliases para gestión de paquetes APT (Debian/Ubuntu)

Ejemplos de aliases que activa:
bash
# Actualizaciones
aptup="sudo apt update"             # Update rápido
aptug="sudo apt upgrade"            # Upgrade rápido
aptupg="sudo apt update && sudo apt upgrade"  # Update + upgrade

# Instalación
aptin="sudo apt install"            # Instalar rápido
aptrm="sudo apt remove"             # Desinstalar rápido

# Limpieza
aptarm="sudo apt autoremove"        # Autoremove rápido
aptac="sudo apt autoclean"          # Autoclean rápido

# Búsqueda
apts="apt search"                   # Buscar paquetes
aptsh="apt show"                    # Mostrar info paquete
Uso práctico:
bash
# En lugar de:
sudo apt update
sudo apt install python3
sudo apt autoremove

# Puedes usar:
aptup
aptin python3
aptarm
💡 Beneficios de usar estos aliases:
✅ Ahorro de tiempo:
Menos tecleo → Comandos más cortos

Menos errores → Comandos predefinidos

✅ Productividad:
Flujo más rápido → Memoriza aliases en lugar de opciones

Consistencia → Mismos comandos siempre

✅ Para desarrolladores:
Git más ágil → Comandos de 2-3 letras

Menos contexto switching → Permanece en flujo

🚀 Cómo empezar a usarlos:
Paso 1: Activar los aliases
bash
bash-it enable alias general
bash-it enable alias git  
bash-it enable alias apt
bash-it reload
Paso 2: Ver qué aliases tienes disponibles
bash
# Ver todos los aliases activos
alias

# Buscar aliases específicos
alias | grep git
Paso 3: Practicar con los más útiles
bash
# Prueba estos primero:
ll      # ls detallado
gst     # git status
aptup   # actualizar sistema
..      # subir directorio
⚠️ Consejos importantes:
Para ver todos los aliases de un grupo:
bash
# Ver qué incluye cada grupo
bash-it show alias general
bash-it show alias git
bash-it show alias apt
Si algún alias no te gusta:
bash
# Puedes deshabilitar el grupo completo
bash-it disable alias apt

# O editar manualmente en:
~/.bash_it/aliases/
bash-it show themes
bash-it enable theme <tu-tema-favorito>
# Deshabilitar todo temporalmente
bash-it disable all

# Verificar problemas
bash-it doctor

# Reiniciar configuración
bash-it restart
# Temas
bash-it enable theme powerline

# Plugins
bash-it enable plugin git
bash-it enable plugin history
bash-it enable plugin alias
bash-it enable plugin completion

# Aliases
bash-it enable alias general
bash-it enable alias git

# Recargar
bash-it reload
# Ver qué tienes activado
bash-it show aliases
bash-it show plugins
bash-it show completions
# 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();
    // }
}
star

Wed Sep 10 2025 16:31:53 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Wed Sep 10 2025 15:23:23 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Wed Sep 10 2025 15:20:17 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Wed Sep 10 2025 15:03:31 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Wed Sep 10 2025 07:31:16 GMT+0000 (Coordinated Universal Time) https://medium.com/illumination/why-entrepreneurs-choose-okx-clone-script-9dbb7bd40d79

@monroealex17

star

Tue Sep 09 2025 16:31:43 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 15:13:40 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 15:10:39 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 15:09:13 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 15:08:06 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 15:07:41 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 15:00:40 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 14:58:54 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 14:24:42 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 14:22:47 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 13:11:34 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 13:08:28 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 13:07:25 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Tue Sep 09 2025 11:05:23 GMT+0000 (Coordinated Universal Time)

@Preminda

star

Mon Sep 08 2025 19:41:57 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Mon Sep 08 2025 19:39:36 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Mon Sep 08 2025 19:32:14 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Sun Sep 07 2025 11:29:22 GMT+0000 (Coordinated Universal Time) https://medium.com/@deepml1818/why-automate-cve-reporting-with-ai-e83b685dff7d

@rhce143

star

Sun Sep 07 2025 03:14:01 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Sat Sep 06 2025 07:28:42 GMT+0000 (Coordinated Universal Time)

@proxy4free

star

Fri Sep 05 2025 15:17:55 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Fri Sep 05 2025 10:00:23 GMT+0000 (Coordinated Universal Time) https://www.jewelpin.com/silver-jewelry

@anziggymaximili #jewelry #silverjewelry #jewelrymanufacturer #business #fashion

star

Fri Sep 05 2025 07:39:59 GMT+0000 (Coordinated Universal Time) https://maticz.com/how-to-create-a-crypto-exchange

@carolinemax

star

Thu Sep 04 2025 19:09:18 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Thu Sep 04 2025 18:08:53 GMT+0000 (Coordinated Universal Time) https://cryptiecraft.com/how-to-create-cryptocurrency-exchange-platform/

@evacollins #buildacryptocurrencyexchange #cryptoexchange

star

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

@jrg_300i

star

Thu Sep 04 2025 17:38:37 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Thu Sep 04 2025 17:04:56 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Thu Sep 04 2025 14:16:44 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

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

@jrg_300i

star

Thu Sep 04 2025 14:10:49 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Thu Sep 04 2025 14:10:23 GMT+0000 (Coordinated Universal Time)

@jrg_300i

star

Thu Sep 04 2025 14:09:43 GMT+0000 (Coordinated Universal Time)

@jrg_300i

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

Save snippets that work with our extensions

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