Monthly Archives: marzo 2012

Invertir las palabras en una sentencia (C++)

Hace unos días tuve una entrevista en la que me pidieron un simple algoritmo para invertir el orden de una sentencia,
por ejemplo invertir la cadena original "Esta es una prueba " -> prueba una es Esta".

La versión más sencilla qeu se me ocurrió, sin utilizar punteros o modificar las direcciones de memoria y buffers fue esta
(disculpen los comentarios, el examen fue en inglés y los he traducido al vuelo).


#include
#include
using namespace std;

void invertStringWords(char[]);

int main() {
    char words[] = "Esta es una prueba";
    cout << endl << "Sentencia original: \t" << words << endl;
    invertStringWords(words);
    system("pause");
    return 0;
}

void invertStringWords(char words[]) {

//Arreglo con la longitud de los caracteres en la sentencia
int arraylength = strlen(words);

// índice para el caracter que está siendo leído
int a=0;

// String para almacenar la última palabra formada del arreglo
string invert="";

// Arreglo de caracteres con la cadena final de palabras invertidas
char invertedWords[arraylength];

// Ciclo que recorre la cadena original desde el final
for(int i=arraylength-1; i >= -1; i--){

             // Si encontramos un espacio ya hemos terminado una palabra
             // invertir la palabra y agregarla al principio del arreglo invertido
             if(i==-1 || words[i] == ' ') {

                         // Agregar la última palabra encontrada invertida en la sentencia
                         // al principio del arreglo de cadena invertida
                         for(int b=invert.length()-1; b >=0 ; b--) {
                                 invertedWords[a] = invert[b];
                                 a++;
                         }

                         // Agregar un espacio para delimitar palabra e incrementar el contador
                         // 'a' solo si no se ha llegado al final del arreglo.
                         if (i>-1)
                            invertedWords[a++] = ' ';
                         invert="";
             }
             else
             {
              // Tenemos un caracter, agregarlo a la cadena temporal
                         invert +=words[i];
             }
     }

             cout << endl << "Sentencia invertida: \t" << invertedWords << endl;
}
Anuncios

Extensiones imprescindibles en Firefox

Una de las cosas que me mantiene usando Firefox es la gran cantidad de complementos y extensiones desarralladas por terceros, es lo que lo hace destacar sobre los demás exploradores (y alentarse jeje), Opera, Chrome y similares no son competencia en este sentido.

A continuación enlisto los que considero esenciales para cualquier instalación de Firefox

1. Adblock Plus:

Como su nombre lo indica, bloqueador de publicidad, funciona realmente bien.

https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/

2. Video DownloadHelper:

Complemento para la descarga de videos (e incluso música) de páginas web, cuando están en modo ‘streaming’ como es youtube, vimeo, tu.tv, bandcamp, etc.

https://addons.mozilla.org/en-US/firefox/addon/video-downloadhelper/

 

3. Flashgot:

Ayudante de descargas, funciona muy bien, y a veces es útil..

https://addons.mozilla.org/en-US/firefox/addon/flashgot/

4. Greasemonkey: Es un complemento que permite usar ‘scripts’ para modificar/optimizar/automatizar diferentes tareas en páginas web por medio de javascript.

https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/

Algunos de los scripts que uso con esta herramienta son:

Facebook Ad-Blocker: incluso con Adblock plus, facebook incluye una buena variedad de publicidad, este script remueve todo eso:

http://userscripts.org/scripts/show/120859

Facebook Chat Emoticons Bar: Yo no me sé de memoria los emoticons de Facebook, tú? bueno para eso está este complemento, agrega una pequeña barra arriba del chat con los smileys

http://userscripts.org/scripts/show/50826

Youtube National Adder: Agrega la bandera del país de los usuarios que comentan en Youtube, no será tan útil pero me gustó jeje

http://userscripts.org/scripts/show/123965

Realizando llamadas gratuitas a USA con google voice y tu android (O pc/mac)

Google Voice debutó en octubre del 2009 como un servicio de telecomunicaciones intermediario, permite realizar llamadas a cualquier número de USA (fijo o móvil) sin ningún costo, además de SMS ilimitados, el servicio usa el servicio de voz/telefonía de tu operador, redireccionando al número deseado.

Para realizar una llamada, se debe utilizar la interfaz web de Google Voice (o alguna aplicación si tenemos un Smartphone), marcar un número y seleccionar el número local (celular/línea) a donde se redireccionará la llamada.

La desventaja de esto es que para realizar cualquier llamada o enviar un sms por medio de google voice ocupamos estar conectados a internet, ya sea desde el navegador web o una aplicación de escritorio / móvil, después de haber marcado recibiremos una llamada conectándonos con el teléfono destino por medio de la red de voz de nuestra compañía telefónica.

Ahora, hay un problema con todo esto, google voice solo está disponible para operadores de USA, por lo que debemos obtener un número al cual redireccionar las llamadas y hacer la conexión, para esto existen varios servicios, como IPKall, gizmo5, etc. (si vives en USA y tienes un número de USA, puedes ignorar la parte de IPKall, antisip, sip droid ya que solo debes activar google voice con tu número y podrás tener realizar llamadas gratuitas a nacionales).

Necesitamos:

  • Cuenta de Google Voice

https://www.google.com/voice

*Ocupan usar un proxy para tener ip de USA, de otra forma no los dejará registrarse en Gvoice.

Les asignarán un número pero todavía no estará verificado, aguardan hasta obtener un número con IPKall, ya que lo tengan (más abajo) registran este número con google voice, para después verificarlo desde la aplicación SIP Droid (ocupan introducir un código de verificación que les indica una grabación).

  • Cuenta de AntiSip:

http://www.antisip.com/sip-antisip-com-register

Imagen

  • Cuenta de IPKall:

Tipo SIP.

Donde sip number es el usuario que obtienen con antisip.

Sip proxy sip.antisip.com

Y sus datos válidos, correo, etc.. (12345.. es el número/usuario de antisip)

Este número de teléfono que obtienen con IPKall lo deben registrar con google voice y verificarlo después de configurar su cliente SIP (Sip droid).

Imagen

Listo, pueden utilizar un cliente SIP.

Para android:

  • SIP Droid

http://code.google.com/p/sipdroid/downloads/detail?name=Sipdroid-2.5.apk

https://play.google.com/store/apps/details?id=org.sipdroid.sipua&hl=en

Configuran en una cuenta de SIP (sip account 1 puede ser):

Imagen

Para windows/linux (ubuntu en este caso):

Ekiga

sudo aptitude install ekiga

Configuración de Ekiga

Una alternativa al cliente sip es usar google talk, a la hora de marcar desde google voice veremos la opción Gtalk, para poder recibir llamadas debemos tener configurados correctamente las opciones de audio/video, además de verificar la cuenta (todavía debemos hacerlo con algún cliente SIP si es que no tenemos número de USA).

Verifican su cuenta de google voice agregando el número telefónico que les dan en IPKall como el principal, entran a google voice, agregan número principal (el de IPKall), le dan en verificar, tiene que sonar el teléfono en la aplicación SIP Droid (ekiga o el cliente que tengan), en sipdroid contestan deslizando la pantalla hacia arriba y muestran el teclado numérico con el botón en forma de S, introducen el código que lee la grabación.

 

Para realizar llamadas utilizan google voice, la aplicación o desde voice.google.com (google.com/voice), marcan el número, en unos segundos sonará su teléfono (por medio de sip droid o su cliente SIP).

Aplicaciones para descargar música en android

Music Junk

Music Junk funcionó de maravilla la primera vez que la instalé, después de una semana empezó a marcar errores en la red, podía navegar hasta una canción y a la hora de seleccionar la descarga marcaba error en la red (Wifi/3G), una lástima por que el catálogo era muy variado y se podía seleccionar una gran variedad de bitrates, incluso encontrar archivos flac sin pérdida, incluyo el link de descarga por que muchas personas han comentado que les funciona sin problemas, tal vez sea algún problema con mi dispositivo.

Video (no es mío):

https://play.google.com/store/apps/details?id=bluemonkey.apps.musicjunky

Music Box Pro

Music Box Pro es la última aplicación funcional que he encontrado, un buen catálogo y una interfaz sencilla, tiene una opción para bajar un álbum completo pero en las instrucciones hay una aviso de que está en beta y puede trabajar el teléfono y hacerlo explotar etc. etc.también tiene un apartado de música Top de varios géneros.

http://search.4shared.com/postDownload/acvhDoZD/Music_Box_Pro.html

Video (tampoco es mío, y la versión es una anterior):