Aunque existen multitud de extensiones que permiten identificar los detalles sobre la plataforma de desarrollo de un portal web, una forma rápida y sencilla de determinar si un portal está desarrollado con este gestor, sería:
.- Abrir la consola en el navegador (F12 en Chrome y seleccionar la pestaña "Console")
.- Escribir en la consola "Liferay" y pulsar Intro
Si esta petición nos devuelve un objeto, indicará que el portal web que nos ocupa está desarrollado con este gestor
Si por el contrario la respuesta obtenida es: "Liferay no está definido", indicará que este portal no está desarrollado con Liferay.
1 de mayo de 2017
:: Liferay. Ocultar detalles de la versión
Es habitual que en los portales desarrollados con el gestor Liferay, no se oculten los detalles de la versión desplegada. Como en otros CMS's quizás sería buena práctica ocultarlos por cuestiones de posibles vulnerabilidades, facilitando de esta manera el trabajo.
En un portal desarrollado en Liferay podemos ver que en las cabeceras aparece toda la información de la versión. Por ejemplo:
Para ocultar los detalles de la versión deplegada, debemos añadir la siguiente línea en el fichero "portal-ext.properties".
Tras reiniciar el tomcat, la información que veremos en las cabeceras será algo como esto, donde no se dan detalles de la versión del gestor:
En un portal desarrollado en Liferay podemos ver que en las cabeceras aparece toda la información de la versión. Por ejemplo:
Liferay-Portal:Liferay Portal Community Edition 6.2 CE GA6 (Newton / Build 6205 / January 6, 2016)
Para ocultar los detalles de la versión deplegada, debemos añadir la siguiente línea en el fichero "portal-ext.properties".
http.header.version.verbosity=partial
Tras reiniciar el tomcat, la información que veremos en las cabeceras será algo como esto, donde no se dan detalles de la versión del gestor:
Liferay-Portal:Liferay Portal Community Edition
24 de abril de 2017
:: Tratar JSON desde C#
Es habitual tener que realizar una petición a una API para consumir un servicio, y que este nos devuelva el resultado en formato JSON del que extraeremos la información necesaria.
Aunque es una tarea sencilla, y únicamente a modo de recordatorio, para llevar a cabo esta tarea desde una aplicación C#, el código sería algo similar a este:
Aunque es una tarea sencilla, y únicamente a modo de recordatorio, para llevar a cabo esta tarea desde una aplicación C#, el código sería algo similar a este:
String url = "https://api.sunrise-sunset.org/json" + "?lat=" + txtLatitud.Text + "&lng=" + txtLongitud.Text + "&date=" + fecha;
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject(responseFromServer);
if (obj != null)
{
this.txtRespuesta.Text = responseFromServer.ToString();
this.txtSunrise.Text = obj.results.sunrise;
this.txtSunset.Text = obj.results.sunset;
}
reader.Close();
response.Close();
17 de abril de 2017
:: Alfresco. Importar usuarios desde un CSV
A la hora de crear varios usuarios en Alfresco, podemos hacerlo por medio de un fichero CSV, el cual debe seguir un formato específico.
Esta tarea es útil -por ejemplo- cuando tenemos que crear una relación extensa de usuarios, estableciendo cuotas de disco, o simplemente creando credenciales de acceso al gestor documental.
Si se ha especificado una dirección de correo electrónico para cada cuenta de usuario a crear, estos recibirán un mail con los datos de acceso (siempre y cuando las notificaciones se encuentren habilitadas).
Un ejemplo de fichero CSV para crear varios usuarios en Alfresco podría ser el siguiente:
Dentro de nuestro Alfresco seleccionaremos "Administración" > "Usuarios"
Tras la pulsación del botón "Subir fichero CSV de usuarios", este fichero se subirá a nuestro Alfresco y será procesado, obteniendo los resultados de la operación.
Esta tarea es útil -por ejemplo- cuando tenemos que crear una relación extensa de usuarios, estableciendo cuotas de disco, o simplemente creando credenciales de acceso al gestor documental.
- La información que puede contener es la siguiente:
- Debe estar en UTF-8, ya que de lo contrario tendremos problemas con caracteres extraños
- El separador debe ser el caracter "," (coma)
User Name,First Name,Last Name,E-mail Address,,Password,Company,Job Title,Location,Telephone,Mobile,
Skype,IM,Google User Name,Address,Address Line 2,Address Line 3,Post Code,Telephone,Fax,Email
Si se ha especificado una dirección de correo electrónico para cada cuenta de usuario a crear, estos recibirán un mail con los datos de acceso (siempre y cuando las notificaciones se encuentren habilitadas).
Un ejemplo de fichero CSV para crear varios usuarios en Alfresco podría ser el siguiente:
import_usr01,Usuario 1, Apellidos 1,usr1@netic360.es,,import_usr01,netic360,Desarrollador web,Madrid,123456789
import_usr02,Usuario 2, Apellidos 2,usr2@netic360.es,,import_usr02,netic360,Desarrollador Liferay,Madrid,123456789
import_usr03,Usuario 3 , Apelllidos 3,usr3@netic360.es,,import_usr03,netic360,Desarrollador Liferay,Madrid,123456789
import_usr04,Usuario 4, Apellidos 4,usr4@netic360.es,,import_usr04,netic360,Desarrollador .NET,Madrid,123456789
Dentro de nuestro Alfresco seleccionaremos "Administración" > "Usuarios"
Tras la pulsación del botón "Subir fichero CSV de usuarios", este fichero se subirá a nuestro Alfresco y será procesado, obteniendo los resultados de la operación.
11 de abril de 2017
:: CMIS. Conexión con Alfresco
Describiremos a continuación una prueba de concepto de conexión desde una aplicación desarrollada en C# con Alfresco, a través de CMIS.
De acuerdo a la definición que aparece en la Wikipedia, Content Management Interoperability Services (CMIS) o Servicios de Interoperabilidad de Gestión de Contenidos es un estándar abierto que permite a diferentes sistemas de gestión de contenidos interoperar a través de Internet. En concreto, CMIS define una capa de abstracción para el control de diversos sistemas de gestión de documentos y repositorios, que utilicen protocolos web.
Estos dos últimos parámetros constituyen las credenciales de acceso a nuestro Alfresco.
Tras pulsar sobre el botón de login, se llamará a la siguiente función, que realizará la conexión a Alfresco a través de CMIS
Puesto que hemos llevado a cabo la conexión con Alfresco utilizando el estándar CMIS desde una aplicación C#, utilizaremos "DotCMIS".
¿Qué es CMIS?
De acuerdo a la definición que aparece en la Wikipedia, Content Management Interoperability Services (CMIS) o Servicios de Interoperabilidad de Gestión de Contenidos es un estándar abierto que permite a diferentes sistemas de gestión de contenidos interoperar a través de Internet. En concreto, CMIS define una capa de abstracción para el control de diversos sistemas de gestión de documentos y repositorios, que utilicen protocolos web.
¿Cómo nos conectamos con Alfresco a través de CMIS?
Para llevar a cabo la conexión, tendremos un Alfresco (por ejemplo instalado en local en el puerto 8282) y necesitaremos una función a la que le pasaremos 3 parámetros:- Ruta: Indica la ruta CMIS (http://localhost:8282/alfresco/api/-default-/public/cmis/versions/1.0/atom)
- Usuario: usuario definido en Alfresco
- Clave: clave de acceso a Alfresco
Estos dos últimos parámetros constituyen las credenciales de acceso a nuestro Alfresco.
Tras pulsar sobre el botón de login, se llamará a la siguiente función, que realizará la conexión a Alfresco a través de CMIS
/*
* Conexión con Alfresco
*/
private static ISession ConexionAlfresco(String ruta, String usuario, String clave)
{
if (System.Diagnostics.Debugger.IsAttached)
Console.WriteLine("Estableciendo conexión con Alfresco...");
try
{
Dictionary parameters = new Dictionary();
parameters[DotCMIS.SessionParameter.BindingType] = BindingType.AtomPub;
//Parámetros de conexión
parameters[DotCMIS.SessionParameter.AtomPubUrl] = ruta; parameters[DotCMIS.SessionParameter.User] = usuario; parameters[DotCMIS.SessionParameter.Password] = clave;
SessionFactory factory = SessionFactory.NewInstance();
IList repos = factory.GetRepositories(parameters);
ISession session = repos.ElementAt(0).CreateSession();
return session;
}
catch (Exception ex)
{
Console.WriteLine("ERROR :: No se ha podido establecer la conexión con Alfresco");
return null;
}
} Puesto que hemos llevado a cabo la conexión con Alfresco utilizando el estándar CMIS desde una aplicación C#, utilizaremos "DotCMIS".
22 de marzo de 2017
:: Pensamiento lógico. El acertijo de Einstein
Este sería un ejercicio práctico válido para todos aquellos que optan a un puesto de trabajo tecnológico en una supuesta entrevista.
Aunque este acertijo se le atribuye a Albert Einstein, no hay pruebas de que así sea; Sin embargo, se trata de un ejercicio que requiere la aplicación de un pensamiento lógico y estructurado para dar con la solución.
2.- Una persona con una nacionalidad diferente vive en cada una de las casas
3.- Los cinco dueños beben cada uno un tipo de bebida, fuman una marca de tabaco, y tienen un tipo de mascota
4.- Ningún dueño tiene la misma mascota, fuma la misma marca de tabaco, ni bebe la misma bebida
2.- El sueco tiene perros como mascotas
3.- El danés bebe té
4.- La casa verde está a la izquierda de la casa blanca
5.- El dueño de la casa verde bebe café
6.- La persona que fuma Montecristo cría pájaros
7.- El dueño de la casa amarilla fuma Partagás
8.- El hombre que vive en la casa del medio bebe leche
9.- El noruego vive en la primera casa
10.- El hombre que fuma Cohiba vive al lado del hombre que tiene gatos
11.- El hombre que tiene un caballo vive al lado del hombre que fuma Partagás
12.- El dueño que fuma Romeo y Julieta bebe cerveza
13.- El alemán fuma Cuaba
14.- El noruego vive al lado de la casa azul
15.- El hombre que fuma Cohiba tiene un vecino que bebe agua
Si no es así, una posible orientación para resolver el problema planteado sería disponer de papel y boli (o en su defecto una pizarra) donde iremos desgranando cada una de las pistas, hasta dar con la solución.
Inicialmente planteamos una tabla vacía con las premisas que tenemos.
Posteriormente iremos rellenando la tabla con la información extraída de las pistas.
Tras ir cumplimentando paso a paso la tabla anterior con las pistas (no tienen por qué seguirse en orden), llegamos a la conclusión de que es la persona con nacionalidad alemana la que tiene peces como mascota.
Aunque este acertijo se le atribuye a Albert Einstein, no hay pruebas de que así sea; Sin embargo, se trata de un ejercicio que requiere la aplicación de un pensamiento lógico y estructurado para dar con la solución.
Premisas
1.- Hay cinco casas de cinco colores distintos2.- Una persona con una nacionalidad diferente vive en cada una de las casas
3.- Los cinco dueños beben cada uno un tipo de bebida, fuman una marca de tabaco, y tienen un tipo de mascota
4.- Ningún dueño tiene la misma mascota, fuma la misma marca de tabaco, ni bebe la misma bebida
Pistas
1.- El británico vive en la casa roja2.- El sueco tiene perros como mascotas
3.- El danés bebe té
4.- La casa verde está a la izquierda de la casa blanca
5.- El dueño de la casa verde bebe café
6.- La persona que fuma Montecristo cría pájaros
7.- El dueño de la casa amarilla fuma Partagás
8.- El hombre que vive en la casa del medio bebe leche
9.- El noruego vive en la primera casa
10.- El hombre que fuma Cohiba vive al lado del hombre que tiene gatos
11.- El hombre que tiene un caballo vive al lado del hombre que fuma Partagás
12.- El dueño que fuma Romeo y Julieta bebe cerveza
13.- El alemán fuma Cuaba
14.- El noruego vive al lado de la casa azul
15.- El hombre que fuma Cohiba tiene un vecino que bebe agua
El acertijo
¿Quién tiene un pez como mascota?Buscando la solución
Teniendo en cuenta las premisas y las pistas anteriores, ¿sabrías dar con la solución?Si no es así, una posible orientación para resolver el problema planteado sería disponer de papel y boli (o en su defecto una pizarra) donde iremos desgranando cada una de las pistas, hasta dar con la solución.
Inicialmente planteamos una tabla vacía con las premisas que tenemos.
| Casa 1 | Casa 2 | Casa 3 | Casa 4 | Casa 5 | |
| Color | |||||
| Nacionalidad | |||||
| Beben | |||||
| Fuman | |||||
| Mascota |
Posteriormente iremos rellenando la tabla con la información extraída de las pistas.
| Casa 1 | Casa 2 | Casa 3 | Casa 4 | Casa 5 | |
| Color | Amarillo | Azul | Rojo | Verde | Blanco |
| Nacionalidad | Noruego | Danés | Británico | Alemán | Sueco |
| Beben | Agua | Té | Leche | Café | Cerveza |
| Fuman | Partagás | Cohiba | Montecristo | Cuaba | Romeo y Julieta |
| Mascota | Gatos | Caballo | Pájaros | Peces | Perros |
Tras ir cumplimentando paso a paso la tabla anterior con las pistas (no tienen por qué seguirse en orden), llegamos a la conclusión de que es la persona con nacionalidad alemana la que tiene peces como mascota.
15 de marzo de 2017
:: Archivo CSV. Error de formato SYLK
En ocasiones, cuando desde una aplicación generamos un fichero .csv y tratamos de abrirlo con Microsoft Excel, obtenemos el siguiente error:
Este error, que a menudo suele consumirnos bastante tiempo hasta dar con una solución, se debe a que el primer carácter que utilizamos (quizás el primer elemento de la cabecera) suele ser el literal "ID". Por ejemplo, queremos generar un fichero csv con un listado de los post de nuestro blog, incluyendo el identificador y el título del mismo.
Normalmente, como encabezado utilizamos: "ID;Título".
Precisamente es el literal "ID" el que provoca que al intentar abrir -desde excel- el fichero csv generado nos devuelva un error de formato.
Para saber qué es un fichero SYLK, puedes consultar la wikipedia: https://es.wikipedia.org/wiki/SYLK
Se ha detectado que “fichero.csv” es un archivo SYLK, pero no se puede cargar. Puede que el archivo contenga errores o que no tenga formato de archivo SYLK. Haga clic en Aceptar para intentar abrirlo con otro formato
Este error, que a menudo suele consumirnos bastante tiempo hasta dar con una solución, se debe a que el primer carácter que utilizamos (quizás el primer elemento de la cabecera) suele ser el literal "ID". Por ejemplo, queremos generar un fichero csv con un listado de los post de nuestro blog, incluyendo el identificador y el título del mismo.
Normalmente, como encabezado utilizamos: "ID;Título".
Precisamente es el literal "ID" el que provoca que al intentar abrir -desde excel- el fichero csv generado nos devuelva un error de formato.
Para saber qué es un fichero SYLK, puedes consultar la wikipedia: https://es.wikipedia.org/wiki/SYLK
Suscribirse a:
Entradas (Atom)
:: Liferay DXP 2026. Habilitar RSS
En la versión Liferay DXP 2026 para habilitar las fuentes de datos RSS debemos seguir los pasos siguientes: 1.- Accederemos a la Configuraci...
-
En multitud de ocasiones es útil obtener el modelo de datos de una aplicación para determinar las tablas, consultas, relaciones,... En es...
-
La siguiente prueba de concepto consistirá en la creación de un webscript que liste las carpetas contenidas en una carpeta dada, pasada co...
-
En Liferay 7.3 y, en versiones anteriores, para el idioma por defecto -en las configuraciones habiturales- no se muestra el código de idioma...












