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

Terminus же. u32b подпиленный до u30b чтобы на широкоформатных экранах не оставалась незадействованная полоска пикселей внизу экрана: http://saahriktu.org/downloads/fonts/ter-u30b.psf.gz .

В итоге на FullHD получается текстовое разрешение 120x36.

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

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

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

Brutal squirrel, Ecalc, Charseq, Vacuummail, SamuraiDesigner, Trxwww (TRue uniX WWW browser), RSlaSt, Djvujpgpack, Humpbacked titmouse, Afrosnakebot, Screwmage, Last line tape recorder, n7t328IIpnwd, Nradio, Vtimer, Last line shark, camell++, g053dac0, libfatchars, libhalfmk61, radix50conv, raskormiknigu, makedeb,... и т.д. Ну и сабжевую программу тоже. И это только то, что уже допилил и выложил.

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

И для меня и для всех тех, у кого похожие задачи.

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

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

Нет, я много раз сказал, что эти задачи включают в себя программирование и чтение и написание текстов.

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

коддинг это когда ты «закодировался», а программирование это рабочее времяпрепровождение програмиста

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

В этом курсе основной упор был на всевозможные тонкости работы в командной строке MS-DOS'а (включая все ключи всех возможных команд, а также такие моменты как, например, загрузка драйвера CD-ROM'а в MS-DOS'е) и MS-DOS'овский софт (включая zip, arj, Лексикон,... и т.д.).

объясни почему тебя так тянет на всякое старьё которое давным давно не используется: дискеты, KOI8-R, MS-DOS, CD-ROM. столько старинных слов ещё ни в одной теме не было. что дальше? перфокарты или перфоленты?

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

Слушай, я скачал некоторые из твоих произведений. У меня смешанные чувства, потому что скачиваемое частично напоминает упражнения к лабам по Borland C, частично - что засовывается в alias. Вот у меня там была на прошлой работе строка поиска телефона по имени сотрудника в LDAP, но я не догадался называть это «софтом для линуксоидов».

Пруфы: http://saahriktu.org/utils.html

Утилита catxdoc (целиком)

#!/bin/bash
# Catxdoc v0.3
# cat for .docx files by Kurashov Artem
# This file is subject to the terms and conditions of the GNU General Public
# License v3.
if [ "$#" -lt 1 ]; then
echo "usage: catxdoc path/file.docx"
exit
fi
FTYPE=`file -b $1`
if [ "$FTYPE" == "Zip archive data, at least v2.0 to extract" ]; then
unzip -p "$1" word/document.xml | \
sed 's/<[a-zA-Z0-9:/"=-?. ]*>//g;s/&lt;/</g;s/&gt;/>/g;s/&amp;/\&/g'
exit
fi
echo "Strange or broken file..."

Утилита ecalc версия 3.2, ого! Целиком:

/*
 * Easy CALCulator v3.2
 * noninteractive RPN commandline calculator
 * License: GNU GPLv3
 * Author: Artem Kurashov
 */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    double x = 0, y = 0;
    char c;
    while ((c = getchar()) != EOF) {
	switch (c) {
	case 'c':
	    x = 0;
	    y = 0;
	    break;
	case '+':
	    y += x;
	    break;
	case '-':
	    y -= x;
	    break;
	case '*':
	    y *= x;
	    break;
	case '/':
	    y /= x;
	    break;
	case '^':
	    y = pow(y, x);
	    break;
	case 's':
	    x = sin(x);
	    break;
	case 'o':
	    x = cos(x);
	    break;
	case 't':
	    x = tan(x);
	    break;
	case 'l':
	    x = log(x);
	    break;
	case 'q':
	    return 0;
	case '=':
	    printf("%f,%f\n", x, y);
	    break;
	default:
	    (void) scanf("%lf", &x);
	}
    }
}

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

злобные пираты наверное спят и видят как этот однострочник стырить и выложить в торрент трекер

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

Ну так и плохо. Людям нужны разные инструменты. А из за того, что многие частично не хотят делиться своим опытом, а частично «стыдятся своих хелловордов», инструментов в свободном доступе почти нет. И кто-то должен исправлять эту ситуацию.

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

надо запатентовать hello, world как «An easy way to introduce programming language features to beginners», подать в суд и срубить бабла со всех туториалов начиная от кернигана, ричи.

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

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

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

дело не в моде. тупая мода - выкладывать скриншот окна приложения с введёнными данными POP/IMAP/SMTP сервера вместо того что бы просто написать текстом который можно скопипастить. однако когда учёный разрабатывает новый двигатель ему будет удобнее если компьютер покажет ему окно с графиками разных параметров вместо просто таблички с миллионом цифр в столбик. ну про ценность MS-DOS я вобще молчу. это однозадачная OS разработанная в 80-x годах использующая максимум 1 Mb памяти если кто не знал.

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

Калькуляторов много не бывает. К тому же у того же bc из коробки есть ограничения:

> echo "2^3" | bc -l
8
> echo "2^3.7" | bc -l
Runtime warning (func=(main), adr=9): non-zero scale in exponent
8
>
Да, по ходу, это можно решить дополнительными библиотеками, но с их поиском/написанием и установкой у юзера могут быть проблемы. А тут взял и
> echo " 2+ 3.7^=" | ./ecalc
3.700000,12.996038
>

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

Нет, ты не понимаешь: выкладывая код ты берешь на себя ответственность за тех, кто его (а) читает, (б) использует. Вот этот вот ecalc (как он до версии 3-то дорос) выкладывать нельзя, потому что он написан очень плохо и не приносит никакого знания читающему код. Это пример использования while и case из учебника, а не «утилита для линуксоидов», блин!

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

По-моему мы нашли первого в своем роде карго-культурного программиста.

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

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

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

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

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

Все так, но некоторые вещи делать стыдно. Например: выкладывать задачу из учебника как утилиту и называть себя хакером.

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

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

Такую программу можно написать хоть мелом на стене. И что?

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

Во-первых, это только одна программа из. Во-вторых, ни в каком учебнике нет задач по написанию RPN калькуляторов, которые читали бы данные из командной строки. И это у меня получилось так написать код неперегруженным, и это, наоборот, плюс.

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

это у меня получилось так написать код неперегруженным

«Код», бгг :))

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

Да там все такое или подобное. Что ты делаешь действительно хорошо, так это шатать мою веру в то, что аргумент «спердобейся» - удел слабых.

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

Шта? Я никому ничего подобного не говорил. Я на личности не переходил и ни кого не классифицировал. Это Вы тут додумали, что я, якобы, что-то про себя думаю, и начали придираться и выяснять подробности по поводу меня.

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

Как это «другое»? Эта программа читает числа, имеет несколько регистров, позволяет помещать числа в эти регистры, и после помещения чисел в 2 разных регистра позволяет производить над ними действия. Именно так и вычислял тот же «МК 61».

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