<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: JkDev</title>
    <description>The latest articles on DEV Community by JkDev (@jkdevarg).</description>
    <link>https://dev.to/jkdevarg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1600909%2Faac3ccf8-8075-4a50-bed1-027fbd49d132.jpeg</url>
      <title>DEV Community: JkDev</title>
      <link>https://dev.to/jkdevarg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jkdevarg"/>
    <language>en</language>
    <item>
      <title>[Python] Tool Hacking Plus</title>
      <dc:creator>JkDev</dc:creator>
      <pubDate>Sun, 30 Jun 2024 18:02:49 +0000</pubDate>
      <link>https://dev.to/jkdevarg/python-tool-hacking-plus-11e</link>
      <guid>https://dev.to/jkdevarg/python-tool-hacking-plus-11e</guid>
      <description>&lt;p&gt;Herramienta para uso diario, scanea cualquier host obteniendo datos del sistema.&lt;/p&gt;

&lt;p&gt;Por ahora está en versión pre-alpha lo cual falta agregar mas utilidades que se van agregar mas adelante.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;████████╗██╗  ██╗██████╗
╚══██╔══╝██║  ██║██╔══██╗
   ██║   ███████║██████╔╝
   ██║   ██╔══██║██╔═══╝
   ██║   ██║  ██║██║     
   ╚═╝   ╚═╝  ╚═╝╚═╝     

usage: thp [-h] [-a] [-p PORT] [-t HOST] [-v] [-o OUTPUT]

THP CLI tool for network analysis

options:
  -h, --help            show this help message and exit
  -a, --about           Show help information
  -p PORT, --port PORT  Port number
  -t HOST, --host HOST  Host to analyze
  -v, --verbose         Enable verbose output
  -o OUTPUT, --output OUTPUT
                        Output file name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;repositorio:&lt;br&gt;
&lt;a href="https://github.com/JkDevArg/thp_python"&gt;https://github.com/JkDevArg/thp_python&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>hacking</category>
      <category>opensource</category>
      <category>security</category>
    </item>
    <item>
      <title>[NestJS] API DockerHub + IA + PASETO (Local)</title>
      <dc:creator>JkDev</dc:creator>
      <pubDate>Sun, 23 Jun 2024 21:13:43 +0000</pubDate>
      <link>https://dev.to/jkdevarg/nestjs-api-dockerhub-ia-paseto-local-2n4n</link>
      <guid>https://dev.to/jkdevarg/nestjs-api-dockerhub-ia-paseto-local-2n4n</guid>
      <description>&lt;p&gt;Proyecto en NestJS usando los endpoints de DockerHub (para buscar repositorios), utilizando autenticación con Paseto y con la ayuda de IA (Geminis).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introducción:&lt;/strong&gt;&lt;br&gt;
Es un proyecto que arme estando aburrido, mediante los endpoints de DockerHub obtengo datos de los repositorios, con ellos y usando IA Geminis creo un docker-compose.yml listo para ser ejecutado. &lt;br&gt;
Si se envia un parametro tipo boleano en la query ej:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http://localhost:3000/api/v1/docker/find?id=bitnami/laravel&amp;amp;execute=true&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;ejecuta el docker compose para crear las imagenes y el contenedor.&lt;/p&gt;

&lt;p&gt;Si todo esta bien la respuesta de la API será correcta devolviendo, la respuesta de DockerHub, el contenido del docker-compose.yml el comando que se puede ejecutar, y el output del docker-compose a la hora de crearse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capturas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2am8hzgm4gml2zmirjgu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2am8hzgm4gml2zmirjgu.png" alt="Postman" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1yt74y39jktu8e90a5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1yt74y39jktu8e90a5f.png" alt="Postman" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtg729emqiiaw22oa49d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtg729emqiiaw22oa49d.png" alt="Folder" width="800" height="27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F77wtt0gmbkcwnm9r2wqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F77wtt0gmbkcwnm9r2wqd.png" alt="Docker" width="800" height="29"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fi4d92pw1fasfrocxe8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fi4d92pw1fasfrocxe8.png" alt="Docker" width="665" height="57"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zfrdnd6kvvoh6iw4hvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zfrdnd6kvvoh6iw4hvw.png" alt="VSCode" width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luego puedes configurar cualquier proyecto o repositorio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extras&lt;/strong&gt;&lt;br&gt;
También se uso la libreria de PASETO para autenticación con token.&lt;br&gt;
Para más info &lt;a href="https://paseto.io/"&gt;sitio web&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si ven que no funciona a la primera o sale error 400, vuelven a ejecutar o sino pueden ir al directorio raíz donde se creo el composer y lo pueden volver a generar.&lt;/p&gt;

&lt;p&gt;Código del proyecto &lt;br&gt;
&lt;a href="https://github.com/JkDevArg/API-NestJS-DockerHub"&gt;https://github.com/JkDevArg/API-NestJS-DockerHub&lt;/a&gt;⭐⭐⭐&lt;/p&gt;

</description>
      <category>nestjs</category>
      <category>javascript</category>
      <category>api</category>
      <category>ai</category>
    </item>
    <item>
      <title>[JS]Bootstrap version converter</title>
      <dc:creator>JkDev</dc:creator>
      <pubDate>Sat, 22 Jun 2024 17:56:34 +0000</pubDate>
      <link>https://dev.to/jkdevarg/jsbootstrap-version-converter-5a1m</link>
      <guid>https://dev.to/jkdevarg/jsbootstrap-version-converter-5a1m</guid>
      <description>&lt;p&gt;Cambiar la versión de Bootstrap con JavaScript.&lt;/p&gt;

&lt;p&gt;Estructura&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;conversions

&lt;ul&gt;
&lt;li&gt;b3to4.json&lt;/li&gt;
&lt;li&gt;b3to5.json&lt;/li&gt;
&lt;li&gt;b4to5.json&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;css

&lt;ul&gt;
&lt;li&gt;style.css&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;js

&lt;ul&gt;
&lt;li&gt;script.js&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;index.html&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Script para convertir código HTML con bootstrap 3 a una versión actual ej: Bootstrap 3 a Bootstrap 4 o Bootstrap 3 a Bootstrap 5.&lt;/p&gt;

&lt;p&gt;Toda la función se realiza en script.js mientras que utiliza los json para obtener las clases y luego reemplazarlas.&lt;/p&gt;

&lt;p&gt;Url del proyecto: &lt;a href="https://github.com/JkDevArg/bootstrap-version-converter"&gt;https://github.com/JkDevArg/bootstrap-version-converter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>bootstrap</category>
      <category>css</category>
      <category>beginners</category>
    </item>
    <item>
      <title>[Docker] Laravel, Nginx MySQL</title>
      <dc:creator>JkDev</dc:creator>
      <pubDate>Thu, 13 Jun 2024 03:16:42 +0000</pubDate>
      <link>https://dev.to/jkdevarg/docker-laravel-nginx-mysql-4lp0</link>
      <guid>https://dev.to/jkdevarg/docker-laravel-nginx-mysql-4lp0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Dockerización&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PHP 8.2&lt;/li&gt;
&lt;li&gt;Laravel 11 (Latest)&lt;/li&gt;
&lt;li&gt;Nginx (Latest)&lt;/li&gt;
&lt;li&gt;MySQL (Latest)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Uso&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;docker-compose build&lt;/li&gt;
&lt;li&gt;docker-compose up -d&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Config&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configurar el .env de laravel&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM php:8.2-fpm-alpine

# Update app
RUN apk update &amp;amp;&amp;amp; apk add --no-cache tzdata
# Set timezone
ENV TZ="UTC"

RUN apk add --update --no-cache autoconf g++ make openssl-dev
RUN apk add libpng-dev
RUN apk add libzip-dev
RUN docker-php-ext-install gd
RUN docker-php-ext-install zip
RUN docker-php-ext-install bcmath
RUN docker-php-ext-install sockets
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
### End Init install

