LINUX.ORG.RU
ФорумTalks

Вышел True hackers' reader 0.23

 , , , ,


4

4

Состоялся релиз нового просмотрщика текстов (минималистичного аналога less'а) в однобайтных кодировках True hackers' reader 0.23.

Особенности реализации:

  • Читает содержимое файла в оперативную память и разблокирует текстовый файл, который больше программе не нужен. В отличие от less'а, который читает файл маленькими порциями, а потому требует чтобы файл продолжал присутствовать в системе. Это отличие позволяет True hackers' reader'у, например, читать кучу разных текстовых файлов с разных дискет в системе с одним дисководом. В то время как less заблокировал бы первую же дискету.
  • Несмотря на минималистичные исходники оперативную память расходует сильнее less'а, поскольку текст из файла хранится в буфере в оперативной памяти. Что, впрочем, значительно уменьшает время доступа к любой строке текста (тот же less при прокручивании N строк начинает обращаться к файлу, читать и прокручивать по одной строке с выводом промежуточных результатов, что очень медленно и в последних версиях при вводе цифры полученной при помощи '=' результат не всегда совпадает с ожиданием (что, собственно, и способствовало появлению True hackers' reader'а)).
  • True hackers' reader использует меньше чем less таких функций как, например, doupdate(). Как следствие, True hackers' reader на ARM'ах значительно шустрее чем less.
  • Локаль UTF-8 не поддерживается совсем. Если программа обнаружит локаль UTF-8, то её выполнение завершится ошибкой «Error: invalid locale (UTF-8) found».
  • В первых версиях присутствовали значительные ограничения на размеры текстовых файлов, которые были связаны с внутренними ограничениями библиотеки ncurses (внутренние размеры ncurses (а текст сразу выводился в окно ncurses, которое затем просто сколлилось) ограничены максимальным значением short int, что для x86_64 составляет 32767). Это приводило к тому, что программа могла отказаться читать текстовые файлы, размер которых превышал 2,5 Мб. О чтении текстовых файлов на десятки мегабайт не могло идти и речи. Начиная с версии 0.10 введён промежуточный буфер для текста (который, вопреки ожиданиям, не так уж и снизил скорость программы, но очень значительно сократил расход оперативной памяти) и программа начала открывать текстовые файлы на сотни мегабайт.
  • У программы есть 4 опции:
    -r - удалить файл после прочтения в оперативную память;
    -f - прокрутка по целой странице
            (по дефолту программа оставляет последнюю строку предыдущей страницы в самом начале новой);
    -t - заменить табы пробелами;
    -s - переформатировать текст по ширине экрана;
    
    Переключатель режима прокрутки доступен и во время работы программы по клавише 'f'. Опции должны указываться после пути к файлу, который всегда указывается первым аргументом. Если в первом аргументе программа обнаружит вместо пути к файлу одну из опций, то её выполнение завершится с ошибкой «Error: wrong options and path to file order».
  • Если программа обнаружит локаль KOI8-R, то в окне справки (вызывается по F1) появится надпись «Привет KOI8-R'щикам!». При другой однобайтной локали эта надпись будет отсутствовать.
  • В комплект входят два скрипта на bash'е: lzthreader, который разархивирует пожатый gzip/bzip2/lzma/xz/lzip текстовый файл во временный, а затем открывает его в True hackers' reader'е с опцией удаления файла, а также hexthreader, который при помощи утилиты Brutal squirrel ( http://saahriktu.org/downloads/brtlsqrrl-0.4.tar.xz ) преобразует файл в шестнадцатеричное представление, а затем открывает его в True hackers' reader'е с переформатированием по ширине экрана.

Скачать True hackers' reader и Brutal squirrel также можно по протоколу gopher при помощи команд

curl gopher://sdf.org/9/users/saahriktu/saahriktu.org/truehackersreader-0.23.tar.lzma > truehackersreader-0.23.tar.lzma
curl gopher://sdf.org/9/users/saahriktu/saahriktu.org/brtlsqrrl-0.4.tar.xz > brtlsqrrl-0.4.tar.xz

Скачать (3177 байт)

Перемещено Shaman007 из opensource

★★★★★

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

У меня есть ноутбук со Слакой и иксами. А программу я писал в LFS'е без иксов. Собственно, от иксов на основной машине я отказался ещё в 2006-м году после таких статей как, например, «CLI против GUI. Консоль против Графики.» - https://oni-ddr.livejournal.com/26660.html . Потом пробовал возвращаться в иксы. С переменным успехом. Сидеть-то можно. Но, в консоли без иксов как-то удобнее.

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

так откопали и поддержку юникода завезли заодно вроде

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

Я не ненавижу юникод. Какой смысле в юникоде если в шрифте не более чем 256 символов, а остальное - квадратики?

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

Это ещё что. Он не зна(ет|л) о том, что символьные литералы можно с числами сравнивать.

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

По твоей ссылке
<meta http-equiv=«Content-Type» content=«text/html;charset=utf-8» />

Тебе как вообще, не бомбит интернетами пользоваться?

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

curl gopher://sdf.org/9/users/saahriktu/saahriktu.org/truehackersreader-0.24.tar.lzma > truehackersreader-0.24.tar.lzma

чувак, не могу скачать по gopher. выложи по uucp. задолбали эти новомодные протоколы.

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

Нет, это подтягивание языковых файлов в программах, формат дат и чисел.

вот этот маразм с использованием "," вместо "." и переменой местами дня и месяца точно не нужен.

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

Ты, судя по всему, не понял, что написано в той статье.

И все-таки общественности интересно, чем ты зарабатываешь на жизнь?

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

Выбирай работу. Выбирай карьеру. Выбирай семью. Выбирай юникод. Выбирай иксы. Выбирай будущее. Выбирай жизнь… Но зачем мне все это? Я не стал выбирать жизнь… Я выбрал кое-что другое… Причины? Какие могут быть причины, когда есть KOI8-R?

orm-i-auga ★★★★★
()
Ответ на: комментарий от Shaman007

Там написано, что для юзера GUI гораздо сложнее чем CLI.

Мало ли какие оффтопы ей интересны. Это не повод скакать с темы на тему. Это сути не касается. Я всегда пишу именно по делу, а не про себя.

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

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

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

Это был пример. Я не хочу спорить о программировании и UI далеким от IT человеком. Ядерная консоль и однобайтные кодировки в 2018 году - это очень, очень далеко от IT.

Shaman007 ★★★★★
()
Ответ на: комментарий от orm-i-auga

Выбирай работу. Выбирай карьеру. Выбирай семью. Выбирай юникод. Выбирай венду. Выбирай будущее. Выбирай жизнь…

Так, а ты что выбрал? Кое-что другое?

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

Я уже спорил о марксизме с опытным курьером

Ммм. И о чем был спор?

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

«Далеко от мейнстрима» != «далеко от IT». На мейнстрим никто и не претендовал. Я нигде не пишу, что, якобы, обращаюсь к массовому юзеру или даже массовому линуксоиду. Я обращаюсь конкретно к тем ультракрасноглазикам, которым нужно то, что я пишу. Остальные могут спокойно проходить мимо. Юзерам таких оконных менеджеров как, например, i3wm и awesome тексты про KDE и GNOME тоже ненужны. Но, они же спокойно проходят мимо. Потому, что знают, что кому-то и DE нужны.

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

Это отличие позволяет True hackers' reader'у, например, читать кучу разных текстовых файлов с разных дискет в системе с одним дисководом. В то время как less заблокировал бы первую же дискету.

как там в 1980-х?

Локаль UTF-8 не поддерживается совсем. Если программа обнаружит локаль UTF-8, то её выполнение завершится ошибкой «Error: invalid locale (UTF-8) found».

ААААААААА!!!!!

Какая жуткая, клиническая, графомания. Мрак и ужас *сущность_нейм*

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

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

Только в реальном мире везде юникод и с koi8-r жизни нет, ты уже сам привёл пример того, к какой дичи сводится просмотр pdf.

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

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

Справедливости ради, Ведьмак 3 вообще под линуксами не заводится.

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

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

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

Intel NUC

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

orm-i-auga ★★★★★
()
Ответ на: комментарий от saahriktu

Документация, книги, собственные тексты

в форматах pdf и fb2 лол

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

Нда, вот на этом месте шютка про «перестал пить таблеточки» перестала быть шюткой. Лол што, ради одного только просмотра текста надо ВСЕ настройки локали делать в СИ??? Да ты больной на всю голову.

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

ультракрасноглазикам

Ты себе льстишь, к сожалению. Сколько тебе лет?

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

Не-не-не! Программирование микроконтроллеров или криптография - вот это далеко от мейнстрима. Не знаю, распределенные файловые системы или BGP - это далеко от мейнстрима. Бирюльки ультракрасноглазиков - это не IT. Мне в этой теме бомбанул апломб, который я еще у Фидошников, эникеев шараг, Арви Хэккера и некоторых преподавателей 15 (уже больше) лет назад видел: вот с какого перепугу ты назвал плохо написанный код, который работает с ошибками True hackers' reader?

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

с koi8-r жизни нет

Практически есть. Просто несколько другая.

к какой дичи сводится просмотр pdf

Ну так те, кому нужно регулярно их смотреть, не сносят иксы. Те, кто сносят иксы, в основном всё дампят в plaintext и читают plaintext.

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

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

Авторы для аудитории из массового юзера в первую очередь ориентируются на юзеров юникода. Я же для них специально пока что ничего не пишу.

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

Вы неправильно читаете тему. Товарищ стал выставлять глобальную переменную $LANG. Я же показал, что программа читает не её, а $LC_ALL. В версии 0.24 я добавил проверку переменной $LC_ALL, и при её отсутствии она теперь выставляется в значение $LANG.

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

Код работает нормально. И тот странный юзкейс версия 0.24 теперь вполне обрабатывает. Так программа написана для тех, кто любит программировать и получает от этого удовольствие. Её код при желании очень легко модифицировать под собственные нужды. Гораздо легче чем раздутый код того же less'а. Но, это тем, кто именно любит программировать и получает от этого удовольствие. А те, кто в этом всём видят только рабочий процесс, и сразу напрягаются от лени во что-либо вникать, те ни разу не хакеры.

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

setlocale() традиционно юзает LC_ALL

Читал ли ты man setlocale?

If locale is an empty string, "", each part of the locale that should be modified is set according to the environment variables. The details are implementation-depen‐ dent. For glibc, first (regardless of category), the environment variable LC_ALL is inspected, next the environment variable with the same name as the category (see the table above), and finally the environment variable LANG. The first existing environment variable is used. If its value is not a valid locale specification, the locale is unchanged, and setlocale() returns NULL.

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

На самом деле он купил этот код в переходе у настоящих хацкеров, которые спёрли этот код у Пентагона. Взломав его, конечно же.

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

Но, они же спокойно проходят мимо.

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

Aceler ★★★★★
()

gopher://

saahriktu ★★★★★  дурачок

Все сходится.

dk-
()

saahriktu, используешь ли ты SCM для разработки, если да, то что именно? Есть ли публичный доступ к SCM с исходниками или зеркало?

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

Ну так те, кому нужно регулярно их смотреть, не сносят иксы. Те, кто сносят иксы, в основном всё дампят в plaintext и читают plaintext.

Инструмент определяет сознание.

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

В прошлом или позапрошлом году откопали же.

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

Ну так те, кому нужно регулярно их смотреть, не сносят иксы

Отсюда у лоровцев и возникает к тебе вопрос о том, кем ты работаешь.

Мне, например, приходится читать доки, которые в моей конторе пишут для юзеров, внешние доки, резюме, ещё и наш софт генерит pdf (из шаблонов в odt), которые тоже иногда приходится смотреть, хуже того, он ещё и генерит сложные xlsx, которые не перегнать в csv. Мб и есть в ит места, где ты никогда не столкнёшься с pdf или подобными проблемами, но что-то я сомневаюсь, что в современном мире айтишрик может существовать совсем без гуёв.

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

Более того, программа и использует приведённый пример из man setlocale:

A program may be made  portable to all locales by calling:

           setlocale(LC_ALL, "");

after  program  initialization
И тут читается именно $LC_ALL. А выше в треде был пример, когда вместо $LC_ALL была выставлена $LANG. И вот тогда вызов
setlocale(LC_ALL, "");
и сегфолтился.

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

Нет, юзер выбирает инструменты по своим задачам.

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

Так читать-то можно. В т.ч. и с конвертированием в картинки. Если картинки не нужны, то можно просто сдампить. Это шариться по десяткам и сотням левых файлов в поисках нужного может быть сложнее чем в иксах.

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