Docker

ejecutar comandos en modo root linux

purga la ventana acoplable:
sudo apt-get purge docker.io

instalar/reinstalar:
sudo apt-get install docker.io

2.-Configurar tu usuario para que pertenezca al grupo "docker", que tiene acceso al socket de Docker. Ejecuta estos comandos: 
-Crea el grupo docker si no existe:
sudo groupadd docker
 
-Agrega tu usuario al grupo docker (reemplaza ${USER} por tu nombre de usuario o mantén la variable si estás en una terminal):
sudo usermod -aG docker ${USER}
 
-Para que los cambios tengan efecto, cierra la sesión de tu usuario y vuelve a iniciarla, o ejecuta:
su - ${USER}
 

solucionar problemas:
systemctl unmask docker.service
systemctl unmask docker.socket


iniciar:
systemctl start docker.service
sudo systemctl start docker.socket
sudo service docker start

detener:
systemctl stop docker.service
sudo systemctl stop docker.socket
sudo service docker stop

PROBAR:
$ sudo docker run hello-world

Reiniciar:
sudo service docker restart

parar:
si el zócalo activa la ventana acoplable use:
sudo systemctl stop docker.socket


sudo service docker stop

comprobando el estado:
sudo service docker status

ver imagenes
docker images

si tienes problema de root puedes hacer esto: sudo usermod -aG docker $USER
para agregar tu usuario al grupo "docker", deberías poder ejecutar comandos de Docker sin necesidad de utilizar sudo. Intenta ejecutar el comando docker images -a nuevamente y debería funcionar sin problemas.

Espero que esto solucione tu problema con Docker en Ubuntu. Si tienes alguna otra pregunta, no dudes en preguntar.

OTROS COMANDOS QUE NO TIENEN NADA QUE VER CON LA INSTALACION:

docker context ls 
docker context use default 

service docker start
export DOCKER_HOST="tcp://0.0.0.0:2375"

detener imagenes docker:
#un solo comando que eliminará cualquier recurso (imágenes, contenedores, volúmenes y redes) que estén pendientes (no asociados con un contenedor):

docker system prune

#Para eliminar adicionalmente los contenedores detenidos y todas las imágenes no utilizadas (no solo aquellas pendientes), añada el indicador -a al comando:

docker system prune -a

eliminar imagen por nombre:

#Utilice el comando docker images con el indicador -a para localizar el ID de las imágenes que quiere eliminar. Esto le mostrará todas las imágenes, incluidas las capas de imagen intermedias. Cuando localice las imágenes que desee eliminar, puede pasar su ID o etiqueta a docker rmi es importante ejecutar el comando con permisos root o sudo:

sudo docker images -a


docker rmi Image Image

Eliminar imágenes pendientes:

Las imágenes de Docker constan de varias capas. Las imágenes pendientes son capas que no tienen relación con imágenes etiquetadas. Ya no sirven para nada y ocupan espacio en el disco. Se pueden ubicar añadiendo el indicador de filtro -f junto con el valor dangling=true al comando docker images. Si está seguro de que quiere eliminarlas, puede utilizar el comando docker images purge:

enumerar:

docker images -f dangling=true

eliminar:

docker images purge

Eliminar imágenes según un patrón:

mas comandos en este link:

https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes-es





nombre del archivo: Dockerfile

contenido del archivo:

FROM php:7.4-apache

COPY /src /var/www/html

EXPOSE 80
una imagen es el empaquetador que contiene las dependencias el codigo y es lo que se comparte

un container son capas tras capas de imagenes

existen tres tipos de virtualizaciones en las VM virtualmachine
1.- para virtualizacion
en la paravirtualizacion intenta entregar la mayor cantidad de acceso del sistema anfitrion de su hardware a los cientes en el contenedor

2.- virtualizacion parcial
donde algunos componentes del hardware se virtualizan para en sistema operativo cliente

3.- virtualizacion completa:
donde absolutamente todos los componentes o hardware que esta utilizando el sistema operativo cliente son virtualizados de esta manera los sistemas operativos cliente no acceden en los absoluto al hardware

para todos los casos anteriores docker va a ser absolutamente superior y va a utilizar el kernel del sistema opetativo anfitrion y esto se traduce en rendimiento, los contenedores de docker parten casi que instantaneamente, obteniendo un rendimiento muy superior a todas las alternativas mencionadas anteriormente fin de la teoria


docker desktop es una maquina virtual se encuentra optimizada
corre linux
ejecuta containers
permite acceder al sistema de archivos y tambien a la red(interna y externa)

docker desktop no es una unica herramienta viene con otras herramientas que nos sirven para trabajar con nuestras imagenes y tambien con nuestros containers dentro de estas herramientes tenemos 

docker compose, docker cli ademas de otras herramientas

puede correr de manera nativa en windows con la herramienta WSL2(windows subsystem for linux)


existe una alternativa de instalacion para windows,linux y mac

para windows una sola opcion solamente es descargarlo y presionar siguiente siguiente siguente y listo

para mac existen dos alternatinas pulsar la de la derecha en la pagina web de docker

para linux docker ya tiene paquetes de instalacion pre compilados dependiendo de la version de linux que estes utilizando utiliza la alternativa que mas te funcione

que es dockerHUB: es un repositorio de imagenes o contenedores disponibles para comenzar a trabajar oficiales para utilizar

proceso para instalarlo
* docker images : devuelve un listado completo de todas las imagenes que hallamos descargado en nuestra maquina
donde repositorio te muestra el nombre de la imagen que se halla descargado, cada repositorio puede tener una o mas etiquetas con la version de la imagen

para descargar una imagen tenemos dos alternativas con el siguiente comando
1.-descargar la version que nosotros queremos
2.- no especificar nada esto va a descargar la ultima version de la imagen que queramos descargar
ejemplo:
* docker pull node

este comando te descargara cada una de las capas que componen la imagen de manera que si tenemos que descargar otra imagen y sus capas ya han sido descargadas por otro imagen las capas ya descargadas anteriormente ya no se volveran a descargar de esta manera de aprovecha espacio y tambien las distintas imagenes para optimizar un poco mas el espacio que estas van a utilizar en el disco duro

para descargar una version especifica de una imagen
* docker pull node:18

la imagen id es la misma que las otras versiones relativamente similares lo que cambia es la etiqueta de la version

para descargar la imagende mysql 
en mac se debe colocar 
* docker pull --platform linux/x86_64 mysql

normal es 

* docker pull mysql

tambien podemos indicar una version

* docker pull mysql:numeroversion

para eliminar una imagen en ejecucion el comando es

* docker image rm nombredelaimagen

la imagen de docker pull no necesita tantas configuraciones

Despues de descargar una imagen se procede a crear un contenedor

* docker create mongo (forma corta)

* docker container create mongo (forma larga) 

nos devuelve un id del contenedor (este id nos sirve para crear un contenedor)
el comando para ejecutar un contenedor es:

* docker start idContenedor (donde idcontenedor es el codigo id largo del contenedor) esto nos devuelve el id del contenedor nuevamente

* docker ps : este comando es como docker iamges pero se usa para ver los contenedores creados, cuando se crea un contenedor se le agrega un nombre de manera arbitraria al contenedor y ese nombre se puede usar en lugar del idcortocontenedor para eliminar el contenedor

* docker ps -a para ver todos los contenedores incluso los que no se estan ejecutando

para detener el contenedor se debe usar el comando

* docker stop idcortocontenedor

para asignar un nombre a un contenedor:

* docker create --name nombreContenedor esto nos devuelve el idlargo del contenedor indicando que ya se ha creado el contenedor

y como ya le hemos asignado un nombre al contenedor podemos iniciarlo con:

* Docker start nombreContenedorAsignado

para poder guardar datos dentro de un contenedor se debe mapear el puerto local al puerto del contenedor:

* docker create -p27017:27017 --name nombreContenedor nombreImagenBase donde lo que esta antes del : es el puerto de la maquina nuestra la maquina local y lo que esta despues del : es el puerto interno del contenedor, siempre asignale un puerto a cada contenedor creado por que si dejas que docker asigne un puerto los va a asignar por encima del puerto 50mil

con el comando 
docker logs nombreContenedor  puedes ver todos los logs que este nos muestra y tambien puedes verlo con

* docker logs --follow nombreContenedor la diferencia es que este se queda escuchando y mostrando los logs en tiempo real

el comando docker run hace tres cosas 
1.-descarga la imagen
2.-crea el contenedor
3.-inicia el contenedor

* ejemplo docker run mongo
docker run mongo

los siguientes dos comandos devulven el id del contenedor creado
docker run -d mongo este nos asigna un nombre arbitrariamente por docker
docker run --name nombreContenedor -p27017:27017 -d imagenbase este comando nos permite crear un contenedor mas personalizado

luego para ver el contenedor usa el comando 
* docker ps

configuracion del archivo dockerfile
tomar una aplicacion de docker un meterla dentro de un container
el archivo dockerfile no puede tener otro nombre se tiene que llamar dockerfile, este archivo se utiliza para que nosotros podamos construir nuestros containers, aqui nosotros vamos a escribir las instrucciones que necesita nuestro contenedor para poder crearse,m todas las imagenes que nosotros creemos siempre se tienen que basar en alguna otra imagen

ejemplo
* FROM node:etiquetaversion

RUN mkdir -p /home/app --esto es donde vamos a meter el codigo fuente de nuestra aplicacion, esta ruta no es una ruta fisita en nuestra maquina sino que es una ruta en el contenedor 

COPY . /home/app

EXPOSE 3000 ruta donde se va a ejecutar la aplicacion

CMD ["node","/home/app/index.js"]

ahora vamos a aprender a crear redes en docker

* docker ls : lista todas las redes existentes

* docker network create mired : este comando creara una nueva red dentro de docker este nos devolvera el id de la red creada

* docker network rm mired este comando elimina la red creada anteriormente

el siguiente comando recibe dos argumentos (nombreDadoPorMI,rutanodenosencontramos ) y se utiliza para construir contenedores en base a un archivo dockerfile

* docker build -t miapp:etiquetaversiondadapormi .

*docker create -P27017:27017 --name monguito --network mired -e MONGO_INITDB_ROOT_USERNAME=nico -e MONGO_INIT_DB_ROOT_PASSWORD=password mongo

ahora para colocar el contenedor de la aplicacion que nosotros acabamos de colocar dentro de una imagen

*docker create -p3000 --name chanchito --network mired miapp:1

*luego escribir docker ps -a

luego de hacer esto debemos arrancar los dos contenedores que creamos y que estan dentro de una misma red
sudo docker start monguito
sudo docker start chanchito

resumen de pasos para poder crear contenedores y tambien conectarlos
descargar la imagen
crear una red
crear el contenedor
	asignar puertos 
    asignar un nombre
    variables de entorno
    especificar la red
    indicar la imagen:consuetiqueta
todo esto por cada contenedor

para automatizar todo los pasos anteriores existe la herramienta docker compose
para esto debemos crear y editar un archivo con extension.yml

la estructura de este archivo es la siguiente
version:"3.9"
services:
	chanchito:
		build: .
        ports:
			-"3000:3000"
		links:
			-monguito
	monguito:
		imagen:mongo
        	ports:"27017:27017"
		environment:
			- MONGO_INITDB_ROOT_USERNAME=nico
			- MONGO_INITDB_ROOT_PASSWORD=password

ahora para ejecutar un archivo docker yml o docker compose se utiliza el siguiente comando:
docker compose up

luego verificas las imagenes creadadas con 

*docker images

con el comando 
docker compose down que es lo contrario de docker compose up, para eliminartodo lo que se creo anteriormente con docker compose up

para trabajar con volumenes vamos al final del archivo compose 
version:"3.9"
services:
	chanchito:
		build: .
        ports:
			-"3000:3000"
		links:
			-monguito
	monguito:
		imagen:mongo
        	ports:"27017:27017"
		environment:
			- MONGO_INITDB_ROOT_USERNAME=nico
			- MONGO_INITDB_ROOT_PASSWORD=password
		volumes:
			-mongo-data:/data/db
            # mysql -> var/lib/mysql
            # postgres -> var/lib/postgresql/data
volumes:
	mongo_data:

para crear multiples ambientes de desarrollo mientras estamos trabajando con docker
primero debemos crear un archivo con extension.dev ejemplo dockerfile.yml ya que el archivo que teniamos anterior mente quizas queramos usarlo para produccion ejemplo dockerfile.dev la estructura este este archivo es parecida al archivo dockerfile anterior con algunas diferencias

FROM node:18

RUN npm i -g nodemon
RUN mkdir -p /home/app

WORKDIR /home/app

EXPOSE 3000

CMD ["nodemon","index.js"]

ademas de este archivo demos crear un archivo compose para desarrollo tambien al cual llamaremos docker-compose-dev.yml con la siguiente estructura
version:"3.9"
services:
	chanchito:
		build: 
        context: .
        dockerfile:dockerfile.dev
        ports:
			-"3000:3000"
		links:
			-monguito
		volumes: 
			- .:/home/app
	monguito:
		imagen:mongo
        	ports:"27017:27017"
		environment:
			- MONGO_INITDB_ROOT_USERNAME=nico
			- MONGO_INITDB_ROOT_PASSWORD=password
		volumes:
			-mongo-data:/data/db
            # mysql -> var/lib/mysql
            # postgres -> var/lib/postgresql/data
volumes:
	mongo_data:

para provar el archivo que acabamos de construir utilizamos el siguiente comando, un archivo docker compose completamente customisado que no sea docker-compose.yml

docker compose -f docker-compose-dev.yml up
1. Purga la instalación de Docker:
sudo apk del docker

2. Instalar o reinstalar Docker:
sudo apk add docker

3. Solucionar problemas:
Para desmascarar los servicios de Docker:

sudo rc-update add docker default
sudo service docker start

4. Iniciar Docker:

sudo service docker start

5. Probar la instalación de Docker:
sudo docker run hello-world

6. Reiniciar Docker:

sudo service docker restart

7. Parar Docker:
sudo service docker stop

7.1 ver el estado de docker:
sudo service docker status

8. Comprobar el estado de Docker:
sudo service docker status

9. Ver imágenes de Docker:
docker images

10. Agregar usuario al grupo "docker":
Esto te permite ejecutar comandos de Docker sin sudo:
sudo addgroup $USER docker && newgrp docker

Otros Comandos Útiles
Listar contextos de Docker:
docker context ls 

Usar el contexto por defecto:
docker context use default 

Establecer el host de Docker:
export DOCKER_HOST="tcp://0.0.0.0:2375"

Detener todos los recursos pendientes (imágenes, contenedores, volúmenes y redes):
docker system prune

detener un contenedor de docker
docker stop <container_ID>
  
luego de detenerlo ejecuta este para eliminarlo
docker rm <container_ID>

Eliminar contenedores detenidos y todas las imágenes no utilizadas:
docker system prune -a

Eliminar imágenes por nombre (asegúrate de tener permisos adecuados):
sudo docker rmi <image_name>

sudo docker rmi -f <image_name:latest>
  
  Enumerar imágenes pendientes es decir que esten siendo usadas por otro contenedor:
docker images -f dangling=true

Eliminar imágenes pendientes:
docker rmi $(docker images -f "dangling=true" -q)
1.-Preparar el entorno base:
Instala Docker y Docker Compose en tu sistema para poder construir y manejar contenedores.

2.-Crear estructura de proyecto Laravel:
Puedes crear el proyecto Laravel localmente o usar un contenedor PHP con Composer para generarlo.
Si ya tienes un proyecto Laravel, colócalo en una carpeta donde trabajes con Docker.

3.-Crear archivo Dockerfile para PHP + Apache2 + extensiones relevantes:
Usarás la imagen base oficial de PHP 8.4 con Apache.
Instalarás las extensiones necesarias para Laravel y PostgreSQL, por ejemplo: pdo_pgsql, pgsql, zip, curl, xml, mbstring.
Copiarás el código fuente Laravel al contenedor.
Ejemplo básico de Dockerfile:
FROM php:8.4-apache

RUN apt-get update && apt-get install -y \
    libpq-dev \
    libzip-dev \
    zip \
    unzip \
    && docker-php-ext-install pdo_pgsql pgsql zip bcmath

COPY . /var/www/html/

RUN chown -R www-data:www-data /var/www/html \
    && a2enmod rewrite
    
4.-Configurar Docker Compose para los servicios:
Define servicios para PHP-Apache y PostgreSQL.
Vincula volúmenes para código y datos persistentes.
Configura variables de entorno para Laravel (DB connection).
Ejemplo básico de docker-compose.yml:
version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:80"
    volumes:
      - ./:/var/www/html
    depends_on:
      - db

  db:
    image: postgres:15
    environment:
      POSTGRES_DB: laravel
      POSTGRES_USER: laraveluser
      POSTGRES_PASSWORD: laravelpass
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

5.-Configurar archivo .env de Laravel:
Ajusta las variables para conectarse a la base de datos PostgreSQL dentro del contenedor:

DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=laraveluser
DB_PASSWORD=laravelpass

6.-Construir e iniciar los contenedores Docker:
En la terminal, ejecutar:
docker-compose up --build
Esto facilita manejar dependencias y la base de datos dentro del entorno Docker.

Resumen y conceptos clave:
Dockerfile: define cómo construir la imagen personalizada PHP+Apache con las extensiones necesarias.
Docker Compose: orquesta múltiples contenedores (app y db), redes y volúmenes.
Volúmenes: aseguran que tu código y los datos de la base de datos persistan fuera de los contenedores.
Laravel .env: configura la conexión a la base de datos PostgreSQL dentro de la red Docker.
Comandos Artisan dentro del contenedor mantienen el entorno controlado y consistente.
Este proceso modular te permite entender cómo Docker puede contenerizar un proyecto web completo con backend, webserver y base de datos separados pero comunicados, facilitando el desarrollo y pruebas locales sin alterar tu sistema nativo.
Opciones comunes incluyen:
-a o --all: Muestra todas las imágenes, incluidas las intermedias.
-q o --quiet: Muestra solo los IDs de las imágenes.
--filter: Filtra las imágenes según condiciones específicas.
--format: Formatea la salida de acuerdo con una plantilla personalizada.

si te sale este error hacer:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
significa que tu usuario no tiene permiso para acceder al socket del daemon de Docker. Esto es común cuando Docker se instala y se usa sin permisos elevados o sin configurar el usuario adecuadamente.

Para solucionar esto, tienes dos opciones:
1.-Usar sudo temporalmente para ejecutar comandos Docker, por ejemplo:
sudo docker images
Esto funciona pero no es lo ideal a largo plazo porque cada comando Docker requeriría sudo.

2.-Configurar tu usuario para que pertenezca al grupo "docker", que tiene acceso al socket de Docker. Ejecuta estos comandos:

-Crea el grupo docker si no existe:
sudo groupadd docker

-Agrega tu usuario al grupo docker (reemplaza ${USER} por tu nombre de usuario o mantén la variable si estás en una terminal):
sudo usermod -aG docker ${USER}

-Para que los cambios tengan efecto, cierra la sesión de tu usuario y vuelve a iniciarla, o ejecuta:
su - ${USER}

-Ahora deberías poder ejecutar comandos Docker sin sudo, por ejemplo:
docker images

-Si sigues teniendo problemas, asegúrate de que el permiso del directorio .docker en tu home sea correcto con:
sudo chown "$USER":"$USER" ~/.docker -R
sudo chmod g+rwx ~/.docker -R
Con este procedimiento, el acceso al socket Docker debe quedar configurado para tu usuario y el error desaparecerá.
Aquí tienes un resumen detallado y ordenado de los pasos para crear contenedores Docker y conectarlos, incluyendo descarga de imágenes, creación de redes, configuración de contenedores con puertos, nombres, variables de entorno y asignación de redes:

Descargar la imagen

Usar el comando docker pull nombre_imagen:etiqueta para descargar una imagen desde un repositorio (como Docker Hub).

Si no se especifica etiqueta, se descarga la etiqueta "latest" por defecto.

También puedes dejar que Docker la descargue automáticamente al crear un contenedor si la imagen no está local.

Crear una red personalizada (opcional)

Los contenedores por defecto se conectan a una red bridge predeterminada, pero puedes crear una red propia para una mejor gestión.

Comando para crear red tipo bridge: docker network create nombre_red

Esta red permitirá luego conectar contenedores entre sí fácilmente.

Crear el contenedor con configuración

Usar docker run para crear y ejecutar un contenedor.

Algunos parámetros útiles para configurar al crear el contenedor:

-p puerto_local:puerto_contenedor: Asigna y mapea puertos del host al contenedor.

--name nombre_contenedor: Asigna un nombre legible y gestionable al contenedor.

-e VAR=valor: Define variables de entorno para configurar la aplicación dentro del contenedor.

--network nombre_red: Conecta el contenedor a la red creada previamente o a la red deseada.

imagen:etiqueta: Especifica la imagen y la etiqueta (versión) que se usará.

Ejemplo del comando completo para crear un contenedor con esos parámetros:

bash
docker run -d --name mi_contenedor -p 8080:80 -e "API_KEY=abc123" --network mired mi_imagen:1.0
Esto creará un contenedor en segundo plano (-d), con nombre mi_contenedor, exponiendo el puerto 80 del contenedor en el puerto 8080 del host, definiendo una variable de entorno API_KEY, conectándolo a la red mired y usando la imagen mi_imagen con etiqueta 1.0.

Conectar contenedores entre sí

Si los contenedores están en la misma red personalizada, podrán comunicarse mediante sus nombres.

Para conectar contenedores existentes a una red, usar docker network connect nombre_red nombre_contenedor.

Estos pasos te permiten crear y configurar contenedores Docker con la flexibilidad para gestionar puertos, entornos, nombres y redes, lo cual es esencial para proyectos que involucren múltiples contenedores y servicios interconectados.
Aquí tienes ejemplos específicos para cada paso de crear contenedores Docker y conectarlos, explicados de forma que sea fácil recordarlos:

1.-Descargar la imagen
Comando:
docker pull nginx:latest
Esto descarga la imagen oficial de Nginx con la etiqueta "latest" desde Docker Hub. Si no especificas la etiqueta, se toma "latest" por defecto.

2.-Crear una red personalizada
Comando:

docker network create mired
Aquí creas una red llamada "mired" de tipo bridge, donde podrás conectar varios contenedores para que se comuniquen entre sí.

3.-Crear el contenedor con configuración
Comando ejemplo:

docker run -d --name mi_nginx -p 8080:80 -e "ENV=production" --network mired nginx:latest
Explicación:

-d: ejecuta el contenedor en segundo plano.
--name mi_nginx: asigna el nombre "mi_nginx" al contenedor.
-p 8080:80: expone el puerto 80 del contenedor en el puerto 8080 del host.
-e "ENV=production": define la variable de entorno ENV con valor production.
--network mired: conecta el contenedor a la red personalizada creada.
nginx:latest: usa la imagen nginx con la etiqueta latest.

4.-Conectar contenedores entre sí
Supongamos que creas dos contenedores en la red "mired":

docker run -d --name webapp --network mired nginx
docker run -d --name db --network mired mysql -e MYSQL_ROOT_PASSWORD=password
Ambos están en la misma red, por lo que el contenedor "webapp" puede acceder al "db" usando el nombre "db" como hostname.

Si quieres conectar un contenedor ya existente a la red después de crearlo:

docker network connect mired nombre_contenedor
Para recordar mejor cada paso, piensa:

"Pull" es traer la imagen al disco.

"Network create" es como hacer una calle para que los contenedores se hablen.

"Run" es poner en marcha el contenedor con nombre, puertos, y variables.

Ponerlos en la misma red es para que cooperen sin problemas.
Las diferencias entre imágenes y contenedores en Docker son las siguientes:

Una imagen de Docker es una plantilla de solo lectura que contiene las bibliotecas, dependencias, archivos y el entorno necesario para ejecutar una aplicación. Es un archivo reutilizable e inmutable que sirve para crear contenedores. Las imágenes se crean generalmente a partir de un archivo Dockerfile que contiene todas las instrucciones para construir la imagen.

Un contenedor de Docker es una instancia en ejecución creada a partir de una imagen de Docker. Es un entorno aislado que incluye todo lo necesario para ejecutar la aplicación. Los contenedores tienen una capa adicional que permite escritura y cambios durante su ejecución, pero estos cambios no afectan la imagen original.

En resumen:

| Aspecto      | Imagen de Docker                             | Contenedor de Docker                       |
|--------------|---------------------------------------------|-------------------------------------------|
| Qué es       | Archivo de solo lectura que contiene la plantilla | Instancia en ejecución de una imagen      |
| Mutabilidad  | Inmutable, no se modifica después de creada | Mutable, permite cambios durante la ejecución |
| Función      | Plantilla para crear contenedores            | Ejecutar la aplicación de forma aislada   |
| Creación    | Creada a partir de un Dockerfile              | Creado a partir de una imagen              |
| Uso          | Almacenar y compartir la configuración y software | Ejecutar la aplicación en runtime          |

**Comandos específicos para imágenes:**


docker build -t nombre_imagen . — crea una imagen a partir de un Dockerfile.

docker images — lista las imágenes disponibles.

docker rmi nombre_imagen — elimina una imagen.

Comandos específicos para contenedores:

docker run nombre_imagen — crea y ejecuta un contenedor a partir de una imagen.

docker ps — lista los contenedores en ejecución.

docker ps -a — lista todos los contenedores (incluyendo los detenidos).

docker stop nombre_contenedor — detiene un contenedor en ejecución.

docker start nombre_contenedor — inicia un contenedor detenido.

docker rm nombre_contenedor — elimina un contenedor.

Por ejemplo, para crear y ejecutar un contenedor con un terminal bash usando una imagen llamada "MyImage":

text
docker run -it MyImage bash
En conclusión, las imágenes son las plantillas estáticas usadas para crear y ejecutar contenedores, mientras que los contenedores son las instancias activas que ejecutan realmente las aplicaciones, y se manejan con comandos diferentes conforme a su función. Esto permite portar software de forma consistente y escalable en diferentes entornos.
Dockerfile
Qué es: Un archivo de texto que contiene una serie de instrucciones para construir una imagen Docker. Funciona como una "receta" para crear una imagen personalizada.

Para qué sirve: Define cómo se debe construir una imagen de contenedor, especificando la base del sistema operativo, las aplicaciones que se deben instalar, variables de entorno, archivos que se copian, comandos que se deben ejecutar para preparar la imagen, entre otros.

Cómo se arma: Se escribe paso a paso con comandos Docker (por ejemplo, FROM, COPY, RUN, CMD) que instruyen cómo se debe crear la imagen.

1. Dockerfile
¿Qué es un Dockerfile?
Un Dockerfile es un archivo de texto que contiene instrucciones para construir una imagen de Docker personalizada. Esta imagen luego se puede usar para crear contenedores.

Estructura básica de un Dockerfile
FROM: Define la imagen base desde la cual se construirá la nueva imagen.

WORKDIR: Define el directorio de trabajo dentro del contenedor.

COPY: Copia archivos o directorios desde tu sistema local hacia la imagen.

RUN: Ejecuta comandos en la imagen mientras se construye.

CMD: Define el comando que se ejecutará cuando se inicie un contenedor a partir de esta imagen.

Ejemplo básico:

# Imagen base
FROM node:14

# Directorio de trabajo
WORKDIR /app

# Copiar archivos al contenedor
COPY package*.json ./

# Instalar dependencias
RUN npm install

# Copiar el resto del código
COPY . .

# Puerto que se expondrá
EXPOSE 3000

# Comando para iniciar la aplicación
CMD ["npm", "start"]

¿Cómo ejecutar un Dockerfile?
Abrir una terminal.

Navegar a la carpeta donde está el Dockerfile.

Construir la imagen con el comando:
docker build -t nombre_de_la_imagen .

Ejecutar el contenedor con:
docker run -p 3000:3000 nombre_de_la_imagen
2. Archivo docker-compose.yml
¿Qué es un docker-compose.yml?
Es un archivo de configuración en formato YAML que permite definir y ejecutar múltiples contenedores Docker como un solo servicio, facilitando la orquestación de aplicaciones complejas.

Estructura básica de un docker-compose.yml
version: Define la versión de la sintaxis de Docker Compose.

services: Define los diferentes servicios o contenedores a levantar.

build: Ruta para construir la imagen Docker (opcional cuando se usa imagen pública).

image: Nombre de la imagen a usar.

ports: Puertos que se exponen y mapean al host.

volumes: Para montar volúmenes o carpetas locales dentro del contenedor.

environment: Variables de entorno para los contenedores.

Ejemplo básico:
version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    environment:
      - NODE_ENV=development
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: usuario
      POSTGRES_PASSWORD: contraseña
      POSTGRES_DB: mibase
    ports:
      - "5432:5432"
¿Cómo ejecutar un archivo docker-compose.yml?
Abrir una terminal.
Navegar a la carpeta donde está el archivo docker-compose.yml.

Ejecutar el comando:
docker-compose up
Esto creará y arrancará todos los servicios definidos en el archivo.

Para detener los servicios:
docker-compose down


Estos comandos buscan todos los contenedores (activos y detenidos) y los detienen/eliminan automáticamente.

# Detener todos los contenedores
docker stop $(docker ps -a -q)

# Eliminar todos los contenedores
docker rm $(docker ps -a -q)
Este comando elimina todas las imágenes de Docker del sistema (solo si no hay contenedores activos que las usen).

docker rmi $(docker images -a -q)
# Eliminar volúmenes sin uso
docker volume prune -f

# Eliminar redes sin uso
docker network prune -f
docker-compose down --rmi all --volumes --remove-orphans

--rmi all: elimina todas las imágenes creadas por docker-compose.
--volumes: elimina los volúmenes asociados.
--remove-orphans: elimina contenedores no definidos en el .yml actual.
1.-Eliminar el contenedor detenido que está usando esa imagen con:
docker rm 8850ff9258c0

1.1-podrás eliminar la imagen normalmente:
docker rmi 1b44b5a3e06a

3.-Forzar la eliminación de la imagen junto con los contenedores detenidos que la usan con:
docker rmi -f 1b44b5a3e06a

Listar y eliminar todos los contenedores en estado "exited" (detenidos) con este comando combinado:

docker rm $(docker ps -a -f status=exited -q)

os parámetros significan lo siguiente:

-a (o --all): En el comando docker ps, muestra todos los contenedores, incluyendo tanto los que están en ejecución como los que están detenidos. Sin esta opción, solo se muestran los contenedores en ejecución.

-f (o --filter): Permite filtrar la lista de contenedores según una condición. En este caso, status=exited filtra para mostrar solo los contenedores que están en estado "exited", es decir, detenidos.

-q (o --quiet): Devuelve solo los IDs de los contenedores, sin mostrar toda la información adicional.

status=exited: Es la condición para el filtro -f, indica que queremos los contenedores cuyo estado es "exited" (detenidos).

docker container prune



Ver contenedores en ejecución:
docker ps
Este comando muestra solo los contenedores que están en ejecución actualmente.

Ver todos los contenedores (en ejecución y detenidos):
docker ps -a
o
docker container ls -a
docker start <nombre_o_id_del_contenedor>

docker stop <nombre_o_id_del_contenedor>
docker start <nombre_o_id_del_contenedor>

docker stop <nombre_o_id_del_contenedor>
  
docker restart <nombre_o_id_del_contenedor>
¿Importa el tipo de red (bridge vs overlay) para elegir entre uno y otro?
-Sí, el tipo de red en Docker se relaciona con el modo de ejecución.
-Las redes bridge suelen ser para contenedores que corren en el mismo host (nodo local). Por eso se usa con docker run.
-Las redes overlay permiten la comunicación segura entre contenedores que corren en diferentes nodos en un clúster Docker Swarm. Por eso se usan con docker service create en modo swarm.

1. Red Bridge (puente) - red local para contenedores en un mismo host
bash
docker network create --driver bridge mi_red_bridge

docker run -d --name postgres_bridge --network mi_red_bridge -e POSTGRES_PASSWORD=contraseña postgres
docker run -d --name php_bridge --network mi_red_bridge php

2. Red Host - el contenedor comparte la red del host (sin aislamiento)
bash
docker run -d --name postgres_host --network host -e POSTGRES_PASSWORD=contraseña postgres
docker run -d --name php_host --network host php

3. Red Overlay - permite que contenedores en diferentes hosts se comuniquen (requiere Docker Swarm)
bash
docker swarm init

docker network create --driver overlay mi_red_overlay

docker service create --name postgres_overlay --network mi_red_overlay -e POSTGRES_PASSWORD=contraseña postgres
docker service create --name php_overlay --network mi_red_overlay php

4. Red Macvlan - contenedores tienen IP propia en la red física del host (requiere configuración de red)
bash
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 mi_red_macvlan

docker run -d --name postgres_macvlan --network mi_red_macvlan -e POSTGRES_PASSWORD=contraseña postgres
docker run -d --name php_macvlan --network mi_red_macvlan php
Nota: Cambia 192.168.1.0/24, 192.168.1.1 y eth0 según tu red física.

5. Red None - el contenedor no tiene red ni acceso a otros contenedores
bash
docker run -d --name postgres_none --network none -e POSTGRES_PASSWORD=contraseña postgres
docker run -d --name php_none --network none php
Con estos comandos tienes ejemplos prácticos de cómo crear y conectar contenedores PHP y PostgreSQL en los distintos tipos de redes Docker.

La opción -d en un comando Docker significa "modo detached" o "modo desacoplado".

Cuando usas docker run -d, el contenedor se ejecuta en segundo plano (background). No se muestra la salida del contenedor en la terminal, ni se queda "pegada" a ella. Esto es útil para servicios y aplicaciones que quieres que sigan corriendo sin que ocupen tu terminal.

Si no usas -d (modo foreground o primer plano), el contenedor se ejecuta conectado a tu terminal y verás los logs y la salida en tiempo real. La terminal queda ocupada con el proceso del contenedor hasta que lo detengas. Esto es útil para tareas interactivas o para depurar.

Resumiendo:

-d: contenedor en segundo plano, terminal libre para otras tareas.

Sin -d: contenedor en primer plano, salida visible en la terminal.

Esta es una diferencia clave para controlar cómo interactúas con los contenedores al ejecutarlos con Docker.

#!/bin/bash

# Colores para la salida
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

# Funciones de mensajes
error() { echo -e "${RED}Error: $1${NC}" >&2; }
success() { echo -e "${GREEN}$1${NC}"; }
info() { echo -e "${BLUE}$1${NC}"; }
warning() { echo -e "${YELLOW}$1${NC}" >&2; }
process() { echo -e "${CYAN}$1${NC}"; }

# Variables globales
DOCKER_DIR="docker"
PROJECT_NAME=""
FRAMEWORK=""
PHP_VERSION=""
WEB_PORT=""
DB_PORT=""
CURRENT_DIR=$(pwd)

# Función para verificar y corregir permisos
check_and_fix_permissions() {
    local target_dir="$1"
    
    # Verificar si el directorio existe
    if [ ! -d "$target_dir" ]; then
        return 0
    fi
    
    process "Verificando permisos de $target_dir..."
    
    # Verificar si tenemos permisos de escritura
    if [ ! -w "$target_dir" ]; then
        warning "No tenemos permisos de escritura en $target_dir"
        process "Intentando corregir permisos..."
        
        # Intentar con sudo si está disponible
        if command -v sudo &> /dev/null; then
            if sudo chmod 755 "$target_dir" && sudo chown "$USER:$USER" "$target_dir" 2>/dev/null; then
                success "Permisos corregidos con sudo"
                return 0
            fi
        fi
        
        # Intentar sin sudo
        if chmod 755 "$target_dir" 2>/dev/null; then
            success "Permisos corregidos"
        else
            error "No se pueden corregir los permisos automáticamente"
            info "Por favor, ejecuta manualmente:"
            echo "  sudo chmod 755 \"$target_dir\""
            echo "  sudo chown \$USER:\$USER \"$target_dir\""
            return 1
        fi
    else
        success "Permisos correctos en $target_dir"
    fi
    
    return 0
}

# Función para limpiar directorio de forma segura
safe_clean_directory() {
    local dir_path="$1"
    
    if [ ! -d "$dir_path" ]; then
        return 0
    fi
    
    process "Limpiando directorio $dir_path..."
    
    # Verificar permisos primero
    if ! check_and_fix_permissions "$dir_path"; then
        return 1
    fi
    
    # Intentar eliminar contenido del directorio
    if [ -w "$dir_path" ]; then
        # Usar find para eliminar contenido de forma segura
        if find "$dir_path" -mindepth 1 -maxdepth 1 -exec rm -rf {} + 2>/dev/null; then
            success "Directorio limpiado correctamente"
            return 0
        else
            # Si falla, intentar con sudo
            if command -v sudo &> /dev/null; then
                if sudo rm -rf "${dir_path:?}/"* 2>/dev/null; then
                    success "Directorio limpiado con sudo"
                    return 0
                fi
            fi
        fi
    fi
    
    error "No se pudo limpiar el directorio $dir_path"
    return 1
}

# Verificar instalación de Docker y Docker Compose
check_docker_installation() {
    process "Verificando instalación de Docker..."
    if ! command -v docker &> /dev/null; then
        error "Docker no está instalado. Instala Docker primero."
        echo "Visita: https://docs.docker.com/get-docker/"
        exit 1
    fi
    success "Docker está instalado."

    process "Verificando Docker Compose..."
    if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
        error "Docker Compose no está instalado."
        echo "Visita: https://docs.docker.com/compose/install/"
        exit 1
    fi
    success "Docker Compose está instalado."
}

# Verificar permisos de Docker
check_docker_permissions() {
    process "Verificando permisos de Docker..."
    if ! docker info &> /dev/null; then
        error "No tienes permisos para acceder a Docker."
        warning "Solución:"
        echo "  sudo usermod -aG docker \$USER"
        echo "  newgrp docker"
        exit 1
    fi
    success "Permisos de Docker verificados."
}

# Verificar conexión a internet
check_internet_connection() {
    process "Verificando conexión a internet..."
    if ! curl -s --connect-timeout 10 https://packagist.org > /dev/null; then
        error "No hay conexión a internet o Packagist no está disponible"
        warning "El script requiere conexión a internet para descargar dependencias"
        read -p "¿Continuar de todos modos? (y/N): " -n 1 -r
        echo
        if [[ ! $REPLY =~ ^[Yy]$ ]]; then
            exit 1
        fi
    else
        success "Conexión a internet verificada"
    fi
}

# Encontrar puertos disponibles
find_available_ports() {
    local web_port=8081
    local db_port=5433
    
    # Encontrar puerto web disponible
    while ss -tuln 2>/dev/null | grep -q ":${web_port} "; do
        web_port=$((web_port + 1))
    done
    
    # Encontrar puerto DB disponible (empezando desde 5433)
    while ss -tuln 2>/dev/null | grep -q ":${db_port} "; do
        db_port=$((db_port + 1))
    done
    
    WEB_PORT="$web_port"
    DB_PORT="$db_port"
    success "Puertos disponibles encontrados: Web → ${WEB_PORT}, DB → ${DB_PORT}"
}

# Seleccionar framework CON VERSIONES CORRECTAS
select_framework() {
    echo ""
    info "🎯 SELECCIÓN DE FRAMEWORK"
    echo "========================="
    echo ""
    echo "  1) Yii2 Basic - Framework tradicional (PHP 7.4)"
    echo "  2) Yii2 Advanced - Framework avanzado (PHP 7.4)"
    echo "  3) Yii3 - Framework moderno (PHP 8.4+)"  
    echo "  4) Laravel - Framework elegante (PHP 8.3+)"
    echo ""
    
    while true; do
        read -p "Selecciona el framework (1-4): " choice
        case $choice in
            1) 
                FRAMEWORK="yii2-basic"
                PHP_VERSION="7.4"
                success "Seleccionado: Yii2 Basic con PHP 7.4"
                break
                ;;
            2) 
                FRAMEWORK="yii2-advanced"
                PHP_VERSION="7.4"
                success "Seleccionado: Yii2 Advanced con PHP 7.4"
                break
                ;;
            3) 
                FRAMEWORK="yii3"
                PHP_VERSION="8.4"
                success "Seleccionado: Yii3 con PHP 8.4"
                break
                ;;
            4) 
                FRAMEWORK="laravel"
                PHP_VERSION="8.3"
                success "Seleccionado: Laravel con PHP 8.3"
                break
                ;;
            *) 
                error "Opción inválida. Por favor, selecciona 1, 2, 3 o 4"
                ;;
        esac
    done
}

# Validar nombre del proyecto
get_project_name() {
    echo ""
    info "📝 NOMBRE DEL PROYECTO"
    echo "======================"
    echo "Elige un nombre para tu proyecto:"
    echo "  - Debe comenzar con una letra"
    echo "  - Puede contener letras, números, guiones y guiones bajos"
    echo ""
    
    while true; do
        read -p "Ingresa el nombre del proyecto: " project_name
        
        if [ -z "$project_name" ]; then
            error "El nombre no puede estar vacío."
            continue
        fi
        
        if [[ ! "$project_name" =~ ^[a-zA-Z][a-zA-Z0-9_-]*$ ]]; then
            error "El nombre debe comenzar con una letra y solo puede contener letras, números, guiones y guiones bajos."
            continue
        fi
        
        PROJECT_NAME="$project_name"
        success "Nombre del proyecto validado: $PROJECT_NAME"
        break
    done
}

# Crear estructura de directorios MEJORADA con gestión de permisos
create_directory_structure() {
    process "Creando estructura de directorios en '$DOCKER_DIR'..."
    
    # Verificar y corregir permisos del directorio docker si existe
    if [ -d "$DOCKER_DIR" ]; then
        warning "El directorio $DOCKER_DIR ya existe. Verificando permisos..."
        
        if ! check_and_fix_permissions "$DOCKER_DIR"; then
            error "No se pueden corregir los permisos de $DOCKER_DIR"
            return 1
        fi
        
        # Verificar y corregir permisos de subdirectorios
        if [ -d "$DOCKER_DIR/src" ]; then
            if ! check_and_fix_permissions "$DOCKER_DIR/src"; then
                error "No se pueden corregir los permisos de $DOCKER_DIR/src"
                return 1
            fi
            
            # Limpiar el directorio src de forma segura
            if ! safe_clean_directory "$DOCKER_DIR/src"; then
                error "No se pudo limpiar el directorio $DOCKER_DIR/src"
                return 1
            fi
        else
            # Crear directorio src con permisos correctos
            if ! mkdir -p "$DOCKER_DIR/src"; then
                error "No se pudo crear el directorio $DOCKER_DIR/src"
                return 1
            fi
            chmod 755 "$DOCKER_DIR/src"
        fi
    else
        # Crear toda la estructura desde cero
        if ! mkdir -p "$DOCKER_DIR/src" "$DOCKER_DIR/apache-logs" "$DOCKER_DIR/postgres-backups"; then
            error "No se pudo crear la estructura de directorios"
            return 1
        fi
        # Establecer permisos correctos
        chmod 755 "$DOCKER_DIR" "$DOCKER_DIR/src" "$DOCKER_DIR/apache-logs" "$DOCKER_DIR/postgres-backups"
        success "Estructura de directorios creada en: $DOCKER_DIR/"
    fi
    
    # Crear subcarpeta con nombre del proyecto dentro de src
    process "Creando directorio del proyecto: $DOCKER_DIR/src/$PROJECT_NAME"
    if ! mkdir -p "$DOCKER_DIR/src/$PROJECT_NAME"; then
        error "No se pudo crear la subcarpeta del proyecto"
        return 1
    fi
    
    # Establecer permisos correctos para la carpeta del proyecto
    if ! chmod 755 "$DOCKER_DIR/src/$PROJECT_NAME"; then
        warning "No se pudieron establecer los permisos automáticamente en $DOCKER_DIR/src/$PROJECT_NAME"
        info "Puedes establecerlos manualmente después:"
        echo "  chmod 755 \"$DOCKER_DIR/src/$PROJECT_NAME\""
    fi
    
    success "Estructura de directorios creada: $DOCKER_DIR/src/$PROJECT_NAME/"
    return 0
}

# Crear archivo .env
create_env_file() {
    process "Creando archivo de configuración .env..."
    
    find_available_ports
    
    cat > "$DOCKER_DIR/.env" << EOF
# Configuración de la aplicación
APP_NAME=$PROJECT_NAME
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:${WEB_PORT}

# Configuración de base de datos
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432  # Puerto INTERNO del contenedor (SIEMPRE 5432)
DB_DATABASE=${PROJECT_NAME}_db
DB_USERNAME=postgres
DB_PASSWORD=password

# Configuración de PostgreSQL
POSTGRES_DB=${PROJECT_NAME}_db
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password

# Configuración de Docker
PHP_VERSION=${PHP_VERSION}
WEB_PORT=${WEB_PORT}
DB_EXTERNAL_PORT=${DB_PORT}  # Puerto EXPUESTO en el host

# Configuración específica del framework
FRAMEWORK=${FRAMEWORK}
PROJECT_NAME=${PROJECT_NAME}
EOF

    # Verificar que el archivo se creó y establecer permisos
    if [ ! -f "$DOCKER_DIR/.env" ]; then
        error "No se pudo crear el archivo .env"
        return 1
    fi
    
    chmod 644 "$DOCKER_DIR/.env"
    success "Archivo .env creado con puertos: Web → ${WEB_PORT}, DB Host → ${DB_PORT}"
    return 0
}

# Crear configuración de Apache
create_apache_config() {
    process "Creando configuración de Apache..."
    
    # Configuración diferente para Yii2 Advanced
    if [ "$FRAMEWORK" = "yii2-advanced" ]; then
        cat > "$DOCKER_DIR/000-default.conf" << EOF
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/frontend/web
    <Directory /var/www/html/frontend/web>
        AllowOverride All
        Require all granted
        Options Indexes FollowSymLinks
    </Directory>
    ErrorLog \${APACHE_LOG_DIR}/error.log
    CustomLog \${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOF
    else
        cat > "$DOCKER_DIR/000-default.conf" << EOF
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/public
    <Directory /var/www/html>
        AllowOverride All
        Require all granted
        Options Indexes FollowSymLinks
    </Directory>
    ErrorLog \${APACHE_LOG_DIR}/error.log
    CustomLog \${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOF
    fi

    if [ ! -f "$DOCKER_DIR/000-default.conf" ]; then
        error "No se pudo crear la configuración de Apache"
        return 1
    fi
    
    chmod 644 "$DOCKER_DIR/000-default.conf"
    success "Configuración de Apache creada"
    return 0
}

# Crear Dockerfile específico para cada framework - CORREGIDO
create_dockerfile() {
    process "Creando Dockerfile para PHP $PHP_VERSION..."
    
    case "$FRAMEWORK" in
        "yii2-basic"|"yii2-advanced")
            create_yii2_dockerfile
            ;;
        "yii3")
            create_yii3_dockerfile
            ;;
        "laravel")
            create_laravel_dockerfile
            ;;
    esac
    
    if [ ! -f "$DOCKER_DIR/Dockerfile" ]; then
        error "No se pudo crear el Dockerfile"
        return 1
    fi
    
    chmod 644 "$DOCKER_DIR/Dockerfile"
    return 0
}

create_yii2_dockerfile() {
    cat > "$DOCKER_DIR/Dockerfile" << 'EOF'
ARG PHP_VERSION=7.4
FROM php:${PHP_VERSION}-apache

# Actualizar lista de paquetes y instalar dependencias
RUN apt-get update && apt-get install -y \
    libpq-dev \
    libzip-dev \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip \
    git \
    curl \
    gnupg \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# Configurar extensiones de PHP para PHP 7.4 - CONFIGURACIÓN CORREGIDA
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        pdo \
        pdo_pgsql \
        pgsql \
        zip \
        gd \
        bcmath \
        opcache \
    && a2enmod rewrite

# Instalar Composer
RUN curl -sS https://getcomposer.org/installer | php -- \
    --install-dir=/usr/local/bin \
    --filename=composer

# Configurar Composer para evitar timeouts
RUN composer config -g process-timeout 1200 && \
    composer config -g repo.packagist composer https://packagist.org

# Instalar extensiones adicionales necesarias para Yii2
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
RUN a2ensite 000-default.conf
RUN chown -R www-data:www-data /var/www/html
WORKDIR /var/www/html

# Configuraciones PHP optimizadas para PHP 7.4
RUN echo "memory_limit = 512M" > /usr/local/etc/php/conf.d/memory.ini && \
    echo "upload_max_filesize = 64M" >> /usr/local/etc/php/conf.d/uploads.ini && \
    echo "post_max_size = 64M" >> /usr/local/etc/php/conf.d/uploads.ini && \
    echo "max_execution_time = 300" >> /usr/local/etc/php/conf.d/timeouts.ini && \
    echo "max_input_time = 120" >> /usr/local/etc/php/conf.d/timeouts.ini

EXPOSE 80
EOF
    success "Dockerfile para Yii2 creado"
}

create_yii3_dockerfile() {
    cat > "$DOCKER_DIR/Dockerfile" << 'EOF'
ARG PHP_VERSION=8.4
FROM php:${PHP_VERSION}-apache

# Actualizar lista de paquetes y instalar dependencias
RUN apt-get update && apt-get install -y \
    libpq-dev \
    libzip-dev \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip \
    git \
    curl \
    gnupg \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# Configurar extensiones de PHP - CONFIGURACIÓN CORREGIDA
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        pdo \
        pdo_pgsql \
        pgsql \
        zip \
        gd \
        bcmath \
        opcache \
    && a2enmod rewrite

# Instalar Composer
RUN curl -sS https://getcomposer.org/installer | php -- \
    --install-dir=/usr/local/bin \
    --filename=composer

# Configurar Composer para evitar timeouts
RUN composer config -g process-timeout 1200 && \
    composer config -g repo.packagist composer https://packagist.org

COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
RUN a2ensite 000-default.conf
RUN chown -R www-data:www-data /var/www/html
WORKDIR /var/www/html

# Configuraciones PHP optimizadas
RUN echo "memory_limit = 512M" > /usr/local/etc/php/conf.d/memory.ini && \
    echo "upload_max_filesize = 128M" >> /usr/local/etc/php/conf.d/uploads.ini && \
    echo "post_max_size = 128M" >> /usr/local/etc/php/conf.d/uploads.ini && \
    echo "max_execution_time = 300" >> /usr/local/etc/php/conf.d/timeouts.ini && \
    echo "max_input_time = 120" >> /usr/local/etc/php/conf.d/timeouts.ini && \
    echo "opcache.enable=1" >> /usr/local/etc/php/conf.d/opcache.ini && \
    echo "opcache.memory_consumption=256" >> /usr/local/etc/php/conf.d/opcache.ini

EXPOSE 80
EOF
    success "Dockerfile para Yii3 creado"
}

