forked from coljs/medellinjs
-
Notifications
You must be signed in to change notification settings - Fork 1
/
feed.xml
337 lines (309 loc) · 29.8 KB
/
feed.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>MedellinJS</title>
<link>http://medellinjs.org</link>
<description>JavaScript User Group</description>
<atom:link href="http://medellinjs.org/feed.xml" rel="self" type="application/rss+xml" />
<item>
<title>Introducción a Phonegap - Parte 1</title>
<description><![CDATA[<p>En este tutorial dividido en varias secciones, aprenderemos sobre aplicaciones móviles híbridas con <a href="http://phonegap.com/">Phonegap</a>.
<!-- more --></p>
<h2>Construyendo aplicaciones móviles con Phonegap - Parte 1 instalando, generando y ejecutando un aplicativo</h2>
<p>En esta parte del tutorial veremos como instalar, construir, empaquetar y ejecutar una aplicación móvil básica usando este <em>framework</em> que utiliza HTML, CSS y por supuesto JavaScript.</p>
<h3>Introducción</h3>
<p><img src="https://dl.dropboxusercontent.com/u/212845/Charla%20Phonegap/Build-Diagram-2.png" alt="Phonegap" title="Phonegap"></p>
<p>PhoneGap es un <em>framework</em> de desarrollo orientado a dispositivos móviles que permite construir aplicaciones de fácil portabilidad a diversas plataformas usando HTML, CSS y Javascript, en pocas palabras <a href="http://phonegap.com/">Phonegap</a> permite empaquetar un aplicativo web como un aplicativo móvil, que puede ser instalado localmente en un dispositivo soportado e incluso puede ser distribuido por las múltiples tiendas de aplicaciones de las plataformas incluidas en el <em>framework</em>.</p>
<h2>Cordova o Phonegap?</h2>
<p>Nitobi, la compañía que inició el proyecto <a href="http://phonegap.com/">Phonegap</a>, fue adquirida luego por Adobe, cuando esto sucedió, Nitobi donó el proyecto a la fundación Apache, como Phonegap era marca registrada y fue adquirida por Adobe, la fundación Apache renombro el proyecto a <a href="http://cordova.apache.org/">Apache Cordova</a>, sin embargo Adobe tomó la decisión de mantener <a href="http://phonegap.com/">Phonegap</a> sin costo alguno y luego hizo de Phonegap una distribución de Apache Cordova, esto significa que <a href="http://phonegap.com/">Phonegap</a> es igual que <a href="http://cordova.apache.org/">Apache Cordova</a>, más un par de funcionalidades extra.</p>
<h2>Plataformas soportadas</h2>
<p>Actualmente se soportan oficialmente 10 plataformas:</p>
<ul>
<li>Amazon Fire OS</li>
<li>Android</li>
<li>Blackberry 10</li>
<li>Firefox OS</li>
<li>IOS</li>
<li>Ubuntu</li>
<li>Windows Phone 7</li>
<li>Windows Phone 8</li>
<li>Windows 8</li>
<li>Tizen</li>
</ul>
<p>Algunas plataformas como WebOS, Bada y Symbian, fueron soportadas en versiones anteriores del <em>framework</em>, pero se descontinuaron debido a que dichos sistemas operativos son considerados <em>legacy</em>, pero en caso de necesidad extrema, es posible con una versión anterior construir un aplicativo para las mismas.</p>
<h2>Cómo funciona?</h2>
<p>Toda aplicación del <em>framework</em> trabaja sobre un componente nativo llamado <em>web view</em>, Este componente carga un documento HTML y este documento por lo general incluye un archivo JavaScript que es el API de <a href="http://phonegap.com/">Phonegap</a>, el cual tiene acceso a controlar el <em>hardware</em> del dispositivo, este API se comunica con un componente nativo que actúa como un <em>middleware</em> entre JavaScript y el sistema operativo del dispositivo, de una forma más gráfica:</p>
<p><img src="https://dl.dropboxusercontent.com/u/212845/Charla%20Phonegap/HTML5WrapperLarge.png" alt="middleware" title="Middleware"></p>
<h2>Instalando Phonegap</h2>
<p>Para instalar <a href="http://phonegap.com/">Phonegap</a> necesitamos tener un entorno funcional de <a href="http://nodejs.org/">NodeJS</a>, así que solo tenemos que ejecutar:</p>
<p><code>sudo npm install -g phonegap</code></p>
<p>Posterior a esto dispondremos del comando phonegap y podemos probarlo ejecutando:</p>
<p><code>phonegap --version</code></p>
<p>Si la instalación se ejecutó correctamente esto debe imprimir la versión del <strong>framework</strong> instalada</p>
<h2>Creando el proyecto</h2>
<p>Disponiendo ya del comando phonegap, para crear el proyecto basta con ejecutar:</p>
<p><code>phonegap -d create MedJSMobile com.medjs.app MedellinJS</code></p>
<p>Este comando creará un directorio MedJSMobile, y dentro tendremos nuestro proyecto que usará el ID "com.medjs.app" y tendrá el nombre de MedellinJS.</p>
<p>Dentro del directorio generado por ahora nos enfocaremos en el subdirectorio <strong>www</strong>, al interior de este encontraremos la estructura de un proyecto web, tenemos el archivo <strong>index.html</strong>,los directorios <strong>css</strong>,<strong>img</strong> y <strong>js</strong> para hojas de estilo, imágenes y archivos JavaScript en su orden respectivo. Hay algunos otros pero por ahora nos concentraremos en estos.</p>
<p>Lo que tenemos al comienzo es un aplicativo bastante básico que simplemente escucha por el evento <strong>deviceready</strong>, este sucede cuando el dispositivo donde se ejecuta el aplicativo está listo para trabajar, el callback cambia un mensaje en la pantalla cuando el evento ocurre (Este código se encuentra el archivo <strong>index.js</strong> dentro del directorio <strong>js</strong>).</p>
<h2>Ejecutando el aplicativo</h2>
<p>Existen diversas formas de ejecutar el aplicativo, algunas más simples que otras, estas son las diferentes opciones:</p>
<h3>Ejecución en un emulador local</h3>
<p>Para ello debemos tener un entorno de desarrollo de la plataforma donde quiero probar el aplicativo, la configuración de dicho entorno varía bastante de acuerdo al entorno deseado y el sistema operativo de mi máquina local, afortunadamente <a href="http://phonegap.com/">Phonegap</a> cubre los diferentes procesos en su <a href="http://docs.phonegap.com/en/3.4.0/guide_platforms_index.md.html#Platform%20Guides">documentación</a>.</p>
<p>Luego de realizar la configuración para la plataforma deseada podemos ejecutar:</p>
<p> <code>phonegap local run android</code></p>
<p>Este comando construye el paquete y lo instala en el emulador de la plataforma seleccionada y previamente configurada en la maquina local, en el caso del ejemplo <strong>Android</strong>.</p>
<h3>Ejecución en un dispositivo conectado por USB</h3>
<p>El dispositivo debe estar previamente configurado según la <a href="http://docs.phonegap.com/en/3.4.0/guide_platforms_index.md.html#Platform%20Guides">documentación de Phonegap</a> para cada plataforma, luego solo basta con ejecutar:</p>
<p><code>phonegap run android --device</code></p>
<p>Este comando construye el paquete para el aplicativo, lo instala en el dispositivo y por último lo ejecuta. En caso de no encontrar dispositivo alguno que cumpla con los requisitos buscará un emulador local de la plataforma seleccionada como <strong>fallback</strong></p>
<p><img src="https://dl.dropboxusercontent.com/u/212845/Charla%20Phonegap/phonegap-initial-app.png" alt="Phonegap initial app" title="phonegap initial app"></p>
<h3>Compilando en la nube y probando en un dispositivo sin conexión por cable</h3>
<p>Este método permite obviar la configuración de un entorno de desarrollo local, así que en teoría podríamos desarrollar un aplicativo solo teniendo el <strong>CLI</strong> de <a href="http://phonegap.com/">Phonegap</a> instalado y una cuenta registrada en el servicio <a href="https://build.phonegap.com">Phonegap Build</a>, este es un servicio muy útil que nos permite la construcción remota de paquetes instalables para las plataformas <strong>IOS</strong>,<strong>Android</strong> y <strong>Windows Phone</strong>, Este servicio está disponible con diversos planes siendo el más básico libre de costo alguno, para más información ver los <a href="https://build.phonegap.com/plans">planes</a>.</p>
<p>Para compilar el paquete ejecutamos:</p>
<p><code>phonegap remote run android</code></p>
<p>Si es la primera vez que lo ejecutamos, deberemos autenticarnos con la cuenta de <a href="https://build.phonegap.com">Phonegap Build</a>, luego este comando subirá nuestro código, creando la aplicación en la nube. Allí se compilará el paquete, luego imprimirá un código <strong>QR</strong> en la consola para que procedamos a escanear este con el dispositivo y podamos instalar el aplicativo compilado.</p>
<h3>Sirviendo el aplicativo por la red local sin compilarlo</h3>
<p>Este es el método más revolucionario de todos, recientemente fue lanzado el <a href="http://app.phonegap.com/">Phonegap Developer App</a>, un aplicativo que se instala en el dispositivo móvil y que permite ejecutar nuestro código directamente en el dispositivo sin que sea previamente compilado, empaquetado ni instalado.</p>
<p>El proceso es bastante simple, en la máquina local ejecuto:</p>
<p><code>phonegap serve</code></p>
<p>Esto creará un servidor en la máquina local que por defecto correrá en el puerto 3000, luego de instalar el <a href="http://app.phonegap.com/">Phonegap Developer App</a> en el dispositivo, procedemos a ejecutarlo y lo apuntamos a la dirección IP y puerto del servidor en nuestra máquina local.</p>
<p><img src="https://dl.dropboxusercontent.com/u/212845/Charla%20Phonegap/phonegap-dev-app.png" alt="Phonegap developer app" title="phonegap developer app"></p>
<p>Lo interesante de este método es la velocidad, ya que todo cambio que ejecute en mi código se enviará en tiempo real al dispositivo, eliminando los tediosos tiempos de espera para probar los cambios que es algo muy común en el desarrollo para móviles. Adicionalmente puedo probar la aplicación en múltiples dispositivos simultáneamente conectados al servidor y puedo ver en la consola de este toda la actividad en las terminales, siendo esto una gran ayuda para hacer <strong>debugging</strong>.</p>
<p>Si requiero refrescar manualmente el aplicativo, basta con hacer <strong>touch</strong> con cuatro dedos y si quiero regresar a la pantalla de conexión del aplicativo lo puedo hacer con tres dedos.</p>
<p><strong>Aquí finalizamos la primera parte, en la segunda veremos algunos frameworks para construir interfaces gráficas para aplicativos móviles.</strong></p>
]]></description>
<pubDate>Junio 6, 2014</pubDate>
<link>http://medellinjs.org/posts/phonegap1</link>
<guid isPermaLink="true">http://medellinjs.org/posts/phonegap1</guid>
</item>
<item>
<title>Introducción a Arduino y Node.js - Parte 1</title>
<description><![CDATA[<p>En esta serie de artículos aprenderemos cómo programar un Arduino y cómo podemos integrarlo con Node.js.
<!-- more --></p>
<h2>Introducción</h2>
<p>¡Estamos en el boom del Internet de las cosas! y uno de los principales actores de este boom es el <a href="http://arduino.cc/">Arduino</a>, una plataforma electrónica abierta (Open Hardware) para hacer prototipados de proyectos de una manera fácil e intuitiva, gracias a esto se ha vuelto bastante popular en los círculos de artistas, diseñadores, programadores y entusiastas permitiendoles realizar proyectos y ambientes interactivos con facilidad e incluso utilizar esta plataforma como herramienta de enseñanza para personas de todas las edades.</p>
<p>Otro de los principales actores es <a href="http://nodejs.org/">Node.js</a> ya que es una de las plataformas perfectas para realizar aplicaciones en tiempo real, justo lo que se necesita en el Internet de las cosas.</p>
<h2>¿Cómo programar un Arduino?</h2>
<p>Para programar un <a href="http://arduino.cc/">Arduino</a> necesitamos descargar e instalar el <a href="http://arduino.cc/en/Main/Software">Arduino IDE</a>, esta herramienta nos permitira programar y subir nuestros archivos al dispositivo, el lenguaje de programación utilizado es compatible con <code>C/C++</code> (a simple vista no es estrictamente <code>C/C++</code> pero al momento de compilar el IDE se encarga de agregar los headers necesarios para que funcione en el dispositivo).</p>
<p>Todo programa de Arduino necesita de 2 mètodos fundamentales <code>setup</code> y <code>loop</code>.</p>
<pre><code class="language-c">void setup() {
// Aquì realizaremos todo el código de inicializaciòn y configuraciòn
}
void loop() {
// Como su nombre lo indica este método se ejecutará en un ciclo infinito
// Aquí se realizará toda la funcionalidad principal de nuestra aplicación
}</code></pre>
<p>Si quieres conocer más sobre el Lenguaje de Arduino y sus capacidades visita el <a href="http://arduino.cc/en/Reference/HomePage">Manual de Referencia</a>.</p>
<p>Personalmente considero que la mejor forma de aprender es haciendo ¿cierto?, entonces realizaremos nuestro primer proyecto básico con Arduino y luego aprenderemos como integrar este proyecto con <a href="http://nodejs.org/">Node.js</a> y así tendríamos nuestra primer solución en tiempo real - <em>¡Internet de las cosas, allá vamos!</em>.</p>
<h3>Sensor de Temperatura</h3>
<p>Construiremos un sensor de temperatura para nuestro hogar con indicador lumínico.</p>
<p><strong>Componentes necesarios</strong></p>
<ul>
<li>1 Arduino UNO/Leonardo (o compatible) con cable USB</li>
<li>1 Shield Wifi o Ethernet con su respectivo cable (solo necesario para conectarlo a un servidor Node.js)</li>
<li>1 Sensor de temperatura LM35</li>
<li>1 LED Rojo</li>
<li>1 LED Verde</li>
<li>2 resistencias de 220 Ohms</li>
<li>Breadboard</li>
<li>Cables</li>
</ul>
<h4>Montaje</h4>
<p><img src="http://i.imgur.com/q7AcLuh.png?1" alt="Montaje"></p>
<p>Aquí tenemos un circuito bastante sencillo, los dos LED están conectados a pines digitales del Arduino, en este caso el LED rojo está conectado al pin <code>7</code> y el LED verde está conectado al pin <code>8</code>. <em>Ojo, las resistencias son necesarias si no quemaremos los LED</em>.</p>
<p>Y el sensor de temperatura lo conectamos a una entrada análoga del Arduino, en este caso al pin <code>A0</code>.</p>
<p>Luego de realizar todas las conexiones incluyendo la de <code>+5V</code> y <code>GND</code> conectamos nuestro Arduino al computador a través del puerto USB y abrimos el Arduino IDE.</p>
<h4>Arduino IDE v1.5.2-BETA</h4>
<p><img src="http://i.imgur.com/VleqjdB.png" alt=""></p>
<p>En el IDE vamos a escribir el siguiente código:</p>
<pre><code class="language-c">#define LED_RED 7 // Definimos el pin del LED rojo
#define LED_GREEN 8 // Definimos el pin del LED verde
#define TEMP_SENSOR 0 // Definimos el pin analogo del sensor
int maxTemp = 22; // Este sera nuestro limite de temperatura
void setup() {
Serial.begin(9600); // Iniciamos el puerto serial
pinMode(LED_RED, OUTPUT); // Definimos el pin del LED rojo como salida
pinMode(LED_GREEN, OUTPUT); // Definimos el pin del LED verde como salida
}
void loop() {
int voltage = analogRead(TEMP_SENSOR); // Leemos el valor actual del pin analogo, este valor
// puede estar entre 0 y 1023 y corresponde a un nivel de voltaje
// que nos entrega el sensor.
int temp = (5 * voltage * 100) / 1024; // Realizamos la conversion a grados celsius, esta formula se puede
// encontrar en la hoja de datos del componente.
//
// En el siguiente bloque vamos a verificar si la temperatura actual supera el maximo definido en maxTemp
// si es superado debemos encender el LED rojo y apagar el LED verde, de lo contrario dejamos el LED verde
// encendido.
//
// HIGH enciende el puerto digital, corresponde a un 1 o +5V.
// LOW apaga el puerto digital, corresponde a un 0.
//
if (temp > maxTemp) {
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_RED, HIGH);
} else {
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_RED, LOW);
}
Serial.println(temp); // Imprimimos la temperatura actual en el puerto serial
delay(500); // Esperamos 500ms antes de empezar la siguiente lectura.
}</code></pre>
<p>Luego de escribir el código debemos subirlo al Arduino, para eso damos click al botón de <code>Upload</code> y garantizamos que el código ha sido subido con éxito.</p>
<p><img src="http://i.imgur.com/Gp2kk8v.png" alt="Arduino IDE uploading"></p>
<p>Si queremos ver lo que esta pasando en el puerto serial podemos abrir el monitor serial en <code>Tools > Serial Monitor</code> o ejecutando <code>Ctrl + Shift + M</code>, allí veremos la lectura de temperatura del sensor.</p>
<p><img src="http://i.imgur.com/gW2ecEE.gif" alt="Monitor Serial"></p>
<p>Y listo, nuestro sensor de temperatura está funcionando a la perfección ¿Que fácil no?</p>
<p><iframe class="vine-embed" src="https://vine.co/v/M1pBjKLzLqz/embed/simple" width="600" height="600" frameborder="0"></iframe><script async src="//platform.vine.co/static/scripts/embed.js" charset="utf-8"></script></p>
<p>Ahora viene la grán pregunta...</p>
<h2>¿Cómo integrar Arduino con Node.js?</h2>
<p>En este primer artículo aprenderemos como integrar nuestro proyecto con Node.js através del puerto serial utilizando el módulo <a href="https://npmjs.org/serialport"><code>serialport</code></a>.</p>
<p>Primero debemos instalar el módulo utilizando el gestor de paquetes de Node.js - <a href="https://npmjs.org">npm</a></p>
<pre><code> $ npm install serialport</code></pre>
<p>Luego creamos un archivo JavaScript con el siguiente código:</p>
<h4>app.js</h4>
<pre><code class="language-javascript">// Requerimos el módulo serialport
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
// Instanciamos el objeto de conexión al puerto serial
var sp = new SerialPort("/dev/ttyACM0", {
baudrate: 9600,
parser: serialport.parsers.readline("\n")
});
// Abrimos la conexión al puerto serial
sp.open(function () {
// Cada que llegue un dato serial lo imprimiremos en la consola
// En este caso convertimos el dato en Entero y lo mostramos como
// temperatura en grados celsius.
sp.on("data", function (data) {
var temp = parseInt(data, 10) + " ºC";
console.log(temp);
});
});</code></pre>
<p>Y luego ejecutamos nuestra aplicación con el siguiente comando:</p>
<pre><code>$ node app.js</code></pre>
<p><em>Si utilizas Linux es posible que tengas un problema de permisos para leer el puerto serial, para ejecutar la aplicación utiliza <code>sudo</code></em></p>
<p><img src="http://i.imgur.com/RrjGugN.gif" alt="Output"></p>
<hr>
<p>En los próximos artículos de la serie explicaremos como conectar nuestro Arduino a un servidor <a href="http://nodejs.org/">Node.js</a> utilizando HTTP, WebSockets, Mensajes PubSub con MQTT y por último programaremos el Arduino directamente con <a href="http://nodejs.org/">Node.js</a> utilizando el framework <a href="https://github.com/rwaldron/johnny-five">Johnny-Five</a>.</p>
<h4>Introducción a Arduino y Node.js - HTTP - Parte 2 (Próximamente)</h4>
<h4>Introducción a Arduino y Node.js - WebSockets - Parte 3 (Próximamente)</h4>
<h4>Introducción a Arduino y Node.js - MQTT - Parte 4 (Próximamente)</h4>
<h4>Introducción a Arduino y Node.js - Johnny Five - Parte 5 (Próximamente)</h4>
]]></description>
<pubDate>Abril 19, 2014</pubDate>
<link>http://medellinjs.org/posts/introduccion-arduino-nodejs-1</link>
<guid isPermaLink="true">http://medellinjs.org/posts/introduccion-arduino-nodejs-1</guid>
</item>
<item>
<title>Taller NodeBots en JSConf Uruguay</title>
<description><![CDATA[<p>El pasado 14 y 15 de Marzo se realizó en la ciudad de Montevideo la primera edición de la <a href="http://jsconf.uy/">JSConf Uruguay</a>y tuve la oportunidad de asistir a este evento como Tallerista. <em>(esto gracias a que fuí aprobado en el proceso de selección de speakers)</em></p>
<!-- more -->
<p>El Taller realizado en este evento fue sobre <a href="http://nodebots.io">NodeBots</a> - Hardware Hacking con Node.js, en el cual aprendimos a programar un Arduino utilizando el framework <a href="https://github.com/rwaldron/johnny-five">Johnny-Five</a> y utilizando diferentes componentes electrónicos, desde un simple Led hasta un Joystick XY similares a los de PlayStation.</p>
<p><img src="http://i.imgur.com/tbWZQMj.jpg" alt="Taller"></p>
<p>Todo el contenido y código fuente de los ejercicios del taller se encuentra disponible en el siguiente repositorio:</p>
<p><a href="https://github.com/julianduque/nodebots-workshop"><a href="https://github.com/julianduque/nodebots-workshop">https://github.com/julianduque/nodebots-workshop</a></a></p>
<p>El Arduino Kit que utilizamos se puede conseguir por $55 en <a href="http://www.ebay.com/itm/UNO-R3-Starter-Kit-1602-LCD-Servo-Dot-Matrix-Breadboard-LED-Resistor-for-Arduino-/151183574145?ssPageName=ADME:L:OC:US:3160">eBay</a>:</p>
<p><img src="http://i.imgur.com/rPGg7qw.jpg" alt="Kit"></p>
<p>Este Kit es bastante completo y económico, para el taller solo utilizamos la mitad de los componentes pero sería bastante interesante realizar en futuros eventos talleres de mayor duración donde se puedan utilizar todos los componentes y porque no, trabajar en proyectos especificos integrando la parte electrónica con APIs o plataformas web.</p>
<p>Estamos viendo la forma de conseguir unos cuantos kit para MedellínJS y continuar con los talleres de NodeBots, así que si te interesa la electrónica y programación te invitamos a que consigas un kit y lo lleves al próximo evento de NodeBots Medellín que esperamos sea muy pronto ;)</p>
]]></description>
<pubDate>Marzo 31, 2014</pubDate>
<link>http://medellinjs.org/posts/nodebots-jsconf-uy</link>
<guid isPermaLink="true">http://medellinjs.org/posts/nodebots-jsconf-uy</guid>
</item>
<item>
<title>Yeoman - Flujos de trabajo modernos</title>
<description><![CDATA[<p><a href="http://yeoman.io/">Yeoman</a> es un conjunto de herramientas construidas sobre Node.js cuyo fin es el de implementar buenas prácticas de desarrollo y simplificar las tareas repetitivas que están involucradas en la realización de cualquier proyecto.
<!-- more --></p>
<p><img src="https://dl.dropboxusercontent.com/u/212845/charla_yeoman/yeomanClone.png" alt="Yeoman" title="Yeoman"></p>
<p>Los tres componentes básicos de <a href="http://yeoman.io/">Yeoman</a> son:</p>
<ul>
<li>Generación de esqueletos más conocida como <em>scalfolding</em> que se logra por medio de los paquetes generadores llamados <em>generators</em>, estos son paquetes que contienen la estructura básica de un proyecto, sus dependencias y tareas más comunes, esto me brinda un punto inicial de mi proyecto con toda la configuración requerida y listo para el iniciar el desarrollo.</li>
<li>Administración de dependencias por medio de <a href="http://bower.io/">Bower</a>, el sistema de paquetes de JavaScript que me permite instalar, desinstalar y actualizar las dependencias de mi proyecto.</li>
<li>Automatización de tareas por medio de <a href="http://gruntjs.com/">Grunt</a> o <a href="http://gulpjs.com/">Gulp</a>, dependiendo del que haya incluido mi generador, tareas como: compilar el proyecto, empaquetarlo, comprimirlo, probarlo... pueden ser automatizadas con alguna de estas dos herramientas</li>
</ul>
<h3>Instalando Yeoman</h3>
<p>Para instalar <a href="http://yeoman.io/">Yeoman</a> debo tener instalado NodeJS y NPM, y basta con ejecutar</p>
<p><code>sudo npm install -g yo</code></p>
<p>Luego de ejecutar la instalación, tendremos el comando <strong><em>yo</em></strong> disponible, este comando al ser ejecutado nos presenta un menú con las tareas que puede ejecutar <a href="http://yeoman.io/">Yeoman</a>, tambien puedo ejecutar el comando pasando argumentos y ejecutar una tarea concreta. </p>
<p>Inicialmente <a href="http://yeoman.io/">Yeoman</a> no incluye ningún generador, por lo que es necesario instalar los que necesitemos para nuestros proyectos. uno de los más usados es el generador de webapp, para instalarlo podemos seguir el asistente de instalación que presenta el comando <strong><em>yo</em></strong> o podemos recurrir a NPM, todos los generadores de <a href="http://yeoman.io/">Yeoman</a> son paquetes de NPM que tienen el prefijo <strong>generator-</strong>, en este caso la instalación sería así:</p>
<p><code>sudo npm install -g generator-webapp</code></p>
<p>Los generadores oficiales de <a href="http://yeoman.io/">Yeoman</a> se pueden observar <a href="http://yeoman.io/official-generators.html">aquí</a>, la comunidad ha hecho su parte y más opciones <a href="http://yeoman.io/community-generators.html">están disponibles</a></p>
<h3>Creando un nuevo proyecto con Yeoman</h3>
<p>Posterior a la instalación del generador, puedo crear el esqueleto de mi proyecto, basta con crear un directorio, ubicarme en el y correr el comando <strong><em>yo</em></strong>, en el menú interactivo ya tendré la opción de usar el generador en este caso el de <strong>webapp</strong>, también puedo usar el comando con el argumento de esta manera:</p>
<p><code>yo webapp</code></p>
<p>El generador suele incluir un proceso interactivo que me permite modificar opciones del esqueleto a ser creado, debo responder a sus preguntas hasta que inicie el proceso personalizado de acuerdo a mis preferencias.</p>
<p>Cuando la ejecución termine, tendré toda la estructura inicial de mi proyecto creada: </p>
<ul>
<li>En el directorio <strong>app</strong> almacenaré todo el código de mi aplicativo</li>
<li>Las dependencias instaladas en <em>_app/bower_components</em> </li>
<li>Las tareas incluidas listas para ser ejecutadas dentro del archivo <strong>Gruntfile.js</strong>.</li>
</ul>
<p>Una de las tareas más apreciadas incluidas en la mayoría de los generadores, es la del servidor embebido que me permite visualizar el proyecto mientras lo desarrollo, por lo general la orden es:</p>
<p><code>grunt serve</code></p>
<p>Como se puede observar, ya estoy listo para comenzar el desarrollo de mi proyecto y he ahorrado una considerable cantidad de tiempo en configuración y creación del proyecto inicial.</p>
<p>Si deseas ampliar más la información, te recomiendo la presentación usada en la charla <a href="http://slid.es/edsadr/yeoman">http://slid.es/edsadr/yeoman</a> .</p>
]]></description>
<pubDate>Marzo 10, 2014</pubDate>
<link>http://medellinjs.org/posts/yeoman</link>
<guid isPermaLink="true">http://medellinjs.org/posts/yeoman</guid>
</item>
<item>
<title>Primer NodeSchool Medellín</title>
<description><![CDATA[<p>El pasado 22 de Febrero se realizó el <a href="http://www.meetup.com/MedellinJS/events/167090612/">Primer NodeSchool en Medellín</a>,
25 personas asistieron desde las 10 de la mañana a <a href="http://en.atomhouse.co/">AtomHouse Medellín</a> un espacio
de Co-Working que abre sus puertas en la ciudad y que de ahora en adelante será un
lugar mas de encuentro para la comunidad MedellínJS.</p>
<p><!-- more --></p>
<hr />
<p><img src="http://nodeschool.io/images/nodeschool.png" alt="NodeSchool"></p>
<p><a href="http://nodeschool.io">NodeSchool</a> es una iniciativa para aprender Node.js y JavaScript
resolviendo problemas reales de programación, cada uno de los talleres está compuesto
por diferentes niveles que van enseñando los fundamentos de esa tecnología.</p>
<p>El primer taller que trabajamos fue <code>learnyounode</code> en donde se enseñan los conceptos
básicos de Node.js, si quieres experimentar con este taller lo puedes instalar a través de npm
asi:</p>
<pre><code class="language-lang-sh">$ npm install learnyounode -g</code></pre>
<p>luego de ejecutar el comando <code>learnyounode</code> deberán realizar cada uno de los retos
propuestos:</p>
<p><img src="http://medellinjs.org/img/learnyounode.png" alt="Learn You Node"></p>
<p>Si tienen alguna duda resolviendo los talleres pueden utilizar la sección de comentarios
o asistir al siguiente taller que se realizará a finales de este mes, estén muy pendientes!</p>
]]></description>
<pubDate>Marzo 6, 2014</pubDate>
<link>http://medellinjs.org/posts/primer-nodeschool</link>
<guid isPermaLink="true">http://medellinjs.org/posts/primer-nodeschool</guid>
</item>
<item>
<title>Hola Medellín!</title>
<description><![CDATA[<p>El 7 de Noviembre del 2012 empezó MedellínJS, Desde nuestra <a href="http://www.meetup.com/MedellinJS/events/86130022/">primer reunión</a>
venimos trabajando en el fortalecimiento del ecosistema tecnológico de la ciudad.</p>
<p>Hoy nuestro grupo cuenta con más de 750 miembros registrados y una asistencia promedio
mensual de 80 personas, razón que nos lleva a seguir trabajando fuertemente en esta comunidad.</p>
<p><!-- more -->
Muchas gracias Medellín por su acogida y por sus ganas de aprender y emprender,
nosotros desde MedellínJS esperamos que este nuevo año sea muy productivo para
toda la comunidad. Es por eso que hemos creado este espacio virtual donde publicaremos
la memoría de nuestras reuniones y artículos de interés relacionados con JavaScript.</p>
<p>Quedan todos invitados a crear contenido y compartirlo con toda la comunidad Hispanohablante,
extendemos esta invitación a todos los speakers que hemos tenido en las reuniones para
que en este espacio publiquen el material expuesto en eventos anteriores, a continuación
una guía de como contribuir a este blog.</p>
<h2>¿Cómo escribir un artículo?</h2>
<ol>
<li>Fork <a href="https://github.com/colombiajs/medellinjs"><a href="https://github.com/colombiajs/medellinjs">https://github.com/colombiajs/medellinjs</a></a></li>
<li>Crea un archivo utilizando <a href="http://github.github.com/github-flavored-markdown/">Github Flavored Markdown</a> en <code>_harp/posts/</code></li>
<li>Ingresa la información meta al archivo <code>_harp/posts/_data.json</code>, Inserta tu artículo al inicio de la lista.</li>
<li>Crea un <code>pull request</code> y nosotros haremos el resto</li>
</ol>
<p>Los invitamos a utilizar este espacio para compartir sus experiencias en JavaScript,
¡hasta una próxima oportunidad!</p>
]]></description>
<pubDate>Marzo 5, 2014</pubDate>
<link>http://medellinjs.org/posts/hola-medellin</link>
<guid isPermaLink="true">http://medellinjs.org/posts/hola-medellin</guid>
</item>
</channel>
</rss>