https://www.duolingo.com/FieryCat

Отключение новой функциональности "Короны"

FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

(или как правильно снять корону, если у вас болит голова)

К сожалению, этот метод больше не работает.

Разработчики передают нам пламенный привет:


Привет всем!

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

Мне эту функциональность так и не включили пока, но, будучи человеком немного любопытным, я с грустью и сожалением решил отложить срочные дела и посмотреть на это чудо. В первую очередь я полез в Java Script код, который загрузил мой браузер с сервера duolingo. Некоторое время спустя я обнаружил любопытную строчку:

Я не буду утомлять вас деталями, так что сразу перейдем к делу:

Сперва я должен вас спросить: вы действительно этого хотите? Да? Тогда вперед!

  1. Перейдите на любую страницу дискуссий (эта страница подойдет), откройте консоль браузера (на разных браузерах надо нажать F12 или Ctrl+Shift+K).
  2. Введите или скопируйте в консоль эту команду, если вы хотите отключить эту функциональность и не забудьте нажать Enter: $.ajax("https://www.duolingo.com/2017-06-30/users/"+duo.user.id+"/optional-features/levels_opt_in_v1", {type:"PATCH", data:'{"status":"OFF"}'}); или эту команду, если вы хотите вернуть Короны обратно: $.ajax("https://www.duolingo.com/2017-06-30/users/"+duo.user.id+"/optional-features/levels_opt_in_v1", {type:"PATCH", data:'{"status":"AVAILABLE"}'});
  3. Обновить страницу браузера.
  4. Наслаждайтесь!

Скорее всего этот способ перестанет работать, как только всех переведут на Короны или до того момента, когда этот пост или его копию на английском прочтут админы дуолинго :)

Updated: Упростил инструкцию. Теперь нет необходимости выяснять свой account ID. Cпасибо Dmitriy_K за подсказку.

tags: {@fc=_t_fierycat _t_crowns}crowns

6 месяцев назад

57 комментариев


https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

