viernes, 16 de enero de 2015

Como convertir un string a binario con C

Esto es especificamente con C o C++,pero especificamente con C,en este caso hacemos uso del poderoso Union y de punteros:


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>

typedef struct _byte { /* Estructuramos 8 bits para un Byte */
    unsigned a: 1;
    unsigned b: 1;
    unsigned c: 1;
    unsigned d: 1;
    unsigned e: 1;
    unsigned f: 1;
    unsigned g: 1;
    unsigned h: 1;
} byte;

typedef union _charbits { /* Unimos un char(caracter) con un Byte */
    char ch;
    byte bits;
} charbits;

void decode(byte b)/* Esta funcion decodifica el char en 8 bits */
{
    printf("%2u%2u%2u%2u%2u%2u%2u%2u  ",b.h,b.g,b.f,b.e,b.d,b.c,b.b,b.a);
}

void readString(const char *str)/* Esta funcion simplemente lee la string como un array de punteros a char y los decodifica char a char con la funcion de arriba*/
{
    charbits word;
    while(*str) 
    {
        word.ch = *str;
        decode(word.bits);
        *str++;
    }
    printf("\n");
}

int main(int argv,char **argc) /* Iniciamos el main */
{
    if (argv > 1)
        readString(argc[1]);
    else
        printf( "Uso : %s <Palabra>",argc[0]);
    return 0;
}

Para compilar metemos el codigo en un archivo por ejemplo:

decode.c


Y compilamos:

gcc -o decode decode.c

./decode "Tiempo de Tux"

 0 1 0 1 0 1 0 0   0 1 1 0 1 0 0 1   0 1 1 0 0 1 0 1   0 1 1 0 1 1 0 1   0 1 1 1 0 0 0 0   0 1 1 0 1 1 1 1   0 0 1 0 0 0 0 0   0 1 1 0 0 1 0 0   0 1 1 0 0 1 0 1   0 0 1 0 0 0 0 0   0 1 0 1 0 1 0 0   0 1 1 1 0 1 0 1   0 1 1 1 1 0 0 0  


Eso es todo.
Leer más...

Como añadir ppa/repos a Ubuntu

En este tutorial aprenderemos a añadir repositorios a ubuntu los conocidos en ubuntu como ppa,esto para instalar programas que no se encuentran en los sources del sistema,nos llamados main,universe,etc.

Para añadir un ppa vamos a launchpad,o al paquete que quieran instalar,en este caso vamos a probar con Shutter:

https://launchpad.net/~shutter

 Vamos a donde dice:

Personal package archives  y PPA for:


Ahora tenemos dos opciones la manera manual y la manera sencilla,veamos ambas:

Manera manual:

Vamos a donde dice Technical details about this PPA:

Seleccionamos la versión de nuestro sistema,en mi caso 14.04:



Copiamos lo que esta en el pre,en este caso:

deb http://ppa.launchpad.net/shutter/ppa/ubuntu trusty main 

deb-src http://ppa.launchpad.net/shutter/ppa/ubuntu trusty main 

Y ahora lo añadimos al sources.list de nuestro sistema:

Para ello abrimos una terminal la buscamos en el menu de programas o tecleamos ctrl+alt+t:

Ahora escribimos:


sudo nombre_de_nuestro_editor_de_texto /etc/apt/sources.list

Por ejemplo:

sudo nano /etc/apt/sources.list

Y añadimos las lineas al archivo,podemos añadir un comentario comenzando la linea con un hash:



Ahora solo guardamos,en este caso:

ctrl+o


ctrl+x

Por ultimo actualizamos las fuentes,pero primero tenemos que añadir las llaves de confianza:


En la pagina vamos abajo de donde estaban los deb,hay algo que dice:

Signing key:
Copiamos el segundo numero ya que esta dividido asi:

numero1/numero2
Copiamos el mas largo y escribimos:

gpg --keyserver keyserver.ubuntu.com --recv-keys numero2 
y
 gpg --export --armor numero2 | sudo apt-key add -  

Ahora si actualizamos:

sudo apt-get update

Y el paquete ya esta listo para se instalado,solo lo buscamos como paquete,con el comando:

apt-cache search paquete
O vemos en la paguina ppa donde dice:

Overview of published packages

Filtrando los resultados para nuestra versión de ubuntu:


Eso es todo para instalar usamos(en este caso shutter):

sudo apt-get install shutter

Como ven no es método rápido,para lo que recomiendo usar este método es solo para ver si el paquete esta disponible para nuestra versión ya que si no es así podemos detener conflictos en los paquetes,o no se instalara simplemente.

Manera automatica o rapida:

Para hacer el mismo procedimiento pero de manera rapida tenemos que añadir la ppa directamente con un comando linux especial para esto.

Primero vamos a la pagina del ppa y a donde dice:

Adding this PPA to your system

Esta un texto en negrita,en este caso como ejemplo usaremos shutter:

ppa:shutter/ppa


Ahora abrimos una terminal,la buscamos en menú de aplicaciones,y escribimos:

 sudo add-apt-repository ppa

En este caso:

sudo add-apt-repository ppa:shutter/ppa
Presionamos enter y actualizamos los repos:

sudo apt-get update

Y listo solo necesitamos buscar el paquete e instalarlo,en este caso:

sudo apt-cache search Shutter

sudo apt-get install shutter

Eso es todo.

Leer más...

martes, 13 de enero de 2015

Como añadir programas al menu de GNU/Linux

Esta entrada va para todos entornos gráficos que son usadas en sus distribuciones,Ubuntu,Gentoo,Arch,Debian,etc.

Cuando instalamos un programa por el administrador de paquetes,ya sea yum,apt,emerge,pacman y nos instala un programa,este se añade al menu de inicio o menu de programas de nuestro entorno gráfico,(no es lo mismo a que aparezca en la terminal de manera autocompletado,al presionar tab),lo que pasa con los programas(mas que nada los que tienen interfaz grafica),es que al instalar se añade un .desktop donde viene la configuración que usara el icono que aparecerá en el menu.

En esta ocasión aprenderemos a crear o mejor dicho a añadir un programa al menu de usuario,esto es útil cuando descargamos un programa de Internet que no tiene este archivo y queremos acceder a el,también es útil por si programamos algo y queremos que se pueda acceder desde el menu, o por si queremos añadir un menu a aquellos programas que no tienen interfaz como se ve en distribuciones como Kali que usan iconos en el menu para abrir programas que solo usan stdout(terminal mínima).

Se pueden crear accesos en entornos como kde de manera sencilla pero ese no es propósito de este tutorial,el proposito es saber crear archivos .desktop:

1.Primero debemos saber que estos archivos se guardan en esta ruta:

/usr/share/applications

Así que vamos a esa ruta con cd desde una terminal:

En terminal:

cd /usr/share/applications

Ahora vamos a crear un archivo que abrirá netstat,desde un icono en el menu en mi caso uso KDE:

Creamos un archivo llamado netstatejemplo.desktop

En terminal:
sudo nano netstatejemplo.desktop
Ahora vamos a conocer la estructura de los archivos .desktop:

Los comentarios comienzan con un hash # igual que en bash.

En segundo lugar debemos añadir un groupname,el cual va encerrado en corchetes,en el uso mas frecuente y en este tutorial se debe usar Desktop Entry.

Y por ultimo saber que el archivo este codificado en  UTF-8.

Ahora vamos a crear el archivo,el archivo se compone de lineas de configuración clave,valor como variables,las mas comunes para crear un archivo mínimo son:

Name : El nombre de la aplicación como aparecerá en el menu.
Type : El tipo de entrada,en este caso Application , tambien existe Directory y Link
Exec : El ejecutable,ruta absoluta.
Terminal : Valor booleano false o true para saber si se ejecutara en terminal
Icon : El icono mostrado en el menu,ruta absoluta.
NoDisplay: No mostrar,un booleano para ocultar la aplicacion aunque exista.
Categories: Sub menus donde se añadira,por ejemplo desarrollo,multimedia.
Comment : Es el tooltip que aparece en el icono(Texto al pasar el puntero sobre el icono,por ejemplo una descripción).

Tambien existen:

GenericName,Version,Hidden,OnlyShowIn,NotShowIn,DBusActivatable,TryExec,Path.

De hecho solo son necesarios dos variables,pero en nuestro ejemplo y regularmente en la mayoría de los casos solo se necesitan los mencionados primero.


Asi nos queda nuestro lanzador de netstat:

[Desktop Entry]
Name=Netstat
Type=Application
# Buscar ejecutable con which netstat
Exec=/bin/netstat
Terminal=true
NoDisplay=false
Categories=Network
Comment=Muestra conexiones de red, tablas de encaminamiento, estadísticas de interfaces, conexiones enmascaradas y mensajes del tipo netlink.

Guardamos : ctrl+o

Salimos :ctrl+x

Y instalamos,con este comando nos dirá si hay algún error:

 sudo desktop-file-install  /usr/share/applications/netstatejemplo.desktop

Si lo hacemos de esa manera lo abrira pero despues lo cerrara debemos cambiar el exec por:

Exec=bash -c "/bin/netstat;read"
Cerramos con enter.



Leer más...

lunes, 12 de enero de 2015

Como instalar Android Studio en Ubuntu

Android Studio sigue avanzando y lo mas seguro es que remplace a eclipse y su plugin para el desarrollo android,yo en lo personal me gusta mas eclipse(por la costumbre),pero aun así es buena practica probar las distintas manera de desarrollar en este caso para Android,así que vamos a instalarlo en Ubuntu,en mi caso la version 14.04.

Primero arbrimos una terminal:

ctrl + Alt + T

Ahora añadimos el ppa de Android Studio:

sudo add-apt-repository ppa:paolorotolo/android-studio

Actualizamos los repos:

sudo apt-get update

Y finalmente instalamos:

sudo apt-get install android-studio

Este paquete es un poco extraño ya que no es android studio en si,sino que es un instalador,un pequeño script que instala el paquete original guardado en,por ejemplo:

 https://dl.google.com/dl/android/studio/ide-zips/1.0.1/android-studio-ide-$VERSION-linux.zip

Lo descarga con wget,lo mueve a /opt y crea lo necesario para que se muestre en el menu de aplicaciones y el sistema.

Cuando termine lo podremos ejecutar:



Eso es todo.






Leer más...

Como actualizar Brackets Ubuntu 14.04

Si revisan en donde dice Ayuda->Buscar Actualizaciones se daran cuenta que hay una nueva version,si les aparece esto es que no:


Pero si no les aparecerá otra ventana  y hay que actualizar para tener lo mas nuevo que provee este editor.

Para ello vamos a la pagina de descara:

http://brackets.io/

Ahora le dan decargar,debe ser un archivo .deb.


Ahora lo que debemos hacer es abrir una terminal donde se descargo el archivo:

Abrimos la terminal:

ctrl + Alt + T

Vamos a la ruta de descarga,normalmente es Descargas tecleamos en terminal:


cd ~/Descargas

Y instalamos:


sudo dpkg -i Brackets.*

Esperamos y listo :D

Abrimos el programa le damos al icono de extensiones y actualizamos las que lo necesiten.







Leer más...