The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Хранитель экрана, показывающий исходные тексты Linux ядра

11.01.2008 15:56

"Linux Kernel Source Code Screensaver" - как написать хранитель экрана, отображающий случайные части исходных текстов Linux ядра.

  1. Главная ссылка к новости (http://micrux.net/?p=66...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/13618-screensaver
Ключевые слова: screensaver
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, AdVv (??), 23:45, 11/01/2008 [ответить]  
  • +/
    Вот еслиб он части исходных текстов Windows показывал ... :)
     
  • 1.2, КтулхЪ (?), 14:12, 12/01/2008 [ответить]  
  • +/
    Амбиций автору не занимать, даже програмулину на си написал, какой! :)
    хотя можно было все одним скриптом.
     
     
  • 2.3, asdfasf (?), 12:57, 13/01/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Хм! И как же вы такую графику скриптом то сделаете?
     
     
  • 3.4, Dbil (?), 11:36, 14/01/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Хм! И как же вы такую графику скриптом то сделаете?
     
  • 3.5, DevTi (ok), 11:38, 14/01/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Хм! И как же вы такую графику скриптом то сделаете?

    Когда читать научимся?
    "Now just to clarify, I did not write my own screensaver. I’m actually using the phosphor screensaver under xscreensaver."

     

  • 1.6, pavlinux (ok), 17:56, 17/01/2010 [ответить]  
  • +/
    Дохлый сайт уже.

    Вот, ещё живое - http://yurik-notes.blogspot.com/2008/01/linux.html

    А сейчас все гораздо проще...

    Открываем файл
    # vi /usr/share/applications/screensavers/phosphor.desktop

    и заменяем параметр [b]Exec[/b] на своё

    Exec=phosphor -root -program "cat 'find /usr/src/linux/ -name '*.c' -size -5k| argshuf'" -delay 27317 -scale 2 -ticks 13

    Esc:wq

    Программка argshuf выглядит так



    /*
    *
    * # cc -g -O2 -Wall -pedantic argshuf.c -o argshuf
    * # cp -vfi argshuf /usr/bin/
    *
    */

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/time.h>

    #define INITSIZE 31

    int main(void) {
        char **list, **temp, input[200];
        int size = INITSIZE, i = 0, j;
        struct timeval time;

        gettimeofday(&time,NULL);
        srand(time.tv_usec);
        list = malloc(size*sizeof(char *));

        while(!feof(stdin)) {
            fscanf(stdin,"%s\n",input);
            if(i >= size) {
               temp = (char **) calloc((size*=2),sizeof(char *));
               for(j=0;j<i;++j) temp[j] = list[j];
               free(list);
               list = temp;
            }
            list[i] = (char *) malloc((strlen(input)+1)*sizeof(char));
            strcpy(list[i++],input);
        }

        printf("%s\n",list[(int)((double)i * (rand() / (RAND_MAX + 1.0)))]);

        for(j=0;j<i;++j) free(list[j]);
        free(list);

        return EXIT_SUCCESS;
    }


     
     
  • 2.7, Igor (??), 14:33, 20/06/2010 [^] [^^] [^^^] [ответить]  
  • +/
    argshuf скрипт, положить в /usr/bin

    #!/bin/bash
    # argument shuffler, from input lines chooses random only one string

    i=0
    while read myline
    do
      lines[$i]=$myline
      i=$i+1
    done
    N=${#lines[@]}-1
    if ((($N) < 2)); then
      exit -1
    fi

    echo ${lines[(($RANDOM%($N)+1))]}

    >[оверквотинг удален]
    >        strcpy(list[i++],input);
    >    }
    >
    >    printf("%s\n",list[(int)((double)i * (rand() / (RAND_MAX + 1.0)))]);
    >
    >    for(j=0;j<i;++j) free(list[j]);
    >    free(list);
    >
    >    return EXIT_SUCCESS;
    >}

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру