Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » GoldenDict (часть 2)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущее обсуждение: Часть 1




 
Актуальная версия 1.5.0:
Windоws Qt 4.8.6 или Qt 5.12.3, последний EXE-файл: 1.5.0-18-g59363bc9.
Плагин dsengine.dll для Qt 5.6-based версии на Windows XP: dsengine_5.6.1_for_XP.7z
как собрать актуальный рабочий комплект для windows (без словарей)
MacOSX 1.5.0-18-g59363bc9 Intel; архив прежних версий: на github (09.2012–04.2019), на sourceforge (06.2016–04.2019)
 
Расширенная настройка интерфейса
 
GoldenDict — новая словарная программа, обладающая следующими особенностями:  
 
  • Графический интерфейс на основе табов, для создания которого использована библиотека Qt;
  • Интеграция с html-движком WebKit для корректного представления материалов в html-формате;
  • Поддержка подключения словарей в форматах: Babylon (.bgl/.gls), StarDict (.ifo/.dict./.idx/.syn), Dictd (.index/.dict), ABBYY Lingvo (.dsl тексты и аудиоматериалы .lsa/.dat, .lsd - только в Android), XDXF, AARD, SLOB, ZIM, MDX/MDD, EPWING;
  • Система морфологии, которая находит основы слов при поиске, улучшая его результаты, а также дает рекомендации по правильному написанию слов. Используются обычные словари Hunspell/Myspell;
  • Поддержка индексации звуковых файлов в директориях, формируя из них словари аудио-произношений;
  • Поддержка отправки запросов в Wikipedia, Wiktionary и другие MediaWiki сайты;
  • Режим работы в роли глобальной для всего десктопа всплывающей подсказки, позволяющий выводить информацию для выделенного или помещенного в буфер обмена слова из любого текста внешней программы;
  • Для загрузки доступна версия, имеющая в комплекте набор англо-русско-английских словарей, словарей морфологии и примеры произношения слов на английском языке.  
     
    Программа позиционируется как функциональная замена StarDict, поддерживающая большее количество форматов файлов и более качественное их отображение. Программа умышленно не вводит собственного формата файлов, ставя вместо этого задачу наиболее полно поддержать все популярные существующие.
     
    Официальные Early Access билды для Windоws :: для MacOSX :: для Linux.
    Официальные Development билды для Windоws.
    Официальный форум поддержки GoldenDict.
    Официальный баг-трэкер.
     
    Параллельные топики:
    GoldenDict - New Level - Разработка новых форматов словарей для GD: DSLGD, HTMLGD; подключение речевых движков; режим закладок; варианты полнотекстового поиска.
     
    Как сжимать словари в формат .dz для использования в GoldenDict :: DictZip 1.12.1 (latest) :: Оболочка DictUI
     
    Ссылки на готовые сборки
     
    Ссылки на словари для GoldenDict

  • Всего записей: 38816 | Зарегистр. 26-02-2002 | Отправлено: 11:50 23-02-2017 | Исправлено: yozhic, 22:10 16-03-2024
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Itkind
    Use Wildcards or RegEx modes for search, there it is not such limit.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 13:18 15-02-2018
    Itkind

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    This takes too long. Can I somehow reduce the limitation manually?
     

    Всего записей: 177 | Зарегистр. 03-09-2012 | Отправлено: 13:26 15-02-2018
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Itkind
    Constant is hardcoded. You can create your own GD fork and modify it as you wish.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 13:59 15-02-2018
    Itkind

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     
    I have no idea how to do it, so I leave it like it is.
     
    I have an other question. I have large jpg images inside the dictionaries. Is there a way to scale them down with tags and align them to the size of the GD window without changing the image size and quality?  
     

    Всего записей: 177 | Зарегистр. 03-09-2012 | Отправлено: 15:02 15-02-2018
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Itkind
    Format defined. For html-based formats you can use standard width/height/aling attributes inside tag <img>.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 15:19 15-02-2018
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Вопрос по поводу дальнейшего развития программы.
    Когда вы планируете прекратить поддержку версии на Qt4? И двигаться дальше...
    Просто эта привязка к старым API и "синхронизация" кода со старой версией это как прицеп "Скиф" и тянущий его "Крузак". Разные уровни.
     
    Самое критичное здесь - QRegExp. На него плюются даже разрабы Qt. Современный  QRegularExpression не просто "новее", он на порядок лучше по всем параметрам. Кстати, может вам будет интересно, нашёл старую дискуссию разрабов (?) Qt по поводу необходимости внедрения нового дивжка для рег. выражений. Вкратце, они долго и безуспешно метались в попытках понять куда двигаться - то ли V8, то ли RE2, то ли PCRE. Сразу взять последний не позволяли сложности с внутренним преобразованием UTF16-> UTF8-> UTF16. С другими движками были свои заморочки. И тут случилось чудо. Разрабы PCRE в версии 8.30 добавили нативную поддержку UTF16, который сразу и подобрали разрабы Qt.  
    Стоит ли говорить, что новый QRegularExpression (по сути PCRE, у которого целая индустрия за плечами) и самописный кривой QRegExp - это как Мерседес по сравнению с ЗАпором (извините за штамп). Помимо человеческого синтаксиса и поддержки всех остальных бесчисленных плюшек и "сахара", он ещё и в разы быстрее. Правда, тестов в сети практически нет, но кое-что удалось найти. Причём, обратите внимание, тестируемая версия Qt ещё 5.0.0.
     
    Почему я так заостряю на этом внимание? Вы, как никто другой знаете критическую зависимость GD от движка рег. выражений. Огромная часть функционала строится именно на нём. Причём, в самых чувствительных в плане скорости местах, таких как предобработка вывода, индексация и FTS. Уверен, что индексация для FTS на новом движке (и с переписанным кодом) будет занимать минимум в два раза меньше времени. Конечно, переписывать придётся очень много. Целые блоки кода можно будет выбрасывать, т.к. программные "костыли" нагромождались с течением времени по причине убогости QRegExp, тогда как с QRegularExpression многие вещи можно будет реализовать в рамках синтаксиса PCRE. Например, ситуация, которую описал Itkind. Можно было бы предусмотреть что-то типа теста на [\p{Hebrew}]. Если правда, то сбрасывать ограничитель до двух символов. Конечно, это можно и сейчас организовать, но гораздо большими телодвижениями.
     
    Второй момент - это переход на новые браузерные технологии. Представьте, что больше не надо экранировать CSS. Вообще. Хотя парсить всё равно придётся, но на другом уровне - просто для того, чтоб прописать пути в ресурсах, что, естественно, гораздо легче, чем впихивать ID перед каждым селектором (а я видел CSS в словарях с тысячами селекторов). А об изоляции через увеличение специфичности можно будет забыть. Да и об ID для вторичного контента в DSL, которые только засоряют DOM. Плюсик можно организовать гораздо проще.
    Я, конечно, писал уже об этом... Просто хотел напомнить о технологии Web Components. Она, кстати, претерпела некоторые изменения. Текущая версия - Shadow DOM v1. Не буду сейчас углубляться, просто приведу ссылки:
     
    Shadow DOM v1: Self-Contained Web Components
    Позвольте представить, Shadow DOM API на основе слотов
    Веб-компоненты: обзор и использование в продакшне
     
    По последней ссылке очень развёрнутая статья. Нам и половины того не надо. А нативная поддержка есть не только в Blink, но и в Webkit 10+ https://caniuse.com/#feat=shadowdomv1
     
    В завершение, для Blink есть новое свойство CSS - contain
    CSS-изоляция
    CSS Containment
     
    Как считаете, есть ли у GD такое будущее? Всецело зависит от Вас. Хотя, если развиваться в этом направлении, работы здесь для одного человека непочатый край.

    Всего записей: 1327 | Зарегистр. 03-03-2008 | Отправлено: 00:47 16-02-2018
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    Уверен, что индексация для FTS на новом движке (и с переписанным кодом) будет занимать минимум в два раза меньше времени.

    Преувеличиваете. Регулярки там далеко не главный пожиратель времени и ресурсов.

    Цитата:
    Конечно, переписывать придётся очень много.

    Вот именно. Хотя идея потихоньку зреет.

    Цитата:
    Второй момент - это переход на новые браузерные технологии.

    Под Blink GD надо переделывать очень сильно. Потому что он как минимум на порядок слабее интегрирован в Qt, чем WebKit. Фактически он представляет собой чёрный ящик - сунул в него ссылку, получил готовое отображение. А внутрь не влезай, убьёт.
    Что же касается самого WebKit, в Qt работа с ним практически прекращена. Что есть, то есть, и появление новых версий WebKit никак тут не поможет.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 12:13 16-02-2018
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62

    Цитата:
    Под Blink GD надо переделывать очень сильно. Потому что он как минимум на порядок слабее интегрирован в Qt, чем WebKit. Фактически он представляет собой чёрный ящик - сунул в него ссылку, получил готовое отображение. А внутрь не влезай, убьёт.

    А так ли нужно лезть в него напрямую из Qt? Ведь есть API для взаимодействия - WebEngineScript. А с помощью JS в браузере можно сделать чуть менее чем всё. Нужно просто написать модуль. На форуме есть люди, которые могли бы с этим помочь. Движок V8 очень хорошо оптимизирован, так что потери в скорости не должно быть при переносе некоторого функционала из Qt в браузер.
     
    Или есть необходимость в каком-то специфическом two-way взаимодействии?

    Всего записей: 1327 | Зарегистр. 03-03-2008 | Отправлено: 13:08 16-02-2018
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    Нужно просто написать модуль.

    Вот именно. Для взаимодействия с QWebEngine нужно самому писать функционал, который в QWebKit имеется в готовом виде. Причём на JS. И я не уверен, что все фичи GD удастся реализовать в том виде, в каком они работают сейчас. А так да, просто начать и кончить.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 13:36 16-02-2018
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62

    Цитата:
    А так да, просто начать и кончить.

    OK. Когда вопрос переместится в практическую плоскость, сообщите конкретный функционал, который нужно перенести в JS. Чтоб точно понимать о чём речь и что с этим можно сделать.

    Всего записей: 1327 | Зарегистр. 03-03-2008 | Отправлено: 13:48 16-02-2018
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
    Ну вот пример навскидку. В GD текущая статья на странице синхронизируется со списком "Найдено в словарях". Для такой синхронизации надо из JS дёргать соответствующую функцию объекта Qt. В QWebKit это реализуется просто - объект передаётся в скрипт, и тот работает с ним как с родным. QWebEngine в отличие от QWebKit работает асинхронно, и подобный функционал там попросту отсутствует. JS позволит его заместить?

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 14:31 16-02-2018
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
     
    Полагаю, что речь идёт об этих вещах.
    Асинхронность здесь проблема, если надо возвращать результат (нам нужно?). Но кой-какие наработки имеются.
    Это то самое two-way взаимодействие, о котором я говорил. Наибольшая сложность.
    А вообще, как всегда, надо курить документацию. Ну и дружить со stackoverflow. Благо там по QWebEngine уже не мало информации имеется.
     
    Добавлено:
    Abs62
    Уверен, что уже видели, но на всякий случай оставлю ссылку Porting from Qt WebKit to Qt WebEngine.
    Неужели действительно имеется такое, что было просто реализовать в QtWebKit и сложно/невозможно в QtWebEngine?

    Всего записей: 1327 | Зарегистр. 03-03-2008 | Отправлено: 15:39 16-02-2018
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    Асинхронность здесь проблема, если надо возвращать результат (нам нужно?). Но кой-какие наработки имеются.
    Это то самое two-way взаимодействие, о котором я говорил. Наибольшая сложность.

    Нам много где надо возвращать результат. Потому я и говорю про чёрный ящик и "не влезай - убьёт".
     
    Добавлено:

    Цитата:
    Уверен, что уже видели, но на всякий случай оставлю ссылку Porting from Qt WebKit to Qt WebEngine.

    Да видел, конечно. Там одной фразы "Qt WebEngine Does Not Interact with QNetworkAccessManager" хватает, чтобы надолго задуматься, прежде чем лезть в это дело.

    Цитата:
    Неужели действительно имеется такое, что было просто реализовать в QtWebKit и сложно/невозможно в QtWebEngine?

    За невозможно не поручусь, а вот насчёт сложно - это сколько угодно. Стоит лишь отойти от модели "сунул ссылку - получил страницу и больше ничего с ней не делаешь".

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 17:09 16-02-2018
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62

    Цитата:
    Там одной фразы "Qt WebEngine Does Not Interact with QNetworkAccessManager" хватает, чтобы надолго задуматься, прежде чем лезть в это дело.  
     

    Да, посмотрел - он много где в зависимостях мелькает. Во всех модулях с веб-функционалом.
    Вывод, собственно, как и изначальный постулат - в теории возможно, но придётся переписать чуть ли не половину кода. А потом ещё отлавливать баги во второй половине.
    На это, действительно, нужно решиться.
    С другой стороны, если ничего не делать, то это не будет сделано никогда.
    Может есть смысл форкнуть ветку и начать потихоньку экспериментировать с новым API? В статусе - пре-альфы, пусть только с самой минимальной частью функционала. Просто чтоб отработать все скользкие моменты. А когда картина станет ясней что и как делать, то переносить уже в следующую, major-версию... А текущую версию зарелизить, наконец.

    Всего записей: 1327 | Зарегистр. 03-03-2008 | Отправлено: 17:46 16-02-2018
    ramanuki



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Хочу узнать у вас, как вы смотрите на то, чтобы добавить к пункту меню "Edit Dictionary" (по ПКМ) еще и пункт "Edit Annotation" - чтобы можно было внести свои дополнения или изменения в аннотацию словаря. Нередко бывает необходимость поправить что-то, добавить от себя описание и пр. (Команду можно было бы навесить точно такую же, как и для "Edit Dictionary" - редактирование внешним редактором.)

    Всего записей: 805 | Зарегистр. 07-08-2013 | Отправлено: 12:09 18-02-2018
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ramanuki
    Сдаётся мне это уже перебор. Я ещё понимаю словарь - одну статью правишь, другую, третью... Но аннотацию же столько раз править не надо, правда? Подавляющее большинство юзеров такой пункт только в лишнее искушение вводить будет.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 12:25 18-02-2018
    ramanuki



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Порой хочется добавить свою оценку словаря - типа "оставить", "пересмотреть", добавить новую информацию о нем типа "уже есть похожий", исправить ошибки в описании словаря и т. д.  
     
    ...А чтобы не искушать "подавляющее большинство юзеров", команду можно было бы сделать опционально отключенной по умолчанию или вообще не афишировать ее, только через конфиг.

    Всего записей: 805 | Зарегистр. 07-08-2013 | Отправлено: 12:44 18-02-2018
    ramanuki



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62
    Подскажите, пожалуйста, я правильно понимаю принцип применения тегов в стилях - "кто последний встал - того и тапки". То есть, в оформлении применяется последний открывающий тег, если их несколько и они противоречат друг другу?

    Всего записей: 805 | Зарегистр. 07-08-2013 | Отправлено: 15:28 18-02-2018
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ramanuki
    Насколько я помню, да. Стандартные правила для html и css.

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 16:17 18-02-2018
    ramanuki



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Abs62

    Цитата:
    Насколько я помню, да. Стандартные правила для html и css.

    А в CSS есть средства придать больший приоритет какому-либо стилю?

    Всего записей: 805 | Зарегистр. 07-08-2013 | Отправлено: 16:25 18-02-2018
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175

    Компьютерный форум Ru.Board » Компьютеры » Программы » GoldenDict (часть 2)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru