Páginas

30 de noviembre de 2015

Minimizar el ruido de tu disco duro con hdparm

Siempre hemos buscado la manera de maximizar el rendimiento de nuestros equipos y a su vez minimizar el uso tanto de recursos como de energía que estos consumen, y gracias a los avances tecnológicos podemos hasta reducir el molesto ruido que hacen nuestros discos duros viejos. No todos los usuarios tienen equipos de última generación

Enlaces interesantes 219

Enlaces interesantesAhí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)

.Net

27 de noviembre de 2015

NixNote 2, Anota todo lo que quieras en Gnu/Linux

No cabe duda que estamos en un mundo cambiante en el que llevamos un ritmo de vida cada vez más acelerado, una de las aplicaciones que fue creada para poder tomar notas rápidas en nuestros smartphones fue la famosa aplicación Evernote y que con sus servicios comenzó una revolución dentro del mundo de los dispositivos

El artículo NixNote 2, Anota todo lo que quieras en Gnu/Linux aparece primero en NixNote 2, Anota todo lo que quieras en Gnu/Linux.



from Desde Linux http://blog.desdelinux.net/nixnote-2-anota-todo-lo-que-quieras-en-gnulinux/
via IFTTT

Raiola Networks Hosting Review y opiniones

Raiola Networks es una empresa española de alojamiento web situada en Lugo y bajo mi punto de vista una de las mejores de toda España. En este review de Raiola Networks vamos analizar su plan hosting compartido. Bueno pues comencemos, tengo contratado el plan de hosting pro que tiene un coste de 8.95€ al mes

Black Friday Raiola Networks 27-11 hasta el 02-12

¡Buenos días a todos! Como todos sabemos hoy es el black friday, una popular fecha marcada por los descuentos y ofertas que realizan empresas y marcas de todos los sectores. Afortunadamente esta fecha también es tenida en cuenta por las empresas de alojamiento web del mercado y nos ofrecen una serie de ofertas y descuentos.

26 de noviembre de 2015

Radeon Crimson Driver: para los gamers en Ubuntu

Radeon Crimson Driver será el nombre de la última actualización para el paquete de controladores gráficos de AMD que ha llegado para ser el reemplazo perfecto para Catalyst, que está cada vez más cerca de afrontar su jubilación, sobre todo luego del lanzamiento de Omega y que estará disponible para nuestros sistemas Ubuntu verdaderamente pronto. Los

GNU/HEALTH: Sistemas para la salud al alcance de todos

GNU Health es un sistema creado bajo el perfil de uso de software libre, que tiene como finalidad administrar la información hospitalaria o de centros de salud, para la creación de historias clínicas, o como sistema de información y registro de las actividades realizadas en dichos centros.  Este sistema es gratuito y  puede usarse para

25 de noviembre de 2015

Top 3: De los mejores juegos de autos para linux

El Crecimiento de la Industria de los Videojuegos en linux es muy acelerado, númerosas empresas del área de los videojuegos han comenzado a invertir para que sus juegos también puedan ser disfrutados por la inmensa cantidad de usuarios del mundo linux. De igual manera, la comunidad a realizado númerosos avances en la creación de software libre

24 de noviembre de 2015

Kill: matar un proceso usando su PID

La forma más complicada pero al mismo tiempo más precisa de matar un proceso es a través de su PID (siglas en inglés de “Identificador de Proceso”). Cualquiera de estas 3 variantes puede servir:

kill -TERM pid
kill -SIGTERM pid
kill -15 pid
Se puede usar el nombre de la señal (TERM o SIGTERM) que se desea mandar al proceso o su número de identificación (15). Para ver un listado completo de las posibles señales, sugiero verificar el manual de kill. Para ello, ejecutá:
man kill
Veamos un ejemplo de cómo matar Firefox:
Primero, hay que averiguar el PID del programa:
ps -ef | grep firefox
Ese comando devolverá algo parecido a esto:
1986 ?        Sl     7:22 /usr/lib/firefox-3.5.3/firefox
Usamos el PID devuelto por el comando anterior para aniquilar el proceso:
kill -9 1986

