Automatizando builds con CMAKE

Algunos programadores del mundillo GNU ya se han dado cuenta de que Make te simplifica la vida a la hora de compilar, pero es algo complicado de configurar. Por ello, hoy voy a enseñar como crear un proyecto C++ y automatizar la compilación con CMake.

Nuestra estructura de proyecto va a ser:

\build
\src\main.cpp
\src\CMakeLists.txt
\doc\Doxygen.in

Para empezar, como es costumbre debemos instalar la herramienta cmake, y doxygen si queremos generar la documentación.
Sigue leyendo

Cómo habilitar SSL a través de una CDN en WordPress

Después de meses sin poder publicar entradas vuelvo de nuevo a ello =D.

Para empezar me gustaría dar unas pinceladas al concepto de CDN. Veréis, una CDN (Content Delivery Network) es una plataforma de red superpuesta a Internet. Cada host, a partir de ahora surrogate, de la red tiene por finalidad acercar los contenidos, habitualmente multimedia, a los consumidores. Por ello los “surrogates” están colocados lo más cerca posible de las redes de acceso de los usuarios (en las redes de los ISP). Al estar cerca de las redes de acceso de los usuarios, la latencia que perciben estos al acceder a los contenidos de la CDN es mucho menor que si se intenta acceder a una red externa. Sigue leyendo

Compilar un Kernel en Debian, Ubuntu y derivados.

IMG_0291-1.PNG
1. Conceptos básicos

Si posees conocimientos de GNU/Linux y sistemas operativos puedes aventurarte a la próxima sección; en la presente discutiremos conceptos básicos.

Cuando hablamos de “Linux” es frecuente referirnos al sistema operativo y sus aplicaciones y no al núcleo del sistema. La realidad es que Linux es solamente el núcleo del sistema (también denominado kernel): componente de gran envergadura que hace operar nuestra computadora. Entre las funciones más importantes del kernel: Sigue leyendo

Desactivar Auto_ONOWifi

Ono-wiFiHoy os traigo este post para todos aquellos que habéis notado la aparición de una red WIFI llamada “Auto_ONOWifi” esta wifi tanto puede ser vuestra como de algún vecino.

A que se debe, pues es un plan nuevo de ONO para sus clientes que permite no tener que gastar tarifa de Internet en nuestro móvil, por lo que significa que cualquier cliente de ONO tiene la posibilidad de conectarse a la WIFI. Pero como suele pasar con estas cosas ONO ni pide permiso ni te avisa que te lo va a poner, directamente lo pone y quien se de cuenta y quiera quitarlo ya se quejara.

Para poder desactivarlo teneis que estar registrado en la pagina web de ONO y visitar el siguiente link DESACTIVAR Auto_ONOWifi

Si tenéis alguna duda no dudéis en dejad vuestros comentarios.

 

 

 

Obtener campos y propiedades de una clase en C#

Buenos días a todos,
alguna vez nos hemos encontrado con la necesidad de acceder a un campo dinámicamente sin tener en cuenta como se llama? Esto podríamos usarlo para serializar, deserializar, crear funciones de debug y un largo etc..

Bueno pues eso es fácil de solucionar con la librería System.Reflection.

Siguiendo las explicaciones de la página msdn..

http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo.getvalue.aspx

Sería tan fácil como esto

 FieldInfo myf = typeof(MyClass).GetField("val");
Console.WriteLine(myf.GetValue(null));
val = "hi";

En caso de no tener una clase estática deberíamos usar en lugar de null la instancia de esta clase.

Para obtener propiedades necesitaríamos exactamente el mismo código cambiando FieldInfo Por PropertyInfo:

 PropertyInfo myf = typeof(MyClass).GetField("val");
Console.WriteLine(myf.GetValue(null,null));
val = "hi";

Para acabar os dejo una pequeña función que nos puede ayudar en varios escenarios:

  public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            foreach (MemberInfo mi in this.GetType().GetMembers())
            {
                if (mi.MemberType == MemberTypes.Field)
                {
                    FieldInfo pi = mi as FieldInfo;
                    if (pi != null)
                    {
                        try
                        {
                            sb.AppendLine(pi.Name + ": " + pi.GetValue(this).ToString());
                        }
                        catch {
                            sb.AppendLine(pi.Name + ": null");

                        }
                    }
                }
                else if (mi.MemberType == MemberTypes.Property)
                {
                    PropertyInfo pi = mi as PropertyInfo;
                    if (pi != null)
                    {
                        try
                        {
                            sb.AppendLine(pi.Name + ": " + pi.GetValue(this).ToString());
                        }
                        catch
                        {
                            sb.AppendLine(pi.Name + ": null");

                        }
                    }
                }
            }

            return sb.ToString();
        }