FreeCode.Academy

Стратегии обучения

Уроки

Технологии

Участники

Проекты

Топики

Блоги

Офис

О проекте

Николай Ланец
Николай Ланец
Как правильно поступать, если не смогли самостоятельно выполнить задачу
Скорее всего сразу после нового года. Там он довольно объемный, не получится частями выпускать.
Попов Дмитрий
Попов Дмитрий
Как правильно поступать, если не смогли самостоятельно выполнить задачу
Николай, когда планируется к появлению новый функционал?
Николай Ланец
Николай Ланец
Всем привет!

Тут в личку получил следующий вопрос (цитирую с разрешения):

>> Николай привет! Слушай, такой вопрос назрел, что более верно для обучения на настоящий момент:
>> - при сложной задаче, решать её до конца, несмотря на затраченное время используя интернет источники в виде справочной информации (не решения конкретной задачи)
>> - при сложной задаче, если не получается с ходу, посмотреть решения других и повторить

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

Отвечаю подробно (и топиком, так как эта информация будет полезна многим).

Цель обучения - получение знаний. При этом надо держать баланс между качеством и объемом полученных знаний и затраченным на это временем. Правильно в подобных случаях делать так:

Если попробовали все варианты, которые пришли на ум вам сразу и не получилось с ходу решить задание (то есть явно уперлись в незнание), то имеет смысл посмотреть чужие решения. Для этого данный функционал и был реализован. При чем посмотрите решения разных пользователей, они могут отличаться. Тем более смотрите мои решения, если они есть, так как я всегда стараюсь сделать не так, как все делают (это справедливо для раздела JS, так как в HTML и CSS нет особой логики, там шипко не поиграешься).

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

И не обманывайтесь. Не думайте, что если вы таким образом проигрываете задачам (не можете сами решить отдельно), то ценность ваша ничтожна. В наше время это совсем не так. В наше время важно, чтобы вы понимали в общих чертах как можно больше, и при необходимости (при решении конкретной задачи) могли быстро найти нужное решение. Потому что большинство всего, что вы будете делать (если говорить об уровне джун/мидл) уже сделано за вас. Почти все ответы есть на stackoverflow.com, почти все исходные коды есть на github.com, и почти все готовые компоненты есть на npmjs.com, и даже целые готовые системы есть на hub.docker.com. Так что не думайте, что кто-то от вас будет ждать того, что вы будете все писать сами. А если какой-то работодатель от вас такое будет ждать, то к нему точно не стоит идти :) Вот синьоры, да - они часто будут сталкиваться с нетривиальными задачами (и мне часто приходится сталкиваться). Но в каждом проекте есть куча рутины, которая делается довольно легко и ее надо делать. Для этого и привлекаются джуны/мидлы. И если вы умеете писать свой код, но не знаете широкого спектра современных готовых решений, то ценность в вас не велика. Можете быть со мной не согласны и поставить в пример кучу других работодателей. И может будете правы и просить от них оффер. Но у меня есть сейчас проекты и работодатели, в которые я могу пригласить начинающих специалистов, но требования будут такие, какие я говорю. И соответственно весь процесс обучения я выстраиваю под это.

Довольно скоро на сайте появится новый функционал, который каждому заинтересованному в стажировке (в том числе и оплачиваемой), даст возможность заявить о себе. Но в этом функционале очень многое будет завязано на собираемой учебной статистике (то есть все то, что фиксируется, когда вы выполняете задачи). Вот там предпочтение будет отдаваться тем, у кого больше решений, больший срок обучения. Просто копипастить и отмечаться на чужих решениях мало толку даст (все равно будут тестовые задания и на них надо будет показывать знания), но и месяц проходить 30 уроков - тоже результат будет крайне малый, так как объем необходимых знаний, пусть и поверхностных, огромный.

Николай Ланец
Николай Ланец
Обсуждение задания "Title Case a Sentence"
Для вставки кода в редактор есть специальная кнопочка (я так понял вы ей воспользовались в другом топике).
В вашем же случае ошибка вот в чем была:
out += arr[i].slice(1, arr[i].length).toLowerCase() + " ";
Здесь вы добавляете каждый раз пробел в конце строки после каждого элемента исходной строки. Но вы не учли последний элемент (после которого не надо пробел вставлять). В итоге у вас были правильные ответы плюс лишний пробел в конче строки. Это видно здесь:

Вам здесь следовало проверку счетчика добавить, например так:
out += arr[i].slice(1, arr[i].length).toLowerCase() + (i + 1 < arr.length ? " " : "");
Но я бы и вовсе набивал все в массив и потом просто объединил все пробелами. Например, так:
function titleCase(str) { let arr = str.split(" "); let strings = []; for (let i = 0; i < arr.length; i++) { strings.push(arr[i][0].toUpperCase() + arr[i].slice(1, arr[i].length).toLowerCase()); } const out = strings.join(" "); console.log(str, `'${out}'`); return out; }
В данном случае не приходится проверять последний элемент, так как Array.join(separator) вставляет указанный разделитель именно между элементами, но не перед первым и не после последнего.

И да, это было лишнее:


Николай Ланец
Николай Ланец
Обсуждение задания "Use a Retina Image for Higher Resolution Displays"
Я так понимаю, это было сюда?

С
Сергей Гуляев
Где ощибка? Вывод на консоль в VSCode показывает верный по заданию ответ. (здесь код не хочет публиковаться)

С
Сергей Гуляев
Где косяк, который не принимает тренажёр? Проверяя не консоле в VSCode, вывод верный по заданию.

function titleCase(str) { let arr = str.split(" "); let out = ""; for (let i = 0; i < arr.length; i++) { out += arr[i][0].toUpperCase(); if (arr[i].length === 1) { out += " "; continue; } out += arr[i].slice(1, arr[i].length).toLowerCase() + " "; } return out; } titleCase("I'm a little tea pot");


Николай Ланец
Николай Ланец
JavaScript. Массив - это тоже объект.
Не за что!:)
Попов Дмитрий
Попов Дмитрий
JavaScript. Массив - это тоже объект.
Спасибо! Может и практическое применение найдётся)
Николай Ланец
Николай Ланец
Изменить приведение переменных к типу на более правильное решение
Пожалуйста!
  • «
  • 1
  • ...
  • 16
  • 17
  • 18
  • ...
  • 1237
  • 1238
  • »