# Install Redis
RUN pecl install redis
RUN docker-php-ext-enable redis

# Install Mongodb
RUN pecl install mongodb
RUN docker-php-ext-enable mongodb

RUN docker-php-ext-install mysqli pdo pdo_mysql &amp;amp;&amp;amp; docker-php-ext-enable pdo_mysql

WORKDIR /home/source/main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;docker-compose.yml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: '3.7'
services:

  mysql:
    image: mysql:latest
    container_name: mysql
    platform: linux/x86_64
    ports:
      - "3306:3306"
    volumes:
      - mysql-volumes:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: laravelroot
      MYSQL_DATABASE: db_nginx

  laravel-app:
    build:
      context: ./docker/php
    container_name: laravel-app
    volumes:
      - ./laravel/:/home/source/main
    working_dir: /home/source/main

  nginx:
    build:
      context: ./docker/nginx
    container_name: todo-nginx
    ports:
      - "8000:80"
    depends_on:
      - laravel-app
    volumes:
      - ./laravel/:/home/source/main

volumes:
  mysql-volumes:

networks:
  default:
    name: laravel-app-netword
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repositorio:&lt;br&gt;
&lt;a href="https://github.com/JkDevArg/Docker-NLM"&gt;https://github.com/JkDevArg/Docker-NLM&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>laravel</category>
      <category>nginx</category>
      <category>mysql</category>
    </item>
    <item>
      <title>[JavaScript] Generate Unique Code</title>
      <dc:creator>JkDev</dc:creator>
      <pubDate>Wed, 12 Jun 2024 23:30:06 +0000</pubDate>
      <link>https://dev.to/jkdevarg/javascript-generate-unique-code-2jlj</link>
      <guid>https://dev.to/jkdevarg/javascript-generate-unique-code-2jlj</guid>
      <description>&lt;p&gt;Script que genera código único.&lt;/p&gt;

&lt;p&gt;El script se basa en las siguientes condiciones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debe tener una longitud de 6 caracteres&lt;/li&gt;
&lt;li&gt;Debe empezar con las siguientes letras "M", "B", "L"&lt;/li&gt;
&lt;li&gt;Debe ser todo en mayuscula&lt;/li&gt;
&lt;li&gt;No debe contener el número 1&lt;/li&gt;
&lt;li&gt;No se pueden repetir&lt;/li&gt;
&lt;li&gt;Se deben generar 10,000 códigs en 20 archivos de texto&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ejemplo de salida:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;B3HFHF
L8HMBA
BVQYPM
BG8L4S
B524DA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repositorio: &lt;a href="https://github.com/JkDevArg/generate_unique_codes"&gt;https://github.com/JkDevArg/generate_unique_codes&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
      <category>github</category>
    </item>
    <item>
      <title>[Python] Take Screenshot every 1 minute</title>
      <dc:creator>JkDev</dc:creator>
      <pubDate>Wed, 12 Jun 2024 18:34:16 +0000</pubDate>
      <link>https://dev.to/jkdevarg/python-take-screenshot-every-1-minute-4mhe</link>
      <guid>https://dev.to/jkdevarg/python-take-screenshot-every-1-minute-4mhe</guid>
      <description>&lt;p&gt;Tool that takes screenshots and extracts information from your computer every 1 minute, running in the background.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1mw8uhjdg7ik2prjdjg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1mw8uhjdg7ik2prjdjg.png" alt="Files" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkohynihghw3nlm4oawdl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkohynihghw3nlm4oawdl.png" alt="Task background" width="800" height="74"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4j7emcx6gim18mnsi2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4j7emcx6gim18mnsi2i.png" alt="Tasks Proccess" width="380" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/JkDevArg/tool_python"&gt;https://github.com/JkDevArg/tool_python&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>code</category>
      <category>linux</category>
      <category>windows</category>
    </item>
  </channel>
</rss>
