Cuáles son las ventajas e inconvenientes del teletrabajo para los perfiles de programación

15/01/2021
Artículo original

Imagen ornamental. Una mujer trabajando con un ordenador frente a una ventana abierta.

El trabajo desde casa varía de una persona a otra. Si tienes la costumbre de trabajar en un entorno de oficina, el trabajo en remoto puede resultar muy desalentador.

No obstante, los desarrolladores que trabajan a distancia son cada vez más numerosos debido a la flexibilidad del horario de trabajo y a la posibilidad de contratar a personas con talento que viven fuera de la región.

Con la aparición de la crisis de la COVID-19, el teletrabajo se ha convertido en prácticamente una obligación para muchos programadores. Pero, aunque parece una gran cosa, también tiene sus inconvenientes. Algunos importantes.

Este artículo expone algunas ventajas y desventajas de teletrabajar. Están agrupadas en dos categorías: una general para todo tipo de trabajadores, y otra más específica para desarrolladores de software.

Ventajas e inconvenientes del teletrabajo para todo tipo de profesionales

Desventajas:

  • Ausencia de vida social en el lugar de trabajo: aunque puedes interactuar con compañeros y clientes a través de la tecnología, sin embargo, no es lo mismo que las reuniones cara a cara.
  • Autodisciplina: necesitas mucha vocación para trabajar desde casa y no distraerte, ya que es fácil perder la motivación.
  • Dependencia de la tecnología: dependes totalmente de la tecnología, ya que tienes que depender de los correos electrónicos, las llamadas en conferencia y los mensajes para mantenerte en contacto.
  • La empresa podría considerar que no estás haciendo nada: si los directivos no están capacitados para gestionar eficazmente a los empleados en remoto, la productividad puede ser baja. O parecerlo.

Beneficios:

  • Flexibilidad de horarios de trabajo: puedes planificar tu propio horario para que también se adapte a tu vida familiar.
  • Más productividad: el trabajo a distancia puede mejorar la productividad si se utilizan las mejores prácticas y las herramientas adecuadas.
  • Aprender nuevas habilidades: puedes aprender cosas nuevas mediante cursos online y también enseñarte a ti mismo nuevas habilidades de forma autodidacta.
  • Ahorrar costes: trabajar desde casa es más rentable, ya que ahorras dinero en los gastos de transporte.
  • Más concentración: puedes trabajar sin ninguna interrupción típica de las oficinas, como la de socializar de más en la hora del café.
  • No tienes que vivir en la misma ciudad: el trabajo a distancia no requiere tener una presencia física, así que puedes trabajar desde cualquier lugar.

Ventajas e inconvenientes del teletrabajo desde el punto de vista de un programador

Imagen ornamental. Un hombre trabajando con un ordenador delante de una ventana

Desventajas:

  • Si el equipo vive en diferentes zonas horarias, lo más eficiente es dividir el trabajo de manera que se requiera una comunicación mínima entre las zonas; esto puede aumentar la carga de documentación y llevar a estructuras de división del trabajo que no sean las más óptimas.
  • Las relaciones de trabajo por Slack / Microsoft Teams / Google Chat no son tan efectivas como las que se celebran en la misma sala de reuniones. Al margen de los problemas de socialización que mencionamos arriba, para los desarrolladores también puede suponer una merma en la resolución de problemas espontáneos de "conversación de pasillo" e "ideas felices" de ese estilo que surgen en conversaciones técnicas informales sobre el trabajo.
  • Como desarrollador de software trabajando a distancia puedes caer en la tentación de disimular o ocultar más fácilmente los problemas del software, "escurriendo el bulto" o, al menos, difuminando la responsabilidad de los mismos, especialmente en temas de integraciones o funcionalidades comunes que exigen un desarrollo más colaborativo.
  • Los desplazamientos mensuales o trimestrales pueden parecer divertidos, pero cuando te acostumbras a trabajar desde casa y tener un alto nivel de productividad, los viajes a la sede de la empresa para estar con todo el equipo se pueden convertir en algo tedioso y para muchos desarrolladores se convierte en una pérdida de tiempo que no les permite avanzar en los proyectos de desarrollo.
  • Si eres jefe de desarrollo o de proyecto que trabaja en remoto, lo normal es delegar algunos de los aspectos del liderazgo a alguien que trabaja presencialmente, que efectivamente no hace el trabajo en remoto pero que, sin embargo, es corresponsable, en teoría, de los resultados.

Ventajas:

  • Si el trabajo puede dividirse bien a través de las distintas franjas horarias (por ejemplo, los módulos del software de un subequipo se revisan durante la noche por un subequipo en remoto, y viceversa), el equipo puede avanzar hacia una productividad de 16 ó incluso 24 horas al día, en vez de 8.
  • Puedes optar a trabajar para aquellas empresas de software que te interesan aunque no tengan una sede en tu ciudad o zona geográfica, ya que la mayoría de las mejores empresas de software tienen sede en las grandes ciudades o ámbitos geográficos muy concretos.
  • Lo que la empresa de software se ahorra en espacio físico y los costes asociados, lo puede invertir en mejores salarios, mejores herramientas o en equipos a medida para cada programador, lo que aumenta la satisfacción general de los trabajadores de la empresa y la productividad de la misma.
  • Al margen de la flexibilidad horaria mencionada antes, el trabajo como programador tiene picos de trabajo asociados a el cumplimiento de los plazos para la entrega de un proyecto, recuperación de horas perdidas por un bug inesperado o nuevas especificaciones de producto, etc... Es mucho más fácil sumar estas horas trabajando desde casa, y también recuperar horas libres para compensar el trabajo extra en momentos de menor actividad.
  • Atajar el sedentarismo típico de los desarrolladores. Desde casa es más fácil organizarse para salir a hacer ejercicio y también para comer mejor.
  • Estar a solas con el ordenador y evitar las distracciones mientras se programa. Lo mencionamos arriba, pero en el caso de un desarrollador evitar distracciones e interrupciones es mucho más crítico. Se dice que un programador al que se le interrumpe tarda unos 15 minutos de media en volver a enganchar con el punto mental en el que estaba antes de la distracción.
  • Vestirse como a uno le da la gana. Por lo general a los programadores les gusta ir en camiseta y con ropa cómoda, que en muchos ambientes laborales se considera demasiado informal. En otros sectores, a los teletrabajadores les gusta vestir más formal aunque nadie les vaya a ver en persona, pero normalmente no es el caso de los desarrolladores de software.

Conclusión

A medida que el mundo se transforma, el trabajo en remoto tiene importantes ventajas y desventajas dependiendo de la persona. Lo que funciona para ti o tu empresa no necesariamente tiene que funcionar para los demás. Pero, con los crecientes avances en el mundo de la tecnología, está claro que el teletrabajo juega ya un papel crucial en el devenir de las empresas.

Los trabajadores que mejor se adapten al teletrabajo ganarán empleabilidad, y las empresas que se sepan ser rentables trabajando en remoto serán las que sobrevivan en un futuro próximo.

El arranque nativo de Linux se acerca al M1 de Apple con soporte para kernel personalizado: puedes ver su desarrollo en directo

14/01/2021
Artículo original

El arranque nativo de Linux se acerca al M1 de Apple con soporte para kernel personalizado: puedes ver su desarrollo en directo

El chip M1 de Apple es, ahora mismo, una de las piezas más fascinantes de hardware en el panorama tecnológico y de semiconductores. Sin embargo, a diferencia de sus predecesores con Intel, ha traído a los Mac nuevas dificultades, como la imposibilidad de arrancar con Linux o Windows. Con máquinas virtuales sí se ha conseguido, pero hay desarrolladores que van más allá.

Y para ellos hay buenas noticias. Según cuenta Hector Martin, desarrollador que logró llevar Linux a la PS4 y tiene un Patreon abierto para hacerlo en los chip M1, macOS Big Sur 11.1 beta 2, lanzado de momento a desarrolladores, llega con soporte completo para un kernel personalizado. Esto será clave en conseguir que Linux arranque nativamente en la plataforma.

El trabajo para lograr que Linux arranque nativamente, en directo

M1 Linux

Si te interesa ver cómo Hector Martin está buscando (con ya ciertos progresos) arrancar Linux en el M1, puedes ver su stream en YouTube, donde está mostrando y explicando todos los pasos técnicos que está llevando a cabo a nivel de programación. A menudo cuesta seguirle el ritmo, pero es una delicia ver la productividad con la que trabaja.

La clave del proceso va a ser el bootloader o gestor de arranque, que para el M1 y Linux, Martin ha bautizado como m1n1, en referencia a que está trabajando con un Mac Mini M1. El desarrollador ya tiene 1.250 mecenas que colaboran con un mínimo de 3 euros al mes, y afirma que el proyecto va más allá de lanzar una distribución con soporte para el M1, pero que en algún momento lanzarán una versión de Arch Linux ARM.

Lo más difícil asegura que va a ser lograr soporte de drivers de GPU y otras partes del SoC, aunque, por ejemplo, para ello ya cuenta con el apoyo de Alyssa Rosenzweig, que está trabajando en hacer ingeniería inversa al chip gráfico del 8 núcleos del M1, algo que ya ha hecho con GPUs de ARM, las Mali.

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Mini pique – Tmux: Nombrar ventanas

14/01/2021
Artículo original

Desde que empecé a usar tmux, es una de las herramientas esenciales en mi día a día. De a poco he ido aprendiendo más cosas, y esto es algo que me ha sido bastante útil. Esto es el comando para renombrar una ventana que me ayuda a ver en la pestaña de tmux qué hay en esa terminal. Tenemos que usar el atajo de teclado que tengamos configurado como prefijo (por defecto Ctrl + b) seguido de la coma: Ctrl b , En mi caso tengo el prefijo mapeado a Ctrl + a porque acostumbrado a Emacs me es mucho más difícil navegar el texto en la terminal sin Ctrl + b que es equivalente a la tecla ← del teclado.

The post Mini pique – Tmux: Nombrar ventanas first appeared on Picando Código.

Python coronado como el lenguaje de programación de 2020 según el índice TIOBE

11/01/2021
Artículo original

Python coronado como el lenguaje de programación de 2020 según el índice TIOBE

TIOBE acaba de publicar su lista de lenguajes de programación más populares para el mes de enero de 2021, y al mismo tiempo ha proclamado a Python como ganador al lenguaje de programación del año 2020.

El premio es otorgado al lenguaje de programación que más popularidad ganó en todo el año según los métodos que usa el índice para calcular la misma. TIOBE es un índice bastante famoso y un tanto peculiar, uno que lleva existiendo casi 20 años.

El tetracampeonato de Python

Tiobe Histórico del índice TIOBE - 2002 a 2020

Esta es la cuarta vez en la historia del índice que Python gana este premio, estableciendo un récord. El lenguaje saltó un 2.01% en popularidad durante 2020, seguido muy de cerca por C++ con un aumento del 1.99%, y C con 1.66%.

De hecho, en el año que acabamos de dejar atrás, Python sobrepasó por primera vez en su historia a Java como el lenguaje de programación más popular según TIOBE, aunque solo durante ese mes. Para enero de 2021, C ha vuelto a la cabeza, seguido de Java, y en tercer lugar llega Python.

Otros datos interesantes son las subidas de lenguajes como R que han pasado de la posición 18 a la 9. Y el lenguaje Julia que se perfila como candidato a ocupar el top 20 en 2021, escalando más de dos decenas de posiciones en los últimos 12 meses. Dart y Rust también están compitiendo, pero aunque han tocado el top 20 antes, no han permanecido mucho tiempo en él.

TIOBE basa sus mediciones en la cantidad de sitios web indexados por la mayoría de buscadores (Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube y Baidu) que hacen referencia a cada lenguaje. Es considerado dudoso y poco exacto por muchos, pero también es considerado como un interesante medidor de qué tanto se habla de un lenguaje en la web.

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Solución a que AutoFirma no te muestre ningún certificado digital o no funcione con DNIe

10/01/2021
Artículo original

Este post está patrocinado por Martín Villafañe, de la empresa ITCM Solutions. Martín ha donado 100€ para el banco de alimentos en mi iniciativa "¿Te he ayudado? Ayúdame a ayudar a otros". ¡Muchas gracias Martín!
¿Y tú, a qué esperas para echar un cable? Si te he ayudado, ayúdame a ayudar a los demás, aunque sea con 1€.

Si tienes que relacionarte con la Administración en España, más pronto que tarde tendrás que instalarte el programa Autofirma. Se trata de un programa escrito en Java, que pesa un montón, y que básicamente sirve para firmar archivos digitalmente a partir de un certificado digital. Las páginas oficiales lo utilizan para firmar solicitudes, entradas de documentos y cosas por el estilo. También lo puedes utilizar de manera autónoma para firmar archivos digitalmente.

Por defecto funciona bien con los infames certificados de la Fábrica Nacional de Moneda y Timbre. Pero en ocasiones, y especialmente si quieres utilizarlo con tu DNI digital (DNIe), al lanzarlo desde un navegador no te funcionará. Se abrirá una ventanita para seleccionar un certificado pero con la lista vacía:

La lista de certificados de Autofirma, vacía

Las únicas posibilidades que te da son refrescar la lista (no vale par nada), intentar cargar un archivo con un certificado (tampoco funciona), y un inútil botón de ayuda.

Mal. Muy mal.

En el momento de escribir esto, enero de 2021, llevan casi 2 años sin actualizar la aplicación (abril de 2019), que está compilada con la versión 11 de Java. Y falla estrepitosamente al ocurrir esto.

Por suerte la solución es fácil, e implica engañar a la aplicación, de manera simple, para hacer que funcione con una versión más moderna de la plataforma Java.

Paso 1: Descárgate la versión más reciente del JDK de Java

El JDK (Java Development Kit) es el conjunto de herramientas de la plataforma Java que nos permiten desarrollar para la misma (más info aquí). La aplicación de Autofirma pesa tanto porque incluye el JDK 11 entero en lugar de JRE (el runtime) en una subcarpeta de la carpeta de instalación (más sobre esto luego).

Descárgate la versión más reciente  para tu sistema (la 15 al escribir esto) del JDK desde https://jdk.java.net/ (en esta animación yo me bajo la de Windows):

La animación muestra cómo bajarse el JDK, algo extremadamente sencillo.

Se trata de la versión Open source del JDK (Open JDK) y es de libre distribución y uso. Ocupa 187 Mb (por eso "pesa" tanto Autofirma: porque lo incluye entero), así que tardará unos minutos porque el servidor no es el más rápido del mundo tampoco.

Paso 2: Descomprimir el ZIP con el JDK

Una vez descargado descomprime sus contenidos a una carpeta en cualquier sitio, por ejemplo en la propia carpeta de descargas.

Dentro contiene una carpeta llamada jdk-15.0.1 o similar (según la versión exacta).

Cambia el nombre a la carpeta y llámale exactamente jre.

Paso 3: Sustituir el JDK de Autofirma

Asegúrate de que Autofirma no está en ejecución.