create_laravel_dockerfile() {
    cat > "$DOCKER_DIR/Dockerfile" << 'EOF'
ARG PHP_VERSION=8.3
FROM php:${PHP_VERSION}-apache

# Actualizar lista de paquetes y instalar dependencias
RUN apt-get update && apt-get install -y \
    libpq-dev \
    libzip-dev \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip \
    git \
    curl \
    gnupg \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# Configurar extensiones de PHP - CONFIGURACIÓN CORREGIDA
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        pdo \
        pdo_pgsql \
        pgsql \
        zip \
        gd \
        bcmath \
        opcache \
    && a2enmod rewrite

# Instalar Composer
RUN curl -sS https://getcomposer.org/installer | php -- \
    --install-dir=/usr/local/bin \
    --filename=composer

# Configurar Composer para evitar timeouts
RUN composer config -g process-timeout 1200 && \
    composer config -g repo.packagist composer https://packagist.org

# Extensiones adicionales para Laravel
RUN docker-php-ext-install exif && docker-php-ext-enable exif

COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
RUN a2ensite 000-default.conf
RUN chown -R www-data:www-data /var/www/html
WORKDIR /var/www/html

# Configuraciones PHP optimizadas
RUN echo "memory_limit = 512M" > /usr/local/etc/php/conf.d/memory.ini && \
    echo "upload_max_filesize = 128M" >> /usr/local/etc/php/conf.d/uploads.ini && \
    echo "post_max_size = 128M" >> /usr/local/etc/php/conf.d/uploads.ini && \
    echo "max_execution_time = 300" >> /usr/local/etc/php/conf.d/timeouts.ini && \
    echo "max_input_time = 120" >> /usr/local/etc/php/conf.d/timeouts.ini && \
    echo "opcache.enable=1" >> /usr/local/etc/php/conf.d/opcache.ini

EXPOSE 80
EOF
    success "Dockerfile para Laravel creado"
}

# Crear docker-compose.yml MEJORADO
create_docker_compose() {
    process "Creando docker-compose.yml..."
    
    # Configurar volumen según el tipo de proyecto
    local volume_config="./src/${PROJECT_NAME}:/var/www/html"
    
    cat > "$DOCKER_DIR/docker-compose.yml" << EOF
version: '3.8'

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        PHP_VERSION: \${PHP_VERSION}
    ports:
      - "\${WEB_PORT}:80"
    volumes:
      - ${volume_config}
      - ./apache-logs:/var/log/apache2
    depends_on:
      db:
        condition: service_healthy
    networks:
      - backend-network
    env_file:
      - .env
    container_name: ${PROJECT_NAME}-web
    restart: unless-stopped
    dns:
      - 8.8.8.8
      - 8.8.4.4
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:80"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

  db:
    image: postgres:15
    environment:
      POSTGRES_DB: \${POSTGRES_DB}
      POSTGRES_USER: \${POSTGRES_USER}
      POSTGRES_PASSWORD: \${POSTGRES_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data
      - ./postgres-backups:/backups
    networks:
      - backend-network
    container_name: ${PROJECT_NAME}-db
    restart: unless-stopped
    ports:
      - "\${DB_EXTERNAL_PORT}:5432"
    dns:
      - 8.8.8.8
      - 8.8.4.4
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U \${POSTGRES_USER} -d \${POSTGRES_DB}"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s

networks:
  backend-network:
    driver: bridge

volumes:
  pgdata:
    driver: local
EOF

    if [ ! -f "$DOCKER_DIR/docker-compose.yml" ]; then
        error "No se pudo crear el archivo docker-compose.yml"
        return 1
    fi
    
    chmod 644 "$DOCKER_DIR/docker-compose.yml"
    success "Archivo docker-compose.yml creado"
    return 0
}

# Función para ejecutar comandos en el directorio docker
run_in_docker_dir() {
    local cmd="$1"
    
    if [ ! -d "$DOCKER_DIR" ]; then
        error "Directorio $DOCKER_DIR no encontrado"
        return 1
    fi
    
    # Verificar permisos antes de continuar
    if ! check_and_fix_permissions "$DOCKER_DIR"; then
        error "No se puede acceder a $DOCKER_DIR por problemas de permisos"
        return 1
    fi
    
    cd "$DOCKER_DIR" || { error "No se puede acceder al directorio $DOCKER_DIR"; return 1; }
    eval "$cmd"
    local result=$?
    cd "$CURRENT_DIR" || return 1
    return $result
}

# Función MEJORADA para esperar a que PostgreSQL esté listo
wait_for_postgres() {
    process "Esperando a que PostgreSQL esté listo..."
    local max_attempts=30
    local attempt=1
    
    while [ $attempt -le $max_attempts ]; do
        if run_in_docker_dir "docker-compose exec -T db pg_isready -U postgres > /dev/null 2>&1"; then
            success "PostgreSQL está listo después de $attempt intentos"
            
            # Esperar un poco más para asegurar que esté completamente listo
            sleep 5
            
            # Verificar que la base de datos específica existe, si no crearla
            process "Verificando base de datos ${PROJECT_NAME}_db..."
            if ! run_in_docker_dir "docker-compose exec -T db psql -U postgres -d ${PROJECT_NAME}_db -c 'SELECT 1' > /dev/null 2>&1"; then
                process "Creando base de datos ${PROJECT_NAME}_db..."
                if run_in_docker_dir "docker-compose exec -T db createdb -U postgres ${PROJECT_NAME}_db"; then
                    success "Base de datos ${PROJECT_NAME}_db creada exitosamente"
                else
                    error "Error creando la base de datos ${PROJECT_NAME}_db"
                    return 1
                fi
            else
                success "Base de datos ${PROJECT_NAME}_db ya existe"
            fi
            
            sleep 2
            return 0
        fi
        
        if [ $attempt -eq 1 ]; then
            process "Esperando a que PostgreSQL se inicialice..."
        else
            process "Intento $attempt/$max_attempts - PostgreSQL aún no está listo..."
        fi
        
        sleep 3
        attempt=$((attempt + 1))
    done
    
    error "PostgreSQL no está respondiendo después de $max_attempts intentos"
    run_in_docker_dir 'docker-compose logs db'
    return 1
}

# Construir y levantar contenedores CON MEJOR MANEJO DE ERRORES
build_docker_containers() {
    process "Construyendo contenedores Docker..."
    
    if [ ! -d "$DOCKER_DIR" ]; then
        error "El directorio $DOCKER_DIR no existe. No se pueden construir los contenedores."
        return 1
    fi
    
    # Verificar permisos antes de continuar
    if ! check_and_fix_permissions "$DOCKER_DIR"; then
        error "No se pueden construir los contenedores por problemas de permisos"
        return 1
    fi
    
    # Parar contenedores existentes
    process "Deteniendo contenedores existentes..."
    if ! run_in_docker_dir 'docker-compose down 2>/dev/null'; then
        warning "No se pudieron detener contenedores existentes (puede ser normal si no hay contenedores)"
    fi
    
    # Construir imágenes con mejor manejo de errores
    process "Construyendo imágenes Docker..."
    
    # Primero intentar construir sin cache para detectar errores temprano
    if run_in_docker_dir "docker-compose build --no-cache --build-arg PHP_VERSION=${PHP_VERSION} 2>&1 | tee build.log"; then
        success "Imágenes construidas exitosamente sin cache"
    else
        error "Error construyendo las imágenes Docker sin cache"
        process "Analizando errores de construcción..."
        
        # Mostrar los últimos errores del log
        if [ -f "$DOCKER_DIR/build.log" ]; then
            error "Últimas líneas del log de construcción:"
            tail -20 "$DOCKER_DIR/build.log" | while read -r line; do
                echo "  $line"
            done
        fi
        
        # Intentar con cache como fallback
        warning "Intentando construcción con cache..."
        if ! run_in_docker_dir "docker-compose build --build-arg PHP_VERSION=${PHP_VERSION}"; then
            error "Error crítico en la construcción de imágenes Docker"
            return 1
        fi
    fi
    
    # Levantar contenedores
    process "Iniciando contenedores..."
    if ! run_in_docker_dir 'docker-compose up -d'; then
        error "Error iniciando contenedores"
        run_in_docker_dir 'docker-compose logs'
        return 1
    fi
    
    # Esperar a que PostgreSQL esté listo
    if ! wait_for_postgres; then
        error "La base de datos no se inicializó correctamente"
        return 1
    fi
    
    # Verificar estado de los contenedores
    process "Verificando estado de los contenedores..."
    if run_in_docker_dir 'docker-compose ps | grep -q "Up"'; then
        success "Contenedores Docker listos y ejecutándose"
        return 0
    else
        error "Los contenedores no se iniciaron correctamente"
        run_in_docker_dir 'docker-compose ps'
        return 1
    fi
}

# Ejecutar comandos en el contenedor web con reintentos MEJORADO
exec_in_web() {
    local cmd="$1"
    local max_attempts=3
    local attempt=1
    
    sleep 10
    
    while [ $attempt -le $max_attempts ]; do
        process "Ejecutando comando (intento $attempt/$max_attempts)..."
        
        if run_in_docker_dir "docker-compose exec -T web bash -c \"$cmd\""; then
            return 0
        fi
        
        if [ $attempt -lt $max_attempts ]; then
            warning "Intento $attempt falló. Reintentando en 10 segundos..."
            sleep 10
        fi
        
        attempt=$((attempt + 1))
    done
    
    error "Error ejecutando comando después de $max_attempts intentos: $cmd"
    return 1
}

# Función MEJORADA para crear proyectos con Composer
create_project_with_composer() {
    local framework_cmd="$1"
    local project_name="$2"
    local install_dir="$3"
    
    process "Descargando proyecto $framework_cmd..."
    
    exec_in_web "composer config -g process-timeout 1200"
    exec_in_web "composer config -g repo.packagist composer https://packagist.org"
    exec_in_web "composer clear-cache"
    
    # Opciones específicas por framework
    if [[ "$FRAMEWORK" == yii2* ]]; then
        local composer_options=(
            "--prefer-dist --no-progress --no-interaction"
            "--prefer-dist --no-dev --no-progress --no-interaction"
            "--prefer-source --no-progress --no-interaction"
        )
    else
        local composer_options=(
            "--prefer-dist --no-dev --no-progress --no-interaction"
            "--prefer-dist --no-progress --no-interaction"
            "--prefer-source --no-progress --no-interaction"
        )
    fi
    
    for options in "${composer_options[@]}"; do
        process "Intentando con opciones: $options"
        
        # Limpiar directorio temporal si existe
        exec_in_web "rm -rf /tmp/${project_name} 2>/dev/null || true"
        
        if exec_in_web "composer create-project $options $framework_cmd /tmp/${project_name}"; then
            # VERIFICAR que el proyecto se creó correctamente
            if exec_in_web "[ -d /tmp/${project_name} ] && [ -f /tmp/${project_name}/composer.json ]"; then
                success "Proyecto descargado correctamente"
                
                # Mover a la ubicación final
                exec_in_web "rm -rf ${install_dir}/* 2>/dev/null || true"
                exec_in_web "sh -c 'mv /tmp/${project_name}/* ${install_dir}/ 2>/dev/null || true'"
                exec_in_web "sh -c 'mv /tmp/${project_name}/.* ${install_dir}/ 2>/dev/null || true'"
                exec_in_web "rm -rf /tmp/${project_name}"
                
                # Instalar dependencias si es necesario
                if exec_in_web "[ ! -d ${install_dir}/vendor ] && [ -f ${install_dir}/composer.json ]"; then
                    process "Instalando dependencias..."
                    if exec_in_web "cd ${install_dir} && composer install --no-dev --no-progress --no-interaction"; then
                        success "Dependencias instaladas correctamente"
                    else
                        warning "No se pudieron instalar las dependencias automáticamente"
                    fi
                fi
                
                return 0
            fi
        fi
        
        warning "Intento falló con opciones: $options"
        exec_in_web "rm -rf /tmp/${project_name} 2>/dev/null || true"
    done
    
    return 1
}

# Crear proyecto Yii2 Basic
create_yii2_basic_project() {
    process "Creando proyecto Yii2 Basic: ${PROJECT_NAME}"
    
    if ! create_project_with_composer "yiisoft/yii2-app-basic" "${PROJECT_NAME}" "/var/www/html"; then
        error "Error al crear proyecto Yii2 Basic después de múltiples intentos"
        return 1
    fi
    
    # Configuraciones adicionales para Yii2 Basic
    exec_in_web "chown -R www-data:www-data /var/www/html"
    exec_in_web "chmod -R 755 /var/www/html/runtime"
    exec_in_web "chmod -R 755 /var/www/html/web/assets"
    
    success "Proyecto Yii2 Basic '${PROJECT_NAME}' creado correctamente"
    return 0
}

# Crear proyecto Yii2 Advanced
create_yii2_advanced_project() {
    process "Creando proyecto Yii2 Advanced: ${PROJECT_NAME}"
    
    if ! create_project_with_composer "yiisoft/yii2-app-advanced" "${PROJECT_NAME}" "/var/www/html"; then
        error "Error al crear proyecto Yii2 Advanced después de múltiples intentos"
        return 1
    fi
    
    # Configuraciones adicionales para Yii2 Advanced
    exec_in_web "chown -R www-data:www-data /var/www/html"
    exec_in_web "chmod -R 755 /var/www/html/frontend/runtime"
    exec_in_web "chmod -R 755 /var/www/html/backend/runtime"
    exec_in_web "chmod -R 755 /var/www/html/frontend/web/assets"
    exec_in_web "chmod -R 755 /var/www/html/backend/web/assets"
    
    # Inicializar el proyecto advanced
    process "Inicializando Yii2 Advanced..."
    if exec_in_web "cd /var/www/html && php init --env=Development --overwrite=All"; then
        success "Yii2 Advanced inicializado correctamente"
    else
        warning "No se pudo inicializar Yii2 Advanced automáticamente"
    fi
    
    success "Proyecto Yii2 Advanced '${PROJECT_NAME}' creado correctamente"
    return 0
}

# Crear proyecto Yii3
create_yii3_project() {
    process "Creando proyecto Yii3: ${PROJECT_NAME}"
    
    if ! create_project_with_composer "yiisoft/yii-project-template" "${PROJECT_NAME}" "/var/www/html"; then
        error "Error al crear proyecto Yii3 después de múltiples intentos"
        return 1
    fi
    
    exec_in_web "chown -R www-data:www-data /var/www/html"
    
    success "Proyecto Yii3 '${PROJECT_NAME}' creado correctamente"
    return 0
}

# Crear proyecto Laravel
create_laravel_project() {
    process "Creando proyecto Laravel: ${PROJECT_NAME}"
    
    if ! create_project_with_composer "laravel/laravel" "${PROJECT_NAME}" "/var/www/html"; then
        error "Error al crear proyecto Laravel después de múltiples intentos"
        return 1
    fi
    
    exec_in_web "chown -R www-data:www-data /var/www/html"
    exec_in_web "chmod -R 775 /var/www/html/storage"
    exec_in_web "chmod -R 775 /var/www/html/bootstrap/cache"
    
    # Configurar .env para Laravel
    process "Configurando Laravel..."
    exec_in_web "cd /var/www/html && cp .env.example .env 2>/dev/null || true"
    
    exec_in_web "cd /var/www/html && cat > .env << 'ENDFILE'
APP_NAME=${PROJECT_NAME}
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:${WEB_PORT}

DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=${PROJECT_NAME}_db
DB_USERNAME=postgres
DB_PASSWORD=password

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME=\"\${APP_NAME}\"
ENDFILE"
    
    exec_in_web "cd /var/www/html && php artisan key:generate"
    
    success "Proyecto Laravel '${PROJECT_NAME}' creado correctamente"
    return 0
}

# Crear el proyecto según el framework seleccionado
create_framework_project() {
    process "Iniciando creación del proyecto ${PROJECT_NAME} con ${FRAMEWORK}..."
    
    process "Probando conexión a internet desde el contenedor..."
    if ! exec_in_web "curl -s --connect-timeout 30 https://packagist.org > /dev/null"; then
        warning "El contenedor no puede conectarse a Packagist. Esto puede causar problemas."
        exec_in_web "cat /etc/resolv.conf"
    else
        success "Conexión a internet verificada desde el contenedor"
    fi
    
    case "$FRAMEWORK" in
        "yii2-basic")
            create_yii2_basic_project
            ;;
        "yii2-advanced")
            create_yii2_advanced_project
            ;;
        "yii3")
            create_yii3_project
            ;;
        "laravel")
            create_laravel_project
            ;;
        *)
            error "Framework no válido: $FRAMEWORK"
            return 1
            ;;
    esac
}

# Configuración MEJORADA de base de datos
configure_database() {
    process "Configurando base de datos para $FRAMEWORK..."
    
    sleep 10
    
    case "$FRAMEWORK" in
        "yii2-basic")
            configure_yii2_basic_db
            ;;
        "yii2-advanced")
            configure_yii2_advanced_db
            ;;
        "yii3")
            configure_yii3_db
            ;;
        "laravel")
            configure_laravel_db
            ;;
    esac
}

configure_laravel_db() {
    process "Configurando base de datos para Laravel..."
    
    process "Verificando conexión a la base de datos..."
    if exec_in_web "cd /var/www/html && php -r \"
try {
    \\\$pdo = new PDO('pgsql:host=db;port=5432;dbname=${PROJECT_NAME}_db', 'postgres', 'password');
    \\\$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'Conexión a BD exitosa' . PHP_EOL;
} catch (PDOException \\\$e) {
    echo 'Error de conexión: ' . \\\$e->getMessage() . PHP_EOL;
    exit(1);
}
\""; then
        success "Conexión a la base de datos verificada"
    else
        error "No se pudo conectar a la base de datos"
        return 1
    fi
    
    process "Ejecutando migraciones de Laravel..."
    if exec_in_web "cd /var/www/html && php artisan migrate --force"; then
        success "Migraciones de Laravel ejecutadas correctamente"
    else
        warning "Las migraciones de Laravel fallaron o no son necesarias"
    fi
    return 0
}

configure_yii3_db() {
    process "Configurando base de datos para Yii3..."
    if exec_in_web "cd /var/www/html && php ./yii migrate/up --interactive=0"; then
        success "Migraciones de Yii3 ejecutadas correctamente"
    else
        warning "Las migraciones de Yii3 fallaron o no son necesarias"
    fi
    return 0
}

# Configuración MEJORADA para Yii2 Basic
configure_yii2_basic_db() {
    process "Configurando base de datos para Yii2 Basic..."
    
    # Primero verificar que Yii2 esté instalado correctamente
    process "Verificando instalación de Yii2 Basic..."
    if ! exec_in_web "[ -f /var/www/html/vendor/yiisoft/yii2/Yii.php ]"; then
        error "Yii2 Basic no está instalado correctamente. No se puede configurar la base de datos."
        info "Instala las dependencias manualmente:"
        echo "  cd $DOCKER_DIR && docker-compose exec web composer install"
        return 1
    fi
    
    process "Configurando conexión a base de datos para Yii2 Basic..."
    exec_in_web "cd /var/www/html && cp config/db.php config/db.php.backup 2>/dev/null || true"
    
    exec_in_web "cd /var/www/html && cat > config/db.php << 'ENDFILE'
<?php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'pgsql:host=db;port=5432;dbname=${PROJECT_NAME}_db',
    'username' => 'postgres',
    'password' => 'password',
    'charset' => 'utf8',
];
ENDFILE"
    
    # Deshabilitar GII en producción o si no está instalado
    exec_in_web "cd /var/www/html && cp config/web.php config/web.php.backup 2>/dev/null || true"
    exec_in_web "cd /var/www/html && sed -i \"s/'modules' => \[/'modules' => \[\\n    /*\\n    'gii' => [\\n        'class' => 'yii\\\gii\\\Module',\\n    ],\\n    */\\n/g\" config/web.php 2>/dev/null || true"
    
    process "Intentando ejecutar migraciones de Yii2 Basic..."
    if exec_in_web "cd /var/www/html && php yii migrate/up --interactive=0"; then
        success "Migraciones de Yii2 Basic ejecutadas correctamente"
    else
        warning "Las migraciones de Yii2 Basic fallaron o no son necesarias"
    fi
    
    return 0
}

# Configuración para Yii2 Advanced
configure_yii2_advanced_db() {
    process "Configurando base de datos para Yii2 Advanced..."
    
    # Verificar instalación
    if ! exec_in_web "[ -f /var/www/html/vendor/yiisoft/yii2/Yii.php ]"; then
        error "Yii2 Advanced no está instalado correctamente."
        return 1
    fi
    
    # Configurar base de datos común
    exec_in_web "cd /var/www/html && cat > common/config/main-local.php << 'ENDFILE'
<?php
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'pgsql:host=db;port=5432;dbname=${PROJECT_NAME}_db',
            'username' => 'postgres',
            'password' => 'password',
            'charset' => 'utf8',
        ],
    ],
];
ENDFILE"
    
    # Configurar base de datos para frontend y backend
    for app in frontend backend; do
        exec_in_web "cd /var/www/html && cat > ${app}/config/main-local.php << 'ENDFILE'
<?php
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'pgsql:host=db;port=5432;dbname=${PROJECT_NAME}_db',
            'username' => 'postgres',
            'password' => 'password',
            'charset' => 'utf8',
        ],
    ],
];
ENDFILE"
    done
    
    process "Ejecutando migraciones de Yii2 Advanced..."
    if exec_in_web "cd /var/www/html && php yii migrate/up --interactive=0"; then
        success "Migraciones de Yii2 Advanced ejecutadas correctamente"
    else
        warning "Las migraciones de Yii2 Advanced fallaron o no son necesarias"
    fi
    
    return 0
}

# Mostrar resumen final MEJORADO
show_final_summary() {
    echo ""
    success "🎉 ¡PROYECTO CREADO EXITOSAMENTE!"
    echo "=================================="
    echo ""
    info "📊 RESUMEN FINAL:"
    echo "-----------------"
    echo "  📂 Proyecto: $PROJECT_NAME"
    echo "  🚀 Framework: $FRAMEWORK"
    echo "  🐘 PHP: $PHP_VERSION"
    echo "  🌐 URL: http://localhost:${WEB_PORT}"
    echo "  🗄️  Base de datos: localhost:${DB_PORT}"
    echo "  📁 Directorio: $DOCKER_DIR/src/$PROJECT_NAME/"
    echo ""
    
    # Información específica por framework
    case "$FRAMEWORK" in
        "yii2-advanced")
            info "🌐 URLs de Yii2 Advanced:"
            echo "  Frontend: http://localhost:${WEB_PORT}"
            echo "  Backend: http://localhost:${WEB_PORT}/backend/web"
            ;;
        *)
            info "🌐 URL de la aplicación:"
            echo "  http://localhost:${WEB_PORT}"
            ;;
    esac
    echo ""
    
    info "🚀 COMANDOS ÚTILES:"
    echo "------------------"
    echo "  Iniciar proyecto: cd $DOCKER_DIR && docker-compose up -d"
    echo "  Detener proyecto: cd $DOCKER_DIR && docker-compose down"
    echo "  Ver logs: cd $DOCKER_DIR && docker-compose logs"
    echo "  Acceder a la consola: cd $DOCKER_DIR && docker-compose exec web bash"
    echo ""
    
    info "🔗 CONEXIÓN A LA BASE DE DATOS:"
    echo "------------------------------"
    echo "  Host: localhost"
    echo "  Puerto: ${DB_PORT}"
    echo "  Base de datos: ${PROJECT_NAME}_db"
    echo "  Usuario: postgres"
    echo "  Contraseña: password"
    echo ""
    
    # Instrucciones específicas por framework
    case "$FRAMEWORK" in
        "yii2-basic"|"yii2-advanced")
            info "🔧 INSTRUCCIONES ESPECÍFICAS PARA YII2:"
            echo "-------------------------------------"
            echo "  Si hay problemas con dependencias:"
            echo "    cd $DOCKER_DIR && docker-compose exec web composer install"
            if [ "$FRAMEWORK" = "yii2-advanced" ]; then
                echo "  Para inicializar el proyecto:"
                echo "    cd $DOCKER_DIR && docker-compose exec web php init"
            fi
            echo "  Para ejecutar migraciones:"
            echo "    cd $DOCKER_DIR && docker-compose exec web php yii migrate/up --interactive=0"
            echo "  Para instalar módulos de desarrollo:"
            echo "    cd $DOCKER_DIR && docker-compose exec web composer require --dev yiisoft/yii2-gii"
            echo "    cd $DOCKER_DIR && docker-compose exec web composer require --dev yiisoft/yii2-debug"
            echo ""
            ;;
        "yii3")
            info "🔧 INSTRUCCIONES ESPECÍFICAS PARA YII3:"
            echo "-------------------------------------"
            echo "  Para ejecutar migraciones: cd $DOCKER_DIR && docker-compose exec web php ./yii migrate/up --interactive=0"
            echo ""
            ;;
        "laravel")
            info "🔧 INSTRUCCIONES ESPECÍFICAS PARA LARAVEL:"
            echo "----------------------------------------"
            echo "  Para ejecutar migraciones: cd $DOCKER_DIR && docker-compose exec web php artisan migrate"
            echo "  Para generar key: cd $DOCKER_DIR && docker-compose exec web php artisan key:generate"
            echo ""
            ;;
    esac
    
    info "📝 PRÓXIMOS PASOS:"
    echo "-----------------"
    echo "  1. Accede a la URL mostrada arriba para ver tu aplicación"
    echo "  2. Configura la base de datos si es necesario"
    echo "  3. ¡Comienza a desarrollar!"
    echo ""
}

# Función principal
main() {
    clear
    echo "========================================"
    echo "  GENERADOR DE PROYECTOS CON DOCKER v1.1"
    echo "========================================"
    echo ""
    
    check_docker_installation
    check_docker_permissions
    check_internet_connection
    
    select_framework
    
    get_project_name
    
    if ! create_directory_structure; then
        error "Error creando la estructura de directorios"
        exit 1
    fi
    
    if ! create_env_file; then
        error "Error creando el archivo .env"
        exit 1
    fi
    
    if ! create_apache_config; then
        error "Error creando la configuración de Apache"
        exit 1
    fi
    
    if ! create_dockerfile; then
        error "Error creando el Dockerfile"
        exit 1
    fi
    
    if ! create_docker_compose; then
        error "Error creando docker-compose.yml"
        exit 1
    fi
    
    if build_docker_containers; then
        process "Esperando inicialización completa de servicios..."
        sleep 20
        
        if create_framework_project; then
            process "Configurando la aplicación..."
            if configure_database; then
                show_final_summary
            else
                warning "Proyecto creado pero la configuración de BD tuvo problemas menores"
                show_final_summary
            fi
        else
            error "Error al crear el proyecto del framework"
            exit 1
        fi
    else
        error "Error al construir los contenedores Docker"
        exit 1
    fi
}

if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    main "$@"
fi

Similiar Collections

Python strftime reference pandas.Period.strftime python - Formatting Quarter time in pandas columns - Stack Overflow python - Pandas: Change day - Stack Overflow python - Check if multiple columns exist in a df - Stack Overflow Pandas DataFrame apply() - sending arguments examples python - How to filter a dataframe of dates by a particular month/day? - Stack Overflow python - replace a value in the entire pandas data frame - Stack Overflow python - Replacing blank values (white space) with NaN in pandas - Stack Overflow python - get list from pandas dataframe column - Stack Overflow python - How to drop rows of Pandas DataFrame whose value in a certain column is NaN - Stack Overflow python - How to drop rows of Pandas DataFrame whose value in a certain column is NaN - Stack Overflow python - How to lowercase a pandas dataframe string column if it has missing values? - Stack Overflow How to Convert Integers to Strings in Pandas DataFrame - Data to Fish How to Convert Integers to Strings in Pandas DataFrame - Data to Fish create a dictionary of two pandas Dataframe columns? - Stack Overflow python - ValueError: No axis named node2 for object type <class 'pandas.core.frame.DataFrame'> - Stack Overflow Python Pandas iterate over rows and access column names - Stack Overflow python - Creating dataframe from a dictionary where entries have different lengths - Stack Overflow python - Deleting DataFrame row in Pandas based on column value - Stack Overflow python - How to check if a column exists in Pandas - Stack Overflow python - Import pandas dataframe column as string not int - Stack Overflow python - What is the most efficient way to create a dictionary of two pandas Dataframe columns? - Stack Overflow Python Loop through Excel sheets, place into one df - Stack Overflow python - How do I get the row count of a Pandas DataFrame? - Stack Overflow python - How to save a new sheet in an existing excel file, using Pandas? - Stack Overflow Python Loop through Excel sheets, place into one df - Stack Overflow How do I select a subset of a DataFrame? — pandas 1.2.4 documentation python - Delete column from pandas DataFrame - Stack Overflow python - Convert list of dictionaries to a pandas DataFrame - Stack Overflow How to Add or Insert Row to Pandas DataFrame? - Python Examples python - Check if a value exists in pandas dataframe index - Stack Overflow python - Set value for particular cell in pandas DataFrame using index - Stack Overflow python - Pandas Dataframe How to cut off float decimal points without rounding? - Stack Overflow python - Pandas: Change day - Stack Overflow python - Clean way to convert quarterly periods to datetime in pandas - Stack Overflow Pandas - Number of Months Between Two Dates - Stack Overflow python - MonthEnd object result in <11 * MonthEnds> instead of number - Stack Overflow python - Extracting the first day of month of a datetime type column in pandas - Stack Overflow
MySQL MULTIPLES INNER JOIN How to Use EXISTS, UNIQUE, DISTINCT, and OVERLAPS in SQL Statements - dummies postgresql - SQL OVERLAPS PostgreSQL Joins: Inner, Outer, Left, Right, Natural with Examples PostgreSQL Joins: A Visual Explanation of PostgreSQL Joins PL/pgSQL Variables ( Format Dates ) The Ultimate Guide to PostgreSQL Date By Examples Data Type Formatting Functions PostgreSQL - How to calculate difference between two timestamps? | TablePlus Date/Time Functions and Operators PostgreSQL - DATEDIFF - Datetime Difference in Seconds, Days, Months, Weeks etc - SQLines CASE Statements in PostgreSQL - DataCamp SQL Optimizations in PostgreSQL: IN vs EXISTS vs ANY/ALL vs JOIN PostgreSQL DESCRIBE TABLE Quick and best way to Compare Two Tables in SQL - DWgeek.com sql - Best way to select random rows PostgreSQL - Stack Overflow PostgreSQL: Documentation: 13: 70.1. Row Estimation Examples Faster PostgreSQL Counting How to Add a Default Value to a Column in PostgreSQL - PopSQL How to Add a Default Value to a Column in PostgreSQL - PopSQL SQL Subquery - Dofactory SQL IN - SQL NOT IN - JournalDev DROP FUNCTION (Transact-SQL) - SQL Server | Microsoft Docs SQL : Multiple Row and Column Subqueries - w3resource PostgreSQL: Documentation: 9.5: CREATE FUNCTION PostgreSQL CREATE FUNCTION By Practical Examples datetime - PHP Sort a multidimensional array by element containing date - Stack Overflow database - Oracle order NULL LAST by default - Stack Overflow PostgreSQL: Documentation: 9.5: Modifying Tables PostgreSQL: Documentation: 14: SELECT postgresql - sql ORDER BY multiple values in specific order? - Stack Overflow How do I get the current unix timestamp from PostgreSQL? - Database Administrators Stack Exchange SQL MAX() with HAVING, WHERE, IN - w3resource linux - Which version of PostgreSQL am I running? - Stack Overflow Copying Data Between Tables in a Postgres Database php - How to remove all numbers from string? - Stack Overflow sql - How to get a list column names and datatypes of a table in PostgreSQL? - Stack Overflow postgresql - How do I remove all spaces from a field in a Postgres database in an update query? - Stack Overflow sql - How to get a list column names and datatypes of a table in PostgreSQL? - Stack Overflow How to change PRIMARY KEY of an existing PostgreSQL table? · GitHub Drop tables w Dependency Tracking ( constraints ) Import CSV File Into PosgreSQL Table How To Import a CSV into a PostgreSQL Database How can I drop all the tables in a PostgreSQL database? - Stack Overflow How can I drop all the tables in a PostgreSQL database? - Stack Overflow PostgreSQL CASE Statements & Examples using WHEN-THEN, if-else and switch | DataCamp PostgreSQL LEFT: Get First N Characters in a String How can I drop all the tables in a PostgreSQL database? - Stack Overflow How can I drop all the tables in a PostgreSQL database? - Stack Overflow PostgreSQL - Copy Table - GeeksforGeeks PostgreSQL BETWEEN Query with Example sql - Postgres Query: finding values that are not numbers - Stack Overflow PostgreSQL UPDATE Join with A Practical Example
Request API Data with JavaScript or PHP (Access a Json data with PHP API) PHPUnit – The PHP Testing Framework phpspec array_column How to get closest date compared to an array of dates in PHP Calculating past and future dates < PHP | The Art of Web PHP: How to check which item in an array is closest to a given number? - Stack Overflow implode php - Calculate difference between two dates using Carbon and Blade php - Create a Laravel Request object on the fly testing - How can I measure the speed of code written in PHP? testing - How can I measure the speed of code written in PHP? What to include in gitignore for a Laravel and PHPStorm project Laravel Chunk Eloquent Method Example - Tuts Make html - How to solve PHP error 'Notice: Array to string conversion in...' - Stack Overflow PHP - Merging two arrays into one array (also Remove Duplicates) - Stack Overflow php - Check if all values in array are the same - Stack Overflow PHP code - 6 lines - codepad php - Convert array of single-element arrays to one a dimensional array - Stack Overflow datetime - PHP Sort a multidimensional array by element containing date - Stack Overflow sql - Division ( / ) not giving my answer in postgresql - Stack Overflow Get current date, given a timezone in PHP? - Stack Overflow php - Get characters after last / in url - Stack Overflow Add space after 7 characters - PHP Coding Help - PHP Freaks php - Laravel Advanced Wheres how to pass variable into function? - Stack Overflow php - How can I manually return or throw a validation error/exception in Laravel? - Stack Overflow php - How to add meta data in laravel api resource - Stack Overflow php - How do I create a webhook? - Stack Overflow Webhooks - Examples | SugarOutfitters Accessing cells - PhpSpreadsheet Documentation Reading and writing to file - PhpSpreadsheet Documentation PHP 7.1: Numbers shown with scientific notation even if explicitely formatted as text · Issue #357 · PHPOffice/PhpSpreadsheet · GitHub How do I install Java on Ubuntu? nginx - How to execute java command from php page with shell_exec() function? - Stack Overflow exec - Executing a java .jar file with php - Stack Overflow Measuring script execution time in PHP - GeeksforGeeks How to CONVERT seconds to minutes? PHP: Check if variable exist but also if has a value equal to something - Stack Overflow How to declare a global variable in php? - Stack Overflow How to zip a whole folder using PHP - Stack Overflow php - Saving file into a prespecified directory using FPDF - Stack Overflow PHP 7.0 get_magic_quotes_runtime error - Stack Overflow How to Create an Object Without Class in PHP ? - GeeksforGeeks Recursion in PHP | PHPenthusiast PHP PDO Insert Tutorial Example - DEV Community PHP Error : Unparenthesized `a ? b : c ? d : e` is deprecate | Laravel.io mysql - Which is faster: multiple single INSERTs or one multiple-row INSERT? - Stack Overflow Display All PHP Errors: Basic & Advanced Usage Need to write at beginning of file with PHP - Stack Overflow Append at the beginning of the file in PHP - Stack Overflow PDO – Insert, update, and delete records in PHP – BrainBell php - How to execute a raw sql query with multiple statement with laravel - Stack Overflow
Clear config cache Eloquent DB::Table RAW Query / WhereNull Laravel Eloquent "IN" Query get single column value in laravel eloquent php - How to use CASE WHEN in Eloquent ORM? - Stack Overflow AND-OR-AND + brackets with Eloquent - Laravel Daily Database: Query Builder - Laravel - The PHP Framework For Web Artisans ( RAW ) Combine Foreach Loop and Eloquent to perform a search | Laravel.io Access Controller method from another controller in Laravel 5 How to Call a controller function in another Controller in Laravel 5 php - Create a Laravel Request object on the fly php - Laravel 5.6 Upgrade caused Logging to break Artisan Console - Laravel - The PHP Framework For Web Artisans What to include in gitignore for a Laravel and PHPStorm project php - Create a Laravel Request object on the fly Process big DB table with chunk() method - Laravel Daily How to insert big data on the laravel? - Stack Overflow php - How can I build a condition based query in Laravel? - Stack Overflow Laravel Chunk Eloquent Method Example - Tuts Make Database: Migrations - Laravel - The PHP Framework For Web Artisans php - Laravel Model Error Handling when Creating - Exception Laravel - Inner Join with Multiple Conditions Example using Query Builder - ItSolutionStuff.com laravel cache disable phpunit code example | Newbedev In PHP, how to check if a multidimensional array is empty? · Humblix php - Laravel firstOrNew how to check if it's first or new? - Stack Overflow get base url laravel 8 Code Example Using gmail smtp via Laravel: Connection could not be established with host smtp.gmail.com [Connection timed out #110] - Stack Overflow php - Get the Last Inserted Id Using Laravel Eloquent - Stack Overflow php - Laravel-5 'LIKE' equivalent (Eloquent) - Stack Overflow Accessing cells - PhpSpreadsheet Documentation How to update chunk records in Laravel php - How to execute external shell commands from laravel controller? - Stack Overflow How to convert php array to laravel collection object 3 Best Laravel Redis examples to make your site load faster How to Create an Object Without Class in PHP ? - GeeksforGeeks Case insensitive search with Eloquent | Laravel.io How to Run Specific Seeder in Laravel? - ItSolutionStuff.com PHP Error : Unparenthesized `a ? b : c ? d : e` is deprecate | Laravel.io How to chunk query results in Laravel php - How to execute a raw sql query with multiple statement with laravel - Stack Overflow
PostgreSQL POSITION() function PostgresQL ANY / SOME Operator ( IN vs ANY ) PostgreSQL Substring - Extracting a substring from a String How to add an auto-incrementing primary key to an existing table, in PostgreSQL PostgreSQL STRING_TO_ARRAY()function mysql FIND_IN_SET equivalent to postgresql PL/pgSQL Variables ( Format Dates ) The Ultimate Guide to PostgreSQL Date By Examples Data Type Formatting Functions PostgreSQL - How to calculate difference between two timestamps? | TablePlus Date/Time Functions and Operators PostgreSQL - DATEDIFF - Datetime Difference in Seconds, Days, Months, Weeks etc - SQLines CASE Statements in PostgreSQL - DataCamp SQL Optimizations in PostgreSQL: IN vs EXISTS vs ANY/ALL vs JOIN PL/pgSQL Variables PostgreSQL: Documentation: 11: CREATE PROCEDURE Reading a Postgres EXPLAIN ANALYZE Query Plan Faster PostgreSQL Counting sql - Fast way to discover the row count of a table in PostgreSQL - Stack Overflow PostgreSQL: Documentation: 9.1: tablefunc PostgreSQL DESCRIBE TABLE Quick and best way to Compare Two Tables in SQL - DWgeek.com sql - Best way to select random rows PostgreSQL - Stack Overflow How to Add a Default Value to a Column in PostgreSQL - PopSQL How to Add a Default Value to a Column in PostgreSQL - PopSQL PL/pgSQL IF Statement PostgreSQL: Documentation: 9.1: Declarations SQL Subquery - Dofactory SQL IN - SQL NOT IN - JournalDev PostgreSQL - IF Statement - GeeksforGeeks How to work with control structures in PostgreSQL stored procedures: Using IF, CASE, and LOOP statements | EDB PL/pgSQL IF Statement How to combine multiple selects in one query - Databases - ( loop reference ) DROP FUNCTION (Transact-SQL) - SQL Server | Microsoft Docs SQL : Multiple Row and Column Subqueries - w3resource PostgreSQL: Documentation: 9.5: CREATE FUNCTION PostgreSQL CREATE FUNCTION By Practical Examples datetime - PHP Sort a multidimensional array by element containing date - Stack Overflow database - Oracle order NULL LAST by default - Stack Overflow PostgreSQL: Documentation: 9.5: Modifying Tables PostgreSQL: Documentation: 14: SELECT PostgreSQL Array: The ANY and Contains trick - Postgres OnLine Journal postgresql - sql ORDER BY multiple values in specific order? - Stack Overflow sql - How to aggregate two PostgreSQL columns to an array separated by brackets - Stack Overflow How do I get the current unix timestamp from PostgreSQL? - Database Administrators Stack Exchange SQL MAX() with HAVING, WHERE, IN - w3resource linux - Which version of PostgreSQL am I running? - Stack Overflow Postgres login: How to log into a Postgresql database | alvinalexander.com Copying Data Between Tables in a Postgres Database PostgreSQL CREATE FUNCTION By Practical Examples php - How to remove all numbers from string? - Stack Overflow sql - How to get a list column names and datatypes of a table in PostgreSQL? - Stack Overflow postgresql - How do I remove all spaces from a field in a Postgres database in an update query? - Stack Overflow sql - How to get a list column names and datatypes of a table in PostgreSQL? - Stack Overflow A Step-by-Step Guide To PostgreSQL Temporary Table How to change PRIMARY KEY of an existing PostgreSQL table? · GitHub PostgreSQL UPDATE Join with A Practical Example PostgreSQL: Documentation: 15: CREATE SEQUENCE How can I drop all the tables in a PostgreSQL database? - Stack Overflow PostgreSQL Show Tables Drop tables w Dependency Tracking ( constraints ) Import CSV File Into PosgreSQL Table How To Import a CSV into a PostgreSQL Database How can I drop all the tables in a PostgreSQL database? - Stack Overflow How can I drop all the tables in a PostgreSQL database? - Stack Overflow PostgreSQL CASE Statements & Examples using WHEN-THEN, if-else and switch | DataCamp PostgreSQL LEFT: Get First N Characters in a String How can I drop all the tables in a PostgreSQL database? - Stack Overflow How can I drop all the tables in a PostgreSQL database? - Stack Overflow postgresql - Binary path in the pgAdmin preferences - Database Administrators Stack Exchange postgresql - Binary path in the pgAdmin preferences - Database Administrators Stack Exchange PostgreSQL - Copy Table - GeeksforGeeks postgresql duplicate key violates unique constraint - Stack Overflow PostgreSQL BETWEEN Query with Example VACUUM FULL - PostgreSQL wiki How To Remove Spaces Between Characters In PostgreSQL? - Database Administrators Stack Exchange sql - Postgres Query: finding values that are not numbers - Stack Overflow PostgreSQL LEFT: Get First N Characters in a String unaccent: Getting rid of umlauts, accents and special characters
כמה עוד נשאר למשלוח חינם גם לעגלה ולצקאאוט הוספת צ'קבוקס לאישור דיוור בצ'קאאוט הסתרת אפשרויות משלוח אחרות כאשר משלוח חינם זמין דילוג על מילוי כתובת במקרה שנבחרה אפשרות איסוף עצמי הוספת צ'קבוקס לאישור דיוור בצ'קאאוט שינוי האפשרויות בתפריט ה-סידור לפי בווקומרס שינוי הטקסט "אזל מהמלאי" הערה אישית לסוף עמוד העגלה הגבלת רכישה לכל המוצרים למקסימום 1 מכל מוצר קבלת שם המוצר לפי ה-ID בעזרת שורטקוד הוספת כפתור וואטסאפ לקנייה בלופ ארכיון מוצרים הפיכה של מיקוד בצ'קאאוט ללא חובה מעבר ישיר לצ'קאאוט בלחיתה על הוספה לסל (דילוג עגלה) התראה לקבלת משלוח חינם בדף עגלת הקניות גרסה 1 התראה לקבלת משלוח חינם בדף עגלת הקניות גרסה 2 קביעה של מחיר הזמנה מינימלי (מוצג בעגלה ובצ'קאאוט) העברת קוד הקופון ל-ORDER REVIEW העברת קוד הקופון ל-ORDER REVIEW Kadence WooCommerce Email Designer קביעת פונט אסיסנט לכל המייל בתוסף מוצרים שאזלו מהמלאי - יופיעו מסומנים באתר, אבל בתחתית הארכיון הוספת כפתור "קנה עכשיו" למוצרים הסתרת אפשרויות משלוח אחרות כאשר משלוח חינם זמין שיטה 2 שינוי סימן מטבע ש"ח ל-ILS להפוך סטטוס הזמנה מ"השהייה" ל"הושלם" באופן אוטומטי תצוגת הנחה באחוזים שינוי טקסט "בחר אפשרויות" במוצרים עם וריאציות חיפוש מוצר לפי מק"ט שינוי תמונת מוצר לפי וריאציה אחרי בחירה של וריאציה אחת במקרה של וריאציות מרובות הנחה קבועה לפי תפקיד בתעריף קבוע הנחה קבועה לפי תפקיד באחוזים הסרה של שדות משלוח לקבצים וירטואליים הסתרת טאבים מעמוד מוצר הצגת תגית "אזל מהמלאי" בלופ המוצרים להפוך שדות ל-לא חובה בצ'קאאוט שינוי טקסט "אזל מהמלאי" לוריאציות שינוי צבע ההודעות המובנות של ווקומרס הצגת ה-ID של קטגוריות המוצרים בעמוד הקטגוריות אזל מהמלאי- שינוי ההודעה, תגית בלופ, הודעה בדף המוצר והוספת אזל מהמלאי על וריאציה הוספת שדה מחיר ספק לדף העריכה שינוי טקסט אזל מהמלאי תמונות מוצר במאונך לצד תמונת המוצר הראשית באלמנטור הוספת כפתור קנה עכשיו לעמוד המוצר בקניה הזו חסכת XX ש''ח לאפשר למנהל חנות לנקות קאש ברוקט לאפשר רק מוצר אחד בעגלת קניות הוספת סימון אריזת מתנה ואזור להוראות בצ'קאאוט של ווקומרס הצגת הנחה במספר (גודל ההנחה) הוספת "אישור תקנון" לדף התשלום הצגת רשימת תכונות המוצר בפרונט שינוי כמות מוצרים בצ'קאאוט ביטול השדות בצ'קאאוט שינוי כותרות ופלייסהולדר של השדות בצ'קאאוט
החלפת טקסט באתר (מתאים גם לתרגום נקודתי) הסרת פונטים של גוגל מתבנית KAVA ביטול התראות במייל על עדכון וורדפרס אוטומטי הוספת תמיכה בקבצי VCF באתר (קבצי איש קשר VCARD) - חלק 1 להחריג קטגוריה מסוימת מתוצאות החיפוש שליפת תוכן של ריפיטר יצירת כפתור שיתוף למובייל זיהוי אלו אלמנטים גורמים לגלילה אופקית התקנת SMTP הגדרת טקסט חלופי לתמונות לפי שם הקובץ הוספת התאמת תוספים לגרסת WP הוספת טור ID למשתמשים הסרת כותרת בתבנית HELLO הסרת תגובות באופן גורף הרשאת SVG חילוץ החלק האחרון של כתובת העמוד הנוכחי חילוץ הסלאג של העמוד חילוץ כתובת העמוד הנוכחי מניעת יצירת תמונות מוקטנות התקנת SMTP הצגת ה-ID של קטגוריות בעמוד הקטגוריות להוריד מתפריט הניהול עמודים הוספת Favicon שונה לכל דף ודף הוספת אפשרות שכפול פוסטים ובכלל (של שמעון סביר) הסרת תגובות באופן גורף 2 בקניה הזו חסכת XX ש''ח חיפוש אלמנטים סוררים, גלישה צדית במובייל שיטה 1 לאפשר רק מוצר אחד בעגלת קניות הצגת הנחה במספר (גודל ההנחה) הוספת "אישור תקנון" לדף התשלום שינוי צבע האדמין לפי סטטוס העמוד/פוסט שינוי צבע אדמין לכולם לפי הסכמות של וורדפרס תצוגת כמות צפיות מתוך הדשבורד של וורדפרס הצגת סוג משתמש בפרונט גלילה אין סופית במדיה שפת הממשק של אלמנטור תואמת לשפת המשתמש אורך תקציר מותאם אישית
הודעת שגיאה מותאמת אישית בטפסים להפוך כל סקשן/עמודה לקליקבילית (לחיצה) - שיטה 1 להפוך כל סקשן/עמודה לקליקבילית (לחיצה) - שיטה 2 שינוי הגבלת הזיכרון בשרת הוספת לינק להורדת מסמך מהאתר במייל הנשלח ללקוח להפוך כל סקשן/עמודה לקליקבילית (לחיצה) - שיטה 3 יצירת כפתור שיתוף למובייל פתיחת דף תודה בטאב חדש בזמן שליחת טופס אלמנטור - טופס בודד בדף פתיחת דף תודה בטאב חדש בזמן שליחת טופס אלמנטור - טפסים מרובים בדף ביי ביי לאריק ג'ונס (חסימת ספאם בטפסים) זיהוי אלו אלמנטים גורמים לגלילה אופקית לייבלים מרחפים בטפסי אלמנטור יצירת אנימציה של "חדשות רצות" בג'ט (marquee) שינוי פונט באופן דינאמי בג'ט פונקציה ששולפת שדות מטא מתוך JET ומאפשרת לשים הכל בתוך שדה SELECT בטופס אלמנטור הוספת קו בין רכיבי התפריט בדסקטופ ולדציה למספרי טלפון בטפסי אלמנטור חיבור שני שדות בטופס לשדה אחד שאיבת נתון מתוך כתובת ה-URL לתוך שדה בטופס וקידוד לעברית מדיה קוורי למובייל Media Query תמונות מוצר במאונך לצד תמונת המוצר הראשית באלמנטור הצגת תאריך עברי פורמט תאריך מותאם אישית תיקון שדה תאריך בטופס אלמנטור במובייל שאיבת פרמטר מתוך הכתובת והזנתו לתוך שדה בטופס (PARAMETER, URL, INPUT) עמודות ברוחב מלא באלמנטור עמודה דביקה בתוך אלמנטור יצירת "צל" אומנותי קוד לסוויצ'ר, שני כפתורים ושני אלמנטים סקריפט לסגירת פופאפ של תפריט לאחר לחיצה על אחד העמודים הוספת כפתור קרא עוד שפת הממשק של אלמנטור תואמת לשפת המשתמש להריץ קוד JS אחרי שטופס אלמנטור נשלח בהצלחה מצב ממורכז לקרוסלת תמונות של אלמנטור לייבלים מרחפים בטפסי פלואנטפורמס שדרוג חוויית העלאת הקבצים באלמנטור
What is the fastest or most elegant way to compute a set difference using Javascript arrays? - Stack Overflow javascript - Class Binding ternary operator - Stack Overflow Class and Style Bindings — Vue.js How to remove an item from an Array in JavaScript javascript - How to create a GUID / UUID - Stack Overflow json - Remove properties from objects (JavaScript) - Stack Overflow javascript - Remove property for all objects in array - Stack Overflow convert array to dictionary javascript Code Example JavaScript: Map an array of objects to a dictionary - DEV Community JavaScript: Map an array of objects to a dictionary - DEV Community javascript - How to replace item in array? - Stack Overflow javascript - How to replace item in array? - Stack Overflow How can I replace Space with %20 in javascript? - Stack Overflow JavaScript: Check If Array Has All Elements From Another Array - Designcise javascript - How to use format() on a moment.js duration? - Stack Overflow javascript - Elegant method to generate array of random dates within two dates - Stack Overflow Compare two dates in JavaScript using moment.js - Poopcode javascript - Can ES6 template literals be substituted at runtime (or reused)? - Stack Overflow javascript - How to check if array is empty or does not exist? - Stack Overflow How To Use .map() to Iterate Through Array Items in JavaScript | DigitalOcean Check if a Value Is Object in JavaScript | Delft Stack vuejs onclick open url in new tab Code Example javascript - Trying to use fetch and pass in mode: no-cors - Stack Overflow Here are the most popular ways to make an HTTP request in JavaScript JavaScript Array Distinct(). Ever wanted to get distinct element - List of object to a Set How to get distinct values from an array of objects in JavaScript? - Stack Overflow Sorting an array by multiple criteria with vanilla JavaScript | Go Make Things javascript - Map and filter an array at the same time - Stack Overflow ecmascript 6 - JavaScript Reduce Array of objects to object dictionary - Stack Overflow javascript - Convert js Array to Dictionary/Hashmap - Stack Overflow javascript - Is there any way to use a numeric type as an object key? - Stack Overflow
Hooks Cheatsheet React Tutorial Testing Overview – React performance Animating Between Views in React | CSS-Tricks - CSS-Tricks Building an Animated Counter with React and CSS - DEV Community Animate When Element is In-View with Framer Motion | by Chad Murobayashi | JavaScript in Plain English Handling Scroll Based Animation in React (2-ways) - Ryosuke react-animate-on-scroll - npm Bring Life to Your Website | Parallax Scrolling using React and CSS - YouTube react-cool-inview: React hook to monitor an element enters or leaves the viewport (or another element) - DEV Community Improve React Performance using Lazy Loading💤 and Suspense | by Chidume Nnamdi 🔥💻🎵🎮 | Bits and Pieces Mithi's Epic React Exercises React Hooks - Understanding Component Re-renders | by Gupta Garuda | Medium reactjs - When to use useImperativeHandle, useLayoutEffect, and useDebugValue - Stack Overflow useEffect vs useLayoutEffect When to useMemo and useCallback useLockBody hook hooks React animate fade on mount How to Make a React Website with Page Transitions using Framer Motion - YouTube Build a React Image Slider Carousel from Scratch Tutorial - YouTube React Router: useParams | by Megan Lo | Geek Culture | Medium useEffect Fetch POST in React | React Tutorial Updating Arrays in State Background Images in React React Context API : A complete guide | by Pulkit Sharma | Medium Code-Splitting – React Lazy Loading React Components (with react.lazy and suspense) | by Nwose Lotanna | Bits and Pieces Lazy loading React components - LogRocket Blog Code Splitting a Redux Application | Pluralsight react.js folder structure | by Vinoth kumar | Medium react boilerplate React State Management best practices for 2021 (aka no Redux) | by Emmanuel Meric de Bellefon | Medium Create an advanced scroll lock React Hook - LogRocket Blog UseOnClickOutside : Custom hook to detect the mouse click on outside (typescript) - Hashnode react topics 8 Awesome React Hooks web-vitals: Essential metrics for a healthy site. scripts explained warnings and dependency errors Learn the useContext Hook in React - Programming with Mosh Learn useReducer Hook in React - Programming with Mosh Guide To Learn useEffect Hook in React - Programming with Mosh Getting Started With Jest - Testing is Fun - Programming with Mosh Building an accessible React Modal component - Programming with Mosh Kent C. Dodds's free React course
SAVED SEARCH DATE FORMAT(page wise) AND LOOP THROUGH EACH DATA || With Pagination || Avoids 4000 data Limt Rest in Suitlet CALL ANOTHER SCRIPT | SUITELET FROM ANY OTHER SCRIPT | SUITELET | ALSO PASSING OF PARAMETERS CALLING RESTLET |FROM SUITELET Where Is The “IF” Statement In A Saved Search Formula? – > script everything Where Is The “IF” Statement In A Saved Search Formula? – > script everything ClientScript Add Sublist Line items etc Saving Record In different way. BFO AND FREEMarkup || advance pdf html template Join In Lookup Field Search || Alternative of saved search Use Saved Serch or Lookup field search for Getting value or id of Fields not visible On UI or xml https://www.xmlvalidation.com/ XML Validate Load Record--->selectLine--->CommitLine--->Save [Set Sublist field Data After Submit] Null Check Custom Check SEND MAIL WITH FILE ATTACHED EXECUTION CONTEXT || runtime.context In BeforeLoad Use This When Trying to Get Value In BeforeLoad Convert String Into JSON Freemarker Below 2.3.31 use ?eval || above use ?eval_json Design Of Full Advance PDF Template using Suitescript PART 1: Design Of Full Advance PDF Template using Suitescript PART 2: Iterate Through Complex Nested JSON Object Freemarker || BFO || Advance PDF HTML Template WORKING JSON OBJ ITERATE FreeMarker get String convert to JSON ,Iterate through it ,Print Values In Table Series Addition Freemarker Using Loop(List) Modified Null Check || Keep Updated One Here Navigations In Netsuite || Records || etc DATE FORMAT Netsuite Javascript Transform Invoice To Credit Memo NULLCHECK Freemarker||BFO|| XML||Template Before Accessing Any Value Refresh Page Without Pop Up | | client script || Reload Page Easy Manner To Format Date || Date to simple Format || MM/DD/YYYY Format ||Simple Date CUSTOM ERROR MESSAGE CREATE HOW TO STOP MAP/REDUCE SCRIPT RUNNING FILTER ON JSON OBJECT SAVED SEARCH CRITERIA LOGIC FOR WITHIN DATE | | WITHIN START DATE END DATE TO GET Line no. also of Error NETSUITE SERVER TIMEZONE : (GMT-05:00) Eastern Time (US & Canada) || Problem resolved for Map/reduce Timezone issue for Start Date in map/reduce || RESOLVED THE ISSUE compare/check date that it lies between two dates or not || Use of .getTime() object of Date TO FIND ALL TASKS WITHIN SO START DATE AND END DATE || SAVED SEARCH CODE WORDS Saved Search Get only one Result || getRange netsuite - SuiteScript 2.0 Add filters to saved search in script - Stack Overflow || Addition in saved search filter MASS DELETE ALL RCORD FROM SAVED SEARCH DATA IN PARAMETER|| ADD SS IN THE DEPLOYMENT PARAMETER SAVED SEARCH DATE COMPARE AND GET RESULT IN DAYS HOURS MINUTES Multiple Formula Columns Comment In Saved Search || Saved search used SQL language for writing formula Logic Set Addressbook Values || Addressbook is a subrecord SuiteQL || N/Query Module || Support SQL query VALIDATE 2 DATES LIE BETWEEN 2 DATES OR NOT || OVERLAPPING CASE ALSO Weeks Within two dates:
Delete Duplication SQL Using Subquery to find salary above average Sorting Rank Number In Sql find nth Salary in SQL sql - Counting rows in the table which have 1 or more missing values - Stack Overflow How to create customized quarter based on a given date column sql sql server - Stack Overflow get total sales per quarter, every year delete duplicate for table without primary key SQL Server REPLACE Function By Practical Examples adding row_number row_id to table find total sales per cateogry each year change empty string into null values Case when to update table update table using replace function How to Use CASE WHEN With SUM() in SQL | LearnSQL.com find each year sale in each city and state, then sum them all using regexp_replace to remove special chracter postgresql find quarter sale in each state, and sum it using unbounded preceding, and using percent rank create delimiter for the phone number regexp_replace to remove special characters using row between to cummulative sum update null values using WHERE filter insert into table command sum cummulative value in SQL SQL Important syntax Auto Increment in SQL read json file on postgresql Moving Average n Moving Total pivot on potgresql Rollup and Cube date function in postgresql select specify part of string using substring change column data type exclude null values in sql how to exclude zero in our counting finding outlier in sql how to import data with identifier (primary key) email and name filtering in sql trimming and removing particular string from sql replace string on sql regexp to find string in SQL answers only about email, identifier, lower, substring, date_part, to_char find percentage of null values in total remove duplicate on both tables v2 any and in operator string function moreee bucket function find perfomance index in sql find top max and top min finding world gdp formula (SUM OVER) find month percentage change find highest height in sql with row_number and subquery JOIN AND UNION offset and limit in sql function and variables using views on postgresql find cummulative sums in postgresql find null and not null percentage find specific strings or number in SQL using case when and CAST function Lpad function in Postgresql and string function in general Regexp function in postgresql regular expressions example in postgresql And FUZZYSTRMATCH updated method of deleting duplicates determine column types
Initiate MS Team Group Chat via PowerApps Save the current users email as a variable Creates variable with a theme colour palette Send an email from the current user Filters a data source based on the current logged in user Patch data fields, including a choice column to a data source Changes the colour of a selected item in a Gallery Filter and search a data source via a search box and dropdown Changes visibility based on the selection of another Gallery - used for "Tabs" Display current users first name Fix: Combobox/Search is empty check not working - Power Platform Community Retrive a user photo from SharePoint Get user photo from office365 connector from gallery Set a variable with the current users first name, from the currentUser variable Extract values from a collection Extract value from combo box Extract vale from combo box and convert to string/text Convert collection to JSON Combo box values to collection Show newly created items first / sort by most recent entry, will only show items created today Validate/Validation text box length and/or combo boxes contain data Text input validation - turns border red Lookup value against a text input and disable or enable displaymode Lookup items from a textbox Sets items to choices drop down or combo box Change text value based on lookup results returns tops 10 results and sorts by most recent created date Sets a variable with spilt text from a link - YouTube in this case Pass a null or empty value from Power Apps to a flow
Linuxteaching | linux console browser javascript Debugging in Visual Studio Code C# - Visual Studio Marketplace C# - Visual Studio Marketplace dotnet-install scripts - .NET CLI | Microsoft Docs dotnet-install scripts - .NET CLI | Microsoft Docs undefined .NET Tutorial | Hello World in 5 minutes Configuration files – Nordic Developer Academy CacheStorage.open() - Web APIs | MDN TransIP API Install .NET Core SDK on Linux | Snap Store .NET Tutorial | Hello World in 5 minutes Creating Your First Application in Python - GeeksforGeeks Riverbank Computing | Download Managing Application Dependencies — Python Packaging User Guide Building your first mobile application using Python | Engineering Education (EngEd) Program | Section Building your first mobile application using Python | Engineering Education (EngEd) Program | Section Building your first mobile application using Python | Engineering Education (EngEd) Program | Section Building your first mobile application using Python | Engineering Education (EngEd) Program | Section ActivePython-2.7 - ActiveState - Builds - ActiveState Platform Installation guidance for SQL Server on Linux - SQL Server | Microsoft Docs Ellabusby2006/Anzelmo2022 Ik wil de PHP-versie updaten van Ubuntu / Debian | TransIP Ik wil de PHP-versie updaten van Ubuntu / Debian | TransIP W3Schools Tryit Editor .NET installeren op Debian - .NET | Microsoft Learn .NET installeren op Debian - .NET | Microsoft Learn .NET installeren op Debian - .NET | Microsoft Learn .NET installeren op Debian - .NET | Microsoft Learn How To Build A Simple Star Rating System - Simon Ugorji | Tealfeed Visual Studio Code language identifiers Running Visual Studio Code on Linux HTML Forms Installeren .NET op Debian - .NET | Microsoft Learn StarCoderEx (AI code generator) - Visual Studio Marketplace Installeren .NET op Linux zonder een pakketbeheerder te gebruiken - .NET | Microsoft Learn ASP.NET Tutorial | Hello World in 5 minutes | .NET Deploy and connect to SQL Server Linux containers - SQL Server | Microsoft Learn Settings Sync in Visual Studio Code Settings Sync in Visual Studio Code TransIP API Monitoring as Code
.NET Tutorial | Hello World in 5 minutes docx2html - npm Running Visual Studio Code on Linux Connect to an ODBC Data Source (SQL Server Import and Export Wizard) - SQL Server Integration Services (SSIS) | Microsoft Docs .NET installeren in Linux zonder pakketbeheer - .NET | Microsoft Docs TransIP API TransIP API TransIP API TransIP API .NET installeren in Alpine - .NET | Microsoft Docs .NET installeren op Ubuntu - .NET | Microsoft Docs .NET installeren op Ubuntu - .NET | Microsoft Docs Geïnstalleerde .NET-versies controleren op Windows, Linux en macOS - .NET | Microsoft Docs Install .NET Core SDK on Linux | Snap Store .NET Tutorial | Hello World in 5 minutes Riverbank Computing | Download Managing Application Dependencies — Python Packaging User Guide Building your first mobile application using Python | Engineering Education (EngEd) Program | Section Building your first mobile application using Python | Engineering Education (EngEd) Program | Section Building your first mobile application using Python | Engineering Education (EngEd) Program | Section Building your first mobile application using Python | Engineering Education (EngEd) Program | Section ActivePython-2.7 - ActiveState - Builds - ActiveState Platform html - How to get mp3 files to play in iPhone Safari web browser? - Stack Overflow Work with review data  |  Google Business Profile APIs  |  Google Developers Javascript save text file - Javascript .NET installeren op Debian - .NET | Microsoft Learn Deploy and connect to SQL Server Linux containers - SQL Server | Microsoft Learn Settings Sync in Visual Studio Code Settings Sync in Visual Studio Code
Working with JSON in Freemarker - Liferay Community Freemarker parse a String as Json - Stack Overflow Online FreeMarker Template Tester Compiler Validate XML files Convert String Into JSON Freemarker Below 2.3.31 use ?eval || above use ?eval_json Working with JSON in Freemarker - Liferay Community Working with JSON in Freemarker - Liferay Community java - Freemarker iterating over hashmap keys - Stack Overflow java - Freemarker iterating over hashmap keys - Stack Overflow FreeMarker get String convert to JSON ,Iterate through it ,Print Values In Table Online FreeMarker Template Tester || freemarker compiler Series Addition Freemarker Using Loop(List) How to Convert a string to number in freemarker template - Stack Overflow javascript - Grouping JSON by values - Stack Overflow DATE FORMAT Netsuite Javascript Freemarkup | | Iterate through nested JSON all Values Using Nested For Loop Nested JSON Iterate Using BFO javascript - Error parsing XHTML: The content of elements must consist of well-formed character data or markup - Stack Overflow NULLCHECK Freemarker||BFO|| XML||Template Before Accessing Any Value ADVANCE PDF HTML TEMPLATE 7 Tips for Becoming a Pro at NetSuite’s Advanced PDF/HTML HTML Tag Center Does Not Work in Advanced PDF/HTML Templates|| align center HTML BFO NOTES Advanced PDF/HTML Template - NetSuite (Ascendion Holdings Inc) Check Template Code Is Very Different || Bill Payment check template Check Template Code Is Very Different || Bill Payment check template Intro to NetSuite Advanced PDF Source Code Mode | Tutorial | Anchor Group NETSUITE GUIDE OVER PDF/HTML TEMPLATE EDITOR suitescript - Ability to choose between multiple PDF templates on a Netsuite transaction form - Stack Overflow BFO DIV tr td etc User Guide|| USEFULL IMPORTANT Border radius in advanced html/pdf templates is not supported? : Netsuite Comma seperated Number With 2 DECIMAL PLACE || FREEMARKER || ADVANCE PDF HTML TEMPLATE
001-hello-world: Hello Image Classification using OpenVINO™ toolkit 002-openvino-api: OpenVINO API tutorial 003-hello-segmentation: Introduction to Segmentation in OpenVINO 004-hello-detection: Introduction to Detection in OpenVINO 101-tensorflow-to-openvino: TensorFlow to OpenVINO Model Conversion Tutorial 102-pytorch-onnx-to-openvino: PyTorch to ONNX and OpenVINO IR Tutorial 103-paddle-onnx-to-openvino: Convert a PaddlePaddle Model to ONNX and OpenVINO IR 104-model-tools: Working with Open Model Zoo Models 210-ct-scan-live-inference: Live Inference and Benchmark CT-scan Data with OpenVINO 201-vision-monodepth: Monodepth Estimation with OpenVINO 210-ct-scan-live-inference: Live Inference and Benchmark CT-scan Data with OpenVINO 401-object-detection-webcam: Live Object Detection with OpenVINO 402-pose-estimation-webcam: Live Human Pose Estimation with OpenVINO 403-action-recognition-webcam: Human Action Recognition with OpenVINO 211-speech-to-text: Speech to Text with OpenVINO 213-question-answering: Interactive Question Answering with OpenVINO 208-optical-character-recognition: Optical Character Recognition (OCR) with OpenVINO 209-handwritten-ocr: Handwritten Chinese and Japanese OCR 405-paddle-ocr-webcam: PaddleOCR with OpenVINO 305-tensorflow-quantization-aware-training: Optimizing TensorFlow models with Neural Network Compression Framework of OpenVINO by 8-bit quantization 302-pytorch-quantization-aware-training: Optimizing PyTorch models with Neural Network Compression Framework of OpenVINO by 8-bit quantization 301-tensorflow-training-openvino: Post-Training Quantization with TensorFlow Classification Model 301-tensorflow-training-openvino: From Training to Deployment with TensorFlow and OpenVINO 204-named-entity-recognition: Named Entity Recognition with OpenVINO
If statement with switch delete duplicates from an array loop and find class Nullish with an Object - basic tranverse classes in a list substring capitalize substring text with elipses array.at() js media query Dynamic Filter - buttons advanced flow converted if statement Add an array to a HTML dataset getElement Function Intersection Observer template intersection Observer Basic Example fetch data, display and filter for of loop - get index get random index value from an array fetch with post method get id value from url debounce for scrolling get element or elements check functions return values from functions indexOf explantion sorting basic using for-of loop for getting index value of iteration import json data into a JS module Splide slider with modal JS change active class if url path matches Pagination / array of arrays FIlter array or return full array price formatting ignores wrapping element on click Create a dummy array with numbers Random Generated Number Dummy array - list items dummy id Limits the amount of text Random Number generator function format date function Remove duplicates from JSON array data Filter Posts from state remove duplicates and create object simple ternary remove transition with propertyName sorting in reverse counting items using reduce splice explanation Declaring Variables Get primitive properties on a number / string etc using proto check an array of objects exists / check using regex Destructuring nested function scope IFFE function basic switch Switch with function passing an object check length of object while loops (for when the number we are iterating over is unknown) Ternary with 2 / 3 conditions for of loop with index array nested ternary operator callbacks Method Borrowing this keyword and arrow functions rest operator - args functions p1 rest operator - args functions p2 for of loop with index and entries callback functions explained version 1 callback functions explained version 2 Form and value IF Element shorthand function as a callback inside a higher order function Using param for symbol remove 'px' from number scrolling behaviour test 1 clearing event listeners new URL applying css vars scroll behaviours testing intersection observer intersection observer with loop JS docs - writing js docs check is key exists call() nested ternary with function forEach with function and ...args using template literals filter duplicates get class by indexOf returning ternary operator remove children from parent bootstrap rows with cols fetching multple data endpoints Promise.all remove file extension Js snippet for aria expanded passes this from a function containing a listener, to another function dynamic function to change icons compare arrays and push to an empty instead of pushing an object to a data array return the Object.entries(data).map Creating Dynamic filtering using JSON Advanced toggling with 3rd param of force Dynamic Key Assignment flatmap for arrays passing key value pairs from one object to another FInding Prototype Methods Returns Items that are true returning the item data from an array of objects sorting via switch statement filtering with checkboxes JS Docs cheatsheat for param types matches Js syles object on a div element bind grouping groupby() checkbox example conditions modal for text links reduce - dynamic toggle class with force returning objects setProperty with CSS variables CONVERT setProperty with CSS variables to object and functions CONVERT setProperty with CSS variables to object and functions version 2 uses an object instead of a switch statement cookie object functions mapping 3 Async Await / Promise resolve reject filter filter out items from array1 based on array2 promise with init function using maps = toggling class on select Any amount of args in a function Mapping with selections gets all args / arguments from a function map function with selectors listener for click event on a html class session storage page count e.preventDefault for dev and production use mapping for classes and element types element click and get different classes (button or a tag) toggle data attribute Prevent multple click events console object printing avoid duplicate listeners avoid duplicate listeners get the text in a link that has an svg
Microsoft Powershell: Delete registry key or values on remote computer | vGeek - Tales from real IT system Administration environment How to Upload Files Over FTP With PowerShell Configure attack surface reduction in Microsoft Defender using Group Policy or PowerShell – 4sysops WinPE: Create bootable media | Microsoft Learn powershell - Can I get the correct date mixing Get-Date and [DateTime]::FromFileTime - Stack Overflow Search-ADAccount (ActiveDirectory) | Microsoft Docs Manual Package Download - PowerShell | Microsoft Docs Get a List of Expired User Accounts in AD Using PowerShell Search-ADAccount (ActiveDirectory) | Microsoft Docs How to Stop an Unresponsive Hyper-V Virtual Machine | Petri IT Knowledgebase Adding PowerShell 7 to WinPE - Deployment Research Send-MailMessage (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn How to run a PowerShell script as a Windows service – 4sysops Connect to Exchange Online with PowerShell - The Best Method Find the Full Windows Build Number with PowerShell How to find all the ADFS servers in your environment and run diagnostics against them | Michael de Blok How to find ADFS servers in the environment - Windows Server path - PowerShell script working directory (current location) - Stack Overflow How to get the path of the currently executing script in PowerShell [SOLVED] Unable to Delete Hyper-V VM Checkpoints - Spiceworks Published Applications – Carl Stalhood VMM Reporting | Aidan Finn, IT Pro Use PowerShell to search for string in registry keys and values - Stack Overflow Search for Uninstall Strings - Jose Espitia
INCOME AND SPEND SUMMARY: Monthly regular gift income (DD, CC, PayPal) INCOME AND SPEND SO AGENCT AND PAYROLL INCOME AND SPEND Non Monthly DD income INCOME AND SPEND SUMMARY Donation (50020) Income and Spend Summary Appeal (50050) INCOME AND SPEND SUMMARY:FAV Donation (50060) INCOME AND SPEND SUMMARY: In Memory Of (IMO) (50170) INCOME AND SPEND SUMMARY: Single Fundraised Sales (51040)+Books(51050) INCOME AND SPEND SUMMARY: Single Fundraised Sales (51040)+Books(51050) INCOME AND SPEND SUMMARY: Single Fundraised Sales (51040)+Books(51050) INCOME AND SPEND SUMMARY: Single Fundraised Sales (51040)+Books(51050) INCOME AND SPEND SUMMARY: Raffle ticket sales INCOME AND SPEND SUMMARY:51060 - Community Fundraising INCOME AND SPEND SUMMARY:50130 - Collecting Tins INCOME AND SPEND SUMMARY:50110 - Gift Aid REGULAR GIVING SUMMARY: Monthly regular gift payments CC/PP/DD SINGLE GIFT SUMMARY: Single gift payments (donations only) NEW SUPPORTER INCOME: Single gift payments NEW SUPPORTER INCOME: Monthly regular gift income NEW SUPPORTER INCOME: New monthly regular gifts established (new supporters only) NEW SUPPORTER INCOME: Single gift income (new supporters only) EXISTING BASE: INCOME FROM EXISTING REGULAR INSTRUCTIONS EXISTING BASE Monthly regular gift payments (CC/PP/DD) EXISTING BASE: Existing Non monthly DD income Existing Base other regular giving income EXISTINGBASE Cumulative monthly regular gift payments EXISTING BASE Monthly regular gift income from new regular donor EXISTING BASE single gift donations income - existing supporters EXISTING BASE Single gift donations EXISTING BASE: Single gift income - high value gifts Existing Base: Workplace giving income EXISTING BASE Volunteer fundraising & other cash income (Community Events, FB fundraiser, Lilo) EXISTING BASE: Gift aid income ES ES Monthly cc/pp/dd Income existing ES ES Monthly cc/pp/dd Payments existing Single Single gift under 500 Total Regular giving Existing WORKPLACE GIVING
Windows: 7/Vista/XP/2K tcp tunneling nbtscan: Multiple-OS command line utility: NETBIOS nameserver scanner Linux: Simulating slow internet connection Linux/Ubuntu: Changing gateway address and flush/restart network interface Linux: SSH Tunnel to local machines. Linux: Get my external ip address Linux/Ubuntu: Enable/Disable ping response Linux: Cron: Reset neorouter Linux/Ubuntu: sniff tcp communications (binary output) Liunux/Ubuntu: get a list of apps that are consuming bandwidth Linux/Ubuntu: iptables: block external outgoing ip address Linux/Ubuntu: How to setup pptp vpn server Linux: NGINX: Setup alias Linux: ssh without password Linux: NGINX: Proxy reverse Linux: one way remote sync using unison and ssh Linux: Open ssh port access using a combination (knocking technique) Linux: ssh login for only one user Linux/Ubuntu: Server: Configuring proxies Linux/Ubuntu: Share folder with Windows (via samba) Linux: Get all my local IP addresses (IPv4) Linux/Ubuntu: list ufw firewall rules without enabling it Linux/Ubuntu: Connect windows to shared folder as guest Linux/Ubuntu: Avoid connection from specific ip address without using iptables Linux: Telegram: Send telegram message to channel when user logged via ssh Linux/Ubuntu: nginx: Configuration to send request to another server by servername Modbus/ModPoll Linux/Neorouter: watchdog for neorouter connection Linux: libgdcm: Send dicom images to PACS using gdcmscu. Ubuntu: mount full rw cifs share Linux/Ubuntu: NGINX: Basic authentication access Linux/Ubuntu: Mosquitto: Enable mqtt service Linux: Detect if port is closed from command line Linux: Get internet content from command line using wget Mac OSX: Port redirection Windows 10: Port redirection/Tunneling Python: Telegram Bot API: Ask/Answer question PHP: Post a XML File using PHP without cURL Nginx: Call php without extension PHP: Send compressed data to be used on Javascript (i.e. Json data) PHP: Download file and detect user connection aborted Linux/Proxmox: Enable /dev/net/tun for hamachi PHP: using curl for get and post NGINX: Creating .htpasswd Ubuntu Server/Hamachi: Solved connection hangs on ssh Linux: Tunnel through two hosts PHP: multiple http request at the same time
Linux: Free unused cache memory Linux: mounting VirtualBox VDI disk using qemu nbtscan: Multiple-OS command line utility: NETBIOS nameserver scanner Linux: Saving one or more webpages to pdf file Linux: Creating iso image from disk using one line bash command Linux/PostgreSQL: Getting service uptime Linux: Simulating slow internet connection Linux/Ubuntu: Changing gateway address and flush/restart network interface Linux: SSH Tunnel to local machines. Linux: Fast find text in specific files using wild cards Linux: Merging two or more pdf files into one, by using ghostscript Linux: Cron command for deleting old files (older than n days) Linux: Get my external ip address Linux: Get the size of a folder Linux: Get the size of a folder Linux: Get the size of a folder Lazarus/Linux: Connect to SQLServer using ZeosLib component TZConnection Linux/Ubuntu: Get ordered list of all installed packages Linux/Ubuntu: Enable/Disable ping response Linux/DICOM: Very small DICOM Server Linux: Cron: Reset neorouter Linux/Oracle: Startup script Linux/Ubuntu: detect if CD/DVD disk ispresent and is writeable Linux/PHP: Let www-data run other commands (permission) Linux/DICOM: Create DICOM Video Linux: Apply same command for multiple files Linux/Ubuntu: sniff tcp communications (binary output) Linux: rsync: Backup remote folder into local folder Linux: Installing Conquest Dicom Server Linux: Get number of pages of PDF document via command line Linux: split file into pieces and join pieces again Linux/Ubuntu: iptables: block external incoming ip address Liunux/Ubuntu: get a list of apps that are consuming bandwidth Linux/Ubuntu: iptables: block external outgoing ip address Linux/DICOM: dcmtk: Modify data in dicom folder Linux/Docker: save/load container using tgz file (tar.gz) Linx/Ubuntu: solve problem apt-get when proxy authentication is required Docker: Clean all Linux: ImageMagick: convert first page of pdf document to small jpeg preview Linux: Convert pdf to html PostgreSQL: backup/restore remote database with pg_dump Linux/Ubuntu: How to setup pptp vpn server Linux/Xubuntu: Solve HDMI disconnection caused by non-supported resolution Linux: List all users PostgreSQL: Log all queries Linux: NGINX: Setup alias Linux: ssh without password Linux: NGINX: Proxy reverse Linux: one way remote sync using unison and ssh Linux: Deleting files keeping only lastest n-files in specific folder Linux: Open ssh port access using a combination (knocking technique) Linux: Get Memory percentages. Linux: Can not sudo, unkown user root (solution) Linux: PDF: How to control pdf file size Linux: ssh login for only one user Linux: get pid of process who launch another process Linux: PHP: Fix pm.max server reached max children Linux/Ubuntu: Server: Configuring proxies Linux: Compare two files displaying differences Sox: Managing audio recording and playing Linux: VirtualBox: Explore VDI disk without running virtualbox Linux: Get machine unique ID Linux: rsync only files earlier than N days Linux: Create Virtual Filesystem Linux/Ubuntu: Server: Add disks to lvm Python/Ubuntu: connect to sqlserver and oracle Linux/Ubuntu: Share folder with Windows (via samba) Linux: Get all my local IP addresses (IPv4) Linux/Ubuntu: list ufw firewall rules without enabling it Linux/Ubuntu: Connect windows to shared folder as guest Linux: delete tons of files from folder with one command Linux/Ubuntu: Avoid connection from specific ip address without using iptables Linux: Telegram: Send telegram message to channel when user logged via ssh Linux/Ubuntu: Create barcode from command line. Linux: PHP/Python: Install python dependencies for python scripts and run scripts form php Linux/Ubuntu: nginx: Configuration to send request to another server by servername Linux/Ubuntu: Fix Imagemagick "not authorized" exception Linux/Neorouter: watchdog for neorouter connection Linux: libgdcm: Send dicom images to PACS using gdcmscu. Ubuntu: mount full rw cifs share Linux/Ubuntu: NGINX: Basic authentication access PostgreSQL: Backup/Restore database from/to postgres docker. Linux/Ubuntu: Mosquitto: Enable mqtt service Linux/PHP: Connect php7.0 with sqlserver using pdo. Linux: Detect if port is closed from command line Linux: PHP: Run shell command without waiting for output (untested) Linux/Ubuntu: OS Installation date Linux/Ubuntu: Join pdf files from command line using pdftk Linux: Get internet content from command line using wget Linux/PHP/SQL: Ubuntu/Php/Sybase: Connecting sysbase database with php7 Linux/Ubuntu: Solve LC_ALL file not found error Linux/Ubuntu: Run window program with wine headless on server Linux/Docker: List ip addresses of all containers. Linux: sysmon script (memory usage) Linux: Firebird: Create admin user from command line Linux/Firebird: Backup/Restore database Git: Update folder linux/dfm-to-json/docker Linux/Oracle/Docker: 19c-ee Linux/Docker: SQL Server in docker Linux/PHP/Docker: Run docker command from php/web Linux/Docker: Oracle 12-ee docker Linux: Oracle: Backup using expdp Linux/PHP/NGINX: Increase timeout Lazarus/Fastreport: Install on Linux Linux/Ubuntu: fswatch: watch file changes in folder Linux/Docker: SQLServer: mssql-scripter: backup/restore Linux/Ubuntu: Enable/disable screensaver Linux: SQLServer: Detect MDF version Linux/Docker: Oracle install 19c (II) on docker FirebirdSQL: Restore/Backup Linux/NGINX: Redirect to another server/port by domain name Linux/Proxmox: Enable /dev/net/tun for hamachi Linux/Ubuntu: Create sudoer user Linux: PDF-url to text without downloading pdf file Docker: Reset logs Ubuntu Server/Hamachi: Solved connection hangs on ssh Linux: Tunnel through two hosts N8N: Import/export
Linux/PostgreSQL: Getting service uptime Lazarus/Linux: Connect to SQLServer using ZeosLib component TZConnection Linux/Oracle: Startup script PostgreSQL: backup/restore remote database with pg_dump PostgreSQL: Log all queries PostgreSQL: Create DBLINK PostgreSQL: Database replication Python/Ubuntu: connect to sqlserver and oracle Oracle/SQL: Generate range of dates PostgreSQL: Convert records to json string and revert to records PostgreSQL: Extract function DDL PostgreSQL: Backup/Restore database from/to postgres docker. Linux/PHP: Connect php7.0 with sqlserver using pdo. PostgreSQL: Trigger template PostgreSQL: Count all records in spite of using offset/limit PHP/SQL: Reverse SQL Order in sentence PostgreSQL: Filter using ilike and string with spaces PostgreSQL: Create log table and trigger Postgres: Get string all matches between {} Linux/PHP/SQL: Ubuntu/Php/Sybase: Connecting sysbase database with php7 PostgreSQL: Must know PostgreSQL: Debito, Credito, Saldo PostgreSQL: Count total rows when range is empty PostgreSQL: Extremely fast text search using tsvector PostgreSQL: Create a copy of DB in same host PHP/PostgreSQL: Event Listener Linux: Firebird: Create admin user from command line SQL: CTE Parent-child recursive Windows/Docker/Firebird: Backup remote database Linux/Firebird: Backup/Restore database PostgreSQL: Set search path (schemas) for user Firebird on Docker Firebird: Find holes in sequence (missing number) Linux/Oracle/Docker: 19c-ee Firebird: Create an Array of integers from String Oracle: Change Sys/System user pasword Oracle: Create/drop tablespace Oracle: Create User/Schema Linux: Oracle: Backup using expdp Oracle: Get slow queries Linux: SQLServer: Detect MDF version Linux/Docker: Oracle install 19c (II) on docker FirebirdSQL: Restore/Backup Firebird: Age Calculation using Ymd format Postgresql: Age calculation to Ymd Firebird: Create Range of dates, fraction in days, hours, minutes, months or years Firebird: DATE_TO_CHAR Function (like Oracle's TO_CHAR) MS SQLServer Backup Database MS SQLServer: Detect long duration SQL sentences Firebird: Fast Search Firebird: Code Generator FirebirdSQL 2.x: DATE_TO_CHAR Procedure (like Oracle's TO_CHAR) MSSQLServer: Sequences using Date based prefix format Firebird: Query to get "Range of time" based on unit: days, months, years, etc Firebird: Generate a range of numbers. Firebird 5.x: Config for D7 compatibility. Firebird: All matching words in word
CSS: Setup a perfect wallpaper using background image CSS: Ellipsis at end of long string in element Javascript: Is my browser on line? CSS: Crossbrowser blur effect Javascript: calculating similarity % between two string Javascript: vanilla and crossbrowser event handler accepting arguments Javascript: convert native browser event to jQuery event. Linux: Convert pdf to html Javascript: Convert proper name to Capital/Title Case Javascript: Disable Back Button - (untested) HTML/CSS: Login Page HTML/CSS: Data column organized as top-down-right structure HTML/CSS: Printing page in letter size Javascript: Get file name from fullpath. HTML/CSS: Header/Body/Footer layout using flex Windows: Chrome: Avoid prompt on custom url calling by changing registry Javascript: Get filename and path from full path filename Javascript: Clone array/object. CSS + FontAwesome: Battery charging animation CSS: spin element HTML/CSS: Switch with input CSS: Transparent event clicks having translucid front div element CSS: Blurry Glass Effect CSS: Grow element size when mouse hover Javascript/jQuery: Input with fixed prefix. Javascript: ProtocolCheck Javascript: Beep Telegram: Chat/html (personal) PHP: php-imagick: Thumbnail from thispersondoesnotexists Javascript: Get host info Javascript: Vanilla async get HTML/CSS: Rotating circle loader PHP: Post JSON object to API without curl Javascript: Post data to new window. CSS/Android Ripple Effect in Pure CSS OSRM/API: OpenStreet Maps Calculate distance between points OSM/OpenLayers: Place marker on coordinates using custom image. PHP: Send compressed data to be used on Javascript (i.e. Json data) PHP/JSignature: Base30 to PNG Javascript: Query Params to JSON Javascript/CSS: Ripple Effect - Vanilla Delphi/UniGUI: Disable load animation PHP: Send basic authentication credentials Delphi: Post JSON to API PHP: Receiving Bearer Authorization token from header Linux/NGINX: Redirect to another server/port by domain name Javascript: Async/Await Web Programming: Fastest way for appending DOM elements CSS: Animated progress bar CSS: Shake element CSS: Align elements like windows explorer icons layout style Javascript: Submit JSON object from form values Javascript: Fetch POST JSON Linux: PDF-url to text without downloading pdf file Javascript/in Browser: Jump to anchor Javascript/NodeJS: Uglify js files CSS: Two of the best readable fonts in web CSS: Dark/Theater background Javascript: Detect inactivity / idle time Svelte: Dynamic component rendering CSS: Responsive Grid NGINX: Creating .htpasswd Javascript: Wait until all rendered Javascript: Print PDF directly having URL Sveltekit: Create component dynamically Sveltekit: Create component dynamically Sveltekit: Import component dynamically CSS: Animation/Gelatine CSS: Set width/height to max available HTML: Waze map embed into webpage Cordova/Mobile: App ejemplo para autenticar con huella digital. Cordova: Fingerprint auth Javascript/HTML: Detect if element if off screen
Javascript: Is my browser on line? Javascript: calculating similarity % between two string Javascript: vanilla and crossbrowser event handler accepting arguments Javascript: convert native browser event to jQuery event. Javascript: Convert proper name to Capital/Title Case Javascript: Disable Back Button - (untested) Javascript: Get file name from fullpath. Javascript: Get filename and path from full path filename Javascript: Clone array/object. Javascript/jQuery: Input with fixed prefix. Javascript: ProtocolCheck Cordova: Fix FCM plugin error Cordova: Call function at main App from inappbrowser. Javascript: Beep Telegram: Chat/html (personal) Javascript: Get host info Javascript: Vanilla async get Javascript: Post data to new window. OSM/OpenLayers: Place marker on coordinates using custom image. Javascript: Query Params to JSON Javascript/CSS: Ripple Effect - Vanilla Vanilla Javascript: Upload file Javascript: Async/Await Web Programming: Fastest way for appending DOM elements Javascript: Submit JSON object from form values Javascript: Fetch POST JSON Javascript/in Browser: Jump to anchor Javascript/NodeJS: Uglify js files Javascript: Detect inactivity / idle time Svelte: Dynamic component rendering Javascript: Change object property position Javascript: Wait until all rendered Javascript: Print PDF directly having URL Replace URL's with Links Javascript: Wait until fonts and images loaded Cordova/Mobile: App ejemplo para autenticar con huella digital. Javascript/HTML: Detect if element if off screen
substr(): It takes two arguments, the starting index and number of characters to slice. substring(): It takes two arguments, the starting index and the stopping index but it doesn't include the character at the stopping index. split(): The split method splits a string at a specified place. includes(): It takes a substring argument and it checks if substring argument exists in the string. includes() returns a boolean. If a substring exist in a string, it returns true, otherwise it returns false. replace(): takes as a parameter the old substring and a new substring. replace(): takes as a parameter the old substring and a new substring. charAt(): Takes index and it returns the value at that index indexOf(): Takes a substring and if the substring exists in a string it returns the first position of the substring if does not exist it returns -1 lastIndexOf(): Takes a substring and if the substring exists in a string it returns the last position of the substring if it does not exist it returns -1 concat(): it takes many substrings and joins them. startsWith: it takes a substring as an argument and it checks if the string starts with that specified substring. It returns a boolean(true or false). endsWith: it takes a substring as an argument and it checks if the string ends with that specified substring. It returns a boolean(true or false). search: it takes a substring as an argument and it returns the index of the first match. The search value can be a string or a regular expression pattern. match: it takes a substring or regular expression pattern as an argument and it returns an array if there is match if not it returns null. Let us see how a regular expression pattern looks like. It starts with / sign and ends with / sign. repeat(): it takes a number as argument and it returns the repeated version of the string. Concatenating array using concat indexOf:To check if an item exist in an array. If it exists it returns the index else it returns -1. lastIndexOf: It gives the position of the last item in the array. If it exist, it returns the index else it returns -1. includes:To check if an item exist in an array. If it exist it returns the true else it returns false. Array.isArray:To check if the data type is an array toString:Converts array to string join: It is used to join the elements of the array, the argument we passed in the join method will be joined in the array and return as a string. By default, it joins with a comma, but we can pass different string parameter which can be joined between the items. Slice: To cut out a multiple items in range. It takes two parameters:starting and ending position. It doesn't include the ending position. Splice: It takes three parameters:Starting position, number of times to be removed and number of items to be added. Push: adding item in the end. To add item to the end of an existing array we use the push method. pop: Removing item in the end shift: Removing one array element in the beginning of the array. unshift: Adding array element in the beginning of the array. for of loop Unlimited number of parameters in regular function Unlimited number of parameters in arrow function Expression functions are anonymous functions. After we create a function without a name and we assign it to a variable. To return a value from the function we should call the variable. Self invoking functions are anonymous functions which do not need to be called to return a value. Arrow Function Object.assign: To copy an object without modifying the original object Object.keys: To get the keys or properties of an object as an array Object.values:To get values of an object as an array Object.entries:To get the keys and values in an array hasOwnProperty: To check if a specific key or property exist in an object forEach: Iterate an array elements. We use forEach only with arrays. It takes a callback function with elements, index parameter and array itself. The index and the array optional. map: Iterate an array elements and modify the array elements. It takes a callback function with elements, index , array parameter and return a new array. Filter: Filter out items which full fill filtering conditions and return a new array reduce: Reduce takes a callback function. The call back function takes accumulator, current, and optional initial value as a parameter and returns a single value. It is a good practice to define an initial value for the accumulator value. If we do not specify this parameter, by default accumulator will get array first value. If our array is an empty array, then Javascript will throw an error every: Check if all the elements are similar in one aspect. It returns boolean find: Return the first element which satisfies the condition findIndex: Return the position of the first element which satisfies the condition some: Check if some of the elements are similar in one aspect. It returns boolean sort: The sort methods arranges the array elements either ascending or descending order. By default, the sort() method sorts values as strings.This works well for string array items but not for numbers. If number values are sorted as strings and it give us wrong result. Sort method modify the original array. use a compare call back function inside the sort method, which return a negative, zero or positive. Whenever we sort objects in an array, we use the object key to compare. Destructing Arrays : If we like to skip on of the values in the array we use additional comma. The comma helps to omit the value at that specific index
GitHub - ChrisTitusTech/winutil How to install CAB file for updates and drivers on Windows 10 - Pureinfotech launch command, longer and shorter Launching a startup program to run as administrator Install Windows Update Powershell Windows and MS office activation windows group policy update Remove all the policies applied to Edge browser. Remove ALL the Group Policy settings that are applied to your Windows system. Uninstall Edge System scan Disable Logon Background Image Automatic login in Windows 10 Windows local account password: Set to infinty This script will extract your Retail product key. ProductKey.vbs Completely Remove Windows 11 Widgets MS Edge: Use secure DNS - Undo 'browser managed by...' Move edge cache to ramdisk The Proxy Auto-Configuration: disable by changing this registry key Nilesoft Shell Disable or enable Windows 10 password expiration Install Windows 11 Without a Microsoft Account Block the W10 to 11 migration attempts or reminders Windows: Know the user Disable Hyper-V in Windows Windows: Disable 8.3 file naming convention Reduce Svchost.exe (Service Host) Process Running in Task Manager Clean Up the WinSxS Folder Prevent 3rd-party Suggested Apps from being pinned to the W11 Start Menu (NTLite) Stop UAC for a specific app Launch Edge browser with command line flags Autounattended Clean Up Component Store (WinSxS folder) Disable account expiry in windows 10 Always show all icons in sys tray Clean the WinSxS folder in Windows Remove windows start menu recommended section and setting ads Enable seconds in systray clock Win 11 Boot And Upgrade FiX KiT v5.0 Remove .cache folder from root directory Export all your drivers To safely remove one of the devices Check and disable Recall in Windows 11 Tablet-optimized taskbar Windows Defender: Disable Permanently and Re-enable Enable Windows 11 Dark Mode via registry Edge browser, backup the flags Windows PowerShell script execution: Turn on or off Microsoft store app installation on LTSC Winscript. Make Windows yours
openssh GitLab.com / GitLab Infrastructure Team / next.gitlab.com · GitLab Use Apple touch icon | webhint documentation How to get GPU Rasterization How to get GPU Rasterization Migrating to Manifest V3 - Chrome Developers Migrating to Manifest V3 - Chrome Developers Manifest - Web Accessible Resources - Chrome Developers chrome.webRequest - Chrome Developers chrome.webRequest - Chrome Developers Cross-site scripting – Wikipedia Cross-site scripting – Wikipedia Cross-site scripting – Wikipedia Cross-site scripting – Wikipedia Cross-site scripting – Wikipedia Cross-site scripting – Wikipedia Export-ModuleMember (Microsoft.PowerShell.Core) - PowerShell | Microsoft Learn Sourcegraph GraphQL API - Sourcegraph docs Winge19/vscode-abl: An extension for VS Code which provides support for the Progress OpenEdge ABL language. https://marketplace.visualstudio.com/items?itemName=chriscamicas.openedge-abl Winge19/vscode-abl: An extension for VS Code which provides support for the Progress OpenEdge ABL language. https://marketplace.visualstudio.com/items?itemName=chriscamicas.openedge-abl Winge19/vscode-abl: An extension for VS Code which provides support for the Progress OpenEdge ABL language. https://marketplace.visualstudio.com/items?itemName=chriscamicas.openedge-abl New File Cache · Actions · GitHub Marketplace Cache · Actions · GitHub Marketplace Winge19/cache: Cache dependencies and build outputs in GitHub Actions Winge19/cache: Cache dependencies and build outputs in GitHub Actions Winge19/cache: Cache dependencies and build outputs in GitHub Actions Winge19/cache: Cache dependencies and build outputs in GitHub Actions Winge19/cache: Cache dependencies and build outputs in GitHub Actions history.state during a bfcache traversal · web-platform-tests/wpt@7d60342 Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn Configure CI/CD pipeline with YAML file - MSIX | Microsoft Learn ASP.NET Core 6.0 Blazor Server APP and Working with MySQL DB - CodeProject json Process Herpaderping – Windows Defender Evasion | Pentest Laboratories 0x7c13/Notepads: A modern, lightweight text editor with a minimalist design. Share data - UWP applications | Microsoft Learn What is ie_to_edge_bho_64.dll? What is ie_to_edge_bho_64.dll? What is ie_to_edge_bho_64.dll? What is ie_to_edge_bho_64.dll? Message passing - Chrome Developers
parsing - Parse (split) a string in C++ using string delimiter (standard C++) - Stack Overflow parsing - Parse (split) a string in C++ using string delimiter (standard C++) - Stack Overflow parsing - Parse (split) a string in C++ using string delimiter (standard C++) - Stack Overflow parsing - Parse (split) a string in C++ using string delimiter (standard C++) - Stack Overflow arrays - Convert a hexadecimal to a float and viceversa in C - Stack Overflow arrays - Convert a hexadecimal to a float and viceversa in C - Stack Overflow Why does C++ require breaks in switch statements? - Stack Overflow Why does C++ require breaks in switch statements? - Stack Overflow Why does C++ require breaks in switch statements? - Stack Overflow coding style - Switch statement fall-through...should it be allowed? - Stack Overflow performance - Convert a hexadecimal string to an integer efficiently in C? - Stack Overflow C,C++ ---结构体指针初始化_zlQ_的博客-CSDN博客_c++初始化结构体指针 c++ - C++ 返回局部变量的常引用 - SegmentFault 思否 (23条消息) C++ 去掉const_最后冰吻free的博客-CSDN博客_c++ 去掉const (23条消息) 尾置返回值类型decltype_最后冰吻free的博客-CSDN博客 (23条消息) 变参模板函数_最后冰吻free的博客-CSDN博客_变参模板 (23条消息) 变参表达式_最后冰吻free的博客-CSDN博客 (23条消息) 变参下标_最后冰吻free的博客-CSDN博客 (23条消息) 变参基类_最后冰吻free的博客-CSDN博客 (23条消息) typname 使用_最后冰吻free的博客-CSDN博客 (23条消息) 零初始化_最后冰吻free的博客-CSDN博客 (23条消息) this->使用_最后冰吻free的博客-CSDN博客 (23条消息) 变量模板_最后冰吻free的博客-CSDN博客_变量模板 (23条消息) enable_if使用_最后冰吻free的博客-CSDN博客 (23条消息) 完美转发函数_最后冰吻free的博客-CSDN博客 (23条消息) C++ 函数返回局部变量地址和引用_最后冰吻free的博客-CSDN博客_c++函数返回地址 (23条消息) C++ 函数返回局部变量地址和引用_最后冰吻free的博客-CSDN博客_c++函数返回地址 (23条消息) C++ 函数返回局部变量地址和引用_最后冰吻free的博客-CSDN博客_c++函数返回地址 结构体数组定义时初始化 cJSON的数据结构 C++共用体与结构体区别-C++ union与struct的区别-嗨客网 C++共用体与结构体区别-C++ union与struct的区别-嗨客网 队列的c语言实现_51CTO博客_c语言实现队列 栈的实现 c语言版_51CTO博客_c语言栈的实现以及操作 【专业技术】如何写出优美的C 代码? - 腾讯云开发者社区-腾讯云 【专业技术】如何写出优美的C 代码? - 腾讯云开发者社区-腾讯云 C++ short-C++短整型-C++ short取值范围-嗨客网 C++ short-C++短整型-C++ short取值范围-嗨客网 C++ long long-C++长长整型-C++ long long取值范围-嗨客网 C++ long long-C++长长整型-C++ long long取值范围-嗨客网 C++字符-C++ char-C++字符取值范围-嗨客网 C++枚举enum-C++怎么定义枚举变量-C++枚举的作用-嗨客网 C++三目运算符-C++的三目运算符-C++三目运算符怎么用-什么是三目运算符-嗨客网 C++打印乘法表-嗨客网 C++ while循环打印乘法表-嗨客网 C++ do while循环打印乘法表-嗨客网 (转)sizeof()和_countof()区别 - 榕树下的愿望 - 博客园 详述CRC校验码(附代码)-面包板社区 详述CRC校验码(附代码)-面包板社区 详述CRC校验码(附代码)-面包板社区 C program to convert Hexadecimal to Decimal - Aticleworld Conversion of Hex decimal to integer value using C language (27条消息) vector<char>太慢,自己造一个CharVector_char vector_飞鸟真人的博客-CSDN博客 C++ windows显示器相关信息获取 - 艺文笔记
Q64 Snapshot Array - LeetCode Q63 Reorganize String - LeetCode Q62 Tricky Sorting Cost | Practice | GeeksforGeeks Q62 Minimum Cost To Connect Sticks Q60 PepCoding | Longest Substring With At Most Two Distinct Characters Q59 PepCoding | Line Reflection Q58 Pairs of Non Coinciding Points | Practice | GeeksforGeeks Q57 Avoid Flood in The City - LeetCode Q56 Random Pick with Blacklist - LeetCode Q55 Insert Delete GetRandom O(1) - Duplicates allowed - LeetCode Q55 Insert Delete GetRandom O(1) - Duplicates allowed - LeetCode Q54 Insert Delete GetRandom O(1) - LeetCode Q53 The Skyline Problem - LeetCode Q52 Encode and Decode TinyURL - LeetCode Q51 Maximum Frequency Stack - LeetCode Q50 Brick Wall - LeetCode Q50 Brick Wall - LeetCode Q49 X of a Kind in a Deck of Cards - LeetCode Q48 First Unique Character in a String - LeetCode Q47 Subdomain Visit Count - LeetCode Q46 Powerful Integers - LeetCode Q45 4Sum II - LeetCode Q44 PepCoding | Quadruplet Sum QFind K Pairs with Smallest Sums - LeetCode Q43 PepCoding | Pairs With Given Sum In Two Sorted Matrices Q42 Completing tasks | Practice | GeeksforGeeks Q41 Degree of an Array - LeetCode Q-40 Can Make Arithmetic Progression From Sequence - LeetCode Q39 PepCoding | Double Pair Array Q38 Rabbits in Forest - LeetCode Q-37* Fraction to Recurring Decimal - LeetCode Q36 PepCoding | Pairs With Equal Sum Q35 PepCoding | Count Of Subarrays With Equal Number Of 0s 1s And 2s Q34 PepCoding | Longest Subarray With Equal Number Of 0s 1s And 2s Q-34PepCoding | Pairs With Equal Sum Q33 PepCoding | Count Of Subarrays With Equal Number Of Zeroes And Ones Q32 Contiguous Array - LeetCode Q31 Subarray Sums Divisible by K - LeetCode Q30 PepCoding | Longest Subarray With Sum Divisible By K Q29 Subarray Sum Equals K - LeetCode Q27 Word Pattern - LeetCode Q-26 Isomorphic Strings - LeetCode Q-25 PepCoding | Group Shifted String Q24 Group Anagrams - LeetCode Q23 Valid Anagram - LeetCode Q22 PepCoding | Find Anagram Mappings Q21 PepCoding | K Anagrams Q20 Find All Anagrams in a String - LeetCode Q-19 Binary String With Substrings Representing 1 To N - LeetCode Q-18 PepCoding | Count Of Substrings Having At Most K Unique Characters Q-17 PepCoding | Longest Substring With At Most K Unique Characters Q-16 PepCoding | Maximum Consecutive Ones - 2 Q15 PepCoding | Maximum Consecutive Ones - 1 Q-14 PepCoding | Equivalent Subarrays Q13 PepCoding | Count Of Substrings With Exactly K Unique Characters Q-12 PepCoding | Longest Substring With Exactly K Unique Characters Q-11 PepCoding | Count Of Substrings Having All Unique Characters Q-10 PepCoding | Longest Substring With Non Repeating Characters Q-9 PepCoding | Smallest Substring Of A String Containing All Unique Characters Of Itself Q8 PepCoding | Smallest Substring Of A String Containing All Characters Of Another String | leetcode76 Q-7 PepCoding | Largest Subarray With Contiguous Elements Q-6 PepCoding | Count Of All Subarrays With Zero Sum Q5 PepCoding | Largest Subarray With Zero Sum Q4 PepCoding | Count Distinct Elements In Every Window Of Size K Q-3 PepCoding | Check If An Array Can Be Divided Into Pairs Whose Sum Is Divisible By K Q2 PepCoding | Find Itinerary From Tickets Q1 PepCoding | Number Of Employees Under Every Manager 2653. Sliding Subarray Beauty
DSA 1.8 : Pointers DSA-1.8 : Pointers DSA-1.8 : Pointers DSA 1.8 : Pointers DSA 1.10 : Reference DSA 1.12 - Pointer to structure DSA 1.12 - pointer to structure DSA 1.15 : Paramter passing method : by value DSA 1.15 : Parameter passing method- by address DSA 1.15 : parameter passing method -by reference DSA 1.18 : returning array from a function DSA 1.20 : pointer to structure DSA 1.23 : monolithic program DSA 1.24 : procedural or modular programming DSA 1.25 : procedural programming using structure and functions DSA 1.26 : Object Oriented programming approach DSA 1.30 : template classes DSA 5.52 Recursion using static variable DSA 5.56 : tree recursion DSA 5.58 : Indirect recursion DSA 5.56 : Nested recursion DSA 5.68 : Taylor series using recursion DSA 5.70 : Taylors series using Horner's rule DSA 5.73 : Fibonacci using iteration DSA 5.73 : Fibonacci using recursion DSA 5.73 : Fibonacci using memoization and recursion DSA 5.75 : nCr using recursion DSA 5.76 : Tower of Hanoi DSA 7 : array ADT DSA 7.99 - Delete function in an array DSA 7.102 : Linear Search DSA 146 : C++ class for Diagonal matrix DSA 150 : Lower Triangular matrix Diagonal matrix full code Creation of sparse matrix 175. Display for linked list 176. Recursive display for linked list 178 : counting nodes in a linked list 179: sum of all elements in a linked list 181: find the largest element in the linked list 183: searching for a value in linked list 184: Improve searching in a linked list 186: Inserting a new node in a linked list (logic) 186: Insertion in a linked list (function) 189: Creating a linked list by inserting at end 191: Inserting in a sorted linked list 192: deleting a node from a linked list 195 : check if the linked list is sorted or not 197: Remove duplicates from sorted linked list
Q66 Distinct Echo Substrings - LeetCode 1316 (rabin karp rolling hash -> O(n^2)) Q66 Distinct Echo Substrings - LeetCode 1316(O(n^3) solution) Q65 Interleaving String - LeetCode 97 Q64 Frog Jump - LeetCode 403 Q63 Champagne Tower - LeetCode 799 Q62 Super Ugly Number - LeetCode 313 Q61 Ugly Number 2 - LeetCode 264 Q60 Minimum Insertion Steps to Make a String Palindrome - LeetCode 1316 Q59 Temple Offerings | Practice | GeeksforGeeks Q58 Word Break - LeetCode 139 Q57 Arithmetic Slices II - Subsequence - LeetCode 446 Q56 Arithmetic Slices - LeetCode 413 Q55 Max sum of M non-overlapping subarrays of size K - GeeksforGeeks (tabulization) Q55 Max sum of M non-overlapping subarrays of size K - GeeksforGeeks (memoization) Q54 Maximum Sum of 3 Non-Overlapping Subarrays - LeetCode 689 Q53 Maximum Sum of Two Non-Overlapping Subarrays - LeetCode 1031 Q52 Maximum difference of zeros and ones in binary string | Practice | GeeksforGeeks Q51 Mobile numeric keypad | Practice | GeeksforGeeks Q50 Distinct Transformation LeetCode Playground ( tabulization approach) Q50 - Distinct Transformation- LeetCode Playground ( recursion + memoization approach) Q49 Highway BillBoards - Coding Ninjas Codestudio approach 2 Q49 Highway BillBoards - Coding Ninjas Codestudio (approach 1 LIS) Q48 Knight Probability in Chessboard - LeetCode 688 Q47 Cherry Pickup - LeetCode 741 (recursion approach) Q46 Super Egg Drop - LeetCode 887 Q45 Predict the Winner - LeetCode 486 Q45 Optimal Strategy For A Game | Practice | GeeksforGeeks | leetcode 46 Q44 Largest Sum Subarray of Size at least K | Practice | GeeksforGeeks Q42 Maximum Subarray - LeetCode 53 Q41 Minimum Cost To Make Two Strings Identical | Practice | GeeksforGeeks Q40 Minimum ASCII Delete Sum for Two Strings - LeetCode 712 Q39 Scramble String - LeetCode 87 Q38 Edit Distance - LeetCode 72 Q37 Regular Expression Matching - LeetCode 10 Q36 Wildcard Matching - LeetCode Q35 Longest Repeating Subsequence | Practice | GeeksforGeeks Q34 Longest Common Substring | Practice | GeeksforGeeks Q33 Count Different Palindromic Subsequences - LeetCode 730 Q32 Number of distinct subsequences | Practice | GeeksforGeeks Q31 Longest Palindromic Substring - LeetCode Q30 Count Palindromic Subsequences | Practice | GeeksforGeeks Q29 Longest Palindromic Subsequence - LeetCode 516 Q28 Longest Common Subsequence - LeetCode 1143 Q27 Minimum Score Triangulation of Polygon - LeetCode 1039 Q26 Optimal binary search tree | Practice | GeeksforGeeks Q24 Matrix Chain Multiplication | Practice | GeeksforGeeks Q23 Palindrome Partitioning II - LeetCode 132 Q23 Palindrome Partitioning II - LeetCode - 132 ( n^3 approach) Q22 Palindromic Substrings - LeetCode 647 Q21 Rod Cutting | Practice | GeeksforGeeks Q20 Minimum Score Triangulation of Polygon - LeetCode 1039 Q19 Intersecting Chords in a Circle | Interviewbit Q18 Generate Parentheses - LeetCode 22 Q17 PepCoding | Count Of Valleys And Mountains Q16 Unique Binary Search Trees - LeetCode 96 Q15 Catalan Number Minimum Score of a Path Between Two Cities - 2492 Q14 Perfect Squares - LeetCode Q13 Russian Doll Envelopes - LeetCode (LIS in NlogN - accepted solution) Q13 Russian Doll Envelopes - LeetCode 354 solution1(LIS in O(n^2)) Q12 PepCoding | Maximum Non-overlapping Bridges Q11 Longest Bitonic subsequence | Practice | GeeksforGeeks Q10 Maximum sum increasing subsequence | Practice | GeeksforGeeks Q9 PepCoding | Print All Longest Increasing Subsequences Q8 Longest Increasing Subsequence - LeetCode 300 Q7 2 Keys Keyboard - LeetCode 650 Q-6 PepCoding | Print All Results In 0-1 Knapsack Q5 PepCoding | Print All Paths With Target Sum Subset Q4 PepCoding | Print All Paths With Maximum Gold Q3 PepCoding | Print All Paths With Minimum Cost Q2 Jump Game II - LeetCode 45 Q1 Maximal Square - LeetCode 221 Q67 Longest Increasing Subsequence - LeetCode 300 ( LIS O(nlogn) solution) Q43 K-Concatenation Maximum Sum - LeetCode 1191 Q13 Russian Doll Envelopes - LeetCode 354 ( LIS -> O(nlogn) solution) Q25 Burst Balloons - LeetCode 312
Minimum Score of a Path Between Two Cities - 2492 Number of Operations to Make Network Connected - 1319 Q42 Mother Vertex | Interviewbit (kosraju) Q41 Count Strongly Connected Components (Kosaraju’s Algorithm) Q40 Leetcode 734. Sentence Similarity Q39 Satisfiability of Equality Equations - LeetCode 990 Q38 Redundant Connection II - LeetCode 685 Q37 Redundant Connection - LeetCode 684 Q36 Minimize Malware Spread II - LeetCode 928 Q35 Minimize Malware Spread - LeetCode 924 Q34 Accounts Merge - LeetCode 721 Q33 Minimize Hamming Distance After Swap Operations - LeetCode 1722 Q32 Rank Transform of a Matrix - LeetCode 1632 Q32 Reconstruct Itinerary - leetcode 332 (eularian path && Eularian cycle) Q31 Regions Cut By Slashes - LeetCode 959 Q30 Minimum Spanning Tree | Practice | GeeksforGeeks (kruskal algo) Q29 Number of Islands II - Coding Ninjas (DSU) Q28 Remove Max Number of Edges to Keep Graph Fully Traversable - LeetCode 1579 Q27 Checking Existence of Edge Length Limited Paths - LeetCode 1675 Q26 Network Delay Time - LeetCode 743 Q25 Cheapest Flights Within K Stops - LeetCode 787 Q24 Distance from the Source (Bellman-Ford Algorithm) | Practice | GeeksforGeeks Q23 Connecting Cities With Minimum Cost - Coding Ninjas Q22 Swim in Rising Water - LeetCode 778 Q21 Water Supply In A Village - Coding Ninjas Q20 Minimum Spanning Tree | Practice | GeeksforGeeks(prims algo) Q19 Alien Dictionary | Practice | GeeksforGeeks Q18 Course Schedule - LeetCode 207 (kahn's algorithm) Q17 Minimum edges(0-1 BFS) | Practice | GeeksforGeeks Q17 Minimum edges(0-1 BFS) | Practice | GeeksforGeeks ( using djikstra) Q16 Sliding Puzzle - LeetCode 773 Q15 Bus Routes - LeetCode 815 Q14 Shortest Bridge - LeetCode 934 (without pair class) Q14 Shortest Bridge - LeetCode 934 ( with pair class) Q 13 As Far from Land as Possible - LeetCode 1120 Q12 Rotting Oranges - LeetCode 994 Q11 01 Matrix - LeetCode 542 Q10 Number of Distinct Islands | Practice | GeeksforGeeks Q9 Number of Enclaves - LeetCode 1085 Q8 Coloring A Border - LeetCode 1034 Q7 Unique Paths II - 63 Q6 Unique Paths III - LeetCode 980 Q5 Number of Provinces - LeetCode 547 Q4 Number of Islands - LeetCode 200 Q3 Number of Operations to Make Network Connected - LeetCode 1319 Q2 All Paths From Source to Target - LeetCode 797 Q1 Find if Path Exists in Graph - LeetCode 1971 Q43 is Cycle present in DAG ? GFG ( Topological Sort) Q43 is cycle present in DAG ? GFG (using kahns algo) Q44 Bellman ford | GFG ( Smaller code) Q45 Minimum Cost to Make at Least One Valid Path in a Grid - LeetCode 1368
descargar archivos de la plantilla avanzada desde la consola formulario dinamico yii2 codigo para descargarlo actualizar composer 2.5.5 subir imagenes en frontend/backend ejemplo yii2 validacion mascara de campo ejemplo models/modelo.php validacion mascara de campo ejemplo models/modelo.php aplicación yii2 completa ejemplo de referencia puede que contenga algún error modificar grid(centrar contenido de campos, textos) formato fecha yii2 ejemplo de widget DepDrop en yii2 Configurar la extension redactor en common/config/main.php ejemplo de campo de texto con mascara ejemplo de reglas de validacion en un modelo yii2 Adapta el contenido de un campo de widget a su tamaño en Yii2 Para hacer que el contenido de un campo de un widget en Yii2 se adapte automáticamente al tamaño del campo, puedes utilizar algunas de las siguientes técnicas: para hacer el modulo de usuario en yii2 campo ente del sistema de de indicadores sig ejemplo de campo ente con permisologia de usuario: admin y despacho_ ministro ejemplo de escript para estos campos en yii2 ejemplo estado, municipio, parroquia ejemplo de campo estado, municipio, parroquia en el model search usar esto para mostrar los registros en orden invertido cuando un formulario de problemas en un marco en yii2 ejemplo de campo da data para mostrar la lista en el update codigo para arreglar graficos hightchart del sistema indicadores sig para ordenar los registros del gridview en yii2 otro editor de texto como redactor para implementar de manera manual convertir base de datos a migracion configurar la consola de yii2 inciar servidor ejemplo yii2-laravel para traerme datos en formato json boton yii2 con color de fondo ejemplo de kartik\select2\Select2; ejemplo de campo dependiente donde campo b depende de a y te trae todos los b que tiene a ejemplo de campo busqueda fecha la function listar yii2 url amigables en yii2 proceso para guardar un formulario en yii2 deformacion de tablas en el index yii2
chapter2-code-1 chapter2-code-2 chapter2-code-3 chapter3-code-1 chapter4-code-1 chapter4-code-2 chapter4-code-3 chapter4-code-4 chapter4-code-5 chapter4-code-6 chapter4-code-7 chapter4-code-8 chapter4-code-9 chapter4-code-10 chapter5-code-1 chapter5-code-2 chapter5-code-3 chapter6-code-1 chapter6-code-2 chapter6-code-3 chapter7-code-1 chapter7-code-2 chapter7-code-3 chapter7-code-4 chapter7-code-5 chapter7-code-6 chapter7-code-7 chapter7-code-8 chapter7-code-9 chapter7-code-10 chapter7-code-11 chapter7-code-12 chapter7-code-13 chapter8-code-1 chapter8-code-2 chapter8-code-3 chapter8-code-4 chapter9-code-1 chapter9-code-2 chapter9-code-3 chapter9-code-4 chapter10-code-1 chapter10-code-2 chapter10-code-3 chapter10-code-4 chapter10-code-5 chapter11-code-1 chapter11-code2 chapter11-code-3 chapter11-code-4 chapter11-code-5 chapter11-code-6 chapter12-code-1 chapter12-code-2 chapter13-code-1 chapter13-code-2 chapter13-code-3 chapter13-code-4 chapter13-code-5 chapter14-code-1 chapter14-code-2 chapter14-code-3 chapter14-code-4 chapter15-code-1 chapter15-code-2 chapter16-code-1 chapter16-code-2 chapter16-code-3 chapter16-code-4 chapter16-code-5 chapter16-code-6 chapter16-code-7 chapter16-code-8 chapter16-code-9 chapter16-code-10 chapter17-code-1 chapter17-code-2 chapter18-code-1 chapter18-code-2 chapter18-code-3 chapter18-code-4 chapter18-code-5 chapter19-code-1 chapter19-code-2 chapter19-code-3 chapter20-code-1 chapter21-code-1 chapter21-code-2 chapter21-code-3 chapter21-code-4 chapter21-code-5 chapter22-code-1 chapter22-code-2 chapter22-code-3 chapter23-code-1 chapter23-code-2 chapter23-code-3 chapter23-code-4 chapter23-code-5 chapter24-code-1 chapter24-code-2 chapter24-code-3 chapter25-code-1 chapter25-code-2 chapter25-code-3 chapter25-code-4 chapter25-code-5 chapter25-code-6 chapter25-code-7 chapter25-code-8 chapter25-code-9 chapter26-code-1 chapter26-code-2 chapter27-code-1 chapter27-code-2 chapter28-code-1 chapter28-code-2 chapter29-code-1 chapter11-code-2 chapter1-code-1
Display Custom Post By Custom Texonomy Hide Section If Data Empty Custom post Url Change Social Share Link Genrator / meta tag OG Set Custom post type template Custom post by current category page List all Category Loop Reverse Reverse Array in custom repeat fields Display custom texonomy name into post WP Rocket Delay JavaScript execution Files Post FIlter By Texonomy URL Check and echo active exclude current post from single page Post Sort by Custom Taxonomy in Admin Ajex select change texonomy and post Wordpress Ajex select Get Category Name (wp get object()) List Display Custom Taxonomy Order Date Woocommerce Disable notification for plugin update Custom Ajax Form for WP Order Expiry Woocommerce Post By Post Taxonomy Hide Section If Data Empty Product SKU Search with default search Hide WP Version Disable REST API Get Post Data with Post or page id (WCK CTP Select field) Custom API For Page with custom fields Disable WordPress Update Notifications Create Users Automatically In WordPress / create admin login Create and Diplsay ACF Texonomy Data Custom Post by Custom Texo filter JQuery Multiple Select Filter WordPress Premium Plugins Repo WP Premium Plugins Repo Part 2 Custom Taxonomy Template Post Order by ASC and DESC on published date Post Order by ASC and DESC on published date Widget Register and Dipslay Display category and Subcategory with Post CF7 Successful Submit Redirect to another page Load Fancybox on page load Once in month with cookies SVG Support in WP in function.php List Custom Taxonomy Wordpress Admin Login Page Layout Change Change Posts To Blogs (Post Type) JQuery Load More Display Custom Post under custom taxonomy Search Form with result page Stater Theme style.css file Acf option page Call Another Custom Header Zoho Integration for cf7 Forms www redirection 404 WP Template Coming Soon HTML Template Display Custom Posts by Category With Ajax filter Disable wordpress update notification / wp update notification custom breadcrumbs Disable admin toolbar except admin Disable Comment module on whole website Custom Data / Product / Card Filter by page load (by get and isset function) Mastek Resource Page for filter data List All pages on admin dashboard Custom Taxonomy Name on Single Page custom texonomy list with child WordPress Security and admin page Code Js Load on Page Based
Prints I love python Opens a comic in webbrowser YouTube video downloader GUI in Python A Simple Text Editor In Python CTk Login Form GUI in Python A Word Guessing Game In Python A GUI Password Manager With Database Connectivity in Python Word Counter In Python An Adventure Game GUI In Python A Basic Browser In Python Using PyQt5 (This doesn't store your browsing history!) Speech command Bot (Doraemon) In Python To-Do List Interface(With Lottie) In Python To-Do List Interface(With Lottie) In Python: HTML Code Rock Paper Scissors GUI In Python Rock Paper Scissors GUI In Python: The GUI code Your Motivator With Python And Unsplash Dice Stimulator Python CTk GUI A PNG to WEBP Converter With Python Mini Calculator GUI with Python A Number-Guessing Game In Python A Random Wikipedia Article Generator GUI In Python Your Own Gallery In Python A Tic Tac Toe Game In Python AI Weather Predictor That Doesn't Predict The Weather A Real-Time Spelling Checker In Python How to make a simple button in customtkinter Button like one on my website in python CTk How to make a simple checkbox in customtkinter python Hobby Selector Using Python CustomTkinter A sample comment in Python Python hub challenge 1 Single line comment in Python Multi line comments in Python Inline comments in Python Demonstrating Integers in Python Demonstrating Boolean numbers in Python Demonstrating Float numbers in Python Demonstrating Complex numbers in Python challenge 2 solution (numbers in python) Implicit type conversion in python Explicit type conversion python part 1 Explicit type conversion in python part 2 String formatting in Python String Concatenation in Python String formatting using print function Python Format function in Python % operator string formatting in Python F-String in Python How to utilize variables in string's solution string indexing python String Slicing question String Slicing question2 String Slicing question3 String Slicing question4 String Slicing question5 String Slicing Answer 1 String Slicing Answer 2 String Slicing Answer 3 String Slicing Answer 4 String Slicing Answer 5 String part 2 challenge solution Madlib in Python (solution) Madlib in Python (solution) output Madlib in Python (solution) 2 Madlib in Python (solution) output 2 Dictionary challenge solution Dictionary challenge solution output Single value tuple Python Single value tuple Python output Concatenate tuples in Python Copy a tuple in Python count() method tuple python index() method tuple python Tuple challenge Tuple challenge output Creating a set in Python Fun world Dictionary challenge Fun world Dictionary Output If else statement Elif ladder Multiple if statements Python Nested if else statements Python if else comprehension Simple calculator in python (if else challenge) Simple calculator in python (if else challenge) Output Iterating through list in Python Iterating through list in Python using For loop Break statement in Python Continue statement in Python Pass statement in Python Else with for loop in Python
9. Write a C program that prints the English alphabet (a-z). 10. Write a C program that prints both the Max and Min value in an array 1. Write a C program that takes a character from the user and prints its corresponding ASCII value 2. Write a C program, which reads an integer and checks whether the number is divisible by both 5 and 6, or neither of them, of just one of them. 4. Write a C program that checks if a number is prime or not. 5. Write a C program that stores an integer code in a variable called ‘code’. It then prompts the user to enter an integer from the standard input, which we will compare with our original ‘code’. If it matches the code, print ‘Password cracked’, otherwise, prompt the user to try again. For example, int code = 23421; //23421 is the code here. 6. Based on question 5, modify the program to keep track of the number of attempted password guesses. It then prints: “The password was cracked after ‘n’ amount of tries”, n being the tracking variable. Bonus Questions: 1. What is the difference between a while loop and a do-while loop? 2. Is the size of an Array mutable after declaration? 3. What is the purpose of passing the address of a variable in scanf? 4. What are the various possible return values for scanf? 5. Why do we declare the main method as an int function with return 0 at the end? 7. Write a C program that prompts the User to initialize an array by providing its length, and its values. It then asks him to enter the ‘focal number’. Your task is to print all the values in the array that are greater than the ‘focal number’. 8. Write a C program that prompts the user to enter 10 positive numbers and calculates the sum of the numbers.
Q12 Maximum Path Sum in the matrix - Coding Ninjas (Striver DP) Q- Recursion | Memoization | Tabulization in 2d dp READ ME Q18 Partitions with Given Difference | Practice | GeeksforGeeks Q17 Perfect Sum Problem | Practice | GeeksforGeeks Q16 Minimum sum partition | Practice | GeeksforGeeks Q52 Boolean Evaluation - Coding Ninjas Q-49 Matrix Chain Multiplication - Coding Ninjas Q24 Rod Cutting | Practice | GeeksforGeeks Q23 Knapsack with Duplicate Items | Practice | GeeksforGeeks Q-19 0 - 1 Knapsack Problem | Practice | GeeksforGeeks Q14 Subset Sum Equal To K - Coding Ninjas Q14 Cherry Pickup - Coding Ninjas Q-8 Ninja’s Training - Coding Ninjas Q-6 Maximum sum of non-adjacent elements - Coding Ninjas Q-3 Frog Jump - Coding Ninjas Q55 Count Square Submatrices with All Ones - LeetCode 1277 Q55 Maximal Rectangle - LeetCode 85 Q54 Partition Array for Maximum Sum - LeetCode1043 Q53 Palindrome Partitioning II - LeetCode 132 Q51 Burst Balloons - LeetCode 312 Q50 Minimum Cost to Cut a Stick - LeetCode 1547 Q47 Number of Longest Increasing Subsequence - LeetCode 673 Q45 Longest String Chain - LeetCode 1048 Q44 Largest Divisible Subset - LeetCode 368 Q43 Longest Increasing Subsequence - LeetCode 300 Q34 Wildcard Matching - LeetCode 44 Q33 Edit Distance - LeetCode 72 Q-32 Distinct Subsequences - LeetCode 115 Q25 Longest Common Subsequence - LeetCode 1143 Q22 Coin Change II - LeetCode 518 Q-20 Coin Change - LeetCode 322 Q-15 Target Sum - LeetCode 494 Q-12 Triangle - LeetCode 120 Q11 Minimum Path Sum - LeetCode 64 Q-10 Unique Paths II - LeetCode Q-9 Unique Paths - LeetCode 62 Q-6 House Robber II - LeetCode 213 Q-5 House Robber - LeetCode 198 Q-1 Climbing Stairs - LeetCode 70
8. Write a C program function that uses pointers to swap to numbers. 6. Write a C program that prints the English alphabet using pointers. 10. Write a C program void function that uses pointers to perform decompose operation. (Print only in the main function). Decompose means breaking up a decimal number into an integer part and a double part and storing them in different variables. 1. Write a C program function called ‘changeEven’ that changes all the even numbers within an array to 0, using pointer arithmetic 2. Write a C program function called ‘changePrime’, that changes all the prime numbers within an array to 0. Use another function, within ‘changePrime, called ‘checkPrime’, to check and return whether the number is prime or not, then update the value in the ‘changePrime’ accordingly. Don’t use pointer arithmetic 3. Write a C program that sorts an Array in descending order. 4. Write a C program function called ‘factorial’ that calculates and returns the factorial of a number. 5. Write a C program that gets an Array with 10 3-digits integer IDs. The program then prompts the user to enter his ID, which will be compared to the existing IDs within our Array. If his ID is matched, print “Accepted”, else print “Unaccepted”. 7. Write a C program that accepts three integers: a, b, and c, and prints them in ascending order 9. After the holidays lots of people were rushing to move back to their apartments. In this scenario, even numbers will represent women while odd numbers will represent men. Store the sequence of entry into the building by typing in even and odd numbers into an array at random. Calculate the largest sequence of women entering the building before a man enters. (The largest continuous number of women that entered before a man came in) Example: 17, 4, 6, 8, 9, 2, 8, 49 (The largest continuous number of women is 3).
Write a loop that reads positive integers from console input, printing out those values that are greater than 100, and that terminates when it reads an integer that is not positive. The printed values should be separated by single blank spaces. Declare any variables that are needed. Write a loop that reads positive integers from console input, printing out those values that are even, separating them with spaces, and that terminates when it reads an integer that is not positive. Write a loop that reads positive integers from console input and that terminates when it reads an integer that is not positive. After the loop terminates, it prints out the sum of all the even integers read. Given an int variable n that has been initialized to a positive value and, in addition, int variables k and total that have already been declared, use a while loop to compute the sum of the cubes of the first n counting numbers, and store this value in total. Thus if n equals 4, your code should put 1*1*1 + 2*2*2 + 3*3*3 + 4*4*4 into total. Use no variables other than n, k, and total. Do not modify n. Don't forget to initialize k and total with appropriate values. loop design strategies Given a char variable c that has already been declared, write some code that repeatedly reads a value from console input into c until at last a 'Y' or 'y' or 'N' or 'n' has been entered. Given a string variable s that has already been declared, write some code that repeatedly reads a value from console input into s until at last a "Y" or "y" or "N" or "n" has been entered. Write a loop that reads strings from console input where the string is either "duck" or "goose". The loop terminates when "goose" is read in. After the loop, your code should print out the number of "duck" strings that were read. Objects of the BankAccount class require a name (string) and a social security number (string) be specified (in that order) upon creation. Declare an object named account, of type BankAccount, using the values "John Smith" and "123-45-6789" as the name and social security number respectively.
powershell script to combine the content of multiple txt file with filepath as separator How to merge all .txt files into one using ps? - IT Programming ISE Scripting Geek Module Chocolatey Software Docs | Setup / Install Chocolatey Software Recursively identify files with TrID using PowerShell sending output to text file powershell - empty directories Chocolatey Setup Install Scoop To set a new permission using Powershell Select-Object with Out-GridView Move folders (from txt file) to another drive with dir structure convert xlsx to csv using powershell Register-PSRepository (PowerShellGet) - @parameters Get-PSReadLineKeyHandler (PSReadLine) - PowerShell | Microsoft Learn windows - How to extract the version from the name of a NuGet package file using PowerShell? - Stack Overflow Get List of Installed Windows 10 Programs | Canuck’s Tech Tips Out-File (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn Here's code that finds the indices of all supported property names(metadata) in windows How can I replace every occurrence of a String in a file with PowerShell? - Stack Overflow How can I replace every occurrence of a String in a file with PowerShell? - Stack Overflow How can I replace every occurrence of a String in a file with PowerShell? - Stack Overflow How can I replace every occurrence of a String in a file with PowerShell? - Stack Overflow How can I replace every occurrence of a String in a file with PowerShell? - Stack Overflow How to find metadata is available from file-properties - PowerShell Help - PowerShell Forums How to find metadata is available from file-properties - PowerShell Help - PowerShell Forums Getting installed applications with PowerShell merge CSV rows with partially duplicate lines Parts of the filename in PowerShell Automating HTML Parsing and JSON Extraction from Multiple URLs Using PowerShell | by Rihab Beji | Jan, 2025 | Medium Create a table, or an array of lists in PowerShell
components-of-robot Difference in Robot System and AI Programs How does the computer vision contribute in robotics? Goals of Artificial Intelligence four Categories of AI What is searching?What are the different parameters used to evaluate the search technique? Uninformed Search Algorithms First-Order Logic Inference rule in First-Order Logic What are different branches of artificial intelligence? Discuss some of the branches and progress made in their fields. What is adversarial search? Write the steps for game problem formulation. State and explain minimax algorithm with tic-tac-toe game. Explain the role of Intelligent Agent in AI. Also explain all types of intelligent agents in details. Explain PEAS. Write the PEAS description of the task environment for an automated car driving system. Define the role of the machine intelligence in the human life Describe arguments in multiagent systems and its types. negotiation and bargining Explain information retrieval with its characteristics. What is information extraction ? What do you mean by natural language processing ? Why it is needed? What are the applications of natural language processing? What are the various steps in natural language processing Machine translation What are the three major approaches of machine translation ? Forward Chaining AND Backward Chaining with properties Difference between Forwarding Chaining and Backward Chaining: knowledge representation Explain unification algorithm used for reasoning under predicate logic with an example. State Space Search in Artificial Intelligence Explain about the hill climbing algorithm with its drawback and how it can be overcome ? What is the heuristic function? min max algorithm Describe alpha-beta pruning and give the other modifications to the Min-Max procedure to improve its performance.
3. (Interest Calculator) The simple interest on a loan is calculated by the formula interest = principal * rate * days / 365; The preceding formula assumes that the rate is the annual interest rate, and therefore includes the division by 365 (days). Develop a program that will input principal, rate, and days for several loans, and will calculate and display the simple interest for each loan, using the preceding formula. 2. (Car-Pool Savings Calculator) Research several car-pooling websites. Create an application that calculates your daily driving cost, so that you can estimate how much money could be saved by carpooling, which also has other advantages such as reducing carbon emissions and reducing traffic congestion. The application should input the following information and display the user’s cost per day of driving to work: a) Total miles driven per day. b) Cost per gallon of gasoline. c) Average miles per gallon. d) Parking fees per day. e) Tolls per day. 1. (Diameter, Circumference, and Area of a Circle) Write a program that reads in the radius of a circle and prints the circle’s diameter, circumference, and area. Use the constant value 3.14159 for π. Perform each of these calculations inside the printf statement(s) and use the conversion specifier %f. Turbo C 1. (Credit Limit Calculator) Develop a C program that will determine if a department store customer has exceeded the credit limit on a charge account. For each customer, the following facts are available: a) Account number b) Balance at the beginning of the month c) Total of all items charged by this customer this month d) Total of all credits applied to this customer's account this month e) Allowed credit limit The program should input each fact, calculate the new balance (= beginning balance + charges – credits), and determine whether the new balance exceeds the customer's credit limit. For those customers whose credit limit is exceeded, the program should display the customer's account number, credit limit, new balance and the message “Credit limit exceeded.” Here is a sample input/output dialog: 2. (Sales Commission Calculator) One large chemical company pays its salespeople on a commission basis. The salespeople receive P200 per week plus 9% of their gross sales for that week. For example, a salesperson who sells P5000 worth of chemicals in a week receives P200 plus 9% of P5000, or a total of P650. Develop a program that will input each salesperson’s gross sales for last week and will calculate and display that salesperson’s earnings. Process one salesperson's figures at a time. Here is a sample input/output dialog: Valentines Coding
UserController Latest working login - frontend GetUserById - Possibly working(needs better photo handling) GetUserById - Works similar to Assignment 3 AllProducts(needs to get sipecified user id) Photo handling in profile page(before base64 changes) - Frontend test api key - sendgrid Forgot and Reset password methods (before Sendgrid implementation) - UserController Payment Prompt PaymentController(suggested by chatgpt) Payment model (b4 chatgpt changes) Reward controller, model, viewmodel & AppDbContext (b4 my changes) Reward model, viewmodel, controller & AppDbContext (latest working v1.0 after changes) Reward frontend component, service and model (latest working v1.0 after changes) Help on Register (usertype dilemma) Suggested Reward structure (chatgpt v1.0) Host Records namecheap (b4 changes) Predined Reward Types Reward controller (after changes v1.1) Profile Page ts (before member and reward changes) ProfilePageComponent(with working frontend image) Member Manager Component (B4 Reward Changes) SearchUser Backend Method(Dropped) AppDbContext (B4 Anda's backend implementation) UserController (B4 Anda's Backend Implementation) program.cs (B4 Anda's backend implementation) OnSubmit - Before profile update changes NG0900 error Program cs that allows authentication in cart&wishlist Before Wishlist and Cart Count Changes Program cs - (Order working version without configuring swagger for bearer) Forgot and Reset Password methods (before email logic) Product controller - B4 base64 and model change Product seed data - AppDbContext (b4 crud) UserDeletionService.cs - (B4 Configurable Timer Implementation) program.cs (b4 changing to have functionality for configurable timer) deletion settings update - html and ts (b4 viewing ability) Working UserDeletionService.cs - (Constraint: Limitation of 24.8 days) Checkout - with Discount Payfast.component.ts - before create payment Register User - deleted Register Employee - deleted Create Order (before product quantity depletion change) MovetoCart (before available stock changes) product-list component (before side navbar changes) Help PDF Method (convert to image and cannot search but has styling) Help PDF Method (can search but has no styling) User Deletion Logic (Before stored procedure implementation ) Stored Procedure Template in SQL (before replacing with mine) Stored Procedure for UpdateUserDeletionSettings and UserDeletionService (WORKING VERSION) Exporting Payments to Excel (Purely Frontend) Reward (before service) Payfast ts (before vat and discount implementation) Profile Page (before rewards) AppDbContext (Before merging) Product controller, model, viewmodels (Before Inventory relation) Inventory controller, model, viewmodel (before relation to product) Inventory controller, model, viewmodel (before relation to product) Supplier + Supplier_Order Controller, Models, Viewmodels (Before inventory implementation) Payfast ts (before type error) IMPORTS!!! IMPORTS!!! Seed data QualifyingMembers Stored Procedure Audit Trail Logic OrderStatusUpdate service (working with Period error) Adding Stored Procedure to DBContext ProductType seed data Payment before modifying excel Table count
1)OPERATORS TASK 1A 2)Student grade task 1B 3)command line arguments 1C 4)Constructor and method overloading task 2a 5)type casting task 2B 6)Use array sum of integers and find the sum and average of the elements of that array in java 7)Practice further programs on the usage of arrays in java 8)Write a program to utilize both standard and custom packages. The program should reflect the usage of packages in a correct manner, along with the purpose of access modifiers 9))Write a program to use gc() method of both System and Runtime classes. Experiment with other methods of those classes. 10)write a program using the hierarchy of employees in a university 11))Write a program to understand polymorphic invocation of methods,while overriding the methods. Use an employee base class and manager sub class; override the computeSalary() method to illustrate the concept. 12)Develop an application that uses inheritance. Use the class Account and then subclass it into different account types. Then making use of Customer and Employee classes to develop the application to reflect the nature of banking operations. Use minimum operational sequence. 13)Demonstrate the use of abstract classes. Write a Person abstract class and then subclass that into Student and Faculty classes. Use appropriate fields and methods. 14)Write a program to demonstrate the usage of interfaces. 15)Write a program to understand the full capability of String class.Implement as many methods as required. Consult API documentation to read through the methods. 16)Write programs using StringBuffer and StringBuilder library classes. 17)Write a program to demonstrate the usage of try and associated keywords. Introduce bugs into the program to raise exceptions and then catch and process them. 18)Learn how to create and use custom exceptions. 19)Using byte streams, write a program to both read from and write to files. 20)Using FileReader and FileWriter, write a program to perform file copying and any other suitable operations. 21)Write a Java Program that displays the number of characters, lines and words in a text file. 22)Use the classes StringTokenizer, StringReader and StringWriter to write a program to find the capabilities of these classes. 23)Write a program to demonstrate enumerations and usage of Assertions. 24) Demonstrate assertions through simple programs. 25)Write programs to illustrate the use of Thread class and Runnable interface. 26)Write a program to show the assignment of thread priorities. 27)Write a program to synchronize threads. Use Producer and Consumer problem to illustrate the concept. 28) LABEL DEMO 29) BUTTON DEMO 30) CHECK BOX DEMO 31) RADIO BUTTON DEMO 32) COMBO BOX DEMO 1 33) COMBO BOX DEMO 2 34) LIST DEMO 35) TEXT DEMO 36) File input stream demo(IO) 37) file output stream demo(IO) 38) file input stream demo (BYTE) 39) file OUTput stream demo (BYTE) 40) BUFFERED INPUT STREAM DEMO (BYTE) 41) BUFFERED OUTPUT STREAM DEMO (BYTE) 42)Byte Array Output sTream Demo (BYTE) 43) Byte Array Input Stream Demo (BYTE) 44) FILE READER & WRITER DEMO (CHAR) 45) Char Array Reader & WRITER Demo (CHAR) 46) CHAR BUFFER READER & WRITER DEMO (CHAR) 47) FILE FUNCTIONS (IO) 48) DIR LIST & CONSOLE DEMO 49) SERIALIZATION 50) INTER THREAD COMMUNICATION
choppystick/PyDoku: An implementation of the classic Sudoku puzzle game using Python and Pygame. It offers a graphical user interface for playing Sudoku, with features such as a menu system, difficulty levels, and the ability to play puzzles from the New York Times website. choppystick/py-sudoku-solver: Python implementation of a Sudoku solver using Linear Programming (LP). The solver can handle Sudoku puzzles of varying difficulties and can find multiple solutions if they exist. choppystick/py-sudoku-solver: Python implementation of a Sudoku solver using Linear Programming (LP). The solver can handle Sudoku puzzles of varying difficulties and can find multiple solutions if they exist. choppystick/PyDoku: An implementation of the classic Sudoku puzzle game using Python and Pygame. It offers a graphical user interface for playing Sudoku, with features such as a menu system, difficulty levels, and the ability to play puzzles from the New York Times website. choppystick/py-sudoku-solver: Python implementation of a Sudoku solver using Linear Programming (LP). The solver can handle Sudoku puzzles of varying difficulties and can find multiple solutions if they exist. choppystick/PyDoku: An implementation of the classic Sudoku puzzle game using Python and Pygame. It offers a graphical user interface for playing Sudoku, with features such as a menu system, difficulty levels, and the ability to play puzzles from the New York Times website. choppystick/PyDoku: An implementation of the classic Sudoku puzzle game using Python and Pygame. It offers a graphical user interface for playing Sudoku, with features such as a menu system, difficulty levels, and the ability to play puzzles from the New York Times website. choppystick/py-sudoku-solver: Python implementation of a Sudoku solver using Linear Programming (LP). The solver can handle Sudoku puzzles of varying difficulties and can find multiple solutions if they exist.
1. Create a web page using the advanced features of CSS Grid. Apply transitions and animations to the contents of the web page. 2. Create a web page using the advanced features of CSS Flexbox. Apply transitions and animations to the contents of the web page. 3. Demonstrate pop-up box alerts, confirm, and prompt using JavaScript. 4. Demonstrate Responsive Web Design using Media Queries to create a webpage. 5. Write a JavaScript program to demonstrate the working of callbacks, promises, and async/await. 6. Write an XML file that displays book information with the following fields: Title of the book, Author Name, ISBN number, Publisher name, Edition, and Price. Define a Document Type Definition (DTD) to validate the XML document created above. 7. Write an XML file that displays book information with the following fields: Title of the book, Author Name, ISBN number, Publisher name, Edition, and Price. Define an XML schema to validate the XML document created above. 8. Write a Java application to validate the XML document using the DOM parser. 14. Write a java program to establish connection to a database and execute simple SQL queries. 10. Write a Java program to access the metadata of an SQL database. 15. Write a java program to demonstrate the usage of JDBC in performing various DML statements. Use Prepared statements Demonstrate Servlet Lifecyle by implementing Servlet Interface. Demonstrate Creation of Servlet program using Http Servlet class. 11.Scientific Calculator 9. Write a Java application to validate the XML document using the SAX parser. 16. Write a java based application to demonstrate the Scrollable Result sets. 12. Demonstrate Servlet Lifecyle by implementing Servlet Interface. 13. Demonstrate Creation of Servlet program using Http Servlet class. 17. Write a program to accept request parameters from a form and generate the response.
1.Implement Dimensionality reduction by Principal Component Analysis and analyze the results of both methods. Consider petrol _consumption.cs dataset. Also write the program to visualize insights of the dataset. 2.Implement the Dimensionality Reduction using Recursive Feature Elimination method and analyze the results with any one classifier. Consider Fish.cs dataset. 3.Design and Demonstrate Regression model to predict the rent of a house. Evaluate the performance of the model. Consider Pune_rent.csv dataset. 4.Implement Regression model and compare the performance of the model with Dimensionality reduction and without Dimensionality reduction. Consider student_scores.csv dataset. 5.Implement the Decision tree Classification model on Iris.est dataset. Estimate the accuracy of the model. Also write the program to visualize insights of the dataset. 6.Write a program for k-NN classifier to predict the class of the person on available attributes. Consider diabetes.cs dataset. Also calculate the performance measures of the model 7.Design and implement a Random Forest Classification model to predict if a loan will get approved or not for a bank customer dataset. Estimate the accuracy of the model. Also write the program to visualize insights of the dataset. 8.Design and implement k-Means clustering to cluster species of flower. Estimate the accuracy of the model. Also write the program to visualize insights of the Iris dataset. 9.Design and implement Hierarchical clustering to cluster species of flower. Estimate the accuracy of the model. Also write the program to visualize insights of the Iris dataset.
Working with Object and Array Destructuring. Working with Modules. Working with Function Generators and Symbols. Working with Closure. . Working with higher order function in JavaScript. Using Callback and creating a Callback Hell situation to understand the drawbacks. Working with XHR: response. . Dealing with the Callback Hell situation using Promise. Exploring the different ways of ealing with the Callback Hell situation using Promise. Exploring the different ways of creating and using promise in executing the asynchronous task. Dealing with Promise chaining and async / await. Use fetch function to access remote data using the given api and display the data in the form of a table. Use fetch function to read the weather details from openweathermap.org and display the details like city, min-temp, max-temp, humidity on the webpage for a given city Create custom / local modules and export them using various module patterns. Explore the functionality of os, path, util and events modules. Use the fs module for creating directories and files of different formats Write script to read and write the streaming data using readable and writable streams. Create a http server listening request at port 3000. Process the request to provide different type of resources as response. (HTML, TEXT, JSON, etc.). Create a http server listening request at port 3000. Process the request to provide different type of resources as response. (HTML, TEXT, JSON, etc.). Create a custom API for Users data and add different endpoints in express server to perform CRUD operations on the API. Test the endpoints using POSTMAN. Create express server that has endpoints connecting to Users collection present in Mongo DB database using mongoose library and perform CRUD operation on that. Create express server that has authorized endpoint using JWT (JSON Web Token) library
Bricks CSS Selector Security Headers Bricks Initial CSS Enfold Update CSS Fix Splide JS - On Page Initialization Custom Script CDN Quick Shortcode Popup Maker - Button Markup SVG as Object Enqueue Style & Script Disabling Automatic Scrolling On All Gravity Forms Splide JS ACF Current User Fields Content - Show More/Less Enfold Increase Excerpt Length Slick Slider Extra Footer Featured Thumbnail Socket CSS Avia Layout Builder in custom post types (CPT) JS Notes Center Five Columns Extra Footer Top Overlay Disable Filter Facet Listing Code Enqueue Style Advanced Builder on Custom Post Event Shortcode BX Slider - Markup Inner Five Columns Center Three Columns Samahita - Multi Language General Type CSS Inner Submenu - Mobile Team Search CSS PDF Cover Image Source (X-Caliber) PDF Cover Image Enqueue Style Format The Content Formatting Filter Facet Pager - Load More CSS Extra Fonts on Theme Options Disable cropping of Big Preview on Single News Wrap - CSS Title Container Disable - CSS Custom Quote - CSS Flip Box - CSS Flip Box - Markup Toggle - jQuery Single Solid Area - CSS Header Area - CSS Section Title ALT Schema Generator Youtube API Big Logo Header Meta & Menu Combined Contact Page Template WPMU Nag Allow Vcard, Vcf Add Subscribers on Author Dropdown Clippy for stylish path maker Custom Twitter Feed Youtube API FAQs CSS jQuery Section Height Fixer GPS Latest Post CSS Disable Plugin Update Schema Marup Envato Token GForm Time Field CSS Limit 'the_content()' in wp Disable Sideber on custom archive Splide JS single-cpt Gfield Form Shortcode Center Four Col - Center Avia Layout Builder in custom post types jQuery New Approach GMAP API Fa Fa Icons Script - Font Awesome Testimonial-ALT-CSS Palles-Intro-CSS Palles-Intro-Shortcode Inner Submenu - CSS Inner Posts Card - CSS Top Overlay CSS Area Inner Landing Header Title Non Link Col Shortcode for HTML Custom Fonts Enqueue CSS Enqueue Custom Fonts Center Three/Four Columns jQuery Hide and Show Enqueue Custom Fonts Pallas-Insight-Shortcode Pallas-Insight-Single Gravity Address CSS Custom Font Initialization Gform Radio Btn CSS Inner Img Col Upload Vcard Custom Breadcrumb Draper Single Project Draper Shortcode Extra Fonts faq-content CSS Image Rotate CSS (Townly Kenton) Contact Form CSS BX Slider CSS BX Slider Hyperchat POPUP Popup CSS Popup Button Linear Gradient for Text Magnific Popup jQuery Manipulate Div JQuery Initial Google Map API Enfold Theme API