LINUX.ORG.RU
ФорумTalks

Список ссылок на сайты в KOI8-R

 ,


0

3

Начал составлять сабж. Пока в списке 31 ссылка. Среди них «Институт Ядерной Физики им.Г.И.Будкера СО РАН», «Информационные научно-образовательные ресурсы ГАГУ», «Нижегородский Университетский Центр Интернет», «ивановский региональный портал», «МЦНМО: МОСКОВСКИЙ ЦЕНТР НЕПРЕРЫВНОГО МАТЕМАТИЧЕСКОГО ОБРАЗОВАНИЯ», «Институт лингвистических исследований», «„За науку!“ :: газета Алтайского государственного университета», «Переславль-Залесский — информационный портал города» и «Специальная астрофизическая обсерватория Российской академии наук». А также ресурсы с документацией по UNIX'ам.

Список здесь: http://saahriktu.org/koi8rsitez.html .

★★★★★

Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от TeopeTuK

Кавычек нет

'"'

тире нет

'-'

значке параграфа

 _
`_
`-'
 -'

или рубля

  _
=|='

А, вообще, последние символы для ряда людей уже оверхед.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Зачем тем людям, которые не являются полиглотами, и живут в России зная не более чем русский и английский, ещё что-то сверх KOI8-R?

Я ж тебе уже говорил.

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Ну так это или полиглотам актуально или тем, кто тексты документов по всем стандартам (для печати и т.п.) оформляет.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Раньше вместо твёрдого знака использовался апостроф. Это тоже по-твоему нормально? Давай вообще сократим алфавит до двадцати букв, а знаки препинания не будем использовать, на древней Руси же не использовали, и ничего.

te111011010
()
Ответ на: комментарий от te111011010

Орфография и пунктуация - это разные вещи. Я же не предлагаю вообще отменить точки, запятые, восклицательные и вопросительные знаки,... и т.д. А это и есть основа пунктуации, которой может быть избыточно в ряде случаев. Читать и так можно. Виды кавычек и длина тире - это те мелочи, которые не влияют на читабельность текста. Я в полтора года не знал что такое тире и путал его с минусом, и ничего. Это ж похожие символы с условными отличиями, которые определяются в первую очередь контекстом.

saahriktu ★★★★★
() автор топика

У всех этих сайтов есть неоспоримый плюс: грузятся мгновенно (если хостинг не говно). И дизайн чистый относительно.

Deleted
()
Ответ на: комментарий от Deleted

Данный плюс связан лишь косвенно с кодировкой. Причина и первого, и второго: разработчики — слоупоки. Вероятно, сайт был свёрстан давно и с технической точки зрения с тех пор не менялся.

te111011010
()
Ответ на: комментарий от sudo

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

te111011010
()
Ответ на: комментарий от sudo

Неканонiчные с точки зрения государства религии осквернять правоприменительная практика разрешает.

te111011010
()
Ответ на: комментарий от saahriktu

Ну так это <…> актуально <…> тем, кто тексты документов по всем стандартам (для печати и т.п.) оформляет.

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

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Ничего кроме минуса на клавиатурах отродясь не было и сейчас нет. Это в последние годы илита орфографического фронта начала использовать разные XCompose и прочие басурманские нововведения, которых в чистой ядерной консоли нет и не надо. И, вообще, даже ASCII является расширенным и дополненным вариантом первых юзабельных 6-ти битных протокодировок: https://ru.wikipedia.org/wiki/Шестибитные_кодировки . И, ведь, всё там было - буквы, цифры, знаки пунктуации и другие символы... Всего выше крыши... Это сейчас люди зажрались, всё им подавай обязательно сверхпрактичное и сверхреалистичное...

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

s/орфографического/пунктуационного/

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от te111011010

Да, не было. А сейчас есть. И в KOI8-R есть.

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

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Юзеры обоих локалей могут сосуществовать мирно если не будут кричать про психиатров и экзорцистов при упоминании другой локали.

Вообще-то это ты первый «волну поднял». В этом треде особенно, а в некоторых других понемногу добавлял.

Я за то чтобы сторонников KOI8-R не заставляли юзать UTF-8.

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

Я никого не заставляю юзать KOI8-R.

Угу, «не заставляю, просто агитирую». А зачем тогда вообще создан этот тред и список ссылок?

DeVliegendeHollander ★★
()
Ответ на: комментарий от saahriktu

Ничего кроме минуса на клавиатурах отродясь не было и сейчас нет.

Даже на 84-клавишных XT‑клавиатурах было существенно больше, чем один лишь минус.

XCompose и прочие басурманские нововведения

Эти «нововведения» были еще в XFree86.

ASCII является расширенным и дополненным вариантом первых юзабельных 6-ти битных протокодировок

С EBCDIC не путаешь?

И, ведь, всё там было

Там, ЕМНИП, не было даже строчных букв.

dexpl ★★★★★
()
Ответ на: комментарий от DeVliegendeHollander

Одни люди выражают своё мнение. Я выражаю своё.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от dexpl

Никаких дефисов на клавиатурах не было и нет, если только не навесить свои хоткеи.

С EBCDIC не путаешь?

Я про то, что эти кодировки появились позже и включали в себя то, что было в тех и больше.

Там, ЕМНИП, не было даже строчных букв.

Да, не было. Прогресс не удержать, потому и появилась KOI8-R.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Прогресс не удержать, потому и появилась KOI8-R.

Именно потому, что прогресс не удержать, и появился Юникод вообще и utf8 в частности.

dexpl ★★★★★
()
Ответ на: комментарий от saahriktu

Чтобы очертить передовой сегмент интернета, админы которого не поддаются на провокации и не следуют слепо моде, ломая сервера

Т.е. если я не буду ничего переводить на KOI8-R, ломая сервера, то не буду очерчен?

Darth_Revan ★★★★★
()
Ответ на: комментарий от saahriktu

Прогресс не удержать, потому и появилась KOI8-R

Не говоря уж о том, что все однобайтные кодировки появились только по причине слишком медленного прогресса (обрабатывать текст на компьютере придумали сильно раньше появления более-менее нормальных объёмов памяти), КОИ8 даже тут выделяется своей архаичностью — она была изначально разработана для поддержки устаревшего семибитного оборудования, ради чего пришлось пойти на крайние меры, сделавшие её самой говённой кирилической кодировкой — не алфавитный порядок букв, сильно затрудняющий сортировку.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

изначально разработана для поддержки устаревшего семибитного оборудования

Для совместимости с ним, но не для него. И это ещё ничего не означает. Если юзеру выше крыши 256-ти символов, то KOI8-R практически полезна и сегодня. Потому ей и продолжают пользоваться, хоть уже и не в тех масштабах.

не алфавитный порядок букв, сильно затрудняющий сортировку

Нет, не сильно, и «усложняющий» - слишком сильно сказано. Выше есть практический демонстрационный пример набросанный на коленке. Это нужно совсем не уметь кодить чтобы это внезапно стало проблемой.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Кстати, KOI8-R присутствует и в мире винды. Там она известна как cp20866. Про неё знают в т.ч. и Mono/.NET. В т.ч., её можно выбрать и в cmd.exe командой «chcp 20866».

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 3)
Ответ на: комментарий от saahriktu

Для совместимости с ним, но не для него

Угу, а деревянные колёса для совместимости с телегами, а не для телег.

Если юзеру выше крыши 256-ти символов

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

KOI8-R практически полезна и сегодня

Брехня

Потому ей и продолжают пользоваться

Это просто недообследованные. Первый же визит к психиатру приведёт их к принудительной госпитализации.

Выше есть практический демонстрационный пример набросанный на коленке

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

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

а деревянные колёса для совместимости с телегами

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

он нерабочий

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

более громоздкий, чем для cp1251

Ну и что?

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от redgremlin

А вот, кстати, допиленный вариант:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int mycharorder[] = { 64, 33, 34, 56, 37, 38, 54, 36, 55, 42, 43, 44, 45, 46,
        47, 48, 49, 65, 50, 51, 52, 53, 40, 35, 62, 61, 41, 58, 63, 59, 57, 60,
        31, 0, 1, 23, 4, 5, 21, 3, 22, 9, 10, 11, 12, 13, 14, 15, 16, 32, 17,
        18, 19, 20, 7, 2, 29, 28, 8, 25, 30, 26, 24, 27
};