Ahora abre el explorador de archivos de tu sistema y vete a la carpeta de Autofirma. En Windows está en C:\Program Files\AutoFirma\AutoFirma. Desconozco dónde estará ubicada en macOS o Linux pero intuyo que será fácil averiguarlo, sorry.

Dentro de esta carpeta verás una subcarpeta llamada, lo has adivinado, jre. Cámbiale el nombre a, por ejemplo, jre-11 o incluso elimínala si tu disco anda corto de espacio (aunque yo te recomiendo que la conserves por si las moscas).

Ahora copia ahí tu nueva carpeta jre, creada en el paso anterior, quedando algo como lo que se ve en la animación:

La animacion muestra que ahora tengo dos carpeta: jre y jre-11 (la antigua), y el contenido de la primera

A pesar del nombre que tiene, lo que estás haciendo es sustituir la versión 11 del JDK por la más reciente.

¡Listo!

Ahora, cuando vuelvas a lanar Autofirma desde el navegador se abrirá la ventana de selección de certificados y mostrará todos los instalados en el sistema y también el certificado digital contenido en tu documento nacional de identidad electrónico (DNIe), permitiéndote firmar sin problemas y acabar el infernal trámite con la Administración:

La figura muestra, ahora sí, la lista de Autofima con los certificados en mi sistema

Una última advertencia: en el improbable caso que que utilices Autofirma para algo más que cuando te obligan, si ejecutas la aplicación desde el menú de inicio, o sea, no desde el navegador, te aparecerá un mensaje como este:

El mensaje dice que estás usando Java 15 y la app no está pensada para usarlo por lo que podrían producirse errores

Haz caso omiso de él. Te funcionará perfectamente. Y en el improbable caso de que tuvieras algún fallo, siempre puedes renombrar las carpetas jre para cambiar la versión en cualquier momento (cerrando antes Autofirma) para hacer el proceso a la inversa.

¡Espero que te resulte util!

Los que nos traerá la inteligencia artificial en 2021

10/01/2021
Artículo original

Aunque no lo creas, la inteligencia artificial ya es parte de nuestras rutinas diarias: desde esos anuncios que ves en las redes sociales que te recuerdan visitas pasadas a otras plataformas online, hasta el sistema de navegación GPS que te lleva hasta el restaurante de moda de tu ciudad de vacaciones.

Durante la última década la inteligencia artificial ha dado pasos de gigante en todos los sectores y se prevé que en 2021 y gracias a la evolución del 5G en más regiones del mundo, esta tecnología estará aún más presente que nunca en nuestras vidas. Veamos en qué sectores tendrá más impacto la inteligencia artificial en 2021.

Big Data

Si todavía no te resulta familiar este concepto, acostúmbrate al término porque cada vez es más frecuente en los medios de comunicación, dato que demuestra su relevancia en la actualidad.

Por ejemplo, cada vez que un usuario usa su teléfono móvil para navegar por internet genera una gran cantidad de datos al interactuar en páginas web y aplicaciones que van creando un perfil del usuario. Y muchos de esta información se gestiona gracias a la inteligencia artificial para ofrecer servicios y productos más personalizados.

La información que nos ofrece el Big Data tiene una gran amplitud de aplicaciones: desde estimar los huéspedes que puede alojar un establecimiento hotelero en cierta época del año para establecer los precios de las habitaciones, hasta saber qué jugadores deberían recibir una promoción de giros gratis en una plataforma de apuestas según sus interacciones del último mes.

 

Captura-de-pantalla-2021-01-10-a-las-12-16-20

Servicio de Atención al cliente

Cada vez son más las empresas que en sus plataformas digitales usan los bots para atender a su clientela. Se trata de una manera muy eficiente de reducir gastos y que además ofrece a las compañías pequeñas y medianas contar con unos servicios mínimos de atención al cliente.

Durante el 2021 los bots responderán de una manera más ‘humana’ que sus predecesores y además podrán atender a un mayor rango de preguntas (gracias en parte al Big Data).