К сожалению, этот метод больше не работает :( Ровно две недели им потребовалось, чтобы среагировать.

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Вчера я закопался немного глубже и выяснил, что эта опция жестко связана с A/B тестом, который называется learning_levels_opt_in_v1. Если тест отключен, то включить опцию для аккаунтов, у которых она изначально никогда не была включена, не получится. Это ограничение можно обойти, использовав специально для этого написанный скрипт, но у меня нет для этого времени. Тем более, наверняка эту опцию скоро включат всем.

6 месяцев назад

https://www.duolingo.com/KostyanZp

Спасибо большое! Все вернулось как было. А то этот интерфейс с коронами демотивирует чуть более чем полностью.

6 месяцев назад

https://www.duolingo.com/Zamkevich

Немного экспериментов: Имеем: Короны включены на аккаунте. Везде (в веб приложении и в android) показывает короны. • Выключил короны — везде показывает уровень. • Включил короны — в веб приложении ничего не поменялось, в android опять висит попап с предложением перейти на короны. • Принял предложение о переходе на короны в android — везде опять короны.

Так что способ работает глобально, но вернуть обратно без веб приложения не получится.

И ещё, прежде чем возвращать уровни прочитайте как работают короны: https://www.duolingo.com/comment/26655019

Кратко: короны —это новая фича, которая усложняет упражнения в навыке, с каждым разом делая повторения эффективнее.

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

Команду успешно приняло: $.ajax("https://www.duolingo.com/2017-06-30/users/210001235/optional-features/levels_opt_in_v1", {type:"PATCH", data:'{"status":"OFF"}'}); {readyState: 1, setRequestHeader: ƒ, getAllResponseHeaders: ƒ, getResponseHeader: ƒ, overrideMimeType: ƒ, …} Но короны так и не исчезли...

Буду признателен за любые советы, как выключить короны. Для информации: на старых мобильных версиях (например на версии 4.5.9 для IOS) даже мой "коронованный" аккаунт работает без корон. Но не хотелось бы постоянно пользоваться устаревшей версией.

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Только что проверил на тестовом аккаунте, скопировав вашу строчку и поменяв id на свой. У меня все отключилось. Ваш id я тоже проверил - корректный. И наличие optional feature с таким именем проверил - есть. Мало того, показывает, что она у вас отключена. Т.е. корон у вас не должно быть! Или вы не выполнили пункт 3 или что-то странное творится с вашим аккаунтом.

И да, надеюсь вы делали это под своим, зарегистрированным на сайте в тот момент пользователем?

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

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

Спасибо за ответ! Все выполнил, как Вы описали:

Введено в консоль: $.ajax("https://www.duolingo.com/2017-06-30/users/210001235/optional-features/levels_opt_in_v1", {type:"PATCH", data:'{"status":"OFF"}'});

Полученный ответ: functions: proto: readyState: 1

Если в ответе все развернуть и скопировать - получится очень много текста... Во вкладке Debugger - еще больше текста. Страницу обновлял, все делал будучи залогиненным в Duolingo под своим аккаунтом... Могу предоставить любые детали, если это может помочь...

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Создайте новый аккаунт, подтвердите использование корон, закрыв всплывающий блок, если появится. Проверьте, что они активировались. Попытайтесь их отключить по этой инструкции (не забудьте подставить id нового аккаунта). Если не удалось, значит вы делаете что-то не так. Если получилось, значит у вас что-то с аккаунтом. Такое бывает (на английском форуме тоже есть пример). Общаться здесь не вижу смысла, т.к. причин может быть множество. Все равно скоро халява закончится.

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

Вот использованная мною команда с нового аккаунта и ответ сервера (короны не исчезли...): $.ajax("https://www.duolingo.com/2017-06-30/users/375762011/optional-features/levels_opt_in_v1", {type:"PATCH", data:'{"status":"OFF"}'}); {readyState: 1, setRequestHeader: ƒ, getAllResponseHeaders: ƒ, getResponseHeader: ƒ, overrideMimeType: ƒ, …}abort: ƒ (t)always: ƒ ()complete: ƒ ()done: ƒ ()error: ƒ ()fail: ƒ ()getAllResponseHeaders: ƒ ()getResponseHeader: ƒ (t)isRejected: ƒ ()arguments: nullcaller: nulllength: 0name: "fired"prototype: {constructor: ƒ}proto: ƒ ()[[FunctionLocation]]: de56a735165f25c350e1-vendor.js:2[[Scopes]]: Scopes[5]isResolved: ƒ ()overrideMimeType: ƒ (t)pipe: ƒ (t,e,n)progress: ƒ ()promise: ƒ (t)readyState: 4responseText: "{}"setRequestHeader: ƒ (t,e)state: ƒ ()status: 200statusCode: ƒ (t)statusText: "OK"success: ƒ ()then: ƒ (t,e,n)proto: Object

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Сколько раз вам говорить: здесь нет ответа сервера! Я вижу только вашу команду и дамп объекта запроса, который выдал вам браузер. Все это - функции для управления объектом JS, о чем вам намекает символ "ƒ". Очевидно вы что-то делаете не так или лавочку уже прикрыли. Попробуйте сменить браузер. На всякий случай показываю картинку:

Один раз подчеркнул сам запрос (я исказил его намеренно), два раза - код ответа сервера (200), три раза - где я вижу ответ сервера и еще обвел сам ответ. Не получается? Ну значит не судьба и не надо тут разводить флуд. Мне совсем не хочется заниматься ничьим IT образованием, да и ветка совсем не о том.

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

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

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Во втором случае по крайней мере виден код ошибки - 442, очевидный. А результат первого запроса вы вообще вырезали. То что я вам показывал, это было на браузере FireFox, встроенная консоль. Если не видно здесь, то ищите вкладку "Сеть" или что-то подобное. Не надо сюда складывать картинки, доказывающие наличие ваших неудач. Я впредь не буду на них реагировать. Найдите такой же текст, как тот, что я обвел на скриншоте, и ищите то же место для нормального запроса. Если код ответа у нормального запроса 200, а в ответе пусто или только две фигурные скобки, тогда тоже можно не писать - вам не повезло и я ничем вам помочь не могу.

p.s. И откройте для себя, наконец, ссылку для редактирования комментария: мне от вас около 10 сообщений пришло на почту и, полагаю, другим участникам обсуждения тоже.

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

К сожалению, Вы правы. Ответ с кодом 200 содержит лишь фигурные скобки (см. скриншот). Не могу понять, почему при этом у кого-то получается... В любом случае - спасибо за попытку помочь!

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Вы не единственный, у кого не получилось. В комментариях английской копии поста есть один пример с глючным аккаунтом. У него тоже "все плохо". Хотя очень странно, что с новым аккаунтом все ровно тоже самое.

Еще раз проверьте, что:

  • Вы зарегистрированы под тем аккаунтом, который "патчите".
  • Вы подставляете id именно того аккаунта, под которым сейчас зарегистрированы.
  • У вас не блокируются cookie никакими расширениями или плагинами. Рекомендую временно все отключить. Может и антивирус? Они последнее время стали слишком самовольными.
  • Вы находитесь на форуме.

У меня больше нет идей, почему у вас это не работает. Ну разве что попробуйте пропатчить новый и старый аккаунт на другом компе и с другого IP адреса (VPN, TOR), вдруг у них глючит один из серверов, с которым вам "повезло" общаться.

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

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

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

И последнее, вдруг поможет. Поскольку мне не виден ваш набор A/B тестов, то предположу, что ваш, который отвечает за короны, застрял на половине пути. Запустите на своем аккаунте (консоль, страница форума) это: $.post("https://www.duolingo.com/api/1/experiments/learning_levels_opt_in_v1/treatments", '{"contexts":[]}');

Я проверил это на запасном аккаунте, оно на вид безопасно, просто пнет уже включенный тест в нужное направление. Вдруг поможет. Код там будет или 200 или 201. Нет, так и нет.

Патчить заново нет необходимости - у вас и так пропатчено, как я вижу. Просто не работает.

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Пожалуйста. Жаль, что не смог вам помочь. Скорее всего у вас есть какой-то набор глючных тестов, такое бывало и выплывает в разных местах. У кого-то курсы подвисают, у кого-то проблемы с дискуссиями, а у кого-то не работает изменение некоторых опций аккаунта. Но обычно оно проявляется еще в чем-то. Найдите другую проблему, которой нет у других и напишите в поддержку. Вдруг?

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

Большое спасибо! К сожалению, не сработало.

Команда: $.post("https://www.duolingo.com/api/1/experiments/learning_levels_opt_in_v1/treatments", '{"contexts":[]}');

Ответ сервера: {"contexts":[],"treated":true,"destiny":"experiment","condition":"experiment","eligible":true}

6 месяцев назад

https://www.duolingo.com/EvgeniyChe3
EvgeniyChe3
  • 20
  • 14
  • 5
  • 3
  • 245

Ну, так в ответе он и показал, что контекст пустой. И что сам эксперимент разрешён (eligible = true) и включен (treated = true). Впрочем у меня выдаёт такой же ответ, а корон как не было, так и нет. И в других экспериментах, где есть контекст, он не стирается этой командой...

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

EvgeniyChe3:

И что сам эксперимент разрешён (eligible = true) и включен (treated = true).

Не этим определяется включение/отключение теста.

Впрочем у меня выдаёт такой же ответ, а корон как не было, так и нет.

Их и не будет. Читайте мой комментарий вверху: https://www.duolingo.com/comment/26678184$comment_id=26687901

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

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Кстати, как вариант можете попробовать другой мой метод: https://www.duolingo.com/comment/22949356. Он немного неудобен, но лучше чем ничего. Если вы добавите ту строчку в один из скриптов, то будет немного удобнее.

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

Большое спасибо за https://www.duolingo.com/comment/22949356 - работает на ПК отлично.

Но Дуолинго решило меня сегодня добить: было у меня около 100 корон и все дерево золотое (в некоронованной версии). Сегодня вечером захожу - у меня менее 50 корон и почти все дерево без золота (в некоронованной версии)... Мне "повезло" быть включенным в группу тестеров нового дерева... https://www.duolingo.com/comment/26726755

6 месяцев назад

https://www.duolingo.com/zheniok-2007
zheniok-2007
  • 25
  • 13
  • 12
  • 9
  • 4
  • 230

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

6 месяцев назад

https://www.duolingo.com/EvgeniyChe3
EvgeniyChe3
  • 20
  • 14
  • 5
  • 3
  • 245

У меня не сработало включение. Впрочем, по правде говоря, включая эту опцию в приложении (предварительно его декомпилировав) я получил тот же результат, т.е. никакой. Видимо, меня принципиально не хотят переводить на короны (я в группе бета-тестеров нового испанского дерева).

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

По сути, этот пост об отключение функции и о том, как вернуть "назад". На аккаунте с изначально не включенной опцией я не проверял. Возможно там придется поменять PATCH на PUT. Может вечером проверю.

И вообще, есть шанс, что скоро переведут всех. Я, например, тоже не на коронах, а эти эксперименты делал на отдельном аккаунте.

6 месяцев назад

https://www.duolingo.com/EvgeniyChe3
EvgeniyChe3
  • 20
  • 14
  • 5
  • 3
  • 245

Я в самом приложении включал эту опцию, мне даже менюшка при запуске выскочила, как у многих сейчас, мол: "Переключить на короны, или позже"? Но результат нулевой. На новом (экспериментальном) аккаунте короны были изначально ещё месяц назад (причём на том же аккаунте на айпаде корон не было, зато было здоровье и голубые кристалы!))). А хочется же на основном! Ладно, в любом случае спасибо за наводку, буду копать дальше!)

