Как стать автором
Обновить

На что ещё способно Undo/Redo

Время на прочтение4 мин
Количество просмотров15K
На первый взгляд кажется, что ничем другим кроме отката и повтора Undo/Redo не занимается и заниматься не может. Но это не совсем так.



При реализации XtraRichEdit настал момент, когда нам надо было сделать свойство, которое отвечает на вопрос, изменён документ или нет. Как именно его делать, на первый взгляд было вполне очевидно. Надо было завести переменную isModified и выставлять ей значение true, когда документ изменялся. В тот момент, когда пользователь сохранял документ, надо было присвоить ей значение false. Разумеется, изначальное значение переменной также было false, что означало, что документ не изменён.

Всё было просто и понятно и мы принялись за дело.
Читать дальше →
Всего голосов 60: ↑46 и ↓14+32
Комментарии29

Поиск по регулярным выражениям

Время на прочтение4 мин
Количество просмотров9.8K
Что является важным при разработке текстового редактора? Конечно же, «снабдить» его богатым функционалом и обеспечить стабильную работу. Однако многие скажут, что этого недостаточно, чтобы проект действительно был успешным. Нужно его сделать еще и «удобным» для конечного пользователя. А что является важным при разработке такого компонента как текстовый редактор? Да пожалуй, то же самое, вот только удобным он должен быть не только для конечного пользователя, но и для разработчика, который на его основе будет писать приложение.

На первый взгляд удовлетворить и тех, и других будет непросто – одним нужно понятное UI, снабженное набором полезных инструментов, другим – API, позволяющее выполнять широкий спектр задач. Однако зачастую эти задачи связаны друг с другом.

В ходе разработки и поддержки текстового редактора XtraRichEdit мы видели, что некоторые разработчики пишут на его основе редактор языков программирования. Основным требованием таких пользователей была возможность осуществить подсветку синтаксиса. Для этого необходима поддержка поиска по регулярным выражениям, чтобы обеспечить возможность выделения из текста синтаксических блоков и отдельных ключевых слов.


Читать дальше →
Всего голосов 44: ↑36 и ↓8+28
Комментарии35

Автоматическая индексация файлов проекта

Время на прочтение9 мин
Количество просмотров13K
Несмотря на то, что статей по теме «использование Vim в качестве IDE» достаточно много, результат меня не удовлетворял. Мне очень не хватало автоматической, прозрачной для пользователя (то есть меня) генерации тегов для всех файлов в проекте, причем файлы проекта совсем необязательно должны лежать в одной директории и ее поддиректориях, а формировать список файлов должно быть легко и приятно.

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

Долгие поиски плагинов с необходимым функционалом не увенчались успехом, поэтому было принято решение написать такой плагин. Я назвал его indexer.
Читать дальше →
Всего голосов 59: ↑50 и ↓9+41
Комментарии73

Организация памяти в текстовом редакторе

Время на прочтение6 мин
Количество просмотров35K
Каждый, кто пытался запрограммировать хотя бы простейший редактор текста на низком уровне, сталкивался с задачей организации памяти для хранения редактируемого текста. Структура данных для хранения текста должна удовлетворять следующим требованиям:
  1. иметь малые накладные расходы по памяти. Большая часть доступной памяти должна использоваться для хранения текста, а не служебной информации;
  2. допускать эффективную вставку и удаление в произвольном месте текста.

Удовлетворить эти требования одновременно непросто. Если рассмотреть широкоизвестные структуры данных, такие как массивы, списки, деревья, стеки, очереди, кольцевые буфера — то такой структуры, которая бы позволила эффективно выполнить оба требования, не встречается. В случае массива имеем незначительные накладные расходы по памяти, но операция вставки имеет сложность O(n), где n — размер редактируемого текста. В случае списка сложность вставки и удаления составляет O(1), однако накладные расходы по памяти в несколько раз превышают размер собственно текста. Деревья, кучи, кольцевые буфера, ассоциативные массивы и прочие структуры и вовсе неприменимы для хранения текста в редакторе.

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

Предлагаю вашему вниманию эффективную структуру данных для хранения редактируемого текста, которая проста в реализации, имеет константные накладные расходы по памяти и быструю вставку/удаление в произвольном месте. Также она позволяет эффективно редактировать файлы, которые целиком не умещаются в оперативную память.

Несмотря на то, что эта структура данных была открыта давно и использовалась в текстовых редакторах на старых ЭВМ в 8-битную эпоху, это тайное знание предков было в значительной мере утеряно и в современных редакторах встречается редко. Попробуйте открыть файл, состоящий из одной строки мегабайт на 10, в Notepad или Far. Вставка и удаление символов будет длиться секундами.
Читать дальше →
Всего голосов 126: ↑119 и ↓7+112
Комментарии57

Создание простого Chrome приложения

Время на прочтение8 мин
Количество просмотров64K
В прошлом топике я постарался рассказать, что такое Chrome app, и зачем их писать. В этом, как обещал, я опишу процесс создания простого Chrome-приложения. В качестве примера будет использован текстовый редактор. Во-первых, его можно написать очень коротко, так чтобы практически весь код поместился в статью. Во-вторых, в текстовом редакторе будут использоваться несколько характерных для Chrome (и других основанных на Chromium браузеров) программных интерфейсов. В-третьих, да, я уже писал текстовый редактор для Chrome.



Полный код редактора доступен на гитхабе. Готовый редактор можно установить из магазина приложений Chrome.

Читать дальше →
Всего голосов 57: ↑50 и ↓7+43
Комментарии9

«МойОфис»: Первые шаги

Время на прочтение3 мин
Количество просмотров65K
Позвольте представиться, мы – «Новые облачные технологии», команда разработчиков проекта «МойОфис». Коллектив состоит из инженеров, принимавших участие в создании офисных пакетов «Лексикона» и мобильного QuickOffice. Не так давно о нас уже успели рассказать на CNews, «МегаМозге» и даже вышел небольшой пользовательский обзор.

Пришло время для повествования от первого лица. Эта статья открывает наш блог на «Хабрахабре», в котором мы будем писать о том, кто мы и что делаем. Давайте знакомиться!


Читать дальше →
Всего голосов 59: ↑38 и ↓21+17
Комментарии47

Совместное редактирование. Часть 1

Время на прочтение9 мин
Количество просмотров43K
Добрый день. Последний год я занимаюсь в проекте «МойОфис» вопросами совместного редактирования (collaboration). Оглядываясь назад, могу констатировать, что это непростая и очень интересная задача. Поэтому я хотел бы подробно рассказать о ней и дать ответы на следующие вопросы:

  1. Какие существуют подходы к обеспечению совместного редактирования?
  2. Насколько они сложны в реализации?
  3. Можно ли взять готовую библиотеку и использовать ее в своем проекте?
  4. Можно ли вести разработку без оглядки на совместное редактирование?



Для того чтобы подробно и аргументированно ответить на них, необходимо написать довольно много материала, поэтому статей будет несколько, присаживайтесь поудобнее, мы начинаем.
Читать дальше →
Всего голосов 46: ↑41 и ↓5+36
Комментарии29

Совместное редактирование. Часть 2

Время на прочтение10 мин
Количество просмотров19K


Добрый день! Недавно мы начали цикл статей о совместном редактировании. В первой статье я рассказал о задаче неблокирующего редактирования и возможных подходах к его реализации. Напомню, что в итоге в качестве алгоритма мы выбрали Operation Transformation (OT). Также был анонсирован рассказ о его клиент-серверном варианте, и сегодня я освещу подробности его работы. Кроме того, вы узнаете, почему отмена в OT работает иначе и чем грозит столкновение с суровой реальностью.

Дальше вас ждет много алгоритмов и диаграмм. Думаю, вам будет интересно.
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии10

Российский сервис «МойОфис» будет конкурировать с Microsoft Office и Google Docs

Время на прочтение2 мин
Количество просмотров22K
Весной 2015 года компания «Новые облачные технологии» (НОТ) запустит новый сервис «МойОфис», который должен составить конкуренцию сервисам Microsoft Office и Google docs. Разработчики ставят перед собой амбициозные цели. К 2020 году компания хочет получить 25% отечественного рынка и выйти на рынки Европы и Латинской Америки.
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии30

Теперь ONLYOFFICE может всё: добавляем плагины в редакторы документов

Время на прочтение3 мин
Количество просмотров16K
Что если бы вы могли добавить в редакторы документов любые функции, какие вам хочется? Теперь вы можете: в редакторах ONLYOFFICE появилась возможность подключения плагинов. Несколько примеров мы написали сами — все их можно посмотреть в нашем открытом репозитории на GitHub'e. Теперь ваш ход — напишите то, чего вам не хватало.

Подробности далее.


Всего голосов 21: ↑19 и ↓2+17
Комментарии49

Фетиш LaTeX (или Не пишите в LaTeX! Он только для вёрстки)

Время на прочтение24 мин
Количество просмотров119K
Сейчас то время года, когда студенты выбирают себе классы для обучающих навыков. Один из навыков, который будет поощряться, — обучение LaTeX. Другие могут придти к использованию LaTeX по другим причинам: кто-то хочет сверстать книгу; кто-то слышал, что LaTeX может иметь отношение к журналу Digital Humanities; ну и так далее. Я написал это эссе в качестве предварительного введения в LaTeX. Оно не научит вас использовать редактор (я не имею квалификации для этого!), но я попытаюсь популярно объяснить тем, кто ещё не использует LaTeX, для чего именно он нужен. Это поможет им понять, стоит ли LaTeX усилий на его изучение (не говоря уже о том, чтобы просто заставить его работать). Почему такое большое эссе? Потому что многие из евангелистов превратили LaTeX в фетиш и распространяют дезинформацию о его истинных достоинствах. Хочу прояснить ситуацию.

1. Что такое LaTeX?


По словам официального сайта, LaTeX — это «высококачественная система набора и вёрстки» и «стандарт де-факто для обмена и публикации научных документов». С этим никто не спорит.
Читать дальше →
Всего голосов 55: ↑33 и ↓22+11
Комментарии71

ONLYOFFICE 2017: итоги

Время на прочтение4 мин
Количество просмотров9.4K
Это был классный год. Мы сделали много вещей, которые давно хотели сделать, и даже вещей, которых сами от себя не ожидали. В этом посте мы поделимся самым главными итогами 2017-го.


Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии28

Сравнение Word и LaTeX по удобству и эффективности

Время на прочтение2 мин
Количество просмотров18K
На кафедре психологии, экспериментальной психологии и когнитивных наук университета Гиссена (Германия) провели сравнительное исследование текстовых редакторов LaTeX и Microsoft Word по удобству и эффективности при подготовке документов (научных статей).

В рамках исследования 40 учёных из разных научных дисциплин готовили статьи в Microsoft Word или LaTeX. Тестовая статья включала в себя блоки непрерывного текста, текст с таблицами и подзаголовками, а также сложный текст с математическими выражениями.

Исследование выявило, что пользователи LaTeX работают медленнее, чем пользователи Microsoft Word, набирают меньше текста за то же время, допускают больше опечаток, орфографических и грамматических ошибок, а также ошибок форматирования. По большинству параметров даже эксперты по LaTeX показывают худшую производительность, чем новички в Word.

С другой стороны, пользователи LaTeX чаще сообщали об удовольствии от использования программного обеспечения, чем пользователи Word. Кроме того, LaTeX показал лучший результат в наборе текста с формулами.
Читать дальше →
Всего голосов 11: ↑6 и ↓5+1
Комментарии21

Создан текстовый редактор на флэше

Время на прочтение1 мин
Количество просмотров592
Стартап Virtual Ubiquity присоединился к числу компаний, которые разрабатывают онлайновые текстовые редакторы. Особенностью программы Buzzword является то, что текстовый редактор создан на Flex 2.0 и работает через Flash Player.
Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии48

Adobe выходит на рынок офисного ПО

Время на прочтение1 мин
Количество просмотров562
Adobe приобрела за неназванную сумму компанию Virtual Ubiquity вместе с её текстовым редактором Buzzword, а значит вышла на рынок офисного софта и будет соревноваться с Microsoft, Zoho и Google. Buzzword — это онлайновый текстовый редактор, позволяющий работать над текстами нескольким авторам, созданный на Adobe Flex с применением Adobe AIR. Благодаря последним факторам Buzzword может работать во Flash-плеерах на различных ОС, к тому же и в офлайне.

В данный момент Buzzword может работать с документами в форматах DOC, RTF и XML, но Adobe обещает добавить поддержку форматов PDF (Buzzword будет дополнять сервис Create PDF) и ODF.

Эрик Ларсон (Erik Larson), директор по маркетингу и продакт-менеджменту Adobe, сказал, что компания собирается сделать приложение бесплатным для корпоративных пользователей платных Premium-сервисов.

via CNet
Всего голосов 22: ↑21 и ↓1+20
Комментарии54

Вышел Editplus 3.0

Время на прочтение1 мин
Количество просмотров620
Вышла новая версия текстового редактора EditPlus.

