Don't fear


Come on baby... don't fear the reaper
Baby take my hand... don't fear the reaper
We'll be able to fly... don't fear the reaper



¡Saludos! @fferegrino |:)

Original of the species


I want nothing that you're not



¡Saludos! @fferegrino |:D

Planificador

El planificador (o scheduler en inglés) es un componente funcional muy importante de los sistemas operativos multitarea y multiproceso, y es esencial en los sistemas operativos de tiempo real. Su función consiste en repartir el tiempo disponible de un microprocesador entre todos los procesos que están disponibles para su ejecución.~Wikipedia

Como parte de un trabajo escolar formamos equipos para realizar el algoritmo de un planificador para posteriormente programar su funcionamiento, el lenguaje elegido para hacerlo fue JAVA , en el se usan muchas de las características de este lenguaje. La política elegida fue la de colas multinivel retroalimentadas, usando FCFS y Round Robin para ejecutar los procesos entre colas.

Aquí los archivos, dentro viene todo lo necesario para echar a andar el planificador.


Gracias a mi equipo:

Rodrigo Benavides
Luis Dávila

¡Saludos! @fferegrino |:)

Fomentando el cuidado al ambiente

Como parte de una actividad para la materia Desarrollo Sustentable, hicimos cuatro propuestas de carteles para fomentar el cuidado al ambiente, pero solo dos fueron llevadas a cabo:



Descárgalo Cartel







Gracias al equipo... equipo de la muerte ;)

¡Saludos! @fferegrino |:|

Especiales ruptura y dejar ir (Dixo)

Dos podcast, mucha buena música y grandes palabras:

No basta con decirle al ser amado que ya no quieres seguir… hay que romper no con ella o el, sino con la relación y eso, sólo lo puedes hacer cuando rompes con una parte de ti y después, eres libre.

Bajar Especial ruptura.

Y ¿a qué es a lo que te atas? ¿Qué es lo que no te deja avanzar? lo que no te deja descansar.

Bajar Especial dejar.


¿Quieres oír más?, click en este enlace.

¡Saludos! @fferegrino |:|

Exageración


Que lloro sin ti
que ya lo entendí
(Si, exagero)


¡Saludos! @fferegrino |:(

Agendas 21 Locales


Como parte de un trabajo de la escuela tuvimos que realizar investigación y con base en esta una presentación acerca de las Agendas 21 Locales, y decidimos hacerla sobre 2 casos en específico: Palencia, España; Ensenada, México.

Después del salto las presentaciones.
Agradecimientos a mi equipo ;)

while(true) te_quiero++;


Wallpaper:

Por definición un bucle debe contener condiciones que establezcan cuándo empieza y cuándo acaba, de manera que, mientras las condiciones se cumplan, ejecute una secuencia de código de manera repetitiva. En el caso de ciclo infinito, como la condición de finalización no se alcanza, el bucle sigue ejecutando el segmento de código indefinidamente. ~Wikipedia


¡Saludos! @fferegrino :D

Listas con dos estructuras.

Una propuesta para trabajar con listas simplemente enlazadas, usando dos estructuras. Contiene las siguientes funciones:

lista *crear_l();
bool vacia_l(lista *);
bool insertar_vac_l(lista *, tipodato);
bool insertar_inicio_l(lista *, tipodato);
bool insertar_final_l(lista *, tipodato);
bool insertar_cualquiera(lista *, tipodato, int);
tipodato sacar_inicio_l(lista *);
tipodato sacar_final_l(lista *);
tipodato sacar_cualquiera_l(lista *, int);
int buscar_l(lista *, tipodato);
int n_elementos_l(lista *);
void mostrar_l(lista *);

Descargas:
listas.h
listas.c

Basado en una excelente guía de Kioskea, hecho para mi clase de sepultura de batos con la profesora @bellims

!Saludos! @fferegrino :(

Angels



She offers me protection a lot of love and affection

¡Saludos! @fferegrino :(

Banco - Aplicación con colas (B)

También para linux

Igual requiere de: pilas.h y pilas.c que encuentras en en la entrada anterior.

/* 
 * Archivo:   Banco.c
 * Autores: Rodrigo y Antonio
 *
 * Creado el 17 de febrero de 2011, 09:30 PM
 */

#include "colas.h"

int main() {

    cola *Fila_Banco = crear_c();//Creamos una nueva pila
    int tiempo_espera = 0;//Esta variable controlará el tiempo de espera.
    int menu = 0;//Variable para el menu principal
    do{
        printf("Banco Bonito :D\n");
        printf("Menú de administrador:\n\t1)Llegada de cliente\n\t2)Salida de cliente\n\t3)Salir\n");
        printf("Elige: ");
        scanf("%d",&menu);
        switch(menu)//Opciones de administrador
        {
            case 1://Recibimos al cliente
                printf("\n\n\n\tNuevo cliente\n");
                tipodato nuevo_cliente;//Creamos una nueva estructura
                printf("Introduce el nombre del cliente: ");
                getchar();//Evitar retorno de carro, Linux ;)
                nuevo_cliente.nombre =(char *) calloc(51,sizeof(char));//Reservar memoria para el nombre del cliente
                gets(nuevo_cliente.nombre);//Obtener el nombre del cliente
                int tiempo_operaciones = 0;//Aquí se guardará el tiempo de operaciones del nuevo cliente
                int submenu = 0;//Variable para el submenu
                do{
                    printf("\nElija la(s) operacion(es) que %s realizará:\n",nuevo_cliente.nombre);
                    printf("\t1)Depósito\n\t2)Retiro\n\t3)Cobro de cheques\n\t4)Depósito a terceros\n\t5)Consulta de saldo\n\t6)Nada");
                    printf("\nElige: ");
                    scanf("%d",&submenu);
                    switch(submenu)//Se acumula el tiempo de operaciones del nuevo cliente
                    {
                        case 1: tiempo_operaciones += 5; break;
                        case 2: tiempo_operaciones += 6; break;
                        case 3: tiempo_operaciones += 8; break;
                        case 4: tiempo_operaciones += 4; break;
                        case 5: tiempo_operaciones += 2; break;
                        default: break;
                    }
                }while(submenu != 6);
                nuevo_cliente.tiempo = tiempo_operaciones;//Se guarda en la estructura el tiempo total de operaciones de el cliente nuevo
                if(introducir_c(nuevo_cliente,Fila_Banco))
                {
                    printf("\n\n\t%s está formado y va a esperar %d minutos para ser atendido\n\n",nuevo_cliente.nombre,tiempo_espera);//Desplegar información
                }
                tiempo_espera += tiempo_operaciones;//Se suma el tiempo de operaciones al tiempo de espera global
                break;
            case 2://Atendemos al cliente
                if(vacia_c(Fila_Banco))//Si la cola está vacía
                {
                    printf("\t\nLa fila está vacía, ya atendiste a todos tus clientes... o nunca has tenido clientes  :P\n");
                }
                else
                {
                    tipodato cliente_atendido = sacar_c(Fila_Banco);//Se saca el cliente de la cola
                    if(!(cliente_atendido.nombre == NULL)){
                        printf("\t\nWoha! se ha atendido a %s\n", cliente_atendido.nombre);
                        tiempo_espera -= cliente_atendido.tiempo;//Un cliente sacado de la cola es un cliente atendido, se resta su tiempo de atención al tiempo global de espera
                    }
                }
                break;
            case 3: break;
            default: break;
        }
    }while(menu != 3);
    return (EXIT_SUCCESS);
}

¡Saludos! @fferegrino :)

Banco - Aplicación con colas.

Para Windows

Requerimos el uso de las funciones básicas de colas, que están en estos links: colas.h colas.c Código fuente:
/* 
 * File:   main.cpp
 * Author: Rodrigo y ToñoGates
 */

#include 
#include "colas.h"

void imprimemenu();
void menu_transacciones();
int calcular_tiempo(int []);
int tiempo_espera(Cola *c);

int main(int argc, char** argv) {
char ch;
int num=0;
//clrscr();
printf("\n\t\t\t Toño&Rod´s Bank \n\n\n ¿Deseas hacer una Cola de clientes? S/N\n");
scanf("%c",&ch);
    if((ch == 'N')||(ch == 'n')){
        printf("Salgo del programa\n");
        return (EXIT_SUCCESS);
    }
int t_espera=0;
 int i=0;

int trans[10]={0};
Cola *c;
c=crear();
TipoDato p1;
p1.nombre=(char *)calloc(100,sizeof(char));
do{
    imprimemenu();
    scanf("%d",&num);
    switch (num)
    {
     case 1:
  i=0;
                printf("\n\tNombre:");
                getchar();
                gets(p1.nombre);
                printf("\n\n\tTransaccion(es)a realizar(10 max):");
                do{
                 menu_transacciones();
                 scanf("%d",&trans[i]);
   printf("\n¿Desea realizar otra transacción? S/N");
                 getchar();
                 scanf("%c",&ch);
                     if((ch == 'N')||(ch == 'n')){
                         printf("Listo");
                         num=7;
                     }else i++;
                }while(num!=7);
                t_espera=tiempo_espera(c);
                printf("\nFaltan %d",t_espera);
                printf(" minutos.");
                p1.tiempo=calcular_tiempo(trans);
                if(insertar(c,p1))
                 printf("\n\n\nCliente introducido con éxito");
                else 
                    printf("\n\n\nLo sentimos tu Cliente no se pudo insertar...");
                break;
            case 2:
                if(vacia(c)) printf("\nLa Cola esta vacía. \n");
                else{
                 printf("\nAtendiendo a ...");
                 TipoDato dat=eliminar(c);
                 printf("\n %s",dat.nombre);
                }
                break;
            case 3:
                if(vacia(c)) printf("\nCola vacía");
                else{
                 printf("\nEstos son tus clientes en espera...\n");
                 mostrar(c);
                }
                break;
     }
  }while (num!=4);
  return EXIT_SUCCESS;
}
Las funciones básicas son desarrolladas:
int calcular_tiempo(int trans[]){
    int t,suma=0;
    for(int i=0;i<11;i++){
        switch(trans[i]){
            case 1: t=5; break;
            case 2: t=6; break;
            case 3: t=8; break;
            case 4: t=4; break;
            case 5: t=2; break;
            default: t=0; break;
 }
        suma=suma+t;
    }
    return suma;
};

int tiempo_espera(Cola *c){
    int suma=0;
    Nodo  *aux=c->frente;
        while(aux!=NULL){
            suma+=aux->dato.tiempo;
            aux=aux->atras;
        }
 return suma;
};
¡Saludos! @fferegrino :)