domingo, 18 de abril de 2010

Hace un año lanzaron Sensucht ahora conmemorando su 20 aniversario Lacrimosa nos presenta su nuevo álbum



Casi a cumplirse un año de haber lanzado el álbum Sensucht, que en lo personal no fue mucho de mi agrado, desde el día 17 de Abril, la banda de música ¿Gothica?, Lacrimosa nos ira presentando en su página oficial  fragmento de las nuevas canciones que integran este álbum conmemorativo que sale a su venta en México el próximo 7 de mayo, canciones ineditas jamás lanzadas estarán presente en este álbum, destacando la versión extendida de CopyCat, y dos nuevas producciones Sellador y Onhe Dich Ist  alles nichts, esperando con ansías escuchar los experimentos musicales de esta banda :), que se convirtió en una de mis favoritas por las mezclas instrumentales y orquestales que realizan. 

sábado, 20 de marzo de 2010

Un problema puede tener varias soluciones.

Cuando te sientas a programar sueles pensar ¿Cómo resuelvo el problema?. En ocasiones podemos tener problemas tan sencillos como calcular la suma de los números pares del 0 hasta el 20 o un problema tan complejo que implique la sumatoria de N números.

Pero en realidad piensas ¿Qué secuencia de código o instrucción utilizar para ahorrar líneas de código y memoria?

Si nunca lo has hecho, deberías de reconsiderarlo, a veces la solución más sencilla solo lleva dos líneas.

 

“Calcular la sumatoria de todos los números pares del 0 hasta el 20”;

Código 1:

int x = 0;
           for (int i = 0; i <= 20; i+=2)
           {
               x += i;                      
           }
           Console.WriteLine(x);

Apenas 6 líneas de código, cabe de señalar que puedes quitar las { } del for, obteniendo así hasta 4 líneas de código.

Código 2:

int x = 0;
         for (int i = 0; i <= 20; ++i )
         {
             if (i % 2 == 0)
             {
                 x += i;
             }
         }
         Console.WriteLine(x);
         Console.ReadKey();

El mismo problema con otra solución alternativa, ¿Se puede programar de otra  manera?. La respuesta es sí, si se puede programar de otra manera utilizando las técnicas de recursión o por medio de un while

jueves, 11 de marzo de 2010

Calculadora Binomial

Un simple script en Mathematica que calcula la "Distribución Binomial", básica la sumatoria aún no esta terminada. 



Panel[DynamicModule[{r = (n1!/(x1! (n1 - x1)!)*(p1^x1) (q1^(n1 - x1))),
   n1 = 1, x1 = 1, p1 = 1, q1 = 1},
  Panel[Grid[{{Style["Distribución Binomial", Bold],
      SpanFromLeft}, {Grid[{{"Escribe N:",
         InputField[Dynamic[n1], FieldSize -> 4], "Escribe X",
         InputField[Dynamic[x1], FieldSize -> 4]}, {"Valor de P:",
         InputField[Dynamic[p1], FieldSize -> 4], "Valor de Q:",
         InputField[Dynamic[q1], FieldSize -> 4]}, {"Resultado:",
         InputField[Dynamic[r], FieldSize -> 6]}}]}}]]]]

jueves, 18 de febrero de 2010

Otro ejemplo de Bash (Case)

Ahora otro ejemplo de Bash Scripting en Linux usando CASE.


#/bin/bash
#-----------------------------------------------------------#
# -Un programa que lea el sueldo del empleado y la categoría#
# a la que pertenece. Mandar imprimir el nuevo sueldo y la  #
# categoría.                                                #
# -----------------------------------------------------------
# Francisco Javier     #
# fjgm@aol.com.mx      #
# Bash Scripting Linux #
# ---------------------#

#Borrar pantalla
clear;

#Solicitar información al usuario.
echo -n "Escribe el sueldo del empleado: ";
read sueldo;
echo -n "Escribe la categoría del empleado. ";
read categoria;

#Menú de selección con case.

case $categoria in
 1)
   echo "Categoria: ${categoria}";
   echo "Sueldo del empleado: "
   echo "scale =4; ${sueldo}*1.15" | bc
   ;;
 2)
   echo "Categoria: ${categoria}";
   echo "Sueldo del empleado: ";
   echo "scale =4; ${sueldo}*1.10" | bc
   ;;
 3)
   echo "Categoría: ${categoria}";
   echo "Sueldo del empleado: ";
   echo "scale =4; ${sueldo}*1.08" | bc
  ;;
 4)
   echo "Categoría: ${categoria}";
   echo "Sueldo del empleado: ";
   echo "scale =4; ${sueldo}*1.07" | bc
  ;;
esac
#Termina la sección de cases#


Pantalla

lunes, 15 de febrero de 2010

Programa Bash - Aumentar el sueldo trabajador.

El potencial que ofrece el interprete de Comandos de los sistemas Unix, es similar a como si estubiesemos programando pequeñas aplicaciones funcionales para una tarea en especifica del sistema.

A continuación, una adaptación de un problema designado para programarse en C++ de la materia Taller de Programación I, de la UMSA.

#!/bin/bash
# Prog. 28. Escribir un programa tal que dado como dato el sueldo de
#un trabajador, le aplique un aumento del 15% si su sueldo es inferior a
#$ 1000.00 y 12% en caso contrario. Imprima el sueldo del trabajador.

clear
echo -n "Escriba el sueldo del empleado: ";
read sueldo;

if [ "$sueldo" -lt "1000" ]; then  # -lt indica <
  
    echo -n "El nuevo sueldo es : $ ";
    echo "scale = 4 ;  ${sueldo}+ ${sueldo}*0.15" |  bc
fi

if [ $sueldo  -ge "1000" ]; then  #-ge indica >= que

  echo -n "El nuevo sueldo con 12% es : $";
   echo "scale = 4; ${sueldo} + ${sueldo}*0.12" | bc
fi


Sencillo y funcional. 

martes, 2 de febrero de 2010

Integral definida como área de una región.

 

Si f es continua y no negativa en el intervalo cerrado [a,b], el área de la región limitada por la gráfica de f, l eje x y las rectas verticales x = a y x = b viene dada por:

Untitled-1_1

Para realizar el cálculo o mejor dicho la representación del área con el Software Mathematica debemos de declarar la integral para conocer su área, por ejemplo:

Sea Untitled-1_5 una región acotada por los puntos [0,4], el área de la región se presenta con la integral definidaUntitled-1_1

Integramos.

Untitled-1_5

El resultado de la integración viene dado por:

Untitled-1_5

Ahora sustituimos los máximos y mínimos en este caso el Máximo es = 4 y el mínimo es = 0

Untitled-1_5

El área bajo la curva de la parábola limitada en el intervalo [0,4] es 32/3, para graficar la función, utilizaremos el siguiente comando: Plot[ función,{variable, limite inferior, limite superior}]

De modo que obtendremos el siguiente gráfico.

Untitled-1_3

Untitled-1_4

Si queremos sombrear el área bajo la curva agregamos el parámetro Filling –> Bottom

de modo que la función queda

Untitled-1_3

y el gráfico queda. 

Untitled-1_4

En Derive6 esto se puede hacer con el siguiente parámetro AreaUnderCurve(función, variable, limite inferior, limite superior)

En un ejemplo práctico:

AreaUnderCurve(2x^2 - 3x + 2, x, 0, 4)

Luego se elige la ventana Grafico 2D en la barra de herramientas, graficamos y obtenemos

image

domingo, 31 de enero de 2010

Trabajo (Vectores)

El trabajo W realizado por una fuerza constante F cuando su punto de aplicación se desplaza a lo largo del vector PQ viene dada por una de estas expresiones:

1. W = ||proy pq F|| ||PQ||
2. W = F * PQ.

Realizar a continuación los siguientes ejercicios:

Se arrastra 10 pies por el suelo un objeto aplicando una fuerza de 85 libras. Calcular el trabajo realizado si la dirección de la fuerza forma un ángulo de 60° con la horizontal.

Datos:
Fuerza = 85 libras
ángulo = 60°
Desplazamiento: –> : 10 Pies

Usando la formula 1 se tiene:

W=cos(60) *||F|| ||PQ||
W=cos(60)*||85|| ||10||

W= 425 libras-pies


Un vagón de juguete es arrastrado por un niño que tira con una fuerza de 15 libras de una varilla que forma 30° con la horizontal. Calcular el trabajo realizado al arrastrarlo 50 pies.

Datos:
Fuerza = 15 libras
ángulo = 30°
Desplazamiento: 50 pies.

Usando 1

W = cos (30) * ||F|| ||PQ||
W = cos(30)*(15)(50)

W=649.5191 libras-pies

Escribir un Script dinámico en Mathematica que permita calcular esta formula conociendo los datos Fuerza, Ángulo, Desplazamiento.

Panel[DynamicModule[{v = ((fuerza)*(desplazamiento))* Cos [angulo],
   fuerza = 1, desplazamiento = 1, angulo = 0},
  Panel[Grid[{{Style["Calculadora de Fuerza", Bold],
      SpanFromLeft}, {"Escribe la Fuerza:",
      InputField[Dynamic[fuerza], FieldSize -> 10],
      "Escribe Desplazamiento:",
      InputField[Dynamic[desplazamiento],
       FieldSize -> 10]}, {"Escribe Ángulo:",
      InputField[Dynamic[angulo],
       FieldSize -> 5]}, {"Trabajo Realizado:",
      InputField[Dynamic[v], Enabled -> False]}}]]]]


miércoles, 20 de enero de 2010

Creando mapas con Bing Maps y Silverlight

Recientemente he tenido la necesidad de aprender a manejar un poco más el uso de los mapas que ofrece Google, Microsoft o Yahoo!.

Uno de los principales objetivos que estoy buscando es el diseñar una aplicación sencilla para la búsqueda de productos en una determinada zona del usuario.

Por ejemplo yo vivo en las coordenadas: 20.958705,-89.632247 y me gustaría saber que servicios (entiéndase tiendas, escuelas, etc) hay cerca de donde yo vivo y el tiempo estimado que puedo hacer caminando o viajando en coche para llegar a ese servicio.

En este post realizaremos un mapa básico (Mostrar un mapa en una página web) utilizando silverlight.

Lo que necesitamos:

  1. Microsoft Visual Studio 2008 con Service Pack 1 (También funciona la versión Express).
  2. Las herramientas de desarrollo de Silverlight para C#.
  3. El SDK de Bing Maps que podemos descargar de aquí.
  4. Una cuenta .NET (Windows Live o Hotmail)
  5. Una Key para poder utilizar los mapas en nuestras aplicaciones Silverlight la cual podemos crear aquí.

Creando una cuenta Maps Account para Bing.

Primero hay que ir a: https://www.bingmapsportal.com/

Seguidamente si disponemos de una cuenta @live. @msn, @hotmail.com, si no es nuestro caso, tendremos que crear una.

websiteBuscamos en la parte superior derecha la opción que dice Log On, aparecerá la opción de logueo con la cuenta Live / hotmail.

web2

Si es la primera vez que no damos de alta en el servicio, tendremos que llenar una serie de información, como dato adicional no es necesario colocar el nombre de la compañía o un número de teléfono si vamos a utilizar las id con fines educativos.

keyCuando vayamos a crear una Key tendremos que rellenar dos campos. El primero define el nombre de la aplicación y el segundo la URL, como yo trabajare en localhost (utilizando Apache) colocare http://localhost como URL.

