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:


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.

  • La información que puede contener es la siguiente:
  • 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
  • Debe estar en UTF-8, ya que de lo contrario tendremos problemas con caracteres extraños
  • El separador debe ser el caracter "," (coma)

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.



¿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.

Premisas

1.- Hay cinco casas de cinco colores distintos
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

Pistas

1.- El británico vive en la casa roja
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

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 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:

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

8 de marzo de 2017

:: Alfresco CE 2017. Establecer página de inicio

En la versión Community de Alfresco 201702 un usuario puede establecer la página de inicio que desee, de forma que -en el próximo inicio de sesión- será redirigido a la página seleccionada.

Para establecer esta página de inicio, el usuario puede navegar a una carpeta en concreto de la biblioteca de documentos, y en el menú desplegable bajo su usuario seleccionaremos la opción "Usar página actual".

De la misma manera, cuando el usuario pulse sobre el enlace "Inicio", será redirigido a la página establecida.

Puedes encontrar información detallada en el siguiente video:


1 de marzo de 2017

:: Alfresco. Roles

En Alfresco existen una serie de roles predefinidos, por lo que describiremos a continuación - de manera simple- y a modo de recordatorio, qué es lo que puede hacer cada uno de ellos.

.- Administrador
Tiene control total sobre todos los sitios, bien creados por él mismo o por otros usuarios.

.- Colaborador
Tiene todos los permisos sobre los contenidos creados por él mismo, de un sitio. Además tiene los permisos para editar pero no borrar los contenidos creados por otros usuarios miembros del sitio.

.- Contribuidor
Tiene todos los permisos sobre los contenidos creados por él mismo, de un sitio. Además no puede editar o eliminar contenidos creados por otros usuarios miembros del sitio.

.- Consumidor
Tiene sólo permisos para visualizar contenidos y no puede crear los suyos propios.


:: Liferay 7.4. Habilitar/deshabilitar la vista previa de un documento

En Liferay 7.4 podemos habilitar o deshabilitar la vista previa de un documento en la biblioteca de documentos y multimedia. Se trata de un ...