Cuando trabajamos con Odoo 10, normalmente lo hacemos como un usuario tradicional, pero los desarrolladores o administradores necesitamos acceder a más opciones. Por ejemplo, si como administrador, accedemos al menú de Configuración nos encontramos con muy pocas opciones… y nos preguntamos ¿dónde están el resto de opciones?

Opciones del menú de configuración por defecto en Odoo 10

Opciones del menú de configuración por defecto en Odoo 10

Para acceder a muchas más opciones, debemos activar el modo desarrollador, para ello si accedemos al menú de configuración veremos que en la pantalla de la derecha, en la parte inferior aparece una opción denominada Activate the developer mode

Activar el modo desarrollador en Odoo 10

Activar el modo desarrollador en Odoo 10

Una vez activado, veremos que en el menú de configuración aparecen muchas más opciones

Menú de configuración extendido en Odoo 10

Menú de configuración extendido en Odoo 10

Además de las opciones del menú de configuración, al activar el modo developer activamos las Open Developer Tools que es un menú pensado esencialmente para los desarrolladores donde tenemos opciones para ver los campos de las tablas de Odoo, acceso al código de formularios y vistas, edición de workflows, editores de acciones, etc..

 

Open Developer Tools

Open Developer Tools

Por ejemplo, una vez activado el modo developer, si nos ponemos encima de un campo de un formulario, Odoo nos dice el nombre del campo, a qué tabla pertenece, el tipo de campo, etc..

 

Datos del objeto en Odoo

Datos del objeto en Odoo

 

Otro ejemplo, si seleccionamos un formulario y en el menú de las Open Developer Tools, seleccionamos Edit Form View, podemos ver parte del código de dicho formulario

Código de un formulario en Odoo

Código de un formulario en Odoo

Una de las gratas sorpresas que me ha producido usar la versión 5 de Alfresco Community, es que por fin, podemos configurar fácilmente y gráficamente el modelo de datos de Alfresco. Antes de esta versión, configurar el modelo de datos en Alfresco se hacía una tarea muy complicada a base de edición de ficheros xml: cambiabas y editabas muchos ficheros, era muy fácil equivocarse, se perdía mucho tiempop entre arranques y paradas de Alfresco….

El modelo de datos, es probablemente uno de los aspectos más importantes a configurar en Alfresco, ya que de él va a depender cómo organicemos y cataloguemos nuestra información y es lo que nos va a hacer útil Alfresco y el porqué de tener un gestor documental. En este ejemplo, vamos a crear un nuevo tipo que llamaremos Planos y que va a tener 2 propiedades denominadas Cliente y Provincia. La idea de esto, es catalogar los planos de nuestro gestor documental tanto por Cliente como por Provincia y que luego podamos fácilmente localizar los planos del cliente tal o los planos de la provincia cual.

Inicialmente, creamos el modelo. Para ello accedemos a la zona de administración y seleccionamos la opción de Gestor de Modelos y pulsamos en Crear Modelo.

Gestor de Modelos en la configuración de Alfresco

Gestor de Modelos en la configuración de Alfresco

Para crear un modelo, debemos darle un espacio de nombres, que no es más que una ruta con por ejemplo el nombre de nuestra empresa, un prefijo que es la forma abreviada de referirse a toda la ruta del espacio de nombres y un nombre, por ejemplo el nombre de la empresa

Crear Modelo de datos en Alfresco

Crear Modelo de datos en Alfresco

Una vez creado el modelo, lo seleccionamos y veremos que podemos crear tanto tipos como aspectos. Seleccionamos Crear tipo personalizado. En este caso, vamos a crear el tipo de documento que va a clasificar los planos, por lo que el nombre y la etiqueta de presentación ponemos Plano. En el tipo de padre,  podemos “heredar” de un tipo más genérico, como por ejemplo si es una imágen, si es una carpeta, si es una web. Por defecto, seleccionamos el tipo más genérico Contenido.

Crear tipo de datos en Alfresco

Crear tipo de datos en Alfresco

 

Una vez creado el tipo, lo seleccionamos y veremos que nos aparecen las propiedades de dicho tipo. En este caso vamos a crear dos propiedades para clasificar los planos. Pulsamos en el botón de Crear Propiedad

Crear propiedad del tipo del modelo de datos en Alfresco

Crear propiedad del tipo del modelo de datos en Alfresco

 

Al crear la propiedad, nos solicitará un nombre, una etiqueta y una descripción que podemos poner Cliente. Vemos que podemos especificar el tipo de datos de esta propiedad (si es un texto, un número, una fecha,…), si es obligatorio rellenar esta propiedad, si permite múltiples entradas, e incluso un valor predeterminado. Creamos las propiedades tanto de cliente como de provincia

Una vez creadas las dos propiedades, debemos decirle a Alfresco cómo va a mostrar dichas propiedades en los tipos. Para ello subimos un nivel en la jerarquía y en el menú izquierdo de opciones del tipo, seleccionamos Diseñador de esquemas. En el diseñador, debemos añadir por ejemplo un layout de dos columnas y arrastrar las dos propiedades de cliente y provincia.

Diseño de esquema de tipo de datos en Alfresco

Diseño de esquema de tipo de datos en Alfresco

Una vez finalizado el esquema, sólo nos queda subir al máximo nivel en la jerarquía del modelo y activar nuestro nuevo modelo desde elmenú de Acciones. Veremos que aparece en color verde

Modelo activo en Alfresco

Modelo activo en Alfresco

Una vez activo, ya sólo nos queda usar el nuevo modelo, para ello, accedemos a cualquier archivo de nuestro site en Alfresco y en las propiedades, seleccionamos Cambiar Tipo. Veremos que podemos seleccionar nuestro nuevo tipo y al hacerlo, en las propiedades del documento, veremos que también podemos rellenar las propiedades tanto de cliente como de provincia

Selector de tipos en Alfresco

Selector de tipos en Alfresco

 

Propiedades del tipo de un documento en Alfresco

Propiedades del tipo de un documento en Alfresco

 

Un gestor documental no sería útil sino podemos clasificar y organizar la información rápidamente. Es por eso, que la búsqueda de cualquier gestor documental se convierte en la herramienta más potente. Alfresco tiene una búsqueda muy potente, pero por defecto no trae los tipos en la interfaz gráfica de búsqueda. Es por ello que debemos añadir código en xml para personalizar dicha búsqueda. Para ello debemos editar el fichero share-config-custom.xml que se encuentra en la ruta /tomcat/shared/classes/alfresco/web-extension y añadimos estos dos apartados de código:

Código xml para añadir el tipo a las búsquedas avanzadas de Alfresco

Código xml para añadir el tipo a las búsquedas avanzadas de Alfresco

En el primer apartado, le decimos a la búsqueda avanzada las propiedades que queremos mostrar (cliente y provincia) y en el segundo apartado le decimos que queremos añadir una nueva opción a la búsqueda avanzada para buscar los Planos. Es importante especificar el prefijo que hayamos elegido en el modelo en el xml.

Paramos e iniciamos Alfresco y si accedemos a la búsqueda avanzada, veremos que nos aparece un nuevo apartado con el tipo creado para poder hacer búsquedas.

Búsqueda avanzada en Alfresco con el nuevo tipo creado

Búsqueda avanzada en Alfresco con el nuevo tipo creado

 

 

Si lo seleccionamos veremos que además podemos ser más concisos en la búsqueda indicando tanto el cliente como la provincia y aquí es donde realmente le sacamos provecho al gestor documental teniendo unas búsquedas muy potentes y clasificadas

Búsqueda avanzada de tipos y propiedades en Alfresco

Búsqueda avanzada de tipos y propiedades en Alfresco

 

En los siguientes vídeos, tenemos más información de cómo realizar estas funciones con Alfresco

http://docs.alfresco.com/5.1/concepts/alfresco-tutorial-24.html

https://community.alfresco.com/docs/DOC-4820-advanced-search-custom-attributes

Para configurar el envío de emails en Alfresco, debemos editar el fichero alfresco-global.properties que es donde está gran parte de la configuración de Alfresco. Este fichero normalmente está dentro de la carpeta shared y classes del servidor tomcat, en una ruta similar a esta:

/opt/alfresco-community/tomcat/shared/classes

Una vez en el fichero, añadiremos la siguientes líneas dependiendo nuestra configuración de envío de email:

mail.host= miservidor.com
mail.port=25
mail.protocol=smtp
mail.username= alfresco@midominio.com
mail.password=mipassword
mail.smtps.starttls.enable=false
mail.smtps.auth=true

Una vez configurado, pararemos e iniciaremos el servidor de Alfresco y ya debería funcionar

sudo /etc/init.d/alfresco stop

sudo /etc/init.d/alfresco start

Si no funcionase (por ejemplo porque el servidor requiera certificados, TLS, es otra ip, otro puerto etc…), con la configuración por defecto, no sabremos el porqué no se envía, ya que en el log de Alfresco no aparece nada. Para solucionarlo, podemos habilitar a que Alfresco nos muestre en el log porqué no puede enviar el correo.

Para ello, debemos habilitar el debug del envío de correo en el fichero custom-log4j.properties:

log4j.logger.org.springframework.mail.javamail.JavaMailSenderImpl=debug

en la siguiente ruta.

/opt/alfresco-community/tomcat/shared/classes/alfresco/extension

Una vez reiniciemos el servidor, ya veremos en el log de Alfresco el porqué no envía emails.

/opt/alfresco-community/tomcat/logs/catalina.out

Una configuración también interesante para comprobar que funciona el envío de emails, es obligar a que siempre que se inicie el servidor de Alfresco, nos envíe un email de prueba. Esto lo podemos hacer fácilmente añadiendo estas opciones al fichero de configuración alfresco-global.properties de Alfresco :

mail.testmessage.send=true
mail.testmessage.to=micorreo@midominio.com
mail.testmessage.subject=Alfresco Iniciado

Es muy útil mientras estáis configurando el servidor de correo en Alfresco

En este post, vamos a explicar cómo migrar una máquina virtual de proxmox en un servidor en producción a un virtualbox en local para poder hacer pruebas.

Proxmox es un servidor virtual de máquinas virtuales muy similar a hyper-v e vmware que funciona como una distribución de linux y en donde podemos montar las distintas máquinas virtuales que necesitemos.

Entorno gráfico de Proxmox

Entorno gráfico de Proxmox

Para poder migrar una máquina virtual de proxmox a una máquina local para hacer pruebas, debemos descargarnos el fichero del disco duro de la máquina virtual, normalmente en formato qcow2. Para ello, usamos WINSCP para conectarnos por ssh al proxmox y descargarnos el disco duro virtual. Normalmente las máquinas virtuales suelen estar en esta ruta, aunque eso depende de cada instalación.

/var/lib/vz/images

Una vez tenemos descargado el disco duro virtual en formato qcow2, debemos transformarlo en un formato que virtualbox pueda entender, como por ejemplo el formato vdi. Para la transformación, podemos utilizar qemu, un software muy interesante que hace transformaciones entre formatos virtuales.

Para transformarlo usamos el comando:

qemu-img convert -f qcow2 “nombre del fichero qcow2” – O vdi “nombre del fichero vdi”

Transformar formato qcow2 a vdi con qemu

Transformar formato qcow2 a vdi con qemu

Una vez transformado, veremos que aparece un nuevo fichero vdi ya compatible con virtualbox, el cuál podemos anexar en una máquina virtual creada con virtualbox.

Anexar disco duro virtual vdi a VirtualBox

Anexar disco duro virtual vdi a VirtualBox

 

Ya lo último que nos quedará será actualizar las “Guest Aditions” de VirtualBox, para que la máquina migrada de proxmox a VirtualBox pueda reconocer todos los drivers locales de nuestra máquina local y por ejemplo podamos usar la red, agrandar y estirar la pantalla y resolución, etc..

Añadir las Guest Addtions a una máquina virtual

Añadir las Guest Addtions a una máquina virtual

 

Añadir las Guest Addtions a una máquina virtual

Añadir las Guest Addtions a una máquina virtual

Y ya tenemos una máquina en local, lista para nuestras pruebas

Hace poco tuve que hacer una implantación de moodle en Windows y quería explicar los pasos a seguir para hacer una instalación segura y cuando digo segura me refiero a personalizarla adecuadamente sin las opciones/paquetes que vienen por defecto.

Lo primero que tenemos que hacer es descargarnos moodle para Windows usando el zip desde la propia página:

https://download.moodle.org/windows/

Este zip viene con una distribución de xampp, la cuál para la instalación viene muy bien porque trae la base de datos mysql (ahora mariadb), el servidor web apache y el php configurado. Si descomprimimos veremos que podemos arrancar xampp-control el cuál nos permite acceder al panel de control de xampp para arrancar apache y mysql que es lo que necesitamos para instalar moodle.

Panel de xampp con los servicios de Apache y MariaDB

Panel de xampp con los servicios de Apache y MariaDB

Una vez tenemos apache y mariaDb arrancados ya podemos acceder por navegador a la instalación de moodle usando el nombre de máquina, localhost ó 127.0.0.1

Acceso a la instalación de moodle

Acceso a la instalación de moodle

Inicialmente moodle nos pedirá el idioma en el que queremos instalar moodle, las rutas físicas donde va a instalar y la conexión con la base de datos.

 

Rutas de instalación de moodle

Rutas de instalación de moodle

 

Conexión con la base de datos

Conexión con la base de datos

Aquí tenemos el primer gran problema de seguridad. Por defecto mysql o mariaDB o vienen sin password para root o con un password que desconocemos, y esto hay que cambiarlo para tener nuestro propio password seguro. La contraseña de root de la base de datos debe ser distinta de la de admin de moodle. Para hacer esto, abrimos una ventana de comandos y accedemos a la carpeta bin dentro de mysql en xampp y ejecutamos un par de comandos:

mysql -u root

Este comando nos ejecutará un intérprete de mariaDB como root, osea nos permite conectarnos a la base de datos como root, con lo que ya podremos cambiar la contraseña. Con el segundo comando cambiamos la contraseña de root:

SET PASSWORD FOR root@’localhost’ = PASSWORD(‘newpassword’);

Una vez configurada la contraseña de root de mariaDB, ya podemos avanzar en la configuración de moodle. Al avanzar, veremos como moodle crea y configura la base de datos, nos pide que cambiemos el password de admin de moodle (este será el administrador principal de moodle por lo que hay que poner un password complejo) y un nombre largo y corto a nuestra plataforma y con eso ya tenemos moodle.

Uno de los problemas que vamos a tener con esta instalación es el panel de xampp. En cuanto apaguemos el ordenador o cerremos sesión, se cierra todo. Para evitarlo, podemos crear servicios de la base de datos mariadb y del servidor web apache para que arranquen solos cuando se inicia el servidor. Dentro de cada una de las carpetas de dichos softwares, tenemos comandos para crear dichos servicios:

httpd.exe -k install -n “Apache2.4”

mysqld –install

 

Para mejorar la seguridad de nuestro moodle, existe un informe muy interesante donde nos dice cómo mejorarla. Para ello accedemos a administrador del sitio, informes, información general de seguridad. Cuanto más estatus en OK veamos mejor.

Informe de seguridad en moodle

Informe de seguridad en moodle

 

Entre estas opciones, por defecto viene mal configurado la opción de visualización de errores en php. Un atacante puede forzar errores en moodle los cuáles son muy útiles para ver la estructura interna de la instalación. Para cambiarla, hay que acceder al fichero php.ini e indicar:

display_errors = Off

Otra opción de seguridad a cambiar (necesaria para instalar moodle), es que por defecto podemos volver a llamar a la instalación de moodle y un atacante pueda sobreescribir nuestra instalación. Para evitarlo, hay que cambiar el permiso de escritura del fichero config.php de la carpeta de moodle. Para ello, lo ideal es quitar la herencia de permisos en Windows Server y poner a “Todos” los usuarios permiso de lectura.

Otro de los típicos valores que solemos configurar en moodle es la capacidad de subida de archivos en php. Por defecto son 8Mb que se puede quedar muy corto para ficheros de cursos. Para ampliarlo, accedemos al fichero php.ini y cambiamos los parámetros post_max_size y upload_max_size a nuestras necesidades.

Por último nos queda configurar el look & feel, lo cuál se puede hacer desde Administración del sitio, Apariencia. Aquí normalmente usaremos la opción Logotipos para añadir el logo de la empresa/organización donde estamos montando moodle y usaremos la opción selector de temas para cambiar el aspecto de moodle usando un tema:

Los temas son personalizaciones hechas con CSS, HTML, colores que podemos instalar en moodle para cambiar su aspecto por completo. Los temas podemos crearlos nosotros mismos, o podemos descargarlos desde la web de moodle

https://moodle.org/plugins/browse.php?list=category&id=3

 

Para instalar un tema en moodle, lo descargamos y descomprimimos dentro de la carpeta themes dentro de la carpeta moodle. Una vez descomprimidos y arrancado otra vez el servidor, veremos que los temas nos aparecen en el selector de temas. Sino aparecen, podemos usar la opción Borrar caché de temas para limpiar la caché de moodle y forzar a leer la carpeta de temas.

Borrar caché temas

Borrar caché temas

 

 

Uno de los conceptos que más de moda hay en internet a día de hoy es el “machine learning” y que está dando mucho que hablar. Hoy en día parece que sino sabemos de “Big Data”, “machine learning”, “business intelligence”, “cloud”, parece que no sepamos de nada. Es por ello que en este post, vamos a intentar entender qué es esto del “machine learning”.

 

El machine learning como su nombre indica, significa aprendizaje automático; en wikipedia tenemos una buena definición. ¿Qué significa esto? Pues es una rama de la inteligencia artificial que intenta diseñar técnicas para que las máquinas puedan aprender. Pensando en esta definición, podemos pensar en ciencia ficción, robots, algo lejano a nosotros.. y esto ¿Cómo cuadra en las empresas? ¿Por qué está tan de moda?

Porque gran parte del know-how obtenido de la inteligencia artificial, ahora lo podemos aplicar al análisis predictivo y eso es en definitiva el machine learning. Hoy en día las empresas son muy dinámicas y ya no sirven los datos de reportes de BI de las ventas del mes pasado. Hoy en día se necesitan a diario y quizás más importante, esos análisis se necesitan “Antes”, osea análisis predictivo y saber por ejemplo a qué precio debo vender: no intentar un análisis a posterior como siempre se ha hecho, sino un análisis predictivo y ahí es donde los algoritmos del aprendizaje automático pueden ayudar.

Para entenderlo mejor y de una forma muy práctica, aconsejo seguir este tutorial de la página de Microsoft Azure.

https://azure.microsoft.com/en-us/documentation/articles/machine-learning-create-experiment/

En este tutorial de menos de 1 hora, se detalla paso a paso cómo crear un experimento en Azure ML, osea (Azure Machine Learning) que es la parte de Azure que se dedica al Machine Learning y lo más importante, vemos cómo podemos sacarle uso al aprendizaje automático. Veamos algunos detalles:

  • Inicialmente podemos acceder al Azure Machine Learning Studio de forma gratuita sin necesidad de tener cuenta de Azure, de Office365, eso sí por tiempo limitado, pero que para demos es muy útil.
  • En este entorno muy similar a Azure, vemos que tenemos la posibilidad de crear experimientos o cargar datasets propios.  El tutorial trata de explicar que a partir de los datos históricos que tenemos de automóviles, con los algoritmos del machine learning, somos capaces de predecir el precio al que hay que vender los coches (análisis predictivo).
  • En el tutorial se usa un dataset de automóviles que hay de prueba donde claramente se ve el precio de los coches y el resto de características de los coches.
Conjunto de datos inicial donde está el precio

Conjunto de datos inicial donde está el precio

  • Si seguimos el tutorial vamos añadiendo módulos para procesar los datos, definir reglas, aplicar algoritmos de aprendizaje, predecir un precio…
Módulos de Azure Machine Learning Studio

Módulos de Azure Machine Learning Studio

  • A medida que vamos añadiendo módulos, vemos cómo aparece el esquema de todos los pasos y las conexiones entre unos y otros.
Esquema con todos los módulos en Azure ML

Esquema con todos los módulos en Azure ML

  • Uno de los pasos más importantes, es añadir los algoritmos de aprendizaje. Si seleccionamos el módulo de Machine Learning, podemos encontrar multitud de estos algoritmos y que son los que nos van a permitir predecir el valor del precio.
Algoritmos de regresión

Algoritmos de regresión

Algoritmos de clasificación

Algoritmos de clasificación

 

  • Una vez tenemos los pasos bien definimos, los algoritmos seleccionados… entrenamos el experimento para que la máquina “aprenda”, osea que se aplique el algoritmo a los datos, para que en este caso, prediga el valor de venta de los coches. Para ello disponemos del botón Run.
Entrenar a la máquina

Entrenar a la máquina

  • Una vez entrenado el conjunto, podemos volver a abrir el dataset y veremos los datos predichos. En este caso vemos la columna del precio y el valor predicho de venta según el algoritmo de aprendizaje.
Dataset con los datos predichos

Dataset con los datos predichos

 

 

  • Como cualquier experimento, también podemos saber el error que hemos cometido
Error cometido en el análisis de los datos

Error cometido en el análisis de los datos

 

Y aquí es donde podemos ver realmente la utilidad del machine learning, osea el poder aplicar algoritmos del  aprendizaje automático a nuestros datos diarios de la empresa, para por ejemplo poder predecir cómo irá una futura venta, a analizar a qué precio voy a tener que vender un nuevo producto para ser más competitivo.

Uno de los grandes dolores de cabeza de SharePoint es cómo personalizar los formularios. Con SharePoint podemos utilizar la maravillosa funcionalidad de las listas personalizadas para simular cualquier base de datos, pero cuando vamos a editar cualquier contenido, nos encontramos con el típico formulario de una custom list, que es feo y poco usable: todos los campos van uno detrás de otro con lo que sí o sí te encuentras con un scroll lateral y además con espacio vacío en la parte derecha.

Entonces intentamos ver cómo personalizar ese formulario y nos encontramos con varias formas:

InfoPath: mejor lo dejamos… es antiguo y Microsoft quiere dejarlo de usar
PowerApps: la mejor opción, si lo tenemos instalado y configurado…
Designer: con la versión 2013 ya nos quitaron la versión web y en 2016 no existe…

Normalmente optamos por la versión de Designer, pero cuando abrimos los formularios nos encontramos con un componente que tiene todos los campos, pero no podemos acceder a él. Podemos añadir código arriba o abajo del formulario, pero no en los campos. Por ejemplo ¿y si quiero poner los campos en 2 columnas para aprovechar mejor el espacio?.

Por suerte, con el Editor de contenido se pueden hacer milagros…

La idea es muy sencilla: creamos un html y un javascript que añadimos a la librería de siteassets y añadimos 2  editores de contenido al formulario que queramos editar.

Componente de SharePoint que permite añadir html, javascript, css...

Componente de SharePoint que permite añadir html, javascript, css…

En uno de ellos enlazamos el javascript y en el otro el html personalizado subidos en la librería de SiteAssets. El Javascript es así:

 

Javascript que subimos a SharePoint

Javascript que subimos a SharePoint

En el script con jquery vamos recorriendo los campos del formulario usando data-displayName. Fijémonos que usa un span denominado hillbillyForm que es el que luego referencia en el html como una class.

El html es muy sencillo, simplemente ponemos en celdas de tablas los campos del customList y como class asociamos hillbillyForm, en este caso las columnas de Incidencia y Familia.

Html que añadimos a SharePoint

Html que añadimos a SharePoint

El html lo formateamos con tablas, capas, css o como queramos y una vez subido y asociado a SharePoint, voilá veremos cómo el formulario se personaliza.

En esta web tenemos la explicación del creador de este script

http://www.markrackley.net/2013/08/29/easy-custom-layouts-for-default-sharepoint-forms/

y en este video, se detalla paso a paso cómo hacerlo:

 

Funciona tanto en SharePoint Online como OnPremise

Un detalle: para que SharePoint pueda integrar y descargar correctamente el javascript y el html personalizado, es necesario desactivar la característica Estrategia de descarga mínima.

Desactivar la característica Estrategia de descarga mínima

Desactivar la característica Estrategia de descarga mínima

 

https://msdn.microsoft.com/en-us/library/office/dn456544.aspx

 

A %d blogueros les gusta esto: