Aprender JavaScript moderno es como si desde el principio no hubieses estado ahí. El ecosistema está creciendo y cambiando tan rápidamente que es difícil comprender los problemas que las diferentes herramientas están tratando de resolver.

El objetivo de este artículo es proporcionar un contexto histórico de cómo han evolucionado las herramientas JavaScript hasta lo que son hoy, en 2017. Empezaremos desde el principio, construyendo un sitio web de ejemplo como lo hacían los dinosaurios – sin herramientas, solamente HTML plano y JavaScript. Posteriormente iremos introduciendo diferentes herramientas, una a una, de manera incremental para ver los problemas que resuelven. Con este contexto histórico, podrás adaptarte mejor al siempre cambiante ecosistema JavaScript. ¡Empecemos!

Lee el resto de esta entrada »

Anuncios

spring-by-pivotal
Hay muchos conceptos básicos en el Framework Spring que pueden resultar confusos. Uno de ellos es la configuración basada en Java. A continuación encontrarás una descripción condensada de cómo declarar beans usando la configuración en Java.

Ten en cuenta que esta entrada no cubre las dependencias entre beans de diferentes ámbitos ni cubre anotaciones como @Component, @Service, @Repository, etc., que a menudo son una buena alternativa a lo aquí descrito.

Lee el resto de esta entrada »

eclipse_logo
A raíz de la última actualización de Ubuntu (pasando de 17.04 GNOME a 17.10) he tenido problemas (“Unhandled event loop exception” al intentar cambiar de perspectiva utilizando la botonera) al ejecutar alguna versión de Eclipse (concretamente la 4.6.3, con la 4.7.l no he tenido problemas).

El problema parece estar relacionado con libwebkit y GTK3.

Para solucionarlo (forzando el uso de GTK2) he tenido que modificar el eclipse.ini para incluir:

--launcher.GTK_version
2

de tal modo que ahora queda algo así:

-startup
plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.401.v20161122-1740
--launcher.GTK_version
2
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-configuration
/home/rubensa/development/eclipse/4.6.3/configuration
-data
/home/rubensa/development/eclipse/4.6.3/workspace
-vm
/home/rubensa/software/jdk1.8/bin/java
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/home/rubensa/development/eclipse/4.6.3/dropins

angular

NgModule es la estructura básica con la que te encuentras al codificar una aplicación con Angular, pero también es la más sutil y compleja, debido a sus diferentes ámbitos. La documentación de Angular tiene incluso una completa FAQ acerca de NgModules, pero sigue siendo una locura entenderlos.

Lee el resto de esta entrada »

angular
Los módulos de Angular representan un concepto central y juegan un papel fundamental en la estructuración de las aplicaciones Angular.

Un Módulo Angular agrupa un conjunto de artefactos Angular, como son componentes, directivas, pipes y servicios que forman parte de ese mismo módulo. Dicho esto, representa una agrupación lógica en lo que podríamos llamar área funcional de nuestra aplicación (ej. módulo de contactos, módulo de administración,…). Es más, un Módulo Angular también define las dependencias con otros módulos, esto es, que otros módulos necesita importar y a su vez qué componentes, directivas o pipes exporta.

@NgModule({
imports: [ BrowserModule, HttpModule, FormsModule ],
declarations: [ PersonComponent, ContactComponent, ContactListComponent ],
providers: [ PersonService, ContactService ],
exports: [ ContactListComponent, ContactComponent ]
})
export class ContactModule {}

Lee el resto de esta entrada »

El desarrollo moderno de JavaScript puede ser abrumador.

Al trabajar en un proyecto, te puedes preguntar si toda la maquinaria e instrumentación moderna es necesaria.

¿Qué hacen herramientas como Webpack y SystemJS? O ¿qué significa AMD, UMD o CommonJS?  ¿Qué relación tienen entre ellas? y ¿porqué, siquiera, las necesitas?

En esta entrada aprenderemos las diferencias entre módulos JavaScript, formatos de módulo, cargadores de módulo y empaquetadores de módulos.

No se trata de una guía en profundidad de ninguna de las herramientas o patrones individuales, sino de una aproximación que permita entender rápidamente los conceptos del JavaScript moderno.

Lee el resto de esta entrada »

git

Usar múltiples cuentas con repositorios remotos puede resultar complicado.  En esta entrada explico cómo podemos conseguir que Git utilice la clave SSH correcta para el repositorio en el que estemos trabajando.

Creación de diferentes claves públicas

Para generar una clave nueva ejecutaremos el siguiente comando:

$ ssh-keygen -t rsa -C "your_email@youremail.com" -f "your_user_id_file"

La opción -C es un comentario para ayudar a identificar la clave.  La opción -f especifica el nombre del fichero.

En el ejemplo, crearemos 2 claves que debemos guardar en el directorio ~/.ssh/:

~/.ssh/id_rsa_user1
~/.ssh/id_rsa_user2

Una vez creadas, las añadiremos al anillo de claves del agente SSH de autentificación ejecutando los comandos:

$ ssh-add ~/.ssh/id_rsa_user1
$ ssh-add ~/.ssh/id_rsa_user2

NOTA: Podemos eliminar todas las claves anteriormente cacheadas mediante el comando:

$ ssh-add -D

Finalmente podemos comprobar las claves almacenadas mediante el comando:

$ ssh-add -l

Importación de la clave pública en GitHub

Debes importar la clave púbica generada anteriormente en su cuenta GitHub asociada.

Consulta la documentación de GitHub para ver cómo hacerlo.

Configuración de SSH

En el directorio ~/.ssh/ crearemos un fichero llamado config:

$ cd ~/.ssh/
$ touch config

He introduciremos un contenido similar a este:

#user1 account
Host github.com-user1
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa_user1

#user2 account
Host github.com-user2
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa_user2

Clona tu repositorio y modifica su configuración Git

Clona tu repositorio git

$ git clone git@github.com-user1:user1/your-repo-name.git

Si ya tenías una copia local será necesario que actualices el origin:

$ git remote set-url origin git@github.com-user1:user1/your-repo-name.git

Ahora ve al repositorio Git local que quieres configurar y ejecuta:

$ git config user.name "user1"
$ git config user.email "user1@example.com" 

o puedes tener tu configuración git global:

$ git config --global user.name "user1"
$ git config --global user.email "user1@example.com"

Repite el proceso con el otro usuario y su repositorio.

A partir de aquí, podemos usar el flujo normal para publicar nuestro código

$ git add .
$ git commit -m "your comments"
$ git push

vía

A %d blogueros les gusta esto: