miércoles, 30 de octubre de 2013

PostgreSQL: como realizar un insert con UUID

Si tenemos que realizar un insert en una tabla cuyo id viene determinado por el tipo UUID tenemos que hacer uso de la función uuid_generate_v4(). Pero para ello tenemos que usar antes la expresión CREATE EXTENSION "uuid-ossp";. Vamos por partes, supongamos que nuestra tabla la hemos creado de la siguiente forma:
CREATE TABLE permiso
(
  id uuid NOT NULL,
  opcion character varying(255),
  control character varying(255),
  CONSTRAINT permiso_pkey PRIMARY KEY (id)
)
Para introducir un nuevo registro en la tabla tenemos que ejecutar lo siguiente:
CREATE EXTENSION "uuid-ossp";
insert into permiso (id, opcion,control) values(uuid_generate_v4(), 'empleado', 'ver');
Y ya podemos ver nuestro nuevo registro en la tabla:


Si os gustado/servido, que no te de miedo difundir a destajo ;-)

martes, 29 de octubre de 2013

.NET. RadioButton, como implementar y guardar en base de datos

Cuando trabajamos con RadioButton en .NET, no existe un control al que le digamos que queremos, por ejemplo, 4 opciones y que solamente se puede seleccionar una, sino que tenemos que arrastrar cuatro componentes del tipo RadioButton a nuestro formulario y agruparlos mediante un componente del tipo GroupBox o Panel. Símplemente es arrastrarnos este componente al formulario y arrastrar dentro del mismo los RadioButton. Ya tendremos así el comportamiento que deseamos. Algo así como os muestro en la imagen siguiente:
En este caso los tengo agrupados en un Panel. Este componente no es visible al usuario de forma que el marco no es visible en la interfaz. Con este gesto ya solamente puede seleecionar uno de los componentes del RadioButton. Ahora, a la hora de almacenarlos, si tenemos una clase Usuario con una propiedad del tipo bool llamada Funcionario, podemos hacer algo así:

if (rbFuncionario.Checked){
   empleado.Funcionario = true;

}
else {
    empleado.Funcionario = false;

}
Y ya tenemos nuestra propiedad inicializada. Recuerda que puedes consultar un listado con las entradas relacionadas con .NET en este enlace.

lunes, 28 de octubre de 2013

SEO en el título. 7 opiniones de 7 grandes expertos de SEO

Esta tarde he pensado en si estaba eligiendo bien el título para los post con el fun de tener buen SEO. ¿Y qué hace una persona como yo que no tiene ni idea de SEO ante esa pregunta? Pues intentar aprender. Entonces me ido a por el libro de @sicodeandres que tengo en casa y que podéis comprar en Amazon aquí, luego he buscado en las que conozco como http://www.vivirdelared.com/ o http://www.marketingguerrilla.es/ y luego he hecho una búsqueda en Google limitando a páginas con un año de antigüedad como máximo.
  • Según Sico de Andrés en su libro: pongase en lugar de su potencial cliente e intente crear un título que le sirva de reclamo en relación a lo que ofrece. El título debe de atraer al usuario con frases que le inciten a visitarle pero no confundirle con algo que luego no van a encontrar. La recomendación de los buscadores a la hora de crear los títulos es que no sobrepasen 170 caracteres. Debe intentar que el usuario lea todo el título, sin frases cortadas ni puntos suspensivos. Intente situar su termino clave principal lo más a la izquierda posible.

How to ... Cómo crear un formulario de autenticación en .NET

Continuamos con la serie de entradas relacionadas con .NET. (Puedes ver un resumen de todas las entradas relacionadas con .NET aquí). En la última entrada hicimos una SlashScreen o lo que es lo mismo, mostramos un mensaje de bienvenida mientras que se carga nuestra aplicación (podemos ver esta entrada aquí). Una vez que se muestra este mesaje vamos a mostrar un formulario donde recoger el login y password. Ese formulario será algo así:
A este formulario lo vamos a llamar Autenticacion.cs y si recordamos el fichero program.cs, será de la siguiente forma:

viernes, 25 de octubre de 2013

How to... Como crear una pantalla de carga de nuestro proyecto en .NET, SplashScreen

Continuamos con .NET en el blog, recuerda que puedes ver una lista completa de las entradas relacionadas con .NET aquí.
En este post vamos a crear una pantalla de inicio de nuestra aplicación que vamos a mostrar antes de que arranque nuestro proyecto. Esto servirá para mostrar un mensaje mientras se abre nuestra aplicación y así darle una apariencia profesional a nuestro desarrollo. Para ello lo primero que vamos a hacer es crearnos un nuevo proyecto, en mi caso lo llamaré EjemploSplash.

En el Form principal del proyecto he puesto un label con el texto Formulario Principal para que quede identificado solamente. 

jueves, 24 de octubre de 2013

Como implementar la relación one to one con NHibernate

Seguimos a la carga con NHibernate y .NET. Podéis encontrar más apuntes sobre NHibernate aquí. Ahora toca como implementar una relación del tipo one to one para, en mi caso, mapear la tabla de empleados con la de contraseñas. A mi particularmente me gusta separar estas tablas, para no tener tablas muy grandes y para separar los datos del usuario de los datos de acceso. Este sistema permite mayor flexibilidad para poder facilitar el acceso a nuestra aplicación a otro tipo de entidades como por ejemplo a clientes o proveedores. Estos  que tenemos dados de alta en otra tabla y se puedan loguear teniendo que hacer no muchas modificaciones. El esquema que vamos a implementar es el siguiente:

Como hemos dicho, si por ejemplo tenemos otra tabla con los clientes y queremos darles acceso a nuestra aplicación solamente tendremos que añadirle una columna con el usuario_id en la tabla clientes y la relación con la tabla usuario.
Partimos de que tenemos las tablas creadas y las relaciones correctamente implementadas apra centrarnos en los ficheros que necesitamos para crear estas clases en .NET. Si nos interesa, podemos hacer que NHibernate nos cree las tablas por nosotros como mostramos en esta entrada. El fichero Empleado.cs será tal y como mostramos a continuación:
public class Empleado : Entity
    {      
        public virtual string Nombre { get; set; }
        public virtual string Apellidos { get; set; }
        public virtual string Extension { get; set; }
        public virtual string Telefono { get; set; }
        public virtual string Email { get; set; }
        public virtual Usuario Usuario_id { get; set; }
    }
Y el fichero Usuario.cs será así:
    public class Usuario : Entity
    {
        public virtual string Loggin { get; set; }
        public virtual string Password { get; set; }
    }
Podemos ver que en la clase Empleado tiene un atributo que es un usuario donde almacenaremos el Id del objeto Usuario. Además podemos ver que ambas clases extiendes de otra llamada Entity. En la clase Entity es donde defino el Id, la versión y otras características necesarias. Esto lo hago siguiendo las recomendaciones de este libro NHibernate 3.0 Cookbook. Los ficheros hbm.xml que nos mapeará los objetos con la base de datos y donde implementaremos las relacciones serán los siguientes. Primero el Empleado.hbm.xml:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    assembly="OtraPrueba"
    namespace="OtraPrueba">
  <class name="Empleado">
    <id name="Id">
      <generator class="guid.comb" />
    </id>
    <version name="Version" />
    <property name="Nombre" not-null="true" />
    <property name="Apellidos" not-null="true" />
    <property name="Extension" not-null="true" />
    <property name="Telefono" not-null="true" />
    <property name="Email" not-null="true" />
    <many-to-one name="Usuario_id"        unique="true"     column="Usuario_id"/>
   
  </class>
</hibernate-mapping>
Y ahora el fichero Usuario.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    assembly="OtraPrueba"
    namespace="OtraPrueba">
  <class name="Usuario">
    <id name="Id">
      <generator class="guid.comb" />
    </id>
    <version name="Version" />
    <property name="Loggin" not-null="true" />
    <property name="Password" not-null="true" />

<one-to-one name="Empleado"        class="Empleado"/>

  </class>
</hibernate-mapping>
Podemos ver en el fichero Empleado.hbm.xml como se implementa la relación one to one y donde le indicamos la clase Usuario y el nombre de la columna, en nuestro clase Usuario_id. Ya podemos entonces hacer los siguiente:
Usuario usuario = new Usuario();
usuario.Loggin = txtLogin.Text.ToString();
usuario.Password = txtPassword.Text.ToString();


Empleado empleado = new Empleado();
empleado.Nombre = txtNombre.Text.ToString();
empleado.Apellidos = txtApellidos.Text.ToString();
empleado.Extension = txtExtension.Text.ToString();
empleado.Email= txtEmailText.ToString();
empleado.Telefono = txtTelefono.Text.ToString();
empleado.Usuario_id = usuario;


var nhConfig = new Configuration().Configure();
var sessionFactory = nhConfig.BuildSessionFactory();

var session = sessionFactory.OpenSession();
var tx = session.BeginTransaction();


session.Save(usuario);
session.Save(empleado);

tx.Commit();
Iré posteando como implementar el resto de relaciones a medida que tenga que ir empleándolas.
Espero que os sirva y si es así, compartir y difundir! No os de miedo usar los comentarios si tenéis algún problema o comentario que hacer

miércoles, 23 de octubre de 2013

NHibernate crea las bases de datos automáticamente

Si eres un lector habitual del blog sabrás que tengo algunas entradas relacionadas con .NET y NHibernate. Las puedes consultar aquí todas enlazadas. Pues relacionado con este tema, hoy he descubierto que NHibernate es capaz de crear las tablas por ti, sin que tengas que crear las tablas ni relaciones ni nada por el estilo previamente al proyecto. Una vez que tienes tus clases y sus correspondientes archivos de mapeo hbm.xml junto con el archivo hibernate.cfg.xml, mediante las siguientes líneas en el Main del punto de entrada de tu aplicación puedes crear las tablas y sus relaciones automáticamente:
var nhConfig = new Configuration().Configure();
var sessionFactory = nhConfig.BuildSessionFactory();
var schema = new SchemaExport(nhConfig);
schema.Create(false, true);
Esto se puede lograr gracias a la herramienta hbm2ddl y en el ejemplo que pongo anteriormente se crean todas las tablas relacionadas con el proyecto, pero también podemos usar otras expresiones como SchemaUpdate para que solamente se creen las modificaciones en las tablas. 
Si os sirve, difundir sin miedo por favor y si hay alguna duda o problema, no dudes en emplear los comentarios.

jueves, 10 de octubre de 2013

How to... Como ampliar el tamaño de una partición en una instancia de Amazon con CentOS

Si habéis leido la entrada sobre como ampliar el volumen de una instancia en Amazon que escribí hace unos días (aquí) es posible que lo hayáis probado con una instancia con Plesk tal y como escribí también (aquí). Si lo probais, comprobaréis que en este caso no funciona del todo bien y voy a intentar explicar el por qué.
Tenemos una instancia de Amazon con Plesk y CentOS con un volumen de 100 Gb tal y como mostramos en la imagen siguiente:


Pero si hacemos un df -h de nuestra instancia veremos que solamente tenemos disponibles 10 Gb de esos 100.


miércoles, 9 de octubre de 2013

How to ... Como instalar y configurar una instancia de Amazon AWS con Plesk

Por circunstancias del trabajo me toca hacer unas pruebas con Parallels Plesk y necesito poner en marcha una instancia de Amazon con Plesk para probar unas configuraciones que necesitamos modificar y validar con un cliente. Es por ello que he estado esta semana familiarizándome con AWS y sus características. Puedes ver las entradas de este blog relacionadas con AWS en el siguiente enlace (aquí).
Para los que no sepáis que es Plesk, se trata de una aplicación muy extendida en el mundo del hosting para gestionar servidores, tanto propios como de resellers. Mediante una interfaz gráfica vía web permite gestionar multitud de opciones como dominios, DNS, correo, hosting, etc, así como automatizar tareas. No vamos a hacer una explicación profunda en este post sobre Plesk, sino vamos a ponerlo en marcha mediante una instancia de Amazon del AWS Marketplace. De hecho como solamente tengo que hacer unas pruebas voy a emplear esta instancia (esta) con una licencia de evaluación para 14 días que conseguiremos posteriormente. 

martes, 8 de octubre de 2013

How to... Como cambiar el Volume de nuestra instancia por uno superior

Ya llevamos algunas entradas del blog hablando sobre Amazon. Primero creamos un servidor de manera gratuita con Ubuntu Server (aquí), luego accedimos a él mediante SSH en Windows (aquí) y luego le dimos una IP estática mediante Elastic IP (aquí).
Ahora vamos a comentar y aprender algo sobre como se almacena la información en las instancias de Amazon. Si recordamos cuando creamos la instancia, hemos creado un disco duro de 8 Gb que podemos ver en Volumes. 


How to ... Como tener IP estática en Amazon

En las dos entradas anteriores en las que hablábamos de Amazon ya teníamos instalado un servidor Ubuntu Server 12.04 de manera gratuita (aquí) y además teníamos acceso al mismo por ssh mediante Putty (aquí). Ahora vamos a seguir configurando nuestro servidor para poder tener en él lo que deseemos, un blog con wordpress, un servidor de aplicaciones, etc. 
Una de las primeras tareas que debemos realizar es asignarle una IP estática ya que de lo contrario la IP de conexión cada vez que paramos y arrancamos la instancia nos cambiará. Podemos comprobar como sucede esto deteniendo nuesta instancia y volviéndola a arrancar.
NOTA: los parámetros de conexión los vemos en Actions de la instacia, en Connect:


lunes, 7 de octubre de 2013

How to ... Como acceder a nuestra instancia de Amazon desde Windows

En el post anterior (aquí) vimos como crear una Micro Instancia de forma gratuita a través de Amazon. Pero una vez que hemos creado la instancia, ¿ahora qué? Lo primero que tenemos que hacer es poder acceder a ella. En este post voy a explicar como acceder a nuestra instancia desde Windows usando Putty.
La primera vez que accedemos a nuestra intancia tenemos que usar la clave privada que nos creamos anterioremente, aunque para acceder con el Putty tenemos que realizar unos pequeños ajustes. Si recordamos, la clave que nos creamos era del tipo .pem. Pues bien, lo primero que tenemos que hacer es cambiar nuestra clave de tipo .pem a tipo .ppk. Para ello tenemos que descargarnos PuttyGen de la misma página que descargamos Putty. Una vez que lo hemos hecho, lo arrancamos y veremos una pantalla como la que mostramos a continuación

How to... Como tener un servidor dedicado en Amazon de forma gratuita

Amazon no es solo una tienda que opera en Internet, es también una de las empresas de Hosting más afamadas del mundo, con multiples servicios que nos permiten desde alojar un sencillo blog con una instancia de Linux y Wordpress hasta procesos y plataformas de tamaño ingente con multitud de servicios y procesos tipo Pinterest, Reddit, etc tal y como ellos mismos anuncian en su web. La parte de Amazon que se encarga de ello se llama Amazon Web Service y se puede encontrar desde http://aws.amazon.com/es/.
Si bien tienen múltiples servicios con millones de configuraciones posibles, es un poco más complejo de utilizar que el resto de servicios de Hosting tipo OVH, Arsys, etc. Es por ello que ofrecen un servicio de microinstancias gratuito para aprender sobre su funcionamiento y familiarizarnos con su entorno y, en el caso de que te decidas a usarlo, pasar a un plan de pago. Hay un año de uso del servicio de forma gratuita. En este post vamos a explicar el funcionamiento de la capa gratuita de Amazon llamadas microinstancias y del que podemos encontrar información en el siguiente enlace aquí. Lo primero que tenemos que realizar es la creación de una cuenta, para ello vamos al enlace anterior y tenemos que ir a comenzar de forma gratuita:

Como cambiar blogspot a un dominio propio

En esta entrada voy a explicar como cambiar nuestro blog de una dirección blogspot a un dominio propio. Vamos a partir de la base de que tenemos nuestro dominio comprado y acceso al panel de gestión del mismo. Para ello tenemos que ir a Configuración -- Añadir un dominio personalizado.


viernes, 4 de octubre de 2013

Cambiar las fuentes de blogger: Google Fonts. Gracias a @oloman

Estos días ando de cambios en el blog, intentando cambiar la plantilla y dejar una apariencia un poco más elegante. Una de las cosas que he aprendido gracias al crack de @oloman es cambiar las fuentes del blog. En blogger no solo se pueden usar las fuentes por defecto sino que están accesibles todas las de Google Fonts. Hay unas 629 fuentes disponibles a fecha de hoy y en mi caso voy a usar Oswald para cambiar los títulos de las entradas.
 Lo primero que vamos a hacer es darnos un paseo por las fuentes disponibles o buscar directament la que deseamos:

martes, 1 de octubre de 2013

De profesión "mal-gestor acomodado" via @adelgado y @euribor_com_es

No suelo escribir sobre estos temas en el blog, intento que solamente sea un blog de tecnología, pero esta tarde no lo he podido resistir. Tras leer la entrada de hoy de uno de mis blog de cabecera www.euribor.com.es (aquí) y la noticia que colgaba en su twitter uno de los mejores periodistas relacionados con la tecnología en habla hispana @adelgado.

En el tuit se puede leer la noticia de http://www.zoomnews.es/ sobre como está preparando el Ministro Soria su salida del Ministerio y como está poniendo en el organismo Red.es a personas de su confianza para ello. 
Hecha esta introducción solo me queda un sentimiento, el de como se puede tener la cara tan dura. Luego se les oye pidiendo sacrificios, diciendo que hemos vivido por encima de nuestras posibilidad, que se acabo el  café para todos y otros muchos ejemplos que podemos encontrar sobre lo mal que lo hemos hecho y que por ello estamos donde estamos. 

Como poner analytics en Blogger

Hace un par de días que cambié la plantilla del blog y se me perdió la conexión con Analytics. Para volver a establecerlo en Blogger es muy sencillo. Primero tenemos que obtener el código de seguimiento en Analytics, para ello tenemos que ir a Administración - Información de seguimiento: