Технические вопросы
Какова скорость запросов?
Заголовок раздела «Какова скорость запросов?»Цель: < 2 секунд
DevLingo использует стратегию многоуровневого кэширования для обеспечения быстрого отклика:
Локальная техническая база (мгновенно)
Заголовок раздела «Локальная техническая база (мгновенно)»- Содержит 85+ часто используемых терминов разработки (API, library, deprecation и т.д.)
- Хранится в локальной базе данных SwiftData
- Первый запрос возвращается мгновенно, без сетевой задержки
Кэшированные запросы (< 500 мс)
Заголовок раздела «Кэшированные запросы (< 500 мс)»- Ранее запрошенные слова читаются из локального кэша
- Включают определения, примеры и ссылки на произношение, сгенерированные AI
- Доступны офлайн
Новые AI-запросы (1-2 с)
Заголовок раздела «Новые AI-запросы (1-2 с)»- Направляются через граничные узлы Cloudflare Workers к Claude API
- Включают полный разбор, примеры, синонимы, синтез произношения
- Граничное развёртывание обеспечивает низкую задержку
Откуда берутся данные о произношении?
Заголовок раздела «Откуда берутся данные о произношении?»Произношение в DevLingo основано на нескольких авторитетных источниках:
Комбинация источников
Заголовок раздела «Комбинация источников»- Официальная документация: произношение из официальных материалов Apple, Google, Meta, Amazon (термины AWS, iOS и т.д.)
- Корпус YouGlish: образцы произношения из реальных видео разработчиков
- Консенсус сообщества: постоянное обновление произношения неофициальных терминов на основе обратной связи команд
- Ручная IPA-транскрипция: все произношения имеют стандартную IPA-транскрипцию
Технология синтеза
Заголовок раздела «Технология синтеза»- Движок: Google Cloud Text-to-Speech
- Модель: Neural voice model (более естественная, чем традиционный TTS)
- Охват: американский и британский английский (переключение по запросу)
Сообщение о неточном произношении
Заголовок раздела «Сообщение о неточном произношении»При обнаружении ошибки в произношении:
- На учебной карточке нажмите Report Issue (Сообщить о проблеме)
- Выберите Pronunciation (Произношение)
- Укажите правильное произношение или ссылку на источник
Обратная связь от сообщества помогает нам постоянно улучшаться.
Как решаются конфликты облачной синхронизации?
Заголовок раздела «Как решаются конфликты облачной синхронизации?»DevLingo использует стратегию синхронизации last-write-wins для обработки редактирования на нескольких устройствах:
Принцип работы синхронизации
Заголовок раздела «Принцип работы синхронизации»- Клиентская метка времени: при каждом изменении записи словаря записывается
clientUpdatedAt - Облачное слияние: при загрузке в Cloudflare D1 сравниваются метки времени
- Приоритет последнего изменения: версия с более поздней меткой времени замещает более раннюю
- Поддержка офлайн: данные, отредактированные офлайн, автоматически синхронизируются при восстановлении сети
Пример сценария
Заголовок раздела «Пример сценария»Сценарий: одновременное редактирование одной записи на двух Mac
- Mac A: добавлена заметка “API design pattern” (14:00) — офлайн
- Mac B: обновлено определение (14:05) — онлайн
- Результат синхронизации: обновление Mac B побеждает (более поздняя метка времени)
Для сохранения обеих версий можно создать две отдельные записи.
Можно ли экспортировать данные словаря?
Заголовок раздела «Можно ли экспортировать данные словаря?»Текущая поддержка: CSV
Заголовок раздела «Текущая поддержка: CSV»- Откройте Настройки → Data (Данные) → Export (Экспорт)
- Выберите формат CSV
- Экспортируемое содержимое включает:
- Слова
- Определения
- Примеры
- Учебные теги (дата сохранения, количество повторений)
CSV-файл совместим с Excel, Google Sheets и другими инструментами.
Функции в плане разработки
Заголовок раздела «Функции в плане разработки»- Экспорт в формат Anki: преобразование в формат Anki (.apkg) для интервального повторения
- Импорт в базу данных Notion: прямой импорт в Notion для интеграции с личной базой знаний
- Экспорт JSON: полный экспорт данных со всеми метаданными
Какая AI-модель используется для API-вызовов?
Заголовок раздела «Какая AI-модель используется для API-вызовов?»Выбор модели: Claude (Anthropic)
Заголовок раздела «Выбор модели: Claude (Anthropic)»DevLingo использует Claude в качестве серверной AI-модели:
Причины выбора:
- Точность: понимание технических терминов превосходит другие модели
- Структурированный вывод: поддержка возврата данных в формате JSON, удобном для отображения
- Многоязычность: лучшее понимание примеров кода и запросов на нескольких языках
- Экономичность: разумная стоимость API
Информация, включённая в запрос
Заголовок раздела «Информация, включённая в запрос»- Выделенное английское слово
- Контекст текущего приложения (Xcode, Slack и т.д.)
- Языковой фон пользователя (опционально, для коррекции L1-интерференции)
Не включается:
- Содержимое документов (отправляется только выделенное слово)
- Идентификационные данные пользователя
- История просмотров или содержимое приложений
Частота API-вызовов
Заголовок раздела «Частота API-вызовов»- Бесплатная версия: 10 раз/день
- Pro: без ограничений
- Team: без ограничений
Почему приложение не в Mac App Store?
Заголовок раздела «Почему приложение не в Mac App Store?»Основные причины
Заголовок раздела «Основные причины»-
UX разрешения на универсальный доступ
- В App Store невозможно элегантно запросить разрешение на универсальный доступ
- DevLingo нуждается в этом разрешении для глобального сочетания клавиш и выделения текста в приложениях
- Прямая загрузка обеспечивает лучший первый опыт использования
-
Более быстрая итерация
- Прямое распространение не требует ожидания проверки App Store (обычно 1-2 дня)
- Быстрый выпуск исправлений и новых функций
- Прямое получение обратной связи от пользователей
-
Гибкое ценообразование
- In-App Purchase в App Store удерживает 30% комиссии
- Прямые продажи и модель License Key экономичнее
- Более прозрачное ценообразование
Возможности в будущем
Заголовок раздела «Возможности в будущем»Условия размещения в Mac App Store:
- Улучшение Apple процесса запроса разрешений на универсальный доступ
- Или изменение функциональности DevLingo, не требующее разрешения на универсальный доступ
В настоящее время мы отдаём предпочтение прямому распространению для лучшего пользовательского опыта.
Поддерживаются ли пользовательские горячие клавиши?
Заголовок раздела «Поддерживаются ли пользовательские горячие клавиши?»Текущее состояние
Заголовок раздела «Текущее состояние»DevLingo использует фиксированное глобальное сочетание клавиш: ⌘⇧D (глобальный запрос)
Планируемые функции
Заголовок раздела «Планируемые функции»- Пользовательское глобальное сочетание: возможность изменить на ⌘⇧E, ⌘⇧L и т.д.
- Профили сочетаний клавиш: сохранение и импорт предустановок
- Переопределение на уровне приложения: разные сочетания для конкретных приложений
Временное решение
Заголовок раздела «Временное решение»Если ⌘⇧D конфликтует с другим приложением:
- Отключите конфликтующее сочетание в другом приложении
- Или переназначьте в системных настройках macOS
- Можно использовать значок в строке меню для ручного запуска запроса
Обратная связь по настройке горячих клавиш: [email protected]
Где хранятся данные?
Заголовок раздела «Где хранятся данные?»Локальное хранилище (устройство)
Заголовок раздела «Локальное хранилище (устройство)»- База данных SwiftData: словарь, история обучения, кэш запросов
- Расположение:
~/Library/DevLingo/(конфиденциально, другие приложения не имеют доступа) - Шифрование: шифрование файловой системы macOS (FileVault)
Облачное хранилище (изоляция по пользователям)
Заголовок раздела «Облачное хранилище (изоляция по пользователям)»- База данных: Cloudflare D1 (SQLite)
- Кэш: Cloudflare KV (для сессий и ограничения частоты)
- Дата-центры: глобальные граничные узлы, но данные полностью изолированы по учётным записям
- Шифрование передачи: все коммуникации через TLS 1.3
Гарантии конфиденциальности
Заголовок раздела «Гарантии конфиденциальности»- Данные изолированы по ID пользователя; сотрудники DevLingo не имеют доступа к данным пользователей
- Регулярный аудит безопасности
- Подробнее см. Политика конфиденциальности
Удаление данных
Заголовок раздела «Удаление данных»После удаления учётной записи все облачные и локальные данные окончательно удаляются в течение 30 дней.