tag:blogger.com,1999:blog-43261057302411174772024-03-06T01:38:28.968-05:00NeptunoUn blog para escribir un poco de lo que hago diariamenteAnonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.comBlogger115125tag:blogger.com,1999:blog-4326105730241117477.post-54858913735889339762011-01-12T17:12:00.000-05:002011-01-12T17:12:08.053-05:00Maven 3.0.2 disponibleHoy se libero la version de mantenimiento 3.0.2 de Apache Maven. A continuacion la lista de cambios:<br />
<br />
<br />
Release Notes - Maven 2 & 3 - Version 3.0.2
<br />
<h2>
Bug
</h2>
<ul>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4840">MNG-4840</a>] - Prerequisites is not working on m3
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4913">MNG-4913</a>] - [regression] User properties override equally named POM properties of transitive dependencies
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4915">MNG-4915</a>] - Versions in pom.xml are not checked for invalid characters
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4918">MNG-4918</a>] - MavenProject#clone() doubles active profiles
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4919">MNG-4919</a>] - Plugin execution contributed by lifecycle mapping gets lost when same goal is bound multiple times
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4923">MNG-4923</a>] - [regression] java.lang.ClassNotFoundException: org.apache.maven.artifact.ArtifactStatus
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4925">MNG-4925</a>] - Mismanagement of container lookup realm can cause type incompatibilities for plugins looking up components by string
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4933">MNG-4933</a>] - With a resource directory as . maven raise an java.lang.StringIndexOutOfBoundsException:217
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4941">MNG-4941</a>] - PluginDescriptorBuilder doesn't populate expression/default-value fields for mojo parameters
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4952">MNG-4952</a>] - [regression] RELEASE field of repository metadata is not updated upon repeated deployments
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4955">MNG-4955</a>] - [regression] Outdated remote snapshots are preferred over locally installed snapshots
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4960">MNG-4960</a>] - [regression] Make-like reactor mode does not build selected project when resuming from one of its prerequisites
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4966">MNG-4966</a>] - Preserve double slashes in the scm connection url - identifies absolute repository paths for mercurial
</li>
</ul>
<h2>
Improvement
</h2>
<ul>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4912">MNG-4912</a>] - Use of raw type should be Comparable<ArtifactVersion>
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4916">MNG-4916</a>] - Poor ProjectBuilder.build performance for projects with unresolvable extension plugins
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4922">MNG-4922</a>] - ExecutionEvent give on the exception encountered (when having mojoFailed)
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4926">MNG-4926</a>] - ExecutionEvent give on the exception encountered (when having projectFailed , forkedProjectFailed)
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4944">MNG-4944</a>] - Include JRE vendor in version info
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4950">MNG-4950</a>] - Javadoc improvements to DefaultSettingsWriter/Reader
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4953">MNG-4953</a>] - Issue a warning when a system-scope dependency refers to the project basedir
</li>
</ul>
<h2>
New Feature
</h2>
<ul>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4936">MNG-4936</a>] - Allow to better monitor and adjust a Maven build during CI
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4937">MNG-4937</a>] - Allow the platform scripts to avoid loading mavenrc content
</li>
</ul>
<h2>
Task
</h2>
<ul>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4945">MNG-4945</a>] - Remove mergeId from public POM
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4957">MNG-4957</a>] - Emit validation warning when project version uses irregular SNAPSHOT version string
</li>
<li>[<a href="http://jira.codehaus.org/browse/MNG-4959">MNG-4959</a>] - Update default plugin versions
</li>
</ul>
<br />
-- <br />
Francisco HerreraAnonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-21495175974212855122010-11-18T11:19:00.000-05:002010-11-18T11:19:43.241-05:00Sonar 2.4 disponibleYa fue liberada la versión 2.4 de <a href="http://www.sonarsource.org/">Sonar</a>, la excelente herramienta open source para análisis de código fuente. Entre las mejoras están soporte para actualización de plugins desde la misma herramienta (<a href="http://docs.codehaus.org/display/SONAR/Update+Center">Update Center</a>) y un nuevo diseño del <a href="http://docs.codehaus.org/display/SONAR/Customising+dashboards">dashboard</a> basado en widgets el cual permite seleccionar el layout y los widgets a mostrar. Para ver la lista completa de cambios y descargar la versión deben ir a la siguiente <a href="http://www.sonarsource.org/downloads/">pagina</a>.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com1tag:blogger.com,1999:blog-4326105730241117477.post-11554108037270247112010-11-10T17:07:00.000-05:002010-11-10T17:07:42.251-05:00Servicios REST con Spring - Usando RestTemplateDespués de haber visto unos demos bien interesante del soporte que le da <a href="http://www.springsource.org/">Spring</a> al tema de servicios web en <a href="http://www.springone2gx.com/">SpringOne 2GX</a> 2010, decidí hacer una prueba para ver si de verdad es tan sencillo. La primera prueba es tratar de consumir algún servicio REST usando <a href="http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/client/RestTemplate.html">RestTemplate</a>. Como el nombre lo indica, esta clase es una implementación del patrón template orientada a procesar servicios REST, ya Spring nos tiene acostumbrados con este mecanismo con clases como JDBTemplate o JMSTemplate.<br />
Para poder arrancar el demo lo primero es conseguir o implementar un servicio REST de tal forma de poder consumirlo. En mi caso voy a aprovechar que tengo instalado Sonatype <a href="http://nexus.sonatype.org/">Nexus</a> el cual se encarga de exponer algunos servicios. La documentación de los servicios de nexus es casi inexistente al momento pero buscando por internet encontre algunos uri. Para las pruebas voy a usar el que retorna el estado de la instancia.
<br />
<br />
<pre>http://your.company.com/nexus/service/local/status
</pre>
<br />
El cual devuelve un xml con la siguiente estructura (el xml es mas extenso, solo deje la parte que me interesa)<br />
<br />
<pre class="brush:xml"><status>
<data>
<appName>Sonatype Nexus Maven Repository Manager</appName>
<formattedAppName>Sonatype Nexus&trade; Open Source Edition, Version: 1.8.0</formattedAppName>
<version>1.8.0</version>
<apiVersion>1.8.0</apiVersion>
<editionLong>Open Source</editionLong>
<editionShort>OSS</editionShort>
<state>STARTED</state>
<operationMode>STANDALONE</operationMode>
<initializedAt>2010-10-26 12:28:06.732 EDT</initializedAt>
<startedAt>2010-10-26 12:28:17.334 EDT</startedAt>
<lastConfigChange>2010-10-26 12:28:17.334 EDT</lastConfigChange>
<firstStart>false</firstStart>
<instanceUpgraded>false</instanceUpgraded>
<configurationUpgraded>false</configurationUpgraded>
</data>
</status>
</pre>
<br />
Antes de escribir cualquier clase creo el pom.xml de maven con las dependencias respectivas<br />
<br />
<pre class="brush:xml"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>neptuno.demo.spring</groupId>
<artifactId>demo-spring-rest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo-spring-rest</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.0.5.RELEASE</org.springframework.version>
<org.logback.version>0.9.26</org.logback.version>
</properties>
<dependencies>
<!-- Dependencias para Rest Template -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-xml</artifactId>
<version>1.5.9</version>
</dependency>
<!-- Dependencias para pruebas unitarias -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<!-- Dependencias para logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${org.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${org.logback.version}</version>
</dependency>
</dependencies>
</project>
</pre>
<br />
El siguiente paso es crear un bean con la representación del xml
<br />
<br />
<pre class="brush:java">public class NexusStatus {
private String appName;
private String formattedAppName;
private String version;
private String apiVersion;
private String editionLong;
private String editionShort;
private String state;
private String operationMode;
private String initializedAt;
private String startedAt;
private String lastConfigChange;
// Generar todos los getters y setter
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("NexusStatus [appName=");
builder.append(appName);
builder.append(", formattedAppName=");
builder.append(formattedAppName);
builder.append(", version=");
builder.append(version);
builder.append(", apiVersion=");
builder.append(apiVersion);
builder.append(", editionLong=");
builder.append(editionLong);
builder.append(", editionShort=");
builder.append(editionShort);
builder.append(", state=");
builder.append(state);
builder.append(", operationMode=");
builder.append(operationMode);
builder.append(", initializedAt=");
builder.append(initializedAt);
builder.append(", startedAt=");
builder.append(startedAt);
builder.append(", lastConfigChange=");
builder.append(lastConfigChange);
builder.append("]");
return builder.toString();
}
}
</pre>
Como en todas las aplicaciones de Spring, el archivo de configuración es el que se encarga de hacer la mayoría de la <i>magia</i>. Para este ejemplo el archivo de spring lo denomine nexus-spring.xml y esta ubicado en la carpeta resources<br />
<br />
<pre class="brush:xml"><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<context:component-scan base-package="neptuno.demo.spring.rest" />
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="xpathTemplate" class="org.springframework.xml.xpath.Jaxp13XPathTemplate" />
<bean id="nexusStatusNodeMapper" class="neptuno.demo.spring.rest.NexusStatusNodeMapper" />
</beans>
</pre>
<br />
En este archivo se definen 3 bean y se agrega una instruccion especial para Spring<br />
<br />
<ul>
<li>La entrada component-scan apunta al paquete que debe ser evaluado por Spring para buscar clases con anotaciones. </li>
<li>restTemplate es una instancia de Spring RestTemplate indicando que el convertidor del cuerpo del mensaje es la clase <a href="http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/http/converter/xml/SourceHttpMessageConverter.html">SourceHttpMessageConverter</a>. Esta clase convierte entre request/response http y <a href="http://javax.xml.transform.source/">javax.xml.transform.Source</a>, de esta forma se puede recibir la respuesta de Nexus y procesarla como xml.</li>
<li><a href="http://static.springsource.org/spring-ws/sites/1.5/apidocs/org/springframework/xml/xpath/Jaxp13XPathTemplate.html">xpathTemplate</a> es usado para convertir entre Source y el bean NexusStatus, en este caso usando <a href="http://en.wikipedia.org/wiki/Java_API_for_XML_Processing">JAXP</a> 1.3</li>
<li>nexusStatusNodeMapper implementa <a href="http://org.springframework.xml.xpath.nodemapper/">org.springframework.xml.xpath.NodeMapper</a>. Es similar al row mapper de JDBCTemplate y se usa para convertir un nodo del xml al objeto NexusStatus</li>
</ul>
La clase que se encarga de utilizar toda la definición anterior es la siguiente<br />
<br />
<pre class="brush:java">/**
*
*/
package neptuno.demo.spring.rest;
import javax.xml.transform.Source;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.xml.xpath.Jaxp13XPathTemplate;
import org.springframework.xml.xpath.NodeMapper;
@Component("nexusRestAccess")
public class NexusRestAccess {
private static Logger logger = LoggerFactory
.getLogger(NexusRestAccess.class);
@Autowired
private RestTemplate restTemplate;
@Autowired
private Jaxp13XPathTemplate xpathTemplate;
@Autowired
private NodeMapper nexusStatusNodeMapper;
/**
* Obtiene el estado de la instancia de Nexus
*
* @return
*/
public NexusStatus getNexusStatus() {
Source source = restTemplate.getForObject(
"http://my.company.com/nexus/service/local/status",
Source.class);
return (NexusStatus) xpathTemplate.evaluateAsObject("//data", source,
nexusStatusNodeMapper);
}
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"/nexus-spring.xml");
NexusRestAccess demo = applicationContext.getBean("nexusRestAccess",
NexusRestAccess.class);
NexusStatus status = demo.getNexusStatus();
logger.info(status.toString());
}
}
</pre>
<br />
Como ven la clase usa anotaciones para indicarle a Spring que debe inyectar. La linea<br />
<br />
<pre class="brush:java">Source source = restTemplate.getForObject(
"http://my.company.com/nexus/service/local/status",
Source.class);
</pre>
<br />
invoca el servicio remoto y devuelve el resultado en un objeto tipo Source. Después se utiliza xpathTemplate para convertirlo a NexusSource. Uno de los parametros de xpathTemplate es el mapper definido en el archivo de Spring. El código de la clase es el siguiente<br />
<br />
<br />
<pre class="brush:java">/**
*
*/
package neptuno.demo.spring.rest;
import org.springframework.xml.xpath.NodeMapper;
import org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class NexusStatusNodeMapper implements NodeMapper {
/**
* (non-JSDoc)
*
* @see org.springframework.xml.xpath.NodeMapper#mapNode(org.w3c.dom.Node,
* int)
*/
@Override
public Object mapNode(Node node, int i) throws DOMException {
NexusStatus newStatus = new NexusStatus();
NodeList children = node.getChildNodes();
for (int j = 0; j < children.getLength(); j++) {
Node n = children.item(j);
if ("appName".equals(n.getNodeName())) {
newStatus.setAppName(n.getTextContent());
} else if ("version".equals(n.getNodeName())) {
newStatus.setVersion(n.getTextContent());
} else if ("formattedAppName".equals(n.getNodeName())) {
newStatus.setFormattedAppName(n.getTextContent());
} else if ("apiVersion".equals(n.getNodeName())) {
newStatus.setApiVersion(n.getTextContent());
} else if ("state".equals(n.getNodeName())) {
newStatus.setState(n.getTextContent());
} else if ("editionLong".equals(n.getNodeName())) {
newStatus.setEditionLong(n.getTextContent());
} else if ("editionShort".equals(n.getNodeName())) {
newStatus.setEditionShort(n.getTextContent());
} else if ("operationMode".equals(n.getNodeName())) {
newStatus.setOperationMode(n.getTextContent());
} else if ("initializedAt".equals(n.getNodeName())) {
newStatus.setInitializedAt(n.getTextContent());
} else if ("startedAt".equals(n.getNodeName())) {
newStatus.setStartedAt(n.getTextContent());
} else if ("lastConfigChange".equals(n.getNodeName())) {
newStatus.setLastConfigChange(n.getTextContent());
}
}
return newStatus;
}
}
</pre>
<br />
Por ultimo ejecutamos el metodo main() de la clase NexusRestAccess la cual invoca el servicio y muestra por consola el objeto NexusStatus<br />
<br />
<br />
<pre class="brush:plain">Nov 10, 2010 3:56:13 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1add2dd: startup date [Wed Nov 10 15:56:13 EST 2010]; root of context hierarchy
Nov 10, 2010 3:56:13 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [nexus-spring.xml]
Nov 10, 2010 3:56:16 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1bc82e7: defining beans [nexusRestAccess,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,restTemplate,xpathTemplate,nexusStatusNodeMapper]; root of factory hierarchy
15:56:19.798 [main] INFO n.demo.spring.rest.NexusRestAccess - NexusStatus [appName=Sonatype Nexus Maven Repository Manager, formattedAppName=Sonatype Nexus&trade; Open Source Edition, Version: 1.8.0, version=1.8.0, apiVersion=1.8.0, editionLong=Open Source, editionShort=OSS, state=STARTED, operationMode=STANDALONE, initializedAt=2010-10-26 12:28:06.732 EDT, startedAt=2010-10-26 12:28:17.334 EDT, lastConfigChange=2010-10-26 12:28:17.334 EDT]
</pre>
<br />
También podemos agregar una pequeña prueba unitaria para probar el código
<br />
<pre class="brush:java">package neptuno.demo.spring.rest;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
@ContextConfiguration(locations = { "/nexus-spring.xml" })
public class NexusRestAccessTest extends AbstractJUnit4SpringContextTests {
private NexusRestAccess demo;
@Before
public void setup() {
demo = applicationContext.getBean("nexusRestAccess",
NexusRestAccess.class);
}
@Test
public void testNexusStatus() {
NexusStatus status = demo.getNexusStatus();
Assert.assertNotNull(status);
Assert.assertTrue(status.getAppName().indexOf("Sonatype") >= 0);
}
}
</pre>
<br />
Como ven es bien sencillo consumir servicios REST usando Spring <a href="http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/client/RestTemplate.html">RestTemplate</a>. Esta clase no solo soporta consultas (GET) sino también los otros métodos (PUT, DELETE, POST, etc). Para mas informaición revisen la documentación.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-417994741296693452010-10-21T09:44:00.001-05:002010-10-21T09:56:13.237-05:00Opera 11 alpha introcude extensionesHoy <a href="http://www.opera.com/">Opera</a> libero la versión 11 alpha de su browser para desktops la cual introduce mas opciones de personalización de las que ya existen (Widgets, Unite, etc.). En este caso se agrego soporte a extensiones las cuales, segun opera, son estándar y se podrían usar en cualquier browser. Adicionalmente se sigue agregando soporte a HTML5, introduciendo <a href="http://my.opera.com/core/blog/websockets">websockets</a>, y por ultimo se mejoro el performance actualizando el motor Presto a la versión 2.6.37.<br />
<br />
Para probar esta versión usen este <a href="http://www.opera.com/browser/next/">enlace</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiKTWHaA4hNJltUDjm4fvG3zsHSFwjCzBeKGqgaWow_uqG-XnBdJR68EPhf-vbN37c92p23bAEOK1O-opxQBJUSXCRZxFpleWR0dVO1f8PRGhy6Ilndc9R-E0jpF2SaRoWcuWh78GicmS_/s1600/o11_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiKTWHaA4hNJltUDjm4fvG3zsHSFwjCzBeKGqgaWow_uqG-XnBdJR68EPhf-vbN37c92p23bAEOK1O-opxQBJUSXCRZxFpleWR0dVO1f8PRGhy6Ilndc9R-E0jpF2SaRoWcuWh78GicmS_/s320/o11_01.png" width="320" /></a></div>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-77201797002498776002010-10-14T11:55:00.000-05:002010-10-14T11:55:29.141-05:00Sonar 2.3 disponibleYa esta disponible la versión 2.3 de <a href="http://www.sonarsource.org/">Sonar</a>. Para descargarlo usen este enlace. Es bueno que revisen las notas de <a href="http://docs.codehaus.org/display/SONAR/Release+2.3+Upgrade+Notes">actualización</a> asi como la matriz de compatibilidad de los <a href="http://docs.codehaus.org/display/SONAR/Plugin+version+matrix">plugins</a>.<br />
<br />
<br />
<br />
Release Notes - Sonar - Version 2.3<br />
<br />
<h2>
Bug
</h2>
<ul>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-343">SONAR-343</a>] - When a rule is removed from the repository, it should be remove from the DB as well
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-440">SONAR-440</a>] - Warning when some rules are not imported from a checkstyle and/or PMD configuration file(s)
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-942">SONAR-942</a>] - Export rules configuration fails when quality profile name contains the '.' character
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1073">SONAR-1073</a>] - Column "RULE_FAILURES"."MESSAGE" is too short (maximum : 500)
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1137">SONAR-1137</a>] - When no rule engine exist on a language, all other rules are shown on the screen
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1315">SONAR-1315</a>] - Automatically filter Findbugs violations and Code coverage metrics on classes without sources
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1342">SONAR-1342</a>] - The pluginKey associated to an active rule can be wrong
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1480">SONAR-1480</a>] - No way to export Findbugs rules in a XML file and then to reimport this file to create a new Quality profile
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1549">SONAR-1549</a>] - The Sonar profile creation form doesn't allow to import checkstyle,pmd and Findbugs conf files when several langages are defined
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1637">SONAR-1637</a>] - Getting "Java inner classes are not supported" Sonar error when analyzing Cobertura report
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1638">SONAR-1638</a>] - Warning while parsing enums
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1644">SONAR-1644</a>] - A protected method from a class A which is only used by classes extended A are badly considered as dead code.
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1654">SONAR-1654</a>] - Export rules in rules engine exports everything (Java, PHP, VB...) when you select any in plugins
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1666">SONAR-1666</a>] - Some Findbugs violations are missing in the Sonar web interface
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1685">SONAR-1685</a>] - The maven plugin fails if the property sonar.host.url ends with a slash
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1687">SONAR-1687</a>] - Filters fail when three criteria are defined
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1689">SONAR-1689</a>] - Sorting on alerts does not work anymore
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1693">SONAR-1693</a>] - Server-side extensions can not use external dependencies
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1697">SONAR-1697</a>] - XML default property values are not correctly displayed in the Settings pages
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1702">SONAR-1702</a>] - NoClassDefFoundError when using sonar-ws-client with Commons HttpClient 4.0
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1712">SONAR-1712</a>] - Fail to delete a filter if embedded database
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1715">SONAR-1715</a>] - Web Services Java Client lib : socket timeout not set
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1721">SONAR-1721</a>] - Checkstyle violation is reported for MethodParamPad since Sonar seems to be missing option in rule
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1727">SONAR-1727</a>] - Warning when aggregating empty distributions
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1736">SONAR-1736</a>] - Description of the Checkstyle "Visibility Modifier" rule is error prone
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1738">SONAR-1738</a>] - NPE in EmbeddedDatabaseFactorywhen using JNDI datasource
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1751">SONAR-1751</a>] - The method org.sonar.gwt.Utils.getPageWidth() returns 0 in IE6
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1753">SONAR-1753</a>] - Time Machine chart is not secured
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1758">SONAR-1758</a>] - Unit test EventUnmarshallerTest on ws-client module can fail according to the timezone of the machine
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1767">SONAR-1767</a>] - Violations do not show when using id instead of kee in violation drilldown to reference rule
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1768">SONAR-1768</a>] - Import of Checkstyle configuration with "message" element fails
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1774">SONAR-1774</a>] - AbstractTokenizer does not add token entries
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1793">SONAR-1793</a>] - Wrong URL construction in ViolationQuery, when depth parameter used
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1802">SONAR-1802</a>] - Can't import FindBugs profile when some rules are duplicated in the findbugs.xml configuration file
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1805">SONAR-1805</a>] - The PMD rule CloneMethodMustImplementCloneable is badly configured in the Sonar Way quality profile (and so not activated in this default profile)
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1812">SONAR-1812</a>] - The declaration @BelongsTo(classes=GeneratesViolations.class) does not work
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1813">SONAR-1813</a>] - If the method DecoratorContext.getViolations() is called by a decorator before the ViolationsDecorator, all violations saved between those two decorators are lost
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1833">SONAR-1833</a>] - treemap ignores fractional part of metrics
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1843">SONAR-1843</a>] - The webservice /api/properties fails when requested format is XML
</li>
</ul>
<h2>
Improvement
</h2>
<ul>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-236">SONAR-236</a>] - Checkstyle implementation only allows one check per Checkstyle class
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-555">SONAR-555</a>] - Permalink on Time Machine charts
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-736">SONAR-736</a>] - Reuse findbugs reports
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-964">SONAR-964</a>] - Multiple Regexp hard to distinguish
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-990">SONAR-990</a>] - Add an option to activate/deactivate all the selected rules of the profile admin console
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1024">SONAR-1024</a>] - Improve the rules search engine by displaying the number of results for not selected rule level (Inactive rule)
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1290">SONAR-1290</a>] - Improve SQL requests on the Q profiles page
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1328">SONAR-1328</a>] - Ability to personalize the CheckStyle SuppressionCommentFilter and SuppressWithNearbyCommentFilter modules
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1404">SONAR-1404</a>] - Allow to rename quality profile
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1534">SONAR-1534</a>] - Activation of all the default FindBugs rules
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1557">SONAR-1557</a>] - Findbugs should not analyzed *.jar files stored in the target/classes directory
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1607">SONAR-1607</a>] - Missing FindBugs rules
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1634">SONAR-1634</a>] - Defining a new metric with existing key results in confusing message
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1641">SONAR-1641</a>] - Exclude certain member variables (esp. logger instances) from the LCOM4 calculation
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1665">SONAR-1665</a>] - Upgrade to Commons DBCP 2.3
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1669">SONAR-1669</a>] - Add info about JDBC driver in the System Info page
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1670">SONAR-1670</a>] - Upgrade the MySql driver from version 5.1.6 to 5.1.13
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1674">SONAR-1674</a>] - Log user agent in Jetty logs
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1698">SONAR-1698</a>] - Remove the "Translation" Checkstyle rule as it works only on property files
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1701">SONAR-1701</a>] - API: search profile rules by config key
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1706">SONAR-1706</a>] - Depreciate sonar.reuseExistingRulesConfiguration
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1745">SONAR-1745</a>] - Add URL parameters to time machine charts
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1747">SONAR-1747</a>] - Add the ability to instantiate a new KeywordColorizer with a regular expression
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1749">SONAR-1749</a>] - MavenPlugin api, offer way to build nested xml-elements
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1757">SONAR-1757</a>] - Improve the error log message when a "javax.persistence.NonUniqueResultException" is thrown
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1761">SONAR-1761</a>] - Missing example in the ConstructorCallsOverridableMethod PMD rule description
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1763">SONAR-1763</a>] - Optional generation of the Checkstyle XML report
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1776">SONAR-1776</a>] - Add a page "Permalinks" to the profile console
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1778">SONAR-1778</a>] - Missing description for some system plugins
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1780">SONAR-1780</a>] - An exception should be thrown in case when two Sonar plugins try to use the same key
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1781">SONAR-1781</a>] - The use of org.sonar.api.batch.AbstractSourceImporter is error prone when importing Unit Test source code
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1798">SONAR-1798</a>] - Ability to register a number of points to a rule violation
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1814">SONAR-1814</a>] - New extension point : factory of extensions
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1822">SONAR-1822</a>] - Add the property 'sonar.skipTendencies' to skip calculation of measure tendencies
</li>
</ul>
<h2>
New Feature
</h2>
<ul>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-738">SONAR-738</a>] - Honor Checkstyle Suppressions XML Document
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1229">SONAR-1229</a>] - Export/Import a given Sonar quality profile
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1709">SONAR-1709</a>] - Add static resources to plugins
</li>
<li>[<a href="http://jira.codehaus.org/browse/SONAR-1766">SONAR-1766</a>] - Create a new PMD XPath rule and let user duplicate this rule as often as necessary
</li>
</ul>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-25765363924785818432010-10-08T08:42:00.000-05:002010-10-08T08:42:52.293-05:00Maven 3 disponible!!!!Hoy fue liberado por Sonatype la versión 3.0 de Maven. Para descargarlo usen este <a href="http://www.sonatype.com/people/2010/10/maven-3-0-has-landed/">enlace</a>. La gente de Sonatype indica que los proyectos usando versión 2 deberían funcionar sin problemas con la 3 pero es bueno revisar la tabla de compatibilidad para estar seguros. La tabla esta en este <a href="https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html">enlace</a>.<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New", "Courier", monospace;">C:\>mvn -version<br />Apache Maven 3.0 (r1004208; 2010-10-04 07:50:56-0400)<br />Java version: 1.6.0_14<br />Java home: C:\Program Files\Java\jdk1.6.0_14\jre<br />Default locale: en_US, platform encoding: Cp1252<br />OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"</span></span><br />Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-7798301311806247342010-08-19T10:05:00.000-05:002010-08-19T10:05:45.435-05:00Revisando el arbol de dependecias de un proyecto con MavenPara ver el árbol de dependencias de un proyecto usando <a href="http://maven.apache.org/index.html">maven</a> solo debemos usar el plugin <a href="http://maven.apache.org/plugins/maven-dependency-plugin/index.html">dependency</a> y ejecutar el comando<br />
<div align="center">
<br /></div>
<div align="center">
<span style="font-family: "Courier New", "Courier", monospace;">mvn dependency:tree</span></div>
<div align="left">
<br />
Ejemplo:</div>
<script class="brush:text" type="syntaxhighlighter">
<![CDATA[
$ mvn dependency:tree
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Admin SVN :: Web Application
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] com.todo1.svnadmin:AdminSVN:war:1.1.1-SNAPSHOT
[INFO] +- javax.servlet:servlet-api:jar:2.3:provided (scope not updated to compile)
[INFO] +- org.springframework:spring:jar:2.0.5:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1:compile
[INFO] | +- log4j:log4j:jar:1.2.12:compile
[INFO] | +- logkit:logkit:jar:1.0.1:compile
[INFO] | \- avalon-framework:avalon-framework:jar:4.1.3:compile
[INFO] +- mysql:mysql-connector-java:jar:5.0.5:compile
[INFO] +- xerces:xercesImpl:jar:2.8.1:compile
[INFO] +- commons-dbcp:commons-dbcp:jar:1.2.1:compile
[INFO] | +- commons-collections:commons-collections:jar:2.1:compile
[INFO] | \- commons-pool:commons-pool:jar:1.2:compile
[INFO] +- taglibs:standard:jar:1.1.2:compile
[INFO] +- javax.servlet:jstl:jar:1.1.2:compile
[INFO] +- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] \- displaytag:displaytag:jar:1.1.1:compile
[INFO] +- commons-lang:commons-lang:jar:2.3:compile
[INFO] +- com.lowagie:itext:jar:1.3:compile
[INFO] +- commons-beanutils:commons-beanutils:jar:1.7.0:compile
[INFO] +- org.slf4j:jcl104-over-slf4j:jar:1.4.2:compile
[INFO] \- org.slf4j:slf4j-log4j12:jar:1.4.2:compile
[INFO] \- org.slf4j:slf4j-api:jar:1.4.2:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4 seconds
[INFO] Finished at: Thu Aug 19 10:49:39 EDT 2010
[INFO] Final Memory: 10M/22M
[INFO] ------------------------------------------------------------------------
]]>
</script><br />
<br />
<br />
<div align="left">
Si usan Eclipse y tienen el plugin m2eclipse pueden también ver el árbol así como el gráfico de dependencias<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1hFTC3kh1R8X9vwglvIka8QEbiPt47-nyoyObgGmzH10BOGyyHGddimUrTZVGs-w2WR6z-bAtHsSuAYogN0VFsqhPSZVPa82ustpOuL4QY2Ptp8-QIfu25Blh9sGMIgW8R8VkxtC8P6cs/s1600/dependencytree.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="323" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1hFTC3kh1R8X9vwglvIka8QEbiPt47-nyoyObgGmzH10BOGyyHGddimUrTZVGs-w2WR6z-bAtHsSuAYogN0VFsqhPSZVPa82ustpOuL4QY2Ptp8-QIfu25Blh9sGMIgW8R8VkxtC8P6cs/s400/dependencytree.png" width="400" /></a></div>
</div>
<div align="left">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEJTELU1CCqHGPuDquaEBIx6FJ_jR5QavZZRW-jAC8_cgJr_7HjfpEFivxUodrLH6sDbmhIviTZvAVXBOPMImNAcAhgHimIZ4sIelu5Iiyj8qmZftK6IZecsrcjNN4OhIod8nYYPDaImgn/s1600/dependencygraph.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEJTELU1CCqHGPuDquaEBIx6FJ_jR5QavZZRW-jAC8_cgJr_7HjfpEFivxUodrLH6sDbmhIviTZvAVXBOPMImNAcAhgHimIZ4sIelu5Iiyj8qmZftK6IZecsrcjNN4OhIod8nYYPDaImgn/s400/dependencygraph.png" width="400" /></a></div>
<br /></div>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-89621197226800328312010-08-18T10:04:00.000-05:002010-08-18T10:04:36.541-05:00Verificando versiones de dependencias en un proyecto con MavenNunca han tenido la necesidad de saber que tan al día están las versiones de las dependencias de un proyecto? Si usan <a href="http://maven.apache.org/">maven</a> es muy fácil responder esa pregunta usando el plugin <a href="http://mojo.codehaus.org/versions-maven-plugin/">versions</a>. Solo falta ejecutar el comando<br />
<br />
<div align="center"><b><span style="font-family: "Courier New", "Courier", monospace;">mvn versions:display-dependency-updates </span></b></div><br />
y maven se encargara de revisar contra el repositorio central cuales dependencias tienen nuevas versiones y cuales no. Ejm:<br />
<br />
<script class="brush:text" type="syntaxhighlighter">
<![CDATA[
$mvn versions:display-dependency-updates
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'versions'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Admin SVN :: Web Application
[INFO] task-segment: [versions:display-dependency-updates]
[INFO] ------------------------------------------------------------------------
[INFO] [versions:display-dependency-updates {execution: default-cli}]
[INFO] artifact displaytag:displaytag: checking for updates from central
[INFO] artifact javax.servlet:servlet-api: checking for updates from central
[INFO] artifact jstl:jstl: checking for updates from central
[INFO] artifact mysql:mysql-connector-java: checking for updates from central
[INFO] artifact org.springframework:spring: checking for updates from central
[INFO] artifact taglibs:standard: checking for updates from central
[INFO] artifact xerces:xercesImpl: checking for updates from central
[INFO] artifact xml-apis:xml-apis: checking for updates from central
[INFO] The following dependencies in Dependencies are using the newest version:
[INFO] jstl:jstl ...................................................... 1.1.2
[INFO] taglibs:standard ............................................... 1.1.2
[INFO] xml-apis:xml-apis .............................................. 2.0.2
[INFO]
[INFO] The following dependencies in Dependencies have newer versions:
[INFO] commons-dbcp:commons-dbcp ............................... 1.2.1 -> 1.4
[INFO] displaytag:displaytag ................................... 1.1.1 -> 1.2
[INFO] javax.servlet:servlet-api ................................. 2.3 -> 2.5
[INFO] junit:junit ........................................... 3.8.1 -> 4.8.1
[INFO] mysql:mysql-connector-java ........................... 5.0.5 -> 5.1.13
[INFO] org.springframework:spring ............................ 2.0.5 -> 2.5.6
[INFO] xerces:xercesImpl ..................................... 2.8.1 -> 2.9.1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 46 seconds
[INFO] Finished at: Wed Aug 18 10:42:10 EDT 2010
[INFO] Final Memory: 12M/25M
[INFO] ------------------------------------------------------------------------
]]>
</script><br />
<br />
<br />
El plugin también se utiliza para ejecutar diferentes operaciones de administracion de las dependencias, tales como actualizar alguna version, cambiar los SNAPSHOTS por versiones release, actualizar todas las dependencias a su ultima version, etcAnonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-41617443953215263352010-08-12T08:26:00.000-05:002010-08-12T08:26:26.915-05:00Opera 10.61 disponibleHoy fue liberada la versión de mantenimiento 10.61 del browser Opera. Esta versión incluye varias mejoras de seguridad y estabilidad. Para ver la lista completa de mejoras revisen este <a href="http://www.opera.com/docs/changelogs/windows/1061/">enlace</a>.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-3814916293633301402010-06-23T16:30:00.000-05:002010-06-23T16:30:23.954-05:00Eclipse 3.6.0 Helios disponibleHoy fue liberada la versión anual de <a href="http://eclipse.org/">Eclipse</a>. Este año se denomina Helios, y como es costumbre fue liberada junto a <a href="http://eclipse.org/helios/projects.php">39 proyectos</a> adicionales de forma simultanea. Para bajar la versión usen este <a href="http://eclipse.org/downloads/">enlace</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMnUnK4kTbS2IEAlqdt9JDaRUqho6IIGRyFM2UhfyFGzBwr6OixWOEufBYzM8ODDWD_8TAYz7tzDx6W26aBKYd0OYLFA0Y52gubI9fMoSaDifmC7SEfczMo8eGTjAPmCEuFgrMcAaAZewQ/s1600/helios.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMnUnK4kTbS2IEAlqdt9JDaRUqho6IIGRyFM2UhfyFGzBwr6OixWOEufBYzM8ODDWD_8TAYz7tzDx6W26aBKYd0OYLFA0Y52gubI9fMoSaDifmC7SEfczMo8eGTjAPmCEuFgrMcAaAZewQ/s400/helios.png" width="400" /></a></div>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-14632416419086403262010-06-16T08:24:00.000-05:002010-06-16T08:24:31.378-05:00Opera 10.60 Beta disponible<a href="http://www.opera.com/">Opera</a> acaba de liberar la versión 10.60 Beta para pruebas. Esta nueva versión tiene bastantes mejoras con respecto a la versión oficial 10.53. Una de las cosas mas interesantes de esta versión es el soporte a nuevas funcionalidades definidas en <a href="http://en.wikipedia.org/wiki/HTML5">HTML 5</a>. A continuación listo algunas de las nuevas características:<br />
<ul><li>Mas rápido que la versión anterior. Se hicieron ajustes al motor de javascript que permiten tener mejoras de hasta 75% en algunas pruebas de performance.</li>
<li>Se introducen las siguientes tecnologias definidas en HTML 5: <a href="http://en.wikipedia.org/wiki/Webm">WebM</a>, <a href="http://en.wikipedia.org/wiki/Geolocation_software">Geolocation</a>, <a href="http://en.wikipedia.org/wiki/Web_Workers">Web Workers</a>, Offline Web Applications, Cross-Document Messaging update.</li>
<li>Mejoras en el UI: Speed dial, Menu, tabs, etc</li>
</ul> Para descargar y probar esta versión usen este <a href="http://www.opera.com/browser/next/">enlace</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikdVViv8_GUPPuaeqRmcNQm4hLEciWFkgZ0dDiLqdRYMxSOSjLdZ5ny2RtW6wAwStpwWI0JjWA1QCWrz4Tr46DcmABSc8vxlzFFrQutNfQN72n7OAxK-5oqCMf4oBkq8M2iVaTwKu22S1J/s1600/001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikdVViv8_GUPPuaeqRmcNQm4hLEciWFkgZ0dDiLqdRYMxSOSjLdZ5ny2RtW6wAwStpwWI0JjWA1QCWrz4Tr46DcmABSc8vxlzFFrQutNfQN72n7OAxK-5oqCMf4oBkq8M2iVaTwKu22S1J/s400/001.png" width="400" /></a></div>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-34613261320337225872010-05-21T11:06:00.000-05:002010-05-21T11:06:42.429-05:00Google celebra el 30 aniversario de Pacman<a href="http://www.google.com/">Google</a> esta celebrando el aniversario 30 de <a href="http://en.wikipedia.org/wiki/Pac-Man">Pacman</a> colocando en su pagina principal una versión del juego totalmente funcional (usar flechas) donde el laberinto o mapa es la palabra GOOGLE. Ademas tiene un botón de agregar moneda para incluir un segundo jugador (teclas asdwx).<br />
<br />
Si quieres retornar al pasado visita la pagina el día de hoy :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDGEW1pWsnHvc-yGKnqb8dRY3ivEERQpkVZo8SeCPC6zcdXluXnBjr4j3Baf6TMo5oacKThOPb8byRoBvvm17_xwJnW9Dtxpr13DiH80SxmxksJDm71IAF3ToUYP-Hs0-OLEqAzxTEzjDE/s1600/pacman-30th.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDGEW1pWsnHvc-yGKnqb8dRY3ivEERQpkVZo8SeCPC6zcdXluXnBjr4j3Baf6TMo5oacKThOPb8byRoBvvm17_xwJnW9Dtxpr13DiH80SxmxksJDm71IAF3ToUYP-Hs0-OLEqAzxTEzjDE/s400/pacman-30th.jpg" width="400" /></a></div><br />
Disfrutenlo....Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-56077450474506038832010-04-23T14:39:00.000-05:002010-04-23T14:39:44.932-05:00Apache Maven 3.0-beta-1 disponibleYa esta disponible la versión 3.0-beta-1 de <a href="http://maven.apache.org/">Apache Maven</a>, para descargarla deben usar este <a href="http://maven.apache.org/download.html">enlace</a>. Aunque se ha tratado de mantener compatibilidad con versiones anteriores hay algunos puntos que se deben revisar si se quiere actualizar un proyecto 2.x a la versión 3. <a href="https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html">Aquí</a> pueden revisar la lista completa de incompatibilidad conocida hasta el momento.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-59479988208740533172010-03-26T09:52:00.001-05:002010-03-26T09:54:23.047-05:00Blogger in Draft con Template Designer<a href="http://www.blogger.com/">Blogger</a> ha liberado hoy una nueva versión de su sistema de blogs llamado <a href="http://draft.blogger.com/">Blogger in Draft</a>. Esta nueva versión tiene un editor de la plantilla del blog que permite modificar prácticamente todo lo que queramos y no modifica nuestro blog hasta que se salven los cambios. Para usar este nuevo servicio deben ir a la siguiente página <a href="http://draft.blogger.com/">http://draft.blogger.com</a>, seleccionar editar el layout del blog y probar todas las opciones disponibles. A continuación pueden ver algunas de las opciones:<br />
<br />
Seleccionar el diseñador de plantillas<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNAZOgv7lBNaL08HWKWW7M7BdMDwd57YuTLUBBJTraUhQZ4Ceh427_8NQdiqXmO0kKm1WfY2DhEaDmVQ9DBbf5DjctqbkFFaW22SLSHZFL4A31BsS8_Kzta9gIs3l0pdtDpCnuC8trZ8KJ/s1600-h/bdraft01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="71" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNAZOgv7lBNaL08HWKWW7M7BdMDwd57YuTLUBBJTraUhQZ4Ceh427_8NQdiqXmO0kKm1WfY2DhEaDmVQ9DBbf5DjctqbkFFaW22SLSHZFL4A31BsS8_Kzta9gIs3l0pdtDpCnuC8trZ8KJ/s320/bdraft01.png" width="320" /></a></div><br />
Pagina principal del editor<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkFCQsrS71WcDw3MWKax1yfeUFJIc6HufV_KRGSQ-sX-allU5FcRa2ibZ3NtHdObCN-9rrAVO1xgltt-KttBr5maqj1hr8Txr7bP0snS__HT3bZwY0vg7jaPKy1FRr5b64pO7dABwmo_Bs/s1600-h/bdraft02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkFCQsrS71WcDw3MWKax1yfeUFJIc6HufV_KRGSQ-sX-allU5FcRa2ibZ3NtHdObCN-9rrAVO1xgltt-KttBr5maqj1hr8Txr7bP0snS__HT3bZwY0vg7jaPKy1FRr5b64pO7dABwmo_Bs/s320/bdraft02.png" width="320" /></a></div><br />
Algunas de las opciones<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGnKV30QO35D9YhCERy_UgaedUIo5MvsXRkDt9Qxtst_BTLUbEEOgxAx-SSyW-jd1-CjxIs3HjaPBlpFmHnRVOY1C-isVITe_rnh2jIjZih4av6fi3jeBz162gajwBDrgu8hIyLJrL2bQy/s1600-h/bdraft04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="119" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGnKV30QO35D9YhCERy_UgaedUIo5MvsXRkDt9Qxtst_BTLUbEEOgxAx-SSyW-jd1-CjxIs3HjaPBlpFmHnRVOY1C-isVITe_rnh2jIjZih4av6fi3jeBz162gajwBDrgu8hIyLJrL2bQy/s320/bdraft04.png" width="320" /></a></div><br />
Selección de imagen de fondo<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEDIMOEuozCrrcKbkaqjmdQWo1ytPDVAJHY5UsNrTTM70R_lqat0JoBEwVMT7QQdCLDhTdMQy2ICp07s0TFjwJw_j9duynQsxNp-9jJTNRoepyrGLeGwUvG7U8VVKBoJlW-9BiHxkpuIZB/s1600-h/bdraft03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEDIMOEuozCrrcKbkaqjmdQWo1ytPDVAJHY5UsNrTTM70R_lqat0JoBEwVMT7QQdCLDhTdMQy2ICp07s0TFjwJw_j9duynQsxNp-9jJTNRoepyrGLeGwUvG7U8VVKBoJlW-9BiHxkpuIZB/s320/bdraft03.png" width="320" /></a></div><br />
<br />
<br />
Para más información usen este <a href="http://bloggerindraft.blogspot.com/2010/03/blogger-template-designer.html">enlace</a>.<br />
<br />
IMPORTANTE: Al salvar el nuevo formato se sobreescribe la versión anterior, si el blog actual tiene personalización a nivel del html (Layout -> Edit HTML) , tal como ocurre cuando se configura con <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter:Usage">Syntax Highlighter</a> deben hacer un respaldo de la versión actual (boton derecho -> view source sirve) y luego de cambiado el blog volver a editar el html y agregar las definiciones necesarias.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-28924550786479531692010-03-19T12:19:00.000-05:002010-03-19T12:19:11.491-05:00El futuro de MavenCon el lanzamiento de <a href="http://maven.apache.org/">Maven</a> 3.0 para mediados de este año, el sitio <a href="http://jaxenter.com/">Jazen</a> realizo una <a href="http://jaxenter.com/maven-3-0-the-future-of-maven-10580.html">entrevista</a> a Jason van Zyl (fundador de maven) para ver que debemos esperar los usuarios de esta nueva versión. Entre los puntos tratados están<br />
<ul><li>Compatibilidad con versiones anteriores</li>
<li> Soporte/integración con lenguajes dinámicos</li>
<li>Compatibilidad con m2eclipse</li>
<li>Cambios a nivel de configuración</li>
<li>Introduccion de POM mixins como mecanismo para compartir configuracion entre los pom sin necesidad de usar herencia (parent-pom)</li>
<li>Administrador de seguridad integrado con <a href="http://nexus.sonatype.org/">Nexus</a></li>
</ul><br />
Para leer la entrevista completa usen este <a href="http://jaxenter.com/maven-3-0-the-future-of-maven-10580.html">enlace</a>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-60676269531791166082010-03-02T09:58:00.001-05:002010-03-02T15:27:50.210-05:00Opera 10.50 para Windows disponible<a href="http://www.opera.com/">Opera</a> libero hoy la versión 10.50 de su browser para desktop pero solo para la plataforma Windows. Las versiones de Mac y Linux todavía están en <a href="http://my.opera.com/desktopteam/blog/2010/03/02/windows-10-50-is-released">desarrollo</a>. Entre las mejoras que ofrece esta versión están:<br />
<br />
<ul><li>Velocidad: Con el remplazo del viejo motor de JavaScript por uno desarrollado desde cero (Carakan) Opera indica que este es el browser mas rápido que existe hoy en día. En mis pruebas supera fácilmente a Firefox e IE, pero la pelea con Chrome es bien cerrada</li>
<li>Private browsing: La navegación privada ya esta presente en la mayoría de los browsers de nueva generación, Opera es uno de los últimos en adoptar esta facilidad.</li>
<li>Top Security: Opera siempre ha sido uno de los browsers mas seguros del mercado, y esta versión sigue el mismo patrón.</li>
<li>Desktop widgets: los widgets de opera ahora se pueden instalar como aplicaciones independientes del browser.</li>
<li>Optimizado para Windows: Esta versión se integra muy bien con windows, especialmente con las versiones Vista y 7</li>
<li>Introduce una nueva librería de video denominada VEGA: soporte para SVG y canvas</li>
<li>Nueva versión del motor Presto con soporte a HTML5 y CCS3. Pueden probar el tag video en este <a href="http://snapshot.opera.com/resources/BigBuckBunny.html">enlace</a>.</li>
</ul><div><br />
</div><div><br />
</div>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-26965987155604659442010-02-11T12:15:00.000-05:002010-02-11T12:15:26.506-05:00Opera 10.50 Beta disponibleOpera libero hoy la versión <a href="http://www.opera.com/browser/next/">10.50Beta</a> de su browser para desktop. Esta versión esta mas enfocada al ambiente windows que linux o mac y es considerada por ellos como el browser mas rápido en este momento; como soporte a esta afirmación publicaron una serie de <a href="http://my.opera.com/chooseopera/blog/a-new-era-of-browser-speed">pruebas</a> que lo demuestran. Si desean probar un browser bien rapido descarguenlo y disfutenlo :)<br />
<br />
Recuerden que es una versión beta y por lo tanto puede ser inestable bajo ciertas condiciones. Si encuentran defectos los pueden reportar en esta página <a href="https://bugs.opera.com/wizard/">https://bugs.opera.com/wizard/</a>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-85496401635890975412010-01-21T13:38:00.000-05:002010-01-21T13:38:33.768-05:00Apache Continuum 1.3.5 disponibleYa esta disponible la versión <a href="http://continuum.apache.org/download.html">1.3.5beta</a> de <a href="http://continuum.apache.org/index.html">Apache Continuum</a>, la herramienta de integración continua de Apache. La lista de cambios la pueden revisar en este <a href="http://continuum.apache.org/docs/1.3.5/release-notes.html">enlace</a>.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-13993171672188049462009-12-22T14:40:00.000-05:002009-12-22T14:40:03.436-05:00Opera 10.50 pre-alpha disponibleLa gente de <a href="http://labs.opera.com/news/2009/12/22/">Opera</a> libero hoy una versión de laboratorio de lo que sera la versión 10.50 de su browser. Esta versión esta calificada como 10.50 pre-alpha lo que significa que es bien inestable pero permite introducir nuevos componentes y funcionalidades que formaran parte de la versión final. Lo mas interesante de esta version es la mejora significativa en velocidad. Entre los cambios que se introducen tenemos<br />
<br />
<br />
<ul><li>Se reemplaza el motor de JavaScript denominado Futhark con el nuevo <a href="http://my.opera.com/core/blog/2009/12/22/carakan-revisited">Carakan</a>, el cual esta reescrito desde cero y que ofrece velocidad en el manejo de JavaScript el cual supera en muchas pruebas a Chrome y Firefox</li>
<li>Presto 2.5 con soporte a HTML5, CSS3 y transformadas CSS3</li>
<li>VEGA (Vector Graphics Library): librería para SVG y canvas. Por el momento solo soporta rendering por software pero en el futuro se podra usar por hardware</li>
<li>Navegación privada por tab. Se pueden tener tabs privados y tabs normales al mismo tiempo</li>
<li>Buscador en linea y barra de direcciones mejorado</li>
<li>Dialogos Non-Modal, lo cual permite cambiarse de tab o ventana mientras el dialogo esta presente</li>
<li>Integración con Windows 7 y Mac OS</li>
</ul><div><br />
</div><div>Como dije anteriormente, esta versión es de laboratorio y es bastante inestable pero vale la pena instalarla para pruebas.</div><div><br />
</div><div>A continuación algunas imágenes de esta versión</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixOXcs-84buX1prtZUtfm93YsemzNDRWM0FJHEbJROjYvAFA8NJbS-F9GHwK2nfg_PkNxwVDMD-w3hi68oaijvj_4t6dl-P5YW7lYdGZ72EFEI8Ky3AIziAw18r7eLW0jMuzo-QYf5Em2F/s1600-h/opera1050a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixOXcs-84buX1prtZUtfm93YsemzNDRWM0FJHEbJROjYvAFA8NJbS-F9GHwK2nfg_PkNxwVDMD-w3hi68oaijvj_4t6dl-P5YW7lYdGZ72EFEI8Ky3AIziAw18r7eLW0jMuzo-QYf5Em2F/s320/opera1050a.jpg" /></a><br />
</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUjK71b-OMnpSqFXaYziHSzB7pBb3DrzesAOd5ZJGHlSBwg5DehRZ-Xos2ehgL9RNrx9XM3Pyfke_h8DnJV-u0wh6ozzqw5xPJY85EDY3_T1ircxIl_bvkNuC57pxw-jVlUtNiZW5bF35O/s1600-h/opera1050b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUjK71b-OMnpSqFXaYziHSzB7pBb3DrzesAOd5ZJGHlSBwg5DehRZ-Xos2ehgL9RNrx9XM3Pyfke_h8DnJV-u0wh6ozzqw5xPJY85EDY3_T1ircxIl_bvkNuC57pxw-jVlUtNiZW5bF35O/s320/opera1050b.jpg" /></a><br />
</div><div><br />
</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFXckv5aACoZ4-XRg6VZb9sYgJquxDVZSxiHHPS5jpLznGk1vEDilgVg84P7rXigtn3SYuUrH7uGw0zCO80lbkggmq3is2Eh88HFFF2FB0d7upQ6gPtKVHTzBf36gZRCI1BXQXywZqtUGl/s1600-h/opera1050c.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFXckv5aACoZ4-XRg6VZb9sYgJquxDVZSxiHHPS5jpLznGk1vEDilgVg84P7rXigtn3SYuUrH7uGw0zCO80lbkggmq3is2Eh88HFFF2FB0d7upQ6gPtKVHTzBf36gZRCI1BXQXywZqtUGl/s320/opera1050c.jpg" /></a><br />
</div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN8xt_JjKfJhpWTKin688xpU-rRXxgY2GjSfLJyHVLifI7F2U-vp6FgyaUH6DCwfiwR4JTd7bU3CL6vDb1m6n6nLLiAoUaYP8fu9PQBQsHCgC0zE5ip1vjZ-bDqE-7pktO1qvdpatCfUQy/s1600-h/opera1050d.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN8xt_JjKfJhpWTKin688xpU-rRXxgY2GjSfLJyHVLifI7F2U-vp6FgyaUH6DCwfiwR4JTd7bU3CL6vDb1m6n6nLLiAoUaYP8fu9PQBQsHCgC0zE5ip1vjZ-bDqE-7pktO1qvdpatCfUQy/s320/opera1050d.jpg" /></a><br />
</div>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-15333794856933285822009-12-16T11:53:00.000-05:002009-12-16T11:53:24.342-05:00Sonatype Nexus 1.4.1 disponibleHoy Sonatype libero la version 1.4.1 del administrador de repositorios de maven <a href="http://nexus.sonatype.org/">Nexus</a>. Esta version incluye mas de 90 mejoras y correcciones. La lista de cambios completa la pueden ver <a href="https://issues.sonatype.org/secure/ReleaseNote.jspa?projectId=10001&version=10323">aqui</a>.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-42820534096082009302009-12-16T11:08:00.004-05:002009-12-16T11:45:24.869-05:00Usando SyntaxHighlighter en Blogger<a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter">SyntaxHighlighter</a> es un conjunto de javascripts y css usados para darle formato a codigo fuente en paginas html. Para poder usarlo desde Blogger se debe realizar la siguiente configuracion<br />
<br />
<ol><li>Seleccionar Layout -> Edit Html desde la pagina de configuracion</li>
<li>Ubicar la seccion <head></li>
<li>Copiar la siguiente definicion justo despues del tag head y salvar el template. En este bloque solo agregue los lenguajes que yo uso mas frecuentes. Para ver la lista completa usen este <a href="http://alexgorbatchev.com/pub/sh/current/scripts/">enlace</a><br />
<script class="brush:js" type="syntaxhighlighter">
<![CDATA[
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeEclipse.css' rel='stylesheet' type='text/css'/>
<script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js'/>
<script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js'/>
<script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js'/>
<script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js'/>
<script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js'/>
<script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js'/>
<script type='text/javascript'>SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf';SyntaxHighlighter.all();
]]>
</script><br />
</li>
</ol><br />
Para poder usarlo en un post deben editar en html el mismo y usar la siguiente definicion<br />
<br />
<script class="brush:js" type="syntaxhighlighter">
<![CDATA[
<script class="brush:js" type="syntaxhighlighter">
<![CDATA[
..... Tu codigo ......
]]>
]]>
</script><br />
<br />
<br />
Despues de brush se debe indicar el tipo de codigo usado. <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter:Brushes">Aqui</a> se tiene una lista de los valores permitidos.<br />
<br />
Es importante definir solo lo necesario ya que colocarlas todas puede hacer que la pagina tarde en cargar.<br />
<br />
Un ultimo detalle, los cambios realizados solo se ven despues de publicar el post. Durante la edicion o si se salva como draft no se ven los cambios. Ademas al momento de publicar, el editor indica que hay un error con el CDATA, solo hay que indicarle que lo ignore y listo.<br />
Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-13421079440977262852009-11-24T09:22:00.001-05:002009-11-24T09:25:28.173-05:00Opera 10.10 - Unite disponibleYa esta disponible la versión 10.10 de <a href="http://www.opera.com/">Opera</a>. Esta versión libera la nueva funcionalidad llamada Unite donde el mismo browser se convierte en una especie de servidor que permite compartir imagenes, musica y muchas cosas mas entre gente conocida. Esta muy interesante y recomiendo que le den una mirada. Para descargarlo usen este <a href="http://www.opera.com/browser/">enlace</a> y para ver mas detalle sobre Unite pueden revisar este <a href="http://fherrerav.blogspot.com/2009/06/opera-unite-opera-reinventa-la-web.html">articulo</a> que publique con anterioridad.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-53534321900231731732009-11-13T22:33:00.008-05:002009-11-13T23:13:11.140-05:00Maven 3.0 alpha-3 disponibe<p>Ya esta disponible la versión 3.0 alpha-3 de <a href="http://maven.apache.org/index.html">Maven</a>. Según los desarrolladores es la mejor de todas las versiones que han existido hasta el momento. Entre las características de esta versión tenemos:</p><br /><ul><li>100% compatible con los pom y los plugins de maven 2. En teoria no hay que cambiar nada en los proyectos ya existentes pero en mis pruebas encontre que si se repite alguna dependencia se genera un error. Maven 2 ignora esto pero me parece bien que maven 3 lo valide<br><br><pre><br />mvn clean<br />[ERROR] The project com.my.psf.accounts:my-accounts:1.0.0-SNAPSHOT (D:\ECLIPS~1\psf\T1-PSF~1\pom.xml) has 3 errors<br />[ERROR] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.springframework:spring-test:jar -> du<br />plicate declaration of version ${spring-version}<br />[ERROR] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: hsqldb:hsqldb:jar -> duplicate declaratio<br />n of version 1.8.0.10<br />[ERROR] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: commons-dbcp:commons-dbcp:jar -> duplicat<br />e declaration of version 1.2.1<br />[ERROR]<br />[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.<br />[ERROR] Re-run Maven using the -X switch to enable full debug logging.<br />[ERROR]<br />[ERROR] For more information about the errors and possible solutions, please read the following articles:<br />[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingExceptionOR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildin<br /></pre><br><br /></li><li>Mejor performance y mas estable</li><li>Sincronizado con el plugin de eclipse <a href="http://m2eclipse.sonatype.org/">m2eclipse</a></li><li>Se puede usar maven como una librería. La idea es incluirlo dentro de <a href="https://hudson.dev.java.net/">Hudson</a> y de <a href="http://www.blogger.com/nexus.sonatype.org">Nexus</a></li><li>Provee una base solida para crear extensiones</li></ul><p>Para mas información respecto a esta versión usen este <a href="http://www.sonatype.com/people/2009/11/maven-30-alpha-3-released/">enlace</a> y si desean descargarlo usen este <a href="http://maven.apache.org/download.html">otro</a></p><p><br /><pre><br />mvn -version<br />Apache Maven 3.0-alpha-3 (r834122; 2009-11-09 11:04:41-0500)<br />Java version: 1.6.0_14<br />Java home: C:\Program Files\Java\jdk1.6.0_14\jre<br />Default locale: en_US, platform encoding: Cp1252<br />OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"<br /></pre><br /><p></p>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-38730824490813696372009-10-30T11:00:00.006-05:002009-10-30T11:08:53.911-05:00Opera browser version Halloween<p><a href="http://www.opera.com/">Opera</a> libero hoy una versión especial de su browser con el tema de <a href="http://en.wikipedia.org/wiki/Halloween">Halloween</a>. Entre los cambios esta un fondo con una imagen del fantasma de la opera, bookmarks e iconos asociados a halloween y por supuesto un fondo negro. Si quieren probarla usen este <a href="http://my.opera.com/community/blog/2009/10/30/operas-halloween-browser?cid=10572183#comment10572183">enlace</a>.</p><p><br /></p><p><br /></p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFgDKROKf7O5ijeE69bY6-h-57BxMc8NBq8O96Rdwmf59DQcwtp1RBBgD4CKpKH8nckzAks8V7Nmtc1HL8LZbZn0HZ40SOmhD4NUwaOau9G2QAhEmoLYUo1oRKsp8rHVjqpOs-r5kXsgX_/s1600-h/opera_halloween.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 294px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFgDKROKf7O5ijeE69bY6-h-57BxMc8NBq8O96Rdwmf59DQcwtp1RBBgD4CKpKH8nckzAks8V7Nmtc1HL8LZbZn0HZ40SOmhD4NUwaOau9G2QAhEmoLYUo1oRKsp8rHVjqpOs-r5kXsgX_/s400/opera_halloween.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5398425316633588546" /></a>Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0tag:blogger.com,1999:blog-4326105730241117477.post-61167251701393527562009-10-28T15:41:00.002-05:002009-10-28T15:47:09.230-05:00Sonatype Nexus 1.4 disponibleYa esta disponible la version 1.4 de <a href="http://nexus.sonatype.org/">Sonatype Nexus</a>, el administrador de repositrorios para <a href="http://maven.apache.org/">maven</a>. La lista de cambios la pueden ver en este <a href="http://nexus.sonatype.org/change-history.html">enlace</a> y para información de las nuevas funcionalidades introducidas pueden revisar <a href="http://www.sonatype.com/people/2009/10/new-features-in-nexus-and-nexus-professional-14/">este</a>.Anonymoushttp://www.blogger.com/profile/09172086455565716821noreply@blogger.com0