Skip to content
Marcelo Alejandro Boujón edited this page Nov 7, 2023 · 12 revisions

Clase 1

Archivo: capa_datos.log

Este archivo es un registro (log) que muestra operaciones relacionadas con la capa de datos de la aplicación. Las operaciones incluyen el inicio de métodos, la creación del pool de conexiones, la obtención de conexiones y la actualización de usuarios.

Archivo: conexion.py

Clase Conexion

Atributos de clase:

  • _DATABASE: Nombre de la base de datos.
  • _USERNAME: Nombre de usuario para la conexión.
  • _PASSWORD: Contraseña para la conexión.
  • _DB_PORT: Puerto de la base de datos.
  • _HOST: Host de la base de datos.
  • _MIN_CON y _MAX_CON: Número mínimo y máximo de conexiones en el pool.
  • _pool: Pool de conexiones.

Métodos de clase:

  • obtenerConexion(): Obtiene una conexión del pool.
  • obtenerCursor(): Método marcador de posición.
  • obtenerPool(): Obtiene el pool de conexiones.
  • liberarConexion(conexion): Devuelve una conexión al pool.
  • cerrarConexiones(): Cierra todas las conexiones en el pool.

Archivo: cursor_del_pool.py

Clase CursorDelPool

Atributos:

  • _conexion: Conexión obtenida del pool.
  • _cursor: Cursor obtenido de la conexión.

Métodos:

  • __enter__(self): Obtiene un cursor de la conexión.
  • __exit__(self, tipo_exception, valor_exception, detalle_exception): Realiza un commit o rollback dependiendo de si hay excepciones, y luego cierra el cursor.

Archivo: logger_base.py

Configura y define un logger para la aplicación usando el módulo logging de Python.

Archivo: menu_app_usuario.py

Proporciona un menú interactivo para operaciones CRUD en usuarios. Las opciones incluyen listar usuarios, agregar usuarios, modificar usuarios, eliminar usuarios y salir.

Archivo: Persona.py

Clase Persona

Atributos:

  • _id_persona: ID de la persona.
  • _nombre: Nombre de la persona.
  • _apellido: Apellido de la persona.
  • _email: Email de la persona.

Métodos:

  • Constructor para inicializar la instancia.
  • __str__: Representación en cadena de la instancia.
  • Getters y Setters para cada atributo.

Archivo: persona_dao.py

Clase PersonaDAO

Constantes de clase:

  • Consultas SQL para operaciones CRUD.

Métodos de clase:

  • seleccionar(): Lista todas las personas.
  • insertar(persona): Inserta una nueva persona.
  • actualizar(persona): Actualiza una persona existente.
  • eliminar(persona): Elimina una persona.

Archivo: Usuario.py

Clase Usuario

Atributos:

  • _id_usuario: ID del usuario.
  • _username: Nombre de usuario.
  • _password: Contraseña del usuario.

Métodos:

  • Constructor para inicializar la instancia.
  • __str__: Representación en cadena de la instancia.
  • Getters y Setters para cada atributo.

Archivo: usuario_dao.py

Clase UsuarioDAO

Constantes de clase:

  • Consultas SQL para operaciones CRUD.

Métodos de clase:

  • seleccionar(): Lista todos los usuarios.
  • insertar(usuario): Inserta un nuevo usuario.
  • actualizar(usuario): Actualiza un usuario existente.
  • eliminar(usuario): Elimina un usuario.

#CLASE 2 Trabajando con Tipos de Datos y Sistemas de Numeración

Notación Exponencial en Python

En Python, se puede representar números muy grandes o muy pequeños de forma concisa utilizando la notación exponencial.

Ejemplos:

  • 3e5 representa 300,000. Es decir, 3 multiplicado por 10 a la potencia de 5.
  • 3e-5 representa 0.00003. Aquí, el número se calcula como 3 multiplicado por 10 a la potencia de -5.

Cualquier cálculo que incluya un número flotante resultará en un número flotante, incluso si los otros números son enteros.

Uso de Bases Numéricas en Python

