Retweet all on Twitter

Isn't annoying that your followed just retweet everything they see on their Timelines? All, old tweets, silly tweets or tweets from someone you don't want to read. Well if you want to go beyond the limits, let me introduce the:

  RT'em all.

By dragging this 'button' to your bookmarks, you will have the key to direct unfollows.
Based on Feross Aboukhadijeh´s I Like Everything script that automatically like's every post on the current Facebook page, This retweets all in the timeline you are viewing, so use it carefully.

I did this because I had nothing to do at university and in order to piss off @unmau, now I know he blocked retweets ¬¬

Sources:

Retweetea todo en Twitter.

¿Saben que es molesto en Twitter? Que tus seguidos se la pasen retuiteando, cosas viejas, cosas nuevas, cosas repetidas... y lo que es más molesto es que le den RT a alguien que no quieres leer. Pues bien si quieres ser molesto e ir más allá de eso te presento a:

  RT'ealos todos.

Arrastrando este link hacia tus marcadores, tendrás la llave a los unfollows directos.
Basándome en el script I Like Everything de Feross Aboukhadijeh que le da 'Me gusta' a todo en Facebook, cree este que le da ¡Retweet a todo! Sí, a todo lo que encuentre en el Timeline que estas viendo actualmente, así que úsalo con cuidado.

Y que bueno, sin mucho que hacer en la universidad, me puse a hacer esto, porque puedo y porque pensé que sería divertido molestar a  @unmau, pero resulta que tiene bloqueados los retweets ¬¬.

Código fuente:

Northwind en MySQL

Pues por aquello de no instalar MSSQLServer, aquí dejo el script SQL, con pequeñas modificaciones, para crear la base de datos Northwind  en MySQL. ¡Sí incluye los datos :D!

Sin más, aquí está el link al archivo:
Northwind para MySQL
Y el link al sitio en donde lo encontré(agradecer):
Taringa!, gracias juanmordan.

¡Saludos! @fferegrino :)

Steve Jobs.

Gracias.

No hay más.

@fferegrino :(

Nuevos perfiles de Facebook

Así es, en un intento por tratar de convencer a los usuarios de que aún sigue vivo Facebook ( después de que Google+ fue abierto a todo el público ), se está rediseñando completamente: Un nuevo News Feed(Ahora llamado 'Stories') , Actualizaciones en tiempo real('Ticker') y lo que más me ha gustado: Nuevos perfiles de usuario:

Practica 1 Bases de datos (:S)

Hola de nuevo, regresa el sinuoso trajín de la escuela y con el las prácticas y los proyectos.

Esta es mi implementación de una práctica "sencilla" de la asignatura Base de Datos, se trata de idear como vincular dos clases: Alumnos y Materias, esto de la forma que me mejor nos diera a entender Dios o nuestros conocimientos previos.

Hubieron varias sugerencias por parte del profesor pero yo me decanté por la que me pareció más sencilla; que es el uso de arreglos dentro de la clase principal para gestionar los objetos, vinculando cada materia con los alumnos que la cursan, también mediante el uso de un vector.

Una implementación vaga, pero que espero entiendas si lo bajas, cualquier duda por aquí o si tienes la desgracia de tenerme agregado en alguna red social o servicio de mensajería por ahí puedes preguntar.

Archivo:

Si me quieres comprar una cerveza, por favor que sea una indio xD

¡Saludos! @fferegrino :)

i #fua you




¡Saludos! @fferegrino :)

Como reconocer a un buen programador

Aquí indicadores específicos para reconocer (como empresa) a un buen programador:

  • Pasión por la tecnología
  • Programa por hobby
  • Te volará el oído con tecnicismos si lo animas
  • Significantes (a veces numerosos) proyectos personales
  • Aprende de las nuevas tecnologías por si mismo
  • Tiene opinión acerca de cuales tecnologías son usables para cada caso
  • Le resulta incómoda la idea de trabajar con algo que el no considere "bueno"
  • Muy listo, puede mantener una conversación en varios temas
  • Empezó a programar mucho antes de la universidad o del trabajo

Deberías de leer el artículo completo: Link al artículo

Desde luego siempre dependiendo del enfoque y la credibilidad que le quieras dar, a mi me agradó el artículo.
Por cierto tengo madera de buen programador :D


¡Saludos! @fferegrino :)

ediThor (Beta)

Con la novedad de que acabaron las clases de programación avanzada en UPIITA ( :( tiene como 2 semanas ) y entregamos el proyecto final para la asignatura al cual nombramos ediThor.

Empiezo por describir brevemente lo que tratamos de hacer en este proyecto:

Ruta más corta entre dos puntos

Como nuestro ulimo proyecto en la unidad de aprenizaje "Estructura de Datos" ( :( sí, el ultimo :'( ) realizamos un programa que, usando la teoría de grafos calcula la distancia más corta entre dos estaciones del metro, hablando solamente de distancia en metros entre las estaciones. Para dicho cálculo se usa el algoritmo de Floyd-Warshall.

Claro que se puede mejorar y probablemente se haga en el futuro, pero por el momento es lo que hay.


¡Gracias gracias!

Love left a window in the skies


I know I hurt you and I made you cry
Did everything but murder you and I

¡Saludos! @fferegrino :)

Ya tengo mi plan

Este es mi plan para vacaciones:



Si te apuntas, comenta aquí o mandame un tweet... habrá tantos sillones como personas xD.

¡Saludos! @fferegrino :)

:/

Hay un lugar a donde debería ir todo hombre que hace llorar a una mujer, y ese es a la chingada.




@fferegrino
.

@fferegrino

Soñé con ser futbolista


De pequeño, como casi todo niño mexicano soñaba con ser futbolista, pero por una u otra situación nunca lo intenté con mucho esmero. Ahora que me vengo enterando de lo que es la A-League en Australia, mi sueño ha revivido... creo que ahí tendría más oportunidades, sería todo un crack en esa liga.

Si también han perdido las esperanzas les dejo este vídeo para que se motiven de nuevo.


Si nos juntamos varios el viaje nos sale más barato :)

¡Saludos!@fferegrino :)

Añadiéndole color al bog


Para añadirle un poco de color al blog (al menos esto tiene un poco de color :( ) busqué que podría hacer y llegué a este bonito sitio llamado CSS-Tricks en el que encontré este efecto, que ahora pueden disfrutar en la batta de navegación a la derecha ->




Efecto bonito
Efecto bonito





Link al blog: CSS-Tricks

Link al demo del efecto: Slide Up Boxes

¡Saludos! @fferegrino :)

Fix you


Cuando haces tu mejor esfuerzo pero no tienes éxito, cuando obtienes lo que quieres pero no lo que necesitas, cuando estás muy cansado pero no puedes dormir, cuando pierdes algo que no puedes reponer, cuando amas alguien pero lo pierdes, cuando estás tan enamorado como para dejarlo ir... pero si no lo intentas nunca lo sabrás.

¡Saludos! @fferegrino :)

Nuestras estrellas no son como tus estrellas


Como parte de una campaña publicitaria llamada 'Sponsors of tomorrow'(Patrocinadores del mañana -Literalmente-), hace ya más de un año, Intel lanzó una serie de anuncios para promocionar la marca como tal y no un producto en especifico. ¿Qué tienen de especial estos anuncios? Pues que nos muestran de una manera divertida la empresa y la marca, nos muestra las pequeñas diferencias entre el mundo "normal" y el que se vive dentro de la compañía. Yo no se ustedes, pero yo ya me quiero ir a trabajar a Intel :D

He aquí el vídeo que más me gustó y que conocí gracias a @seprh


Y un enlace a una lista que cree, para que puedan verlos todos

Sponsors of tomorrow, Intel

¡Saludos! @fferegrino :)

Reloj con SVG y Javascript



Súper código:

function reloj()
   { 
    hora = new Date() 
    hra = hora.getHours() 
    min = hora.getMinutes() 
    seg = hora.getSeconds() 
    document.getElementById("min").setAttribute("transform","rotate("+ min*6 +" 1000 350)");
    document.getElementById("seg").setAttribute("transform","rotate("+ seg*6 +" 1000 350)");
    document.getElementById("hra").setAttribute("transform","rotate("+ hra*30 +" 1000 350)");
    setTimeout("reloj()",1000);
   } 
En la línea 3 creamos un objeto de la clase Date, el cual contiene la fecha y hora actual del sistema en el que se ejecuta el script; con los gets obtenemos los valores de las horas, minutos y segundos.

Posteriormente, para realizar la animación de las manecillas, usamos el attributo transform de la etiqueta <path>, haciéndolo girar por la cantidad de minutos o segundos multiplicado por 6 ya que esperamos que recorra los 360 grados del circulo en 60 segundos, en cambio para marcar las horas tenemos que multiplicarlo por 30 ya que debe completar el circulo en tan solo 12 movimientos.

Por último hacemos que la función se llame a cada 1000 milisegundos.

Ahora aquí está el html básico requerido, desde luego falta aplicar estilos sobre la carátula del reloj y las manecillas para hacer que luzca mejor.

<svg id="svg-area" viewBox="0 0 2000 700">
    <circle cx="1000" cy="350" r="425" stroke="black" stroke-width="30" fill="transparent" />
    <circle cx="1000" cy="350" r="420" stroke="black" stroke-width="10" />
    <path id="seg" d="M 1000,350 l 0,-350" />
    <path id="min" d="M 1000,350 l 0,-300" />
    <path id="hra" d="M 1000,350 l 0,-250" />
    <circle id="central" cx="1000" cy="350" r="15"/>
</svg>

Descarga el código de el reloj ejemplo del post.

¡Saludos! @fferegrino :)

Wallpaper de Assassin's Creed

Color 1:

Color 2:



:/ Creo que llegó el momento de hacer tarea :/

¡Saludos! @fferegrino :)

Modificar atributo style de una etiqueta


¿Necesitas modificar el atributo style dentro de una etiqueta html?
Esto fácilmente se puede hacer desde JavaScript con el método setAttribute(), pero este nos sobreescribe todo el atributo; si solo quieres modificar una propiedad dentro de ese atributo, esta es la solución que yo propongo.

Para poner un ejemplo, digamos que tienes una etiqueta html como esta:
<div id="div1" style="margin:0 auto 0 auto; padding-bottom:10px; border: 2px solid #000;">

Después de una llamada a la función modEstilo(), como la siguiente:
modEstilo('div1','margin','3px 40px');

La etiqueta div queda así:
<div id="div1" style="margin: 3px 40px; padding-bottom:10px; border: 2px solid #000;">

Sigue leyendo para encontrar la referencia completa a la función y el código de esta.

Trofeos PS3

Como parte del ocio estas vacaciones y gracias a @danvega23 (no twittea), me puse a hacer esta "aplicación" que te genera una imagen que simula ser la notificación que ves cuando ganas un trofeo en algun juego de PS3.

Requirió PHP, en específico la librería GD para el tratamiento de imágenes además un poco de JavaScript :)




Este es el enlace a la aplicación: TrofeosPS3.



¡Saludos! @fferegrino :)

Árboles AVL

El objetivo es leer un archivo "csv" que contendrá los números que queremos insertar en un árbol AVL, sus tres recorridos y su altura serán impresos en un nuevo archivo junto con el camino de un número que se desee buscar.



Descarga del código y más información en 'Leer más' (LOL)

De CSV a int *

Esta es nuestra solución para leer datos del tipo entero de un archivo CSV:

Nuestra fución devuelve un apuntador y recibe una cadena; primero definimos y asignamos valores a las variables que ocuparemos.

int * leerDatos(char * arc){
    int * resultado = NULL;//Aquí guardaremos el resultado
    int numelem = 0;//El número de elementos en el archivo, necesario para reservar memoria dinámicamente
    int n=1;
    FILE * fp = fopen(arc, "r");//Arbimos el archivo 'arc' solo para lectura.
    char * linealeida = (char *)calloc(tamano,sizeof(char));
    char * auxlinea = (char *)calloc(tamano,sizeof(char));
    /* 'tamano' es el numero aproximado de caracteres en nuestro archivo recomendamos, definirlo previamente */
    char * tokens;
También, es recomendable tomar alguna acción si nuestro archivo no pudo ser abierto correctamente.

Leemos la línea, y la copiamos a un auxiliar dado que la función que usaremos para separar los valores de las comas destruye la cadena y la necesitaremos dos veces. La función más importante es strtok(), de la cual, en el vínculo encontrarás más información.

// :)
    fgets(linealeida, tamano, fp);
    strcpy(auxlinea,linealeida);
    tokens = strtok(linealeida, "," );//Comenzamos a separar los valores entre las comas.
    while((tokens = strtok( NULL, "," )) != NULL )//Continuamos hasta que no haya más que separar.
        numelem++;//Aumentamos la cantidad de elementos que hay.

Reservamos memoria para guardar todos los elementos, más uno, dado que dentro del arreglo también guardaremos la cantidad de dígitos que leímos del archivo. En otras palabras dentro del arreglo guardaremos el tamaño del arreglo menos uno.

En este bloque de código, también usamos el auxiliar de cadena ya que en el bloque anterior la cadena inicial linealeida quedó vacía gracias a la función strtok(). Información acerca de atoi()

resultado=(int *)malloc(sizeof(int)*(numelem+1));
    resultado[0] = numelem;//La entrada 0 de nuestro arreglo, guardará la longitud del mismo menos 1
    tokens = strtok(auxlinea, "," );//Comenzamos a separar los valores de nuevo
    do{//Con atoi() convertiremos de char * a int.
      resultado[n++]=atoi(tokens);
    }while((tokens = strtok( NULL, "," )) != NULL );
    fclose(fp);//Cerramos nuestro archivo para evitar problemas posteriores
    return resultado;//Por último, regresamos el arreglo con los datos
}

Si, parte de nuestro proyecto de Estructura de datos. (descarga el código completo)


Agradecimientos a mi querida compañera de equipo Iraís con quien hacer tarea hasta da gusto :)

¡Saludos! @fferegrino :)

Mis bookmarks de ocio (II)

Hace tiempo publiqué algunos de las páginas que me he encontrado por internet, hoy vuelvo a publicar otras tantas que me han parecido interesantes y como para perder el tiempo.

Ie6 Error - Pinta con el error de internet explorer 6 (Can your Mac do this?).

˙ɐuıƃɐd ɐʇsǝ uǝ sɐɹǝınb ǝnb oʇxǝʇ lǝ ɐǝʇloʌ - ʇxǝʇ dılɟ

YTTM - ¿Quieres recordar viejos tiempos?, elige un año para ver videos que se hicieron en ese tiempo.

Portrait - Para hacer avatares, ¡crea el tuyo!

(Y que @MarveenRuiz me diga que que pinche tan geek)

¡Saludos! @fferegrino :)

Nuevas vistas dinámicas en Blogger

Muchos dicen que Blogger es una plataforma deficiente, en lo cual no estoy de acuerdo. Si bien no ofrece los mismos servicios que servicios como WordPress o Tumblr, está trabajando para mejorarlo constantemente y una muestra de ello son las nuevas vistas dinámicas que ofrecen una interfaz grafica muy atractiva y recuerda la esencia táctil del los tablets.

Visita las vistas dinámicas de este blog en el siguiente enlace.

¡Saludos! @fferegrino :)

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 :)

Sound Matrix


Súbele a tus bocinas y luego da click en cualquiera de los cuadritos.
Desestresate, diviértete y comparte.


Vía: Sembeo


¡Saludos! @fferegrino :)

Corazón Atómico


i just don't know where i'm going,
but i know where i'll stay.

Ya sé, ya sé muchas canciones últimamente, pero es lo que hay.

¡Saludos! @fferegrino :D

Infijo => Postfijo

Hacer un programa en C que mediante el uso de pilas, transforme una expresión infija a una postfija, nada complicado(en teoría).

Requiere el uso de estos 2 archivos:

pilas.h
pilas.c

Algoritmo y código:
/* 
* Archivo: main.c
* Autores: Antonio Feregrino y Rodrigo Benavides
*
* Creado el 14 de febrero de 2011, 08:22 PM
*/

#include "pilas.h"

int comprobar(char);
int precedencia(char);

/*
* 
*/
int main() {
char primera_expresion[50];//Cadena inicial
char *cadenita_auxiliar = calloc(50+1,sizeof(char));//Cadena final
pila *operadores = crear();//Se crea la pila de los operadores
printf("Introduce la expresión a convertir: \n\n");
gets(primera_expresion);//Se lee la expresion principal
int i = 0, i_cadenita = 0;//Variables usadas para recorrer los arreglos de caracteres
while(primera_expresion[i] != '\0'){//Mientras que la expresión principal no se termine

switch(comprobar(primera_expresion[i])){//Comprobación del tipo de caracter 1 a 1
case 1://En este caso el caracter es un parentesis de apertura (
push(primera_expresion[i],operadores);
break;
case 2://En este caso el caracter es un parentesis de cierre )
while(muestra_ultimo(operadores) != '('){//Mientras que el último elemento de la pila no sea (
cadenita_auxiliar[i_cadenita] = pop(operadores);//Saca los operadores de la pila y colocalos en la cadena final
i_cadenita++;//Aumenta el índice de la cadena final para no sobreescribirla
}
pop(operadores);//Saca el paréntesis de apertura (
break;
case 3://En este caso el caracter es un operando [a-zA-Z0-9]
cadenita_auxiliar[i_cadenita] = primera_expresion[i];//Se introdue directamente a la cadena final
i_cadenita++;//Aumenta el índice de la cadena final para no sobreescribirla
break;
case 4://En este cuarto y último caso, el caracter es un operador [+-/%^]
if(vacia(operadores)){//Si la pila esta vacía
push(primera_expresion[i],operadores);//Introduce el operador
}else{//Si no está vacía
int operador_nv = precedencia(primera_expresion[i]);//Se calcula la precedencia del caracter a evaluar
int operador_ol = precedencia(muestra_ultimo(operadores));//Se calcula la precedencia de la cima
if( operador_nv > operador_ol)//Si la precedencia del nuevo es mayor a la de la cima
{
push(primera_expresion[i],operadores);//Introduce el operador
}
else//Si es menor o igual
{
do{
cadenita_auxiliar[i_cadenita] = pop(operadores);//Saca la cima e introducela en la cadena final
i_cadenita++;//Aumenta el índice de la cadena final para no sobreescribirla
operador_ol = precedencia(muestra_ultimo(operadores));//Calcula la precedencia de la nueva cima
}while(!(operador_nv > operador_ol));//Repite esto hasta que la precedencia del nuevo sea mayor a la de la cima
push(primera_expresion[i],operadores);//Introduce el nuevo operador en la cima de la pila
}
}
break;

}
i++;//Recorre en uno el índice de la expresión inicial
} 
printf("Tu expresión postfija es: %s\n",cadenita_auxiliar);//Muestra la cadena final
return (EXIT_SUCCESS);
}

int comprobar(char t){
/* Función que comprueba que caracter es, regresa valores enteros segun sea el caso */
if( t == '(' ) return 1;
if( t == ')' ) return 2;
if(( t <= 90 && t >=65 ) || ( t <= 122 && t >= 97 ) || ( t <= 57 && t >=48 )) return 3;
if( t == '*' || t == '+' || t == '^' || t == '/' || t == '-') return 4;
else return 0;
}

int precedencia(char t){
/* Aquí es calculada la precedencia personalizada de los operadores */
if( t == '^' ) return 3;
if( t == '*' || t == '/' || t == '%' ) return 2;
if( t == '+' || t == '-' ) return 1;
if( t == '(' || t == ')' ) return 0;
else return 0;
}



No es el mejor algoritmo pero es lo más que pudimos hacer mi compañero y amigo @frescasandia y yo.


Igual no se si esté permitido por la profesora @bellims hacer esto ;$

¡No al plagio!

¡Saludos! @fferegrino :)

Take this waltz




Now in Vienna there's ten pretty women
There's a shoulder where Death comes to cry
There's a lobby with nine hundred windows
There's a tree where the doves go to die
There's a piece that was torn from the morning

¡Saludos! @fferegrino :(

Mis tareas.

Ahora comparto también con Scribd, de ahora en adelante procuraré subir tantas tareas, ensayos, mapas y cuanta cosa se les ocurra pedir a los profesores, este es mi perfil en

Link: http://www.scribd.com/antonio_bola%C3%B1os_2

¡Saludos! @fferegrino :)

Tweets del fin de semana

Iniciemos bien este fin de semana. Aquí unos cuantos tweets:




¡Saludos! @fferegrino :)

This modern love.


Sigo sin entenderle muy bien a esta canción. Por mientras, aquí se las dejo.

¡Saludos! @fferegrino :)

Rediseño

He cambiado el diseño del blog, ya me había cansado de tanta obscuridad... y a decir verdad también es medio chocante este diseño, pero a ver que tal funciona.

Este es el template que he usado Life Is Simple

Un poco de CSS con Google Font API.

E iconos de distribución gratuita de Iconlet

¡Saludos! @fferegrino :)

La primera pantalla LED solar nos llega de Bulgaria.

Quién nos iba a decir que la primera pantalla LED totalmente autónoma y que no necesita conectarse a la corriente eléctrica, nos iba a llegar de Bulgaria. Pues sí niños, en esta vida no se puede dar nada por sentado y como podéis ver, la última revolución ecológica no llega de Japón, sino de la vieja Europa.

Ha sido la compañía búlgara Megatex, la que ha presentado la primera pantalla LED que cuenta con su propio panel solar para autoabastecerse de la energía necesaria para su funcionamiento. Estamos hablando de un panel de 5Kw, cantidad más que suficiente para hacer funcionar la pantalla sin el más mínimo problema.

Pensada para su utilización en exteriores, estamos ante el equipo idea para montar videowalls al mínimo coste, así como señalización en carreteras o áreas donde el acceso a una fuente de corriente es más que dificultosa. Ya era hora de que apareciese un producto como este. Con las continuas subidas de la luz, más de uno ya se estará pensando en comprar un equipo de estos…


Opinión:

Todos sabíamos que era cuestión de tiempo para que sucediera esto, la tendencia y hasta cierto punto moda, es hacer cosas libres de consumo de energías no renovables y ni hablar de las posibilidades que eso supone para la el desarrollo de otras aplicaciones. Lo sorprendente en este caso es de donde llega la innovación estamos comúnmente acostumbrados a que este tipo de tecnologías lleguen de países conocidos por su gran avance en cuanto a estos temas se refiere.

Gracias a que detrás de esta innovación hay una gran empresa espero que se comercialice pronto y a un costo más o menos bajo, después de todo toda innovación conlleva un gasto, pero una gran satisfacción también.



Link al documento (no al plagio)

¡Saludos! @fferegrino :D

De regreso a UPIITA

Con mi regreso a la Unidad, regresan las tareas, que algunas, para desestresarme y descargar mi frustración iré subiendo aquí.

Por lo pronto se me ocurre una nueva sección que nada más acabar todos mis deberes subiré al blog.

¡Saludos! @fferegrino :)

Google Font API


Google Font API es una herramienta para mejorar la apariencia de tu sitio web, mediante el uso de tipografías gratuitas visibles en la mayoría de los navegadores, al ser un servicio en la nube, no necesitas descargar nada en tu servidor ni hacer enorme el tiempo de carga de tus páginas web.

Lo único que necesitas hacer es agregar una línea de código para vincular una hoja de estilo, que obtienes según las tipografías que vas a usar, y listo está disponible para su uso.

A sus 8 meses de haber sido lanzado, cuenta ya con una gran variedad de tipografías para que elijas una o varias y hagas más hermosa la web.

En lo particular Ubuntu y Lobster son mis favoritas.

Si quieres saber más aquí hay unos enlaces que te van a interesar interesar:


Sitio de Google Font API


¡Saludos! @fferegrino :)

Ya de vuelta

Espero tener esta cosa más actualizada.

Con la novedad de que mañana regreso a la Mil veces heroíca UPIITA, ya preparado para el inicio de un nuevo semestre esperando que este sea mejor que el anterior, con un horario pésimo y a la espera de que me dejen inscribir otras materias más.

Nos estamos leyendo :)

¡Saludos! @fferegrino :D

Link Grabber

Captura los enlaces que vayas enviando al Portapapeles, en vez de copiar-pegar links a lo bestia, útil cuando no puedes tener el jdownloader a la mano, minimizable a la barra de tareas y con notificaciones desactivables. 






Link: http://www.megaupload.com/?d=CKJMTGXJ


¡Saludos! @fferegrino :)

Prueba.




Citador html de tweets :)

¡Saludos! @fferegrino :)