int getcwght(int mc)
{

        if (mc > -65 && mc < 0)
                return mycharorder[mc + 64];
        else
                return -1;
}

int main(int argc, char **argv)
{
        if (argc < 2)
                return 1;
        int *sordr, *cwlist, i, j, k, s, eoas, cci = -1, pccf;
        sordr = (int *)malloc(sizeof(int) * (argc - 1));
        cwlist = (int *)malloc(sizeof(int) * (argc - 1));
        for (;;) {
                cci++;
                eoas = 1;
                for (i = 1; i < argc; i++) {
                        if (cci < (strlen(argv[i]) + 1)) {
                                eoas = 0;
                                break;
                        }
                }
                if (eoas)
                        break;
                for (i = 0; i < argc - 1; i++) {
                        if (cci == 0) {
                                sordr[i] = i + 1;
                                if (cci < (strlen(argv[i + 1]) + 1))
                                        cwlist[i] = getcwght(argv[i + 1][cci]);
                                else
                                        cwlist[i] = -2;
                        } else {
                                if (cci < (strlen(argv[sordr[i]]) + 1))
                                        cwlist[i] =
                                            getcwght(argv[sordr[i]][cci]);
                                else
                                        cwlist[i] = -2;
                        }
                }
                for (i = argc - 2; i > 0; i--)
                        for (j = 0; j < i; j++) {
                                if (cwlist[i] == -2 || cwlist[j] == -2)
                                        continue;
                                if (cci > 0) {
                                        pccf = 0;
                                        for (k = 0; k < cci; k++)
                                                if (argv[sordr[i]][k] !=
                                                    argv[sordr[j]][k])
                                                        pccf = 1;
                                        if (pccf)
                                                continue;
                                }
                                if (cwlist[i] < cwlist[j]) {
                                        s = cwlist[i];
                                        cwlist[i] = cwlist[j];
                                        cwlist[j] = s;
                                        s = sordr[i];
                                        sordr[i] = sordr[j];
                                        sordr[j] = s;
                                        continue;
                                }
                        }
        }
        for (i = 0; i < argc - 1; i++) {
                puts(argv[sordr[i]]);
        }
        free(sordr);
        free(cwlist);
        return 0;
}
> ./ffsort2 Шевцов Петров Сыромякин Иванов Пятаков Абрамов Ершов Сидоров Ершин Кузнецов Абдулов
Абдулов
Абрамов
Ершин
Ершов
Иванов
Кузнецов
Петров
Пятаков
Сидоров
Сыромякин
Шевцов
Сортировка в cp1251 была бы совсем не проще. Массива бы могло не быть, да, но вот 'ё' и 'Ё' там не по алфавиту. Так что без массива пришлось бы делать нечто наподобие:
int getcwght(int mc)
{
        if (mc > 191 && mc < 198)
                return mc - 192;
        if (mc == 168) return 6;
        if (mc > 197 && mc < 230)
                return mc - 191;
        if (mc == 184) return 39;
        if (mc > 229 && mc < 256)
                return mc - 190;
        return -1;
}

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от theNamelessOne

Во-первых, здесь происходит синхронная сортировка 2-х массивов. Во-вторых, по особым правилам. В-третьих, заглядывал я в кишки glibc'а и очень сильно сомневаюсь что эта лапша макросов является производительной. Вполне вероятно что мой вариант гораздо быстрее.

saahriktu ★★★★★
() автор топика

Ужас, в теме до сих пор спор идёт спор... Неужели не понятно, что человек либо больной на голову, либо просто тролль (хотя я больше склоняюсь к первому варианту)? В обоих случаях спорить с таким будет не самым лучшим решением.

sudopacman ★★★★★
()
Ответ на: комментарий от saahriktu

Во-первых, здесь происходит синхронная сортировка 2-х массивов.

Зачем ты сортируешь два массива?

В-третьих, заглядывал я в кишки glibc’а и очень сильно сомневаюсь что эта лапша макросов является производительной.

Лапша из макросов сама по себе не может влиять на производительность.

Вполне вероятно что мой вариант гораздо быстрее. А ты возьми и проверь, только элементов возьми побольше.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Это могло бы выглядеть, например, как сортировка односвязного списка, но я манипулирую отдельными данными. Массив sordr[] содержит указатели (индексы) на сортируемые строки, а массив cwlist[] содержит «вес» сортируемых символов. После того как меняются местами указатели в массиве sordr[] «вес» соответствующих сортируемых символов в cwlist[] перестаёт быть актуальным, поскольку строки-то теперь на других местах. Поэтому нужно менять местами и «вес» соответствующих символов соответственно.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)

Zadolbali eti hipstery so svoimi novomodnymi kodirovkami! ASCII hvatit vsem!

noob1
()

А как ты относишься к проблеме определения, в какой кодировке данный файл (если речь о plain text)? Ни разу не приходилось угадывать?

te111011010
()
Ответ на: комментарий от te111011010

Я же говорю: при локали KOI8-R все файлы локально создаются в KOI8-R, а приём сторонних текстов можно автоматизировать чтобы на лету конвертировалось в KOI8-R. Бывают, конечно, исключения, но тут можно привлекать специальные инструменты, например:

> enca -g test
Universal transformation format 8 bits; UTF-8
> enca -g test2
MS-Windows code page 1251
  LF line terminators
> enca -g test3
IBM/MS code page 866
  LF line terminators
> enca -g test4
KOI8-R Cyrillic
  LF line terminators
Отдельные файлы можно спокойно опознать и вручную. Если в тексте содержится нечто наподобие «п²п╬п╡п╬я│я┌п╦», то это UTF-8, а если нечто наподобие «ОКЮМНБШЛХ ПЮАНРЮЛХ яРЮПННЯЙНКЭЯЙХУ ЩКЕЙРПНЯЕРЕИ», то это cp1251, а если нечто наподобие «╞╚═╜╝╒К╛╗ Ю═║╝Б═╛╗ ▒Б═Ю╝╝А╙╝╚ЛА╙╗Е М╚╔╙БЮ╝А╔Б╔╘», то это cp866.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

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

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от theNamelessOne

Какую? Сортировку строк? Может юзер сам должен отсортировать строки и ввести их в нужном порядке, а софтина их просто выведет в указанном порядке?

Поясню ещё раз: 1-й массив сортируется _по данным из 2-го_. Сам по себе 1-й массив не является самодостаточным для задачи сортировки, он просто содержит индексы строк. И как их сортировать непонятно без данных 2-го массива. А при модификации 1-го массива изменения нужно синхронизироать и со 2-м. Так они синхронно и сортируются.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от dk-

Как «ради чего»? Тексты в разных кодировках просто есть. Потому, что разным людям удобны разные кодировки.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

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

Что тебе мешает сортировать сразу массив строк? Зачем нужен массив индексов?

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Чем сортировать? qsort() и другие библиотечные функции ничего не знают о массиве с порядком символов, а нужно сортировать именно в этом порядке. В этом и увидели проблему люди выше. Мол, без своего велосипеда никак, а это слишком сложно. А я практически показал, что можно легко собрать свой велосипед, который справляется с поставленной задачей.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от dk-

Как «ради чего»? Чтобы при локали KOI8-R спокойно читать less'ом без привлечения iconv'а каждый раз.

saahriktu ★★★★★
() автор топика
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Чем сортировать?

Да хоть твоим пузырьком. Зачем массив индексов?

qsort() и другие библиотечные функции ничего не знают о массиве с порядком символов, а нужно сортировать именно в этом порядке.

qsort, если чо, принимает в качестве аргумента указатель на функцию-компаратор.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Зачем массив индексов?

Для сортировки. Порядок индексов в массиве - порядок строк. Это видно и по хвосту программы:

        for (i = 0; i < argc - 1; i++) {
                puts(argv[sordr[i]]);
        }
Просто в цикле берутся индексы из массива и выводятся соответствующие строки.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

Для сортировки. Порядок индексов в массиве - порядок строк.

Да вижу я, не дурак. Но зачем он тут нужен? Можно же при сортировке менять местами сами строки в массиве строк.

theNamelessOne ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.