Вы видите копию треда, сохраненную 8 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы:
https://github.com/xxxwww/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/xxxwww/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/xxxwww/js-thread/blob/master/Wiki/tools.md
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
Дублирую вопрос.
Хотел запустить MongoDB. Выдал две ошибки не было hotfix и не видел хост. Hostfix установил, а вот что с хостом делать? Что я делаю не так?
Как на вашей ноде сайты писать? Экспресс выглядит слишком убогим. Какие есть норм Фреймворки?
Поставь лучше линупс на виртуалку, не занимайся виндопердолингом
В шапку посмотреть западло?
а чего он так редко на hh встречается? Ебанутый groovy на котором я пишу и то чаще
Его развитие прекратили и осталось только легаси
Бабель для es6-фишечек, кофе - няшный синтаксис, который раньше и функции бабеля мог выполнять
В ес6 гораздо больше полезной херни, чем в кофе. Те же прокси и нативные промисы
Есть же всякие форки с впиленными фичами es6
Как будто это как-то меняет суть работы транспайлеров.
только начал учить ангуляр, но меня уже бомбит. С моей говнокодерской высоты кажется, что он вообще не нужен
Потом и по штанине.
var timerId = setTimeout(function() { alert(5) }, 1000);
alert(timerId);
исторически сложилось
Так как timerId несет в себе 2 значения: значение, выдаваемое функцией и ID setTimout. Разве переменная не должна нести в себе 1 значение?
Током ебнуть? Возьми да посмотри, что "несёт в себе" переменная. Написал 2 алерта и хочет один вывод.
Хз, я лично рассматриваю это так:
setTimeout(...) - сам по себе ставит таймаут и вполне себе норм работает
а присваивание вида var timerId = setTimeout(...) необходимо если мы захотим его очистить и тогда нам надо знать его айдишник.
Спасибо, даже внимания не обратил.
TOP TIER
TypeScript
MIDDLE TIER
JavaScript
SHIT TIER
CoffeeScript
Аргументация? Dart всем дал на ротан
Сорта.
Двачую. Правда мозгоразрывающе, бессмысленно и беспощадно.
ловите наркомана
Лол, что было сложно репо бабеля включить и посмотреть, как реализовано? Ну ты даун
Ты совсем мудак.
Все существующие полифилы, полифилят с ограничениями, и не способны прокрисровать большинство ништяков.
А в тех, случая которые они полифилят, они и не нужны.
Смотри вакансии
Только он там не нужен. Ангулар - готовый завершенный набор, а реакт - конструктор, одной из важнейших деталей которого является редакс.
Взлольнул
И что же у тебя в ангуляре выполняет функции редакса?
Ты вообще в курсе, что редакс это универсальная вещь, не привязанная вообще ни к чему? Я, например, на сервере использую его даже. Суперштука для вебсокетов.
Усё, нашел сам.
Есть. Ангулар 1 - это отлаженный инструмент разработки, а Ангулар 2 - игрушка для хипстеров. Раньше чем через полгода трогать его не стоит.
В основах и Node.js книги расставлены от обязательных к желательным. Во фронт-энде они разбиты по технологиям.
Спасибо, просто т.к начинаю абсолютно с нуля, то боюсь запутаться.
Охуеть, а перл 20 лет, давай на нем ебашить всё. Right tool for the job - не про тебя походу.
Ты что, даун? Что ты сравниваешь?
Перлу тыщи более годных альтернатив, ангулару - какие-то поделки от васянов, которые могут завтра сдохнуть и какой-то недоконструктор, который даже не релизнулся. За 7 лет существования ангулара так и не было ничего, что могло бы его заменить, поэтому он такой популярный
У него единственное применение - клепание охуительных формочек. Это да, тут ему конкурентов нет. В остальных случаях он начинает сосать даже при выводе среднего размера списков чего-нибудь. И там уже начинается охота на ведьм и костылинг.
Когда он создавался, надобности в таком и не было особо. Это ж 2009 год, тогда все просто от аджакса охуевали
Сейчас такие задачи появились, много где большие объемы данных, вот и запилили вторую версию с shadow-dom и куртизанками, чтоб всё быстро и компонентно. И он опять будет очень популярным
Так и че отрицал? Нахуй он нужен в 2016?
Я тоже так думал, но когда увидел вторую версию, понял что гугел всерьёз собрался сделать из js'а вторую жабу и это очень плохо. Js вэй - это простота, минимализм, гибкость, скорость разработки, а не идусня с абстрактпроксисинглетонами. Жаба-вэй уже один раз обосралася в вэбе на бэке, проиграв рельсам, обосрётся и сейчас на фронтенде.
Прогрессивные пацаны выбирают реакт + кложурскрипт, индусы-синие воротнички - ангуляр, всё остальное быдло пишет на всяком говне.
https://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks
Добавлю еще, что в большей части проектов ВСЕ РАВНО приходится писать свой мини-фреймворк, т.к. это быстрее и дешевле, чем внедрять стороннее решение.
Вполне. Они долбоёбы тогда решили что веб - это всего лишь ещё один уровень абстракции, ещё один слой поверх того невменяемого тырпрайз говна с которым они привыкли работать. В результате получилось неудобное нечто, 100500 слоёв абстракции чтоб вывести хеллоу ворд, при этом никаких удобств конкретно для самого веба-разраба не было.
Рор пошел другим путём, и сделал только нужное для вэб задач, а именно роутинг, актив рекорд, скаффолдинг, нормальное mvc, систему миграций, фронтконтроллеры, простую интернационализацию, простую декларативную валидацию. авторизацию и прочее и прочее.
В результате сейчас 90% вэб прилаг написаны на рельсоподобных фреймворках, а джавадебилы дальше сосут письку в банках или пилят такие же рельсоподобные фреймворки типа Play.
Мне достаточно того что я увидел в примерах на оф сайте. Да и переход на тайпскипт - идиотизм. Куча каких-то блять конфиг файлов, миллион классов, короче если ява это интерпретатор иксемеля в стектрейсы, то ангуляр2 это интерпритатор джсона в ошибки браузера.
>Да и переход на тайпскипт - идиотизм. Куча каких-то блять конфиг файлов, миллион классов
Не идиотизм. Но на счет конфигов и классов согласен, чет слишком дохуя всего.
Ищу новичка для совместного обучения скрипту и прочим технологиям. Вместе легче учить, как по мне, одному как-то тухло и не с кем делиться, что ли
Сам прошел пару курсов по html\css, sql, js на khan, codeacademy и dash.
Мне лень рассматривать по пунктам. Но бакенд на явке пилится парой кликов в любом иде. То что на других языках вызывает лютый разрыв пуканов мочакодеров в ЕЕ или спринге просто до умопомрачения. Настроил jpa, сгенерил энтити, запилил дао для работы с базой, нагенерил бинов, сгенерил rest для бинов, описал секурити модель. Все бакенд готов нах.
А поверх него хоть jsf пили, хоть на моче спа поверх реста.
Использую для подсветки синтаксиса в шарпе, но эта мразь выделяет текст в таких ковычках <> зелёным, а должны keywords подсвечиваться синим как и в вижле. Видимо распознаёт как include в с++. Может кто знает как пофиксить?
Не обращай внимание на написанное
>Куча каких-то блять конфиг файлов, миллион классов
СЛОЖНА!!! У НАС В ХТМЛ ПРОГРАММИРОВАНИИ ЗА ТАКОЕ УБИВАЮТ НАХУЙ
> https://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks
Ну и где там фреймворки не от васянов, с большой модульной базой и всем вот этим?
> в большей части проектов ВСЕ РАВНО приходится писать свой мини-фреймворк
Что за бред? Такое могут позволить себе только корпорации
Да и всегда дешевле использовать технологию с большим коммьюнити, которое напилило огромную кучу модулей
>поделки от васянов
>использовать технологию с большим коммьюнити, которое напилило огромную кучу модулей
/0
Я хейчу васянов из-за их привычки умирать, а вместе с ними умирают и их проекты. Смерть васяна, который сделал фреймворк, гораздо фатальнее, чем смерть васяна, который сделал модуль
>Ангулар 1 - это отлаженный инструмент разработки, а Ангулар 2 - игрушка для хипстеров. Раньше чем через полгода трогать его не стоит.
Кто это говорил? А, наверно не ты..
Не я. Второй ангуляр вполне "продакшн-реди", просто не обкатан достаточно. Бетой они просто снимают ответственность с себя, чтоб не хуесосили вдруг чего
function climb(n){
var n = n.toString(2);
return n.split('').map(function(_,i){ return parseInt(n.slice(0,i+1),2) })
}
Или бугришь от того, какой ответ считается best practice.
Чего-то аж жалко тебя стало
Код покажи
по-твоему щелчек на мобиле != ховеру?
впрочем сам читай http://www.prowebdesign.ro/how-to-deal-with-hover-on-touch-screen-devices/
спс
СЧОООУР
СЧОООУР
на двач вообще лучше не заходить
имеет смысл брать для этого другой язык и компилить его в джс или писать на ванили как и всё прочее?
Вот эта:
>childrenContainer.hidden = !childrenContainer.hidden;
Как хоть ты на доску то смог зайти
Сложная конструкция, а то, что делает - несложно. Значит это плохой код. Хороший код, когда конструкция простая, а делает сложные вещи.
>Что за бред? Такое могут позволить себе только корпорации
>Да и всегда дешевле использовать технологию с большим коммьюнити, которое напилило огромную кучу модулей
Студент не палится.
Дешевле использовать только когда мелкий проект. Если проект большой, то дешевле значительную часть сделать самому, а из чужого кода брать только то что поддерживается крупными фирмами или давно написано окончательно. Всякие мелкие дрочеры опенсорсники и их говно идут нахуй, потому что на хайлоад не расчитаны, куча багов, поддержка нерегулярная, часто проекты бросаются, ломаются и вообще это пиздец.
Число приводит к двоичному основанию, потом к строке, потом разбивает на массив, затем берет от строки 1, 2, 3, n символов и превращает обратно в десятичное число.
Таблетки выпей, уже галлюцинируешь.
Да нет, просто туплю...
Программирование вообще не мужская профессия.
Он прав вообще-то.
Почему только бекенд? Настройка мне тестирование реакт компонентов на тайпскрипте без рекомпиляции в ес5, посмотрим какого размера у тебя анус будет потом.
Проиграл. Надо это вынести в шапку треда
Часто самоудовлетворяюсь, представляя себя на месте девушки, которую ебут. Иногда дрочу на трапов. Люблю представлять себя нежной девочкой в юбочке в руках у сильного мужчины.
пишу фронт и бэк на js
Если сделаешь мне такой конфиг вебпака, то вышлю тебе 50 баксов (без шуток). Нужна мока (или джест), чай(тут можно что-то другое), реакт 15 на тайпе ^1.8.x, без рекомпиляции в ес
Ты начни делать. Если упрёшься в язык - можно думать о другом. Но вангую тебе и жс хватит с головой.
Ты бы и собаку трахнул.
В среднем, за день я объявляю 35 переменных, 10 функций, два класса и один массив.
Не перетруждаешься я смотрю.....
>>721650
От 10 до 2-3 тысяч.
это ты молодец конечно, но смысл-то задачи ты уловил? Проблема как раз в том, что такой подход к решению мне бы, например, никогда в бошку не пришел. И >>721260 пусть это непонятное говно с виду, но как способ реализации крут. Это же просто задача без смысла, поэтому тут на читаемость кода похуй
Сама задача: For every positive integer N, there exists a unique sequence starting with 1 and ending with N and such that every number in the sequence is either the double of the preceeding number or the double plus 1.
Ты просто собрал кучу бэд-практикс и выдаешь это за острие развитие фронтенда. Ты пидор.
Какая самая лучшая практика по навешиванию множественных обработчиков на однотипные элементы.
Например, есть у нас некая борда, со списком тредов. В каждом треде есть поле для ввода поста/кнопка/whatever, на него нужно повесить обработчик, который что-то там делает.
Прослушиваемых элементов, как и тредов, может быть очень много.
Какой вариант в таком случае предпочтительнее?? Собирать все нужные поля со страницы в массив, проходится по нему циклом и вешать на каждое событие. Использовать делегирование на документе? Писать мелкокласс под элемент и затем инициализировать столько его копий сколько потребуется? Может какие-то другие практики?
Сайт: http://arielrebel.com/
Блок: "Recent Updates", пикрелейтед.
Как угодно, хоть на всю растянуто, хоть в столбик, хоть как. Это же отдельный хтмл-блок я так понимаю?
Берешь адблок и скрываешь все блоки кроме нужного
Я не понимаю, откуда такой разброс в квалификации? Вопросы здесь тотально нубские, а если вдруг скажешь что не так, то из рид-онли вылазят эксперты с уязвленной самооценкой, пытающиеся самоутвердиться на аноне за счет знаний обоснованным ответом, почему так, а не иначе. Нахуя тогда этот тред, если не для обмена опытом? Сиди дрочи на то, как ты охуенно много знаешь, хуле, если не делишься опытом, нахуй ты тут нужен?
Блядь это так не работает. Нет ссылки на этот блок, можешь его сам собрать спиздив стили, но последние новости туда грузится один хуй никак не будут. То что ты хочешь есть подгрузка api через iframe. Там такого точно нет. Может и можно как-нибудь парсить эту хуйню доставать оттуда новое и отправлять в свою форму, но это пиздец бессмысленно
Можно написать расширения для хрома, которое будет по обновлению контента через таймаут проверять, обновилось ли, а если да, то аппендить в body.
Да нет ты не так понял похоже меня, это же я и вопрос задал, что мол мне результат какой угодно сгодится.
>>721848
Понял, досадно, спасибо за информацию. Просто думал это как блок как на какой-нибудь борде, на Ычане чтоли меню слева отжельным блоком или на какой-то другой видел.
Спасибо, за ответы, удачи.
Никто не встречал готовых решений об этом?
Так я об эмуляции готовой. Рантайм если хочешь.
Принцип то я знаю, разумеется.
Алсо, эмулировали же прототипную модель, просто чтобы.
Тут то же самое. Асинхронщина в одном потоке.
P.S. И да я не троль. Реал интересно
P.P.S Без обид ребятки нехочу никого оскорбить
«что-то непонял .кгода ты обьявляешь тот класс где ещё у тебя забыл какой-то метод. если в нём не два парамнтра то он ведь переопредеделен . но ведь ты потом длженего найти но другой где два параметра .и если они одинаковые нельзя ведь сразу отлтчить которфй .но ты пишешь что вызывается метод а жто неверно!!! отвечай пожалуйста подробно или ты самый умный?
Смешно
Это ПОЛЧАСА работы. Расширения для хрома это package.json, index.html и script.js. Все, блядь.
Чтоб твоя хуйня работала, надо чтоб хром был открыт, я полагаю его интересовала автономность в пиздинге нового.
Пиздец, откуда вы лезете? Для тебя отстутствие жаба-классов – адовый пиздец? Чем они лучше прототипного наследования?
Не ебу что это. Мне ж не работать по специальности, а так, для себя. Объясни что это и почему это нужно знать до начала изучения ангуляра?
Это окружение.
>Ну JS поизучал немножко, хочется что-то более интересное.
Изучи сначала целиком.
Ну что значит целиком? Погуглил - document.body.style.background или navigator.userAgent вещит и так самоочевидные.
Ну я ньюфаг, вот ссылка: https://learn.javascript.ru/browser-environment которую нагуглил. Я ж не знаю про что вы.
Ты хочешь залезть во фреймворк, не покопавшись в окружении.
А потом начнешь на простейшие вещи тянуть либы.
Вся суть в твоей фразе
>хочется что-то более интересное.
Интереснее ванили ничего быть не может.
Просто у меня нет задач каких-то. Ну какую-то вебстраничку склепал, куки там, слайдеры, форма, генерация канваса. Почему бы теперь не попробовать фреймворк? Сидеть и зубрить, скажем, иерархию DOM для себя смысла не вижу (всегда ж мануалы в гугле доступны если что) - мне интересна не работа а удовольствие от этого всего.
да он сам не знает чего хочет, то ли учить язык, то ли это нихуя не интересно и надо чет поинтереснее, кароче jQuery пусть ест, быстрее всего интересное увидит.
jQuerry тоже делал, просто упрощенные/комплесные либы для JS, хочется что-то еще попробовать.
С какой стороны подкатится к вебу, если легко ебашу сервер-сайд на ноде, а больше нихуя не знаю?
Ты с webpack'ом перепутал.
Почитай "идеальный код" и пиши по советам с самого начала, ты же не в олимпиадное программирование собрался вкатываться. Потом тяжело отвыкать будет, а даже если ты с подобным стилем кода пройдёшь собеседование, то потом будешь только боль и страдания тиме причинять.
А, я жопой читаю посты, спать уже хочу, ясно.
>Проблема как раз в том, что такой подход к решению мне бы, например, никогда в бошку не пришел
Всё превосходство и мощь человеческой цивилизации построено на возможности оптимально хранить и передавать знания. Ты и не должен мочь во все решения сам, но ты должен уметь сохранить эти знания, переработать, сделать выводы и использовать в дальнейшем.
Так что не унывай.
Для начала посмотри курс лекций яндекса по фронтенду, по ссылкам как раз лекции по перекату с бэкенда на ноде на нормальный фронтенд.
https://www.youtube.com/watch?v=e7MkUjdrWIs
https://www.youtube.com/watch?v=bC-MUHhdiUk
https://www.youtube.com/watch?v=r4Ty-AGQU2g
https://www.youtube.com/watch?v=Gqon5Bby_qU
https://www.youtube.com/watch?v=Uj5AN_QQn2A
https://www.youtube.com/watch?v=cmt2A_kT8Fs
https://www.youtube.com/watch?v=0KQBHbJt0ic
Т.е. я вкурсе, что если в defineProperty в геттере или сеттере загеттить или засеттить это же св-во - будет maximum callstack.
Есть ли какие нибудь костыльные/велосипедные решения?
Зачем тебе это?
Обычно сеттер и геттер меняет какое-то иное свойство.
Если тебе принципиально, можешь хранить это свойство не в самом объекте, а например в замыкании, или в свойстве функции-геттера или сеттера.
У была идея запилить TypeScript'овский декоратор св-ва класса, который кадый раз, когда к св-ву обращались (get) отдавал бы это св-во, но при этом делал бы еще кое что. То же самое и при задании значения этому св-ву - что бы значение устанавливалось, но при этом тоже выполнить какое-либо действие.
В итоге я так и не нашел способа обойти maximum callstack.
дополню, что побочные действия должны были происходить с данными, которые геттятся/сеттятся.
Ты пример то бы привел, что ты хочешь сделать. Само свойтсво дергать в его же сеттере/геттере это будет то что у тебя получилось - ничего хорошего. Ты либо делашь private field, а в get/set твою кастомную логику, либо декоратор в котором велосипедишь какое нибудь замыкание, если эта логика слабо относится к самому свойству логгирование например
сажица
Ну, например декоратор св-ва, который при каждом сетте св-ва писал бы значение, помимо самого св-ва, также еще и в куки. А при гетте, если есть значение в куках - брал бы из кук, если нет - отдавал бы значение самого св-ва.
Про эпам не знаю, сейчас на курсах в конторе этажом выше харьковского эпама.
Задания были такие: на выбор визуализация пузырьковой сортировки/лабиринт (генерация и поиск пути), потом другой препод дал попроще задание (опять же на выбор калькулятор/сапер), потом на выбор одно из того, что не сделали за первые две недели, дальше пасьянс косынка, файловый менеджер (просмотр директорий, возможность оставлять комментарии, которые сохраняются в монге), чятик на вебсокетах.
Остался еще месяц, хз что будет дальше, компания немного утратила интерес к курсам в том плане, что джуны им оказались внезапно не нужны, и хотя тренеры стараются, но все равно оно как-то уже на отъебись. Я-то думал, будет хардкор, конкуренция, отсев лузеров, а тут как-то всем похуй, учимся и учимся.
Ну, твой декоратор должен устанавливать set и get через defineProperty для поля name
А само name value хранить в свойстве функции get или set
Что непонятного
Геттеры и сеттеры это функции. Функции это объекты, у них есть свойства.
function ololo () {} // getter
ololo.value = 'name value'
у меня сделано так, никакого переполнения в консоли не пишет, я чего-то не понимаю?
У тебя замыкание.
Если ты девайнишь геттер и сеттер каждому инстансу в конструкторе, то у тебя лютый оверхед.
У тебя же в каждом инстансе ДУБЛИКАТ геттера и сеттера, хотя достаточно было бы делегировать их прототипу. И не выебываться, эмулируя приватность переменной.
Я в прицнипе спокойно пишу на ЖС без особых проблем.
>>721958
Я использую реакт. И уж class extends по выразительнее будет React.createClass() а потом в нутриэтого дела ешё и костыли
типо fieldName:function(){return{}}
За профиты мвц на клиенте так никто и не пояснил(
Не ответил) Вот например для Flux архитектуры я могу спокойно написать профиты в независимости от размер проекта
а как в таком случае сделать в t приватную переменную?
t { yoba: 'yoba' }
чтобы при обращении к t.yoba например она не торчала наружу?
Я наверно немножко тупой раз не понял вопроса. Но попробуй let
Зачем тебе приватные переменные?
Они не предусмотрены концепцией языка, зачем вы их тащите.
На случай api есть соглашения разного рода, например начинать именование приватных полей с подчеркивания (__yoba)
Можно использовать символы еще, например.
И просто делать поле не перечисляемым.
Все остальные выебоны, с создаванием замыкания на каждую такую залупу - говно без задач. Ты понимаешь, что когда ты делаешь себе приватное поле через замыкание, то в памяти хранится весь скоуп вместе с твоей переменной. И так для каждого твоего объекта, где ты это используешь.
function Yoba() {
var innerYoba = 'private';
this.outerYoba = 'public';
}
var yoba = new Yoba;
это выебон?
быстрофикс
С твоим хинтером не всё в порядке , и он не умеет в объявление геттеров и сеттеров в литералах
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
>> 722331
но ведь суть этого >>722285 была в том что я собираюсь добавить обработку при изменении допустим я делаю t.unit = 'yoba' , кроме изменения поля там будет ещё логика, это неудачное решение?
логика будет в сеттере, получается что само присваивание значения в сеттере можно не писать?
Наздоровье.
Но зачем тебе value твоего t.unita хранить в замыкании? Ты чего боишься? С объектом будет работать кто-то другой и ты переживаешь, что он полезет на прямую в свойство, мимо геттера? Это будет его вина, ведь ты опишешь апи, а если у вас есть соглашения, об именовании приватных полей, то вообще замечательно.
Делай приватное поле неперечисляемым, а геттер перечисляемым. И всё.
Писать.
Если тебе надо чтобы сеттер менял значение.
Короче всё. Я устал это объяснять.
У меня один вопрос.
А ты где научился приватность полей ебашить через замыкания? Кто посоветовал?
читал learn javascript про интерфейсы, возможно что-то неверно понял, спасибо за пояснения няша :3
У тебя в комнате в люстре есть лампочка, а на стене есть выключатель. Ты в принципе можешь включать и выключать свет, вкручивая и выкручивая лампочку руками на прямую. Но ты всё же пользуешься выключателем, и чтобы тебе вдруг не пришло в голову им не пользоваться, не навешиваешь на люстру решёток с замком.
кстати у меня один экземпляр этого объекта и мне нужно хранить переменные, они постоянно используются же
[{one: 1}, {two: 2}]
И через JSON.stringify превращаем его в json строку. Получается такое:
"[{"one": 1}, {"two": 2}]"
Уже видно, что кавычки расставлены неправильно. Если скопировать строку JSON.parse, то будет ошибка. Но если передать готовый json в переменную, а переменную в JSON.parse, то она нормально превратится обратно в объект. В чём секрет?
В том смысле те кавычки, что ты видишь в консоли - это не часть строки, это ее отображение в консоли.
Ну лан, победил. А что там с невозможностью присваивания?
Шаблонизатор юзай.
сорри не так написал, имел в виду старый стандарт без фич которые не поддерживаются
Содержимое некоторых функций убрал (для вопроса не существенно).
Короче, есть страничка, на страничке canvas и кнопка. В канвасе происходит некоторая отрисовка, на которую влияют координаты мышки (3D-вращение, мать его ёб). Туда же передаем массив angls, который тоже влияет на отрисовку (из этих углов строится геометрическая фигура, которую вращаем мышкой).
Пока всё заебись. После нажатия на кнопку, надо отправить на сервер (Аяксом) некоторый параметр (IRL таких кнопок две, с разными параметрами). На серваке этот параметр обрабатывается, формируется новый массив angls и высылается обратно (echo json_encode($angls);). Вот то, что сервак вернет, мне надо в канвас засунуть. Как это сделать?
Так вот, я долго думал над этим и нашёл 100% решение.
for ( var i = 0; i < imageData.data.length; i += 4 ) {
m = 255 / Math.max ( Math.max ( imageData.data[ i ], imageData.data[ i+1 ] ), imageData.data[ i+2 ] );
imageData.data[ i ] = m;
imageData.data[ i+1 ] = m;
imageData.data[ i+2 ] *= m;
imageData.data[ i+3 ] = 255 / m;
}
В общем-то суть такова, есть некая вещественная переменная m, которая хранит коэффициент деления 255 на самый яркий цвет, после чего все каналы умножаются на него, а прозрачность является делением 255 на этот коэффициент, может кому полезно будет.
>Кроме лисы, лисе не нравится let
Странно, если вспомнить о том, что когда-то let была только в лисе.
А ещё Yandex Browser без strict
https://jsbin.com/niwixusana/edit?html,js,output
А что в нынешнем неправильного?
Ошибка очевидная.
>index++;
>slide.setAttribute('src', slides[index]);
>if (index >= slides.length) index = 0;
Допустим, до исполнения этого кода index===5
Он начинает выполняться.
После первой строки index===6
На следующей строке, ты пытаешься получить из массива элемент с индексом 6, а его там нет. Получаешь андефайнд.
И только потом ты проверяешь, не вышел ли ты за массив.
Поменяй местами две строки.
>index++;
>if (index >= slides.length) index = 0;
>slide.setAttribute('src', slides[index]);
То же самое с pref
>if (index < 0) index = slides.length - 1;
>slide.setAttribute('src', slides[index]);
вообще у меня есть результат sql запроса, там его стандартным циклом PHP разбираю, нужно для внутренних целей. Если из результата сделать JSON, то что с ним делать? Во время генерации PHP прописываю теги <script></script> и внутри них создаю строковую переменную, что-то вроде $tmptree="{ololo:keke}".$somedata. Но есть ли вариан такой, что бы я взял массив PHP и на странице из него сразу сгенерировал javascript объект?
Ну, и экранируй еще правильно, конечно.
>>722194
А вот эти задания типо сапера, лабиринта,пасьянса и т.д. это давалось на каждое задание 1 день? И допустим я не знаю как реализовать задачу, типо пасьянса или косынки и мне понадобится время чтобы разобраться, погуглить аналоги,посмотреть чужой код и т.д. это плохо? и значит что я недопрограммист? Или время дается и можно гуглить, смотреть аналоги и потом решить поставленную задачу?
Мимо другой анон
Неделя на каждое, никто пизды не выдавал за несделанное, но просто на следующей практике давали новое задание.
Файлменеджер, впрочем, я только сейчас сделал, и то еще комменты не прикрутил, в процессе пришлось разбираться с нодой, экспрессом, jade, ну и собственно рендером json. Все либы для рендера используют жквери, а нам его нельзя юзать.
Пиздец.
Я бы обосрал публично того преподавателя, который формулирует эти задания. Он же некомпетентен в край.
а как это вообще делать? Вот есть у меня объект
lecoq = {age:2, color:red, name:huilo}
и есть html где этот петух представлен
<div >
<div id="age"></div>
<div id="color"></div>
<div id="name"></div>
</div>
Далее постоянно идут разные аякс запросы, по завершеню которых объект петушок модифицируется. Как мне сделать, что бы новые параметры петушка автоматически менялись в div? Сейчас у меня есть обработчик, которые при приеме данных(приходит не только json) совершает вычисления и как результат модифицирует объект петушок. Затем при помощи jquery я ищу теги с id:name, age etc и меняю текст внутри них, но чувствую, что так НЕ ПРАВИЛЬНО. Хочу заметить, что данные мне приходят "сырые", я бы даже сказал бинарные и
после вычисления их я нахожу параметры петушка.
Существует.
Но тебе он не нужен, если ты не понимаешь принципа клиент-серверного взаимодействия и сути работы http протокола. А ты не понимаешь, если задаешь такие вопросы.
Ну ты и ретард, просто пиздец
Выполню за 15к + официальный перевод на счёт юридического лица.
бля, ты меня троллировать пришел? Вот не зли меня сука, если не знаешь, что сказать. Я писал cgi скрипты на си++ и клиент-серверные протоколы под микроконтроллеры, а ты мне хуету тычишь про клиент-сервер.
>писал cgi скрипты на си++ и клиент-серверные протоколы под микроконтроллеры
>не может совладать с пхп
Да за полчаса бы сделал, только гм... денег у меня жопой жуй. Что ты можешь предложить в обмен?
я тебе объясню проблему, мне приходится одновременно писать на
си++
java
javascript
groovy
php
VBA
даже не спрашивай как я до такого дошел, но вот такая вот ситуация сложилась.
Какое решение вижу я, в php должна быть ф-я, передавая в которую объект php, ф-я при создании страницы создает валидный js.
да
Возможно ли, и если да, то как, перехватить ответ от сервера при отсылке ajax запросов из js кода?
Поясняю особенности того, что я хочу получить:
1.) Есть $.ajax, который отправляет запрос на сервер.
2.) Сервер возвращает ответ где сериализован объект, в котором есть свойство "status".
3.) Код перехватывает возвращенный объект, обрабатывает его и затем передает на дальнейшую обработку в success 1.)
Сделай свою обёртку (декоратор) над функцией Ajax, где будет происходить вся нужная обработка.
Да, это первое что пришло в голову, и я бы воспользовался этим методом если бы везде писал свои запросы, но я местами использую фреймворк syncfusion который сам собирает ajax, поэтому нужен именно перехват.
>>723261
>>723264
Нашел решение. Все до безобразия просто.
$(document).ajaxComplete(function(event, xhr) {
alert(xhr.responseText);
});
Так это же не перехват ответа, а +! хэндлер, ты теперь свои коллбэки не будешь использовать?
да сложно это для меня, как там дивы расставить в ряд и выровнять все просто мрак какие мучения
В крупной конторе это делают верстальщики, но знать верстку необходимо (заниматься мб и не придется), если только ты не будешь делать backend на ноде.
ну я могу сказать как на си++ работаю, дают задачу, я с ней ебусь месяц-другой потом начинаю показывать руководителю, что-то дополняем, что-то меняем, что-то исследуем. В общем работа ответственная и никто не давит и не подгоняет. Сейчас так вышло, что пришлось дописывать проект на js и java за съебнувшим коллегой и вдруг почувствовал, что все в разы проще и быстрей чем на ++, но тут видимый результат буквально каждую неделю можно получать. Как там в мире js? хуяк-хуяк и в продакшн?
ничего не думаю, у меня нет знакомых программистов на js и веб, все лютые с++ и java энтерпрайз продакшн легаси говнокодеры
Насколько говнокод мой говнокод? На что обратить внимание?
У меня вообще здесь все стандарты вношу я и требование одно - успевать по дедлайну сделать так, чтобы работало. Но я и работаю не в IT-компании, а в IT-отделе, где всего 4 человека. Где-нибудь серьезнее могут дрючить за unit и e2e-тесты, проводить код-ревью и т.д., у меня вообще халява.
Разбей еще на маленькие функции с человекопонятными названиями и будет ок. Представь, что чувак, который будет читать этот код, не хочет разбираться, что этот код делает, а хочет прочесть английское предложение.
https://jsfiddle.net/j3v6ra9g/3/
Вроде такого? Еще я не уверен что выбрал правильный подход с использованием своих объектов наряду с Date объектами, или норм?
>использованием своих объектов наряду с Date объектами
Это ок.
>Вроде такого?
Да, только объявление функций сверху, вызов их снизу - это для читаемости, видишь, что закончились определения, дальше идут вызовы.
А еще лучше в IIFE вызывать анонимную функцию, в которой будешь хранить объявления функций, а она пусть возвращает именованную tick, которая и вызывает саму себя.
>А еще лучше в IIFE вызывать анонимную функцию, в которой будешь хранить объявления функций, а она пусть возвращает именованную tick, которая и вызывает саму себя.
Воу, у меня череп потек от такого.
Т.е. так?
(function() {
var ...;
function calculate() {...};
function render() {...};
return function tick() {
...
setTimeout(tick,1000);
}
})()();
Ты меня подтраливаешь, или я не так понял? В чем плюс такой схемы?
>В чем плюс такой схемы?
Объявление функций хранится в замыкании уровнем выше, а не в функции tick. Код логически лучше разделен, читать такой код проще. В функции tick хранится, собственно, код, отвечающий за tick, и не больше.
Бизнес-требования as is.
Прелесть пикчи в том, что ее можно интерпретировать по-разному. Сидят либо два кандидата, а в очереди - работодатели, либо наоборот - справа ищут годного низкоуровнего спеца, но никого нет, зато на PHP-вакансию собралась толпа индусов.
Можно и так интерпритировать, но это скажет больше об интерпритирующем, кек. А вообще, знать надо все, помоему.
Компиляторы можно не знать в 2016. А структуры и алгоритмы не меняются на протяжении 10-летий.
Еще давай начать перечислять, чего можно не знать в 16 году. Мне вот они нужны будут
Хорошо, спасибо, Антон. Сам непривыкши к такому и наверное потому воспринимается сложнее.
Извольте пойти в ле хуй. Я могу бывать где вздумается, пушто я гражданин всех тредов
http://jsbin.com/lalawakehi/edit?html,js,output - пример фабрики, может быть интересно, т.к. читается проще, чем прототипное наследование.
Интересно. _ с extend это что-то конкретное, или просто плейсхолдер для функции которая копирует методы в возвращаемый объект? Прототипы я таки понял, и если я правильно понимаю, то в виде фабрики методы будут копироваться в каждый экземпляр, занимая лишнюю память.
function Class() {
this.doSomething = function(){...}
}
хуже чем
function Class() {}
Class.prototype.doSomething = function(){...}
это верно?
Верно, прототип это просто объект, в котором и собираются все эти свойства экземпляров "класса". И экземпляры ищут и находят это свойство в общем объекте.
>то в виде фабрики методы будут копироваться в каждый экземпляр, занимая лишнюю память.
Будут копироваться только ссылки на них, а экземпляры будут храниться в замыкании. _.extend из underscore.
Задания типа сгененрировать данные для функции, применить к ним регрессиии и написать процедуру, которая выберет оптимальную модель регрессии для случайных данных.
tQ
Сори, мискаст.
Не найдя в свойствах экземпляра идет поиск в прототипе, не найдя в прототипе ищется в прототипе прототипа и так вплоть до Object.prototype.
Вот оно как, понял.
Значит при прототипном наследовании оверхед на поиск (операции), а при фабрике на память (4 байта, если не изменяет память, на каждую ссылку на метод).
Только если расширением
Сука, функция, которая определяется в параметрах функции. Рвет мозг и шаблоны напрочь. Кто-нибудь может на простых примерах (может из жизни чего взять) пояснить за них?
А то в статьях все сразу для примера херачат запросы по два-три колбэка и хуй пойми где что...
Или киньте ссылки на какие-нибудь простые статьи с примерчиками уровня helloworld по теме.
Помогите пожалуйста. Как сделать так, что бы участок кода работал только при определенном размере экрана?
Не с помощью браузера (запрещено в целях безопасности). Десктопное приложение с помощью ноды может это сделать.
callback = function (result) {
alert(result);
};
function makeAJAXRequest (callback) {
//do ajax request
//save to answer
// pass answer to callback
....
callback(answer);
}
makeAJAXRequest(callback); //time... ... alert!
а сделать
function Class() {
this.prototype.doSomething = function(){}
}
можно? или это как первый вариант в >>723478
проверил, вижу нельзя
>>723615
Так ну с именованой функцией более менее понятно. А как и когда выполняется анонимная функция в описании?
Нет.
prototype это свойство конструктора. В создаваемый объект тот же объект записывается в скрытое свойство __proto__, т.е. можно
function Class() {
this.__proto__.doSomething
}
но так вроде как не принято потому что а хуй его знает, я сам только учусь.
уже передумал, выглядит как говно :3
Тогда же, просто ты её объявляешь при вызове.
makeAJAXRequest(function (result) {
//do magic with result...
});
>Рвет мозг и шаблоны напрочь.
И рвет и выносит, но потом, перечитывая в двадцатый раз и потренировавшись всё начинает хорошо укладываться. Параметры функций нужны чтобы динамически определять сущности, с которыми она работает. Но этими сущностями могут быть не только обычная инфа вида "что", но и "что делать". Допустим считаешь ты зарплаты, есть для этого функция, но от зарплаты ты должен потом отсчитывать всякие налоги, причем для всяких инвалидов иначе, для студентов иначе. Закладываешь колбек в параметры функции, который применяешь в конце вычислений. А при вызове передаешь другую функцию, которая и будет высчитывать налоги.
function getPayment(hours, payrate, applyTaxes) {
var payment = hourspayrate;
payment = applyTaxes(payment);
return payment;
}
function standartTaxes(value) {
return value0.75
}
function disabledTaxes(value) {
return value0.9
}
function studentTaxes(value) {
return value0.8
}
И можешь использовать это как
getPayment(160, 5, studentTaxes);
Это самый простой пример. Еще яркий пример сортировка: есть функция sort, а ей можно передать колбэк, в котором описано по какому принципе сортировать. Это уж не буду расписывать, в гугле и так полно примеров.
Звездочки пропали, блеать.
Для начала можешь думать, что это просто текст, который в определённое место функции вставляется.
Проверяй размер экрана при загрузке и вызывай свой участок.
Если под размером экрана ты подразумеваешь размер окна, то еще вешай хендлер на событие изменения размера окна.
(по сути и разрешения экрана в индивидуальном случае может измениться посреди работы)
ахуенно ты функцию прототипом сделал. Может все же как-то так?
this.__proto__ = protoObj;
..
protoObj.doSomething = function() {};
А ты ожидал, что там примитив будет, ебин? В js в таких случаях примитивы оборачиваются в объекты.
Потому что потом в некоторых случаях он может себя неочевидно вести.
Потому что это просто свойство. Оно е обязано всегда указывать на прототип, и легко может быть переопределен.
Для рефлексии есть специальные методы в Object или теперь в Reflect
*не обязано
Это не имеет значения.Можно заполифилить. Но.
Раньше это было кастомное свойство, котрое появилось в браузере.
Сейчас его утвердили в спеке, и оно поддерживается всеми, кто поддерживает es6
Но сделали это именно из прежней неразберихи.
Лучше бы не делали.
Это хуевое свойство.
Лол. Проебался там в defineProperty, переопредлять надо у объекта z, но рехультат будет тот же.
Ох щиет
Ну я на самом деле только сейчас понял, что нужно, пост жопой читал. Но у классов ещё и наследование есть, может из супер класса свойство доступно будет одно на всех.
Это ниндзя, замаскированный под самурая. Они в таких случаях даже носили в больших ножнах короткие катаны, чтобы все охуевали, как они могут.
>весь мир уже пользуется
>но сейчас я найду подводные камни и начну писать надёжное стабильное приложение на ES4
Суть в том, что оно будет определяться для каждого инстанса каждый раз.
И если ты хочешь чтобы во всех инстансах было например поле name которое хранит примитив, то у тебя этот примитив продублируется в каждый объект, а не будет храниться в прототипе.
Тепнерь представь чтоэтот примитив - строка на тысячу символов. И у тебя тысяча инстанстов.
В каждом хранится по строке в 100 символов.
А в случае с нормальным старым прототипным наследование, эта строка хранится только в прототипе, в единственном числе, а все оостальные имеют к ней доступ делегированием.
js - язык с нечеткой типизацией, поэтому на обложке книги js ниндзя нарисован самурай
баян-шутка
В костюме с дипломатом.
вот кстати сегодня по советам анонов переписал свою йобу на прототипы, брат жив
Словом. и не только примитив.
Объекты которые дефайнятся в свойства в конструкторе, тоже дефайнятся для каждого инстанса отдельно.
Не всё.
Есть вещи, которые нельзя трансплировать в ес5 целиком, потому что они не полифилятся полностью.
Прокси например.
Я об трансляции в es5
Если подходить ко всему как, что если какая-то фича не распространена по юзкейсам, то и не страшно - с этой точки зрения трансляторы вообще тогда не нужны. Всё можно писать на es5
Я не приведу пример, где я использовал бы прокси или символы, потому что я их еще не использую, ввиду неполной поддержки везде.
А юзкейс у них стандартный, всё то же самое метапрограммирование.
Если сервера твои, то просто пропиши нужные заголовки при отдааче файла, чтобы обойти cors
>джаваскрипт все запрещает на хуй
Он тебе ничего не запрещает.
Проблема в твоем окружении и архитектуре твоего решения.
Окружений много, и архитектуру решения надо подгонять под каждое.
JS не виноват в твоих проблемах.
ОС тебе например тоже не разрешает напрямую обращаться в произвольные участки памяти, говорит ли это о том, что виноват в этом какой-либо язык?
cors может мешать.
В 1 вебшторм подсвечивает синтаксис как на 1 пике, а во втором какую-то ошибку даёт.
Оба работают нормально, но красное меня раздражает в коде. В чём проблема?
ES6 в обоих включён.
В вебшторме.
мой говнокод, еще и отказывается работать если таких блоков несколько (
$(document).ready ->
$('#fields select[data-workflow-field-type=true]').on 'change', ->
val = $(':selected').val()
if val == 'select_box'
$('.options').show()
else
$('.options').hide()
http://stackoverflow.com/questions/31624567/webstorm-es6-named-import-getting-cannot-resolve-symbol-error
Вообще не то.
Какой-то баг вебшторма, короче. Обновился до последней версии и всё норм.
ЧС.
Там нить разговора была о сахарной конструкции class из es6 и ее ограничениях (в частности не возможности через нее объявлять свойства в прототипе, а только методы).
Суть объявления вручную, о котором написал ты, что и не нужен был никакой сахар для классов из es6. Он и так прекрасно эмулировался и прежде, если очень хотелось.
А так он не добавил никакого удобства, а лишь добавил путаницы для новичков.
Понял, спасибо
Щито? Прото уже является объектом на стадии прогонки кода конструктора, я только добавляю этому обьекту свойство. Ты собсно делаешь то же самое
a = (function() {
switch (b) {
case(1): return 'q';
case(2): return 'w';
}
})();
гораздо няшнее чем
switch (b) {
case(1):
a = 'q';
break;
case(2):
a = 'w';
break;
}
>>724223
>>724224
Что это? Типа вместо кейса присвоить сразу массив и брать значение по индексу? Так 1 и 2 это для примера, у меня в задаче свитчится по строке, и кейсов много. Мне показалось изящнее возвращать в свитче нужное значение, от брейков эстетически воротило всегда.
Почему троллировать.
Чем тебе не нравится вариант с ключом объекта?
У свитча есть лимит кейсов по производительности.
И вообще они на мой взгляд имеют смысл только при каком-то таком
switch(true) {
case (/..some regexp../ig).test(string): some.action
}
Уже нагуглил статеек, курю, спасибо.
Он второй по популярности после экспресс, полно проектов на нем.
>какие подводные камни?
Это типичный рельсо/джангоподобный фреймворк. Недостаток один - много магии. Иногда она перекрывает все преимущества. Но для написания магазина/блога это отличный вариант.
>Недостаток один - много магии
Ты имеешь ввиду танцев с бубном?
>Но для написания магазина/блога это отличный вариант.
А что-то покрупнее? У меня в голове давненько крутится идея одного стартапа, думал на sails его запилить, потому что ^он охуенен^ я более-менее хорошо знаю JS и мне впадлу учить другой язык.
Бля, разметку спорол. Ну да пихуй.
>Ты имеешь ввиду танцев с бубном?
Нет. Я имею ввиду то, что непонятно, как оно работает под капотом. Оно работает и всё тут, а как - неясно. На экспрессе ты сам составляешь структуру от начала до конца, а здесь просто обмазываем готовое. На Сейлс быстрей и проще разработка, но непонятно, почему и как идет запрос, например.
>А что-то покрупнее? У меня в голове давненько крутится идея одного стартапа
Пили, если это связанно с вебом. Сейлс хорошо подходит для веба, но пилить бэк для онлайн-игры я бы на нем не стал.
Не научит ли он меня "плохому" подходу и стрельбе в ноги?
Надо ли читать книги или статей и лекций по нему в инете достаточно?
помогите с задачей
Реализуйте и экспортируйте функцию invertCase, которая меняет в строке регистр каждой буквы, на противоположный.
http://pastebin.com/mGwjWD2b
>str === str.toUpperCase()
ту аппер кейс – это функция, которая возвращает всю строку в верхнем регистре. Ты во-первых сравниваешь 1 букву с целой строкой, а во-вторых посреди кода изменяешь входную строку. В документации же написано, что эта функция делает, ты в глаза долбишься?
Тебе подойдёт условие
if (str =< 'Z' && str >= 'A')
чтобы узнать, в верхнем ли регистре символ. Если в js так можно сравнивать чары, на самом деле я забыл.
>Подойдет ли JS как первый ЯП для ньюфага?
Да, порог вхождения минимален.
>Не научит ли он меня "плохому" подходу и стрельбе в ноги?
Может научить, поэтому
>Надо ли читать книги
Обязательно
Реглярки хуйня из-под коня, если можно обойтись без них, никогда их не используй.
спасибо
Сгенерируй строку на 100000 символов и проверь.
Да и к тому же если их использовать в более сложных случаях, то они чаще всего превращаются в нечитаемый пиздец, так что не нужно приучаться.
http://pastebin.com/M2kA5AqC без регулярки
http://pastebin.com/bFetwkV3 еще без регулярки
У меня первое решение оказалось быстрее
Ничего не делают, можешь опускать.
В данном случае ничего, но в некоторых похожих случаях они необходимы, например если хочешь обратиться к литералу объекта или функции, как к именованным.
{'foo':'bar'}['foo'] //Error
({'foo':'bar'})['foo'] //'bar'
function() { return 'foo' }() //Error
(function() { return 'foo' })() //'foo'
Я пытаюсь это убрать, допустим, пишу
arr[0].style.animation = "none"
но, анимация у этого слайда не срабатывает больше вообще.
Как можно сделать, чтобы она не срабатывала, только при загрузке страницы? (документ/виндоу.onload и addEventListener('load') не сработали)
Где он жквери хоть что-то сказал?
>arr[0].style.animation
Не делай так.
Запили отдельный сss класс где ты резетишь какие тебе надо параметры, и навесь его на нужны элемент, а потом убери, когда надо.
Уже была
какие
Вы видите копию треда, сохраненную 8 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.