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!


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.




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!


El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...