Drupal 7: Aumentar el limite de subida de un archivo


Si alguna vez haz intentado crear campo tipo archivo (file), seguro que lo habrás encontrado, sobretodo si trabajas desde un ordenador con localhost estándar, con que drupal tiene un limite de subida de archivos y que no hay ningún apartado donde nos deje modificar esa cantidad. Y no, no me estoy refiriendo al tamaño de las imágenes que se puede hacer fácilmente desde configuración, me refiero al tamaño de cualquier tipo de archivo. Por ejemplo un archivo (pdf) que mida mas de 2 MB.

Drupal, por defecto, limita toda subida d e archivo en función de la configuración de nuestro servidor, esto significa, que no hay posibilidad, o yo por lo menos no la he encontrado, de poder modificar ese valor al alza desde drupal. Sí, es posible limitarlo a la baja, pero bueno, eso era lógico.

Si tienis o contratas un proveedor web, no sufras, estos servidores tienen pre-configurado un buen margen de permisividad, así que no te preocues, pero si de lo contrario el servidor es tuyo, o simplemente es el casero que tienes para hacer pruebas rápidas, entonces este pequeño tutorial te interesa.

El sistema de modificación es bastante sencillo y se resume en unos poco pasos, eso si, como advertencia antes de modificar nada, les recomiendo hacer una copia de seguridad del archivo php.ini.

/etc/php5/apache2/cp php.ini php.ini.old

Empecemos:
  1. Buscar nuestro archivo php.ini.  ----> el mi localhost está en la siguiente ruta /etc/php5/apache2
  2. Buscar la línea => [ post_max_size = 8M ] y modificar ese valor por el que necesites, por ejemplo: 100M.
  3. Buscar la línea => [ upload_max_filesize = 2M ] y modificar ese valor por el que necesites, por ejemplo: 100M.
  4. Guardar.
  5. Reiniciar servidor    
  6. Disfrutar del nuevo limite de subida

Es importante subrayar que, tanto, si realizas estos cambios como si no, es recomendable, SIEMPRE, limitar la subida de archivos para no colapsar nuestro servidor, porque dejar el libre albedrío a nuestros usuarios es más bien una locura.
En el caso de que necesites subir muchos archivos a la vez, buscaríamos la línea [ max_file_uploads = 20 ] y también la modificaríamos por el valor necesario.

Fuente: http://drupalia.cat/tutorial/drupal-7-aumentar-limite-subida-un-archivo#sthash.Q3O2z5Ln.dpuf

Obtener la última excepción producida en ASPNET 5

ASP.NET 5 / MVC 6
Hace unos días comentábamos la desaparición de la sección <customErrors> en ASP.NET 5, y la forma de implementar páginas de error personalizadas en esta nueva versión del framework.

Sin embargo, hay una cosa que dejé en el tintero y que el amigo Max resaltó en los comentarios del post:
"[…] Cuando se hace la petición interna a la acción HomeController.Error ¿como puedo saber exactamente el error que se ha producido si quiero mostrar un mensaje de error concreto para cada caso? Por ejemplo imagínate que quiero mostrar vistas diferentes para cada tipo de excepción o que aparezca sólo el texto de la excepción pero sin mostrar más datos"

METRICS GRIMOIRE Herramientas para generar métricas de software.

A medida que pasa el tiempo, se ha ido demostrando cada vez de manera más cierta que las métricas de software son imprescindibles para poder catalogar el estado de un proyecto en particular, y esto va más allá de si dicho proyecto es o no un proyecto Open Source. Metric Grimore es un compendio de

El artículo METRICS GRIMOIRE Herramientas para generar métricas de software. aparece primero en METRICS GRIMOIRE Herramientas para generar métricas de software..



from Desde Linux http://blog.desdelinux.net/metrics-grimoire-herramientas-para-generar-metricas-de-software/
via IFTTT

23 de noviembre de 2015

Enlaces interesantes 218

Enlaces interesantesAhí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)

.Net

ASP.NET

Azure / Cloud

Conceptos/Patrones/Buenas prácticas

Data access

Html/Css/Javascript

