❢ Мы запустили флэш-карточки со словами уроков. Yahoooo!!!

Ириса: А мне не приходят списки слов на проверку( где их искать?

Как я поняла, Илья приостановил рассылку уведомлений.

popov-ilya: Продуманность подхода вызывает безусловное уважение.)

Ну, да, мы стараемся всё делать основательно. Нжанеры, чай! :)

Я проанализировал сегодня статистику — на ответах «Помню» без подглядывания в буквы (15,000+ ответов). Получилась вполне ожидаемая картина (по оси X — время в миллисекундах, по оси Y — частота). И всё было бы здорово, если бы не одно «но»…

004ae35205bd5c2b17b95cbbf666463a.png

Я заглянул в собственные вчерашние ответы на слова третьего урока, которые я прогонял для воспроизведения бага со словом désolé. И заметил там странные задержки на совершенно очевидных для меня словах (первый столбик — время в миллисекундах).

d48d9e719cda0a53f0bb1ec02f807ece.png

И я к ужасу своему понял, что мы получаем не ту статистику, которую ожидали: это интервалы времени не до нажатия кнопки «Ответ», а до нажатия кнопки «Помню». :( А это не то, этим пользоваться нельзя. Эх!.. Что ж, путь к успеху тернист! :)

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

Но даже эти данные показывают, что мы на верном пути. :))

Ириса: А мне не приходят списки слов на проверку( где их искать?

Надежда: Как я поняла, Илья приостановил рассылку уведомлений.

Ну как же! Я вчера огромный пост накатал, как мы всё починили и запустили вновь!

С багом Ирисы мы разбираемся…

UPD: Да, ошибка с уведомлениями была в том числе и в том, что даты для некоторых из них назначались пустыми и они поэтому не приходили вовсе. Хотя мне кажется, что это лучше, чем получать ошибочные нотификации ежедневно. ;)

Ириса, Вы получите очередное уведомление сегодня в полночь по Вашему времени (это семь вечера по Москве, то есть через два часа).

ILYA DUMOV: И я к ужасу своему понял, что мы получаем не ту статистику, которую ожидали: это интервалы времени не до нажатия кнопки «Ответ», а до нажатия кнопки «Помню». :( А это не то, этим пользоваться нельзя. Эх!.. Что ж, путь к успеху тернист! :)

Как я вас понимаю. Делаешь зачастую кучу работы, а потом оказывается, что ошибка где-то в начале или оно вообще не то, и приходится все начинать сначала.

ILYA DUMOV: Да, ошибка с уведомлениями была в том числе и в том, что даты для некоторых из них назначались пустыми и они поэтому не приходили вовсе. Хотя мне кажется, что это лучше, чем получать ошибочные нотификации ежедневно. ;)

Уведомления это те что через колокольчик в правом верхнем углу сайта? Таких у меня тоже не было, только про ответы на форуме. Но слова в режиме Повторить есть каждый раз, что логично, т.к. по одному новому уроку в день.

popov-ilya: Уведомления это те что через колокольчик в правом верхнем углу сайта?

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

Убей бог, не помню логику в вычислениях, которая отражена на этом фрагменте под спойлером, но получалось, что со временем будет прилетать (отголоски старых слов вместе с текущими новыми словами) до сотни слов — на запоминание и повторение. Здесь использовалась модель повторения назавтра, на 7-й, 16-й и 35-й день.

4180fcdf6925e11dcc285de45f758b95.png

В любом случае, сейчас в полночь по местному времени должны появляться уведомления под колокольчиком в те дни, когда есть запланированные слова на повторение. И мы готовы вскоре подключить туда и push-уведомления (только не на полночь, а на 19 часов:), но они будут пока работать только у тех, кто согласился при первом запросе их получать. Включить их принудительно на компьютере можно, хотя для этого и требуется сноровка (надо инспектором в браузере потереть конкретные куки, содержащие в имени строку “p4s”). Наш провайдер push-уведомлений обещал сделать возможность подключать себе уведомления по кнопке. Пока ждем.

Работа по озвучке словарика разными голосами (мужской род мужскими, женский — женскими) была развернута в 2012-2013-м годах. Были составлены списки слов для озвучки, состоящие из сотен слов; их озвучивали для нас разные люди во Франции и — для переводов на русский — в Санкт-Петербурге. Параллельно велась работа по вычитке самого словарика на предмет ошибок и на предмет более удачных форм слов — в том числе и артиклей, с которыми слова чаще всего употребляются.

И правда! Ну понятно, что с точки зрения словаря un fils — это корректно, потому что сын — это исчисляемое существительное, но на практике мы скорее и чаще будем слышать le fils. И такая история происходит со многими другими существительными. Еще пример? Формально с точки зрения словаря правильней для водительских прав было бы записать un permis de conduire. Но даже поиск в Гугл покажет, что le permis de conduire встречается чаще. Соответственно, и la carte grise (синоним прав во французском) встретится скорее, чем une carte grise.

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

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

Ошибки, которые мы там сразу же обнаружили, делились на разные категории.

Самые страшные: показывается одно слово, а звучит совершенно другое. Тут красный уровень опасности, и такие случаи исправляются в аварийном порядке.

Следующий уровень: слово записано с одним артиклем, а озвучивается с другим. Это терпимо, но требует изменений.

У слова неточный перевод и, как следствие, и озвучка тоже. Неточный — это, например, «добродетель» вместо «благодетель» (исправлено!). Эти ошибки вытекают из самих словариков, которые тоже требуют ревизий.

Из-за ошибок исходных данных для программы формирования базы словарика образовались совсем смешные ошибки: озвученные фразы хранились в файлах с совершенно другими именами. Например, озвучка фразы «des efforts» лежала в файле с именем les_oeufs_de_poisson_synth_hom.mp3 (при этом эта фраза была озвучена человеком, а не синтезирована — собсно, кроме hom в имени файла не было ни капли истины). Когда ты разгребаешь ошибки словаря руками, это бесконечно усложняет работу, потому что имя файла не говорит тебе ничего о том, как именно озвучено слово, а только вводит в заблуждение.

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

1815026f5a437503561b7540c700c000.png 566b07f328280b59329299801f113d23.png

Это список из 320 озвученных братом Арно слов. Зеленым выделены те слова, которые не были учтены и для которых мы изменили артикль и, соответственно, озвучку (в соответствии с соображениями, высказанными в начале).

Вот слова, которые мы исправили.
БылоСтало
un boucherle boucher
un boulangerle boulanger
cartonle carton
un caviar d’auberginele caviar d’aubergine
un cousinle cousin
un fromagerle fromager
un neveule neveu
un pâtissierle pâtissier
le pc (le parti communiste)le pc (le parti communiste)
un petit commerçantle petit commerçant
un petit-filsle petit-fils
le poireaule poireau
un poissonnierle poissonnier
le ps (le parti socialiste)le ps (le parti socialiste)
un rangementle rangement
le ski alpinle ski alpin
le ski de fondle ski de fond
le surf des neigesle surf des neiges
un tempéramentle tempérament
le yaourt (nature) (яурт)le yaourt (nature)
Gémeauxles gémeaux
Poissonsles poissons
un onclel’oncle
l’arrêt de busun arrêt de bus
le basun bas
bureau de voteun bureau de vote
un compteun compte (en banque)
le conjointun conjoint
le gymnaseun gymnase
un impôtun impôt/ les impôts
l’intrusun intrus
un œuf (ан оф)un œuf

Некоторые из этих фраз были просто безграмотными. Например, икра — неисчисляемое существительное: не может быть «одна икра», «две икры»… не может быть un caviar — может быть только le caviar. И так далее…

На этом найденные ошибки в словарике не заканчиваются. О многих из оставшихся, благодаря Надежде, мы знаем, потому что она, практически, ежедневно вычитывает словарик-карточки и замечает даже незамечабельные ошибки и репортит в наш баг-трекер. И мы сейчас вынуждены бросить все дела (даже наш краудфандинг-проект) и все силы бросили на исправление. Надеюсь, что большинство самых фатальных ошибок (красного уровня) мы исправили. А остальные будем изводить в плановом порядке. :)

UPD: ВОт смотрю в этот список и уже вижу косяки, которые придется исправлять вручную путем правки базы ручками и ручного копирования файлов. Блин, знаки зодиака (Gémeaux, Poissons) идут без артикля, исправили напрасно, опять по ошибке. Снова здорова!! Нет, это никогда не кончится!!!

Для такой работы нужен штат сотрудников, а мы торкаемся тут, полтора человека… :(
Ну вот, начал за здравие, а кончил за упокой.
Помните анекдот советских времен? Мужик пишет объявление: «Пропала собака. Болонка. Белая. Сука… б^@#ь, ненавижу! Какого *** я делаю в этой стране!!!» ;))

UPD2: Это всё — наглядный пример того, как стоимость исправления ошибки вырастает экспоненциально в зависимости от того, на какой стадии она была обнаружена. Если ошибку нашли при вычитке редактором, исправить ее — два пальца два клика. Когда она выявлена в продакшне, цена её исправления ЧУДОВИЩНА, потому что надо теперь исправить не только в одном месте (что само по себе теперь гораздо сложнее, потому что это уже не клеточка в таблице, а запись в базе данных), а соблюсти и откорректировать без ошибок все связи, которые выросли вокруг этого слова в системе.
Маленький ад, на который может уйти вся жизнь в отдельно взятом времени года. И остальные проекты будут стоять под паром.

В 10 уроке еще раз наткнулся на баг с одновременным появлением русского и французского вариантов в режиме проверки, на этот раз сделал скрин.

6b26117f0ceecbb4309c27aa11fa010b.png

popov-ilya: В 10 уроке еще раз наткнулся на баг с одновременным появлением русского и французского вариантов в режиме проверки

Увы, пока Леша не зарелизит новую версию, эту багу не исправить :(

ILYA DUMOV: Увы, пока Леша не зарелизит новую версию, эту багу не исправить :(

Я понимаю, что сейчас есть более срочные задачи, просто отписываюсь о найденных багах. Потом и до них дело дойдет).
Еще возник такой вопрос. Мне исправно приходят уведомления о появлении новых слов для повторения. Но когда я тыкаю Перейдите по ссылке, на открывающейся странице нет ничего кроме верхнего и нижнего меню. В общем-то, это не критично, т.к. в любом из уроков на вкладке Карточек слова для повторения нормально выводятся в соответствующем режиме. То ли баг, то ли я что-то не так делаю. Но опробовано в 3 разных браузерах с тем же результатом.

Ниже скрин.

c20cb80d523b7517986b4b62bbb392af.png

popov-ilya: Но опробовано в 3 разных браузерах с тем же результатом.

А какой URL пишет в строке адреса?

P.S. Вот не добили мы эти баги с уведомлениями! Еще остался один косяк, что новых уведомлений как бы нет, а открываешь список по колокольчику, а они таки есть, но все в просмотренных. Как будто кто-то за тебя открывал уведомления и увидел их все. Мы еще хотим помечать в списке уведомлений (фоном, например), переходил ли по ссылке или нет (как в Фейсбуке это сделано). Но тогда придется оставить одну ссылку (сейчас их часто две — на сам ответ и на весь тред; вот последний можно смело сделать не ссылкой).

ILYA DUMOV: А какой URL пишет в строке адреса?

URL https://www.le-francais.ru/dictionary/app/reviews.

popov-ilya: когда я тыкаю Перейдите по ссылке, на открывающейся странице нет ничего кроме верхнего и нижнего меню. В общем-то, это не критично, т.к. в любом из уроков на вкладке Карточек слова для повторения нормально выводятся в соответствующем режиме.

Мы не смогли воспроизвести эту ситуацию и даже не можем взять в толк, как теоретически такое может происходить, чтбы на этой странице она не появлялась, а на странице урока — появлялась. Это один и тот же скрипт. Мы ломали голову, и Антон придумал только одно более или менее разумное предположение, которое хоть как-то могло бы это объяснять: версия такая, что, возможно, резалка рекламы ошибочно распознает этот скрипт, как баннер, и выкусывает его. Никаких других идей нет.

ILYA DUMOV: Вот не добили мы эти баги с уведомлениями!

Я вынужден снова перед вами всеми извиняться. Сегодня мы столкнулись с еще двумя ошибками нотификации и подгона слов для повторения и исправляли их.

Это было:

  1. слова, назначенные на повторение, но после помеченные, как исключенные, всё равно попадали в повторение.
    659c4a48a00196fa3289e0c3b3b78e41.png

  2. По-прежнему генерировались фальшивые списки повторений и нотификации к ним, приходящие днем.
    bfb8a58c4dff1512e47f33fd1d5f897b.png

Я объясню почему именно в этом месте происходит такой затянувшийся процесс «излечения» (long read).

Дело в том, что разработка программного обеспечения состоит из двух постоянно перемежающихся фаз: написание кода и его отладки. Время, которое затрачивается на эти две фазы, как правило сильно смещено в пользу отладки. Поиск ошибок и тестирование чаще всего занимает больше времени, чем кодирование — нередко в два и более раз. Ты пишешь, запускаешь и обнаруживаешь, что оно работает не так, как задумывалось (или даже не работает вовсе).

Отладка кода — это обнаружение проблемного кода, его исправление и новое тестирование — заработало оно, как ты хотел, или же еще нет.

Ситуация с отложенными действиями — как наши интервальные повторения и уведомления к ним — сложны из-за того, что ты не можешь сымитировать эту ситуацию на компьютере. Ты не можешл написать код, запустить, потом прослушать карточки, проверить себя — и уйти до завтра, чтобы посмотреть, как система поведет себя назавтра: создаст ли она правильные уведомления и сформирует ли правильные списки для повторения или же накоссячит. А потом оставить еще на неделю, а потомр на две, а потом на три и понаблюдать…

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

Чтобы такую систему проверить по-настоящему, поведение пользователя и весь (в нашем случае) учебный процесс имитируются программно. Строится модель взаимодействия пользователя с системой, в которой программно ускоряется время. Это делается путем написания тестов. Тесты — это, по сути, еще одна программа, порой не менее изощренная, котора имитирует действия актора. Создается полная модель, описывается алгоритм «поведения» и скорость течение времени: формируется пустая база, генерируются случайные «слова» (из произвольного набора букв), из них создаются «словари», задается расписания для пользователя, описываются триггеры для его «поведения» и весь этот виртуальный мир запускается — чтобы посмотреть, как на описанные заранее действия пользователя откликалась система.

Только так можно обнаруживать ошибки. Если ты хочешь проверить какой-нибудь еще вариант поведения, для такого случая придется написать дополнительные тесты.

Сегодня мы написали новые тесты и обнаружили ошибки в коде, которые исправили; обновленное приложение мы выкатили на сервер и теперь надеемся, что ошибочных уведомлений о проверке слов и ошибочных слов на проверку больше не будет появляться (не должно).

Что мы не оттестировали (и поэтому не знаем, как будет себя вести система): если прослушать слова урока, проверить их первый раз (создастся уведомление на завтра на их повторение), дождаться завтра, получить это уведомление, перейти по ссылке в нем и открыть в карточках в режиме повторения, но вместо повторения затем открыть приложение «Мои слова» в другой вкладке и все эти слова, подогнанные сегодня на повторение, вычеркнуть, будут ли они таки предложены на повторение или нет. По идее, они должны исчезнуть из списка на проверку, но чтобы это поверить, нужны или сутки и эксперимент или нужно написать отддельные тесты на такой use case.

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

Мы надеемся, что теперь НАКОНЕЦ-ТО всё начнет работать, как надо.

А здесь — маленькая иллюстрация с пояснениями, как оно, как мы ожидаем, должно работать (long read).

Это фрагмент журнал ответов при проверке одного слова. Журнал заполняется снизу вверх: более старые записи размещены внизу. Поле grade — ответ: помню (1) или не помню (0). Такой персональный журнал ведется у каждого зарегистрированного пользователя. Разберем эти события.

57b4ccf4bca01466bb03e1581d8e8e61.png

  • 18 декабря. На первом круге слово не всплыло в памяти, ответ 0 — не помню. На следующем круге слово получило единичку и было назначено его повторение на другой день.
  • 19 декабря. Три круга: не помню, не помню, помню. Раз было хоть раз «не помню», всё сбрасывается, слово снова назначено назавтра. Карма у слова не айс.
  • 20 декабря. Помню. Отлично! Засчитывается, как второе повторение. Другой раз оно назначено через шесть дней.
  • 26 декабря. Третья итерация. Ответ: помню. Но карма плохая — интервал формируется не очень большой: 10 дней (при хорошем раскладе было бы недели три).
  • 05 января. Четвертая итерация. Помню. Карма улучшается. Следующее повторение через три недели.
  • 26 января. Пятая итерация. Помню. Voilà ! Слово считается выученным и больше на повторение не придет.

В реальной жизни всё было не так благополучно, потому что это всё происходило на «больной» еще системе. Мы просто после первых излечений вычистили «поганые» записи. И теперь — я очень на это надеюсь и скажу осторожно — всё должно работать правильно. Во всяком случае, тесты виртуальной реальности показали, что всё теперь тип-топ. :)

Одно небольшое замечание насчет числа слов в уведомлении. Оно обозначает только число НОВЫХ слов, которые прилетели сегодня. Если старые слова не проверялись, общее число слов для повторения может быть большим. Сегодня мы выложим апдейт, который в уведомлении будет писать и сколько новых слов прилетело, и сколько их всего. Такие уведомления начнут приходить с завтрашнего дня.

ILYA DUMOV: Блин, знаки зодиака идут без артикля, исправили напрасно, опять по ошибке. Снова здорова!! Нет, это никогда не кончится!!!

Тоже исправил.

ILYA DUMOV: Мы не смогли воспроизвести эту ситуацию

Что интересно, данная ситуация у меня вообще везде, даже на телефоне. Но, как я и говорил, ничего срочного с этим багом нет, слова я проверить все равно могу. А потом вы уже и новую версию приложения выкатите.

Илья, можете посмотреть мое расписание повторений слов? А то у меня похоже слова одного из первых уроков (очарованный, уставший, быть в форме и т.д.) подвисли. Они выходят при каждом повторении. Более того, если все слова повторить, перейти в режим изучения, а потом снова вернуться в режим повтора, они вылезут снова. Слова, которые выдаются по расписанию повторно не выходят, только этот один набор.

popov-ilya: Илья, можете посмотреть мое расписание повторений слов?

Вот повторения трех описанных слов.

4276baaff1d3177606fc8f14cd416bea.png

Время указано фактическое. То есть если назначенные на завтра слова прийти проверять не назавтра, а через день, то и дата будет не +1, а +2.

Разница между первым и вторым повторением здесь пять дней, а не шесть из-за наложения часового пояса и времени просмотра слов. Я поясню.

Мы ведеи учет всех событий в локальном времени пользователя. При каждом заходе на сайт мы запрашиваем его часовой пояс и храним это значение в персональном профиле (это не то, что вы указываете руками, мы вам не верим ;). Вы живете в поясе UTC+6, а серверное время UTC+0 (Гринвич). Когда Вы заходите проверять слова после полуночи до Ваших шести утра, для сервера это еще «вчера» (для него это время от 18:00 до полуночи) — так и было в те дни (я сдуру отрезал время, но это так).

Но эта табличка — половина дела и мало что нам скажет, если по факту Вы получали уведомления чаще и ходили проверять слова чаще. А ведь так и было! Это были ошибки, которые, как мы надеемся, мы исправили. Дело в том, что если слова повторить/проверить в день ДО даты «официального» следующего повторения, то есть до истечения установленного интервала (а из-за ошибки мы пускали проверять эти слова, хотя они не должны были быть доступны до назначенного дня), то результаты этой проверки не засчитывались, не учитывались и в журнале они не регистрировались (и это так и задумано).

Поэтому эти данные нам не помогут определить, исправлена ли ошибка или нет. Наши тесты говорят, что да. А как оно в жизни, можете сказать только Вы*. Если вчера и сегодня Вы продолжаете получать «левые» уведомления и к Вам по-прежнему прилетают бородатые слова на проверку, значит надо копать дальше.

* UPD: Заморочились и написали SQL-запрос, чтобы получить в читабельном виде историю назначенных повторений и историю уведомлений.

Вот назначения слов на повторение.

e2fbe0d55d9ab5e1d7804ac1ed4205aa.png

  • Галки стоят там, где повторения уже были. В скобках — ID слов, которые остались неповторенными. 18:00 — это серверное время, Ваша полночь.
  • Минусы — будущие повторения. списки слов будут повторяться по мере того, как будут назначаться новые повторения.
А вот история уведомлений.

f03c966838f039e6424f5c73cafbd1d2.png

Здесь дата и время — это когда они были сформированы и — в другом столбце — когда были просмотрены. Здесь видно, что 15-го числа было два уведомления. Это была ошибка — как раз одна из тех, что мы исправили позавчера.

В последней строчке другие данные для сообщения, потому что мы, кроме новых слов, что прилетели, стали писать еще и общее количество слов, доступных для повторения. Теперь будет видно, как растет их снежный ком, если слова не повторять вовремя.

Мы сформировали для Вас лог всех самопроверок/повторений. Это большой список, 670 строк, поэтому я отправил его в виде файла по почте. Судя по всему, Вы каждый новый день проходите по уроку и новые слова учите каждый день, поэтому спустя десять+ уроков повторения у Вас и напланированы почти на каждый день на две недели вперед.

Судя по всем этим данным, теперь всё наконец-то работает правильно.

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

История этого вопроса в том, что когда-то я захотел озвучить слова мужского рода мужским голом, а женского — женским. Я даже нашел, когда впервые высказался по этому поводу — это было восемь лет назад. Восемь! :).

Сказано — сделано. По нашей просьбе брат Арно озвучил для нас около 300 слов, а его жена — примерно столько же слов женским голосом. Слова начитывались по спискам с паузами между ними. А затем этот большой звуковой файл скармливался одной утилите — она проигрывала этот длинный файл и по паузам нарезала его, сохраняя звучание отдельных слов в разных файлах. Файлы именовались по порядку в соответствии со списком слов.

b7e54ff63787c364cc571b8746898035.png c619c628a9a06f96be6732ff12c2641e.png

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

Это было в 13-м году. Никто тогда этого не заметил, поскольку тогда мы так и не доделали эту работу. А нынче о том, что надо переслушать все 300+ файлов, никто и не подумал. Иных уж нет, а те далече… В итоге мы получили в словаре ~50 слов/карточек, которые назывались эдак, а звучали в них другие слова.

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

12d90a0bfa14a7afb4990b18f412ac52.png

Но какие-то недобитые косяки где-то еще вылезают (когда при такой нарезке большого файла на куски происходит сдвиг, слова на стыках, как правило, выпадают. Или затираются при неаккуратных переименованиях.

Каждый раз я надеюсь, что эта работа — ну всё уже, сколько уже можно ловить этих блох! И сейчас надеюсь, что теперь — всё. ;) Но если ваше бдительное ухо что-то уловит — не молчите! :)

Словарик, который лежит в основе наших карточек, это те словарики с уроков, которые были сведены в один раскрашенный словарь — его не самая последняя версия (без разбивки на уроки и без множества наших последних коллективных правок и последующих исправлений) лежит себе полеживает в самых первых вступительных уроках в разделе Библиотека.

Слова туда в бытность свою учеником я заносил из конспектов. Какие-то слова забывались, я записывал их по-новой, и так они появлялись в словаре повторно. Повторно — ключевое слово, о котором пойдет здесь сегодня речь.

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

99375037857ffcfb8395b46c759e577c.png

Таких посторяющихся слов в словарике — практически каждое седьмое. Всего в словаре около 4,000 записей (карточек). А слов в них — 3,300. То есть 700 записей — это дубликаты.

26fe9ba7e599c577a0c3b7167a72ecb6.png 963f67af3e9a51fb54438aca079f04dc.png

Мы решили не выбрасывать эти дубликаты, а оставить их в карточках. Резоны есть! Раз они забылись когда-то, видимо, они стоят того, чтобы встретиться повторно. Они упоминались на уроке, возможно, в каком-то контексте, и имеет смысл с этим словом встретиться еще раз в карточках, чтобы эту ассоциацию закрепить. Кроме того, может так случиться, что кто-то начнет пользоваться карточками не с самого начала, и ему в своей прошлой реинкарнации это слово не встречалось — так пусть же он начнет его запоминать с этого момента. При этом, естественно, что каждый раз, встречая уже встреченное в прошлом слово, мы не должны начинать еще одну параллельную ветку повторений — повторения запускаются только тогда, когда слово встретилось в самый первый раз.

Слова-дубликаты часто повторялись в измененном написании и с измененным переводом (как попали в конспект — так попали и в словарик, а оттуда — в карточки). Мы объединили все такие слова-дубликаты в группы и описали их дважды: с унифицированным французским вариантом и его переводом — и с «каким был» французским словом и «каким был» переводом (как оно было записано в конспектебыло в конспекте). Предполагается, что в будущем пользователь сможет выбирать, какой вариант он будет видеть и слушать в карточках — унифицированный, где все дубликаты абсолютно одинаковы, или как оно исторически в конспектах сложилось.

bc9e369e8e1167aa8dee1ae9ec0ae94a.png

Иногда эти вариации незначитеьные, а иногда — весьма себе.

Бывают слова, которые сперва встречаются в одном своем значении, а затем в какой-нибудь словарной теме — в каком-нибудь специфическом другом. Наглядный пример — глагол essayer.

49429fec50f679deb645091bbec110d4.png

На более ранних уроках он встречается в значении «стараться», «пытаться», «пробовать», а на уроке, когда проходится словарная тема покупок в магазине одежды, мы его узнаем в значении «примерять одежду» (и даже слово примерочная будет по-французски la cabine d’essayage).

Или вот пример с глаголом arriver.

4f0cf272c123f47bdb15f3f192ffa6ea.png