6 месяцев назад

https://www.duolingo.com/EvgeniyChe3
EvgeniyChe3
  • 20
  • 14
  • 5
  • 3
  • 245

с PUT сразу выдаёт ошибку 404 (Not Found)...

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Значит надо запрос поменять. В любом случае надо. Что нибудь типа {"id":"levels_opt_in_v1", "status":"OFF"} ну убрать этот id из урла.

Вообще, надо внимательно это делать, учитывать наличие других optional-features.

6 месяцев назад

https://www.duolingo.com/DuoEng_

Error 404

6 месяцев назад

https://www.duolingo.com/vaneyev

У меня тоже включение корон не сработало.

6 месяцев назад

https://www.duolingo.com/elf_601

Всем привет. что самое интересное, на Android и iOS уже все приложения с коронами, сайт тоже. Но приложение для Windows еще с индикаторами. зашел везде под своей учетной записью, и получается такая картина, что с ПК - у меня индикаторы, а на андроиде и iOS - короны. Насколько понял из обсуждений, рекомендуют заниматься именно с индикаторами)

6 месяцев назад

https://www.duolingo.com/Chico_Rico
Chico_Rico
  • 17
  • 11
  • 181

А как было раньше , до "корон" ? Я тут недавно, было хуже или лучше ?

6 месяцев назад

