LINUX.ORG.RU

n7t328IIpnwd 0.3

 , ,


3

4

Состоялся релиз n7t328IIpnwd 0.3 — утилиты для lossless дампа UTF-32 данных в KOI8-R/ASCII.

Название утилиты является производным от «utf-32 to koi8-r dump», где «n7t» и «pnwd» являются зеркальными отражениями (по вертикали) «utf» и «dump» соответственно. Утилита является более мощным и более современным аналогом таких утилит, как utfinfo.pl и uniname из набора утилит uniutils. В число особенностей утилиты входят отключаемость режима «один символ на строку» (по умолчанию выключен), который является единственным рабочим режимом для перечисленных утилит, а также наличие обёртки KOI8-R, которая позволяет дампить символы из состава 2-й половины кодовой таблицы KOI8-R как они есть, в соответствующих кодах KOI8-R (по умолчанию включена). При отключении обёртки KOI8-R как они есть дампятся только символы из состава ASCII.

Для получения информации о названиях символов Юникода утилита использует библиотеку libunistring, которая является чуть ли не единственным современным решением. utfinfo.pl использует модуль CharName.pm из состава Unicode-String, который не содержит информацию о ряде новых символов из состава юникода, соответствует данным о стандарте не новее чем 2005 г. uniname использует собственную таблицу и не обновлялась с 2009 г.

Примеры результатов:

   В своей формулировке теоремы о неполноте Гёдель использовал понятие
   [GREEK SMALL LETTER OMEGA]-непротиворечивой формальной системы [EM DASH] более сильное условие, чем
   просто непротиворечивость. Формальная система называется
   [GREEK SMALL LETTER OMEGA]-непротиворечивой, если для всякой формулы A(x) этой системы
   невозможно одновременно вывести формулы А(0), А(1), А(2), [HORIZONTAL ELLIPSIS] и [THERE EXISTS]x [NOT SIGN]A(x)
   (другими словами, из того, что для каждого натурального числа n
   выводима формула A(n), следует невыводимость формулы [THERE EXISTS]x [NOT SIGN]A(x)). Легко
   показать, что [GREEK SMALL LETTER OMEGA]-непротиворечивость влечёт простую непротиворечивость
   (то есть, любая [GREEK SMALL LETTER OMEGA]-непротиворечивая формальная система
   непротиворечива)^[6].
Vine Linux [HIRAGANA LETTER NI][HIRAGANA LETTER TU][HIRAGANA LETTER I][HIRAGANA LETTER TE]

   Vine Linux [HIRAGANA LETTER HA][IDEOGRAPHIC COMMA]Project Vine[HIRAGANA LETTER O][HIRAGANA LETTER YO][HIRAGANA LETTER BI][591a][HIRAGANA LETTER KU][HIRAGANA LETTER NO][5354][529b][8005][HIRAGANA LETTER NI][HIRAGANA LETTER YO][HIRAGANA LETTER SMALL TU][HIRAGANA LETTER TE][958b][767a][HIRAGANA LETTER GA][884c][HIRAGANA LETTER WA][HIRAGANA LETTER RE][HIRAGANA LETTER TE][HIRAGANA LETTER I][HIRAGANA LETTER RU][IDEOGRAPHIC COMMA]
   [KATAKANA LETTER KO][KATAKANA LETTER N][KATAKANA LETTER PA][KATAKANA LETTER KU][KATAKANA LETTER TO][HIRAGANA LETTER DE][8efd][91cf][HIRAGANA LETTER NA][65e5][672c][8a9e]Linux[KATAKANA LETTER DE][KATAKANA LETTER SMALL I][KATAKANA LETTER SU][KATAKANA LETTER TO][KATAKANA LETTER RI][KATAKANA LETTER BI][KATAKANA LETTER SMALL YU][KATAKANA-HIRAGANA PROLONGED SOUND MARK][KATAKANA LETTER SI][KATAKANA LETTER SMALL YO][KATAKANA LETTER N][HIRAGANA LETTER DE][HIRAGANA LETTER SU][IDEOGRAPHIC FULL STOP] [KATAKANA LETTER I][KATAKANA LETTER N][KATAKANA LETTER SU][KATAKANA LETTER TO][KATAKANA-HIRAGANA PROLONGED SOUND MARK][KATAKANA LETTER RU][HIRAGANA LETTER NO][76f4][5f8c][HIRAGANA LETTER KA][HIRAGANA LETTER RA][5feb][9069][HIRAGANA LETTER NA][65e5][672c][8a9e][74b0][5883][HIRAGANA LETTER DE][4f5c][696d][HIRAGANA LETTER GA][HIRAGANA LETTER DE][HIRAGANA LETTER KI][HIRAGANA LETTER RU][HIRAGANA LETTER YO][HIRAGANA LETTER U][HIRAGANA LETTER NI][IDEOGRAPHIC COMMA]