Таким образом, такие слова группировались не только в одну группу, но и формировали в ней подгруппы — по разнящимся значениям. Например, глагол passer встречается трижды — и каждый раз в новом значении.

e72cf9d014661f63078a8e3514eba741.png

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

Такова кухня. Я лишь могу добавить, что и структура словаря, и алгоритмы в карточках — как бы это ни казалось со стороны — весьма изощрены. Поэтому — увы! — мы в них насажали ошибок, которые отлавливаются очень непросто. Так получилось, что на живых людях. И пострадали как раз те, кто очень, ну очень интенсивно пользовались карточками. К счастью, Илья Попов в живом общении с Антоном помог нам разобраться и найти источник ошибок и «левых» повторений. Мы исправили баги и почистили очередь повторений и уведомлений. Реально пострадало несколько человек — извините нас за эти неудобства, ребята! Наш перфекционизм оборачивается хлопотами и для вас, и для нас.

Я подозреваю, что это был последний жирный камень в наш огород. Мы потратили на отлов и исправление этих ошибок столько сил и времени, что, я думаю, мы теперь весь наш новый код будем покрывать тестами. Это старая истина. Но поскольку мы самоучки, то учимся на своих граблях.

Рад был помочь, ведь в том числе и для себя старался). Но вообще, приятно внести свой вклад, пусть и небольшой.

popov-ilya: Еще возник такой вопрос. Мне исправно приходят уведомления о появлении новых слов для повторения. Но когда я тыкаю Перейдите по ссылке, на открывающейся странице нет ничего кроме верхнего и нижнего меню.

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

 
Зарегистрируйтесь или войдите чтобы оставить сообщение.