Entradas

Mongotail 2.0 with new performance features, SSL and MongoDB 3.2 support

Imagen
A couple of weeks ago I released Mongotail 2.0.0 , with new features and support for the latest version of MongoDB 3.2 . Also one of the most important features is the ability to login against a database with SSL authentication , and new options that give us more information about what is happening in our database, like the consumed time by a query, or how many registries the engine had to "walk" to find a particular record. What is Mongotail? mongotail is a command line tool to output any operation from a Mongo database in the standard output. You can see the operations collected by the database profiler from your console. In the following steps we will see how to use these new features, and at the end of the post are the instructions to update or install the tool. Activating the profiler of a database You need to activate the profiler of a database to see what is happening. In the following steps we will assume that we are connecting against a database ca

Logs Queries de MongoDB con Mongotail

Imagen
Mongotail es una herramienta de línea de comandos que permite ver los logs de las últimas queries (o todas) ejecutadas en una base de datos Mongo , de una manera similar a la que el comando " tail " nos permite ver las últimas líneas de un archivo. Esto es realmente útil cuando estamos teniendo problemas de performance y necesitamos saber dónde se están consumiendo los recursos, o porqué una aplicación que suponemos hace una consulta no nos devuelve el resultado que esperamos, entre otros casos de uso. Desarrollé la herramienta con Python hace poco más de un mes, y hace unos días publiqué en los repositorios PyPI una última versión con mejoras, por lo que no es necesario saber nada de Python ni de como instalar un script en el PATH del sistema, ya que podemos instalarlo como un comando más del sistema con una herramienta llamada PIP (describiré los pasos luego). Ejecutando mongotail NOMBRE_BBDD nos dará las últimas 10

Grails: Fixing timeout exceptions and hibernate AssertionFailure when execute a SQL query

Some times, for a particular reason you need to perform a SQL query instead of execute a Grails/GORM operation . In these cases you can do the job writing a method in your domain models, or in your service classes like the following example: class MyService { def sessionFactory int myCustomOperation() { def session = sessionFactory.openSession() def sql = session.createSQLQuery( "SELECT field1 FROM ...MY CRAZY QUERY ... LIMIT 1") sql.uniqueResult().intValue() } } As you can seen, a new database session will open each time the function will call, so if the method is massively called by the application, it's possible that after the 30 th or more calls, a timeout exception will rise, because the BBDD engine doesn't have more connections to give to our application. A possible solution can be replace the openSession() call by a getCurrentSession() call, I have tried it, but the result is a new exception given the concurrent operations performed: hibe

New Home to Zoook-eSale Project

Imagen
Zoook is e-commerce OpenERP App without connector , is developed in Python with Django framework, and is 100% compatible and designed to work with OpenERP. Zoook e-Sale was originally developed by Zikzakmedia , and currently is unmaintained. This is an unofficial fork developed by Enterprise Objects Consulting , fully functional, with active development, free and open source, and with commercial support too. The original project of ZZ works with OpenERP version 6.0 , and does not come with all the source code. When we started the project more than a year ago, we complete all the missing code, fix and improve a lot of features, and make it work with the latest version at this time, so we migrated the modules and the dependencies to the version 6.1 , and also moved the Django code to version 1.4 .  First we pushed all the code in a Github fork, but now all the sources was moved to Launchpad to align with the OpenERP practices, and we published the modules in OpenERP

Re-deploy Plugin Ext en Liferay con Tomcat

Para deployar por primera vez un Plugin-Ext en Liferay corriendo sobre un Tomcat basta con deployarlo en "caliente" sobre la carpeta  deploy/  y restartear, pero luego de la primera vez este método ya no funciona. Esta es la forma "oficial"  para la versión 6.x, aunque no bien documentada en Liferay.com. Requerimientos: Tener el Plugin Ext que queremos deployar empaquetado en formato .war Tener todos los .war de todos los portlets deployados en nuestra instancia de Liferay. Tener el "unbundled Liferay web application" , se puede descarcar desde la página  Additional Files , sección "Download WARs" . Lo descargamos y renombramos a ROOT.war . Hacer un backup ! Nunca hagas un deploy, y menos de un Ext, sin haber echo un backup tanto de la BBDD, como de la carpeta donde está Liferay instalado. Pasos: Shutdown de la instancia Borrar del Tomcat webapps/* , work/* y temp/* . También lib/ext/*-ext*.jar Copiar en webapps/ el

PyDev Error "Source not found" in projects with external contents

Imagen
When you create a new PyDev project (Python project) in Eclipse , and the source content comes from another folder (not in the workplace), you must be uncheck the "Use default" in the creation wizard, ant put the path in the "Directory" folder. In some case, after create the project, we get the error "Source folder: /XXX not found" , where the XXX is the name of the container folder. The error is showed like this in the PyDev Package Explorer view: And as you can see, the package structure of the project is not recognized (are displayed as simple folders). To solve the problem, only you need to edit the hidden file .pydevproject created by Eclipse to store the project configuration (is visible in the Navigator view), and change the value of the tag <path> . The wrong value is:     <path> /${PROJECT_DIR_NAME} </path> You must be change to:     <path> /real_name_of_the_project </path> In my case:     <p

Operaciones avanzadas con SVN en Eclipse Subversive

Subversion (SVN), es aún hoy el sistema de control de versiones más popular, sobre todo para almacenar proyectos privados desarrollados internamente o por empresas de IT. En cambio en proyectos grandes y open source se extienden cada vez más los sistemas distribuídos, como Git , Mercurial o Bazaar . La clave del éxito de SVN es su simplicidad de uso y administración, al ser un sistema centralizado, y que se basó en los aciertos y corrigió los errores de su antesesor CVS . Hace unos años trabajé en una empresa en la que usabamos SVN, y trabajabamos codo a codo con los diseñadores gráficos, además de programadores juniors, que debían aprender a usar la herramienta. Me encomendaron escribir un manual con los conceptos más complicados, e impartir unas charlas explicativas. Aquí comparto en este post ese viejo manual (3 años en sistemas es mucho :S), en el que colaboraron en su elaboración también Sebastián Facchini y Heraldo Rodríguez . En la actualidad hay dos plugins d