Это копия, сохраненная 28 июля 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
В этом треде собираются величайшие умы человечества – мастера валидации форм и специалисты по JSON-технологиям. Этот тред посвящён главному языку будущего – 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/
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
вот такой пример: https://jsfiddle.net/t78g92g6/
в консоли сыпет Avoid mutating a prop directly...
Я прописывал computed и в основном и в компоненте, нихрена не помогает, документация какая-то размытая.
Вот так: https://jsfiddle.net/1kho5LLh/
1. data в компоненте должно быть функцией, иначе все компоненты будут одинаково себя вести.
2. привязывать надо data а не prop.
3. data можно инициализировать из prop
Т.е. props - это данные инициализации, read only.
Всё мутабельное состояние хранится в data (это как state в React, только изменения отслеживаются автоматически - реактивность).
Свойства в data должны быть определены заранее, если хочется, чтобы они были реактивными - из props или просто значения по-умолчанию.
Если в надо менять data массив и т.п. - надо использовать Vue.set(...)
Быстрофикс:
https://jsfiddle.net/e40utf6b/
(value={innerText} не нужно)
>Если в надо менять data массив
Если надо менять в data массив
Оно и не должно само обновляться.
Это же всё в компоненте происходит.
Инкапсуляция называется.
Надо или события постить из чайлда, или коллбек дёргать (передав его сначала как prop).
Тебе надо определиться, что ты хочешь получить.
И нужно ли тебе вообще _реактивное_ состояние (two way binding) в самом этом компоненте.
Я сейчас попробовал сделать через коллбек - работает, но, с отставанием на 1 вводимый символ, почему-то.
Надо почитать доки, потом ещё попробую, сейчас некогда.
Я сам сейчас как раз потихоньку ковыряю Vue.
И мне оно что-то чем дальше, тем меньше нравится (в сравнении с React) - как-то ограниченно всё (хотя, там можно делать расширения, и там уже ограничений нет, я даже сделал одно, но это уже гораздо сложнее).
С другой стороны - простые вещи делаются очень быстро и просто, и без доп. инструментов, редаксов-хуяксов и прочего. И оно (немножко) быстрее реакта.
Ты посмотри на название твоего смузи треда.
>пилишь нативную апликуху, регистрируешь, коннектишься и взаимодействуешь с реальным миром
Но там есть ограничение:
The maximum size of a single message from the native messaging host is 1 MB, mainly to protect Chrome from misbehaving native applications. The maximum size of the message sent to the native messaging host is 4 GB.
Например, дерево компонент, а не дерево компонентов?
Мне от этого люто бомбит, ведь на английском это component.
На английском - средний род, it.
Так что, как говорить по русски - вопрос традиции.
Наверное, считают, что так благозвучнее (нет тупого звука в конце).
Мне нужно, чтобы реакивно были связаны компонента и само приложение Vue, в котором стоит watch на определенные переменные.
>>87591
Короче, разобрался.
Отставало на один символ потому, что я привязывался к onKeyDown и брал value, которое ещё не изменено в момент события.
Если ты хочешь использовать внутреннее реактивное состояние компонента - используй watcher (почитай про это), и из него дёргай коллбек, переданный из app.
Если внутреннее состояние тебе не нужно (именно для value) - дёргай коллбек, привязавшись по onKeyUp, или по onKeyDown, но через setTimeout(_коллбек_, 0), и дальше appText = evt.target.value;
Вот пример с коллбеком по @keyup без внутреннего состояния для value (т.е. без v-model):
https://jsfiddle.net/m205j50a/
watcher'ы и так стоят, проблема в предупреждении и еще в одной удивительной штуке: стоит инпут с датой в компоненте и watcher на эту переменную с jqurey.get на изменение. Так вот, когда ставишь брейпоинт на серверной стороне, начинают сыпаться xhr-запросы лавиной. Подозреваю, что в этом предупреждении проблема.
См. выше.
И ещё один момент.
В Vue, как бы, два вида реактивной передачи данных.
One way data flow через props - parent -> child.
И реактивное связывание через v-model - в обе стороны, но только внутри компонента.
Т.е. ты можешь менять prop из parent, и child сразу изменится.
Но, если что-то меняется в child, то наружу это можно передать либо через event (в Vue своя система событий) или через callback.
Да, решил через event сделать. Посмотрел пример простейшего EventBus, чтобы напрямую из компоненты $root не вызывать.
Забывает строгая типизация, а мы подъебываем.
>EventBus
Это имеет смысл, только если у тебя несколько подписчиков на событие из компонента, на разных уровнях, а не только parent.
И, если это так, то тебе лучше сразу разобраться с Vuex.
Он именно для этого, и это именно замена EventBus.
Всё равно с ним придётся разбираться, если у тебя уже сразу пошли такие расклады.
Аноны помогите. Нихуя не понимаю в setTimeout. А именно как оно блять нахуй работает?
Короче, суть в том, что я решил сделать анимацию баннеров через JS. Есть две функции, в одной с помощью рекурсии setTimeout происходит смена баннера каждые 4.5 секунды, во второй функции происходит плавное понижение свойства opacity этого же баннера. Так вот, вторая функция прописывается в первой, чтоб как бы происходило плавное изменение. Вообщем, вот код:
function fadeOut(step) {
var stopVal;
if (step > 0) stopVal = 0.0;
if (step < 0) stopVal = 1.0;
var el = document.getElementById("change");
var currentOpacity = parseFloat(el.style.opacity);
if (isNaN(currentOpacity)) currentOpacity = 1.0;
currentOpacity -= step; el.style.opacity = currentOpacity;
if (currentOpacity.toFixed(2) != stopVal) setTimeout(fadeOut, 5, step);
}
var timerId = setTimeout(nextBanner, 4500, 1);
function nextBanner(i) {
fadeOut(0.01);
var elements = document.getElementById("change");
var currentBanner = elements.style.backgroundImage; var indx;
var staticPath = "\"http://172.16.2.16/static/starter-theme/images/";
//confirm(elements.style.opacity);
if (currentBanner == "url(" + staticPath + "1.jpeg\")" || currentBanner == "") indx = 0;
if (currentBanner == "url(" + staticPath + "2.jpeg\")") indx = 1;
if (currentBanner == "url(" + staticPath + "3.jpeg\")") indx = 2;
if (currentBanner == "url(" + staticPath + "4.jpeg\")") indx = 3;
indx += i; var newPath;
if (indx >= 4) indx = 0;
if (indx == 0) newPath = "url(" + staticPath + "1.jpeg\")";
if (indx == 1) newPath = "url(" + staticPath + "2.jpeg\")";
if (indx == 2) newPath = "url(" + staticPath + "3.jpeg\")";
if (indx == 3) newPath = "url(" + staticPath + "4.jpeg\")";
elements.style.backgroundImage = newPath;
fadeOut(-0.01);
timerId = setTimeout(nextBanner, 4500, 1);
}
Так вот, дело в том, почему-то ну нихуя не работает. А симптоматика следующая: функция fadeOut не срабатывает сразу, она понижает сначала opacity до 0.99 с 1.00 и ВСЕ, хотя должна понижать до нуля. КАКОГО ХУЯ?
Я ПРОШУ ПРОЩЕНИЯ у сеньоров за мой говнокод. мне вообще похуй на яваскрипт, просто нужно сделать вот это и все. я вообще на питоне лабаю
Аноны помогите. Нихуя не понимаю в setTimeout. А именно как оно блять нахуй работает?
Короче, суть в том, что я решил сделать анимацию баннеров через JS. Есть две функции, в одной с помощью рекурсии setTimeout происходит смена баннера каждые 4.5 секунды, во второй функции происходит плавное понижение свойства opacity этого же баннера. Так вот, вторая функция прописывается в первой, чтоб как бы происходило плавное изменение. Вообщем, вот код:
function fadeOut(step) {
var stopVal;
if (step > 0) stopVal = 0.0;
if (step < 0) stopVal = 1.0;
var el = document.getElementById("change");
var currentOpacity = parseFloat(el.style.opacity);
if (isNaN(currentOpacity)) currentOpacity = 1.0;
currentOpacity -= step; el.style.opacity = currentOpacity;
if (currentOpacity.toFixed(2) != stopVal) setTimeout(fadeOut, 5, step);
}
var timerId = setTimeout(nextBanner, 4500, 1);
function nextBanner(i) {
fadeOut(0.01);
var elements = document.getElementById("change");
var currentBanner = elements.style.backgroundImage; var indx;
var staticPath = "\"http://172.16.2.16/static/starter-theme/images/";
//confirm(elements.style.opacity);
if (currentBanner == "url(" + staticPath + "1.jpeg\")" || currentBanner == "") indx = 0;
if (currentBanner == "url(" + staticPath + "2.jpeg\")") indx = 1;
if (currentBanner == "url(" + staticPath + "3.jpeg\")") indx = 2;
if (currentBanner == "url(" + staticPath + "4.jpeg\")") indx = 3;
indx += i; var newPath;
if (indx >= 4) indx = 0;
if (indx == 0) newPath = "url(" + staticPath + "1.jpeg\")";
if (indx == 1) newPath = "url(" + staticPath + "2.jpeg\")";
if (indx == 2) newPath = "url(" + staticPath + "3.jpeg\")";
if (indx == 3) newPath = "url(" + staticPath + "4.jpeg\")";
elements.style.backgroundImage = newPath;
fadeOut(-0.01);
timerId = setTimeout(nextBanner, 4500, 1);
}
Так вот, дело в том, почему-то ну нихуя не работает. А симптоматика следующая: функция fadeOut не срабатывает сразу, она понижает сначала opacity до 0.99 с 1.00 и ВСЕ, хотя должна понижать до нуля. КАКОГО ХУЯ?
Я ПРОШУ ПРОЩЕНИЯ у сеньоров за мой говнокод. мне вообще похуй на яваскрипт, просто нужно сделать вот это и все. я вообще на питоне лабаю
Причем, Анчоусы мои дорогие, отдельно функция fadeOut работает нормально
> https://github.com/vladimir37/js-thread/blob/master/Wiki/faq.md
> удивительно удобного синтаксиса
Это что за наркоман написал?
Но вообще да, блять пиздец просто. И что тогда делать? Мне впадлу ИДЕ скачивать фришные. в браузере ковыряться что ли?
Говно какое-то. Как же сложно переходить с байтоебства на жс. Нельзя вот так просто скачать что-нибудь и кликать на консоле jsjaff example.js, нет нужно вбивать в гугол how to run JAVASCRIPT ON LINUX и качать огромные папки like NODE.JS, который тебе нахуй 100 лет не уперся.
откуда скрин?
А в чем проблема в браузере? Тот же jsfiddle из шапки, вполне удобен, или просто Developer Tools хрома
А если тебе надо будет изучать архитектуру конкретного фреймворка, то тут вообще никуда не деться
Ставишь ноду один раз, а потом на изичах через любимый терминал пишешь:
node your_mom_is_beautiful.js
Или если проект с зависимостями, пишешь:
npm i
npm start
СЛОЖНАААА
>я привык в IDE форматировать код. Первое, что я попробовал, это brackets - быстрый, но хуевый. Я привык форматировать код очень часто, на автомате ctrl + alt + L. В brackets это выглядит очень хуево.
Атом вообще долго открывается. Но хуй с ним. Форматирует тоже хуево. Зато блять отступы, как на 2-ом пике он убирает, но верхние не УБИРАЕТ. Сука, как же смешно блять)
Саблимом пока не пользовался. Либо vim хуярить, чего очень не хочется, либо надеятся на этот саблим. Хз вообще.>>87802
>Ставишь ноду один раз, а потом на изичах через любимый терминал пишешь:
>node your_mom_is_beautiful.js
Я же написал, мне впадлу node js пихать в свой кудахтер без надобности. Хотя наверное придется. Огорчение.
Вот я даун. не чекаю что выше писал. ну да ладно.
Реквестирую, почему не работает 1 скрин?
https://ashleynolan.co.uk/blog/frontend-tooling-survey-2018-results#js-framework-essential
>мне впадлу node js пихать в свой кудахтер
Но, тебе придётся "пихать node js в свой кудахтер", если ты хочешь "покомпилировать js на компе", сучёнок.
Байтоёб он, блядь, ну надо же.
Байты ты свои как ебёшь?
Прямо в виме, без смазки, или, всё-таки, компилятор используешь?
Но, node js всё равно придётся поставить, лол.
Если ты хочешь ES6+ и /или выполнять скрипты как консольные приложения.
>>87785
>>87804
Читаю твои посты и содзается впечатление, что ты не байтоеб, а самый натуральный долбоеб. Ты походу даже не знаешь, что термин "байтоебство" означает. У тебя такие тупые вопросы, что ты походу вообще ни разу не программировал, и тем более не занимался байтоебством на низкоуровневых языках.
Да заебешься под каждый свое придумывать, особенно если он не для прибыли
В чём проблема обменяться объёмными данными за несколько сообщений? Если твои данные превышают лимиты сообщений, то придумай и инкапсулируй в Native messaging protocol свой протокол обмена данными между расширением и нативным приложением, пакетами, где размер пакета + размер заголовка пакета укладывается в лимиты хромовских сообщений, а внутри расширения и приложения аккумулируй и сшивай пакеты.
Я не пробовал, но думаю что в браузере скорее всего стоит защита для такого случая. Если попытаешься разбить файл на чанки, и все их отослать в расширение и если слишком много 1мб чанков/сообщений за определеный промежуток времени отослешь, то, я думаю, браузер просто перестанет их принимать из-за подозрительной активности. Я вообще не тот анон, который изначально задавал вопрос, но стало интересно, надо будет попробовать зафигачить такое тестовое раширение, когда будет время.
Цель: создание календарика с событиями. На фото то, что приходит в голову.
Откуда брать данные о количестве дней в месяце и как лучше синхронизировать порядок дней, ПН, ВТ..., и числа? Т.е. как на фронте мне узнать что в этом месяце, например, первый день - среда, чтобы построить таблицу месяца исходя из этого.
Нахера startday, а если я буду пользоваться всю жизнь этой программой, накуя раздутая база? Алсо, moment.js
И причем здесь пн, не пн. У каждого дня порядковый номер.
Объект даты сам знает сколько дней в месяце и какой день недели в любой день.
https://www.w3schools.com/js/js_date_methods.asp
https://stackoverflow.com/questions/1184334/get-number-days-in-a-specified-month-using-javascript
В базе надо хранить исключительно дату события. Это всё, что от Date.
Какую-то херь запутанную и громоздкую ты накодил, держи такой вариант:
https://plnkr.co/edit/g7vQvKjLMO3yrfrMyI67?p=preview
Урлы в массиве, он передаётся в функцию параметром, как и id элемента с интервалом, вместо урлов картинки в base64 в этом примере, статикПас добавишь сам если нужно. Но это тоже хуёвый код, без всяких проверок, допилишь короче.
Спасибо большое, Анон. Быстро все переделал, теперь работает как надо. Добра тебе!
У меня там в итоге еще websocket'ы будут события отправлять и принимать.
Ты же уже всё разрешил манифестом и регистрацией в реестре своего приложения, поэтому на подозрительную активность ему кмк будет наплевать, он же не прослушивает какой-то эфир с кучей непонятно чего, а строго коннектится к тому , к чему прописано. Алсо не надо сразу всё посылать, там же есть колбеки, в которые вкладываешь ответы, можно положить ответ, что чанк получен, жду следующий, даже можно без колбеков реализовать - просто надо подсмотреть как там всякие tcp/ip реализованы и что-то сделать упрощенное: типа первое сообщение: запрос на передачу > ждёшь входящее сообщение с ответом что к приёму готов, посылаешь сгенерированный id для этого набора данных, номер чанка, размер чанка еще что-то и сам чанк, ждёшь пока придёт сообщение - чанк успешно получен, посылаешь следующий чанк с тем же id, опять ждёшь, последний помечаешь, что он последний, теперь реципиент может начать сшивать чанки с одинаковым id и обрабатывать, а может отложить это, принимаю следующий набор данных с другим id, и потом уже дождавшись определенного сообщения с командой оработки начать сшивать чанки с одинаковыми id. Это так примерно, там конечно много всяких подводных камней вскроется, но чисто теоретически не думаю, что там большие проблемы возникнут, я тоже с нативным клиентом не пилил, нет надобности. Хотел как-то побаловаться, чтобы в yotube-dl просто урл страницы с видео передавать, но потом забил - редко что-то качаю.
А для джавы тебе нужно пихать JVM. А для питухона тебе нужен питоновский интерпретатор. А для го тебе надо качать голанговский компилятор. А для шарпика тебе вообще нужна вижуал студия, которая тяжелее твоей бывшей.
Чувак, это норма качать вспомогательное ПО для окружения, в котором ты собираешься работать. А если тебе уж совсем в падлу, то иди на хуй открывай любой браузер, открывай консоль разработчика и пиши что хочешь. Проблемы на ровном месте.
Сервер таки выдает хтмл, но только семантику - никаких вспомогательных/декоративных элементов, никаких классов/стилей, никаких кастомных атрибутов, максимум - айдишники на элементах лайаута.
Все остальное делает клиент, используя при этом тот же роутинг, что и серверсайд.
Сделал регулярку PATTERN, она определяет, чередуются ли согласные и гласные буквы в слове, т.е. чтобы не было двух подряд идущих гласных или согласных, и в слове должно быть больше одного символа.
const VOWELS = "aeiouy";
const CONSONANTS = "bcdfghjklmnpqrstvwxz";
const PATTERN = new RegExp(`(^([${CONSONANTS}][${VOWELS}])+[${CONSONANTS}]?$)|(^([${VOWELS}][${CONSONANTS}])+[${VOWELS}]?$)`, "gi");
Вроде как PATTERN.test(word) должен возвращать true, когда word соответствует регулярке, а иначе false. Однако, он работает странно: для строчек, которые подходят под шаблон, он при первом вызове дает true, а при следующем вызове false, и дальше чередуется.
То есть [PATTERN.test("pole"), PATTERN.test("pole"), PATTERN.test("pole"), PATTERN.test("pole")] вернет [true, false, true, false]
Помогите понять, почему так происходит.
var regex = new RegExp(`^[${VOWELS}](?:[${CONSONANTS}][${VOWELS}])[${CONSONANTS}]?+$`)
var regex = new RegExp(`^[${VOWELS}](?:[${CONSONANTS}][${VOWELS}])+[${CONSONANTS}]?$`)
Не то скопировал.
>>88353
Моя регулярка работает как надо, вопрос был не об этом, а о том, почему метод test дает то тру то фолс, для строки которая под выражение подходит, а регулярка точно работает, если использовать не тест, а через саму строку вызывать match или search все работает как надо и при повторных вызовах тоже.
In: "polet".match(PATTERN)
Out: ["polet"]
In: "polet".match(PATTERN)
Out: ["polet"]
In: "polet".search(PATTERN)
Out: 0
In: "polet".search(PATTERN)
Out: 0
Но:
In: PATTERN.test("pole")
Out: true
In: PATTERN.test("pole")
Out: false
In: PATTERN.test("pole")
Out: true
In: PATTERN.test("pole")
Out: false
Что за херня?
Константу нельзя только переприсвоить, все поля в ней спокойно меняются, втч перемотка серча. В твоем втором примере каждая хуйня в кавычках - это новый объект.
Так что просто оберни свою регулярку в метод.
>Константу нельзя только переприсвоить, все поля в ней спокойно меняются, втч перемотка серча
Ясно, спасибо. Я понял, я поставил флаг глобального поиска g, поэтому он между вызовами сохраняет индекс следующий за местом последнего совпадения и ищет начиная с него. Достаточно убрать флаг g, и все работает, как задумано, там на самом деле этот флаг и не нужен, там используются символы начала и конца строки, ^ и $, т.е. либо строка сразу вся попадает под шаблон, либо нет.
>>88513
>Я думаю, что такие вещи регулярками не делаются. Поэтому и не работает.
Звучит, как будто интерпретатор на меня обиделся и нарочно не работает, так как я ожидаю, но это же не так. Меня конкретно в этом случае интересовала причина неожиданного для меня поведения.
>Это задача именно для последовательного перебора.
Ну а как по твоему реализуют регулярные выражения? Там же ведь строчка последовательно проверяется, регулярные выражения просто способ задать условия проверки, разве не так.
>поэтому на подозрительную активность ему кмк будет наплевать, он же не прослушивает какой-то эфир с кучей непонятно чего, а строго коннектится к тому , к чему прописано
Ну это как бы да. Но тогда зачем они поставили это дебильное ограниение по 1 мб на сообщение, если всё равно похуй сколько ты их отошлешь? Наверно специально, чтобы мамкиным хакерам усложнить работу?
Чтобы долбоёбы не посылали 1ГБ/в секунду, подвешивая хром и отправляя ОС в глубокий своп, у хрома да и дургих браузеров многих таких фишечек направленных на оптимизацию производительности, энергопотребления и потребления памяти, он к примеру частоту таймеров понижает до 1000ms в неактивных вкладках. Есть два способа установки расширений - пользователем и административными политиками, если хакер сумел убедить пользователя что он не хакер или получил административные привилегии - дальше уже какие-либо защиты бессмысленны, все действия должны восприниматься как легитимные, хром лишь изредка предупреждает - что установленное в !режиме разработчика расширение что-то там изменило, отключить его? А так лимиты если и есть, то скорее всего несут цель не зафризить наш любимый суперотзывчивый гугелхром. Но это все теория - надо пробовать или читать хромиумные исходники.
Вместо твоей регулярной каши, легче написать обычный цикл и будет сразу понятно что код делает. Вот написал по-быстрому и работает как надо.
https://codepen.io/anon/pen/yjjQMp?editors=0011
Добавлю, что хакеру которому повезло установить малварное расширение тем или иным способом глупо будет спамить хромиум мусором, он лучше установит майнер, спиздит учётки, заинжектид какую нибудь рекламу, или шифранет файло натвным клиентом и потребует битки. Лимит сделн по какой-то другой причине.
Цикл ещё и быстрее работает, и меньше жрёт.
На этой конкретной задаче, разумеется, и на подобных.
У меня есть 4 массива определенных чисел:
1 массив (X) чисел используется, чтобы отобразить координату по оси Х.
2 и 3 массивы (Y1 и Y2) - это координаты по оси Y, которые нужно представить в виде линий.
4 массив (Y3) тоже координаты по оси Y, который нужно представить в виде точек.
Я смог сделать линии для 2 и 3 массивов, но после многих дней поиска я так и не смог отобразить 4 массив в виде point chart. При работе с ComboChart также к успехам не смог прийти. Был бы очень признателен за помощь.
Пример:
https://jsfiddle.net/yvy6nm53/2/
> if(B===D) alert('true');
> penis.setBalls('foo');
> var softPenisCompareResult = B==D; // true
> var hardPenisCompareResult = B===D; // false
Лол, поржал. Даже не знал, что таким кто то занимается
>>88661
Да норм угарели, там еще по соседству есть проект vagina.js. Ну тут просто угарел с комментов https://github.com/edankwan/penis.js/issues/13
Как я понял, он позволяет делать реактивность как в Vue.
Кто пробовал - как ощущения, какие минусы, и т.д.?
Тупой нуфаг вкатывается в тред с тупым вопрос, час сижу и не могу сообразить, где у меня косяк.
Кароче, мне надо, чтоб выдавало подряд списком 100 результатов матчрандома, а у меня цикл тупо зависает и всё.
Подскажите нуфагу, где у меня косяк, пиздец я устал и перегрелся уже.
Начнем с того, что у тебя в переменной рандом аттак не целое число, его округлять нужно. Лучше просто так задай i <= 100.
>атчрандома, а у меня цикл тупо зависает и всё.
В условиях цикла у тебя стоит "i + 1". а надо либо "i++", либо "i += 1"
Тогда ты не понимаешь, что вот здесь вычисляется.
Ты получаешь рандомное число от 1 до 3, и проходишь по циклу соответсв. максимум 3 раза.
Блять, это пиздец чувак.
Нахуй еще жс с такими знаниями учить.
У него о рандомное число записывается в другую переменную, переменная i инициализируеься в условии цикла и ей присваивается значение 0. Ты чо пишешь то?
Условие у него не выполняется, потому что в правой части у инкремент неверный и условие i < random неправильное, потомоу что в рандоме должно быть целое, а не с плавающей точкой.
Во-первых, у тебя корректно отработал скрипт
Во-вторых, у того инкремент переменной i был неправильный
Заебало сидеть без работы. Посоветуйте минимальный набор технологий, чтобы устроиться на галеру в мухосрани. Изучаю HTML, JS, CSS, немного реакт. Стоит ли еще учить SASS, Underscore, Lodash?
this.handleClickProviderFactory = this.handleClickProviderFactory.bind(this);
Почему просто не писать хендлеры стрелочными функция в конструкторе?
Вот сделал лягушатник, подводных камней не нашёл. Всё в Incr.js
https://codesandbox.io/s/zpyk52vy4
>>88874
С серверной частью разберись.
https://github.com/devSchacht/translations/blob/master/node-hero/full_book.md
Сделай проектик, хоть прям по этому туториалу. И ищи уже.
функции биндят чтобы при каждом рендере не создавалась новая функция. Ты ее 1 раз создаешь и передаешь в компонент. Если ты будешь писать стрелочные или анонимные функции, то при каждом рендере будет создаваться новая функция
Ты повторяешь то, что написано в документации.
Открой пожалуйста мой пример, открой консоль. Там везде отладочная печать.
Стрелочная функция у меня создаётся только один раз в конструкторе. Дальше, даже в дочерние компоненты, передаётся только ссылка.
ну хз. Как по мне создавать функции в конструкторе это немного говнокод. Методы в классе создаются отдельно. Можешь писать так как ты пишешь, программирование штука гибкая, но так никто не пишет + наверняка ты наткнешься на какую-то поебень с замыканиями в будущем.
>говнокод
Как по мне, так получается чище и структурированней.
По докам ты создаешь метод на прототипе и байнд в конструкторе, это две функции вместо одной и тот же засранный конструктор.
Никакой поебени я пока придумать не могу. Нужен случай, где это просто не будет работать.
Тем более новый подход с публичными полями это по сути и есть то, что я предлагаю, только ясней, потому что синтаксис публичных полей бестолковый.
Единственная беда, которую могу придумать, это наследоваться от своих компонентов.
class Button extends Component {
handleClick() {console.log(`hi`)
}
class WarnButton extends Button {
handleClick() {
super() // -> hi
console.log(`warn`)
}
}
Вот такое нельзя будет сделать. Но многоуровневое наследование недолюбливают доки, я и Ден наше солнышко Абрамов.
Так что я просто не могу понять, почему так никто не пишет.
>Почему просто не писать хендлеры стрелочными функция в конструкторе?
Это вопрос стиля. Пиши, как нравится.
Мне, например, кажется неразумным перегружать конструктор определениями функций.
Есть ещё class properties, это лучше всего.
https://github.com/facebook/react/issues/9851
я ток вкатываюсь. эт значит что я мужик?
Как применить к этому компоненту нативные методы?
Например через componentDidMount() я хочу к обьекту style получить доступ, или допустим к координатам и размерам отрендеренного элемента. Через this не работает чет.
Второй вопрос - опять же в componentDidMount() в корневом элементе я получаю JSON с помощью AJAX. Объект из JSON я записываю в state.arr корневого эл-та. Далее передаю этот state.arr массив пропсами в дочерний элемент. Он передается в дочерний элемент, и в дочернем я могу допустим в консол-лог вывести массив, но вот при попытке вывода this.props.arr - хуярит ошибку. Это именно с массивом который я по AJAX получил. Как так то?
>refs
Да.
Обычно в качестве ref используют callback.
ref={(nodeRef) => this.nodeRef = nodeRef}
Тут есть нюанс - в этом случае nodeRef может быть null при первом вызове.
Нормально, если ты просто делаешь присваивание как выше - это похуй.
А если сразу в колбеке начинаешь работать с nodeRef - - надо иметь это в виду.
Вообще, не стоит использовать стрелочные функции или bind(this) в render(). Могут быть лишние update. Надо понимать, что в этих случаях каждый раз создаётся новая функция.
Лучше определить колбек как стрелочную функцию в конструкторе:
this.refCallback = (nref) => {...};
В этом случае она будет вызываться только когда нужно, и там не будет null.
Или можно определить это как метод и сделать:
this.methodName = this.methodName.bind(this);
в конструкторе.
А потом ref={this.methodName}
Рекомендую ещё читнуть вот это:
https://twitter.com/dan_abramov/status/752936646602031104?lang=en
И вот это (про bind в render):
https://medium.freecodecamp.org/why-arrow-functions-and-bind-in-reacts-render-are-problematic-f1c08b060e36
Надо читать комменты к твиту.
Если хочешь менять style, возможно лучше делать декларативный ререндер, вместо сайд эффектов в didMount
Тогда скажи мне пожалуйста еще одну вещь.
В нативном dom я могу получить детей элемента, могу получить отдельный child - elem.children[0], например.
Очень удобно для манипуляций. В react есть что то подобное?
Или я все еще не вкурил его подход?!
Прикольно как. Тис из WebGL.
у меня есть дефолтное сосостояние стэйта. Событием я его меняю. Но console.log в обработчике не фиксирует что стэйт изменился.
А вот console.log в render стэйт уже фиксирует изменения.
Получается нужно на вкладку два раза нажимать что бы она открылась.
Почему так?
вот кодепен
https://codepen.io/anon/pen/GdXKeY
А что ты хотел, эта же вебтехнологии, которые жрут больше чем надо. На нативном софте это бы летало в 60фпс на древнем компе. Лично у меня этот сайт плавно работает, но у меня и комп довольно мощный и актуальный.
Куда еще можно легкий сервак быстро и бесплатно захостить? Чтобы без подводных камней с указанием карточки и проебом средств с нее.
Amazon разве что еще знаю, но пиздец у них там ФУНКЦИОНАЛА, там вообще без гайдов уровня "тыкни сюда, перейди сюда, нажми это" не разобраться.
Гугли видео-гайды по хостингу ноды, какие-то за 2017-18 года, с ними быстрее поймешь.
По ref ты и получаешь нативный dom-элемент.
Конечно, если это ref из dom-элемента - div, span, etc.
Если это реф из компонента - надо уже в компоненте настроить реф(ы) на нужный элемент или элементы. Почитай комменты к тому твиту.
Ну, и на крайний случай (напр. если компонент чужой) - есть findDOMNode().
zeit now даже проще heroku
>Очень удобно для манипуляций.
И да, скорее всего, ты что-то делаешь не так.
Например - ломишься в открытую дверь.
Зачем тебе манипулировать нативными элементами, если у тебя есть реакт, который сам ими манипулирует лучше тебя?
В React рекомендуют рассматривать как должен выглядеть твой компонент в каждый момент времени. Т.е. рендерить его по разному. А не думать о том, как бы подешевле изменить одно состояние на другое.
Дело в том, что весь рендеринг идёт в виртуальный dom, а реальный потом рендерится только в изменившихся местах.
Дай уже себе труд прочесть, хотя-бы, getting statrted на их сайте. Там в конце (Thinking in React) делается простое приложение.
Для пущей оптимизации можно оверрайдить метод shouldComponentUpdate() - можно убрать лишний рендеринг даже в виртуальный дом (актуально для больших списков со стейтами - выбор строк и т.п.).
У тебя там фигня какая-то.
Ты чего хотел добиться, вообще?
Два момента:
1) В Реакт синтетические события, не нативные.
Сделай console.log(e) и всё увидишь.
2) Чтобы компонент изменился - надо снаружи (из родителя) менять ему prop. На стейт никакой реакции нет (это же не Vue). Стейт - внутреннее дело компонента.
Ты определённо чего-то недопонял.
DOM (реальный) - очень медленный.
JavaScript (вообще, и вирт. DOM в частности) - довольно быстрый.
Виртуальный DOM - для скорости, а не потому что "абстракции".
Реакт охуенен.
Но, до понимания этого надо дозреть.
Алсо, если ты больше "верстальщик", а не программист - попробуй Vue, может быть лучше пойдёт.
Там тот же вирт. дом, но есть two-way binding как в Angular.
Есть свои события и т.п. Т.е. это больше фреймворк, чем библиотека.
Т.е., если React - это только View (V), то Vue - это MVC (MVVC).
При этом нет всей той ебанины, которая есть в ангуляре.
Вообще, если надо быстро вкатиться в современный фронтэнд на JS, то Vue - лучший выбор. Ничего лишнего не надо вообще, ни бабелей, ни ноды, ни редаксов-хуяксов, вообще нихуя.
Просто браузер, Vue и ES5.
2 года назад трогал ангулар, тот, который 1-й, но он уже никому не нужен, верно? Учмить новый ангулар, или реакт?
>>У тебя там фигня какая-то.
Я похоже залез позже и все сломал.
>> На стейт никакой реакции нет (это же не Vue)
Ахуительные истории. Впрочем ты сам себя поправил.
То что меня волнует - это асинхронность setState -а. Там еще какая то магия для меня. Что бы сразу схватить изменения в state - нужно в setState отправлять коллбек.
Да я читал. Просто после нативного JS нужно немного перестраивать восприятие. Но пожалуй перечитаю)
Асинхронность там потому, что при этом запускается внутренняя механика реакта.
Которая, помимо всего прочего, группирует внутренние события изменения, чтобы выполнить их пачкой. Потом обновляется вирт. dom, потом - реальный dom, а потом вызывается колбек, если он есть.
Т.е., после одного изменения стейта может последовать хуева туча других изменений.
И, в итоге, ты получаешь уведомление, что всё отработало, и dom теперь новый.
>>90632
Вот эту книгу ещё посмотри, весьма толковая:
http://www.allitebooks.com/react-quickly/
Много внимания уделяется вопросам "почему" и "зачем", а не только "как".
Но, это надо именно читать.
>но вот при попытке вывода this.props.arr - хуярит ошибку.
Пропсы рид онли. Сохраняй в this.pizda
>книги
>разработка
Какого это, обучатся по методичке которая устареет пока несешь ее из магазина домой?
Я выбираю такие методички, которые не завязаны на конкретные версии, и не являются пошаговыми руководствами.
>>90777
Он этнический турок, насколько я помню.
Поинтересуйся, кто разрабатывает PrimeFaces, например (https://www.primefaces.org, https://www.primefaces.org/primefaces-team/).
Настоящие турецкие турки.
PrimeFaces - это JSF, в основном, был.
Теперь - и JS.
Вот сюда ещё посмотри: http://azat.co
Дети, блядь, вам к экзаменам надо готовиться, хули вы тут делаете?
> PrimeFaces
Пиздец, я думал, готовые интрыпрайзные рюшечки в первой половине 2000х уже сдохли, вместе с Oracle Forms и прочей RAD-Wizard-based-хуетой.
PF - это ведущая реализация JSF.
Ты, очевидно, об этом не знал.
Как и о существовании JSF, собственно.
Ну, и сколько стоит твоё мнение по этой теме?
Мне нужно поставить raw-socket, а эта хуйня вечно ругается на отсутствие node.h. Пистон 2.7 стоит, C++ хуйня стоит, все это определяется node-gyp'ом, но вот сука node.h он не видит.
Вот что это блять такое? Чтобы запуржить тестовую БД до и после теста, мне приходится писать АСИНХРОННУЮ ОБЕРТКУ, КОТОРАЯ АСИНХРОННО КОННЕКТИТСЯ К БД, ОБОРАЧИВАЕТ АСИНХРОННУЮ ФУНКЦИЮ И ПОТОМ АСИНХРОННО ЖДЕТ АСИНХРОННЫЙ ТЕСТ. Все это уместилось бы в одну элементарную легкочитаемую функцию, если бы дебильное жс-коммьюнити не дрочило на асинхронность при каждом чихе, а использовало ее там, где она действительно нужна.
Ананасы, подскажите годные курсы по алгоритмам на жаваСкрипте для новичков, можно на ангельском.
А Future там есть?
Это, обычно, помогает.
Алсо, открой для себя функциональное программирование. А то, что-то градус баттхёрта у тебя несколько выше нормы, лол.
По алгоритмам не надо на жабаскрипте.
По алгоритмам надо просто по алгоритмам.
И не курсы, а хорошую книгу для начинающих.
Вот такую:
http://www.allitebooks.com/algorithms-unlocked/
Фамилия автора говорит сама за себя.
Книга охуенна. И она маленькая.
Язык программирования - английский/псевдокод.
А вот по функциональщине в JS - очень рекомендую JavaScript Allonge.
С нуля, буквально. Просто о сложном.
Где взять - сам нагуглишь.
Спасибо, книгу немного читнул реально очень интересная.
Нет такого юзкейса, чтобы блокировать однотредовый язык, поэтому все неблокирующее.
После открытия [Head|Tail] и иммутабельности жаваскрипт каким-то образом пропадает из жизни? У меня не пропал.
>>91410
Понятно, что это костыль, призванный сгладить хуевость самой архитектуры языка, но блять, когда тебе приходится делать даже запуск ебучего сервера асинхронным из-за куска низкоуровневого кода для БД, который притянул асинхронность наверх, то осознаешь, насколько это пиздец.
Я имел в виду, что фп даёт понимание того, как сделать такое асинхронное программирование более удобным.
ФП - это не head|tail и иммутабельность, это value oriented, прежде всего. И конвейер. Вместо императивной дрисни из колбеков ты работаешь со значениями - future и т.п.
Монадообразные штуки всякие позволяют писать асинхронный код так, что он становится похож на синхронный. Просто вместо точек с запятыми у тебя монады.
А async/await - это для программистов на бейсике, которым вдруг стало надо писать асинхронный код.
Да он долбаёб очевидно, раз про промисы не знает.
Вообще похуй. Проблемы хохлов - не мои проблемы.
>рекомендую JavaScript Allonge
Глянул в эту книгу, там полно фоток кофе и кофеварок. Понятно на кого эта книга расчитана.
Мне нужно накатать небольшую программу, используя Node.js
Есть какие-нибудь проверенные места, куда можно обратиться, чтобы за адекватный донат сделали?
Определяющая черта ФП как парадигмы - это как раз иммутабельность и неизменяемый стейт, когда в любой момент выполнения программы можно гарантировать, что, f(x) == f(y), если x == y. Остальное тобой перечисленное - это элементы ФП, реализовать которые можно в любом языке. Некоторые из них полезны, некоторые нахуй не нужны и имееют смысл только в условиях работы с неизменяемым стейтом.
Между (А) и (В) нет вообще никакой разницы, кроме стилистической, тебе в любом случае придется писать принимающую функцию на верхнем уровне, которому нужны эти records. Только в первом случае это будет async/await функция, а во втором коллбэк в then.
Не понятно почему для тебя это такое большое дело. Чейнишь промисы и все прозрачно и нормально.
Я могу сделать практически за бесплатно, если ты разрешишь этот код выложить на гитхаб и не сильно ограничен во времени. Интересует?
Потому что мне физически больно, когда дизайн низкоуровневого компонента влияет на дизайн высокоуровневых. Если бы у этого монго драйвера были асинхронные версии методов, то я бы с таким же успехом воткнул этот костыль для неблокирующнго кода на верхнем уровне, где он реально нужен. Но из-за одной ебучей либы мне теперь нужно оборачиваться в монады или хуярить async/await на каждый чих.
Это дизайн node.js
Здесь единая репрезентация всего IO и оно неблокирующее в наиболее простом и прозрачном виде — continuation-passing style
Но у меня нет проблем с пониманием самых азов.
Если ты уж с этим не справляешься, то что будет дальше? Прототипирование, замыкания, деструктуризация, промисы, асинхронность, и куча других ништяков.
яб выебал
Задавай конкретные вопросы под конкретную задачу, в том числе и себе. Не хуйню вроде "я ничего не понимаю. объясните мне все", а "как найти первый элемент с классом .zalupa и вставить после него свежесозданный элемент с класс .hui".
если бы все всё понимали сразу, то для вката хватало бы месяца. Просто читаешь и без задней мысли делаешь тоже самое, что и в книгах. Через месяц джун, через 2 мидл, а через 3 сеньор
А с чего ты взял, что программирование даётся каждому? Чтобы кодить, нужно иметь своеобразный склад ума. Почти все мои одногруппники после получения диплома программиста шли работать не по специальности, потому что сложнааа, ой всё...
потому что это обычный скил, который преобретается путем задроства и практики. Читай-тренируйся-читай-тренируйся. Через месяц-два-три-пять что-то начнет получаться. Да, возможно свою фреймворк ты не напишешь, но быть обычно макакой, формашлепом за 90к в месяц-под силу всем.
В этом виноват не склад ума, а российская система образования. В программировании нихуя сложного или уникального нет, просто это слишком молодая дисциплина с кучей объективно хуевых практик и убеждений, которые тем не менее педалируются их адептами как нечто хорошее. Отсюда и кучи макак, которые учатся по учебнику, в котором после объяснения базового синтаксиса им говорят "ну а теперь мы будем говнокодить свой сервер", а не прививают дисциплину разработки/тестирования.
ЖС в этом плане отличный пример, любой желающий его изучить сразу же наткнется на кучи говноучебников по фронтенду, где код предлагается запускать через браузер, где о тестировании ты услышишь краем уха и тут же забудешь, потому что в браузере гонять тесты слишком муторно и ни один учебник этим не занимается, максимум опишет в конце какую-нибудь BDD-мочу с кучей магически появляющихся global-методов, хуков, коллбэков и моков, вместо простого как палка TDD фреймворка с тремя assert'ами, которых хватает за глаза.
Да мне вообще непринциально, куда ты его выложишь, мне даже не нужны права на этот проект.
Пиши на фейкомыльцо testI|Argsc1ANUSm<:oailPUNCTUMra4Bu
Чет ты перемандил. В DOM как раз все прозрачно кристально. Читай Кантора еще и раз, и крайне внимательно. У него зачастую для понимания важно прямо таки отдельное слово. Очень внимательно читай, и сразу тести все в песочнице.
>>91671
А этого не слушай. Нет никакого "склада ума", есть желание, упорство и интерес.
Человек с пика, Кнорозов Юрий Валентинович, разгадал шифро-письменность майя. Он как то сказал - не существует того, что могло быть создано одним человеком, и не понято другим.
Вопрос только в задротстве.
Пишите свое.
Я нуб, слышал пару раз про какие-то тесты, но нихуя не понимаю как ими пользоваться. Это типа как assert или что?
В браузере пользоваться только через жопу, устанавливай ноду и разбирайся с ней в первую очередь.
Ну она у меня есть, с ней я и дебажу код, который не в доме. А что с этим тестом делать?
Ну блять, пользоваться как и любым node-package, устанавливаешь, пишешь тест и гоняешь через tape file.js или tape test//*.js
>>91571
>JavaScript Allonge
>Глянул в эту книгу, там полно фоток кофе и кофеварок. Понятно на кого эта книга расчитана.
Что интересно, у меня первое впечатление было именно такое. Правда, в первую очередь, из-за того, что я не особо люблю кофе. Ну, и хипстотой отдаёт слегка.
Но, это обманчивое впечатление.
На самом деле - это весьма годная книга.
Я её даже купил за деньги на leanpub (давно уже).
Сейчас она есть в двух вариантах - оригинальная, и переписанная под ES6.
Правда, продают отдельно, т.е. если есть первая, вторую всё-равно надо покупать за полную стоимость.
>а не прививают дисциплину разработки/тестирования.
До этого нужно дозреть.
Прививать это вкатывальщикам бесполезно.
И даже вредно.
У человека должен быть интерес, мотивация для изучения этого весьма непростого дела.
А дисциплина - это уже потом.
Хуйню написал, дициплину можно и нужно прививать с самого начала, так работает любое обучение любой серьезной профессии. Если васян приходит в программирование, считая, что это "творчество", а не инженерная профессия, то да, от насаждаемой дисциплины от выкатится, но этот васян не стал бы инженером или врачом, схуев ли он должен стать программистом?
Дисциплина не может быть вредна, ее нельзя включить-выключить, либо ты пишешь код, следуя каким-то правилам, либо нет. Либо у тебя есть ответственность перед потребителем твоего кода, либо нет. Я считаю, что любому вкатывальщику после изучения базового синтаксиса нужно сразу же проводить введение в TDD и юнит-тест фреймворк в его языке. Это пиздец как ускоряет процесс изучения и позволяет сразу же писать поддерживаемый и полностью покрытый тестами код, который легко рефакторить в будущем.
Двачую, вкатился без знаний юнит-тестинга(нормальных знаний, а не как проверить на иммутабильность массив), теперь как-то тяжело. Стоило это все постепенно делать.
define творческая.
В том посте говорилось про конкретный фреймворк с конкретными проблемами, а не про BDD в целом. Хотя эти же самые проблемы возникают почти с любым BDD-фреймворком в любом языке, что заставляет задуматься. Но в целом да, я не вижу смысла в BDD, TDD всегда дает лучший результат в плане архитектуры кода и покрытия тестами.
Анус свой протестировал, питушок?
хули про него в треде ничего нет? все смузихлебят с вуи и реактом
мимо джава-господин недофуллстекер
А зачем нужно это монструозное поделие? В топку вместе с реактом, Vue наше все.
>российская система образования
Виновата в первую очередь россейская система воспитания предками. Когда предки,сами нахававшись в детстве совка с его принуждениями по поводу и без, холют и лелеют свое чадо, сдувают пылинки, а чадо в итоге вырастает ленивым ебланом, неспособным сосредоточиться на работе и которое как огня боится приложить ну хоть еще чутка усилий.
Система образования, на самом деле, подстраивается под них. Вот как пример - появились вузики с платными местами и расценками на любой вкус, куда сердобольные мамаши сдают своих ленивых толстожопиков, где тем прощают за деньги проебанные сессии и дают как и в школе досидеть до последнего курса и выпуститься с дипломом.
>Реакт не фреймворк.
Фреймворк. Просто онли для UI. Вообще, забавно тренды складываются, на заре смузипараши версий 0.x.x, были наоборот фреймворки вроде эмбера, где "вот вам модель-контроллер, а с гуйней ебитесь как хотите", потом появились фреймворки "все-в-одном" вроде жиргулара, а вот теперь "вот вам онли для гуйни, а с остальным ебитесь сами"
Не. Ты просто наверняка не всё просмотрел там.
Глянь-ка внизу, ниже числа - там словами это число представлено.
Максимальное число - аж 10 millillion'ов. Кроткая шкала. Порядок N (10^N), плавно доходит от 0 - до 3003, с шагом 3.
И ещё - любые разделители можно сунуть туда.
Алсо, можно юзать этот скрипт с BigInteger'ом, если пхнуть его в строку как-то так:
document.write(numberToEnglish(BIGINTEGER.toString()));
Названия разрядов - взял отсюда: http://users.skynet.be/nizgorur/very_big_numbers.htm
Можешь скопировать весь этот скрипт и засунуть в файл html. Он будет работать в браузере без всяких интернетов.
Пока еще жив. Суровый легаси бизнес на нем в основном. Суровый бизнес сегодняшнего дня в основном на реакт.
Смузи хлебут вместе с Vue, в основном неосиляторы простоты реакта или ужаленные абстрактными фабриками ангуляра
Ну а хуле мне ещё?
Приведи пример непонятного. Я сейчас тоже читаю этот учебник, сегодня добрался до третьего раздела. Все понятно (кроме одной главы о побитовых операциях, которую я пропустил).
>верстай макеты и лей в гитхаб
Зачем вёрстку пихать на гитхаб? Ты даун аутист?
Ведь любой человек может открыть страницу в браузере и посмотреть разметку.
Это же не сконпелированные программы, код которых ты так просто не посмотришь, поэтому исходники и выкладывают на гитхаб. Ты, видимо, совсем не смыслишь ни в программировании ни в функциональности гитхаба.
Ты кокой-то агрессивный. Зачем мне отправлять через какой-нибудь ватсап архив с вёрсткой, если я могу её залить на удалённый репозиторий, да еще и тем самым показав, что умею пользоваться гитом?
Как по твоему сайты верстаются, если над ними несколько людей работают? Лишают себя возможности пользоваться ветками, потому что ты запретил?
Ну и мой последний аргумент - лью на гитхаб, потому что просто хочу, лол. Может я чувствую благоговейный трепет, когда мои пальцы набирают "git commit -m", а музыка из щелчков клавиатуры в этот момент для меня сравнима с красотой нетленок Жоки? Хули ты доебался-то, блять? Вопрос вообще не об этом был.
> я могу её залить на удалённый репозиторий, да еще и тем самым показав, что умею пользоваться гитом?
>Может я чувствую благоговейный трепет, когда мои пальцы набирают "git commit -m"
Этот дегенерат думает, что гит и гитхаб это одно и то же, лооооооооол.
А ты думаешь, что разбираешься лучше меня в программировании, хоть и делаешь ошибку в индуктивной логике, лол. Потому что по другому прийти к такому выводу ты не мог.
> что гит и гитхаб это одно и то же
Я другой анон, и так не понял где он это написал. Или ты доебался потому что увидел что-то тебе знакомое? По делу ответить не смог, так решил еще и обдрыстаться тут на всю ветку?
P.S. Больше картинок. Покажи эрудицию, плиз.
На английском вообще больше инфы.
Раз примерно в 9000.
И какой смысл читать этого вашего Кантора в корявом переводе с русского, лол?
У него вообще учебник так себе. Именно как учебник.
Единственное достоинство - что на русском.
И то, достоинство это для тех, кто не может в английский.
Вообще, я бы рекомендовал избегать учебников по программированию, написанных русскоязычными авторами.
Есть и исключения, наверное, но я так сразу и не вспомню.
Аноны, не ссыте сильно если что совсем не так.
Вообщем на window.onscroll = handler; он не вызывает функцию, а прописывает код. При добавлении скобочек вообще не работает. Как сделоть чтобы выводил картинки?
Система безопасности для дома,и?
Нет, конкретно объясни, как получают данные тру двачерские кодеры.
Этот вообще php и js в одну кашу мешает. Меня за такое году в 2012 обосрали на форумах.
Господи, какая хуйня банальная. Нахуй мне это в какой-то ебучий тест-фреймворк обворачивать? Я блять что сам не могу свою функцию написать, которая это тестит и выводит все в консоль? Или если мне нужно что-то быстро проверить, то сразу в дебаггере запустить?
Банальная, потому что пример банальный. Но обычно хорошие тесты так и выглядят. Чем банальнее и проще юнит-тест, тем лучше. Что тебе дает тест и не дает проверка через консоль:
1) Тест можно прогнать в любой момент и за мнговение увидеть результат.
2) Тест - это документация, где с примерами и понятным языком показывается, как можно использовать опредленный кусок кода.
3) Тест может прогнать любой человек, не только ты.
4) Тест дает тебе уверенность. Например, если у тебя есть покрытая тестом функция с мешаниной из колбэков и говна, то ты спокойно можешь расхуячить эту функцию, зарефакторить как угодно, переписать, разбить на подфукции, и быть уверенным, что она все еще работает, как и должна, если тест проходит.
Я так понимаю, ты недавно начал, поверь мне, любой язык изучать гораздо удобнее и быстрее, если ты делаешь это через тестирование(нормальное, а не через консоль). Говнокод - это прежде всего код, который не покрыт тестами. Просто потому, что с таким кодом ты не можешь сделать ровным счетом нихуя, без боязни что-то сломать, и он так и останется говнокодом в большинстве случаев. См. пункт 4.
>Тест - это документация
Для этого есть JSdoc комменты, которые любая IDE поддерживает. Фигачишь над функцией слеш-звездочка-звездочка-энтер и IDE тебе сразу выдает шаблон с параметрами функции. Там еще другие удобные теги есть, например @throws, @todo, @this, @deprecated
Отлично расписал. Теперь объясни, как убедидетль биг босса, что покрытие тестами на js, в результате которого время разработки увеличится в 2 раза, необходимо?
Так сыночка знакомых вылетает с шараги с 3его курса, т.к не может делать лабы по проганью. Когда они узнали, что я работаю кодером, они сначала попытались меня попросить ему преподавать (!!!) это притом, что я работаю, постоянно самообучаюсь и у меня нет времени.
Потом на мой отказ попросили, чтобы я делал за него лабы а у меня даже тех вышки нет!
Все понимаю, я тоеж учился на специальности, куда меня всунула мамка и в которой я не шарил шитье блеать, ну я покупал работы у одногрупников первый год, а потом благополучно вылетел и больше в эту профанацию под названием высшее образование в рашке не совался.
но блять, как можно не мочь в лабы по кодингу в 2018 - у тебя есть гугл, есть куча туториалов и готовых решений на эти лабы. ну либо там совсем рокет сайнс типа ассемблера, микроконтроллеров и какого-нибудь машоба. но я что-то сомневаюсь. Скорей всего это очередной тупой толстожопик, у которого играют гормоны и которому в 20 лет хочется гулять, бухать и щупать девок, а родители его заставляют учить этот скучный кодинг, т.к. прослышали, что у кодеров большие зарплаты и вообще это дохуя мужская и уважаемая профессия, которую любой ероха осилит.
А текстура-то хоть подходит к этому объекту? Там же нужны правильные UV-координаты.
>>92803
Подходит. Код следующий:
mtlLoader.load(require('./models/Wood.mtl'), (materials) => {
materials.preload();
objLoader.setMaterials(materials);
objLoader.load(require('./models/Wood.obj'), (object) => {
textureLoader.load(require('./textures/wallpaper2you_512070.jpg'), (texture) => {
object.map = texture;
this.scene.add(object);
});
});
});
В доках у них такие же примеры. Почему у меня такая фигня не пойму.
Только вот никакой JSdoc автоматически не покажет все варианты вызова функции, все принимаемые параметры в объекте и т.д. Это в любом случае нужно писать руками, и переписывать, если API функции поменялось. Если же вместо комментариев ты хуяришь тесты, то они всегда будут служить на 100% актуальной документацией.
>>92747
Во-первых, программу пишешь ты, а не биг босс. И ты решаешь, сколько тебе понадобится на разработку определенного компонента.
Во-вторых, TDD не увеличивает время разработки в два раза, поскольку оно практически полностью избавляет тебя от нужды дебажить код, а в long-term ситуации хорошее тестовое покрытие наоборот ускоряет разработку в огромное число раз по сравнению с любым проектом без тестов.
В-третьих, как ты пишешь код, не тестируя его, хотя бы даже вручную? Ты отправляешь код в продакшен, не зная, работает он или нет? А если тестируешь, то как и почему не автоматическими тестами?
дебажу через console.log.
а какой тестовый фреймворк посоветуешь для фронтенда? на вью пишу. юнит тесты только на пхп пробовал делать.
Еще по поводу этого, в эликсировском эксюните есть охуенная фича, когда простые тесты можно писать прямо в комментах и потом гонять их в обычном файле с тестами через doctest. Но даже в этом случае подобные комменты мне кажутся бесполезными, потому что они читаются хуже, чем нормальные юнит-тесты, и хуже, чем нормальные API доки для внешнего пользователя. Хороший код в большинстве случаев комментирует сам себя.
>>92833
В идеале ты пишешь и тестируешь на ноде, а потом перегоняешь проект через какой-нибудь browserify в свои жс-ассеты для браузера. Но это требует хорошей архитектуры в проекте, когда отрисовка формочек и фронтенд-фрейморки идут отдельно от тестируемой логики, многим фронтенд-девелоперам такое обычно не под силу, но попробовать всегда полезно.
В плохом варианте - почти любой популярный тестовый фремворк работает и в браузере, но когда ты будешь писать эти тесты и гонять их в том же браузере, то появится неотвратимый привкус говна во рту и желание дропнуть это занятие навсегда, потому что браузерная среда не приспособлена для нормального тестирования
А почему именно tape? Часто вижу в вакансиях jest/mocha chai. Сейчас мельком почитал, пишут, что tape проще, не нужно кучу вспомогательного говна устанавливать и настраивать.
Только по запросу "tape" на HH, только 15 вакансий, а по другим от 100.
Тестовый фреймворк выбирай сам, какой понравится. Jest с мочей вроде как самые популярные сейчас. Про Jest ничего не скажу, но моча - стандартный BDD фреймворк, с которыми я год-другой работал в другом языке, после чего стараюсь больше не трогать. Они тянут за собой слишком много глобальной магии и ненужных фич, вроде готовых моков и навороченного DSL. Tape я выбрал потому что это первый юнит-тест фреймворк, на который я наткнулся, когда начал писать на ноде. Он вполне стандартный, загружает файлы, региструет тесты и прогоняет ограниченный набор assert'ов, ничего лишнего.
UPD.
Разумеется при условии достаточно мощных пекарен у клиентов и нормального асинхронного сервера.
В чем проблема, идешь на любой англояз.сайт по теме и листаешь туториалы, на гите смотришь популярные проекты по языку, изучаешь в том числе и архитектуру построения кода.
WebSocket + node. Движки есть, в том числе опенсорсные.
Вопрос - стоит или совсем нет? А то смешанные отзывы об этом сайте.
интерактив стоит. Если ты про их интенсив, то нет, он ты и после кантора охуеешь от него, а без кантора, как они его преподносят, для тех кто знает только хтмл и цсс, то это лютейший пиздец. Скачай и посмотри 1-2 урока и сам всё пойемшь
Цветовая схема tomorrow night blue? Что за редактор?
Но если честно, то я бы с радостью пошел и за 15, но как можно быстрее. Так собственно вопрос в ирл реалиях нативный джаваскрипт надо кому? На нём пишут что-то? Или если цель как можно быстрее влезть куда-нибудь джуном, то лучше почти сразу начинать дрочить джеквери какой? Я читал, что в теории джеквери можно учить воообще без знаний нативного джса
мне их интерактивы именно понравились, подписка вроде 300 рублей стоит на месяц, за эти деньги на моё имхо это дико заебись. Но вангую, что даже в этом треде меня обоссут и закидают ссаными тряпками и скажут, что только бесплатные книги, только гитхаб, только хардкор.
вот блин, чем дольше работаю во фронте, тем больше понимаю, что для моей комфортной работы и развития как спеца бэк должен быть на ноде, а не на пхп, сишарпе, питоне и тп, как сейчас. пичалька.
получил get запросом страничку с такой функцией:
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
Делаю запрос в среде postman и соответственно window и document не определены. Как можно задать эти глоабльные переменные вне браузера?
Промис это и есть монада.
>нативный джаваскрипт надо кому?
Реакт - это, по сути, и есть нативный джаваскрипт.
Веб-компоненты будущие - тоже.
jQuery - это, скорее, DSL на базе JS.
Но, если ты не знаешь JS и не знаешь браузер - события, DOM, etc - ты соснёшь и с jQuery. Или будешь просто тупой обезьяной.
Так что твой приятель совершенно прав.
Дрочи JS. Пиши чем больше - тем лучше. Чем жирнее будет твое понимание основ, чем больше опыта практики - тем проще будет вкатиться в какой нибудь фреймворк.
>>93158
Этот анон прав. И react - это библиотека, которая проповедует определенный подход к построению вэб приложений. Она вся - нативнй JS. Ив ней нет встроенных конструкций. Хочешь какой нибудь хитрый элемент - придется писать самостоятельно - встроенных нет. В принципе можно после хорошо усвоенных основ JS вкатиться в react. После того как ты усвоишь его общую логику работы - то столкнешься по сути с теми же задачами что и в нативном JS. Просто в определенных рамках. Задрочил навык решая задачи ранее - отлично. Не задрочил - придется дрочить все равно.
>react
>Хочешь какой нибудь хитрый элемент - придется писать самостоятельно - встроенных нет
А нахуй он тогда нужен?
>И как webRTC поможем ему в реализации его говноигры?
Ещё один довен. WebRTC позволяет создавать каналы данных с минимальными задержками. Т. е. если, например, нужно отсылать 60 раз в секунду какие-то данные на сервер/пиру (например, координаты какого-нибудь спрайта, контролируемого пользователем, данные об event-ах и т. д.), то делать это лучше через WebRTC. Потом WebRTC позволяет установить канал данных непосредственно между пирами - пересылать данные между пирами без участия сервера.
жеквери питух нарисовался.
Есть допустим объект
var contact = {
name: 'Ivan',
surname: 'Ivanov',
phone: 123123123
};
И есть обычная таблица уже сверстаная, как вы догадались с полями "имя" "фамилия" "телефон"
Как сделать так, чтобы в таблице показывали данные из этого объект (массива?) ?
Если ты даже на таких простых вещах тупишь, что будет дальше?
Как ты собрался осваивать сетстейт, промисы, асинк+авейт?
Программирование - это явно не твоё, иди лучше в дотку поиграй.
Но правда - ты спрашиваешь о совсем элементарной хуите. Ты ещё спроси как элемент в dom получить.
Мимо-прохрдил 17065
а как еще с такими тупорылыми животными разговаривать которые сюда пачками валят со своими однотипными убогими вопросами? по таким вопросам можно безошибочно детектировать ленивого уебка, которому должны все разжевать и в рот положить. очевидно что кодинг для таких людей занятие не подходящее
еще один мимокрок
Театр одного семена? Не хочешь, не отвечай, пройди мимо, нахуй ты сам генеришуешь тонны ненужного пиздежа?
Если всё же найдется анон, который захочет помочь, буду благодарен за подсказку и наглядный пример.
https://plnkr.co/edit/vY9R39wjVh7spEiD8LYT?p=preview
а нахуй ты и тебе подобные выблядки генерируют тонны ненужных вопросов? не хочешь - не читай, пройди мимо лол
Мать твою ебал.
Разница в алгоритмической сложности.
Immutable.js list он же persistent vector, например, имеет "constant time" иммутабельные push, pop, shift, unshift, без полного копирования всей структуры данных. Это важно, если речь идет о десятках тысяч элементов.
Если в массивах не тысячи элементов и не нужны соответствующие иммутабельные методы, то выигрыша особого не будет, используй нативный массив и его методы плюс если нужно lodash/ramda
en.wikipedia.org/wiki/Persistent_data_structure
https://www.youtube.com/watch?v=Wo0qiGPSV-s
https://www.infoq.com/presentations/Functional-Data-Structures-in-Scala
Уже второй раз вижу ее МУЛЬТИКУЛЬТУРНОДЖЕНДЕРНЫЕ выступления, я конечно понимаю, что она объясняет это все жс-девелоперам, но блять, это же не детсад, чтобы разжевывать простейшую концепцию 15 минут и иллюстрировать это зверушками.
DataTables погугли.
Там всё есть.
Если надо своё сделать - Vue.
Реакт сложноват может быть для тебя сейчас.
>>94266
И да, можно и просто руками, конечно.
Погугли, например, "jquery create table dynamically".
Вот первый результат:
https://stackoverflow.com/questions/8749236/create-table-with-jquery-append
Но, Vue для таких вещей лучше, хотя, для ньюфага jQuery может оказаться проще концептуально.
Только не сильно сложное/крупное, а то я испугаюсь, охуею и заплачу.
Корку сыра, банку мочи, да пару баребухов с труханов.
буду очень признателен читай:нихуя, но вообще-то правда буду рад, если поможешь
Нах тебе rsa, ГОСТа лучше хлебни - http://gostcrypto.com
Алсо, webcrypto api должен быть доступен в сафарях, попробуй через него rsa дёрнуть, можно он стоковый есть.
Если может в доту, сможет и в программирование. Дотка как минимум не проще.
>ГОСТа хлебни
ебаться-всраться, оно сществует? мать твою, "каждый день -- новый фреймворк" теперь у меня ассоциируется с r34. как этот пиздец развидеть господи помоги
зайкасолнышко, спасибо большое, уже нагуглил, и уже пульнул шифрование в йоба-проадкшн, спасибо, правда!
абу, какого хуя анону можно дарить только нихуя, я бы этому чуви подарил бы в благодарность чонить
Не могу понять почему у меня перезагружается страница. Алерты на долю секунды появляются и страница ребутается.
пикрил 2 - форма
На бекэнде простейшее
if(прилетел пост запрос) {
вывести тело запроса
}
Попробуй в html написать
<button onclick="sendItemList(event)>...</button>
И в JS:
function sendItemList(event) {
event.preventDefault();
...
}
Пасиб, я уже нашел походу корень, бутон был помещен в саму форму - и даже без всяких action="" и submit - эта мразь слала по дефолту при нажатии гет запрос на эту же страницу.
Разве в этой сфере всё так строго? Устроюсь в какую-нибудь частную хуйню, осталось узнать как портфолио сделать
Я сам диванный, но мне кажется лучшее вышку иметь, чем не иметь. Говорят, многие дауничи требуют.
Ну ты даёшь, советуешь мне потратить 4-6 лет жизни на всякий случай
Со второго, у меня специалитет + ещё можно в магистратуру пойти, но эт пиздец. Я не знаю, кто учился мб поймёт меня, потому что я знаю людей которые и с 4 курса съябывают
О, пасиб, хороший вариант. Фронтенд может и не сделаю, а хотя бы постами посрать смогу.
Да никакой, собственно. На обоих языках можно что-то писать.
сап, кто нить видел подобное в примерах d3?
Я учу и Джаву, и ЖС, и ещё хочу тайпскрипт выучить потому что с динамической типизацией ниудобна!
Сажа приклеилась.
>с динамической типизацией ниудобна
TypeScript тоже не особо удобен, если это не чистый TS проект.
Народ в последнее время Flow юзает всё активнее.
Как и где это все гуглить? Я нуб, посадили за проект, типа, сам сиди и разбирайся, спросить не у кого. Хелп!
Вроде наоборот казалось, реакт люди, для кого раньше был как раз flow специфичен, все чаще юзают TS
>Народ в последнее время Flow юзает
Я просто ахуеваю от инфантилизма JS-коммьюнити. Постоянно какая-то новая хуйня выходит. То что старше года, считается устарелым говном мамонта. И даже то что актуально, они не могут определиться на что-то одно, каждый блять хипстер-индивидуалист, который хочет быть не таким как все. Пиздец, когда этот хайп сдохнет?
Добрый день.
Надежда на вас, аноны-прогеры.
Сижу весь вечер и не могу понять (поняч), как сделать результат цикла моего условного дропа списком из нескольких результатов, а не из одного.
Я вроде интуитивно понимаю, где косяк, но нихуя допереть сам не могу.
Сам дроп работает идеально, но мне надо статистику посмотреть на большие количества.
Блять, уже всё испробовал, все возможные варианты и в самом цикле, и в консоле лог и нихуя.
Помогите плис.
То есть чтоб списком выпадало за щеку в консоли, сколько раз чего выпало.
Я просто заебался, блять, уже.
Надежда на вас.
Заранее спасибо, если кто поможет.
Вверху скрина код, внизу уже со страницы из консоли результат.
Либо может как-то через функцию это всё переделать, чтоле.
Возможно.
Я просто про Flow не так давно узнал, и, возможно, несколько предвзято воспринимаю эту тему.
Ну, и TS - годная вещь, конечно.
>>94847
Ты, в данном случае, перепутал тёплое с мягким.
Конкретно эта тема к хайпу не имеет отношения.
А вот 100500 менеджеров пакетов и прочей хуеты с однотипным функционалом - это да.
http://blog.cleancoder.com/uncle-bob/2017/01/11/TheDarkPath.html
Вот вам хорошая статья о том, почему не надо переизобретать колесо и прикручивать типы(!) к ебучему жаваскрипту(!).
Нужно написать диплом за ночь.
Осилю ли? Буду юзать Vue+Vuex. Нужен какой-нибудь годный шаблочник, кто что посоветует? UI фреймворк наверное юзать не буду, т.к в нем тоже разбираться надо, да и я не собираюсь слишком сильно заморачиваться
Если кто не понял - пилю SPA. Тема - энциклопедия музыкальных жанров. Да-да, не удивляйтесь, чому тема такая идиотская, я в шараге учусь(вернее посещаю, шарага мне ничего не дала, совершенно) и тут не сильно важна тема диплома, главное, мол, показать, чому ты научился за эти 4 года.
На фоне одногруппников мой диплом, который я хочу запилить за ночь - будет чем-то новым, никто там и не знает, что такое SPA и Vue какой-то, их потолок жиквери.
Ну и да, я конечно долбаеб немножко, что отложил всё это на последний день - но в этом весь я.
Спасибо!
Что значит "фанат тестов"? Тесты - это необходимость, ты обязан их писать, если считаешь себя программистом. Вопрос только в стиле и методике. Я фанат вполне конкретноого TDD.
>почему не надо ... прикручивать типы(!) к ебучему жаваскрипту(!).
Собственно, это я и имел в виду, когда говорил о том, что TS не очень удобен во многих случаях.
JS - динамический язык по сути, и полная обязательная статическая типизация в нём быстро становится обременительной.
Поэтому мне и понравился Flow (хотя, я пока не пробовал его в деле).
Т.е., должна быть возможность поставить тэги типов там, где они нужны, и не ставить там, где не надо. И типизация должна быть необязательной, просто декларируемой. Unobtrusive.
Алсо, типы - это не только чекинг при компиляции.
Это ещё и подсказки IDE, и документация. И поиск usages. И рефакторинг.
И эти вещи для меня важнее.
Например, когда имеешь дело с суровыми энтерпрайзными DTO на 100 полей, это очень упрощает дело.
И, разумеется, никакие тесты ничего подобного дать не могут.
Сейчас я использую для указания типов комменты JSDoc, а для DTO и прочих прокси и т.п. - файлы описания интерфейсов на TS - всё это поддерживается в IDEA (или WebStorm). В итоге - есть подсказки и хинты в редакторе, есть поиск использования типов и полей и т.п.
Попробуй OCaml\Reason. Тайп инференс окамла позволяет вообще не ставить типы, он сам догадывается какие нужны. Обвязки для внешнего жс пишутся легко.
Тогда за что фронту платят такие деньги? Он же по факту знает гораздо меньше, чем бэк. Тупо применяет уже полученный опыт на практике и... этого достаточно? А бэкам и алгоритмы и структуры данных и базы данных... в разы сложнее, имхо.
Задрачивай лучше FP и прочее подобное, типа RX.
Это может реально пригодиться в работе.
Хотя, алгоритмы - тоже неплохо, для общего развития. Но, без фанатизма.
Особенно рекурсивные вещи.
Little Schemer ещё попробуй почитай.
>документация
Хорошо написанный тест = актуальная техническая документация этого компонента
>usages
То же самое
>рефакторинг
Каким образом ты собрался эффективно рефакторить без тестов и как в этом деле тебе помогут подсказки IDE? Первый шаг рефакторинга легаси кода - это в первую очередь покрытие его тестами, хоть какими-то, чтобы убедиться, что ты не сломал хотя бы часть ожидаемого функционала во время своего рефакторинга. Ну а рефакторить изначально покрытый тестами через TDD код - это вообще тривиальнейшая задача, которая не требует никаких усилий.
За практическое и по большей части креативное использование более специфических знаний.
Знания алгоритмов и структур данных нужны разве что в крайне специфических ситуациях, ибо всё популярное уже давно реализовано и встроено в стандартную библиотеку, либо уже есть готовая реализация.
Речь об efficiency. Количество тестов можно сократить на 90%, если сместить фокус на Type Driven Development
>нууу кароч константа это типа неизменяемая, ее можно изменить, но все договорились не делать так
>ну кароч _ означает защищенное свойство, вроде и можно к нему обратиться, но приличный кодер не станет
Это норма в вашем погроммировании?
Ленджабаскрипт местами очень уёбищен. Если где-то гребешь в статье, то лучше перелистывай на следующую, а ту гугли где-нибудь ещё, на stackoverflow например
Бамп вопросу.
вообщем суть такова - как мне данную строку "000" (три нуля) перевести в число 000 (три нуля) а потом прибавить к нему 1, что бы в результате получилось 001
parseFloat("000") естественно преобразует эту строку к 0, а других вариантов я чет и не вижу((
вообщем подскажите пжлст выход из ситуации
не знал про это, думал упростить решение задачи, а оказывается что нифига,
спасибо за подсказку))
Тесты заменить нельзя ничем. Нет такой вещи, которая тебе бы давала такую же уверенность в коде как покрытие его тестами. Типы - это не тесты, это простейшие ограничения, которые ставит сам программист. Ни один тест не ставит своей целью "протестировать, что эта функция получает на вход только int", он тестирует логику работы этой функции, либо взаимодействие функции с другими частями приложения. Но при этом, косвенно, тест показывает и то, что функция вызывается только с правильными параметрами и что вызовы к этой возвращают нужный результат.
>>95176
Это норма в жаваскрипте. Константы в общем-то добавили, но приватных методов тут нет, либо реализовывать их надо через жопу, поэтому легче поставить подчеркивание. Просто прими как факт, что язык разрабатывался на коленке в качестве приблуды для веб-страничек, но внезапно он стал использоваться везде. Ты еще встретишь гораздо более ебнутые нелогичные вещи, с которыми нужно просто смириться. Кстати, это еще одна из причин, по которой тестирование жс-приложения особенно необходимо.
...в этом весь я...
Вспомни об этом в 30 лет, когда никем будешь, сука тупая
мимо никто в 30 лет
Ок, бро. Заинтересовал , дай линк на то, где меня научат писать тесты на js. Я не оч понимаю как это вообще работает
>он тестирует логику работы этой функции
Именно. Вот только все равно нужно писать тесты для проверки как юнит ведет себя если он получает некорректные параметры. Строгая типизация избавляет от этого.
А вот тут ты не прав. Типы гораздо эффективнее тестов. Покрытие типами дает такую уверенность, какую никакие тесты не дадут (потому что столько тестов никто не в состоянии написать). Хорошие типа отловят куда больше логических ошибок еще на стадии ввода текста.
Тестировать останется только верность алгоритма, а это на порядки меньше.
Гуглишь, как установить ноду и как создать в ней проект, потом гуглишь любой тест фреймворк для ноды, рекомендую tape
>>95285
Если твой юнит должен себя вести как-то при некорректных параметрах, например выкидывать конкретную ошибку "missing required parameter: zalupa" или возвращать объект {error: "zalupa is missing"}, то да, ты тестируешь это в любом случае, потому что это часть логики юнита, которую ты пишешь. Если нет, то ты просто оставляешь это на совести колеров этой функции, что они ознакомятся с API. Это суть динамической типизации.
>>95289
Тесты дают уверенность в работе программы, тогда как типы дают уверенность в тексте программы. Ты можешь быть уверен, что те ограничения, которые ты сам наложил на свою программу, выполняются.
>Тестировать останется только верность алгоритма
С любом языке, с динамической или статической типизацией, ты всегда тестируешь только алгоритм и ничего больше. В динамическом языке тестировать параметры функции на правильность - это идти против сути самого языка в 90% случаев.
А если у тебя есть полностью протестированный алгоритм, то ты сам начнешь задавать вопрос "а нахуя мне писать int каждый раз, если тесты и так показывают, что функция вызывается с нужным параметром и возвращает ожидаемый результат?". Разве что ради подсветки в IDE, что вопрос вкуса.
Анон, помоги мне справиться с болью работы с реактом и вебпаком. Сам я занимаюсь бэкендом, пришлось временно взять на себя часть работы по фронту, от чего я знатно охуел. Сперва разработка на всём вот этом очень понравилась, но я столкнулся с проблемой.
В проекте вынуждены были временно отказаться от роутинга реакта в пользу роутинга бэкендового фреймворка django. Поэтому весь написанный код на js приходится сперва собирать вебпаком в бандл, а потом полученный бандл подключать к html-шаблону. Беда только в том, что сборка бандла занимает какое-то неописуемо долгое время. Может по 5 минут длиться, что превращает процесс разработки в какой-то бесконечный ад:
Собираешь бандл 5 минут
@
Забыл поставить запятую
@
Исправляешь
@
Снова собираешь.
Посредством гугления я понял, что избежать этого процесса никак нельзя. Это ведь так? Можно этот процесс хотя бы ускорить? Собирать отдельно каждый большой реакт-компонент, а потом всё это как-то импортировать, ну или как-то ещё?
Hot-reload, не? Вообще, по идее если у тебя опция watch включена, то последующие перезборки должны быстрее происходить.
>Константы в общем-то добавили, но приватных методов тут нет, либо реализовывать их надо через жопу, поэтому легче поставить подчеркивание.
Но ведь сейчас на совсем нативном ЖС никто не пишет, разве что jquery-дауны застрявшие в 2007. Все пользуются либо Бабелом с плагинами, либо тайпскиптом. А там уже всё что надо есть.
Какая разница, что у тебя за обертка, если сам язык не поддерживает эти вещи? Они в любом случае будут реализованы средствами языка, даже если ты пишешь private method() {}, под капотом он все равно переводится в один из нативных костылей. Тот же кофескрипт, где он сейчас? Какие гарантии, что очередной тайпскрипт или жопаскрипт не будет выкинут на свалку истории, а проекты на нем не окажутся в категории нечитаемого легаси кода, который хуй обновишь без полного переписывания?
Ну давай, расскажи про себя, что с тобой? Такой же был? У меня есть мотивация что-то делать только к тем вещам, какие мне интересны. Диплом вуза то никому не нужен, а колледжа тем-более.
>У меня есть мотивация
Wrong.
У тебя нет и не было мотивации, и ты просто не знаешь что это такое.
Моя компания, как видишь, на полноценного фронта зажабилась. Если бы наняли, я бы ему кофе носил, только бы этим не заниматься больше.
>>95358
>>95385
Как я понимаю, эта штука просто запускает тот же процесс сборки, но когда я меняю что-то в коде? Забыл упомянуть, сборка бандла нахуй вешает мой комп пока не закончится. Причём с довольно мощной конфигурацией. Подозреваю, что процесс разработки превратиться в то ещё развлечение. Сейчас попробую минификацию отключить, может, поможет.
Да, но пересобирается не весь проект, а только его часть. С Hot-reload это ещё быстрее, потому что обновлять страницу даже не надо. Ещё, уточни в package.json какая версия вебпака используется. С каждым майорным релизом его производительность увеличивается.
Подскажите годный сайт/учебник с тонной примеров задачек по js разного уровня сложности (от беггинера и выше).
Изучаю по learn.js.ru и там на каждую тему очень мало задач, которые я быстро решаю и понимаю, что не до конца закрепил материал.
> минификацию
Нахуя ты это включил в режиме разработки, лол?
Алсо, в 4-м вебпаке есть выбор режима в конфиге - продакшн или девелопмент. И это влияет на размер кода - в дев. режиме есть подробные комментарии. Так что, если ты ещё и минифицируешь потом такое, то это совсем нехорошо.
Анон, даже не представляешь, как ты мне помог и как я тебе благодарен, в итоге с твоей помощью и помощью гугления, я уменьшил время сборки с пяти минут до 11 секунд, лол. Сильно помог ещё и HardSourceWebpackPlugin. Сейчас ещё попробую оптимизировать свой конфиг. Ещё раз спасибо.
>>95440
Это вам не кофескрипт. Что бабел, что тайпскрипт следуют ECMAScript proposals.
https://github.com/tc39/proposals
Те же приватные методы или интерфейсы - уже Stage 3, их вот вот внесут в официальный стандарт.
И если тайпскрипт отличается хотя бы типизацией, то того же бабела не будет никаких проблем. Если только вместо официально поддерживаемых, ты ставил васянские плагины. Шанс на то что что-то выбросят - очень минимален, и даже в этом случае проблему можно оперативно устранить, а до устранения даже спустя лет 10 проект будет работать хотя бы благодаря содержимому package.json. Тайпскрипт же перевезти на тот же бабел или уже потенциально разжиревший в будущем нативный ЖС намного проще в виду практически одинакового синтаксиса.
>Те же приватные методы или интерфейсы - уже Stage 3, их вот вот внесут в официальный стандарт.
Хорошие новости.
>тестировать параметры функции на правильность - это идти против сути самого языка в 90% случаев.
Не протестируешь - соснешь в рантайме.
Что за специальность то у тебя такая что за ночь можно дипломный проект написать? Я в качестве дипломной делал проект по распознаванию образов с использованием нейронных сетей и потратил на него весь последний семестр, притом что приличную часть проекта я спиздил. Правда я учился в своём миллионнике когда ещё айти-специальности шли по специалитету, а не бакалавриату, но я не думаю что год разницы такие отличия в требованиях даёт.
>делал проект по распознаванию образов с использованием нейронных сетей
А ты тут такой не можешь нормально с Редаксом и Web паком разобраться :/
Я писал выше, что шарага.
Нет, Зина.
Сорян я тестовое херачу на самом деле для устройства на работу и так то я бэк на пхп ебашу 90% времени, но тут зарядили всё на аяксе сделать без перезагрузок и всё такое, вот и сижу разбираюсь в основах с 0.
В браузере
Можешь на http://jsfiddle.net/ каком-нибудь.
А можешь создать index.html файл, и писать в нем с помощью тегов
<script></script>
или создать script.js рядышком и его подключить
Почему ты хотя бы https://learn.javascript.ru/hello-world
не прочитал?
Ну я бросился сразу книгу читать и думал, что есть какая-та ide вроде visual studio как у c#, но я просто не так понял, что такое javascript. В общем спасибо, теперь во всем разобрался.
>>меня есть мотивация что-то делать только к тем вещам, какие мне интересны
Тут ты и соснешь. Потому что интерес уходит , и тогда нужно тащить на дисциплине.
>>Ну давай, расскажи про себя, что с тобой
Да, такой же. Потом воткнулся в оч теплое местечко эникеем, и просидел так 8 лет. Потом понял что мне пизда. Что мне 30, что я нихуя не умею толкового и что перспектив нет. Начал дочить JS. Уволился. Сейчас дрочу react. Устроился на работку в спокойное место где есть большая тема на питоне + sql база. Буду все это изучать.
Я тебе так скажу -важнее таланта, мозгов и прочего - умение подчинить себя дисциплине. Это важнее всего.
>>95264 - кун
>и думал, что есть какая-та ide вроде visual studio
Бля, ты не поверишь, но есть.
Называется WebStorm.
И она значительно лучше, чем VS.
На которой без ReSharper'а на том же шарпе писать невозможно.
Кстати, угадай, кто делает этот самый ReSharper.
Каким образом? Если у тебя в коде эта функция вызывается неправильно, то тесты выявят это в любом случае. Валидация параметров обычно нужна только для удобства пользователей API, чтобы они сразу видели нормальное сообщение об ошибке, когда, например, вызовут конструктор без нужного параметра.
Лучше сразу ставь ноду и учись работать из терминала, а так же с файлами. Программировать в консоли браузера или через создание веб-страниц - это путь инвалида. Для винды тебе очевидно будет нужен нормальный терминал, можешь поставить ConEmu
https://nodejs.org/en/download/
https://conemu.github.io/
Вообще неправильное определение константы. Это неизменяемый референс и значит именно референс не изменится. Объект там может быть мутабельный, но const гарантирует, что это будет один и тот же объект. Во всех языках const, final, let, val ведет себя именно так
кроме Rust, который при иммутабельном биндинге дает именно иммутабельный объект и может за этим проследить, хотя можно реализовать и классическое поведение, которое здесь называется interior mutability
Понятие приватности на уровне ооп и прототипов не реализовано. Но proposal добавить их весьма популярен и любим народом, так что вероятно будет к es2019-2020.
Как получить настоящую приватность без ленивых __SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED можно почитать у Elliott E. - Programming JavaScript Applications, глава 3: Objects
Мок на codepen https://codepen.io/anon/pen/aGxMRr
Ты залётный из копирайтер-треда?
Ты из какого-то идеального мирка вещаешь. В реальности случается дерьмо, причем иногда из-за тупейших ошибок и невнимательности.
Я не оспариваю нужность тестов. Я говорю, что использование типов снижает количество эти самых тестов в разы за их не надобностью, т.к. в нормальных языках типизация заставляет обрабатывать все возможные варианты. Опять же большая часть отладки из рантайма переходит в компайл-тайм.
Если бэк на ноде, то проект не надо долго компилить в консоли. Все автоматом компилится в режиме реального времени.
Я предлагаю ньюфагу писать код в терминале на винде. Никто не будет ебаться с установкой линукса в виртуалку или второй системой, если они только начали изучать программирование, а хеллоувордам похуй, где запускаться.
Я пытаюсь донести мысль, что наличие типизации никоим образом не влияет на количество тестов, это абсолютно разные категории. Нет таких тестов, которые ты можешь скипнуть, если у тебя есть типизация.
>>95750
Ты путаешь две разные вещи, вебпак можно интегрировать в любой проект и он так же будет тебе компилировать фронтенд-ассеты в риалтайме.
А в чем вообще профит на ноде код запускать? Как среда выполнения влияет на обучение? К тому же, ему наверняка скоро надоест писать функции пук, которые на выходе дают среньк, он захочет писать более красочные перделки и пойдет ковырять дом.
Кстати для IDE стоит VSCode чекануть. Отличный баланс между модными редакторами (atom, sublime) и монструозными ide.
Поддержка JS и TS на 20 из 10
Профит в том, что ты можешь сохранить код в файлы, разбить код на адекватные модули без ебли с глобалами, запускать разные файлы одной командой, при этом гугля что-то в бразуере и т.д. Любой адекватный фронтенд-разработчик рано или поздно перейдет на ноду, потому что пересобирать ассеты(даже автоматически) и жать ф5 в браузере каждый раз, чтобы проверить элементарное изменение в коде - это полный пиздец. Так что лучше уж сразу начать с нее, а в браузере играться только с домом.
Профит в том, что Node поддерживает ES6.
И модули (библиотеки).
И ты можешь учиться писать на нём без транспиляции (Babel).
Также, ты можешь делать import модулей и т.п - без Webpack и этапа сборки.
Тесты гонять, опять же.
Т.е. тебе не надо заморачиватся с инструментами, и ты можешь просто писать свои хелловорлды на ES6.
А потом, когда ты научился, то можешь подключить Бабель, Вебпак, Flow, прочее. И выдавать результат для браузера.
В этом случае Node будет уже не средой выполнения, а компилятором, набором библиотек и средством управления всем этим.
Так хочешь с ним под хвост пообучаться?
По задумке я заполняю форму, нажимаю кнопку добавить, данные добавляются в таблицу. Но с таблицой происходит очевидная хуита. По сему было решено вынести в отдельную функцию createTable которая будет:
1) удалять все строки кроме заголовка
2) добавлять строки используя данные массива
Но чет я в душе не ебу как это сделать. Мудрые, господа, помогите мне допилить мою функцию, а дальше я сам
http://plnkr.co/edit/UkogZiYVIEJYWnB7LfYF?p=preview
Спасибо конечно. Но что-то я посмотрел как у тебя всё коротко, красиво и работает и грустно стало от того какой я тупой. Пиздец.
Спасибо еще раз
Открой для себя шаблоны.
Рекомендую JSRender.
Он удобен и просто пиздецки быстр.
Ты делаешь шаблон в строке или в тэге <script type="x-template"> (тип - любой, кроме стандартных, он не имеет значения, главное, чтобы браузер его _не_ знал). А потом - ты этот шаблон рендеришь куда надо (таблицу целиком) - в контейнерный элемент.
У него есть компаньон - JSViews - привязка данных (двусторонняя) - как в Vue.
И, конечно же, если таких вещей у тебя много - открой для себя Vue.
React тоже можно, но это будет сложнее для вкатывальщика.
да я пока ванильный жс ковыряю и кроме него ничего еще не трогал. Наверно надо потом джеквери покрутить какой. И анонвы выше писали в треде не спешить лезть во фреймворки без достаточных знаний ванилы.
Жиквери - ебаный костыль для инвалидов и домохозяек, не надо его трогать, разве что если в подзалупную контору пойдешь работать, где на тебя легаси говно свалят, да и то с жиквери по ходу дела разберешься. Для обучения с него никакой пользы, я гарантирую это.
с чего такой хейт к жиквери? куча проектов на нем висит, он легкий, а по "ходу разбираться" никто ньюфага не возьмет.
ковыряльщик в жиквери легаси
> с чего такой хейт к жиквери?
С того, что это просто набор функций, предназначенный для тех, кому манипуляция с домом на чистом жаваскрипте слишком сложна.
> куча проектов на нем висит
Тормозящих, неподдерживаемых, 2007 года выпуска?
> а по "ходу разбираться" никто ньюфага не возьмет
По ходу разбираться - это открыть документацию и смотреть какая функция тебе подойдет для конкретного случая, запоминание этих функций займет пару недель максимум.
Вот смотри, я написал тебе это решение >>96048 Оно, скорее всего говно, потому что ни на ванильном js ни на jquery я никогда ничего не писал и конструкции, что ты использовал знаю лишь отдаленно. Но я 8 месяцев успешно прокидываю пропсы в реакте за выше средние для своей мухосрани 80к в месяц. Такие дела. Сделав сейчас упор на вью или реакт ты очень быстро получишь выхлоп в виде реально работающих сложных интерфейсов, не в табличку нод добавить, блеать. Добра.
Почему у тебя childElementCount -1 ? Он же возвращает число начиная не с нуля
Всё понял
в #table два потомка, а вообще это первое что нагуглилось на counting dom nodes
>>96142
летом прошлого года я впервые начал изучать реакт, до этого знания были только в html и css. Изучал по ходу только то, что чаще всего встечалось именно в реакте, я имею ввиду не апи самого реакта, а те конструкции языка, которыми он оперирует - классы, функции, перебирающие методы браузерные апи - вот это всё, что пишешь 70% времени работая с реактом. Хотябы поверхностно, но как работает shadow dom, зачем jsx. На сегодняшний день фултайм из этих баззвордов: react redux flow webpack ssr jss jest enzyme. К этому неминуемо добавился линукс гит и докер. До этого был сорт оф прожект менеджер - тзшечки писал да терминами жонглировал.
Звучит как ShitStorm.
Нахуй борду делать на реакте?
>Наверно надо потом джеквери покрутить
Вообще его не нужно трогать. У него уродлевый синтаксис. Все что можно сделать с jquery, можно и без проблем на ванильном js сделать. Может чуток больше кода будет, но зато более удобного и понятного кода. Ах да, и по производительности jquery отсасывает ванильному js.
ну чтобы вепак делал это в реалтайме в проекте где бэк на пхп например, то нужно еще докручивать всякие скрипты типа watch.js который будет смотреть на изменения папки или файла и на эти изменения все пересобирать и висеть в консоли - короче это долго и геморойно. легче сделать npm start и все крутится само.
да, манипулировать с домом на чистом жс не сложно, а долго. нахуя тратить время, если можно не тратить.
>Тормозящих, неподдерживаемых, 2007 года выпуска?
и все равно больше чем на реакто параше, разработка на которой занимает так много вермени, что никто ничего серьезнее одностраничников на реакте не делает.
>По ходу разбираться - это открыть документацию и смотреть какая функция т
а зачем им тебя тогда брать? любой таджик сможет так сделать.
У jquery падает популярность. Думаю через года 2-3 он нишей станет. Ну если тебе прям так хочется или других вакансий там у тебя нету, то учи его, oн не сложный.
> нахуя тратить время, если можно не тратить.
Пара лишних минут механического тыканья по кнопкам - это, конечно, весомая причина тащить фреймворк на проект.
> и все равно больше чем на реакто параше
Жиквери был сделан во времена молодости твоей мамки, а реакт несколько лет назад. Хм, действительно, в чем же дело?
> разработа на которой занимает так много вермени
Так ты его не осилил, дурачок? CRA попробуй, там даже ты справишься.
> никто ничего серьезнее одностраничников на реакте не делает.
Фейсбук, инстаграм, вконтос, да даже сосака его тут пользует. Поставь девтулс реактовский, да потыкай по интернету.
> любой таджик сможет так сделать
Так на жикверях писать и так обычно даунов берут, лол. Ни одна серьезная веб-макак на жикаери не подпишется, разве что совсем ра безрыбье.
Посоны, есть тут еще психопаты кто использует redux/angular в продакшене?
Господа, я кстати бампану вопрос. Господин выше написал мне решение, но оно не много не такое. Оно берет данные напрямую с инпутов и записывает их в таблицу.
А мне надо чтобы данные брались из моего массива. Т.е. у меня написано, что в начале по нажатию бтн, данные с инпута записываются в массив, а с него уже в таблицу.
Так что вопрос остался открытым. Как заставить эту ебаную таблицу нормально работать.
Сынок, ты либо тупой, либо зелёный.
В тематике это одно и то же, в общем-то.
Ты нативный код, видимо, на ассемблере пишешь?
Как умная макака, да?
Покормил, да и хуй с ним, лол.
>"хуяк тут вот эту функцию, вот тут вот это вот пиздыкс и работает, ебана, ну вы поняли кароч"
Так и есть, лол. Редакс не нужен.
макрос про асинки и патерны будет?
Во-первых у тебя очень грязный стиль. То точки запятые не везде ставишь, то var let const вперемешку, то табулятор не используешь. Простые функции я бы не объявлял как var dodik = function(), а function dodik(), как это в нормальных языках делается.
>А мне надо чтобы данные брались из моего массива
> 1) удалять все строки кроме заголовка
> 2) добавлять строки используя данные массива
Изменил твою функцию createTable так, как ты хотел, но так обычно не делается, потому что это не эффективно. Обычно добавляют только новый элемент, а не все заново. Еще я добавил функцию addToTable, она делает как надо. (В продакшене конечно не совсем так, там нужно будет конкретный элемент передавать аргументом в функцию, а не брать последний элемент из глобального массива). Если хочешь использовать свою функцию, то убери перед ней коммент и поставь его перед addToTable.
http://plnkr.co/edit/ecnu7yCwMBDQOgeKzHvg?p=preview
Спасибо! Ну, я только по сути 3 недели как этим занимаюсь, может где-то он и хуеват, буду исправляться.
А что не так с ангуляром? Что конкретно в нем "ебанина"? Просто не работал с реактом и вуе и хочу понять что именно не так.
Ну да, на пыхе там века ждешь пока все скомпилится.
>JS - динамический язык по сути, и полная обязательная статическая типизация в нём быстро становится обременительной.
Она становится обременительной, если не умеешь выстроить архитектуру для статической типизации. В нормальной архитектуре заточенной под статичную типизацию редко возникает необходимость писать костыли с динамической. Если тебе такое приходится делать часто, значит ты что-то делаешь не так и статическая типизация просто не для тебя.
А в чем сложность бэка? Получил реквест, притянул данные из базы, вернул респонс. Тоннельная логика, не нужно жонглировать лярдами компонентов, не опасаясь, что интерфейс не развалится после третьего клика с обновлением десяти таблиц и синхронизацией их между собой, особенно когда бэкенд лег из-за того, что не смог замапить лишнюю property в жсоне.
Сложность везде своя, друг. Не надо так смотреть свысока.
> жеквери-имбецил называет кого-то тупым, потому что не хотят есть его древнее говно
Найс.
Иди поверстай лендосы на таблицах, да прикрути пару жирных плагинов.
Реакт по сути и есть ванила. Начинающий может тупо заучить конструкции, и без понимания сути просто повторять их. Как там this передается - не особо и важно для работы - есть устоявшиеся конструкции. А в обработчиках пилишь стандартный js код.
>>96160
Скажи, мне интересно - ты понимаешь логику замыканий ? Передачи контекста this? Как работает прототипное наследование? super ? Промисы, итераторы , генераторы? Как this работает стрелках ?
Помогите добавить последнюю мелочь для курсового
https://jsfiddle.net/fgszx15z/
нужно вывести в конце правильные ответы в вопросах, где юзер ошибся
>ты понимаешь логику замыканий
Функция может искать переменные, определенные в контексте замыкающей функции через ссылку [[scope]]
>Передачи контекста this?
Указывает на контект вызова, объект перед точкой.
>Как работает прототипное наследование?
Костыльно. Если данные не найдены в объекте, то они ищутся в прототипею
>Промисы
Асинхронная хуйня, которая либо выполняет атомарную операцию успешно, либо возвращает ошибку.
>итераторы
Использую итераторы C++. В ЖС это наверняка хуйня какая-то.
>генераторы
Хуйня
>Как this работает стрелках ?
Стрелки не имеют своего контекста, их контекст заависит от того, где отработала функция.
Иди нахуй.
Опять шизик с замыканиями и промисами вылез. Ты думаешь это какие-то пиздец сложные понятия, которые нельзя загуглить и понять за пять минут, даже если их не знаешь? Зачем ты один и тот же вопрос задаешь пять раз за тред? Надо проверять общие знания, а не конкретных костылей в ЖСе. Например: что такое монады и почему жс промис - это монада?
Ещё раз, для тупых:
JS - динамический язык, и строгая статическая типизация в нём - противоестественна.
И _поэтому_ она быстро становится обременительной.
Если ты всё ещё не понял, о чём я, значит программирование просто не для тебя.
ты сегодня здесь с утра по раньше? Таблетки не забыл принять?
Что там с замыканиями и промисами?
Ты меня принял за другого, лол.
Я ответил тебе на твой (?) комментарий к моему посту.
Что же касается замыканий и промисов - с ними всё просто охуенно. Без них - не очень.
Алсо, не мог бы ты развёрнуто пояснить местным колхозникам "почему жс промис - это монада"?
Я уверен, тут многие не в курсе.
А что ты на фотографии такой довольный? Бигмаков покушал?
Вопрос только в том, нахуя писать на джаваскрипте, если тебе больше по душе статическая типизация. И уж тем более выстраивать архитектуру целого приложения вокруг костыльно прикрученного тайпскрипта. Это как в функциональном языке хуярить структы на каждый чих и пытаться ими заменить объекты. Просто прими, что это другой стиль, другая парадигма со своими плюсами и минусами, и писать нужно по-другому. Еще скажи, что ты интерфейсы хуяришь в жсе, я вообще серану.
Рефакторнул твою помойку, но можно еще лучше сделать. И добавил правильные ответы в конце теста, только стайл ты уже сам прикручивай какой тебе надо. https://jsfiddle.net/fbbLhkyc/
>Еще скажи, что ты интерфейсы хуяришь в жс
Выше кто-то писал, что их скоро добавят в нативный жс.
Интерфейсы - это, как раз, нужная вещь.
Например, ты получил DTO с сервера, и объявляешь, что это у тебя ZalupaItem.
Я выше писал, что IDEA (WebStorm) поддерживает определение интерфейсов на TypeScript в файлах my_lib.d.ts и комменты JSDoc.
И можно в комментах писать что-то типа:
/@type my_ns.ZalupaItem*/
var zp = someApi.getItem(zalupaId);
И потом иметь подсказки о свойствах и соответствии типов, Find Usages, и т.п.
И всё это прямо в обычном браузерном JS, без всяких нод и бабелей.
>WebStorm
Сегодня пощупал его, пиздец, ну и лагучее тяжёлое говно.
Зачем он нужен, когда есть вим?
Оборачивают.
Глобальные переменные прячут в модули.
Погугли Learning JavaScript Design Patterns (Addy Osmani, 2017) - отличная книга, на сайте читать можно бесплатно. Неплохо бы добавить в шапку.
Там, собственно, есть глава Module Pattern.
А чего ты хотел от инструмента с таким набором возможностей? Чтобы он на телефоне запускался?
Купи себе нормальный компьютер.
Also, SSD must have in 2018.
Написал на jquery скрипт на замену класса
$(".nav_btn").click(function(event){
event.preventDefault();
$(".nav_menu").toggleClass("nav_menu__active");
});
Поначалу скрипт не работал, методом тыка поставил точки к классам nav_btn и nav_menu и все заработало. Можете обьяснить почему так?
Потому что это CSS selector. В нативном жс document.querySelector() точно так же работает. А ты баран даже этого не знаешь, а уже лезешь в jquery.
>вебмакака врывается в итт
Ну собственно все понятно
Да.
Там есть бесплатные приватные репозитории и прочие бесплатны ништяки для групповой работы non-public.
Х.з. возможно в гитхабе это тоже уже появились, но я давно пользуюсь битбакетом.
Ты понимаешь разницу между понятиями "селектор (по классу)" и "имя класса"?
Имя класса: zalupa
Селектор классу: .zalupa
Теперь ещё про id спроси.
REST API - вчерашний день. Вместо него сверху есть прослойка GraphQL. А что по СУБД? MongoDB доверия не внушает.
> REST устарел
ебанутый? graphql твой хуйня без задач, вчерашние смузихлебы в клетчатых рубашках полезли во фронтенд и родили Это
бекенд стек 2018 это котлин, spring webflux и постгрес
Да, с удовольствием держу там приватные репы.
>Стрелки не имеют своего контекста, их контекст заависит от того, где отработала функция.
Плохо гуглил. Их контекст зависит от того, где они были созданы.
Читать Кантора на инглише - это как приехать в Америку и жить на Брайтон Бич, лол.
Книжку хорошую купи скачай, и читай.
А лучше несколько.
http://www.allitebooks.com/secrets-of-the-javascript-ninja-2nd-edition/
http://www.allitebooks.com/the-principles-of-object-oriented-javascript/
https://addyosmani.com/resources/essentialjsdesignpatterns/book/
(последнюю читать прямо на сайте)
JavaScript Allonge погугли ещё.
Кодирование и декодирование данных на уровне байтов/битов.
В самом широком смысле.
Можешь несколько булевых переменных упаковать в одно целое число, например. Одна переменная - один бит (0 или 1).
В JS это, скорее, экзотика, если ты не работаешь с картинками и т.п.
Но, без понимания таких вещей человек не может называться программистом. Независимо от языка и т.д.
>graphql твой хуйня без задач
Ну ты и дебич. С GraphQL можно делать всё, что можно делать с любым REST API, и при этом всегда за один запрос. Плюс всегда в запросе можно указать, какие поля тебе нужны.
>котлин
Уёбывай в свой хипстерский калоотстойник >>1164648 (OP).
Спасибо, прочитаю. Вообще я хочу в реакт вкатываться, нужно ли мне все это читать? Что думаешь насчет Eloquent JS, стоит ли начинать с неё?
Друх, если можешь в английский, то лучше смотри видосы на ютубе, или скачивай с торрентов видео-курсы в таком же формате. Я имею в виду что-то вроде "react from scratch", где 10-20 видео по ~20 минут. Материал в таком формате воспринимается ЗНАЧИТЕЛЬНО проще, главное старайся найти за 17-18 года и читай комменты под видео, там часто пишут, как исправить ошибки и прочее.
Js это не тот язык, где есть острая необходимость в книгах, оно конечно не повредит, но скорее просто отнимет больше времени.
>В этом треде собираются величайшие умы человечества
Моя остановочка. Я в прогромировании ~0. Реквестирую код скрипт/расширение для браузера/эту штуку/ну как там её "антимоча". Главная задача его в том чтобы при автообновлении треда не тёрлись удалённые мочой посты желательно чтобы они помечались а что нужно схоронялось и чтобы не майнил и по возможности делал минет. Подъемная задача, анон? Наверняка кто-то состряпал уже такое. Я вообще туда обращаюсь и где можно попросить? В гугле забанен.
Они остаются, только вместо номера 509, например, будет надпись "удален". Но если саму страницу обновишь, то удаленные посты пропадут, кстати. Чтобы и при перезагрузке страницы их сохранять, нужно уже как-то изворачиваться, я не знаю ничего на этот счет.
Ты думаешь побитовами операциями только в С занимаются? Их блять почти каждый язык поддерживает, даже блядский питон. Если ты хочешь работать непостредственно с данными файла или потока, ты будешь часто использовать побитовые операции. И даже в JS, например когда ты пишешь свой плеер и работаешь с протоколом HLS, ты переделываешь контейнер ts в mp4, там полно побитовых операций. Или когда пишешь свой файлформат (аудио, фото, видео, не важно), который браузер не поддерживает, или свой (раз)шифровальщик. Это все можно делать и делается в JS, примеры можешь в интернете сам найти. И вообще что ты так возмущаешься? То что ты не осилил побитовые операции, это уже твои проблемы, тебя никто не заставляет ими пользоваться, если ты обычный формошлеп, можешь готовые решения скачивать.
Откуда берется фаил babelrc? Как и зачем его создавать?
Нужно зачейнить промисы. Нюанс в том, что при определенном ответе от одного из них, нужно прекратить чейн, а при остальных продолжить.
То есть вот пример: https://jsfiddle.net/q71f1fae/
Как сделать так, чтобы если первый резолв вернул false, последний .then не вызвался?
Олсо, думал сначала просто возвращать Promise.Reject, но у меня уже висит на .catch обработка ошибок, да и как-то непохоже это на хороший кодстайл, должно быть что-то иное.
верни новый отрежекшеный промис. Следующий then по цепочке будет работать с ним.
Тебе принципиально важно чтоб это в разных функциях делалось? Почему в одном then нельзя все сделать?
>при определенном ответе от одного из них, нужно прекратить чейн, а при остальных продолжить
>чтобы если первый резолв вернул false, последний .then
поставить блядское условие if(val !== false) {твой код} ?
VSCode для именно редактирования/рефакторинга/автокомплита JS/TS работает лучше, в то же время в разы легче WS, потому что имеет куда меньше менее важных фич.
Вполне неплохое plug'n'play решение, если не хочется часов анального секса за плагины худшего качества на виме.
Замыкания - читал, понимаю, реального применения еще не было.
this - понимаю. В силу повсеместного использования стрелочных функций задумываться об этом не приходится.
прототипное наследование - читал, полезно понимать откуда объекты получают свои стандартные методы.
Промисы - понимаю, используются постоянно.
super, генераторы, итераторы - нет
>Почему в одном then нельзя все сделать
Потому что там таких 3 штуки. Хотел от лесенки избавиться, но видимо анлаки.
Посмотрел вакансии на похапе. Берут стажеров. Надо немного уметь пхп и хтмл. Зарплата 20 тыщ, что для мухосрани неплохо, а для стажера даже охуенно.
Как там дела с фронтовскими вакансиями - промолчу. Просто, блядь, промолчу.
https://youtu.be/TRXdxiot5JM?t=42s
Если мухосрань, то есть шанс что тебя возьмут на позицию Мидла даже если ты нихуя не умеешь, особенно если работодатель какой-нибудь провайдер или госконтора, где синьором является бывший монтажник оптоволокна с годом опыта работы.
>особенно если работодатель какой-нибудь провайдер или госконтора
Да нихуя, там в основном манявебстудии, а в требованиях вообще все, от жиквери до ангуляра.
Стоит ли брать курс по реакту https://www.udemy.com/react-the-complete-guide-incl-redux/ ? Просто сейчас я задрачиваю чистый js, до реакта не дошел, а на юдеми скидочка. Или все эти курсы фигня?
Епт, у нас то же самое. Знание всех фреймворков, ноды, джейквери, опыт работы от двух лет. Хз, что там за пиздец творится, знаю лишь, что там зп по два месяца задерживают и оформляют неофициально. В другой конторе требования те же, но хоть зп выплачивают.
Вангую, что по факту там нужно в жекверях ковыряться и хуярить бекенд на пхп. А потом все это на влажный вордпресс натягивать, да.
>>97335
>да и как-то непохоже это на хороший кодстайл
Чувак, ты не поверишь.
Это и есть "хороший кодстайл".
>Нужно зачейнить промисы.
Промис - это монадообразная конструкция.
И именно так они и чейнятся.
Монада - это контейнер для одного значения.
И набор функций для работы с этим контейнером.
Каждая функция принимает контейнер и функцию работающую со значением, и возвращает новый контейнер.
Контейнер может быть полным или пустым.
Если он пустой - рабочая функция ничего не делает, если полный - делает.
Т.е. чейн _не_ прекращается, он просто работает вхолостую с момента ошибки.
Ошибка должна сохраняться до конца цепочки, и это забота библиотечного кода, который предоставляет тебе промисы.
Тут один пидар (>>96597) так и не смог подробно пояснить, почему промис - это монада. Я тоже не буду, ибо тред тонет, и всё будет слито в унитаз.
Могу посоветовать взглянуть вот на это:
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
>>97335
>да и как-то непохоже это на хороший кодстайл
Чувак, ты не поверишь.
Это и есть "хороший кодстайл".
>Нужно зачейнить промисы.
Промис - это монадообразная конструкция.
И именно так они и чейнятся.
Монада - это контейнер для одного значения.
И набор функций для работы с этим контейнером.
Каждая функция принимает контейнер и функцию работающую со значением, и возвращает новый контейнер.
Контейнер может быть полным или пустым.
Если он пустой - рабочая функция ничего не делает, если полный - делает.
Т.е. чейн _не_ прекращается, он просто работает вхолостую с момента ошибки.
Ошибка должна сохраняться до конца цепочки, и это забота библиотечного кода, который предоставляет тебе промисы.
Тут один пидар (>>96597) так и не смог подробно пояснить, почему промис - это монада. Я тоже не буду, ибо тред тонет, и всё будет слито в унитаз.
Могу посоветовать взглянуть вот на это:
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
>Я тоже не буду, ибо тред тонет, и всё будет слито в унитаз.
Можешь писать, треды на этой доске все равно долго не удаляются, вон два предыдущих js треда можешь до сих пор в каталоге найти.
Вот в Object.prototype.constructor содержится ссылка на Object. Почему тогда не получается циклической вложенности? Ведь в Object по сути ссылается внутри сам на себя.
Кондуктор не спешит, кондуктор понимает...
В JS более мощная система. При помощи сахарка можно реализовать все, что есть в Python/Ruby.
Разве что приватность слегка сложнее, но скоро и нативную приватность добавят.
Установил себе Atom, листаю learn.javascript.ru
В большей степени нихуя не понятно, получается только некоторые задания делать и то потому что я на этом же сайте прочитал как написать нужный скрипт.
Есть че попроще, прям совсем для новеньких? Нужно что бы был более подробный конструктивный разбор с пониманием что зачем и почему. Лернджава больше похоже для тех кто хоть какой-то язык учил.
Вот и меня и смущает приватность, через symbols или замыкания, очень интересно и в то же время странно выглядит
Насчет нативной инфа соточка? Язык не молодой уже, странно что до сих пор нет
Не понимаю как я всю эту инфу должен запомнить, которая подается вбросами от главы к главе. Как мне все это на практике использовать.
Там с каждой страницы актуальной инфы пару абзацев, остальное - разжевывание, что и почему и куда.
Запоминается всё это прочтением и закреплением через практику(задачи). Параллельно можешь потыкаться в codewars или аналог. Всё это по мере прохождения по учебнику будет так или иначе повторяться в составах других задач. Из странного вброса инфы тяжелого могу вспомнить только главу про чай и мочу тестирование.
Если ты метишь в веб, тебе так или иначе понадобится html/css, попробуй с них начать, а после жабаскрипт уже, там всё очень легко и сразу можно простенькое на страничку лепить, но к программированию отношение отдалённое и в понимании жс это тебе не поможет особо.
А вообще, если не понимаешь как энное действие делается, поковыряйся в консоли разработчика в бровзере, пошерсти по комментам к главе учебника, поищи в интернете, на каком-нибудь стековерфлоу есть подробные ответы на любой твой вопрос с 99%-ным шансом.
Збазибо!
Это требует достаточно много времени.
И сил.
Или ты думал, что за это хорошо платят просто потому, что это модно?
И, если для тебя деньги - это основная мотивация, то стоит поискать себе другое занятие.
Ты не понял.
"Деньги" или "уехать в Европу" - это одно и то же.
Если тебе не нравится сам процесс - в программировании ты соснёшь.
Ничего против сосания не имею, это значит я в плюсе.
Язык как раз начал получать базовые фичи в 2009 (es5) и 2015 (es6, теперь зовется es2015). Теперь четкий процесс при котором умеренно штампуют фичи каждый год.
https://github.com/tc39/proposal-private-methods
Stage 3 значит шанс, что введут достаточно высок.
Перекат сам себя не запилит.
Это копия, сохраненная 28 июля 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.