Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Visitantes








Conversación

  • Samantha Santin: ola me pueden ayudar con lo basico para un examen de linux , estoy en 10 mo de basica , por favor , gracias  
  • alexandra: hola...tengo problemas para configurar las llamadas y crear los troncales....uso elastix 2.0.3 con asterisk 1.6...y soy nueva en esto..puedo relizar llamadas dentro de una misma oficina, pero no puedo sacarlas fuera, es decir locales e internacionales...necesito asesoria...gracias  
  • Ben: Welcome to visit www.vogue4biz.com and www.seekjersey.com! Wholesale Jordan Shoes and NFL/NHL jerseys!New Arrival ! Free Shipping !
    Consequently, a Avirex jacket variety evolved into winner fashion4biz already in the market, mainly with their variety of air travel puma shoes women jackets which in turn for the most part mimics those of journey outdoor jackets put on around WWII. Due to its results, Avirex make have in addition enhanced by jackets to other common attire outlines including t shirts, hoodies, along with jeans.
    A great number of completely new attire lines also gained plenty of celebrity inside entertainment world. To its captivating pattern in addition to level of quality attire, Avirex includes received its own head connected with celebrity followers which include: Ruben Travolta, Will certainly Henderson, Puffy Hair combs, Chad Good ole', Shaquille O'Neal, Busta Rhymes,, puma shoes ladies Sylvester Stallone, Missy Elliott, Eminem, Nas, All 5, Procedure Guy,, Make Nubian, Lmost all Awesome L, David Cena, as well as Georgio Armani. Start off your individual from suppliers avirex company by www.vogue4biz.com
    Avirex regarding todayIn women s puma shoes 2008, this Avirex make has been bought in 3 entire ladies puma shoes suede puma shoes world districts, United states of america, European countries puma shoe sale along with The japanese. A brand new owner of Avirex brand in the us cat puma shoes can be Draw Ecko Corporation. According to a lot of people, each one districts possess their own libraries regarding Avirex garments range. Not really a pair of parts get identical types associated with outfits. His or her just likeness is with their particular usage of brand.
    Even puma ladies shoes so, the availability associated with flight handling outdoor jackets were quit afterwards that year. In line with Mark, all of Avirex printed government and timeless apparel had been discontinued along with used a new Clymans firm, Cockpit U . s .. Start out your own from suppliers avirex company by Sevenwholesale.com.  
  • Fernando Hernández: Hey! Ya no estan disponibles los posts sobre facturación electrónica en México, podrías pasarme el tutorial o la clase en php? Por favoooor. Gracias  
  • daniel nuñez: buenas soy de venezuela y tengo una duda yo lo que quiero es hacer una iso debian que tenga todos los paquetes necesarios completos y programas como synaptis fortran java los pluging de video y sonido ya instalados osea que tenga todo lo necesario instalado pero sin que sea una instalacion con un cd netinst, es posible ?  
  • Cesar villegas: Buenas!!! oye no tienes programado algún curso?  
  • Urbano: Hola soy de Argentina.
    Desde hace un tiempo tengo instaldo Asterbilling SL y me parece un rpoyecto útil e interesante. Ahora me compré un AT 530 con la intension de pasar la tarifa al telefono pero seguramente algo estoy haciendo mal ya que despues de configurar el script con los datos del AMI; MySQL y ejecutar el comando que indica el manual.. no pasa nada, todo sigue igual y no se muestra la tarifa en la pantalla del telefono. Tal vez deba configurar algo tambien en el telefono.. la verdad no se, es que tampoco soy un experto en la materia. Les dejo algunos datos que talvez sean utilespara que me puedan ayudar: Tengo Elastíx 2.0.3 con Asterisk 1.6; FreePBX 2.7.0.3; A2Billing 1.8.1; Astercc 1.4 y Asterbilling SL. Espero que me puedan ayudar; desde ya muchas gracias.  
  • kike: Oye filein.. necesito una cotización de unas FxO para analógicas porfa..
    saludos  
  • cristy: hola por favor tengo problemas para conectar agi con asterisk me sale un error de broken pipe, sabes de que se trata???  
  • Jose: Heyu como podria funcionar con el CM15?
    Gracias  

Escribe el código Captcha que estás viendo

Personal

  • Reportaje de ESPN sobre La Copa Benito Juarez de la Sierra de Oaxaca

    Buscando información sobre quién ganó la Copa Benito Juárez 2009 allá en mi linda tierra de la Sierra Norte de Oaxaca, encuentro un reportaje de ESPN sobre este torneo.
    La copa Benito Juárez es un torneo que se lleva a cabo cada año en el pueblo de Guelatao de Juárez como conmemoración del natalicio del Benemérito de las Américas el Lic. Don Benito Juárez García. En este torneo de basquetbol participan las comunidades Zapotecas, Mixes y Chinantecas de la Sierra Norte de Oaxaca, siendo un torneo representativo lo que indica que cada equipo tiene que ser originario ó descendiente de la propia comunidad.
    El Basquetbol en la Sierra Norte de Oaxaca es el deporte preferido, esto debido a la orografía oaxaqueña que está compuesta de montañas, ríos y más montañas por lo que por lo que espacios planos son pocos comunes y solo se prestan para la práctica del baloncesto.
    Santo Domingo Cacalotepec(HDR)

    Calcetas NBA para tus Tenis Jordan o Lebron James, consíguelas aquí en Mercado Libre.



    Solo $90 C/U

  • Porque jugar barajas de niño es muy bueno

    Hace un rato en lo que "hojeaba" la televisión, estaba viendo una entrevista en canal 22 a Alberto Coto quién prácticamente es una calculadora humana, en la entrevista el moderador del programa en una calculadora calculaba el cubo de un número de 2 digitos, y apenas iba diciendo los 3 primeros números del resultado del cubo Alberto Coto ya decía cuál era el número que se había elevado al cubo, me llamó mucho la atención de su capacidad para hacer cálculos de esta mente brillante que me meti a Youtube para saber un poco más de este genio de las matemáticas.
    En Internet hay un video dónde el rompe un record guines, pues suma 100 números de 1 dígito en 19 segundos, lo que prácticamente indica que esa gran máquina que es el cerebro hace entre 5 y 6 cálculos por segundo.
    Ya en una entrevista le preguntan que como había empezado con esa capacidad matemática y el comenta que le fué naciendo jugando a las cartas cuándo tenía alrededor de 5 años, pues las cartas se basan en hacer sumas de números y demás, y que jugando ajedrez también le ayudó a tener un nivel de concentración para poder después realizar cálculos matemáticos rápidos.
    Curiosamente aquí en México si los padres ven jugando barajas españolas a sus hijos a una edad ya no digamos 5 si no 10 por ejemplo, ya veo la tunda que le darían la misma si no pasan su examen de matemáticas en el cole..
    Aquí el vídeo de Alberto Coto sumando 100 digitos para romper el récord guines
    http://www.youtube.com/watch?v=SFG_Xz3f-80
    Y aqui una entrevista que le hacen sobre como logró ese poder de cálculo
    http://www.youtube.com/watch?v=qJwwoiRmQdg&feature=related
    Realmente impresionante..
  • Ideas para como cambiar de canción en Amarok mediante comandos de voz mientras lavo los trastos

    < pensando en voz alta >
    Hace un rato mientras estaba lavando los trastos acumulados durante la semana -sugerencia si cocinan espagueti, pónganle agua por lo menos a la cacerola si es que la van a dejar varios días ahí amontonada en el fregadero :$ -, entonces andaba oyendo algo de música, y mientras lavaba para poder cambiar de canción en canción tenía que buscar el celular y apretar un botón para que vía bluetooth indicarle al reproductor multimedia Amarok en Ubuntu Linux que pasara a la siguiente canción, entonces entre que las manos con jabón y que se te puede romper un plato, pensaba en como poder usar un dispositivo manos libres bluetooth que permitiría mediante comandos de voz cambiar las canciones, entre otras cosas en tú computadora.
    Y siguiendo pensando en voz alta, recordé a PerlBox-Voice una herramienta basada en sphinx que es un software de reconocimiento de voz, el cuál había probado ya hace varios años y el cuál te permite ejecutar aplicaciones en Linux mediante comando de voz, la configuración de PerlBox-Voice es fácil, solo introduces las palabras y la aplicación a ejecutar cuándo perlbox "oiga" la palabra, entonces se me estuvo ocurriendo que pudiera hacerse una modificación en el código de PerlBox-voice para poder mandar diversos comandos a diversas aplicaciones mendiante la voz usando un manos libres bluetooth ó un micrófono conectado directamente al puerto de audio de la PC.
    La diferencia pensada de la versión actual de PerlBox es que en vez de solo iniciar programas, también en base a comandos de Voz tome perfiles, algo que hacen los controles remotos bluetooth, de tal forma que si activas un perfil para Amarok, puedas usar las funciones de amarok para adelantar, atrasar, pausar, continuar una canción, si cambias a VLC puedas usar las funciones de voz para reproducción de DVDs, si cambias de perfil a modo TV puedas mandar comandos de voz para cambiar de canal, subir volúmen, etc.. y asi sucesivamente para diversos perfiles (fotografía, navegación web, gestión de archivos).
    Lo que teóricamente pasa por mi cabeza es que haya un demonio que esté a la escucha de los comandos recibidos desde los clientes, esos clientes se encargarían de evaluar la información leída por Perlbox-voice y permitirían el cambio de perfil y las acciones si es que asi fueron ordenados, los demonios se encargarían enviar los comandos a las respectivas aplicaciones habilitadas del perfil aprovechando el uso de comandos remotos que tienen diversas aplicaciones.
    Por ahora parece que puede ser factible hacerlo aprovechando la tecnología de PerlBox-voice.
  • Lentes Raynox una manera barata de hacer fotografia

    La fotografía se ha vuelto uno de mis hobbies en los últimos meses, pero debido a la crisis no he querido invertir por ahora mucho dinero en una buena cámara semiprofesional como las Canon XSI, pues están arriba de $ 10,000.00 y ya no se diga de buenos lentes para Macros, Telefotos, Gran Angulares entre otros que el costo de cada una sería lamitad de la cámara que simplemente por ahora sería incosteable.
    Por lo que he decidido continuar con mi camarita Fujifilm S5600 que me ha salido bastante bien y no me puedo quejar de su lente aunque muy básico pero me ha ayudado a capturar algunas imágenes que he compartido a traves de mi Flickr
    Pero no conforme con el lente que trae he buscado información si se le puede puede colocar un lente como tal, pero no es tan fácil ya que el lente de la fujifilm S5600 no es desmontable pues ya viene fijo dentro de la cámara, pero buscando en internet encontré la página de Raynox quienes fabrican lentes adaptables a cámaras como la mía de tal forma que es posible tener super gran angulares, macros, telefotos, etc sin gastar tantos pavos, por lo que en una parte de su página hay un apartado para mi fujifilm S5600 http://www.raynox.co.jp/english/digital/s5600/index.htm y viendo las fotos que se toman con estos lentes simplemente me han dado ganas de tomar mi tarjeta de crédito, entrar a ebay y vía merkalink traerme estos lentecitos hasta la puerta de mi casa para próximas salidas flickeras.. face-smile.png
    Por ahora le he echado un ojo al lente CDR-5000
    El cuál es un lente Super gran angular y que por solo 110 pavos incluyedo el anillo adaptador para la fuji ya se pueden tener esos gran angulares que suelen ser espectaculares, tal como se ve en esta foto que usa el lente raynox mencionado con la fuji s5600
    Fotografiada tomada por MANTOVA en flickr
    Otro de los lentes que me está llamando la atención es el modelo DCR-250 que es un lente para tomar macros que por 54 de los verdes pueden tomarse tomas como la siguiente..
    Fotografiada tomada por Dark Score en flickr
    Sin duda que por ahora tomaré estas 2 opciones que me resultan mucho muy atractivas.. se me hacen agua las manos y los ojos de presionar y capturar imágenes con estos lentes.. face-smile.png
  • C/C++ y algunos problemas de bachillerato

    Hace unos días me contacto un alumno de un COBAO(Colegio de Bachilleres) de Oaxaca, bachillerato dónde estudié hace algunos ayeres, pidiéndome que le asesorara con la resolución de algunos problemas de programación, por lo que le eché la mano ya que le habían pedido que resolviera algunos problemas simples de programación en C/C++ en su materia de informática y a la edad de 15 ó 16 años muy pocos son duchos con este lenguaje de programación - a menos que sean como Xiam que es un chavo que desde corta edad se le ha dado la programada, linuxeada y demás-.
    Por lo que le pedí que me enviara las dudas para ayudarle a resolverlas, cabe mencionar que también tiene años que no programaba en C/C++ pues me he dedicado al desarrollo de aplicaciones web con PHP y AJAX, al igual que desarrollo de aplicaciones para móviles con .Net, por lo que me sirvió resolver estos problemas como recordatorio de C/C++.
    Los problemas son los siguientes:
  • 1.- Diseñar un programa que a partir de la fecha introducida por teclado con el formato día, mes, año se obtena el siguiente día considerando el año bisiesto.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    int main(int argc, char argv)
    {
        char *fecha;
        if(argc>1){        
            fecha = malloc(strlen(argv[1]));
            strcpy(fecha, argv[1]);
        }else{
              char dato[10];
              printf("fecha:");
              scanf("%s", dato);
              fecha = malloc(strlen(dato));
              strcpy(fecha, dato);
        }
        validaFecha(fecha);
        getch();
     }

     validaFecha(char *fecha){
            int datos[2];
            char *ptr;
            int count = 0;
            int error = 0;
            ptr = strtok(fecha,"/");
            while(ptr != NULL)
            {
                 datos[count++] = atoi(ptr);
                 ptr = strtok(NULL, "/");
            }
            //Enero, Febrero, Marzo, Abril, Mayp, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre
            if(count!=3){
                    printf("Error en el formato de fecha...\nHelp :\nFormato del programa\nnextDay dia/mes/anio\n\nEjemplo: nextDay 12/12/2009");
                    error++;
            }else{
                  if(datos[1]>0 && datos[1]<=12){
                      if( datos[1]==1 || datos[1]==3 || datos[1]==5 || datos[1]==7 || datos[1]==8 || datos[1]==10 || datos[1]==12 ){
                          if(datos[0]>0 && datos[0]<=31){
                               if(datos[0]==31){
                                 datos[0]=1;
                                 if(datos[1]<12){
                                       datos[1]++;
                                 }else{
                                       datos[1]=1;
                                       datos[2]++;
                                 }
                               }else{
                                     datos[0]++;
                               }
                          }else{
                                printf("Error en el dia de la fecha");
                                error++;
                          }
                      }else{
                          if( datos[0]>0 && ( (datos[0]<=30 && datos[1]!=2 ) || ( datos[0]<=29 && datos[1]==2 && datos[2]%4==0) || (datos[0]<=28 && datos[1]==2 && datos[2]%4!=0) ) ){
                              if(datos[0]==30 && datos[1]!=2){
                                 datos[0]=1;
                                 datos[1]++;
                              }else{
                                    if(datos[1]==2){
                                        if( (datos[0]==28 && datos[2]%4!=0) || (datos[0]==29 && datos[2]%4==0)){
                                            datos[0]=1;
                                            datos[1]++;
                                        }else{
                                             datos[0]++;
                                        }
                                    }else{
                                          datos[0]++;
                                    }
                              }
                          }else{
                                printf(" Error en el formato de la fecha introducida ");
                                error++;
                          }
                      }
                  }else{
                     printf("%d Error en el mes", datos[1]);      
                     error++;
                  }              
            if(error==0){
                  printf("Dia siguiente: %d / %d / %d\n", datos[0], datos[1], datos[2]);
            }
            getch();
            }
     }
     
  • 2.- Obtener el número de combinaciones de m elementos tomado de n en n es: (m/n) = m!/(m!(m-n)!) que permita calcular el numero de combinaciones de (m/n)
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
     int factorial(int numero);
    int main(int argc, char
    argv)
    {
        int m = 0 ;
        int n = 0;
        int result = 0;
        if(argc>2){        
            m = atoi(argv[1]);
            n = atoi(argv[2]);
        }else{
              printf("m:");scanf("%d", &m);
              printf("n:");scanf("%d", &n);
        }
        if(n<=m){
            result = factorial(m)/ ( factorial(n) * factorial(m-n) ) ;
            printf("\nCombinacion de %d elementos tomados de %d : %d", m, n, result);
        }else{
              printf ("Error el valor de [n] no puede ser mayor que el valor de [m]");
        }
        getch();
     }
     
     int factorial(int numero){
            int i = 1;
            int value = numero;
            for(i=1 ;i<numero; i++){
               value =  value * i ;
            }
            return value;
    }

     
  • 3.- Diseñar un programa que transforme un numero introducido en formato decimal y lo convierta en notación romana, el número debe ser positivo y no excederse de 3000.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void   romanos(int numero );
    int main(int argc, char argv)
    {
        int numero = 0 ;
        if(argc>1){        
            numero = atoi(argv[1]);
        }else{
              printf("Numero :");
              scanf("%d", &numero);
        }
        if(numero>=0 && numero<=3000){
                 romanos(numero);
        }else{
              printf("Error en el valor del numero introducido");
        }
       
     }

        void romanos(int numero  ){
             int residuo  = 0;
             int div = 0;
             char *a = "";
             char *b = "";
             char *c = "";
             
             int i = 0;
             int value = 1000;
             char *romano;
             romano = (char *)malloc(sizeof(char)*100);
             strcpy(romano, "");
             while(numero>0 && value>0 ){
                 residuo = numero % value;
                 if(residuo<numero){
                    div = ((numero-residuo)/value);
                    switch(value){
                        case 1000:
                             a = "M";
                             b = "/V";
                             c = "/X";
                             break;
                        case 100:
                             a = "C";
                             b = "D";
                             c= "M";
                             break;              
                        case 10:
                             a = "X";
                             b = "L";
                             c = "C";
                             break;
                        case 1:
                             a = "I";
                             b = "V";
                             c = "X";
                             break;
                    }
                    if(div==9){
                         strcat(romano, a);
                         strcat(romano, c);
                    }else if(div==4){
                          strcat(romano, a);
                         strcat(romano, b);
                    }else if(div<5){
                        for(i=1;i<=div;i++){
                            strcat(romano, a);
                        }
                    }else{
                          strcat(romano, b);
                          for(i=1;i<=(div-5);i++){
                            strcat(romano, a);
                        }
                    }//fin del si no es menor que 5
                 }//fin de si residuo menor que numero
                 numero = residuo;
                 value = value/10;
             }//fin del while
             printf ("\nNumero Romano: %s\n", romano);
             getch();
               
        }//fin de la funcion
     
  • 4.- Escribir un procedimiento recursivo que escriba un numero en base 10 a otro número en base entre 2 y 9.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void   getBase(int decimal, int base );
    int main(int argc, char
    argv)
    {
        int decimal = 0 ;
        int base = 0;
        if(argc>2){        
            decimal = atoi(argv[1]);
            base = atoi(argv[2]);
        }else{
              printf("decimal:");
              scanf("%d", &decimal);
             
              printf("base:");
              scanf("%d", &base);
        }
        if(base>=2 && base <=9){
                 getBase(decimal,base);
        }else{
              printf("La base debe estar entre 2 y 9");
        }
       
     }

    void  getBase(int decimal, int base ){
             //printf("%d::%d", decimal, base);
             int residuo = 0;
             int entero = decimal;
             char *result;
             char *temp;
             result = (char *)malloc(sizeof(char)*100);
             strcpy(result, "");
             strcpy(temp, "");
             
             while(decimal>=base){
                 residuo = decimal % base;
                 itoa(residuo, temp, 10);
                 strcat(result, temp);
                 decimal = (decimal-residuo) / base;
             }
             itoa(decimal, temp, 10);
             strcat(result, temp);
             result  = strrev(result);
             printf("El numero decimal %d en base %d es %s",entero, base, result );
             getch();
        }
     
  • 5.- Procedimiento recursivo que permita invertir una cadena.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void   invertir(char *cadena);
    int main(int argc, char argv)
    {
        int decimal = 0 ;
        int base = 0;
        char *cadena;
        if(argc>1){        
            strcpy(cadena, argv[1]);
        }else{
              strcpy(cadena, " ");
        }    
        while(strlen(cadena)>0){
            invertir(cadena);
            printf("\nCadena a Invertir[Enter para salir]: ");
            gets(cadena);
        }
     }

      void  invertir(char *cadena){
            int i = 0;
            for(i=strlen(cadena); i>=0; i--){
                 //result[j++] = cadena[i] ;
                 printf("%c", cadena[i]);
            }        
      }
     
  • 6.- Calcular la suma de todos los números en un vector de 100 elementos y obtener su media aritmética.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void   media(int num);
    int main(int argc, char
    argv)
    {
        int vector = 0 ;
        if(argc>1){        
            vector = atoi(argv[1]);
        }else{
              vector = 100;
        }
         while(vector>0){
            media(vector);
            printf("\nTamañoi del vector [0 para salir]: ");
            scanf("%d", &vector);
         }
     }

    void   media(int num){
           int *values;
           int i = 0;
           values = (int *)malloc(sizeof(int)*num);
           int suma = 0;
           float media = 0;
           for(i=0;i<num;i++){
               values[i] = (rand()%100);//numeros aleatorios entre 0 y 99
               suma = suma +values[i];
           }
           printf ("\nVector: ");
           for(i=0; i<num;i++){
               printf("%d, ", values[i]);
           }
           media = (float ) suma / num;
           
           printf("\nMedia :%10.5f", media);
    }
     
     
  • 7.- Escribir un programa que permita sumar el numero de elementos positivos y de elementos negativos de una tabla T en n Filas y en m columnas.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void   tabla(int m, int n );
    int main(int argc, char argv)
    {
        int m = 0 ;
        int n = 0;
        if(argc>2){        
            m = atoi(argv[1]);
            n = atoi(argv[2]);
        }else{
              printf("Filas(m):");
              scanf("%d", &m);
             
              printf("Columans(n):");
              scanf("%d", &n);
        }
         tabla(m,n);
     }

     void  tabla(int m, int n ){
             int dato = 0;
             int pos = 0;
             int neg = 0;
             int i = 0;
             int j = 0;
             int *values = (int *)malloc(sizeof(int)*m*n);
             for (i =  0; i<m; i++){
                 for (j=0;j<n;j++){
                     printf("\ndato[%d,%d]: ", i+1, j+1);
                     scanf("%d", &dato);
                     values[(i*n)+j] = dato;
                     if(dato>=0){
                         pos++;
                     }else{
                         neg++;
                     }
                 }
             }
             printf("\nMatriz\n");        
             for (i =  0; i<m; i++){
                 for (j=0;j<n;j++){        
                     printf ("%d, ", values[(i*n)+j] );
                 }
                 printf("\n");
             }
           
             printf("\nNumeros positivos: %d\nNumeros negativos: %d", pos, neg);
             getch();
        }
     
  • 8.- Suponiendo que existen N ciudades en la red ferroviaria de un pais y que sus nombres están almacenados en un vector llamado Ciudad. Diseñar un programa que lea los nombres de las Ciudades y muestre con que ciudades esté enlazada.
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
     int ferroviaria(int ciudades);
    int main(int argc, char
    argv)
    {
        int numCiudades = 0 ;
        int result = 0;
        if(argc>1){        
            numCiudades = atoi(argv[1]);
        }else{
              printf("Ciudades:");
              scanf("%d", &numCiudades);
        }
       
        if(numCiudades>1){
            ferroviaria(numCiudades);
        }else{
              printf ("Introduzca más de una ciudad");
        }
     }
     
     int ferroviaria(int numCiudades){
         int i = 0;
         int j = 0;
         char *ciudades[numCiudades];
         char ciudad[1024];
         strcpy(ciudad, "");
         int *rutas = (int *)malloc(sizeof(int)*numCiudades*numCiudades);
             
         for(i=0; i<numCiudades; i++){
             printf("\nCiudad [ %d ]", i+1)   ;
             gets(ciudad);
             ciudades[i] = (char *)malloc(strlen(ciudad)*sizeof(char) );
             strcpy(ciudades[i], ciudad);
             for(j=0;j<numCiudades;j++){
                  rutas[ (i*numCiudades)+j] = rand()%2;//1 si hay conexion de ruta, 0 no hay ruta de conexión
                  if(rutas[(j*numCiudades)+i]==1|| rutas[(j*numCiudades)+i]==0 ){
                      rutas[ (i*numCiudades)+j] =rutas[(j*numCiudades)+i];      
                  }
             }
         }
         printf("\nTabla de Ciudades y Rutas\n\t");      
         for(i= 0; i<numCiudades; i++){
               printf("%s\t", ciudades[i]);      
         }
         printf("\n");      
         for(i= 0; i<numCiudades; i++){
                printf("%s\t", ciudades[i]);
                for(j= 0; j<numCiudades; j++){
                       printf("%d\t ", rutas[(i*numCiudades)+j]);
                }
                printf("\n");
         }    
         printf("\nDetalles de Ciudades y Rutas\n\n");      
         for(i= 0; i<numCiudades; i++){
                printf("%s Conexiones: \n", ciudades[i]);
                for(j= 0; j<numCiudades; j++){
                       if(rutas[(i*numCiudades)+j]==1 && i!=j){
                               printf("%s\t", ciudades[j]);
                       }
                }
                printf("\n\n");
         }    
         getch();    
     }

     
  • 9.- Visualizar la matriz transpuesta de una matriz M de 6 x 7 elementos.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void   transpuesta(int m, int n );
    int main(int argc, char argv)
    {
        int m = 0 ;
        int n = 0;
        if(argc>2){        
            m = atoi(argv[1]);
            n = atoi(argv[2]);
        }else{
              printf("Filas(m):");
              scanf("%d", &m);
             
              printf("Columans(n):");
              scanf("%d", &n);
        }
         transpuesta(m,n);
     }

     void  transpuesta(int m, int n ){
             int i,j;
             int *values = (int *)malloc(sizeof(int)*m*n);
             int *mTranspuesta = (int *)malloc(sizeof(int)*n*m);
             printf("\n matriz original\n");
             for (i = 0; i<m; i++){
                 for (j=0;j<n;j++){
                     values[(i*n)+j] =  values[i] = (rand()%100);//numeros aleatorios entre 0 y 99;
                     mTranspuesta[(j*m)+i] =  values[(i*n)+j] ;
                     printf("%d, ", values[(i*n)+j]);
                 }
                 printf("\n");
             }
             
             printf("\n Matriz Transpuesta\n");
             for (i = 0; i<n; i++){
                 for (j=0;j<m;j++){
                     printf("%d, ", mTranspuesta[(i*m)+j]);
                 }
                 printf ("\n");
             }
             getch();        
           
        }
     
  • 10.- Una empresa de venta de productos por correo desea realizar una estadística de las ventas realizadas de cada uno de los productosa lo largo del año. Distribuye un total de 100 productos, por lo que las ventas se pueden almacenar en una tabla de 100 filas y 12 columnas. Se desea conocer:
  • a) El total de venta de cada uno de los productos.
  • b) El total de ventas de cada mes.
  • c) El producto más vendido de cada mes.
  • d) El nombre, el mes y la cantidad de producto más vendido.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void ventas();
    int main(int argc, char
    argv)
    {
         ventas();
     }

     void  ventas(){
             int i,j;
             int *ventasMP = (int *)malloc(sizeof(int)*12*103);
             int productos = 100;
             int mes = 12;
             int totalProducto = 0;
             int productoMV = 0;
             int mesMV = 0;
             int cantidadMV=0;
             printf("\n Listado de Ventas\n\n");
             printf("\n\t\tEne\tFeb\tMar\tAbr\tMay\tJun\tJul\tAgo\tSep\tOct\tNov\tDec\tTotaln");
             for (i = 0; i<productos; i++){
                 printf("\nProducto[%d]\t", i+1);
                 totalProducto = 0;
                 for (j=0;j<mes;j++){
                     ventasMP[(i*mes)+j] =  rand()%100;//numeros aleatorios entre 0 y 99;
                     printf("%d\t", ventasMP[(i*mes)+j]);
                     totalProducto += ventasMP[(i*mes)+j];
                     ventasMP[(100*12)+j]+= ventasMP[(i*mes)+j];
                     if(ventasMP[(101*12)+j]<=ventasMP[(i*mes)+j]){
                            ventasMP[(101*12)+j]= ventasMP[(i*mes)+j];
                            ventasMP[(102*12)+j]= i;
                     }
                     if(cantidadMV<=ventasMP[(i*mes)+j] ){
                         cantidadMV = ventasMP[(i*mes)+j];
                         mesMV = j;
                         productoMV = i;
                     }
                 }
                 printf("%d\t", totalProducto);
             }
             printf("\nVta/Mes\t\t");
             for(i=0;i<mes;i++){
                  printf("%d\t", ventasMP[(100*12)+i]);
             }
             printf("\nProd/Ven\t");
             for(i=0;i<mes;i++){
                  printf("P%d[%d]\t", ventasMP[(102*12)+i], ventasMP[(101*12)+i]);
             }
             printf("\n\nProducto mas vendido: %d", productoMV);
             printf("\nMes: %d", mesMV);
             printf("\nCantidad: %d", cantidadMV);
            getch();
        }
     
  • 11.- Una empresa tiene almacenados a sus vendedores en un registro, por cada vendedor se guarda su DNI, apellidos, nombre, zona, sueldo base, ventas mensuales, total anual y comisión. Las ventas mensuales será un vector de 12 elementos que guardará las ventas realizadas en cada uno de los meses. Total anual será la suma de las ventas mensuales del vendedor. La comisión se calculará aplicando un porcentaje variable al total de venta anual de cada vendedor. Dicho porcentaje variará según las ventas anuales del vendedor, según la siguiente tabla.
    hasta 1,500,000.00 0.00 %
    más de 1,500,000.00 y hasta 2,150,000.00 13.75
    más de 2,150,000.00 y hasta 2,900,000.00 16.50
    más de 2,900,000.00 y hasta 3,500,000.00 17.60%
    más de 3,350,000.00 18.85%
    Dicha tabla se habrá de cargar de un archivo secuencial que contiene tanto el límite superior como el porcentaje.
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void comisiones(int numEmpleados);
    float *leeComisiones(char *archivo);
    int main(int argc, char **argv)
    {
        int numEmpleados=1;
        while(numEmpleados>0){
              printf("Empleados[0 para salir]:");
              scanf("%d", &numEmpleados);
              if(numEmpleados>0){
                  comisiones(numEmpleados);
              }
        }
     }

     void  comisiones(int numEmpleados){
             int i,j, k;
             int *comisiones = (int *)malloc(sizeof(int)*12*numEmpleados);
             int mes = 12;
             float  comision =0;
             float porcentaje = 0;
             printf("\n Listado de Ventas por Empleado\n\n");
             printf("\n\t\tEne\tFeb\tMar\tAbr\tMay\tJun\tJul\tAgo\tSep\tOct\tNov\tDec\tTotal\tPorc.\tComision\n");
             float *porcentajes = leeComisiones("tabla.csv");
             
             for (i = 0; i<numEmpleados; i++){
                 printf("\nEmpleado[%d]\t", i+1);
                 comision = 0;
                 for (j=0;j<mes;j++){
                     comisiones[(i*mes)+j] =  rand()*(rand()%100);//ventas aleatorios de los empleados
                     printf("%d\t", comisiones[(i*mes)+j]);
                     comision = comision + comisiones[(i*mes)+j];
                  }
                  printf("%10.5f\t", comision);
                  k = 0;
                  while( porcentajes[k]!=-1 || comision<=porcentajes[k]){
                        k+=2;
                  }
                  if(porcentajes[k]==-1){
                     porcentaje = porcentajes[k-1];
                     comision = comision * (porcentajes[k-1]/100);
                  }else{
                      comision = comision * (porcentajes[k+1]/100);
                      porcentaje = porcentajes[k+1];
                  }
                  printf("%10.5f % \t", porcentaje);
                  printf("%10.5f\t", comision);
             }
             printf("\n");
        }

    float *leeComisiones(char *archivo){
         int status = 1;
         int ok=0;
         float *porcentajes;
         char linea[1024];
         char *ptr;
         int count = 0;
         int i;
         strcpy(linea, "");
         
         porcentajes=(float *)malloc(sizeof(float)*2*10);
         
         FILE *flujo; /* Se declara un flujo */
         if ( (flujo = fopen(archivo,"r")) == NULL )
         {
                printf("No se pudo abrir %s\n",archivo);
            status = 0;
          }else{
                  do {
                      ok = fscanf(flujo, "%s", &linea);
                      if(ok && !feof(flujo)){
                            ptr = strtok(linea,",");
                            while(ptr != NULL)
                            {
                                 porcentajes[count++] = atof(ptr);
                                 ptr = strtok(NULL, ",");
                            }
                      }
                  }while(!feof(flujo));
                  porcentajes[count]=-1;
          }
          return porcentajes;
    }
     
    Requiere el archivo tabla.csv
    1500000,0.00
    2150000,13.75
    2900000,16.5
    3350000,17.6
    10000000,18.85
     
    Para compilar estos programas se requiere de DevC++.
  • El GULEV 2008 crónica de una decepción anunciada..

    Me llegó hoy un correo del GULEV anunciando su tan esperado programa de conferencias para el Congreso Internacional de Software Libre que se llevará acabo esta semana del 4 al 6 de Diciembre del 2006 en el paradisiaco Cancún.
    Pero viendo el programa me desilusionó que no haya más de 8 ponentes en un evento de Software Libre, y todo esto por la cantidad de $ 1, 950.00 pesos más gastos de Hospedaje y demás, que como está la situación está de pensarse para irse a gastar esos pavos en un evento que no promete mucho y más con lo caro que es Cancún, sin duda hay algunas charlas que valdría la pena oirlas tal como la plática de Ramus Lerdorf creador de PHP y ya en su caso aprovechando para ver el partido de vuelta en Cancún entre Santos y Atlante para ver el show de Cuau que vino a resucitar la tan devaluada temporada del futbol mexicano.
    Lo que me parece lamentable y una falta de respeto es que los organizadores del GULEV lancen una petición de ponencias, que por lo que ví recibieron más de 80, y al final prácticamente no acepten más de un par, y terminen poniendo en sus programas de conferencias a los patrocinadores del evento, que al final solo irán a leer diapositivas con información que puede verse en una búsqueda en Google, pero sin mostrar nada en vivo y a todo color que anime a los asistentes a inclinarse por el uso de Software Libre.
    Recuerdo aquel primer GULEV que asistí en el año 2003 en el WTC de Veracruz y para luego regresar en el 2004, realmente se veía y sentía un ambiente de camaradería en los pasillos del WTC, habiendo varias ponencias simultáneas, para todo tipo de usuarios, siendo posible encontrarse en los pasillos a varias personalidades de software libre y convivir con ellos, prácticamente siendo una fiesta ese evento de Software Libre.
    Ojalá el GULEV vuelva a sus orígenes, tal como ahora lo es el ENLi que definitivamente desde mi personal punto de vista es el mejor congreso de Software Libre que hay en México hasta ahora un evento que no discrimina a ponentes ni asistentes, que aparte sus costos son por mucho más baratos que los del ENLi y la calidad de los ponentes en muchos casos suele ser bastante buena, dónde no me cabe la menor duda que más de uno como yo se ha traído nuevos conocimientos, nuevas ideas y nuevos proyectos despues de escuchar a mexicanos entusiastas que muestran los experimentos que van haciendo en un cuarto de su habitación, en algún computador de su escuela o algún tiempo libre de su trabajo.
    Le deseo éxito al GULEV 2008, pero también les recomendaría que no se olviden de aquellos orígenes que tuvieron, que desde mi punto de vista es compartir con la "comunidad" los entusiastas del software libre en México antes que volver un negocio los congresos de SL, qué claro están en su derecho de hacer del GULEV lo que mejor les convenga a sus organizadores, cosa que respeto más no comparto, pues es interesante escuchar a grandes como Ramus Lerdof , Miguel de Icaza, Richard Stallman, John "Maddog" Hall, etc.. pero también es grato oir a las chicas y chicos que muestran sus pininos en esto del Software Libre, que aunque en México hay pocos ejemplos de creación de Software Libre, si hay muchos ejemplos de implementación y uso de Software Libre..
  • Administrador de Descargas para Linux

    Hace algunas semanas adquirí una cuenta de Rapidshare.com, el cuál es un servicio que te permite descargar infinidad de archivos sin límite de descarga y con un ancho de banda bastante rápido, por lo que decidí aprovecharlo para obtener algunos archivos, en Windows he usado Free Download Manager, pero en el caso de Linux el gestor de descargas de Firefox no me convence, al igual que Kget que viene integrado dentro de KDE, esto ya que si por alguna razón se pierde la conexión también pierdo todo el avance de la descarga realizado, por lo que buscando un Administrador de Descargas encontré WebDownloader for X en su versión 2.5.
    Web Downloader me permite ir agregando URL de archivos a descargar que los va poniendo en una cola, de tal forma que en la configuración le digo cuántos puede ir descargando simultáneamente, si en algún momento se interrumpe la conexión, Web Downloader guarda los datos para poder continuar(Resume) la descarga en el porcentaje que se quedó en la última sesión.
    Un problema que tuve con WebDownloader es que en la configuración le indicaba que los archivos me los pusiera en el directorio /downloads, directorio al que le asigne permisos de escritura para mi usuario, pero por alguna razón Web Downloader siempre me iba guardando los archivos descargados en un subdirectorio de mi dir HOME, esto no me gustó ya que en mi HOME no tengo mucho espacio, ya que los dir /(root) /boot /var /usr /home y swap los tengo en particiones independientes, por lo que tuve que eliminar el directorio MyDownloads que crea directamente Web Downloader, para poder hacer un link dinámico de /downloads a ~/MyDownloads por lo que de esta forma Web Downloader descargaba en MyDownloads que en realidad es /downloads .
    Con esto ya pude seguir aprovechando los beneficios de rapidshare.com... tongue.png
  • Rockola Web 2.0 en Linux..

    Hace unos días estando en Oaxaca visitando a mi familia y degustando de los panes de muertos, me preguntó mi papá si podía instalarle un programa para reproducir música, esto ya que mi padre rentó la licencia del Bar "La Chinita" que allá en la Ciudad de Oaxaca está enfrente de la Tienda del Issste de la Calz. Madero, probando algunas aplicaciones como Amarok, Esperanza con XMMS2, Mplayer, Xine, XMMS, Juk, Jukx, entre otros se me hicieron demasiado complejas para poder usarlas como Rockolas, por lo que una noche caminando por la estación del ferrocarril se me ocurrió la idea de desarrollarla usando una interfaz web, una base de datos empotrable al código como sqlite, y una utilidad que reprodujera la música sin que se requiriera interfaz gráfica como lo hace XMMS2, por lo que llegando a la casa de mis padres empecé con las primeras líneas de código.
    El resultado final fué el siguiente:
    Screenshot Rockola (ALfabeto cervezas)
    Características de la Rockola:
  • Lectura recursiva de archivos MP3 de los directorios asignados en la configuración.
  • Extracción de información de Artista, Titulo, Album y Genero de los archivos MP3 encontrados.
  • Almacenamiento de la información en la base de datos SQLite (SQLite no requiere configuración adicional)
  • Clasificación de canciones MP3 por Artista, Album ó Género.
  • Subclasificación de canciones MP3 por Alfabeto.
  • Busqueda personalizada de canciones por artista titulo, album ó género.
  • Listado de MP3 por Artista, Album ó Género.
  • Muestra información detallada de canción MP3 seleccionado.
  • Agrega MP3 a la cola de reproducción de XMMS2.
  • Limpia la cola de reproducción de canciones ya reproducidas.
  • Interfaz web.
  • Modo pantalla completa(Fullscreen) mediante Firefox y r-kiosk.
  • Componentes Ajax para clasificación de información y para todo el manejo de la interfaz.
  • Teclado virtual para busqueda personalizada de canciones.
  • Muestreo de botones de alfabeto en modo botón o imagen.
    Requerimientos:
  • Linux
  • XMMS2
  • Apache
  • PHP
  • PHP5-SQLite3
  • Extract
  • Firefox
  • Add-on R-Kiosk.
    Aquí algunos otros screenshots.
    Screenshot Rockola (Teclado Virtual)



    Screenshot Rockola (Config)
    El código fuente de lo subiré a SourceForge en cuánto me habiliten el servicio para subir el proyecto.
    Update
    El código puede descargarse de la siguiente URL:
    http://sourceforge.net/projects/rockolaweb20/
  • Discovering Nights Lights in Guadalajara...

    The last week I was in Guadalajara, Jalisco for work questions and the saturday I went to the Cathedral of Guadalajara to take any photographs, being there in the afternoon there was an event in the "Santos Degollado" Theater, the event was about of the History of the theater represented by lights and images displayed over the building..
    To display the images in the building of the theater, they turned off the lights of the whole park, then I was taking any pictures in manual mode with my camera using an exposure time lingering. I want to take a picture of the Cathedral and as I didn't have my tripod I use my glass of coffe as tripoid, the result is the following..
    Catedral de Guadalajara
    The picture was taked in raw mode, I make three photos of the original (low, medium, high exposure) and I create an HDR Image using photomatix with the three photographs.. after seeing the picture get myself attention that the stars were seen, apart the stain of blue light that this in the left part of the picture. A friend told me that is a cloud, another commented that is reflection of the Cathedral and another told me that is a stain of the lens of the camera. The curious things is that viewing the pictures without HDR process I can't see the stars and the stain.. only when I mix the Three exposure pictures..
  • Rare Things in photographs taken by European Space Agency in the Mars Planet

    Tonight I was programming in my computer, but my neighbor was listening a song called "Night In Bangkok", this song some years ago when I was adolescent it sounded a lot in the radio, for that I enter to youtube to search this song and to listen it in my computer, but in a part of the song I listened Thailand music so call my attention and I began to search thailand music, but the first video that I could find was Nepal Music, seeing this video in the right side of the youtube yo can see another videos and one of them I found curious, the title of this video is "Mars Civilization: Evidence by European Space Agency".
    The author of this video is Sean David Ryan, he show in the video mars photographs taken by European Space Agency, where he can found rare shapes in the photograph increasing the contrast and lowering the brightness of the photograph.
    In Mexico there a chatterer called Jaime Maussan making business with UFO, Aliens and other rare things, then I didn't believe what I saw in the the video, because it could be a trick using an images editor.
    But searching the Hale Crater photographs in the ESA website I can to get three photographs and I downloaded it.
    Making the same process that Sean Dadiv Ryan made with the photographs I saw the same shapes in the picture and I put the final result.
    ¿ What do you think that it is ?
    The shapes that appear in the low part of the photograph are very interesting, I thought that this shapes were created by an error by JPEG Compresion Algorithm, but processing the three photographs that have a different angle and perspective I can saw the same shapes curiosly..
    You can see the video of Sean Davi Ryan in youtube :
    http://www.youtube.com/watch?v=qcR7VX-FwDY
    And to download the Mars Hale Crater photograph from ESA Website
    http://esamultimedia.esa.int/images/marsexpress/137-021104-0533-6-3d2-01-HaleCrater_H.jpg
    Or going to the ESA Website and download another Hale Crater photographs..
    http://www.esa.int/esa-mmg/mmg.pl?topic=&subtopic=&subm1=GO&keyword=Hale+Crater
    if you make the same procedure described in the video, you could see the shapes in the "Hale Crater" , this is very interesting because the photographs are downloaded directly of the ESA Website.
    I have my doubts about of the shapes, but I leave it to your approach..
  • Anterior página 1 ... 3 4 5 ... 8 Siguiente página
    71 entradas

    Emblemas

    Energizado por Jaws Project
    Soporta RSS2
    Energizado por Software Libre
    Energizado por Mozila Firefox
    Energizado por Ubuntu Linux
    Energizado por PHP
    Energizado por Apache Web Server
    Energizado por MySQL
    Energizado por SQLite
    atom

    ¿ Where The Hell Am I ?

    Mi Flickr







    Aquí Mis Mejores Fotos

    Eventos

    Encuesta

    ¿Que medio de comunicación usas más ?

    Comentarios Recientes