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)
Ответ на: комментарий от saahriktu

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

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

У разных людей разные задачи. Поэтому разным людям нужны разные инструменты.

Объясни какая должна быть задача у человека что бы он сидел в однобайтной консоли и читал текст с дискет. Просто интересно.

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

Кстати, заметь что на моем локалхосте оно сегфолтится на чтении своего же исходника.

Shaman007 ★★★★★
()

koi8-r
ncurses
с разных дискет
на ARM'ах значительно шустрее чем less
invalid locale (UTF-8) found
однобайтной локали
gopher://

Это ж сколько «ненужно» всего в одном посте, просто сказка.

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

на самом деле нет:

┌[andreybondarenko@slackware13]─[/home/andreybondarenko/Downloads/truehackersreader-0.23]
└─13/08 10:11:13-> LC_ALL=C ./threader threader.c
Error: invalid locale (UTF-8) found

┌[andreybondarenko@slackware13]─[/home/andreybondarenko/Downloads/truehackersreader-0.23]
└─13/08 10:11:45-> env|grep LC_ALL

┌[andreybondarenko@slackware13]─[/home/andreybondarenko/Downloads/truehackersreader-0.23]
└─13/08 10:12:10-> env|grep LANG
LANG=en_US.UTF-8
GDM_LANG=en_US.UTF-8

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

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

Вопрос нужно ставить наоборот: какие у меня должны были бы быть задачи, чтобы при не более чем 256-ти символах в шрифте (а в ядре ограничение на размер шрифта в 64 Кб), при отсутствии профитов от юникода (всё только, наоборот, будет в квадратиках), мне нужно было бы переходить на UTF-8?

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

Например, чтобы можно было читать техническую документацию по-человечески? Формулы, там, например. Картинки с графиками.

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

Shaman007 ★★★★★
()

Локаль UTF-8 не поддерживается совсем.

Если программа обнаружит локаль KOI8-R, то в окне справки (вызывается по F1) появится надпись «Привет KOI8-R'щикам!». При другой однобайтной локали эта надпись будет отсутствовать.

curl gopher://

Мсье знает толк.

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

Нет, с ними все в порядке. Там сегофолт, а это такой намек на чью-то косорукость.

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

мне вот всегда не нравилось сокращение «лор». судя по топикам, сайту подошло бы название «юный хакер» и сокращение бы тогда вышло очень модное unihack( юнихак)...

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

Там в “brtlsqrrl” ещё прикольней: настоящие хакеры не пользуются символьными константами:

int
decdigit (int x)
{
  if ((x < 48 || x > 102) || (x > 57 && x < 97))
    return 0;
  if (x < 97)
    return x - 48;
  else
    return x - 87;
}

Здесь “10” не имеет никакого отношения к десятичной системе счисления, это код символа '\n':

	      if (c[0] == 10 && !flag10)
shdown
()

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

Это сделанно действительно ради описанного юз-кейса (чтение разных дискет с одним дисководом) или автор просто не осилил буферизированное чтение из файла? Как предполагается читать здоровые файлы размером сотни мегабайт–гигабайты? Или такой юз-кейс менее вероятен, чем пользование дисководом в 2019?

-r - удалить файл после прочтения в оперативную память;

Лоллирую. А как же юникс-вэй?

Предлагаю добавить следующие флаги:

  • -koi8-r – перекодировать файл в KOI8-R после прочтения в оперативную память;
  • -saahrikturize – переименовать файл после прочтения в соответствии с каноничными названиями поделий ТСа;
  • -l33t – хакеризировать файл после прочтения в соответствии с алфавитом l33t speak.
theNamelessOne ★★★★★
()
Ответ на: комментарий от Shaman007

Формулы, там, например. Картинки с графиками.

Не всем нужна такая документация. Речь вообще идёт о чтении документации и книг plaintext'ом шрифтом, в котором не более чем 256 символов. Зачем здесь UTF-8?

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

нам-то да. а в saahriktu я почему-то сомневаюсь. да и кто сказал, что Юного техника готовили к выпуску сами дети:)

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

Здесь «10» не имеет никакого отношения к десятичной системе счисления

А кто говорил что имеет? Здесь как раз и происходит проверка на пробел.

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

А вот если бы Вы жили в текстовой консоли с однобайтной локалью и читали в ней документацию и книги...

Чудо голодания. Радость слабоумия. Восторг педикулёза.

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

Зачем здесь UTF-8?

я принципиально перекодирую все нужные мне тексты в UTF-8. хотя это только я.

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

Вот тебе еще багрепорты:

 — ESC не обрабатывается

 — «переход на» воспринимает не только цифры, но и буквы

Это я пропатчил программу, чтобы она работала с юникодом.

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

Просто даже интересно, кем ты работаешь?

Бесполезно, я уже как-то спрашивал, он не отвечает.

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

У нас как-то был в команде чел, который сидел в awesome (или что-то другое тайловое) с ему одному известными хоткеями, у него была раскладка Dvorak и при этом das keyboard (это которая механическая с неподписанными клавишами). Если надо было что-то вместе подебажить с его компа, то это превращалось в ад. Но он был крутой драйверист и работу свою выполнял.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от RazrFalcon

За хейтерами КОИ? Им же ничего не поможет уже. Главное, чтобы опасность обществу не представляли.

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

с неподписанными клавишами

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

ну а хоткеи... я вот тоже на маке начинаю матюгаться.

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

Зачем это на главной?

Затем
Это опен-сорс
Каждый автор волен выкладывать сюда свои проекты, независимо от уровня самого проекта
Здесь есть модераторы, которые контролируют процесс

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

Просто даже интересно, кем ты работаешь?

Я его тоже как-то спрашивал, он то ли проигнорировал, то ли ушёл от ответа.

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

-l33t – хакеризировать файл после прочтения в соответствии с алфавитом l33t speak.

Потенциал для дальнейшего наращивания полезных фич.

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

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

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

Это я пропатчил программу, чтобы она работала с юникодом.

Режешь по живому

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

Здесь “10” не имеет никакого отношения к десятичной системе счисления, это код символа '\n':

а разве не нужно тогда все прописывать в хексе? как-то не по-хакерски... 0x08 - так должно быть.

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

Ну если тебе дилдо точеный - это инструмент...

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

Так по нему и видно. Видно, что в эту переменную читаются символы. Соответственно, в условии идёт проверка кода символа.

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

А как Вы определяете трушность хакера?

По цвету буквочек в ядрёной консоли!

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

эх, представь, вот был бы смак ты бы пришел и сказал всем: glibc еще не поддерживает, зато в моем редакторе уже есть своя реализация! ))

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

Да нихрена там не видно. Признайся, что не знал, что символьные константы можно сравнивать с int (они в Си и имеют тип int, лол).

Почему бы переменные c, p, mode, mode2, flag10 не назвать по-человечески? (Подозреваю, что потому, что не можешь в английский.)

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

какие у меня должны были бы быть задачи

ну ты уж определись. если это для только тебя, тогда нет смысла выносить в паблик. :) а если для всех нас, то не обессудь про вопросы насчет юникода.

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

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

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

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