Всем привет!
1. Для авторизованных пользователей добавил размытие на текст, если урок еще не был начат.
Чтобы размытие исчезло, требуется нажать кнопку "Приступить к выполнению".
Смысл этого в том, чтобы более четко учитывать затраченное на выполнение время. Ведь время на выполнение фиксируется и его можно видеть в том числе на странице Таймеры. И хотя пока что информация не очень наглядная, все же, когда интерфейсы улучшатся, лучше, чтобы данные сразу были корректны. До этого же было так, что пользователь сначала вчитывался в задание, осмысливал его, и только потом жал кнопку "Приступить к выполнению" (а таймер стартует именно в этот момент). И не редко получалось, что на чтение уходит минута-две, а на выполнение буквально пара секунд. Сейчас эта логическая проблема решена и я вижу, что в таймерах пошли реальные цифры.
2. Добавлен блок "Чужие решения".
Вот с этим функционалом, может, кто-то будет и не согласен, но я все же считаю, что он полезен. Сейчас объясню. Бывают задачи простые и достаточно прочитать вводную теоритическую часть и спокойно самостоятельно выполнить. А бывают задачи сложные и очень сложные. Даже я видел задачу, решения которой не знаю (но не уделил внимания на поиск решения). Вот когда мы сталкиваемся со сложными решениями, мы вынуждены идти на просторы интернета и искать решение (хотя может и на оригинальном freecodecamp решение есть, ссылка на их страницу есть по кнопке Помощь). Так или иначе, на решение может уйти много времени. Сейчас же можно кликнуть любую из кнопок с именем исполнителя, и будет подставлен код их решения. И тут у вас есть возможность проанализировать чужое решение и попытаться его понять. А далее вы можете или отправить это решение как свое, или нажать кнопку "Восстановить код" и попробовать все же написать решение самостоятельно. Так или иначе, из этого можно вытащить для себя новые знания. У нас здесь не средняя школа, где каждый использовал бы для себя такой функционал чтобы бездумно получить пятерку. Здесь каждый учится для себя. Так что не думаю, что всякий будет этим злоупотреблять. А вот помочь в освоении материала, как мне кажется, это должно помочь.
К слову, у нас есть здесь несколько пользователей, которые прошли практически весь базовый материал по HTML/CSS и Javascript. На самом деле это очень большой объем и выражаю свое почтение этим людям! Но что меня удивляет? Практически нет никакого общения. Ни вопросов, ни предложений. Тем не менее, через общение идет очень большой объем по обмену опытом. Во многих задачах не раскрывается множества интересных тонкостей. К примеру, вот задача: Увеличение номера с помощью JavaScript. Решается она легко
И, наверно, всем понятно интуитивно, что в результате myVar будет равно 88. А всякий ли сразу ответит на вопрос, будет ли здесь истина или ложь? И главное: почему?
А вот так?
Да, ++ можно ставить и в начале переменной :) И это другой оператор и результат его применения несколько отличается от ++ после переменной. Я своей вчера полчаса все это показывал и рассказывал на различных примерах вплоть до такого:
Да, эта бессмыслица тоже имеет смысл, доказывающая, что при сравнении обе сравниваемые части вычисляются последовательно в отдельности, а не одновременно. Суть этого утверждения можете понять, выполнив и проанализировав вот этот пример (но только, если вы четко поняли в чем разница между ++myVar и myVar++). Напоминаю, что это можно сделать прям в браузере в DevTools. Открывается, как правило, клавишей F12:
Все это, вроде, мелочи, но именно понимание таких мелочей и определяет ваш уровень как программиста. Всегда есть задачи, когда не получается просто взять чужое готовое решение и использовать для себя. Иногда приходится и самому писать. И здесь от вас будет требоваться знание различных тонкостей. Те же плюсики часто используются в циклах и, в зависимости от того, какие вы плюсики используете в момент сравнения, может зависеть полученный в цикле результат. Живой пример:
В общем, не стесняйтесь, общайтесь. Задавайте вопросы, делитесь мнением. Можно и просто отдельные топики писать, а можно и прям в задаче во вкладке "Обсудить". И в новостях тоже комментарии пишите чего хотелось бы, что не устраивает и т.п.
Всем привет!
Давно не было никаких новостей, но это не значит, что ничего не делалось:) На самом деле сайт уже неделю как обновлен, а про грядущее обновление я писал 11 дней назад в одном из комментариев. И хотя наверняка мало кто заметил какие-либо изменения в работе сайта, архитектурно проект сильно изменился, а именно: полностью переписан бэк сайта. То есть, как я и писал в комментарии, до этого момента фронт сайта работал сам по себе, взаимодействуя со старым АПИ-сервером посредство Ajax-запросов, но все-таки никак не был связан с ним. То есть если вы до этого скачивали и разворачивали у себя локально проект из гитхаба, то вам надо было или отдельно запускать старый бэк, или указывать в качестве АПИ-сервера наш боевой. Сейчас же проект в себе содержит и фронт, и бэк, то есть по сути это проект под ключ. Если у вас локально установлены MySQL и node-js, вы можете запустить этот проект у себя локально без установки чего-либо дополнительно.
Вообще, те, кто давно здесь зарегистрирован и боле менее следит за новостями, помнят, что здесь на сайте полное обновление технологий происходило совсем не один раз. Так вот, в этот раз процесс обновления прошел в самом приятном режиме. Дело в том, что в прошлом году я переписал фронт на новые технологии, где главное нововведение было - использование TypeScript. Тогда я еще написал статью Как переписать 400 000 строк кода и почти ничего не сломать. И хотя бОльшая часть этого кода - сгенерированная, все же это используемый проектом код и возвникновение ошибок где-либо может повлиять на работу всего проекта. Напомню, что это всего-лишь фронт, здесь еще не было бэка:)
В этот же раз задача стояла в том, чтобы написать новый бэк с нуля. Так в чем же заключается приятность? А заключается она в том, что фронт-то у нас уже на новых технологиях и весь в типизации. То есть в прошлый раз не было типизации нигде (ни на фронте, ни на бэке). Мне пришлось фронт перелопатить полностью, прописывая типы и т.п., то есть пришлось полностью вникать в весь код проекта вообще. Главный же механизм проверки соответствия фронта бэку заключался в том, что скриптом вытягивалась схема из GraphQL-сервера, код-генератором генерились все АПИ-типы для фронта и TypeScript проверял все связи. И вот сейчас, когда встала задача написать бэк с нуля, у нас уже есть фронт, в котором типизация прописана. То есть логично, что переключив фронт на новую схему, я получил кучу ошибок.
Для начала, кодеген просто не мог сгенерировать типы, потому что во фронтовых GraphQL-запросах было прописано то, чего АПИ-сервер нам не давал. К примеру, вот здесь кодеген говорит, кто в объекте Query нет такого поля как usersConnection. Поэтому у нас папка src/modules/gql/generated была практически пустая, а из нее практически все фронтовые запросы берутся.
То есть на этом начальном этапе достаточно было на бэке прописать правильную схему, пусть даже и без резолверов и возрата реальных данных, но хотя бы бэк стал соответствовать потребностям фронта и там смогли бы сгенерироваться типы для запросов.
После того, как с АПИ-схемой разобрались, можно было уже перейти и к возникшим ошибкам внутри самих компонентов.
А когда все ошибки типизации были исправлены, оставалось только дописать рабочие резолверы, чтобы работать с реальными данными. И хотя я не все еще резолверы написал (и где-то вы можете получить ошибку "Not implemented", что будет сообщать о том, что данный запрос не реализован еще), все-таки весь самый важный функционал я реализовал.
Может все это и выглядит очень сумбурно и страшно, все-таки как по мне, вот в таком формате гораздо проще работать: то есть когда есть средства, проверяющие простую техническую часть вашего кода.
Ну а бонусом будет то, что теперь различные фишки будут внедряться гораздо активней, и будет больше простых задач по этому проекту, с которыми можно будет попрактиковаться обучающимся программистам:)
Просто так перенести не получится, точнее не имеет смысл, потому что если просто инклюдить из server/index.ts, то все равно результат будет тот же. Вариантов решения два:
1. Переписать на чистые запросы ctx.prisma, а не на фронтовых хуках.
2. Перенести во фронт и там прописать некст-страницы с отдачей файлов типа XML, а в server/index.ts проксировать запросы на фронт.
Папки эти никак не связаны. Это разные проекты. Просто pivkarta.ru - это https://pivkarta.ru (и сам сайт, и его АПИ), а pivkarta.ru-2 - это твой локальный пэт-проект, который жанные по АПИ тянет с https://pivkarta.ru-2
Так я вообще не очень понимаю, как связаны папки pivkarta.ru и pivkarta.ru-2.
Можешь намекнуть, куда копаться?
Понял. Изучаю пристально pivkarta.ru