Python permite trabajar con diferentes bases numéricas y ofrece la flexibilidad de convertir entre ellas.

Ejemplos:

  • Convertir una cadena en base 10 a un entero: a = int('23', 10)
  • Convertir una cadena en base 2 (binario) a un entero: a = int('10111', 2)
  • Convertir una cadena en base 8 (octal) a un entero: a = int('27', 8)
  • Convertir una cadena en base 16 (hexadecimal) a un entero: a = int('17', 16)
  • Convertir una cadena en una base arbitraria (por ejemplo, base 5) a un entero: a = int('34', 5)

Además, se puede controlar la cantidad de decimales mostrados en un flotante utilizando las f-strings y especificando el número de decimales después de un punto, por ejemplo: {a:.2f}.

Manejo de Valores Infinitos en Python

Python puede representar valores infinitos, lo que es útil en diversas aplicaciones matemáticas y lógicas.

Ejemplos:

  • Representar infinito positivo: infinito_positivo = float('inf') o infinito_positivo = math.inf
  • Representar infinito negativo: infinito_negativo = float('-inf') o infinito_negativo = -math.inf

Para comprobar si un valor es infinito, se puede usar la función math.isinf(), como en math.isinf(infinito_positivo).

También se puede trabajar con el módulo decimal para representar infinitos:

  • Infinito positivo: infinito_positivo = Decimal('Infinity')
  • Infinito negativo: infinito_negativo = Decimal('-Infinity')

De nuevo, math.isinf() se utiliza para comprobar si un número es infinito, independientemente de si se utiliza float o Decimal.

Representación de Números en Diferentes Sistemas de Numeración

Python soporta la representación de números en varios sistemas de numeración.

Ejemplos:

  • Sistema decimal: a = 10
  • Sistema binario: a = 0b1010 (el prefijo 0b indica que el número está en binario)

La función int() en Python es extremadamente versátil y permite la conversión entre diferentes sistemas numéricos, como se demostró en los ejemplos anteriores de conversión entre bases numéricas.

Clase 01 Laboratorio con Python - 14 de Agosto de 2023.

1.1 Comenzamos con el laboratorio de usuario: como tarea se debe crear el UML
1.2 Comenzamos a cargar la base de datos -> continuamos con postgresql
1.3 Vamos a avanzar con la clase entidad Usuario
1.4 Comenzamos con la Clase de UsuarioDAO
1.5 Comenzamos las pruebas de la Clase UsuarioDAO y menu_app_usuario
1.6 Comenzamos a generar las diferentes opciones en menu_app_usuario
1.7 Prueba final

1.0 Dato importante sobre Visual Studio Code por Tamara Piccini

Video Visual Studio Code

1.1 Comenzamos con el laboratorio de usuario: como tarea se debe crear el UML

video 1

1.2 Comenzamos a cargar la base de datos -> continuamos con postgresql

video 2

1.3 Vamos a avanzar con la clase entidad Usuario

video 3

1.4 Comenzamos con la Clase de UsuarioDAO

video 4

video 5

1.5 Comenzamos las pruebas de la Clase UsuarioDAO y menu_app_usuario

video 6

1.6 Comenzamos a generar las diferentes opciones en menu_app_usuario

video 7

video 8

video 9

video 10

1.7 Prueba final

Para todos los que no quieren parar de crecer, les comparto cursos dictados desde la escuela de EDteam, todos son gratuitos, aquí esta el enlace:

[Curso EDTeam](https://ed.team/blog/que-puedes-estudiar-completamente-gratis-en-edteam-incluye-certificado? utm_source=brevo&utm_campaign=%20Newsletter%20104%20%20cursos%20gratis%20en%20EDteam%20%20no%20premium&utm_medium=email)

Clase 2

Clase 02 Profundizando en Python con Sistemas Numéricos -> Parte 1 - 28 de Agosto de 2023.

2.1 Comenzamos con -> Decimal, Binario, Octal y Hexadecimal
2.2 Seguimos con -> Decimal, Binario, Octal y Hexadecimal Ahora con int('valor', base)
2.3 Tipo float como constructor y comienzo de exponencial
2.4 Exponencial negativo y positivo.
2.5 Valor Infinito Positivo y negativo.

2.1 Comenzamos con -> Decimal, Binario, Octal y Hexadecimal

https://campus.frsr.utn.edu.ar/moodle/pluginfile.php/94209/mod_lesson/intro/Sis%20num.png

video 1

2.2 Seguimos con -> Decimal, Binario, Octal y Hexadecimal Ahora con int('valor', base)

video 2

video 3

2.3 Tipo float como constructor y comienzo de exponencial

video 4

2.4 Exponencial negativo y positivo

video 5

2.5 Valor Infinito Positivo y negativo

https://campus.frsr.utn.edu.ar/moodle/pluginfile.php/94209/mod_lesson/intro/descarga.png?time=1693246099874

video 6

video 7

Clase 3

Clase 03 Profundizando en Python con Sistemas Numéricos y String -> Parte 2 - 04 de Septiembre de 2023.

1.1 Tipo NaN (Not a Number)
1.2 Tipo Bool: Partes 1, 2, 3, 4 y 5
1.3 Concatenación de String
1.4 Clase help(): Partes 1 y 2

1.1 Tipo NaN (Not a Number)

https://campus.frsr.utn.edu.ar/moodle/pluginfile.php/94210/mod_lesson/intro/0_xUe5HglgQntK4aVJ.jpg

video 1

1.2 Tipo Bool

https://campus.frsr.utn.edu.ar/moodle/pluginfile.php/94210/mod_lesson/intro/featured.jpg

Parte 1 -> Trabajamos con el constructor bool()

video 2

Parte 2 -> Utilizamos el tipo str (String)

video 3

Parte 3 -> Trabajamos con las Colecciones

video 4

Parte 4 -> Sentencia de control if else

video 5

Parte 5 -> Terminamos con ciclos

Vídeo 6

1.3 Concatenación de String

video 7

1.4 Clase help()

Parte 1 -> Consulta con la clase str (String)

video 8

Parte 2 -> Consulta con el módulo math

video 9

https://campus.frsr.utn.edu.ar/moodle/pluginfile.php/94210/mod_lesson/intro/image.jpeg

Clase 4

Clase 04 Hoy hay CUESTIONARIO

https://youtube.com/live/Z0uC_QwAGdM?feature=share

4.1 Hoy solo tendremos el cuestionario de Diseño para programadores -> deben tomar el cuestionario donde tendrán múltiples opciones, una de ellas es la correcta, 19 preguntas que deberán aprobar con 9, un resultado menor a este, hará que deban tomar nuevamente el cuestionario, la duración es de media hora, si en las dos oportunidades no has logrado el porcentaje deseado, deberás tomar nota, y enviarme en formato PDF las respuestas que creas correctas, siendo esta la última oportunidad, el propósito de esta metodología es que se aprendan bien los conceptos para una buena calidad de servicio en programación.

Clase 5

Clase 05 Profundizando en String

https://campus.frsr.utn.edu.ar/moodle/pluginfile.php/94212/mod_lesson/intro/1637739067090.gif

5.1 Documentación -> doc string

video 1

5.2 Dunder doc (doc) -> parte 1 y 2

video 2

video 3

5.3 String inmutables

VIDEO 4

5.4 Método join para colecciones a cadenas -> Parte 1 y 2

video 5

Vídeo 6

5.5 Método split cadena a lista -> Parte 1 y 2

video 7

video 8

Clase 6

Clase 06 Profundizando en String -> Parte 2

6.1 Parámetro posicional de tipo String

video 1

6.2 Avanzamos desde una tupla

video 2

6.3 Uso del método format() -> utilizamos place holder Parte -> 1

video 3

Parte -> 2

VIDEO 4

Parte -> 3

video 5

6.4 Uso del template literal

Vídeo 6

6.5 Uso del método print() para dar formato en la salida

video 7

6.6 Máquinas Virtuales -> Aporte de Francisco Rodeles

https://campus.frsr.utn.edu.ar/moodle/pluginfile.php/94213/mod_lesson/intro/Virtualizar-Windows-en-Mac-con-una-maquina-virtual-VirtualBox.jpg

video 8

Clase 7

Clase 07 Proyecto en Python -> será para analizar el código

7.1 Proyecto en Python by Virginia Castellano -> Presentación

video 1

7.2 Abriendo un poco el código y explicando lo que sucede

video 2

Al ver este repositorio a través del enlace que ahora les dejo, analicen profundamente todo lo que se logró y al nivel que se logró, tengan en cuenta cada librería, cada herramienta, cada tecnología, de este proyecto algo útil podemos obtener ante alguna demanda laboral.

Gracias a la compañera por el video: Virginia Castellano

acceso al repositorio

Clase 8

Clase 08 Python en Entorno Profesional -> Parte 1 Requisitos de finalización Abrió: lunes, 9 de octubre de 2023, 18:00 Cierra: sábado, 7 de diciembre de 2030, 08:50

Aquí esta el video en vivo desde el canal de YouTube:

Clase en Vivo

8.1 Vamos a entrar en los diferentes enlaces -> leer la información e installar

Teclear aquí para VER el video 1

Se debe instalar la terminal de Linux en Windows

Activar linux en window 10

Aquí está la guía de instalación en windows desde Microsoft

Microsoft

Introducción a WSL -> lectura y guía de instalación subsistema windows

WSL

Lista de reproducción desde YouTube de como seguir los pasos de instalación:

Otro video desde YouTube por si quedan dudas, errores -> aunque trata de la instalación de Docker tiene una buena guía de la instalación de wsl 2

Reproducir Vídeo Aquí aunque muestra instalaciones sobre Docker, también es útil para instalar wsl

El objetivo es que les quede funcionando la terminal de wls, Linux en windows, estas son las instalaciones requeridas para todos los que tienen windows 10, no otro. También encontrarán guía para macOS y los que tienen Linux, son los que mejor están ante esta situación, están listos para empezar.

Clase 09 Python en Entorno Profesional -> Parte 2 Requisitos de finalización Abrió: lunes, 23 de octubre de 2023, 18:00 Cierra: miércoles, 7 de agosto de 2030, 08:50

Aquí esta el video en vivo desde el canal de YouTube:

Clase en Vivo

9.1 Terminal Linux -> Comandos para iniciar Python Profesional

Les sugiero: La carpeta a crear deben ponerle el nombre de -> py-project

                   El archivo dentro de esta carpeta debe llamarse -> hello.py

Teclear aquí para VER el video 1

9.2 Comandos para utilizar e instalar dependencias

Teclear aquí para VER el video 2

9.3 Más instalaciones por hacer y extensiones para VSC

Teclear aquí para VER el video 3

9.4 Configuraciones, instalaciones para solucionar posibles errores

Teclear aquí para VER el video 4

9.5 Como se ejecutan desde la terminal los archivos.py

Teclear aquí para VER el video 5

9.6 Creamos el repositorio en GitHub desde la terminal

Recuerden que para crear el repositorio deben utilizar el comando -> git init

Yo no lo utilizo porque ya lo había hecho y no lo grabe

Teclear aquí para VER el video 6

9.7 Solucionamos fallas en GitHub -> Guía y enlace desde YouTube

Teclear aquí para VER el video 7

Reproducir Vídeo En el enlace da los pasos para lograr la conexión sin problemas

comandos a agregar en la terminal mostrados en el video de YouTube:

Paso 1 -> ls -al ~/.ssh

Paso 2 -> ssh-keygen -t ed25519 -C "tu_correo@mail.com"

Paso 3 -> Enter file in which to save the key (/root/.ssh/id_ed25519):NO COLOCAR NADA SOLO ENTER

Paso 4 -> Enter passphrase (empty for no passphrase): password

Paso 5 -> Enter same passphrase again: password => ingresamos de nuevo la contraseña

Paso 6 -> The key fingerprint is: nos genera un código personal con nuestro correo

Paso 7 -> eval ssh-agent -s ingresamos este comando press enter

Paso 8 -> ssh-add ~/.ssh/id_ed25519 ingresamos este comando press enter

Paso 9 -> nos pide el password de nuevo => debemos ingresarlo luego enter

Paso 10 -> cat ~/.ssh/id_ed25519.pub ingresar ahora este comando press enter

Paso 11 -> copy and paste en github.perfil Settings => SSH and GPG Keys

Paso 12 -> New SSH key

Paso 13 -> Colocar un título

Paso 14 -> Pegar el código que obtuvimos desde la terminal en ubuntu => create

Paso 15 -> ahora hacemos un git push origin master o main => elegir una de las dos

Si elegiste master y era main va a crear la rama master o viceversa.

---SOLUCIONADO---

Repasar

Clase 10 Python en Entorno Profesional -> Parte 3 Requisitos de finalización Abrió: lunes, 30 de octubre de 2023, 18:00 Cierra: sábado, 7 de diciembre de 2030, 08:50

Aquí esta el video en vivo desde el canal de YouTube:

Reproducir Vídeo 10.1 Configuramos el gitignore y el README.md

Teclear aquí para VER el video 1

10.2 Creamos la carpeta game con el archivo main.py

El código está en el siguiente -> enlace a GitHub

Teclear aquí para VER el video 2

Copy & Paste y luego jugamos

10.3 ¿Qué es pip? -> el gestor de paquetes de python

Teclear aquí para VER el video 3

10.4 Instalación global de matplotlib

Teclear aquí para VER el video 4

10.5 Instalación del entorno virtual con los paquetes necesarios

Teclear aquí para VER el video 5

Aquí están los comandos para eliminar errores:

Crear entorno virtual con el nombre venv

python3 -m venv venv

Activar entorno virtual

source venv/bin/activate

pip freeze para verificar que no ha nada instalado aún

pip3 freeze

Instalar

Antes de instalar Pillow(se instala con matplotlib),

asegúrate de haber instalado las dependencias:

$ sudo apt-get install python-dev python-setuptools

$ sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk

pip freeze para verificar lo instalado solo en el entorno virtual

pip3 freeze

desde aquí vamos a instalar un paquete:

pip3 install matplotlib + enter

10.6 Creamos los archivos de main.py y charts.py

Teclear aquí para VER el video 6

10.7 Configuramos el main.py y ejecutamos

Teclear aquí para VER el video 7

10.8 Ahora vamos a ver algo de Docker by Francisco Rodeles

Teclear aquí para VER el video 8

Tenemos la oportunidad de hacer preguntas, hoy está Francisco desde Zoom para ayudar en Docker

Repasar

Python en Entorno Profesional -> Parte 2

Curso PYTHON-04

En el enlace da los pasos para lograr la conexión sin problemas

comandos a agregar en la terminal mostrados en el video de YouTube:

Paso 1 -> ls -al ~/.ssh

Paso 2 -> ssh-keygen -t ed25519 -C "tu_correo@mail.com"

Paso 3 -> Enter file in which to save the key (/root/.ssh/id_ed25519):NO COLOCAR NADA SOLO ENTER

Paso 4 -> Enter passphrase (empty for no passphrase): password

Paso 5 -> Enter same passphrase again: password => ingresamos de nuevo la contraseña

Paso 6 -> The key fingerprint is: nos genera un código personal con nuestro correo

Paso 7 -> eval ssh-agent -s ingresamos este comando press enter

Paso 8 -> ssh-add ~/.ssh/id_ed25519 ingresamos este comando press enter

Paso 9 -> nos pide el password de nuevo => debemos ingresarlo luego enter

Paso 10 -> cat ~/.ssh/id_ed25519.pub ingresar ahora este comando press enter

Paso 11 -> copy and paste en github.perfil Settings => SSH and GPG Keys

Paso 12 -> New SSH key

Paso 13 -> Colocar un título

Paso 14 -> Pegar el código que obtuvimos desde la terminal en ubuntu => create

Paso 15 -> ahora hacemos un git push origin master o main => elegir una de las dos

Si elegiste master y era main va a crear la rama master o viceversa.

Clone this wiki locally