Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Tехнологии, разработанные для старых компьютеров с ограниченными возможностями, оказываются в наше время забытымиСейчас у нас куча новых компьютеров с ограниченными возможностями — это смартфоны и планшеты. Но погроммисты, видимо, расчитывают, что если их программа не работает из-за нехватки памяти, то через полгода Самсунг выпустит новый смартфон, в котором будет в два раза больше оперативки.
mmap()-ируйте файл любого размера.Ммм… У вас какой-то странный mmap, однако. Мой технологией вставки пары байт в середину как-то не обладает…
Деревья, кучи, кольцевые буфера, ассоциативные массивы и прочие структуры и вовсе неприменимы для хранения текста в редакторе
Просто с моноширинными шрифтами не нужно рендерить глифы, чтобы её узнать.Данное утверждение тоже, кстати, не всегда верно. Современные системы отображения текста умеют брать отсутствующие глифы из шрифтов, где они присутствуют. Если основной шрифт моноширинный, и при том отображающая шрифт программа расчитывает на определённые размеры символа, то это приводит к различным глюкам отображения, так как символ из другого шрифта имеет другие размеры.
xmllint --format - при чтении и xmllint --noblanks - при записи.Т.к. абзацы длиной 10 МБ встречаются крайне редко (я бы даже сказал, никогда не встречаются)Я так понял, вы под «абзацами» понимаете «строки текста»? Если да, то один из любимых примеров: XML в одну строку. Мне, правда, никогда не доводилось редактировать XML, который обязан занимать одну строку, что позволяло пользоваться xmllint, но других люди говорят: им нужно. Собственно, эта необходимость упоминается фактически в каждой теме, где кто‐то говорит, что «обратка длинных строк не нужна».
Если говорить о чисто текстовых файлах, то да, абзац — это строка, заканчивающая признаком конца строки (символами 13, 10 в Windows или только 13 в Linux).Обычно строка — это строка. А абзац — это либо внутренняя терминология редактора (вроде «абзац — это набор строк, ограниченных строками, не содержащими не пробельных символов, либо началом/концом файла» (основное определение для Vim)), либо терминология того формата данных, в котором записан текстовый файл (свои абзацы есть и в FB2, и в *TeX), либо терминология отображающей программы (читалки при чтении текстовых файлов обычно имеют своё представление о том, как текст должен биться на абзацы, причём зачастую он бьётся совершенно не по строкам).
Приятно встретить человека, задумывающегося о таких "мелочах" как правильная организация данных в век шаблонного проектирования. Спасибо за статью!
Там тоже обсуждался вопрос организации памяти для текстового редактора применительно именно к ЭВМ с ограниченными ресурсами, таким как ZX Spectrum.Прошу прощения, но ЭВМ с неограниченными ресурсами ещё не создали и вряд ли когда-нибудь создадут
Организация памяти в текстовом редакторе