Ответы пользователя по тегу JavaScript
  • Как пишутся динамические многопользовательные игры на html5?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Как правильно написал коллега выше, рисовать в канвасе, данные синхронизировать по вебсокетам, всю логику считать на сервере, тут оптимальнее будет сервер на ноде, т.к. он долгоживущий, в отличии от пыхи.

    Выглядеть это может следующим образом:
    1) клиент открывает соединение с сервером по вебсокетам
    2) на сервере создается сущность под клиента
    3) на сервере бесконечный цикл обсчета мира, после обсчета обновленные данные рассылаются клиентам, висящим на вебсокетах, у них, в свою очередь, отрабатывают коллбеки в каждый момент, когда сервер им что-то присылает
    4) если на клиенте происходит какое-либо действие, то уже клиент шлет серверу данные, и на сервере отрабатывает коллбек, который меняет стейт, и эти изменения при следующем обсчете мира обрабатываются, далее см. п. 3, так все участники получают апдейты
    5) при этом чтобы не было лагов, действия пользователя на клиенте рендерятся сразу, а потом перерендериваются в зависимости от того что пришлет в ответ сервер, т.к. там будут проверки, чтобы пользователи не читерили (должны отсекаться невозможные/ошибочные действия)

    Очень упрощенно это может выглядеть как-то так...
    Ответ написан
  • В какой последовательности читать книги по JS?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    За всю свою практику продолжительностью более 20 лет я прочитал только одну книжку по программированию, это был Фигурнов про программирование на паскале под ДОС, и это было в середине девяностых... С тех пор читаю только документацию и то по мере необходимости.

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

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

    В общем критерий истины - практика и никак иначе.

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

    Поэтому выбери себе проект, и начинай делать. Сначала будет все плохо, непонятно и вообще адский адов ад. И только если тебе хватит упорства и настойчивости, усидчивости, концентрации и везения, то, постепенно, все начнет меняться.

    Короче говоря ключевое слово тут ДЕЛАТЬ, а все остальное - лишь вспомогательные элементы.

    ЗЫ: Я встречал немало народу, почитавших книжек, прошедших курсов, знающих команды, но не умеющих их использовать, в результате не способных программировать. Для того, чтобы программировать, т.е. транслировать машине свою волю, на понятном ей языке, необходимо иметь эту самую волю для начала, а остальное уже приложится по ходу дела.
    Ответ написан
    3 комментария
  • Поможете выбрать ресурс по изучению JS?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я наставничаю в той самой htmlacademy, и частенько студенты приходят, не умеющие программировать от слова совсем. Им курс дается тяжело, приходится их вытягивать буквально за жабры и разжевывать все мелочи, что, в целом, в мои обязанности и не входит вовсе.

    Поэтому перед академией я настоятельно рекомендую на три круга прослушать под запись курсы Zorax Или JavaScript weird parts на ютубе, почитать/послушать Кантора, это раз.

    Прорешать 30-40 задачек на кодварс (я там прокачиваю некоторых своих студентов), это два.

    И вот уже после этого идти в академию, тогда от курса будет максимальный толк и отдача.
    Ответ написан
    1 комментарий
  • Как (и возможно ли) дотянуться до Junior JavaScript Developer в кратчайшие сроки?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Во первых: совершенству нет предела.
    Во вторых: невозможно объять необъятное и впихнуть невпихуемое.
    В третьих: как ты не крутись, а технологии развиваются быстрее, поэтому отставание неминуемо, как следствие приходится всегда чем-то жертвовать ради чего-то более важного.

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

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

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

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

    Меня на программирование пропёрло весьма рано, лет в 14-15. Я ощущал собственное безграничное могущество, послушная железяка выполняла любое моё повеление, любой мой каприз, при условии, что он правильно сформулирован. Если железка не делала что нужно, или делала что не нужно, то это всегда была моя вина, это значило что я прокосячился. Подобное осознание настигло меня весьма скоропалительно, после чего мозг начал усиленно дисциплинироваться, и количество лютых фейлов пошло на убыль.

    Коммерческая разработка - это, примерно, от 70% времени/сил на дебаг и фиксы, потому что мало где процессы поставлены грамотно. По хорошему до сего дня (а мне под 40) я только одну команду видел, где процессы прям вообще очень хорошо поставлены и мне посчастливилось какое-то время с ними поработать. За эти несколько месяцев я подрос на целую голову. Самостоятельно достичь сходных результатов было бы весьма затруднительно.

    Сам я сменил стек совсем недавно, начал в конце 15 года, и процесс продолжается до сих пор. Сменил я по одной простой причине - во всех моих прежних проектах большая часть логики с бэка уехала на фронт, и прекраснейший jQuery перестал справляться чуть более чем полностью. Он, по прежнему, хорош, но задачи, которые приходится решать, требуют совершенно других подходов. Для себя я выбрал React, но в целом на рынке имеются альтернативы. По моим данным очень большим спросом пользуется Angular 2+.

    Когда говорят о фронтенд разработке, постоянно говорят о технологиях, стеке, но почти никто не упоминает, что не стеком единым... Существенная часть разработки - это, для начала, понять задачу и построить у себя в голове модель. Заказчики бывают разные, от очень толковых, до очень безтолковых. Соотношение первых ко вторым примерно 1% и всё остальное... Т.е. в большинстве случаев тебе скажут минимум, своеобразно, плюс ты это поймёшь по своему. Потом, по ходу пьесы, в самые неподходящие моменты, начнут всплывать подробности, которые: забыли упомянуть; ну это же очевидно, ты же профи; мы сами не знали, это только выяснилось; ну это же мелочи, мы думаем тебе это будет не сложно; а ты не спрашивал; и т.п....

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

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

    Если ты попадешь в команду, где люди будут понимающие, квалифицированные, процессы выстроены, а джуну задачи будут сгружать джунские, то, считай, тебе крупно повезло. Шансов на это примерно 1%. Особенно учитывая, что джуны это обычно студенты лет в районе 20...

    Когда я менял стек, то я тоже был какое-то время 35-летним джуном. С этим ничего не поделать, потому что, внезапно, стек это не просто так, и имеется масса нюансов, которые с наскоку не освоишь. Чтобы все пощупать, попробовать на зубок, понять и осознать требуется время и усилия, иногда много времени и много усилий. Да, весь прежний багаж служит опорой и поддержкой, и там, где настоящий джун будет копаться недели, ты за пару часов по аналогии поймаешь идею и двинешь дальше. Но эти пару часов никто не отменял, а идей которые нужно отловить сотни, если не тысячи...

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

    Даже если тебе попадается практически идеальный проект, внезапно оказывается, что твоя оперативная память это 5-7+-2 объекта, а удерживать в голове одновременно нужно сотни...

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

    Термин "фигак-фигак и в продакшен" встречается повсеместно, т.к. ресурсы (деньги, время, кадры) практически всегда весьма жестко ограничены и ничего ты с этим не поделаешь.

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

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

    Теперь относительно того что делать - если в бэкграунде нет сильных скиллов по алгоритмике и структурам данных (олимпиады по программированию, универский курс информатики), то прям очень сильно рекомендую прокачать. Будучи наставником на нескольких курсах фронтенда я постоянно встречают студентов, которые "вроде бы" знают язык, но затрудняются скомпоновать пару циклов с условиями, вот буквально просто виснут на неопределенное время, причем без результата. Лично я рекомендую кодварс. Своих студентов я прокачиваю именно там. Достаточно прорешать 30-40 задачек, чтобы базовые скиллы ушли на уровень рефлексов и перестали парить мозг. Правда желательно решать это все с наставником.

    Косвенный бонус тут будет в том, что ты привыкнешь решать задачи на JavaScript. Я когда менял стек, поначалу мыслил на PHP, и подобный финт на кодварс позволил мне переформатировать мышление на JS. Вот мой профиль на кодварс как пруф: https://www.codewars.com/users/iCoderXXI

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

    Понять надо настолько глубоко, чтобы легко и просто, с юморком, рассказывать это любой первой встречной бабушке, да так, чтобы та всё поняла... Это вот прям залог успеха в JS, потому что все остальное держится на этих двух китах. В ютубе имеется курс Зоракса (Zorax) и JavaScript Weird Parts, оба про то же самое, первый на русском, второй на инглише. Кантор, безусловно, крут, но эти двое объясняют попроще и понятнее (имхо).

    После этого прокачиваемся в использовании встроенных методов JS, таких как map, reduce, includes, replace и пр. (на том же кодварс)

    После этого нужно прокачаться в ES6+, стрелочные функции, let/const, деструктурирование, рест оператор, классы, промисы, генераторы, async/await, декораторы - без этих продвинутых штук в современных фреймворках ловить нечего.

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

    Потом уже заостряемся на API форм, DOM, AJAX (fetch/axios), вебсокетах, Localstorage и пр.

    И вот только теперь можно переключаться на фреймворки. Проще всего освоить Vue (по слухам), наибольшим спросом пользуются React и Angular, для общего развития так же неплохо бы немного послушать про Ember.JS.

    React только на первый взгляд выглядит простым, на самом деле это только view-библиотека, а в любом нормальном SPA есть много чего еще кроме view, поэтому React всегда идет в компании Redux, Router, и еще целой толпы всего, что тоже придется осваивать, не только с точки зрения API, но и с точки зрения философии (а нахрена оно вообще сдалось?)

    Перед походами на собесы очень желательно иметь портфолио из нескольких готовых проектов, вылизанных стилистически.

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

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

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

    Оптимистичный прогноз - 6-12 месяцев плотного фигачинга и ты в тренде.
    Ответ написан
    7 комментариев
  • Что почитать для «посредственного» js разработчика?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Язык программирования, это инструмент, по типу молотка или кухонного комбайна.

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

    Понятно что инструментом желательно владеть виртуозно. Но одного инструмента категорически недостаточно. Глупо считать, что выучил JS и все, можно покорять вершины. Для начала имеется немалое количество сопричастных технологий, да хоть те же HTML+CSS, DOM, браузеры с их нюансами и API, HTTP, Ajax, Rest, алгоритмы и структуры данных, хранилища, и еще миллион всего.

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

    В общем совет тут такой уже давали, выше, но не объяснили почему. Так вот, надо тупо делать. Набивать руку, так сказать. По мере деланья придется со всем этим зоопарком, так или иначе, познакомиться. Через, примерно, тысячу часов уже в голое сложатся базовые паттерны, что там к чему, как, зачем и почему. Сначала будет "Ну ваще ничего нипаняятнааа", и это нормально. Декомпозируешь большое и сложное на более мелкое и не такое страшное, и делаешь что можешь. Остальное снова декомпозируешь и так далее. И гуглишь, гулишь, гуглишь, гуглишь, гуглишь... Ну ты понял.

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

    ЗЫ: Если не владеешь инглишем в достаточной степени, чтобы свободно понимать устную речь и тексты, то я тебе, в общем то, не завидую...
    Ответ написан
    Комментировать
  • Как выбраться из теоретика?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Программирование напоминает сборку сложной конструкции из простейших кубиков лего.

    Раз плаваешь на 6-кью катах, значит мозг вообще пока не настроен на процесс программирования. То ли незачем, то ли еще что мешает настроиться.

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

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

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

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

    Лично я других подходов не ведаю.

    И здесь, как справедливо заметили коллеги ранее, нужно нафигачить очень много кода. Примерно 10 тысяч часов, чтобы набить руку, выработать рефлексы, поставить основные алгоритмы и структуры данных на автомат, чтобы применял на лету, вообще не задумываясь. Никакой теорией тут результатов не добиться. Мой давний наставник училменя, что пока ты не отпрограммировал минимум 3000 часов, никаким программистом ты называться даже близко не имеешь права.

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

    Есть и минусы у данного подхода - всякие третьестепенные мелочи ты не учишь, т.к. в практике они встречаются только в чем-то большом и/или экзотическом. А на собесах их таки спрашивают. Поэтому моё решение - доучить их потом, чисто "щоб було".

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

    Когда я начинал программировать (мне было 14), меня лютейше пропирал тот факт, что я повелитель этой железяки, причем абсолютный, другими словами эдакий Боженька. Железяка моментально и безпрекословно выполняет любые мои повеления, а если не выполняет, значит это я пробакланил. Я столько всего хотел поручить сделать железяке, но не знал как, однако научился довольно быстро, т.к. мотивация зашкаливала. В том числе интенсивный процесс программирования здорово повышает дисциплину мышления, потому что иначе результатов просто не будет.

    Может быть тебе просто ничего не нужно от железяки?

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

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

    З.Ы.: Если воли фигачить самостоятельно не хватает и вектора нет, найми наставника, который будет тебя направлять, курировать и выписывать волшебные пендыля от души, стабильно и регулярно. К сожалению мой опыт показывает, что большинство людей без подобной пенделемотивации подобны гордой птице Ёж...
    Ответ написан
    Комментировать
  • Почему Jquery не парсит JSON массив?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Вообще ниочем вопрос. Ты бы код куда выложил да JSON который отдаешь, да заголовки которые от пыхи улетают, а так что называется телепаты в бессрочном отпуске...
    Ответ написан
    Комментировать
  • React: как правильно загрузить картинку(php)?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    На тег формы вешается onSubmit={this.submitHandler}, в который прилетит агрументом evt. Через evt получаем доступ к userImage. Отправить можно через axios.

    В конструкторе такой фигней страдать, да еще с jQuery это весьма годное извращение. :)

    Вообще PHP с React это не очень сочетание, как только речь зайдет про Server Side Rendering во имя Seo, вот тут и поймешь, как здорово промахнулся с пыхой на бэке.
    Ответ написан
  • Создание простого приложения на react?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Голый JS и даже с голым React это очень-очень-очень мало для построение чего-либо существенного, увы.

    Если задача стоит просто что-то наваять, то при должном упорстве и за пару месяцев можно наверное что-то сообразить. ключевое слово тут "что-то".

    Для того чтобы делать православно и годно вангую минимум полтора-два года упорства и настойчивости по 6-12 часов ежедневно, ибо собрать нужно столько граблей и набить столько шишек, что мама дорогая... Ну и еще пару десятков технологий освоить до кучи, часть из которых весьма нетривиальны, при неприлично скудной документации...
    Ответ написан
    Комментировать
  • Как найти удаленную работу в команде?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Сейчас немало дистанционных вакансий. Я вот недавно так попал в команду, мне все нравится.

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

    Если ты где-то в мегаполисах, там реально устроиться стажером/джуном, опять же нужно искать, вакансий море. Если ты из провинции и релокацию не планируешь, то качайся до мидла, опять же, дистанционных вакансий хватает.
    Ответ написан
    3 комментария
  • Необходимые знания JavaScipt?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Идешь на сайт Кантора и штудируешь все подряд. Так же находишь на ютубе Зоракса и штудируешь все подряд. Если владеешь английским, можно еще проштудировать курс JavaScript Weird Parts. потом просто ходишь на собесы, делаешь тестовые. Поначалу все собесы будешь сливать, это нормально. После каждого слива делаешь разбор полётов и пристально изучаешь то, на чем завалился. Вангую что тебе 10 заваленных собесов хватит за глаза, чтобы выкачать всю базу. Поэтому поначалу ходи на собесы туда, где не жалко слить.

    В целом я бы еще очень рекомендовал прокачать алгоритмы и структуры данных. В целом, если у тебя есть в бэкграунде опыт программирования на чем угодно, то тебе будет проще. Если нет, то придется набрать минимум пару тысяч часов фигачинга в программировании всего подряд, тупо набить руку, без этого даже выученный на 200% любой язык программирования будет бесполезен.

    В общем 5% теории и 95% практики, очень много упорства, и ты в строю через пару лет. Возможно и через годик, если будешь реально фигачить по 8 часов в день.
    Ответ написан
    Комментировать
  • Как найти наиболее повторяемое число в массиве?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Ответ написан
    Комментировать
  • C чего начать изучение JavaScript опытному верстальщику?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Знать как следует язык программирования, безусловно, штука весьма полезная и нужная.

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

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

    По части именно JavaScript вот этот курс отлично мне поставил мозги на место в своё время https://www.youtube.com/watch?v=bzuelEN1Kg8&list=P... прям аж до просветления.
    Ответ написан
    2 комментария
  • Почему говорят что jquery не нужен?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    jQuery был хорош, но ничто не стоит на месте. Раньше фронтенд никто особо не воспринимал всерьез. Все считали, что фронтенд - это несколько скриптов, которые принципиально погоды не делают. Все изменилось с ростом популярность SPA, в т.ч. и благодаря бурному развитию JS.

    В любом приложении очень важно прозрачно и понятно управлять состоянием, очень желательно делать это централизованно. Былой подход с участием jQuery делает это невозможным. Кто угодно может менять что угодно на странице, когда угодно, и приложение об этом ничего не знает без очень хитровыдуманных методов. Например в первом ангуляре для этого постоянно бегал по элементам и проверял что там изменилось, это называется "грязные проверки" (dirty checking). Мягко говоря это ни разу не оптимальный способ контроля состояния, но, на тот момент, вариантов особо не было.

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

    В каких-то простых страничках с парой-тройкой функций jQuery даже сегодня может быть актуален, особенно если приложить усилия и делать грамотно.

    Но что-то чуть более сложное уже требует совершенно иного подхода.
    Ответ написан
    Комментировать
  • Что можно считать глубокими знаниями в js?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    У каждого HR/техлида, который будет собеседовать, свои представления о прекрасном. Есть база, которую надо знать, иначе будешь плавать категорически, все остальное - по мере необходимости (имхо). Если с инглишем туго, то сожалею, хотя у кантора весьма недурной ресурс, да и есть платные качественные курсы по JS. Опять же зоракс на ютубе доходчиво объясняет базу.

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

    Собеседующим главное надо показать, что их задачи ты сможешь решить. Для этого софт-скиллы местами даже гораздо важнее технических скиллов.
    Ответ написан
    Комментировать
  • Как применять знания javascript?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Опыт, сын ошибок трудных, приходит со временем.

    JS - это как токарный 4D-станок с цифровым управлением. Одно дело - научиться им пользоваться, другое дело, делать с его помощью что-то конкретное и полезное, нужное. Это две совершенно разные, но тесно связанные задачи.

    Еще аналогия научиться водить автомобиль и научиться строить сложную логистику на базе первого навыка.

    Все приходит со временем, по мере практики. Другого пути не существует.

    И да, алгоритмику никто не отменял, иначе на ровном месте будешь буксовать. Поэтому идем бодро на любой из выше рекомендованных ресурсов и решаем задачки сотнями, смотрим на решения других и плачем. :)
    Ответ написан
    Комментировать
  • Скрипт для подключения emoji к textarea?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я этот взял wedgies.github.io/jquery-emoji-picker/demo.html

    У него смайлики вшиты в CSS, не надо стопицот картинок подгружать.
    Второй плюс в том, что он нормально работает со стандартными инпутами, не нужно никакой магии.
    Единственное с чем пришлось конкретно загимориться (это никак с самим плагином не связанно) это отсылать эмоджи в subject'е мейлов, при том, что там кодировка ни разу не UTF (с легаси сложно спорить... :) )
    Ответ написан
  • Возможно изменить значение в css классе через js?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Человек спросил одно, а отвечают ему совсем другое... :)

    Сегодня я тоже озадачился подобным вопросом, мне нужно менять поведение класса в зависимости от контента, и его (класс) задает плагин jQuery. Я скорее всего пойду другим путем, и просто добавлю в плагин возможность задавать CSS не только объектом, но и функцией, и уже из функции буду разруливать.

    А в твоем случае решение можно попробовать поискать на данном сайте www.shawnolson.net/a/503/altering_css_class_attrib...
    Ответ написан
    2 комментария
  • Скрипт, выполняемый на JavaScript за секунду, на PHP за 30 секунд проходит только 20%. В чём причина?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Короче говоря херню ты написал, друже. вот оптимизированный код, отрабатывает за пару секунд.

    <?php
      for($a=9; $a>=1; $a--) {
        $a10 = 10*$a;
    
        for($b=9; $b>=1; $b--) {
          if ($a===$b) continue;
          $b100 = 100*$b;
    
          for($c=9; $c>=1; $c--) {
            if ($a===$c || $b===$c) continue;
    
            for($d=9; $d>=1; $d--) {
              if ($a===$d || $b===$d || $c===$d) continue;
              $d100 = 100*$d;
              $v2 = 1000*$d+$d100+$a10+$b;
    
              for($e=9; $e>=1; $e--) {
                if ($a===$e || $b===$e || $c===$e || $d===$e) continue;
    
                for($f=9; $f>=1; $f--) {
                  if (
                    $a===$f || $b===$f || $c===$f ||
                    $d===$f || $e===$f
                  ) continue;
                  $fc=$f*$c;
    
                  for($g=9; $g>=1; $g--) {
                    if (
                      $a===$g || $b===$g || $c===$g ||
                      $d===$g || $e===$g || $f===$g
                    ) continue;
                    $g10 = 10 * $g;
                    $g10a = $g10+$a;
    
                    for($h=9; $h>=1; $h--) {
                      if (
                        $a===$h || $b===$h || $c===$h ||
                        $d===$h || $e===$h || $f===$h || $g===$h
                      ) continue;
                      $v3 = $b100+10*$h+$f;
    
                      for($j=9; $j>=1; $j--) {
                        if (
                          $a===$j || $b===$j || $c===$j || $d===$j ||
                          $e===$j || $f===$j || $g===$j || $h===$j
                        ) continue;
    
                        if(
                          $d100+$g10+$j + 100*$j+$a10+$e + $v3 === $v2
                          && $fc/$j === $g10a
                        ) {
                          echo  "\n a=",$a,
                                " b=",$b,
                                " c=",$c,
                                " d=",$d,
                                " e=",$e,
                                " f=",$f,
                                " g=",$g,
                                " h=",$h,
                                " j=",$j,"\n\n";
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }


    Если вдруг не понял что к чему, объясняю, у тебя вложено друг в друга 9 циклов от 1 до 10, таким образом получается 10^9 итераций, т.е. миллиард. И ты все условия и вычисления упихал в самый внутренний цикл, и производишь их миллиард раз, причем в 95% ситуаций вообще в холостую. Я вынес все проверки и вычисления максимально наружу, насколько это позволяет логика, таким образом 95% итераций, холостых вычислений и пр. мусора просто не выполняется в принципе. Поэтому код теперь отрабатывает быстро, как и должен.
    Ответ написан
    7 комментариев
  • Как работать с mySQL на node.js?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Вообще принято в подобных случаях показывать код.

    Если через постман все уходит, а из браузера нет, значит проблема в клиентской части. Например, если адрес (урл) клиентской части хоть как-то отличается от серверной части, например порт другой, то будет срабатывать CORS, и нужно сервером слать соответствующие заголовки, чтобы запросы проходили, либо проксировать запросы вебпаком.
    Ответ написан
    Комментировать