<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lógica mente</title>
	<atom:link href="http://jarboleya.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jarboleya.com</link>
	<description>Disfruta programando aplicaciones</description>
	<lastBuildDate>Sat, 11 May 2013 12:03:51 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Píldora 6. Actualizaciones y arrastrados con condición dinámica</title>
		<link>http://jarboleya.com/2013/04/21/pildora-6-actualizaciones-y-arrastrados-con-condicion-dinamica/</link>
		<comments>http://jarboleya.com/2013/04/21/pildora-6-actualizaciones-y-arrastrados-con-condicion-dinamica/#comments</comments>
		<pubDate>Sun, 21 Apr 2013 11:08:54 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[bases de datos]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Píldora]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[actualizaciones]]></category>
		<category><![CDATA[arrastrados]]></category>
		<category><![CDATA[cálculos]]></category>
		<category><![CDATA[triggers]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2958</guid>
		<description><![CDATA[Práctico y sencillo de programar, podrás optimizar tu aplicación para que ejecuten los bucles de actualización de cálculos arrastrados y las actualizaciones el menor número de veces posible, independientemente de que las operaciones en la tabla se lancen desde objetos de interfaz, procesos en primer plano o en el servidor.]]></description>
				<content:encoded><![CDATA[<h2>1. Planteando el problema</h2>
<p>Los triggers (o eventos de tabla) y las actualizaciones (o macro-triggers automáticos) son dos funcionalidades muy utilizadas en nuestras bases de datos ya que nos aportan gran potencia de forma sencilla para gestionar cambios tanto en el registro que está siendo creado, modificado o eliminado como en los registros de otras tablas maestras o plurales enlazadas o de registros de tablas a las que accedemos mediante código.</p>
<p>La facilidad para crear las actualizaciones de tablas lleva implícito un efecto secundario y es que son disparados de forma automática cuando se producen cambios en campos que intervienen en la actualización, algo que es muy agradecido pero que en algunos casos puede resultar un problema. Veamos algunos ejemplos:</p>
<div class="alert alert-warning alert-block">
<h3>Caso A</h3>
<p>Tenemos una tabla con actualizaciones que acumula valores en tablas maestras, pero cuando el alta se produce a través de un proceso de importación, no queremos que se ejecuten dichas actualizaciones porque duplican los valores que ya han sido importados en las tablas maestras.</div>
<div class="alert alert-warning alert-block">
<h3>Caso B</h3>
<p>Tenemos una tabla de movimientos de almacén donde en el trigger posterior al alta, modificación o baja, cada vez que cambia el campo cantidad o precio se fuerza el recálculo &#8220;en cascada&#8221; de todos los registros, desde el modificado hasta el último de ese artículo calculando la existencia y el valor del almacén en cada movimiento. Pero nos gustaría que cuando hacemos cambios globales a todos los registros de un artículo sólo se realizase el cálculo de existencia y valoración de almacén una vez, ya que si se lanza por cada registro el número de veces que es modificado cada registro es el resultado de un cálculo factorial, lo que supone una gran pérdida de rendimiento en la ejecución de estos procesos.</div>
<h2>2. Planteando la solución</h2>
<p>Desde el punto de vista de teórico la solución es muy sencilla. Evitar que se ejecuten los triggers y actualizaciones siempre, y que sólo se ejecuten cuando nosotros lo deseemos.</p>
<p>Desde el punto de vista práctico parece en principio sencillo ya que las actualizaciones tienen una propiedad &#8220;condición&#8221; que permite indicar la fórmula a calcular con la condición que debe cumplirse para su ejecución, y los triggers son código en el podemos también usar sentencias de condición para evitar su ejecución. El problema aún así persiste ya que la condición para que no se ejecuten debe ser dinámica, es decir, no depende de los datos del registro sino que depende de las circunstancias en las que se producen las operaciones de alta, baja o modificación. Es decir, desde ciertos procesos, funciones o formularios sí deben ejecutarse y desde otros no.</p>
<h2>3. Programando la solución</h2>
<p>La solución pasa por conseguir que el registro sea &#8220;consciente&#8221; de si deben o no ejecutarse los triggers y actualizaciones, y que pase esa información a los triggers y actualizaciones para que actúen en consecuencia. Eso lo vamos a conseguir realizando los siguientes pasos:</p>
<ol>
<li>Añadir en la tabla un <strong>campo</strong> booleano, por ejemplo #CAL_ARR (Calcular datos arrastrados).<br />&nbsp;</li>
<li>Añadir en la tabla una <strong>variable local</strong> booleana, por ejemplo #CAL_ARR (Calcular datos arrastrados).<br />&nbsp;</li>
<li>En los triggers anteriores a alta, baja o modificación añadiremos el siguiente código para controlar si el campo booleano llega con el valor 1, en cuyo caso lo que hacemos es poner a 1 la variable local que será la que usemos a partir de este momento para condicionar la ejecución en triggers y actualizaciones, y el campo a 0 para evitar cualquier conflicto con un bucle infinito de actualizaciones en cascada.<br />&nbsp;<img src="http://jarboleya.com/wp-content/uploads/2013/04/Calculo-de-arrastrados-trigger-anterior.jpg" alt="Cálculo de arrastrados - trigger anterior" width="490" height="114" class="aligncenter size-full wp-image-3002" />&nbsp;</li>
<li>Ahora sólo nos queda usar la variable local para controlar los componentes de actualización y el código de los triggers que deseamos ejecutar.<br />&nbsp;<img src="http://jarboleya.com/wp-content/uploads/2013/04/Calculo-arrastrados-trigger-posterior.jpg" alt="Cálculo de arrastrados - trigger posterior" width="557" height="100" class="aligncenter size-full wp-image-3003" /><br />&nbsp;<img src="http://jarboleya.com/wp-content/uploads/2013/04/Calculo-arrastrados-Actualizacion-condicionada.jpg" alt="Cálculo de arrastrados - Actualización condicionada" width="340" height="258" class="aligncenter size-full wp-image-3000" /><br />&nbsp;</li>
<li>Ahora sólo queda que cuando vayas a crear, modificar o eliminar un registro de esta tabla, tanto desde un formulario, como de un manejador de evento, función, proceso, etc. pongas el valor del campo #CAL_ARR a 1 (si deseas que se ejecuten las actualizaciones y los cálculos arrastrados) o dejarlo a 0 (si deseas que no se ejecuten las actualizaciones y los cálculos arrastrados). Es importante que evites poner a 1 el valor de este campo en un trigger pues por error puedes llegar a provocar un bucle infinito o un desbordamiento del stack.<br />&nbsp;</li>
</ol>
<h2>4. Conclusión</h2>
<p>Práctico y sencillo de programar, podrás optimizar tu aplicación para que ejecuten los bucles de actualización de cálculos arrastrados y las actualizaciones el menor número de veces posible, independientemente de que las operaciones en la tabla se lancen desde objetos de interfaz, procesos en primer plano o en el servidor. Desgraciadamente en Velneo 6x no contamos con variables locales a nivel de tabla por lo que no podemos utilizar esta técnica.</p>
<h3>Nota:</h3>
<p>Si tu tabla tiene millones de registros y no te gusta usar un byte para obtener esta funcionalidad también puedes utilizar otro campo de la tabla donde puedas grabar al principio o al final del mismo un carácter o etiqueta que te identifique que se deben ejecutar los arrastrados y las actualizaciones. Por ejemplo, utilizar un campo #REF (Referencia) en el que pondríamos al principio de su contenido el símbolo &#8220;#&#8221;. En el trigger anterior si aparece ese símbolo actualizamos el campo referencia quitándoselo y poniendo a 1 la variable local para ejecutar los arrastrados, de esta forma nos ahorramos un campo.</p>
]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/04/21/pildora-6-actualizaciones-y-arrastrados-con-condicion-dinamica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Píldora 5. Optimiza las altas y modificaciones de registros que tengan muchos campos fórmula o con contenido inicial</title>
		<link>http://jarboleya.com/2013/03/15/pildora-5-optimiza-las-altas-y-modificaciones-de-registros-que-tengan-muchos-campos-formula-o-con-contenido-inicial/</link>
		<comments>http://jarboleya.com/2013/03/15/pildora-5-optimiza-las-altas-y-modificaciones-de-registros-que-tengan-muchos-campos-formula-o-con-contenido-inicial/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 18:55:38 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Píldora]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[altas]]></category>
		<category><![CDATA[campos]]></category>
		<category><![CDATA[contenidos iniciales]]></category>
		<category><![CDATA[fórmulas]]></category>
		<category><![CDATA[importaciones]]></category>
		<category><![CDATA[modifcaciones]]></category>
		<category><![CDATA[optimización]]></category>
		<category><![CDATA[registro]]></category>
		<category><![CDATA[registros]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2891</guid>
		<description><![CDATA[Esta píldora te ayudará si tienes que crear o modificar muchos registros en una tabla que tiene decenas o cientos de campos y, en ese regitro muchos campos fórmula o campos que usan contenidos iniciales con dependencias al contenido de otros campos.]]></description>
				<content:encoded><![CDATA[<p>Esta píldora te ayudará si quieres optimizas las altas y modificaciones de muchos registros en una tabla que tenga decenas o cientos de campos, con muchos campos fórmula o campos que usan contenidos iniciales con dependencias al contenido de otros campos.</p>
<p>Existe una forma sencilla de optimizar esa transacción consiguiendo un importante ahorro de tiempo dependiendo del número de campos y de la complejidad de los contenidos iniciales.</p>
<h3>La tabla donde queremos crear o modificar los registros</h3>
<p>En este ejemplo vamos a usar esta tabla de estadísticas:</p>
<p><img src="http://jarboleya.com/wp-content/uploads/2013/03/Importación-tabla.jpg" alt="Importación tabla" width="442" height="426" class="aligncenter size-full wp-image-2896" /></p>
<p>Los campos fórmula INGRESOS_T1 a INGRESOS_T4 se calculan como la suma de los ingresos de cada trimestre. El campo fórmula INGRESOS_TOT se calcula como la suma de los ingresos de los 4 trimestres.</p>
<p>Por lo tanto cada vez que se cambia el valor del ingreso en un mes se fuerza el cálculo del total del trimestre correspondiente y también del total ingresos.</p>
<p>Y esto mismo ocurriría con los gastos, resultados brutos, y los múltiples cálculos que se suelen realizar en este tipo de tablas.</p>
<h3>Proceso sin optimizar</h3>
<p><img src="http://jarboleya.com/wp-content/uploads/2013/03/Importación-proceso-original.jpg" alt="Importación proceso original" width="602" height="764" class="aligncenter size-full wp-image-2894" /></p>
<p>Tal y como vemos en este proceso y continuando con lo comentado en la tabla, cada vez que modificamos un campo de la tabla estamos forzando el cálculo de múltiples fórmulas que a su vez intervienen en otros contenidos iniciales que también se calculan, y así sucesivamente de forma recursiva.</p>
<p>¿Se puede optimizar de forma sencilla? Sí</p>
<h3>¿Cómo?</h3>
<p>Gracias al uso de dos nuevos comandos de instrucción que aparecieron en la versión 7.12. Con ellos vamos a conseguir modificar todos los campos de la tabla sin que se disparen los contenidos iniciales y cuando hayamos alimentado el valor de todos los campos forzaremos una única vez el cálculo de todos los contenidos iniciales.</p>
<p>A continuación vemos como sería el proceso optimizado:</p>
<p><img src="http://jarboleya.com/wp-content/uploads/2013/03/Importación-proceso-optimizado.jpg" alt="Importación proceso optimizado" width="518" height="380" class="aligncenter size-full wp-image-2901" /></p>
<p>Si te fijas en el proceso verás 2 cambios sutiles respecto al proceso original. Ahora en lugar de utilizar el comando <em>modificar campo</em> usamos el comando <em>modificar campo solamente</em> que no disparará los contenidos iniciales tras modificar el valor de cada campo en el registro. Al finalizar la modificación de los campos se ha añadido el comando <em>Calcula campos dependientes</em> que se encarga de realizar una única vez el cálculo de los contenidos iniciales.</p>
<h3>Otras consideraciones</h3>
<p>Aunque en nuestro ejemplo no tenemos campos con contenidos iniciales y persistencia en disco el utilizar esta técnica nos permitirá evitar que se calculen los campos fórmula con lo que también ahorramos tiempo.</p>
<p>Si durante la modificación de los campos necesitásemos tener realizado en ese momento algún cálculo de fórmulas o basado en contenidos iniciales, siempre podremos ejecutar en ese punto del proceso el comando <em>Calcula campos dependientes</em> que puede ejecutarse cuantas veces sea necesario. Sin embargo, al ser el programador el que decide cuando debe ejecutarse lo optimizará para que se calcule el menor número de veces posible.</p>
<h3>Ahorro de tiempo considerable</h3>
<p>La cantidad de tiempo que ahorrarás usando estos nuevos comandos puede llegar a ser muy notable, por lo que deberías potenciar su uso siempre que sea viable. Recuerda que una aplicación rápida siempre ofrece una mejor experiencia al usuario.</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/03/15/pildora-5-optimiza-las-altas-y-modificaciones-de-registros-que-tengan-muchos-campos-formula-o-con-contenido-inicial/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Píldora 4. Sácale el jugo al control caja de grupo con CSS y JavaScript</title>
		<link>http://jarboleya.com/2013/03/10/pildora-4-sacale-el-jugo-al-control-caja-de-grupo-con-css-y-javascript/</link>
		<comments>http://jarboleya.com/2013/03/10/pildora-4-sacale-el-jugo-al-control-caja-de-grupo-con-css-y-javascript/#comments</comments>
		<pubDate>Sun, 10 Mar 2013 16:41:48 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Píldora]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[caja de grupo]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2759</guid>
		<description><![CDATA[Aplica CSS y JavaScript a las cajas de grupo y conseguirás personalizarlas visual y funcionalmente al máximo nivel. Además, conseguirás funcionalidad extra en tus aplicaciones sacándole el jugo a este control que no debemos olvidar que es un contenedor de controles.]]></description>
				<content:encoded><![CDATA[<h3>Sin personalizar</h3>
<p>El control caja de grupo es un control que nos ayuda a reorganizar la información ubicada en un formulario. vDevelop a través del árbol de propiedades del control nos da acceso a un número limitado de propiedades que nos permite crear controles con este aspecto:</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Píldora-4.-Caja-de-grupo-sin-aplicar-estilo-CSS.png" alt="Píldora 4. Caja de grupo sin aplicar estilo CSS" width="660" height="630" class="aligncenter size-full wp-image-2774" /></p>
<p>En esta píldora vamos como de forma sencilla podemos personalizar el estilo visual de las cajas de grupo así como aprovechar su funcionalidad como contenedor de controles.</p>
<h3>Personalizando el estilo con CSS</h3>
<p>Con este sencillo script CSS vamos a conseguir aplicar a nuestros controles caja de grupo una fuente, tamaño y color específicos, pero además las CSS en V7 permiten aplicar propiedades de los controles y objetos directamente desde la CSS, por eso vemos como cambiamos la alineación del control y lo convertimos en una línea en lugar de una caja, lo que nos permite ahorrar espacio en la interfaz de nuestro formulario.</p>
<pre class="brush: css; title: ; notranslate">
VGroupBox {
    font-family: 'Avenir LT Com 55 Roman';
    font-size: 16px;
    color: black;
    background-color: transparent;
    qproperty-alignment: AlignCenter;
    qproperty-flat: 1;
}
</pre>
<p>Esta CSS puede aplicarse a nivel del marco general de la aplicación <em>AUTOEXEC</em> con lo que esta configuración se aplicaría a todas las cajas de grupos de todos los formularios de la aplicación o, directamente al inicializarse este formulario: señales pre y pos inicializado. En cualquier caso el resultado de aplicar este script CSS es el siguiente:</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Píldora-4.-Caja-de-grupo-aplicado-CSS-general.png" alt="Píldora 4. Caja de grupo aplicado CSS general" width="660" height="630" class="aligncenter size-full wp-image-2777" /></p>
<p>Podemos observar como ambos controles tienen ahora el texto centrado y se pinta como una línea y no como una caja. Es muy importante darse cuenta de que las CSS permiten aplicar propiedades de controles, igual que lo podemos hacer desde JavaScript, utilizando el prefijo <em>qproperty-</em>.</p>
<h3>Personalizando el estilo con CSS a nivel de control</h3>
<p>Si lo que deseamos hacer es que de forma general las cajas de grupos salgan con el texto centrado pero con estilo de caja y sólo para algunos controles específicos aplicar el estilo línea.</p>
<p>Podemos hacerlo aplicando CSS generales, por ejemplo a nivel del marco <em>AUTOEXEC</em> aplicaríamos este CSS:</p>
<pre class="brush: css; title: ; notranslate">
VGroupBox {
    font-family: 'Avenir LT Com 55 Roman';
    font-size: 16px;
    color: black;
    background-color: transparent;
    qproperty-alignment: AlignCenter;
    qproperty-flat: 0;
}
</pre>
<p>Y a nivel de formulario aplicaríamos esta CSS que personaliza de forma concreta el control con el identificador <em>CAJA_GRUPO_2</em> para que se pinte como una línea. Si el siguiente código lo aplicamos a nivel del marco <em>AUTOEXEC</em>, por ejemplo, estaríamos consiguiendo que salgan con estilo línea todas las cajas de grupo de todos los formularios que contengan este control con el identificador <em>CAJA_GRUPO_2</em>.</p>
<pre class="brush: css; title: ; notranslate">
VGroupBox#CAJA_GRUPO_2 {
    qproperty-flat: 1;
}
</pre>
<p>El resultado de aplicar estas CSS sería el siguiente:</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Píldora-4.-Caja-de-grupo-aplicado-CSS-personalizada.png" alt="Píldora 4. Caja de grupo aplicado CSS personalizada" width="660" height="630" class="aligncenter size-full wp-image-2780" /></p>
<p>Como podemos apreciar en la imagen anterior, hemos conseguido mediante CSS que cada caja de grupo tenga un estilo diferente.</p>
<h3>Mostrando el check oculto de las cajas de grupo</h3>
<p>La caja de grupo todavía nos guarda un secreto realmente útil para gestionar los controles de nuestros formularios tal y como indica el nombre del control, &#8220;en grupo&#8221;. Con el siguiente script CSS podemos hacer visible en nuestras cajas de grupo un check, que por defecto se muestra &#8220;marcado o activado&#8221;.</p>
<pre class="brush: css; title: ; notranslate">
VGroupBox {
    font-family: 'Avenir LT Com 55 Roman';
    font-size: 16px;
    color: black;
    background-color: transparent;
    qproperty-alignment: AlignCenter;
    qproperty-flat: 0;
    qproperty-checkable: 1;
}
</pre>
<p>Gracias a aplicar la nueva propiedad <em>checkable</em> conseguimos hacer visible un check en cada caja de grupo, tal y como se muestra en la siguiente imagen:</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Píldora-4.-Caja-de-grupo-aplicado-CSS-con-checkable.png" alt="Píldora 4. Caja de grupo aplicado CSS con checkable" width="660" height="630" class="aligncenter size-full wp-image-2783" /></p>
<p>Lo realmente interesante de estos checks es que funcionan como la propiedad activado/desactivado para la caja de grupo, que como es un contenedor de controles aplica ese estado a todos los controles que contiene. Si el usuario manualmente o de forma programada desactivamos el check conseguiremos desactivar a la vez todos los controles que contiene la caja de grupo.</p>
<h3>Con JavaScript también podemos cambiar el estilo de la caja de grupo</h3>
<p>Podemos utilizar código JavaScript como este que se muestra a continuación para aplicar propiedades como la alineación, el estilo <em>flat</em>, si es o no <em>checkable</em>, etc.</p>
<pre class="brush: jscript; title: ; notranslate">
/* ------------------------------------------------------------
   Control Caja de grupo 1
   ------------------------------------------------------------ */
var controlCajaGrupo1 = theRoot.dataView().control( &quot;CAJA_GRUPO_1&quot; );
if ( controlCajaGrupo1 ) {
	controlCajaGrupo1.alignment = VGroupBox.AlignCenter;
	controlCajaGrupo1.checkable = true;
	controlCajaGrupo1.checked = false;
}

/* ------------------------------------------------------------
   Control Caja de grupo 2
   ------------------------------------------------------------ */
var controlCajaGrupo2 = theRoot.dataView().control( &quot;CAJA_GRUPO_2&quot; );
if ( controlCajaGrupo2 ) {
	controlCajaGrupo2.alignment = VGroupBox.AlignLeft;
	controlCajaGrupo2.checkable = true;
	controlCajaGrupo2.flat = true;
}
</pre>
<p>El resultado obtenido sería el mismo que hemos conseguido con CSS, incluso podemos combinar el script anterior con un script de CSS en el que aplicamos los estilo de fuente, tamaño y colores, dejando el resto de configuración a cargo del script de JavaScript.</p>
<pre class="brush: css; title: ; notranslate">
VGroupBox {
    font-family: 'Avenir LT Com 55 Roman';
    font-size: 16px;
    color: black;
    background-color: transparent;
}
</pre>
<p>Hay que tener en cuenta que también desde JavaScript podemos aplicar hojas de estilo al marco, al formulario o a cualquier control de forma específica.</p>
<p>Si nos fijamos en el código JavaScript anterior hemos aplicado el valor <em>false</em> a la propiedad <em>checked</em> del control <em>CAJA_GRUPO_1</em>. Esto significa que los controles de dicha caja de grupo saldrán por defecto desactivados, como podemos ver en la siguiente imagen. </p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Píldora-4.-Caja-de-grupo-aplicado-CSS-con-checkable-desactivado.png" alt="Píldora 4. Caja de grupo aplicado CSS con checkable desactivado" width="660" height="630" class="aligncenter size-full wp-image-2790" /></p>
<h3>Conclusiones</h3>
<p>Esta claro que tanto CSS como JavaScript son dos poderosos aliados a la hora de personalizar el estilo visual de nuestras aplicaciones, y en el caso del control caja de grupo además nos permite agregarle funcionalidad para activar o desactivar todos los controles contenidos dentro de la caja.</p>
<p>&nbsp;</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/03/10/pildora-4-sacale-el-jugo-al-control-caja-de-grupo-con-css-y-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Píldora 3. Poner como título de un formulario el nombre de la tabla de origen</title>
		<link>http://jarboleya.com/2013/03/09/pildora-3-poner-como-titulo-de-un-formulario-el-nombre-de-la-tabla-de-origen/</link>
		<comments>http://jarboleya.com/2013/03/09/pildora-3-poner-como-titulo-de-un-formulario-el-nombre-de-la-tabla-de-origen/#comments</comments>
		<pubDate>Sat, 09 Mar 2013 08:11:36 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Píldora]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[Formulario]]></category>
		<category><![CDATA[nombre]]></category>
		<category><![CDATA[tabla]]></category>
		<category><![CDATA[título]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2692</guid>
		<description><![CDATA[Ahorra escribir en cada formulario el título manualmente, haz que asuma el nombre singular de la tabla de origen y así evitarás el típico error de copiar un formulario y olvidarte de cambiar el título.]]></description>
				<content:encoded><![CDATA[<p>Cuando programamos es habitual que copiemos un formulario para crear otro nuevo a partir de él. Un típico error es olvidarte de cambiar el título del formulario, algo que detecta con el tiempo el usuario de la aplicación o el tester. Poner el título manualmente también tiene el inconveniente de que si cambiamos el nombre de la tabla se nos puede olvidar repasar los objetos visuales actualizando sus textos.</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Pídora-3.-Ejemplo-de-título-que-asume-el-nombre-de-la-tabla-de-origen-del-formulario.png.jpg" alt="Píldora 3.  Ejemplo de título que asume el nombre de la tabla de origen del formulario.png" width="613" height="215" class="aligncenter size-full wp-image-2745" /></p>
<p>En muchos casos es posible utilizar esta solución rápida y sencilla que te presento y que evita los problemas comentados anteriormente. El código JavaScript que verás a continuación sólo tienes que copiarlo y pegarlo en la fórmula de la propiedad del control u objeto donde quieras que aparezca el texto.</p>
<pre class="brush: jscript; title: ; notranslate">
// Devuelve el nombre de la tabla origen del registro mostrado en el formulario
theRegister.tableInfo().singleName();
</pre>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Píldora-3-Cambiar-el-título-del-formulario-con-el-nombre-de-la-tabla-de-origen.jpg" alt="Píldora 3 - Cambiar el título del formulario con el nombre de la tabla de origen" width="440" height="299" class="aligncenter size-full wp-image-2739" /></p>
<p>&nbsp;</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/03/09/pildora-3-poner-como-titulo-de-un-formulario-el-nombre-de-la-tabla-de-origen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Píldora 2. Hacer dinámico el texto de la barra de título de la ventana</title>
		<link>http://jarboleya.com/2013/03/09/pildora-2-hacer-dinamico-el-texto-de-la-barra-de-titulo-de-la-ventana/</link>
		<comments>http://jarboleya.com/2013/03/09/pildora-2-hacer-dinamico-el-texto-de-la-barra-de-titulo-de-la-ventana/#comments</comments>
		<pubDate>Sat, 09 Mar 2013 08:09:07 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[barra de título]]></category>
		<category><![CDATA[dinámico]]></category>
		<category><![CDATA[Píldora]]></category>
		<category><![CDATA[texto]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2683</guid>
		<description><![CDATA[En esta píldora aprenderás lo sencillo que puede ser cambiar el texto de la barra de título de tu aplicación con contenido dinámico.]]></description>
				<content:encoded><![CDATA[<p>Si queremos cambiar el texto de la barra de título de nuestra aplicación con contenido dinámico, podemos hacerlo de forma sencilla utilizando este pequeño código JavaScript. En el ejemplo el título se formará automáticamente con los siguiente datos:</p>
<ul>
<li>Nombre de la aplicación.</li>
<li>Nº versión.</li>
<li>Nombre de la empresa seleccionada.</li>
<li>Código de la empresa seleccionada.</li>
</ul>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Barra-de-título-de-vBase.jpg" alt="Barra de título de vBase" width="349" height="139" class="aligncenter size-full wp-image-2723" /></p>
<p>Este código pertenece a la <a href="http://velneo.es/velneo-open-app/vbase/" target="_blank">Open App Velneo vBase</a> que al arrancar se encarga de solicitar al usuario que seleccione la empresa de trabajo, en caso de tener varias o asume la empresa automáticamente si sólo tiene una asignada. El nombre y el código de la empresa seleccionada del usuario se guarda en dos variable globales en memoria, que son las que el código JavaScript se encarga de leer para concatenar su contenido en el texto de la barra de título.</p>
<p>También podemos ver como utilizando la clase theApp.sysInfo() se lee el nombre y versión de la aplicación, de esta manera este código es válido para cualquiera de nuestra aplicaciones.</p>
<pre class="brush: jscript; title: ; notranslate">
/* --------------------------------------------------------------------------------
   Cambiar el título de la ventana
   -------------------------------------------------------------------------------- */
var systemInfo = theApp.sysInfo();

theMainWindow.setTitle( &quot;&quot; + theApp.mainProjectInfo().name() +
    &quot; &quot; + theApp.mainProjectInfo().version() + 
    &quot; - &quot; + theApp.globalVarToString(&quot;velneo_vbaseEntidades_dat/EMP_NOM&quot;)  + 
    &quot; (&quot; + theApp.globalVarToString(&quot;velneo_vbaseEntidades_dat/EMP_ID&quot;) + &quot;)&quot; );
</pre>
<p>Este código puedes ejecutarlo desde un proceso JavaScript o desde un manejador de evento JavaScript del objeto marco &#8220;AUTOEXEC&#8221; de tu aplicación.</p>
<p>&nbsp;</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/03/09/pildora-2-hacer-dinamico-el-texto-de-la-barra-de-titulo-de-la-ventana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Píldora 1. Botón aceptar y seguir en cuadros de diálogo</title>
		<link>http://jarboleya.com/2013/03/09/pildora-1-boton-aceptar-y-seguir-en-cuadros-de-dialogo/</link>
		<comments>http://jarboleya.com/2013/03/09/pildora-1-boton-aceptar-y-seguir-en-cuadros-de-dialogo/#comments</comments>
		<pubDate>Sat, 09 Mar 2013 07:40:27 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Píldora]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[aceptar y seguir]]></category>
		<category><![CDATA[Formulario]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2603</guid>
		<description><![CDATA[En un formulario mostrado en cuadro de diálogo es muy sencillo poner un botón que permita dar alta y seguir grabando de forma continua nuevos registros. Mira esta píldora y aprende a hacerlo en 3 sencillos pasos.]]></description>
				<content:encoded><![CDATA[<p>Si en un formulario que tenga el valor &#8220;verdadero&#8221; en la propiedad &#8220;Siempre en cuadro de diálogo&#8221; deseamos poner un botón que sirva para dar el alta del registro y mostrar el formulario vacío para continuar dando altas, podemos hacerlo de forma sencilla en sólo 3 pasos.</p>
<p>1. Creamos el botón aceptar y seguir.</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/formulario-botón-aceptar-y-seguir.jpg" alt="formulario botón aceptar y seguir" width="625" height="574" class="aligncenter size-full wp-image-2709" /></p>
<p>2. Al botón le asignamos el comando &#8220;Ejecutar manejador de evento&#8221; y creamos y asignamos el manejador de evento JavaScript <strong>ACE_SEG</strong>.</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Comando-ejecutar-manejador-de-evento-ACE_SEG.jpg" alt="Comando ejecutar manejador de evento ACE_SEG" width="426" height="71" class="aligncenter size-full wp-image-3027" /></p>
<p>3. Escribimos el siguiente código en el manejador de evento <strong>ACE_SEG</strong>.</p>
<pre class="brush: jscript; title: ; notranslate">
// Aceptar y seguir dando altas
var formulario = theRoot.dataView();
formulario.acceptNoClose();
</pre>
<h3>¿Y si quiero hacer verificaciones antes de aceptar y seguir?</h3>
<p>En este caso, también de forma sencilla, haremos lo siguiente:</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Comando-ejecutar-manejador-de-evento-VRF.jpg" alt="Comando ejecutar manejador de evento VRF" width="426" height="71" class="aligncenter size-full wp-image-3029" /></p>
<p>1. El botón Aceptar y seguir ejecutará un manejador de evento V7 que podemos llamar <strong>VRF</strong>, por ejemplo. En ese evento se realizarán las comprobaciones oportunas mostrando mensajes de error y posicionando el cursor en el campo erróneo si así se desea.</p>
<p align="center"><img src="http://jarboleya.com/wp-content/uploads/2013/03/Manejador-de-evento-VRF.jpg" alt="Manejador de evento VRF" width="526" height="286" class="aligncenter size-full wp-image-3030" /></p>
<p>2. Si tras finalizar las verificaciones todo está correcto, simplemente ejecutamos el manejador de evento <strong>ACE_SEG</strong> con el comando de instrucción V7 &#8220;Ejecutar manejador de evento&#8221;.</p>
<p>&nbsp;</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/03/09/pildora-1-boton-aceptar-y-seguir-en-cuadros-de-dialogo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BPV7 &#8211; Pon buenos nombres, alias e identificadores</title>
		<link>http://jarboleya.com/2013/02/20/bpv7-pon-buenos-nombres-alias-e-identificadores/</link>
		<comments>http://jarboleya.com/2013/02/20/bpv7-pon-buenos-nombres-alias-e-identificadores/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 14:45:29 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[Buenas prácticas]]></category>
		<category><![CDATA[Edición]]></category>
		<category><![CDATA[Formación]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[alias identificadores]]></category>
		<category><![CDATA[nombres]]></category>
		<category><![CDATA[tutor]]></category>
		<category><![CDATA[vídeo]]></category>
		<category><![CDATA[videotutorial]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2576</guid>
		<description><![CDATA[<span class="badge">EDICION</span> <span class="badge badge-info">BASICO</span> En este videotutorial se repasan los errores que debemos intentar evitar al poner los nombres, alias e identificadores en nuestras aplicaciones. Se explican los conceptos a tener en cuenta, se dan recomendaciones y finalmente se repasan ejemplos de nombres, alias e identificadores que se pueden considerar correctos o incorrectos y por qué.]]></description>
				<content:encoded><![CDATA[<p><span class="badge">EDICION</span> <span class="badge badge-info">BASICO</span></p>
<p>En este videotutorial se repasan los errores que debemos intentar evitar al poner los nombres, alias e identificadores en nuestras aplicaciones. Se explican los conceptos a tener en cuenta, se dan recomendaciones y finalmente se repasan ejemplos de nombres, alias e identificadores que se pueden considerar correctos o incorrectos y por qué.</p>
<p align="center"><iframe width="853" height="480" src="http://www.youtube.com/embed/UVi-FdfRnJ0?autoplay=1" frameborder="0" allowfullscreen></iframe></p>
<h3>Nota adicional para los alias</h3>
<p>Es importante que los alias sean únicos para evitar conflictos tanto con nuestro código como cuando utilizamos código de terceros. Es muy recomendable añadir en el alias un prefijo o un sufijo &#8220;único&#8221; que sea nuestra marca de programador o empresa de desarrollo.</p>
<p>Ejemplos que podemos considerar correctos son velneo_myERP_app o greatSoft_CRM_dat, siendo velneo y greatSoft el prefijo que nos debería identificar de forma única en todos nuestros alias. No es conveniente usar como prefijo una letra, por ejemplo v_ERP_app o w_ERP_app ya que es muy probable que se puedan repetir.</p>
<p>&nbsp;</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/02/20/bpv7-pon-buenos-nombres-alias-e-identificadores/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lanzada la nueva versión 7.12 de Velneo V7</title>
		<link>http://jarboleya.com/2013/02/19/lanzada-la-nueva-version-7-12-de-velneo-v7/</link>
		<comments>http://jarboleya.com/2013/02/19/lanzada-la-nueva-version-7-12-de-velneo-v7/#comments</comments>
		<pubDate>Tue, 19 Feb 2013 17:53:06 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[aplicaciones]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Formación]]></category>
		<category><![CDATA[Open Apps]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[7.12]]></category>
		<category><![CDATA[formularios de extensión]]></category>
		<category><![CDATA[impresionantes]]></category>
		<category><![CDATA[índices complejos]]></category>
		<category><![CDATA[informes externos]]></category>
		<category><![CDATA[informes personalizables]]></category>
		<category><![CDATA[novedades]]></category>
		<category><![CDATA[nueva versión]]></category>
		<category><![CDATA[plataforma desarrollo]]></category>
		<category><![CDATA[tablas de extensión]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2552</guid>
		<description><![CDATA[Hoy Velneo ha lanzado su nueva versión 7.12 de Velneo V7 cargada de novedades realmente impresionantes. Esta versión ha venido rodeada de otras novedades importantes como la nueva portada de la web que estrena un nuevo vídeo de presentación para que se pueda conocer qué es Velneo en un minuto.]]></description>
				<content:encoded><![CDATA[<p>Hoy Velneo ha lanzado su nueva versión 7.12 de Velneo V7 cargada de novedades realmente impresionantes. Esta versión ha venido rodeada de otras novedades importantes como la nueva portada de la web que estrena un nuevo vídeo de presentación para que se pueda conocer qué es Velneo en un minuto.</p>
<p align="center"><iframe width="640" height="360" src="http://www.youtube.com/embed/eacAOhE-3gI" frameborder="0" allowfullscreen></iframe></p>
<p>Aquí tienes el documento con la <a href="http://velneo.es/listado-de-novedades-velneo-v7-7-12/" target="_blank">lista completa de novedades</a> de esta versión ¡Cargadita! de novedades realmente impresionante que aportan al programador nuevas herramientas como las tablas de extensión, los índices complejos, los formularios de extensión, los informes externos personalizables por el usuario final, y un largo etc. que nos permite a los desarrolladores abordar proyectos más avanzados de forma sencilla y rentable.</p>
<p><a href="http://velneo.es/listado-de-novedades-velneo-v7-7-12/" target="_blank"><img src="http://jarboleya.com/wp-content/uploads/2013/02/Listado-de-novedades-Velneo-V7-7.12.jpg" alt="Listado de novedades Velneo V7 7.12" width="640" height="501" class="aligncenter size-full wp-image-2557" /></a></p>
<p>Otra novedad que nos ayudará en el desarrollo de informes avanzados y personalizables por el cliente final es la nueva <a href="http://velneo.es/velneo-open-app/velneo-vreport/" target="_blank">Open App vReport</a>.</p>
<p><a href="http://velneo.es/velneo-open-app/velneo-vreport/" target="_blank"><img src="http://jarboleya.com/wp-content/uploads/2013/02/Velneo-Open-Apps-vReport.jpg" alt="Velneo Open Apps - vReport" width="640" height="196" class="aligncenter size-full wp-image-2559" /></a></p>
<p>Si quieres aprender a programar o si ya eres clientes y quieres mejorar tus conocimientos sobre la plataforma Velneo ha publicado una nueva <a href="http://velneo.es/info/velneo-v7/como-empezar/videotutoriales/" target="_blank">página de videotutoriales</a> con 20 vídeos gratuitos para que aprendas a programar con Velneo V7 y 43 vídeos para suscriptores que deseen adquirir conocimientos más avanzados.</p>
<p><a href="http://velneo.es/info/velneo-v7/como-empezar/videotutoriales/" target="_blank"><img src="http://jarboleya.com/wp-content/uploads/2013/02/Nueva-página-de-videoturiales.jpg" alt="Nueva página de videoturiales" width="640" height="537" class="aligncenter size-full wp-image-2560" /></a></p>
<p>Si quieres comenzar a programar <a href="http://velneo.es/" target="_blank">aquí</a> puedes conseguir tu versión gratuita. ¡No dejes de conocer Velneo V7, seguro que te sorprenderá!</p>
<p>&nbsp;</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/02/19/lanzada-la-nueva-version-7-12-de-velneo-v7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo ganar dinero trabajando en casa</title>
		<link>http://jarboleya.com/2013/02/17/como-ganar-dinero-trabajando-en-casa/</link>
		<comments>http://jarboleya.com/2013/02/17/como-ganar-dinero-trabajando-en-casa/#comments</comments>
		<pubDate>Sun, 17 Feb 2013 18:03:38 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2539</guid>
		<description><![CDATA[Tanto si estás sin trabajo como si crees que tienes algo que contar te animo a que intentes aprovechar esta oportunidad de la formación online, porque como siempre ocurre, esta oportunidad tiene una caducidad temporal y no estará aquí dentro de 5 años, así que piensa si quieres ser un pionero de la formación online y ganar dinero trabajando en casa.]]></description>
				<content:encoded><![CDATA[<p>Puede que este título te suene a publicidad, pero realmente de eso trata este artículo. Acabo de terminar un curso online titulado <a href="https://www.udemy.com/aprende-a-crear-un-curso-online/" target="_blank">Aprende a crear un curso online</a> de <a href="http://grumomedia.es/equipo/" target="_blank">Miguel Hernández</a> fundador y director creativo de <a href="http://grumomedia.es/" target="_blank">Grumo Media</a>.</p>
<p align="center"><a href="https://www.udemy.com/aprende-a-crear-un-curso-online/" target="_blank"><img src="http://jarboleya.com/wp-content/uploads/2013/02/aprende-a-crear-un-curso-online.jpg" alt="aprende a crear un curso online" width="427" height="255" class="aligncenter size-full wp-image-2543" /></a></p>
<p>He realizado este curso desde la plataforma udemy y la mayoría de los vídeos los he visto de el iPad lo que me ha resultado muy cómodo gracias a una buena experiencia de usuario. Te puedo garantizar que el curso se te hace corto ya que Miguel es un gran comunicador y hace que sus vídeos sean realmente fáciles de seguir y amenos.</p>
<p>Te recomiendo el curso porque te servirá para aprender a preparar, planificar, grabar, producir, publicar, promocionar y vender un curso online, pero sobre todo por que te abrirá los ojos a un nuevo mercado que está en estos momentos en plena ebullición como es el de la formación online.</p>
<p>Todos tenemos conocimiento de temas relacionados con nuestros estudios, nuestra profesión o nuestros hobbies. No tengas la menor duda de que cualquier conocimiento bien contado y publicado en un curso puede resultar de interés para otras personas. Lógicamente, en función del tipo de contenido habrá mayor interés, pero también es cierto que cuanto mayor sea ese interés mayor competencia encontrarás. No te olvides de los millones de usuarios que hay en Internet.</p>
<p>Lo mejor de todo es que siguiendo las recomendaciones del curso podrás crear el tuyo y comercializarlo siguiendo unos pasos realmente sencillos. Lo mejor de todo es que como se indica en el título podrás hacerlo en tu casa, sin gastarte un montón de dinero, la inversión puede ser mínima y en algún caso nula.</p>
<p>Conocí el curso a través de udemy y posteriormente me pasaron un enlace a un artículo del blog de <a href="http://davidcantone.com/video-explicativo/" target="_blank">David Cantone</a> donde puedes escuchar la entrevista que David le hace a Miguel. Su historia es realmente interesante, otra más donde se demuestra que con espíritu emprendedor y esfuerzo se pueden conseguir metas difíciles de imaginar. Si compras el curso a través del enlace que encontrarás en el blog de David Cantone podrás ahorrarte un 39% (Si eres de los 100 primeros afortunados en comprarlo).</p>
<p>Tanto si estás sin trabajo como si crees que tienes algo que contar te animo a que intentes aprovechar esta oportunidad de la formación online, porque como siempre ocurre, esta oportunidad tiene una caducidad temporal y no estará aquí dentro de 5 años, así que piensa si quieres ser un pionero de la formación online y ganar dinero trabajando en casa.</p>
<p>Aquí te dejo el vídeo promocional del curso.</p>
<p align="center"><iframe width="853" height="480" src="http://www.youtube.com/embed/Wn_4up1PJz4" frameborder="0" allowfullscreen></iframe></p>
<p>&nbsp;</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/02/17/como-ganar-dinero-trabajando-en-casa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BPV7 &#8211; De y para la comunidad</title>
		<link>http://jarboleya.com/2013/02/09/buenas-practicas-con-velneo-v7-de-y-para-la-comunidad/</link>
		<comments>http://jarboleya.com/2013/02/09/buenas-practicas-con-velneo-v7-de-y-para-la-comunidad/#comments</comments>
		<pubDate>Sat, 09 Feb 2013 20:27:29 +0000</pubDate>
		<dc:creator>jarboleya</dc:creator>
				<category><![CDATA[Buenas prácticas]]></category>
		<category><![CDATA[Comunidad]]></category>
		<category><![CDATA[conocimiento]]></category>
		<category><![CDATA[Formación]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[Velneo V7]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[colaboración]]></category>
		<category><![CDATA[comunidad]]></category>
		<category><![CDATA[formación]]></category>
		<category><![CDATA[vídeo tutoriales]]></category>

		<guid isPermaLink="false">http://jarboleya.com/?p=2399</guid>
		<description><![CDATA[El objetivo de estos artículos es, simplemente, compartir conocimiento con la comunidad de desarrolladores y aportar mi granito de arena que pueda ayudar tanto a los que llegan nuevos a Velneo como a aquellos que ya están programando con esta maravillosa plataforma.]]></description>
				<content:encoded><![CDATA[<p><img src="http://jarboleya.com/wp-content/uploads/2013/02/Buenas-prácticas-con-Velneo-V7.jpg" alt="Buenas prácticas con Velneo V7" width="653" height="373" class="aligncenter size-full wp-image-2394" /></p>
<p>He comenzado a publicar recientemente en mi blog artículos denominados <a href="http://jarboleya.com/category/buenas-practicas/" target="_blank">Buenas prácticas con Velneo V7 (BPV7)</a>. Se trata de una serie de publicaciones que hago a título personal como un miembro más de la comunidad, no como miembro del equipo de Velneo, por lo tanto son fruto del tiempo que le dedico en mis ratos libres y por hobby.</p>
<h3>Píldoras</h3>
<p>Estos artículos no forman parte de un curso de formación, de eso ya se ocupa Velneo entregando buenos recursos en vídeo y realizando cursos on-line y presenciales.</p>
<p>El objetivo de estos artículos es compartir conocimiento con la comunidad de desarrolladores y aportar mi granito de arena que pueda ayudar tanto a los que llegan nuevos a Velneo como a aquellos que ya están programando con esta maravillosa plataforma.</p>
<h3>Para todos los públicos</h3>
<p>Como el público objetivo puede tener cualquier nivel de conocimiento sobre Velneo, los artículos también son de dificultad diversa y estarán catalogados en 3 niveles: <span class="badge badge-info">BASICO</span> <span class="badge badge-warning">MEDIO</span> y <span class="badge badge-important">AVANZADO</span>, dependiendo del nivel de conocimiento requerido para la compresión del vídeo tutorial. Como no son parte de un curso, sólo tratan en profundidad el tema a desarrollar en el artículo y se parte de la base de que debe existir un conocimiento previo mínimo que varía según el nivel de dificultad del vídeo tutorial.</p>
<h3>Vídeos</h3>
<p>Durante tiempo he estado pensando en escribir un libro conteniendo esta información, sin embargo, desde hace muchos años tengo gran fé en la capacidad que tiene el vídeo para transmitir el conocimiento. Considero que un vídeo tutorial es más rápido de ver y aporta más conocimiento ya que deja menos margen para la imaginación, algo que creo es positivo en esta fase de aprendizaje, además aportan información por 2 sentidos en paralelo, vista y oído. Así que como usuario habitual de vídeo tutoriales, finalmente me he decidido por hacer estos artículos en vídeo, el libro puede esperar.</p>
<p>Aunque, por los pocos vídeo tutoriales que están publicados, pueda parecer que tratan temas de forma deslavazada, la realidad es que tengo un guión de trabajo donde tengo anotados un buen número de buenas prácticas organizadas en los siguientes grupos: <span class="badge">API+JAVASCRIPT</span> <span class="badge">BASE DE DATOS</span> <span class="badge"> CONCEPTOS</span> <span class="badge">EDICION</span> <span class="badge">FUNCIONALIDAD</span> <span class="badge">INTERFAZ</span> <span class="badge">OPTIMIZACION</span> y <span class="badge">VBASE</span>. He preferido alternar la publicación de vídeo tutoriales de todas las categorías en lugar de abordar una de forma completa hasta terminarla, creo que así es más fácil ayudar a más miembros de la comunidad en el tiempo.</p>
<h3>Recomendaciones</h3>
<p>Como es el resultado del tiempo libre que le dedique no hay ningún compromiso de periodicidad para su publicación, pero sí me gustaría que vayan apareciendo de forma más o menos constante a lo largo de las semanas. Por lo tanto esta serie de vídeo tutoriales no tiene un número establecido donde terminar y evolucionará en función de las circunstancias.</p>
<p>Estos vídeo tutoriales sobre buenas prácticas con Velneo V7 deben entenderse como patrones de trabajo con los que podemos obtener buenos resultados en nuestras aplicaciones. Por lo tanto no será objetivo de estos artículos cubrir lagunas formativas, y si lo será aportar experiencia sobre análisis, programación y conocimiento acerca de la plataforma para sacarle el mejor partido a nuestro tiempo de desarrollo. Deben verse como meras recomendaciones y no tomarlos como dogmas de programación, ya que todos los desarrolladores sabemos que cualquier técnica, criterio o práctica siempre tendrá pros y contras.</p>
<p><img src="http://jarboleya.com/wp-content/uploads/2013/02/logoCPVV.gif" alt="logoCPVV" width="100" height="80" class="aligncenter size-full wp-image-2407" /></p>
<h3>Ayuda de la comunidad</h3>
<p>Me gustaría que este no sea sólo un trabajo personal, por propia experiencia sé que estos proyectos obtienen grandes resultados cuando se implican otros miembros de la comunidad, como ya ocurrió en Informática 21 con la página de <a href="http://www.informatica21.net/web/index.pro" target="_blank">Trucos y Astucias para programar con Velázquez Visual</a>. Seguro que muchos recordarán las aportaciones que hizo la comunidad y donde me gustaría tener un recuerdo especial para Juan Figueroa que diseñó el logo de la página, que podemos ver encima de este párrafo, en enconada disputa con Mario Conde y para Fran de F1 que hizo numerosas aportaciones mucho antes de hacerse famoso en el blog de 6x y otros muchos que no nombro para no dejarme a nadie en el tintero. Gracias a todos por aquella bonita época.</p>
<p>Por este motivo me gustaría que todo aquel que quiera aportar ideas, conocimiento o feedback tenga la amabilidad de contactar conmigo a través del correo <a href="mailto:logicamente.velneo@gmail.com">logicamente.velneo@gmail.com</a> o dejando comentarios en los post de estos artículos o en youtube donde los vídeo tutoriales están agrupados en una la <a href="https://www.youtube.com/playlist?list=PLfp3IrsXal0dwLC22-BczI_mjVE-B5XKm" target="_blank">lista de reproducción</a> a la que te puedes suscribir.</p>
<p>&nbsp;</p>
<h4>Si te ha gustado este artículo, por favor compártelo con los tuyos en las redes sociales</h4>

]]></content:encoded>
			<wfw:commentRss>http://jarboleya.com/2013/02/09/buenas-practicas-con-velneo-v7-de-y-para-la-comunidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