Ссылка на скачивание: ftp.editplus.com/epp300_en.exe
Список нововведений: www.editplus.com/new.html
Все о EditPlus: editplus.info
Всего голосов 17: ↑10 и ↓7+3
Комментарии10

Текстовые редакторы для Linux (часть 2): Geany

Время на прочтение2 мин
Количество просмотров24K
Первая часть тут...

Geany — это лёгкий текстовый редактор для Linux основанный на GTK2. Geany поддерживает внутренние и внешние “плагины”, и в большей степени он выделяется как редактор исходного кода, который включает простой IDE (интегрированную среду разработки).

Geany требует только GTK2 (>= 2.6.0) библиотеки (включая Pango, Glib, и ATK библиотеки), и не зависит от любого менеджера X-ов или от окружения рабочего стола. К примеру, у меня стоит Ubuntu 7.10 со всеми необходимыми библиотеками. Еще Вам понадобится компилятор C/C++ и утилита make.

У большинства Linux дистрибутивов есть бинарный пакет Geany, но большинство из них не обновлены до текущего релиза 0.14, который доступен в исходном коде. Если Вы хотите последнюю версию, тогда скачайте архив и скомпилируйте проект. Geany использует нормальный инсталляционный процесс для Linux: configure, make, make install (под правами root). Выполните эти шаги в консоле после загрузки tar.bz файла в Вашу домашнюю директорию.

cd ~
tar -zxvf geany-0.14.tar.gz
cd ./geany-0.14
./configure
make
sudo make install


Читать дальше →
Всего голосов 51: ↑41.5 и ↓9.5+32
Комментарии61

Забудьте про свой редактор. Используйте Vim

Время на прочтение3 мин
Количество просмотров30K
Получайте удовольствие от процесса редактирования текста.

Вступление


Здравствуй, дорогой читатель! Данная статья не является ни руководством, ни учебником. В этой статье я лишь хочу рассказать Вам, что существует более эффективный инструмент для работы с текстовыми файлами. Этой статьёй я хочу вдохновить Вас на то, чтобы, поборов глубоко вросшие в Вас привычки, Вы попробовали совершенно другой, не похожий ни на что, метод работы с текстом.
Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии154

medit — хорошая замена gedit в Linux и TextPad в Windows

Время на прочтение1 мин
Количество просмотров6K
Меня давно уже перестал устраивать дефолтный для Gnome редактор gedit. Вроде бы все необходимое в нем есть, но две вещи раздражали достаточно сильно: отсутствие возможности поиска по файлам (grep, конечно, отличная команда, но хотелось бы все-таки не вылезать при этом из редактора и пользоваться результатами поиска прямо в нем) и отсутствие автоопределения русских кодировок (вроде бы был в свое время плагин encodings, но он у меня активироваться отказался). Последний момент является важным еще и потому, что у меня много разнородных текстовых файлов и PHP-скриптов сайтов, сделанных в разное время, поэтому часть из них создана в кодировке windows-1251, а часть в utf-8.

Поиск ссылок по указанным проблемам выдал несколько результатов, один из которых меня полностью устроил. Им оказался редактор medit. Фактически, это почти полностью клонированный gedit, но в нем реализованы еще и упомянутые фичи. Скриншот можно посмотреть здесь: screenshot-medit.png.

По функциональности редактор почти не уступает популярному в среде Windows редактору TextPad. Поиск по файлам реализован тоже достаточно удобно:

Find in Files

Правда grep, вызываемый этим диалоговым окном, ругается, если задать параметр Skip files, но для меня это не проблема, поскольку этим параметром я все равно обычно не пользуюсь.

Что касается автоопределения кодировок, то достаточно прописать в опциях параметр Encoding to autodetect: UTF-8,WINDOWS-1251. После этого кодировка файла определяется автоматом в 99% случаев.
Всего голосов 25: ↑18 и ↓7+11
Комментарии38

*Room-редакторы — Вы, текст и ваши идеи. Ничего лишнего

Время на прочтение3 мин
Количество просмотров7.2K


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

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

Для написания разного рода статей и художественных текстов, как ни странно, тоже существуют специальные редакторы, но о их существовании мало кто знает. Многие для этих целей используют текстовый процессор (MS Word, OO Writer), люди попрактичнее — разнообразные Notepad`ы, а некоторые (о, ужас) — веб-интерфейс сервисов, куда будут статьи публиковать.

Читать дальше →
Всего голосов 98: ↑87 и ↓11+76
Комментарии174