Visual Studio/Complementos/Herramientas

Otros

Publicado en Variable not found


from Variable not found http://www.variablenotfound.com/2015/11/enlaces-interesantes-218.html
via IFTTT

21 de noviembre de 2015

Sincronizar contactos y calendario sin google en android

Antes que nada necesitamos un celular Android con una rom como CyangenMod sin gapps y una cuenta en openmailbox.org (o cualquier servidor que cuente con Owncloud y con una cuenta de correo). Instalamos F-Droid, después buscamos la aplicación DAVdroid (0.9.0.4). Configuramos y listo. Nos encontramos con un teléfono sincronizado con Contactos y Calendario con la

El artículo Sincronizar contactos y calendario sin google en android aparece primero en Sincronizar contactos y calendario sin google en android.



from Desde Linux http://blog.desdelinux.net/sincronizar-contactos-y-calendario-sin-google-en-android/
via IFTTT

19 de noviembre de 2015

GECOS: La infraestructura corporativa basada en software libre.

La Suite GECOS tiene como base un sistema operativo y sumado a eso una variedad de aplicaciones para el puesto de trabajo, además posee un servidor capaz de controlar estos puestos remotamente desde una interfaz web. Esta está aplicación esta guiada a satisfacer las necesidades del puesto de trabajo del empleado público, su integración en redes

El artículo GECOS: La infraestructura corporativa basada en software libre. aparece primero en GECOS: La infraestructura corporativa basada en software libre..



from Desde Linux http://blog.desdelinux.net/gecos-la-infraestructura-corporativa-basada-en-software-libre/
via IFTTT

La Guía Definitiva para ser Anónimos en Android

La anonimidad se ha convertido en el reto de millones de usuarios que usan el internet en el mundo, cada vez son más las formas de seguimiento que crean los gobiernos, las empresas, los ciberdelicuentes y los grupos rebeldes para seguir el rastro de cada uno de nosotros.  Ellos quieren saber ¿qué hacemos?, ¿cuándo lo hacemos?, ¿qué nos

El artículo La Guía Definitiva para ser Anónimos en Android aparece primero en La Guía Definitiva para ser Anónimos en Android.



from Desde Linux http://blog.desdelinux.net/la-guia-definitiva-para-ser-anonimos-en-android/
via IFTTT

[TUTORIAL] Flask I: Basico

Como tengo algunos tiempo libres de descanso (de hacer proyectos o viciar un rato), me he decidido a escribir este articulo (o quizá artículos) sobre el desarrollo web con Flask (Python). No me voy a detener a explicar que es Flask, eso ya lo explican en Hipertextual y lo explican muchísimo mejor que yo. [warn]

The post [TUTORIAL] Flask I: Basico appeared first on Desde Linux.



from Desde Linux http://blog.desdelinux.net/tutorial-flask-basico/
via IFTTT

17 de noviembre de 2015

Nova, la distribución GNU/Linux hecha en Cuba

Nova es una distribución GNU/Linux creada por la Universidad de las Ciencias Informáticas (UCI) en Cuba. Esta forma de distribución se establece bajo la plataforma de software libre y código abierto, que trata de independizar al país cubano de la adquisición de software con licencias pagas. Siendo más específicos, la idea principal fue desarrollar una distribución compatible con el software manejado en la universidad (UCI); por este motivo los  que administran, mantienen, brindan soporte técnico y ofrecen actualizaciones  de nova, son sus desarrolladores en la UCI. A medida que va en desarrollo este proyecto, nace la idea de expandir esta distribución en todo el país, para implementar en la población cubana el uso de un  sistema operativo que brinde independencia a Cuba en materia de informática.

ASPNET 5, ¿dónde está mi customErrors?

ASP.NET 5
Seguro que ya conocéis la respuesta: no está. Desapareció. Kaput. Es simplemente otro de los efectos colaterales derivados de los cambios en ASP.NET 5, y más concretamente, de la sustitución del archivo web.config por otros mecanismos de configuración.

Sin embargo, seguro que también estaréis de acuerdo en que era una característica sumamente interesante porque nos permitía configurar el comportamiento de nuestra aplicación cuando se producía un error inesperado. Jugando un poco con la configuración podíamos optar por mostrar valiosa información de depuración, como datos sobre la excepción lanzada, el punto exacto donde se produjo o la pila de ejecución, o bien páginas de error personalizadas con mensajes aptos para todos los públicos (como la ballenita voladora de Twitter u otras creativas páginas "oops!" que inundan la red).


En aplicaciones ASP.NET 5, la gestión de errores de aplicación se delega ahora a middlewares especializados que, posicionados estratégicamente en el pipeline, vigilan el resultado del proceso de las peticiones y toman el control cuando se ha producido un error. El código básico de gestión de errores viene ya incluido en las plantillas de proyectos MVC, pero creo que es interesante analizar un poco qué ha cambiado y en qué consiste la solución propuesta por este marco de trabajo.

Así que comencemos desde el principio… aunque antes, permitidme el tradicional disclaimer: ASP.NET 5 todavía está en desarrollo, y algunos de los detalles que contemos a continuación aún podrían variar.

1. ¿Qué ocurre (por defecto) en ASP.NET 5 cuando explota nuestra aplicación?

Para comprobarlo, creamos una aplicación MVC 6 vacía e introducimos la siguiente aberración en el controlador HomeController:
public IActionResult About()
{
var j = 0;
var i = 10/j; // Buggy code

ViewData["Message"] = $"Your magic number is {i}.";
return View();
}
Obviamente, al ejecutar y acceder a la ruta /home/about de nuestra aplicación, la acción lanza una excepción de división por cero y no puede continuar, pero, ¿qué recibimos desde el cliente cuando se produce este error?

Excepción no capturadaPues probablemente os pueda sorprender un poco al principio, pero en el lado cliente no recibiremos absolutamente nada. Bueno, sí, un código de error HTTP 500 acompañado de un contenido totalmente vacío, pero nada de páginas de error descriptivas o pistas que indiquen dónde puede estar el problema.

Y la explicación es realmente sencilla, pero tenemos que olvidar la estructura monolítica de System.Web, usado en ASP.NET 4 y anteriores, donde se incluían siempre todos los módulos y funcionalidades, las usáramos o no.

En ASP.NET 5, si queremos usar una funcionalidad, como puede ser la gestión de errores o cualquier otra, primero tendremos que incluirla previamente en nuestro proyecto, y después configurarla para que funcione de acuerdo a nuestras necesidades.

Pipeline sin gestión de erroresEn este caso, como no hemos configurado nada al respecto, la petición entra en el pipeline y comienza a ascender, atravesando los middlewares que tenemos configurados y acabando en el framework MVC, quien ejecuta nuestra acción. Al producirse la excepción, ésta desciende a través del pipeline recorriéndolo en sentido inverso hasta llegar al inicio del pipeline. Como ningún middleware ha tomado el control, el servidor se encuentra con la excepción y lo único que puede hacer con ella es generar el error 500 sin contenido adicional que recibimos en el lado cliente.

Simplemente, es que el servidor tiene poco más que decir ;)

2. Middlewares de depuración y gestión de errores

En ASP.NET 5 podemos emular fácilmente lo que podíamos conseguir en versiones anteriores con la etiqueta <customErrors> del web.config, aunque la forma de hacerlo es bastante diferente. Como hemos adelantado anteriormente, ahora la solución a la gestión de errores la tenemos en forma de middleware.

Pipeline con gestión de erroresLa idea es la representada en el diagrama adjunto. Como se puede ver, lo que hacemos es posicionar un middleware capaz de procesar los errores justo en la entrada del pipeline, dejando pasar todas las peticiones entrantes y controlando todos los resultados salientes. Cuando un error desciende por el pipeline, este middleware será capaz de detectarlo, capturarlo y hacer algo con él, como retornar una descripción detallada del problema, o enviar al usuario una bonita página descriptiva. Básicamente, el qué hacer dependerá de si nos encontramos en un entorno de desarrollo o pruebas.

Para entornos de desarrollo, en ASP.NET 5 disponemos del middleware llamado DeveloperExceptionPageMiddleware, que viene incluido de serie en el paquete "Microsoft.AspNet.Diagnostics". Obviamente, para usarlo tendremos que haber añadido previamente la referencia a dicho paquete en nuestro proyecto:
project.json con referencia al paquete de diagnósticos










Por cierto, un inciso: este paquete, además del middleware de gestión de errores, incluye interesantes herramientas de depuración, por lo que vale la pena tenerlo a mano. Otro día hablaremos de algunas de ellas.

Una vez instalado el paquete, ya podemos añadir el middleware al pipeline. Para ello, siguiendo las convenciones habituales en este tipo de componentes, podemos usar el método UseDeveloperExceptionPage() sobre el IAppBuilder que recibimos en el método Configure() de la clase Startup:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

// Set up other middlewares
...
}
Fijaos que añadimos el middleware sólo si estamos ejecutando la aplicación en entornos de desarrollo, lo cual asegurará que nadie externo a ellos podrá ver información técnica que podría comprometer la seguridad del sistema.

Si ahora ejecutamos la aplicación y accedemos a /Home/About, encontramos algo bastante más razonable y útil para nuestro trabajo :)
Página de error descriptiva
Como se puede observar, la página de error es bastante más completa que la que teníamos por defecto en versiones anteriores de ASP.NET, pues no sólo muestra la pila de ejecución sino también interesante información de contexto de la petición, como los parámetros de la consulta, las cookies y todos los encabezados enviados al servidor en la petición.

En entornos de producción utilizaremos en cambio el middleware ExceptionHandlerMiddleware, incluido en el mismo paquete "Microsoft.AspNet.Diagnostics". Ese módulo es capaz de capturar los errores, dejar una traza en el log del sistema e introducir en el pipeline una nueva petición, cuyo resultado será el que finalmente se envíe al cliente.

Para ver un ejemplo, añadimos primero el middleware al pipeline de la siguiente forma, de forma que sólo se aplique cuando el entorno no sea el de desarrollo:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
imageTras incluir este código en la inicialización, si accedemos a /home/about en un entorno de producción, el middleware capturará el error y, antes de devolver nada al cliente, lanzará internamente una petición a la ruta que le indicamos, en este caso /home/error.

El resultado de la ejecución de la acción Error() en HomeController es el que será será enviado al cliente. Por ejemplo, si en esta acción simplemente hacemos un return View(), al cliente llegará el contenido de la vista /Views/Home/Error.cshtml, que podría ser similar al que vemos en la captura de pantalla adjunta (el texto "An error ocurred while processing your request").
public class HomeController: Controller
{
... // Other actions

// GET /home/error
public IActionResult Error()
{
return View();
}
}
Ojo, que cuando hablamos de "petición interna" en ningún momento quiere decir que se trate de una redirección enviada al navegador. Se trata de algo totalmente transparente para el lado cliente, es sólo una especie de petición falsa introducida en el pipeline por ExceptionHandlerMiddleware con objeto de que sea procesada por otros middlewares posteriores.

Y antes de acabar, una última observación. En los ejemplos anteriores hemos probado forzando un error en nuestra aplicación lanzando una excepción, pero, ¿y qué ocurre con otro tipo de errores, como un 404 "not found" o errores que no son propiamente dichos de la aplicación?

Pues por defecto el comportamiento es básicamente igual: se retorna el código de error (404, por ejemplo) sin ningún tipo de contenido o página que lo acompañe. De nuevo, la petición subirá por el pipeline y no será procesada por ningún middleware, lo que provocará que el servidor retorne este error.

Sin embargo, este tipo de errores no son capturables por los middlewares DeveloperExceptionPageMiddlewareExceptionHandlerMiddleware, orientados exclusivamente a la captura de excepciones de aplicación. Para gestionar errores ajenos a ella, como un error 404, hay que usar técnicas diferentes, que veremos en otra ocasión.

Publicado en Variable not found.


from Variable not found http://www.variablenotfound.com/2015/11/aspnet-5-donde-esta-mi-customerrors.html
via IFTTT