31 diciembre 2009

Facebook de Star Wars, Señor de los Anillos y Harry Potter

Para empezar bien el año, les dejo estas pantallas de facebook que me encontré hace rato en el blog de Francesc Josep.
Espero que les gusten.  ¡Feliz año 2010!
Star Wars
darthvader darthluke1 
El Señor de los Anillos
frodo1
Harry Potter
potterparselgallepo


29 diciembre 2009

Desarrollar un programa en un fin de semana

Me encontré este artículo en internet donde dos personas se juntan un fin de semana para desarrollar una aplicación para iPhone.  La aplicación lo hicieron entre 2: un cuate con experiencia en mercadotecnia y algunas habilidades para programar y un programador que sabe un poco acerca de mercadotecnia.

Independientemente de la aplicación que hicieron, lo interesante es la manera en que lo hicieron.  Describen que hicieron, qué aplicaciones usaron (como Dropbox o GitHub), que tareas hacía cada quien, etc.  Tengo alumnos que me aseguran que estuvieron 48 horas de corrido desarrollando uno de mis proyectos (y si alguna vez escriben sobre como lo hicieron, se las paso al costo).

Termino este post con los consejos que dan estos cuates para terminar una aplicación en un fin de semana:

  1. No puedes hacerlo solo.
  2. Deben hacer múltiples tareas al mismo tiempo (multitask).
  3. Haz por lo menos una cosa bien.  No debe ser una aplicación compleja, pero por lo menos debe hacer una de estas cosas bien: resolver un problema, ser entretenido, ser útil para cierto segmento de usuarios, “enganchar” al usuario y/o tomar ventaja de la plataforma para la que se está desarrollando.
  4. Establecer objetivos a largo y corto plazo.
  5. Crear una cuenta en Dropbox.
  6. Probar, probar y probar para eliminar errores.
  7. Entender como distribuir la aplicación.

Esta es la liga al artículo y aquí lo encuentras traducido al español, gracias a Google.  Espero que les sea interesante y les de ideas para sus propios proyectos.  ¡Hasta la próxima!



FixWin: arregla problemas de Windows, ¡fácil!

computer_repair Es muy común que Windows tenga detallitos que dejen de funcionar y, aunque puedes trabajar, te molesta y reduce tu productividad.  Se borra el icono de Internet Explorer o de la Papelera de Reciclaje de tu escritorio, algunos virus (aun después de que los quitaste) ya no te dejan ver archivos ocultos, etc.

Reparar estas cosas uno por uno es una lata, sin embargo me topé con FixWin (gracias a un artículo de MakeUseOf) el cual puede arreglar muchos de estos problemitas con un par de clics.

Parece muy interesante.  Si lo usas, comenta en este artículo con tu experiencia.  ¡Hasta la próxima!



21 diciembre 2009

¡Feliz Navidad 2009!

Deseamos que el niño Jesús nazca en sus corazones y los llene de paz, amor y alegría.

Navidad 2009

¡Saludos!



12 diciembre 2009

Una netbook impresionante: Kojinsha

Vi que en Japón ya comenzaron a vender la Kojinsha DZ6KH16E.  De entrada parece una netbook como cualquier otra: tamaño compacto (280×210×19〜42mm), tarjeta de video ATI Raedon HD 3200, 1Gb de RAM, disco duro de 160Gb, WiFi, 3 puertos USB, etc.

Sin embargo lo que es novedoso es el monitor.  En lugar de una pantalla LCD de 10.1 pulgadas, tiene 2.

2da86_kohjinsha-dz-002-sliding-illustration-compact

Cuesta alrededor de US$1000 y se me hizo muy interesante y novedoso.  ¡Saludos!



10 diciembre 2009

El Rap del C++, parte II

En mi mensaje anterior les presenté mi debut como rapero con el rap del C++, sin embargo no contaba con un videoclip.  En lugar de andar calificando (como debería porque tengo un montón de trabajos pendientes esperando ser calificados) me puse a crear un videoclip.
Aquí se los presento.  Espero que les sea útil, de su agrado o por lo menos les haga reír un rato.
El Rap del C++


08 diciembre 2009

El Rap del C++

Algunos alumnos de la prepa que cursan el bachillerato técnico en programación me dieron la idea de hacer un rap sobre el C++.  Hice la letra y elegí un “loop” rapero gratuito, pero la verdad es que eso de rapear no se me da.  De todos modos lo intenté y este es mi resultado.
Les dejo aquí la letra y abajo viene el MP3 con mi voz.  De antemano me disculpo por mi falta de cualidades musicales (bueno, ¿el rap es música?  A mi se me hizo difícil decir muchas cosas muy rápido sin que se me fuera el aliento).  En fin, aquí esta:
Este es el rap
del C más más,
y de eso que los gringos
llaman una "class".
Una clase me define
como es un objeto:
sus datos y funciones
y es muy completo.
La clase es
como el plano de una casa,
aunque no está en RAM
te muestra lo que pasa.
El objeto convierte a
la clase en realidad
y utiliza toda
su funcionalidad.
Como cualquier otra variable
objeto declaras:
escribe el nombre de la clase
y luego el nombre que le das.
Si a variables y funciones
tu quieres accesar,
con el operador punto
lo puedes ejecutar.
Programación con Objetos
permite abstracción,
que algunos lo conocen como
encapsulación.
Abstracción permite
tu vida facilitar
porque datos y funciones
tu puedes agrupar.
Polimorfismo es
una gran aportación,
porque cambia lo que hace
según la situación.
Aunque tenga el mismo nombre,
y esto es sorprendente,
hace lo que esperas
de una forma diferente.
La herencia te permite
mucho código reusar
porque en lugar de escribirlo
lo puedes heredar.
Haz una clase base
con todo lo que quieras
y a un montón de clases
sus cosas les heredas.
Con todo esto dicho
me voy a retirar
porque ya me dieron ganas
de irme a programar.
Y aquí está el audio:
Prometo en el futuro hacer el videoclip con la letra de la canción.  Ya tengo todo listo, pero esta semana dudo tener tiempo para armarlo.
Aquí están los créditos:
94-Créditos
Espero que les guste, o por lo menos les de risa.  ¡Hasta la próxima!
P.D. Si realmente quieren asustar a sus amigos, pueden bajar el MP3 en esta liga.


30 noviembre 2009

¡Aguas con los ciberfraudes navideños!

Cyber-Theft-IStock

Sé que todos son cibernautas muy precavidos, pero prefiero divulgar la información. En diciembre es época en que muchos intentan engañarte, especialmente alrededor de la fecha cuando depositan los aguinaldos.  Por eso hay que tener cuidado.

Este artículo, los 12 ciberfraudes de Navidad, del Universal (lo vi en Yahoo Noticias) viene avalado por McAfee y trae unos cuantos consejos para cuidarte esta navidad.

¡Saludos!



23 noviembre 2009

Hardware de antaño: la primer tablet (1979)

Haciendo un viaje al pasado, me topé con que Apple hizo una tablet en 1979.  No estoy seguro, pero me atrevo a decir que es la primera.  Aquí está una imagen para que veas como era la tecnología de hace 10 años, la cual no era muy diferente de las “nuevas” tecnologías.  Si bien dicen que la historia se repite…

Si te interesa saber más sobre esta tablet, visita el artículo (en inglés) de Edible Apple.  ¡Hasta la próxima!



22 noviembre 2009

16 noviembre 2009

Problemas OleDb con Windows 64 bits

windows-vista-ultimate
Solo una pequeña nota para todos aquellos que usan alguna versión de Windows que corre a 64 bits.  Si intentan programar una base de datos que use Access con OleDb, probablemente te marque error.  Yo estaba usando el siguiente código que llena un ComboBox con un campo de una tabla:
Código
Cuando ejecutaba la instrucción connConn.Open() me marcaba el error The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.  Yo estaba busque que busque el error: chequé el ConnectionString, verifiqué mi código mil veces, hasta que por fin di en el clavo.  Lo que pasa es que las versiones de 64 bits no tienen registrado algunos ConnectionStrings a los que estábamos acostumbrados los que vivíamos bajo el dominio de 32 bits.  Para que el programa funcione, hay que decirle que lo compile para un procesador de 32 bits.  Para esto, ve a My Project -> compile -> advanced compiler options y allí cambia Target CPU a x86.  Con esto debería quedar resuelto el problema.
Por cierto, la solución la encontré en VB-Tips.


11 noviembre 2009

Thermal Take 10: un gabinete a todo dar

Aunque es una noticia vieja (el anuncio lo dieron en junio), hoy, al ver el gabinete de mi PC, se me vino a la mente esta lindura que es un sueño guajiro y decidí compartirlo con ustedes.  Este gabinete, desarrollado junto con BMW, es toda una preciosura y está hecho pensando en videojugadores, editores de videos y diseñadores.  De hecho, con un precio de US$700 no está al alcance de cualquiera, pero tiene cosas impresionantes (sobre todo en diseño, disipación de calor y ventilación, acceso y seguridad).

Aquí les dejo algunas imágenes.  Si quieren saber más, visiten el sitio de Level 10 (el sitio oficial) o el anuncio en Xataka.  ¡HAsta la próxima!

 

Fuente: Tecnozopia



09 noviembre 2009

Y más humor con Facebook

Hace poco les mandé un post sobre “Facebook humorístico” donde está, además de un video sobre la forma en que Facebook sería en la vida real, una “copia” del Facebook de Hitler resaltando algunos de los eventos de la Segunda Guerra Mundial desde su página.
Hoy el mismo cuate que hizo el anterior, ideó esta que pongo a continuación.  Digamos que es la Segunda Guerra Mundial, parte II.  Se basa en los siguientes hechos históricos:
  • El 3 de julio de 1940 Gran Bretaña atacó la flota africana de Francia en la batalla de Mers el-Kebir. Se ubica temporalmente pocos días después de la rendición de Francia. Gran Bretaña temía que el Eje ocupará la flota francesa en contra de su fuerza naval y se vio obligada a atacar a su aliado. El hecho tensó las relaciones entre ambos países durante los siguientes años.
  • Italia nunca pudo dominar el mediterráneo (mal organizados y mal equipados), y mientras trataba de hacerlo paralelamente invadía Egipto para terminar el dominio británico del Canal de Suez. Fue repelido por fuerzas británicas y australianas. Finalmente Hitler mando un grupo de apoyo al mando de Erwin Rommel (que estaría subordinado al mando militar italiano, pero que no tardó en actuar por su cuenta) que logró varias victorias.
  • En un principio la vestimenta y el equipo del Eje no era el adecuado y trajo varios problemas al pelear contra los británicos (mejor preparados). Fueron los italianos los encargados de diseñar una nueva vestimenta.
  • El ejército africano del Eje al mando de Rommel terminó mal provisionado y fue retrocediendo hasta ser finalmente expulsados de África por fuerzas norteamericanas, francesas y británicas.
  • Aquí está el Facebook de Hitler, parte II, en el norte de África:


29 octubre 2009

Protesta contra los impuestos: este viernes en GDL

oWM Como sabrán, nuestros queridos gobernantes están pensando en aumentar los impuestos.  Va a subir la gasolina (lo cual indica que TODO va a subir), me quieren quitar una tercera parte de mis ingresos, están pensando aumentar impuestos en telecomunicaciones (a Dios gracias ya se echaron para atrás en cobrar más por internet #internetnecesario)…

Y eso que nuestro querido presidente prometió bajar impuestos… he aquí la prueba:

Este es el panorama para el próximo año.  De seguir así, este fin de año en lugar de decir “¡Feliz año nuevo”, voy a decir “Merry Crisis!”.  Pero, ¿qué hacemos? Una opción es quedarnos en casa quejándonos de lo que hace el gobierno y no hacer nada.  Otra es la de protestar, decir que no estamos de acuerdo.

Algunos creemos que se puede protestar, que se puede hacer algo.  Por eso te invitamos a dar el cacerolazo en contra de los impuestos.  La cita es este viernes 30/Oct/09 a las 8pm en la glorieta de la Minerva en Guadalajara.  A las 8:30pm vamos a dar de cacerolazos como protesta.  Por lo tanto, hay que llevar una cacerola y una cuchara para hacer ruido.

Si crees que dar de cacerolazos es una broma, lee este artículo de Wikipedia y puedes ver noticias sobre este mismo tipo de protesta se ha hecho en diferentes lugares, como por ejemplo en Argentina (otras noticias de lo mismo aquí, aquí y aquí), en Perú.

Si tienes Facebook, únete a la causa “cacerolazo contra los impuestos” para que no te quedes callado.

Te invito a que participes.  El éxito depende de que todos nos involucremos.  ¡Allá nos vemos!



22 octubre 2009

Apuntadores en C: ¿pa’ onde apunto?

apuntarLa idea de este mensaje es ayudar a que aprendas a aplicar los apuntadores de manera que sean útiles. Los apuntadores son muy útiles en C, como espero que podrás apreciar en este mensaje.  Está por demás decir que no puedo cubrir TODO lo que hay que ver con apuntadores en este mensaje.  Si luego tengo tiempo, puedo escribir una segunda o tercera parte para explicar como usar apuntadores para pasar parámetros a las funciones por referencia, ver su relación con arreglos, usar apuntadores a funciones y a arreglos de caracteres.

¿Y qué son esas ondas que suenan tan complicadotes?

En primer lugar, un apuntador es una variable que almacena una dirección de memoria. Generalmente, si está bien hecho, esa región de la memoria tiene algún dato interesante.

¿Y cómo nos les declaramos?

Se declaran al igual que cualquier variable, solo que se le antepone una asterisco. Estos son algunos ejemplos:

Codigo1

Consideraciones

Recuerda que & sirve para indicar la dirección de memoria donde se guarda el contenido de una variable. Y el * regresa el valor a la cual apunta un apuntador (valga la redundancia). Ejemplos:

Codigo2

Nota: Aquí estoy usando el printf, pero lo puedes sustituir con el cout, si lo prefieres.

Riesgo: si no lo inicializas, lo pagarás muy caro

Cuando declaras un apuntador ya apunta a algún lado (cuando declaras una variable en C simplemente reserva el lugar en la memoria, pero lo que había allí se queda). Tienes que inicializar el apuntador antes de usarlo. Fíjate en el siguiente código:

Codigo3

En el código de ejemplo 2 se muestra la manera correcta de hacerlo (bueno, de programarlo). Se inicializa yPtr a una dirección de memoria ya “apartada” por y.

Si no inicializas una variable cualquiera, a lo mucho no te da el resultado esperado, pero el resto del programa funciona. Pero con los apuntadores hay que tener mucho cuidado ya que pueden apuntar a cualquier lado en la memoria y, por lo tanto, puede alterar datos usados por diferentes variables o funciones. Es como un carro: te puede llevar a cualquier lugar (lo cual te da libertad y facilidad para viajar), pero si conduces sin fijarte por donde vas, puedes sufrir un accidente. Lo mismo sucede con los apuntadores: si no te fijas o controlas hacia donde apunta, puede ocurrir un error grave.

Haciendo algo útil con apuntadores: hostigar funciones

Podemos usar apuntadores con las funciones para hacer “cositas”. Básicamente hay 2 maneras de pasar valores a una función: por referencia y por valor.

Generalmente solo pasamos funciones por valor porque es la manera estándar de hacerlo.  En este caso, si modifico el valor del parámetro pasado por valor, solo se modifica dentro de la función y al terminar ésta, la variable es tragada por un inmenso hoyo negro que lo desplazará hacia una galaxia lejana y se pierde para siempre.

Al pasar valores por referencia, es otra onda. Pasas apuntadores como parámetros a una función y por esto, si alteras el valor contenida en una dirección de memoria (la que se le manda a la función), se altera en todos lados.

Esto se parece cuando llevan un pastel a un cumpleaños. Si se reparte un pastel a cada invitado, se asemeja a pasar por valor porque cada persona hace con su pastel lo que quiere (se lo come allí, se lo lleva a su casa, etc.). Sin embargo, si entre todos comen el mismo pastel, es como si pasaras por referencia, porque todos se reparten el mismo pastel: solo les dicen donde está el pastel, les dan el plato y se sirven. El pastel se va acabando entre todos.

Vamos viendo un ejemplo. Este código (el 4) usa una función muy simple, que eleva un número al cuadrado. De esta manera, que es la forma “ordinaria”, se pasan los parámetros por valor:

Codigo4

El siguiente ejemplo (código 5) pasa la dirección de memoria donde está almacenado el valor. Nótese que la función la declaro como tipo void porque ya no necesito que devuelva nada (porque altero lo que está almacenado en la dirección de memoria directamente).

Codigo5

La función cuadrado_ref(int *x) recibe la dirección de una variable entera (o sea, un apuntador entero), lo almacena de forma local como x y no devuelve un valor. Podríamos decir que el valor que se manda a la función es una “copia” de la dirección de memoria.

Hasta donde vamos, la utilidad del uso de apuntadores en funciones nos permite devolver más de un valor a la función que los llamó (porque cada función solo puede regresar un valor ya que solo puede tener una instrucción return). Y, además, nos permite mandar una cadena de texto a una función (sería imposible hacer esto con los parámetros “normales”, ya que el tipo de datos cadena no existe y tengo que mandar un arreglo de char), como vemos en el código 6, escrito a continuación.

Codigo6

Ahora si, ya con algunas bases, vamos haciendo cosas verdaderamente interesantes.

Reservar memoria de manera dinámica

Al leer este título, probablemente te estarás preguntando qué onda con eso, qué significa, que me fumé… Piensa lo que quieras, pero lo importante es que sepas que hay problemas en algunos programas si no sabes de antemano con cuántos datos vas a estar trabajando.

Supongamos que estás haciendo un programa en C que almacena los datos de los libros que tiene una biblioteca. Como un buen programa, lo diseñas pensando que no sabes de antemano el número de libros que tienen almacenados. A lo mejor es la biblioteca de la primaria federal no. 2, o a lo mejor es la biblioteca principal de la UNAM. Recuerda que un buen programa no debe restringirse a problemas del programador – al usuario le vale madres tus broncas, solo quieren un programa que funcione. Además no puedes estar contratado de por vida en un lugar que use tu programa. Tus aplicaciones deben poder adaptarse a diferentes condiciones o restricciones del lugar donde quieres vender y/o implementar tu solución.

Vamos a comenzar apartando memoria para usar cadenas de manera dinámica. Supongamos que no sabemos hasta la hora de ejecución el tamaño de un arreglo. Esto es una bronca porque si declaras un arreglo de caracteres (o sea, una cadena o “string”) de antemano, a lo mejor reservas memoria de más que no vas a usar o necesitas (si eres de Jalisco, tal vez “ocupes”) más caracteres de los que declaraste.

Fíjate en el código 7. Le pide al usuario el tamaño máximo que puede tener una cadena y reserva el espacio en la memoria. Después le pide al usuario que le dé un valor a la cadena que reservó.

Codigo7

El malloc es una función que aparta memoria. Recibe como parámetro el número de bytes que se van a reservar y devuelve una dirección de memoria (que nosotros asignamos a un apuntador). Se usa la función sizeof que devuelve el número de bytes que se requieren para almacenar un valor. En este ejemplo no era del todo necesario (sabemos de antemano que un char ocupa (bien empleado el término) un byte, pero lo puse porque es muy útil cuando se reserva memoria para usar estructuras (como una lista simplemente ligada, como hablaremos más adelante). El free en este caso no se trata de una relación relajada entre novios, sino que se trata de una función que libera la memoria apartada con malloc.

Lo primero que vas a encontrar en los libros de C++ es que es de mala educación usar el malloc y el free, los cuales son parte de la librería ANSI C (el C estándar que es acatado por todos los compiladores de C, menos el DevC). Sostienen que son “vicios” de programación y por eso el C++ propone el uso de otras funciones para reservar memoria de manera dinámica. Estas son el new y el delete. Pero de estos hablaremos después, ya que quiero centrarme solo en el uso de C estándar en este documento. En otro momento hablaremos de C++ y el uso de new y delete (que son muy buenos para trabajar con clases y objetos).

Bibliografía



17 octubre 2009

Beds are burning

En mi post pasado estuve hablando sobre el cambio climático y algunas cosas que podemos hacer desde nuestra computadora para ayudar a no contaminar, a reducir el daño que le estamos haciendo al planeta y el cambio climático (lo que originó toda mi discusión fue mi compromiso en el Blog Action Day 09).  Aquí también di otra serie de cosas, software, hardware, etc que ayuda un poquito a cuidar nuestro planeta.
Hoy en mi cuenta de Facebook me topé con esta liga que compartió Rossana que se me hizo padrísimo.  Tal vez la música de Midnight Oil te guste más (porque son la versión original, puedes ver el video aquí), pero el mensaje audiovisual de este video es interesantísimo.  Aquí se los comparto:
¡Que lo disfruten!


15 octubre 2009

Tecnología verde

fig_leaf A mí me interesa nuestro planeta, sobre todo como lo estamos dejando.  Aunque creas que tirar basura o ir en carro a un lugar donde podrías ir caminando no es gran problema, todas son cositas que poco a poco van dañando nuestro entorno.  En lo personal he tratado de enseñar a mis hijas a reducir, reusar y reciclar, tenemos un compostero en la casa para no tirar basura orgánica y cosas por el estilo.
Debido a mi preocupación por dejar este lugar mejor de como lo encontré, me uní al Blog Action Day 2009 para hablar hoy sobre el cambio climático.  Hace tiempo escribí un post donde daba muchos consejos de como ahorrar electricidad y otras cosas desde tu computadora (antes de seguir, te invito a que leas mi mensaje: “El verde es vida”).  En un país donde el 70% de la electricidad se genera quemando petróleo (lo cual impacta muchísimo al cambio climático debido a que generan gases que dan lugar al efecto invernadero que hace que la atmósfera rebote parte del calor generado por la tierra de regreso), ahorrar energía contribuye mucho para cuidar el planeta (además de que ahorras dinero).
¿Por qué es tan preocupante el aumento de temperatura?  Si la tierra sigue aumentando de temperatura, en unos 4 o 5 años van a comenzar a descongelarse los polos.  Si esto sucede podemos decirle adiós a todas las playas y ciudades costeras del mundo debido a la inmensa cantidad de agua que está allí en forma de hielo.
Regresando el punto, desde que escribí el mensaje “El verde es vida” han habido algunos nuevos programas.  Por ejemplo, está Edison, un programita que te permite configurar opciones relativos al consumo eléctrico de tu PC.
Reducir el uso de papel y consumibles relacionados es otra buena manera de ahorrar y ser más ecológico.  Hay un tipo de letra, Ecofont, que es muy parecido al Arial, solo que tiene pequeños huecos lo cual te ahorra un 30% de tinta (o tóner) necesario para imprimir.
Si quieres conseguir que alguien aporte dinero para cuidar del medio ambiente mientras haces búsquedas en internet, aquí hay algunos buscadores:
  • Forestle, un buscador neutral de CO2, “salva” 0.1m cuadrado de selva tropical al aportar dinero al The Nature Conservancy para investigar más sobre la protección a los bosques tropicales.  Forestle usa el motor de Yahoo! para hacer la búsqueda.
  • Znout es otro buscador que no emite CO2 (usa los ingresos para comprar certificados de energía renovables que balancea sus emisiones) quien consta con el motor de Google para sus búsquedas.
  • Ecocho es un buscador que usa sus ingresos para sembrar árboles.  Por cada 1000 búsquedas, Ecocho patrocina 5 árboles.
Si quieres saber más sobre el ahorro de energía, te recomiendo que visites Twenergy, un sitio dedicado al ahorro energético con consejos prácticos.
Para terminar, este video no tiene nada que ver con computación, se me hizo tan bueno que no pude resistirme en dejar de compartirlo.  Es un proyecto muy fácil que te permite ahorrar electricidad destinada a la iluminación de interiores.  Creo que el video habla por si solo (bueno, tiene audio, así que eso es obvio).
Espero que esto te haya sido interesante y, sobre todo, te ayude a cuidar más de nuestro planeta y poner tu grano de arena para combatir el cambio climático.  ¡Hasta la próxima!


08 octubre 2009

Facebook humorístico

Encontré este video en uno de los blogs de mi amiga Dorix que me pareció muy bueno.
Facebook en la Vida Real
Y esta imagen también la publicó Dorix, quien lo consiguió de la página de Francesc Josep y está buenísimo:
¡Que los disfruten!


Twitter en la vida real

Me encontré con esta imagen que se me hizo gracioso y justo hoy cuando Twitter estuvo fuera de servicio unas cuantas horas.  Ojalá les guste…



06 octubre 2009

Haciendo menús PopUp en Visual Basic 6.0

Hace mucho tiempo escribí como hacer menús usando Visual Basic 6.  Esto era para hacer un menú “normal” porque Visual Basic 6 no tiene la funcionalidad “nata” de un control que haga menús PopUp (también conocidos como menús de contexto o menús de “clic derecho”), a la diferencia de Visual Basic 2005 que tiene un control que te permite hacerlo de forma nativa (lo cual expliqué aquí).  En este post voy a explicar la forma de crear este tipo de menús en Visual Basic 6.

Para esto, hice un proyecto en blanco y abrí el editor de menús e hice un menú normalito (si tienes duda de como lo hice, revisa este post donde lo explico).  Así se ve el editor de menús cuando termino:

01-MenuEditor

Nota: todos los “name” son el mismo nombre que aparece con las anteponiendo las letras “mnu”  (mnuArchivo, mnuSalir, mnuAyuda y mnuAcercaDe).

Ahora mi ventana se ve de la siguiente manera:

02-VentanaDiseno

Ahora voy a escribir código en el evento Form_MouseDown para ver si presionó el botón derecho sobre la ventana.  En caso que esto suceda, voy a mostrar el menú de ayuda (o sea, todo lo que está debajo de mnuAyuda) para que aparezca la opción “Acerca de…”.  Este es el código:

03-Codigo

En el IF reviso si el botón presionado fue el derecho (esto se hace con una operación de bits con el número 2: si está prendido este bit del parámetro Button, que ya viene por default, quiere decir que el usuario en efecto presionó el botón derecho).  Si esto sucede, llamo la función Me.PopupMenu que muestra los submenus del menú indicado (en mi caso, mnuAyuda).  ¡Y listo!  Al ejecutar el programa, se ve así:

04-Ejecucion

¡Y listo!  Espero que te sea de utilidad.  ¡Hasta la próxima!



05 octubre 2009

AShampoo Burning Studio 2010… ¡gratis!

Ashampoo-Burning-Studio-2010-1 AShampoo desde hace tiempo ha hecho muchos programas muy útiles, sobre todo en relación a unidades de disco, quemar discos, etc.  Anteayer les hablé de un programa gratuito que hicieron para buscar/bajar videos de internet.

Hoy me topé en el blog TechBytes la forma de conseguir este software con todo y licencia (cuando normalmente cuesta $50 dólares).  Los pasos a seguir son estos:

  1. Regístrate en esta liga.
  2. En la siguiente ventana escribe tu dirección de emilio y presiona “Send” para registrar.
  3. Te debe llegar un I-Meil de AShampoo con una liga de confirmación.  Haz clic en la liga que te llevará a una página web.
  4. Es esta página, haz clic en la liga para llenar tus datos y escribes unos cuantos (yo no puse dirección y me faltaron muchos otros campos) y una vez que lo termines, AShampoo te va a mandar otro correo con el número de registro para el producto.
  5. Baja e instala AShampoo Burning Studio 2010 aquí.
  6. Cuando lo ejecutes la primera vez, ingresa la clave que te mandaron por correo y ¡listo!

El software está bastante completo, tiene casi todo lo que pudieras querer en una aplicación para quemar CDs, DVDs tanto de datos como de audio o video, etc.  Ojalá te sea útil.  ¡Hasta la próxima!



03 octubre 2009

AShampoo Clipfinder HD encuentra tus videos

Ashampoo-ClipFinderHD Soy fan de los videos en internet.  Los he encontrado extremadamente útiles para dar clases e incluso hacer presentaciones con mis compañeros de la maestría.  Además de cosas totalmente vanas y superficiales, también se puede encontrar mucho material muy interesante.  Muchas universidades e investigadores tienen sus canales en YouTube.
Pese a toda esta belleza, es una lata encontrar los videos y luego bajarlos a tu computadora (porque no puedo depender de internet inalámbrico en clase: ¿y si está demasiado lento y no carga la animación para mi clase a tiempo?).  Y si los bajas, ¿con qué los reproduces?  La mayor parte de los mil programas para bajar videos de YouTube te los deja en formato FLV que solo pocos pueden reproducir, entonces necesitas otros programas para verlo o cambiarlos a otro formato.
Una solución sencilla es AShampoo Clipfinder HD que te busca, baja y convierte videos de YouTube y de otros tantos sitios de videos en línea.  Aquí les dejo un video para que vean de que trata:
Como pudiste observar, la búsqueda está increíble y toda la interfaz (que se parece  a CoolIris, por cierto) está fácil de entender una vez que le agarras la onda.
Por lo pronto lo puedes bajar gratis y, al registrarte, te dan una clave para que puedas disfrutar totalmente del programa (si no te registras, solo funciona unos cuantos días).
Lo puedes descargar aquí y si quieres saber más antes de bajarlo, leí una guía en MakeUseOf (está en inglés paro tiene imágenes de las pantallas).
¡Que te diviertas!

Google Wave: ¿qué onda con esto?

google-wave-logo1 Muchos andan todos entusiasmados con el Google Wave que supuestamente va a revolucionar el correo electrónico como lo conocemos en la actualidad.
Pero, ¿qué es?  Aquí me topé con este video que explica una pequeña parte de lo que Wave es capaz de hacer.  Se los comparto.
Originalmente me topé con el video en Lifehacker.  Si quieres más información de como se ven las pantallas y todo lo que se puede hacer, te recomiendo este post de wwwhats.new (que es una traducción de otro mensaje de Lifehacker, por cierto).  ¡Hasta la próxima!

28 septiembre 2009

Tutoriales para principiantes de Photoshop

adobe_photoshop_logo Me topé con esta página, el Beginners Guide to Adobe Photoshop, la cual es un tutorial muy bueno para principiantes en Photoshop.  Pese a que está en inglés, está fácil de entender.  Es muy, pero muy básico, pero espero que te sea útil.

Otro que tiene ejemplos muy padres es el 50 Great Photoshop Tutorials for Clever Beginners.  Aunque no son tan básicos, casi cualquiera que sabe un poco de Photoshop puede aprender a hacer algunos efectos muy interesantes.

Espero que les sean de utilidad estos sitios.  ¡Hasta la próxima!

Evil Player: nada de maldad y pura música

evil_icono A mi me gusta escuchar música ocasionalmente cuando trabajo en mi computadora.  Sin embargo, me cae gordo el iTunes (solo lo uso para sincronizar mi iPod) porque es un programa muy grande que ocupa mucha memoria.  Y solo quiero escuchar canciones, sin tantas funciones avanzadas que tiene iTunes.  Hace tiempo, mucho tiempo, les recomendé AIMP2, sin embargo ahora me topé con Evil Player, un reproductor súper pequeño (menos de 1MB, lo cual hace que mi computadora no se “haga lenta”) que solo toca canciones y nada más.

Pese a que es un programa pequeño, puede reproducir archivos MP3, MP2, MP1, OGG, AIFF y MOD, así como Shoutcast, Icecast y Icecast2. Y, obviamente, es gratis.  Así se ve la pantalla cuando está en tamaño normal (cuando lo minimizas se queda como un icono pequeño a un lado del reloj en la barra de tareas).

Untitled-1

Descarga el programa aquí.  La primera vez que leí sobre este programa, fue el el blog de Elite Freeware.

Ojalá te sirva.  ¡Hasta la próxima!

17 septiembre 2009

¡Gratis! ¡WinX DVD Ripper Platinum!

¿Alguna vez has querido respaldar un DVD a tu disco duro?  Hay muchos programas que lo hacen, pero generalmente lo hacen en formato MPG propio del DVD o alguna otra cosa rara.

Hoy me enteré que están regalando copias de WinX DVD Ripper Platinum (lo vi primero en The Cheapskate y luego en Life Rocks! 2.0), el cual es un programa muy padre que te permite respaldar DVDs de diferentes tipo (con protección CSS, de cualquier región, etc), los puede codificar en muchos formatos de video populares (AVI, WMV, MPEG, MP4, etc.), tiene soporte para muchos reproductores portátiles (como el iPod, iPhone, iTouch, Zune, PSP, etc.), puede extraer el audio del video, es fácil de usar y de deja el video en muy buena calidad.  ¿Qué más podrías pedir?

La oferta se termina el 30 de Septiembre, así que no tardes en bajarlo.  Puedes hacer clic en la liga que está abajo para ir a la página de descarga.

Bajar WinX DVD Ripper Platinum

Espero que te sea útil.  ¡Hasta la próxima!

08 septiembre 2009

Encadenándose en C y C++

cadenas Las cadenas son tipos de datos esenciales para las aplicaciones de hoy.  Imagínate un programa donde no pudieras escribir tu nombre, dirección o cualquier otra palabra.  Sin embargo, en C el tipo de dato String (o algo similar) no existe (otros lenguajes, como Visual Basic 6, 2005 y 2008 sí lo tiene) sino que tienes que declarar un arreglo de caracteres (si tienes dudas sobre arreglos en C/C++ puedes ver este post).

En este post voy a ejemplificar como se pueden manipular cadenas de texto en C y C++.  El mensaje se divide en dos partes: en la primera voy a tratar cadenas en C (lo cual también funciona en el C++) y en la segunda voy a usar objetos propios de C++ (lo cual no funciona en C “no-mas”). 

Cadenas en C

Dicho lo anterior, comencemos con el uso de cadenas en C “normalito”.  Para empezar, se declaran como cualquier otro arreglo de tipo char, por ejemplo:

char x[15];

lo cual declara un arreglo/cadena que puede contener 14 letras máximo.  ¿Por qué solo 14 cuando lo declaré de 15?  Precisamente porque todo texto en C debe terminar un el carácter ‘\0’ que significa “hasta aquí terminó el texto”.  De esta manera, si almacenas “Tony”, realmente se guarda “Tony\0” y eso le permite a C manejar cadenas de diferente longitud.

También se permite declarar una cadena mediante un apuntador (seguramente sabe, y si no aquí te cuento el chisme, un arreglo puede ser usado como apuntador y viceversa).  Si ese es el caso, podrías declararlo como:

char *x;

Solo que en este último caso, no defines la longitud máxima que puede tener la cadena.

Como es un relajo intentar usar cadenas como arreglos, alguna alma caritativa se le ocurrió hacer un montón de funciones que nos facilitan la vida a la hora de usar cadenas.  Esta librería es la string.h y voy a mencionar sus funciones principales (abajo escribo un programa sencillo que ejemplifica su uso y sintaxis):

Función

Propósito

strcpy

Asigna una cadena a otra.  El nombre de la función viene de STRing CoPY.

strcmp

Compara 2 cadenas para ver su orden alfabético.  El nombre viene de STRing CoMPare.

strlen

Devuelve la longitud de una cadena (o sea, el número de caracteres que lo compone).  El nombre viene de STRing LENgth.

strcat

Añade una cadena al final de otra.  El nombre viene de STRing conCATenation.

Veamos un ejemplo muy simple que ejemplifica el uso de estas funciones.  Aquí está el código fuente (haz clic sobre la imagen para que se vea en grande) que fue hecha con el compilador Borland C++ versión 5.02 (que puedes descargar gratis aquí).

01-Código

Así se ve a la hora de ejecutar el programa:

02-Ejecución

Además de estas funciones básicas, también tiene funciones para encontrar un carácter en una cadena (strchr y strrchr), buscar subcadenas (o sea, extraer parte de la cadena con strstr), etc.

También cabe recalcar que en la librería ctype.h existen funciones para comparar caracteres, pero esto se tiene que hacer un carácter a la vez.  Por ejemplo isalnum te dice si es un carácter alfanumérico, isalpha te dice si es una letra,  isdigit te dice si es un número (dígito entero), islower te dice si es una letra minúscula, isupper si es una letra mayúscula, entre otros.  También puede convertir caracteres, por ejemplo toupper convierte un carácter a mayúscula y tolower lo hace minúscula.

Si solo te interesa cadenas en C, hasta aquí llegamos.  Sin embargo, si quieres adentrarte al mundo de los objetos, te sugiero que te quedes.  C++ tiene una clase que hace el uso de cadenas mucho, pero mucho más sencillo.

Cadenas en C++

En C++ otra persona iluminada decidió facilitarnos la vida aún más.  Aprovechando las cualidades de la programación orientada a objetos (si quieres saber más sobre estas características, puedes leer este post sobre la programación orientada a objetos) y creó una clase llamada string que nos brinda muchas facilidades para manejar este tipos de datos.  Vamos viendo de qué se trata.

Aquí pongo el código de un programa que usa el objeto string.  El código está hecha en Visual C++ 2008 Express Edition (que puedes conseguir gratis aquí).  Si tienes problemas en como usar el Visual C++ 2008, puedes ver el tour que hice aquí.

03-Código 

Y así se ve a la hora de ejecución:

04-Ejecución

Al igual que con la librería string.h en C, hay funciones para buscar, generar subcadenas, etc.  Aquí pongo una tabla donde vienen muchas funciones que puedes hacer con el objeto string.

Ejemplo

Lo que hace

cin >> s;

Cambia el valor de s con lo que teclea el usuario.
El valor termina cuando encuentre un espacio o ENTER.

cout << s;

Escribe en la pantalla lo que está guardado en s.

getline(cin, s, ‘\n’);

Lee todo un renglón desde el teclado (ver el código que escribí antes).

i = s.length();
i = s.size();

Devuelve el número de caracteres que contiene la cadena (ver ejemplo).

if(s.empty()) i++;
if(s =
= "") i++;

Ambos ejemplo incrementan i en 1 si la cadena está vacía.
if (s < s2) i++;

Compara dos cadenas alfabéticamente.  Aquí incrementa i si s es menor que s2.

s2 = s2 + "x";
s2 += "x";

Concatena x al final de s2.

s = s2.substr(1,4);
s = s2.substr(1,50);

Subcadenas:
El primer ejemplo comienza en la posición 1 de la cadena s2 y devuelve los 4 siguientes caracteres (4 letras incluyendo el de la primera posición).  El segundo ejemplo devuelve las 50 primeras letras o hasta que termine la cadena.  Recuerda que la primera posición de una cadena es el 0.

s.replace(4,3,"x");

Reemplazo de subcadenas:
Reemplaza los 3 caracteres de s comenzando en la posición 4 con el carácter x.

s.erase(4,5);

Elimina 5 caracteres de s comenzando en la posición 4.
i = s.find("ab",4); Búsqueda de subcadenas:
Devuelve la posición donde comienza la cadena “ab” en s comenzando a buscar desde la posición 4.

Espero que esto te de suficiente material para hacer todo tipo de cosas con cadenas en C y C++.  ¡Hasta la próxima!

Related Posts Plugin for WordPress, Blogger...