Jueves 23 de mayo de 2013

Como instalar Android Studio en Ubuntu

En el evento Google I/O se dieron a conocer muchos de los avances que traerá Google para este año. Entre ellos uno de los que más gusto en la parcela dedicada a los desarrolladores ha sido su nuevo IDE, pensado exclusivamente para desarrollar en la plataforma Android. Dejan atrás Eclipse con su ADT y se basan en Intellij IDEA para este IDE.


Pero no desinstaléis de momento vuestro Eclipse, el IDE que nos dejan descargar desde la web  de Android en la sección de developers todavía se encuentra en una fase muy temprana y ya nos advierten que puede tener errores. Aún así yo no he podido resistirme y voy a probar esta herramienta que seguramente hará las delicias de más de uno.



Una vez que tenéis descargado el IDE debéis descomprimirlo, yo lo hago en una carpeta donde organizo mis herramientas de desarrollo. Dentro del paquete que hemos descomprimido encontrareis una carpeta bin, y dentro de esta un archivo llamado studio.sh. Solamente debéis ejecutar este archivo desde una terminal o con doble-click sobre él e indicar que queremos ejecutar el archivo. Y ya está. En unos segundos ya se estará ejecutando el nuevo IDE.

Una vez que ya estamos dentro, la tarea de crear un nuevo proyecto no tiene diferencias con Eclipse. Lo que si que cambia es la distribución de las carpetas de nuestro proyecto estando casi todo dentro del directorio src.

De momento es muy prematura dar una opinión formada sobre este nuevo IDE pero la verdad es que después de estar trasteando un poco con él y por el vídeo introductorio promete bastante. Dejemos que evolucione de su temprana versión 0.1 y que vaya madurando.



Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Utilizar una conexión MySQL desde EMACS

Encontré hace tiempo en una página que, lamentablemente, ya no está operativa una forma de utilizar EMACS como cliente MySQL, aunque intentaré ampliar dicha información con alguna experiencia personal. Aunque podemos utilizar directamente el SQL mode, es muy incómodo porque cada vez que nos queramos conectar tenemos que dar todos los datos de la conexión, y eso nos hace perder la paciencia a más de uno. Es verdad que para una conexión esporádica no está mal, pero si te sueles conectar siempre a los mismos servidores, esto puede resultar muy útil.… Leer artículo completo

Miércoles 22 de mayo de 2013

Cómo manejar tareas en segundo plano con AsyncTask y Android

Para que una aplicación sea ágil y dinámica, en ocasiones debemos realizar tareas en segundo plano, como puede ser la descarga de información de internet mientras al usuario se le permite seguir realizando otras tareas. En ocasiones, también debemos realizar procesos que nos piden si o si que lo hagamos en un hilo secundario al principal. Para todo esto nos podemos ayudar de la clase AsyncTask.

Esta clase nos va a permitir realizar tareas en segundo plano sin necesidad de utilizar directamente ni Handlers ni Threads, y digo directamente porque lo que va a hacer es tratar estos elementos de forma totalmente transparente al programador.

Cuando definimos una clase AsyncTask debemos definir el tipo de tres elementos, los parámetros de entrada, su progreso y el resultado. Y en caso de que alguno no se tenga que definir se le pasa Void omo argumento. Veamos un ejemplo de como heredar esta clase:

public class MyAsyncTask extends AsyncTask<String, Integer, Long> {}

Lo que se está haciendo aquí es decirle que los parámetros de entrada serán de tipo String, para el progreso se utilizará un Integer y el resultado será de tipo Long. Evidentemente aquí cada uno va a poder personalizarlo según sus necesidades.

Ahora vamos a ver como sería su ciclo de vida. Una vez que se llama al execute de la clase vamos a tener 4 pasos, más uno opcional:

  1. onPreExecute, se va a ejecutar antes de enviar a nuestro hilo secundario todo el proceso y lo podemos utilizar para inicializar tareas como mostrar una barra de progreso.
  2. doInBackground(Params...), aquí programamos nuestra tarea en segundo plano. Params en el caso que expusimos antes va a ser un array de Strings que se pasan cuando se llama al método execute. Al ser un proceso que puede durar un tiempo indeterminado en completarse, podemos darle un feedback al usuario del porcentaje completado gracias al método publishProgress(Progress...) que ya viene incluido en la clase AsyncTask. Este recibe un parámetro Integer como se indico en la definición de la clase y hará que se ejecute el método onProgressUpdate.
  3. onProgressUpdate(Progress...), como ya expliqué recogerá el progreso de la operación. En este caso el parámetro que tendremos será un Integer.
  4. onPostExecute(Result), una vez finalizado el proceso en segundo plano se ejecuta este método y recibe el resultado de toda la operación, en este caso será un tipo Long.
  5. onCancelled, como imaginareis se lanza cuando la operación en segundo plano se cancela. Para cancelar la operación basta con llamar al método cancel de AsyncTask. Y en cualquier momento se puede comprobar si la operación está cancelada con isCancelled que nos devuelve un boolean.
Fijaros que he utilizado diferentes tipos de datos únicamente para que sea más fácil diferenciar cada unos de ellos, pero se podría utilizar el mismo tipo de datos en los 3 casos. Vamos a ver un ejemplo de una clase de AsyncTask, en este caso le llamaremos AsyncDownloadTask.

public class AsyncDownloadTask extends AsyncTask<URL, Integer, JSONObject> {

public interface AsyncTaskListener{ void onInit(); void onProgressUpdate(Integer progress); void onCancel(); void onFinish(JSONObject json);}
private AsyncTaskListener asyncTaskListener;


public AsyncDownloadTask(AsyncTaskListener asyncTaskListener){
this.asyncTaskListener = asyncTaskListener;
}

@Override
protected JSONObject doInBackground(URL... urls) {

int  count = urls.length;
JSONObject json = new JSONObject();


for(int i = 0; i < count; i++){
if(isCancelled())
break;

HttpClient httpclient = new DefaultHttpClient();

   HttpGet httpget = new HttpGet(urls[i].toString());

 
   HttpResponse response;
   try {
       response = httpclient.execute(httpget);
       
       if(response.getStatusLine().getStatusCode() == 200){
     
       HttpEntity entity = response.getEntity();
     
       if (entity != null) {
           InputStream instream = entity.getContent();
           String result= convertStreamToString(instream);
           json.put("response_" + String.valueOf(i+1), new JSONObject(result));
           
           instream.close();
       }

} else {
//cancel(true);
}
   } catch (Exception e) {
    cancel(true);
   }

publishProgress((int) ((i / (float) count) * 100 ));

}

return json;
}

private static String convertStreamToString(InputStream is) {
   BufferedReader reader = new BufferedReader(new InputStreamReader(is));
   StringBuilder sb = new StringBuilder();

   String line = null;
   try {
       while ((line = reader.readLine()) != null) {
           sb.append(line + "\n");
       }
   } catch (IOException e) {
       e.printStackTrace();
   } finally {
       try {
           is.close();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
   return sb.toString();
}

@Override
protected void onPreExecute(){
asyncTaskListener.onInit();
}

@Override
protected void onProgressUpdate(Integer... progress){
asyncTaskListener.onProgressUpdate(progress[0]);
}

@Override
protected void onPostExecute(JSONObject json){
asyncTaskListener.onFinish(json);
}

@Override
protected void onCancelled(){
asyncTaskListener.onCancel();
}

}



Como veis tiene todos los elementos de los que hablamos antes: onPreExecute, doInBackground... En este ejemplo le he asignado a otros tipos, a los parámetros de entrada los he definido como URL, el progress será integer y el resultado será un objeto JSON. Fijaros como en el evento onPostExecute al definir que devolvemos un JSONObject deberá tener este como argumento.

Normalmente, en los ejemplos que he visto crean esta clase dentro de la clase de la Activity donde se va a utilizar, y por ejemplo desde el onPostExecute llaman a métodos de la Activity para realizar determinadas acciones, pero personalmente no me gusta utilizarla así. Para tenerla lo más genérica posible he creado un listener, AsyncTaskListener, y que se setea al inicializar la clase.

El método doInBackground en el caso que nos ocupa se va a encargar de realizar la descarga del contenido de las urls que se le pasan como argumento y a medida que las va descargando almacena el resultado en un objeto JSON.

El como descargamos el contenido de las urls aquí es secundario, simplemente nos servirá para generar un proceso asíncrono en segundo plano. Para que pueda funcionar correctamente debéis acordaros de incluir en el archivo AndroidManifest.xml los permisos correspondientes de internet:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>


Lo que si me gustaría remarcar del proceso doInBackground es que en el bucle for se está comprobando si se ha cancelado el proceso y además si ocurre alguna excepción se cancela el proceso. Además al final del bucle for se está llamando al método publishProgress pasándole el porcentaje de urls descargadas. Este llega a onProgressUpdate que lanza el evento del listener y aquí se podrá por ejemplo mostrar al usuario una barra de progreso.

Vamos a ver como utilizar está clase en nuestras Activities o donde lo necesitéis.

AsyncDownloadTask asyncdownload = null;

URL url1 = null;
URL url2 = null;
URL url3 = null;
URL url4 = null;

try {
url1 = new URL("url 1");
url2 = new URL("url 2");
url3 = new URL("url 3");
url4 = new URL("url 4");

} catch (MalformedURLException e) {}


asyncdownload = new AsyncDownloadTask(new AsyncTaskListener() {

@Override
public void onProgressUpdate(Integer progress) {}

@Override
public void onInit() {}

@Override
public void onFinish(JSONObject json) {}

@Override
public void onCancel() {}
});

asyncdownload.execute(url1, url2, url3, url4);



Muy simple, tenemos nuestra clase, la cual instanciamos pasándole una instancia nueva de nuestro listener, en cada uno de sus eventos cada uno implementará sus propios procesos. Y creamos los argumentos que le pasaremos en el método execute de nuestra clase. En este caso 4 URL.

Podemos modificar un poco este ejemplo y en vez de pasar un número determinado de argumentos, pasarle un array de URL, así:

try {
URL[] urls = {new URL("url1"), new URL("url2"), new URL("url3"), new URL("url4")};
asyncdownload.execute(urls);
} catch (MalformedURLException e) {}


En este caso se inicializa también el array con 4 parámetros, pero ya sabéis que hay formas de añadir indeterminados parámetros a un array. Lo importante es que veáis las dos formas de pasar parámetros al método execute.
David Santo Orcero

David Santo Orcero
Gestionando el Conocimiento

Curso de Informática Forense y Peritajes Informáticos 2013

Después del éxito de los dos últimos años -el año pasado, incluso conseguí que se montara un segundo turno-, este año repetimos el Curso de Informática Forense y Peritajes Informáticos. Impartiré este curso entre el 22 y el 26 de Julio, de 9:00 a 14:00 -un curso de 25 horas-. Será presencial, y estará encuadrado [...]

EGA Futura anuncia un importante acuerdo con Tiendanube.com

Si eres uno de los tantos usuarios del software de comercio electrónico StockBase POS estás de suerte, pues EGA Futura ha anunciado una importante mejora en las capacidades del mismo debido a una alianza formada con Tienda Nube para llevar el software al siguiente nivel. De dicha alianza nace la posibilidad de subir y gestionar de forma automatizada los datos de nuestros productos a Tienda Nube

Lunes 20 de mayo de 2013

Miguel Parada

Miguel Parada
Ubuntizando.com

Mixxx 1.11.0 Is Here! La alternativa libre a Traktor

Si no quieres o no puedes gastarte el dinero en una licencia de Traktor es bueno conocer alguna alternativa. En Linux no hay muchas, pero una destaca por encima de todas como la mejor alternativa a tener en cuenta. Se trata de The Mixxx, un excelente programa que permite crear sesiones en directo con nuestra mejor musica como un DJ profesional (muchos lo usan profesionalmente).  Tiene una curva de aprendizaje bastante moderada y permite hacerse con el programa rápidamente. Si has usado antes programas como Traktor o Virtual DJ, The Mixxx te resultará familiar.

Acaba de publicarse la ultima versión, The Mixxx 1.11.1 corrige numerosos errores y optimiza su rendimiento en equipos con recursos moderados. Añade una mejorada detección de ritmo y golpes de percusión, algo que se traduce en una mejorada y multicolor tabla de ondas. Pero eso no es todo, incluye la posibilidad de preescucha de un tema que tengamos en nuestra biblioteca sin necesidad de cargarlo en ningún plato o nuevas posibilidades a la hora de lanzar samples y efectos en nuestros loop. Un gran trabajo en relación a la versión anterior.

Mixxx 1.11.0 Deere SampleGrid Cropped Mixxx 1.11.0 Is Here! La alternativa libre a Traktor

La versión incluida en Ubuntu 12.04 es algo antigua. Si deseas disponer de la versión más moderna. Debes seguir los siguientes pasos en nuestro terminal. Es cortar y pegar… no seáis malos:

sudo add-apt-repository ppa:mixxx/mixxx
sudo apt-get update
sudo apt-get install mixxx

¿No usas Ubuntu? No importa, puedes instalar The Mixxx en Windows, MacOS y otros sabores Linux.

Fuente: http://mixxxblog.blogspot.com.es

Miguel Parada

Miguel Parada
Ubuntizando.com

Aquí llega Arduino Yún, Arduino con WIFI y Linux

Arduino Yun Aquí llega Arduino Yún, Arduino con WIFI y Linux
Massimo Banzi presentó ayer en la Maker Faire Bay Area el nuevo Arduino Yún. El primero de una revolucionaria familia de productos con wifi que combinan Arduino y Linux. El objetivo de esta nueva placa es facilitar la conexión directa entre servicios web complejos y Arduino.

Como curiosidad, Yún significa nube en chino. Y es una pieza de hardware que adopta la distribución Linino,que proporciona paquetes firmados que aseguran la compatibilidad de los paquetes que instalemos y que hará mucho más sencillo su uso en diferentes proyectos. A nivel de hardware Yún cuenta con un procesador Arduino Leonardo (basado en el ATmega32U4) con soporte wifi integrado y basado en los ATMega32u4 y Atheros AR9331.

Sin duda una interesante apuesta para el geek Linux que busca realizar proyectos profesionales con Arduino. Por supuesto el precio es moderado, unos 69 dolares por unidad y ya es nuestra.

Fuente: http://blog.arduino.cc

 

Miguel Parada

Miguel Parada
Ubuntizando.com

ClipGrab – Descarga y convierte vídeos de YouTube, Vimeo y otras, fácilmente en Linux

Si estás buscando una manera sencilla de recopilar alguno de tus vídeos favoritos disponibles en Youtube, Vimeo, etc pero no quieres complicarte, Clipgrab es una estupenda alternativa a tener en cuenta. ClipGrab es una aplicación libre bajo licencia GPL que sirve para descargar vídeos online desde distintos servicios, la aplicación soporta varios formatos para guardar vídeos, e incluso también puede guardarlos cómo archivos de audio.

Es una pequeña navaja suiza para los que no quieran pelearse con el terminal, además de ser de muy fácil uso.

Captura de pantalla de 2013 04 08 064710 ClipGrab   Descarga y convierte vídeos de YouTube, Vimeo y otras, fácilmente en Linux

Clipgrab es multiplataforma, podemos usarlo en Windows, como instalarlo en la mayoría de las distribuciones Linux sin grandes dificultades. En Ubuntu añadimos el repositorio oficial e instalamos:

sudo add-apt-repository ppa:clipgrab-team/ppa
sudo apt-get update && sudo apt-get install clipgrab

Una vez instalada, uso es tan sencillo como indicar la URL del vídeo a descargar, seleccionar el formato (avi, mp4, etc) y pulsar en “Grabar este vídeo”

Fuente: http://clipgrab.de/

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Acabo de borrar un archivo por accidente ! ¡ Voy a morir ! ¡ No aún no !

El título está basado en un hecho real, aunque casi casi el truco que pondré a continuación está limitado a archivos de texto, ya que podemos identificar fácilmente su contenido. Si me apuráis, valdría con cualquier tipo de archivo, pero los archivos binarios, raramente podemos saber con exactitud qué contienen.

Me encontraba yo preparando una entrada de datos para base de datos, fue un archivo que me llevó un tiempo donde hacía numerosas consultas, y llega la hora de hacer la consulta, de estas veces que puede que por el cansancio, por tener un día un poco tonto, por no pulsar bien una tecla, o un lapsus, en lugar de:

$ mysql -uroot -pMICLAVE < consultas.sql

se me ocurre escribir:

$ mysql -uroot -pMICLAVE consultas.sql

vamos, que el archivo con el que llevaba ya un rato se borró por completo, y yo me encontraba como la foto de portada.… Leer artículo completo

Mageia 3 ya disponible

Hoy por fin ha sido puesta para descarga la versión final de Mageia 3, la popular distro comunitaria que surgió tras los numerosos problemas de Mandriva y que hoy en día ha conseguido establecerse como una de las distros más populares del mundo. Entre las numerosas novedades de esta tercera versión encontramos los escritorios KDE 4.10.2, GNOME 3.6 y Xfce 4.10, así como versiones actualizadas de

Domingo 19 de mayo de 2013

Francisco Luque

Francisco Luque
LMDE Cosillas

Sincronizar contactos y calendario entre Kontact (KDE) y Android sin usar servicios de Google

Como este es mi primer artículo en este magnífico blog, procede una presentación: Me llamo Roberto, aunque por estos lares suelo utilizar el apodo xphnx.

En este artículo intentaré explicar cómo sincronizar los servicios KOrganizer y KAddressBook del escritorio KDE SC con nuestros dispositivos Android y viceversa, pero sin recurrir a los servicios de Google. También es aplicable a Evolution, Thunderbird y cualquier software que soporte los protocolos CardDav y CalDav. La sincronización a través de Google sería inmediata en Android e igual de sencillo en KDE, supongo que aplicable también a cualquier gestor de correos u organizador de los entornos GNU/Linux.

Un pilar fundamental para lo que vamos a ver en este artículo es el sofware de código abierto Owncloud, un script que instalado en un servidor sobre el que tengamos permisos de administración, esto es, un VPS o un dedicado, nos ofrece una especie de Dropbox con algunas interesantes funcionalidades a mayores. Si no disponemos de un servidor propio, podemos contratar este servicio con algún proveedor. La compañía Owndrive ofrece un espacio Owncloud con 1GB de capacidad de manera gratuita. OwnCloud también ha desarrollado aplicaciones clientes para intercambiar contenido entre las diferentes plataformas: Windows, GNU/Linux, Android... de forma similar a los clientes Dropbox.

Una vez que ya tenemos nuestro espacio OwnCloud operativo, vemos que a la izquierda contamos con un menú de iconos: Archivos, Contactos, Calendario, Tareas, Notas, Marcadores... (los elementos del menú pueden variar según la configuración).


Nos interesan, para el caso que nos ocupa, los apartados Contactos y Calendario.

Sincronizar Contactos en Android

Vamos a utilizar el protocolo CardDav y a falta de una app libre o de código abierto nos vemos obligados a usar una app Android privativa. Yo he optado por CardDav-sync beta (con versiones gratuita y pago), pero hay alguna más. Nota: *Si usamos Android 4.1 (alias Jelly Bean) tendremos que instalar además una app parche llamada JB Workaround CardDAV-Sync.

Configuramos CardDav-sync beta con los datos de nuestro servidor de contactos. Necesitaremos:
- La URL de nuestros contactos en el servidor (Server name en la imagen)
- Nuestro nombre de usuario de la cuenta de Owncloud
- y su contraseña.


En el caso de hacerlo a través de Owndrive, el nombre de servidor será: "my.owndrive.com". El uso de SSL queda a nuestra elección, supongo que será recomendable marcarlo.Con esto ya tendremos sincronizados con Android nuestros contactos.


Sincronizar Calendarios en Android

Utilizaremos el protocolo CalDAV y en este caso tenemos disponibles una app con Licencia GPLv3: CalDAV Sync Adapter y varias apps privativas, entre ellas, una del mismo desarrollador de la que hemos utilizado anteriormente con los contactos.

Para sincronizar a través de la app de código abierto, nos vamos al icono "Ajustes" de nuestro dispositivo Android. Buscamos el apartado "Cuentas" y pulsamos en "Añadir cuenta". Seleccionamos la app CalDAV Sync Adapter.


Nos presentará una pantalla donde deberemos introducir los datos de acceso: URL, nombre de usuario y contraseña.


En este caso, la URL a introducir debemos buscarla en nuestro espacio web de Owndrive. Nos vamos a la pestaña "Calendarios" y pulsamos el icono de configuración (ruedecita dentada situada arriba a la derecha). Pulsamos en "Enlace a CalDav", lo que nos mostrará una dirección URL, esa es la que debemos utilizar. En mi caso es: "https://my.owndrive.com/remote.php/caldav/calendars/usuario/defaultcalendar"


Si optamos por la app privativa CalDAV-Sync beta, los datos de acceso serán nuestro nombre de usuario y contraseña, y como nombre de servidor "my.owndrive.com". De esta app, a día de hoy, no hay una versión gratuita en el mercado de aplicaciones de Google. Nota *: Si usamos Jelly Bean también tendremos que instalar la app JB Workaround CalDAV-Sync.

Una vez que configuremos los datos de acceso, nos permitirá elegir cuáles de nuestros diversos calendarios queremos sincronizar.


Las apps privativas CardDav-sync y CalDav-sync ofrecen sincronización en los dos sentidos, si modificamos en el móvil lo veremos en el servidor y en Kontact, y viceversa; la app de código abierto, solo ofrece por el momento sincronización en un sentido.

Sincronizar Owncloud con Kontact ( KOrganizer y KAddressBook)

Abrimos la pestaña "Contactos" de Kontact o KAddressBook, que viene a ser lo mismo. Vemos una columna donde aparecerán nuestras Listas de direcciones. Pues vamos a añadir una más. Botón derecho y "Añadir libreta de direcciones". Nos sale una ventana para seleccionar el tipo de Libreta que queremos añadir, en el caso que nos ocupa será "Recursos de trabajos en grupo DAV".


En la versión 4.10 de KDE está disponible también en este apartado el servicio de Google, para aquellos que deseen utilizar ese método. En versiones anteriores de KDE, si bien en principio se puede hacer la sincronización a través de Owncloud y Google, el proceso no es tan directo.
Continuamos introduciendo nuestro usuario y contraseña.


Seleccionamos como servidor Owncloud (Traducido a castellano como Nube propia)


Finalmente le proporcionamos a Kontact la dirección de nuestro servidor. Si usamos Owndrive, tendríamos que poner
- Servidor: "my.owndrive.com"
- ruta de instalación: vacío.

Podremos ver como se van autocompletando las URL de CardDav y CalDav que aparecen debajo del formulario.




Pulsamos en "Comprobar conexión", y si todo ha ido bien, nos mostrará un mensajito de confirmación.


Solo nos quedará ir a la pestaña "Contactos" de Kontact, y activar la casilla de libreta de direcciones que acabamos de crear y hacer lo mismo en la pestaña "Calendarios". Y con esto hemos llegado al final. Ya tenemos acceso y sincronización de nuestros calendarios y contactos desde nuestro PC con Kontact, cualquier navegador a través de la aplicación web de Owncloud y desde nuestros dispositivos Android.

Espero que os haya resultado interesante este artículo y que os sea de utilidad

Algunos datos e imágenes tomados de http://doc.owncloud.org/server/4.5/user_manual/sync_kde.html

Sábado 18 de mayo de 2013

Francisco Luque

Francisco Luque
LMDE Cosillas

Ubuntu sigue haciendo de las suyas

 

Hace apenas unos minutos Clauda me da a conocer un estupendo artículo donde su autor más que indignado expones sus quejas con respecto a la política más que restrictiva que de un tiempo a esta parte suele hacer la toda poderosa Canonical que puede bien llevar la leyenda que dice aquello de: Me paso por el forro la opinión de los usuarios y desarrolladores.
Yo ya hace mucho tiempo que poco sé o quiero saber de Ubuntu, precisamente por esta forma tan cerrada de proceder de Canonical. Pero lo peor es la defensa a ultranza que hace muchos de los usuarios de esta famosa distro (que como apunta el autor del artículo) parecen más usuarios de Mac OS X que de GNU/Linux. Da la sensación que son usuarios privilegiados y elegidos para la gloria y vete a saber qué cosas más, que no dudan en atacar atroche y moche.
Ataque que yo sentí en mis propias carnes y que aun después de tanto tiempo de vez en cuando sigo sintiendo por criticar la derivación que estaba aconteciendo en Canonical en aquel entonces y que veo que puede empeorar.
Que Canonical haga algo en un sentido tiene su importancia relativa (según se la queramos dar) pero que nosotros vayamos a cuchillo por defenderla en uno u otro sentido, eso sí que lo veo realmente grave. ¿Acaso Linux es Canonical o viceversa?
Hay discusiones que son absurdas y que no nos llevan a ningún sitio. El problemas viene cuando se pierde la perspectiva de las cosas y uno se cree que se está atentando contra algo propio, contra su buen juicio, su buena elección, sus altos conocimientos o pero aún, uno se cree poseedor de la razón.

No me cansaré de decir para todos aquellos susceptibles de sentirse ofendidos, que las críticas sean de uno u otro lado (si son desde el respeto) siempre deberían ser de agradecer por que nos hacen ver cosas que de otro modo jamás veríamos. Las distribuciones no son equipos de fultbol, no son partidos políticos o doctrinas religiosas donde lo visceral opaca al buen entendimiento. O no deberían serlo, así que no lo convirtamos en ello.

Linux es CIENCIA, sí con mayúsculas, la ciencia de la apertura, la ciencia de la compartición, la ciencia de la modificación. Donde es de obligado cumplimiento realizar toda clase de críticas apasionadas o no para hacer cada día más grande y precisa a esta comunidad Linuxera la cual tiene su propia filosofía, una filosofía bien definida que no deja lugar a interpretaciones. Filosofía que parece se está perdiendo en ciertas comunidades, donde se ha olvidado incluso que alguna vez existió.

Podéis leer este estupendo artículo al que se hago referencia y que suscribo totalmente aquí:
David González

David González
El blog de pico.dev

Copia de seguridad con rsync

rsync
Las copias de seguridad son imprescindibles, si alguien piensa que no es que nunca se le ha estropeado el ordenador ya sea porque ha fallado el hardware o por una actualización que ha corrompido el sistema de arranque o peor por que el disco duro se ha estropeado, eso o no tiene datos importantes que tener a buen recaudo. Si aún no te ha pasado que se haya estropeado el ordenador y te has quedado sin esa información que no quieres perder quizá hayas tenido suerte pero has de saber que tarde o temprano te pasará y para no perder esa información los «backups» son imprescindibles.

Una vez que tener copias de seguridad nos parece importante y tenemos respondida la pregunta de por qué, se nos plantean algunas otras preguntas:
  • ¿De que hacer copias de seguridad?
  • ¿Cada cuanto hacer copias de seguridad?
  • ¿Que características han de tener las copias de seguridad?
  • ¿En que medio guardar las copias?
  • ¿Como hacer las copias de seguridad?
  • Y tan importantes como las anteriores, ¿como recuperar los datos?
Cada pregunta tiene diferentes respuestas según el usuario, entorno o la información de la que hacer las copias de seguridad. A la pregunta de que hacer copias de seguridad cada uno deberá conocer que información no quiere perder en caso de desastre, cuanto cambian los datos y que se perdería en un periodo de tiempo (día, semana, mes, ...), si las copias deben estar comprimidas para ahorrar espacio o cifradas y finalmente dependiendo de algunas respuestas anteriores que herramienta o herramientas usar.

Yo hasta ahora no usaba ninguna herramienta usaba el simple y manual método de copiar y pegar archivos del disco duro del ordenador a un disco duro externo. Cuando no tenía disco duro externo las copias de seguridad las hacía en CD y DVD pero hacerlas en un medio óptico como los anteriores no los recomiendo porque son lentos de realizar, en estos días no tienen capacidad suficiente para guardar todo y por tanto deberemos tener varios volúmenes y finalmente lo más importante porque son unos medios poco fiables. Dado el precio y capacidad que tienen hoy en día los discos duros USB externos además de su velocidad de transferencia es más recomendable esta opción y es la que a día de hoy uso. Pero aún con un disco duro externo el método de copiar y pegar tarda un buen tiempo y sigue siendo lento, con 70 GiB de archivos personales que no quiero perder, pero también el hecho de hacerlo manualmente es propenso a que algún día se me olvide hacer la copia de seguridad de todo y por la ley de Murphy ese día fallará el ordenador. Con lo que con esta situación he empezado a buscar alternativas a mi método manual de copiar y pegar.

Empece probando Déjà Dup pero no me ha convencido porque las copias de seguridad las guarda en un formato comprimido (y cifrado si se quiere) de modo que para recuperar los archivos se ha de utilizar la misma herramienta. Para mi una de las características de la copia de seguridad es que siga pudiendo tener accesibles los archivos independientemente de la herramienta. Viendo las posibilidades de los programas de copia de seguridad disponibles en Linux por la que me he decantado ha sido rsync. Es un método simple que mantiene sincronizados el contenido de dos carpetas, copiando los nuevos archivos, borrando los eliminados y solo actualizando los necesarios además de poder hacerse las copias entre dos máquinas diferentes a través de la red. Mediante rsync para hacer una copia de seguridad ahora tardo mucho menos ya que solo se copian los archivos que hayan cambiado además de estar automatizado con un script con lo que resulta más fácil y por ello se pueden hacer más a menudo.

Con el siguiente comando de rsync se puede hacer una copia de seguridad de una carpeta a otra:

<noscript><a href="https://gist.github.com/picodotdev/5599846/raw/script-1.sh">script-1.sh</a><br /></noscript> La opción -a es una meta opción de utilidad que engloba otras con las más comunes para hacer copias de seguridad, -P hace que se muestre el progreso, --delete borra los archivos en la carpeta de destino que se hayan borrado en la carpeta origen.

Otro ejemplo para copiar varias carpetas de la carpeta home de un usuario es, con la opción --files-from, hay que indicar también la opción -r para que las carpetas se copien de forma recursiva:

<noscript><a href="https://gist.github.com/picodotdev/5599846/raw/script-2.sh">script-2.sh</a><br /></noscript> <noscript><a href="https://gist.github.com/picodotdev/5599846/raw/backup-files-from.txt">backup-files-from.txt</a><br /></noscript> Este simple comando ahorra mucho tiempo ya que con él no hay que copiar los XXX GiB cada vez que hay que hacer un copia de seguridad, solo se copiará lo que haya cambiado entre la copia de seguridad y el origen, que muy probablemente es una cantidad mucho menor que esos XXX GiB. Con lo simple que es se me hace extraño que haya pasado tanto tiempo haciendo las copias de seguridad manualmente.

Si quieres algunas otros ejemplos de uso de rsync como por ejemplo el como programar las copias de seguridad con cron o quieres conocer otras herramientas en la wiki de Arch Linux tienes unas cuantas más, algunas con interfaz gráfica.

Referencia:
https://wiki.archlinux.org/index.php/Backup_Programs
https://wiki.archlinux.org/index.php/Rsync

Viernes 17 de mayo de 2013

Antergos, el sucesor de CinnArch

Seguramente, muchos de vosotros habéis escuchado hablar en alguna ocasión de CinnArch, una distro española basada en Arch Linux con un enfoque en presentar un sistema operativo más amigable y preparado para el usuario doméstico, todo ello con Cinnamon como escritorio. No obstante, CinnArch anunció hace un tiempo que su desarrollo quedaba cancelado debido a los problemas que Cinnamon ocasionaba

Jueves 16 de mayo de 2013

Francisco Luque

Francisco Luque
LMDE Cosillas

Pack MDM Themes HTML5

No hace mucho presente la nueva tecnología que aporta MDM (Gestor de entrada de Mint) con soporte HTML5 que podéis ver aquí: Probando lo nuevo de MDM .
Para ello (luego más tarde ) también mostraba una serie de estupendos themes realizados por Samriggs que podeis ver aquí: Primeros themes con soporte HMLT5 .

En este momento Samriggs tiene ya realizados 13 themes de este tipo y he decidido agruparlos todos en un Pack y distribuirlos en un practico paquete DEB autoinstalable que irá actualizándose según se  liberen nuevos themes.


Hay que saber que estos temas dependen de la versión de mdm 1.1.8 o superior. El Pack está compuestos de los siguientes Themes:

BlackNBlue
BlimpCity
CircuitBoard
FullMoon
Galaxy
LostPlanet
Mechanical
MetalMint
SkyMountain
SpaceRace
SteampunkFutureCity
TheMachine
UnderwaterCity

 Descargar Pack MDM HTML5 Themes:
Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Generando fotogramas de vídeo en C con frei0r (y MLT) [Parte II - Generando filtros]

Ahora le toca el turno a la creación de filtros, y de paso presento algunas utilidades más para frei0r de mi cosecha (con alguna que otra función copiada de algún lado).

Esta vez, entre otras cosas, aunque habrá mucho código sin documentar por aquí, vamos a ver cómo podemos dar para cada canal de la imagen, la porción de rojo, verde y azul que queramos, sólo para practicar la creación de un filtro sencillo.… Leer artículo completo

Miércoles 15 de mayo de 2013

Marcelo Fortino

Filosofía Ubuntu

Parece que la filosofía de Canonical, empresa que controla Ubuntu está cada vez más lejos del software libre. Luego que las voces de Richard Stalmann y de la FSF se pronunciaran contra las últimas características de Ubuntu, Roy Schestowitz de Techrights escribió este triste resumen sobre el mismo: Man From Microsoft Runs the Ubuntu Project Now

ubuntu

Domingo 05 de mayo de 2013

David González

David González
El blog de pico.dev

5 opciones de hosting para aplicaciones Java

La tecnología avanza y hoy en día tenemos nuevas opciones para hospedar las aplicaciones de tal forma que estén las 24 horas de los 365 días del año (o 366) disponibles para ofrecer sus servicios. Veamos algunas de las que hemos tenido hasta el momento con algunas de sus características.

Servidor propio
Disponer de un servidor propio tiene varias ventajas como que tenemos total control sobre la máquina y en la que podremos instalar todo lo que necesitemos sin ninguna limitación, sin embargo, esta ventaja también puede ser una desventaja ya que tendremos que tener los conocimientos y tiempo para administrar la máquina. Otra desventaja es que deberemos solventar los fallos de hardware que se produzcan como una rotura de un disco duro, un sobrecalentamiento de la placa base, memoria, procesador o router lo que puede afectar a la disponibilidad de la aplicación. Además, tendremos que disponer de un sitio adecuado para alojar la máquina y de los costes que conlleva tenerla encendida en todo el momento que no hay que despreciar. También tenemos que tener en cuenta que si necesitamos escalar la aplicación tendremos más dificultades que otras opciones ya que tal vez tengamos que adquirir nuevo hardware y haya que adaptar la aplicación.

En definitiva esta opción nos obliga no solo a centrarnos en nuestra aplicación sino también en la infraestructura donde se despliega y en su administración. Sin embargo, hay que decir que una gran ventaja es que nuestros datos están bajo nuestro control y no en segundas o terceras partes.

A pesar de todas sus desventajas esta opción puede ser muy interesante para un uso personal. Como por ejemplo disponer de un servidor para descargas, compartir archivos u ofrecer servicios de red a los equipos de nuestra casa. Hay diferentes plataformas sobre las que podemos implementar nuestro propio servidor, algunas de las más conocidas en estos momentos son las placas Pandaboard, SheevaPlug, BeagleBoard, TimSlice o las inminentes Raspberry Pi (¡que cuestan 35$!). Todas ellas tienen en común que son un ordenador completo que no ocupan mucho más que un disco duro de 2.5" y están basadas en microprocesadores ARM con lo que tienen un consumo muy reducido que notaremos en la factura de la luz (consumen entre 2W y 9W, ¡un ordenador de sobremesa consume entre 150W y 300W! por lo que el coste de las placas se amortiza con el tiempo). Al ser ordenadores completos y de propósito general podremos darle otros usos como centro multimedia para reproducir películas, vídeos o fotos en la televisión ya que algunas placas tienen una salida HDMI.

Proveedores de hosting
Si no queremos administrar el hardware ni tampoco el software y nos queremos olvidar de los fallos del mismo podemos hacer uso de alguna de las opciones que ofrecen los proveedores de hosting. Sin embargo, con estas opciones no tendremos posibilidad de elegir la plataforma con la que construir nuestra aplicación ya que la mayoría solo ofrece bases de datos MySQL, la plataforma ASP o ASP.NET o PHP y tal vez no en la versión que queramos. Tradicionalmente los proveedores de hosting que ofrecían la plataforma Java han sido muy pocos con lo que los programadores de Java tendremos que buscar otras opciones. A no ser que dispongamos de un servidor dedicado nuestra aplicación competirá con las otras aplicaciones por los recursos del servidor lo que puede afectar a la capacidad de nuestra aplicación. En caso de que optemos por un servidor dedicado tendremos el problema de la escalabilidad si la aplicación lo demanda.

Algunos de los proveedores más conocidos son Arsys y Piensasolutions.

Actualmente la tendencia en diferentes ámbitos está en la computación en la nube y en esta tendencia el hospedaje de las aplicaciones se ofrecen como servicio. Hay diferentes opciones entre las que poder elegir y con diversas características que deberemos evaluar según las necesidades. Veamos algunas de las más conocidas.

Amazon EC2
Amazon EC2
Amazon EC2 ofrece su infraestructura como servicio (IaaS) en la que nuestra aplicación estará hospedada en sus servidores. En esta opción tendremos un gran control sobre el software que instalamos en el servidor ya que en gran medida lo que la diferencia de un servidor propio es que nos conectamos al servidor de forma remota para administrarlo, si el servidor propio lo administrásemos de forma remota ni eso.

Al igual que otras opciones de la nube tiene la ventaja de que en caso de que nuestra aplicación escale podemos adquirir mas recursos de cómputo, como capacidad de procesamiento, memoria o almacenamiento en disco. En realidad Amazon no dispone una máquina física para cada servidor de sus usuarios sino que da una representación lógica de un servidor, por esto motivo, si necesitemos disponer de una nueva máquina podremos disponer de ella en pocos minutos y la podremos aprovisionar rápidamente con imágenes de software (AMI) buscando una que se adecue a nuestras necesidades. Aunque necesitemos más tiempo de configuración que en las opciones de Google App Engine y Jelastic.

Se puede probar durante un año gratis en una instancia micro. Aquí pueden consultarse los precios de Amazon EC2 y aquí los tipos y características de las instancias. A la hora de pagar hay que preseleccionar un tipo de instancia por lo que necesitaremos evaluar nuestras necesidades por lo alto y probablemente estemos pagando por capacidad que luego no aprovechamos.

Amazon también proporciona una plataforma PaaS, AWS Elastic Beanstalk, sino queremos ser responsables de administrar a bajo nivel las máquinas. Beanstalk nos permite centrarnos en el desarrollo de la aplicación en vez de la administración de la infraestructura.

Google App Engine (GAE)
Google App Engine
La solución de Google para el «cloud computing» ofrece una plataforma como servicio (PaaS) para las aplicaciones con una serie de API que deberán usar para conseguir ciertas funcionalidades, como persistencia. Tiene como ventaja que no tenemos que preocuparnos de administrar un servidor y todas las herramientas para hacerlas funcionar entre si, solo nos preocuparmos por nuestra aplicación. Tiene como desventaja que deberemos adaptar nuestra aplicación a las API que nos ofrece GAE y por tanto estaremos encadenados a su plataforma. También estaremos limitados a utilizar Python o Java por el momento.

Dispone de cuotas parte de las cuales pueden usarse de forma gratuita y aquí los precios de los recursos consumidos.

Jelastic
Jelastic
Una opción más reciente para únicamente la platforma Java, por el momento, es Jelastic. Se trata de una PaaS sin la desventaja de tener que administrar un servidor como en Amazon y sin la desventaja de estar encadenados a ciertas API como en el caso de Google App Engine de tal modo que si queremos cambiar de proveedor no tendremos que reimplementar la aplicación. Nos ofrece herramientas estándares sobre las que de desarrollar la aplicación como son nginx como servidor web, apache tomcat 6/7, jetty o glashfish como contenedores de aplicaciones, Maria DB, MySQL o PostgreSQL como bases de datos relacionales y MongoDB o CouchDB como bases de datos no-sql y el JDK 6 o 7.

Esta opción permite centrarse en el desarrollo de la aplicación y posiblemente sea la opción más adecuada para un equipo de developers puro que no dispone de sysadmins. La aplicación se puede tener en funcionamiento en minutos (en vez de horas como en Amazon EC2) ya que todos los elementos de la infraestructura ya están configurados para funcionar entre si. Dado que no hay que aprender nuevas API como en el caso de GAE permite aprovechar los conocimientos que todo desarrollador Java ya tiene.

La escalabilidad y el coste se mide en cloudlets. Un cloudlet se corresponde con 128 MiB de memoria y 200 Mhz de cómputo y tiene un precio de 0,016 €/hora (para el proveedor dogado). Aún en estado beta puede probarse de forma gratuita. La aplicación puede escalar de forma transparente de forma vertical hasta un máximo de 16 cloudlets y en horizontal hasta un máximo de 4 máquinas.

OpenShift
OpenShift (de la mano de RedHat) es una opción similar a Jelastic, es un PaaS, pero soporta diferentes tecnologías además de Java como PHP, Ruby, Node.js y Python. También diferentes bases de datos como MySql, PostgreSql y MongoDB. Puede ser probada de forma gratuita con un límite de 3 gears, donde cada gear se corresponde con 512 MiB y 1 GiB de espacio en disco. Otra opción similar es AppFog que también tiene una capa gratuita.

Otras opciones son AppFogCloud Foundry (VMWare), Heroku, Azure (Microsoft) y Google Compute Engine (Google Cloud Platform).

Como se ve las opciones de hosting o alojamiento no son pocas cada una con varias características, precios y formas de cobro diferentes.

Referencia:
http://es.wikipedia.org/wiki/Computaci%C3%B3n_en_la_nube
http://archlinuxarm.org/
http://www.raspberrypi.org/
http://pandaboard.org/
http://www.danielclemente.com/consumo/
http://www.arsys.es/
http://www.piensasolutions.com/
http://aws.amazon.com/es/ec2/
http://code.google.com/intl/es-ES/appengine/
http://cloud.google.com/
http://jelastic.com/
https://www.appfog.com
https://openshift.redhat.com
http://www.windowsazure.com/es-es/
http://blog.jelastic.com/2012/02/09/jelastic-versus-heroku/

Miércoles 01 de mayo de 2013

Presentació del Catalanitzador 2.0

El proper dimarts 7 de maig a les 12 del matí es presentarà el Catalanitzador de Softcatalà 2.0  per al Windows i Mac OS, una eina adreçada als usuaris informàtics que permet posar l'ordinador en català de forma senzilla i automàtica. En l'acte s'explicaran els problemes amb què compta el català a les TIC i que han dut al desenvolupament d'aquesta eina informàtica; se'n farà una demostració i s'exposaran les accions a seguir per tal de corregir aquesta problemàtica. 

Lloc

Partal, Maresma & Associats, S.L.
Carrer Ferlandina 43
08001 Barcelona

Agenda 

  • Vicent Partal, director del diari digital Vilaweb
  • Bernat Gasull i Roig, Plataforma per la llengua
  • Àlex Hinojo, director de projectes culturals d'Amical Viquipèdia
  • Xavi Ivars, equip de desenvolupament del Catalanitzador

L'acte és d'accés lliure i gratuït

Martes 30 de abril de 2013

Gorka Urrutia

Gorka Urrutia
Nideaderedes

PyQT: Abrir una ventana emergente

Os dejo aquí otro ejemplo de cómo abrir una ventana emergente en PyQT. La ventana emergente es del tipo QDialog:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
 
class Principal(QWidget): 
    def __init__(self, *args): 
        QWidget.__init__(self, *args)
 
        contenedor = QVBoxLayout()
        self.setLayout(contenedor)
 
        btnAbrir = QPushButton("Abrir ventana",None)
        contenedor.addWidget(btnAbrir)
        self.connect(btnAbrir, SIGNAL("clicked()"), self.abrir)
 
        btnSalir = QPushButton("Salir",None)
        contenedor.addWidget(btnSalir)
        self.connect(btnSalir, SIGNAL("clicked()"), self.salir)
 
    def abrir(self):
        ventana = Secundaria().exec_()
 
    def salir(self):
        exit()
 
class Secundaria(QDialog):
    def __init__(self, parent=None):
        QDialog.__init__(self, parent)
 
        contenedor = QVBoxLayout()
        self.setLayout(contenedor)
 
        btnSalir = QPushButton("Salir",None)
        contenedor.addWidget(btnSalir)
        self.connect(btnSalir, SIGNAL("clicked()"), self.salir)
 
    def salir(self):
        exit()
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    principal = Principal()
    principal.show()
    sys.exit(app.exec_())

Domingo 28 de abril de 2013

Catalanitzador de Softcatalà 2.0 beta per al Windows i Mac OS X

Acabem de publicar el Catalanizador de Softcatalà 2.0 beta per al Windows i Mac OS X.

El codi font està com de costum al github.

 

Novetats de la versió 2.0

Novetats versió Microsoft Windows:

  • Catalanització del iTunes
  • Catalanització del Skype
  • Instal·lació del paquet d'idioma a Firefox
  • Instal·lació del paquet d'idioma a Chrome

Característiques versió Mac OS X:

  • Catalanització del sistema
  • Canvi de llengua de navegació del Firefox
  • Corrector ortogràfic català
  • Canvi de llengua de navegació del Chrome

 Estadístiques

A dia d'avui 49.700 usuaris han fet servir ja el Catalanitzador. Recollim estadístiques de forma exhaustiva i anònima si teniu interès en saber quines versions de sistema operatiu i aplicacions tenen els usuaris.

Ajuda en el procés de proves

Aquesta és una versió de proves. Si teniu qualsevol versió del Windows o Mac OS i el podeu provar-la us ho agrairem. Si el proveu i trobeu qualsevol errada m'ho feu arribar a mi mateix a jmas@softcatala.org.

Tenim també una llista de correu anomenada desenvolupament on ens coordinem i on es podeu apuntar si voleu ajudar en el procés de desenvolupament, proves o donant idees.

Viernes 26 de abril de 2013

Luis Vilchez

Luis Vilchez
El blog de Jabba

Las mejores distribuciones GNU Linux del momento. ¿Qué distribución elegir?

Partiendo de la base de que cualquier distribución Linux es una apuesta segura y totalmente recomendable y teniendo además presente que cada distribución cuenta con sus detractores y sus más acérrimos seguidores, me gustaría dejar claro que todo lo que a continuación argumento no deja de ser una opinión meramente personal basada en mi propia experiencia en el mundo linuxero (y ya van unos años).

Si hay algo que me encanta de Linux es que cada distribución, como cada persona, es diferente. Este hecho es usado frecuentemente como objeto de crítica, pero donde algunos ven un problema yo veo una oportunidad; la oportunidad de que cada usuario pueda tener un sistema operativo perfectamente adaptado a sus necesidades. Esa premisa es la que he usado como base para hacer la selección que tenéis a continuación en la que recomiendo, en función del uso y del usuario, las distribuciones GNU Linux que a día de hoy (noviembre de 2012) encuentro más apropiadas para cada fin.

La mejor distribución de escritorio.


He aquí la madre del cordero, ya sea para un equipo de sobremesa o un ordenador portátil. La mejor distribución para uso de escritorio, pasa uso general.

En este punto me gustaría comentar que en mi paso por otras distribuciones (y consecuentemente otras comunidades) he notado un grotesco y sectario rechazo hacia distribuciones como Ubuntu, distribuciones que acercan Linux al usuario normal, sin conocimientos especialmente avanzados y que no quiere complicaciones. He llegado a leer, por parte de algunos extremistas, aberraciones del calibre de prentender excluir a Ubuntu de la comunidad Linux con el pretexto de que "hace las cosas demasiado fáciles al usuario".

Algo que debería entender todo lector es que la inmensa mayoría de personas que utilizan un ordenador lo hacen porque ven en el PC una herramienta de trabajo y ocio, y esto supone que, aunque algunos encontremos en eso un reto divertido, no todo el mundo ha de tener tiempo ni ganas de aprender cómo compilar los drivers de una tarjeta de vídeo hasta hacerla funcionar.

Es por ello que debería hablar en plural y no de distribución sino de distribuciones, pues no me parece justo, por lo que he mencionado antes, recomendar la misma distribución al usuario que se acaba de iniciar en el mundillo linuxero que al usuario veterano. Ya sabéis, "una distribución para cada usuario".

  • Para el recién llegado a Linux:


  • Dirigiéndome al usuario menos experimentado, a ese que acaba de dar el salto al mundillo GNU Linux y quiere encontrarse con un sistema que colme todas sus necesidades sin complicarse la vida, mi recomendación, siguiendo esa corriente generalizada que se extiende últimamente por los rincones de toda la linuxfera, la tengo clara: Linux Mint.

    Click en la imagen para ampliar

    Linux Mint lleva años teniendo una excelente reputación por su facilidad de uso, hasta tal punto que en los últimos tiempos ha superado en popularidad al mismísimo Ubuntu. He de reconocer que de primeras fui reticente a dejarme seducir por ella por esperar encontrarme una variante de la propia distro de Canonical, pero cuando la probé por primera vez me sorprendió tan gratamente que me hizo caer en la cuenta de lo totalmente infundados que estaban mis prejuicios.

    Cualquier usuario que venga de Windows se encontrará ante un sistema que cumple de maravilla con todo cuanto se le puede exigir. Tiene un escritorio amigable y como digo arriba está especialmente orientada a ese usuario que acaba de aterrizar en Linux. Ni que decir tiene que, por estar basada en ellas, un usuario con experiencia en Debian o Ubuntu se encontrará como pez en el agua. El objetivo de Mint es ofrecer, según manifiestan en la web del proyecto, "una experiencia no-convencional más completa que otras distribuciones". Y doy fe que así es.

    Linux Mint viene con todos los codecs y plug-in's que podamos necesitar precargados, lo que ahorra tanto tiempo como dolores de cabeza. Uno puede llegar nada más instalar el sistema y reproducir todo tipo de audio y vídeo o navegar por aplicaciones web que requieran Java sin tener que buscar e instalar los complementos necesarios.

    Por si fuera poco Linux Mint cuenta con una comunidad inmensa detrás, lo que significa un gran apoyo ante cualquier problema y una fuente de consejos y mejoras para nuestro sistema.

    Linux Mint es una apuesta segura. Os aseguro que no os decepcionará.

  • Para el usuario con experiencia en Linux:


  • Aunque me gustaría empezar recalcando que Linux Mint es una distribución de escritorio perfectamente válida tanto para un usuario novel como para uno con conocimientos avanzados, he decidido guardar otra para este último grupo. Una a la que tengo especial cariño desde que hace un par de años se acomodara en mi disco duro con la intención de no moverse de allí. Estoy hablando de OpenSuse.


    Ubuntu y después Fedora fueron mis distribuciones de referencia tanto en mi PC de sobremesa como en mis equipos portátiles durante años. Sin embargo la primera sensación que tuve al empezar a trabajar con openSuSE es que tenía entre manos una distribución tremendamente seria y estable. Más que las anteriores. Sin duda con más puntos en común con Fedora que con Ubuntu. Un sistema muy robusto y aparentemente óptimo para trabajar tanto a nivel usuario como a nivel empresa. Además OpenSUSE integra extraordinariamente bien todos los escritorios lo que, para un adepto de las virtudes de KDE como yo, no hace sino sumar argumentos a su favor.

    Como digo es estable, relativamente sencilla de usar y muy completa y, como dicen en la web del proyecto, está orientada a usuarios y desarrolladores que trabajen tanto en escritorio como en servidores.

    Mi distribución, mi ojito derecho... y todo lo que ello supone :).

    La mejor distribución para el ámbito científico.


    No he querido dejar pasar la oportunidad de hablar de Scientific Linux, distribución con la que he estado trabajando durante mis meses de estancia por la University of Edinburgh que no había usado con anterioridad y que me ha cautivado.


    Se trata de una distro basada en Red Hat Enterprise bajo licencia GPL. Es un proyecto similar a CentOS, es decir, está basada en el código fuente de Red Hat (y es perfectamente compatible con ella) pero eliminando todo rastro de limitaciones legales.

    Para que os hagáis una idea de la envergadura del proyecto, Scientific Linux es mantenida por los laboratorios de Física CERN y Fermilab, y además de ayudarme con la simulación de los procesos de adsorción de CO2 con los que yo trabajaba, es usada en el Gran colisionador de hadrones para las máquinas de su red de ordenadores (casi nada).

    El propósito de esta distribución es que los distintos laboratorios y universidades que emplean Scientific Linux en todo el mundo, puedan personalizar y adaptar, incluyendo software propio, la distribución a sus necesidades específicas con un mínimo esfuerzo.

    Como podréis imaginar, la instalación es muy similar a la experiencia de instalar Fedora y los repositorios son compatibles e intercambiables tanto con RHEL como CentOS.

    Y eso es todo. Posiblemente alguien eche en falta una sección dedicada a la mejor distribución para el uso en un servidor, pero como no trabajo ni he trabajado nunca con servidores no me considero el más indicado para recomendar una distribución de este tipo. Pese a todo, durante los últimos años la "batalla" entre las mejores distros para esta categoría siempre se ha reducido a Debian, Red Hat Enterprise Linux (RHEL) y SUSE Linux Enterprise Server (SLES), así que no me cabe duda que cualquiera de las tres será una opción más que válida.

    Espero que os haya resultado útil. ¡Larga vida al software libre!
    Luis Vilchez

    Luis Vilchez
    El blog de Jabba

    El porqué de la demanda de HispaLinux ante la Comisión Europea contra Microsoft

    Muy comentada fue la noticia aparecida hace unas semanas acerca de la queja formal -ratificada, corregida y ampliada en los últimos días- presentada por Hispalinux, una de las mayores asociaciones de usuarios y desarrolladores de Linux en España, ante la Comisión Europea contra Microsoft.

    ¿El motivo? La dificultad que en principio representa para los usuarios modificar o cambiar Windows 8 por Linux (o cualquier otro sistema), en aquellos equipos donde el nuevo sistema operativo de Microsoft viene preinstalado.


    En la demanda, Hispalinux defiende que Windows 8 contiene un "mecanismo de obstrucción" llamado Secure Boot UEFI que controla la puesta en marcha del equipo y que definen como "una cárcel tecnológica para los sistemas informáticos de arranque... haciendo que la plataforma Windows de Microsoft sea menos neutral que nunca."

    La informática parte de un principio fundamental y es el derecho del usuario al control completo de sus propios dispositivos informáticos.

    El dispositivo Secure Boot de Windows 8 no garantiza esta libertad [...]. El consumidor adquiere un dispositivo informático cuyas posibilidades le han sido significativamente restringidas y sin serle advertirdo.

    A pesar de que Microsoft permite la desactivación de Secure Boot o la "alteración" de bases de datos clave, el proceso para realizar cualquiera de estas dos acciones excede las competencias que uno espera de un usuario medio.

    Además, esto solo aplica a equipos de arquitectura x86. La certificación de Microsoft prohibe expresamente cualquier desactivación o modificación para equipos con chipsets ARM. Los ordenadores con ARM se están generalizando cada vez más [en tabletas, smartphones...], y no es ningún secreto que dentro de unos años reemplazarán muchos nichos que ahora están dominados por la tecnología Intel."

    La demanda resume además en varios puntos la forma en la que, según Hispalinux, Microsoft consigue un efecto anticompetitivo en el mercado con Windows 8:

    1) Windows 8 provee a los fabricantes con un diseño por defecto consistente en que el Secure Boot viene con la exclusiva firma del sistema operativo de Microsoft y, en consecuencia, excluye, por defecto, todos los demás.

    2) Para que un fabricante implemente condiciones de control del sistema de arranque respetuosas con los derechos de los usuarios, implica para el fabricante una importante inversión económica en desarrollo de software [...] algo para lo cual no tiene incentivos.

    3) El Secure Boot de Windows genera incertidumbre en los desarrolladores de aplicaciones de otros sistemas operativos dado que cuestiona la supervivencia de plataformas distintas de Windows [...]. Como resultado, Linux y otros sistemas operativos han sufrido y continuarán sufriendo un daño irreparable causado por el sistema de Secure Boot de Microsoft."

    La respuesta de Microsoft, a través de un comunicado oficial, no se hizo esperar:

    UEFI es un estándar de la industria diseñado para mejorar la seguridad en los ordenadores. Estamos dispuestos a responder cualquier pregunta adicional, pero estamos seguros de que nuestra postura cumple la ley y ayuda a que los consumidores estén más seguros."


    ¿Pero en qué consiste el "arranque seguro"? ¿Tiene sólido sustento la demanda?


    Pues en primer lugar habría que definir y aclarar qué narices es exactamente eso de "Secure Boot UEFI", y la definición que más me ha gustado buscando por la Red, ha sido la dada por la FSF:

    Arranque seguro es cualquier esquema de validación de arranque en el cual el control último está en las manos del propietario del dispositivo, mientras que arranque restringido es cualquier esquema de validación de arranque en el cual el control último está en manos de un tercero.

    Lo que Microsoft solicita ahora para los dispositivos x86 con Windows 8 iría dentro en la categoría de arranque seguro, ya que asumiendo que las OEMs se ajusten a los requisitos de Microsoft, el usuario debe poder deshabilitar el arranque seguro completamente, y también poder dejar el arranque seguro habilitado, pero con su propia elección de claves y binarios de confianza.

    Leyendo el párrafo anterior detenidamente, uno puede pensar que en principio todo parece maravilloso, ya que cualquier sistema que cumpla con los requisitos de Microsoft es un sistema que respeta la libertad del propietario del ordenador para elegir cómo de restrictiva es la política de arranque de su sistema.

    La realidad, y el punto donde se sustenta el grueso de la demanda de Hispalinux, es que la falta de una interfaz de usuario o formatos de clave comunes entre los proveedores de hardware hace muy difícil para los proveedores de sistemas operativos documentar los pasos que el usuario debe seguir para ejercer esta "libertad". A esto es exactamente a lo que se refieren cuando dicen aquello de "el proceso para realizar cualquiera de estas dos acciones excede las competencias que uno espera de un usuario medio" ya que se vuelve una tarea, realmente tediosa y complicada modificar o cambiar el sistema operativo del equipo.

    Si a eso le sumamos que Microsoft aparece como la única autoridad de claves confiable, se le queda a uno una gran, y creo que justificada preocupación, en base a si Microsoft será igual de agresiva en poner en la lista negra sus propios productos que poniendo en la lista negra productos de terceros.

    La cruda realidad y la conclusión que puede sacarse de todo lo anterior es que aquellos que argumentan contra el arranque seguro ponen en riesgo nuestra libertad de tomar una decisión personal sobre en quién confiar; ponen en riesgo nuestra capacidad de elegir.


    Vía Reuters :: Gizmodo :: Matthew Garrett
    Luis Vilchez

    Luis Vilchez
    El blog de Jabba

    ¡Felices fiestas! Regala Linux por Navidad


    Desde aquí os deseo a todos que paséis unas muy felices fiestas en compañía de los vuestros.

    Y recordad que en los tiempos que corren no hay mejor regalo que un pingüino. ¿Imaginas regalar "libertad"? ¿Hay algo más útil que la libertad? No olvidéis que la Navidad puede ser una buena excusa para promover el software libre. ¿Por qué no regalar una copia de tu distribución Linux favorita?


    Haz click en el regalo y descarga libertad

    Barato, útil y original. ¿Se puede pedir más? El regalo perfecto para estas fiestas... ¡regala Linux por Navidad!

    Miércoles 24 de abril de 2013

    Ramón Miranda

    Ramón Miranda
    Ramon Miranda

    LGM Madrid 2013. Future Tools


    Ramón Miranda . Photo by Tatica.
    Explicar todo lo que es la Libre Graphics Meeting a alguien que no ha estado allí es como querer enseñarle los colores a una persona que haya nacido ciega. Esa es mi impresión después de haber estado en MediaLab Prado este año.
    Os podría hacer un resumen del programa, o enseñar muchas fotos, pero eso sería un artículo clásico y de esos ya habrá decenas por la red. Muchos usuarios habrán subido fotos sobre cómo han visto ellos la LGM, otros habrán tuiteado hasta la saciedad todos los pormenores. Así que no es dificil encontrar la parte ...digamos más técnica.
    Lo que uno se pierde cuando no va a estos eventos es algo que vale igual o más en terminos de desarrollo. Hablo del componente humano. Así que voy a desgranar cómo he visto yo la LGM en ese aspecto.

    Primer impacto. Cada LGM es diferente. Esta es la segunda vez que voy y la he vivido de una forma completamente diferente. He reconocido a muchos de los asistentes pero también me he interesado en conocer a otros. Lo cual me ha dado ideas para los eventos futuros en los que participe.Encontrar el sitio no fue nada dificil gracias a la buena gestión del equipo de Medialab Prado. Han sido como un ejercito de hormiguitas trabajadoras que no han cobrado protagonismo pero que han sido los responsables del lado "oscuro", de lo que no se ve. Con técnicos de cámara, traductores, rrpp, presentadores, y así hasta un buen número de personas que son protagonistas desde el silencio.
    Cuando leía acerca de Medialab Prado, he visto como se cumplía plenamente su definición.Así que ¡Buen trabajo!y ¡Muchas grácias!

    Boud explicando la Krita Foundation
    ¿Y qué ha hecho el equipo de Krita allí? Pues bastante para ser sólo 4 días. Boud estuvo explicando qué es la fundación Krita. Animtim estuvo dando un taller de Krita Sketch que se reconvirtió a Krita Desktop por problemas técnicos. También presentó una charla sobre Krita Sketch en el auditorio.

    Ramon (el que os escribe) estuvo promocionando el 2º DVD que se está produciendo gracias a la fundación Krita. Y David estuvo dando un taller sobre pintura consimetría para iniciar a la gente en la pintura con Krita o Mypaint.

    A parte de esto pudimos ver los ultimos desarrollos de SVG, G'MIC, Herramientas tipográficas y muchas cosas... más pero lo que a mí más me ha impactado han sido varias aspectos.

    Interacción entre asistentes. Así por ejemplo hemos podido Ver como las comunidades de desarrollo interactúan entre ellas.Gimp, Synfig, Mypaint. Krita.todos Hablando y desarrollando nuevas ideas. Y creedme cuando os digo que los programadores son gente especial. Les podías ver a cualquier hora tecleando concentrados en sus laptops cosas que todos usaremos en unos meses.

     Konstantin y Carlos (Synfig) en el fondo.
    Renovación del altruismo. Y éste quizás sea uno de los puntos más importantes de todos. Cuando estás allí, es inevitable sentir el espiritu colaborador, la fuerza de la comunidad. Siendo esta una labor que no suele repercutir economicamente o que no es esa su principal razón de ser, tenemos que buscar un motivador mayor. Y este, se mantiene a base de agradecimiento y recompensa. Recompensa a modo de reconocimiento publico o bien a modo de resultados. No tenemos que olvidar que detrás de todo ese conocimiento, programas y recursos, hay personas con familias, problemas, tiempo libre, penas, y mucas horas de sacrificio por un bien comun.

    Ramón Miranda y David Revoy (Krita)
    Inyección creativa. Es tambien aquí cuando motivados y alimentados en todo sentido se gestan nuevas ideas que tienen más facilidad para salir que si se gestaran via e-mails. Con resultados inmediatos. Eso es un Lab, un sitio para probar, mezclar, innovar al fin y al cabo pero con procedimientos y organización.

    Pero no todo ha sido perfecto. Hemos cometido fallos y detectado problemas. Sabemos ver como gestores de la mejora continua que hay cosas que podemos hacer mejor como...

    Timothée Giet en el taller de Krita Sketch
    Algunos de los Talleres que se han realizado. No teníamos los programas en su última versión o los archivos adecuados y eso ha hecho que el taller no fuera lo más práctico que debiera haber sido. Esto ha hecho pensar a los desarrolladores que para la próxima vez, es vital que la introducción en el taller sea buena y que todos puedan participar y ver al menos un programa que hace lo que debe de hacer. Será mejor dejar lo experimental para los propios equipos de desarrollo y no usuarios nuevos que pueden llevarse una mala y dificilmente borrable primera impresión.
    Es importante que cuidemos las descripciones de los talleres y que pensemos en a quién nos dirigimos y la motivación que puede llavarle a estar allí. ¿Son estudiantes que vienen por un crédito de la universidad? ¿son personas que tienen algún conocimiento del software libre o más bien ninguno?... ¿Voy a mostrales la uĺtima funcionalidad del programa que hace crash cada 2 por 3 o voy a captar su atención e interés con un resumen de lo que se que el programa es capaz de hacer bien en un día a día? hacernos este tipo de preguntas contribuirá a que nuestro taller sea un éxito.

    Cambio generacional. Esto es algo que me preocupa, porque el ambiente empieza a ser de gente de unos veintibastantes a unos cuarenta y pico de media. Y eso es peligroso. Sin nuevas generaciones que usen, desarrollen y organicen, este modelo de conocimiento puede terminar. Es nuestra decisión y responsabilidad. Tenemos que ser capaces de ofrecer una mejor vision del desarrollo, implicar más a las administraciones, a la educación, tanto profesorado como estudiantes.
    No podemos confiar que esto funcionará solo. Y los jovenes tienen que darse cuenta que las ventajas de tener aplicaciones libres y nuevos desarrollos pasa por ellos. Tambien tienen que "mojarse". Joven, imáginate un dia sin Internet,(apache) sin firefox, ni Libre office para hacer tus trabajos. No tienes Gimp para retocar tus fotos de tuiter o facebook ni hacer fotomontajes para tus trabajos...y no puedes salir porque has tenido que pagar todas las licencias de los programas que usas. Ese día no ha llegado. Hoy tenemos alternativas, pero es algo que tenemos que cuidar.


    Por eso "Todos " necesitamos más infraestructuras de colaboracíón. Necesitamos más implicación real de parte de los usuarios de nuevas generaciones. Cómo hacerlo es algo que grupos mejor organizados pueden debatir. Ahí lo dejo.

    Conclusión.
    Este, ¡cómo no! Es "mí" punto de vista. Es cómo yo veo ese arcoiris. Tú, querido lector, podrías experimentarlo de formas completamente diferentes pero igualmente interesantes y provechosas para la comunidad. Así que si has contribuído a que este evento sea posible con tus donativos o tiempo de organización, ya sabes que todos esos recursos se están empleando en la consecución de un bien común con una mejor comunidad.


    PD: Grácias a los que hicieron posible mi traslado allí durante esos días, principalmente...



    Martes 23 de abril de 2013

    Alberto Ruiz

    Alberto Ruiz
    Silicon Island

    Wearing the red fedora

    This is some news I have been wanting to share with my friends and the community for quite a while, starting on the 15th of June I will be working for Red Hat.

    I will be filling Christian's position before he got promoted to lead the entire desktop group, that means I will be managing the engineers working on Evolution, Firefox and LibreOffice. This means that I will be closer to the tree upstreams I have cared the most for my entire career: GNOME, Mozilla and LibreOffice (and OO.o before them) and I get to do it in one of the greatest companies of the open source ecosystem.

    I will be moving to Brno, Czech Republic, to work along side 600 redhatters in the European engineering HQs, also, this means I don't have to figure out flights and accommodation for GUADEC this year ;-)

    I can't express how thrilled I am for being given this chance. This has been, however, one of the hardest decisions I had to make in my entire life.

    Moving to Dublin when I was 22 to work for Sun was certainly easy, I was fed up with college at that point, I never left home before and I was young enough so that my decisions did not necessarily affect how the next 10 years would look like. It turned out quite well, I loved working for Sun and learned a lot, my English improved quite a lot and spent probably one of the best years of my life (2008).

    Moving to Manchester from Dublin to work for Codethink in 2009 was also somewhat easy, most of my friends left or where about to leave Dublin and things at Sun were starting to get a bit stiff because of the acquisition process from Oracle. It was a good move after all and I fell in love with the UK and Manchester as a place to live. I also learned a great deal alongside Rob and the rest of the Codethink bunch.

    However this time is different, I am 29 (yeah I know, not an old fart yet, but still...) I came back to Gran Canaria and started working for Canonical a year and a half ago after 5 years abroad, I rebuilt my social circles, I am closer to my family, I've just lost 15kg recently and I am going through a very happy stage of my life now, not to mention that moving to a country whose language I'm far from barely speaking is certainly frightening.

    It's the first time this kind of move feels like a sacrifice to me, but my gut feeling keeps telling me that it will be worth it, and it has never failed me before for these kind of matters.

    Exciting and challenging times ahead!

    Lunes 22 de abril de 2013

    BlogDRAKE: Mageia 3 RC

    Domingo 21 de abril de 2013

    Alvaro Lopez Ortega

    Alvaro Lopez Ortega
    Alvaro's blog

    Robbed during a Delta flight

    I have just realized I was robbed a couple of days ago. More specifically, somebody at either Delta or TSA stole a bunch of stuff from my suitcase when I flew from Portland to Madrid.

    Of course they didn't pick up random stuff, they carefully chose the most expensive stuff I had in my luggage, including both clothing and consumer electronics.

    The content of the suitcase was all messed up to the point I knew I had been robbed as soon as I opened it up earlier today.

    Needless to say, Delta won't find anybody accountable for this robbery, and.. well, let's say I wouldn't even dream the TSA (or in other words the US Federal Government) taking responsibility for its staff actions either, or lack of them.

    It is sad one cannot take a plane in a developed country and not get his stuff stolen, but what I find utterly despicable is that nobody will take responsibility for it. The system is so full of shit that whoever robbed my stuff won't get caught because nobody will even try to catch him. The obvious consequence, he's keep stealing with impunity.

    TSA, I have a question for you. Completely out of curiosity, what's the purpose of all those CCTVs and security screenings if you aren't even able to stop airport staff (including TSA's) from robbing passengers? It's unbelievable we have to go through so many useless checkpoints when you seem to be unable to cope with something as simple as keeping offenders away from our luggage.

    Jueves 18 de abril de 2013

    David Moreno

    David Moreno
    dm's blog

    Debian meetup in Utrecht, The Netherlands

    This next Tuesday, April 23rd, 2013, a few of us Debian people in the Netherlands will get together for beer and keysigning in Belgisch Bier Café Olivier in Utrecht. If you are in the area, feel free to come, have a beer or two and mingle!

    Find the exact details in this debian-events-nl mail.

    See you there!

    Miércoles 17 de abril de 2013

    Cómo sincronizar Facebook Login entre Android y nuestro servidor


    Hace unas semanas hicimos una introducción a la nueva API de Facebook para Android. Vimos los pasos necesarios para empezar a trabajar con ella y esta semana aprovecharemos lo ya visto para realizar algún ejemplo un poco más complicado.

     
    Lo que vamos a implementar es un login con Facebook y vamos a sincronizarlo con nuestro propio servidor, comprobando si nuestro usuario está en nuestro sistema y si no lo está lo damos de alta con los datos que nos dé Facebook. Antes de continuar, si no visteis el anterior artículo de Facebook, es necesario que lo completéis para poder añadir esta librería a vuestro proyecto. La única parte que no es necesaria es la del código de la Activity.

    En una pantalla de login como la que ya hemos hecho en el artículo Creando nuestro sistema de registro y login, vamos a añadir un botón que nos permita hacer login con nuestra cuenta de Facebook. Si nuestro email no está registrado en nuestra plataforma, entonces le pediremos a Facebook que nos dé los datos necesarios para poder hacer el registro.

    En el artículo Creando nuestro sistema de registro y login(III) aún no habíamos utilizado librerías para crear conexiones HTTP como la que utilizamos en Peticiones HTTP ahora más fáciles, así que os aconsejo que si vais a utilizar el código del login que enlacé antes, hagáis un ejercicio de sustitución por esta librería.

    En nuestra App Android


    Empezamos incluyendo en la pantalla de login el siguiente código. Simplemente es un fragment que enlaza a la clase ButtonLoginFragment. Debéis sustituir en android:name por el package donde ubiquéis esta clase.


    <fragment android:name="aqui.va.el.nombre.de.vuestro.package.ButtonLoginFragment"
             android:id="@+id/LoginFragment"
             android:layout_width="match_parent"
             android:layout_height="match_parent" />



    El siguiente paso es crear la clase ButtonLoginFragment que aparece en el fragment anterior. La clase ButtonLoginFragment es muy simple. Hereda de Fragment y nos devuelve la vista de el siguiente layout que explicaremos, facebook_button.xml. Además instanciamos el botón de login específico de Facebook y le indicamos que pida permiso al usuario para acceder a su email.

    Si necesitáis añadir más permisos a vuestra app podéis encontrar aquí más información, https://developers.facebook.com/docs/reference/login/#permissions. Pero tened en cuenta que cuantos más permisos pidáis más reacio será el usuario a dar permisos, así que estad seguros de que necesitáis cada uno de los permisos que incluyáis.


    public class ButtonLoginFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       View view = inflater.inflate(R.layout.facebook_button, container, false);
      LoginButton authButton = (LoginButton) view.findViewById(R.id.login_button);
      authButton.setReadPermissions(Arrays.asList("email"));
         
      return view;
    }
    }


    Después de esto vamos a crear el layout con el botón de login de Facebook, facebook_button.xml.


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="vertical"
    android:gravity="center" android:layout_gravity="center">
        <com.facebook.widget.LoginButton
                android:id="@+id/login_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_marginTop="0dp"
                android:layout_marginBottom="0dp" />

    </LinearLayout>



    Como veis no tiene mayor complicación. Un LinearLayout para meter dentro el widget del LoginButton que nos proporciona el SDK de Facebook. Ahora veamos como queda la activity que gestiona la pantalla de login. Veremos únicamente la parte que gestiona el login de Facebook para no complicarlo demasiado. Debéis cambiar además la herencia de vuestra Activity a FragmentActivity quedando extends FragmentActivity.


    private boolean try_login_facebook = true;
    private UiLifecycleHelper uiHelper;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
           
        uiHelper = new UiLifecycleHelper(this, callback);
    uiHelper.onCreate(savedInstanceState);

    }



    Empezamos definiendo un booleano y una interface que nos ayudará en el ciclo de vida del login de Facebook. Y en el onCreate a parte de llamar al layout login, inicializamos la interface.


    private Session.StatusCallback callback =  new Session.StatusCallback() {
       @Override
       public void call(Session session, SessionState state, Exception exception) {
           if (state.isOpened()) {                   
            } else if (state.isClosed()) {
           
            }
       }
    };
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
    }




    El siguiente paso es definir callback que si os fijáis se le pasó a uiHelper en el onCreate. Esto nos permitirá actuar cuando el estado de la sesión de Facebook cambie. Y además en el onActivityResult lanzamos el método del mismo nombre de uiHelper para que realice las operaciones necesarias.


    La parte importante viene ahora, en el onResumeFragments. Aquí se obtiene el objeto Session de Facebook y se comprueba si no es nula y está activa. Además utilizo una bandera, try_login_facebook, porque se puede estar ejecutando múltiples veces este método y así evitamos que haga peticiones innecesarias.


    El método facebookLogin simplemente va a obtener el token que nos da Facebook y lo vamos a enviar a nuestro servidor web para hacer su parte del proceso de autenticación. Fijaros que si da un fallo la conexión con el servidor ejecuto el método closeAndClearTokenInformation. Además se está utilizando la librería que ya se explicó en Peticiones HTTP ahora más fáciles para hacer la conexión.


    @Override
    protected void onResumeFragments() {
      super.onResumeFragments();  

      final Session session = Session.getActiveSession();
      if (session != null && session.isOpened()) {
      if(try_login_facebook){    
    try_login_facebook = false;
    facebookLogin(session);
       }    
      }
    }

    public void facebookLogin(final Session session){


    AsyncHttpClient client = new AsyncHttpClient();
    RequestParams rp = new RequestParams();

    rp.put("token", session.getAccessToken());
    rp.put("tag", "login.facebook");

    client.post("url de nuestro servicio web", rp, new AsyncHttpResponseHandler(){
    @Override
    public void onSuccess(String response){
    //Aquí ha vuelto del proceso de login, hay que verificar en la respuesta si tuvo éxito o no


    }
    @Override
    public void onFailure(Throwable throwable){
    session.closeAndClearTokenInformation();
    }
    });
    }



    Si quisierais obtener información del usuario debéis hacer una petición de este estilo en el lugar donde estamos llamando al método facebookLogin. Simplemente se hace una petición a Facebook para que nos dé los datos requeridos. Acordaros que este es un proceso asíncrono y debemos tratar estos datos en el onCompleted. Algo muy parecido lo vimos cuando integramos el SDK de Facebook en Android.


    Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {

    @Override
    public void onCompleted(GraphUser user, Response response) {
             
        if (session == Session.getActiveSession()) {
            if (user != null) {
                //Aquí con el objeto user podemos obtener datos del usuario logado
               }
          }
           if (response.getError() != null) { session.closeAndClearTokenInformation( ); }}});
    request.executeAsync();



    EN NUESTRO SERVIDOR WEB



    La última parte la debemos hacer en un servidor web y como siempre la hago en PHP. Ya hemos visto otras veces como realizar estos procesos y no es muy complejo. Simplemente le hemos enviado desde la aplicación Android un tag para decirle que vamos a hacer un login con Facebook y le pasamos también el token.


    public function facebookLogin($token){
    $url = "https://graph.facebook.com/me?access_token=". $token;
    $json = @file_get_contents($url);

    if($json != false){
    $e = json_decode($json, true);

    $email = $e["email"];
    $name = $e["name"];
    $username = $e["username"];
    if($this->isUserExisted($email) == false){
    $this->registerUser($username, $name, $email );
    }
    $response = array("success" => "1");
    } else {
    $response = array("success" => "0");
    }
    return json_encode($response);
    }



    El método que finalmente se debe llamar en nuestro servicio web será facebookLogin y simplemente va a hacer una petición a Facebook con el token para que le devuelva la info del usuario. Esto nos tiene que devolver un json si se ha encontrado al usuario. Podéis probar a llamarlo desde un navegador para que veáis que aspecto tiene y que datos trae. Después obtenemos los datos que nos ha dado Facebook, en nuestro caso necesitamos el email, nombre y nombre de usuario.


    Buscamos en nuestro servidor el usuario por email con isUserExisted y si no existe lo registramos con registerUser. Podéis revisar el artículo Creando nuestro sistema de registro y login en Android (II), encontrareis el método isUserExisted y la parte que registra un usuario la podéis meter en el método registerUser para que os sea más fácil utilizar en ambos sitios.


    Por último, se envía una respuesta indicando si el proceso ha tenido éxito o no. Esta la debemos evaluar en nuestra app Android. En este punto según queráis enfocar vuestra aplicación podéis navegar a otra pantalla, guardar en el terminal una determinada información o lo que vosotros necesitéis. Lo importante es que hemos conseguido hacer login en nuestro terminal con las credenciales de Facebook y además hemos sincronizado estos datos con nuestro servidor.

    gbrainy 2.20

    Here we have gbrainy 2.2.0, a major release. gbrainy is a game that challenges your logic, verbal, calculation and memory abilities.

     

     

    What's new in version 2.2.0 

    • New games: 3 new logic games, 2 calculation games and 17 new verbal analogies
    • Improved the graphics of 10 puzzles
    • More mouse support in some old puzzles
    • Sound support
    • 3 bug fixes

    Downwload

    * http://gent.softcatala.org/jmas/gbrainy/gbrainy-2.2.0.tar.gz
        (md5sum f3ab82cd8715e177376c7ea55cd52a9a)

    Additionally, gbrainy is available for all major Linux distributions.

    Help Wanted!

    You can contribute to gbrainy in many ways, but actually I'm specially looking forward help on these areas:

    • If you are a native English speaker and you see any English sentence that has broken grammar or it is difficult to understand please let me know
    • If you are playing the game and you see a bug in any of the games please also let me know

    Report any issue by fill up a bug in gbrainy bug tracking, sending a message to the gbrainy public group or just dropping me a quick message (jmas at softcatala dot org). Your help is really appreciated.

    Thanks

    Finally I want to say thanks a lot to all the people that has participated in this release: translators, people reporting bugs, giving feedback, etc. You contribution has been key as usual!

    Lunes 15 de abril de 2013

    Alberto Ruiz

    Alberto Ruiz
    Silicon Island

    Farewell Canonical

    Next Wednesday, April 24th, will be my last day at Canonical.

    During these 18 months I've met a great bunch of people and I've been part of a worthwhile project, to bring free software to the consumer space, something I hope they achieve even if I am not part of the team anymore.

    It has been an amazing ride and I think I've grown quite a lot as an engineer in the meantime, I am very greatful for their trust and support and I will miss the vibe during sprints, the colleagues and friends I've made during this time.

    So what's next you ask? You'll know soon enough, all I can say for now is that after the 24th I will have some time for myself and I will sort things out before my next gig.

    Sábado 13 de abril de 2013

    Pedro L. Lucas

    Pedro L. Lucas
    Cartas de Linux

    Escribe tu propio gestor de la frecuencia de la CPU

    En muchos casos es interesante controlar la frecuencia de la CPU. Por ejemplo, en un portátil conviene gestionar dicho parámetro para contener el gasto energético. Por lo tanto la batería durará mucho más.

    También se puede usar para hacer overclock y sacar más rendimiento al equipo.

    Hay que tener en cuenta que mayor velocidad de la CPU más rendimiento, pero más consumo.

    Existen programas como Jupiter (http://aleqwerty.wordpress.com/2013/04/06/ahorra-bateria-con-jupiter-ubuntu-12-10/) que te permiten controlar la frecuencia de la CPU. Pero me he encontrado casos en los que no parece funcionar correctamente.

    También existen otras opciones como las que se detallan en los siguientes wikis:

    https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling

    http://en.gentoo-wiki.com/wiki/CPU_Frequency_Scaling

    Pero en ocasiones nos gustaría controlar el comportamiento de dicho escalado y definirlo a nuestro antojo.

    Lo que voy a contar ahora es cómo cambiar dicha frecuencia usando nuestros propios programas. ¿Preparados? Allá vamos:

    Para empezar debemos tener cargado el módulo que permite controlar la frecuencia. Los módulos disponibles se pueden encontrar usando el siguiente comando:

    ls /lib/modules/$(uname -r)/kernel/drivers/cpufreq/

    ¿Qué módulo usar? He aquí una pequeña lista sacada de la wiki de Arch Linux:
    * acpi-cpufreq CPUFreq driver which utilizes the ACPI Processor Performance States. This driver also supports Intel Enhanced SpeedStep (previously supported by the deprecated speedstep-centrino module).
    * speedstep-lib CPUFreq drive for Intel speedstep enabled processors (mostly atoms and older pentiums (< 3))
    * powernow-k8 CPUFreq driver for K8/K10 Athlon64/Opteron/Phenom processors. Deprecated since linux 3.7 – Use acpi_cpufreq.
    * pcc-cpufreq This driver supports Processor Clocking Control interface by Hewlett-Packard and Microsoft Corporation which is useful on some Proliant servers.
    * p4_clockmod CPUFreq driver for Intel Pentium 4 / Xeon / Celeron processors. When enabled it will lower CPU temperature by skipping clocks.
    You probably want to use a Speedstep driver instead.

    Para cargar el módulo escribimos:

    	
    	sudo modprobe módulo

    Por ejemplo, en el caso de tener un Pentium 4:

    	sudo modprobe p4_clockmod

    Una vez cargado el módulo instalamos el paquete cpufrequtils:

    	
    	sudo apt-get install cpufrequtils

    Perfecto, vamos a la carga. Escribimos en un terminal:

    	
    	cpufreq-info

    Devolverá algo similar a lo siguiente:

    cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
    Report errors and bugs to cpufreq@vger.kernel.org, please.
    analyzing CPU 0:
      driver: p4-clockmod
      CPUs which run at the same hardware frequency: 0
      CPUs which need to have their frequency coordinated by software: 0
      maximum transition latency: 10.00 ms.
      hardware limits: 300 MHz - 2.40 GHz
      available frequency steps: 300 MHz, 600 MHz, 900 MHz, 1.20 GHz, 1.50 GHz, 1.80 GHz, 2.10 GHz, 2.40 GHz
      available cpufreq governors: conservative, ondemand, userspace, powersave, performance
      current policy: frequency should be within 300 MHz and 2.40 GHz.
                      The governor "userspace" may decide which speed to use
                      within this range.
      current CPU frequency is 1.20 GHz.
      cpufreq stats: 300 MHz:49,28%, 600 MHz:0,00%, 900 MHz:0,00%, 1.20 GHz:25,20%, 1.50 GHz:0,00%, 1.80 GHz:0,00%, 2.10 GHz:0,00%, 2.40 GHz:25,52%  (170)

    En el caso de dar error, se puede deber a que no hemos cargado el módulo de control de la frecuencia adecuado. Habrá que volver a repetir el procesor hasta acertar.

    Como se puede apreciar en la salida del comando cpufreq-info devuelve:
    * La lista de las frecuencias que soporta el procesador y su uso (cpufreq stats).
    * La frecuencia de funcionamiento actual (current CPU frequency is 1.20 GHz).
    * El controlador actual (current policy).
    * Los controladores disponibles (available cpufreq governors). Por defecto lo más seguro que esté seleccionado “performance” (rendimiento máximo y máximo consumo de energía), pero también tenemos “ondemand” (aumenta la frecuencia delñ procesador al llegar al 90% de su carga), “conservative” (aumenta la frecuencia del procesador al llegar al 70% de su carga), “powersave” (mínima frecuencia de funcionamiento para ahorrar energía) y “userspace” (lo puede cambiar el usuario a placer).

    En nuestro caso, somos nosotros los que vamos a controlar la frecuencia del procesador, por lo que escribiremos:

    	
    	sudo cpufreq-set -g userspace

    Ahora se puede cambiar la frecuencia de funcionamiento usando:

    	
    	sudo cpufreq-set -f 900Mhz

    Por supuesto la frecuencia debe estar entre una de las frecuencias permitidas.

    Con lo anterior se puede cambiar la frecuencia del reloj manualmente. Ahora toca programar algo que la controle de forma automática.

    Es necesario conocer la carga de trabajo del procesador. Esta información se almacena en el archivo “/proc/stat”. Por ejemplo, si se teclea:

    	
    	cat /proc/stat

    Se obtiene una salida similar a:

    	
    	cpu  31974 0 16617 126061 4251 2 137 0 0 0

    ¿Qué significan estos números? Mide el número de jiffies (1/100 de un segundo) que el sistema ha estado en modo usuario (user, en este caso 31974), modo usuario con prioridad baja (nice, en este caso 0), modo del sistema (system, 16617) y tarea inactiva (idle, 126061) respectivamente. Nos interesan las tres primeras columnas. Por ejemplo:

    	
    	echo "CPU #0: $(egrep ^cpu0 /proc/stat | awk '{printf("%3.2f", 100*($2+$3+$4)/($2+$3+$4+$5))}')%"

    Devuelve en mi caso:

    	
    	CPU #0: 26.95%

    Estos son los datos de ocupación de la CPU número 0 desde que se encendió el ordenador. Interesan los datos actuales. Para obtener la carga actual del procesador, se hacen dos lecturas seguidas y se calcula la diferencia.

    Ahora toca programar. Está escrito en lenguaje C. Hay que guardar el siguiente texto en el archivo “freq-cpu.c”:

         1	#include <stdio.h>
         2	#include <stdlib.h>
         3	#include <unistd.h>
         4	
         5	// Usar cpufreq-info para conocer la lista de frecuencias soportadas
         6	
         7	void set_cpufreq(int state)
         8	{
         9		//printf("state=%d\n", state);
        10		switch(state)
        11		{
        12			case 0:
        13				system("cpufreq-set -f 300Mhz");
        14			break;
        15			case 5:
        16				system("cpufreq-set -f 1.2Ghz");
        17			break;
        18			case 6:
        19				system("cpufreq-set -f 2.4Ghz");
        20			break;
        21		}
        22	}
        23	
        24	int main(void)
        25	{
        26	    long double a[4],b[4],loadavg;
        27	    FILE *fp;
        28	    char dump[50];
        29	    int state = 10;
        30	
        31	    for(;;)
        32	    {
        33			fp = fopen("/proc/stat","r");
        34			fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&a[0],&a[1],&a[2],&a[3]);
        35			fclose(fp);
        36			if(state>0)
        37				sleep(1);
        38			else
        39				usleep(300000);
        40			fp = fopen("/proc/stat","r");
        41			fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&b[0],&b[1],&b[2],&b[3]);
        42			fclose(fp);
        43	
        44			loadavg = ((b[0]+b[1]+b[2]) - (a[0]+a[1]+a[2])) / ((b[0]+b[1]+b[2]+b[3]) - (a[0]+a[1]+a[2]+a[3]));
        45			loadavg*=100;
        46			//printf("The current CPU utilization is : %d\n",(int)loadavg);
        47			if(loadavg>80.0)
        48			{
        49				if(state==0)
        50				{
        51					set_cpufreq(5);
        52					state=5;
        53				}
        54				if(state<10)
        55				{
        56					state++;
        57					set_cpufreq(state);
        58				}
        59			}
        60			else if(loadavg<40.0)
        61			{
        62				if(state>0)
        63				{
        64					state--;
        65					set_cpufreq(state);
        66				}
        67			}
        68	
        69	    }
        70	
        71	    return(0);
        72	}

    En cada caso habrá que modificar las líneas 13, 16 y 19 para adaptar las frecuencias en el caso de menor rendimiento, rendimiento medio y mayor. Evidentemente cuantas más frecuencias se introduzcan, más rico será el comportamiento del controlador de frecuencias.

    Lo compilamos escribiendo:

    	
    	make freq-cpu

    Una vez compilado se debe ejecutar con:

    	
    	sudo ./freq-cpu

    Perfecto, ahora hará escalado de frecuencias de forma automática. Este controlador de frecuencias pone por defecto una frecuencia de 300 MHz, bajo rendimiento. En el caso de detectar la mínima actividad, la sube a 1.2 GHz ó a 2.4 GHz si la carga es muy alta.

    Una vez que se haya ajustado al comportamiento adecuado, para ello deberemos saber programar algo en C, se puede hacer que el programa se inicie de forma automática en cada inicio. Sólo hay que modificar el archivo “rc.local”:

    #!/bin/sh -e
    
    # Se activa el escalado automático de la frecuencia de reloj
    modprobe p4_clockmod    #Habrá que poner nuestro controlador
    cpufreq-set -g userspace
    /usr/local/bin/freq-cpu     #Ruta en la que está el ejecutable de nuestro controlador
    
    exit 0

    ¿Qué modificaciones se pueden hacer?

    Por ejemplo, se puede hacer que cuando se cargue un determinado programa, la frecuencia sube al máximo. Es decir, si ejecutamos nuestro juego favorito, la frecuencia deberá subir al máximo. Se pueden controlar los programas en ejecución con el comando “ps -A”.

    Hay portátiles, como el EeePC 701, en los que la frecuencia del procesador no está al máximo. Hay fabricantes que hacen esto para aumentar la duración de la batería. Se puede hacer que cuando la carga del procesador esté un determinado tiempo al 100 %, se haga un overclock durante unos segundos, de forma que el rendimiento sea mayor del habitual. ¡En el EeePC se puede llegar al 142 % del rendimiento habitual!

    En el caso del EeePC he llegado a tenerlo a alto rendimiento durante horas. La parte mala es que el equipo se calienta de forma inusual. Por ello que cada uno evalúe sus riesgos.


    Gorka Urrutia

    Gorka Urrutia
    Nideaderedes

    Escribir una imagen (iso) en una memoria SD en Linux

    Si tienes que grabar una imagen (por ejemplo de la Raspberri Pi) en una tarjeta SD o en USB no basta con copiarla directamente en la tarjeta, debemos usar un programa para volcado de imágenes iso.

    Uno que uso yo muy sencillito es USB-Imagewriter.

    Si no lo tenemos instalado basta con abrir una consola y teclear:

    sudo apt-get install usb-imagewriter

    Una vez instalado abrimos el programa con el siguiente comando:

    sudo imagewriter

    También podemos abrirlo a través del menú (suele estar en Aplicaciones->Imagewriter) .

    Imagewriter

    Imagewriter

    1) Seleccionamos la imagen con el desplegable junto a “Escribir imagen”.

    2) Seleccionamos el dispositivo USB o SD en el que la vamos a escribir pinchando en el desplegable junto a “a”.

    3) Click en “Escribir al dispositivo”.

    4) Esperar a que termine y listo.

    Jueves 11 de abril de 2013

    Moisés Maciá

    Moisés Maciá
    Dores Diaries

    Check your credit score!

    I recently checked my credit report for my hometown address in Manchester and found a company called Sigma red Ltd had added a default for a debt I don’t even owe!

    I tried speaking to them but didn’t get anywhere. I had to file a complaint to experian and get them to contact the company to even get a response, which was that I need to prove that I don’t owe the debt.

     

    How can I prove I don’t owe something?!

     

    Gah!! Absolute idiots. This has annoyed me so much. Anyone know how to deal with getting a default removed?

    Pedro L. Lucas

    Pedro L. Lucas
    Cartas de Linux

    OpenGL en equipos antiguos

    Parece ser que han retirado el soporte de hardware antiguo en Linux. Esto afectará de diferente manera a cada equipo. Por lo que cosas como el OpenGL pueden que no funcionen en tu viejo ordenador.

    La solución para el OpenGL pasa por hacer renderizado por software. Para ello se edita el el fichero .bashrc y se añade la siguiente línea:

    export LIBGL_ALWAYS_SOFTWARE=1

    Se reinicia la sesión y ya funciona el OpenGL, por software.

    En la página:

    http://www.mesa3d.org/envvars.html

    se pueden encontrar más variables de entorno con las que intentar mejorar el rendimiento de OpenGL.


    Martes 09 de abril de 2013

    David Santo Orcero

    David Santo Orcero
    Gestionando el Conocimiento

    Nuevo borrador de la ley de servicios profesionales

    Anteproyecto de ley de Servicios Profesionales Atentos a la disposición adicional segunda. La única ingeniería sin atribuciones, por ley, será la Ingeniería Informática. Se reconoce por ley la “excepcionalidad” de ser los únicos ingenieros sin atribuciones. Compártelo

    Lunes 08 de abril de 2013

    Pedro L. Lucas

    Pedro L. Lucas
    Cartas de Linux

    Editar ficheros PDF desde LibreOffice

    Con LibreOffice es posible crear un fichero PDF que pueda ser editado por toda persona que tenga LibreOffice. Evidentemente el fichero será leído sin problemas desde cualquier visor de PDF.

    También es interesante la capacidad de editar ficheros PDF de LibreOffice.

    Lo primero es tener instalada la extensión que permite editar PDF. Si has descargado e instalado LibreOffice desde la página oficial del proyecto, ya lo tendrás de serie. Si has instalado LibreOffice desde Linux, tendrás que instalar dicho complemento (pues no lo instala de serie):

    sudo apt-get install libreoffice-pdfimport

    Ahora para hacer los ficheros PDF editables desde LibreOffice, sólo hay que hacer clic en Archivo, seleccionar “Exportar en formato PDF…” y una vez allí marcar la opción “Incrustar archivo OpenDocument”:

    pdf-export

    Se generará un archivo PDF que al abrirlo con LibreOffice, podremos editar sin problemas.

    Como ejemplo, probad a abrir el siguiente fichero PDF: pdf-editable-libreoffice

    La extensión libreoffice-pdfimport permite editar cualquier PDF, pero no con la facilidad del procedimiento indicado en los párrafos anteriores.


    Viernes 05 de abril de 2013

    FORAT: Cambio de pantalla Samsung Galaxy Tab

    Jueves 04 de abril de 2013

    Ramón Miranda

    Ramón Miranda
    Ramon Miranda

    Muses! new Krita Training DVD from Krita Foundation

    Hi there!
    Good news!Finally i can talk about my next project:
    My first training DVD called: "Krita Training Vol2 : Muses"

    During the following 2 months:april and may I will be promoted and sponsored by the Krita foundation to make this DVD. So first of all thanks to the krita foundation and specially Boud for trust in me. I will do my best to present the final product on Akademy that is held this year in my city, Bilbao, in the Basque Country of northern Spain from the 13th to 19th of July.

    This DVD is specially designed to be useful for Digital Painters So if you are interested in digital painting this is your DVD!
    A very good way to learn how to create beautiful and evocative images from scratch to the final piece.
    if you want to learn how to paint faster and achieving professional results learning cool and useful tricks, then get your copy and pre-order the DVD from the www.krita.org site. or pressing the Banner that i have put on the right side.

    Getting your copy you are helping the Krita project, and make possible to hire more coders or more artist to create another type of contents for the Krita community.This way we can make improvements faster and everybody enjoy the results.
    There is also a discount for the pre-order.  isn´t it cool?


    Ramón Miranda

    Ramón Miranda
    Ramon Miranda

    Ramon Miranda goes LGM 2013 Prado MediaLab



    Finally i can say i will be there. I wasn´t sure to be available but finally i am. Well, what else can i say! LGM is coming. An amazing event where we can talk, develop and discover about knowledge. I was in last LGM and it was awesome. So i recommend it if you want to expand your boundaries and make social networking with very friendly people. So, if you go this year i will be here thanks to KDE EV  and LGRU that supports me.

    see you there!

    Lunes 01 de abril de 2013

    Gorka Urrutia

    Gorka Urrutia
    Nideaderedes

    Ejercicios de examen de C

    Otro de los proyectos que tengo en marcha (suma y sigue) es un libro con ejercicios de examen de C resueltos y comentados. Para hacerlo más completo necesito más ejercicios. Si quieres colaborar puedes enviarme alguno.

    ¿Qué ganas enviando un ejercicio de examen?

    • Si tu ejercicio se incluye en el libro tendrás una copia gratuita del libro.

    Condiciones:

    • No se trata de un servicio para solucionar problemas de examen.
    • No se admiten trabajos de clase, proyectos, ni similares, sólo ejercicios de examen.

    Para colaborar rellena este formulario:

    [contact-form]

    Miércoles 27 de marzo de 2013

    Marcelo Fortino

    Sharing

    Sharing bookSharing: Culture and the Economy in the Internet Age: Un interesante libro sobre compartir en la era de la colaboración en Internet. Escrito por Philippe Aigrain, co-foundador de La Quadrature du Net se puede comprar, descargar o leer la versión online

    Martes 26 de marzo de 2013

    Maribel Salas

    Elimina fácilmente los kernels antiguos en Sabayon linux

    logosabayon En estos días atrás, cuando por fin he podido montar mi equipo me he dedicado a poner al día mis distribuciones linux.

    Entre estas distros que conviven en mi disco duro se encuentra Sabayon linux que en mi período de ausencia alcanzó su versión 11.

    Al ser una distro rolling-release no es necesario instalar desde cero, pero tiene una particularidad con respecto a otras distribuciones y es que el kernel no se actualiza automáticamente, sino de manera expresa.

    En un post anterior ya hablé de como realizar esta acción fácilmente con la utilidad kernel-switcher, hoy os voy a hablar de eclean-kernel que sirve para eliminar aquellos kernels antiguos o que ya no utilizamos y así ganar espacio en nuestro disco duro.

    Para saber que kernels tenemos instalados podemos hacer:

    usuario$ eselect kernel list

    Y nos arrojará un resultado parecido a esto:

    usuario$
    [1] linux-3.6.0-sabayon
    [2] linux-3.7.0-sabayon
    [3] linux-3.8.0-sabayon *

    La orden a ejecutar sería:

    root# eclean-kernel -n 3

    Lo que mantendría los 3 kernels anteriores más recientes que hayamos instalados y borraría los otros, en mi caso una vez comprobado todo correctamente suelo dejar los dos últimos o a veces sólo 1, eso ya depende de cada uno.

    Os aconsejo utilizarlo primero con la opción -p , que nos muestra lo que se va a borrar sin hacer nada:

    root# eclean-kernel -n 1 -p

    Y una vez comprobado ya sí ejecutar el comando:

    root# eclean-kernel -n 1

    O:

    root# eclean-kernel -n 1 -A

    que pide confirmación de lo que se va a eliminar.

    Podéis ver más opciones con:

    usuario$ eclean-kernel --help

    Más información en la página del creador
    Fuente: Wiki de Gentoo

    Alvaro Lopez Ortega

    Alvaro Lopez Ortega
    Alvaro's blog

    GNU MAC Changer 1.6.0 released

    It's been a long time since the last GNU MAC Changer release I published (8 years, 10 months, and 16 days ago to be precise), so most likely this new version will come as a surprise for most of you. What can I say in my defense? I guess I've been kinda busy lately :)

    So, the main changes in this new release are:
     
    • Update: Updated the MAC/vendors list: Added +10800 new entries
    • Feature: Handling of the "BIA (burned-in-address) / locally-administered" bit
    • Feature: Original MAC addresses can be restored now
    • Bugfix: Random MAC addresses generation improvements
    • Bugfix: Error code wasn't always correct
    • Bugfix: Documentation fixes
     
    Oh, by the way, the project's source code repository is located at GitHub now: https://github.com/alobbs/macchanger

    Alvaro Lopez Ortega

    Alvaro Lopez Ortega
    Alvaro's blog

    GNU MAC Changer 1.6.0

    It's been a long time since the last GNU MAC Changer release I published (8 years, 10 months, and 16 days ago to be precise), so most likely this new version will come as a surprise for most of you. What can I say in my defense? I guess I've been kinda busy lately :)

    So, the main changes in this new release are:
     
    • Update: Updated the MAC/vendors list: Added +10800 new entries
    • Feature: Handling of the "BIA (burned-in-address) / locally-administered" bit
    • Feature: Original MAC addresses can be restored now
    • Bugfix: Random MAC addresses generation improvements
    • Bugfix: Error code wasn't always correct
    • Bugfix: Documentation fixes
     
    Oh, by the way, the project's source code repository is located at GitHub now: https://github.com/alobbs/macchanger

    Lunes 25 de marzo de 2013

    Maribel Salas

    Mostrar solo los paquetes actualizables en Debian, aptitude search

    Hola a todos y ante todo disculpas por la tardanza en reincorporarme de nuevo al blog y gracias a los que todavía seguís por aquí :-)

    Hoy os traigo un mini-tip que quizás muchos ya conozcáis y uséis habitualmente.

    Cuando queremos saber que actualizaciones hay disponibles en nuestro sistema podemos saberlo bien a través de Synaptic – Instalados (actualizables) o desde la consola con aptitude, ejecutándolo podemos ver el menú paquetes actualizables.

    Yo normalmente utilizo aptitude safe-upgrade, donde te muestra los paquetes que se van a actualizar y después la pregunta de si queremos continuar o no. Obviamente si en ese momento no nos interesa actualizar podemos responder que no, pero si queremos evitar esa pregunta y hacerlo mucho más simple podemos ejecutar:

    root# aptitude search ~U

    De esta manera obtendremos solamente un listado de los paquetes que tienen actualizaciones disponibles.

    Fuente: Debian-Facile

    Sábado 23 de marzo de 2013

    David González

    David González
    El blog de pico.dev

    Guía instalación Raspberry Pi con Arch Linux ARM (Parte II, programas)

    Raspberry Pi
    Nota: la última actualización de esta guía fue el 19-01-2013. Al ser Arch Linux una distribución rolling release puede que cuando la leas algunas cosas hayan cambiado aunque la mayoría seguirán siendo como esta escrito a continuación.

    Después de la instalación base de Arch Linux ARM para la Raspberry Pi a partir de la Guía instalación Raspberry Pi con Arch Linux ARM (Parte I, instalación base) toca añadirle los programas que nos proporcionarán la funcionalidad que queramos. Desde luego la capacidad de la Raspberry es limitada y no podremos instalarle todo lo que deseemos, principalmente por la cantidad de memoria que tiene (256 MiB), por la velocidad de lectura desde la tarjeta SDHC que en determinados momentos es el mayor limitante notándose que se ahoga y porque el procesador no tiene la capacidad ni se puede comparar con un Intel o AMD de los que podemos encontrar estos días. Por ello, la Raspberry no será un sustituto de nuestro ordenador de escritorio o portátil aunque dicho esto hay ciertas tareas que puede cumplir a la perfección con capacidad más que suficiente.
    Arch Linux ARM

    Si necesitamos algo más potente podemos optar por una CuBox o una Pandaboard ES que ambas tienen 1 GiB de memoria y un procesador dual core algo más potente que el de la Raspberry, desde luego ambas funcionarán bastante mejor al ejecutar un entorno gráfico aunque probablemente tampoco sean sustitutos para reemplazar nuestro ordenador de escritorio. El punto fuerte de la Raspberry comparadas con la CuBox o la Pandaboard es su precio, de unos 45€ con gastos de envío a España, contra 99€ y 182$ sin gastos de envío respectivamente.

    Volviendo a la guía, seguidamente explicaré algunas de las tareas para las que sí podemos usar la Raspberry.

    Programas y servicios

    Las siguientes aplicaciones de muestra son solo una idea de lo que podemos instalar. Además de las anteriores o mencionando algunas de ellas una lista no exhaustiva podría ser la siguiente:
    • Asignar dirección IP fija
    • P2P torrent (transmision-cli)
    • ftp (vsftp)
    • Servidor web (lighttpd)
    • firewall (ufw)
    • PHP
    • Git
    • Sistemas de archivos NTFS, FAT
    • Sonido (cmus)
    • SSH (certificados)
    • SSH y screen
    Otras:
    • email (mutt)
    • música (cmus)
    Veremos algunas de estas a continuación y la configuración del router que tendremos que hacer. Si quieres instalar todo lo que se comenta en esta quía puedes hacerlo con:


    Asignar dirección IP fija

    De la lista anterior de aplicaciones algunas de ellas son programas que actuan de servidor. Dado que para conectarnos a un servidor necesitamos conocer la dirección IP en la que se encuentra deberemos asignar a la Raspberry una dirección IP fija en vez de dejar al DHCP del router que le asigne una y que pueda cambiar entre diferentes sesiones, reinicios o al cabo de un tiempo. Para tener una dirección IP fija deberemos crear un servicio de systemd que al iniciarse el sistema se le asigne la que deseamos. Para asignar la dirección IP estática debemos crear el archivo /etc/conf.d/network de configuración donde indicaremos varias propiedades de la red entre ellas la dirección IP:

    Y el archivo del servicio de systemd /etc/systemd/system/network.service que se ejecutará cuando se inicie el sistema y realizará las operaciones necesarias para configurar la red:

    En address pondremos la dirección IP que queramos dentro de nuestra red y fuera del rango de direcciones IP que asigna el router. Finalmente debemos habilitar e iniciar el servicio network que acabamos de crear.


    También deberemos modificar los archivos /etc/dhcpcd.conf y /etc/resolv.conf para que los nombres de los dominios se resuelvan a sus direcciones IP, si al hacer «ping www.google.es» obtenemos un mensaje como «ping: unknown host www.google.es» es que nos falta modificar alguno de estos archivos, poniendo la dirección IP de nuestro router probablemente nos sea suficiente sino podemos usar un servidor de nombre en internet como los que ofrece google:



    P2P torrent

    tranmision es uno de los programas más populares para realizar descargas P2P mediante torrent. Aparte de a través de la interfaz gráfica puede ser usado desde la linea de comandos y como esto nos es necesario para la Raspberry será el que veremos a continuación. Empezaremos instalando su paquete transmission-cli.

    Para poder ejecutarlo como demonio y con un usuario específico debemos seguir los pasos indicados en la wiki de arch linux sobre transmission para el caso de usar systemd.

    Siguiendo los pasos de la wiki deberemos hacer las siguientes cosas:
    • Modificar los archivos /usr/lib/systemd/system/transmission.service y /usr/lib/tmpfiles.d/transmission.conf con el usuario con el que queramos que se ejecute transmission.
    • Copiarlos en cada caso a un subdirectorio de /etc.
    • Modificar el propietario y grupo del directorio /run/transmission según el usuario que vaya a iniciar el servicio configurado en transmission.service y transmission.conf.
    • Iniciar el servicio con transmission-daemon y pararlo para que se cree el archivo de configuración.
    • Editarlo para activar la interfaz rpc y el directorio de descargas.
    • Iniciar el servicio con tranmission a través de systemd.
    El directorio de descargas incompletas (incomplete-dir), el usuario (rpc-username) y password (rpc-password) para la interfaz remota web (la password la indicaremos en texto plano una vez iniciemos transmision él detectará que está en texto plano y creará un hash de ella para mayor seguridad), si deseamos autenticación en la interfaz remota (rpc-authentication-required) y si queremos un directorio donde transmission buscará archivos torrents para iniciar descargas de forma automática cuando encuentre uno (watch-dir, watch-dir-enabled). En rpc-whitelist deberemos indicar la red local a la que estamos conectados, por ejemplo, 192.168.2.*.


    Una vez realizados estos pasos podemos iniciar el demonio de transmission y acceder a su interfaz web con el navegador de nuestro ordenador de escritorio o portatil en la dirección http://[ip-raspberrypi]:9091.

    Mediante esta interfaz web podremos modificar algunas propiedades adicionales como los limites de velocidad tanto de bajada como de subida incluso en un horario determinado. Finalmente, mediante esta interfaz web nos aseguraremos en la pestaña Preferences > Network de que tenemos el puerto usado por transmission en estado abierto y accesible desde internet, esto nos será necesario para descargar al máximo de velocidad que dispongamos. Si no lo tenemos tendremos que modificar la configuración del router (lo veremos más adelante en la configuración del router).


    FTP

    FTP (File Transfer Protocol) es un protocolo para la trasnferencia de archivos entre dos máquinas y puede que nos sea de utilidad para mover archivos entre el sistema que usemos y la raspberry. Por ejemplo, si queremos copiar los archivos descargados por transmission a nuestra máquina podemos extraer la tarjeta de memoria de la raspberry insertarla en nuestro equipo y copiar los archivos, otra forma es instalar un servidor ftp en la raspberry y realizar el copiado mediante el protocolo FTP. La primera opción es más rápida (a 10 MiB/s) pero la segunda es más cómoda (a 2 MiB/s con una tarjeta clase 10) ya que no tendremos que apagar la raspberry y mover la tarjeta SD de un sistema a otro. También nos puede ser útil si queremos dejar en la Raspberry un archivo php.

    Si optamos por la segunda opción podemos utilizar Very Secure FTP que ocupa muy poco y no tiene ninguna dependencia, su paquete es vsftd:

    Una vez instalado debemos habilitar el servicio e iniciarlo:


    Editamos también el archivo de configuración /etc/vsftpd.conf, hay un montón de propiedades pero las básicas que nos interesará modificar son anonymous_enable para permitir o no autenticación anónima, local_enable para permitir iniciar sesión con los usuarios de la raspberry y write_enable para permitir realizar operaciones de escritura como subir o eliminar archivos.

    Ya en el ordenador con el que trabajemos deberemos instalar un cliente FTP para realizar las transferencias desde y a la raspberry, podemos utilizar uno de los más conocidos, filezilla.

    Para conectarnos en el sitio indicaremos como protocolo SFTP, modo de acceso normal y el nombre de usuario y password de un usuario de la raspberry.

    http://welcome.filezilla-project.org/welcome?type=client&category=documentation_basic&version=3.5.3
    http://welcome.filezilla-project.org/welcome?type=client&category=documentation_network&version=3.5.3
    http://wiki.filezilla-project.org/Documentation

    Servidor web

    Aunque la raspberry sea pequeña y no parezca muy indicada para actuar como servidor tiene algún punto que la hace especialmente adecuado para ello como es que tiene un consumo muy bajo, ridículo (3 watios) para un servidor mucho más potente (200 watios o más), ocupa también un espacio ridículo en comparación con un servidor más potente, tampoco necesita una refrigeración especial. Al menos para un uso personal o un entorno para un equipo de desarrollo puede ser más que suficiente.

    Una muy buena opción es lighttpd, es un servidor de nueva generación de los llamados ligeros que le están ganando terreno a apache, con trasnferencias asíncronas, que ocupa apenas 1 MiB, con muy pocas dependencias. Su paquete es lighttpd. El document root por defecto está en /srv/http donde han de estar alojados los archivos que va a servir.

    Me gusta más cherokee, no porque sea mejor ni peor sino porque es un proyecto liderado por un español, Álvaro López Ortega, cosa rara por estos sitios, sin embargo, en la raspberry su consola de administración tiene un funcionamiento pobre llegando a no ser usable, esto unido a que sus archivos de configuración son bastante crípticos para editarlos con un editor de texto la opción que recomiendo es lighttpd. Otra opción sería nginx.

    Al igual que con vsftpd debemos habilitar el servicio e iniciarlo.



    Acceso desde internet con FreeDNS

    Llegados a este punto podemos disponer de un servidor web sin embargo para que sea accesible desde internet necesitamos aún un pieza fundamental en el funcionamiento de la web, un nombre de dominio nos proporcionará un identificador para nuestro servidor que no cambiará con el tiempo aunque la IP pública de nuestro router que nuestro proveedor de servicios de internet (ISP) nos asigna lo haga.

    Un opción gratuita es utilizar FeeDSN que nos permitirá obtener un subdominio de ciertos dominios públicos como mooo.com. Necesitaremos crearnos una cuenta en FreeDNS y crear un subdominio. Una vez lo tengamos se nos presenta el problema de como actualizar en FreeDNS nuestra IP pública cada vez que nuestro ISP nos de una distinta. Para ello una opción sencilla es crearnos un script que con cron se ejecute cada cierto tiempo.


    Primeramente necesitaremos una serie de utilidades que están contenidas en el paquete dnsutils.

    Luego el script con un contenido similar al siguiente cambiando el API_KEY que nos asigne FreeDNS para el dominio:



    Le cambiamos de permisos al archivo y añadimos la expresión cron con crontab:

    Añadiendo el siguiente contenido para ejecutar el script cada 5 minutos:


    En el archivo /var/log/crond.log podemos ver las ejecuciones y resultados del script.

    http://freedns.afraid.org/dynamic/index.php
    https://wiki.archlinux.org/index.php/Cron

    Configuración router

    Para hacer que nuestra RPi sea accesible desde internet tendremos que modificar alguna configuración del router como abrir puertos para que el router redirija el tráfico que le llega a un puerto a una determinada direccion IP y puerto de nuestra red. Esto nos será útil principalmente para el caso del servidor web (puerto 80), de transmission (puerto 51413) u otro servidor que queramos que sea accessible desde internet.

    Como comentaba en la asignación de IP estática primero comprobaremos el rango de direcciones IP que asigna el servidor DHCP del router y que la dirección IP estática que hemos asignado a la RPi está fuera de ese rango.

    Posteriormente abrimos los puertos, las opciones serán diferentes para cada modelo de router pero similares.

    Firewall

    A pesar de que el router ya hará de firewall podemos utilizar ufw en la propia RPi.



    Sistemas de archivos NTFS, FAT

    Puede que necesitemos instalar el soporte para acceder a sistemas de archivos con formato NTFS (que es el utilizado por windows) o FAT. Tan solo necesitaremos instalar los siguientes paquetes ntfs-3g, ntfsprogs y dosfstools.

    Para realizar el montaje manualmente ejecutaremos el siguiente comando, donde /mnt es la carpeta donde queremos montar el sistema de archivos de la partición de un disco o memoria USB externos:

    Si queremos que este montaje se realice de forma automática nada más conectar el cable USB a la RPi instalaremos el paquete udev-automount, que realizará el montaje en la carpeta /media.

    PHP

    Para instalar PHP basta con instalar los paquetes php php-cgi. Para comprobar que se han instalado correctamente podemos ejecutar:

    Ahora nos quedaría integrar el soporte en el servidor web para que sea capaz de procesar los archivos php. La configuración varía en cada servidor web. Aquí explicare como configurarlo con ligthttpd. Para ello deberemos editar el archivo /etc/lighttpd/lighttpd.conf e incluir al final las siguientes lineas:

    Ahora deberemos crear el archivo /etc/lighttpd/fastcgi.conf (y el directorio donde está) e incluir en él el siguiente contenido:


    Sonido

    Primero añadimos nuestro usuario al grupo de audio para reproducir sonidos, cargamos el módulo del sonido y reproducimos un sonido de prueba:

    Si no queremos cargar el módulo manualmente cada vez que queramos reproducir sonido se puede cargar el módulo automáticamente cuando se inicie la Raspberry Pi con:

    Y añadiendo a ese archivo el módulo que queremos cargar (snd-bcm2835).

    Habiendo cargado el módulo snd_bcm2835 con cmus podemos reproducir mp3, ogg entre otros formatos instalando varios paquetes que son: alsa-firmware alsa-lib alsa-plugins alsa-utils cmus pulseaudio libmad libvorbis.

    Una cosa que tenemos que tener en cuenta es la salida por la que se emitirá el sonido, por la salida HDMI o por el jack 3.5mm, si no oímos ningún sonido puede que necesitemos cambiar la salida a la que estemos utilizando: Podemos hacerlo con:

    Después de instalar los paquetes anteriores puede que necesitemos reiniciar. Podemos probar el sonido con aplay.

    Y después cmus:

    Si estás interesado en escuchar música con la Raspberry puedes consultar la entrada 4 formas de escuchar música a través de internet en la que se indican varias maneras de hacerlo.

    SSH con certificados

    El usar SSH puede resultar incómodo ya que hay que estar constantemente introduciendo la clave, para evitarlo en otra entrada explicaré como usar SSH con una clave pública y privada para realizar la autenticación ya que es algo que seguramente sea igual para la RPi o para cualquier otro sistema.

    La Raspberry con llos siguientes programas nos puede ofrecer muchas funcionalidades pero tampoco hay que esperar una capacidad igual al de un ordenador de escritorio. En las pruebas que he realizado la velocidad de transferencia que he conseguido desde la tarjeta SD y desde un disco duro externo conectado por USB a la RPi ha sido de tan solo ¡2 MiB/s!.

    Utilidad de screen

    Si la conexión ssh se cierra todos los programas que se iniciaron en ella se terminan con lo que si estabamos reproduciendo múscica con cmus, cmus se terminará y dejaremos de escuchar música. Para evitarlo podemos usar screen.

    Referencia:
    Raspberry Pi, desempaquetado («unboxing»)
    Raspberry Pi, Guía instalación (Parte I) Instalación base
    Dejar procesos vivos de conexión SSH con screen

    Jueves 21 de marzo de 2013

    BlogDRAKE: Junta de Mageia 2013

    Lunes 18 de marzo de 2013

    Ramphis Che

    Ramphis Che
    PuntoLibre

    Instalación y Configuración de TACACS+ en Linux


    Saludos estimados lectores, como el titulo de el articulo define esta guia tiene como objetivo principal mostrarles como instalar un servidor TACACS+ en Linux, como tambien mostrarles como configurar equipos cisco para que trabajen con TACACS+.

    Las soluciones de control de acceso mas destacadas son RADIUS y TACACS+, ambas pueden soluciones usarse para manejar la autenticación en equipos cisco, pero para equipos cisco es muy recomendable el uso de TACACS+ sobre RADIUS, ya que este fue diseñado para adaptarse a las nuevas tecnologias en seguridad, complementando la arquitectura independiente de autenticar, autorizar y contabilizar (AAA).

    Entre las diferencias que podemos encontrar al comparar RADIUS con TACACS+ podemos mencionar que:

    1) TACACS+ utiliza TCP mientras RADIUS utiliza UDP.

    2) RADIUS encripta solamente las contraseñas en el paquete de respuesta al acceso, TACACS+ encripta el cuerpo completo del paquete.

    3) RADIUS combina autenticación y autorización, mientras TACACS+ utiliza la arquitectura AAA, permitiendo separar la autenticación, la autorización y la contabilidad.

    4) RADIUS no permite al usuario el control de los comandos que pueden ser ejecutados, en cambio TACACS+ si lo permite.

    Segun la wikipedia TACACS+ es un protocolo de autenticación remota que se usa para gestionar el acceso (proporciona servicios separados de autenticación, autorización y registro) a servidores y dispositivos de comunicaciones.

    TACACS+ está basado en TACACS, pero, a pesar de su nombre, es un protocolo completamente nuevo e incompatible con las versiones anteriores de TACACS.




    Instalación de Tacacs+ en Centos:

    Lo primero que tenemos que hacer es buscar el paquete de instalación de TACACS+ para nuestra respectiva distribución, al momento de crear esta guia todos los enlaces que verifique para descargar el paquete de TACACS+ y asi mostrarles como instalarlo de una forma generica estaban abajo, por lo tanto mientras consigo el paquete veran como lo instale en Centos.

    Pueden descargar el paquete RPM desde AQUI.

    Luego ejecutamos el comando siguiente para su instalación:

    [root@puntolibre] # yum localinstall tac_plus-4.0.3-2.i386.rpm

    El Daemon se instalara con el nombre tacacs, por lo tanto para iniciar, parar o reiniciar el servicio bastaria con:

    Iniciar:  /etc/init.d/tacacs start
    Parar: /etc/init.d/tacacs stop
    Reiniciar: /etc/init.d/tacacs restart

    Teniendo esto en cuenta, procedamos con la configuración: el archivo donde vamos a configurar todo es /etc/tacacs/tac_plus.cfg, procedemos a editarlo con nuestro editor preferido:


    [root@puntolibre] # vim /etc/tacacs/tac_plus.cfg

    Para nuestro ejemplo de configuración vamos a crear dos grupos, uno administrativo que tendra acceso a todos los equipos, y estara compuesto por 2 integrantes, y el grupo limitado, el cual estara compuesto por 2 integrantes más.

    El archivo por defecto se veria de la siguiente manera:


    # Created by Devrim SERAL(devrim@tef.gazi.edu.tr)
    # It's very simple configuration file
    # Please read user_guide and tacacs+ FAQ to more information to do more
    # complex tacacs+ configuration files.
    #
    # Put your NAS key below
    key = CLAVE
    #
    # Use /etc/passwd.loc file to do authentication
    # it's must be in passwd file format. So you must mix shadow-passwd files to do it
    #
    default authentication = file /etc/passwd.loc
    #
    # Where is the accounting records to go
    #
    accounting file = /var/log/tacacs.log
    #
    # Permit all authorization request
    default authorization = permit

    Para nuestro ejemplo solo bastaria con modificar la llave, la cual se le pondra tambien a los routers mas adelante.

    Luego que vamos a definir es el grupo administrativo, y lo haremos de la siguiente manera:


    group = administrators {
    default service = permit
    }

    Como podemos ver le especificamos que tenga acceso a todos los servicios, luego definimos el grupo limitado, el cual solo tendra acceso a los comandos que especifiquemos:

    group = limited {
    default service = deny
    cmd = show {
    permit ip
    permit interface
    deny .*
    }
    cmd = enable {
    permit .*
    }
    cmd = exit {
    permit .*
    }
    }

    Como podemos ver le especificamos que el grupo limited, solo tendra acceso a ejecutar el comando enable, exit, show interface y show ip, cualquier otro comando no podra ser ejecutado.

    Luego procedemos a definir los usuarios:

    user = ramphische {
    login = cleartext contraseña1
    member = administrator
    }

    user =  fernandoperez {
    login = cleartext contraseña2
    member = administrator
    }

    user = superman {
    login = cleartext contraseña3
    member = limited
    }

    user = batman {
    login = cleartext contraseña4
    member = limited
    }

    Tambien definimos la contraseña de el modo privilegiado de la siguiente manera:

    user = $enable$ {
    login = cleartext contraseña5
    }

    Finalmente queda el fichero de configuración de la siguiente manera:

    # Created by Devrim SERAL(devrim@tef.gazi.edu.tr)
    # It's very simple configuration file
    # Please read user_guide and tacacs+ FAQ to more information to do more
    # complex tacacs+ configuration files.
    #
    # Put your NAS key below
    key = CLAVE
    #
    # Use /etc/passwd.loc file to do authentication
    # it's must be in passwd file format. So you must mix shadow-passwd files to do it
    #
    default authentication = file /etc/passwd.loc
    #
    # Where is the accounting records to go
    #
    accounting file = /var/log/tacacs.log
    #
    # Permit all authorization request
    default authorization = permit


    group = administrators {
    default service = permit
    }

    group = limited {
    default service = deny
    cmd = show {
    permit ip
    permit interface
    deny .*
    }
    cmd = enable {
    permit .*
    }
    cmd = exit {
    permit .*
    }
    }

    user = ramphische {
    login = cleartext contrasena1
    member = administrator
    }

    user =  fernandoperez {
    login = cleartext contrasena2
    member = administrator
    }

    user = superman {
    login = cleartext contrasena3
    member = limited
    }

    user = batman {
    login = cleartext contrasena4
    member = limited
    }


    user = $enable$ {

    login = cleartext contrasena5

    }


    Guardamos nuestro fichero y reiniciamos el servicio tacacs:

    [root@puntolibre] # /etc/init.d/tacacs restart

    Configuración de un Router Cisco para que trabaje con TACACS+

    Lo primero que tenemos que hacer es especificarle al Router que utilice la arquitectura AAA:

    Router(config)# aaa new-model

    Especificamos el servidor TACACS+ y la llave anteriormente definida:


    Router(config)# tacacs-server host 192.168.1.100
    Router(config)# tacacs-server key CLAVE

    Creamos el usuario local que podra acceder al equipo cuando el TACACS+ no este disponible, y de la misma forma la contraseña de enable, la cual tambien solo funcionara cuando el TACACS no este disponible:


    Router(config)# username puntolibre password contrasena1

    Router(config)# enable secret contrasena2



    Creamos un metodo de autenticación llamado access1 (Puede ser cualquier otro nombre) el cual especifique que primero autentique contra el TACACS+ Server y en caso de que este no este disponible que autentique de manera local.


    Router(config)# aaa authentification login access1 group tacacs+ local

    Luego especificamos que para la contraseña enable tambien autentique contra el TACACS+ Server, y en caso de este no estar disponible que utilice la configurada para el modo privilegiado a nivel local.


    Router(config)# aaa authentification enable default group tacacs+ enable

    Luego habilitamos la autorización para los comandos de configuración y para el modo consola, y especificamos que para los privileges level 1 y 15 funcionara la autorización bajo el control de TACACS+ y que en caso de que este no este disponible que permita cualquier comando:


    Router(config)# aaa authorization console
    Router(config)# aaa authorization config-commands
    Router(config)# aaa authorization commands 1 default group tacacs+ none
    Router(config)# aaa authorization commands 15 default group tacacs+ none

    Para completar el proceso vamos a configurar las lineas de consola y virtuales de manera tal que utilicen el TACACS+ Server:


    Router(config)# line con 0
    Router(config-line)# login authentication access1


    Router(config)# line vty 0 4
    Router(config-line)# login authentication access1


    Finalmente guardamos nuestra configuración y ya tendremos el equipo listo para autenticar contra TACACS+, cualquier duda o inconveniente pueden comunicarse conmigo y les ayudare tan pronto pueda!
    Ramphis Che

    Ramphis Che
    PuntoLibre

    Asterisk: Configuración del VoiceMail

    Algo elemental en Asterisk y en cualquier central telefónica es la configuración de un correo de voz, por tal razón escribo esta pequeña guia que pretende ayudarte en el proceso de configuración de este con Asterisk.

    El archivo principal para la configuración del correo de voz es voicemail.conf, podemos encontrar una configuración de ejemplo en la fuente de Asterisk, o podemos crear uno desde cero, como en este caso.

    De ejemplo tenemos ya configuradas dos extensiones SIP, 1001 y 1002. Creamos nuestro archivo voicemail.conf en el directorio raiz de Asterisk (Normalmente /etc/asterisk), y vamos agregándole los siguientes parámetros:


    ==================Fichero voicemail.conf===================

    [general]
    ;Formato en el cual se grabaran los mensajes
    format=gsm|wav 
    ;Remitente del correo que nos llegara con la notificación de que tenemos un voicemail
    serveremail=asterisk@punto-libre.org   
    ;Nombre del remitente del correo que nos llegara
    fromstring=Asterisk
    ;Activamos que nos mande el voicemail junto con la notificación
    attach=yes   
    ;Formato en el cual se enviaran los voicemail por correo
    attachfmt=gsm
    ;Numero de mensajes maximos que se almacenaran por casilla
    maxmsg=50   
    ;Numero de segundos que durará cada mensaje
    maxsecs=180  
    ;Numero de segundos que podra durar el mensaje personalizado de bienvenida
    maxgreet=100 
    ;Numero de milisegundos (1000ms=1segundo) que se podra adelantar un mensaje
    skipms=5000
    ;Numero Maximo de silencio que se podrá durar antes de que termine la grabación 
    maxsilence=5
    ;Parametro que determina lo que se considera ruido, mientras mas bajo... mas sencible
    silencethreshold=120
    ;Numero maximo de veces que podremos intentar un logueo
    maxlogins=3
    ;Mover automaticamente los mensajes oídos a la carpeta de mensajes viejos
    moveheard=yes
    ;Contexto de Voicemail por defecto para los usuarios
    userscontext=default
    ;Permite que se pueda mandar un Voicemail desde el VoicemailMain
    sendvoicemail=yes


    ;Declaramos un Contexto de Voicemail
    [PuntoLibreVmail)

    ;Declaramos las casillas del contexto
    ;Sintaxis:   Extension => Contraseñá, Nombre, Correo, Opciones 

    1001 => 1001, Ramphis Che, rche@prueba.net
    1002 => 1002, Wilfredo Che, wche@prueba.net



    ==================Fichero voicemail.conf===================

    Luego procedemos a editar el archivo sip.conf, y le ponemos a cada usuario el contexto de voicemail a usar y el idioma, por ejemplo:

    ==================Fichero sip.conf=======================

    [1001]
    type=friend
    host=dynamic
    username=1001
    secret=1001
    voicemail=PuntoLibreVmail
    language=es
    context=internal
    dtmfmode=auto

    [1002]
    type=friend
    host=dynamic
    username=1002
    secret=1002
    voicemail=PuntoLibreVmail
    language=es
    context=internal

    dtmfmode=auto

    ===================Fichero sip.conf======================

    Luego editamos nuestro plan de marcado, editando el archivo extensions.conf de la siguiente manera:

    ==================Fichero extensions.conf===================

    [internal]

    exten => _10XX,1,Dial(SIP/${EXTEN},10)
    exten => _10XX,n,Voicemail(${EXTEN}@voicemail)
    include => voicemail

    [voicemail]
    exten => *99,1,Answer()
    exten => *99,n,VoiceMailMain(${CALLERID(num)}@voicemail)
    exten => *99,n,Hangup()


    ==================Fichero extensions.conf===================

    De esta manera cuando se marque una extensión, esta va a timbrar por 10 segundos, y luego le pedira que deje un mensaje, y al marcar *99 se podrá entrar a el correo de voz, y le pedirá solamente la contraseña (Ya que se especifica el usuario automáticamente al poner la variable ${CALLERID(num)}).

    Finalmente reiniciamos Asterisk y solo faltaría probar:

    # service asterisk restart






    Sábado 16 de marzo de 2013

    BlogDRAKE: Video de Mageia 3 Beta 3

    Viernes 08 de marzo de 2013

    FORAT: enInternet.es las noticias de La Red Primeros Premios

    Jueves 07 de marzo de 2013

    Abraham Covelo

    Abraham Covelo
    Novanebula blog

    SPHINX, motor para la creación de buscadores de texto

    Sphinx es un motor para la búsqueda de textos open source (licencia GPLv2). Está desarrollado en C++ lo que lo diferencia claramente de su competidor Lucene que está desarrollado en java. El nombre Sphinx es un acrónimo inglés que significa SQL Phrase Index (índice de frase de SQL).

    Sphinx es un paquete de software independiente que proporciona búsquedas en textos rápidas y relevantes. Como su nombre índica ha sido especialmente diseñado para integrar información almacenada en bases de datos SQL, y para ser fácilmente accesible por lenguajes de script (guión). Sin embargo, Sphinx no depende o requiere de ninguna base de datos específica para su funcionamiento y puede emplear otras fuentes de datos, como por ejemplo XMLs.

    Las aplicaciones pueden acceder al servicio de búsqueda (llamado searchd) usando diversos métodos: API nativa (SphinxAPI), una implementación propia del protocolo de red de MySQL (empleando un subconjunto de instrucciones mySQL llamadas SphinxQL) o mediante un servidor MySQL empleando su propio motor de almacenamiento (SphinxSE)

    Existe implementaciones nativas oficiales para PHP, Perl, Ruby y Java que están incluidos en el paquete de distribución pero ha sido portado a más lenguajes (Perl, C#, Haskell, Ruby-on-Rails, ...etc).

    Sphinx soporta de manera nativa información procedente de MySQL, PostgreSQL y XML



    Miércoles 06 de marzo de 2013

    Ramphis Che

    Ramphis Che
    PuntoLibre

    Instalar VirtualBox en Fedora 18

    Para la instalación del famoso VirtualBox en nuestra querida distribución Fedora (Spherical Cow al momento de esta guía) primero vamos a tener que instalar las dependencias necesarias, y esto lo podemos lograr con el siguiente comandito:

    [root@punto-libre]#  yum -y install kernel-headers dkms gcc

    Luego instalamos los repositorios de VirtualBox para Fedora, en donde tendremos todos los paquetes necesarios para instalar correctamente VirtualBox, con el siguiente comando instalamos el repositorio:

    [root@punto-libre]#  cd /etc/yum.repos.d/ ; wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo

    Luego procedemos con la instalación de VirtualBox:

    [root@punto-libre]# yum -y install VirtualBox

    Luego instalamos el modulo para poder ejecutar VirtualBox:

    [root@punto-libre]# /etc/init.d/dkms_autoinstaller start

    Ahora vamos a descargar un conjunto de extensiones de VirtualBox que nos permitiran el soporte para dispositivos USB 2.0, Virtualbox RDP y PXE para tarjetas intel, descargamos el conjunto de extensiones desde este ENLACE.

    Luego para instalarlo, abrimos Virtualbox, vamos a el menu Archivo > Preferencias, y luego vamos a extensiones, le damos al icono con el triangulo naranja y ubicamos el archivo que descargamos.

    Luego le damos permiso a nuestro usuario de manejar todos los features de VirtualBox con el comando siguiente:

    [root@punto-libre]# gpasswd -a USUARIO vboxusers

    Luego procedan a reiniciar el Sistema y Listo. (Nota: Cuando reinicie el equipo me di cuenta que el icono de VirtualBox del menu de aplicaciones apuntaba hacia /opt/virtualbox, y esa direccion no existe... asi que cambien ese comando por "VirtualBox" y Listo).

    Cualquier duda me dejan saber!

    Martes 26 de febrero de 2013

    Abraham Covelo

    Abraham Covelo
    Novanebula blog

    Phonegap, desarrollo aplicaciones móviles para múltiples plataformas

    Existen muchos puntos fuertes para el desarrollo de aplicaciones para móviles empleando PhoneGap. Pero los más interesantes son estos dos:

    1) Phonegap te permite desarrollar en diferentes plataformas móviles y tablets empleando prácticamente el mismo código: Android, iPhone, iPad, Windows mobile, Bada, blackberry, symbian, ...
    2) Phonegap no emplea nuevos lenguajes, simplemente utiliza javascript (interacción), html5, css3 (presentación).

    Cualquier desarrollador web podría comenzar a crear aplicaciones móviles multiplataforma sin que supusiera un gran handicap. Además el desarrollador podría emplear la API del móvil pudiendo tener acceso a la geolocalización, camara, multimédia, vibrador, acelerómetros, brújula, contactos del móvil, archivos, redes, notificaciones, vibrador, etc

    Además existen ya varios frameworks que te ayudarán a salvar las diferencias entre la web y la aplicación móvil en cuanto a interacción, presentación y usabilidad como por ejemplo xuijs, jQTouch y jQuery Mobile.

    Para comenzar a utilizar phonegap basta con tener listo el SDK para el desarrollo para móviles de tu plataforma favorita. Para android por ejemplo basta con tener instalado eclipse 3.4 o posterior junto con una copia del SDK para android (http://developer.android.com/sdk/index.html) y el complemento ADT de eclipse.

    A continuación hay que descargarse phonegap y comenzar un proyecto android en el eclipse.

    1) Se crean los directorios /libs y /assets/www
    2) De phonegap descargado se copian los archivos phonegap.js en /assets/www y phonegap.jar en /libs
    3) En la clase Activity inicial del proyecto debe cambiar el extend Activity por extend DroidGap
    4) Sustituir setContentView() por super.loadUrl("file:///android_asset/www/index.html");
    5) Añadir el principio del fichero el import : import com.phonegap.*;
    6) Añadir los permisos que vayas a utilizar para la aplicación (En el archivo AndroidManifest.xml debajo de versionName)
    7) Colocar el archivo plugins.xml de phonegap en la carpeta /res/xml/

    Y listos para programar en tu fichero index.html en /assets/www

    Si tienes problemas y no quieres liarte con crear entornos de desarrollo para todas las plataformas puedes empezar a desarrollar directamente empleando PhoneGap build en http://build.phonegap.com/
    Aquí puedes enviar tu código y recibir una aplicación lista para publicar en Market, ya sea IOS, Android, webOS, Symbian, BlackBerry, Windows Phone u otros dispositivos.


    Para empezar a programar basta entender una lista de nuevos eventos y API que permiten acceder a las funcionalidades del móvil empleando sólo javascript

    Como ejemplo, en phonegap está disponible el evento onDeviceReady:

    <script type="text/javascript">
    document.addEventListener("deviceready", onDeviceReady, false);

    function onDeviceReady()
    {
    //llamada inicial a la API de phonegap
    }
    </script>


    Este evento índica que se ha cargado el DOM del documento HTML y ya podemos comenzar a ejecutar nuestro código. Además tenemos estos nuevos eventos javascript disponibles en phonegap

    backbutton
    deviceready
    menubutton
    pause
    resume
    searchbutton
    online
    offline

    Que permiten detectar los eventos propios asociados a un móvil para poder actuar en consecuencia. Creo que los nombres son bastante autoexplicativos.

    Para acceder a toda la funcionalidad del móvil basta con estudiar la documentación de la API http://docs.phonegap.com/en/2.4.0/index.html (cuando escribí este articulo era la 2.4.0). Donde puedes ver como acceder a todo las funcionalidades del móvil empleando solamente javascript.

    Espero que este artículo te sirva para atreverte con esta nueva tecnología


    Robot volador logo de phoneGap

    Sábado 23 de febrero de 2013

    Carta de otro ciudadano (un profe del 15M)

    Introducción
    Estos días han aparecido dos cartas por internet que no tienen desperdicio:

    1. Carta a ti, diputado: tú despediste a mi padre
    2. Carta de otro ciudadano (del diputado Alberto Garzón) en respuesta a “Carta a ti, diputado: tú despediste a mi padre”.

    En meneame se han escrito muchos comentarios y yo pensaba escribir uno más aquí pero me he dado cuenta de que hay cosas que necesitan ser dichas y aún no se han dicho así que escribo mi propia carta de otro ciudadano.

    Sobre lo que hay que hacer ahora en España hay principalmente dos puntos de vista. Si no entramos en el tema de Cataluña dentro o fuera o cosas parecidas que yo sigo viendo igualmente en cómo democratizar.

    Dos puntos de vista
    Aquí hay dos puntos de vista: 1. los revolucionarios como los Iñigos Montollas #1 (el primer comentario en meneame) que quieren cambiarlo todo y 2. los que piensan que la institución es algo alcanzado por la democracia y que lo que hay que hacer es arreglarla y pegar el cambiazo a todo lo que dentro esté podrido.

    Y me temo que no es cuestión de hacer entender o convencer a nadie. No se van a dejar.

    Defensores del "todos son iguales"
    Entre los que hablan en las plazas del consenso hay una tendencia política hacia la anarquía como ideología que prefiere desmontar todo lo posible el estado. Es cierto que como dicen los estados han sido violentos y nidos de corrupción y alianzas de encubrimientos. Eso hay que reconocerlo pero, me temo que a algunos de entre ellos, les conviene ver a todo diputado como defensor de la casta/sistema y así resumirlo todo en "hay que derrocar al sistema".

    Los comunistas, o gente cercana, están cansados de decir que la repartición del dinero ha sido injusta y que no hace más que crecer en injusticia y es cierto, también hay que reconocerlo. Que podría funcionar de otra forma. Y también es cierto y depende de cómo, hasta puede ser conveniente. Y muchos de entre ellos afirman que todo rico lo es, por haber robado o engañado a la gente y eso es otra vez el "todos son iguales".

    Y aquí quería llegar. A parte de ellos, nos rodea muchísima gente que afirma que todos son iguales hablando de los diputados o senadores o de la casta y me voy a atrever a señalar con el dedo a quienes lo dicen. La gente que votó al PP y ahora se siente defraudada. La gente que votó al PSOE en el pasado y también se sienten traicionados. Ellos y otros más forman un grupo de interés en verlo y manifestarlo así.

    Cuatro dedos señalan hacia mí pero uno, no
    ¿Cuál es ese grupo de interés? ¿Qué gana con ello?

    Es triste decirlo, ganan más bien poco. Muchos no es por grandes ventajas, es más bien por cómo acaba siendo la persona. Algunos casos:

    1 - Si nunca ha votado ni piensa votar porque todo lo ve igual de corrupto y tramposo, ese se siente ahora con más razón. Pero tiene un punto ciego, no quiere ver las diferencias y es responsable de su ceguera direccional.

    2 - Si votó pero dejó de votar en algún momento y pronuncia esa igualdad, el mismo cuadro de ceguera o parecido, la misma responsabilidad.

    3 - Si fue de alguna lucha o partido, puede que hasta sectario, y perdió y después los encerró a todos en el mismo saco, similar cuadro de ceguera-responsabilidad.

    4 - Si pasa de todo, no le importa y cuando le preguntan usa esa escusa como usa cualquier otra. Un cuadro más grave de ceguera pero esencialmente también la misma responsabilidad.

    No es un problema de entender o de analizar o de convencer sino, de responsabilidad y de coherencia con unos valores que demasiadas veces se han perdido. Es un problema de ética con la consiguiente perdida de valores y por tanto de inspiración y por tanto de motivación.

    Los brillos en el cuadro
    Me entristece pero por lo que yo sé la perdida de valores, coherencia y responsabilidad sigue el camino de la perdida de empatía, y no son recuperables. Así está hecha la persona, si pierde ética y empatía , no la recupera salvo en contados casos, quizás.

    Con la empatía en la mano el cuadro aparece lleno de colores y no por minoritarios o muy minoritarios algunos colores son despreciables sino, todo lo contrario, más especiales. Si un diputado, miembro del gobierno o de cualquier institución en el estado, no apoya la corrupción y no es corrupto, no hay de que asimilarlo al resto. Todo lo contrario, es precisamente uno de los brillos más importantes del cuadro.

    Con la ética como guía, uno no puede acusar a quien no es culpable, eso es básico en la convivencia y en la justicia. Y no hay ética que acepte alejarse de la justicia y la convivencia en favor de la difamación interesada.

    Y sobretodo, con la responsabilidad, que todo ciudadano que defiende la democracia debe tener como columna central de su actuación, uno está obligado a ser coherente con lo que sabe y respetuoso con lo que no sabe. Aunque no le convenga. Y eso, de ninguna forma puede ser intentar que la confusión se extienda y que más gente vea las cosas con menos colores afirmando que no existen diferencias. Extender la ceguera ética es irresponsable sin la más mínima duda.

    Es esa misma ceguera ética en última instancia la que nos ha llevado a la situación en que estamos en mi opinión y aún nos ahogaremos más, mucho más. Me temo que viene una época mucho peor si no sometemos fuertemente nuestro actuar a nuestros valores. No veremos la realidad, ni tendremos ganas de verla y desde luego es suficientemente tozuda para hacernos pasar muy malos ratos.

    Lealtad a los valores

    Ante la catástrofe que ya es la situación actual, y que digo que va camino de ser mucho peor, ¿qué debe uno hacer? Tremenda pregunta.

    No soy más que un profe de tecnología en el paro desde hace ya meses que le gusta pensar en el futuro pero, tengo algo que decir. Si la situación es como la he descrito al menos en una buena proporción de la realidad, entonces lo que creo que tenemos que hacer es intentar mantener los ojos bien abiertos. En todos los sentidos. Y trabajar para que la situación sea lo menos terrible posible desde todos los ángulos y no despreciar las ayudas en favor de esos valores, aunque parezcan venir de ideologías o pensamientos diferentes.

    La lealtad no es para con los míos o los que defienden lo que yo defiendo, eso es lo que nos ha llevado a lo que somos. La lealtad es para con los valores y para con la humanidad, sino ando muy equivocado.

    Al menos por mi parte, apreciaré todo brillo de esperanza, valor, sinceridad, ética, imaginación ... que mi distracción no me quite de delante de los ojos y les enseñaré a mis alumnos, como profesor, lo importante de esos colores.

    Viernes 22 de febrero de 2013

    Aspie quiz Graph modificado

    Aspie-quiz-Graph
    Traducción: [Inglés]

    En google+ vi que a la gente les resultaba interesante el test del síndrome de Asperger que llaman Aspie-quiz . A muchas personas con Asperger les gusta el gráfico que muestra al final y a muchas otras no.

    Como pertenece a un estudio añade algo en el gráfico que todavía no tiene mucha aceptación. Son los comportamientos neurotípicos y de alguien con Asperger a la caza.

    Me parece una perdida que la gente no se interese en ello por ese detalle y como algunos pedían una versión del gráfico sin eso, pues me he puesto y la he hecho. Así ese estudio tendrá un poco más de gente interesada que participe y ellos tendrán lo que les gusta.

    Cómo puedo obtener uno para mí?

    1. Primero uno hace este test  que aconsejo hacer en la versión inglesa porque la española es anterior y mal traducida.  Si realmente tenéis interés en el tema primero hacer un login aquí así si algún día repetís el test los datos de la evolución pueden ser tenidos en cuenta en su estudio.
    2. Al finalizar el estudio os darán el gráfico con las variables de la caza y una cadena de caracteres, por si queréis recuperar el gráfico algún día, como esta: http://www.rdos.net/eng/poly12c.php?p1=82&p2=78&p3=67&p4=68&p5=50&p6=65&p7=58&p8=57&p9=41&p10=44&p11=88&p12=53
    3. Copiad toda la cadena a partir del carácter y ponerla después de esta otra cadena: http://www.saberlibre.net/g/nt-aspie-grafico.php
    4. Os quedará algo así: http://www.saberlibre.net/g/nt-aspie-grafico.php?p1=82&p2=78&p3=67&p4=68&p5=50&p6=65&p7=58&p8=57&p9=41&p10=44&p11=88&p12=53.

    Si ponéis entonces esa dirección en vuestro navegador el resultado será una imagen como esta:


    Y todos contentos. :)  A ver si algún día tengo tiempo y echo una mano con la traducción al español.

    Más información sobre el espectro autista

    Si os interesa este tema, os recomiendo tres enlaces:

    1. Una web en general muy interesante sobre el espectro autista: con un artículo interesante sobre las diferencias entre autismo de alto funcionamiento y Asperger.
    2. Este test que si queréis hacerlo sí que recomiendo que sea en castellano. 
    3. El libro de una persona Ramon Cererols, que ha descubierto a los cuarenta que tiene Asperger. Es de licencia Creative commons y tiene mucha información interesante: Descubrir el Asperger. Está en pdf en dos idiomas y en epub.

    Aspie-Quiz Graph modified

    Aspie-quiz-Graph

    Translation: [español]

    People, especially people with Asperger Syndrome, have expressed their interest in the test and graph found at the Aspie-quiz web page.

    The test seems to be part  of one research work and it adds to the graph info about the autistic and neurotypical hunting variables. Some people think that values aren't accepted or used enough and they dislike the graph.

    I think it's sad to loose interest of one part of the public because of that detail.  Some people asked for one version of the graph without that and I decided to do it myself in order to give people what they want and help the research to have more participation. This is what you get:

    What must i do to have my own graph?

    1. First you must do this test. If you are really interested it's a good idea to log in so they can track your evolution (anonymous but logged) for the research.
    2. At the end of the test you will have one graphic and one url to retrieve it in case you loose the image. Like this one: http://www.rdos.net/eng/poly12c.php?p1=82&p2=78&p3=67&p4=68&p5=50&p6=65&p7=58&p8=57&p9=41&p10=44&p11=88&p12=53
    3. Copy all the string starting with the question mark and add it to this one: http://www.saberlibre.net/g/nt-aspie-graph.php
    4. You will have something like this: http://www.saberlibre.net/g/nt-aspie-graph.php?p1=82&p2=78&p3=67&p4=68&p5=50&p6=65&p7=58&p8=57&p9=41&p10=44&p11=88&p12=53.

    You will have the new image if your browser go to that url.

    Please, if you find any error, report it to me. I'll fix it.

    Sábado 16 de febrero de 2013

    Usando Testdisk para recupera un disco duro

    Saludos, este post lo hago por que ya son herramientas que muchas veces me han ayudado a recuperar informacion de disco duros desahuciados y que las personas creen que es imposible recuperar la informacion.

    La idea principal y trabajando como se hace un Análisis Forense, lo idea es crear un copia del disco duro. tienes que verificar de poseer bastante espacio.

    Tengo un disco duro de 1 TB, lo cual hace fácil mi trabajo y procedo a la parte mas larga que es crear la imagen.

    primero que todo empezamos instalando las aplicaciones
    aptitude install photorec testdisk

    luego de instalado vamos a trabajar como root ejecutamos, testdisk para crear la imagen.
    testdisk

    Luego de eso nos dice que si queremos crear un nuevo log
    >[ Create ] Create a new log file

    Ejecutamos enter

    luego de eso nos sales dos disco duros, en el que estamos corriendo el sistema operativo y el que queremos recuperar.

    Tiene que saber identificar su disco duro, salen especificado el tamaño del mismo así que se hace fácil buscarlo.

    Luego de eso escogemos nuestra arquitectura
    Intel ] Intel/PC partition

    Luego de escoger esa opción, procedemos a entrar en la siguiente opción
    Advanced ] Filesystem Utils

    Nos saldrá el disco duro con todas sus particiones o las pocas particiones que tengas.

    en la parte inferior derecha observamos la opción que dice
    Image Creation

    Luego de esa opción nos va a pedir a que directorio queremos guardar dicha imagen.

    Luego que se escoge la carpeta donde vamos a guardar nuestro archivo que se llamara
    image.dd

    Para confirmar la ruta tenemos que estar dentro de la carpeta destino y teclear la letra c

    C when the destination is correct

    Luego que ejecutamos enter, se procederá a crear dicha imagen, se tardara un tiempo dependiendo del tamaño del disco duro que queremos recuperar.

    En la siguiente post explicare, que hacer con la imagen.dd

    La idea del post es ver que no tenemos que equivocarnos mas en el disco, ya que las equivocaciones que haremos serán en la imagen que hemos creado de manera de agotar todas las formas de recuperar toda la informacion contenida en el disco duro.

    Una vez me toco recuperar la informacion de un disco duro, donde la persona había instalado 3 veces ubuntu, pensó que con eso no se encontraría la informacion en ella, lo mas cómico es que recupere hasta la carpeta de p0$# que tenia. Lamentable cuando no tenemos conocimientos de como funcionan los disco duros y los formateo de alto nivel y bajo nivel.

    Espero haber explicado lo mejor posible, cualquier duda no dudes en preguntarme por esta misma vía.