URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 39696
[ Назад ]

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

Отправлено opennews , 11-Янв-08 23:45 
"Linux Kernel Source Code Screensaver (http://micrux.net/?p=66)" - как написать хранитель экрана, отображающий случайные части исходных текстов Linux ядра.

URL: http://micrux.net/?p=66
Новость: http://www.opennet.me/opennews/art.shtml?num=13618


Содержание

Сообщения в этом обсуждении
"Хранитель экрана, показывающий исходные тексты Linux ядра"
Отправлено AdVv , 11-Янв-08 23:45 
Вот еслиб он части исходных текстов Windows показывал ... :)

"Хранитель экрана, показывающий исходные тексты Linux ядра"
Отправлено КтулхЪ , 12-Янв-08 14:12 
Амбиций автору не занимать, даже програмулину на си написал, какой! :)
хотя можно было все одним скриптом.

"Хранитель экрана, показывающий исходные тексты Linux ядра"
Отправлено asdfasf , 13-Янв-08 12:57 
Хм! И как же вы такую графику скриптом то сделаете?

"Хранитель экрана, показывающий исходные тексты Linux ядра"
Отправлено Dbil , 14-Янв-08 11:36 
>Хм! И как же вы такую графику скриптом то сделаете?

"Хранитель экрана, показывающий исходные тексты Linux ядра"
Отправлено DevTi , 14-Янв-08 11:38 
>Хм! И как же вы такую графику скриптом то сделаете?

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


"Хранитель экрана, показывающий исходные тексты Linux ядра"
Отправлено pavlinux , 17-Янв-10 17:56 
Дохлый сайт уже.

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

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

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

и заменяем параметр Exec на своё

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;
}



"Хранитель экрана, показывающий исходные тексты Linux ядра"
Отправлено Igor , 20-Июн-10 14:33 
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;
>}