https://www.duolingo.com/DuoEng_

Лучше.

6 месяцев назад

https://www.duolingo.com/pKRD4

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

6 месяцев назад

https://www.duolingo.com/pKRD4

У меня выдает: Uncaught TypeError: $.ajax is not a function VM1177:1 at <anonymous>:1:3 Не знаете в чем может быть проблема?

Ввожу: $.ajax("https://www.duolingo.com/2017-06-30/users/123779977/optional-features/levels_opt_in_v1", {type:"PATCH", data:'{"status":"OFF"}'});

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Скорее всего пытались выполнить команду не на странице форума.

6 месяцев назад

https://www.duolingo.com/pKRD4

Попробовал на странице форума все сработало, на телефоне тоже автоматом отключилось. Спасибо.

Заодно отключил автообновления на Play market.

6 месяцев назад

https://www.duolingo.com/Dmitriy_K
Dmitriy_K
  • 15
  • 14
  • 5
  • 3

Вместо XXXXX можно было сканкатенировать значение из duo.user.id
К сожалению, у меня скрипт не отработал и короны не появились - придется и дальше мучатся с индикаторами :(

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Ах да. Спасибо. Я уже и забыл, что на форуме все еще работает duo.user.id в отличии от главной страницы.

6 месяцев назад

https://www.duolingo.com/ElenaZDOROVTSEVA
ElenaZDOROVTSEVA
  • 13
  • 13
  • 12
  • 11
  • 9
  • 9
  • 7
  • 6
  • 5
  • 5
  • 506

к сожалению, у меня отключение не сработало.

6 месяцев назад

https://www.duolingo.com/Anna51383

FieryCat какой у тебя адрес електроной почты ?

6 месяцев назад

https://www.duolingo.com/DuoEng_

Зачем вам?

6 месяцев назад

https://www.duolingo.com/Anna51383

Я ХОЧУ ПРИГЛАСИТЬ ЕГО ПО ПОЧТЕ

6 месяцев назад

https://www.duolingo.com/Homic

Я не хочу наблюдать за этой темой. Завалили мусором почту.

6 месяцев назад

https://www.duolingo.com/DuoEng_

А как отключить в мобильной версии?

6 месяцев назад

https://www.duolingo.com/EvgeniyChe3
EvgeniyChe3
  • 20
  • 14
  • 5
  • 3
  • 245

Так же. Эта "опциональная фича" действует на весь аккаунт.

6 месяцев назад

https://www.duolingo.com/DuoEng_

В приложении нет консоли браузера!!! Разве не понятно?!

6 месяцев назад

https://www.duolingo.com/EvgeniyChe3
EvgeniyChe3
  • 20
  • 14
  • 5
  • 3
  • 245

Господе, за что? Когда ты включаешь эту фичу в консоли браузера, она включается для всего аккаунта. И когда потом ты заходишь в приложение, эта фича уже включена! ¿Comprendes?

6 месяцев назад

https://www.duolingo.com/Igor_Ch.

У меня компьютерная версия и мобильная автономны. Из общего только баллы. Линготы, например, по отдельности начисляются и разным курсом. Даже некоторые покупки различаются. Заморозку, например, можно купить и она появится в обеих версиях, а ставку "вдвойне или ничего" приходится в каждой версии покупать отдельно. Когда в комп. версии перешел на короны - мобильная как была так и осталась, т.к. это отдельное приложение, которое можно обновить только вручную. Позже я так и сделал.

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

На нее по очереди переводят или вообще свернули это дело?

Это их обычная практика, переводят поэтапно. Обычно начинают с более молодых аккаунтов, постепенно переводя всех.

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Если вы на своем браузере будете использовать старую версию API, как необновленное приложение, то у вас тоже будут две "автономные" web версии. Да, существуют так называемые A/B тесты только для web и только для приложения, но обсуждаемый нами тест общий в пределах одного аккаунта.

6 месяцев назад

https://www.duolingo.com/Igor_Ch.

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

6 месяцев назад

https://www.duolingo.com/DuoEng_

Приложение не из браузера! Из Гугл Плей! Хватит чушь писать! Если написать в браузере, то для ПРИЛОЖЕНИЯ ИЗ ГУГЛ ПЛЕЙ БРАУЗЕР НЕ ДЕЙСТВУЕТ!

6 месяцев назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1357

Не надо писать о том, о чем не имеете абсолютно никакого представления.

6 месяцев назад

https://www.duolingo.com/EvgeniyChe3
EvgeniyChe3
  • 20
  • 14
  • 5
  • 3
  • 245

Я ответил, всё, что мог. Если до тебя до сих пор не доходит смысл моих слов выше, то мне жаль, но чушь пишу явно не я...

6 месяцев назад

https://www.duolingo.com/DuoEng_

Ммммммммм... Вы случайно не из милиции?

6 месяцев назад
Изучайте язык всего по 5 минут день. Абсолютно бесплатно.

Изучайте язык всего по 5 минут день. Абсолютно бесплатно.