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)

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

так и делаю за исключением совсем которотких типа

if (x) x++;
iluha16
()

True hacker != ретроград, прикинь.

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

МК-61 правильно реализует RPN. Если считать 3 2 1 + *, то там получается 9. Там есть стек. Твой «калькулятор» делает что-то внешне похожее. У него нет стека.

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

Поэтому это было использовано в МК 61.

Которым ты не умеешь пользоваться.

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

Все дело в том, что ты не владеешь базовыми понятиями. Судя по этой беседе, понятие «стек» для тебя ново. Судя по коду - тоже. Пожалуйста не пытайся рассказать, что стек глубиной в 2 ты так и задумал, чтобы реализовать его в виде гвнокода case-switch, ОК?

У настоящего калькулятора глубина была кажется 106, твой пример он должен считать корректно.

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

В libhalfmk61 есть весь стек МК 61. Но, этот калькулятор, повторяю, не является эмулятором МК 61, и никто на это не претендовал.

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

Там плюсов должно быть больше. Ты вообще не понимаешь.

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

А если программистов - то питон к студентам нельзя подпускать, пока они пару-тройку нормальных языков не выучат.

«Python вышел на 1-е место в программах начального обучения программированию в университетах США» https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-in...

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

У настоящего калькулятора глубина была кажется 106

Это количество шагов программы. Стек - совершенно другое. По документации регистров там гораздо меньше: http://mk.semico.ru/pict/c/stack.jpg .

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

20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 +
не сможет посчитать и МК 61.

Вообще-то должен смочь, ответ будет 3

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

«Python вышел на 1-е место в программах начального обучения программированию в университетах США»

ну и хорошо, все когда то с бейсика начинали. а потом что кому на роду написано.

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

И что эти программисты из США написали серьезного? Фейсбук? Не смешите!

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

чем так знаменит этот древний калькулятор?

Ностальгия у тех, кому сейчас около сорока. Для кого-то 30 с хреном лет назад это была едва ли не единственная возможность писать программы (на своём, в общем-то, ассемблере).

При выполнении лабораторных работ в ВУЗе, когда расчёты всех погрешностей «вручную» занимали часов эдак 10-12, был незаменим — возможность написания универсальной программы здорово экономила время.

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

Прямо-таки абсолютно? А Double Commander, Total Commander, TOAD - галлюцинации? Не говоря уж о том, что говённость и применяемость — немножко разные вещи. Visual Basic относительно недавно был чуть ли не самым популярным языком, это говорит о его крутости?

Оставь, не мечи бисер. Пустое.

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

Почитал libhalfmk61. Как ребенок «программировал». Проверки на граничные случаи? Ошибки? Комментарии в коде? Зачем.

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

надо писать как x y + z *

Чувак, я тебе открою секрет. Есть ещё семейство LISP-подобных языков. Там это будет выгдядеть как

(* (+ x y) z)

Но профессионал обязан уметь читать и такую запись.

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

В libhalfmk61 есть весь стек МК 61

Точно весь? Или, как с RPN, тебе Рабинович что-то напел, у которого один знакомый однажды МК-61 на витрине видел?

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

Собственно, такой код и такая «библиотека» вызывает сильное удивление. Понятно, когда кто-то пишет эмулятор чего-то дорогого ему, понятно, когда кто-то пишет инструмент, который облегчает жизнь. Зачем ты реализуешь вот это:

void
halfmk61::multiply ()
{
  x1 = x;
  x *= y;
  y = z;
  z = t;
  shiftflag = 1;
}

А потом «выкладываешь» в интернет. Надо быть очень самоуверенным, до нарциссизма, чтобы думать, что кто-то это будет дальше использовать.

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

прочитал и что дальше. из функциональщины есть haskell в котором хоть формулы нормально пишутся

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

Посмотрел сайт. Все сходится.

Infernal farm
Игра на ncurses где вы должны ловить радиоактивные яйца на ферме рядом с атомной электростанцией. 3 пропущенные яйца приведут к атомному взрыву.
Ramil ★★★★
()
Ответ на: комментарий от Shaman007

Что не так-то? Это и есть то, что делает МК 61 при нажатии клавиши 'x'. Модифицирует 4 регистра стека именно соответствующим образом.

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

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

Вот неистово плюсую. Кстати, ровно о том же (сначала Паскаль, и уже только потом Си) пишет Андрей Столяров ( Croco) в своей книге.

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

python сложноват для начанающих. я считаю для начинающих самое простое это прочитать K&R. язык C очень простой - простой именно в плане изучения (потому что компактный и низкоуровневый - много запоминать не надо) а не в плане написания на нём практически полезного кода. однако осилив K&R дня за 2 можно сразу почуствовать себя программистом, строчить программки типа как у автора для консольки, можно исходники посмотреть хотя бы простеньких утилит, так сказать приобщиться к прекрасному. если потянет на гуй опять же можно какой нить gtk взять и поразбираться.

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

Все в нашей шарашке, кто начинал с пасцаля или си, не делали отступов вообще.

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

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

и кто такой этот столяров? пусть сам свой паскаль учит. он для меня не авторитет. вот если торвальдс скажет тогда подумаю.

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

покажи мне браузер и фейсбук с твитором на питоне!

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

Вроде бы именно он на ЛОРе эпически бомбил, когда кто-то не оценил его труды.

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

Говорит и о качестве шарашки, и о том, что на первом курсе мало кто осознаёт, куда же он поступил и что ему от жизни надо.

Питон позволяет хотя бы прочесть, что они там наговнякали.

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

настоящие хакеры считают на счётах и логарифмических линейках.

Ну, счёты — это как венда и JS: для дебилов.

А вот логарифмическая линейка — действительно сила (даже книги выпускали на тему, как посчитать что-то сложнее умножения/деления).

В условиях дешёвой и доступной электроэнергии логарифмическая линейка, наверное, уже не нужна. Но кто сказал, что так будет всегда? Я вот свою храню =)

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

Питон позволяет хотя бы прочесть, что они там наговнякали.

К форматированию в питоне претензий нет. Действительно позволяет разрешить древний холивар «tabs vs spaces».

А вот к динамической типизации в питоне — есть. Всё-таки компилятор в (компилируемых, опять же) языках с сильной, статической типизацией отсекает массу проблем.

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

и кто такой этот столяров? пусть сам свой паскаль учит. он для меня не авторитет. вот если торвальдс скажет тогда подумаю.

Ты и правда сказочный... персонаж.

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

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

С этим согласен.

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

У настоящего калькулятора глубина была кажется 106, твой пример он должен считать корректно.

Нет. 106 — это макс. длина программы.

Регистров (в терминологии официальной документации), над которыми можно было выполнять арифметические операции, было 4 (x, y, z и t). Эти 4 регистра и являлись стеком (т. е. да, между стеком и регистрами не было никакой разницы).

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

Действительно позволяет разрешить древний холивар «tabs vs spaces».

Каким же образом?

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

Это какой-то локальный персонаж, что плохого в том, чтобы не знать его?

Ну, во-первых, этот «локальный персонаж» преподаёт на ВМК МГУ и пишет неплохие книги.

Во-вторых, его действительно можно не знать (а тж можно не знать Майерса, Алексадреску, Гослинга, Блоха, Кнута, Одерски, «Банду четырёх») — но гордиться здесь явно нечем.

В-третьих, пренебрежение к аргументам оппонента и просто зашкаливающая категоричность («я д'Артаньян, а вы все тут п-сы») выдаёт илюхин возраст. Ну и отсутствие кругозора вследствие отсутствия (надеюсь, пока) высшего образования.

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

В libhalfmk61 есть весь стек МК 61.

Почему не было поста? Там есть что обсудить!

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

Ну, во-первых, этот «локальный персонаж» преподаёт на ВМК МГУ

Шарага. Даже безотносительно того, что шарага — и что? Почему знать, кто это такой — полезно?

и пишет неплохие книги.

Возможно, я их не читал. И я думаю, что мало кто читал.

Во-вторых, его действительно можно не знать (а тж можно не знать Майерса, Алексадреску, Гослинга, Блоха, Кнута, Одерски, «Банду четырёх») — но гордиться здесь явно нечем.

Они тут и рядом не стояли.

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

Кроме стековых были еще адресуемые регистры, но это уже за рамками ОПЗ.

Да, но, ЕМНИП, над ними нельзя было выполнять арифметические операции. Так что да, точно за рамками ОПЗ.

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

А ФИВТ МФТИ — не шарага?

А может и тоже шарага. И что? Какое это имеет отношение к предмету спора?

Дело в том, что тот факт, что он «преподаёт на ВМК МГУ» не очень много говорит о. Я наслышан о «ВМК МГУ» и о том, что это шарага.

У нас был один преподаватель, который тоже с «ВМК МГУ». Старший научный сотрудник там вроде даже. Идиот, каких ещё поискать нужно. Не знает своего предмета вообще, не умеет преподавать, в этом году уволили, лол.

Скромнее надо быть, мальчик.

Кроме апелляций к возрасту ты что-нибудь умеешь? Почему его необходимо знать?

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

Сколько старпёров-мажоров собралось. У меня был какой-то непрограммируемый калькулятор, я даже не помню точно модель, но гугл-картинки говорят, что это почти наверняка МК-44.

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

А может и тоже шарага. И что? Какое это имеет отношение к предмету спора?

Это был риторический вопрос. Я окончил МФТИ задолго до появления ФИВТ, и неоднократно наблюдал студентов сего факультета (в т. ч. у нас на стажировке).

Это я без претензий к тебе лично — просто жаль, что планка неуклонно снижается.

У нас был один преподаватель, который тоже с «ВМК МГУ»

Так может, его к вам с ВМК МГУ сослали, бгг =)

Идиот, каких ещё поискать нужно.

Столяров, смею заверить, отнюдь не идиот.

Кроме апелляций к возрасту ты что-нибудь умеешь? Почему его необходимо знать?

Ну потому что, в моём понимании, норма — это сначала составить собственное представление, а уже потом аргументированно критиковать. Или не критиковать вообще, ибо критика без аргументов — она мало кому интересна.

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

Ну, во-первых, этот «локальный персонаж» преподаёт на ВМК МГУ

ну и что, я не учусь в ВМК МГУ и вообще не из москвы. я что должен знать всех преподавателей всех вузов?

и пишет неплохие книги

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

но гордиться здесь явно нечем

никакой гордости, просто константация факта что если он твой препод это не значит что его должны знать все

пренебрежение к аргументам оппонента

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

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

и на экзамене хрен вы меня вычислите гуманитарии несчастные

О, еще один необразованный технарь гордится тем, что он необразованный технарь.

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

я не учусь в ВМК МГУ и вообще не из москвы

Я тоже никогда не учился в МГУ на ВМК . И да, я тоже не из Москвы.

если он твой препод

Мне нравится эта наивность =) Расскажи ещё что-нибудь про «мою училку», заставляющую меня учить язык «Паскаль».

Чувак, «моим преподам», должно быть, от 60 до 90. Кого-то уже нет в живых.

Это я (порой) учу таких, как ты. Тех, кто пройдёт конкурс, бгг =)

Bass ★★★★★
()
Последнее исправление: Bass (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.