Instalacion de Cassandra en Windows

Hola a todos!


Como sabran cassandra database nace del proyecto Apache y su princial virtud es la facilidad de escalabilidad que nos brinda en nuestros datacenter. Para entender lo de escabilidad de un modo mas basico, se refiere por ejemplo a que los motores de BD tradiccionales como MySql,MsSql,Oracle (En versiones cliente servidor) tienen un almacenamiento lineal en disco, si nuestra base de datos crece rapidamente deberiamos trasladar nuestra base de datos a un servidor con mas capcidad para rsponder ante los requesitos o en su defecto conectar nuevos discos, tarea que se vuelve tediosa y costosa si nuestra infromacion crece rapidamente manejando grandes volumenes de informacion, Sin embargo e modo de funcionamiento de este tipo de database es en base a nodos, es decir puedo alojar la infroamcion entre distintos servidores por que su arquitectura me lo permite asi.

La web principal de Cassandra es la siguiente https://cassandra.apache.org/ podemos obtener la infromacion que necesitamos sobre este proyecto.

Instalacion!

Para instalar Cassandra en windows (Yo lo hice en un windows 7) deben cumplir con unos requerimientos inicales como es la instalacion del JRE en version 7, y estabecer las variables de entorno como muestra la siguiente imagen


Luego deben ir a la siguiente pagina http://planetcassandra.org/cassandra/?action=true y seleccionar el s.o a usar y la version a descargar



Al descargar el Msi se deben seguir los pasos de insalacion comunes, luego de finalizada la instalacion nos abrira en el navegador el administrador de cassandra y podemos comenzar a trabajar.

Como podran ver en el panel central nos muestra la infroamcion relevante del estado de nuestro database como son los cluster conectados, la capacidad de almacenamiento entre otros.

Los drivers para conectar con visual studio lo pueden descargar ejecutando el siguiente comando en el package manager console
Install-Package CassandraCSharpDriver

o descandolos de la siguiente pagina: https://www.nuget.org/packages/CassandraCSharpDriver/

Saludes y Dios les bendiga

windows.showmodaldialog no carga en ASP.NET

Hola a todos.

Hace poco me encontr con un gran inconveniente y es que en los proyectos que estaba trabajando desde el comienzo se empezo a trabajar con windows.showmodaldialog para abrir otras paginas de nuestro sitio y esperar respuesta para continuar con la logica interna, el problema ahora es que Chrome quito el soporte a esta funcionalidad y para un proyecto que pretende ser funcional y estable en los distintos navegadores esto es algo que hay que corregir.

El error se presenta con la siguiente descripcion
Uncaught TypeError: undefined is not a function 

y desde la consola de chrome se ve algo como lo siguiente


Buscando que hacer tuve varias alternativas, mi primera fue cargar un jFrame en vez del showmodaldialog dinamicamente, pero el tiempo de carga es bantante lento e influye en el siclo de vida de nuestra pagina, asi que mi segunda opcion fue decidir entre user web controls o web custom controls, para nuestros objetivos que necesitabamos encapsular la funcionalidad de una pagina web la mejor opcion contemplada ha sido los web user controls, solucionando el error de bloqueo en el navegador y mejorando el tiempo de respuesta y con un poco de diseño podemos obtener una buena presentacion profesional.

Esperero les sirva el Tip, saludos y Dios les bendiga.

Hosting para codigo fuente

Hola a todos.

Esta vez vamos a mirar acerca del alojamiento de codigo fuente, para los que desconocen del tema, el fin es concentrar nuestro codigo fuente en un servidor principal, y a travez de confirmaciones y actualizaciones los miembros del equipo pueden ir enviando sus cambios y recibindo los cambios que realiaron los demas desarrolladores en un proyecto comun. Otra de las ventajas que tenemos al usar estas herramientas es que los cmabios se registran con un  numero de version, en caso de un error podemos volver atras ubicando el numero de versions que funcionaba y restaurar esa copia de seguridad.

Como funciona?
Como se explicaba en la introduccion un team de desarrolladores puede ir confirmando sus cambios y obteniendo lsod e los demas compañeros por un proceso de versionamiento. En el mercado existen varias herramientas para esta finalidad, mi experiencia profesional ha sido mayormente con Subversion, es facil intuitivo y funcional, pero en la actualidad estoy trabajando con GIT por su modo de funcionamiento, A continuacion hay una imagen tomada de  https://www.atlassian.com donde se resume la funcionalidad y se observan las diferencias entre estos dos tipos de herramientas



La diferencia basicamente es que con subversion tenemos una copia local en nuestro equipo que es con la que desarrollamos y al confirmar enviamos al servidor principal y sia ctualizamos traeriamos toda la informacion actualizada a la fecha a nuestro equipo. Pero con GIT mantenemos un repositorio local y el repositorio principal permitiendo tener un proceso mas descentralizados con ciertas ventajas, ejemplo digamos que en el momento no podemos conectarnos a internet y necesitamos restaurar una copia antigua funcional pero como nuestro pc aloja un propio repositorio GIT podemos hacerlo desde ahi, cosa que consubversion no funcionaria.


Como hacerlo?

Buenos, para hacerlos podemos tener nuestro propio servidor de subversion en nuestro pc, esto es bueno en cierto punto si nuestro equipo es capaz de mantenerlo en cuestion de rendimiento, pero podemos ademas contar con alternativas gratuitas de alojamiento en la web, la idea es crear una cuenta en uno de estos sitios y crear un reporsitorio entonces nuestras confirmacions estran alojadas en este servidor. Entre las alternativas podemos encontrar los siguientes


  1. https://code.google.com/ Este servicio se caracteriza por alojamiento gratuito de codigo y permite buscar entre sus servidores los proyectos que han subido otras personas y descargar una copia a nuestro PC
  2. https://www.codeplex.com/ Servicio gratuito de alojamiento de fuentes mantenido por Microsoft, al igual que el anterior podemos navgar y descargar los proyectos de otros usuarios
  3. https://bitbucket.org/ Este servicio se diferencia de los dos anteriores en que podemos establecer que nuestro repositorio sea privado y bloquear asi el acceso a otros usuarios a ver y descargar nuestras fuentes
En internet se encuentran muchas alternativas, se basa en las necesidades de cada quien se escogera si mantener una copia local o usar un servidor de aljamiento.

Saludos y Dios les bendiga.







Fibonacci, Factorial, Tablas de Multiplicar y Listas en shell linux

Hola a todos tiempo sin escribir. Siempre con ganas de compartir una que otra cosita pero entre las ocupaciones me quedo sin hacerlo. esta vez les voy a compartir un programa en shell linux que lo hice para estudiar para un parcial y contiene lo siguiente:

  1. Un menu en shell linux (EN si contiene varios)
  2. Operaciones matematicas en shell linux
  3. Generación de tablas de multiplicar en shell linux
  4. Fibonacci en shell linux
  5. Factorial en shell linux
  6. Listas (escritura y busqueda dentro de un archivo) en shell linux
bueno la aplicación dispone de varios menú y hace control de flujo sobre ellos por si quieres volver a ejecutar una operación o ir saliendo.

Y no lo van a creer pero despues de pasar casi toda la noche estudiando y haciendo esto el profesor coloco en el parcial determinar si un numero era primo o no jajaja. bueno ese codigo se quedo en la U si que me quedo sin compartirlo :D

Ahora, el código de la aplicación:


#!/bin/sh

#Programita para estudiar para el parcial de Sistemas Operativos 2

opPPal=0 #esta variable controla que se vuelva al menu ppal

while (test $opPPal -lt 1) || (test $opPPal -gt 1)
do 

op=0 # esta es la variable que me va a controlar el  flujo del while

while (test $op -lt 1) || (test $op -gt 6)
 do
clear
echo " Universidad Popular del Cesar"
echo " "
echo " "
echo "Seleccion una opcion: "
echo " "
echo "1. Operaciones matematicas "
echo "2. Tablas de Multiplicar"
echo "3. Fibonacci"
echo "4. Factorial"
echo "5. Listas"
echo "6. Salir "
echo " "
echo "Operacion a ejecutar: \c "
read op
done #hasta aqui el wuile del menu

case  $op
in

 1) #Opcion de operaciones matematicas
    clear
    echo Operaciones basicas
    echo " "
    echo "Num 1:  "
    read num1
    echo " "
    echo "Num 2: "
    read num2
    #pimero mostramos la suma
    resultado=`expr $num1 '+' $num2`
    echo "El resutldo de la suma es: $resultado"
    #segundo la resta
    resultado=`expr $num1 '-' $num2`
    echo "El resutldo de la resta es: $resultado"
    #tercero la multiplicacion
    resultado=`expr $num1 '*' $num2`
    echo "El resutldo de la mult es: $resultado"
    #cuarto divicion
     resultado=`expr $num1 '/' $num2`
    echo "El resutldo de la div es: $resultado"
 
    ;; #fin case 1
 2) 
     # Genera la tabal de multiplicar de un numero
     clear
     echo "Tabla de Multiplicar"
     echo " "
     echo "Numero:  \c"
     read nMult
     echo " "
     echo "Los resultados son: "
     echo " "  
     ii=1
     while (test $ii -le 10) 
     do
 mult=`expr $nMult '*' $ii` 
      echo  "$nMult * $ii = $mult"
     
        ii=`expr $ii '+' 1`     
     done #fin while contador multiplicacion

   ;; #fin case 2


3)
  # Genera el fibonacci de un numero

  clear
  echo "Fibonacci de un numero"
  echo " "
  echo "Digite un numero: \c "
  read nFib

  echo "El fibonacci es: "

  nActual=1
  nAnte=-1
  z=1
 
  while (test $z -le $nFib)
  do
    c=`expr $nAnte '+' $nActual` 
    nAnte=$nActual
    nActual=$c
    
    echo "$c" 
    
    z=`expr $nAnte '+' 1`
  done #fin while fibonacci   


  ;;
4)
  #Genera el factorial
  clear
  echo "Factoria de un numero"
  echo " "
  echo "Digite un numero: \c "
  read nFact
  numero=1
  i=1
  while (test $i -le $nFact)
  do     
     bbb=0
     aa=1 
     
     while  (test $aa -le $i)
     do
       bbb=`expr $bbb '+' $numero`
       aa=`expr $aa '+' 1`   
       # echo "vale -- $aa"
     done #fin while 2
     
    numero=$bbb

    i=`expr $i '+' 1`     
    
  done #fin while 1 factorial 


   echo "El factorial es: $numero"
 ;;


  5)
    ##porgrama de listas

   
   opLD=0 # esta variable me va a controlar si se mantiene en el menu de la lista o sale del aplicativo
 
   while (test $opLD -lt 1) || (test $opLD -gt 1)
   do 
        clear
 opl=0 # esta es la variable que me va a controlar el  flujo del while para la lectura de la opcion del menu

  while (test $opl -lt 1) || (test $opl -gt 3)
    do
         clear
           echo " Universidad Popular del Cesar"
           echo " "
           echo " "
           echo "Seleccione una opcion: "
    echo " "
         echo "1. Crear - Agregar" #Se necesita crear un archivo que se llame listaMenu en el directorio donde este este script
    echo "2. Consultar"
    echo "3. Salir"
    echo " "
    echo "Operacion a ejecutar: \c "
    read opl
        done #hasta aqui el wuile del menu  de listas

 case $opl
        in
          1) 
            clear
            echo "Digite su nombre: \c"   
            read nombre
            echo $nombre >>  listaMenu
            echo " "
            echo "Almacenado correctamente."
            ;;
          2)
            clear
            echo "Digite el nombre a buscar: \c"   
            read nombre
            grep $nombre listaMenu
            ;;
          3)
            ;;
             
 esac
    

   echo " "
   echo " "
   echo "Desea seguir ejecutando la opcion de listas? 0 (Si) 1 (No) \c"
   read opLD 

  done #hasta aqui el while para mantenerse dentro del menu de listas

  ;;
 6) 
   clear
   echo " "
   echo " "
   echo "Gracias por utilizar el aplicativo y no olvides Cristo te ama y quiere salvarte."
   echo " "
   echo " "
   opPPal=1  #esto es para mandar al aplicativo a salir y omitir el if que esta unas lineas abajo
   ;;
 *)
   # aqui entra cuando no encuenta ninguna de las opciones
 ;;

esac #fin case

if (test $opPPal -ne 1) #si es diferente de 1 salgo de la aplicacion ()
then

echo " "
echo " "
echo "Desea seguir en la aplicacion? 0 (Si) 1 (No) \c"
read opPPal 

fi

done #fin while ppal que permite que se repita el menu

Nota: No soy un experto en shell ni mucho menos en linux esto solo es el fruto de una noche de estudio.

PD:  Cristo te Ama y quiere salvarte.

Algoritmo tiempo mas corto y al azar en C#

En esta ocasión les quiero compartir este trabajo que me toco hacer como requisito en la materia de Sistemas Operativos 1. consiste en desarrollar un simulador o cualquier aplicación que implemente estos algoritmos para funcionamientos. yo lo que hice fue desarrollar un reproductor multimedia que utiliza estos dos algoritmos, claro algo sencillo pero es chevere.

La funcionalidad de estos algoritmos se basa en lo siguiente:

  • Algoritmo Tiempo mas corto: lo que hace es mirar entre todos los procesos y ver cual tiene menor tiempo de duración entonces ira ejecutando el que tenga menor tiempo de duración.  para un reproductor que implementa esta funcionalidad solo consiste en leer el tiempo de duración de la canción que se selecciono (Lista de canciones)cada una de esta representa un proceso luego lo que hago es ordenarlos de menor a mayor y listo voy reproduciendo.
  • Algoritmo al Azar: este algoritmo es sencillo  entre todas las canciones seleccionadas (procesos) va reproduciendo al azar.
Capturas de la aplicación.

En la siguiente pantalla se seleccionan las canciones a reproducir.


las canciones quedaran cargadas en la ventana de configuración (Si alguna no les carga el tiempo. hacer clic en la fila para que capture el tiempo de la canción).


luego hacer clic en el botón inferior simular tiempo mas corto. y el sistema organizara las canciones según el algoritmo de planificación q se halla seleccionado para este caso tiempo mas corto.

Panel izquierdo (Procesos en estado esperando). Panel Central (Procesos en Ejecución  y Panel derecho (Procesos Terminados).


A continuación podrán descargar el proyecto, esta desarrollado en Visual Studio 2010 Profesional


Saber si Javascript no esta habilitado en el navegador en asp.net

Hola a todos.

llevo bastante tiempo sin escribir pero es debido al tiempo :D estaba haciendo unas revisiones y me tope con la necesidad de saber si nuestro script se ejecuta o no. coloquemos un ejemplo digamos que mostramos un mensaje al usuario usando alert y si javascript no esta habilitado este usuario no recibirá esta notificación  despues de un rato pensar y explorando entre lo brindado por asp.net llegue a una conclucion senccilla:

colocar un hiddenfield en la pagina pasarle un valor por javascript  en el evento load luego cuando vaya a imprimir el mensaje verifico si ese hiddenfield contiene el valor pasado por javascript si no es así  quiere decir que javascript no esta actualmente habilitado en el navegador entonces lo que hago es mostrar el mensaje en un label que esta visible a la vista.

esa es la explicación teórica ahora les comparto el código que hice para realizar este proceso:


1
2
3
4
5
6
String idHF = HiddenField1.ClientID;

String alerta;

      alerta = "<script> theForm." + idHF + ".value='_true'; </script>";
      ScriptManager.RegisterStartupScript(this, typeof(Page), 'alerta', alerta, false);

Luego antes de enviar la alerta para este caso se verifica cual es el valor del hiddenfield si es _true quiere decir que si esta habilitado javascript en el navegador.

Esto es un ejmplo basico pero se puede extender muy facilmente para implementar otras funcionalidades.


Nota: Hay que saber que es diferente que el navegador no soporte javascript a que el navegador si soporta javascript pero no tienen javascript habilitado actualmente. para este segundo caso es que se aplica el método que acabo de mostrar.

Creando un nntool en matlab




Hola, buenas tardes a todos.

Después de varios pero varios meses sin escribir les traigo esta utilidad que es una interfaz gráfica en matlab que simula las operaciones del nntool y así poder generar redes neuronales.

a tener en cuenta:
las entradas, salidas, pesos iniciales (en el momento que desee cambiarlos), entrada para la simulación (en el momento que desee cambiarla) se ingresan en forma matricial de la siguiente forma:

[-1 -1 1 1; -1 1 -1 1]

El ordene de ejcuccion es:
  1. Seleccionar el algoritmo
  2. escribir el numero de capas
  3. dar clic en el botón generar capas
  4. el el recuadro neuronas por capa ir seleccionando la capa, escribir al frente el numero de neuronas y seleccionar a bajo la función de transferencia a usar.
  5. hacer clic en aplicar
  6. repetir pasos 4 y 5 por cada capa que tenga la red neuronal
  7. ir a datos de entrenamiento
  8. seleccionar función de entrenamiento
  9. escribir los parámetros iniciales epoch, gl, goal
  10. los pesos iniciales pueden ser automáticos o definidos por el usuario, si son definidos por el usuario aparecer un recuadro donde se debe ingresar los pesos iniciales en forma matricial como se explico al comienzo del post
  11. hacer clic en generar red
  12. hacer clic en inicializar y entrenar red (aqui se muesta la grafica de entrenamiento)
  13. ir a datos de simulación
  14. escoger si simular la red con la matriz de entrada (p) o ingresar una matriz con la cual realizar la prueba.
  15. hacer clic en simular red.
  16. los resultados de la simulación se obtienen en el recuadro resultados de la simulación