<?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>www.enriquelamastrujillo.com &#187; informática</title>
	<atom:link href="http://www.enriquelamastrujillo.com/blog/tag/informatica/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.enriquelamastrujillo.com/blog</link>
	<description>Otro sitio creado con WordPress</description>
	<lastBuildDate>Fri, 27 Feb 2026 20:20:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Maven: 07 &#8211; Trabajando en jares que no están en repositorios</title>
		<link>http://www.enriquelamastrujillo.com/blog/2016/06/02/maven-07-trabajando-en-jares-que-no-estan-en-repositorios/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2016/06/02/maven-07-trabajando-en-jares-que-no-estan-en-repositorios/#comments</comments>
		<pubDate>Thu, 02 Jun 2016 15:02:12 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=1096</guid>
		<description><![CDATA[A veces se da el caso de que tienes un jar que no es tuyo y que no está en ningún repositorio. Lo que hay que hacer en este caso es instalarlo a mano por línea de comandos. Éste es el único caso que he encontrado necesario instalarse el maven, aunque incluso puede que se [...]]]></description>
			<content:encoded><![CDATA[<p>A veces se da el caso de que tienes un jar que no es tuyo y que no está en ningún repositorio. Lo que hay que hacer en este caso es instalarlo a mano por línea de comandos. Éste es el único caso que he encontrado necesario instalarse el maven, aunque incluso puede que se pueda hacer con el maven que trae el eclipse, no lo he probado.</p>
<p><b>Para instalar el jar en tu repositorio local:</b><br />
[maven-home]/mvn install:install-file -Dfile=XXXX -DgroupId=XXXX -DartifactId=XXXX -Dversion=XXXX -Dpackaging=jar<br />
Donde en Dfile hay que poner la ruta al jar.</p>
<p><b>Para instalar en el repositorio interno privado</b> (ver <a href="/blog/2016/05/20/maven-02-conceptos/">Maven: 02 – Conceptos</a>):<br />
[maven-home]/mvn deploy:deploy-file -Dfile=XXXX -DgroupId=XXXX -DartifactId=XXXX -Dversion=XXXX -Dpackaging=jar -DrepositoryId=release-repository -Durl=ftp://XXXX/maven-repository-release</p>
<p>Donde -DrepositoryId debe coincidir con el correspondiente en el C:\Users\pepe\.m2\settings.xml y -Durl debe ser la url del repositorio.</p>
<p>Para ejecutar este último comando me encontré con varios problemas para los cuales me fue difícil encontrar la solución porque no daba errores descriptivos.<br />
Tuve que copiar a mano estos dos jares:</p>
<ul>
<li>C:\Users\pepe\.m2\repository\org\apache\maven\wagon\wagon-ftp\2.10\wagon-ftp-2.10.jar a [maven-home]/lib</li>
<li>C:\Users\pepe\.m2\repository\commons-net\commons-net\3.1\commons-net-3.1.jar a [maven-home]/lib</li>
</ul>
<p>Si no tuvieras el commons-net-3.1.jar (u otras versiones supongo que valdrán) la tendrás que conseguir, yo la tenía porque la había usado como dependencia de algúnn proyecto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2016/06/02/maven-07-trabajando-en-jares-que-no-estan-en-repositorios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven: 06 &#8211; Trabajando en línea de comandos</title>
		<link>http://www.enriquelamastrujillo.com/blog/2016/05/26/maven-06-trabajando-en-linea-de-comandos/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2016/05/26/maven-06-trabajando-en-linea-de-comandos/#comments</comments>
		<pubDate>Thu, 26 May 2016 15:54:23 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=1093</guid>
		<description><![CDATA[Como he comentado en el artículo &#8220;Maven: 05 – Trabajando con eclipse&#8221;, si vas a trabajar con eclipse no necesitas bajarte el maven por tu cuenta ni ejecutar comandos en línea de comandos (salvo un caso que comentaré en un artículo posterior). Pero de todas formas voy a explicar cómo se hace en línea de [...]]]></description>
			<content:encoded><![CDATA[<p>Como he comentado en el artículo <a href="/blog/2016/05/26/maven-05-trabajando-con-eclipse/">&#8220;Maven: 05 – Trabajando con eclipse&#8221;</a>, si vas a trabajar con eclipse no necesitas bajarte el maven por tu cuenta ni ejecutar comandos en línea de comandos (salvo un caso que comentaré en un artículo posterior). Pero de todas formas voy a explicar cómo se hace en línea de comandos cada paso del flujo (ver <a href="/blog/2016/05/23/maven-03-flujo-de-trabajo/">&#8220;Maven: 03 – Flujo de trabajo&#8221;</a>)</p>
<p>Instalar el Maven no es más que bajárselo de https://maven.apache.org/download.cgi y descomprimirlo a una carpeta.<br />
Como no me gusta tocar el JAVA_HOME ni el PATH, ya que puede afectar a otras aplicaciones, lo único que hice fue definir el JAVA_HOME en el mvn.cmd con<br />
set JAVA_HOME=C:/PROGRA~1/Java/jdk1.8.0_65<br />
Y los comandos los ejecuto con la ruta completa.<br />
Por [maven_home] entiendo hasta la carpeta bin de lo que has descomprimido. Si tú has tocado el path ejecutarás el comando sin poner toda la ruta.</p>
<p><b>Para comprobar que funciona:</b><br />
[maven_home]/mvn &#8211;version</p>
<p><b>Para crear un proyecto:</b></p>
<ul>
<li>creas la carpeta</li>
<li>te metes dentro</li>
<li>ejecutas [maven_home]/mvn archetype:generate</li>
<li>respondes a las preguntas, entre ellas el id de archetype, que por lo que he visto la webapp-archetype (o la que tú quieras) no tiene siempre el mismo número, hay que buscar el número que le corresponde entre todo el texto que te habrá sacado la consola.</li>
</ul>
<p>Con eso ya se crea la estructura básica del proyecto.</p>
<p>Una vez que has creado los java sigues con las fases del flujo.<br />
Todos estos comandos debes ejecutarlos dentro del directorio que te ha creado con el nombre del artifact-id.</p>
<p><b>Para compilar:</b><br />
[maven_home]/mvn compile</p>
<p><b>Instalar en tu repositorio local:</b><br />
[maven_home]/mvn install</p>
<p><b>Deploy (instalar en los repositorios privados, ver <a href="/blog/2016/05/20/maven-02-conceptos/">&#8220;Maven: 02 – Conceptos&#8221;</a>):</b><br />
[maven_home]/mvn deploy</p>
<p><b>Si tu proyecto genera un war</b> y lo quieres probar en el tomcat debes hacer el war con un package:<br />
[maven_home]/mvn package<br />
Y después copias el war del directorio target al webapps del tomcat. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2016/05/26/maven-06-trabajando-en-linea-de-comandos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven: 05 &#8211; Trabajando con eclipse</title>
		<link>http://www.enriquelamastrujillo.com/blog/2016/05/26/maven-05-trabajando-con-eclipse/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2016/05/26/maven-05-trabajando-con-eclipse/#comments</comments>
		<pubDate>Thu, 26 May 2016 14:19:33 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=1087</guid>
		<description><![CDATA[Para probar todo esto en eclipse me he bajado el primero que viene en http://www.eclipse.org/downloads/ que pone &#8220;Eclipse IDE for Java EE Developers&#8221;. Actualmente es el eclipse-jee-mars-2-win32-x86_64.
Me arranca sin problemas ejecutando el exe. Si a alguien no le arranca puede ser porque tenga definida la variable de entorno JAVA_HOME apuntando a un jdk antiguo. Creo [...]]]></description>
			<content:encoded><![CDATA[<p>Para probar todo esto en eclipse me he bajado el primero que viene en <a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a> que pone &#8220;Eclipse IDE for Java EE Developers&#8221;. Actualmente es el eclipse-jee-mars-2-win32-x86_64.<br />
Me arranca sin problemas ejecutando el exe. Si a alguien no le arranca puede ser porque tenga definida la variable de entorno JAVA_HOME apuntando a un jdk antiguo. Creo que se necesita el 1.7 mínimo. Si no lo tienes instálatelo y si no quieres cambiar la variable JAVA_HOME la puedes especificar en el eclipse.ini.</p>
<p>Eclipse trae su propio maven, no necesitas instalar el maven por tu cuenta.</p>
<p><b>Los proyectos nuevos los creo así</b>, aunque se pueden crear en el workspace:</p>
<ul>
<li>Creo la carpeta donde va estar el proyecto, por ejemplo &#8220;miproyecto&#8221;</li>
<li>y en el eclipse voy haciendo lo siguiente</li>
</ul>
<p><img src="/img/blog/new-project1.jpg" width="500" height="482"/></p>
<p><img src="/img/blog/new-project2.jpg" width="500" height="452"/></p>
<p><img src="/img/blog/new-project3.jpg" width="500" height="452"/></p>
<p><img src="/img/blog/new-project4.jpg" width="500" height="452"/></p>
<p>Con esto ya tengo el proyecto, <b>ahora creo por ejemplo un package y una clase dentro de la carpeta java</b>.</p>
<p><img src="/img/blog/new-package1.jpg" width="500" height="456"/></p>
<p><img src="/img/blog/new-package2.jpg" width="500" height="412"/></p>
<p><img src="/img/blog/new-class1.jpg" width="500" height="454"/></p>
<p><img src="/img/blog/new-class2.jpg" width="500" height="588"/></p>
<p>Ahora vamos a ver cómo hago las fases que expliqué en el post <a href="/blog/2016/05/23/maven-03-flujo-de-trabajo/">Maven: 03 – Flujo de trabajo&#8221;</a></p>
<p><b>Para compilar no hace falta hacer nada</b> puesto que por defecto el eclipse va a compilar las clases de forma automática al guardar una modificación, pero puedes forzarlo con un &#8220;Proyect &#8211; clean&#8221;</p>
<p><b>Install:</b></p>
<p><img src="/img/blog/maven-install.jpg" width="500" height="458"/></p>
<p>Realmente creo que si tienes todos los proyectos configurados en el eclipse no es necesario que ejecutes un install para que se genere en tu repositorio local, siempre que desde otro proyecto vayas a usar la última versión, ya que el eclipse detectará que lo tienes en el eclipse y en vez de usar las clases que haya en el repositorio local lo que hará será &#8220;linkar&#8221; a las clases del proyecto dependiente.<br />
Me explico:<br />
Supongamos que el proyecto A tiene como dependencia al protecto B, es decir, el proyecto A usa las clases del proyecto B.<br />
Pues bien, si la versión actual del proyecto B es la 2.0 y en el proyecto A quieres usar esa versión, no haría falta que hagas un install del proyecto B, puesto que si tienes ambos proyectos en el eclipse, lo que hará éste será linkar en el proyecto A las clases del proyecto B.<br />
Pero sin embargo si en el proyecto A quieres usar la versión 1.1 del proyecto B sí que tenías que haber hecho un install del proyecto B con esa versión (cosa que probablemente hayas hecho porque habrás hecho un deploy de la 1.1 y al hacer un deploy se hace también un install).</p>
<p><b>Deploy:</b></p>
<p><img src="/img/blog/maven-deploy1.jpg" width="500" height="459"/></p>
<p><img src="/img/blog/maven-deploy2.jpg" width="500" height="627"/></p>
<p>Con esto publicas el snapshot o el release en los repositorios internos privados (Ver <a href="/blog/2016/05/20/maven-02-conceptos/">Maven: 02 – Conceptos</a>) para que los pueda usar otro programador.</p>
<p><b>Package:</b></p>
<p>Si tu proyecto genera un war y lo quieres probar en el tomcat debes hacer el war con un package</p>
<p><img src="/img/blog/maven-deploy1.jpg" width="500" height="459"/></p>
<p><img src="/img/blog/maven-package.jpg" width="500" height="627"/></p>
<p>Y después copiar el war del directorio target al webapps del tomcat.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2016/05/26/maven-05-trabajando-con-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven: 04 &#8211; pom.xml</title>
		<link>http://www.enriquelamastrujillo.com/blog/2016/05/23/maven-04-pom-xml/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2016/05/23/maven-04-pom-xml/#comments</comments>
		<pubDate>Mon, 23 May 2016 16:06:28 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=1079</guid>
		<description><![CDATA[Comento un poco por encima lo que va en el pom.xml

groupId y artifactId:

groupId es una manera de agrupar tus proyectos dentro de los repositorios, pero no es más que una cosa lógica. artifactId es más el proyecto. Por ejemplo puedes poner los dos iguales

&#60;groupId&#62;com.tudominio.miproyecto&#60;/groupId&#62;
&#60;artifactId&#62;com.tudominio.miproyecto&#60;/artifactId&#62;

O el mismo groupId para varios de tus proyectos, por ejemplo

&#60;groupId&#62;utils&#60;/groupId&#62;
&#60;artifactId&#62;com.tudominio.mathutils&#60;/artifactId&#62;

&#60;groupId&#62;utils&#60;/groupId&#62;
&#60;artifactId&#62;com.tudominio.langutils&#60;/artifactId&#62;

packaging:


Aquí pones [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">Comento un poco por encima lo que va en el pom.xml</div>
<p><br/></p>
<div id="_mcePaste"><strong>groupId y artifactId:</strong></div>
<p><br/></p>
<div>groupId es una manera de agrupar tus proyectos dentro de los repositorios, pero no es más que una cosa lógica. artifactId es más el proyecto. Por ejemplo puedes poner los dos iguales</div>
<p><br/></p>
<div>&lt;groupId&gt;com.tudominio.miproyecto&lt;/groupId&gt;</div>
<div id="_mcePaste">&lt;artifactId&gt;com.tudominio.miproyecto&lt;/artifactId&gt;</div>
<p><br/></p>
<div id="_mcePaste">O el mismo groupId para varios de tus proyectos, por ejemplo</div>
<p><br/></p>
<div id="_mcePaste">&lt;groupId&gt;utils&lt;/groupId&gt;</div>
<div id="_mcePaste">&lt;artifactId&gt;com.tudominio.mathutils&lt;/artifactId&gt;</div>
<p><br/></p>
<div id="_mcePaste">&lt;groupId&gt;utils&lt;/groupId&gt;</div>
<div id="_mcePaste">&lt;artifactId&gt;com.tudominio.langutils&lt;/artifactId&gt;</div>
<p><br/></p>
<div id="_mcePaste"><strong>packaging:</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste">Aquí pones si el proyecto va a generar un war</div>
<div id="_mcePaste">&lt;packaging&gt;war&lt;/packaging&gt;</div>
<p><br/></p>
<div>o un jar</div>
<div id="_mcePaste">&lt;packaging&gt;jar&lt;/packaging&gt;</div>
<p><br/></p>
<div id="_mcePaste">Si es un proyecto de utilidades generarás un jar que se pondrá como dependencia en otros proyectos y si es un proyecto web el cual instalarás por ejemplo en el tomcat, generarás un war.</div>
<p><br/></p>
<div id="_mcePaste"><strong>version:</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste">Ya he comentado en un vídeo anterior, que ahí pones la versión del proyecto: 2.3, 2.3-SNAPSHOT&#8230;</div>
<p><br/></p>
<div id="_mcePaste"><strong>name:</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste">Yo creo que no sirve para nada, quizás se incluya en el manifiest del jar o war de manera informativa</div>
<p><br/></p>
<div id="_mcePaste"><strong>url:</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste">Yo creo que no sirve para nada</div>
<p><br/></p>
<div id="_mcePaste"><strong>repositories dentro de project:</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste">Hay dos seciones de repositories. En la que cuelga de &lt;project&gt; defines lo que en vídeos anteriores he llamado repositorios privados si trabajas en equipo, así como otros repositorios que necesites para jares que no estén en el repositorio de Maven.</div>
<div id="_mcePaste">Si no trabajas en equipo y no usas ningún jar que no esté en en el repositorio de Maven no necesitarás esta sección de repositories.</div>
<p><br/></p>
<div id="_mcePaste"><strong>dependencies:</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste">Aquí metes las dependencias de otros proyectos, por ejemplo</div>
<div id="_mcePaste">&lt;dependencies&gt;</div>
<div id="_mcePaste">&lt;dependency&gt;</div>
<div id="_mcePaste">&lt;groupId&gt;utils&lt;/groupId&gt;</div>
<div id="_mcePaste">&lt;artifactId&gt;com.tudominio.mathutils&lt;/artifactId&gt;</div>
<div id="_mcePaste">&lt;version&gt;2.0&lt;/version&gt;</div>
<div id="_mcePaste">&lt;/dependency&gt;</div>
<div id="_mcePaste">&lt;dependency&gt;</div>
<div id="_mcePaste">&lt;groupId&gt;javax.servlet&lt;/groupId&gt;</div>
<div id="_mcePaste">&lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;</div>
<div id="_mcePaste">&lt;version&gt;3.1.0&lt;/version&gt;</div>
<div id="_mcePaste">&lt;scope&gt;provided&lt;/scope&gt;</div>
<div id="_mcePaste">&lt;/dependency&gt;</div>
<div id="_mcePaste">&lt;/dependencies&gt;</div>
<p><br/></p>
<div id="_mcePaste">Lo de &lt;scope&gt;provided&lt;/scope&gt; es para que no me incluya el jar en el war puesto que en mi caso el javax.servlet-api lo tengo en el lib del tomcat.</div>
<p><br/></p>
<div id="_mcePaste">Las dependencias son transitivas, es decir si un protecto A tiene como dependencia un proyecto B y este proyecto B tiene como dependencia al proyecto C, el proyecto A no tiene que definir como dependencia al proyecto C, lo coge automáticamente.</div>
<p><br/></p>
<div id="_mcePaste">También es listo resolviendo conflictos. Si por ejemplo en el caso anterior, el proyecto B tiene como dependencia la versión 2.0 del proyecto C, pero el proyecto A necesita la versión 2.1 del proyecto C, lo que hace el proyecto A es definir como dependencia la 2.1 del proyecto C y Maven se ocupa de descartar la 2.0 que heredaría del proyecto B.</div>
<p><br/></p>
<div id="_mcePaste"><strong>repositories dentro de distributionManagement:</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste">Aquí hay que definir otra vez tus repositorios privados donde publicas tu programación aunque ya los hayas definido dentro de project. Dentro de project defindes de dónde lees, pero en distributionManagement defines dónde publicas.</div>
<div id="_mcePaste">Igualmente si no trabajas en equipo no necesitas esta sección.</div>
<p><br/></p>
<div>Si la necesitas puede ser de este estilo</div>
<div id="_mcePaste">&lt;distributionManagement&gt;</div>
<div id="_mcePaste">&lt;repository&gt;</div>
<div id="_mcePaste">&lt;uniqueVersion&gt;false&lt;/uniqueVersion&gt;</div>
<div id="_mcePaste">&lt;id&gt;release-repository&lt;/id&gt;</div>
<div id="_mcePaste">&lt;name&gt;Release Repository&lt;/name&gt;</div>
<div id="_mcePaste">&lt;url&gt;ftp://myprivateserver/maven-repository-release&lt;/url&gt;</div>
<div id="_mcePaste">&lt;layout&gt;default&lt;/layout&gt;</div>
<div id="_mcePaste">&lt;/repository&gt;</div>
<div id="_mcePaste">&lt;snapshotRepository&gt;</div>
<div id="_mcePaste">&lt;uniqueVersion&gt;true&lt;/uniqueVersion&gt;</div>
<div id="_mcePaste">&lt;id&gt;snapshot-repository&lt;/id&gt;</div>
<div id="_mcePaste">&lt;name&gt;Snapshot Repository&lt;/name&gt;</div>
<div id="_mcePaste">&lt;url&gt;ftp://myprivateserver/maven-repository-snapshot&lt;/url&gt;</div>
<div id="_mcePaste">&lt;layout&gt;default&lt;/layout&gt;</div>
<div id="_mcePaste">&lt;/snapshotRepository&gt;</div>
<div id="_mcePaste">&lt;/distributionManagement&gt;</div>
<p><br/></p>
<div><strong>Nota:</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste">Tal y como se ve aquí y comenté en un vídeo previo, los repositorios internos privados los he montado por ftp. El usuario y contraseña se define en el settings.xml de tu home, por ejemplo.</div>
<div id="_mcePaste">C:/Users/pepe/.m2/settings.xml</div>
<div id="_mcePaste">Ahí, si has definido dos repositories dentro de project y otros dos repositories dentro de distributionManagement tienes que poner cuatro usuarios y contraseña dentro del settings.xml, aunque sean el mismo. Por ejemplo</div>
<div id="_mcePaste">&lt;settings&gt;</div>
<div id="_mcePaste">&lt;servers&gt;</div>
<div id="_mcePaste">&lt;server&gt;</div>
<div id="_mcePaste">&lt;id&gt;release-repository&lt;/id&gt;</div>
<div id="_mcePaste">&lt;username&gt;xxx&lt;/username&gt;</div>
<div id="_mcePaste">&lt;password&gt;xxx&lt;/password&gt;</div>
<div id="_mcePaste">&lt;/server&gt;</div>
<div id="_mcePaste">&lt;server&gt;</div>
<div id="_mcePaste">&lt;id&gt;snapshot-repository&lt;/id&gt;</div>
<div id="_mcePaste">&lt;username&gt;xxx&lt;/username&gt;</div>
<div id="_mcePaste">&lt;password&gt;xxx&lt;/password&gt;</div>
<div id="_mcePaste">&lt;/server&gt;</div>
<div id="_mcePaste">&lt;server&gt;</div>
<div id="_mcePaste">&lt;id&gt;internal-release-repository&lt;/id&gt;</div>
<div id="_mcePaste">&lt;username&gt;xxx&lt;/username&gt;</div>
<div id="_mcePaste">&lt;password&gt;xxx&lt;/password&gt;</div>
<div id="_mcePaste">&lt;/server&gt;</div>
<div id="_mcePaste">&lt;server&gt;</div>
<div id="_mcePaste">&lt;id&gt;internal-snapshot-repository&lt;/id&gt;</div>
<div id="_mcePaste">&lt;username&gt;xxx&lt;/username&gt;</div>
<div id="_mcePaste">&lt;password&gt;xxxx&lt;/password&gt;</div>
<div id="_mcePaste">&lt;/server&gt;</div>
<div id="_mcePaste">&lt;/servers&gt;</div>
<div id="_mcePaste">&lt;/settings&gt;</div>
<p><br/></p>
<div>Cada id debe coincidir con el que has puesto para cada uno en el pom.xml.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2016/05/23/maven-04-pom-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven: 03 &#8211; Flujo de trabajo</title>
		<link>http://www.enriquelamastrujillo.com/blog/2016/05/23/maven-03-flujo-de-trabajo/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2016/05/23/maven-03-flujo-de-trabajo/#comments</comments>
		<pubDate>Mon, 23 May 2016 14:49:09 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=1076</guid>
		<description><![CDATA[El flujo de trabajo con Maven sería por ejemplo el siguiente:
Supongamos que voy a hacer cambios en la programación del proyecto A del cual depende un proyecto B.
Actualmente según el pom.xml del proyecto A, está en la versión 2.0.

Lo primero que hago es modificar el pom.xml del proyecto A para decir que la versión pasa [...]]]></description>
			<content:encoded><![CDATA[<p>El flujo de trabajo con Maven sería por ejemplo el siguiente:</p>
<p>Supongamos que voy a hacer cambios en la programación del proyecto A del cual depende un proyecto B.<br />
Actualmente según el pom.xml del proyecto A, está en la versión 2.0.</p>
<ul>
<li>Lo primero que hago es modificar el pom.xml del proyecto A para decir que la versión pasa a ser la 2.1-SNAPSHOT.</li>
<li>Después paso a hacer las modificaciones en el código java del proyecto A, las cuales por ahora no se ven en el proyecto B.</li>
<li>Una vez que quieres probar las modificaciones del proyecto A en el proyecto B, tienes que hacer un install del proyecto A, lo cual te lo generará en tu repositorio local para que esté disponible para otros proyectos.</li>
</ul>
<p>Para probar la versión 2.1-SNAPSHOT del proyecto A en el proyecto B hacemos lo siguiente:</p>
<ul>
<li>modificar el pom.xml del proyecto B. Supongamos que pasa de la versión 3.3 a la 3.4-SNAPSHOT</li>
<li>modificamos las dependencias del pom.xml del proyecto B para decirle que tire de la versión 2.1-SNAPSHOT del proyecto A</li>
<li>modificamos el código y probamos</li>
</ul>
<p>Una vez que damos las pruebas por bueno haríamos lo siguiente:</p>
<ul>
<li>modificar el pom.xml del proyecto A para que pase a ser la 2.1, sin SNAPSHOT</li>
<li>ejecutar un deploy del proyecto A para que se genere la 2.1 en el repositorio privado de releasses y esté accesible a cualquier otro programador.</li>
<li>modificar el pom.xml del proyecto B para que pase a ser la 3.4 y también las dependencias para que tire de la versión 2.1 del proyecto A</li>
</ul>
<p>Nota:<br />
Si hubiéramos querido que otro programador probase la 2.1-SNAPSHOT habríamos hecho un deploy mientras estaba en 2.1-SNAPSHOT y se habría generado en el repositorio privado de snapshots, estando disponible para el resto de programadores.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2016/05/23/maven-03-flujo-de-trabajo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven: 02 &#8211; Conceptos</title>
		<link>http://www.enriquelamastrujillo.com/blog/2016/05/20/maven-02-conceptos/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2016/05/20/maven-02-conceptos/#comments</comments>
		<pubDate>Fri, 20 May 2016 10:49:41 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=1074</guid>
		<description><![CDATA[Cada usuario (ordenador) tiene lo que se llama un &#8220;repositorio local&#8221;, que está por defecto en el directorio .m2 de tu home, es decir por ejemplo C:/Users/pepe/.m2/repository.
Después están los repositorios en los que publicas los cambios para compartirlos con el resto de tu equipo, y que en principio deben ser repositorios privados dentro de una [...]]]></description>
			<content:encoded><![CDATA[<p>Cada usuario (ordenador) tiene lo que se llama un &#8220;repositorio local&#8221;, que está por defecto en el directorio .m2 de tu home, es decir por ejemplo C:/Users/pepe/.m2/repository.</p>
<p>Después están los repositorios en los que publicas los cambios para compartirlos con el resto de tu equipo, y que en principio deben ser repositorios privados dentro de una máquina de tu empresa, a la que tengan acceso todos los equipos. Esto sólo es necesario si trabajas en un equipo, si trabajas solo no es necesario.<br />
A estos repositorios los llamo &#8220;repositorios privados&#8221; y son dos, uno para publicar los snapshots (desarrollos en curso) y los releases (desarrollos finales).<br />
En mi caso he configurado estos repositorios privados con un simple servidor ftp. Se pueden usar otros métodos e incluso tener un software gestor de repositorios, pero no sé lo que aportan.</p>
<p>Si yo por ejemplo voy a tocar un proyecto que está en la versión 2.0, mientras lo modifico le pongo como versión la 2.1-SNAPSHOT.<br />
Cuando ejecutas un install lo que haces es ponerlo en tu repositorio local para poder usarlo tú mismo en otro proyecto.<br />
Si ejecutas un deploy lo que haces es ponerlo en los snapshots de los repositorios privados. Esto sólo es necesario si quieres que el resto del equipo vea tus cambios mientras están en snapshot.<br />
Cuando das por buenos los cambios pones la versión a la 2.1 y ejecutas un deploy para poner la versión definitiva en los releases de los repositorios privados para que cualquiera del equipo pueda usar esa versión.</p>
<p>Por último están los repositorios públicos, que es de donde se baja las dependencias de librerías de terceros. Por defecto está el repositorio de Maven, que es donde estará casi todo lo que necesites, pero también puede darse el caso de librerías que no estén en el repositorio de Maven y tengas que configurar otros repositorios.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2016/05/20/maven-02-conceptos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven: 01 &#8211; Introducción</title>
		<link>http://www.enriquelamastrujillo.com/blog/2016/05/18/maven-01-introduccion/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2016/05/18/maven-01-introduccion/#comments</comments>
		<pubDate>Wed, 18 May 2016 11:20:38 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=1072</guid>
		<description><![CDATA[Maven es un sistema con el que principalmente manejas las dependencias entre proyectos java.
Sin Maven, si necesitas una funcionalidad que te proporciona el jar XXXX.jar, te tienes que bajar ese jar de donde corresponda y ponerlo en el lib de tu proyecto. Si además ese XXXX.jar utiliza los jares YYYY.jar y ZZZZ.jar, lo tienes que [...]]]></description>
			<content:encoded><![CDATA[<p>Maven es un sistema con el que principalmente manejas las dependencias entre proyectos java.</p>
<p>Sin Maven, si necesitas una funcionalidad que te proporciona el jar XXXX.jar, te tienes que bajar ese jar de donde corresponda y ponerlo en el lib de tu proyecto. Si además ese XXXX.jar utiliza los jares YYYY.jar y ZZZZ.jar, lo tienes que saber, bajártelos e incluirlos asimismo en el lib de tu proyecto.<br />
Si lo que necesitas es en un proyecto tuyo XXXX usar las clases de otro proyecto tuyo YYYY tienes que generar un jar con las clases del YYYY y meterlas en el lib del proyecto XXXX y meter ese jar en el war del XXXX, lo cual es un poco engorroso.</p>
<p>Todo esto está mejor gestionado con Maven. Para un proyecto defines las dependencias que tiene con otros jares o con otros proyectos tuyos y él se ocupa de gestionarlo analizando transitivamente las dependencias de los proyectos y solucionando posibles conflictos. También se ocupa de generar el jar o el war, generarlos con diferentes versiones y permite compartir la programación entre los diferentes programadores mientras se está en desarrollo.</p>
<p>Para hacer todo esto Maven usa lo que llama repositorios, de los que hablaré en futuros artículos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2016/05/18/maven-01-introduccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to configure Distributed Statistics in Openx</title>
		<link>http://www.enriquelamastrujillo.com/blog/2013/05/16/how-to-configure-distributed-statistics-in-openx/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2013/05/16/how-to-configure-distributed-statistics-in-openx/#comments</comments>
		<pubDate>Thu, 16 May 2013 14:47:55 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[openx]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=375</guid>
		<description><![CDATA[Ver este post en español
People at Openx use &#8220;Distributed Statistics&#8221; as an option to scale the service, but in my opinion the documentation is confuse or wrong, as you can see at this message I wrote as &#8220;raistlink&#8221;.
Distributed Statistics works like this (as I configured):

both computers serve banners
only one of them (or another aditional computer) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/blog/2013/05/16/como-montar-distributed-statistics-en-openx/">Ver este post en español</a></p>
<p>People at <a href="http://www.openx.com/" target="_blank">Openx</a> use &#8220;Distributed Statistics&#8221; as an option to scale the service, but in my opinion the documentation is confuse or wrong, as you can see at <a href="http://forum.openx.org/index.php?showtopic=503520463" target="_blank">this message I wrote as &#8220;raistlink&#8221;</a>.</p>
<p>Distributed Statistics works like this (as I configured):</p>
<ul>
<li>both computers serve banners</li>
<li>only one of them (or another aditional computer) works also as the admin. I will call &#8220;master&#8221; to the admin computer and &#8220;slave&#8221; to the other.</li>
<li>only one computer executes the maintenance process that calculates the probability of the zones</li>
<li>the replication makes the slave machine revieve those probalities</li>
<li>the slave machine sends it&#8217;s activity to the master executing the maintenance-distributed instead of maintenance</li>
</ul>
<p>It&#8217;s mandatory that you configure crones in the way that when the hourly execution of the maintenance process at the master is running, the activity from the slave has been recieved, in other case this activity will be lost. That&#8217;s why, as we will see in a moment, the master executes the maintenance process at the minute 15 everu hour and the slave executes the maintenance-distributed every five minutes.</p>
<p>Well, I got it at the end so I&#8217;m going to explain a bit how I did it.</p>
<p>The start point is two computers under a balancer serving banners under the same url, lets say my.adserver.com.</p>
<p><b>Master:</b></p>
<ul>
<li>Stop apache</li>
<li>be sure maintenance is not running and stop the cron</li>
<li>Stop mysql</li>
<li>Set this at my.conf</li>
<p>       server-id        = 1<br />
       log-bin=mysql-bin</p>
<li>Start mysql</li>
<li>GRANT REPLICATION SLAVE ON *.* TO &#8217;slave_user&#8217;@'%&#8217; IDENTIFIED BY &#8216;XXXX&#8217;;</li>
<p>   where XXXX is the password used by the slave at replication for connecting to the master.</p>
<li>GRANT ALL PRIVILEGES ON *.* TO &#8216;root&#8217;@'%&#8217; IDENTIFIED BY &#8216;YYYY&#8217;;</li>
<p>	where YYYY is the password used by the slave in order to send its stats to the master<br />
	As you can see you can use two different passwords, no problem.</p>
<li>FLUSH PRIVILEGES;</li>
<li>show master status. <b>TAKE NOTE OF THESE VALUES, YOU&#8217;LL NEED THEM AFTER</b></li>
<p>       <b>mysql-bin.000001 |      417</b></p>
<li>make a dump</li>
<p>       mysqldump -u root -p &#8211;databases openx_2_8_10 > /tmp/openx_2_8_10-201302071719.sql</p>
<li>start apache</li>
<li>execute once again show master status for testing purposes</li>
<p>        mysql-bin.000001 | 24995895<br />
		the number has changed, so the master is replicating
</ul>
<p><b>Slave:</b></p>
<ul>
<li>drop openx database</li>
<li>load the master dump at slave</li>
<p>       mysql -u root -pXXXX < "/tmp/openx_2_8_10-201302071719.sql"</p>
<li>execute these alter commands at openx database</li>
<p>	ALTER TABLE ox_data_raw_ad_click ENGINE=MyISAM;<br />
	ALTER TABLE ox_data_raw_ad_impression ENGINE=MyISAM;<br />
	ALTER TABLE ox_data_raw_ad_request ENGINE=MyISAM;<br />
	ALTER TABLE ox_data_raw_tracker_impression ENGINE=MyISAM;<br />
	ALTER TABLE ox_data_raw_tracker_variable_value ENGINE=MyISAM;<br />
	In fact I don&#8217;t see that the system use this tables but&#8230;</p>
<li>Set these values at my.conf</li>
<p>       server-id        = 2<br />
       log-bin=mysql-bin<br />
       (is order to work as a master if needed)<br />
       replicate-wild-ignore-table=openx_2_8_10.%data_%<br />
       replicate-wild-ignore-table=openx_2_8_10.%tmp_%<br />
       replicate-wild-ignore-table=openx_2_8_10.%lb_local%<br />
       replicate-wild-ignore-table=mysql.%<br />
       replicate-wild-ignore-table=openx_2_8_10.%ox_log_maintenance_priority% (because of a problem a had later)<br />
       replicate-wild-ignore-table=openx_2_8_10.%ox_session% (because of a problem a had later)</p>
<li>start mysql</li>
<li>check if the slave can access the master whith this command for example</li>
<p>       mysqldump &#8211;host=host_master -u root -pYYYY &#8211;databases openx_2_8_10 > /tmp/openx_2_8_10-201302080959.sql</p>
<li>STOP SLAVE;</li>
<li>CHANGE MASTER TO MASTER_HOST=&#8217;host_master&#8217;, MASTER_USER=&#8217;slave_user&#8217;, MASTER_PASSWORD=&#8217;XXXX&#8217;, MASTER_LOG_FILE=&#8217;mysql-bin.000001&#8242;, MASTER_LOG_POS=417;</li>
<p>   (use the values noted before)	   </p>
<li>START SLAVE;</li>
<li>SHOW SLAVE STATUS</li>
<p>As you can see, each time you execute this command, you obtain different values. When this values are the same than the master you will be synchronized.
</ul>
<p>Until now I&#8217;ve configured replication. The next thing is to set the slave to work as a delivery box, that is, it doesn&#8217;t work as admin and it send its activity (stats) to the master.</p>
<p><b>Master:</b></p>
<ul>
<li>If your domain is for example my.adserver.com then you have to create a cname at you domain provider for admin.my.adserver.com pointing to the master computer. I made the master to work as admin and serving banners at the same time.</li>
<li>Disable automatic maintenance at the master from the admin console.</li>
<li>configuration &#8211;> global settings &#8211;> Banner Delivery Settings &#8211;> &#8220;Admin Interface URL&#8221;</li>
<p>   change my.adserver.com for admin.my.adserver.com<br />
   the system redirects to the new url.</p>
<li>change tha maintenance cron to execute every hour at minute 15</li>
</ul>
<p><b>Slave:</b></p>
<ul>
<li>Make these changes at openx conf file by hand
<ol>
<li>set enabled at [ui] empty</li>
<li>set enabled at [lb] to 1</li>
<li>at [database] section set the local database. (It already was)</li>
<li>at [lb] section set the master database</li>
<p>       type=mysql<br />
       host=host_master<br />
       socket=<br />
       port=3306<br />
       username=root<br />
       password=YYYY<br />
       name=openx_2_8_10</p>
<li>change operationInterval at the slave in order to the maintenance-distributed be excecuted every 5 min.</li>
</ol>
</li>
<li>change maintenance-distributed permissions</li>
<p>       chmod 777 [openx_home]/scripts/maintenance/maintenance-distributed.php</p>
<li>set maintenance-distributed cron every 5 min.</li>
</ul>
<p>You can add more slaves following the same instruccions or you can generate a new dump and set the new slave &#8220;listening from this point&#8221;, that is, from a new show master status.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2013/05/16/how-to-configure-distributed-statistics-in-openx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo montar Distributed Statistics en Openx</title>
		<link>http://www.enriquelamastrujillo.com/blog/2013/05/16/como-montar-distributed-statistics-en-openx/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2013/05/16/como-montar-distributed-statistics-en-openx/#comments</comments>
		<pubDate>Thu, 16 May 2013 14:02:58 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[openx]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=365</guid>
		<description><![CDATA[Read this post in english
La gente de Openx tiene &#8220;Distributed Statistics&#8221; como opción para escalar el servicio, pero en mi opinión tienen la documentación un poco confusa, cuando no equivocada, como se puede ver en este mensaje que escribí yo mismo como &#8220;raistlink&#8221;.
El sistema de Distributed Statistics funciona así resumidamente (como yo lo he montado):

las [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/blog/2013/05/16/how-to-configure-distributed-statistics-in-openx/">Read this post in english</a></p>
<p>La gente de <a href="http://www.openx.com/" target="_blank">Openx</a> tiene &#8220;Distributed Statistics&#8221; como opción para escalar el servicio, pero en mi opinión tienen la documentación un poco confusa, cuando no equivocada, como se puede ver en <a href="http://forum.openx.org/index.php?showtopic=503520463" target="_blank">este mensaje que escribí yo mismo como &#8220;raistlink&#8221;</a>.</p>
<p>El sistema de Distributed Statistics funciona así resumidamente (como yo lo he montado):</p>
<ul>
<li>las dos máquinas sirven banners</li>
<li>sólo una de ellas (u otra adicional) además es el admin. A la que hace de admin la llamaré maestra y a la otra esclava.</li>
<li>sólo la máquina maestra ejecuta el maintenance que calcula las probabilidades de las zonas</li>
<li>la replicación hace que la esclava coja esas probabilidades</li>
<li>la esclava vuelca su actividad en el maestro ejecutando el maintenance-distributed en lugar del maintenance</li>
</ul>
<p>Es fundamental que se configuren los crones de manera que cuando se ejecuta el maintenance de cada hora se haya volcado toda la actividad de la esclava porque si no esa actividad se perderá, por eso como veremos luego el maintenance en la maestra se ejecuta a las y cuarto y el maintenance-distributed en la esclava cada cinco minutos.</p>
<p>Pues bien, al final lo conseguí así que voy a explicar un poco lo que hice.</p>
<p>Partimos de dos máquinas independientes que están bajo un balanceador sirviendo banners bajo la misma url, por ejemplo my.adserver.com </p>
<p><b>En el maestro:</b></p>
<ul>
<li>parar el apache</li>
<li>asegurarme de que no está el maintenance corriendo y quitar el cron</li>
<li>parar el mysql</li>
<li>poner en el my.conf</li>
<p>       server-id        = 1<br />
       log-bin=mysql-bin</p>
<li>arrancar mysql</li>
<li>GRANT REPLICATION SLAVE ON *.* TO &#8217;slave_user&#8217;@'%&#8217; IDENTIFIED BY &#8216;XXXX&#8217;;</li>
<p>   donde XXX es la contraseña con la que accederá el mysql esclavo para la replicación</p>
<li>GRANT ALL PRIVILEGES ON *.* TO &#8216;root&#8217;@'%&#8217; IDENTIFIED BY &#8216;YYYY&#8217;;</li>
<p>	 donde YYYY es la contraseña con la que accederá el mysql esclavo para volcar sus estadísticas en el maestro.<br />
    Ojo hay una contraseña para el la replicación y otra para volcar los datos desde el openx, no debería haber problema. </p>
<li>FLUSH PRIVILEGES;</li>
<li>hacer un show master status. <b>ÉSTE ES EL QUE TENDRÉ QUE USAR LUEGO</b></li>
<p>       <b>mysql-bin.000001 |      417</b></p>
<li>hacer un dump</li>
<p>       mysqldump -u root -p &#8211;databases openx_2_8_10 > /tmp/openx_2_8_10-201302071719.sql</p>
<li>arrancar apache</li>
<li>volver a hacer un show master status por curiosidad</li>
<p>        mysql-bin.000001 | 24995895<br />
        se ve que está replicando porque ha cambiado el número
</ul>
<p><b>En el esclavo:</b></p>
<ul>
<li>eliminar base de datos de openx</li>
<li>volcar el dump del master</li>
<p>       mysql -u root -pXXXX < "/tmp/openx_2_8_10-201302071719.sql"</p>
<li>ejecutar estos alter en la bbdd de datos del openx.</li>
<p>	ALTER TABLE ox_data_raw_ad_click ENGINE=MyISAM;<br />
	ALTER TABLE ox_data_raw_ad_impression ENGINE=MyISAM;<br />
	ALTER TABLE ox_data_raw_ad_request ENGINE=MyISAM;<br />
	ALTER TABLE ox_data_raw_tracker_impression ENGINE=MyISAM;<br />
	ALTER TABLE ox_data_raw_tracker_variable_value ENGINE=MyISAM;<br />
	Realmente yo estas tablas raw yo no he visto que se usen, pero bueno, a lo mejor sí y se purgan en seguida.		</p>
<li>poner en el my.conf</li>
<p>       server-id        = 2<br />
       log-bin=mysql-bin<br />
       para que pudiera funcionar como maestro.<br />
       replicate-wild-ignore-table=openx_2_8_10.%data_%<br />
       replicate-wild-ignore-table=openx_2_8_10.%tmp_%<br />
       replicate-wild-ignore-table=openx_2_8_10.%lb_local%<br />
       replicate-wild-ignore-table=mysql.%<br />
       replicate-wild-ignore-table=openx_2_8_10.%ox_log_maintenance_priority% (por un problema que tuve luego)<br />
       replicate-wild-ignore-table=openx_2_8_10.%ox_session% (por un problema que tuve luego)</p>
<li>arrancar el mysql</li>
<li>comprobar si se puede acceder al mysql del maestro con esto</li>
<p>       mysqldump &#8211;host=host_del_master -u root -pYYYY &#8211;databases openx_2_8_10 > /tmp/openx_2_8_10-201302080959.sql</p>
<li>STOP SLAVE;</li>
<li>CHANGE MASTER TO MASTER_HOST=&#8217;host_del_master&#8217;, MASTER_USER=&#8217;slave_user&#8217;, MASTER_PASSWORD=&#8217;XXXX&#8217;, MASTER_LOG_FILE=&#8217;mysql-bin.000001&#8242;, MASTER_LOG_POS=417;</li>
<p>   (con los valores que dio en los pasos anteriores, ya están puestos)	   </p>
<li>START SLAVE;</li>
<li>SHOW SLAVE STATUS</li>
<p>Se ve que cada vez que lo ejecuto pone que va por un archivo diferente. Cuando ponga lo mismo que el show master status del maestro es que lo ha cogido ya todo. En muy poquito tiempo lo ha hecho.
</ul>
<p>Hasta aquí he configurado la replicación. Lo siguiente va a ser poner a funcionar el openx como delivery box en la esclava, es decir, que no funcione como admin y que vuelque su actividad (estadísticas) en el maestro.</p>
<p><b>En la maestra:</b></p>
<ul>
<li>Si por ejemplo tu dominio es my.adserver.com crear un cname en el registrador de dominios para admin.my.adserver.com que apunte a la máquina maestra. Yo hice que la máquina maestra funcione como admin y sirviendo banners al mismo tiempo.</li>
<li>desactivar el automatic maintenance en el maestro desde el admin</li>
<li>configuration &#8211;> global settings &#8211;> Banner Delivery Settings &#8211;> &#8220;Admin Interface URL&#8221;</li>
<p>   cambiar my.adserver.com por admin.my.adserver.com<br />
   Él solo me redirije de la vieja a la nueva</p>
<li>cambiar el cron del maintenance en el maestro para que se ejecute a las y cuarto</li>
</ul>
<p><b>En la esclava:</b></p>
<ul>
<li>Hacer estos cambios en el conf de openx a mano
<ol>
<li>poner el enabled del [ui] vacío</li>
<li>poner el enabled del [lb] a 1</li>
<li>en la sección [database] poner la bbdd local. (ya estaba)</li>
<li>en la sección [lb] poner la bbdd maestra</li>
<p>       type=mysql<br />
       host=host_del_master<br />
       socket=<br />
       port=3306<br />
       username=root<br />
       password=YYYY<br />
       name=openx_2_8_10</p>
<li>modificar el operationInterval en el esclavo para poder ejecutar el maintenance-distributed más a menudo, cada 5 min.</li>
</ol>
</li>
<li>cambiar permisos al maintenance-distributed</li>
<p>       chmod 777 [openx_home]/scripts/maintenance/maintenance-distributed.php</p>
<li>poner cron del maintenance-distributed cada 5 min</li>
</ul>
<p>Para futuros esclavos se pueden seguir estas mismas intrucciones tal cual o generar un nuevo dump y poner el nuevo esclavo a &#8220;escuchar desde otro punto&#8221;, es decir, a un nuevo show master status.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2013/05/16/como-montar-distributed-statistics-en-openx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ingeniería de Software Ágil</title>
		<link>http://www.enriquelamastrujillo.com/blog/2011/03/24/ingenieria-de-software-agil/</link>
		<comments>http://www.enriquelamastrujillo.com/blog/2011/03/24/ingenieria-de-software-agil/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 21:26:52 +0000</pubDate>
		<dc:creator>Quique</dc:creator>
				<category><![CDATA[informática]]></category>
		<category><![CDATA[libros]]></category>
		<category><![CDATA[gestión de proyectos]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.enriquelamastrujillo.com/blog/?p=83</guid>
		<description><![CDATA[Hace poco un amigo me regaló el libro Ingeniería de Software Ágil. El subtítulo es "un libro contra las raíces de la precariedad laboral en el sector de los servicios de software".]]></description>
			<content:encoded><![CDATA[<div style="border: 1px solid #000; text-align: center;margin: 10px 20px 20px 10px; padding: 5px 5px 5px 5px; float:right">
<div> <img src="/img/blog/ingenieria-software-agil.jpg" width="140" height="200" alt="Ingeniería de Software Ágil" title="Ingeniería de Software Ágil">
  </div>
</div>
<p>Hace poco un amigo me regaló el libro <b>Ingeniería de Software Ágil</b>. El subtítulo es &#8220;un libro contra las raíces de la precariedad laboral en el sector de los servicios de software&#8221;.</p>
<p>Como programador, analista-programador, desarrollador de software o como se quiera llamar, me siento totalmente identificado con las críticas que hace a las metodologías actuales, la <b>desconsideración de la labor de programación</b>, las empresas consultoras&#8230;</p>
<p>El título puede llevar a engaño, ya que uno puede esperar el típico manual sobre metodologías de moda actualmente como <b>Scrum, Extremme Programming</b> u otras, pero no tiene nada que ver. El libro aboga por estas metodologías sí, pero no es un manual ni habla prácticamente de ellas. El libro más bien es una crítica al sistema actual, a la gente que piensa que la programación simplemente es poner un ladrillo encima de otro, que es una actividad de construcción y no de <b>diseño o arte</b>, que es un trabajo menor que no debe realizar un ingeniero&#8230;</p>
<p>A juicio del autor todos los problemas del sector vienen por este tipo de consideraciones sobre el trabajo de un programador, que llevan a las empresas a contratar <b>personal poco cualificado y en cantidades ingentes</b>, con la errónea creencia de que cuanta más gente más rápido se terminará el proyecto, cuando probablemente sea al contrario.</p>
<p>Cuestiona también la habitual gestión de proyectos basada en la <b>división de las actividades</b> de análisis, diseño, construcción y pruebas <b>entre distintos grupos de personas</b>, con distintos niveles jerárquicos de responsabilidad, mediante un proceso secuencial y dentro de <b>sistemas formales documentalmente pesados</b>.</p>
<p>Recomiendo su lectura a cualquier persona que esté en el mundo del desarrollo de software de alguna manera: programadores, empresarios con necesidad de equipos técnicos&#8230;</p>
<p><b>Web del libro y blog del autor:</b> <a href="http://www.ingsoftagil.com/" target="_blank" title="Ingeniería de Software Ágil">www.ingsoftagil.com</a><br />
<a href="http://www.bubok.es/libro/detalles/170715/Ingenieria-de-Software-Agil" target="_blank" title="Comprar Ingeniería de Software Ágil">Comprar el libro</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.enriquelamastrujillo.com/blog/2011/03/24/ingenieria-de-software-agil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
