GAMBADAS: Tu router podría estar infectado por la CIA... desde hace años

28/07/2017
Artículo original

El mes pasado WikiLeaks reveló una serie de documentos secretos de la CIA que muestran que los routers para el hogar de 10 fabricantes pueden convertirse en puntos de escucha encubierta para monitorizar tráfico e infectar a otros dispositivos conectados. Entre las marcas afectadas están muchas de las más conocidas y utilizadas, como Linksys, DLink o Belkin.

El código malicioso, denominado CherryBlossom, permite a la agencia de inteligencia de EEUU infectar routers incluso en remoto y aunque tengan establecida una clave fuerte. El código, basado en Linux, se puede ejecutar en al menos 25 modelos de router, aunque hay estimaciones de que con pequeños cambios podría ejecutarse en 100 modelos más.

La "guía de usuario" de 175 páginas del sistema malicioso habla de cómo, una vez instalado, convierte al router en lo que denominan una "trampa para moscas" (Fly trap) que se comunica periódicamente con un servidor de la CIA para informar del estado del dispositivo e información de seguridad, que se almacena en un log. El servidor a su vez le envía "misiones", que son tareas específicas a realizar por el dispositivo infectado, aunque también es posible conectarse vía Web (por parte de la CIA, claro) para ver el estado, encomendarle nuevas "misiones" y realizar la administración del sistema infectado.

Captura de CherryWeb, la interfaz de administración del _software_

Las misiones en cuestión, pueden enfocarse en una determinada IP o rango de IPs o direcciones MAC físicas, pero también en direcciones de correo electrónico, nombres de usuario de chats o números específicos de VoIP, para copiar parte o la totalidad del tráfico dirigido a ellas. También puede establecer una VPN para dar acceso a todos los equipos de la red privada, espiando el tráfico interno y no solo el de Internet.

Mientras tanto el router funciona con normalidad, por lo que nadie nota nada anormal.

Todas las comunicaciones entre los routers infectados y los servidores de la CIA se realizan de modo cifrado y autenticado, y para ocultarlo de posibles inspecciones de tráfico y sistemas de protección, la información se envía en forma de cookies dentro de peticiones de imágenes, las cuales el servidor de destino devuelve, por lo que todo parece tráfico normal.

Arquitectura de CherryBlossom

Aunque existen otros muchos tipos de ataques similares, que toman el control de routers, el caso de la CIA es especialmente importante no solo por las implicaciones que tiene, sino por la elevada especialización y facilidad de uso del sistema que utilizan. Se estima que han estado penetrando en las redes de gobiernos y de multinacionales de todo el mundo durante años.

Por suerte WikiLeaks solo ha liberado la documentación y los detalles de funcionamiento, pero no los ejecutables o el código fuente, que podrían permitir a atacantes maliciosos de todo el mundo sacarle partido a estas herramientas gubernamentales para sembrar el caos, como ya pasó con el famoso Ransomware WannaCry no hace mucho.

Cada vez está más claro el camino que están tomando el espionaje y las guerras del futuro. Incluso las comerciales. Y debemos protegernos como países y como empresas, pero poco se puede hacer contra un gobierno con recursos casi ilimitados para estas cuestiones.

Las herramientas del programador ¿Y tú cuál usas?

26/07/2017
Artículo original

5850272087_164c6149c4_o.jpg

Aunque el software sea una disciplina de carácter intelectual, todo programador que se precie usa multitud de herramientas en su día a día. Como si de un artesano se tratara, los programadores intentamos elegir las herramientas que mejor se adaptan a nuestras manos. Pasamos muchas horas con ellas por lo que nos gusta que la herramienta esté a nuestro gusto, que se ajuste a nuestro flujo de trabajo y que no nos obligue a cambiarlo.

Adaptamos aspectos estéticos, como colores, fuentes o posición de los menús. Pero también adaptamos las partes funcionales, como accesos rápidos de teclado o instalamos plugins que nos ahorran trabajar más de la cuenta. Al final personalizamos tanto las herramientas que utilizamos, que se podría decir que existe una para cada programador.

A la hora de elegir una herramienta para programar solemos elegir entre dos opciones: IDE o editor de texto.

IDE

Los IDE (Integrated Development Environment) o Entornos de desarrollo integrados, son aplicaciones que nos permiten desarrollar software de manera sencilla e incluyendo prácticamente todo lo que necesitamos sin tener que salir del entorno. Tenemos un editor de código fuente; herramientas para el autocompletado de código y snippets; herramientas para depuración y compilacíón; así como herramientas para construcción o build.

Con el paso de los años los IDEs existentes en el mercado han incluido cada vez más opciones. Pero añadir tantas opciones tiene un precio y la queja general sobre estos entornos es que suelen ser pesados, necesitan una máquina potente y tienden a ser lentos.

Algunos de los IDEs que podemos encontrar en el mercado son Visual Studio, Eclipse, NetBeans o muchos de la empresa Jet Brains como IntelliJ, WebStorm o PHPStorm.

Editor de texto

Los editores de texto, son más sencillos que los IDE, y por tanto tienen menos funcionalidades integradas. La cantidad de funciones básicas depende de cada editor, pero generalmente tienen algún tipo de resaltado y formateo de código. Hoy en día es muy común que se puedan ampliar con extensiones de todo tipo, aunque eso hace que sean un poco más pesados y lentos, alejándose del concepto de editor de texto y acercándose más al de IDE. La idea de un editor es ser rápido y liviano.

Algunos de los editores que podemos encontrar son: Emacs, Vim, Atom, Sublime Text, Visual Studio Code o incluso herramientas tipo navaja Suiza como Notepad++.

¿Cuál elegir?

La elección de herramienta a elegir, viene solo condicionada por el lenguaje y la plataforma que vamos a utilizar. Si queremos desarrollar aplicaciones Windows tendremos un número de opciones limitado. Si vamos a desarrollar aplicaciones para iOS o aplicaciones web con Java, tendremos otras opciones distintas. Pero más allá de esa división, estamos solo limitados por nuestros gustos (o presupuesto). Como hemos dicho antes, aunque usemos el mismo editor o IDE que otros programadores, probablemente lo tengamos personalizado a nuestro gusto, haciéndolo totalmente diferente.

Así que para tener una idea sobre las posibilidades, nos hemos decidido a preguntar a unos cuantos programadores, sobre cual es la herramienta que utilizan en su día a día, como la tienen configurada y por qué la usan.

Editores clásicos

Aunque no los hayas utilizado, seguro que has oído hablar de Vim y Emacs. Vim lanzó su primera versión en los 90, aunque siendo una versión mejorada del ya conocido Vi que integran muchos sistemas Unix desde finales de los 70. Emacs fue desarrollado entre otros por Richard Stallman, también a finales de los 70. Como veis son muchos años, pero ambos siguen siendo ampliamente utilizados por programadores de todo el mundo, dada su capacidad de personalización.

Vim

Es el caso de Mario, desarrollador backend (Ruby, Python, SQL) en Carto, que durante muchos años ha estado utilizando Vim. Como el mismo cuenta "con VIM llevo unos 4-5 años y la configuración actual ha ido adaptándose según he ido necesitándolo. Las ventajas de esa configuración es tener la gran potencia de Vim pero con plugins que permiten funcionar sin echar de menos funcionalidades de otros IDEs más modernos".

Y es que la personalización es el gran fuerte tanto de Vim como de Emacs, ya que a lo lago de los años se han desarrollado miles de extensiones para ellos. Y si no existe una extensión de nuestro gusto, siempre podemos desarrollarla. Es lo que nos comenta Juanma que trabaja desarrollando software para comercios en IGT Microelectronics y usa Emacs para parte de sus desarrollos: "me gusta mucho la facilidad para personalizar Emacs y el buen soporte que tiene para la mayoría de lenguajes. Con Visual Studio, por ejemplo, aunque puedes crear plugins en C# (un lenguaje que conozco bien), la experiencia de hacerlo es horrible. Con Emacs, pese a tener que usar elisp (lenguaje que conozco mucho menos), es mucho más sencillo hacer pequeñas mejoras para ajustarlo a lo que quieres y es algo que hago con frecuencia".

Juanma usa Emacs para "HTML, CSS, JavaScript, TypeScript y lenguajes variados de uso esporádico, utilizo Emacs con una configuración creada desde cero que tengo publicada aquí. Para Javascript utilizo js2-mode, para TypeScript uso tide y cuando juego con Clojure, cider".

Emacs

La ventaja de este tipo de editores, es que la configuración se puede compartir fácilmente. Normalmente la configuración suele ir incluida en un solo archivo, y basta con bajarlo de GitHub y sobreescribirlo para tener el editor configurado a nuestro gusto (o al de otro desarrollador que lo haya compartido). Es por ejemplo lo que hace Gaspar en Cbi Consulting, "Últimamente me paso el día entre scripts Bash, Python y servidores. Aunque también suelo tocar cosas de PHP y en ocasiones tengo que hacer algunos programas en C o C++. Edito con Emacs. Tengo una configuración muy personalizada y la tengo publicada en github para bajarla siempre que la necesito. Tengo configuración especial para los lenguajes que suelo usar, comprobación de código, compilación, teclas personalizadas para muchas acciones, deshacer con undo-tree (importante porque el deshacer de Emacs es muy pesado), auto-completado y algunas cosas más. No pido mucho.

"La curva de aprendizaje en Emacs es dura y fue una cuestión de cabezonería, pero ahora me resulta muy cómodo"

Aunque Emacs y Vim funcionan realmente bien, también tienen sus peros. Por ejemplo la curva de aprendizaje. Sus forma de funcionar y sus teclas de acceso rápido están pensados para ser lo más eficientes posibles, pero no para ser fácilmente memorizables. Aprender a utilizar uno de estos editores lleva mucho tiempo, y es una de las razones de que no estén más extendidos. Como dice Juanma "La curva de aprendizaje en Emacs es dura y fue una cuestión de cabezonería, pero ahora me resulta muy cómodo"

IDEs

Eclipse

A pesar de la potencia de muchos editores, hay que añadirles muchas extensiones obtener la capacidad que los IDEs ya traen de base. Esto hace que mucha gente prefiera esta herramienta, ya que tienen todas las funcionalidades integradas en un mismo entorno y tan solo hay que configurar algunas cosas para personalizarlas a nuestra forma de trabajar.

Por ejemplo Adolfo, que trabaja como Asesor Técnico Docente en la CAM, utiliza Eclipse (Spring Tool Suite) para su día a día con el backend: "llevo utilizando Eclipse desde sus inicios, y soy muy productivo con esa herramienta pues ya me conozco todos sus atajos de teclado y todos sus truquitos. Una temporada que estuve con Groovy me pasé a IntelliJ IDEA pues me habían hablado muy bien de él, pero al final me quedo con Eclipse, que además es Software Libre".

Diego José, que trabaja como freelance desde hace 17 años, para desktop utiliza Delphi "No está muerto", nos dice. "Ahora compila para Windows, OSX, iOS y Android y no ha dejado de tener versiones. No es muy conocido por su política de precios (que viene a ser una pasta gansa). El lenguaje es Object Pascal. Con Delphi llevo desde que sus primeras versiones. El IDE y su Visual Control Library aportan una productividad altísima.". Para PHP prefiere utilizar PHPStorm "PHPStorm es un IDE completo. Y es lo que busco. Sin preocuparme de buscar más, tengo todas las utilidades que necesito. Tiene de todo y más".

Y es que parece que PHPStorm es una de las herramientas más conocidas a la hora de programar con PHP. Lo utiliza por ejemplo Miguel, profesor de la Universidad del Táchira y desarrollador web freenlance, "trabajo en PHP utilizando Yii2 Framework y desarrollando plugins de WordPress, sin embargo, a veces me toca mejorar las vistas, por lo que tengo que usar HTML/CSS y JS a menor escala. Uso sublime-text cuando necesito editar algo rapidamente o hacer pequeños scripts. Ya cuando son proyectos mas grandes uso un IDE, en este caso PHPStorm. Desde el mismo IDE realizar todas las actividades que necesito: acceder a la Base de Datos, probar servicios REST, realizar pruebas, validar código, etc. Más que todo busco automatizar cosas".

Phpstorm

Trabajando en coches.com, tenemos a Jesús, que es otro fan de PHPStorm: "Soy un poco friki de los atajos de teclado y poco a poco he ido memorizando atajos de PHPStorm para casi todo: Abrir una clase/fichero, buscar en un directorio, extraer un método/constante/variable,... además si no hay un atajo para algo que quiero hacer es muy fácil crearlo en PHPStorm. La integración con docker es genial y además tiene un montón de plugins para casi todo desde autocompletar composer hasta crear el .gitignore"

Al final los usuarios de IDEs buscan tener la mayoría de funcionalidades integradas, y no complicarse la vida. Es lo que nos cuenta Lucas, que trabaja generalmente con Visual Studio (con Resharper) y C# (aunque también usa Vim o PyCharm): "Para obtener la máxima productividad se requiere un IDE, un entorno con facilidades integradas que te permitan refactorizar, depurar, desplegar en la nube y cosas por el estilo de manera rápida y simple (usar git desde línea de comando es una de las poquísimas excepciones a esta regla para mi). Cuando por falta de contexto, ausencia de metadatos, de definición de tipos (o de lo que sea) y un IDE queda reducido a un simple editor de texto, en ese caso es quizás mejor utilizar un buen editor de texto. Lo contrario a esto es el tratar de convertir un editor de texto en un IDE a base de plugins para colorear la sintaxis de un lenguaje, lograr algún grado (siempre insuficiente) de autocompletado y/o refactoring, y ni que hablar de depuración integrada y similares facilidades tan comunes en los IDEs", aunque reconoce que "cuando ves lo que hacen algunos con Emacs te sorprendes. Por lo general se destacan en lenguajes dinámicos donde los IDEs hasta hace poco no aportaban demasiado y donde es posible evaluar expresiones de manera rápida y evitar la depuración zombie"

"Para obtener la máxima productividad se requiere un IDE, un entorno con facilidades integradas que te permitan refactorizar, depurar, desplegar en la nube y cosas por el estilo de manera rápida y simple"

En entornos .NET, hasta hace no mucho Visual Studio era la opción por defecto, aunque hay gente que empieza a utilizar Visual Studio Code para ello. Además JetBrains, está preparando un IDE para .NET llamado Rider, de momento en fase de desarrollo. Mientras llega, en .NET se sigue utilizando Visual Studio como bien nos comenta Ferran, "Tanto para tareas de frontend como backEnd utilizo el Visual Studio, ya que el programa está desarrollado en Visual Basic .NET con SQL Server como SGBD. Utilizo la versión 2015, ya que la versión 2017 todavía anda en pañales o por lo que leo no es mucho de fiar. También utilizo Resharper".

Y es que está claro que JetBrains tiene contentos a muchos desarrolladores de distintas plataformas y lenguajes con sus soluciones, ya que Resharper es una de las extensiones más comunes a la hora de utilizar Visual Studio.

Los nuevos editores

Hace ya un tiempo, Sublime Text, empezó a marcar el camino que seguirían otros editores posteriores como Brackets, Atom o Visual Studio Code. Y es que muchos desarrolladores están pasándose a utilizar este tipo de herramientas.

Por ejemplo Mario, que nos hablaba antes de Vim, utiliza Visual Studio Code para programar en Node: "Ahora mismo, al moverme a programar en NodeJS, estoy probando VS Code ya que posee un debugger que funciona bastante bien. Lo he utilizado para otros lenguajes como Ruby o Python y estoy muy contento con él. El plugin para modo VIM está muy bien".

Lo mismo que Adolfo, que aunque utiliza Eclipse para la programación backend "para el front pasé por varios IDEs: primero Brackets, luego Atom y finalmente, cuando me enteré de que Microsoft lanzó Visual Studio Code con una licencia Libre me dió por probarlo, y la verdad es que fué un amor a primera vista. Tiene temas, plugins, debuguer, buena integración con Git, autocompletado de código, funciona muy bien con HTML, CSS, JS y TypeScript."

Vscode

Opciones para todos los gustos

En definitiva, a la hora de elegir herramientas para desarrollar nuestra tarea, tenemos multitud de opciones. Es curioso como programadores de la misma plataforma, utilizan configuraciones tan diferentes, haciendo su IDE o editor un poquito diferente al de los demás. ¿Y tú que herramienta utilizas?

En GenbetaDev | Paréntesis y llaves de colores en Emacs, gracias a Rainbow Delimiters | Sublime Text 2 ¿el editor de texto definitivo?
Imagen cabecera | swiatekj

También te recomendamos

Truco, volver a Crear pruebas unitarias desde Visual Studio 2012

Unit Test Generator para Visual Studio 2012

¿Están las carreteras y usuarios preparados para el coche autónomo?

-
La noticia Las herramientas del programador ¿Y tú cuál usas? fue publicada originalmente en Genbeta Dev por rubenfa .

5 componentes y extensiones para React que debieras conocer

26/07/2017
Artículo original

React es sin duda la librería de moda en el mundo del desarrollo web Front-End. Creada y mantenida por Facebook es una biblioteca para crear interfaces de usuario basadas en componentes. Se basa mucho en JavaScript y ECMAScript y utiliza un DOM Virtual para conseguir un altísimo rendimiento. Cada componente que creas puede mantener su propio estado, contener otros componentes y comunicarse entre ellos. En lugar de usar plantillas, la lógica de cada componente se crea con JavaScript/ECMAScript puro, por eso le gusta tanto a muchos programadores.

Al contrario que Angular o VUE.js, no se trata de un framework que abarque todo el ciclo de desarrollo y la arquitectura de una aplicación web, sino que se especializa en una sola cosa (la UI) y lo hace muy bien. Deja a tu elección la forma de estructurar tu aplicación y como la dotas del resto de funcionalidad que necesites, por lo que en realidad la puedes combinar con casi cualquier cosa que te guste utilizar para crear tus aplicaciones.

Al basarse en componentes reutilizables, existen multitud de bibliotecas de componentes y extensiones listas para utilizar que te pueden ahorrar mucho trabajo a la hora de crear tus interfaces de usuario Web basadas en React.

Vamos a ver a continuación 5 de los más destacados... Por supuesto gratuitos y de código abierto.

React Bootstrap

React Bootstrap

Bootstrap es sin duda el framework CSS más utilizado del mundo, creado por la gente de Twitter. Si ya lo conoces y tienes costumbre de trabajar con él, te encantará esta biblioteca. Te ofrece multitud de componentes con los estilos de Bootstrap pero basados en React listos para utilizar y conseguir una interfaz atractiva instantáneamente.

React Material UI

React Material UI

Si Boostrap es el framework CSS más utilizado, Material es el estilo de interfaz móvil más empleado. No en vano es el estilo de diseño que ha creado y promueve Google, y el que se utiliza por defecto en todas sus aplicaciones Web y en Android. Si quieres que tu aplicación React tenga el aspecto inconfundible y la facilidad de uso que proporciona Material, esta biblioteca es lo que buscas. Ofrece un gran conjunto de componentes listos para utilizar (barras, fichas, tablas, botones...) e incluso además casi mill iconos en formato SVG :-O

React Desktop

React Desktop

Si tienes interés en que tu aplicación web basada en React se parezca lo máximo posible a una aplicación nativa, de escritorio, en Mac o en Windows, estos componentes son justo lo que buscabas. Es especialmente útil si quieres encapsular tu aplicación en Electron y convertirla en una app nativa, aunque en origen fuese para la web.

Ofrece varias decenas de componentes, los más comunes, con el aspecto que tienen en estos sistemas operativos (mira la figura anterior, animada).

React Photon Kit

React Photon Kit

Seguimos con aplicaciones web que sueñan con ser como aplicaicones nativas. En este caso, si utilizas el famoso kit de UI para Electron llamado Photon, que imita la interfaz de usuario de Mac, este kit para React te va a interesar mucho. Trae bastantes componentes para React que se traducen en elementos de la UI basados en Photon, y te ayudará a combinar ambas cosas, aunque aún es un trabajo en curso.

TouchstoneJS

TouchstoneJS

Si lo tuyo son las aplicaciones web móviles y quieres basarte en React, TouchstoneJS es una gran opción. Te ofrece infinidad de componentes, transiciones, efectos, iconos... para emular con total fidelidad la interfaz de usuario de un iPhone, solo que basada en JavaScript y CSS. Si estás pensando en crear una aplicación web móvil con Apache Cordova o similar, esta biblioteca de componentes te ahorrará incontables horas de trabajo.

Existen muchos más kits y colecciones de componentes, pero estos 5 son de los más conocidos y utilizados y conviene que los conozcas.

¿Has utilizado alguno alguna vez?

¿Por qué renuncio a Google Analytics?

25/07/2017
Artículo original

Debido a que cada vez me preocupo más por mi privacidad en la red, me siento en la obligación de preocuparme igualmente por la de mis lectores, es por ello que estoy iniciando un proceso de desconexión de todo aquello que pueda rastrear a mis lectores.

Este artículo es más que un mero anuncio del primer paso, desactivar el seguimiento que ofrece Google Analytics a los administradores de sitios como este. Aunque es un sacrificio bastante importante, ya que voy a perder la capacidad de observar las estadíticas del blog.

Aún queda trabajo por hacer, el único anuncio que hay en el blog seguirá funcionando hasta que encuentre alguna alternativa en la que obtenga beneficios económicos equivalentes. Espero que entiendas esta decisión, ya que mantener y generar contenido en el blog requiere de bastante tiempo y es una forma de obtener recompensación económica. A lo largo de los años he propuesto distintas alternativas al anuncio para intentar elminarlo por completo, dichas alternativas están en /apoyanos/, pero nunca llegaron a cuajar. Listo dichas alternativas abajo:

  • Dispongo de un enlace de amazon, con el que obtengo comisión de las compras que hacen los usuarios que clican en él.
  • Una página en patreon, web de crowfunding.
  • Un sistema de donaciones en paypal.

Por último, quisiera recomendar el canal de telegram Interferencias, un grupo de gente que intenta defender la privacidad en la red.

Espero que aprecies el cambio!

10 libros que todo programador debería leer

21/07/2017
Artículo original

Para mucha gente, en contra de lo que se cree, las vacaciones son el momento más temido del año, pues supone una gran presión ya que deben cumplir con aquellos propósitos que se habían hecho a sí mismos o a los demás; ¿te suena de algo? Por ejemplo, en vacaciones…

  • No tocaré el ordenador, desconectaré de mi trabajo
  • Quedaré con mis amigos, iré al cine, leeré varios libros...
  • Haré excursiones con mi familia, incluso iré a la playa.

Pero lo anterior cada año se convierte en:

  • Estás todos los días delante del ordenador. Tu respuesta es: "Pero... ¡si no estoy trabajando!. Me entretengo, solo estoy frikeando... Bueeeeno, de paso he respondido un par de correos, pero nada más" ??
  • "Yo casi que me quedo en casa, es que... siempre se me quema la espalda, id vosotros"
  • No tengo tiempo
  • ...

Aunque no tenemos el remedio mágico, sí podemos ayudarte a conseguir un equilibrio durante tus vacaciones.

Para ello te proponemos que te hagas con una buena colección de libros “clásicos” (quizá un par más actuales) que te permitirá ir a la playa con tu familia o losamigos mientras te conviertes en un gran programador. Eso sí, todos ellos en están publicados solo en inglés (excepto el de Steve Krug).

Pero no te equivoques: no vas a tocar un ordenador, pues los libros que te sugerimos no te van a enseñar ningún lenguaje ni tecnología en concreto (para eso están nuestros cursos ??). Con estos libros desarrollarás habilidades que harán que destaques por encima de los demás miembros de tu equipo, a igualdad de conocimientos técnicos.

Aquí te dejamos la lista con 10 clásicos inmortales, con conocimientos que te valdrán para toda tu carrera professional:

1- The Pragmatic Programmer

Andrew Hunt y David Thomas

Un clásico muy reconocido que te enseñará a aprender a pensar y a actuar de manera más pragmática a la hora de programar.

The Pragmatic Programmer

2- CODE: The Hidden Language

Charles Petzold

Del mítico Charles Petzold, padre de la notación húngara. CODE: The Hidden Language te ayudará a entender cómo funcionan las computadoras por dentro, y enriquecerá el modo que tienes de ver tu trabajo cada día, comprendiendo muchas cosas.

CODE: The Hidden Language

3- The Mythical Man-Month

Frederick P. Brooks

El libro que acuñó la frase "añadir más personas a un proyecto que va con retraso, hará que vaya más retrasado aún". Echa abajo un montón de mitos sobre el trabajo de desarrollador.

The Mythical Man-Month

4- Cracking the Coding Interview

Gayle Laakmann McDowell

Aunque no estés buscando trabajo le podrás sacar mucho partido pues contiene casi 200 preguntas típicas de programación que se hacen en entrevistas de trabajo, mostrando cómo resolverlas.

Cracking the Coding Interview

5- Programming Pearls

Joe Bentley

Una joyita llena de ensayos que tratan de enseñarte lecciones prácticas, independientes del lenguaje, que aparecen con los años de práctica. También enseña bastante código dentro, pero es casi lo de menos.

Programming Pearls

6- Soft Skills: The software developer's life manual

John Sonmez

Según su autor, la parte divertida de ser programador es escribir código. El resto no lo es tanto pero hay que saber dominarlo también pues igual de importante a largo plazo. Por eso este libro incluye consejos y técnicas para muchas cosas: desde cómo encontrar una buena empresa donde trabajar hasta cómo ser feliz (con un par). En cualquier caso, tiene muchas ideas útiles dentro.

Soft Skills: The software developer's life manual

7- Working Effectively with Legacy Code

Michael Feathers

Aunque el trabajo ideal de todos siempre es escribir nuestro propio código desde cero, la realidad es que mucho del trabajo que hacemos es mantener código antiguo. Hay sistemas críticos que es casi imposible reemplazar, y aplicaciones con miles de usuarios que debemos mantener. Este libro se centra en cómo abordar este tipo de trabajo.

Working Effectively with Legacy Code

8- Zen and the Art of Motorcycle Maintenance

Robert M. Pirsig

Sí, un libro de motos en la lista. Pero un verdadero clásico que vale para todo tipo de profesiones, no solo la nuestra. Escrito hace más de 40 años, en 1974, es un libro casi de filosofía, pero que nos enseña cómo se confrontan y deben ponerse de acuerdo dos formas muy diferentes de ver cualquier tecnología: la mente analítica (que se nos suele asociar a los programadores) y la romántica (se suele asociar con la mayoría de los usuarios) que es todo lo contrario y que no profundiza en nada. Filosofía apta no solo para el trabajo.

Zen and the Art of Motorcycle Maintenance

9- Clean Code: A Handbook of Agile Software Craftsmanship

Robert Martin

Hacer un programa que cumpla unas especificaciones suele ser bastante fácil. Lo complicado es hacerlo conciso, elegante, entendible y fácil de mantener de cara al futuro. En eso se diferencia un buen programador de uno malo. Este libro va sobre cómo conseguir eso y está lleno de ejemplos y casos de estudio para que te conviertas en un buen artesano del software.

Clean Code: A Handbook of Agile Software Craftsmanship

10- Don't Make Me Think (En español: No me hagas pensar)

Steve Krug

Si tu software necesita muchos manuales para poder ser utilizado... mal vamos. La tesis central de este libro es que los usuarios deberían poder utilizar el software sin tener siquiera que pensarlo. Este libro va sobre usabilidad y hacerle la vida más fácil a tus usuarios. Nada mas y nada menos. Aunque está orientado a la Web, la mayor parte de lo que explica vale para cualqueir tipo de aplicación.

Don't Make Me Think

¿Qué te parecen? ¿Ya te apetece leer alguno?

Si crees que hay uno (¡o varios!) clásicos de estos que nos hemos olvidado (sin ser de un lenguaje o plataforma de programación concretos y con sabiduría que dure en el tiempo), no te cortes y dínoslo en los comentarios.

¡Feliz verano!

Los 3 artículos que deberías leer si quieres aprender Angular

18/07/2017
Artículo original

Desde que AngularJS evolucionó a Angular (mal llamado Angular 2) nos encontramos ya por fin ante una tecnología madura, un framework estable en el que vale la pena invertir tiempo y recursos para aprenderlo bien y sacarle provecho.

Si todavía te estás iniciando y te encuentras un poco perdido, (o si en su día aprendiste AngularJS y no sabes si te vale la pena cambiarte), aquí te recopilamos algunos de los artículos sobre Angular más populares de nuestro blog y que te servirán para orientarte.

Las 10 principales diferencias entre AngularJS y Angular

https://www.campusmvp.es/recursos/post/las-10-principales-diferencias-entre-angularjs-y-angular.aspx

A pesar de tener un nombre similar, no te engañes, AngularJS y Angular no tienen nada que ver. El mal llamado "Angular 2 o Angular 4", que se llama solamente Angular, no es una nueva versión de AngularJS (también denominado Angular 1.x). Es un nuevo framework, escrito desde cero y con conceptos y formas de trabajar completamente distintos. Y es que Angular puede llegar a ser 5 veces más rápido que AngularJS gracias al rendimiento que ofrecen su sistema de inyección de dependencias jerárquico y la detección de cambios basados en árboles unidireccionales.

Las 5 principales ventajas de usar Angular para crear aplicaciones web

https://www.campusmvp.es/recursos/post/las-5-principales-ventajas-de-usar-angular-para-crear-aplicaciones-web.aspx

Angular, como en casi todo hoy en día, tiene muchos fans acérrimos y muchos detractores. Básicamente, o lo amas o lo odias. No suele haber término medio. En este post te presentamos sus 5 principales ventajas para que te formes tu propia opinión.

¿Es Angular 2, Angular 4 o simplemente Angular?

https://www.campusmvp.es/recursos/post/es-angular-2-angular-4-o-simplemente-angular.aspx

En Diciembre de 2016 se celebró el NG-BE, la primera conferencia de Angular en Bélgica. Igor Minar (jefe de desarrollo de Angular) asistió como presentador e hizo algunos anuncios interesantes relacionados con el itinerario de lanzamientos de Angular. En este artículo encontrarás información interesante para entender las versiones presentes y futuras de Angular.

Ahora, ¡a aprender Angular!

Esperamos que disfrutes leyendo estos artículos al menos tanto como nosotros hemos disfrutado escribiéndolos para ti. Y si ahora quieres ponerte en serio a aprender Angular, ya sabes, aprovecha nuestro curso. Te servirá tanto si ya conoces AngularJS y quieres actualizarte, como si partes de cero y quieres aprender a dominar el nuevo framework (el curso incluye el aprendizaje de TypeScript). ¡Nos vemos dentro del aula online!

Nueva Guía: System Administration & Security - Salary & Skills Report

17/07/2017
Artículo original

Nueva Guía: System Administration & Security - Salary & Skills Report

This kit will tell you what you need to know to earn more in system administration and security.

Diverse and rapidly changing, network administration and security is the backbone of the 21st century workplace. What are the essential skills of the modern sysadmin? Does it pay to specialize, or go polyglot? Which tech is the overwhelming top pick in the world of configuration management?

This kit also includes these valuable resources:

  • Sysadmin & Security Salary & Skills Report
  • Navigating the Threat Landscape: A Practical Guide
  • Top Tips for Securing Big Data Environments
  • Encryption as an Enterprise Strategy
Descárgala ahora

Visita la página Manuales gratuitos o consulta el catálogo completo.

Minimizar y ofuscar JavaScript desde el menú contextual del Explorador de Windows

17/07/2017
Artículo original

Antes de seguir leyendo, si no tienes claro qué es la minimización y ofuscación de código JavaScript, dale una lectura a este artículo que escribí en la web de campusMVP.

Si estás haciendo un desarrollo web Front-End medianamente grande, estarás usando con toda seguridad algún tipo de Task Runner para automatizar las principales tareas. Entre ellas, por supuesto, la generación de archivos para producción, lo cual incluye generar los archivos JavaScript minimizados y ( probablemente) ofuscados. De hecho, hoy en día es probable que estés usando Webpack con su plétora de loaders y plugins que te permiten hacer casi cualquier cosa.

Pero si estás programando algo más pequeño y rápido, muchas veces no te preocupas de usar Webpack, Gulp, o ni siquiera npm. Y que diablos: muchas veces tan solo te interesa poder pillar un archivo JavaScript cualquiera y poder minimizarlo. Sin más ceremonias.

Los editores más comunes tienen la opción de minimizar archivos de código, generalmente mediante algún tipo de plugin o extensión. Por ejemplo, Visual Studio Code (mi favorito) tiene Minify, Visual Studio usa Web Compiler, Atom tiene una plétora de plugins para hacer esto, y hasta Web Storm usa Uglify-JS por debajo.

Y es que el minimizador y ofuscador de JavaScript por antonomasia es sin duda Uglify-JS. Esta paquete npm toma un archivo .js y lo convierte en su versión minimizada, opcionalmente lo ofusca (modificador --mangle) y también puede generar archivos de mapa de código fuente (--source-map). Este es el que yo utilizo.

Usarlo desde la línea de comandos es muy sencillo, como veremos a continuación.

Usando Uglify-JS desde la línea de comandos

Para todo este tipo de herramientas es necesario instalar Node.js en nuestro equipo de desarrollo, que es lo que usan por debajo para ejecutarse. Y además usaremos npm para instalarlos.

Hoy en día es prácticamente indispensable disponer de Node.js instalado para hacer casi cualquier desarrollo web Front-End. Así que casi se puede dar por hecho que este entorno está instalado en la máquina de cualquier desarrollador actual.

Para instalar el paquete solo debemos abrir una línea de comandos y escribir:

npm install -g uglify-js

esto instalará la herramienta de manera global en nuestro equipo, para poder utilizarla desde cualquier sitio.

Ahora, para minimizar un archivo .js podemos escribir:

uglifyjs archivo.js --compress --source-map filename=archivo.min.js.map -o archivo.min.js

Esta línea de comandos lanza la ejecución del proceso e indica que se debe minimizar el archivo (--compress) generando uno nuevo con el nombre "archivo.min.js" (parámetro -o), y además generar el archivo de mapa de código fuente "archivo.min.js.map" (opción --source-map) para facilitar su depuración en producción si fuera necesario.

Si además queremos ofuscar el archivo resultante, cambiándole de nombre a las funciones privadas, variables locales, etc... de modo que se dificulte el seguimiento del código, podemos añadirle la opción --mangle, que sirve precisamente para eso:

uglifyjs archivo.js --compress --mangle --source-map filename=archivo.min.js.map -o archivo.min.js

Nota: es importante tener en cuenta que Uglify-JS solo es capaz de minimizar código ECMAScript 5, es decir, JavaScript "clásico". Si nuestro código incluye construcciones específicas de ECMAScript 2015 o posterior (ES6+), como funciones Lambda, clases, plantillas, iteradores, etc... su ejecución fallará. El motivo es que la herramienta parte de la base de que antes de pasar a producción el código ES6+, éste se va a transpilar a ES5 usando alguna herramienta como Babel. Así que tenlo en cuenta si se produce algún error.

Facilitando aún más su uso: menús contextuales en el explorador de Windows

Lo anterior, la verdad es que es muy sencillo, y no cuesta demasiado hacerlo de vez en cuando. Sin embargo no deja de ser tedioso tener que abrir una línea de comandos, acordarse de esa sintaxis y escribir la instrucción cada vez que queramos hacerlo.

Por eso, lo que yo uso es un menú contextual que me aparece directamente en el explorador de archivos de Windows cada vez que pulso con el botón secundario en un archivo con extensión .js:

Opciones en mi menú contextual

De hecho, para que no me moleste, lo tengo definido de modo que solamente me aparezcan estas opciones cuando pulso además la tecla de mayúsculas. De este modo no me estorban entre todas las opciones cuando solo quiero abrir el archivo en un editor y solo aparecen exactamente cuando los necesito: MAYÚSCULAS + Botón Derecho.

Para conseguirlo hay que tocar el registro del sistema. Para ello tenemos que abrir el programa editor de éste, regedit.exe, como administrador:

Abrir regedit como administrador

y situarnos en la rama HKEY_CLASSES_ROOT\JSFile\Shell\. Dentro de ésta debemos definir dos sub-nodos con el nombre que le queramos dar a los nuevos comandos, por ejemplo "Minimizar" y "Minimizar y Ofuscar". Dentro de éstos habrá a su vez un nuevo sub-nodo denominado "Command", que es el que contendrá el comando a ejecutar al pulsar en esa opción (uglifyjs en este caso):

Definición de un comando en el registro

El comando completo es:

cmd /c uglifyjs "%1" --compress --source-map filename="%1.min.js.map" -o "%1.min.js"

Para poder ejecutar uglifyjs, que solo funciona desde la línea de comandos, debemos llamarlo usando el ejecutable del sistema cmd.exe, que es el que lanza la línea de comandos con el comando que le pasemos a continuación. Este ejecutable tiene algunos modificadores, de los cuales nos interesan dos:

  • /k: este ejecuta el comando indicado y luego continúa la ejecución, es decir, nos deja la línea de comandos abierta. Esto solo nos interesará normalmente si necesitamos ver por pantalla el resultado de la ejecución, aunque siempre tenemos la opción de enviarla a un archivo si queremos usando el operador >.
  • /c: ejecuta el comando y termina la ejecución, por lo que ni siquiera veremos la línea de comandos al final. Este será el que utilicemos en este caso.

Además le pasamos el argumento %1, que en este contexto representa la ruta completa del archivo sobre el que hemos hecho clic con el botón secundario. Dado que no hay manera de obtener solo el nombre del archivo sin la extensión, en esta versión del comando lo que le indicamos es que genere un archivo con el mismo nombre y la extensión ".min.js" ("%1.min.js"), lo cual nos da un ".js" de más de lo habitual en el nombre. Así que si por ejemplo el archivo se llama miApp.js, obtendremos miApp.js.min.js. Y lo mismo ocurre con los mapas: miApp.js.min.js.map.

Tampoco es algo muy grave. Lo podemos dejar así o simplemente lo podemos editar (clic encima y F2 para renombrar) y quitarle el ".js" de más que tiene. Es un pequeño precio a pagar por la comodidad de usarlo de esta manera.

Para que solo aparezca cuando pulsamos la tecla de mayúsculas al mismo tiempo debemos editar el nodo "padre" y y añadirle una clave de texto vacía llamada Extended (así, como la "E" mayúscula):

Extended

Ahora repetimos lo mismo con el otro comando (simplemente añadiendo --mangle a la línea de comandos), y ¡listo para utilizar!:

Proceso de minimización y ofuscación

Para que no tengas que pasar el trabajo de meter a mano eso en el registro te lo doy ya hecho en un archivo .reg. Solo tienes que descargarlo, descomprimirlo y hacer doble-clic sobre el archivo .reg que contiene. Se meterán esas dos claves en el registro y podrás utilizarlo de la misma manera que has visto.

Solo unos recordatorios:

  • Debes tener instalado Node.js y el paquete uglify-js como hemos visto al principio.
  • Debes pulsar el botón derecho del ratón cuando saques el menú contextual o no aparecerán los comandos.
  • Puede que tarden un rato en aparecer o que tengas que cerrar todas las instancias del explorador de archivos antes de que parezcan.

¡Espero que te parezca útil!

FRIKADAS: Juegos para aprender a programar en ensamblador

13/07/2017
Artículo original

El lenguaje ensamblador es el más bajo nivel al que podemos llegar a la hora de programar.

Una computadora consta en esencia de un procesador, que es el cerebro de la máquina y que se comunica con la memoria y todos los demás dispositivos. Cada tipo (o "familia") de procesadores posee su propio conjunto de instrucciones (llamadas "instrucciones de lenguaje máquina") de bajo nivel para llevar a cabo o gestionar diversas operaciones, como leer o colocar un dato en memoria, realizar una operación aritmética o lógica, y cuestiones muy simples de ese estilo. Nada que ver con las operaciones que podemos hacer con los lenguajes y plataformas de "alto nivel" que usamos en nuestro día a día. Esas instrucciones no son más que conjuntos de ceros y unos que se le pasan directamente al procesador...

Una persona no puede programar usando solamente 0's y 1's. Sería una locura. Así que para tratar de simplificarlo y que fuese más sencillo se inventó el lenguaje ensamblador. Este lenguaje consta de una serie de palabras que representan cada una de esas operaciones sencillas que el procesador puede realizar. Gracias a él, en lugar de utilizar ristras inmanejables de ceros y unos, se pueden usar algunas palabras. Luego hay un programa "ensamblador" que traduce esas instrucciones en el código máquina que el procesador entiende.

No es una gran mejora pero supone la diferencia entre poder programar una máquina a bajo nivel o no poder hacerlo.

Uno podría pensar que el lenguaje ensamblador, siendo tan árido y complejo, no sería muy popular. Sin embargo si ves el conocido índice TIOBE de popularidad, en junio de 2017 ensamblador es el décimo lenguaje más popular de la lista, ¡por delante de Swift, Ruby, Go o Visual Basic!.

Ranking TIOBE Junio 2017

¿Cómo es posible?

Bueno, algunos hablan de la velocidad que puedes conseguir con ensamblador, pero quitando aplicaciones muy concretas esa posible ganancia no es apreciable. Pero sí es cierto que puede suponer una ventaja en muchas aplicaciones de bajo nivel en cuanto a tamaño del programa, eliminación de posibles fuentes impredecibles de inestabilidad o retardo, uso de instrucciones directas que no están disponibles en los compiladores de alto nivel... Por supuesto es indispensable para crear drivers, virus, criptografía avanzada dependiente del tiempo...

Más allá de que tengamos una aplicación práctica en la que utilizarlo, aprender al menos los rudimentos del lenguaje ensamblador puede ayudarnos a comprender muchas cosas sobre el funcionamiento de un computador:

  • Cómo ejecuta las instrucciones el procesador.
  • Cómo se representa y maneja la información en la memoria de los dispositivos.
  • Cómo se accede a los diversos dispositivos.
  • Cómo se establece la interacción entre el procesador y el Sistema operativo.

Es decir, bajo nivel, pero ayudándonos a tener los conceptos muy claros de modo que luego trabajar con lenguajes de más alto nivel nos resulte más simple y entendamos muchas cosas.

Aprender ensamblador no tiene que ser aburrido

Lo malo de aprender ese lenguaje es cómo abordarlo, pues es muy árido. Hay pocos libros (nuestro tutor Francisco Charte escribió algunos hace años, ya descatalogados), y muchos menos cursos. Y en cualquier caso, si no quieres meterte a fondo, solo aprender los rudimentos, es un poco "matar moscas a cañonazos".

Sin embargo existen otras opciones...

Quizá te sorprenderá saberlo, pero hace tiempo que existen algunos juegos que están especialmente diseñados para aprender ensamblador al mismo tiempo que nos divertimos.

A mí me sorprendió también cuando lo vi en la revista Spectrum del IEE de mayo. Me hicieron mucha gracia, me he acordado ahora y me apetece reflejarlos aquí, así que ¡vamos a ello!

Human Resource Machine

Human Resource Machine

El juego te pone en la piel de un trabajador de oficina que está entre dos cintas transportadoras. Por una de ellas llegan letras y números, y tú debes colocarlas en la cinta de salida pero cumpliendo unas determinadas reglas. Para ello te proporcionan dos elementos: el suelo (que actúa como un espacio temporal de memoria) y algunas operaciones que puedes realizar (las instrucciones). De entrada solamente tienes dos, pero a medida que superas niveles (y aprendes) aparecen más opciones.

Es muy original y con su planteamiento podrías jugar a él y no saber que estás aprendiendo ensamblador al mismo tiempo :-)

Disponible para Windows, Linux, Mac, en Steam y para la nueva Nintendo Switch por $9.99.

TIS-100 de Zachtronics

TIS-100

Este, más que un juego, es ya un simulador. Lo que simula es la interfaz de un microprocesador de los años 80.

La trama del juego es que has heredado un ordenador de los '80 que era de un tío tuyo. El chisme no funciona bien porque está corrompido. El objeto del juego es resolver ciertos puzles en ensamblador para recuperar algunas porciones de la memoria y descubrir el propósito original del aparato. Como interfaz tienes una pantalla de texto con varios nodos de procesamiento que se pasan mensajes unos a otros.

Este requiere más de tu parte para empezar y avanzar, pero la dificultad es más gradual y quizá engancha más una vez que arrancas con él. Eso sí, trae hasta manual de instrucciones, clavado a los que había hace 30 años (¡qué tiempos!).

Está disponible para Steam (Windows, Linux, Mac) por unos 6€ y para iPad por menos de 4 dólares.

Shenzhen I/O de Zachtronics

Shenzhen

De la misma casa que el anterior, este es más reciente (lanzado en noviembre del año pasado).

En esta ocasión eres un ingeniero electrónico occidental que decide irse al lugar en dónde se fabrica todo hoy en día: Shenzen, en China. Allí compras muchos componentes diferentes como memoria, micro-controladores y puertas lógicas y debes usarlos para ir construyendo diversos aparatos según los pedidos recibidos. Al igual que el anterior, unos componentes se comunican con los otros en función de las instrucciones que les vayas poniendo a cada uno. Cada componente tiene su propia hoja de especificaciones que debes leer para aprender a utilizarlo.

Palabras mayores, pero divertido :-)

Se puede conseguir para las mismas plataformas que el anterior a excepción de iPad.

En resumen

Si te gustan los juegos de "romperte la cabeza" y de paso quieres aprender los entresijos de cómo funciona un procesador, aquí tienes tres opciones estupendas que te darán horas de diversión en esta época veraniega.

Yo, el primero (Human Machine Resources), lo recomendaría incluso para personas jóvenes (¿12-14?) que tengan cierta predisposición para este tipo de pensamiento estructurado. Les ayudará a comprender mejor algunos conceptos, a desarrollar más su pensamiento lógico y ordenado, y quién sabe si quizá les abrirá una vocación profesional :-)

La manera correcta de actualizar npm en Windows

11/07/2017
Artículo original

npm, el gestor de paquetes de Node.js, se ha convertido con el tiempo en una herramienta absolutamente indispensable para cualquier desarrollador Web, especialmente para desarrolladores Front-End y, obviamente, para los que usen Node.js para el backend. A través de este gestor de paquetes y automatizador de scripts es posible instalar todo tipo de utilidades y herramientas, y es la base del tooling moderno utilizado para desarrollar (desde minimizar archivos hasta crear complejos procesos de automatización y bundling).

Conviene tener siempre la versión más reciente de la herramienta, por lo que de vez en cuando debemos actualizarlo. Si descargamos el instalador de la última versión de Node.js ya vendrá incluido, pero ¿y si, como ocurre muchas veces, solo queremos actualizar el propio npm pero no la versión de node?

Dado que npm es a su vez un paquete npm, en teoría deberíamos poder actualizarlo como cualquier otro paquete, usando el comando:

npm update -g npm

Pero esto no siempre funciona como esperábamos en Windows. El motivo es que, bajo Windows, Node.js se instala en la carpeta C:\Program Files\Nodejs e incluye también la versión "de serie" de su versión para npm, como se puede observar en esta figura:

que en realidad apunta a un código que está dentro de la carpeta node_modules de la instalación de Node.js.

Pero cuando actualizas un paquete npm con la instrucción vista más arriba, lo que hace es actualizar el paquete en la carpeta propia del usuario, en C:\Users\<usuario>\AppData\Roaming\npm, de modo que aunque la instalación de Node.js sea global, cada usuario puede manejar sus propios paquetes sin interferir con los demás.

El conflicto viene de que, cuando se instalar Node.js en el sistema, una de las opciones a añadir al PATH de Windows ambas carpetas: la de instalación de Node.js y la de los paquetes de npm:

Pero la ruta de los paquetes se instala en el PATH de usuario, y la de Node.js se instala en el PATH del sistema:

Rutas de Node en PATH

Y esto provoca un conflicto, pues el PATH del sistema siempre tiene preferencia frente al del usuario (al contrario que las demás variables de entorno, pero PATH es especial en esto). Por ello, cuando actualizas npm (guardándose la nueva versión en la ruta de los paquetes npm, del usuario), el efecto práctico es que el sistema no encuentra la nueva versión, puesto que encuentra antes el npm original que está en la carpeta de instalación de Node.js, y que venía con éste.

¿Cómo podemos solucionarlo?

Bueno, existen diversas maneras.

La primera y más sencilla sería eliminar la versión original de npm que viene con Node.js, pero no sin antes haber actualizado npm de la manera indicada al principio. Serían los dos archivos recuadrados más arriba. El problema de hacer esto es que si alguien más utiliza Node en la misma máquina y no lo ha actualizado lo dejaremos automáticamente sin el gestor de paquetes. Yo pienso que mejor no tocar los archivos originales si podemos encontrar otra solución.

La otra solución pasa por actualizar npm directamente en la carpeta original, lo cual par hacerlo bien implica una serie de pasos un tanto tediosos y que están descritos en la documentación de npm.

Para evitar tener que pasar el mal trago, como no, existe un paquete npm que nos soluciona el problema. Se trata de npm-windows-upgrade. Lo escribió el programador Alemán Félix Rieseberg cuando trabajaba en Microsoft (ahora está en Slack).

Para poder utilizarlo necesitaremos abrir una ventana de PowerShell como administrador:

Una vez en PowerShell debemos asegurarnos de que podemos ejecutar scripts de PowerShell, que por defecto vienen "capados", escribiendo esto:

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force

Ahora ya podemos proceder. Lo único que necesitamos es instalar el paquete npm mencionado:

npm install -g npm-windows-upgrade

¡Listo! Ahora ya podemos usar esta herramienta para actualizar npm a la versión que queramos:

En la figura anterior se ve cómo compruebo la versión actual de npm (sale la 5.0.3) y cuando lanzo el actualizador me indica las versiones disponibles, a través de la cuales me puedo mover. La más reciente es la 5.2.0, que es la que escojo y pulso ENTER para instalarla. Al cabo de un rato (más largo que lo que muestra el GIF, que he acelerado en la parte de la instalación), npm queda actualizado directamente en la carpeta de Node.js.

Esta herramienta, que parece un tanto rebuscada, de hecho es tan efectiva que ahora ya es el método que recomienda el propio Node.js en la documentación para actualizar npm en Windows. Así que no hay problema por hacerlo así.

¡Espero que te haya ayudado!

Página Anterior Página Siguiente