Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет deadbeef ([info]deadbeef)
@ 2004-11-21 07:10:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Вот, сотворил. Может полезно будет.
Сотворил простейшую и кратчайшую программку, которая может помочь людям русским, в одном мутном деле.
Иногда, возникает подозрение, что под разными именами в инете пишет один и тот же человек. Это подозрение бывает достаточно сложно проверить, однако и на такую хитрую задницу с лабиринтом, найдётся русский лом.


Нижеприведённая программка делает очень простую вещь - считает, сколько в тексте есть разных буквосочетаний. Из соображений скорости и простоты она учитывает только 512 наиболее распространённых в русском языке буквосочетаний. На выходе получаем простой список из 512 относительных величин в экспоненциальном формате - количество буквосочетаний одного типа отнесённое к общему количеству буквосочетаний. Теперь остаётся только загнать этот список в какую-нибудь программку для построения графиков, чтобы она нарисовала нам спектр текста (я пользую gnuplot).
А главное, и самое интересное, что этот самый спектр текста будет почти одинаков для разных текстов одного автора и будет отличаться для текстов разных авторов. Нарисовав в одном графике спектры для двух текстов, мы без особого труда можем определить, принадлежат ли тексты разным людям, или они были написаны одним человеком (ну или нелюдем). Тексты, правда, должны быть достаточно длинными, чтобы дать спектр действительно характерный для изучаемого автора - книга, например, или собранные в один файл сотни комментариев.

Вот, например, участок спектра с 100-го по 200-е буквосочетания для двух разных кусков Лукьяненки:
Image

А вот, тот же участок для Лукьяненки и Неведимова (Лукьяненка - красный):
Image

Посмотрев на картинки, разобраться, что на первой картинке - автор один, а на второй - авторы разные, не так уж и сложно.


#include <locale.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <getopt.h>

#define SLOG_COUNT  (512)

char *slog[SLOG_COUNT] = {
"ст","то","ен","но","ни","ов","на","ра","ос","пр","ро","ко","ан","ли","по","во",
"ес","ре","не","от","ол","од","ор","ть","ва","го","ер","ит","ет","ти","об","ел",
"он","та","ри","ль","ны","те","ал","ат","де","ка","ом","ис","тв","ве","ин","ие",
"ло","ми","со","ав","ог","ме","ем","ия","им","ле","ас","из","ив","ла","ак","че",
"мо","да","ии","ед","за","тр","ой","ск","ар","нн","до","ки","ам","оп","ил","ик",
"ви","бо","ма","тс","ьн","ся","ев","аз","оз","ек","ир","же","ои","бы","си","ег",
"ич","ци","вс","еп","ап","зн","ди","ад","ид","ип","сл","вы","вн","ру","ля","ые",
"ей","ое","ок","се","их","оч","вл","ож","ят","хо","эт","пе","тн","ых","ры","уд",
"чт","ио","ще","ку","аб","дн","сп","ьс","ео","ая","чи","ий","му","св","ги","ду",
"ае","йс","це","нт","ча","ше","оо","лю","сс","ют","вр","яв","жн","уп","ез","ус",
"зв","ым","ыл","мы","кр","ян","ну","ее","па","иа","еб","ую","аи","нс","са","ьк",
"га","иг","ыв","еи","еч","кт","жи","аж","ты","ый","уч","ут","ту","иб","яс","мн",
"ач","су","чн","яп","ыс","зм","бе","дл","зо","ац","сь","пи","мп","лу","дс","ах",
"ын","бр","ям","ня","ур","щи","гр","яз","ун","бщ","жд","еж","аю","ши","уж","ыт",
"нк","нь","бу","зд","тк","вп","ьв","яи","гл","йн","сн","вт","би","мс","ды","ук",
"ып","др","ул","зи","рн","вк","кл","ао","хр","ех","кс","юд","ию","аг","тп","уг",
"пл","ву","ьп","ув","бл","см","йв","йп","яо","ьт","як","мв","ьш","ьи","хи","ёт",
"иц","фи","ря","яд","ср","ум","ба","йи","рс","вв","вя","рт","хс","рм","яе","оц",
"жа","ью","оя","йт","иу","гд","ке","нц","ыи","нд","ош","йк","ущ","дв","ау","мм",
"оу","ющ","ша","рп","хп","ьм","лл","эк","зы","бс","иж","рк","уб","мк","вм","тд",
"кн","хв","ык","еа","ьо","рв","ай","уе","еш","ьз","ох","зк","кв","вд","ён","хн",
"яр","аш","ыо","фо","йм","сч","еу","лн","зу","ец","ащ","пу","ца","рг","ьд","оэ",
"зр","йо","тт","мч","йд","ял","лж","иф","ьг","ыр","кп","ыд","гу","чё","йр","иэ",
"вг","мя","юб","хк","яч","ьб","тя","ыш","чк","зе","уи","кц","ыч","ыб","ещ","лы",
"яб","оф","мб","ях","сё","юс","бн","тм","ём","вз","сы","ха","пы","уа","лс","шл",
"рь","сх","рж","рд","нг","хт","рх","сд","ух","мд","ьч","яю","ье","уш","уз","ща",
"ге","еф","аэ","фр","бъ","дя","тч","тб","мт","км","уо","мл","ьр","йб","вш","юп",
"фе","йч","тл","яу","нв","мр","юв","еэ","дё","яц","ыз","сш","дп","аа","ья","зя",
"юч","иш","дь","ху","яэ","бм","гн","кд","шн","вб","хд","йз","ящ","ъе","фа","хл",
"ёр","её","хм","дк","аф","ою","лк","лг","цы","юи","йг","вэ","бх","хг","ьл","ощ",
"зл","яг","йц","щё","оа","тз","ея","юз","аё","бя","ыу","кк","вц","нп","юо","лё",
"чу","нф","чш","йш","ьу","йэ","йа","юр","юн","юк","мг","юц","шк","пн","ыг","мз",
};

int spectrum[SLOG_COUNT];

void usage(char *name)
{
	printf("Usage: %s [--verbose] [--help] [file]\n", name);
}
   
int main(int argc, char *argv[]) {
 char                   c1 = 0, c2 = 0, buf[256], *src, *prog;
 int                    ret, i, verbose = 0, count = 0;
 FILE			*fd;
 static struct option   long_options[] =
 {
   {"verbose", no_argument,       0, 'v'},
   {"help",    no_argument,       0, 'h'},
   {0, 0, 0, 0}
 };

	setlocale(LC_ALL, "" );

	prog = strrchr(argv[0],'/');
	if(!prog) prog = argv[0];
	else      prog++;

	while ((ret = getopt_long (argc, argv, "vh", long_options, NULL)) != -1)
	{
		switch(ret)
		{
			case 'v': verbose = 1; break;
			case 'h': usage(prog); break;
			default: usage(prog); return 1;
		}
	}

	if(verbose) printf("Cleaning spectrum...\n");

	for(i = 0; i < SLOG_COUNT; i++) spectrum[i] = 0;

	if(argc > optind)
	{
		if(verbose) printf("Reading file %s\n",argv[optind]);
		fd = fopen(argv[optind],"r");
	}
	else
	{
		if(verbose) printf("Reading stdin\n");
		fd = stdin;
	}

	while(fgets(buf,sizeof(buf),fd))
	{
		src = buf;
		while(*src)
		{
			c2 = tolower(*src);
			if(c1 && isalpha(c2))
			{
				for(i = 0; i < SLOG_COUNT; i++)
				{
					if(slog[i][0] == c1 && slog[i][1] == c2)
					{
	        				spectrum[i]++;
	        				count++;
						break;
					}
				}
			}
			c1 = c2;
			src++;
		}
	}

	if(count > 0) 
	{
		for(i = 0; i < SLOG_COUNT; i++)
		{
			printf("%e # %s\n", (double)spectrum[i] / (double)count, slog[i]);
		}
	}

	if(fd != stdin) fclose(fd);

	return 0;
}


Вот собственно и всё.

Программка читает либо стандартный ввод, либо файл, если он указан в качестве аргумента. Выдаёт результат на терминал, ну или куда там перенаправишь - в файл, например. А можно сразу скормить рисовалке графиков.

Клоны могут отдыхать.
Лицензия - GNU, автор - я.



(Добавить комментарий)


[info]stalker707@lj
2004-11-21 02:03 (ссылка)
Картинки не открываются.

(Ответить) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 02:57 (ссылка)
И не должны. Картинки увидят только пользователи правильных броузеров. А пособникам микрософта - не положено.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Строгий, но справедливый ... :)
[info]stalker707@lj
2004-11-21 03:21 (ссылка)
:)

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Строгий, но справедливый ... :)
[info]vchk@lj
2004-11-21 03:26 (ссылка)
В данном случае просто совпала справедливость и отсутствие в IE возможности смотреть картинки, вставленные прямо в текст.
Т.е. я не умышленно так сделал, оно как бы само получилось.

(Ответить) (Уровень выше)


[info]jdevelop@lj
2004-11-21 11:18 (ссылка)
эта, tolower с KOI8-R странно работает
во всяком случае у меня под FreeBSD
что я делаю не так?

(Ответить) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 12:02 (ссылка)
Локаль выставлена неправильно. В частности LC_CTYPE.
Нужно локаль выставить в ту, у которой charmap - KOI8-R.
Если таковой нет - создать: localedef -f KOI8-R -i ru_RU ru_RU.koi8r
А потом - LC_ALL=ru_RU.koi8r

И всё будет как надо.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 12:04 (ссылка)
нет localedef

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 12:35 (ссылка)
А glibc-то хоть есть?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 13:31 (ссылка)
валом :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:04 (ссылка)
Тогда локаль и всё, что к ней прилагается должно быть в живом виде.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ex_sighup150@lj
2004-11-22 19:02 (ссылка)
Нет, конечно, откуда на FreeBSD glibc?
То есть она туда сравнительно недавно портирована, но от рождения
там BSD libc. Локали для которой в бинарный вид приводятся mklocale(1).
localedef только в процессе создания.

(Ответить) (Уровень выше)

Локаль выставлена правильно
[info]tarkhil@lj
2005-05-07 04:09 (ссылка)
Стоит ru_RU.KOI8-R. Perl с use locale прекрасно все понимает по-русски, так что, дело не в системе. Проверка показала, что locale устанавливаются. Но не работают.

Поискал на opennet.ru, не нашел. Попытался посмотреть исходники libc, не понял вообще ничего.

Очень неприятно чувствовать себя в лыжах на асфальте.

(Ответить) (Уровень выше)


[info]mivlad@lj
2004-11-22 18:55 (ссылка)
А всё потому, что это не кодировка, а костыль, который давно уж пора запретить и не пущать.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-22 19:43 (ссылка)
UTF-8, конечно, повеселее будет. Но запретить и не пущать - пока ещё не время. Всё идёт своим чередом, потихоньку всё адаптируется к UTF-8. KOI8-R останется разве что для каких-нибудь однокристалок и встроенных контроллеров, где объём важен. Была ж KOI7 - ну и кто теперь про неё вспоминает?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-22 22:53 (ссылка)
Если уж важен объём, то лучше использовать windows-1251. С точки зрения объёма самого текста разницы никакой, а сортировка делается без дополнительных таблиц.

Кстати, я не могу вспомнить ничего такого однокристального с настолько ограниченным объёмом, что бы общалось с пользователем на русском языке. На пейджерах вроде бы латиница была? Что там остаётся… Станки какие-нибудь?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]vchk@lj
2004-11-23 08:42 (ссылка)
Сортировать-то обычно не требуется. Обычно требуется выводить сообщения на русском. А в этом случае лучше, если кодировка совпадает с кодировкой той системы, где софт делается. Ну чтобы с перекодировкой не геморроиться.

А однокристальное с русским - ну да, станки, например. Или какие-нибудь системы управления чем-нибудь.

(Ответить) (Уровень выше)


[info]krace@lj
2005-01-10 14:57 (ссылка)
пейджеры были, кстати, руссифицированные. лет 10 назад, помню, мы с ними весело кувыркались. у некоторых была поддержка кириллицы в прошивке, а некоторым и ПЗУшку менять приходилось. Кодировочные таблицы там были — мама не горюй: на собаку-водолаза и на всех овчарок сразу.  ;)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2005-01-10 17:40 (ссылка)
Это не только с пейджерами. В мобильниках тоже были забавные кодировки. Да и сейчас, текстовые LCD-экранчики индустриального стандарта (на HD44780 и т.п.) тоже с кодировкой занятной.
Вот DataVision, например -
0xA0 - "Б"
0xA1 - "Г"
0xA2 - "Ё"
0xA3 - "Ж"
0xA4 - "З"
и т.д. Т.е. в верхней части таблицы символов только те русские буквы, аналогов которых в латиннице нет.
Суть такая, что предлагается использовать латинские буквы вместо таких же по написанию русских.
Что весьма "радует" когда приходится писать софт для устройства с таким LCD. Пришлось тупенький перекодировщик написать и прогонять исходник сначала через него, а потом уже компилятору скармливать. Благо в унихообразных системах проблем с построением таких цепочек из разных приблуд нет.

(Ответить) (Уровень выше) (Ветвь дискуссии)

эх, молодость-молодость...
[info]krace@lj
2005-01-10 17:46 (ссылка)
да-да-да, именно так всё и было.

(Ответить) (Уровень выше)

Re: Reply to your comment...
[info]tarkhil@lj
2005-05-05 15:27 (ссылка)
Сортировка давным-давно загнана в разделяемые библиотеки и подгружаемые локали. А основная проблема UTF - то, что она еще не устаканилась. Я вот с трепетом думаю о том, как будем переносить на более новый Perl некую софтину, которая специально патчена для корректной обработки UTF Perl'ом 5.6.1...

(Ответить) (Уровень выше)


[info]honeyman@lj
2004-11-24 13:56 (ссылка)
А нормальных альтернатив этому костылю нету.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-24 14:41 (ссылка)
Как это нету? Юникодов вон целая плеяда. А из однобайтовых кодировок 1251 просто объективно (по потребительским характеристикам) лучше.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]honeyman@lj
2004-11-24 17:14 (ссылка)
> Юникодов вон целая плеяда.
Из них в тех же никсах нормально поддерживается только самый технологически замороченный вариант — UTF-8. Да и то, на самом деле, не «нормально», а кривенько.

> А из однобайтовых кодировок 1251 просто объективно (по потребительским характеристикам) лучше.
«По потребительским характеристикам» — это по распространённости, что ли? По той самой, по которой Винда всех рвёт нипадеццки?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-24 18:01 (ссылка)
В кодировке cp1251 буквы расположены по алфавиту (относительно правильная сортировка достигается даже в программах, которые вообще о кодировках ничего не знают) и кроме того, она включает в себя такие полезные символы, как неразрывный пробел и троеточие. Единственное преимущество кодировки koi8-r (читабельность при отсечении старшего бита) давно уже неактульно.

И не всё ли равно, кем эта кодировка разработана? Не запатентована и ладно.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]vchk@lj
2004-11-24 20:15 (ссылка)
Интересно-то как :)

А чего это читабельность при отсечении старшего бита - неактуально, а такая столь же давно решённая херота как правильная сортировка - это актуально?

Нет уж, либо актуально и то, и другое, либо актуального нет ни там ни там.

А "кем разработана", кстати, ещё как важно. В стандартах такой кодировки нету, соответственно санкций никаких не последует если разработчику придёт в голову сдвинуть все буковки в своей собственной кодировке на 5-6 позиций. Ну в целях получения прибыли от продажи "новых версий" софта не только новым покупателям, но и пользователям "старых" версий, оказавшихся несовместимыми, а также различных "перекодировщиков" и "плагинов" для борьбы с созданной проблемой.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-24 21:13 (ссылка)
С сортировкой до сих пор регулярно проблемы встречаются. Например, у многих зарубежных хостеров стоит mysql<4.1, настроенный на работу с кодировкой latin1. Наилучший способ сортировать русские строки с помощью ORDER BY в данном случае — это хранить их в кодировке 1251 и сортировать как бинарные данные.

Теперь, пожалуйста, приведите мне пример mta, который до сих пор отрезает старший бит и при этом установлен на более чем двухстах серверах.

> А "кем разработана", кстати, ещё как важно.

Определитесь уж ;-)

> В стандартах такой кодировки нету,

http://www.iana.org/assignments/charset-reg/windows-1251
Хотя, если хочется совсем уж по стандартам — есть ISO-8859-5 и ГОСТ-19768-87. В обеих, кстати, буквы идут по алфавиту.

> соответственно санкций никаких не последует если разработчику придёт в > голову сдвинуть все буковки в своей собственной кодировке на 5-6 позиций.

А какие могут быть санкции в случае других кодировок, интересно?

> в целях получения прибыли от продажи
> "новых версий" софта не только новым
> покупателям, но и пользователям "старых"
> версий, оказавшихся несовместимыми, а
> также различных "перекодировщиков" и
> "плагинов" для борьбы с созданной
> проблемой.

Тянет на сценарий для фильма про хакеров.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]vchk@lj
2004-11-24 21:59 (ссылка)
С сортировкой до сих пор регулярно проблемы встречаются. Например, у многих зарубежных хостеров стоит mysql<4.1, настроенный на работу с кодировкой latin1.

Дык это проблемы тех, кто пользуется услугами таких хостеров и не знает как пользоваться
SET SESSION character_set_server = 'koi8_ru';
SET SESSION collation_server = 'koi8_ru';

Ну или там 'cp1251'...

KOI8-R ничуть не хуже сортируется по ORDER BY.
Если конечно доки читать...

Теперь, пожалуйста, приведите мне пример mta, который до сих пор отрезает старший бит и при этом установлен на более чем двухстах серверах.

Ну да, конечно. Вы-то и не собирались показать мне 200 серверов где стоит совсем допотопный mysql который аж collation_server не понимает. А я тут с вами буду делиться допотопными MTA, которые так давно не апгрейдились, что до сих пор 7-й бит режут. ЩАЗ. Слишком глупый способ нарыть себе нахаляву дырок/открытых релеев. Идиотов ищите по другим журналам.

Определитесь уж ;-)

Я-то определился. CP1251 - я не использую, потому что она разработана микрософтом. Это для меня достаточное условие, чтобы гнушаться этой кодировкой.

Про стандарты:
Не надо выдавать регистрацию MIME-charset'a за принятие кодировки стандартом. Я завтра напишу свою кодировку и с таким же успехом зарегистрирую ей имечко для MIME-charset'а.

Хотя, если хочется совсем уж по стандартам — есть ISO-8859-5 и ГОСТ-19768-87. В обеих, кстати, буквы идут по алфавиту.
Да, эти годятся.

А какие могут быть санкции в случае других кодировок, интересно?
Никто не будет пользовать изменённую кодировку, потому что стандарт-то остался неизменным.

Тянет на сценарий для фильма про хакеров.

Тянет в лучшем случае на слабенькое описание того, чем на самом деле микрософт непрерывно занимается.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-24 22:36 (ссылка)
> Дык это проблемы тех, кто пользуется
> услугами таких хостеров и не знает как
> пользоваться SET SESSION character_set_server = 'koi8_ru';
> SET SESSION collation_server = 'koi8_ru';

Сервер может вообще ничего не знать о такой кодировке. Зарубежный, например.

> KOI8-R ничуть не хуже сортируется по ORDER BY.
> Если конечно доки читать...

Спасибо, я в курсе. Только вот не всегда есть возможность эти доки применить.

> делиться допотопными MTA, которые так
> давно не апгрейдились, что до сих пор 7-й
> бит режут. ЩАЗ. Слишком глупый способ
> нарыть себе нахаляву дырок/открытых
> релеев. Идиотов ищите по другим
> журналам.

:-)

> Определитесь уж ;-)
> Я-то определился. CP1251 - я не использую,
> потому что она разработана микрософтом.
> Это для меня достаточное условие, чтобы
> гнушаться этой кодировкой.

Ага. Так бы сразу и сказали. В соседней записи вы определились совсем по другому. Двойные стандарты — это удобно.

А вы в курсе, что MS является членом W3C и принимает активное участие в разработке web-стандартов? Как у вас, от смотрения в браузер аллергия не начинается? Нет? Ну что ж, даже и не двойные, значит.

> Тянет в лучшем случае на слабенькое
> описание того, чем на самом деле
> микрософт непрерывно занимается.

Согласен, MS делает много гадостей. Очень много. Но на моё мнение о кодировках это не влияет. Потому что я уже давно не мыслю на уровне «Фу-кака-брось_каку».

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]vchk@lj
2004-11-24 23:08 (ссылка)
Сервер может вообще ничего не знать о такой кодировке. Зарубежный, например.

Ну да. Какие-нибудь русофобы специально при сборке включили опцию --without-charset
Стоит ли пользоваться таким хостингом?

Ага. Так бы сразу и сказали. В соседней записи вы определились совсем по другому. Двойные стандарты — это удобно.

Я вообще-то с самого начала совершенно открыто заявил о своей позиции относительно продуктов мелкософта.
Никаких двойных стандартов. Это я Вам определится предлагал, ибо непонятно поначалу было - то ли Вы за "свободу и равенство", то ли заняли определённую сторону.

А вы в курсе, что MS является членом W3C и принимает активное участие в разработке web-стандартов?

Да, дофига чего наразрабатывала MS. Причём сама это всё выполнять не собирается вовсе. :)

Как у вас, от смотрения в браузер аллергия не начинается? Нет? Ну что ж, даже и не двойные, значит.

Ну я ж не в IE смотрю - почему у меня должна быть аллергия?

(Ответить) (Уровень выше)

Re: Reply to your comment...
[info]vchk@lj
2004-11-24 22:14 (ссылка)
И ещё.
Для разработки KOI8-R объективные причины были.
Для разработки CP1251 никаких причин, кроме желания сделать свой продукт несовместимым с продуктами конкурентов и за счёт этого поиметь какой-то гешефт, у микрософта не было.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-24 22:45 (ссылка)
Для разработки CP1251 причиной послужило то, что прочие кодировки ориентированы на текстовый режим. В графическом режиме всякая псевдографика ну нисколько не нужна, зато нужны разнообразные красивые и полезные символы.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]vchk@lj
2004-11-24 23:16 (ссылка)
А зачем в графическом режиме какие-то картинки засовывать в кодировку?
В текстовом-то - понятно. Рамочки там нарисовать, знак градуса перед C поставить. Иных возможностей, кроме как забить всё это в консольный шрифт просто нету.

А в графическом-то режиме зачем, когда там можно просто нарисовать то что нужно там где нужно?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-24 23:21 (ссылка)
Вы издеваетесь, что ли? Я же не про иконки какие-нибудь, а про символы. Кавычки там, троеточия, тире всякие. А то ведь с вашей логикой можно и без букв в кодировке остаться. Будет идеальная кодировка. Пустая. Хотя нет, не идеальная, если от MS. Хоть и пустая.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]vchk@lj
2004-11-24 23:39 (ссылка)
А что, в KOI8 кавычек не хватает? Или троеточие микрософт запретил из трёх точек делать?

С моей логикой без букв не останешься. Даже если старший бит срезать. Ну и псевдографика мне ничуть не мешает даже в графическом режиме, зато в консоли удобно.

И картинки на кнопочках и прочих рюшечках у меня в PNG/XBM лежат - какие я захочу, а не какие микрософт засунул в Marlett. Ну так вот придумали эти "специалисты" - символами шрифта Marlett крестики / квадратики / уголки статусбаров / кнопки скроллбаров и пр. элементы графического интерфейса рисовать.

И кто после этого идиот?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-24 23:48 (ссылка)
В koi8-r нет русских кавычек. Вообще. Троеточие — это не три точки, а совершенно отдельный символ. Спросите любого наборщика. Всё это не картинки для кнопочек, а обычные символы для обычного текста.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]vchk@lj
2004-11-25 00:20 (ссылка)
А зачем наборщику символы компьютерного шрифта?
У них там в лучшем случае PS, а в худшем - чудной агрегат со своей кодировкой. И в том, и в другом случае ничто не мешает при конвертировании превратить кавычки в правильные, а три точки подряд в троеточие.

Ну а то, что текст в кавычках я уж как-нибудь соображу, даже если использовать в качестве кавычек апострофы.

Впрочем, разговор какой-то пустой.
Какая разница, всё равно всем светит UTF-8 взамен и CP1251 и KOI8-R и кучи других кодировок.
Вот сижу, пишу - а оно ж в UTF-8 всё пишется, в Firefox'е-то.


(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Reply to your comment...
[info]mivlad@lj
2004-11-25 00:30 (ссылка)
:-)

(Ответить) (Уровень выше)


[info]jdevelop@lj
2004-11-21 13:35 (ссылка)
более концептуальный вопрос - как собрать все это под Виндоуз с mingw ;)

На данном этапе при небольших модификациях (типа выбрасывания getopt и заменой его на простенький парсер командной строки) все собирается и даже с претензией на работоспособность. Но вот с локалью видимо получится полный 3.14. Идеи?

(Ответить) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 13:51 (ссылка)
Ну дык свой tolower написать и всё. Там писанины-то, на 5 секунд.
Типа
c &= 0xDF; /* Для KOI8-R */
или
с |= 0x20; /* Для CP1251 */
И всё.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 13:54 (ссылка)
может имеет тогда смысл сделать еще параметр с кодировками?
чтобы было гибчее.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:00 (ссылка)
Дык локаль и есть тот самый параметр с кодировками.
Потом, работа зависит и от того, в какой кодировке буквосочетания в таблице.
Если с локалью всё в порядке, то естественно, что текст программы будет скопирован из броузера в исходник именно в кодировке для текущей локали, и tolower будет работать как надо, независимо от того, какая именно локаль стоит. Главное, чтобы она была хоть какая-то.

А так - хоть ISO, хоть KOI8-R, хоть CP1251, хоть CP866, да пусть хоть MAC-CYRILLIC.
C UTF-8, разве что, проблемка будет, да и то - решаемая.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 14:06 (ссылка)
гм, тогда странно. У меня локаль(LANG) ru_RU.KOI8-R
исходник соответственно тоже в KOI8-R

собрал, потестировал - болт :(

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:07 (ссылка)
A LC_CTYPE чему равно?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 14:08 (ссылка)
echo $LC_CTYPE

ничему :(

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:18 (ссылка)
А если сделать
export LC_CTYPE=ru_RU.KOI8-R
?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 14:19 (ссылка)
болт :(

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:24 (ссылка)
Тогда забить, и пользовать c2 = *src & 0xDF;
вместо c2 = tolower(*src);

Ну и рабобраться с локалью потом, потому как не дело.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 14:27 (ссылка)
гым, а проверять как
if (*src > 0xDF)
c2 = *src & 0xDF

?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:36 (ссылка)
Зачем? В KOI8-R у маленьких букв 5-й бит (если с 0 считать) равен нулю. У больших - единице. Тупо всем буквам устанавливаешь его в нуль. Маленькие так и останутся маленькими, а большие станут маленькими.
Что произойдёт с нерусскими буквами и символами - плевать. Их всё равно нет в таблице буквосочетаний, поэтому совпадений не будет и они никак не учтутся.

(Ответить) (Уровень выше)


[info]vchk@lj
2004-11-21 13:54 (ссылка)
А командную строку вообще можно не обрабатывать.
Просто argc проверять, если больше 1 - то в argv[1] - имя файла, если нет - то читать stdin.
Там оно и не нужно - больше по привычке написано, ну в целях "чтоб было, вдруг понадобится".

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 13:55 (ссылка)
ну православное ГНУтое приложение должно отвечать канонам и догматам :))

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:01 (ссылка)
Ну если согласно канонам, то положено getopt пользовать, а не свой парсер писать :)
И setlocale тоже.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jdevelop@lj
2004-11-21 14:07 (ссылка)
то да
но с переносом под M$ возникнут проблемы :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:19 (ссылка)
А М$ - вообще злостная ересь.

(Ответить) (Уровень выше)


[info]selivan@lj
2004-11-21 14:22 (ссылка)
Чей-то не компилится твоя программулина. Пробовал TurboC3 и BorlandC++5 выдает много ошибок. Наверное, руки из ж... у меня растут. А так идея очень замечательная.

(Ответить) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:26 (ссылка)
А нефиг всякие кошерные компиляторы пользовать. Ещё бы VC++ попробовал.

Вот gcc или tcc - без единого предупреждения, как пулемёт.
gcc -Wall -o program program.c
и всё пучком.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]selivan@lj
2004-11-21 14:40 (ссылка)
Это ты точно заметил, выдает про getopt.h весьма матерное.
Ставил было себе линух, да никак не возьму в толк как дрова к софтмодему прикрутить. Ты вот ратуешь за линух, ну написал бы ЧПЧИЧЧДЧ (Что По Чём И Чупа-Чупс Для Чайников)%) краткое описалово как дрова и программы ставить и там разных полезностей.
Как там, кстати, 3D принтер?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 14:58 (ссылка)
3Dпринтер как бы жив, но частично. Естественно вылезли всякие геморрои. Потихоньку с ними воюю. Например - как закрепить подшипник в стенке прямоугольного алюминиевого профиля без вытачивания на токарном станке крепилок и пр? А ведь по условию задачи - есть только бытовой инструмент. Ну и прочие подобные мелочи. Винт стружкой загаживается, программу никак по-людски не допишу, которая движками крутит, фреза из сверла хреновенькая выходит - дерево грызёт, а что потвёрже - уже тупится мигом. В принципе, основное всё уже готово. Схему, чертёж, программу и фотки может и выложу, только оно всё-же недоделанное.

Дрова к софтмодему под линух ищутся на linmodems.org

Как и чего в линухе - подробно написано в Linux-HOWTO, которые давно переведены в том числе и на русский.

А getopt и locale - можно и выкинуть без ущерба. Я уже писал тут, что надо сделать.

выкидываем строки:
#include <getopt.h>
#include <locale.h<
#include <errno.h<
#include <ctype.h<

функцию usage() { }

setlocale(LC_ALL,"");

Всё про переменную prog

цикл while { } с getopt_long

Для винды, заменяем c2 = tolower(*str); на с2 = 0x20 | *str;

всё, что начинается с if(verbose)

переменную optind заменяем на цифру 1.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]selivan@lj
2004-11-21 15:55 (ссылка)
Жаль что с 3д принтером застой :( Вещь конечно нужная для производства чего-либо, но изготавливать её самому займет уйму времени. Придумывать и изобретатьЮ, конечно надо, но стоит подумать и о таких вещах как человеко-часы. В том смысле, что просидеть над "прибором" 30-40 выходных и получить на выходе хреновенький кустарный "прибор", или же это время потратить по своей основной профессии, заработать и купить тот же станочек и ... _качественно и быстро_ использовать его по назначению. Времени изобретать велосипед у русских нету. Может быть в начальные условия помимо дрели и т.д. включить и станок токарный, без него уж никак, а на этой базе двигаться вперёд?

Повычищал все что надо. Скомпилил, текст вводится, что дальше делать не знаю.:(

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 17:23 (ссылка)
Скормить программке тексты, а результаты скормить тому, что умеет графики строить по набору значений.
В конце-концов даже Excel подойдёт.
Ну и сравнивать спектры разных текстов. Если у текстов спектры похожи - то автор скорее всего у них один, если разные - то авторы разные.

Результаты работы программки можно, в общем-то, выкладывать куда-нибудь. Ну насобирал с какого-нибудь Крылова кил 200-300 текста, обработал - выложил. Спектр текста Крылова, типа. Возникли сомнения в авторстве текста - скормил его программке и сравнил с образцом.

(Ответить) (Уровень выше)


[info]vchk@lj
2004-11-21 17:47 (ссылка)
Насчёт станка - человеко-часов-то я на него совсем чуть потратил. Была б возможность - недельку бы плотно этим делом позаниматься - и всё было бы готово. Насчёт кустарщины - там ничего подобного не будет. Кустарщину я б давно уже собрал, только кому оно надо - неповторяемое?.

А купить - это вот хрен там. Не купишь. Экономический запрет, так сказать наложен - цена на что-то более-менее похожее задрана до безумия, именно для того, чтобы простому смертному не купить было. Даже небедные(и, порой, весьма небедные) западные хоббисты что-то сами городят, из подручных средств, а на готовое изделие денег у них не хватает.

(Ответить) (Уровень выше)


[info]6pack@lj
2004-11-22 16:40 (ссылка)
А чего за 3D принтер? Фрезерный станок с ЧПУ?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-22 16:56 (ссылка)
Угу.

За основу взят недорогой сверлильный станок, который вполне доступен по цене и по наличию. Плюс столь же доступные детальки/материалы.

Фрезерные гораздо дороже. В принципе, забугорные хоббисты побогаче их и переделывают - там проще всё - стол двигающийся уже есть, надо только двигатели прикрутить. Но с софтом, кстати, и у них туго.

(Ответить) (Уровень выше)


[info]vchk@lj
2004-11-21 14:28 (ссылка)
И системы тоже. Поди твой виндовс и знать не знает, ни про getopt.h, ни про locale.h

(Ответить) (Уровень выше)


[info]trankov@lj
2004-11-21 18:45 (ссылка)
Ну так уж скомпилировали б уже в приемлемый вид-то :)

(Ответить) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 18:58 (ссылка)
А для распространения программ, вообще-то, никакого иного приемлемого вида, кроме исходного текста и быть не может.

Компилирует каждый сам, под свою архитектуру и свою систему.

Для нормальных систем - проблем не будет никаких, для ненормальных естественно понадобятся подпорки и т.п.

ЗЫ: И кстати, у меня тут творится неприкрытая дискриминация и геноцид пользователей виндовса и т.п. поделий. Считаю своим долгом делать так, чтобы любой пользователь пресловутого виндовса чувствовал себя ущербным и обделённым.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]trankov@lj
2004-11-21 19:03 (ссылка)
Я всё понимаю, конечно. Только я ведь тоже могу картинки выкладывать в битмапе цифровом.

Си-компиляторы далеко не у всех есть. Мне вот, к примеру, совершенно ломает качать и ставить.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 19:24 (ссылка)
Ну нету компилятора и ладно, в чём проблема-то?

Ах програмка заинтересовала? Тогда извольте установить нормальную систему и нормальный компилятор. Или потрахаться с ненормальной системой и ненормальным компилятором. Такие правила.

Вы же не возмущаетесь, что в магазине Вам без денег хлеба не дадут. Даже в голову не придёт сказать продавцу - "дайте мне хлеба просто так, потому что меня ломает деньги зарабатывать". А тут почему-то вынь, да положь.

ЗЫ: Картинки, чтоб Вы знали - выложены в совершенно обычном формате GIF, а не в каком-то там битмапе.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]trankov@lj
2004-11-21 19:31 (ссылка)
1. я про свои картинки. к примеру типа.
2. сопоставление неуместное. деньги вещь универсальная, компилятор - специфическая.
3. у вас пост о чём, о методах анализа текста или о программировании? если о первом, то непрограммеры обсудить тему не смогут. если о втором, то графики неуместны.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 19:41 (ссылка)
1. Ну и выкладывайте. Ваши картинки - что угодно с ними делайте.
2. Сопоставление какое есть. Считаете его неуместным - считайте, не вопрос.
3. Пост у меня с предложением совершенно конкретного, практического и простого решения проблемы определения авторства текстов. С описанием принципа, наглядными примерами и текстом программы. Всё.
Мнения неких "специалистов в области анализа текстов", которые не способны собрать простейшую программку, меня не интересуют вообще, в связи с их заведомой некомпетентностью.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]trankov@lj
2004-11-21 19:46 (ссылка)
Хе-хе. Принцип-то Ваш гавённенький, много раз залажанный и не нов совсем, компетентный Вы наш. Спецыалист, хе-хе.

Программку Вашу я кстати прекрасно прочитал, не Бог весть что. Уровень начала XX века Ваш метод. Заявите его на Нобелевскую премию.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 19:55 (ссылка)
Ну конечно же гавённенький. Даже до древнючих цепей Маркова не дотягивает - ещё более тупой и простой.

Только вот он принцип, вот пример, и вот программка. Всё доступно и работает. Бери и пользуй.

А где другие, не гавённенькие, более новые принципы реализованные в программах, которые можно взять вот прямо и использовать? А может Вы чем-то похвастаетесь, критик любезный? Программку продемонстрируете, может, сравним, у кого лучше работат и надёжнее?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]trankov@lj
2004-11-21 19:58 (ссылка)
(как бы к слову) Сюжет очень волнующий...

(Ответить) (Уровень выше)


[info]vchk@lj
2004-11-21 19:30 (ссылка)
И потом - вот Вы даже не задумались - а что у меня за ОС? а какая версия? а что если у меня вообще не x86 ?
Ну соберу я бинарник под Альфу. А дальше что Вы с ним делать будете???

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]trankov@lj
2004-11-21 19:34 (ссылка)
Вы тему-то какую обсудить хотите?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 19:44 (ссылка)
Обсудить что-то хотите тут Вы. Совершенно необдуманно предлагаете весьма дебильные вещи (скомпилировать и выложить бинарник) и ещё возмущаетесь тем, что я такие предложения не принимаю.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]trankov@lj
2004-11-21 19:48 (ссылка)
Я Ваш бинарник раком в попу тыкал. Да ведь?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 19:58 (ссылка)
Вот уж не знаю, как у вас там в солнечном Техасе принято с бинарниками обращаться...

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]trankov@lj
2004-11-21 20:01 (ссылка)
(в сторону) Вы что ж, против эксперимента? «Не тужьтесь, мои дорогие, над формой, не напрягайтесь»...

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-11-21 20:05 (ссылка)
Эксперименты по засовыванию бинарников в жопу проводите сами.
Меня такие ебанутые эксперименты не интересуют вообще.
Я, знаете ли, гнушаюсь.

(Ответить) (Уровень выше)

А что есть приемлемый вид ?
[info]ogurez@lj
2004-11-22 13:29 (ссылка)
ИМХО - Код - самый приемлемый вид для людей с руками.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: А что есть приемлемый вид ?
[info]guestl@lj
2004-11-23 00:29 (ссылка)
Ваше имхо сосет при взаимоотношениях покупателей и продавцов. Мне наплевать на исходный код, мне нужен бинарник. Если я покупаю программу, то я не собираюсь становиться при этом программистом, скачивать себе компиляторы и всё это дело учить. Ага?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: А что есть приемлемый вид ?
[info]ogurez@lj
2004-11-23 00:38 (ссылка)
"Если я покупаю программу" - а ты ее покупаешь ?????
тебе ее кто-то продает ??

НЕТ. все

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: А что есть приемлемый вид ?
[info]guestl@lj
2004-11-23 03:25 (ссылка)
"ИМХО - Код - самый приемлемый вид для людей с руками."
тут где-то есть дополнительные ограничения?
я ввел дополнительное разумное ограничение и тем самым твое утверждение про код стало абсурдным.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: А что есть приемлемый вид ?
[info]ogurez@lj
2004-11-23 09:42 (ссылка)
тебя кто пускал грязными лапами ограничения ставить ?
кто тебе сказал , что твои постулаты разумны ?

вот они, результаты ошибок молодости твоих родителей. гандон надо было одевать.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: А что есть приемлемый вид ?
[info]guestl@lj
2004-11-23 11:24 (ссылка)
А. Понятно, Вы тут посраться хотите. Ну иди в хуй, мудак, и там уже тряси свою наплечную парашу. Могу и на таком уровне. Мне не сложно.

(Ответить) (Уровень выше)

Re: А что есть приемлемый вид ?
[info]ogurez@lj
2004-11-23 09:50 (ссылка)
Меня порядком заебывают эти молодые "специалисты" . им видите-ли некогда , "я не собираюсь становиться при этом программистом" - это значит в переводе на русский язык следующее:

я - круче чем этот парень , я - менажер.
он мне должен.
пусть он мне сделает, а я подумаю и повыебываюсь брать или не брать.
Учить что-то ?? зачем ? голого апломба долно хватить при запасе знаний начальной школы.

Не так-ли , Гэстел ?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: А что есть приемлемый вид ?
[info]vchk@lj
2004-11-23 10:17 (ссылка)
Он ответить не может. Я его забанил нахуй.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: А что есть приемлемый вид ?
[info]ogurez@lj
2004-11-23 10:21 (ссылка)
и то дело

(Ответить) (Уровень выше)

Re: А что есть приемлемый вид ?
[info]guestl@lj
2004-11-23 11:29 (ссылка)
Чувак, если я покупаю программу, то я хочу чтобы она была предоставлена мне в должном виде. Если мне дают не то, за что я платил, а исходники, и при этом еще гнут пальцы, то я банально сделаю всё, чтобы таких программистов, минимум, уволили.

Далее, если мне дают исходник программы, а в ответ на просьбу дать бинарник шлют нахуй, то это лишь показатель длины хвоста пославшего. Никто никому ничего не должен, если не обещал. Но когда в ответ на простую просьбу дать бинарник начинаются выебоны, то уже уже случай банального мудака, который возомнил себя пупом земли.

и программистам давно уже пора понять, что пользователи совершенно не обязаны уметь программировать, отлавливать ошибки или делать что-то еще. Они за это платят программистам, администраторам и прочему обслуживающему персоналу.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: А что есть приемлемый вид ?
[info]ogurez@lj
2004-11-23 12:13 (ссылка)
а ты что-то покупаешь ?
ты заплатил хоть копейку ?

пользователям давно пора понять, что мозги еще никто не отменял.
программисты и администраторы - не обслуживающий персонал.

обслуживающий персонал - это менажеры.
особенно менажеры среднего звена. они нихера не понимают и много пиздят. это - их талант. признаю, талант особенный. так пиздеть употребляя термины смысла которых не знаешь - это большой талант.
ео ведь пиздеж пиздежом остается

" я банально сделаю всё, чтобы таких программистов, минимум, уволили." - вот они ! признаки начинающего управленца !

(Ответить) (Уровень выше)

Re: А что есть приемлемый вид ?
[info]vchk@lj
2004-11-23 12:29 (ссылка)
Здесь ничего не продаётся.
Вы не на базаре.
И вообще - те, кто считает весь мир "рынком" идут нахуй.

(Ответить) (Уровень выше)

Re: А что есть приемлемый вид ?
[info]ingas@lj
2004-11-23 16:42 (ссылка)
Если ты желаешь отбашлять - от тебя ТТ, от программера ТЗ на основе ТТ, потом нужен договор по ТЗ с указанием бабок.

Или ты стебаешься, или ты дите, или идиот - выбирай варианты.

(Ответить) (Уровень выше)


[info]ex_dr_estet52@lj
2004-11-23 06:57 (ссылка)
попробуйте JS-версию, работает в браузере

http://www.ljplus.ru/img/dr_estet/index.html

Тест на 600 килобайт обрабатывается за минуты две.
Результат заточен под Эксель. Копируешь в Эксель, сразу ставит в колонку. Там же строишь графики.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]keethraxx@lj
2005-01-06 12:43 (ссылка)
Что-то такое тут не так: загружаю текст, жму - один результат. Потом удаляю, жму еще -- результат другой...

(Ответить) (Уровень выше)


[info]father_gorry@lj
2004-11-22 13:09 (ссылка)
можно вместо графика использовать способ моментов. Считаем разницу между соответствующими значениями стандартизованных* массивов первого и второго текстов. Пишем подряд. Знак сменился -> moment += 1
и в stdout.

* стандартизовать, думаю, можно по максимальному значению.

(Ответить) (Ветвь дискуссии)


[info]vchk@lj
2004-11-22 16:52 (ссылка)
Что имеется ввиду под "стандартизацией массива по максимальному значению"?
Сейчас сумма всех элементов результата для любого текста = 1, там же относительное содержание буквосочетаний считается.

А вообще - так может и проще сравнивать будет. Большой момент - непохожи, маленький - автор один.

(Ответить) (Уровень выше)


[info]jokerr@lj
2004-11-23 06:55 (ссылка)
На чем это лучше компилировать и что за странные ссылки на картинки?

data:image/gif;base64,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

(Ответить) (Ветвь дискуссии)


[info]vchk@lj
2004-11-23 08:37 (ссылка)
Компилировать лучше gcc
Ссылок на картинки у меня вообще нет. Это и есть сама картинка.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]jokerr@lj
2004-12-30 09:14 (ссылка)
А что такое gcc?
Да, я понимаю, что это картинка, но мой файрфокс как-то это показывает :)
Интересно что это за формат и как из обычной картинки получить такой текст.

ПЭ.ЭС.
Этот коммент мне на почту пришел только _сегодня_ (30 декабря).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vchk@lj
2004-12-30 11:05 (ссылка)
gcc - GNU C Compiler. Компилятор С.

Формат URL - data: (ну есть вот http: есть ftp: а тут - data:). MIME-тип данных - image/gif . кодировка содержимого - base64.

Из обычной картинки base64 получается, например утилитой mimencode.
Если такой нету - можно через жопу сделать - в каком-нибудь почтовом клиенте создать письмо, приложив к нему требуемую картинку. Потом тело этого письма сохранить в текстовый файл. Потом из этого текстового файла извлечь картинку в закодированном и пригодном для использования в URL виде.

> Этот коммент мне на почту пришел только _сегодня_ (30 декабря).
Во глюки-то :) Ходило-бродило наверно где-то...

(Ответить) (Уровень выше)

пару вопросов автору
(Анонимно)
2004-11-27 14:09 (ссылка)
у меня есть два вопроса к автору:

1. откуда вы взяли эти 512 сочетаний? кто объявил их наиболее использованным.
2. я очень плохо понимаю принцип такого определения автора. если ударение делается только на то КАКИЕ слова чаще всего использует автор, что результаты такой программы будут колебаться от книги к книге, но не от автора к автору, т.к. контекст текста играет тут одну из первых ролей, не так ли? думаю, если попробывать проанализировать этой программой "Властелин колец" и какое-нибудь письма Толкиена на совершенно отвленную тему результат будет не обнадеживающий :)
3. график лукьяненко - сравнивали ли вы по разным книгам или двум кускам одной книги?

Заранее спасибо!

(Ответить) (Ветвь дискуссии)

Re: пару вопросов автору
[info]vchk@lj
2004-11-28 14:25 (ссылка)
1. Я объявил. Взял все тексты всех авторов, которые нашёл у себя на винте и по ним выяснил какие сочетания наиболее часто там встречаются.
2. Нет, ударение делается на то, какие буквосочетания с какой частотой использует автор. А если есть сомнения какие-то, то нефиг думать - надо просто взять и попробовать.
3. По разным книгам. Одна - какой-то из "дозоров", вторая - "спектр".

(Ответить) (Уровень выше)


[info]keethraxx@lj
2005-01-03 14:57 (ссылка)
Мне нравится :)
Неплохо было бы кроме графиков считать коэф. корреляции между авторами по всем сочетаниям, это будет объективный, так сказать, критерий.
(just in case:
corr(x,y)=sum[(x-mean(x))*(y-mean(y))]/sqrt{sum[(x-mean(x))^2]*sum[(y-mean(y))^2]}
)

А на сях примерно так:

(x - массив со значениями афтора 1, y аналогично, N=512)

sxx=syy=sxy=mx=my=0;
for(i=0;i<N;i++){ mx+=x[i]; my+=y[i]; } mx=mx/N; my=my/N; for(i=0;i<N;i++){ sxx+=(x[i]-mx)^2; syy+=(y[i]-my)^2; sxy+=(x[i]-mx)*(y[i]-my); } corr=sxy/sqrt(sxx*syy);

(Ответить) (Ветвь дискуссии)


[info]vchk@lj
2005-01-06 11:11 (ссылка)
Спасибо.

В принципе, чтобы считать корреляцию есть куча программок уже написанных, но можно и в эту добавить, только нужно дописать чтение массива x[] из уже готового файла, чтобы было с чем сравнивать.

Ща вот возьму и допишу.
Дописал. И критика еззь :)
http://www.livejournal.com/users/vchk/57112.html

(Ответить) (Уровень выше)

А пример gnuplot'ной команды не дашь?
[info]tarkhil@lj
2005-05-05 16:19 (ссылка)
Я, конечно, разберусь, но для этого нужно сначала ломов победить ;-) А, если я их сумею победить, я все равно не gnuplot'ом буду заниматься

(Ответить) (Ветвь дискуссии)

Re: А пример gnuplot'ной команды не дашь?
[info]vchk@lj
2005-05-05 19:01 (ссылка)
легко:
plot "file1.gnu" with line, "file2.gnu" with line

(Ответить) (Уровень выше) (Ветвь дискуссии)

О, спасибо
[info]tarkhil@lj
2005-05-06 01:56 (ссылка)
Смотрю. Разные графики у моих текстов разного времени, очень разные.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: О, спасибо
[info]vchk@lj
2005-05-06 07:19 (ссылка)
Да не за что.
Единственное что - нужны большие тексты, по 10-20 килобайтам сравнить толком не выйдет.
А так - разница будет велика даже у одного автора, если тексты на совершенно разные темы, например, один про вуглускров каких, а другой про супергетеродинные приёмники.

(Ответить) (Уровень выше)