Это копия, сохраненная 19 декабря 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы:
https://github.com/vladimir37/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/vladimir37/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/vladimir37/js-thread/blob/master/Wiki/tools.md
Инструмент для визуализации и экспериментов со связями между объектами в JavaScript:
http://www.objectplayground.com/
Конфа /pr/ в Slack:
https://slack-2chpr.herokuapp.com/
JS-конфа в телеграме:
https://telegram.me/jsthread
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
>>1091341
скачай и запусти пару простых проектов с гитхаба и начни их исследовать с помощью console.log @ попутно читай спеку https://developer.mozilla.org/ru/ всё придёт само потом
Т.е. сделать так, чтобы переменная var2 стала такого же типа, как и var1. Никакой другой информации, кроме этих двух переменных мы не имеем.
Вопрос: как это сделать?
Вопрос в догонку: есть одна переменная var1 с типом A. Необходимо создать новый экземпляр такого же типа.
Эмм, переопределить valueOf() переменной var2?
Предварительно прогнав ассерты var1 на определение ее типа.
Программирование вообще сложное, оно и не должно быть простым.
Я тебе могу предложить крайне уебанский вариант, но это явно не то как следует писать на жс.
Кастить объекты в примитивы = изначально делать что-то неправильно
Пилили проект на нем. Хуй знает. ПРоблем много оче, эта сука даже на форичах обсирается.
Много нюансов всплывают, хотя может ту и сами выноваты, к примеру не стоит делать двухсвязанные парент-чайлд компоненты... Все крякают за незменяемое сотояние моделей, и типа без него никак. Ну пизец.
мой лвл - 0
var1.constructor
Да не, я про то, куда сохраняешь потом. Просто у меня куча блокнотовских файлов уже. Думаю где хранить данные юзеров, на ссд или хдд? Наверное, если будет тысяча юзеров и у каждого инфы куча, то они долго будут ее загружать и получать.
У меня на сддшнике все, хотя разницы значительной наверное не будет.
вообще я уже начал по лерн яваскрипт учит
я в облако накатил ide, пишу код сидя в хроме, потом в конце дня делаю один большой коммит на гитхаб. облачная вм крутится на хдд.
вот это правильный подход! после того, как я умных книжек начитался, пришлось обучить нейроночку. теперь она за меня код пишет, а я только бабло лопатой гребу
1. Научись базовым вещам по книжке: переменные и типы данныз, управление потоком (условия, цыклы, исключения), функции. Это можно за день-два осилить, если раньше никогда не прогал.
2. Пойми, как работает js, тут посложнее, но, наверняка это в твоей книжке тоже есть. Про один поток, асинхронность, вот это все.
3. Понял - молодец. Закрой книжку и пиздуй читать про актуальный снадарт, т.к. инфа 95%, что твоя кнга повествует о неактуальных уже вещах.
4. Прочел? Мелькали у тебя перед глазами всякие import, let, class и вот это все? Отлично, пришло время для практики. Хуй ты что сам придумаешь, поэтому просто начни писать алгоритмы, простые, бинарный поиск, быструю сортировку, dsf - это нужно просто для того, что бы ты немного привык и набил руку.
5. Ты спросшь, мол js - это же про сайты, dom и вот это все. Я тебе отвечу: 1. работа с dom - это просто вызов функций, хорошо дукментированных и миллион раз обсосанных на so. 2. В 2016 году руками с dom работают или для академических целей или душевнобольные люди.
6. Настало время вкатываться в экосистему. Что такое webpack можно быстро понять по статьям в интернете. По факту больше тебе ничего не нужно, т.к. он закроет 95% юзкейсов из коробки. Что такое npm понять еще проще. И наконец самое главное - фреймверк. Тут сложно что-то советовать, есть примерно 3 стура: эмбер, ангуляр2, реакт+редукс (или другая имплементация). Лично я советую 3, но хз, как дела будут обстоять, когда ты доберешься до этого пункта.
7. Берешь квик старт твоего фрейсворка и пишешь тудумвц. Если все гладно, то тут можно перейти уже к пидумыванию себе задачи, ее декомпозиции и, собственно, свободному плаванью.
Cпасибо огромное, анончик. Сейчас спать уже пойду, а завтра по твоему гайду вкалывать.
Тем не менее,
>Лично я советую 3, но хз, как дела будут обстоять, когда ты доберешься до этого пункта.
Стоит на повестке дня как никогда. Проще всего не налажать с React/Redux, остальное — грабли, и они больно бьют по лбу.
>Есть сайт, состоящий из одной страницы, нескольких JS-файлов, нескольких CSS-файлов и десятка иконок. Нужно сократить время загрузки до минимума. Какие действия нужно предпринять?
какой правильный ответ? как это подгружать?
мимо недоджун
Использовать сборщик ресурсов? Склеить это все в один JS, пройтись угифайером и ебануть.
Но так не честно! Ведь пользователь до первоначальной отрисовки будет видеть нихуя.
Иконки склеить в тайлсет, для css и js - найти плагин-хуин под твой сервер, который будет склеивать и минимизировать их перед выдачей (либо самому написать, либо вручную).
Проверить размеры всех картинок - должны быть минимально необходимыми, а не уменьшенными в 10 раз через размер элемента/быкграунда.
Ну и не забыть проверить, что гзип включен и работает.
А кто сказал, что надо скастить объект к примитиву? Нужно скастить один объект в другой.
Задача такова: есть два объекта - один просто объект типа Object, а другой экземпляр класса A. Надо чтобы первый объект, который Object, тоже стал класса А, при этом никак не изменяя второй объект, он должен остаться таким же каким и был.
Что значит лвл - 0? Начать тебе с чего надо? С того, что такое мышка и монитор? Азы жс у тебя есть? Если нет, то с них и надо начать. До реакта пока рано.
Подождать http2, там само все быстрее станет грузиться.
Рано тебе еще готовые приложения писать, прокачивай основы, решай алгоритмические задачки.
Время загрузки зависит от многих факторов. Нужно оптимизировать JS-код чтобы он быстрее выполнялся, уменьшить размер файлов по максимуму, и т.д.
обычного стора не хватает, я не могу его перекидывать через миллион компонентов
сука бля
страшно
как там в 0х?
облачная ice на пыхе и жс https://github.com/Codiad/Codiad
новая на жс и ноде https://orionhub.org
Што это?
Я сегодня не играл и вчера тоже, так что я на пути к успеху. И вообще у меня пост до обновы рейтинга. Так что разыскиваю тянотьку, которая поверит в меня ;)))
Object.setPrototypeOf(простоОбэкт, Object.getPrototypeOf(классныйОбэкт))
А вообще это очень плохонько.
>Список материалов для изучения:
>https://github.com/vladimir37/js-thread/blob/master/Wiki/learn.md
А есть актуальные книги/ресурсы для самоизучения? Я тут на форчонге спросил, но такое чувство, что все рекомендованные источники написаны бородатыми дядьками late 50s, отсталыми донельзя.
Актуальное кто-то посоветует?
Это моя зп в текущей конторке. Мое первое место работы.
у нас в мухиче 350к пхп жуниору 25 дают
>Есть сайт, сост
всё вышесказанное + пиздануть весь фронтент на CDN, охуеешь от скорости базарю
Реакт — он про состояния объектов. Поэтому и задача должна быть такая, которая позволит использовать его мощность. Когда я вкатывался то запилил дракончика из hmm2, летающего по гексагональному полю под управлением мыши.
Джун, работаю второй месяц
Потому что остальные решения — императивный ангуляр, вместо прекрасного
Named Function Expression
new Function
Хуйни какие-то ебаные. Прочел основы яваскрипта по лерн.яваскрипт.ру, но эту хуйню не понял. Мб подскажете в чем суть?
первый день ботаю, уже чето непонятное бля.
Даже те кто программируют 10 лет, каждый день сталкиваются с чем то непонятным.
Ищу, но ничего толкового найти не могу.
Может аноны подскажут, где лучше всего искать удаленку?
>3. Понял - молодец. Закрой книжку и пиздуй читать про актуальный снадарт, т.к. инфа 95%, что твоя кнга повествует о неактуальных уже вещах.
А ГДЕ БЛЯТЬ ЧИТАТЬ СУКААА
Сам же сказал что 99% книжек неактуальны.
>Сам же сказал что 99% книжек неактуальны.
Стандарт это не книжка.
>А ГДЕ БЛЯТЬ ЧИТАТЬ СУКААА
Если ты не умеешь в гугл, ты не справишься.
Ахуенный ответ. И зачем ты вообще сдался в этом треде? Для щеголяния ЧСВ есть спец-треды, вали туда?
Ну это как раз такоэ, я hacker's delight читал и на си программировал довольно много.
Мне тяжело заходит функциональщина и реактив программинг, прямо как лекарство пихаю блять. Хаскелисты неиллюзорно были правы во всём, эх. Небось они то как раз в модерновый жс вкатываются с 0 проблем.
Если ты C знаешь, нахуй тебе JS, C# и прочие плюсы? Низкоуровневые Си сейчас редкость и треба забугром.
Да я пошутил, на самом деле вкатился за час. Хуй знает чего ты там полдня ковырял.
Хули ты там час делал, мне 23 минут хватило
let isNum = ... // например библиотека https://github.com/chriso/validator.js
if ( -1 !== [isNum(14), isNum(88), isNum('x')].indexOf(false) ) throw new Error(400); // ошибка
... // идём дальше
какие могут быть подводные?
и в следующую наносекунду уже получил 300кк.
>learn.javascript.ru
А современные аналоги но по C# есть?
Начал я тут вникать в жабоскрипт и блять тут же возненавидел. Сострый такой простой по сравнению с жабой.
Да ну нахуй, нахуй вебдев, задрочу c# и буду говнотреш в Юнити клепать ссука
Клиент делает запросы к эндпоинтам сервера, получает JSON с данными и сует их в $scope?
Что за пиздеж в оппике разве у JSа не сишный синтакс а явы? От явы он только название спиздил, классы то добавили и то недавно.
На столько же насколько и остальная бумажная литература по языкам. Выходит новая нода - книга уже немножко старая а некоторые функции деприкейтед. Если бы и покупал книги то только по Computer Science, алгоритмы, деревья вращать, кучи. Паттерны и трехуровневая архитектура, вот это вот все довольно медленно устаревает
А у Джавы что, не сишный синтаксис?
У тебя слой данных в сервисах лежит. Контроллер только забирает эти данные в скоп.
У джавы тоже сишный синтаксис, к тому же в JS в некоторых местах мимикрирует именно под джаву, использует принятые в джаве стандарты и копирует некоторое апи
мне для демонстрации результата тестового задния нужно выложить свой проект на ангуляре 4 в plnkr.co, как там создать полную инфраструктуру проекта с кучей пакетов и тд, я не допераю.
да и вообще там это возможно реализовать?
кароч я так понял это анриал
>Удобный синтаксис позволяет легко писать на нём
> n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)
отсоси
На медиуме или каком-то другом бложике был разбор этого шорткода, потом на хабре был перевод. Собсна, есть сайт, где публикуют такие вот короткие скрипты, типа демосцены на жс, но из головы вылетело. Твиттер, дрибблер, нет, что-то похожее...
if (UnderwaterRocksPreventer.assure(DBSendingManager.validate(inputDataContainer.getNumbers())))
Что?
>every
ахуенно, запомню на будущее.
короче я вчера в итоге накатил эту либу https://github.com/skaterdav85/validatorjs так как там проверка более системная
looks good
Аноны, что это значит?
// allows you to replace a strings char at a specific index
String.prototype.replaceAt=function(index, char) {return this.substr(0, index) + char + this.substr(index+char.length);}
Это типа свой метод сделать можно? Я нубас
- всего может быть выбрано до 9 пассажиров включительно(9-0-0, 3-3-3, 1-0-0, 2-2-1 и т.д)
- младенцев не может быть больше, чем взрослых
- взрослых не может быть меньше, чем младенцев
Я тут написал некое подобие того, что мне нужно. Но проблемес в том, что я хз, как мне ограничивать возможность выбора младенцев(если выбрано 3 взрослых пассажира и 3 младенца, то выбрать больше младенцев нельзя).
Алсо, по-моему, я наговнокодил.
https://jsfiddle.net/MyCarIsFantasy/2xgp5079/1/
Буду благодарен за любую помощь. С меня как всегда.
эээ, Ты имеешь в виду полоску, которая появляется, если нажать шифт + слэш? | ||| | | | | | | | | |
Которая мигает при фокусе.
Ну и это попробую использовать, спс, я не думал про неё.
Ну я же вижу что ты старался. Наверстал что-то сам попытался решить. А не просто пришел с охуевшими запросами.
Я код очень быстро накидал, там есть ошибки. В конструкторе поменяй где выбрасывается эксепшен initial на this.total, дата-аттрибуты перекинь с тега i на тег a и поменяй слушатели событий в селекторе соответственно, а то бывает жмешь по кнопке, но не попадаешь иконке. Стили кнопочек по достижению предела сам расставишь, напиши пару методов в классе для этого. Еще нужно осознавать, что это ES6 и будет работать только в актуальных браузерах, если в продакшен тебе вываливать куда-нибудь пропусти через babel. Или заказчик будет доебывать что не работает в интернет-эксплорере. Постарайся больше не писать на jQuerry. Он не нужен и скоро будет там где сейчас Flash. Удачи.
Забей. Верстку можешь выучить по ходу дела.
Лучше скажи зачем ты
>Пошел на курсы.
Это один из самых отвратительных способов начать кодить если опыта нет, хуже только просмотры ютуб-видосов (без повторения и практики). У тебя есть интернет. Гугл. Тот же learn.javascript.ru содержит все что тебе нужно. Быстро и с хорошим качеством писать код может научить только одно - сам процесс написания кода. Ставь себе задачи, выполняй их. Устраивайся на работу как можно быстрее. Вот это главное.
Я работаю на средней по высоте управленческой должности. Курсы для меня пинок таки вкатится в ойти, а не работать дальше управленцем с возможностью роста максимум на след. ступень и упором в зарплату мидла (когда для меня это будет максимум).
>Постарайся больше не писать на jQuerry. Он не нужен и скоро будет там где сейчас Flash.
Расскажите про это поподробнее, я не прошаренный.
Для особо умных, я помочь прошу. Пожалуйста.
Скрипт надо в конец боди перенести. На момент когда он выполняется дома еще нет.
> Постарайся больше не писать на jQuerry
Дружок, подскажи как избавиться от jQuery в случае необходимости в таких селекторах:
1. $(fileNode).find('tr:contains("require")').nextUntil('tr:contains("}")')
2. $(fileNode).find('tr td.js-file-line:contains("gem "):not(:contains("#"))')
На чистом JS нужно писать немалые рекурсивные функции, в то время как на jQuery это простые однострочники.
Только один вопрос. Это платные курсы непричастных к тебе людей, или внутренние курсы компании/бесплатные курсы IT компаний которые ищут себе стажеров? Если первое - то я выражаю свое недоумение, почему ты работая с людьми, как управленец еще не понял в чем заключается их мотивация. Я подскажу, не в том чтобы сделать из тебя хорошего специалиста.
Ты пробовал писать юзерскрипты/аддоны для сайтов? Когда у тебя нет контроля над генерируемым HTML и приходится писать непростые селекторы. Вот писать такое на чистом JS - костыли. А ты просто малоопытный максималист, не понимающий, что инструмент нужно выбирать под задачу.
Нихуя.
В нормальных проектах такой хуйни нет.
С другой стороны, если тебе приходится рекурсивно перебирать дом дерево чтобы условно получать какие-то ноды, значит все уже пошло очень плохо. И скорее всего у тебя нет доступа к дому. В команде я бы такой код не дал бы никому закоммитить и отправил бы расставлять селекторы. Желательно по БЭМ.
Согласен, хороший подход. Я просто описал >>1093222
один из возможных кейсов, когда знание jQuery помогает проще решить проблему, поэтому есть смысл его знать.
Вообще-то это был скрытый реквест либы, которая имеет такой же мощный движок выбора DOM-элементов (sizzle?), но не тянет за собой весь jQuery
Бамп.
#parent > (.child+.child+.child+.child.need+.child+.child)
Array.prototype.indexOf.call(document.getElementById("parent").children, document.getElementsByClassName("need")[0]);
С помощью этой строчки я могу узнать индекс элемента .need в элементе #parent (пример https://codepen.io/anon/pen/aVVpXg).
Но мне хотелось бы понять, что она делает. Правильно ли я понимаю, что алгоритм примерно такой:
Array.prototype - создаёт прототип конструктора Array. Я пока затрудняюсь объяснить, шо це, но говоря грубо - как бы пустой массив. Суть просто в том, чтобы была возможность обращаться к методам Array.
.indexOf - возвращает индекс элемента в массиве (я правильно понимаю, что Array.indexOf и String.indexOf это несколько разные штуки?)
.call - а вот тут начинается интересное, .call заменяет this для indexOf на document.getElementById("parent").children. То есть, по сути, мы как бы создаём пустой массив, а потом заполняем его детьми элемента #parent. Ну а document.getElementsByClassName("need")[0] передаётся в качестве аргумента для indexOf.
Я примерно правильно понял или совсем хуйню несу? Поясните, пожалуйста.
>Array.prototype - создаёт прототип конструктора Array.
Нет. Он обращается к прототипу Array'я. Он уже давно "создан". И не конструктору, конструктор в Array.prototype.constructor находися.
>Суть просто в том, чтобы была возможность обращаться к методам Array.
Да.
>То есть, по сути, мы как бы создаём пустой массив, а потом заполняем его детьми элемента #parent.
Нет, ничего не созадётся и не заполняется. "массив", а точнее набор элементов HTMLCollection, у тебя уже есть в .children, ты можешь обращаться к нему по индексам и всё такое. Но так как это не Array, то и методов соответствующих нет. И вот эта запись позволяет приметить метод к твоей коллекции, как будто она его имела бы.
В принципе, вполне можно было сделать и
>arr = parent.children
>arr.indexOf = Array.prototype.indexOf
>arr.indexOf(element)
Поправьте, если где чего не так сказал.
Теперь надо всё это дерьмо как-то оптимизировать чтоб пендосы не ахуели инстантом.
Собственно как я могу загнать в манякэш юзера все статичные скрипты и переменные ? Эффективно ли будет использовать под это дело localStorage и IndexedDB ?
Вообще - я могу тупо все свои ангулар/ждикуэри-либы загнать к юзеру в локальное хранилище и после тупо забирать и исполнять их? Или это тупо и бесполезно т.к. браузер и так будет кэшировать .js-шки...
>Array.prototype - создаёт прототип конструктора Array
Конструктор тут вообще не причем и это не пустой массив. Если ты учил нормальные языки программирования до JS, я бы провел аналогию с обращением к методам класса без инициализации объекта. Статические методы Но в JSe все по другому. Ты просто выдергиваешь метод indexOf, из объекта от которого наследуются все массивы. Кладешь в него свою HTML коллекцию детей от узла parent. и потом описываешь функцию обработчик. Точно так же можно итерировать ноды, например скриптец Array.prototype.forEach.call(document.getElementById('thread-1091285').children, (el, index) => {
index % 2 ? el.style.backgroundColor = 'black' : el.style.backgroundColor = 'red'
}) раскрасит черно-красными полосками врапперы постов этого треда.
И так будет. Хедеры респонсов посмотри только на счет настроек кеширования.
53Мб? Пиздос. Минифицировал?
Тебе лучше с основами ЖС подразобраться, чтоб понимать все эти хитрости.
Исторически всё сложилось непросто. Так как ЕКМАСкрипт, это встраиваемый язык общего назначения, его спецификация написана на каком-то своём птичьем языке, к которому требуется привыкнуть.
https://tc39.github.io/ecma262/
Встраивание этого языка в браузер в народе называется ЖС (getElementById это уже не часть ЕКМАСкрипта, а только ЖС). Из-за непривычности, несоответствия и сухости спека у меня вызывала отвращение первое время. Надо пересилить и окунуться.
В спеке ЕКМАСкрипта есть абстрактные операции и внутренние поля (свойства или методы) у объектов. Абстрактные и внутренние потому, что они существуют только как договорённости, ты к ним никак не можешь обратиться, не можешь их прямо изменять, никогда их не встретишь в коде ЖС, они нужны для описания внутренних алгоритмов движка в спецификации. Внутренние свойства или методы решили писать в двух квадратных скобках (к массивам это не имеет отношения, скобки считаются прям частью имени в спеке).
Например, спецификация (в тутошнем вольном толковании) говорит, что Конструктором считается тот, у кого есть внутренний метод [[Construct]]. По-человечески: "Конструктор это тот, кто может делать констракт". Констракт это иметь способность вызываться с оператором new ( типа new Array() ) и знать, какие шаги предпринимать в таком случае.
Вызываться. Функция это тоже объект, у которого есть внутренний метод [[Call]]. Вспомни, ты не можешь их изменять, ты не можешь добавить такой метод произвольному объекту сам. Только если прямо создаешь функцию ( function fn() {} ), внутренности движка следуя спеке делают так, что у объекта fn будет какой-то механизм, соответствующий [[Call]], и тогда ты сможешь этот объект вызывать скобочками.
https://tc39.github.io/ecma262/#sec-ecmascript-function-objects-call-thisargument-argumentslist
Взгляни, но пока не упарывайся. Этот внутренний метод проверяет другие внутренние свойства ( типа [[FunctionKind]] ), предпринимает прочие шаги. Вот так там всё внутри вертится.
Прототипы. У каждого объекта есть внутреннее свойство [[Prototype]]. Оно содержит ссылку на другой объект (типа адрес другого в памяти). Нужно это для экономии памяти, чтоб можно было не копировать свойства из объекта в объект, а дать возможность одним объектам ссылаться на другие. Так объекты складываются в цепочки, получается что-то похожее на наследование. В конце цепочки [[Prototype]]: null
Например, писать через точку obj.prop это вызывать внутренний метод [[Get]] (найди его в спеке), который вызовет абстрактную операцию OrdinaryGet, которая получает значение свойства из объекта, а если в нём свойства нет, то ищет по цепочке прототипов до null. Если ты делаешь obj.prop, движок внутри себя делает obj.[[Get]](prop, obj), если получает undefined, тогда делает obj.[[Prototype]].[[Get]](prop, obj) и т.д. по цепочке до null. Как только получит не undefined, а любое другое значение, как бы заменит им obj.prop
Если ты через точку, вызываешь функцию ( obj.prop() ), то внутренние алгоритмы для этого вызова функции специальную переменную this сделают равной объекту до точку. Это отдельная тема, но можешь попробовать сам поглядеть, только пока сильно не упарывайся, это забористое дерьмо
https://tc39.github.io/ecma262/#sec-ordinarycallbindthis
Когда ты создаёшь функцию ( var fn = function() {} ), она как объект автоматические получает всякие нормальные, доступные тебе, поля. Например fn.length вернёт количество аргументов, которые ожидает функция (тут 0). Или fn.name === "fn".
Можешь представить, что функцией этот объект делает только то, что этот объект содержит внутренние поля [[ECMAScriptCode]] (это строка, в ней всё, что ты в функции между {} написал) и [[Call]], который типа выполнит эту строку как eval(str);
Нам важно, что есть среди нормальных, доступных тебе полей, объект fn.prototype, на который будут в своём [[Prototype]] ссылаться объекты, которые будут созданы, если ты вызовешь fn как конструктор. fn.prototype и [[Prototype]] это разные вещи. Первый доступен тебе в коде, другой из спеки и кишков движка.
var obj = new fn();
obj.[[Prototype]] === fn.prototype // можно было бы сделать, если бы нам был доступен [[Prototype]], но он внутренний. Нам доступно только
Object.getPrototypeOf(obj) === fn.prototype // вот это вернёт true
var arr = new Array() // или var arr = []
Object.getPrototypeOf(arr) === Array.prototype // true, в цепочке, а значит
arr.indexOf === Array.prototype.indexOf // true, arr получает этот объект (функцию) по цепочке, это один и тот же объект-функция, полученный через [[Get]]
К чему была вся эта писанина, [[Prototype]] может содержать ссылку только на один объект. Получается только цепочка. Многие могут ссылаться на одного, но один на многих — никогда. Нет множественного наследования.
В твоём примере ты хочешь обращаться с живой коллекцией (объект, который содержится в document.getElementById("parent").children), как с массивом. Но из-за отсутствия множественного наследования, этот объект не может быть и NodeList, и Array. Никаких методов из Array.prototype этот объект не получает через точку, через [[Get]], потому что не имеет к его цепочке прототипов вообще никакого отношения. У него своя спецификация:
https://dom.spec.whatwg.org/#interface-nodelist
{"0": HTMLElement, "1": HTMLElement, length: 2}
Но, судя по его спецификации, он очень похож на массив. Есть ключи-индексы, есть длина.
Взгляни на
https://tc39.github.io/ecma262/#sec-array.prototype.indexof
Ему как раз не нужно ничего, кроме ключей-индексов и длины. Вот только шаги свои он предпринимает для this. Чтоб this стал равен живой коллекции, надо бы вызвать через точку children.indexOf(), вот только вызывать нечего, не найдётся такого метода в цепочке от children.
Сам A.p.indexOf это функция, а значит
indexOf.[[Prototype]] === Function.prototype
Все функции по цепочке могут получить свойства из прототипа Конструктора функций. Там есть метод call(thisArg, ...args)
https://tc39.github.io/ecma262/#sec-function.prototype.call
который вызывает функцию с явным this = thisArg. Как точка, только точка это делает неявно, а первый аргумент call() — явно.
obj.fn(1, 2) // то же, что и
var fn = obj.fn
fn.call(obj, 1, 2)
Итого:
Ты хотел бы обращаться с объектом, похожим на массив, как с массивом.
Array доступен в глобальной области видимости.
Ты взял объект-функцию indexOf из объекта protorype из объекта Array. Обычный массив получал бы эту функцию по цепочке прототипов, но NodeList не массив.
Из объекта-функции indexOf ты вызвал метод call, который нашёлся в indexOf.[[Prototype]].
Метод call(children, elem) вызвал свой this (объект до точки, indexOf который) и явно установил для этого вызова (внутри indexOf) this равным children, а elem передал первым аргументом.
Получилось неотличимо от children.indexOf(elem).
Тебе лучше с основами ЖС подразобраться, чтоб понимать все эти хитрости.
Исторически всё сложилось непросто. Так как ЕКМАСкрипт, это встраиваемый язык общего назначения, его спецификация написана на каком-то своём птичьем языке, к которому требуется привыкнуть.
https://tc39.github.io/ecma262/
Встраивание этого языка в браузер в народе называется ЖС (getElementById это уже не часть ЕКМАСкрипта, а только ЖС). Из-за непривычности, несоответствия и сухости спека у меня вызывала отвращение первое время. Надо пересилить и окунуться.
В спеке ЕКМАСкрипта есть абстрактные операции и внутренние поля (свойства или методы) у объектов. Абстрактные и внутренние потому, что они существуют только как договорённости, ты к ним никак не можешь обратиться, не можешь их прямо изменять, никогда их не встретишь в коде ЖС, они нужны для описания внутренних алгоритмов движка в спецификации. Внутренние свойства или методы решили писать в двух квадратных скобках (к массивам это не имеет отношения, скобки считаются прям частью имени в спеке).
Например, спецификация (в тутошнем вольном толковании) говорит, что Конструктором считается тот, у кого есть внутренний метод [[Construct]]. По-человечески: "Конструктор это тот, кто может делать констракт". Констракт это иметь способность вызываться с оператором new ( типа new Array() ) и знать, какие шаги предпринимать в таком случае.
Вызываться. Функция это тоже объект, у которого есть внутренний метод [[Call]]. Вспомни, ты не можешь их изменять, ты не можешь добавить такой метод произвольному объекту сам. Только если прямо создаешь функцию ( function fn() {} ), внутренности движка следуя спеке делают так, что у объекта fn будет какой-то механизм, соответствующий [[Call]], и тогда ты сможешь этот объект вызывать скобочками.
https://tc39.github.io/ecma262/#sec-ecmascript-function-objects-call-thisargument-argumentslist
Взгляни, но пока не упарывайся. Этот внутренний метод проверяет другие внутренние свойства ( типа [[FunctionKind]] ), предпринимает прочие шаги. Вот так там всё внутри вертится.
Прототипы. У каждого объекта есть внутреннее свойство [[Prototype]]. Оно содержит ссылку на другой объект (типа адрес другого в памяти). Нужно это для экономии памяти, чтоб можно было не копировать свойства из объекта в объект, а дать возможность одним объектам ссылаться на другие. Так объекты складываются в цепочки, получается что-то похожее на наследование. В конце цепочки [[Prototype]]: null
Например, писать через точку obj.prop это вызывать внутренний метод [[Get]] (найди его в спеке), который вызовет абстрактную операцию OrdinaryGet, которая получает значение свойства из объекта, а если в нём свойства нет, то ищет по цепочке прототипов до null. Если ты делаешь obj.prop, движок внутри себя делает obj.[[Get]](prop, obj), если получает undefined, тогда делает obj.[[Prototype]].[[Get]](prop, obj) и т.д. по цепочке до null. Как только получит не undefined, а любое другое значение, как бы заменит им obj.prop
Если ты через точку, вызываешь функцию ( obj.prop() ), то внутренние алгоритмы для этого вызова функции специальную переменную this сделают равной объекту до точку. Это отдельная тема, но можешь попробовать сам поглядеть, только пока сильно не упарывайся, это забористое дерьмо
https://tc39.github.io/ecma262/#sec-ordinarycallbindthis
Когда ты создаёшь функцию ( var fn = function() {} ), она как объект автоматические получает всякие нормальные, доступные тебе, поля. Например fn.length вернёт количество аргументов, которые ожидает функция (тут 0). Или fn.name === "fn".
Можешь представить, что функцией этот объект делает только то, что этот объект содержит внутренние поля [[ECMAScriptCode]] (это строка, в ней всё, что ты в функции между {} написал) и [[Call]], который типа выполнит эту строку как eval(str);
Нам важно, что есть среди нормальных, доступных тебе полей, объект fn.prototype, на который будут в своём [[Prototype]] ссылаться объекты, которые будут созданы, если ты вызовешь fn как конструктор. fn.prototype и [[Prototype]] это разные вещи. Первый доступен тебе в коде, другой из спеки и кишков движка.
var obj = new fn();
obj.[[Prototype]] === fn.prototype // можно было бы сделать, если бы нам был доступен [[Prototype]], но он внутренний. Нам доступно только
Object.getPrototypeOf(obj) === fn.prototype // вот это вернёт true
var arr = new Array() // или var arr = []
Object.getPrototypeOf(arr) === Array.prototype // true, в цепочке, а значит
arr.indexOf === Array.prototype.indexOf // true, arr получает этот объект (функцию) по цепочке, это один и тот же объект-функция, полученный через [[Get]]
К чему была вся эта писанина, [[Prototype]] может содержать ссылку только на один объект. Получается только цепочка. Многие могут ссылаться на одного, но один на многих — никогда. Нет множественного наследования.
В твоём примере ты хочешь обращаться с живой коллекцией (объект, который содержится в document.getElementById("parent").children), как с массивом. Но из-за отсутствия множественного наследования, этот объект не может быть и NodeList, и Array. Никаких методов из Array.prototype этот объект не получает через точку, через [[Get]], потому что не имеет к его цепочке прототипов вообще никакого отношения. У него своя спецификация:
https://dom.spec.whatwg.org/#interface-nodelist
{"0": HTMLElement, "1": HTMLElement, length: 2}
Но, судя по его спецификации, он очень похож на массив. Есть ключи-индексы, есть длина.
Взгляни на
https://tc39.github.io/ecma262/#sec-array.prototype.indexof
Ему как раз не нужно ничего, кроме ключей-индексов и длины. Вот только шаги свои он предпринимает для this. Чтоб this стал равен живой коллекции, надо бы вызвать через точку children.indexOf(), вот только вызывать нечего, не найдётся такого метода в цепочке от children.
Сам A.p.indexOf это функция, а значит
indexOf.[[Prototype]] === Function.prototype
Все функции по цепочке могут получить свойства из прототипа Конструктора функций. Там есть метод call(thisArg, ...args)
https://tc39.github.io/ecma262/#sec-function.prototype.call
который вызывает функцию с явным this = thisArg. Как точка, только точка это делает неявно, а первый аргумент call() — явно.
obj.fn(1, 2) // то же, что и
var fn = obj.fn
fn.call(obj, 1, 2)
Итого:
Ты хотел бы обращаться с объектом, похожим на массив, как с массивом.
Array доступен в глобальной области видимости.
Ты взял объект-функцию indexOf из объекта protorype из объекта Array. Обычный массив получал бы эту функцию по цепочке прототипов, но NodeList не массив.
Из объекта-функции indexOf ты вызвал метод call, который нашёлся в indexOf.[[Prototype]].
Метод call(children, elem) вызвал свой this (объект до точки, indexOf который) и явно установил для этого вызова (внутри indexOf) this равным children, а elem передал первым аргументом.
Получилось неотличимо от children.indexOf(elem).
Решил вкатиться в коддинг и выбрал Js, правильный ли выбор?
p.s. Каким IDE пользуются люди?
Вот блин. Думаю дай сделаю на досуге простой блог себе. От нечего делать. И буду использовать готовый шаблон для фронта. Так нихрена не нашел. Все какие-то убогие одностраничники. А мне хочется что-то вроде simple blog template, но нихрена нет. Что-то вроде medium'a. Может поможешь с поиском?
азазаза лев толстой в тредю кек чебурек тлдр
Ебать ты расписал, наркоман!
Спасибо большое, завтра с утра нужно будет вчитаться, а то уже голова не очень варит.
Красиво живем
https://themeforest.net/category/site-templates/personal
Если западло платить - выбираешь из популярных и скачиваешь с вареза. Можно ещё тупо рипнуть..
Неправильный. Пиздуй сначала байтоебствовать в С, как поймешь базовые принципы - вкатывайся в C#/Java, там ты научишься ООП. Только потом приходи сюда. Иначе навсегда останешься веб-макакой.
VS Code / Webstorm.
Ни С ни С++ нахуй не нужны для понимая C#
Он потому и был придуман, что бы всю эту байтохуню нахуй послать
Нужны, чтобы хотя бы примерно понимать, как все работает на относительно низком уровне.
Нет, если ты чисто казуальный C# и .NET дев - нахуй не всралось.
Если же у тебя в практике/работе очень часто встречаются случае, когда тебе нужно лезть на уровень ниже Шарпа - тогда тебе стоит серьезно задуматься, почему, зная лишь высокоуровенвый язык, ты выбрал работу с необходимостью знания низкоуровневых.
Кхм, надоело не проходи. Чтобы не надоедало, нужно идти от задач к теории. Решение задач приносит интерес.
Чем раньше тем лучше.
Конечно же VSCode
Скорее больше шансов наоборот. Остаться императивной макакой и не познать ничего высшего
axios есть там под капотом xhr
еще есть jquerry ну это такое.
еще есть fetch - он нативный и похож на аксиос но не умеет отменять запросы.
>angularJS
>во вьюшке вызываешь метод модели, которая возвращает новый объект, если одно из свойств модели null
>пишешь код
>выкидываешь call to undefined на той строке, где идет вызов метода
>вырезаешь этот код
>все работает
>вставляешь этот же код на это место
>все работает
>пишешь код в другом рандомном месте
>перестает работать
>снова вырезаешь тот код связанный с проблемным местом
>все работает
>вставляешь его обратно на то же место
>все работает
O_o
Вроде уже Array(5) создает неинициализированный массив длины 5, а что делает с ним вызов fill без параметров?
Ну сравни
Array(5).map((i,n) => n) // [empty × 5]
Array(5).fill().map((i,n) => n) // [0, 1, 2, 3, 4]
>Вроде уже Array(5) создает неинициализированный массив длины 5, а что делает с ним вызов fill без параметров?
Инициализирует.
https://jsfiddle.net/k7021tgp/1/
function fn (opts = {
opt1: "1",
opt2: "2",
opt3: "3"
}) {
console.log(opts);
};
fn({opt2: "changed"});
//Нужный результат: Object { opt1: "1", opt2: "changed", opt3: "3" }
Я хочу, чтобы с одной стороны параметры в функцию передавались одним объектом, а не fn (param1 = "1", param2 = "2"...), с другой - чтобы те элементы объекта, которые не указаны, брали значение по-умолчанию.
Это как-нибудь просто можно реализовать? Или скорее
fn (obj) {
...
}
И в теле функции сравнивать переданный объект с какими-то значениями по-умолчанию и те элементы, которые отсутствуют добавлять?
function fn (opts) {
var defaultOpts = {
opt1: "1",
opt2: "2",
opt3: "3"
}
console.log(Object.assign(defaultOpts, opts));
};
fn({opt2: "changed"});
То есть обычно это делается так, да?
Да, я вдоволь поигрался с консолью и мапами.
Что происходит после вызова fill() мне понятно и не требует комментариев — это обычный массив длины 5, заполненный undefined.
Но что за конструкцию тогда возвращает Array(5)? Что есть empty? Пытался смотреть у Кантора, там написано, что по поведению это похоже на объект {length: 5}
Все, я сам сделал.
Сам яваскрипач, работаю путонистом и есть желание в свободное время вкатиться в жаваскрип. Поясните про яваскриптовый пеп, что за миллион ебнутых кофескриптов, в каких проектах по каким правилам на нем принято писать. Ну и какой-нибудь список вопросов - интролдакшн, который должен знать каждый яваскриптовый желторотик, что-нибудь, что обычно нормальные люди спрашивают на собеседованиях.
Интересуюсь всеми направлениями, от ноды до браузерного.
Не могу установить скрипт на Greasemonkey. При попытке установки Мозила открывает его как текстовый файл.
Не подскажите, в чём может быть проблема?
Я наоборот вкатываюсь с JSа в Пайтон.
Нахуя тебе это нужно? Снежинки на сайтах крутить и адаптивные интерфейсы писать?
Какие вопросы на ждуна? Базовые - стандартные. синтакс, типы в js, объектная модель и прототипы, XHR и fetch, управление DOM деревом. ES6 синтакс, популярные методы прототипов Array, String и пр. Но этого все равно мало. Как минимум нужно уметь пользоватья npm/yarn (менеджер зависимостей), вебпаком чтобы собирать весь гавнопроект в работающий минифицированый код. И знать один гавнофреймворк с его окружением. React, Vue, Angular. Первый фейсбука, второй Китайцев, третий - Гугла. У реакта окружение вообще пиздец. react-redux, react-router-redux, react-vv-dragndrop-router-help-me-please и т. д. Там уже начинается функциональщина. Но ты уйдешь обратно на уютный питон раньше чем до этого доберешься, я тебе гарантирую.
Бля, ну я подумал, жыэс же гибкий, накатить пару правил написания кода на нем - и вот тебе путон, да ещё и работающий в браузере. А раз уж такому долбаебу как я пришла эта идея, то уже должно существовать целое комьюнити с интуитивно понятными инструментами разработки на все что можно..
На самом деле я просто тащусь от electron'а, и не собираюсь перепрыгивать с Путина на жс, просто он меня интересует, хочу познакомится поближе как на нем пишут нормальные люди.
Нихуя не понял, но спасибо.
коллективный разум анона уже запилил какую нибудь йобу для подрочить?
>это все прочесть стоит? Чоо?
Вот еще полезные материалы для чтения: http://labor-union.wikia.com/wiki/Lifehacks
По работе программиста в целом. По зарплатам.
>>1092431
>Низкоуровневые Си сейчас редкость и треба забугром
Да.
Чет кекнул с левачества в пасте, впрочем мне, хикке нечего возразить
Ребята, смотрите!
Есть задача:
Установить при помощи JS - TCP-соединение с сервером,
отправить на сервер запрос в виде TCP-пакета,
получить ответный пакет и декодировать инфу внутри него.
Пусть этот пакет содержит в себе JSON-ответ с каким-нибудь читабельным текстом.
Как всё это сделать? Есть примеры?
Вижу есть WebSocket или raw-sockets, для браузеров вот здесь:
https://stackoverflow.com/questions/12407778/connecting-to-tcp-socket-from-browser-using-javascript
что-то типа
>var mySocket = new TCPSocket("127.0.0.1", 6789);
причём на JS.
Но я так понимаю, это специальные протоколы.
А есть реализации всего этого полностью в виде функций внутри JS-скриптов,
которые можно было бы просто подключить к веб-странице в виде src="tcp.js"?
API-сервисы - не предлагать, они централизируют, ведь сервером может быть доступная из Интернета нода сети p2p.
нет, нахуй вяские облаки и прочие злоебучие безмозглые атомы, у меня богоподобный сабляйм
Вот есть у нас куча файлов со строками типа import {something} from '../../../something'
Потом мы собираем проект в один файл и что происходит с этими импортами, ведь все пути, прописанные в from становятся неактуальными? Как вообще происходит это объединение и через какие либы? Есть ли вообще гайд правильной годной сборке проекта инструментами 2017/18?
> Есть ли вообще гайд правильной годной сборке проекта инструментами 2017/18?
да
https://webpack.js.org/configuration/
Да я проспался и понял асинхронность там она ситуативная для кнопочек и прочих ивентов
Math.pow же. Возведение в степень. Добро пожаловать в 2017 год.
копипастил, дальше был закомментированый код, после комментов кавычка есть
две звездочки - возведение в степень, смотрите последние стандарты, сер
почему не работает нашел?
Потому что ты не знаешь или не понимаешь что делает редьюс, пиздуй на лерн джаваскрипт точка ру. Во первых нужно всегда возвращать аккумулятор, во вторых указать аккумулятор первым параметром, в третьих указать после закрывающей } начальное значение аккумулятора.
Указатель на указатель.
Но тем не менее работает, поле len она заполняет нужными значениями вместо 0
>>1094414
Я ничего не понял что ты хотел сказать, но инишиал велью не обязательно указывать, оно 0 по умолчанию, что мне подхдит.
Можешь переписать чтобы заработало и консоль.лог выдавал адекватное значение вместо НаН?
// Set 'n' points with random coordinates.
// All points connecting lines (all with all).
// Find the line length is closest to the average length of all lines.
const task = (n) => {
/
Position your algorithm here
/
// return {
// points: [{x (0), y (0)}, {x (1), y (1)}, ..., {x ( n- 1), y (n-1)}]
// line: {
// start: {x, y} ,
// end: {x, y}
//}
//};
};
Спасибо.
в итоге за 7 часов асилил, творожок в голове после вебинаров для овуляшек хотя бы в порядок привел
все работает только без обертки в функцию, но не работает сетИнтервал, а когда оборачиваешь в функцию уже недокричаться
ну или может потому что функция неименованная в методе объекта ?
Что ты хотел от девелопера соцсетей, где основной контент - смехуечки.
ну в общем вот так, как я не изъебывался сделать рабочий вариант красивее не получается
>Я ничего не понял
Заметно. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce?v=a
https://repl.it/repls/DamagedHoarseBullmastiff
Догадаешься? Нужно удалить 4 символа и дописать 2 (то есть, сделать именно то, о чём анон выше сообщил) и тогда всё заработает.
Алсо, не знаю, как остальные к э
тому относятся, но вот эти функции с побочными эффектами, да ещё и над "глобальным" переменными — это пиздец, ящитаю. Неужели так сложно было добавить вфункцию mkPoints аргумент - arrayToFillWithPoints с более нормальным именем, конечно)? И dotGen чтобы просто возвращал новый, созданный внутри себя массив с этими точками? Я бы поудмал, что это у вас какое-то си-наследие, да вот подозрительно тогда, что ошибку свою найти не смог. Но этот уебанский lineLength даже под эту теорию не подходит, это просто финиш.%%
Бля, с разметкой пребался, звиняйте.
Строку кода экономит, вестимо.
А что, в ЖС значение дефолтных аргументов вычисляется при выполнении, а не объявлении функции?
>x = 5
>function f(a=x){console.log(x)}
>f() // 5
>x = 10
>f() // 10
Меня как питониста это очень удивляет.
ой, там console.log(a) в функции, разумеется.
В js все изъбства с аргументами, не более чем синтаксический сахар.
По факту у тебя
function f(a){ if(a === void null) a = x; console.log(a) }
ну ок ща стр пофикшу
Ева Хуюшан, лол. Напомнило принты Гикбрейнса, там тоже какой-то хач. Я бы проиграл если бы мне соискатель распечатанную такую хуйню принес. Попросил бы решить пару физз-баззов его.
Вымораживает, но привык я к нему...
>JSLint выключи
Тогда он не будет ругаться на стиль. Мне бы его оставить, но чтоб орал по делу...
А конфиг jslint'a он даёт править? Явно же где-то он лежит отдельным файлом. Если да, то почитай доки линта и отключи конкретно этот параметр.
Сразу оба
y = 4*x.toString();
я перепробовал кучу вариантов, но они не один на работают правильно
// let str = Str.replace(/^[\n\r]?[^<].?>(.+)[\n\r]?/g, '[q]$1[/q]');
// let str = Str.replace(/(?:[\n\r]{0,1}.{0,}[^<]?)>(.+)[\n\r]?/g, '[q]$1[/q]');
// let str = Str.replace(/(?:^<.+)>(.+)[\n\r]?/g, '[q]$1[/q]');
Обязательно с вёрстки. Как только коснёшься ЖС, у тебя больше никогда не будет времени на то, чтоб с вёрсткой разбираться. Потом будешь отмазываться, как другие низкоквалифицированные макаки, что ЦСС непонятный и вёрстка для девочек.
Пройди все бесплатные на htmlacademy и w3school , этого достаточно будет.
ок ладно, брекеты, рассеянная креативная гуманитороблядь наконец то догнала
теперь понятно чому пидоры гнойные заминусили на стаке ^_^
если там будут теги например <a>, она будет хавать всё подряд, либо ничего, либо если в тексте будет идти значек >
пасибо, похожее решение, лойс. я в ахуе, с того что я писал полдня, и что там у тебя и в том рабочем примере
используй рекурсивный сет-таймаут, сет-интервал не ок в большинстве случаев https://learn.javascript.ru/settimeout-setinterval
сложна и нахуй нинужно, дрочево блядь
мне всего лишь надо прокинуть говно в див сразу же после загрузки(онлод шлет нахуй) а не ждать секунду пока протикается тварь эта
ааа ну вас нахуй, пизданул 50мс, и даже сотка необламывается
Date это объект, .getSome ее аргумент, который я и хотел няшно положить в переменную, но жс в такое сука ниможит
d = new Date();
h = getHours();
t = d.h;
console.log(t) // SASAi )))
>Неторопливо всё это наверное работает.
Да, ибо там длинные числа в строки и объекты преобразуются
>Благодарю. Я правильно понял, что из коробки только стандартные числа?
Насколько я знаю, BigInteger только для целых чисел юзается:
http://www.javascripter.net/math/calculators/100digitbigintcalculator.htm
А в bcmath можно вроде-бы и числа с точкой длинные использовать.
Но я не видел онлайн калькулятора BCMath на JS.
>.getSome ее аргумент
Во-первых, слово "объект" мужского рода. Во-вторых, это не аргумент, а метод объекта.
В-третьих, "getHours()" исполняет функцию и возвращает результат. Но функции такой нет, поэтому тебя нахуй посылает.
В-четвёртых, ты можешь сделать
>d.h = d.getHours,
>console.log(d.h());
Если тебя так смущают скобочки, то можно, блядь, геттер нахуярить — https://repl.it/repls/GlisteningSlushyArcticseal
В-пятых, ты ебанутый вообще? В чём сакральный смысл менять одно имя на другое?
>но жс в такое сука ниможит
А кто может? Какая-нибудь функциональная поебень? Так тут вам не там.
>d.h = d.getHours,
йо ма факин щиыт, тзис из эвесм, гад блесс ю хоть ты и чмо чсвешное, ДАТА СУКА ОНА МОЯ ПИДР БЛЯДБ
>смысл
в порядке, ну и докучи имея власть совершенно глупо ей не пользоваться
ну учитывая что тут всё объекты, я думал все с наскоку встанет и пойдет, а хуй там плавал, присваивать аргументы со ссылками ну пиздец, вот где нахуй про это написано, ни один картавый хахол на ютубе про это мне не сказал блядь, на стаке хуев все в рот набрали и только двачик по прежнему доставляет ^___^
Ты дебил? Где там у тебя в списке этих "аргументов" есть getHours, getMinutes, UTCTime и т.д.? Аргумент — это то, что в функцию передают. А внутри функции оно уже "параметром" называется, но всем похуй, лишние слова только.
>>1095348
>ну учитывая что тут всё объекты
>ну учитывая что тут всё объекты
Ну так это, ты именно потому и можешь этот метод на другой атрибут повесить, что это объект. Учти, однако, что вызывая d.h() ты вызываешь метод getHours именно у объекта d, а не у того, у кого метод getHours ты "стырил". То есть, x = d.getHours; x() не сработает, или сработает не так, как надо. Чтобы этого избежать, функцию нужно "привязать" к желаемому объекту https://repl.it/repls/BriskIllfatedBellsnake
>x = d.getHours; x()
>не сработает
нихуя ты там заморочился, все релаксни братуха
ну или пока ты на бодряке поясни за лисоебов https://codepen.io/pen/?editors=1010
нахуй они там столько всего нагородили, я блять треть удалил и мне норм
задали дефолт калар инпута в жс, хотя это куда проще сделать в хтмл
прописали були для листнера
создали ДЖВА апдейтора с каким то условием, которое нихуя не работает
ну и использовали какие то пидорские лисьи квериселекторы, нахуй когда проще и понятнее через гэтайди\клдас\хуяс !?!?
>ну или пока ты на бодряке поясни за лисоебов https://codepen.io/pen/?editors=1010
У меня пустой редакто открывается. Уверен, что ссылка правильная?
>нихуя ты там заморочился, все релаксни братуха
Я привык дотошно всё проверять просто. не работать же на работе до обеда, в самом деле.
Зависит от целей.
>ты что ле с сиберии?
Почти, чуть южнее. Недалеко от мавзолея одного коммунистического вождя.
Зато домой скоро, а у москвичей всё только начинается!
А по коду:
> я блять треть удалил и мне норм
Ну так норм же, они показывают возможные свистелки, а ты уж там сам решай, что тебе надо.
>задали дефолт проще сделать в хтмл
Зато вносить измененя проще, ведь этот дефолтный цвет может из какого-нибудь конфига браться. Или зависет от qeury в адресе страницы и т.д.
>прописали були для листнера
Это, конечно, странно. При это не ясно даже, относится ли этот false к useCapture (который так-то 4-ым аргуметом идёт), или-таки options. В любом случае, нахуя передвать и так дефолтное значение я не знаю.
>создали ДЖВА апдейтора
Ну так там же написано, зачем их два.
>которое нихуя не работает
Просто querySelectorAll возвращает NodeList, а не массив, и у него никакого forEach'а нет, нужно было вот так делать - https://codepen.io/anon/pen/POQvKe
Индусы, сэр.
>пидорские лисьи квериселекторы
Да нет, это нормальные современные общие, шоб от jquery люди отказывались В 2018-то.
Хех, а в хроме querySelector().forEach работает, но input эвент не триггерится (поэтому нет этого "превью" с одним параграфом). Ну, а это уже "добро пожаловать в мир веб-разработки", тут на каждом шагу так. К счастью, я просто веселья ради в жс-треде сижу и не являюсь веб-разработчиком, разве что для личных вещей, а то б горело у меня ежедневно.
>Зато домой скоро
накидай что ле фоточек, я тут заметил что когда видишь что то нереально эпичное и охуенное, как раньше в совке, то это 100% сделано в чине, а у нас красиво теперь только под землей делают эх
>тебе надо
что б в двух строчках пример показали так что б я качественно спиздить мог, они же пидорский пример сделоли который к тому же еще и не работает мухаха сука дебилы блядь лисиные и дизайн у них тоже говно, все мельтешит, каша из заспаненых тегов, фу блять фу нахуй, няшный трехколоночный в3 куда пизже
>NodeList, а не массив
ну так у массива же больше фишек
>шоб от jquery животные отказывались
шутник, они ведь нимогут в колтбеки и прерывания
>нужно было вот так
>if (p) {
я как видел это охуительнейшое условие так и вижу, чини еба
>в3 куда пизже
А в интернете некоторые говорят, что как в3 говно и там много чего неправильно написано.
>ну так у массива же больше фишек
Ну это уже не ко мне вопросы, так зделоли. В хроме у NodeList'а есть forEach. Возможно, у меня просто устаревший фф (47) и потому там и не работает.
>я как видел это охуительнейшое условие так и вижу, чини еба
А что с этим условием не так-то? Если на странице нет параграфов, то querySelector вернёт undefined попытки присовить этому андефайнду цвет не произойдёт. Я там вторую функцию же чинил.
А первое событие в хроме вызывается одновременно со вторым, а не во время изменения цвета во всплывающем окошке, ничего не поделаешь.
>>1095409
Это типа с момента просыпания? Не стоит так себя утруждать, зачем же.
А фоточек под рукой особо нет, к сожалению.
Для этого сравниваем Х и Y координаты противоположных сторон.
rect1.x + rect1.size > rect2.x &&
rect1.x < rect2.x + rect2.size &&
rect1.y + rect1.size > rect2.y &&
rect1.y < rect2.y + rect2.size &&
Столкнулся с этим в чужом коде, также приходил к такому же решению, сталкиваясь с такой задачей.
Вопрос: Как это понять?
Я понимаю что при выполнении этих условий мы узнаем, столкнулись они или нет, но как понять это на интуитивном уровне? Для меня это как формула, которую я могу применить, но могу осмыслить. Но она простая и я не могу успокоиться.
Выручи, анон.
Для меня это как формула, которую я могу применить, но не могу осмыслить
фикс
Пробовал разными способами визуализировать, но не помогло.
Мне кажется, стоило бы пару веще местами понять, тогда бы проще пошло.
>rect2.x < rect1.x + rect1.size &&
>rect1.x < rect2.x + rect2.size &&
Фактически проверяет, находится ли координаты х обоих квадратов между двумя точками, ограниченными их сторонами.
То есть, если условие в первой строке выполнилась, то rect2 точно не выше первого. Соответственно, то же самое и про вторую. А если они оба не выше друг друга (низ одного из них не выше верха другого), значит они столкнулись (по оси x). Точно так же вторая пара по другой оси.
>ничего не поделаешь
кек а ведь и вправду в лисе работает, но зависимость энивей уебанская, ты либо меняешь то что надо, либо ничего не меняешь, вот тут охуенные примеры и код опрятнее http://jscolor.com/examples/
я вообще не понимаю, хуле они сука голову то ебут, все пиздят ядро у вебкита, и с плюшками и плясками потом пытаются впарить, ну так а ломать то зачем блядь если до вас уже все сделали!? просто следуйте стандартам, за вас ведь уже все подумали ну
ололо на пике сука
https://youtu.be/txZq7Laz7_4
Левого верхнего угла, наверное. Или нижнего. Смотря в какую сторону ось направлена. Обычно коробочки задают 4-мя параметрами же: (x, y, width, height), ну а квадрат можно и тремя.
>>1095608
Но ведь в данном случае одно и то же, не? В любом случае то предложение и так, и сяк корявое получается, да ещё и не совсем верно суть отражает, в отличие от дальнейшего объяснения.
>Левого верхнего угла, наверное. Или нижнего
Так верхнего или нижнего? Пытаюсь свизуалировать.
>не?
соединенные точки в пространстве образуют грани, у них нет сторон пока они не образуют трехмерный объект (куб)
Ну пусть будет нижний будет.
>>1095639
>образуют грани
Нет же, грани — это как раз и есть то, чего у куба 6 штук. http://present5.com/presentforday2/20161218/kub_images/kub_5.jpg
Но в 2д ребро и сторона равнозначны же.
http://gramota.ru/slovari/dic/?word=сторона
>7. Матем. Отрезок прямой линии, ограничивающий геометрическую фигуру. Равенство сторон в прямоугольном треугольнике. Стороны многоугольника. С. квадрата.
картинка пиздец,
квадраты куба != грани, блядь, а сука полики(фейсы нахуй)
стороны квадратов = ребра, ну т.е ты соображаешь да?
сторона квадрата это так уебаны говорят, и для них пояснение типа это — рёёёбра блеадь
и уж если речь за сридешечку пошла, то какие нахуй нижний верхний, есть нормали у вершин, но т.к это квадрат, то и будет апроксимация до ГРАНЕЙ, так что это как UV пространство, высота по х, ширина по у
>и уж если речь за сридешечку пошла, то какие нахуй нижний верхний
Блядь, хули ты доебался, это ты куб выдумал, изначально только о двумерном пространстве шла. Иди нахуй, короче.
>квадраты куба != грани, блядь,
https://ru.wikipedia.org/wiki/Ребро_(геометрия)
>В трёхмерных многогранниках и в многогранниках большей размерности ребро — это отрезок, общий для двух граней[3].
https://ru.wikipedia.org/wiki/Многогранник
>Эти многоугольники называются гранями, их стороны — рёбрами, а их вершины — вершинами многогранника[1].
Да, "ребро" правильнее, но "сторона квадрата" указывает именно на ту же самую часть. ЕЩё разок нахуй пройди, я спать.
И вот, последнее из того же абзаца
>В многоугольниках ребро является отрезком, лежащим на границе[2] и чаще называется стороной многоугольника.
Конечно, можно аргументровать тем, что большинство людей уебаны, и именно пэтому чаще так называется, но нет.
1. В среднесрочной перспективе это самая популярная область для вкатывания. Типичный "телезритель ВКонтакта и Одноклассников", решивший стать программистом, не пойдет месить спринги в NetBeans IDE, писать логику обработки данных на R, мигать светодиодами на SoC или причесывать аппликативные функторы с монадами. Он откроет в соседней с "Одноклассниками" вкладке браузера какой-нибудь нагугленный сайт и почитает про программирование, после чего заглянет в исходный код страницы, начнет изучать верстку, стили и так далее. Что это значит? А то, что конкурентов будет вагон. И не обязательно тот самый "телезритель ВКонтакта и Одноклассников" окажется глупцом. Может быть, он хорошо изучит тему.
2. Как хорошо сказал один анон, есть логически выводимые знания, а есть - талмудические. Так вот, расчет изменения окна перегрузки в TCP для конкретных сетей - логические знания, а весь Web - талмудизм. Знание о том, как сделать конкретную вещь работающей в 7 различных браузерах (умножить на 10 версий каждого браузера), используя пять CSS-хаков, вендор-префиксы и пару небольших скриптов-затычек, - это талмудизм. Обойтись без талмудизма вы не сможете. Есть стандарты на языки и технологии, но нет ни стандарта на рендеринг, ни стандарта на браузер, ни единого мирового стандарта на взаимодействие с сайтом на разных платформах и устройствах, ни стандарта на варианты настроек браузера / хинтинг / сглаживание / subpixel rendering. Более того, браузеры очень активно развиваются и постоянно обновляются, в них бывают баги.
3. Фраза "Ничто не истина, все дозволено" - это про Web. Если к разработке, связанной с middleware или ОС, применима фраза "Практически любой каприз за ваши деньги", то к фронт-эндам применима фраза "Абсолютно любой каприз за ваши деньги и вот еще бесплатно с горочкой". Короче, клиент всегда прав, любые хотелки обязательно надо реализовать, мы за ценой не постоим (даже если будем работать 15 часов подряд, а заплатят нам за 8). И если в других областях клиент или сам является бывшим инженером, или тактично не лезет в разработку, то здесь клиент будет очень активно вмешиваться, постоянно желая разного, а программиста он будет воспринимать, как дизайнера. Здесь как нигде популярна Agile-методология с еженедельно растущим техническим долгом, постоянными изменениями и новыми идеями, отсутствием плана, частыми релизами и отсутствием четких контрактных требований для каждой фазы проекта (вследствие чего программиста всегда можно будет обвинить, вынудить перерабатывать или немножко поработать задаром). Клиент видит только UI, поэтому ему будет сложно объяснить необходимость тратить деньги и время на технический долг. Некоторые клиенты могут даже заставлять использовать облачные IDE на JavaScript внутри браузера, чтобы следить за ходом разработки, править что-то (что они не совсем понимают) и даже раздавать ценные указания в real-time.
4. Web-разработка - постоянная гонка, забег на дистанцию, и въедливость с учетом всех возможных комбинаций тут не приветствуется. Не используются ни средства проверки моделей, ни доказательства теорем, ни иные методики верификации. Не используется даже покрытие кода юнит-тестами или въедливое ревью чужого или своего кода. Вместо этого используются обычные тестировщики, которые комбинаторно все во всех версиях и семействах браузеров прокликивают и проверяют. Если вам не дали тестировщика, то все это придется делать вам (или же просить заказчика все-таки взять на проект одного или двух тестировщиков). Постоянное совмещение в себе двух ролей - разработчика и QA - сможет довести вас до нервного срыва, поэтому лучше выбирать строго одну роль, одну из.
Вывод: front-end-разработка - тяжкий труд. Не входите в айти.
1. В среднесрочной перспективе это самая популярная область для вкатывания. Типичный "телезритель ВКонтакта и Одноклассников", решивший стать программистом, не пойдет месить спринги в NetBeans IDE, писать логику обработки данных на R, мигать светодиодами на SoC или причесывать аппликативные функторы с монадами. Он откроет в соседней с "Одноклассниками" вкладке браузера какой-нибудь нагугленный сайт и почитает про программирование, после чего заглянет в исходный код страницы, начнет изучать верстку, стили и так далее. Что это значит? А то, что конкурентов будет вагон. И не обязательно тот самый "телезритель ВКонтакта и Одноклассников" окажется глупцом. Может быть, он хорошо изучит тему.
2. Как хорошо сказал один анон, есть логически выводимые знания, а есть - талмудические. Так вот, расчет изменения окна перегрузки в TCP для конкретных сетей - логические знания, а весь Web - талмудизм. Знание о том, как сделать конкретную вещь работающей в 7 различных браузерах (умножить на 10 версий каждого браузера), используя пять CSS-хаков, вендор-префиксы и пару небольших скриптов-затычек, - это талмудизм. Обойтись без талмудизма вы не сможете. Есть стандарты на языки и технологии, но нет ни стандарта на рендеринг, ни стандарта на браузер, ни единого мирового стандарта на взаимодействие с сайтом на разных платформах и устройствах, ни стандарта на варианты настроек браузера / хинтинг / сглаживание / subpixel rendering. Более того, браузеры очень активно развиваются и постоянно обновляются, в них бывают баги.
3. Фраза "Ничто не истина, все дозволено" - это про Web. Если к разработке, связанной с middleware или ОС, применима фраза "Практически любой каприз за ваши деньги", то к фронт-эндам применима фраза "Абсолютно любой каприз за ваши деньги и вот еще бесплатно с горочкой". Короче, клиент всегда прав, любые хотелки обязательно надо реализовать, мы за ценой не постоим (даже если будем работать 15 часов подряд, а заплатят нам за 8). И если в других областях клиент или сам является бывшим инженером, или тактично не лезет в разработку, то здесь клиент будет очень активно вмешиваться, постоянно желая разного, а программиста он будет воспринимать, как дизайнера. Здесь как нигде популярна Agile-методология с еженедельно растущим техническим долгом, постоянными изменениями и новыми идеями, отсутствием плана, частыми релизами и отсутствием четких контрактных требований для каждой фазы проекта (вследствие чего программиста всегда можно будет обвинить, вынудить перерабатывать или немножко поработать задаром). Клиент видит только UI, поэтому ему будет сложно объяснить необходимость тратить деньги и время на технический долг. Некоторые клиенты могут даже заставлять использовать облачные IDE на JavaScript внутри браузера, чтобы следить за ходом разработки, править что-то (что они не совсем понимают) и даже раздавать ценные указания в real-time.
4. Web-разработка - постоянная гонка, забег на дистанцию, и въедливость с учетом всех возможных комбинаций тут не приветствуется. Не используются ни средства проверки моделей, ни доказательства теорем, ни иные методики верификации. Не используется даже покрытие кода юнит-тестами или въедливое ревью чужого или своего кода. Вместо этого используются обычные тестировщики, которые комбинаторно все во всех версиях и семействах браузеров прокликивают и проверяют. Если вам не дали тестировщика, то все это придется делать вам (или же просить заказчика все-таки взять на проект одного или двух тестировщиков). Постоянное совмещение в себе двух ролей - разработчика и QA - сможет довести вас до нервного срыва, поэтому лучше выбирать строго одну роль, одну из.
Вывод: front-end-разработка - тяжкий труд. Не входите в айти.
В сторе хранится объект с древовидной структурой (n-уровневой), и нужно написать компонент, с помощью которого можно было бы эту хрень редактировать.
Типо в колонку выводится инпуты с названием первых уровней, при нажатии на каждый уровень раскрывается второй и.т.д.
При этом нужно редактировать прямо сразу, т.е. нажал на элемент, появилась форма редактирования не катит.
Собственно вопрос в том, как связать каждый инпут элемента с мутацией хранилища?
Ибо если просто генерировать инпуты через v-for и связывать их через v-model с элементами массива, vuex начинает ругаться, что изменение происходит не через мутацию.
Вопрос номер два, нужно сделать откат изменений. Думал при создании компонента копировать объекты в локальной переменной и потом при нажатии "Отменить" этот объект записывать обратно в хранилище.
Вопрос номер три. Как подписаться на обновление/получение данных нормально. Сейчас приходится городить вот так
>this.tables = JSON.parse(JSON.stringify(this.$store.state['CONFIG'].tables));
this.$store.subscribe((mutation) => {
if (mutation.type === mutationTypes.RECEIVE_TABLES){
this.tables = JSON.parse(JSON.stringify(mutation.payload));
}
});
Т.к. если просто брать из хранилища, то этого объекта там может еще и не быть, а если подписываться, то хз почему, но при повторной инициализации компонента подписка еще раз не срабатывает
с материалом http://blendermada.com/materials/detail/78-gold/
с помощью официального аддона https://github.com/mrdoob/three.js/tree/dev/utils/exporters/blender преобразовываю все это в json и подгружаю в сцену
https://jsfiddle.net/woje2k1f/
на выходе получаю пик2
ЧЯДНТ?
дорендерил
подумал что может проблема в отсутсвии света, добавил
https://threejs.org/docs/index.html#api/lights/AmbientLight
заменил материал на более отчетливый.
Стало еще хуже лол
Пиши на чистом three.js
Выброси блендер, че не как олдфаг.
Мимо интересовался этим но дропнул, т.к. задачи весьма специфичные и по рынку тяжело с этим, обычно это магазины мебели/продажи элитных квартир
svg тоже не в иллюстраторе делаешь а ручками пишешь?
по рынку тяжело с этим
webVR на подходе жи
угадал?))))
https://github.com/flagxor/spec/blob/jsdom/proposals/jsdom/Overview.md
>>Ну и зачем я сюда постоянно захожу? Чтобы заразиться от вас дизморалью?
Js сейчас нужен и будет нужен еще долго. Необходимо будет как минимум поддерживать старый код. А эти ваши новые техгологии... Мы же кодить учимся. Со знанием js, сетей, всего вот этого, можно пересесть на другой стел. Плюс за нами еще верстка.
Кончайте истерить по любому поводу
Lel. Типичный жс-даун это макака выучившая 5000 правил, как формочку рисовать в версии огнелиса 13.563.4 с багом и прочими полезными данными, куда она перекатится? Для нее что компьютер, что браузер это непонятные черные коробки, которые хуй знает как работают внутри, они просто пишут конфиги с ебанутыми правилами, кои имеют ".js" в конце имени и по недоразумению эта хуйня называется программированием
http://dmitrysoshnikov.com/ecmascript/javascript-the-core-2nd-edition/
То, что мне нужно, частично реализовано в ImmutableJS реализации Record.
Проблема recorda в том, что в структуре, наподобие {a: {b: someValue}}, изменяемо значение 'a' на произвольное (даже если "{b: someValue}" это инстанс record'a), а нужно, чтобы в подобной структуре можно было бы менять значение только по пути ['a', 'b'].
Нужно самому через сеттеры хуярить проверки?
Так чтобы все само работало вряд ли подойдет, но как минимум автоматизирует проверки https://github.com/gcanti/tcomb
Не тот анон, но похоже на one dark pro VScode
enki alt (от base16 но это не точно), за редактор спрашивать глупо, только если ты не любитель вебкитопарашы на полгига страница
Прокси
Чтобы не ебаться вручную со всеми этими охуительными айфонами и прочими интернет эксплорерами.
энивей какой вариант наиболее бест практис?
Учитывая, что kA можно заменить на " = 5", а разница между boD и shVo в наличии и отсутствии дефолтных аргументов, вопрос нужно перефразировать. Разве что "точно не третий" можно с уверенностью сказать.
>можно заменить
чому, мне же посчитать надо а не задать
>kA = () => (x=1)/(y=2)-(z=3);
>console.log(kA());
вот так будет удобно, анонимно, хорошо
вопрос в том что является общепринятой практикой оформления выражений и стейтментс(как они там по-русски)
Почему нет единого фронтенд треда? А то приходится растекаться по двум разделам.
Привет, погромисты!
Хочу вкатиться, для начала просто до уровня "я что-то в этом понимаю", а потом, быть может, и посерьезнее взяться за программирование, если хорошо пойдет.
Но вот вопрос - с какого языка начать? Думаю между JS и C++ как самыми ходовыми и распространенными, но сам решить не могу. Помогите с выбором, что ли. Какие плюсы, минусы, где используется и какие перспективы. С меня как обычно.
кароче как я понял положняк такой
функция-нейм = аргументы которые потом можно поломать и позвать => какая то математика;
метод-нейм(фн-нейм())
верно?
>>1096498
кресты нинужны, есть лапша и ее нативизатор игровой движок как ты уже понял есть всего один с достаточной для любого васька производительностью
ж.скрипт же просто божественнен, самый кайф что он един, перед зад мобайл десктоп стиральная машина, одномоментный деплой твоего скрипто-говна на все электроприборы нахуй, ничего лучше уже нельзя придумать
>метод-нейм(фн-нейм())
У тебя каша в голове.
Ты пытаешься понять, что такое алфавит, изучая пунктуацию.
ну так мы институтов не кончали, а нормальной инфы поясняющей за ноубрейн вопросы типа зачем функцию пихать в переменную, когда ее можно позвать саму, я не нашел
>метод-нейм(фн-нейм())
Это ещё что такое? Сходи про функции, что ли, почитай, ты что-то совсем мудришь и непонятно на чём основываясь сам догадаться хочешь, по-моему.
>чому, мне же посчитать надо а не задать
Ну можешь kA = () => 5 сделать. Суть в том, что функция kA у тебя всегда возвращала 5.
> практикой оформления выражений и стейтментс(как они там по-русски)
ээ, какого ещё оформления? И как это к твоему примеру вообще относится? У вас какой-то поддельный словарь определений, мне кажется.
>зачем функцию пихать в переменную
Чтобы была возможность её вызвать, например?
>function x(){}
>z = x
Так никто не делает. Нет, могут, конечно, быть причины вроде желания временно использовать более короткое имя или обезопасить себя от переопределения, но это явно не стандартное поведение.
Если ты хотел спросить про разницу
>function x(){}
и
>x = function(){}
, то вот —https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/
>doIt() нельзя позвать?
Я уже написал, что в общем случае вместое doIt() никто не будет делать x = doIt; x(). Поэтому ты либо приведи пример, где "функцию пихают в переменную", чтобы можно было что-то вменяемое ответить, либо спроси у >>1095348, он так делал (хотя это ведь ты же и есть, лол).
>>1096537
>не копипастить же листинги из книжек
Зачем листинги копипиастить. Можно попробовать прочитать что-то, определения и описания какие-то, да хоть туториал пройти, и на примере уже всё понять. А тубе ястранный путь: написать хрень, а потом спрашивать, что это за хрень, и читать наши ответы. Всё равно ж в итоге не целиком сам к ответу приходишь.
>хотя это ведь ты же и есть, лол
:3 и я до сих пор кайфую от аэстетики решения и пособилити как таковой
>не целиком сам к ответу приходишь
ну творожок хотя бы чуть-чуть задействую, как вытащить часы из даты я забрутфорсил за 5 часов после чтения в3 по диагонали, но зато информация усвоилась
будь благодарен аллаху за такую мелкую хуйню, а не нужду изучать целую сука новую хуйню
Есть ли вообще в js, а конкретно Angular 2, какие нибудь службы тайминга или что-то типо того? В какую сторону гуглить, а то нихуа найти не могу.
Ну удачи, лол, когда через три года любая стремная баба будет знать синтаксис жс, как и ты.
Слышал это 10 лет назад.
Первый вариант. Второй вариант это тот же первый только ты еще устанавливаешь некоторые значения по умолчанию. Если положить в аргументы при вызове функции другие значения - то дефолтные перезапишутся. Третий - хуйня какая-то. Эта функция не делает ничего кроме как возвращает шесть.
Интуитивно мне кажется, что сочетать map и Object.assign как-то не очень круто, т.к Object.assign портит первый аргумент, а значит не очень годится для ф-ых конструкций.
Императивный вариант с for прошу не предлагать, так даже моя бабушка напишет.
Пиздец, ты хоть читай, что пишешь, если тебе надо ПОМЕНЯТЬ поле во всех объектах тебя вообще чистота не должна ебать.
Хотя можешь как даун выше копировать объект и срать в нем ( ток потом чем тормозит, михалыч)
>Есть массив объектов, в каждом сотня полей. Нужно поменять одно (известное) поле в каждом объекте из массива. Как бы это записать поизящнее?
В описании задачи нет ни слова про иммутабельность.
Жизнь ворам, хуй мусорам.
из браузера нет. что тебе не ясно, везде же написано.
А второе что?
https://repl.it/repls/CheeryIdleSteer
>>1096694
arr.map(o => {let x = deepCopy(o); x.filed = value; return x});
deepCopy где-нибудь найди или сделай сам.
>/ru/
ну спасибо тебе браток нет честно спасибо
>ничего кроме как возвращает шесть
наркоман штоолесука?
Во первых не нужно двойной assign. Object.assign идеально подходит для иммутабельного изменения, главное помнить, что количество аргументов может быть любым, а первый аргумент — пустой объект
newarr = arr.map(o => Object.assign({}, o, {x: o.x * 2})
>Важный и сложный вопрос
>0 ответов
>Дващ, как скопировать объект?
>20 ответов про одно и тоже
скобку забыл, но не важно.
Советованный deepClone стоит брать только если остальной код жутко императивный и хаотичный.
Для белых же господ есть ramda.assoc и любая библиотека линз.
Что значит службы тайминга? Для работы со временем рекомендую лично использовать только rxjs
туда ли ты зашел петушок?
ты как всегда ошибся
Например ОСНОВЫ JavaScript. Глава рекурсия. Что делать если нихуя не понял? Идти дальше?
Идти нахуй
да забей, нормальные программисты не используют рекурсию, они циклятнаверня неделю назад прочел эту главу. Вообще по-моему всю эту фигню достаточно пролистать, чтобы знать что она есть. Просто пиши код, а теория приложится
>Предложите общее решение, которое позволит вызывать любую функцию не чаще N раз в секунду, даже если её вызов происходит чаще.
вставить интервал не?
GIL уже победил, питонобог?
Лол. Ну и что у тебя будет. если я далее в той же области видимости переопределю переменную timer?
ок, если писать всё при 'use strict'. а так да, ты прав, поэтому чтобы не было конфликта, лучше сделать const imer
Потому что он появился намного позднее, чем JS.
Если его сделать по умолчанию, сломается куча легаси кода. Почему по-твоему по умолчанию нельзя запретить использование var?
У меня есть input
и есть параметр передающийся в get-запросе.
Как заполнить input этим параметром на JS?
Всё, нашёл.
... var parameter = "значение";
<input id="input" type="text">
<script>
var elem = document.getElementById('input');
elem.setAttribute('value', parameter);
</script>
Нет, генераторы зависят от итераторов, но не наоборот. Итераторы — это классический ооп-паттерн и им не нужны такие странные фичи, как генераторы.
Судя по всему кроме как для временной имитации async/await никто не придумал как их использовать.
> Судя по всему кроме как для временной имитации async/await никто не придумал как их использовать.
NYET. С генераторами, например, можно юзать ленивые вычисления.
Их и без генераторов можно. Например прокси.
тут анон говорит, что с помощью генератора можно останавливать рекурсию https://www.reddit.com/r/javascript/comments/5ifxk4/practical_use_case_for_a_generator/
внезапно, это довольно полезно, чтобы не блокировать какой-то долгой рекурсией всё приложение
Посмотри на ту же тему в другом исполнении. Благо примеров тысячи ибо джаваскрипт идеален для приучения быдла к функциональщине.
Угнетающий английским пример https://www.youtube.com/watch?v=k7-N8R0-KY4&list=PL0zVEGEvSaeEd9hlmCXrk5yUyqUag-n84&index=7
У ВК некоторое время назад сменилось шифрование прямой ссылки на аудиозапись. Нашел на этом форуме новый дешифратор прямой ссылки. Но если брать ссылку из ВК, то он возвращает ее же без дешифровкистарый дешифратор теперь возвращает полную хуйню. набор символов, а не ссылку
вот его код: https://pastebin.com/vvmpKjdw
С ссылками, которые приводились в пример к другим дешифраторам и которые я нашел в интернете он справляется хорошо. Возвращает ссылку типа https://...mp3, но если я сам возьму из HTML кода (или даже через пост запрос к al_audio.php) зашифрованную ссылку типа audio_api_unavailable, то он возвращает ее же.
скриншот консоли пикрелейтед
первый вариант - с той ссылкой, которую я сам взял из HTML разметки ВК
https://vk.com/mp3/audio_api_unavailable.mp3?extra=Adu4mwuXyuPJwfLOqL0WrtfLEdKYBK8XsOfjs10WCgeZy10Ol2eOChz4AOiYvxnIwsOTBI8OnKnbp2qZounYDs44 qNDplxfTDM5Rq2O5lJvLrJGOl3KXDeXOq3bUEM5iuJPyB2q5s1a4BvDYow9jAee1zeG1vJfhA3bJlvvnyLCYAuzZsMjeog1KnKqXthzXwveTyNbwDgD5ovDN x3GOudnJr29on3LSlufSrvzpBxnum2mOnejpq2uOwNPjwdyTl249BMuUEtC#AqS1nZC
второй вариант - с той ссылкой, которую приводили как пример для других дешифраторов
https:\/\/vk.com\/mp3\/audio_api_unavailable.mp3?extra=jtK5pt53yMiUpN5GFJT5yZSMyc4Pi2mJkdLIpxX8yN51Ex98FhH5Dh1OFhL8yYa9FNi0ntK\/lhaInY0CFdL5hcGVpdK3obWxFY9\/lJX1oZOjkX85bYrGgHG+FN54jquPlGn1hbuElcCddJ0gptCbDbqDFrizkH0mixuioYT6jW4FiZT4pauiybKViJW7E3W\/hxGSEYb\/isyEiNGKEZP+nZqzgYW5FIiogGumldCunXS7kX0hhZWvd2aPlaiFaqjG#DGL4cOOjDG
Интересует не просто "азаза фп-стайл над массивами-мап-редьюс и карринг", а подход к написанию кода в соответствии со спекой, например, Fantasy-Land.
Суть - есть код, реализующий линейную логику в духе чистой императивщины, в котором слишком много iffy лапши. Хочу переписать с использованием Maybe монад, например.
Поверхностное представление есть, код уже разбил на чанки, стараясь максимально изолировать от внешнего окружения, и обернул в отдельные loop/map/reduce шаги в mostjs (код циклически выполняется), но все это хуйня.
Конечно, со временем разберусь сам, но буду благодарен за любые гайды, помогающие перенести код с императивного стиля в функциональный, там, где это можно.
Вопрос: как это монетизировать?
Раньше пробавлялся всякими мелкими фриланс-заказами на пхп, потом отошел от ойти (хотя по фану продолжал пилить пет прожекты и мониторить чотам нового в вебе), сейчас опять решил вернуться.
>> для приучения быдла к функциональщине
> чому?
Тому что самый популярный язык, основанный на лямбда счислении. К тому же с самого начала заставляет использовать функции высшего порядка (то, что быдло называет коллбэками).
Быдло конечно жалуется, но учиться не хочет, а ведь проблемы с коллбэками были решены еще в 90-ых в хаскелле и Scheme мамке JS'а
Может проблема в том, что я пишу на Ангуляре и тут локальные картинки как-то иначе подтягиваются? В любом случае, мне постоянно пишет GET http:/localhost:4200/1.jpg 404 - not found.
>http:/localhost:4200/1.jpg 404 - not found.
Так а сервер у тебя что? Нода, Апач, Нгникс? Ну так это он тебе статику не отдает?
Если да то объясните как
Хотет фрилансить, как начать фрилансить фуллтайм?
Ок, а как еще сделать чтобы этот же метод возвращал не просто новый инстанс, а обьект с полями, значения которых расчитываются из параметров при вызове этого метода?
Там с контруктором были проблемы, я его не создал, поля возвращемого обьекта генерились в самом методе
Мимо заносчивый жун.
>А че с нодой?
Нода единственная хуйня которое позволяет рендерить жабаскрипт на сервере. Т.е. если ты мой дорогой заносчивый июнь слышал про SSR, React, Vue. Должен понимать что эта параша плохо индексируется поисковиками. Это можно исправить отдавая разметку сервером ноды по прямому urlу. Прямо как пи эйч пи, ага. Вот прямо сейчас мы не можем найти специалиста который мог бы в SSR. Кругом одни июни. Так что - учи.
Элиот про всякое такое пишет:
https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4
https://medium.com/@_ericelliott/latest
Там у него серии статей про композицию и прочие дела. Полистай.
Его же книга про приложения с элементами функциональщины, из далёкого 2014г.:
http://chimera.labs.oreilly.com/books/1234000000262/index.html
Если хочешь упороться, в сторону Элм смотри:
http://elm-lang.org/
https://www.youtube.com/watch?v=aNour03V98E
Ну а как ты сделаешь SPA на реакте нормально индексируемое яндексом. Давай расскажи мне охуенные истории. Бизнесу похуй на перезагрузку страниц - им главное чтобы в топе их сайт висел и клиенты шли.
>не можем найти специалиста который мог бы в SSR
Хуйли там не мочь-то ёпта бля, в деревне что ли какой ищете?
Алсо, СПА нормально индексятся, по крайней мере гуглом. А будут еще лучше, поисковики подстраиваются под РЫНОЧЕК.
Поясните, почему некоторые из перечисленных автором "falsy" values дают при сравнении с false собственно false?
https://github.com/getify/You-Dont-Know-JS/blob/master/up & going/ch2.md
Object.assign(new this, {your: object, generated: fields})
читаем стандарт.
null и undefined равны только друг другу
NaN не равен вообще ничему, любое сравнение с его участием это false
С++ разве что в универах самый ходовой. После паскаля, лол. Поправьте меня, если не так, потому что я вот прям даже уверен, что несмотря на всю ироничность заявления, это нихуя не шутка.
>>1097896
Спасибо за рекомендации, начал погружение.
>>1097853
>Если хочешь упороться, в сторону Элм смотри
Elm годная штука, да, но для фронта.
Мне функциональщина нужна на ноде для специфических применений для управления техпроцессом, BA DUM TSSS.
В свете почившей в бозе 'ramda-fantasy' буду использовать либу Sanctuary.
Ну, на крестах еще любят олимпиады писать.
Хотя у С++, как и у любого другого языка, есть своя ниша, но его доля на рынке ежегодно сокращается, несмотря на развитие языка.
>Олимпиады.
Да там дрочильня ради дрочильни и медалек.
Просто код скомпилированный на плюсах реально летает, в отличии от тех же питонов/ноды
Другое дело, что рынку мало нужно производить сложных вычислений. В основе своей рынку нужны веб-сайты продающие товар и армия людей пишущих на жабаскрипте и любом бекенд языке.
захожу в другой юзер, тоже устанавливаю вебпак и начинаю вылавливать ошибки webpack ot found
что за хуйня?? приходится переключаться на другого юзера, чтобы собрать проект вебпаком. кэши нпм чистил делал все советы со стаковерфлоу.
папка xammp, где лежат мои проекты общая для двух юзеров.
бляять, надо теперь его удалять глобально? или можно еще раз попробовать локал депенденси накатить на другом юзере?
Как же хочется поскорее изучить верстку и закатиться к вам в тредик - к белым людям. Буду потом называть себя Погромистом с большой буквы.
Хаскель - бояре и C++ олимпиадники же!
> прототипное наследование
А это по-твоему не ООП?
>нагородили всякого говна типа классов
они там были с самого начала. и весь синтаксический сахар, что ввели теперь ничего не изменил
Об этом я и говорю — быдло не хочет учиться и делает все максимально примитивным образом
Классов с точки зрения семантики нет. Только в пределах оптимизаций v8. В JS прототипное бесклассовое ООП
Классов нет с точки зрения того, что ты привык считать классами.
instanceof для себя открой.
а как нада?
>делает все максимально примитивным образом
любой нормальный человек тащемта, если ты не думаешь о сохранении энергии и дрочешь хуйню вместо короткого ПРОСТО РАБОТАЮЩЕГО решения — ты дефективный
Ты че, попаданец в будущее? Уже восьмой или девятый вышел, а сайт кантора сильно устарел.
Может ты всю программу пишешь в main процедуре? Самое короткое и работающее решение. Зачем нам классы?
!! Перед левым выражением ставь, и будет тебе счастье
Не надо удалять глобально, просто в package.json его пропиши и npm i сделай
Промис. Пофиксил тебя
А где отдельный тред для HotSpot?
Очевидно, сконвертировать значение каждого байта в строку битов. Вывести на экран или сложить все строки и потом вывести разом.
https://repl.it/repls/PapayawhipRevolvingCoelacanth
Вот, например, ванлайнер, конвертирующий 2хбайтовый буфер (регистры modbus) в строку с битовыми значениями.
Дальше сам разберешься.
https://pastebin.com/wfePryKQ
В консоль последней строкой выводит текст моей txt-шки в обычном буквенном формате. Что я делаю не так?
>Что я делаю не так?
Во-первых, используешь синхронные операции чтения файлов при запросах от пользователей. Спишем на желание просто быстро накалякать и протестировать.
>fs.readFileSync('readme.txt', 'utf-8');
Во-вторых, ты прочитал текст файла. Всё, у тебя текст в переменной, а не байтовое представление файла.
> arr.push(text)
В-третьих, у тебя массив из одного элемета. reduce вообще ничего не делает (в прямом смысле, он даже не пытается выполнить переданную функцию) и сразу этот же элемент и возвращает.
Так что, смотри, как прочитать файл в бинарном режиме, а затем воспользуйся скриншотом >>1098637.
Тебе 50+?
Там не отвечает никто. Помогите, пожалуйста. Если можно изменить курсор джиэсом - тоже хорошо, мне любой способ подойдет.
Хочу обратиться с вопросом - как дальше развиваться? Посоветуйте пожалуйста литературы для опытных работяг, так чтоб как раньше - прочел и просветлился. Ну и просто хороших годных книг, которые как вам кажется, положительно повлияли на качество вашего кода.
Также интересно, в сторону каких языков/технологий смотреть с перспективой когда-то выкатится из жс.
Анон, как этот жс подгружает контент динамически? Вернее как мне этот контент, который подгружен динамически, скопировать в txt и спокойно спарсить нужное? Вот беру я группу вк, делаю соответствующий отбор, скролю до конца вниз, пытаюсь открыть исходный код - но там нет ссылок на пользователей :с
Не проигрывайте с меня сильно, я нуб
> Также интересно, в сторону каких языков/технологий смотреть с перспективой когда-то выкатится из жс.
Elixir/Phoenix
А почему ты думаешь, что они внизу должны быть? У тебя там есть такой замечаельный инструмент на панели, как стрелочка (в левом верхнем углу панели с кодом). Тыкаешь на неё, наводишь на элемент и, о чудо, выделяется хтмл код, ответственный за этот элемент.
Я уже сказал, что эти значения РАБОТАЮТ. Очевидно, я их уже попробовал и знаком с ними. Проблема в том чтобю поставить картинку. Только что поменял файл с расширением .ПНГ и прозрачным фоном на ссаный .бмп с непрозрачным фоном - заработало! Наверное, какие-то ебанутые несовместимости с типами файлов. Буду экспериментировать. На размер файла ему, похоже, насрать, вышло даже огромную картинку прицепить.
https://codepen.io/anon/pen/WXgxJg
Браузере просто игнорируют большие картинки. В новых работает до 128х128. В старых до 32х32 и только .ico
Есть вариант делать кастомное любого размера на ЖС. Но кастомное это всегда хреновый вариант, потому что ты в одиночку никогда не сможешь учесть всего.
тому шо нгулур для белых корпоративных воротняков, в то время как реакт модный молодежный стартаперский, это две совершенно разных вселенных, в которых обидают два совершенно разных вида людей
ну и да, первым проектом — соиалочка, моветон, наподоби шутера про зомби в геймдеве
лучше для блендаря сделай пару адодонов полезных могу подкинуть идеи коли писун знаешь годно, комунити будет сука благодарно хотя бы, а так обосрешься, дропнешь и будешь потом месяц в подушку рыдать ВСЕЙ КАММАНДАЙ
Спасибо!
Пишу значит
document.addEventListener('keydown', function(e) {
//up
if(e.keyCode === 87) {
player.position.y -= player.speed;
}
//right
if(e.keyCode === 68) {
player.position.x += player.speed;
}
//left
if(e.keyCode === 97) {
player.position.x -= player.speed;
}
//down
if(e.keyCode === 115) {
player.position.y += player.speed;
}
})
Но одновременно две клавиши не робят.
fix
document.addEventListener('keydown', function(e) {
if (e.keyCode === 87) {
player.position.y -= player.speed;
}
if (e.keyCode === 68) {
player.position.x += player.speed;
}
if (e.keyCode === 97) {
player.position.x -= player.speed;
}
if (e.keyCode === 115) {
player.position.y += player.speed;
}
})
Можно создавать итеративные процессы с рекурсией без циклов, которые стек не переполняют.
https://goo.gl/FpD5cK
Для совсем маленьких
https://goo.gl/GLwHHL
Тоже самое, но с более сложной подачей
https://goo.gl/LbfzdX
Не завидуй.
Троллинг не удался.
Перекат >>1099555 (OP)
Перекат >>1099555 (OP)
Перекат >>1099555 (OP)
Перекат >>1099555 (OP)
А так же хардкорная декомпозиция на компоненты
Это копия, сохраненная 19 декабря 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.