Una vez que hayamos colocado los datos que se nos pide, se nos generara una KEY que necesitaremos para la ejecución del API de BING MAPS. 

CREANDO NUESTRO PRIMER MAPA BÁSICO.

Ejecutamos Visual Studio 2008

Creamos un nuevo proyecto Visual C# Silverlight de tipo Silverlight Application.

s1El tipo de Selección para el proyecto lo pondré como Automatically, ya que tenemos la aplicación cargada, agregaremos una nueva referencia dándole clic con el botón derecho del mouse al Folder References y a la opción del menú contextual “Add Reference”.  

En el cuadro de diálogo que nos aparece, seleccionamos la pantalla Browse (Explorar), buscamos la dll. Microsoft.Maps.MapControl que esta instalada en C:\Archivos de Programas\Bing Maps Silverlight Control\V1\Libraries\  Esta ruta es opcional ya que depende donde la hayas instalado tu.

Cuando la librería este cargada deberá de aparecer en el árbol de referencias.

treeAhora nos dirigimos a nuestra aplicación silverlight agregando el siguiente código en la parte xmlns:

xmlns:mapa="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"

Donde mapa es una variable

A continuación agregamos la siguiente línea de código dentro del Grid

<mapa:Map CredentialsProvider="TU KEY"/>

Recuerda que “mapa” es el nombre de mi variable. y TU KEY es el número generado en la página de BING MAPS.

Al compilar la aplicación y colocarla en el directorio httdocs de Apache podemos genera el resultado:

funcion

 

Si quieres agregar más zoom puedes utilizar la función ZoomLevel =”valor” dentro de la etiqueta del mapa que colocamos en el GRID y si quieres que el mapa tenga una determinada coordenada o este centrado en un punto utilizamos la función center =”puntoX,PuntoY”

De forma que quedaría así:

<mapa:Map CredentialsProvider="TU KEY" ZoomLevel="17" Center="20.958705,-89.632247"/>

casaY así por ejemplo se genera una nueva vista, en la imagen superior se muestran las calles o manzanas de la colonia en la que vivo en Mérida, Yucatán México. xD. 

domingo, 17 de enero de 2010

Experimentando con HP 9G

 

Pues como trae el modo de programación, he empezado a usarlo, aunque es muy rustico aparte de que los programas no los puedo salvar en un disco o memoria xD, de más al menos servirá para algunas cosas rutinarias que se ocupe hacer un determinado número de veces.

Este modelo de programación me recuerda a las primeras computadoras, bueno en mi ociosidad como siempre haremos el mismo programa del post anterior.

Hacer un programa que calcule una distancia dado el tiempo en minutos y la rapidez en Km/h.

Bien, lo primero que hay que hacer es lógico, encender la calculadora si esta no se encuentra encendida.

Después seleccionar el modo programación, posteriormente el tipo de programa en modo MAIN, luego seleccionar el área de programación, yo trabajare en la 0.

INPUT R;
INPUT T;
D = ((R/60)*T);
PRINT “Distancia: “, D;
END;

Y esto es un programa xD.

jueves, 14 de enero de 2010

Minizando el MSN en la barra de Notificación del Sistema.

:

Ya era un tiempo de encontrar una manera de poner el Icono del MSN en la barra de notificaciones del sistema  al costado del reloj, ya me estaba enfadando de tenerlo diario ocupando un espacio más.

1. Ir al icono del MSN y darle click con el boton derecho del mouse seleccionar propiedades.
msn1
En el cuadro de propiedades buscar la pestaña Compatibilidad, y seleccionar "Ejecutar el programa con compatibilidad para": Windows XP (Service Pack 3)

msn2

Luego damos clic en aplicar y posteriormente en aceptar.


Ahora cuando ejecutemos el msn y le demos clic al botón cerrar, este se colocará en el área de notificaciones del Sistema junto al Reloj.

msn3


Si tienes un sueño haslo realidad ¡Qué nada te detenga!.