Это копия, сохраненная 2 сентября 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - 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/ для серверного кода.
В тайпскрипте нет рантайм проверки типа, только проверка при компиляции. Если при компиляции оказывается, что тип некорректен - то он падает с ошибкой. Если нет - то компилируется без проверки. Гугли "runtime type checking".
>нет рантайм проверки типа
Спасибо; стоп, а нафиг оно нужно?
То есть, если при компиляции никакого инпута нет, он (инпут) будет от пользователя?
Жа эс я немного знаю, но хотел выучиться как положено.
Записался в епам курсы https://www.training.ru/Registration/Registration/1567
Меня отшили сказав что "Уровень английского у вас не дотягивает до необходимого".
Проверяли мой английский, спросив меня про ёбаные хобби!
Что за хуйня, анон?
Стоят ли подобные курсы того или дома тоже нормально всё учится?
есть у меня один чел в зале, выучился недавно на тренера, теперь косит под тренера и всем на уши приседает своей теорией как мы все неправильно делаем - заебал реально. но жмет при этом хуево и мало. короче его советы мы в рот ебем
Курсы ЭПАМа нацелены на создание новых для них сотрудников после прохождения пары этапов берут на испытательный, поэтому и английский нужен официальный язык компании
мимо когда-то проходил и вёл подобные курсы
точно нет:
obj.1
obj[1]
obj."1"
Ахуительная история
есть у меня один чел в офисе, выучился недавно на ментора, теперь косит под коуча и всем на уши приседает своей теорией как мы все неправильно пишем - заебал реально. но коммитит при этом прямо в мастер. короче его советы мы в рот ебем
>выучился недавно на ментора
Это как? Где такому учат и что именно там преподают?
>коммитит при этом прямо в мастер
Ему можно, он ведь ментор.
спасибо, сразу не догадался прогнать имена свойств на typeof.
Ну ок. Допустим есть readable stream, из которого идет вычитка данных
req.on('data', function (chunk) { data += chunk })
Что после обработки с чунком будет, в смысле не с данными а с куском памяти? Уйдет сборщику на освобождение? При этом стрим для следющей части данных память опять будет выделаться из кучи? Нет какого-либо решения например с колцевым буффером и приостановкой чтения при его заполнении, когда после обработки данных чунк возвращает в стрим. Ну или что-то подобного.
> опять будет выделаться из кучи
Ты говоришь это так, как будто это что-то плохое. Если охуенно быстрый generational GC охуенно быстрого движка V8 тебя так волнует, хули ты кодишь свою парашу не на расте?
function nodejsRandomBytes(size) {
.. const crypto = require('crypto')
.. return crypto.randomBytes(size)
}
webpack находит require('crypto') в теле фу-и. добавляет браузерный crypto polifyll. вот же говнюк.
Возьми да посмотри вакансии у себя в провинции.
А как мне дергать компонент что бы самому мокать его states?
Отвяжи начальный стейт от компонента, импортируя его из внешнего файла как объект. Мокать будет проще некуда.
У бабушки все забирай и у мамки, брейся как мамка, а то бабка даже усы не бреет уже.
>В чём причина популярности такого реально хренового языка как JavaScript?
Кто-нибудь пояснит почему все яваскрипт хуями кроют?
Он че блядь должен быть как кресты или че?
Старые пердуны не могут понимать коды без типизации и анальных партянковых полувековых выворотов.
А вообще тут не кодерский фактор, а человеческий.
Есть такие мудаки, которые вместо того чтоб освоить лучше покичиться какие они охуенные дохуя всё знают, а эта хуйня - вообще ее не надо учить, она хуевая и вообще для длобоебов.
Это от комплексов - пытаются залатать то, что не могут осилить язык для веб членодевок, которому меньше лет чем им.
Ну или им как всегда нужно чтоб мухобойка умела и пыль убирать и демократию наводить и чтоб хуй сосала, а если не умеет - то говно без задач.
Для простого проекта тебе этого хватит, ну можешь еще детальнее про JSX почитать.
Ну можешь про React Fiber почитать и сразу вкатиться.
Ну и react-bootstrap.github.io, если ничего особо хитровыебанного делать не надо можешь взять.
Если нужны будут юнит тесты - https://github.com/airbnb/enzyme
Хрен его знает, вот чуваки из Тинькофф заявляют, что его юзают https://youtu.be/dot5v3LUsq4 но по факту серверная часть в их банке без js в браузере не работает от слова вообще. Ну и сдаётся мне, что они пилят просто обёртку вокруг старого Java-приложения и сильно недоговаривают.
Их банк клиент от версии к версии тормозит все больше. Заебали уже. Открываешь страницу, а она еще 15 секунды просирается. Пиздец.
> 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, а дальше тот же код уже в браузере все это говно шевелил.
Это устаревший хипстерский термин. Типа, была идейка, что раз раз бекенд можно писать на жиес и фронтенд на жиес, то можно написать их так, чтоб они были изоморфны друг другу.
> изоморфны друг другу
Горю прост с этих хипстеров, они вообще знают что такое "изоморфность"?
Кто тебе сказал-то? В чем проблема, если у тебя есть кусок реакта отрендерить его в стринг со стороны ноды или в дом в браузере?
Потому что это баззворд для привлечения внимания, ничего за собой не имеющий? И что раньше им макаки сверкали в каждом втором бложике, а сейчас всем похуй?
Вообще совершенно ебанутое определение, кстати. Вот что значит, что бекенд изоморфен фронтенду? То что они написаны на одном языке и пользуются той же инфраструктурой или что? Очевидно что у бекенд-программы и фронтед-программы будут совершенно различные свойства и структура, какая впизду изоморфность?
По идее это должно было значить, что между бекенд-программой и фронтенд программой есть структурная эквивалентность и можно было бы выводить бекенд код из фронтенд кода или наоборот. Как, например, выводить программы из пруфов или наоборот. Но если в комп.сайнсе всякие изоморфизмы Карри - Ховарда ещё уместны, то для прикладного программирования всё это слишком абстрактно и размыто, нужны конкретные реализации и конкретные соответствия, а не просто некая размытая эквивалентность, которая может значить вообще хуй знает что.
Продумываю архитектуру хтмл тегов и цсс селекторов.
Потому что это охуенно медленно при большом количестве коннектов? Обычно рендерят на бекенде пару страниц, типа гостевой и ещё кое-что, то что до логина? А так, отредерить реакт можно на чём угодно, у чего есть интеграция с V8, хоть на похапе. И главный вопрос, причём тут изоморфность нахуй?
Ну ты выдал. Пол интернета работает на пхп, который именно так и делает. С хуя бы это медленно?
isomorphic тут при том, что в мирке жс говно которое работает и в браузере и в ноде так называют.
> Пол интернета работает на пхп, который именно так и делает. С хуя бы это медленно?
Логика уровня "полстраны голосует за путина, с хуя ли бы это плохо".
Блять, хуевый пример дал, щас сюда пол/по протечёт.
> поисковик мог это говно проиндексировать
Гугол, например, уже давно пытается жс исполнять. Пускай не расслабляется.
eval of strict mode code does not introduce new variables into the surrounding scope
А, ну и похуй, всё для людей сделали.
Весь этот html код сейчас за всю сессию юзера обычно весит как одна-две картинки на том же сайте, поэтому, передаёшь ты отрендеренный html или json для шаблонизации в браузере -- выигрыш в скорости иллюзорен, а вот сложность и надёжность во втором случае страдают
Конечно. Я про общий случай работы с теми же текстовыми шаблонами, это ИМХО несущественно даже для средних и больших проектов.
Если есть возможность перенести на клиент какой-то более сложный функционал на клиента -- ок, не спорю
ноде експресс
ща всех в офисе переиграю
В 2017 общий случай это когда роутер у тебя на азике, а на цпу говноязык с гц, который прост охуевает от ТЕКСТОВЫХ ШАБЛОНОВ. Подумой, во что всё обычно упирается в 2017, а?
Как и всегда: в базу и эзернет.
Что не отменяет того факта, что это охуенный тупизм выполнять на сервере работу, которую можно переложить в браузер юзера (современный дефолтный копуктер вполне жЫрный чтоб этого особо не замечать + и все привыкли уже). Единственный аргумент - это индексация поисковиками и обычно, если это существенно, рендерят на беке только часть. В некоторых случаях это, конечно, неприемлемо, если у тебя там интернет-магаз, к примеру, но если у тебя приложение, где без авторизации делать нахуй - то и рендерить на сервере кроме логин пейджа нечего.
Переводил проект с жс на тс. С ключенным any и прочим все равно денек-два, в зависимости от размера проекта, поебешься пока оно сконпилится.
Ну смотря сколько ты сам будешь код переписывать, а собрать - за тебя сборщик соберет и работать будет.
2. Добавил const internalUtil = require('internal/util');
3. Выполнил node test.js
4. Получил Cannot find module 'internal/util'
Вопрос: почему?
На codewars стабильно вижу return через ? :
Ну так всё-таки, типы значений, принимаемых от пользователя, TypeScript сам, значит, проверять не будет?
Нет такого пути\модуля в моем локальном каталоге, это builе-in модуль смого nodejs - github.com/nodejs/node/tree/master/lib/internal
Пользователь тебе всегда дает String. А дальше ты уже его кастишь/парсишь как тебе надо.
Пидорсы, так и написали что не дают эти модули исплоьзовать.
для присвоения переменных
в половине книжек пишут, что иное использование - для говнокодеров
И чем по твоему return принципиально отличается от присвоения переменной в данном случае?
Считай что ты "присваиваешь" в результат выполнения функции.
а ведь правда, слушай, благодарю.
var test = function() {return (a > b) ? "s1" : "s2"}
если сократить, то выйдет
var test = (a > b) ? "s1" : "s2";
пиздец, щас бы на двощах саморазвиваться...
А кто его ругает?
Жду когда можно будет писать
> do
> shit <- liftAff $ random 0 13
> pure $ tasty shit
Каррирование наркомана?
Почти все реактопидоры пользуются им. Неужели нет какой-то охуенной причины?
по-моему, половина вещей в JS сейчас проистекают от моды и рекламного шума
Ты совсем дегроид что ли? Возьми да попробуй, не понравится - хуярь на ванильке.
> Это решает проблему X в условиях Y, при этом имея недостаток Z. Если у тебя есть проблема X и ты в условиях Y, а Z не проблема — попробуй.
> Ждать от дегроида адекватного ответа
Потому что это декларативно и охуенно. Пишешь <PizdaZalupa onClick={this.hui} /> и у тебя рендерится компонент Пиздазалупа, по клику на который срабатывает метод хуй. В чем проблема то?
Какая тут может быть причина? Ты ведь понимаешь, что jsx преобразовывается в обычный js?
<div className="sidebar">
в
React.createElement(
'div',
{className: 'sidebar'},
null
)
> PizdaZalupa({onclick: this.huy})
Нахуя еще один нескучный синтаксис? Чем он лучше обычного жса, что ради него нужно обмазываться бебелем и прочим говном?
Окей, а если мне надо ререндерить на изменении этих начальных стейтов?
Сейчас это делает setState. А если это у меня будут не стейты компонента, а аттрибуты объекта, как мне ререндерить.
Завести какой-то фейковый Стейт для реренлеринга сугубо и его сетать после аплейта аттрибутов? Лол
Блять но нахуя? Шума визуального больше: все эти </ ={}>
В 61 хроме завозят нативные модули и можно ебашить вообще без бабеля. Нет хочу говном обмазываться.
и что ты "наебашишь" в продакшн? Заглушку "поставьте 61й хром"?
Олсо, помню времена, когда на сайте писали:
"Сайт работает в кодировке Win-1251", были даже сайты с несколькими версиями под разные, лол
> можно ебашить
Ты хоть видел, как "ебашится" на нативных модулях? Как по мне, так даже сборка галпом удобней.
> Когда приложение работает нативно, хотсвап кода через хром-дебаг-протокол 10/10
Бросай курить спайсы.
ребята, кто нибудь писал на блазе?
почитал тут маленько, вроде для вката самый простой фреймворк, проще вуя и конечно реактов всяких.
Бляяяядь. Хром не умет модули патчить
https://chromium.googlesource.com/v8/v8/+/master/src/inspector/v8-debugger-agent-impl.cc#755
Реакт это либа, для рендеринга.
Есть целый зоопарк модулей. По сути интересных есть только два: ESM, то есть нативные модули из спеки es6, которые уже работаю в 60 хроме (за флагом) и будут из коробки в 61. Второй тип это CommonJS, который используется нодой. Пока что нода нихуя не может сделать EMS. Подробней тут: https://hackernoon.com/node-js-tc-39-and-modules-a1118aecf95e
Спасиб!
https://www.codewars.com/kata/the-rarest-pepe/train/javascript
Мое решение под спойлером (скорее всего движок изуродует отступы, но любой бьютифаер исправит ситуацию).
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% юзеров, ЧЯДНТ?
Ты что-то не то написал
>return (arr.indexOf(pepe) == arr.lastIndexOf(pepe));
Это вообще что? какой смысл брать только с одним вхождением?)
сорян, там спойлер( не смотри если че. Там тип что я решил.
var buttons = document.getElementsByTagName('button');
for (var i = 0; i < buttons.length; i++)
{
buttons.onclick = function()
{
buttons.style.backgroundColor = 'black';
}
}
Почему это не работает? И должно ли вообще?
for (var i = 0; i < buttons.length; i++)
{
buttons.onclick = function()
{
buttons.style.backgroundColor = 'black';
}
Кекус, это двощи жрут разметку?
> buttons [ i ]
Короче у тебя там походу стандартная ошибка с циклом в жс. Поменяй var на let
Нет, я про то, что ты НЕ ПОЛУЧАЛ НИКАКОГО МАССИВА. Ты пытаешься работать с НЕ МАССИВОМ, думая что это у тебя массив. Иди читай документацию.
Вот еще сортировку лишнюю выпилил. Какая же ебучая стандартная либа у жс.
http://paste.org.ru/?yt46df
Хорошо, не помешало бы.
Не слушай ебанутого про массивы. Это тут вообще не при чем.
Проблема в том 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, либо просто не пользуются элементом в замыкании.
Чтобы можно было работу найти и это было не умирающее говно вроде PHP.
Что за Ruby скажите?
дауны безуспешно пытаются хоронить PHP столько же, сколько он отжирает свои 80+ процентов всего веба
>то значение i не разные на каждую созданную функцию, а одно глобальное
А как то, что эта переменная поднимается вверх функции (в моем случае она будет в Global Scope) мешает выполнится моей программе? https://ideone.com/Go22lv - это весь код который у меня есть. Не более. Let же в свою очередь просто заставляет переменную жить в пределах цикла, верно? Как то, что она живет вне цикла, мешает мне задать кнопкам евенты?
Добавь в обработчик console.log(i) и поймешь.
Красота же, верно?
Это известный подводный камень в замыканиях, не только в жс.
Когда ты идешь по циклу, то у тебя разные функции замыкают одну и ту же переменную i, которая меняется по ходу цикла, то есть у тебя под конец десяток функций с одинаковым i.
C let у тебя на каждой итерации создается новая переменная, поэтому каждая функция будет замыкать разные i.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Cleaner_code_in_inner_functions
Это возможно для небольших сайтов.
Для крупных сервисов пока что может оказаться медленновато.
Не совсем. "ближайшее время" наступит, когда js-школота наберётся лет 15 опыта и перейдут на другие языки, js тем временем допилят до вменяемого состояния, его станут поддерживать большинство хостеров и т.д.
А пока -- мечтай и жди
Спасибо анон!
В язык намешана куча говна отовсюду, но при этом есть дохуя фич, которые в эту кучу не включили. Недавно начал писать небольшое приложение на чистом 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, в здравом уме никто бы на нем не писал, но выбора у людей нет, к сожалению. Ждем и надеемся.
>js тем временем допилят до вменяемого состояния
Но он уже вменяемый, просто нужно понять, что это язык совершенно нового типа.
Суть JS - в его гибкости. И со временем он будет расширяться именно в эту строну.
>его станут поддерживать большинство хостеров
Уже.
програмил на говне, вкатился в жс говно и теперь тебе не нравится что он не похож на твое предыдущее говно? не парься! чувствительным нытикам в этом комунити тоже место есть, поэтому добро пожаловать пидор ебаный
Я говорю про то, что тут нет даже базового функционала, который в любой другой язык был добавлен десять лет назад. На похожесть мне похуй, суть везде одна.
>>1037374
Что это за вскукарек? Ты вообще в своей жизни трогал тру-функциональный язык или для тебя это "хуе мое функции там, рекурсия, объектов нет ебана"?
А чего ты ждал?
Выросло целое поколение школьников, которые не знают ничего, кроме кучи js-библиотек, естественно они с ужасом уходят в отрицание окружающего мира, хех
> тру-функциональный язык
Функциональное программирование - про композицию функций. Но ты, петух, конечно начнешь кукарекать про иммутабельность, систему типов и прочий нахуй не нужный никому, кроме отбитых на голову хачей теоркат.
Я пишу на F# на работе.
Все уже заимплементировано давно, даже такая наркомания как fantasy land. Только нахуй это никому не нужно кроме хачей-петухов, дрочащих в своем загоне. Хули им там не сидится?
Посоны 50 лет на лиспе писали с мутабельностью, а тут теперь внезапно они стали императивными петухами. Вот они обрадуюутся то.
Тем, что это отдельная библиотека с кучей ненужного мне говна. Добавление сторонней библиотеки - это очень важное решение и в 90% случаев можно и нужно обойтись без нее, невероятный факт для JS-мирка. Эту функцию я и сам написать могу, она достаточно тривиальна. Главная проблема в том, что мне НУЖНО ее писать, потому что в языке базового функционала не присутствует. Ну а про любовь JSников к куче бесполезных библиотек я уже говорил выше.
>>1037394
Лисп никогда и не считался тру-функциональным языком.
Не волнуйся, это пройдет через пару-тройку лет. Ну может через пять. Вздрочни пока, скинь злобу.
По делу — ты мудак, иди нахуй. Может быть в крестах у тебя в языке дохуя функциональности без libc/stl?
Или может в хачкеле без прелюды?
Или ты кроме пхп в который напихали кучу всего больше ничего и не видел?
Или ты микрософто макака, и тебе дотнета не доложили?
>Может сразу свой язык имплементировать тогда уж?
а, так ты критик языков, арбитр изящества, мастер секции комментариев. я то думал ты программист. прикольно что ты кричишь типа все макаки а сам ссышь язык запилить - кто получается макака тогда - короче впишешься прям норм в комунити
Я не говорю, что библиотеки не нужны, я говорю, что сторонняя библиотека или уж тем более фреймворк - это огромная зависимость от кода хуй знает кого. Сейчас в коммьюнити многих языков об этом забыли и добавляют библиотеки для каждого пука, но особого апогея подобная практика достигла у жсеров вследствие ущербности языка. Всегда сначала нужно писать функционал и планировать архитектуру приложения, и уже только потом по мере большой надобности добавлять библиотеки и фреймворки, не наоборот.
>>1037402
>не смейте критиковать мое говно, сами возьмите и напишите лучше!!!!
Шизя, успокойся, таблетки прими.
Поверь, 99% библиотек, которыми пользуются люди, стабильней чем любое твоё говно, которое ты навелосипедишь. Особого апогея она достигла в крестах, где есть stl и boost
причина твоего недовольства чем-то обычно не в самом предмете а в том что твоя жизнь в жопе, хочешь что-то поменять - начни с себя
Да не говори 8(
>поверь
Ты мне так рассказываешь, как будто я первый год программирую. Библиотеки хороши ровно до того момента, пока твои требования совпадают с их функционалом, которой обычно либо базовый, либо так нахуеверчен, что тянет с собой 8521 опций, которые никогда не понадобятся. Шаг вправо-шаг влево - и придется писать свой велосипед, либо ДОБАВЛЯТЬ ЕЩЕ ОДНУ БИБЛИОТЕКУ, РАСШИРЯЮЩУЮ ФУНКЦИОНАЛ СТАРОЙ, БИБЛИОТЕКА САМА СЕБЯ НЕ ДОБАВИТ. Что значит "стабильней" в этом плане, я не понимаю. Если ты не можешь написать свой кусок кода для клонирования объектов и не обосраться, то как ты пишешь целое приложение со сложной логикой и не обсираешься? Примеры есть, тесты есть(должны быть), и у тебя будет полный контроль над тем, что делает твой код. В случае с библиотекой ты отдаешь кусок кода хуй знает кому и надеешься, что библиотека протестирована и не сломает весь твой фунционал после очередного обновления, из-за упущенного разработчиком edge case.
помогите горе-фроненду
в 2 словах: на старых версиях хрома\фф (48\27) не работает opacity
https://jsfiddle.net/v9rt8ufg/2/
видел сайты с похожей анимацией, работающие корректно
Подскажите плз что там с БЛАЗЕ? Судя по тому шо я видел это проще реакта и вуя.
Я в своих скриптах всегда использую только === и !==, но ведь для чего-то же придумали дополнительную операцию нестрогого сравнения?
Двачую. После появления fetch пропала последняя причина использовать jQuery:
https://habrahabr.ru/post/252941/
Можно сдавать его в музей к Cobol, Delphi, GWT и VBScript.
Это ты заебал. Очевидно же, что раз тебе до сих пор никто не ответил, значит никто с этим не работал.
Или ты считаешь, что все обязаны тыкать палочкой каждую из миллиарда библиотек и фреймворков?
>для селекторов
querySelector/querySelectorAll
>toggleClass
ванильный classList.toggle
>ажакса
fetch/ да и сам xmlhttprequest2 простейшая штука, которая давно везде и с ней не надо ебаться как с первым и писать даунгрейды.
Лично я щитаю, что == есть смысл использовать только там, где нужно проверить на !== undefined && !== null. В остальных случаях нихуя не понятно.
Знаю пару банков у которых бек на ноде
Ну часть с сертификатами - на яве, но все остальное крутится на ноде, еще и 0.12 версии.
Народ часто переоценивает свои потребности и недооценивает возможности ноды
> нового типа
нет типов
BADUMTSSS
Вообще есть но блядь шутка сука отъебитесь, СМЕЙТЕСЬ ИЛИ ЗАБАНЮ
Да, это точно из по пришел, у какой злючий.
>пока твои требования совпадают с их функционалом, которой обычно либо базовый, либо так нахуеверчен, что тянет с собой 8521 опций, которые никогда не понадобятся.
> что тянет с собой 8521 опций, которые никогда не понадобятся.
Ебать нихуя, у тебя на других языках библиотеки ЧИСТО ПОД ТЕБЯ всегда заточены и ты из них максимум выжимаешь?А у жс плак плак ЛЮДИ ПИХАТЬ ТО ЧТО Я НЕ ИСПОЛЬЗУЮ В БИБЛИОТЕКИ КАКОЙ КАЛ.
Ты зашел не в тот тред и не с тем настроем.
ну перейди на него, только не ной что полтора работодателя и те в жопу ебут.
Если у тебя все сурйозно и не должно быть конвертаций в проверках и все должно работать как ты задумал - то ===, елси всякое может быть и впринципе конвертация безопасна - то == поможет с кейсами
e.g. когда где-нибудь в ответе false заменят на [], а потом на undefined когда-нибудь в будущем то с == можно будет не париться, он сам все подгонит и код будет работать дальше.
Мань, успокойся, в lodash/fp/альтернативах функциональщику нужно натурально все. Если бы ты действительно пришел из фп - ты бы это знал.
Насчет твоих ко-ко-ко это ни мейнтейнер языка кодил никачественно - так это вообще пиздец.
В 2017 половина хуйни уже на гитхабчике, даже ебаный асп.нет, нет блять я не буду им пользоваться, он в язык не встроен!
http://flibs.site/r?b=267602
что по поводу этих книжек? Мне нужно большое количество примеров и паттернов.
Я не хочу переписывать половину работающего проекта, ведь у меня все равно есть jQuery от бутстрапа
Потому что оно так и задумывалось.
Простой пример:
У тебя есть следующий список:
["Рейр Пепе", "Рейр Пепе"].
Так вот. Этот пепе - достаточно рейр. Потому что его не более 5.
А в случае со списком
["Рейр Пепе", "Рейр Пепе", "Юник Пепе"] оно должно вернуть только Юник Пепе, потому что он более редкий, чем Рейр Пепе (юника всего один, а рейров - два).
> Надо вывести тонну картинок мелких на страницу. Если все разом отдавать все браузеры висят по 6 секунд.
Задай каждой картинке ширину и высоту. И тогда они будут грузиться по мере, гхм, загрузки.
С этим проблема, достаются из базы php по одной.
почти, только react router - ебаный кал, и ты заебешься когда захочешь сделать что-то по своему в плане архитектуры, и придется костылять в обход, потому что у разрабов роутера было другое представление о жизниони пидоры. с редуксом вообще работает как говно - особенно 4я версия - отдельный стор для роутера? я в рот ебал. а на гитхабе тебя пошлют нахуй, потому что они зарабатывают бабки на консалтинге и проект нацелен на выкачивание бабок из лохов, а не на юзабельность. вобщем лучше свой сам напиши.
ну ты поюзай и поймешь. для обычных дом.страничек типа home-contacts норм решение конечно, но если у тебя своя архитектура а не архитектура так как ее задумали авторы роутера - шаг влево шаг вправо - и ты уже накостылял кучу какого-то говна, которого и вообще не было без сраной либы этой. для прикола можешь также посмотреть какая в доках редукса версия роутера(2?) и какая текущая(4). каждую версию они перемакакивают всю либу и ты заучиваешь ее заново, если хочешь новую версию юзать. этот проект не must как редукс, а так подрочить
На каждую имагу повесь хендлер onload события. По результатам загрузки каждого изображения (или, допустим, n изображений) отдавай пользователю ещё пачку.
Спасибо что обновляете пасту, люблю вас.
могу тебе даже доклад с подробным анализом написать и иллюстрации горящего пердака нарисовать к нему в стиле material, мой рейт - 90 баксов в час - где-то за неделю справлюсь. а так бугурты можешь почитать тут https://news.ycombinator.com/item?id=12511419
> главному языку будущего - JavaScript
1. Когда в главный язык будущего завезут ключевые слова class, interface, extends, implements, protected, public, private, final, static?
2. Когда в главный язык будущего завезут разницу между int и float/double (даже в PHP это разные типы) в коробке (в не в Web Assembly)?
3. Когда в браузеры завезут Тайпскрипт из коробки?
Spasibo, я думаю массив хороший вариант.
>3. Когда в браузеры завезут Тайпскрипт из коробки?
В Edge могли бы и добавить, петуханы. Никому нахуй ненужный ублюдочный VBScript во всех IE поддерживался, а этот передовой язык почему-то нет.
держать их в цссе
В первых версиях JS не было === штоле?
>Первоначально язык назывался Mocha
Хороший язык мочой не обзовут.
...ну то есть весь сертифицированный банковский функционал на jave, а вокруг дешёвые прогеры яваскрипт рисуют кнопки на обёртке из годы
пофиксил
> банковский функционал на jave
Я не знаю каким отбитым надо быть, чтобы реализовывать критическую логику на императивной параше.
Зачем отказываться от удобной и быстрой в текущей ветке jQuery? Перед шкальниками выёбываться? Так они и так этим заняты дни на пролёт,пока у нормальных людей нет на это времени.
> Пишет в треде о скриптовом языке, который подобострастно назвали в честь Java (а-ля Абибас)
> Выёбывается
Пфф
Нет, самый распространненый юхкейс, это обновременная проверка на null и undefined.
>Бред же,
Если ты не понимаешь, зачем нужно приведение типа, и уповаешь на каноничную НЕОБХОДИМУЮ ЯВНОСТЬ. То почему ты до сих пор не пишешь на асме, и не вызываешь функции, путем складывания аргументов на стек, и передачей управления по адресу, а используешь такую НЕЯВНУЮ func() в своем коде?
модно styled components, но синтакс сомнительный там и редакторы мало поддерживают. еще styled-jss ничего, но там на уровне беты. а так - микс инлайн стилей и css-modules
>>1037952
начни с обычного реакта и пили пока не почувствуешь боль, когда нужно шарить и влиять на стейт из разных мест. потом можно уже и редукс
> начни с обычного реакта и пили пока не почувствуешь боль, когда нужно шарить и влиять на стейт из разных мест. потом можно уже и редукс
Пробрасываю стейт родительским компонентам через контекст, далее dumb компонентам - через пропсы. Все штатными реактовскими средствами.
Всё-таки потребность в редуксе должна возникать не из-за желания изменять состояние приложения из различных мест...
Динамический петух закукарекал заместо Авроры. {} - ++[[++[]]] это же так понятно, очевидно, полезно.
Затем, что складывать объекты с числами и получать НаН - это, блять, ненормально, не должно быть такого в языке. Должны быть строгие типы, чтобы было понятно, с чем вообще дело-то имеем, а не "сложи то, не знаю что, с тем, не знаю чем, получи вообще хуй пойми что"
Ты посмотри на это с другой стороны.
Разве это не открывает широкие возможности по написанию обфускаторов, которые потом можно впаривать по $59.99 скрипткиддисам?
Для маркетолуха, может, что-то там чего-то и открывает. Для меня лично это означает ровно две вещи:
1. Мне нужно везде писать === вместо ==, а если я пишу ==, то это либо ошибка, либо обдуманное и сознательное решение => нужно писать коммент.
2. Проект среднего размера и более превращается в сраное говно, ведь ни одна сигнатура не является самодокументируемой, ни один класс не является самодокументируемым, везде нужно постоянно либо помнить, что именно нужно передавать вот в конкретно эту функцию, либо опять же писать хуеву гору комментов. В реакте есть вроде проптайпсы, но они не слишком-то облегчают положение. Скорее даже наоборот, добавляют только лишнего гемора, т.к. нужно постоянно поддерживать их в актуальном состоянии.
Что, написание лишнего символа "=" для строго сравнения сократит продолжительность твоей жизни? Звучит как жалкое оправдание, рилли.
Самодокументируемые функции - миф.
Проптайпсы в реакте нужны для тестирования.
проиграл
>Что, написание лишнего символа "=" для строго сравнения сократит продолжительность твоей жизни?
Жопой читаем? Написал же русским по серому - везде, где в коде будет все-таки использоваться == вместо ===, придется приписывать пояснение, почему в данном случае сравнение с приведением типов не вызовет кузькину мать.
>Самодокументируемые функции - миф.
Самодокументируемая функция - функция, контракт которой ясен из нее самой. Так что да, в жсе они, конечно, миф, раз сигнатура-то, по сути, никакой информации не несет, не то что о типах, а даже о количестве аргументов.
подписываюсь под каждым словом про комьюнити, да и в целом всё так и есть
js комьюнити - это как раз и есть канализация с пика, только еще булькающая
каждый пузырёк - новая либа или язык поверх js
в скриптах пишу "start": "babel-node ./server.js"
там сервак на экспрессе с es6
так вот первый раз запускается нормально, когда убиваю процесс в git bash, сервер остается висеть прослушиваемым пока не перезагружу комп
повторный npm run start выдает ошибка т.к. сервак уже висит
вот чо за хуйня, посмотрел у всех все нормально, погуглил ничего не нашел
контекст сломают рано или поздно поэтому смысл его использовать. и пробрасывать пропсы через неск уровней и уродливый код который из этого следует мне не оч
>node -r babel-register ./server.js
все равно такая же хуйня
заметил что когда в консоли прямо пишу "node ./server.js" все нормально работает, т.е. убиваю процесс и сервер падает
а когда эту же команду пишу через npm run start в скрипте "start": "node ./server.js", появляется такая вот хуйн
> контекст сломают рано или поздно
...и полетят ВСЕ сторонние стейт менеджеры. Да, пейсбук предупреждает об этом явно, но вероятность брейкинг чейнджес откровенно мала.
По поводу красоты кода - это уже отдельная тема. В моем прожекте это нисколько не ухудшило читаемость, потому что я придерживаюсь определенных правил.
В корневом компоненте описываю начальный стейт и импортирую экшоны, джаст лайк ин редакс, все это дело аккуратно засосываю в контекст.
Далее, в компонентах уровнем ниже (эти компоненты являются корневыми по роутам) импортируется набор экшонов и стейт из контекста. А уже в каждый дочерний компонент из корневого передается два пропса - actions и store. Никакой путаницы, никаких инжектов стейта из контекста в компонентах на нижнем уровне.
Все работает без редакса, потому как для моих задач сторонний стейт менеджер это оверкилл.
по реакту, на самом деле, лучше и проще официальной документации ты ничего не найдешь.
По редаксу можно видосы с лерн код или еще что-то на примере рабочего приложения. Redux/MobX и другие имплементации общего стораджа довольно полезные вещи (сам сейчас на реакте и редакс ппц как упрощает жизнь и делает код и взаимодействие компонентов понятнее)
понятно
> Обеспечено inline-развёртывание и оптимизация операций Array.prototype.forEach;
Вай-вай. Заживем.
1. Учить джаваскрипт по спираченным с торрента интенсивам htmlacademy.
Из плюсов: бесплатно, можно проходить не торопясь, с перерывами.
Из минусов: вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи. Еще и автопроверки нет, как на джавараше.
2. Пройти тот же интенсив, но платно на htmlacademy.
Плюсы: возможно, таки узнаю много нового, но это не точно.
Минусы: бабло
3. Пройти платный курс на learn.javascript.ru
Плюсы и минусы те же.
Ну и возможно четвертый вариант, который предложит мне анон.
Сам уже работаю веб-программистом, но чувствую, что есть пробелы, ибо учил все на ходу, по мере необходимости.
Что-то у тебя все стулья с хуями. Накачай себе разных книг и читай в свободное время. Гугли по работе все места, которые не понимаешь, эффект будет заметнее чем от курсов.
>вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи
Ну так правильно, потому что видосы и задачи - хуйня без задач (вот это я скаламбурил). Сразу бери и хуярь что-нибудь полезное и серьезное, по ходу дела разберешься во всем, и гораздо быстрее и лучше, чем если будешь сидеть дрочить себе полгода подзалупными задачками.
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, )??
Так всегда было, или это новые спеки? У меня от чего-то четкая уверенность (или ложные воспоминания), что раньше можно было удленять дефолтную цепочку.
Парашекурсы интенсивы, блять, этож надо было такую хуйню придумать, просто пиздец - хуйня и не нужны. Применяя язык в манязадачах со свистоперделками ты забудешь всё нахуй через неделю.
function ask_yes_no(question) {
____let response = null;
____while (!['y','n'].includes(response))
________response = prompt(question).toLowerCase();
____return response;
}
let answer = ask_yes_no("Please enter 'y' or 'n':");
alert("Thanks for entering: " + answer);
Там есть предел рекурсии или она будет ебашить пока не сожрет всю память? Предполагаем, что tail call elimitation нет.
> Сап, посоны. Есть три стула:
> 1. Учить джаваскрипт по спираченным с торрента интенсивам htmlacademy.
> Из плюсов: бесплатно, можно проходить не торопясь, с перерывами.
> Из минусов: вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи. Еще и автопроверки нет, как на джавараше.
> 2. Пройти тот же интенсив, но платно на htmlacademy.
> Плюсы: возможно, таки узнаю много нового, но это не точно.
> Минусы: бабло
> 3. Пройти платный курс на learn.javascript.ru
> Плюсы и минусы те же.
> Ну и возможно четвертый вариант, который предложит мне анон.
> Сам уже работаю веб-программистом, но чувствую, что есть пробелы, ибо учил все на ходу, по мере необходимости.
Ща бы купить видосов на 100 часов где пересказывают синтаксис.
На hexlet интереснее: можно купить время ментора, который поможет закончить петпроэкт
> В интенсивах фишка в том, что наставники попу подтирают
Ещё 10 часов рассказов о синтаксисе?
Да. Если ты за 100 часов не понял.
В детстве родители нанимали репетитора по английскому. Молодую тян. В воспоминаниях об этих занятиях остался только образ груди выглядывающей из слегка расстегнутой спортивной куртки.
Оке.
>>1038909
Думал об этом. Таки да, когда есть идея, мотивация будет как будто тянка поебаццо позвала.
>>1038918
Понял, спасибо.
>>1038937
>>1038963
Согласен. Да и по цене получается 80К за все курсы академии - как-то многовато. Я на джавараш в 2014 за 100$ весь курс купил, так там дохуя всего дается с задачами и теорией. А щас вот в веб перекатился, думал, найду аналоги, а хуй там. Буду пилить свой проектик тогда и дрочить по книгам.
Можешь просто сидеть с суровым видом рядом, чтобы я не отвлекался на двощ и любую другую хуйню, пока не позанимаюсь нормально.
> попу подтирают
Ну и чему ты научишься, ежели тебе попу подтирают? Мамка вон тебе до 12 лет подтирала и посмотри кем ты вырос?
Бери ноут и пиздуй из дома, чтобы без инета.
Два чаю, она охуенная.
//код
}());
такого рода синтаксис еще юзается? или модные let или чвойтоеще заменили?
спасибо
двачирую этого дона, ресурсы надо распределять грамотно
скобки не нужны когда один параметр
Антоны объясните плизки чзх чего оно через классы не хочет?
https://jsfiddle.net/xLqzL09k
https://jsfiddle.net/xLqzL09k/1/
еррор :
document.getElementByClassName is not a function
Тебе ж на чистом английском пишут: document.getElementByClassName - это не функция. Т.е. такой функции не существует. Потому что elements, ведь оно может возвращать много.
Тебе же написали, не существует такой функции. Что не понятного?
workers[x] должен отработать последовательность действий.
Но иногда он фейлит и нужно запускать процесс с начала.
delete workers[x] не убивает листенеры. Вопрос: как убить все связанное со свойством объекта самым простым способом?
Спасибо, кэп.
Не пользоваться ООП объектно-ориентированной парашей? Не использовать функции без аргументов, которые мутируют хуй пойми что? Как тебе такое, а?А?А?
https://jsfiddle.net/dxnz11q5/
скролл вниз - нормально выезжает
скролл вверх - после анимации пропадает, как и должно
скролл опять вниз - после анимации пропадает, как не должно
почему оно не удаляет листенер?
и может подскажите как сделать, чтобы при быстром скролле туда-сюда анимация продалжалась а не с самого начала тригирилась?
не вижу разницы для читаемости между:
function x(obj) { doSmth(obj) }
и предыдущим примером. хотя нет, this всеже понятнее. вот если this заменить на @, будет еще лучше.
они меняют obj, а не хуй пойми что.
хуев в жопу тебе
А мог бы просто исправить опечатку, в названии метода. getElementsByClassName
>почему оно не удаляет листенер?
С хуя ли не удаляет?
Ты вообще в курсе, сколько ты лиснеров вешаешь?
Повесь алерт в блок else и охуеешь от того, сколько раз у он тебя затриггерится.
от души спосибо я подебил эту хуергу через i = 1 i = 0 маме операция нужна не супер серьезная но денег нет она не может работаь несколько месяцев теперь я стал на ступень выше к джуну надеюсь как можно скорее смогу пойти на работу сам спасибо огромное!!!!!!
Если это то ты, то видимо ты не из раисси. Мкай.
ну а зачем мне сокращение this -> @?
кстати, ничто не мешает писать объекты, где метод который меняет объект, будет возвращать новую копию.
>писать объекты, где метод который меняет объект, будет возвращать новую копию
Совсем ебанулся уже со своим хачкилем.
> писать объекты, где метод который меняет объект, будет возвращать новую копию
Он начинает о чём-то догадываться. Осталось сделать последний шаг - избавиться нахуй от объектов.
Избавился от объектов тебе за щеку, проверь.
Сложных компонентов вроде как нет, но предстоит заёбистая логика валидации, переходов и реста по кд.
Ранее пользовал ангуляр первый. Но все пишут, что АНГУЛЯР 2 ЭТО ГРОМОЗДКО И ОВЕРКОД, ПИЗДАРИКИ ГОТОВЫМ КОМПОНЕНТАМ, ТОЛЬКО ДЛЯ БОЛЬШИХ ПРОЕКТОВ.
skipTracking и viewChangeCounter?
https://github.com/gothinkster/react-redux-realworld-example-app/blob/master/src/middleware.js
Ах, да, тест mocha-ой гоняю, вернее пытаюсь.
Вот мы создаем переменную с функцией:
var fnctn_one = function() {
return 'haha';
}
Потом создаем новую переменную и туда копируем первую:
var fnctn_two = fnctn_one;
Мы можем изменять вторую переменную как угодно, и первая меняться НЕ БУДЕТ? Правильно? Изменяться будет копия?
fnctn_one/two хранят ссылки.
что такое ссылка, без программирования?
положи яблоко на стол и в тетрадке запиши: яблоко на столе.
добавь еще одну запись в тетрадь: яблоко на столе.
теперь затри первую запись, замени ее: есть еще одно яблоко в подвале.
от того, что ты затер запись, яблоко с стола не исчезло.
вторая запись все еще есть.
другой человек может посмотреть в тетрадь и найти яблоко. если он его откусит, то яблоко изменится, хотя ссылка так и будет указывать на яблоко, но уже на кусок яблока.
> модуль не найдет. Хотя модуль есть, инсталлирован глобально
Глобальная инсталляция в ноде только для утилит командной строки нужна. require парашу в каждый проект надо инсталлить локально.
Тебе с такими объяснениями только в школе преподавать.
Порадовался. Будет им уроком, не хрен городить инфраструктуру уровня Java для языка, который двигает формочки. Дали вам <script src="...">, вот и не умничайте.
Кстати, может тот обиженный программистишка и накоммитил малварь, чтобы отомстить.
Благодарю.
Имею список вида [id: 1, name: "Vasya", company: "KFC" ...]
Как мне достать элементы по типу key = value, чтобы было так
id = 1;
name = "Vasya";
company = "KFC" ?
Ты долбоеб ебучий, написано же
Делай из него стринг, пихай его в тег <script> и всобачивай через append какой-нибудь (но почему бы тебе самому ручками его в .html файле не вписать?)
Ну так у меня бесконечное множество диалогов с различными выборами которые могут вызывывать различные функции, и всего одно диалоговое окно которое очищается после выбора варианта.
eval же
adres, addres, adress, address, adderss ?
var и let обьявления ?
>как реализовать "выбор"
Запили либо свой миниязык для диалогов, либо в каком-нибудь формате их складывай (xml/json/yaml/s-expr/etc)
Да не вариант на самом деле. В игре эти диалоги слишком сильно зависят или влияют на различные переменные. Так что в итоге выйдет куча вызовов функций, куча проверок, и между ними ссылочка на контейнер с нужной фразой. Проще и понятнее держать все рядом. Ну это пока, потом может запилю мини велосипед чтобы смотрелось аккуратнее. Аналог ренпаевской системы например.
использую из npm библиотеку, в документации написано вот так
функция getState(callback)
spotify.getState(function(err, state){
/
state = {
volume: 99,
position: 232,
state: 'playing'
}
/
});
вопрос, как использовать, например, state.volume в другой функции? пробовал внутри функции присвоить
let huy = state.volume, но huy я не могу использовать за ковычками, undefined получается
я программирую не больше недели, как только пытался, не получилось. колбэки, офк, не знаю как работают. куда идти читать про это?
spotify.getState(function(err, state){
/
state = {
volume: 99,
position: 232,
state: 'playing'
}
hui = state.volume;
/
});
Или из шапки по порядку в самый раз?
Соглашаться или нет?
Если будут больше платить, почему нет? Сорта говна одни и теже.
А кто будет помогать и код ревьюить?
Но я хочу по фуллстэку угореть. С бэкэндом разобрался помогло то, что приходилось раньше работать с джавой и пхп, а как на это повесить фронт я чото даже не знаю, с какой стороны подобраться.
А обо что будет? О пхп? Или в пиздон? МОжет быть руби? Или может кложура? Какая разница на какой динамической параше писать?
Если просить меньше, то ты подписываешься под тем что ты тварь дрожащая. Студентоте с 0 опыта 50 дают.
И что?
Почитал книжку по жс, примерно месяц поделал задачки и начал искать работу.
Охуеть, значит любой даун сможет так зарабатывать? И в чем прелесть программирования тогда.
Это вопрос? Да, есть. Платные. Бесплатные хероку-говна уровня. Нахуя для бложика не статика?
Грывни это рубли деленные на 2.5, математик хуев.
А вообще в треде лучше никого не слушать - тут один джуны и капелька пре-мидлов, так что дельных советов не услышишь - надо идти на тематические форумные тусовки.
Сейчас они имеют вид аля пикабушечки.
Типо вместо отедьлной темы - ПОСТ, и под ним в комментах сидят бурлят.
Хабр тоже не просто новостной агрегатор
Лучше на гиттере найти уютненькую комнатку единомышленников. И квалификация повыше, и узкоспециализированную конфу найти не проблема, да и общение поактивнее будет.
Сегодня видел на HN плач о том что 50к зеленых в год это джуновская зп.
50к предлагают рабам из снг на первом этапе. -30% налогов, выходит примерно как в дс-x
Для Bay area это копейки, например.
Джуном без опыта 500$ на первой работе получал на руки.
Надо просто знать куда ломиться.
Я вообще первый годик по стартапам тусил, там проще с устровойством в разы.
А потом уже можешь на свою макака-галеру веслорабом устраиваться и гребсти с другими рабами.
Ну я понял, нечаянно реплай прикрепился.
Так если на старте сможешь сразу на ремоуте кому-то втюхаться то уже хорошо.
Я ж в первое время вообще одну страничку верстал месяц еще и как ракал и я хз ктоб такого долбоеба еще содержал кроме местных стартапов.
Я сами стили-то понимаю, чужой код понять смогу, но когда начинаю свой css писать, все идет по пизде.
Ты же мордой занимаешься, не знать как морду пилить - как минимум хуйово.
Ну это не главное, но понимать как это работает надо, и по хорошему из версталы становиться жс макакой надо.
Ну в это въехать не сложно, так что для базы посиди на хабре почитай статьи по верстке. Главное чтоб ты въезжал как тебе сделать какой-то блок и как это сделать (костылями не костылями - но хоть как нибудь).
Это не сложно, так что быстро въедешь и базы вполне хватит, если близко с этим не работаешь.
Спасибо, я понял, буду не отдельно свойства учить, а элементы страниц верстать
ух ваще! спасибо. вот тока терь проблема. на моем проекте реакт, который пилится с 14 года, где про это даже не слыхали.
мне сходу выдало 1600+ ошибок. и как терь настроить на то, чтобы оно их игнорило пока я не скажу - хз.
очень странно, чо я только ща узнал про этот стаф
он не бесплатный, на работе мне бабла не дадут, а сам по себе я бомж, жлоб, ебал,
Но 50к в год это около 4к$, с вычетом налогов+оплатой жилья много ли остаётся? Зарплата среднего врача или фризеровщика. 70к$+ уже более менее хорошая зп чтобы жить в крупном городе.
о, кстати, хороший вопрос: как гулять по стеку в рамках VSCode с учетом разбивки модулей, так чтобы стек движка не был настолько подробный? чтобы если что-то падало, небыло бы видно стека из минифицированного реакта? как в любом нормальном языке
> ангулар не осилил? тайпскрипт сложно дохуя?
Что там осиливать?)) Ты правда считает что осилить жс фреймворк это какой то подвиг?
поешь? танцуешь? играешь на кожанном инструменте?
ты подумай, какие у тебя есть таланты или спроси у своего талант менеджера
>Ты правда считает что осилить жс фреймворк это какой то подвиг?
Как видно по моему опыту, второй некоторые таки не осиливают.
> отказаться от их предложения прийти пообщаться т.к. кажется что не вывезу
Совсем дебич?
> sicp'ом и гоф'ом измазаться
Ебать ты долбоёб, земля тебе пухом, братишка
Блять ну не знаю, я получаю 24к бачей по текущему курсу и это считается нормальная мидловая зп в ДС. Джунов беру на почти в 2 раза меньше.
Это после налогов. Накининь хотя бы и 13%, а лучше все 50, которые платит твой работодатель.
propTypes?
тайпскрипт?
а что там осиливать, микрософт дебики решили запилить классы и прочий ооп.
И все бы ничего, но компания эта уже себя показала и я бы побоялся использовать их говно в продакшене.
ты и так уже зашкварен об фейсбук. еще и об индусофт зашквариваешься. а по поводу платный - да он 8 ебаных бачей стоит в мес, бомж ты блять. 8 бачей стоят пять минут работы любого бомжа. все работает из коробки без ебли с говноплагинами которые накостыляли другие бомжи из опенсорс "коммунити" и быстрее чем хромоговно. пропусти один смузи и купи себе иде и работай как профессионал а не ссаный хоббиист. используй продвинутые тулзы, не молоток ебаный с гвоздями
да не, я понимаю что оно не особо в работе нужно около 3х лет на реакте верстаю да на буцтрапе программирую прост. и так не особо комфортно на собеседованиях себя чувствую, а если поднажмут, могу и на тупой хуйне как дите облажаться
Хуйяйпс. Это create-react-app, сурсмапы там есть.
>жяваскрипт не говно
Говно говняное, но скоро исправят http://www.mono-project.com/news/2017/08/09/hello-webassembly/
animenarutofanatuzumaki5vgnarutoANUSmaQuMilPUNCTUMr^l,u
я не тролль
не понял
Есть ли какой-нибудь способ сделать разбивку исходников в firefox devtools по папкам? Сейчас это выглядит как список всех js файлов, которые были загружены. А если используется, к примеру webpack, который генерирует sourcemap, то в devtools список всех модулей, которые были сгенерированы. Это крайне неудобно, можно сделать как в Chrome?
Использую Chrome давно, но хотелось бы получить какой-нибудь user experience от firefox, пока что на мой взгляд вообще не юзабельно для разработки. Возможно я просто что-то делаю не так. Firebug не предлагать, так как он уже вроде как устарел и не обновляется.
Typescript тоже придется выучить. От него двоякое впечатление, кто-то от него радугой блюет, а кто-то как я, не оценил его возможностей.
При чем тут VS Code? Тут в браузере упало. Если надо отлаживать под VS Code наверняка есть какие-то дополнения для него, хотя я хз вообще как ты это делаешь и зачем. Стек всегда полный, показывает трейс от и до все точки во всех функциях, через которые прошел упавший синхронный (а со специальным включенным параметром в Chrome и асинхронный) вызов функции. В любом нормальном языке список такой же. Не знаю считаешь ли ты Java нормальным языком, но там еще пизже показан трейс из вложений хуевой тучи абстракций, есть даже картинка как это все там выглядит, но искать я ее не буду.
Для разработки под второй ангуляр он таки да, не обязателен. Но это тоже самое что писать под React с использованием одного только JS без JSX, то есть крайне неудобно. Хотя в целом соглашусь наверное, ошибки типизации идут от кривизны рук и отсутствия соглашений.
>компания эта уже себя показала
MS в плане исследований и новый направлений всегда хороши, а их технологии живут благодаря долгой поддержке. По сравнению с гуглом, это хорошие вещи.
Зачем заново изобретать велосипед? Ты ведь сам придешь со временем к какому-нибудь простому фреймворку типо backbone/react чтобы снизить число копипастного кода.
Двачую, переехал из Джавы, тут же уебался об ваше ебучее прототипное наследование, невозможность типизировать данные. Пару недель назад узнал про React и моя жизнь изменилась. Охуенная штука, зависимость есть. А еще и РЕДАКС!
Пока не поздно посмотри на elm purescript ты все равно не осилишь, ибо жабомакака, редакс так вообще по сути под копирку с elm arch сделали
Хули ты хочешь? Без своего кода просишься на удаленку. Кто тебя заочно возьмет так?
Портфолио набирай.
Хороший план Мойша. Школьники на fl.ru ждут твоих предложений
1) Делаешь аккаунт на гитхабе.
2) Берешь create-react-app
3) Делаешь калькулятор займов: два селектора (придумай опции сам), поле для ввода суммы, выбор срока, ридонли поле с результатом (формулу придумай сам)
4) Заливаешь полученный результат на жидхаб (если осилишь gh-pages, +бал)
Бля, ну я такую хуйню для своих группашей платно на 1 курсе делал. Дай ему что-то посерьезнее.
Ищите работу с ними джуноми за еду, потом фриланс. Хороший с++ фрилансер получает 4-5к долларов в месяц.
А что можно осиливать в гитхаб пейджес, это же просто галочку в настройках репозитория поставить
А теперь вспомни себя в тот день, когда "контроль версий" для тебя не значил ничего.
Лол, я за 4 года работы в комманде сабмодулями и ребейзом пользоваться не научился.
То есть вот я, свой богоподбный пистоновый код открываю в терминалецмд интерпретатором питона. Но что делать с жаба скриптом - ума не приложу.
Знающий анон, скажи, что мне понадобится для реализации этой ебатеки? Джанга, фласк? А может лучше НАСТЯ вообще что-то другое начать учить, типа джава скрипт или еще какой хуйни. Я вообще не не шарю в вебе.
Алсо как делают жскрипт, который сработает если закинуть его в адресную строку браузера?
Делал свое говно даже в одну строку, все равно не пашет. открывается гогольсерч который показывает результаты поиска по моему говнокоду, лол
В любом современном, не маргинальном браузере, есть консоль. Открывается по f12. Если тебе нужно окружение браузера.
Тобой описанный питоновский REPL, есть точно так же в ноде, если тебе нужно окружение ноды. Просто запускаешь ноду в своем терминале, точно так же как и питон, и вот тебе твой REPL.
Про вопрос с кодом в адресной строке, есть такая URL-схема, как javascript.
example
>javascript:alert('тыхуйбля')
>javascript:alert('тыхуйбля')
имей ввиду, что, например хром (как остальные не знаю), не даст тебе просто так взять и скопипастить это в адресную строку. Поэтому схему писать надо ручками.
NodeJS поставь и хеллоуворлдь
app.js:
console.log('Hello world!');
node app.js
Не слушай пидоров с их вонючими браузерками. Вебпараша нахуй не нужна.
>Неспособны осилить ничего
Ты прекрати делать подобные выводы о людях, основываясь на собственной компетенции.
Тебе, очевидно, не с чем сравнивать.
>серьезное,
>типо java, c++, c#
Конпилируемые параши с обязательными паблик-статик-фабриками-синглтонов, чтоб макаки не охуевали в кандалах. Из-под барского сапога писать — это тебе не массив с числом складывать в рантайме и получится строка, какие уж тут шутки. Барин хороший, барину видней.
>>1043131
>оценить жс в разрезе дизайна ЯП
Ну дык попробуй оценить, конпилятор ты окаменелый, дизайн языка, который может произвольно выполняться из произвольного источника на клиенте и никого не убить при этом. Да ещё чтоб он был при таких рисках настолько простой, что был бы доступен любому автору, решившему наполнять Веб и складывать массив с числом для решения бизнес-задач, а не только элитному отборному байтоёбу без жизни, зато с охуенными познаниями в дизайне языков, о которых всем нужно рассказать и детектировать бутхурт, пытаясь спрятаться в строгоконпилируем скорлупке от реального мира и своего в нём места.
зашел на fl.ru там отзыв от 299 р оставить можно
https://www.fl.ru/projects/3371248/kalkulyator-rascheta-na-sayt.html#hiddenOfferInfo
получилось:
https://besplatniuidnusskiuhost.000webhostapp.com/
https://github.com/o78/1/blob/master/fl.html
до этого делал еще один калькулятор на пхп и мскл и линкатер
потихоньку в реакт вкатываюсь
гит прекольный кстати его через командную строку там делать нужно я на гентоо сижу мне так даже удобнее
1.У него нет названия, он не сохранен ни в какую пеерменную или свойство внешней функции. Это вообще роли не играет?
2. Почему методы этого объекта считаются методами внешней функции? С какой радости мы имеем право писать вот это counter.getNext() и даже получать вменяемый результат? В моем понимании эти методы относятся к обозначенному "анонимному", хз как его еще назвать, объекту. Или return их присваивает внешней функции?
ооп головного мозга?
У тебя есть объект, часть полей которого являются методами. Да это анонимный объект. Нет не нужно объявлять класс для этого.
Ну карочи объект это типа розеткус пикрелейтед.
У него есть поля (дырдочки). Поля могут быть разного типа, числа, строки, функции, другие объекты и т.п.
Можно на лету добавлять новые или удалять старые. Так и живем.
А-а-а, понял, спасибо.
>Это вообще роли не играет?
Нет, важно то, что этот объект доступен для обращения через переменную counter.
>Почему методы этого объекта считаются методами внешней функции?
Методы возвращенного объекта не считаются методами "внешней" функции. Функция просто возвращает объект с такими полями "методами". Она точно так же могла возвращать любое другое значение, строку, число, что угодно еще. Самой функции от этого не тепло не холодно.
>С какой радости мы имеем право писать вот это counter.getNext()
Мы имеем на это право после того, как определили такое поле в возвращенном объекте. counter же и есть тот самый возвращаемый объект.
>даже получать вменяемый результат
Этот пример написан, чтобы продемонстрировать как работают скоупы. Благодаря этому механизму и получается вменяемый результат. Вызов функции makeCounter создает контекст ее выполнения. В нем объявляется и инициализируется переменная currentCount. В ней же при каждом вызове создается и возвращается новый объект, который мы в дальнейшем используем как counter. Поскольку и переменная currentCount и возвращаемый объект были созданы в одном контексте, методы возвращаемого объекта могут обращаться к этой переменной. Это как если бы возвращаемый объект "захватил" контекст вызова функции в котором он был создан и продолжал его "удерживать" пока существует сам. Так переменная currentCounter связывается с возвращаемым объектом.
Спасибо за подробности, анончик, я чувствую что сейчас ебанусь. Надо сделать перерыв...
Я снова тот анон с вопросами, который теперь немного успокоился. В общем, все понятно, кроме того как... ммм... В общем, смотри, правильно ли я понял?
У нас есть функция. Если она ничего не возвращает, то она равна undefined. Но в нашем случае она возвращает объект, в котором есть методы. Это не значит, что эти методы теперь принадлежат внешней по отношению к данному объекту функции. НО! Как я понял, сам факт вызова этой функции возвращает этот объект и эээээтоооо... Это как будто мы просто вызвали объект? В смысле, если как если бы вообще никакой функции не было, а мы просто создали пустой объект и вызвали его, типа, покажи че там у тебя. Но поскольку объект не пуст, а с методами, мы можем и методы вызвать. А право писать counter.getNext() мы имеем потому, что counter.некий_метод это то же самое, что просто_объект_а_не_функция.некий_метод? Разница в том, что если бы мы просто создали объект, он не имел бы собственного лексического окружения и работал бы только с глобальными переменными, а если оформить через функцию, то переменную currentCount можно скрыть. Да? Я правильно понял?
Т.е. сам факт возврата объекта из функции означает, что при её вызове мы, по сути, работаем с этим самым объектом?
Надеюсь ты понимаешь суть вопроса, а то я могу как мудак спрашивать. Уточни если что.
Жеэсеры только по видяхам учиться могут и только, если у препода розовые очки, зеленый галстук и ебанутая фиолетовая прическа.
С контрактом, трудовой и отчислениями в пенсионку. Возьмете на таких условиях джуном?
>Т.е. сам факт возврата объекта из функции означает, что при её вызове мы, по сути, работаем с этим самым объектом?
Если я правильно понял твой вопрос, то не совсем так. Обрати внимание на
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.
Если ты что-то другое имел в виду, то уточни, пожалуйста.
return и в африке return. просто то, что возращает функция. выглядит некрасиво все же
хотя интересно, что без ретерн эта хрень не работает Эврика! Так вот как делается ооп в жс. надо просто ретерн со скобочками перед методами ставить. ну спасибо что научил
> return и в африке return.
> ограниченное мышление
https://www.haskell.org/hoogle/?hoogle=return
изучаю нод джс, а точнее адаптер монгоосе. Так вот, есть у меня некая схема https://pastebin.com/6yVUtj2j , мне вот что интересно, вот есть допустим интерфейс, в котором есть поле для ввода, и я хочу, чтоб сабмит этого поля добавлялся в массив по ключу ebaliMamkuOdmena в виде объекта
{_id: id,
body: text,
timestamp: new Date(),
ktoEbal: userName}
прочитал документацию, но никак не смог понять как это среализовать, помогите плиз
>1.У него нет названия, он не сохранен ни в какую пеерменную или свойство внешней функции. Это вообще роли не играет?
Название есть у переменной, объект это СОДЕРЖИМОЕ этой переменной. Точно такое же, как 123 или "Hello world!", например.
> 2. Почему методы этого объекта считаются методами внешней функции? С какой радости мы имеем право писать вот это counter.getNext() и даже получать вменяемый результат? В моем понимании эти методы относятся к обозначенному "анонимному", хз как его еще назвать, объекту. Или return их присваивает внешней функции?
У тебя counter - это переменная, в которой хранится ссылка на объект. Запись counter.getNext() означает:
1) получить объект, который хранится в переменной counter;
2) вызвать метод (поле-функцию) getNext() у этого объекта.
Пользуясь аналогиями, промизы - это GOTO, async/await - это циклы WHILE и FOR. Хотя работает одинаково, но второй вариант читабельнее.
Какая-то хуевая аналогия, цикл на goto почти так же читается, в некоторых языках вообще рекурсия вместо циклов и ничо. А вот continuations с запоминанием и возвращением в контекст нихуя блять не делаются в принципе, если язык их не поддерживает. Только коллбек хелл.
Да, я другое имел в виду. Сначала скажу предысторию.
Я начал сначала учить верстку, хтмл/цсс, сверстал свой сайтик и тд, понял что этого мало и решил учить джаваскрипт. Т.е. программирование для меня - это нечто новое, и все что я знаю из айти на сегодня - это хтмл/цсс. Наверное, ты тоже знаешь цсс? Если да, тебе знакома такая вещь как селектор с некоторой вложенностью. Например, есть такой код хтмл:
<div class="blabla_1">
<div class="ololo">
<div></div>
</div>
<div class="ololo"></div>
<div class="ololo"></div>
</div>
У нас есть один большой блок с неким классом, внутри него - еще какие-то блоки с другим одинаковым классом и в первом из этих вложенных блоков есть еще один - вложенный, без класса. Мы можем найти его в цсс таким селектором и задать цвет шрифта:
.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;
}
} //просто объект с методами
//ИЛИ
function makeCounter() {
var currentCount = 1;
}
makeCounter.getNext = function() {
return currentCount++;
};
makeCounter.set = function(value) {
currentCount = value;
};
makeCounter.reset = function() function() {
currentCount = 1;
};
//Мы записали в функцию методы как в объект и они теперь принадлежат ей.
В таком случае все ясно если думать как врестальщик: есть объект counter? Есть. Пишем селектор: counter. В нем есть метод? Есть. Вложенность - через точку, пишем: counter.getNext()
Держим в уме, что этот метод может вызваться только в этом объекте, т.е. селектор обладает ооооочень высокой специфичностью. И тут ВНЕЗАПНО мы делаем анонимный объект, пишем "селектор" через функцию и все это как-то работает! КАКОГО ХУЯ!!!!!!!!!!!!!!!!!!!!!!!!!
Вот я и пытаюсь понять, в какой момент мы подменили объект на функцию. Как я понял, и понял, скорее всего, неправильно, это то что return внутри функции логически "вытягивает" содержимое объекта и ложит непосредственно в функцию и даже начинает её объектом_Васей, а не функцией_Сирожей.
Ты не мог бы шаг за шагом расписать что происходит при написании этой херни и в момент вызова? Просто чтоб я один раз увидел. Я знаю, что уже всех заебал, но правда хочу понять что происходит
Да, я другое имел в виду. Сначала скажу предысторию.
Я начал сначала учить верстку, хтмл/цсс, сверстал свой сайтик и тд, понял что этого мало и решил учить джаваскрипт. Т.е. программирование для меня - это нечто новое, и все что я знаю из айти на сегодня - это хтмл/цсс. Наверное, ты тоже знаешь цсс? Если да, тебе знакома такая вещь как селектор с некоторой вложенностью. Например, есть такой код хтмл:
<div class="blabla_1">
<div class="ololo">
<div></div>
</div>
<div class="ololo"></div>
<div class="ololo"></div>
</div>
У нас есть один большой блок с неким классом, внутри него - еще какие-то блоки с другим одинаковым классом и в первом из этих вложенных блоков есть еще один - вложенный, без класса. Мы можем найти его в цсс таким селектором и задать цвет шрифта:
.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;
}
} //просто объект с методами
//ИЛИ
function makeCounter() {
var currentCount = 1;
}
makeCounter.getNext = function() {
return currentCount++;
};
makeCounter.set = function(value) {
currentCount = value;
};
makeCounter.reset = function() function() {
currentCount = 1;
};
//Мы записали в функцию методы как в объект и они теперь принадлежат ей.
В таком случае все ясно если думать как врестальщик: есть объект counter? Есть. Пишем селектор: counter. В нем есть метод? Есть. Вложенность - через точку, пишем: counter.getNext()
Держим в уме, что этот метод может вызваться только в этом объекте, т.е. селектор обладает ооооочень высокой специфичностью. И тут ВНЕЗАПНО мы делаем анонимный объект, пишем "селектор" через функцию и все это как-то работает! КАКОГО ХУЯ!!!!!!!!!!!!!!!!!!!!!!!!!
Вот я и пытаюсь понять, в какой момент мы подменили объект на функцию. Как я понял, и понял, скорее всего, неправильно, это то что return внутри функции логически "вытягивает" содержимое объекта и ложит непосредственно в функцию и даже начинает её объектом_Васей, а не функцией_Сирожей.
Ты не мог бы шаг за шагом расписать что происходит при написании этой херни и в момент вызова? Просто чтоб я один раз увидел. Я знаю, что уже всех заебал, но правда хочу понять что происходит
>Название есть у переменной, объект это СОДЕРЖИМОЕ этой переменной. Точно такое же, как 123 или "Hello world!", например.
Но ведь мы можем туда вписать десяток таких объектов без имен. Как оно поймет, который именно мы имеем в виду?
>counter - это переменная, в которой хранится ссылка на объект
Тот же вопрос. С точки зрения css такой селектор не может работать т.к. выдаст слишком много результатов, т.е. он недостаточно специфичный. Вот это я написал>>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 нужно читать от начала до конца, отслеживая куда заведет нить выполнения инструкций и как выполнение каждой инструкции изменит состояние программы, значение переменных или, например, состояние браузера. И когда ты хочешь обратиться к чему-либо в программе ты должен убедиться, что это позволяет текущее состояние программы, например, что функция объявлена, а у объекта есть требуемое тебе свойство.
Я кажется понимаю, что ты имел в виду. Проблема в том, что 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 нужно читать от начала до конца, отслеживая куда заведет нить выполнения инструкций и как выполнение каждой инструкции изменит состояние программы, значение переменных или, например, состояние браузера. И когда ты хочешь обратиться к чему-либо в программе ты должен убедиться, что это позволяет текущее состояние программы, например, что функция объявлена, а у объекта есть требуемое тебе свойство.
Какая кампания, маня? В кампании ты нахуй не кому не сдался. Я тебе по доброте душевной предлагаю упражняться за деньги, а ты выебываешься. Не хочешь, ну и сиди сычуй дальше, нахуй ты кому всрался.
Только продолжения, только хардкор!
При работе с аяксовыми запросами конечно же нужно.
Который вписали в текущий момент, очевидно же.
В CSS переменных нет, там селектор связывается с определенным элементом раз и навсегда, это константа.
Вообще, что бы не кукарекали байтоебы, на примере этого анона хорошо видно, почему императивные языки хуже и сложнее для понимания по сравнению с функциональными, не имеющими изменяемых данных.
Пора выкинуть JavaScript на помойку, заменив его на PureScript.
открой для себя dom mutation events
Если человек не в состоянии осилить как работают переменные и что такое стек, то от монад у него чердак поедет.
Решение заключается в превращении obj.className в массив при помощи split. После этого в нем можно проверить наличие класса, и если нет – добавить.
сама строка:
var classes = obj.className ? obj.className.split(' ') : [];
што блять? тут же нет условия, что бы делать или-или. Ну похуй, перепишем в if.
if (var classes = obj.className) {
obj.className.split(' ')
} else [] /////што блять?
Как это работает? Пардон я тупой просто
Сам урок, первая задача
https://learn.javascript.ru/array-methods
Двачую этого.
иди на завод долбаеб
если что это писал какой-то другой не понятно почему и для чего выползщий анон, лол
animenarutsYpofanatuzumakinarutoANUSmacv~ilPUNCTUMrsP(u
Огромное спасибо, анончик! Теперь все ясно окончательно, правда. Конечно, статью я тоже буду читать. Теперь я немножко менее дебил, благодаря твоим стараниям.
теперь мне этот анон не отвечает и на мыло так и не написал все из-за тебя теперь точно поеду в польшу туалеты мыть ты доволен???
умею но опыта почти нет
в ццс что такое флексбокс знаю
с колонами верстал только на бутстрапе
Отписал тебе за щеку, проверяй.
Как отрубить выдачу ошибок в теле ответа? Использую экспресс+монгуз, и если, к примеру, пытаюсь кастануть к ObjectId неподходящую строку, то он вываливает в респонс следующую строку:
CastError: Cast to ObjectId failed for value "WRONGOBJECTID" at path "_id" for model "MyModel"
Не знаю, экспресс ли это так или монгуз ругается, но отрубить надо.
Ну так обрабатывай эту ошибку в месте её возникновения как тебе нужно, а не пробрасывай дальше.
Как? Обращение к БД у меня внутри middleware, пикрил.
Оборачивание в try не помогло, замена next(err) на просто next() тоже.
У тебя один общий обработчик ошибок, который и отправляет ошибку в теле ответа. В нем и допиши отдельную обработку CastError, к примеру, вместо её отправки.
Ага, разобрался с этим теперь, благодарю.
>var classes = obj.className ? obj.className.split(' ') : [];
Это тернарное условие.
Оно эквивалентно
>var classes;
>if (obj.className) {
>....classes = obj.className.split(' ')
>} else {
>....classes = [];
Говном тебя облили заслужено. Как ты добрался до методов массива, ловко пропустив описание литерала этих самых массивов, ветвлений и в том числе этот самый тернарный оператор - не ясно. Ясно лишь то, что ты все делаешь не так. И либо мудак, либо слишком сильно в себе уверен, что равносильно тому же самому.
Начни сначала.
Это копия, сохраненная 2 сентября 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.