Servicios financieros y criptomonedas

La explosión de las criptomonedas en el 2020 (las divisas digitales como el Bitcoin y Eher) ha roto récords al convertirse en uno de los refugios preferidos de los inversores superando incluso al oro, como se ha visto durante la crisis sanitaria provocada por la pandemia del Covid-19. Y cada vez están surgiendo más plataformas de servicios financieros para criptomonedas que usan la inteligencia artificial para optimizar las transacciones de las monedas digitales.

Fake News

Desafortunadamente, la inteligencia artificial no solo implica beneficios para la sociedad, ya que también se usa para difundir noticias, vídeos y fotografías con el objetivo de desinformar en vez de informar. De hecho, la inteligencia artificial ha ayudado a definir grupos de población receptivos a cierto tipo de población según su género, edad e interacciones en las redes sociales para intentar una manipulación con, por ejemplo, fines políticos (como ocurrió durante las elecciones generales de Estados Unidos en 2016).

Día Global de Llamado a Propuestas por la Diversidad en las conferencias

08/01/2021
Artículo original

El sábado 23 de enero de 2021 se realiza el Día Global de Llamado a Propuestas por la Diversidad. El objetivo del evento es alentar y ayudar a personas que quieran iniciarse dando presentaciones en conferencias. Mediante talleres, ayuda a personas de grupos subrepresentados o marginados a crear sus propuestas. ¿Integras un grupo subrepresentado o marginado? ¿Siempre has querido convertirte en orador/a de conferencias técnicas? ¡Que 2021 sea el año que conviertas tu sueño en realidad! Regístrate para un taller en tu región el Sábado, 23 de enero de 2021. Esta va a ser la cuarta edición anual y obviamente se va a realizar en línea. La entrada es libre y gratuita, el único requisito es adherir al Código de Conducta. Va a haber una edición en español liderada por Elizabeth Portilla. La información: Sábado, 23 de enero de 2021 El sábado 23 de enero de 2021 vamos a tener la cuarta edición del día global de llamado a propuestas por la diversidad – ¡esta vez en línea! Va a haber 6 transmisiones alrededor del mundo alentando y asesorando a principiantes en presentaciones a armar tu primera propuesta de presentación y compartir tu perspectiva individual sobre cualquier tema de interés […]

The post Día Global de Llamado a Propuestas por la Diversidad en las conferencias first appeared on Picando Código.

Todo sobre los archivos .PDB: qué son y por qué se generan siempre al compilar una aplicación .NET

04/01/2021
Artículo original

Imagen ornamental

Cuando trabajas con .NET habrás observado que, al compilar una aplicación, aparte del .exe o .dll correspondientes se generan también unos archivos con la extensión .pdb. Estos tienen el mismo nombre que el ensamblado principal, pero no parecen hacer nada.

PDB es el acrónimo de Program Database. Es un formato propietario de Microsoft que almacena información de depuración de las aplicaciones ejecutables en Windows (.exe y .dll). Se crea a partir del código fuente para obtener una relación exhaustiva de los símbolos (variables, objetos, métodos...) del programa y su ubicación en el código y relacionarlos con el código compilado resultante. De esta manera, si necesitamos depurar la aplicación, las interfaces de depuración pueden "casar" las instrucciones de bajo nivel que se están ejecutando con las líneas de código concretas con las que se corresponden.

Aunque es un formato propietario de Microsoft, en realidad está documentado de forma abierta en GitHub. Si bien existe una API y SDK específicos para trabajar con estos archivos .pdb en Windows y, además, con .NET Core se introdujo una versión "portable" del formato que sirve para cualquier sistema, en otros sistemas debemos usar herramientas específicas de terceros, como PDBParse u otras más avanzadas como Radare2, que es mucho más potente y no sólo sirve para este tipo de archivos, sino que hace ingeniería inversa casi de cualquier cosa.

Con un PDB puedes depurar el código fuente a partir de volcados de memoria (y/o el ejecutable) con Visual Studio y herramientas como WinDBG.

Archivos PDB en release

Pero, si los archivos .pdb son para depuración, ¿por qué cuando genero una aplicación en modo release, para producción, también se me generan archivos .pdb? ¿Para qué me sirve eso?

El motivo parece obvio, pero no lo es tanto. Y es que, si no tuviésemos este tipo de archivos, no podríamos depurar la aplicación en producción.

¿Cómo? ¿Depurar en producción? Parece un contrasentido. Al fin y al cabo, ya depuramos la aplicación mientras estamos desarrollándola ¿no?

En efecto. Durante las pruebas y el desarrollo ya depuramos la aplicación, por lo que la podemos desplegar a producción con ciertas garantías. Sin embargo, debemos tener en cuenta varias cosas:

  • Hay muchas cosas que se nos van a escapar durante el desarrollo, que pueden producir errores una vez la aplicación está en funcionamiento.
  • En ciertos tipos de aplicaciones, al estar en producción y tener muchos usuarios simultáneos, se dan situaciones muy difíciles de reproducir en desarrollo o pruebas, especialmente las que tienen que ver con código multisubproceso/asincronía.
  • Si la aplicación se distribuye a muchos usuarios finales es muy probable que ciertos entornos personalizados (configuración, sistema operativo, nivel de parche, drivers...) den problemas que no hayamos podido tener en cuenta durante el desarrollo. En ese caso necesitaremos el .pdb para depurar el ejecutable concreto que presente los problemas.
  • Cuando compilamos para release se le aplican multitud de optimizaciones al código final que no están al compilar en debug (no tanto por el switch /debug como el /optimize que se aplica en este caso). Generalmente esto no tiene impacto alguno sobre el funcionamiento de la aplicación más allá de mejorar su rendimiento, pero en ciertas ocasiones sí que pueden introducir cambios sutiles que afecten al resultado final e introduzcan nuevos bugs.
  • Si hacemos profiling y optimización del ejecutable final, necesitaremos el .pdb para localizar las líneas que se pueden optimizar.

Regenerar archivos .pdb

Vale. Me has convencido. Son útiles. Pero, dado que tengo el código fuente de cada versión gracias al control de código fuente con Git, si me hace falta puedo volver a compilarlo y generar el PDB si lo necesito ¿no?

Pues sí, pero no... La lógica es aplastante, y será cierto en la mayoría de los casos. Pero hay un problema: nadie te garantiza que el mismo código exacto, unos meses después, genere el mismo archivo .pdb que se generó cuando compilaste la primera vez.

El motivo es que si cambia la versión del compilador o incluso de Visual Studio, el ejecutable generado puede ser diferente, y por lo tanto el PDB también. No sólo eso, incluso el mismo compilador no siempre genera el mismo código ejecutable todas las veces, según asegura Eric Lippert, exmiembro del equipo de diseño del lenguaje C# en Microsoft.

Tampoco debemos olvidar que los archivos .pdb que se generan para debug y para release no son iguales.

¿Debería incluir los .pdb cuando distribuya mi aplicación a los usuarios?

No es necesario que lo hagas. Ocupan bastante y en la mayoría de los casos no los vas a usar para nada. Por eso, los puedes quitar del paquete final que distribuyas (instalación, ZIP...) y obviar dárselos a los usuarios finales.

Si luego los necesitas siempre puedes facilitárselos y depurar in situ. Por eso es interesante que los archives en algún lado para tenerlos a mano, solo, por si acaso.

Desactivar la generación de archivos PDB en release

De acuerdo otra vez. Siempre me convences... Pero, de todos modos, seamos realistas, yo no voy a depurar mi aplicación en producción nunca. ¿No sería mejor directamente no generarlos?

La recomendación sería que no: no desactives su generación. Genéralos siempre y archívalos por versiones, aunque no los distribuyas.

No obstante, si tienes la seguridad de que no los quieres, desactivar su generación es muy sencillo en Visual Studio:

La interfaz de usuario descrita debajo

  1. Cambias a la configuración "Release".
  2. En las propiedades del proyecto vas a la pestaña Debug.
  3. En la parte de abajo pulsas el botón Avanzadas, para abrir el diálogo de propiedades avanzadas.
  4. En la lista desplegable para Información de depuración escoges la opción None.

Esto desactivará la generación de símbolos de depuración, por lo que prueba conseguida. Pero te recomiendo que no lo hagas.

Fíjate en que hay varias opciones y por defecto, en .NET Core / .NET 5 la elegida es Portable. Lo que significan estas opciones es:

  • None: no se generan símbolos de depuración.
  • db-only: podrás depurar el código a partir de volcados de memoria, pero sin poder usar el ejecutable.
  • Full: igual que el anterior pero además podrás adjuntar el ejecutable al depurador ya que incluirá dentro de éste cierta metainformación de depuración. Te permite hacer cosas como "Editar y continuar" en Visual Studio, que están muy bien.
  • Portable: un formato nuevo de PDB que surgió con .NET Core y que genera un archivo de depuración compatible con todos los sistemas operativos, lo que pega bien con la naturaleza multiplataforma de .NET Core. Es el equivalente "moderno" a la opción Full y es lo que está marcado en el caso de aplicaciones .NET Core/.NET 5+.
  • Embedded: embebe la información de depuración directamente en el ensamblado final, por lo que no se genera ningún archivo .pdb. Ahora bien, siempre estarás distribuyendo esta información y el .exe o .dll ocuparán mucho más.

Espero que este repaso a los PDB haya arrojado luz sobre qué son, cuál es su utilidad y cómo debes gestionarlos.

Pexachu VS Godzilla – animación stop-motion de Pokémon contra Godzilla

30/12/2020
Artículo original

Si te gusta Godzilla, Pokémon, el jazz, las artes marciales o todo lo anterior, este video te va a encantar. Posiblemente uno de los mejores videos que he visto este año. Advertencia: contiene violencia animada, desnudez parcial y jazz. El autor es el usuario de YouTube MootroidXproductions, que pueden seguir para más animaciones stop-motion. Pueden seguirlo y aportar con él en Patreon y seguirlo en Twitter.

The post Pexachu VS Godzilla – animación stop-motion de Pokémon contra Godzilla first appeared on Picando Código.

Fight’N Rage – juego beat ’em up 2D inspirado en los clásicos

29/12/2020
Artículo original

Hace tiempo me enteré de la existencia del juego Fight’N Rage, un beat ’em up diseñado y desarrollado por el uruguayo Sebastián García y con música compuesta por el uruguayo Gonzalo Varela. El juego se veía excelente y tuvo muy buenas reseñas cuando se estrenó en Steam. Más adelante me dejó súper contento ver que había sido publicado en Nintendo Switch. Si tengo la opción, generalmente juego los juegos en el Nintendo Switch, y si no, espero que salgan en Steam para Linux y en el peor de los casos, me fijo si la versión de Windows en Steam funciona con Proton y los compro. Pero éste es el último recurso y si puedo, trato de evitarlo. En la opción “jugar los juegos en Nintendo Switch”, prefiero las versiones físicas por varias razones: almacenamiento, si el día de mañana desaparece la tienda igual tengo el juego, poder prestarlos o revenderlos usados si no me gustan, además del componente “coleccionista” que disfruta de ver las cajitas con su arte y el cartucho físico. Con Fight’N Rage, tenía la esperanza de ver una edición física eventualmente debido a su éxito. La espera valió la pena porque el 1° de enero de 2021, […]

The post Fight’N Rage – juego beat ’em up 2D inspirado en los clásicos first appeared on Picando Código.

Página Siguiente