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!
Related Posts Plugin for WordPress, Blogger...