Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
>>1035858 В тайпскрипте нет рантайм проверки типа, только проверка при компиляции. Если при компиляции оказывается, что тип некорректен - то он падает с ошибкой. Если нет - то компилируется без проверки. Гугли "runtime type checking".
>>1035866 >нет рантайм проверки типа Спасибо; стоп, а нафиг оно нужно? То есть, если при компиляции никакого инпута нет, он (инпут) будет от пользователя?
Думал я пойти на курсы по фронт енду. Жа эс я немного знаю, но хотел выучиться как положено. Записался в епам курсы https://www.training.ru/Registration/Registration/1567 Меня отшили сказав что "Уровень английского у вас не дотягивает до необходимого". Проверяли мой английский, спросив меня про ёбаные хобби! Что за хуйня, анон? Стоят ли подобные курсы того или дома тоже нормально всё учится?
>>1035869 есть у меня один чел в зале, выучился недавно на тренера, теперь косит под тренера и всем на уши приседает своей теорией как мы все неправильно делаем - заебал реально. но жмет при этом хуево и мало. короче его советы мы в рот ебем
>>1035869 Курсы ЭПАМа нацелены на создание новых для них сотрудников после прохождения пары этапов берут на испытательный, поэтому и английский нужен официальный язык компании
>>1035875 есть у меня один чел в офисе, выучился недавно на ментора, теперь косит под коуча и всем на уши приседает своей теорией как мы все неправильно пишем - заебал реально. но коммитит при этом прямо в мастер. короче его советы мы в рот ебем
>>1036020 Ну ок. Допустим есть readable stream, из которого идет вычитка данных req.on('data', function (chunk) { data += chunk }) Что после обработки с чунком будет, в смысле не с данными а с куском памяти? Уйдет сборщику на освобождение? При этом стрим для следющей части данных память опять будет выделаться из кучи? Нет какого-либо решения например с колцевым буффером и приостановкой чтения при его заполнении, когда после обработки данных чунк возвращает в стрим. Ну или что-то подобного.
>>1036107 > опять будет выделаться из кучи Ты говоришь это так, как будто это что-то плохое. Если охуенно быстрый generational GC охуенно быстрого движка V8 тебя так волнует, хули ты кодишь свою парашу не на расте?
К GC у меня претензий нет, на расте кодить нет возможности, ибо пораша большая старая и не моя. Я бы на C все переписал, но это ебанутся можно, пускай Node будет. Но у меня претензия к стриму. Если прокачивать гигабайты данных на приличной скорости, потребление памяти улетает в ебеня, плюс GC забирает большую часть времени CPU, которое должно уходить на обработку полученных данных. В итоге - гроб, кладбище. Нахуя это нужно, если можно все эти гигабайты протащить через кольцо небольших буферов, и при этом известно, что скорость поставки данных данных ниже скорости их обработки.
Поясните за jest. Вот дёргаю я renderer.create component, оно мне попадает в конструктор. Там у меня state loaded сетается в false. И соответственно в снепшот попадает тот флоу. А как мне дергать компонент что бы самому мокать его states?
>>1036423 >В чём причина популярности такого реально хренового языка как JavaScript? Кто-нибудь пояснит почему все яваскрипт хуями кроют? Он че блядь должен быть как кресты или че?
>>1036555 Старые пердуны не могут понимать коды без типизации и анальных партянковых полувековых выворотов. А вообще тут не кодерский фактор, а человеческий. Есть такие мудаки, которые вместо того чтоб освоить лучше покичиться какие они охуенные дохуя всё знают, а эта хуйня - вообще ее не надо учить, она хуевая и вообще для длобоебов. Это от комплексов - пытаются залатать то, что не могут осилить язык для веб членодевок, которому меньше лет чем им. Ну или им как всегда нужно чтоб мухобойка умела и пыль убирать и демократию наводить и чтоб хуй сосала, а если не умеет - то говно без задач.
Для простого проекта тебе этого хватит, ну можешь еще детальнее про JSX почитать. Ну можешь про React Fiber почитать и сразу вкатиться. Ну и react-bootstrap.github.io, если ничего особо хитровыебанного делать не надо можешь взять. Если нужны будут юнит тесты - https://github.com/airbnb/enzyme
>>1036602 Хрен его знает, вот чуваки из Тинькофф заявляют, что его юзают https://youtu.be/dot5v3LUsq4 но по факту серверная часть в их банке без js в браузере не работает от слова вообще. Ну и сдаётся мне, что они пилят просто обёртку вокруг старого Java-приложения и сильно недоговаривают.
>>1036630 > Isomorphic JavaScript apps are JavaScript applications that can run both client-side and server-side. The backend and frontend share the same code. Ну типа хочу чтобы при первом заходи на /main нода выплевывала сразу html+js, а дальше тот же код уже в браузере все это говно шевелил.
>>1036630 Это устаревший хипстерский термин. Типа, была идейка, что раз раз бекенд можно писать на жиес и фронтенд на жиес, то можно написать их так, чтоб они были изоморфны друг другу.
>>1036638 Потому что это баззворд для привлечения внимания, ничего за собой не имеющий? И что раньше им макаки сверкали в каждом втором бложике, а сейчас всем похуй? Вообще совершенно ебанутое определение, кстати. Вот что значит, что бекенд изоморфен фронтенду? То что они написаны на одном языке и пользуются той же инфраструктурой или что? Очевидно что у бекенд-программы и фронтед-программы будут совершенно различные свойства и структура, какая впизду изоморфность?
>>1036645 По идее это должно было значить, что между бекенд-программой и фронтенд программой есть структурная эквивалентность и можно было бы выводить бекенд код из фронтенд кода или наоборот. Как, например, выводить программы из пруфов или наоборот. Но если в комп.сайнсе всякие изоморфизмы Карри - Ховарда ещё уместны, то для прикладного программирования всё это слишком абстрактно и размыто, нужны конкретные реализации и конкретные соответствия, а не просто некая размытая эквивалентность, которая может значить вообще хуй знает что.
>>1036651 Потому что это охуенно медленно при большом количестве коннектов? Обычно рендерят на бекенде пару страниц, типа гостевой и ещё кое-что, то что до логина? А так, отредерить реакт можно на чём угодно, у чего есть интеграция с V8, хоть на похапе. И главный вопрос, причём тут изоморфность нахуй?
>>1036653 Ну ты выдал. Пол интернета работает на пхп, который именно так и делает. С хуя бы это медленно? isomorphic тут при том, что в мирке жс говно которое работает и в браузере и в ноде так называют.
>>1036654 > Пол интернета работает на пхп, который именно так и делает. С хуя бы это медленно? Логика уровня "полстраны голосует за путина, с хуя ли бы это плохо".
Котаны, пишу погромистский бложек на гитхаб ио, хочу заюзать http://codemirror.net/ чтобы посетитель уютного мог поиграться с примером кода и исполнить его. Все на жс, естественно. Как лучше сделать так, чтобы он случайно не распидорасил мне остальные примеры на странице и код страницы? Пока придумал только eval("'use strict'; function() {" + код пидораса из редактора + "}();")
>>1036656 Весь этот html код сейчас за всю сессию юзера обычно весит как одна-две картинки на том же сайте, поэтому, передаёшь ты отрендеренный html или json для шаблонизации в браузере -- выигрыш в скорости иллюзорен, а вот сложность и надёжность во втором случае страдают
>>1036697 В 2017 общий случай это когда роутер у тебя на азике, а на цпу говноязык с гц, который прост охуевает от ТЕКСТОВЫХ ШАБЛОНОВ. Подумой, во что всё обычно упирается в 2017, а?
Начал изучать TypeScript и появился вопрос - можно ли готовый проект постепенно переводить на тайпскрипт (т.е. когда часть файлов на обычном жс, а часть на тс) или нужно сразу целиком переделать проект на тайпскрипт, чтобы можно было его собрать?
>>1036705 Как и всегда: в базу и эзернет. Что не отменяет того факта, что это охуенный тупизм выполнять на сервере работу, которую можно переложить в браузер юзера (современный дефолтный копуктер вполне жЫрный чтоб этого особо не замечать + и все привыкли уже). Единственный аргумент - это индексация поисковиками и обычно, если это существенно, рендерят на беке только часть. В некоторых случаях это, конечно, неприемлемо, если у тебя там интернет-магаз, к примеру, но если у тебя приложение, где без авторизации делать нахуй - то и рендерить на сервере кроме логин пейджа нечего.
>>1036803 И чем по твоему return принципиально отличается от присвоения переменной в данном случае? Считай что ты "присваиваешь" в результат выполнения функции.
>>1036806 а ведь правда, слушай, благодарю. var test = function() {return (a > b) ? "s1" : "s2"} если сократить, то выйдет var test = (a > b) ? "s1" : "s2";
>>1037042 > Это решает проблему X в условиях Y, при этом имея недостаток Z. Если у тебя есть проблема X и ты в условиях Y, а Z не проблема — попробуй. > Ждать от дегроида адекватного ответа
>>1037038 Потому что это декларативно и охуенно. Пишешь <PizdaZalupa onClick={this.hui} /> и у тебя рендерится компонент Пиздазалупа, по клику на который срабатывает метод хуй. В чем проблема то?
>>1037046 > PizdaZalupa({onclick: this.huy}) Нахуя еще один нескучный синтаксис? Чем он лучше обычного жса, что ради него нужно обмазываться бебелем и прочим говном?
>>1036253 Окей, а если мне надо ререндерить на изменении этих начальных стейтов? Сейчас это делает setState. А если это у меня будут не стейты компонента, а аттрибуты объекта, как мне ререндерить. Завести какой-то фейковый Стейт для реренлеринга сугубо и его сетать после аплейта аттрибутов? Лол
>>1037051 Блять но нахуя? Шума визуального больше: все эти </ ={}> В 61 хроме завозят нативные модули и можно ебашить вообще без бабеля. Нет хочу говном обмазываться.
>>1037049 Ты тупой или толстый? Затем, что вместо одной няшной строки на "чистом жс" ты будешь писать вот такую >>1037047 залупень, только в случае со сложным компонентом это получится хуита строк на двести. И что значит "обмазываться бабелем", одна строка в конфиге.
>>1037055 > div({className: "sidebar"}, [ span({}, "хуй") ]) Когда приложение работает нативно, хотсвап кода через хром-дебаг-протокол 10/10 >>1037058 Для прода ты один раз собираешь это говно в es3, но на этапе разработки тебе похуй.
>>1037080 Реакт это либа, для рендеринга. Есть целый зоопарк модулей. По сути интересных есть только два: ESM, то есть нативные модули из спеки es6, которые уже работаю в 60 хроме (за флагом) и будут из коробки в 61. Второй тип это CommonJS, который используется нодой. Пока что нода нихуя не может сделать EMS. Подробней тут: https://hackernoon.com/node-js-tc-39-and-modules-a1118aecf95e
Мое решение под спойлером (скорее всего движок изуродует отступы, но любой бьютифаер исправит ситуацию). function findRarestPepe(pepes) { var rarest = pepes.filter(function(pepe, i, arr) { return (arr.indexOf(pepe) == arr.lastIndexOf(pepe)); }); return (rarest.length == 0) ? 'No rare pepes!' : (rarest.length > 1) ? rarest.sort() : rarest.join(); }
16+- тестов из 100 ругаются, что я возвращаю им 'No rare pepes', хотя по мнению теста должно возвращаться название или массив.
В итоге сделал вывод ВСЕХ элементов ебаного входящего массива в ситуации, когда мой скрипт должен вернуть 'No rare pepes', скопировал ебучий массив в word и нашел там трех Пепе с именем, которое уникально по-мнению результата теста.
Открытых баг-репортов у задачи нет, довольно 92% юзеров, ЧЯДНТ?
На странице 81 кнопка. Получил массив ссылок на эти кнопки через document.getElementsByTagName. Хочу для каждой из кнопки написать событие посредством цикла:
var buttons = document.getElementsByTagName('button'); for (var i = 0; i < buttons.length; i++) { buttons.onclick = function() { buttons.style.backgroundColor = 'black'; } }
>>1037216 Не слушай ебанутого про массивы. Это тут вообще не при чем. Проблема в том var поднимается наверх функции. Например: function() { var arr = [1,2,3]; for (var i = 0; i < 3; i++) { ... } } На самом деле надо читать как
function() { var arr = [1,2,3]; var i = undefined for (i = 0; i < 3; i++) { ... } } Поэтому когда ты в теле цикла присваиваешь в buttons = function() { buttons ... } то значение i не разные на каждую созданную функцию, а одно глобальное. Таким образом для всех созданных обработчиков значение i после выхода из цикла будет = 3 Обычно это решается либо через IIF, либо заменой var на let, либо просто не пользуются элементом в замыкании.
>>1037233 >то значение i не разные на каждую созданную функцию, а одно глобальное
А как то, что эта переменная поднимается вверх функции (в моем случае она будет в Global Scope) мешает выполнится моей программе? https://ideone.com/Go22lv - это весь код который у меня есть. Не более. Let же в свою очередь просто заставляет переменную жить в пределах цикла, верно? Как то, что она живет вне цикла, мешает мне задать кнопкам евенты?
>>1037272 Это известный подводный камень в замыканиях, не только в жс. Когда ты идешь по циклу, то у тебя разные функции замыкают одну и ту же переменную i, которая меняется по ходу цикла, то есть у тебя под конец десяток функций с одинаковым i. C let у тебя на каждой итерации создается новая переменная, поэтому каждая функция будет замыкать разные i.
>>1037292 Не совсем. "ближайшее время" наступит, когда js-школота наберётся лет 15 опыта и перейдут на другие языки, js тем временем допилят до вменяемого состояния, его станут поддерживать большинство хостеров и т.д.
>>1036555 В язык намешана куча говна отовсюду, но при этом есть дохуя фич, которые в эту кучу не включили. Недавно начал писать небольшое приложение на чистом JS, и что сразу бросается в глаза: 1) Нет named parameters(на самом деле есть, но реализация через костыль и текущей спецификацией не поддерживается, нужно перегонять) 2) require в язык не завезли, потому что говно для браузеров, приходится пользоваться нодокостылем, с которым нужно ебаться ради простейших вещей: https://gist.github.com/branneman/8048520 3) Язык динамический, но из-за пункта 2 нет удобного DI, только ебля с контейнерами или пляски вокруг require костыля. 4) Mutable objects - главный пиздец, приходится постоянно следить, чтобы функция, которая получает на вход параметры, ничего с этими параметрами не натворила, так как клонировать объект нормально нельзя, только через костыль, опять же. (deep clone? сосите хуй, мы такого не могем!) 5) Ну и всякие мелочи, вроде кривой реализации ООП, которой приходится пользоваться, так как функциональщину на JS писать будет только отбитый. 6) Самый главный минус - коммьюнити ебанутых макак, которые не имеют ни малейшего представления о том, как писать поддерживаемый код и имеют дохуя тупорылых практик и убеждений. Сторонняя библиотека для каждого пука, абсолютное отсутствие культуры тестирования, огромная любовь к эвентам, из-за чего код всегда превращается в кучу лапши и т.д и т.п. Костыли еще можно обуздать, привыкнуть и более-менее работать, но к коммьюнити не привыкнешь никогда. Как только начинаешь гуглить нетривиальный вопрос, то на тебя выливается ушат дерьма и антипаттернов, за которые нужно бить в ебало.
JS - это accident language, в здравом уме никто бы на нем не писал, но выбора у людей нет, к сожалению. Ждем и надеемся.
>>1037313 >js тем временем допилят до вменяемого состояния Но он уже вменяемый, просто нужно понять, что это язык совершенно нового типа. Суть JS - в его гибкости. И со временем он будет расширяться именно в эту строну.
>его станут поддерживать большинство хостеров Уже.
>>1037318 програмил на говне, вкатился в жс говно и теперь тебе не нравится что он не похож на твое предыдущее говно? не парься! чувствительным нытикам в этом комунити тоже место есть, поэтому добро пожаловать пидор ебаный
>>1037369 Я говорю про то, что тут нет даже базового функционала, который в любой другой язык был добавлен десять лет назад. На похожесть мне похуй, суть везде одна. >>1037374 Что это за вскукарек? Ты вообще в своей жизни трогал тру-функциональный язык или для тебя это "хуе мое функции там, рекурсия, объектов нет ебана"?
Выросло целое поколение школьников, которые не знают ничего, кроме кучи js-библиотек, естественно они с ужасом уходят в отрицание окружающего мира, хех
>>1037383 > тру-функциональный язык Функциональное программирование - про композицию функций. Но ты, петух, конечно начнешь кукарекать про иммутабельность, систему типов и прочий нахуй не нужный никому, кроме отбитых на голову хачей теоркат.
>>1037387 Все уже заимплементировано давно, даже такая наркомания как fantasy land. Только нахуй это никому не нужно кроме хачей-петухов, дрочащих в своем загоне. Хули им там не сидится?
>>1037387 Может сразу свой язык имплементировать тогда уж? Чего мелочиться. >>1037387 >про иммутабельность >нахуй не нужный никому >функциональное программирование Бляяяяяяяяяяяяяяя. Ну и ты я смотрю уже прошарен. Часто спорил с функциональщиками, а они тебя обоссывали?
>>1037391 Тем, что это отдельная библиотека с кучей ненужного мне говна. Добавление сторонней библиотеки - это очень важное решение и в 90% случаев можно и нужно обойтись без нее, невероятный факт для JS-мирка. Эту функцию я и сам написать могу, она достаточно тривиальна. Главная проблема в том, что мне НУЖНО ее писать, потому что в языке базового функционала не присутствует. Ну а про любовь JSников к куче бесполезных библиотек я уже говорил выше. >>1037394 Лисп никогда и не считался тру-функциональным языком.
>>1037400 По делу — ты мудак, иди нахуй. Может быть в крестах у тебя в языке дохуя функциональности без libc/stl? Или может в хачкеле без прелюды? Или ты кроме пхп в который напихали кучу всего больше ничего и не видел? Или ты микрософто макака, и тебе дотнета не доложили?
>>1037393 >Может сразу свой язык имплементировать тогда уж? а, так ты критик языков, арбитр изящества, мастер секции комментариев. я то думал ты программист. прикольно что ты кричишь типа все макаки а сам ссышь язык запилить - кто получается макака тогда - короче впишешься прям норм в комунити
>>1037401 Я не говорю, что библиотеки не нужны, я говорю, что сторонняя библиотека или уж тем более фреймворк - это огромная зависимость от кода хуй знает кого. Сейчас в коммьюнити многих языков об этом забыли и добавляют библиотеки для каждого пука, но особого апогея подобная практика достигла у жсеров вследствие ущербности языка. Всегда сначала нужно писать функционал и планировать архитектуру приложения, и уже только потом по мере большой надобности добавлять библиотеки и фреймворки, не наоборот. >>1037402 >не смейте критиковать мое говно, сами возьмите и напишите лучше!!!! Шизя, успокойся, таблетки прими.
>>1037411 Поверь, 99% библиотек, которыми пользуются люди, стабильней чем любое твоё говно, которое ты навелосипедишь. Особого апогея она достигла в крестах, где есть stl и boost
>>1037413 >поверь Ты мне так рассказываешь, как будто я первый год программирую. Библиотеки хороши ровно до того момента, пока твои требования совпадают с их функционалом, которой обычно либо базовый, либо так нахуеверчен, что тянет с собой 8521 опций, которые никогда не понадобятся. Шаг вправо-шаг влево - и придется писать свой велосипед, либо ДОБАВЛЯТЬ ЕЩЕ ОДНУ БИБЛИОТЕКУ, РАСШИРЯЮЩУЮ ФУНКЦИОНАЛ СТАРОЙ, БИБЛИОТЕКА САМА СЕБЯ НЕ ДОБАВИТ. Что значит "стабильней" в этом плане, я не понимаю. Если ты не можешь написать свой кусок кода для клонирования объектов и не обосраться, то как ты пишешь целое приложение со сложной логикой и не обсираешься? Примеры есть, тесты есть(должны быть), и у тебя будет полный контроль над тем, что делает твой код. В случае с библиотекой ты отдаешь кусок кода хуй знает кому и надеешься, что библиотека протестирована и не сломает весь твой фунционал после очередного обновления, из-за упущенного разработчиком edge case.
суп помогите горе-фроненду в 2 словах: на старых версиях хрома\фф (48\27) не работает opacity https://jsfiddle.net/v9rt8ufg/2/ видел сайты с похожей анимацией, работающие корректно
Анон, я тут пишу одну хуйню вместе с пхп, и абсолютно все формы сделал ажаксом, при этом новые элементы я добавляю просто append(текстэлемента), все функции объявляю в стиле js, а код внутри - с использованием jquery. Еще button onclick делаю. С одной стороны, все ясно написано и легко разбирается, но с другой кажется, что это хуйня какая-то. Что я делаю не так, кроме смешивания ванильных и jquery методов?
Для чего используется сравнение ==, объясните. Оно быстрее работает или что? Я в своих скриптах всегда использую только === и !==, но ведь для чего-то же придумали дополнительную операцию нестрогого сравнения?
>>1037496 Двачую. После появления fetch пропала последняя причина использовать jQuery: https://habrahabr.ru/post/252941/ Можно сдавать его в музей к Cobol, Delphi, GWT и VBScript.
>>1037521 >>1037496 Лол, использую jquery только для селекторов, toggleClass и ажакса, больше ничего и не нужно, разве что более короткое написание value. Алсо, у меня еще дизайн на бутстрапе
>>1037524 >для селекторов querySelector/querySelectorAll >toggleClass ванильный classList.toggle >ажакса fetch/ да и сам xmlhttprequest2 простейшая штука, которая давно везде и с ней не надо ебаться как с первым и писать даунгрейды.
>>1037530 Лично я щитаю, что == есть смысл использовать только там, где нужно проверить на !== undefined && !== null. В остальных случаях нихуя не понятно.
>>1037307 Знаю пару банков у которых бек на ноде Ну часть с сертификатами - на яве, но все остальное крутится на ноде, еще и 0.12 версии. Народ часто переоценивает свои потребности и недооценивает возможности ноды
>>1037433 >пока твои требования совпадают с их функционалом, которой обычно либо базовый, либо так нахуеверчен, что тянет с собой 8521 опций, которые никогда не понадобятся. > что тянет с собой 8521 опций, которые никогда не понадобятся. Ебать нихуя, у тебя на других языках библиотеки ЧИСТО ПОД ТЕБЯ всегда заточены и ты из них максимум выжимаешь?А у жс плак плак ЛЮДИ ПИХАТЬ ТО ЧТО Я НЕ ИСПОЛЬЗУЮ В БИБЛИОТЕКИ КАКОЙ КАЛ. Ты зашел не в тот тред и не с тем настроем.
>>1037520 Если у тебя все сурйозно и не должно быть конвертаций в проверках и все должно работать как ты задумал - то ===, елси всякое может быть и впринципе конвертация безопасна - то == поможет с кейсами e.g. когда где-нибудь в ответе false заменят на [], а потом на undefined когда-нибудь в будущем то с == можно будет не париться, он сам все подгонит и код будет работать дальше.
>>1037433 Мань, успокойся, в lodash/fp/альтернативах функциональщику нужно натурально все. Если бы ты действительно пришел из фп - ты бы это знал.
Насчет твоих ко-ко-ко это ни мейнтейнер языка кодил никачественно - так это вообще пиздец. В 2017 половина хуйни уже на гитхабчике, даже ебаный асп.нет, нет блять я не буду им пользоваться, он в язык не встроен!
Антуасы, есть такая проблема. Надо вывести тонну картинок мелких на страницу. Если все разом отдавать все браузеры висят по 6 секунд. Как это сделать так что бы все постепенно прогружаллсь не блокируя интерфейс.
>>1037109 Потому что оно так и задумывалось. Простой пример: У тебя есть следующий список: ["Рейр Пепе", "Рейр Пепе"]. Так вот. Этот пепе - достаточно рейр. Потому что его не более 5. А в случае со списком ["Рейр Пепе", "Рейр Пепе", "Юник Пепе"] оно должно вернуть только Юник Пепе, потому что он более редкий, чем Рейр Пепе (юника всего один, а рейров - два).
>>1037683 > Надо вывести тонну картинок мелких на страницу. Если все разом отдавать все браузеры висят по 6 секунд. Задай каждой картинке ширину и высоту. И тогда они будут грузиться по мере, гхм, загрузки.
>>1036591 почти, только react router - ебаный кал, и ты заебешься когда захочешь сделать что-то по своему в плане архитектуры, и придется костылять в обход, потому что у разрабов роутера было другое представление о жизниони пидоры. с редуксом вообще работает как говно - особенно 4я версия - отдельный стор для роутера? я в рот ебал. а на гитхабе тебя пошлют нахуй, потому что они зарабатывают бабки на консалтинге и проект нацелен на выкачивание бабок из лохов, а не на юзабельность. вобщем лучше свой сам напиши.
>>1037889 ну ты поюзай и поймешь. для обычных дом.страничек типа home-contacts норм решение конечно, но если у тебя своя архитектура а не архитектура так как ее задумали авторы роутера - шаг влево шаг вправо - и ты уже накостылял кучу какого-то говна, которого и вообще не было без сраной либы этой. для прикола можешь также посмотреть какая в доках редукса версия роутера(2?) и какая текущая(4). каждую версию они перемакакивают всю либу и ты заучиваешь ее заново, если хочешь новую версию юзать. этот проект не must как редукс, а так подрочить
>>1037683 На каждую имагу повесь хендлер onload события. По результатам загрузки каждого изображения (или, допустим, n изображений) отдавай пользователю ещё пачку.
>>1037924 могу тебе даже доклад с подробным анализом написать и иллюстрации горящего пердака нарисовать к нему в стиле material, мой рейт - 90 баксов в час - где-то за неделю справлюсь. а так бугурты можешь почитать тут https://news.ycombinator.com/item?id=12511419
>>1035855 (OP) > главному языку будущего - JavaScript 1. Когда в главный язык будущего завезут ключевые слова class, interface, extends, implements, protected, public, private, final, static? 2. Когда в главный язык будущего завезут разницу между int и float/double (даже в PHP это разные типы) в коробке (в не в Web Assembly)? 3. Когда в браузеры завезут Тайпскрипт из коробки?
>>1037525 >>1037530 >>1037570 Ничего не понял. Т.е. кроме редкой конвертации типа '100' == 100 оно больше и не нужно? Бред же, для этого есть parseInt toString. Но даже в TypeScript сохранили операцию нестрогого (не)равенства, значит, она широко используется?
>>1037935 >3. Когда в браузеры завезут Тайпскрипт из коробки? В Edge могли бы и добавить, петуханы. Никому нахуй ненужный ублюдочный VBScript во всех IE поддерживался, а этот передовой язык почему-то нет.
>>1037521 Зачем отказываться от удобной и быстрой в текущей ветке jQuery? Перед шкальниками выёбываться? Так они и так этим заняты дни на пролёт,пока у нормальных людей нет на это времени.
>>1038015 >Бред же, Если ты не понимаешь, зачем нужно приведение типа, и уповаешь на каноничную НЕОБХОДИМУЮ ЯВНОСТЬ. То почему ты до сих пор не пишешь на асме, и не вызываешь функции, путем складывания аргументов на стек, и передачей управления по адресу, а используешь такую НЕЯВНУЮ func() в своем коде?
>>1037975 модно styled components, но синтакс сомнительный там и редакторы мало поддерживают. еще styled-jss ничего, но там на уровне беты. а так - микс инлайн стилей и css-modules >>1037952 начни с обычного реакта и пили пока не почувствуешь боль, когда нужно шарить и влиять на стейт из разных мест. потом можно уже и редукс
>>1038229 > начни с обычного реакта и пили пока не почувствуешь боль, когда нужно шарить и влиять на стейт из разных мест. потом можно уже и редукс Пробрасываю стейт родительским компонентам через контекст, далее dumb компонентам - через пропсы. Все штатными реактовскими средствами. Всё-таки потребность в редуксе должна возникать не из-за желания изменять состояние приложения из различных мест...
>>1038326 Затем, что складывать объекты с числами и получать НаН - это, блять, ненормально, не должно быть такого в языке. Должны быть строгие типы, чтобы было понятно, с чем вообще дело-то имеем, а не "сложи то, не знаю что, с тем, не знаю чем, получи вообще хуй пойми что"
>>1038329 Ты посмотри на это с другой стороны. Разве это не открывает широкие возможности по написанию обфускаторов, которые потом можно впаривать по $59.99 скрипткиддисам?
>>1038334 Для маркетолуха, может, что-то там чего-то и открывает. Для меня лично это означает ровно две вещи:
1. Мне нужно везде писать === вместо ==, а если я пишу ==, то это либо ошибка, либо обдуманное и сознательное решение => нужно писать коммент. 2. Проект среднего размера и более превращается в сраное говно, ведь ни одна сигнатура не является самодокументируемой, ни один класс не является самодокументируемым, везде нужно постоянно либо помнить, что именно нужно передавать вот в конкретно эту функцию, либо опять же писать хуеву гору комментов. В реакте есть вроде проптайпсы, но они не слишком-то облегчают положение. Скорее даже наоборот, добавляют только лишнего гемора, т.к. нужно постоянно поддерживать их в актуальном состоянии.
>>1038343 >Что, написание лишнего символа "=" для строго сравнения сократит продолжительность твоей жизни? Жопой читаем? Написал же русским по серому - везде, где в коде будет все-таки использоваться == вместо ===, придется приписывать пояснение, почему в данном случае сравнение с приведением типов не вызовет кузькину мать. >Самодокументируемые функции - миф. Самодокументируемая функция - функция, контракт которой ясен из нее самой. Так что да, в жсе они, конечно, миф, раз сигнатура-то, по сути, никакой информации не несет, не то что о типах, а даже о количестве аргументов.
>>1037318 подписываюсь под каждым словом про комьюнити, да и в целом всё так и есть js комьюнити - это как раз и есть канализация с пика, только еще булькающая каждый пузырёк - новая либа или язык поверх js
Установил babel-cli в скриптах пишу "start": "babel-node ./server.js" там сервак на экспрессе с es6 так вот первый раз запускается нормально, когда убиваю процесс в git bash, сервер остается висеть прослушиваемым пока не перезагружу комп повторный npm run start выдает ошибка т.к. сервак уже висит вот чо за хуйня, посмотрел у всех все нормально, погуглил ничего не нашел
>>1038314 контекст сломают рано или поздно поэтому смысл его использовать. и пробрасывать пропсы через неск уровней и уродливый код который из этого следует мне не оч
>>1038430 >node -r babel-register ./server.js все равно такая же хуйня заметил что когда в консоли прямо пишу "node ./server.js" все нормально работает, т.е. убиваю процесс и сервер падает а когда эту же команду пишу через npm run start в скрипте "start": "node ./server.js", появляется такая вот хуйн
>>1038426 > контекст сломают рано или поздно ...и полетят ВСЕ сторонние стейт менеджеры. Да, пейсбук предупреждает об этом явно, но вероятность брейкинг чейнджес откровенно мала. По поводу красоты кода - это уже отдельная тема. В моем прожекте это нисколько не ухудшило читаемость, потому что я придерживаюсь определенных правил. В корневом компоненте описываю начальный стейт и импортирую экшоны, джаст лайк ин редакс, все это дело аккуратно засосываю в контекст. Далее, в компонентах уровнем ниже (эти компоненты являются корневыми по роутам) импортируется набор экшонов и стейт из контекста. А уже в каждый дочерний компонент из корневого передается два пропса - actions и store. Никакой путаницы, никаких инжектов стейта из контекста в компонентах на нижнем уровне. Все работает без редакса, потому как для моих задач сторонний стейт менеджер это оверкилл.
>>1037952 по реакту, на самом деле, лучше и проще официальной документации ты ничего не найдешь. По редаксу можно видосы с лерн код или еще что-то на примере рабочего приложения. Redux/MobX и другие имплементации общего стораджа довольно полезные вещи (сам сейчас на реакте и редакс ппц как упрощает жизнь и делает код и взаимодействие компонентов понятнее)
Сап, посоны. Есть три стула: 1. Учить джаваскрипт по спираченным с торрента интенсивам htmlacademy. Из плюсов: бесплатно, можно проходить не торопясь, с перерывами. Из минусов: вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи. Еще и автопроверки нет, как на джавараше. 2. Пройти тот же интенсив, но платно на htmlacademy. Плюсы: возможно, таки узнаю много нового, но это не точно. Минусы: бабло 3. Пройти платный курс на learn.javascript.ru Плюсы и минусы те же. Ну и возможно четвертый вариант, который предложит мне анон.
Сам уже работаю веб-программистом, но чувствую, что есть пробелы, ибо учил все на ходу, по мере необходимости.
>>1038879 Что-то у тебя все стулья с хуями. Накачай себе разных книг и читай в свободное время. Гугли по работе все места, которые не понимаешь, эффект будет заметнее чем от курсов.
>>1038879 >вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи Ну так правильно, потому что видосы и задачи - хуйня без задач (вот это я скаламбурил). Сразу бери и хуярь что-нибудь полезное и серьезное, по ходу дела разберешься во всем, и гораздо быстрее и лучше, чем если будешь сидеть дрочить себе полгода подзалупными задачками.
Как на js будет выглядеть такая функция? Вызывается функция в которую вписываем вопрос. Вопрос задается до тех пор пока не будет ответа 'y' или 'n'. Ну и потом этот ответ возвращается и выводится.
def ask_yes_no(question): ____response = None ____while response not in ("y", "n"): ________response = input(question).lower() ____return response
answer = ask_yes_no("\nPlease enter 'y' or 'n': ") print("Thanks for entering:", answer)
Сап, ребят. Я или поехал, или что. С каких пор нельзя сделать Object.setPrototypeOf(Object.prototype, )??
Так всегда было, или это новые спеки? У меня от чего-то четкая уверенность (или ложные воспоминания), что раньше можно было удленять дефолтную цепочку.
>>1038879 Парашекурсы интенсивы, блять, этож надо было такую хуйню придумать, просто пиздец - хуйня и не нужны. Применяя язык в манязадачах со свистоперделками ты забудешь всё нахуй через неделю.
>>1038879 > Сап, посоны. Есть три стула: > 1. Учить джаваскрипт по спираченным с торрента интенсивам htmlacademy. > Из плюсов: бесплатно, можно проходить не торопясь, с перерывами. > Из минусов: вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи. Еще и автопроверки нет, как на джавараше. > 2. Пройти тот же интенсив, но платно на htmlacademy. > Плюсы: возможно, таки узнаю много нового, но это не точно. > Минусы: бабло > 3. Пройти платный курс на learn.javascript.ru > Плюсы и минусы те же. > Ну и возможно четвертый вариант, который предложит мне анон. > Сам уже работаю веб-программистом, но чувствую, что есть пробелы, ибо учил все на ходу, по мере необходимости. Ща бы купить видосов на 100 часов где пересказывают синтаксис.
В детстве родители нанимали репетитора по английскому. Молодую тян. В воспоминаниях об этих занятиях остался только образ груди выглядывающей из слегка расстегнутой спортивной куртки.
>>1038937 >>1038963 Согласен. Да и по цене получается 80К за все курсы академии - как-то многовато. Я на джавараш в 2014 за 100$ весь курс купил, так там дохуя всего дается с задачами и теорией. А щас вот в веб перекатился, думал, найду аналоги, а хуй там. Буду пилить свой проектик тогда и дрочить по книгам.
Какую IDE лучше использовать вкатывающемуся в JS шарпоёбу, привыкшему к Visual Studio с ее IntelliSense? Студия кажется тяжеловатой для жс, Sublime и Atom иногда неправильно подсвечивают синтаксис и не могут в автодополнение.
>>1039820 Тебе ж на чистом английском пишут: document.getElementByClassName - это не функция. Т.е. такой функции не существует. Потому что elements, ведь оно может возвращать много.
Крч, создаю объект workers = {}, в нем создаю еще один объект workers[x]. В этом объекте создаю кучу листенеров. workers[x] должен отработать последовательность действий. Но иногда он фейлит и нужно запускать процесс с начала. delete workers[x] не убивает листенеры. Вопрос: как убить все связанное со свойством объекта самым простым способом?
>>1040325 Не пользоваться ООП объектно-ориентированной парашей? Не использовать функции без аргументов, которые мутируют хуй пойми что? Как тебе такое, а?А?А?
антоны не стукайте плиз https://jsfiddle.net/dxnz11q5/ скролл вниз - нормально выезжает скролл вверх - после анимации пропадает, как и должно скролл опять вниз - после анимации пропадает, как не должно почему оно не удаляет листенер? и может подскажите как сделать, чтобы при быстром скролле туда-сюда анимация продалжалась а не с самого начала тригирилась?
>>1040331 не вижу разницы для читаемости между: function x(obj) { doSmth(obj) } и предыдущим примером. хотя нет, this всеже понятнее. вот если this заменить на @, будет еще лучше.
>>1040333 >почему оно не удаляет листенер? С хуя ли не удаляет? Ты вообще в курсе, сколько ты лиснеров вешаешь? Повесь алерт в блок else и охуеешь от того, сколько раз у он тебя затриггерится.
>>1040449 от души спосибо я подебил эту хуергу через i = 1 i = 0 маме операция нужна не супер серьезная но денег нет она не может работаь несколько месяцев теперь я стал на ступень выше к джуну надеюсь как можно скорее смогу пойти на работу сам спасибо огромное!!!!!!
>>1040610 > писать объекты, где метод который меняет объект, будет возвращать новую копию Он начинает о чём-то догадываться. Осталось сделать последний шаг - избавиться нахуй от объектов.
Анончик, поясни: подойдёт ли Angular 2 для фронта с ~12 полноценными шаблонами экранов (не компонентами)? Задачи типовые: вывод списков, слайдеры-хуяйдеры, карта. Сложных компонентов вроде как нет, но предстоит заёбистая логика валидации, переходов и реста по кд. Ранее пользовал ангуляр первый. Но все пишут, что АНГУЛЯР 2 ЭТО ГРОМОЗДКО И ОВЕРКОД, ПИЗДАРИКИ ГОТОВЫМ КОМПОНЕНТАМ, ТОЛЬКО ДЛЯ БОЛЬШИХ ПРОЕКТОВ.
Аноны, кто-нибудь писал юнит тесты в NodeJS? Запускаю тест - вываливает ексепшн - модуль не найдет. Хотя модуль есть, инсталлирован глобально. Не понимаю что за гавно такое.
>>1040827 fnctn_one/two хранят ссылки. что такое ссылка, без программирования? положи яблоко на стол и в тетрадке запиши: яблоко на столе. добавь еще одну запись в тетрадь: яблоко на столе. теперь затри первую запись, замени ее: есть еще одно яблоко в подвале. от того, что ты затер запись, яблоко с стола не исчезло. вторая запись все еще есть.
другой человек может посмотреть в тетрадь и найти яблоко. если он его откусит, то яблоко изменится, хотя ссылка так и будет указывать на яблоко, но уже на кусок яблока.
>>1040794 > модуль не найдет. Хотя модуль есть, инсталлирован глобально Глобальная инсталляция в ноде только для утилит командной строки нужна. require парашу в каждый проект надо инсталлить локально.
https://habrahabr.ru/company/ruvds/blog/335144/ Порадовался. Будет им уроком, не хрен городить инфраструктуру уровня Java для языка, который двигает формочки. Дали вам <script src="...">, вот и не умничайте.
Пацантре, подскажите. Мучу игрулю в которой будет диалоговая система. Вот сижу думаю как выстроить дерево диалогов, то есть само дерево диалогов я прекрасно понимаю как выстроить, меня интересует как реализовать "выбор". Пока придумал впихивать в текст диалога СПАНЫ или ХРЕФЫ с яваскриптом внутри. Чтобы оно появлялось в диалоговом окне, и на эти ссылочки жмякаешь, и вызывается функция с определенными аргументами чтобы там статы поменять и нужное продолжение диалога запустить. Вроде бы просто, да вот думаю что строю замок из костылей и велосипедов.
>>1041390 Делай из него стринг, пихай его в тег <script> и всобачивай через append какой-нибудь (но почему бы тебе самому ручками его в .html файле не вписать?)
>>1041400 Ну так у меня бесконечное множество диалогов с различными выборами которые могут вызывывать различные функции, и всего одно диалоговое окно которое очищается после выбора варианта.
Спасибо за советы, и правда нету смысла городить evalы, пихать код в стринг. Просто создам несколько спанов с запасом, спрячу их, и когда будет выбор буду через функцию динамически их менять по всякому. Можно же спокойно вызов с функции с аргументами запихать в строку и через ИннерХТМЛ приписать к элементу
суп фронты. такое запитание: а чем натюнить VSCode шоб он мог в рефакторинг - понимал где какие переменные пропали/появились, понимал область видимости и помогал отыскивать проблемы типа
>>1041456 Да не вариант на самом деле. В игре эти диалоги слишком сильно зависят или влияют на различные переменные. Так что в итоге выйдет куча вызовов функций, куча проверок, и между ними ссылочка на контейнер с нужной фразой. Проще и понятнее держать все рядом. Ну это пока, потом может запилю мини велосипед чтобы смотрелось аккуратнее. Аналог ренпаевской системы например.
>>1041963 Но я хочу по фуллстэку угореть. С бэкэндом разобрался помогло то, что приходилось раньше работать с джавой и пхп, а как на это повесить фронт я чото даже не знаю, с какой стороны подобраться.
Блядь как в этой ебаной виндовс шрифты удалить? Хром ебаный тянет все время локальный шрифт, а не его аналог с гуглофона, локальный корявый пиздос. Удалиться не удаляется, потому что УЖЕ ИСПОЛЬЗУЕТСЯ блядь, перезагрузил, а вот хуй, они уже все сразу заняты и хуй удалил.
>>1042386 Грывни это рубли деленные на 2.5, математик хуев. А вообще в треде лучше никого не слушать - тут один джуны и капелька пре-мидлов, так что дельных советов не услышишь - надо идти на тематические форумные тусовки.
>>1042393 Сейчас они имеют вид аля пикабушечки. Типо вместо отедьлной темы - ПОСТ, и под ним в комментах сидят бурлят. Хабр тоже не просто новостной агрегатор
>>1042399 Лучше на гиттере найти уютненькую комнатку единомышленников. И квалификация повыше, и узкоспециализированную конфу найти не проблема, да и общение поактивнее будет.
>>1042415 Джуном без опыта 500$ на первой работе получал на руки. Надо просто знать куда ломиться. Я вообще первый годик по стартапам тусил, там проще с устровойством в разы. А потом уже можешь на свою макака-галеру веслорабом устраиваться и гребсти с другими рабами.
>>1042437 Ну я понял, нечаянно реплай прикрепился. Так если на старте сможешь сразу на ремоуте кому-то втюхаться то уже хорошо. Я ж в первое время вообще одну страничку верстал месяц еще и как ракал и я хз ктоб такого долбоеба еще содержал кроме местных стартапов.
Слушайте слушайте, есть проблема, я неплохо разбираюсь в js, сейчас дрочу react, с этим проблем вообще нет, но очень плохо могу в css, анимации, трансформации, всякие трюки, меня хватает на bootstrap для стилизации, насколько вообще критично фронту шарить в верстке, недели две ищу работу и очень много где требуют "хорошее знание css/адаптивная верстка/хуй пизда джигурда. Бросать все и учить css или искать нормальную контору, где этим занимается верстак?
>>1042474 Ты же мордой занимаешься, не знать как морду пилить - как минимум хуйово. Ну это не главное, но понимать как это работает надо, и по хорошему из версталы становиться жс макакой надо. Ну в это въехать не сложно, так что для базы посиди на хабре почитай статьи по верстке. Главное чтоб ты въезжал как тебе сделать какой-то блок и как это сделать (костылями не костылями - но хоть как нибудь). Это не сложно, так что быстро въедешь и базы вполне хватит, если близко с этим не работаешь.
Ребята, жс это не с++, на нем реально легко писать. Даже думать особо не надо. Есть заковыристые вещи, но сейчас ведь один реакт, можно правой пяткой набирать код и будет все ровненько.
>>1042413 Но 50к в год это около 4к$, с вычетом налогов+оплатой жилья много ли остаётся? Зарплата среднего врача или фризеровщика. 70к$+ уже более менее хорошая зп чтобы жить в крупном городе.
>>1042544 о, кстати, хороший вопрос: как гулять по стеку в рамках VSCode с учетом разбивки модулей, так чтобы стек движка не был настолько подробный? чтобы если что-то падало, небыло бы видно стека из минифицированного реакта? как в любом нормальном языке
сап сеньеры, через пару месяцев собес в <epam/> кто нить в курсе насколько жестко, вот думаю отказаться от их предложения прийти пообщаться т.к. кажется что не вывезу. могу попросить написать через год, а за это время sicp'ом и гоф'ом измазаться
>>1042589 > отказаться от их предложения прийти пообщаться т.к. кажется что не вывезу Совсем дебич? > sicp'ом и гоф'ом измазаться Ебать ты долбоёб, земля тебе пухом, братишка
>>1042652 тайпскрипт? а что там осиливать, микрософт дебики решили запилить классы и прочий ооп. И все бы ничего, но компания эта уже себя показала и я бы побоялся использовать их говно в продакшене.
>>1042543 ты и так уже зашкварен об фейсбук. еще и об индусофт зашквариваешься. а по поводу платный - да он 8 ебаных бачей стоит в мес, бомж ты блять. 8 бачей стоят пять минут работы любого бомжа. все работает из коробки без ебли с говноплагинами которые накостыляли другие бомжи из опенсорс "коммунити" и быстрее чем хромоговно. пропусти один смузи и купи себе иде и работай как профессионал а не ссаный хоббиист. используй продвинутые тулзы, не молоток ебаный с гвоздями
>>1042589 да не, я понимаю что оно не особо в работе нужно около 3х лет на реакте верстаю да на буцтрапе программирую прост. и так не особо комфортно на собеседованиях себя чувствую, а если поднажмут, могу и на тупой хуйне как дите облажаться
Вопрос про firefox developer tools. Есть ли какой-нибудь способ сделать разбивку исходников в firefox devtools по папкам? Сейчас это выглядит как список всех js файлов, которые были загружены. А если используется, к примеру webpack, который генерирует sourcemap, то в devtools список всех модулей, которые были сгенерированы. Это крайне неудобно, можно сделать как в Chrome? Использую Chrome давно, но хотелось бы получить какой-нибудь user experience от firefox, пока что на мой взгляд вообще не юзабельно для разработки. Возможно я просто что-то делаю не так. Firebug не предлагать, так как он уже вроде как устарел и не обновляется.
>>1042553 При чем тут VS Code? Тут в браузере упало. Если надо отлаживать под VS Code наверняка есть какие-то дополнения для него, хотя я хз вообще как ты это делаешь и зачем. Стек всегда полный, показывает трейс от и до все точки во всех функциях, через которые прошел упавший синхронный (а со специальным включенным параметром в Chrome и асинхронный) вызов функции. В любом нормальном языке список такой же. Не знаю считаешь ли ты Java нормальным языком, но там еще пизже показан трейс из вложений хуевой тучи абстракций, есть даже картинка как это все там выглядит, но искать я ее не буду.
>>1042938 Для разработки под второй ангуляр он таки да, не обязателен. Но это тоже самое что писать под React с использованием одного только JS без JSX, то есть крайне неудобно. Хотя в целом соглашусь наверное, ошибки типизации идут от кривизны рук и отсутствия соглашений.
>>1042733 >компания эта уже себя показала MS в плане исследований и новый направлений всегда хороши, а их технологии живут благодаря долгой поддержке. По сравнению с гуглом, это хорошие вещи.
>>1042943 Зачем заново изобретать велосипед? Ты ведь сам придешь со временем к какому-нибудь простому фреймворку типо backbone/react чтобы снизить число копипастного кода.
>>1043026 Двачую, переехал из Джавы, тут же уебался об ваше ебучее прототипное наследование, невозможность типизировать данные. Пару недель назад узнал про React и моя жизнь изменилась. Охуенная штука, зависимость есть. А еще и РЕДАКС!
>>1043044 1) Делаешь аккаунт на гитхабе. 2) Берешь create-react-app 3) Делаешь калькулятор займов: два селектора (придумай опции сам), поле для ввода суммы, выбор срока, ридонли поле с результатом (формулу придумай сам) 4) Заливаешь полученный результат на жидхаб (если осилишь gh-pages, +бал)
Ребята, дам вам совет. Бросайте жс, начните учить что нибудь серьезное, типо java, c++, c#. Ищите работу с ними джуноми за еду, потом фриланс. Хороший с++ фрилансер получает 4-5к долларов в месяц.
Я дико извиняюсь за ультра-нубский вопрос, но блять где вы, жс-пидорыгоспода проверяете свою писанину? То есть вот я, свой богоподбный пистоновый код открываю в терминалецмд интерпретатором питона. Но что делать с жаба скриптом - ума не приложу.
Здарова, бандиты. Мне нужно запилить простенький сервис, который должен будт регистрировать аккаунт для пользователя, принимать от него данные и обрабатывать их. В интерфейсе нужны кнопки и карусельки, типа как у впаше при просмотре изображений. Я ничего особенно не знаю, кроме пистона, ну и по мелочи хтмл/цсс тащемта могу наверстать это быстро Знающий анон, скажи, что мне понадобится для реализации этой ебатеки? Джанга, фласк? А может лучше НАСТЯ вообще что-то другое начать учить, типа джава скрипт или еще какой хуйни. Я вообще не не шарю в вебе.
>>1043072 Алсо как делают жскрипт, который сработает если закинуть его в адресную строку браузера? Делал свое говно даже в одну строку, все равно не пашет. открывается гогольсерч который показывает результаты поиска по моему говнокоду, лол
>>1043090 В любом современном, не маргинальном браузере, есть консоль. Открывается по f12. Если тебе нужно окружение браузера.
Тобой описанный питоновский REPL, есть точно так же в ноде, если тебе нужно окружение ноды. Просто запускаешь ноду в своем терминале, точно так же как и питон, и вот тебе твой REPL.
Про вопрос с кодом в адресной строке, есть такая URL-схема, как javascript. example >javascript:alert('тыхуйбля')
>>1043094 >javascript:alert('тыхуйбля') имей ввиду, что, например хром (как остальные не знаю), не даст тебе просто так взять и скопипастить это в адресную строку. Поэтому схему писать надо ручками.
>>1043128 >>1043130 Смотрите-ка как мощно вебдауны рвутся. Неспособны осилить ничего, кроме своей реакт-хуякт-вебпараши, оценить жс в разрезе дизайна ЯП, только и могут, что полыхать, лол.
>>1043062 >серьезное, >типо java, c++, c# Конпилируемые параши с обязательными паблик-статик-фабриками-синглтонов, чтоб макаки не охуевали в кандалах. Из-под барского сапога писать — это тебе не массив с числом складывать в рантайме и получится строка, какие уж тут шутки. Барин хороший, барину видней.
>>1043131 >оценить жс в разрезе дизайна ЯП Ну дык попробуй оценить, конпилятор ты окаменелый, дизайн языка, который может произвольно выполняться из произвольного источника на клиенте и никого не убить при этом. Да ещё чтоб он был при таких рисках настолько простой, что был бы доступен любому автору, решившему наполнять Веб и складывать массив с числом для решения бизнес-задач, а не только элитному отборному байтоёбу без жизни, зато с охуенными познаниями в дизайне языков, о которых всем нужно рассказать и детектировать бутхурт, пытаясь спрятаться в строгоконпилируем скорлупке от реального мира и своего в нём места.
Не понимаю, помогите. Как в данном случае вообще работает возвращаемый объект?
1.У него нет названия, он не сохранен ни в какую пеерменную или свойство внешней функции. Это вообще роли не играет?
2. Почему методы этого объекта считаются методами внешней функции? С какой радости мы имеем право писать вот это counter.getNext() и даже получать вменяемый результат? В моем понимании эти методы относятся к обозначенному "анонимному", хз как его еще назвать, объекту. Или return их присваивает внешней функции?
>>1043230 Ну карочи объект это типа розеткус пикрелейтед. У него есть поля (дырдочки). Поля могут быть разного типа, числа, строки, функции, другие объекты и т.п. Можно на лету добавлять новые или удалять старые. Так и живем.
>>1043224 >Это вообще роли не играет? Нет, важно то, что этот объект доступен для обращения через переменную counter.
>Почему методы этого объекта считаются методами внешней функции? Методы возвращенного объекта не считаются методами "внешней" функции. Функция просто возвращает объект с такими полями "методами". Она точно так же могла возвращать любое другое значение, строку, число, что угодно еще. Самой функции от этого не тепло не холодно. >С какой радости мы имеем право писать вот это counter.getNext() Мы имеем на это право после того, как определили такое поле в возвращенном объекте. counter же и есть тот самый возвращаемый объект.
>даже получать вменяемый результат Этот пример написан, чтобы продемонстрировать как работают скоупы. Благодаря этому механизму и получается вменяемый результат. Вызов функции makeCounter создает контекст ее выполнения. В нем объявляется и инициализируется переменная currentCount. В ней же при каждом вызове создается и возвращается новый объект, который мы в дальнейшем используем как counter. Поскольку и переменная currentCount и возвращаемый объект были созданы в одном контексте, методы возвращаемого объекта могут обращаться к этой переменной. Это как если бы возвращаемый объект "захватил" контекст вызова функции в котором он был создан и продолжал его "удерживать" пока существует сам. Так переменная currentCounter связывается с возвращаемым объектом.
>>1043247 Я снова тот анон с вопросами, который теперь немного успокоился. В общем, все понятно, кроме того как... ммм... В общем, смотри, правильно ли я понял?
У нас есть функция. Если она ничего не возвращает, то она равна undefined. Но в нашем случае она возвращает объект, в котором есть методы. Это не значит, что эти методы теперь принадлежат внешней по отношению к данному объекту функции. НО! Как я понял, сам факт вызова этой функции возвращает этот объект и эээээтоооо... Это как будто мы просто вызвали объект? В смысле, если как если бы вообще никакой функции не было, а мы просто создали пустой объект и вызвали его, типа, покажи че там у тебя. Но поскольку объект не пуст, а с методами, мы можем и методы вызвать. А право писать counter.getNext() мы имеем потому, что counter.некий_метод это то же самое, что просто_объект_а_не_функция.некий_метод? Разница в том, что если бы мы просто создали объект, он не имел бы собственного лексического окружения и работал бы только с глобальными переменными, а если оформить через функцию, то переменную currentCount можно скрыть. Да? Я правильно понял?
>>1043299 >Т.е. сам факт возврата объекта из функции означает, что при её вызове мы, по сути, работаем с этим самым объектом? Если я правильно понял твой вопрос, то не совсем так. Обрати внимание на https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Working_with_Objects >Создание новых объектов >Использование инициализаторов объекта Запись вида {...} создает новый объект. Это значит что каждый раз, когда будет вызываться внешняя функция makeCounter, будет создаваться +1 новый объект и он будет возвращаться как результат выполнения. Главное здесь, что конструкция {...} создает каждый раз новый объект.
Он не будет привязан к внешней функции, по крайней мере пока ты сам это явно в коде не определишь, такая возможность потенциально есть. Но в коде на твоем скрине такого нет.
В этом примере в самом деле нет ничего особенного просто функция возвращает просто значение. Она так написана, что это значение является создаваемым внутри функции объектом, но оно опять же могло быть чем угодно. То, что делает этот пример примечательным, это использование скоупа для "хранения" переменной currentCount. Довольно часто можно увидеть такой прием на практике. Например, модный молодежный redux через это работает. https://github.com/reactjs/redux/blob/master/src/createStore.js#L247 Для понимания нужно просто разделять саму функцию как набор инструкций для совершения каких-либо действий и контекст ее выполнения. Контекст создается каждый раз, когда функция вызывается, внутри этого контекста каждый раз инициируется переменная currentCount и там же создается новый возвращаемый объект. Опять же поскольку и переменная и объект разделяют в этом момент один контекст, "методы" объекта могут обращаться к переменной currentCount.
Если ты что-то другое имел в виду, то уточни, пожалуйста.
>>1043224 хотя интересно, что без ретерн эта хрень не работает Эврика! Так вот как делается ооп в жс. надо просто ретерн со скобочками перед методами ставить. ну спасибо что научил
Сап братва, у меня тут хуй застрял между зубами, никак снять не могу, помогите плиз. изучаю нод джс, а точнее адаптер монгоосе. Так вот, есть у меня некая схема https://pastebin.com/6yVUtj2j , мне вот что интересно, вот есть допустим интерфейс, в котором есть поле для ввода, и я хочу, чтоб сабмит этого поля добавлялся в массив по ключу ebaliMamkuOdmena в виде объекта {_id: id, body: text, timestamp: new Date(), ktoEbal: userName} прочитал документацию, но никак не смог понять как это среализовать, помогите плиз
>>1043224 >1.У него нет названия, он не сохранен ни в какую пеерменную или свойство внешней функции. Это вообще роли не играет? Название есть у переменной, объект это СОДЕРЖИМОЕ этой переменной. Точно такое же, как 123 или "Hello world!", например.
> 2. Почему методы этого объекта считаются методами внешней функции? С какой радости мы имеем право писать вот это counter.getNext() и даже получать вменяемый результат? В моем понимании эти методы относятся к обозначенному "анонимному", хз как его еще назвать, объекту. Или return их присваивает внешней функции? У тебя counter - это переменная, в которой хранится ссылка на объект. Запись counter.getNext() означает: 1) получить объект, который хранится в переменной counter; 2) вызвать метод (поле-функцию) getNext() у этого объекта.
>>1043432 Какая-то хуевая аналогия, цикл на goto почти так же читается, в некоторых языках вообще рекурсия вместо циклов и ничо. А вот continuations с запоминанием и возвращением в контекст нихуя блять не делаются в принципе, если язык их не поддерживает. Только коллбек хелл.
Да, я другое имел в виду. Сначала скажу предысторию.
Я начал сначала учить верстку, хтмл/цсс, сверстал свой сайтик и тд, понял что этого мало и решил учить джаваскрипт. Т.е. программирование для меня - это нечто новое, и все что я знаю из айти на сегодня - это хтмл/цсс. Наверное, ты тоже знаешь цсс? Если да, тебе знакома такая вещь как селектор с некоторой вложенностью. Например, есть такой код хтмл:
У нас есть один большой блок с неким классом, внутри него - еще какие-то блоки с другим одинаковым классом и в первом из этих вложенных блоков есть еще один - вложенный, без класса. Мы можем найти его в цсс таким селектором и задать цвет шрифта:
.blabla_1 .ololo div { color: green; }
Очевидно: в элементе с классом .blabla_1 лежит элемент с классом ololo в котором лежит некий блок div.
Вот это то к чему я привык. И сейчас я вижу функцию, в которой есть объект с методами, но это выглядит так будто мы вызываем методы, которые принадлежат функции как объекту, т.е. в моей голове ломается условный "селектор". Вот что должно было быть написано, что бы запись counter.getNext() не сломала мне мозг:
var currentCount = 1;
var counter = {
getNext: function() { return currentCount++; },
set: function(value) { currentCount = value; },
reset: function() { currentCount = 1; } } //просто объект с методами
makeCounter.reset = function() function() { currentCount = 1; }; //Мы записали в функцию методы как в объект и они теперь принадлежат ей.
В таком случае все ясно если думать как врестальщик: есть объект counter? Есть. Пишем селектор: counter. В нем есть метод? Есть. Вложенность - через точку, пишем: counter.getNext() Держим в уме, что этот метод может вызваться только в этом объекте, т.е. селектор обладает ооооочень высокой специфичностью. И тут ВНЕЗАПНО мы делаем анонимный объект, пишем "селектор" через функцию и все это как-то работает! КАКОГО ХУЯ!!!!!!!!!!!!!!!!!!!!!!!!!
Вот я и пытаюсь понять, в какой момент мы подменили объект на функцию. Как я понял, и понял, скорее всего, неправильно, это то что return внутри функции логически "вытягивает" содержимое объекта и ложит непосредственно в функцию и даже начинает её объектом_Васей, а не функцией_Сирожей.
Ты не мог бы шаг за шагом расписать что происходит при написании этой херни и в момент вызова? Просто чтоб я один раз увидел. Я знаю, что уже всех заебал, но правда хочу понять что происходит
>>1043425 >Название есть у переменной, объект это СОДЕРЖИМОЕ этой переменной. Точно такое же, как 123 или "Hello world!", например.
Но ведь мы можем туда вписать десяток таких объектов без имен. Как оно поймет, который именно мы имеем в виду?
>counter - это переменная, в которой хранится ссылка на объект
Тот же вопрос. С точки зрения css такой селектор не может работать т.к. выдаст слишком много результатов, т.е. он недостаточно специфичный. Вот это я написал>>1043439
Если у вас есть еще настроение мне это объяснять, пишите, я обязательно прочитаю. Пока потихоньку буду раздуплять статью про работу с объектами на сайте Мозиллы и потом спать. Я реально тупой сейчас и плохо соображаю, но есть мотивация на это потратить столько времени, сколько нужно, пока не пойму. Подписался на тред, что называется.
>>1043452 Вот что такое замыкание по версии сайта лерн джаваскрипт: >Замыкание – это функция вместе со всеми внешними переменными, которые ей доступны.
ВНЕШНИМИ, ты понял? А я не понимаю кка работает внутренняя единица, в данном случае объект внутри функции.
Я знаю про то что сначала ищутся переменные во внутреннем лексическом окружении, если нет такой - на уровень выше, там нет - еще выше пока не найдет или не найдет и даст ошибку.
>>1043462 Хорошо. В таком случае вопрос остается таким же. Зачем тратить время на компанию, которая платит гроши, официально ты в ней не значишься, когда в резюме можно писать что угодно? Не проще ли перепрыгнуть этап с дешевой компанией и сразу искать нормальную?
>>1043439 Я кажется понимаю, что ты имел в виду. Проблема в том, что css и js принципиально разные типы языков. Я не на столько силен в формальных формулировках, кто знает лучше, пусть поправит. Css то, что называют декларативным языком, js императивным. Работая над css ты задаешь набор правил, что должно быть на странице описывается селектором и как оно должно выглядеть стилями. При этом не обязательно на странице будут элементы, которые соответствуют всем селекторам в твоих таблицах стилей. Элементы могут динамически появляться и исчезать, но это не важно, потому что таблица стилей описывает набор правил по которым нужно находить элементы и применять к ним стили, а не состояние страницы.
Императивные языки нужно читать иначе, они описывают поэтапное решение проблемы шаг за шагом. Если таблицу стилей можно начать читать с любого места, может не всегда это будет удобно, но так или иначе можно в конце концов получить всю необходимую информацию, то чтобы понять код на императивном языке нужно проследить последовательное выполнение инструкций от начала до конца. А поскольку сферическое в вакууме выполнение инструкций смысла имеет немного, нужно еще отследить, как изменяется состояние программы при помощи этих инструкций. Выглядит это в твоем примере примерно так: 1. Объявляется функция с именем makeCounter. С помощью этого имени можно ее "вызвать" то есть попросить js выполнить набор инструкций, описанных внутри этой функции в соответствии с правилами языка. На самом деле можно сделать еще много разных вещей, но сейчас это не важно. 2. Когда функция будет вызвана с этой строки начнется ее работа. Здесь объявляется переменная currentCount и ей присваивается значение 1. Это будет происходить каждый раз, когда будет вызваться функция. 1, 10 или 1 000 000 раз, не важно. 4. Используется оператор return. В момент выполнения функция возвращает значение, которое идет следом. Еще здесь используется {, начало конструкции, создающей новый объект. Это значит, что результатом работы функции будет созданный с помощью конструкции {...} новый объект. 5. В объекте определяется поле getNext, оно ссылается на функцию, которая будет вызываться при обращении к этому полю. 6. Тот же оператор return. В этот раз он будет возвращать значение переменной currentCount. Доступ к значению currentCount имеется благодаря правилу работы областей видимости переменных. То же самое и для остальных полей возвращаемого объекта.
19. Отсюда начинается выполнение программы на скрине. Это первая инструкция в цепочке от начала до результата. здесь переменной counter присваивается значение, возвращаемое функцией makeCounter. makeCounter возвращает то, что определено при помощи оператора return(4), то есть новосозданный объект. В момент вызова makeCounter() контекст выполнения программы, то есть цепочка инструкций, переходит во внутрь функции makeCounter, то есть будут выполнены строки 2-16. После достижения оператора return контекст выполнения возвращается на строку 19, где переменной counter присваивается возвращенное функцией значение. 21. Выводится алерт с текстовым значением, возвращаемым getNext. Вернет оно то, что определено в операторе return, то есть значение currentCounter. Попутно currentCounter увеличивается на единицу. 22. Повторяется то же самое. ... дальше в принципе опять то же самое, за исключением того, что обращаются еще и к другому полю объекта.
Короче, программу на js нужно читать от начала до конца, отслеживая куда заведет нить выполнения инструкций и как выполнение каждой инструкции изменит состояние программы, значение переменных или, например, состояние браузера. И когда ты хочешь обратиться к чему-либо в программе ты должен убедиться, что это позволяет текущее состояние программы, например, что функция объявлена, а у объекта есть требуемое тебе свойство.
>>1043467 Какая кампания, маня? В кампании ты нахуй не кому не сдался. Я тебе по доброте душевной предлагаю упражняться за деньги, а ты выебываешься. Не хочешь, ну и сиди сычуй дальше, нахуй ты кому всрался.
>>1043449 Который вписали в текущий момент, очевидно же. В CSS переменных нет, там селектор связывается с определенным элементом раз и навсегда, это константа.
>>1043449 Вообще, что бы не кукарекали байтоебы, на примере этого анона хорошо видно, почему императивные языки хуже и сложнее для понимания по сравнению с функциональными, не имеющими изменяемых данных. Пора выкинуть JavaScript на помойку, заменив его на PureScript.
Блять не могу у Кантора понять строку в уроке. Решение заключается в превращении obj.className в массив при помощи split. После этого в нем можно проверить наличие класса, и если нет – добавить.
сама строка: var classes = obj.className ? obj.className.split(' ') : [];
што блять? тут же нет условия, что бы делать или-или. Ну похуй, перепишем в if.
Огромное спасибо, анончик! Теперь все ясно окончательно, правда. Конечно, статью я тоже буду читать. Теперь я немножко менее дебил, благодаря твоим стараниям.
Ньюфаг в Nodejs в треде Как отрубить выдачу ошибок в теле ответа? Использую экспресс+монгуз, и если, к примеру, пытаюсь кастануть к ObjectId неподходящую строку, то он вываливает в респонс следующую строку: CastError: Cast to ObjectId failed for value "WRONGOBJECTID" at path "_id" for model "MyModel" Не знаю, экспресс ли это так или монгуз ругается, но отрубить надо.
>>1043942 >>1043939 Окей, заменил next(err) на res.send(""), стало лучше. Но как-то в целом можно отключить вывод ошибки прямо в респонс? Запилить еще один мидлвейр в конец, который при наличии ошибок в предыдущих выдает 500?
>>1043946 У тебя один общий обработчик ошибок, который и отправляет ошибку в теле ответа. В нем и допиши отдельную обработку CastError, к примеру, вместо её отправки.
Говном тебя облили заслужено. Как ты добрался до методов массива, ловко пропустив описание литерала этих самых массивов, ветвлений и в том числе этот самый тернарный оператор - не ясно. Ясно лишь то, что ты все делаешь не так. И либо мудак, либо слишком сильно в себе уверен, что равносильно тому же самому. Начни сначала.
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы:
https://github.com/vladimir37/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/vladimir37/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/vladimir37/js-thread/blob/master/Wiki/tools.md
Конфа /pr/ в Slack:
https://slack-2chpr.herokuapp.com/
JS-конфа в телеграме:
https://telegram.me/jsthread
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.