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

Скажите, какова будет форма монетезации вашей утилиты?

Может быть подписка или встроенная реклама, что вы выберете?

Shulman
()

бш бяе хдхнрш! ъ яюлши йпсрни! KOI-8 тюпебююю!

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

Вот я и прошу автора обосновать его точку зрения, может там что-то есть, кроме слепого фанатизма и «мне не нужно, значит и никому не нужно».

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

Так тут логика и от шрифта раскручивается. Если бы в шрифте были тысячи символов, то ещё мог бы быть смысл юзать юникод. Но, если в ядре ограничение на размер шрифта в 64 кб, что позволяет впихнуть в них 256 символов, а всё остальное - квадратики - то о каких текстах с греческими буквами и китайскими иероглифами может вообще идти речь?

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

Я делаю то, что нужно мне. И делюсь с теми, кому оно тоже нужно.

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

Aceler ★★★★★
()

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

Я так понимаю что для чтения лога в 100500 мб True hackers' reader не годится.

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

В топку это поделие!

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

Ъ-хакиры не читают такие большие файлы!

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

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

Как бы irssi не очень вроде. А fbi это не серьёзно, посмотрите как выглядит FastStone Image Viewer или Gwenview (в особенности по функциям матштабирования и рендеринга). Кроме того пришлось руками лезть в скрипты mc и нормально сделать так и не получилось.

Посмотрю fbgs, только скорее всего не получится, из нормальных читалок только stduviewer (был) и okular из актуального. У гнома нет нормальных читалок — там движки кривое убожество. Так использую xpdf с инвентированными цветами вполне успешно.

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

Я конечно не заядлый лоровец, но я давно не видел чтобы ты в таких объемах писал комменты) Видимо знатно тебе прога доставила))

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

Смысл использовать юникод один — отсуствие такой проблемы как ОПНАКЕЛЮ ЙНМБЕПРЮЖХХ ЙНДХПНБНЙ.

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

Не продолжай, не надо...

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

Вы, пацаны, прифигели... 4-я ядерный проц и гектар мозгов вполне подходят для небольших веб-, мейл- и прочих серверов. И всё работает, брат жив. А тратить по 450-750 Вт энергии там, где хватает 2А * 5В = 10Вт, как это у малинки, это надо дураком родиться...

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

Не всем нужно, чтоб была необходимость.

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

ОПНАКЕЛЮ ЙНМБЕПРЮЖХХ ЙНДХПНБНЙ.

гЮВЕЛ РШ ЯЧДЮ ЕЫЕ Х ЖОДБЕМЮЖЮРЭОХЯЪРНДХМ ОПХРЮЫХК?

Tanger ★★★★★
()

Вот и тролли лоровские понабежали)) Программа конечно на уровне курсача по сишке,и публиковать такое на главной странице врядли нужно, но это вопросы к шаману, а не к тс

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

Кхммм... Ну...

Местами Шаман прав, конечно. Вот одно из таких мест, IMHO:

txtbuf = (unsigned char *) malloc(gsize);
for (ii = 0; ii < gsize; ii++)
	txtbuf[ii] = ' ';

Не лучше ли было бы использовать

calloc()
?

Впрочем, дело не моё. Автору виднее.

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

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

В plaintext теряется разметка: оформление и форматирование например, да и картинки часто попадаются в тексте. Кроме того нужны ссылки и переход (и возвращение) по ним. Это из наиболее очевидного.

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

anonymous
()
Ответ на: Кхммм... Ну... от anonymous

После каждого нового символа ресайзить массив?

И, да, тут есть ещё один момент. Это не просто последовательность символов как она есть в файле. Это массив WxH, где W - максимальная длина строки. И при чтении текст форматируется так, чтобы каждая новая строка начиналась с новой строки. А для этого нужно знать максимальную ширину текста. А для этого текст всё равно нужно читать до конца.

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

Несмотря на минималистичные исходники оперативную память расходует сильнее less'а, поскольку текст из файла хранится в буфере в оперативной памяти. Что, впрочем, значительно уменьшает время доступа к любой строке текста (тот же less при прокручивании N строк начинает обращаться к файлу, читать и прокручивать по одной строке с выводом промежуточных результатов, что очень медленно и в последних версиях при вводе цифры полученной при помощи '=' результат не всегда совпадает с ожиданием (что, собственно, и способствовало появлению True useless reader'а)).

мануал less:

-bn or --buffers=n
              Specifies  the  amount  of buffer space ... If  n  is  -1,
              buffer space is unlimited; that is, the entire file can be read into memory.

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

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

Да нет... Не больно.

Я читал истории успеха, как люди на распберри делают бесшумный десктоп. (Хотя подозреваю, что всем современным браузерам на этом десктопе будет очень больно — но хорошо бы это кто-нибудь проверил на практике.)

Брат, вроде, жив. Но реально парни, вы зажрались... Гектар рамы, 4 ядра, OpenGL ES 2.0 этого... мало? Нет, накатывать туда ubuntu ненужно. На Gentoo с xfce огнелис вполне работоспособен. Даже с аудио-видео.

anonymous
()
Ответ на: Не продолжай, не надо... от anonymous

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

anonymous
()

Вы тут ржете, а я ведь предлагал сделать на 1 апреля окошко с выбором кодировки на лоре, как на древнючих сайтах. КОИ-8 и еще пару.

Или как вариант втупую перевести все на день в КОИ-8.

Deleted
()
Ответ на: Да нет... Не больно. от anonymous

Гектар озу было очень мало ещё 15 лет назад. Кроме того она медленная и без видеокарты и процессора. Вон топовые бананы вроде ничего по спекам, и то постольку-поскольку. Побольше бы памяти напихать и какую-нибудь видеокарту нормальную.

anonymous
()
Ответ на: Да нет... Не больно. от anonymous

Реально парни, вы зажрались... Одна лошадиная сила, пара колёс этого... мало? У нас на селе вполне работоспособно. Даже девок можно прокатить.

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

Одноплатники да, разные.

Соглашусь. Но тут трюк в том, что за эти деньги... Из конкурентов разве что odroid. Техасские Пассатижи с их BeagleBone и дороже и проц слабее. eMMC можно не юзать. Я в принципе не юзаю. Гружусь с micro-SD (система там же), а дерево портедж и часто изменяемые данные на USB-стике. Сеть там нормальная. Надо просто понимать что все 4 разъёма USB, равно как и сеть болтаются у тебя на одном чипе. Чем больше навешал, тем говённее сеть. У меня только USB-свисток туда воткнут и больше ни чего. Headless системы.

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

Так я же написал программу не из за того только, чтобы читать файлы в оперативку целиком. Ключевой момент, переход на строку номер N. Кстати, less построчно скроллит даже с этой опцией.

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

Троллинг высшего уровня.

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

memset, да. Как вариант.

В конце-концов,

calloc()
это же по своей сути аналог
malloc()
+
memset()
. Просто, слегка удобнее.

anonymous
()

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

Самая главная фича

BceM_IIpuBeT ★★☆☆☆
()

Thread dostavlaet neimoverno, unicode must die!!!111

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

И, да, тут есть ещё один момент. Это не просто последовательность символов как она есть в файле. Это массив WxH, где W - максимальная длина строки. И при чтении текст форматируется так, чтобы каждая новая строка начиналась с новой строки. А для этого нужно знать максимальную ширину текста. А для этого текст всё равно нужно читать до конца.

Прочёл. Подумал... А на хер оно мне это надо?

Ну, узбеков тебе... творческих.

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

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

Где?!

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

Затем, чтобы отформатированный текст при чтении скроллить влево и вправо если он шире экрана. Или экономить оперативку если текст не шире, а уже экрана.

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

В помойке на первом этаже Ред Хета в Брне, сириусли! В другой помойке «для электроники». В объявлениях «отдам даром, только вывезите это».

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