В состав архива входит также скрипт n7t328IIpnwd_lynx.sh, который дампит текст со страницы по ссылке в KOI8-R (UTF-8 -> UTF-32 -> KOI8-R) через lynx.

>>> Скачать (2257 байт)

★★★★★

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

«энсемьтэтристадвадцатьвосемьдвапээндубльвэдэ».

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

Вы просто не привыкли работать в командной строке.

С чего ты взял?

После ядерной консоли иксы поражают тормозами

Видел когда-нибудь вывод какого-нибудь dmesg на каком-нибудь "Matrox Electronics Systems Ltd. MGA G200e"?

тормозит софт под иксы

openbox, lilyterm, gvim, zathura и seamonkey+adblock+noscript не тормозят.

задачи по работе с графикой

Для некоторых задач ImageMagick идеален.

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

Vine Linux ???? тоже опрятно выглядит.

Vine Linux について опрятнее (имею мнение, хрен оспоришь).

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

С чего ты взял?

Тот, кто по настоящему привык к командной строке, уже вряд ли променяет её на графические среды.

Видел когда-нибудь вывод какого-нибудь dmesg на каком-нибудь «Matrox Electronics Systems Ltd. MGA G200e»?

У меня был Pentium II с Matrox MGA Millenium. По тем временам всё летало. Также я юзал ядерную консоль в текстовом режиме на i486DX4 с 12 Мб RAM. Тоже было неплохо.

openbox, lilyterm, gvim, zathura и seamonkey+adblock+noscript не тормозят.

Ну-ну.

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

lossy/lossless compression: Certain compression methods are lossy. They achieve better compression by losing some information. When the compressed stream is decompressed, the result is not identical to the original data stream. Such a method makes sense especially in compressing images, movies, or sounds. If the loss of data is small, we may not be able to tell the difference. In contrast, text files, especially files containing computer programs, may become worthless if even one bit gets modified. Such files should be compressed only by a lossless compression method. [1]

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

[1] D. Salomon, Data Compression, The Complete Reference

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

«lossless» - «без потерь». lossless бывает не только сжатие. В данном контексте «lossless» указывает на то, что ни один код исходного потока не остаётся не отражённым на выходе. В то время как дамп с потерями либо совсем отбрасывал бы все символы не входящие в KOI8-R/ASCII (что и делает «iconv -c»), либо пытался бы компенсировать потерю некоторых символов используя вместо них другие.

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

То есть надо заучивать код каждого символа, чтобы что-то прочитать?

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

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

Не очень-то умно спорить с общепринятыми определениями, хотя что я, это же лор.

Ещё раз, для пользователей кои-8 и ядерной консоли — твой кодек *теряет* информацию: а именно, была ли последовательность символов юникодным символом или его описанием в ASCII. Если кодек теряет информацию (любую), он по определению lossy.

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

Я уже много раз написал: в режиме «один символ на строку» ничего не теряется. Если данные на разных строках, то они относятся к разным символам, а не к одному. Но, так сложнее читать. Поэтому утилита умеет и другой режим, который дефолтен.

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

Извини автор, но программирование это не твоё. Какой ещё нафиг один символ на строку, кому нужен такой треш? Достаточно было сделать экранирование [ и ]. Нет будем превращать входной текст в нечитаемый столбик. WTF? Керниган и Ричи тебя чему учили \{что-то} - спец символ, \\ - символ \, нет будем вставлять символы перевода строки, пздц.

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

Тогда это полуправда. Lossless «со звёздочкой»*. Нужнее и интереснее, правда, не стало.

*) не является публичной афёртой

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

Новость не читай, комментарии пиши.

Какой ещё нафиг один символ на строку, кому нужен такой треш?

В utfinfo.pl и uniname реализовано именно так, причём без альтернатив. Моя же реализация умеет больше режимов.

Достаточно было сделать экранирование

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

Не хотите - не юзайте. А я какую задачу перед собой поставил - то и реализовал.

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

Тогда всё равно нельзя будет различить было ли так изначально или нет.

Какой же ты тупой все-таки. Они тебе говорят конвертировать [ в [LEFT BRACKET], а ] в [RIGHT BRACKET], чтоб и lossless был, и трешовый «один символ на строку» выбросить.

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

Эмулятор терминала в ядре через фреймбуффер работает намного быстрее, там мгновенный отклик. Что-то подобное я видел в KolibriOS.

anonymous
()

n7t328IIpnwd - теперь я зная как называть свои программы. Осталось понять как запоминать их названия.

AlexVR ★★★★★
()

Название утилиты является производным от «utf-32 to koi8-r dump», где «n7t» и «pnwd» являются зеркальными отражениями (по вертикали) «utf» и «dump» соответственно.

А чего, генератор псевдослучайных уже не работает?

vada ★★★★★
()

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

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

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

Надо не по внешнему виду запоминать, а по ключам. Если знаешь, из каких ключей состоит иероглиф и как писать эти ключи (в случае сложных), то легко всё напишешь.

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

Эти символы не так называются. Они называются «LEFT SQUARE BRACKET» и «RIGHT SQUARE BRACKET» соответственно. Чтож, такой вариант тоже возможен, хоть и исключит ряд возможных вариантов «as is» на выходе.

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

а сейчас тебе кто-то мешает? О_о

Deleted
()

Полезная штука.

spqr ★★★
()

Лаконично, разумно, оправданно.

Жаль, не наливают. Приходите со своим.

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

off KOI8-R wrapper

disable

square brackets not as is mode

also convert square brackets

или что-то в таком духе

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

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

Я написал инструмент для изучения и чтения юникодных строк, а не нечто во все поля универсальное. Тем более, что самые универсальные инструменты и так есть - hex редакторы.

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

Нет, нужны все режимы. При этом утилита дампит по коду символа. А для декодирования придётся выделять подстроки. Это больше похоже на работу для sed'а в скрипт которого загнали всю таблицу соответствия имён юникодных символов их кодам. А это уже гораздо сложнее.

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

А я недавно новый крутой алиас в .cshrc запилил, можно я тоже про это новость сделаю?

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

Ну так тренируйся. Самое сложное – отображение названия символа обратно в код, уже реализовано в той библиотеке.

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

Где, кстати, оценки производительности? А то мне даже стало интересно, сколько производительности и отклика осталось от ядерной консоли после применения этой программы.

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

Не дождётесь.

> time ./n7t328IIpnwd_lynx.sh http://az.lib.ru/t/tolstoj_lew_nikolaewich/text_0040.shtml > test

real    0m0,861s
user    0m0,319s
sys     0m0,018s
> wc -c test
833691 test
> wc -l test
18111 test
> head -n 5 test
[ZERO WIDTH NO-BREAK SPACE]                           Толстой Лев Николаевич
                             Война и мир. Том 1

       Lib.ru/Классика: [Регистрация] [Найти] [Рейтинги] [Обсуждения]
                         [Новинки] [Обзоры] [Помощь]
>

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

square brackets not as is mode

Я бы написал «also expand squared brackets». Или хотя бы «square brackets not in «as is» mode».

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

Если оно свободное и под онтопик, почему нет, только не слишком часто.

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

cat просто выводит, а сабжевая утилита предназначена не для вывода, а для обработки данных. При этом в UTF-32. А где Вы найдёте тексты в UTF-32? Сегодня проще найти текст в UTF-8 или другой кодировке. Таким образом сюда добавляется ещё и iconv. А в примере выше вообще происходит это:

получение страницы в KOI8-R -> дамп текста в UTF-8 -> конвертирование iconv'ом в UTF-32 -> сабжевая утилита дампит в KOI8-R -> результат перенапрявляется в файл (который потом можно читать less'ом)
И всё это меньше чем за секунду!

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

А если Вы намекаете на то, что ядерная консоль скроллится медленнее чем в иксовых эмуляторах терминала - так это и так давно известный факт. Но, никто с такой скоростью не читает, и именно поэтому и были в своё время придуманы more/less/most/etc. А head, less, grep и другие инструменты всегда позволяют получить конкретные нужные куски текста, а не всю простыню разом.

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