miércoles, 27 de febrero de 2013

Quitar el foco de nuestra activity



Desarrollo sobre la plataforma Android



Hola a todos, estamos de nuevo, esta vez con un simple tip, que creo que puede llegar a serles útil a varios. Supongamos que creamos una Activity, y la misma cada vez que ingresamos, toma el foco un EditText, y nosotros realmente no deseamos que suceda eso, porque nos molesta que se habrá el teclado, y que ademas la vista se mueva para que se vea casi únicamente ese EditText. Por suerte la solución es bastante simple, realmente, lo único que debemos hacer es agregar un código como este:

    <LinearLayout 

            android:focusable="true"
            android:focusableInTouchMode="true" 
            android:layout_width="0px"
            android:layout_height="0px" >
           <requestFocus />
        </LinearLayout>

El mismo lo único que va a hacer, tomar el foco el, y como es simplemente un Layout de tamaño cero. Pues solo se mostrara la Activity, sin que se centre el foco en ningún lado ;)

Espero que este muy pequeño post, le sirva a alguno, y le ahorre un rato de búsqueda ;) Nos vemos seguramente en un post más extenso :D


Saludos a todos, Gabriel

sábado, 23 de febrero de 2013

Comandos para Emacs


Tips para Linux


Hola a todos nuevamente, en ese post vamos a hablar de una importante herramienta, del porque usarla y ademas vamos a pasar una lista de comandos que nos va a ser útil recordar para saber como utilizarla.
Primero vamos a dar una serie de motivos del porque utilizarlo:
(aclaro antes que nada, que soy un nuevo usuario de emacs, normalmente era usuario de vim, pero me eh pasado :D )
Antes que nada, estoy usando esta configuración:
Realmente me resulto muy buena, solo le cambie el color-theme :D

Motivos de porque usarlo:

  • Primero y antes que nada, Emacs es totalmente libre, esta con la licencia GPL v3 
  • Tiene configuraciones para casi cualquier lenguaje, lo que hace es que podamos trabajar en casi todo con el mismo editor, lo que seguramente va a ser que sea mas productivo y nos acostumbremos a trabajar mas rápido.
  • Es uno de los mejores editores para lenguajes de etiqueta (XML, HTML, etc)
  • Extremadamente configurable y extensible (esto en un principio puede asustar, pero es increíblemente útil al aprender a utilizarlo ;) )
  • Al usar Emacs también vas a aprender a usar lisp ;) y por los atajos algo de bash :D
  • Es uno de los editores mas avanzados, una vez que uno se acostumbra a los atajos, vas a olvidarte prácticamente del mouse :D lo que va a ser que seas mas productivo y rápido  ;)
Lista de comando:

C-v  Para desplazarse a la siguiente pantalla
M-v Para mover atrás una pantalla
C-l  Limpia la pantalla y muestra todo el texto de nuevo
C-P Para mostrar la línea Anterior
C-b Mueve el cursor atrás una palabra
C-f Mueve el cursor hacia delante
C-n Para mostrar la línea siguiente
M-f Mueve el cursor adelante una palabra
M-b Mueve el cursor atrás una palabra
C-a Mueve el cursor al comienzo de la línea
C-e Mueve el cursor al final de la línea
M-a Mueve el cursor al comienzo de la oración
M-e Mueve el cursor al final de la oración
C-d Moverse atrás un carácter
M-< Mueve al comienzo del texto entero
M-> Mueve al final del texto entero
C-u Da un factor de repetición
C-f Mueve hacia adelante ocho caracteres
C-g Detener a emacs cuando no responde a los comandos, detiene un comando que está tomando mucho tiempo para ejecutarse. Descarta un argumento numérico o el comienzo de un comando que usted no quiere finalizar

VENTANAS

C-x 1 Deja una ventana y elimina las otras ventanas

INSERTANDO Y BORRANDO

delete Borra el último carácter que escribió
C-u 8 Inserta un carácter una cantidad de veces
C-d Borra el siguiente carácter después del cursor
M-d Elimina la siguiente palabra antes del cursor
C-k Elimina desde el cursor hasta el fin de la línea
M-k Elimina hasta el final de la oración actual
C-SPC El cursor se mueve a la parte inferior de la pantalla
C-w Elimina todo el texto
C-y Recupera los caracteres eliminados
C-k Elimina la linea donde esta ubicado el cursor
M-y Reemplaza el texto recuperado con la eliminación previa
C-x r t Esto lo podemos usar una vez seleccionado el texto, por ejemplo para comentar còdigo

DESHACER

C-x u Deshace los cambios efectuados en el texto
C-_ Comando alterno para deshacer

ARCHIVOS

C-x C-f Encuentra un archivo
C-x C-s Salva el archivo

BUFFERS

C-x C-b Lista los Buffers
C-x s Guardar algunos buffers

EXTENDIENDO EL CONJUNTO DE COMANDOS

C-z Comando para salir de Emacs *temporalmente*
`fg' Reanuda a emacs
C-x C-c Salir de emacs

MúLTIPLES VENTANAS

C-M-v Desplaza la ventana inferior
C-x o Mueve el cursor a la ventana inferior
C-v y M-v Desplaza la ventana inferior
C-x 1 Se deshace de la ventana del final
C-x C-f Encuentra un archivo en una ventana

NIVELES RECURSIVOS DE EDICIÓN

Esc Es un comando de salida elimina ventanas extras y sale del mini-buffer
M-x Entra a un mini-buffer

CONSIGUIENDO MÁS AYUDA

C-h Comando de ayuda en emacs
C-h Emacs le dirá qué tipo de ayuda puede ofrecerle
C-x 1 Deshace el texto de ayuda
C-h f Describe una función
C-h a Comando Apropos

Referecias:
C es la tecla control
M es la tecla alt

Esto es todo por ahora, espero que les haya interesado esta herramientas, creo que es uno de los mas poderosos editores de texto, y ademas como dije en un principio es libre lo cual lo hace mas importante aun, nos vemos en la próxima.

Saludos, Gabriel

jueves, 21 de febrero de 2013

Arrancar aplicación al iniciar Android


Desarrollo sobre la plataforma Android


Hola, en este nuevo post voy a escribir sobre algo bien práctico que tuve la necesidad de usar hace poco, y es que mi aplicación arranque al inicio una vez que allá booteado Android.
Como van a ver a continuación, no es una tarea demasiado complicada, simplemente deberemos agregar un permiso y utilizar un receiver, para poder lograr nuestro objetivo ;)
Ahora vamos a ver el código utilizado, para eso creamos un proyecto android de cero en nuestro Eclipse y vamos a modificar las siguientes cosas:

Este es nuestro manifest:


<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.aprendiendodeandroidymas.teststartbootandroid" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.aprendiendodeandroidymas.teststartbootandroid.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".BootReciever"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> </manifest>

Como pueden ver solo se le agregó el permiso RECEIVE_BOOT_COMPLETER y el receiber BootReceiver.

Esta es la clase principal que va a cargar nuestra activity, como podrán ver, no eh modificado nada de lo que te genera automaticamente el Eclipse.


package com.aprendiendodeandroidymas.teststartbootandroid;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

/**
* Clase que se va a encargar de cargar nuestra activity
* @author gabriel
*
*/
public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       // seteamos el layout a cargar
       setContentView(R.layout.activity_main);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.main, menu);
       return true;
   }
}



Y por último, nuestro BroadcastReceiver:
package com.aprendiendodeandroidymas.teststartbootandroid;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

/**
* llamamos este broadcastreceiver al inicio en el manifest para que lance
* nuestra aplicación
* @author gabriel
*
*/
public class BootReciever extends BroadcastReceiver{

   @Override
   public void onReceive(Context context, Intent arg1) {
       // Esto deberia lanzar la clase que va a iniciar nuestra aplicación
       Intent miIntent = new Intent(context, MainActivity.class);
       miIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       context.startActivity(miIntent);        
   }
}


Básicamente es una clase que hereda de BroadcastReceiver, y solo sobre escribimos el método onReceiver, para que lance nuestra aplicación

Referencia:
http://stackoverflow.com/questions/10428510/how-to-start-launch-application-at-boot-time-android

Código del proyecto:
https://github.com/Android-Hispano/android-hispano-demo/tree/master/StartBootAndroid

Espero que les haya resultado útil este post, donde fuimos directamente a la práctica ;) no es nada realmente complicado, solo sobreescribimos un método, agregamos un permiso, nada mas :D Nos vemos en la próxima.

Saludos a todos, Gabriel

sábado, 16 de febrero de 2013

Como crear un USB booteable con distribución Linux


Tips para Linux

Realmente existen muchas formas de crear una usb booteable con alguna distro Linux, podes usar un programa con interfaz gráfica como por ejemplo Unetbootin :

Simplemente insertamos el USB en el que vamos a instalar nuestra distribución, abrimos el programa (por supuesto hay que instalarlo antes, y eso puede variar de acuerdo a la distro Linux que estés utilizando ;) ), elegimos el archivo de imagen que deseamos instalar, elegimos qué versión de distribucion Linux deseamos instalar, y por último la ubicación la ubicación del pendrive.



Ahora desde la terminal:
La primera parte la podemos hacer con algun programa como por Disk Utility para conocer el nombre que tiene nuestro pendrive, como se ve en la imagen /dev/sdc






O como los guapos :D directamente abrimos la terminal y tipeamos el comando: fdisk -l (vas a necesitar ser root o usar por ejemplo sudo, quedando así : sudo fdisk -l)


Con el comando cd nos situamos en la carpeta donde esta la imagen, por ejemplo:
cd /home/gabriel/IMAGEN_DISTRO_LINUX.iso

Y después de eso directamente vamos a tipear el siguiente comando:
sudo dd if=/IMAGEN_DISTRO_LINUX.iso of=/dev/sd[x]

Donde vamos a reemplazar las [x] con la letra de la unidad USB, en mi caso con la letra c, por ejemplo podría quedar algo asi:
sudo dd if=/manjaro-openbox-0.8.3-x86_64.iso of=/dev/sdc

Advertencia: deben tener mucho cuidado de elegir correctamente la dirección del USB, ya que la unidad que elijan va a ser formateada y van a perder todos los datos, así que imaginan lo que puede pasar si le dan a una partición de su disco duro !!! :P

Bueno eso es todo por ahora, simplemente fue un tip, en mi caso lo necesite cuando quise cambiar de distro en mi notebook y me di cuenta de que la lectora de CD había muerto :( obviamente use la terminal, asi que no tuve que instalar nada, pero el programa gráfico por lo que vi funciona bastante bien, aunque tiene problemas a veces con algunas distro, por ejemplo hace un tiempo lo había probado con Arch, y lo tuve que terminar haciendo desde la terminal :D

Saludos a todos, Gabriel

sábado, 2 de febrero de 2013

Utilizando cliente Samba desde la terminal


Tips para Linux


Este pequeño post, lo escribí simplemente, porque hace unos días, reinstale el SO de mi notebook, y quería usar el cliente samba, y por medios del navegador de carpetas nautilus, me esta dando algunos problemas :P Así que decidí buscar como hacerlo por la terminal, y me pareció bastante sencillo :D

Básicamente deberían instalar en su SO Linux smbclient y por supuesto sus dependencias, eso va a depender de su distro, en Fedora podría ser algo así como yum install smbclient, en derivados de Debian apt-get install smbclient, Mageia urpmi smbclient, etc, etc.

Ahora si a comenzar, estos son los 4 comandos mas importantes para su uso:

Para conectarse se debería usar un comando similar a este, donde se coloca la IP del host, y la carpeta del recurso compartido, con el nombre de usuario que puede tener acceso:

smbclient //192.168.1.106/Compartida -U jackgris

Y despues simplemente es cuestion de tomar el archivo que deseamos, con el comando get, asi:


get archivo_a_descargar.iso


Con ese comando, nos descarga ese archivo por defecto en nuestro home.
Para subir un archivo, primero, nos ubicamos en la carpeta donde queremos subir los archivos, y luego con el comando put


put archivo_a_descargar.txt
ls    ver listado de archivo

cd ingresar a carpeta

help   lista de comandos posibles


Simplemente con este comando salimos
exit


Y por supuesto, no nos olvidemos que tiene su manual:
man smbclient

Ese es un excelente recurso a tener en cuenta

Espero que les allá gustado, fueron simplemente un par de tips, a ver si les sirve a alguno, a mi me termino gustando mas que la interfaz gráfica :D

Saludos, Gabriel