Knowledge sharing to the extreme

0 comentarios

Recently I met the people and movement behind LinkyBrains and I have to say I feel very identified with what they say. After first weeks with LinkyBrains in my head some crazy or "LinkyBrainy" things have come to my mind and I would like to write down the first one (I hope not the last one).

I am a lover and a very active promoter of knowledge sharing both professionally and personally, I believe people sharing the knowledge contribute to continuous improve the world we live, it is a simple way to get more than one brain building solutions.

As part of my job I constantly think and apply exercises to get my team and myself sharing the knowledge, and we are getting good results in some the exercises we apply and not so good in others. If we would like to move the knowledge sharing to the next level, a possible a potential way would be sharing the knowledge between companies.

There are several ways this can be done, meetups run by different individuals working in different companies help to share the technologies used and how to apply them, but that's not really enough. If we could find a way where developers can work in a different office and see how others apply a technology to develop a solution. And it is not just technologies, it is about how to be organized, how other teams communicate, and so on.

Of course, there are some security and risks companies in the same sector sharing sensible information but it could be run by companies working in different sectors. I think it is time to remove all the barriers have been there such lot of years where software development companies don't talk and don't want to know about others.
Read On

Leadership vs Leadersheep

0 comentarios

I wrote this article in a plane while traveling to UK, it took me few minutes to write the essential idea although I’ve been thinking on it for few weeks before I wrote done the lines below. I have to say when I read them again to publish in the blog the look like a draft but I want to publish them now and decorate the text in the future. In other words, take the lines below as notes for a draft but describing the essential.

There are a lot of books, articles, videos and tweets about Leadership where you can find lot of information and advices to improve your skills as a leader, but I have just found few of references to the people who makes a leader a much better leader, leader’s teams.

I have to say when I started professionally I expected my boss to give me all instructions to follow and all the details I need to complete my work, but I didn’t realise my boss and the rest of the team expected me to ask the right questions and add a value to the work done by the team.

With the years one of the biggest lessons I’ve learnt: collaboration and cooperation between leaders and teams make a better and faster success. It is not only about a great leader leading sheeps, it works but giving as a result an average success, it is about the balance of a great leader leading a great team, then the success will be brilliant.


A team following and accepting all instructions and details given by their leaders is an easy work for the leader and does not allow an environment for a continuous improvement. Otherwise, a team which is able to challenge their leaders and help to build an environment where collaboration is the key will help to grow both leaders and teams.

Read On

Developer cross training

0 comentarios

​It was several years ago first time I read about cross training concept, I was back to practice running after few years stopped and no sport practicing in my life. I understood in that moment, some professional dedicated to sports practice other sport or sports as part of their training to improve their metrics.

I've been practicing in the people working with me and myself the concept in Software Development, and it is a fact Developers Cross Training improves developers skills. As the most basic example, if a developer understands how internally web server (IIS, JBoss, Tomcat, Apache or any other web server solution) will identify faster any bug or problem in their code as well as make better decisions to develop a feature in the current software.

Another good example I've seen in he last few years is closer to communications, a developer could be working for a period more closer to the customer, like being part of es features being presented to a customer, it will help developers to deliver a software closer to customer expectations.
I know this has been told in many places and it is part of popular methodologies, but until you don't practice for a period of time you don't see how good is the idea and how good result could be.

Here is where team rotations is a good tool to apply developers cross training concept, a developer could rotate to be a product owner assistant for a period of time or a product owner could rotate to a customer service role. It is not just the benefit to improve people skills as Cross Training improves in people what day by day work don't, and also, it helps developers and others to know and discover what they really watt for their professional careers.
Read On

Android Maps Utils : Markers in the same location

0 comentarios

Recently, I came across with a request in the library Android Maps Utils which requested a fix for a problem when the markers have exact the same location. As this is a library I used recently and I was reading the code when I was integrating in an Android App, I just decided to implement the feature and here you can find the experience. All the details regarding the changes can be found in this pull request.

In case you want to include this functionality in your app, until the pull request is not accepted you would need to generate the library file including the pull request and then include it in your project through Gradle. After that, you can include to your map as shown in the code below:

mClusterManager = new ClusterManager<>(this, getMap()); 
getMap().setOnMarkerClickListener(mClusterManager);
getMap().setOnCameraMoveListener(mClusterManager);

mClusterManager.cluster();

The default implementation will distribute the markers with the same location around the real lat/long value following a circle when the user tap on the marker containing all the markers in the same location. To distribute the markers, the zoom level shown has to be the maximum zoom level, and once the user makes a zoom out all the markers distributed will be relocated to the original cluster.

Of course, this could be implemented in many ways and with different approaches, this is just an example of a way to get the feature implemented, I just wanted to get fun implementing and sharing with the world. It is important to mention a change needed in the ClusterItem interface could produce a backward compatibility problem as a copy has been added.

/**  * Produces a copy of the same object but setting the given location.
 *
 * @return The new object copied.
 */
ClusterItem copy(double lat, double lng);
As you can see in the first code block, cluster manager needs to be set up to listen camera moves actions on the map, if you also need to listen to the same events in your app or code just do as the code below:

mMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
        @Override
        public void onCameraMove() {
            mClusterManager.onCameraMove(); 
            // your onCameraMove code
        }
});
 You can place your code also before call mClusterManager.onCameraMove(); or even call mClusterManager.onCameraMove(); only when you need to distribute the markers of the cluster, it will depend in your app needs.

As mentioned, the default distributor for a cluster with all the markers in the same location distributes them in a circle, and it can be replaced just calling to mClusterManager setClusterItemsDistributor(mYourDistributorImplementation);. In case you need to implement your own distributor you need to implement the interface ClusterItemDistributor.

/**  * It distributes the items in a cluster.
 */
public interface ClusterItemsDistributor {

    /**
     * Proceed with the distribution of the items in a cluster.
     */
    void distribute(Cluster cluster);

    /**
     * Proceed to collect the items back to their previous state.
     */
    void collect();
}
Just take into account distribute(Cluster cluster); needs to distribute all the items in the cluster and collect(); needs to get the markers to their original state and cluster, see DefaultClusterItemsDistributor as an example.

Please, if you use this feature or you implement your own distributor let me know, or if you have any feedback or question I will be more than happy to listen and improve what I've done, helping others and getting help from others is the way to learn something new every day.
Read On

Mobile and beyond

0 comentarios

I want to begin this article mentioning it is a suggestion made by a teammate 1 or 2 months ago, a teammate who moving to do his dream and do what he likes and enjoys, this is a bitter-sweet feeling although I am always happy when people find their dreams and passions, anyway this is a different history.

My goal with this article is to share my thoughts and the journey in the team I work with in terms of which is the best approach in terms of technology for a mobile App development, it is a no easy decision to be made,

I've started in Mobile Development around 2005 when J2ME promised to develop an App in Java with to ability to run in many devices, but the reality was that lot of specific configurations, images and even code was needed depending on the device. Also, I remember we had many mobiles to tes same App in maximum variants as possible. This changed massively when Android and iOS came on board, I remembered my first iPhone Dev Conf in Madrid around 2009 where everything looked very promising to develop nice Apps although the programming language looked very odd to me. With Android and iOS a big step was made, they helped developers to don't get disturbed about screens sizes and different behaviors for device features like GPS, camera and others.

We can say after this new era with Android and iOS, hybrid solutions like PhoneGapp, Ionic and others appeared, but I've tried for a couple of times and they didn't convinced me for high performance Apps managing a certain amount of data, although for small Apps and for quick prototyping is probably the best choice. I've discovered those options around 2013, a bit late maybe but I've released at that moment 10 Android and iOS Apps, my bet at that moment and know is to develop Android and iOS Apps instead of use Hybrid options, maybe because I was more use to those platforms and it would be faster.

The next big step in Mobile Development is happening now from my point of view, where new "Hybrid" solutions are getting more popular in the market, we are talking about Xamarin and others. I came across Xamarin few years ago and I've recognized I've started to investigate more once Microsoft bought it. More and more Apps are being developed in Xamarin and from my point of view the key point of this is because the user interface can be defined once and it looks like the same App not just in mobiles and tablets running the same Operating System, it looks like the same in different operating systems, although my view is that a particular feature in the mobile is needed (let's say gyroscope) could be a big challenge for the Developers, needed a particular implement in each OS and imported as external library in Xamarin, probably acceptable in most of the cases.

Xamarin has let me discover other option in this Mobile Development World, its name is flutter (it seems supported by Google) and it promises one development for several platforms, although it is in a early stage and looks very young yet, but it will be good to see how it progresses.

I want to make clear I'm writing about my opinion and experience, which could be wrong but it will be nice to write a new article in the future if things change or my view is different cause I collect ore information and experience. It is a reality people in the street is very familiar with Android and iOS devices and I don't think it will change in the recent future although businesses are b coming more Microsoft friendly in terms of devices, it seems because security reasons. That means if you want to develop an App for people my bet would be for both Android and iOS Development, and if you want to develop an App for private businesses yes should probably go for Xamarin which will let you run your App in Microsoft devices but also in Android and iOS in case some businesses want to use other devices with your App.


It is very difficult to see really the next big step after the current one happening, I would say there are few questions to be answered like which is the roadmap of Xamarin to be followed by Microsoft I the next few years? Will Google introduce Flutter as one single solution to develop Apps in Android removing Java as an option? Apple see,s to be also in the same "Hybrid" way with one solution to develop Apps for mobiles, tablets, laptops, etc running OS X or iOS, will be iOS a substitution of OS X? Probably functional programming will be also an important variable in the equation of the next step in Mobile Development tale, it looks a very good language for UI, another chapter or spin-off in the history of Mobile Development would be.
Read On

After 6 months automating tests with QA Team

0 comentarios

I've read several times in the last few months that there are companies removing Test or QA Teams in the organization. Something that was like a "seriously? It can't be as testing ensure the quality and quality is one of the most important thing if not the most in product development", but after a few months tuning the ALM I was involved I've started to understand what the comment "that company has removed QA" means. I have to say I didn't read more than comments about remove QA, I never red the reasons, probably because I didn't want to know as I thought on that as something unthinkable.

If we imagine the usual situation where there are teams developing the software and teams testing the software, some years ago those teams where located in different places even in the same office, but now companies are moving them together, QA team member next one or two or even three developers, keeping the communications faster and clearer which is one of the key of the QA - Development relationship.

6 months ago we started building our QA Team with our first member, sitting down next to Developers and understanding how company runs Development Lifecycle, and at some point our QA player started to write UI, Integration and Instrumentation tests, so he became to be part of Development Team but not developing code or fixing bugs, everything related to testing the code to be written or already written.

After few months running this experience we can say it has been great for both parties, developers and testers feel they are the same team and they are developing the same product, giving to that product the right quality. Now, we can say or understand QA Team Members are becoming part of the Development Team, removing the words QA Team, but behind the scenes QA is still present.
Read On

QA is not testing

2 comentarios

Let's say we are part of an Agile team, running sprints to develop a software product where developers, testers, product owners and scrum masters are collaborating to deliver new features or functionalities in each sprint. One the classic discussions are around testing within sprint or testing after the sprint, but let's have a quick look to both approaches.

Testing within the sprint could mean that developers write Unit Tests and Code as first thing in the sprint and deliver the new code to QA Team some days before the sprint ends to let run testing plan and see if new code is bugs free.

In the other hand, testing after Sprint ends could mean developers are focused in write the new functions and features while running the sprint and the code is released to QA Team once sprint ends, letting developers to run a new sprint.

My thought came to my mind when running running sprints following the first approach (testing within sprint) developers were always delivering new features to QA Team with a very tight time to run the testing plan. We made the decision to run testing plan at the beginning of the next sprint, which means developers would prepare a new release ready to test when Sprint ends and move to the next Sprint. This helped to let the Developers understand the release ready to test should be under proper testing (developer testing) as they are the owners of the work delivered, letting QA Team to be focused on ensuring the software works as the Product Owner defined.

With QA is not testing we say Developers proceed with the testing of the new code written, following TDD they test their code runs properly and put in the output the expectations for the given inputs. With this Development Testing in place, he QA Team will run testing plan rounds being focused in the functionalities, ensuring the quality of the product meet expectations.

Of course this is not a must, each team should find their path at any moment and look always to the results to see if they should tune their current process, an specific approach could work for a particular moment developing a particular product with particular team members, a change in the equation could produce a change in the approach followed, just keep looking yourself to keep moving to the great success.
Read On

My first Androide Library

0 comentarios

It is a pleasure announce my first Android Library, it is a simple JSON client with the goal to use in backend web services communications. Decody JSON Simple Client is a set of classes I've written and used in several Android applications and I want to share with the community, hopefully, it won´t be the first library.

Check the library in Github and let me know your feedback, also it would be great if someone is happy to help with new changes and features I have in the ToDo list, the library is currently looking for contributors.
Read On

Material design is here to stay

0 comentarios

If you listen "Material design" your head goes probably directly to Android 5.0 aka Lollipop, but it seems Material Design is more than a new version for Android devices / platform. it's a concept Google team wants to circulate or put ​in every interface.

Part of this ecosystem is the new framework for Web Developmentcoming from Google developers, it's called Polymer and it's basically a framework to create web components, it lets transactions between components, interactions, more details can be found in the demos section of the website, specially Topeka.

Other excample and inline with our developments is the Material Design implementation for AngularJS, which contains some nice components for user interface.

As an end of this article, it would be better give you more details reading the article analyzing the differences between Polymer and AngularJS.

Happy coding!

Read On

Mocking: El comienzo

0 comentarios

Hace cuestión de un par de meses preparé un pequeño texto para dar una escueta charla alrededor del concepto de mock y técnicas básicas de mocking, la idea era que un equipo de programadores tuviera un primer contacto para la creación de tests unitarios donde el codigo a probar tiene una dependencia con clases externas.

Claramente hay montones de artículos, textos, papers, tutoriales, ... en internet que cuentan el mismo problema que estamos tratando en este artículo, sin embargo, puede ser que siempre le pueda servir de ayuda a aquellos programadores que van a enfrentarse con el mismo tipo de problema, y otro ejemplo más siempre ayuda a comprender mejor cómo aplicar la solución.

Cuando como programadores nos enfrentamos por primera vez a la creación de tests unitarios para el código que estamos programando, uno de los problemas complicados es el de comprender cómo crear tests unitarios para aquellas clases que tienen dependencias con clases externas, ya que una de las primeras ideas que se nos ocurren es, la de probar conjuntamente la o las clases dependientes, a la vez que la clase que inicialmente teníamos en mente. Esto contradice la definición de test unitario, donde se pretende crear tests para una única unidad, en este caso hablamos de una clase sin tener que probar el codigo de clases dependientes. Si la clase sobre la que estamos trabajando y creando los tests unitarios depende de otras clases, por definicion sabemos el comportamiento de las clases dependientes, sabemos de antemano, por la definicion o especificacion dedicha clase la salida para una determinada entrada en cada uno de sus metodos que la componen.


Tomando como ejemplo de lo comentado el esquema anterior, nuestra idea es crear tests unitarios para la clase Navigator, la cual hace uso internamente de NavigatorFlow y NavigatorListener. Dado que inicialmente no hemos creado interfaz para NavigatorFlow (INavigatorFlow), la clase Navigator hace uso directo de NavigatorFlow, lo que obliga que al ejecutar los tests que escribimos de Navigator se ejecute el codigo de NavigatorFlow, lo que ademas de agregar complejidad a los tests unitario, estamos probando dos unidades en lugar de una.

Para evitar esta complejidad y hacer nuestras vidas mas fáciles como programadores, es preciso tener en cuenta a la hora de diseñar la jerarquia de clases, que creemos un interfaz para la clase NavigatorFlow y esta interfaz es la usada dentro de Navigator, de esta manera los tests unitarios que vamos a escribir serán menos complejos a la vez que nuestro codigo sera mas fáil de mantener y sencillo de entender por otros programadores.

Gracias a la creación de la interfaz INavigatorFlow, podemos en la clase que contiene los tests unitarios, definir un objecto mock (NavigatorFlowMock) usando dicha interfaz e inyectando dicho objeto mock en nuestra clase Navigator antes de ejecutar los tests unitarios. El objecto mock creado implementará la misma interfaz que NavigatorFlow (INavigatorFlow), lo que nos ayudara a definir la respuesta a la clase Navigator.

namespace MockingFirstExampleTest
{
    ///

    /// Unit tests for Navigator class.
    ///

    [TestClass]
    public class NavigatorTest
    {
        ///

        /// This is the instance of the class under test.
        ///
        private Navigator navigator;

        ///

        /// Mock object of NavigatorFlow.
        ///
        private Mock flowMock;

        [TestMethod]
        public void TestNavigateSuccess()
        {
            var input = "MyInput";
            var expectedOutput = input + input;

            // define expectations of the mock object
            flowMock.Setup(flow => flow.DoNext(input)).Returns(input + input);

            // call to navigate method
            var output = navigator.Navigate(input);

            // check expectations
            Assert.IsTrue(output.Equals(expectedOutput));
        }

        /// 
        /// Set up the common stuff for the unit tests.
        ///
        [TestInitialize]
        public void SetUp()
        {
            // create the mocks objects
            flowMock = new Mock();

            // instantiates the class under test
            navigator = new Navigator(flowMock.Object);
        }
    }
}
 

El código anterior define una clase de tests unitarios para la clase Navigator, dicha clase contiene una instancia a Navigator y otra que es el objeto mock de la clase NavigatorFlow (flowMock). En el método SetUp, el cual se ejecuta antes de cada test unitario, lo que necesitamos es instanciar el objeto mock e inyectar éste mismo en el objeto de Navigator.

Asimismo, en los test unitarios (TestNavigateSuccess) se configura el comportamiento del mock, en este ejemplo se indica que el objeto mock va a recibir una llamada a DoNext con una entrada determinada, y le indicamos la salida (Returns) de dicha llamada. En este caso estamos haciendo uso de una librarías de mocking existente, hay montones de librerías que nos facilitan la vida para aplicar estas técnicas, además, se pueden definir varias salidas y distintos comportamientos en nuestros objetos mock, solo es necesario conocer la librería que vamos a usar. También es posible crear el objeto mock sin librerías pero nos obligará a escribir algo de cødigo en una clase aparte, sin embargo, hay circunstancias donde es mejor esta práctica que el uso de una librería.
Read On

Profundizando en Javascript

0 comentarios

Hoy quiero presentar un libro gratuito que me encontré hace unas semanas mientras realizaba una búsqueda aobre las nuevas tendencias en programación de frontales web. Dicho libro te presenta los conceptos básicos de la programación de un framework en javascript, además de mostrarte opciones decómo ha resuelto cierto problemas los principales frameworks comnocidos por todos.


Para ser sincero, me ha sido difícil entender todos los conceptos, he basado mi carrera profesional en la programación desde el lado de backend, y dejé el camino de javascript varios años atrás, cuando terminaba mis estudios, sin embargo, a día de hoy quiero ampliar conocimientos aunque sean teóricos de programación en el lado de frontend, me vendrá bien para el futuro.

Prototype, apply, prototypal inheritance, functional programming, ..., algunos conceptos nuevos y otros no tan nuevos para programadores experimentadosse mencionan en el libro. Lo importante para mí, me ha abierto el camino para empezar a profundizar en un lenguaje que tenía olvidado y que cada día va aportando nuevas herramientas, como ejemplo los nuevos frameworks MVC de los que un día hablaremos.

Si eres un apasionado del desarrollo web, un programador de frontend web experimwntado o quieres ser uno de alto nivel, este libro es de lectura obligada
Read On

Empirismo y Metodologías Ágiles

0 comentarios

Cada día que pasa palabras como Ágil, Scrum, Lean, Iteration, Sprints, .., se pronuncian más en entornos de desarrollo software, cada vez son palabras más familiares, cada vez hay más empresas que están acomodando o adaptando metodologías ágiles dentro de sus equipos al cargo de las soluciones software.

Tuve la oportunidad de conocer estos conceptos al comienzo de mi carrera profesional, desde el punto de vista del programador, y ya desde entonces me pareció un cambio drástico en lo aprendido previamente, pero tras lecturas sobre su teoría y su posterior puesta en práctica se iba consumando en mi interior una creencia hacia un cambio inmejorable y que sería claramente el futuro en la industria del software.

Desde hace unos meses tengo la oportunidad de poner en práctica el uso de metodologías ágiles en un pequeño equipo de desarrollo, pero desde el punto de vista de gestión. Es pronto para tomar conclusiones grandes, pero estos meses me han servido para ver que cada equipo es muy diferente,y cada equipo necesita sus propias herramientas para poner en práctica una metodología de desarrollo. Al principio, es muy importante una revisión constante para poder tunear herramientas, equipo y procesos para adaptarlos al entorno propio de trabajo, ningún equipo es igual y es muy importante tener la mente abierta para la adaptación constante.

En pocas palabras, hay que llevar el empirismo a su totalidad, trazar un proceso básico a seguir para el desarrollo, medir resultados para saber qué es necesario cambiar y proceder con los cambios de afinamiento. Con el paso del tiempo es preciso añadir al proceso básico nuevos pasos para la mejora del proceso de desarrollo y del propio equipo. Si un cambio provoca malos resultados es necesario deshacer el cambio o readaptarlo.

Pon en práctica tu proceso y adáptalo a aprtir de los resultados de forma continúa.

Read On

Cross-platform mobile dev definitivo?

0 comentarios

Me ha parecido curioso este artículo con el que me topé hace unos días, y es que siempre da la sensación de que a priori cada idea va a ser la cumpla todas las expectativas pero siempre acabo encontrando soluciones con aspectos que no me acaban de convencer, estaremos en esta ocasión ante la posibilidad de desarrollar lo mínimo posible para tener productos en múltiples plataformas?

Cross-platform mobile application development tutorial

Read On

Dale giros a la ruleta

2 comentarios

En la vida, cada asunto o aspecto es a veces como jugar a la ruleta. Lo que quiero decir es que tiras de la ruleta y lo que te toca tienes que asumirlo, tienes que acatarlo y realizar la tarea encomendada, y cuando te toca tirar varias veces seguidas es cuando llegas a pensar en que realmente no pareces dueño de tu vida, incluso te impide hacer otros asuntos que son de menor importancia pero de los que disfrutas incluso más.

Básicamente, estas palabras forman parte de un simil referente a lo que me ha pasado con mi blog. Realmente me gusta pensar y escribir en mi propio blog, pero siempre que tiraba de la ruleta no me salía la casilla de "redactar post para blog" sino que me tocaba cualquier otra cosa que encima no era más interesante pero que si más prioritario.

Con toda esta retaíla de cosas, lo que quiero decir es que voy a intentar recuperar el blog, ya le he cambiado el aspecto y espero al menos redactar un post cada semana. Además, no solo voy a postear temas de informática, software, desarrollo, ..... si no que esero ir llenando el blog con distintos posts de diferentes temáticas.

Tenía ganas de hacer una reseña de porqué el simil de la ruleta, y todo me vino a la cabeza cuando el otro día volví a ver la película de El Cazador (por cierto la recomiendo a todo el que no la haya visto) y quería sentirme como Robert de Niro, desafiar a que la ruleta rusa no va a acabar conmigo en lugar de caer en sus brazos hasta que me vuele la tapa, quiero acabar con ella, darle vueltas hasta que salga volando....
Read On

Ausencia: Segunda parte

2 comentarios

Normalmente se suele decir que segundas partes nunca fueron buenas, y aquí estoy yo escribiendo un post sobre la larga ausencia de nuevos posts en el blog.

Básicamente vuelvo a lo mismo, en estos meses ha habido muchos cambios en mi vida, casi todo alrededor de los dos últimos cambios de trabajo desde julio hasta ahora, más el verano que no te deja tiempo para nada, más feria, más ..., vamos, que lo último que me apetecía era escribir un post en el blog.

Aunque todo esto no hace que no tenga apuntado algunos posts pendientes que espero ir escribiendo.

Un saludo para los muchos o pocos que leaís esto. Gracias.
Read On

Cuando OAS se encuentra con la hormiga

2 comentarios

Trabajando en un par de proyectos que hacían uso de OAS (Oracle Application Server) como contenedor de aplicaciones, me dispuse a buscar información de cómo integrar OAS y Apache Ant. Mi intención era poder realizar los despliegues de la aplicación de una forma automática, rápida y sin complicaciones.

Sin mayor sorpresa, en la web de Oracle encontré la información que necesitaba. Los chicos de Oracle se han encargado de implementar un par de jars para que podamos integrar estas dos herramientas y hacernos un poco más cómodo nuestro trabajo de desarrollo.

Seguí los pasos encontrados en la web, que empezaba por añadir los dos jars del contenedor en el classpath de Ant, concretamente con el nombre y ubicación:

10.1.3.1/OracleAS_1/ant/lib/ant-oracle.jar
10.1.3.1/OracleAS_1/j2ee/utilities/ant-oracle-classes.jar

Ahora solo hay que añadir la llamada a la tarea de Ant que realiza el despliegue de la aplicación:


deployeruri="deployer:oc4j:opmn://${app.deploy.server}:6003/home"
userid="oracleuser" password="oraclepassword"
file="${dist.dir}/${project.name}.war" deploymentname="${app.deploy.name}"
bindallwebapps="default-web-site" />

Todo fue estupendo, a la primera realizó el despliegue sin ningún tipo de quejas. Sin embargo, todo no podría ser tan bonito, el día que realizamos el cambio de servidor, éste no se configuró de la misma forma, y no se realizaba la conexión con el deployer del contenedor de aplicaciones desde el script de construcción. Leyendo un poco la web de Oracle me encontré con que hay otro jar suministrado con el contendor que es una pequeña herramienta para comprobar la uri del deployer que tenemos en nuestro OAS. Este jar tiene el nombre admin_client.jar, y para usarlo solo tenemos que poner:

java -jar admin_client.jar deployer:oc4j:opmn://127.0.0.1:6003/home username password -validateURI

y comprobar si nuestra uri es correcta. En caso de obtener algún fallo, aconsejo que nos miremos la web indicada al comienzo del post y comprobar que uri tenemos en nuestro caso.

Resumiendo, si trabajamos con Oracle Application Server podemos automatizar nuestro despliegue de la aplicación que estamos desarrollando haciendo uso de Apache Ant. Esto nos puede servir para que nuestro script usado en nuesto servidor de construcción de versiones, o en caso de no disponer de un IDE integrado con OAS, realizar el despliegue sin muchos esfuerzos cada vez que sea necesario.
Read On

Cruise

0 comentarios

El pasado día 15 de Abril recibí la noticia de que ha aparecido un nuevo sistema de integración continua y gestión de versiones alrededor del ya conocido Cruise Control. La diferencia con éste es que este nuevo sistema es de pago.

Cruise ha sido creado por ThoughtWorks Studios, y nace a partir de su hermano mayor Cruise Control, por lo que tiene un gran camino hecho, pero ¿quiere decir esto que dejarán un poco de lado a Cruise Control?
Read On

Origo: Nueva entrada en el Open Source

0 comentarios

Con el nombre de Origo han bautizado sus creadores a una nueva plataforma para gestionar nuestros proyectos open source. Viene a ser algo como SourceForge, ya que sus servicios son muy parecidos: wiki, foros, control de versiones por Subversion, gestión de issues, ... pero con un par de peculiaridades. Una de ellas es que tienen un plugin para Eclipse, para integrar las dos plataformas. Además, no solo es posible gestionar tus proyectos open source, sino que Origo también te ayuda con tus proyectos closed source. En definitiva, hay que tener a Origo en cuenta y se intentará en un futuro probar la plataforma.
Read On

FX con Java

0 comentarios

Pues con esto vamos a comenzar las nuevas entradas. Hace como un par de semanas me topé con un par de palabras que rezaban Java FX que llamaron mi atención. No es que haya investigado mucho sobre el tema, pero parece tener buena pinta.

Java FX es un lenguage de script para crear interfaces de usuario, sirve tanto para web como aplicaciones de escritorio o móviles. Si os gusta el diseño de GUIs o programar aplicaciones de escritorio, echarle un vistazo, porque parece ser interesante.

Hay algunas demos por la red que tienen buena pinta, pero lo interesante sería realizar algún pequeño ejemplo para ver la dificultad que implica tener una interfaz gráfica bien vistosa, así que cuando haga algo con esto ya os comentaré. Por el momento os recomiendo el blog de Chris Oliver en su parte de Java FX.
Read On

Ausencia

3 comentarios

Muy buenas a todos de nuevo, si es que hay alguien aparte de mí que lee estos post. He estado ausente durante un par de meses, mas o menos, y quería comentar los motivos de este periodo de pausa.

Básicamente, ha habido unos cuantos cambios en mi vida que han afectado a dejar de lado durante un tiempo algunos de los asuntos que llevo. Entre el cambio de trabajo, que por fin he empezado a hacer como que estudio para sacarme el carnet de conducir (que ya es hora por cierto). Por otro lado, he dado más prioridad a los proyectos en los que estoy trabajando, que son tres y quiero terminarlos cuanto antes para comenzar un proyecto que me ronda por la cabeza.

Pues nada, que si pensábais que esto había terminado, solo ha sido un parón. Además, me ha servido este tiempo para pensar en los primeros posts del blog, y seguramente vaya cambiando algunos aspectos en los siguientes posts.

Nada más por ahora.
Read On