Programar no es solo saber escribir y leer código para desarrollar con calidad cualquier trabajo es necesario conocer las herramientas y tecnologías que se usan.
El oficio de un piloto de F1 es manejar, pero seguro conoce la mecánica de su carro al derecho y al revés.
Nosotros escribimos código, pero necesitamos saber cómo funciona el servidor en el que este corre, al derecho y al revés.
Voy a listar las que yo considero que son las tecnologías y conceptos indispensables que debemos dominar aparte de saber como escribir código.
Si no tienes claro cómo funciona el protocolo HTTP, arrancaste por el final.
Este debe ser el primer concepto que se aprende cuando se trabaja en desarrollo web.
El Curso de postman de platzi te ayudará con este tema.
Saber acelerar, no es saber manejar.
Saber escribir código, no es saber programar.
Pablo durante todo el curso menciona que nuestro trabajo principal es diseñar no escribir código, para ser un buen diseñador de software yo te recomiendo este libro A Philosophy of Software Design
OJO - Las cosas no son blanco / negro
El mayor problema en la seguridad en línea es la falta de conocimiento de quien implementa. Hay dos retos principales: seguridad en la comunicación, seguridad en la aplicación.
El primero se resuelve con comunicaciones encriptadas (SSL).
Para el segundo es importante conocer los riesgos que existen. Algunas de las más comunes:
Platzi también nos puede ayudar con este tema, de hecho tiene toda una carrera
Si no te gustan las expresiones regulares, garantizado que es porque no las sabe usar (bien).
Para variar Platzi tiene una solución para nuestros problemas con el Curso de Expresiones Regulares
Ahora si te voy a recomendar las herramientas que yo utilizo para escribir en python, las cuales me han ayudado a optimizar y hacer más eficiente la escritura del código y el mantenimiento de mi entorno de desarrollo en general.
Cabe destacar que yo trabajo sobre WSL2 en Windows 10 pro insiders, es decir, uso windows pero desarrollo sobre linux, si quieres un tutorial para preparar tu entorno de trabajo de esta manera dejalo en los comentarios.
Por como está haciendo las cosas windows últimamente me ha dado esperanzas en que no va a ser necesario comprarme una mac para tener un entorno de trabajo cómodo, compatible y eficiente.
VSCode de Microsoft.
No instales ninguna de las siguientes herramientas como dependencia de un proyecto. Estas deben ser instaladas de forma global en tu equipo. Por qué? Porque el proyecto no depende de ninguna de estas. Son ayudas que vas a usar para escribir un mejor código, y las podemos cambiar sin afectar los proyectos.
Instala paquetes de Python de forma independiente manteniendo limpio tu Python global.
Instala múltiples versiones de Python en tu sistema.
Cada proyecto debe tener su propio ambiente virtual de Python. Poetry maneja los ambientes virtuales y las dependencias del proyecto.
Es práctico configurarlo para que los ambientes virtuales sean creados en la misma carpeta del proyecto, así desde cualquier editor puede buscar en el código de los paquetes instalados:
poetry config settings.virtualenvs.in-project true
Evita darle vueltas a tema sobre que formato de escritura de código usar. Usa black y listo!
pipx install black
Ordena los imports de forma lógica.
Instalalo con el siguiente comando:
pipx install isort
Configura isort para que sea compatible con Black.
# ~/.isort.cfg[settings]multi_line_output=3include_trailing_comma=Trueforce_grid_wrap=0use_parentheses=Trueline_length=88
El código debe seguir los lineamientos de estilo y documentación recomendados por Python. Flake8 permite ejecutar pruebas de varios linters con un solo comando:
pycodestyle - lineamientos de estilo.
pydocstyle - lineamientos de documentación.
pyflakes - errores de código.
bugbear - reglas adicionales de errores de código
McCabe - complejidad de código.
Fixme - detecta FIXME y TODO
Usa los siguientes comandos para instalarlo:
pipx install flake8
pipx inject flake8 flake8-bugbear flake8-docstrings flake8-fixme
y te recomiendo la siguiente configuración:
# ~/.config/flake8# Based on [flake8]ignore = E203, E501, W503
max-line-length = 80max-complexity = 18select = B,C,D,E,F,H,T,W,B9
Para que el resultado de PyLint sea correcto, debe ejecutarse con la misma versión de python que se va a correr el proyecto. Para esto es útil usar pyenv.
Puedes instalar Pylint así:
pip install--userpylint
Para que funcione en ambientes virtuales es necesario instalar Pylint-venv.
pip install--userpylint_venv
Para que funcione con Django instalar Pylint-Django.
pip install--userpylint_django
Archivo de configuración:
# ~/.pylintrc# Configuración para PyLint instalado por pip
[MASTER]
max-line-length=88load-plugins=pylint_django
init-hook="
from pylint_venv import inithook
inithook()"disable=django-not-available,bad-continuation
Esta es la configuración que uso en mi VsCode para integrar todas estas herramientas al editor:
// Python Config"python.venvPath": "${workspaceFolder}/",
"python.pythonPath": "/home/david/.pyenv/shims/python",
"python.linting.enabled": true,
"python.formatting.provider": "black",
"python.formatting.blackPath": "/home/david/.local/bin/black",
"python.sortImports.args": ["--virtual-env", "${workspaceFolder}/.venv"],
"python.sortImports.path": "/home/david/.local/bin/isort",
"python.linting.flake8Enabled": true,
"python.linting.flake8Path": "/home/david/.local/bin/flake8",
"python.linting.pydocstylePath": "/home/david/.local/bin/pydocstyle",
"python.linting.pydocstyleEnabled": true,
"python.linting.pylintEnabled": true,
"python.linting.pylintPath": "/home/david/.pyenv/shims/pylint",
Debes tener instalada la extensión de Python
Muy completa tu info! Gracias.