24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Ну, раз тут тред ньюфажеских поделий, то зацените мое, тем более, что я по поводу этого задания отписывался несколько тредов назад. Там есть один баг, мне его впадлу пофиксить, уже неактуально. Может, потом. http://artemperchyk.github.io/Solitaire/диванон лигивон
>>737888 Ну это нормально, там не проверяется раскладка на "проходимость". Как и в реальном пасьянсе. Знаю, что в некоторых реализациях это запилено, но хуй знает, как.
>>737892 Калькулятор был запилен за два дня на коленке, я там нихуя не дебажил толком. Файлы - ну там я по неопытности захуярил в одну папку и чай с моккой для тестов, и бутстрап, который вообще там не использовался, ну ты понял. Там только три файла плюс тесты собственно моего кода.
>>737896 Сапер тоже недопиленный, я, конечно, понимаю, что я показываю себя ленивым пидором, но мне это задание страшно не понравилось и я его сделал тупо для галочки.
>>737927 Возможно, я просто очень сильно туплю, но ведь реализация стопки у меня точно такая же, как и во всех виденных мной реализациях (про вариацию с тремя картами не говорим, речь не о том). Т.е. клацнул, открыл карту, есть куда перенести - перенес, нет - клацнул на другую карту и так пока всю стопку не прокрутишь.
http://learn.javascript.ru/ Я какой-то тупой, объясните где здесь найти задания по JavaScript на этом сайте (мне сказали что искать там)? Раздел "Тесты знаний" - не то.
>>737970 Ааа, теперь понял. Если честно, мне это в голову вообще ни разу не приходило. Причем там еще сделал для простоты так, что карта при перетаскивании на один из четырех верхних дивов просто исчезает, а див получает ее бэкграунд. Возможно, когда руки дойдут, переделаю а сейчас ангуляр учу
Многие играли в prison architect или хотя бы слышали. Так вот скажите, как вообще можно сделать подобную игру? Js может с этим справиться или кроме него надо будет ещё какие-то языки зубрить? Просто хочется когда-то попробовать сделать, что-то подобное.
Джавскриптаны, мне вот интересно стало сколько приходится писать в среднем в день кода. Я прошелся по прошлым проектам и по текущему, и получается примерно 600-800 LOC в день, не считая стилей. Если дедлайны более демократичные, то моя продуктивность падает до ~400 в день. А на пет проектах вовсе по 100-200, если каждый день писать, но там трудно посчитать из-за длительных перерывов между сессиями. Кто имеет дело с коммерческим продакшеном, какой, в среднем, аутпут в день?
>>738019 Разве это всё напрямую не зависит от сложности кода? Ты же блять вроде как не на конвейере помидоры проверяешь, зачем продуктивность сравнивать?
>>738021 Лол, какая нахуй сложность кода в вебе. Мы тут не софт к автопилотам пишем, 90% задач логически однообразны и решения варьируются от стака к стаку.
Захотел на досуге заняться js, решил делать простенькую игру с мультиплеером. Вот я начал с того, что посмотрел несколько книжечек и видео о node.js, но теперь вопрос: 1. Как организовать передачу данных в RT игре? Передавать клиентам информацию о статусах всех объектов или только то, что изменилось с последней отправки и сделать в клиенте функцию, которая перерисует динамические элементы? 2. Как лучше взяться за примитивную графику типа бегающих кругов? Изучать create.js и подобные или можно обойтись? 3. Как сделать так, чтобы было несколько игровых комнат и как лучше отличать игроков друг от друга?
>>738071 Всё, что касается реал тайм, комнат и игроков - socket.io. По поводу примитивной графики это зависит от того, насколько она, собственно, примитивна. Есть много геймдев движков, где реализована базовая физика и прочие няшности.
>>737998 Ну в юнити и в других движках js есть как язык для behavior-скриптов, запросто можно делать. Только с 2d на юнити немного туго как по мне ну я немного тупой.
>>738074 Я сокет уже изучаю, но ещë не додумался до логики передачи данных в онлайн-играх, в смысле каждый раз передавать абсолютные координаты или движения? Не могу на глаз оценить, какие нагрузки могут не создавать лагов и какая будет задержка между обновлениями.
>>738082 Ну я сам так-то писал только статичные игры, тобишь морской бой там, такое. Но я думаю, что >каждый раз передавать абсолютные координаты или движения по другому никак, если у тебя реал тайм обновления. По поводу нагрузок я бы не переживал особо, джс довольно быстрый язык и реальным ботлнеком в простой игре будет только коннект, который ты контроллировать не можешь всё равно. Я читал как-то статейку, кстати, где чувак описывал как на сокетах хендлить возможный делей. Но это оптимизация.
>>738082 риал тайм -> udp. udp -> потери. Потери -> только абсолютные величины. Полагаю, самих играх обычно делаются всякие интерполяции, чтобы игрока не "телепортировать", а именно подвинуть, со всеми вытекающими коллижнами и т.д. Но я диванный, тоже только статичное делал, а риалтайм в качестве эксперимента лишь поигрался маленько.
>>738086 Коннект коннектом, но какие-то умные и магические алгоритмы для оптимизации всего этого есть.
Как можно передать браузеру имя файла без дополнительных запросов со стороны клиента, если я стримлю видео банально через readStream.pipe(response) (либо с диска, либо перенаправляю с того же ютуба)? Пока что фф мне выдаёт в качестве названия страницы последний путь в path'e (aaa.com/aaa/bbb/ccc -> ccc), и при попытки сохранить файл, соответственно, то же самое (ccc.mp4). Content-Disposition не влияет, да и со стримингом он, вроде бы, и не должен работать. В самом запросе названия нет, оно по айдишнику берётся, т.е. мне со стороны нужно его впихнуть как-то.
>>738357 Именно в твоем случае - да. Второй вариант это просто функциональный вариант простой компоненты, которая только отрисовывает что-то беря из пропсов.
Запустил у себя на шинде сервер, по локалхост:3000 захожу, по 192.168.1.x:3000 не захожу, по внешнему тоже. Открыл порт, выключил файрвол винды - та же ситуация. Что я делаю не так?
>>738541 Какого хуя в es6 классах нет ебучих полей. Почему я должен выебываться с инициализацией поля каждому объекту и тратить память, если он мне нужен в прототипе. Или писать в прототип в обход сахарной конструкции. Зачем она вообще нужна тогда?
Я не понимаю, что помешало позволить писать class { ololo: 'some string' static kokok: 100 }
>>738666 Проверять типы через декораторы это костыль, а не сами декораторы. Тайпскрипт это не костыль вообще, это компилируемый в жс язык, каких сотни тысяч уже.
>>738841 >div.querySelector('.memoryElem').querySelector('.memoryAnswer') Умоляю, скажи честно, ты болен чем-либо или ты не умеешь в селекторы? У тебя же ебанистический оверхед всюду.
>>738855 >ну это понятно, только зачем, если эти функции только там нужны Ты не понимаешь, что ты в цикле создаешь МНОГО ОДИНАКОВЫХ ФУНКЦИЙ. Каждая занимает память, при этом каждая функция идентична.
>>738855 >только зачем, если эти функции только там нужны В твоей квартире есть дверной звонок и дворецкий должен открывать дверь каждому гостю, позвонившему в этот звонок. Вместо того, чтобы использовать одного и того же дворецкого, ты нанимаешь по дворецкому на каждого гостя.
Сап, паrни! Может мне кто объяснить в чем прикол __proto__ и prototype. Типо __proto__ - содержит все свойства, того чего он наследует, а prototype - конструктор и соответственно __proto__? Честно все эти learn'ы и хабры - читаю - нифига понять не могу
>>738864 __proto__ свойство объекта, указывает на его прототип.
2ch.__proto__ то же самое что Object.getPrototypeOf(2ch)
нежелательно использовать __proto__ это моветон. Его впилили в стандарт только потому что это было недокументированное свойсвто поддерживаемое всеми браузерами, а появилось в них, раньше рефлекии. Для доступа к прототипу используй специальные функции. Тем более что __proto__ обычное поле и может быть переопределено.
prototype свойство конструктора, описывающее прототип для будущего объекта, который конструрирует твой конструктор.
>>738872 prototype - для конструктора. в нем хранится то же самое, что ты получаешь потом через __proto__ Только прото ты используешь из готового объекта, а прототайп с другой стороны, еще до инициализации объекта.
>>738187 >Как можно передать браузеру имя файла без дополнительных запросов со стороны клиента Никак, представь, что будет, если браузер начнет рыскать по файлам пользователя.
Жсоны, есть задача. Надо сязать пользователей с городами, как показано на пикче. Использовать надо jquery. Рядом с каждым пользователем есть кнопка "добавить город" по нажатию которой появляются два дропдауна с выбором страны и города. Данные эти дропдауны получают по аяксу. Так как я с жикьюери мало работал, то вот мои вопросы: 1. где хранить шаблон(хтмл) для этих дропдаунов, так как их надо будет добавлять много. 2. какими методами надо будет сделать связь этих дропдаунов с пользователями, чтобы передать правильную инфу 3. как вставить их в нужное место на странице? Надо будет делать какие то специальные имена классов в которых будет пристутствовать userId?
>>738958 Лол, каким файлам пользователя. Я просто хочу, чтобы вместе со стримом видео с сервера как-то пришло и его название, чтобы при "save as" или открытии этого видео в отдельно вкладке (т.е. без html страницы, где оно вставлено), это название было видно.
Или так нельзя, и единственный выход это дополнительная кнопка "скачать", которая там будет выставлять нужное имя файла?
>>738997 Я же написал конкретные вопросы, которые мне не понятны. Подскажи какой нибудь гайд чтобы я почитал и решил эту проблему.
>>738999 Пользователи с бекэнда приходят. Ну и вообще в конце таблицы еще есть кнопочка применить и уже на стороне сервера пользователи будут привязываться к городам. А мне надо туда отправить список айди городов связанных с пользователями, но это я знаю как сделать.
Поясните за загрузку файлов на сервер аяксом. Мне нужно его сконвертить в строку а потом отправить как значение в жсон объекте? Или отдельно отправлять? Просто у меня еще данные из формы передаются.
Анон, поясни, допустим я захочу свою срань на хостинг залить, чтобы показать кому - нибудь, мне для этого нужно домен регистрировать или можно будет как - то по ip зайти?
>>739229 Что значит "надо", тебя что палкой пиздят и заставляют говнокод писать? Помимо прочего, если ты собираешься использовать резалты аякс запроса внутри этого компонента, то ты получишь охуенный рекурсионный фейл.
>>739254 Если у тебя нету стейтменеджера какого-то, т.е. флакс реализации какой-то (редакс, альт, рефлакс, етц) то ты используешь локальный стейт компонента, т.е. this.state = { key: value }, ну или getInitialState() если ты не как порядочный человек классы объявляешь. Твой компонент загружается, ты в componentDidMount() вызываешь свой аджах, success = (response) => this.setState({value: response}). И других вариантов особо нет, рендер занимается исключительно отображением данных.
Любое обновление стейта через setState вызывает ре-рендер компоненета. Если тебе новые данные нужны по таймауту, скажем апдейты раз в минуту, то ты просто можешь в CDM (didMount) установить setInterval() и получать апдейты регулярно. А если по юзер реквесту, то ты делаешь отдельный метод, например getUpdates(), не забываешь его биндить в конструкторе this.getUpdates = ::this.getUpdates, и по клику на нужные тебе элемент, onClick={this.getUpdates} ты выполняешь нужный тебе реквест на апдейты.
>>739272 >А если по юзер реквесту, то ты делаешь отдельный метод, например getUpdates(), не забываешь его биндить в конструкторе this.getUpdates = ::this.getUpdates, и по клику на нужные тебе элемент, onClick={this.getUpdates} ты выполняешь нужный тебе реквест на апдейты.
У меня бугурт, что в JS так и нет полноценного кортежа. Нельзя написать myFunc(x instanceof Array ? ...x : x); так как ...x не может существовать "самостоятельно"
Как можно писать на js и не знать паттерна > data && data.pos && data.pos.x хотя бы в теле условия? Кстати, от него же вроде как-то хотели избавиться в ES7?
Как считаете, wasm убьёт JS? Эйх говорит, что нет. Но он мне сейчас напоминает Януковича, который сам вступил в заговор против себя и вот-вот всех переиграет.
>>739644 Он ничем не отличается же. Выполнение не ускорится. Ускорится лишь парсинг, потому что wasm - суть ast Исполняться будет в той же vm, как и обычный js При этом wasm слишком низкоуровневый, ив него еще даже не завезли работу с объектами. А это значит что к окружению не подцепиться, пока еще.
С тем же успехом можно и сейчас транспайлить из других языков в js, максимально оптимизируя код по asm.js Это одно и тоже. wasm не приносит ничего нового, чего нет или не будет в обычном js
>>739677 >Выполнение не ускорится. Если не считать что жс - тормозное говнище, которое даже v8 не вытаскивает, то да. На практике - нет, такой хуиткой можно будет достигнуть перформанса явы.
>>739685 >пиши оптимизированный код сейчас, и будет тоже самое. Дай мне возможность не вычислять типы в рантайме и ебаться с указателями как в плюсах вместо копирований на каждый пук - напишу. >wasm это блядь просто AST Это в первую очередь возможность эскейпнуться от сборщиков мусора, юзать многопоточность и писать то, что жс не позволяет.
>>739695 Потому что ему пичот. Раньше можно было сказать - да, интерпритируемый, не корректное сравнение. Теперь он так же компилируется в байткод, но ему не помогает.
>>739698 >Это в первую очередь возможность эскейпнуться от сборщиков мусора, юзать многопоточность и писать то, что жс не позволяет. Ты поехавший? Этого не будет.
Эскейпиться от GC ты и сейчас можешь, используй типизированные массивы.
>Дай мне возможность не вычислять типы в рантайме wasm их так же будет вычислять в рантайме.
>>739698 >не вычислять типы в рантайме >эскейпнуться от сборщиков мусора >юзать многопоточность >писать то, что жс не позволяет. Представил твою фрустрацию, когда ты выйдет wasm. Спасибо. Ты сделал мой вечер.
>>739698 >не вычислять типы в рантайме Всегда будет. Для статической компайл-тайм есть препроцессоры.
>сборщиков мусора Пили поверх типизированных массивов свои типы данных. Там тебе голая память, на здоровье.
>юзать многопоточность Она предоставляется окружением. В браузерах есть webworkers У ноды нет и не планируется многопоточности, откуда wasm ее возьмет по-твоему? У ноды есть модули реализующие кластер из процессо.
>писать то, что жс не позволяет. WebAssembly не даст писать ничего, чего не позволяет писать js. Он даст лишь иной синтаксис, для представления скриптов, удобный машине,а не человеку. Всё.
Т.е. после появление wasm можно будет наконец писать клиентские html5-игры, которые каждый школьник не сможет хакнуть из консоли или спиздить для показа на другом домене?
>>739745 p.s. Я к тому, что будет ли возможность представлять исполняемую в браузере огику каким-то байт-кодом, а не человекочитаемым скриптом и не уродливым обфускатом.
>>739761 Компилятор это ты. Если ты пишешь ебанистический код, где в циклах создаешь замыкания, и ебашишь метапрограммированием повсюду. То в какой бы wasm ты чего не переводил - ничего не измениться.
>>739768 Так они ничем не защищены же. Это тот же asm.js ином представлении. Из wasm легко переводится в js А уж деобсфукация js это сам понимаешь, зависит от объема и логики.
>>739771 Нет, разница всё-таки есть. Ты сложную программу и на С++ (asm), и на Java (байткод) заебешься восстанавливать из каши, которая получается после компиляции. Почему такого же не сделать для JS.
>>739768 Чтобы перевести из JS в WASM, тебе надо преобразовать свой js код в asm.js совместимый. А для этого придется отказаться от многих вещей, и использовать лишь надможество js.
>>739790 >Как бы только JS тут не отстал. Пока все будут придумывать как им изъебнуться чтобы представить свои стипы и стркутуры из других языков, в типы и структуры на js, в то время когда в js они уже представлены? Конечно, как бы не отстал, да..
Весь этот хайп он именно хайп. Все думают что вот будет, кококок.
Суть в том, что wasm не приносит никаких новых возможностей, для того, чтобы компилировать из других языков в js. Это уже сейчас можно делать. Например есть emscripten. Он и останется, только на выходе будет байткод.
Если бы кому-то надо было компилировать в js Хаскель\руби\го\питон\етк, то и компилировали бы уже давно.
Но никому не надо. А если и есть какие-то поделки, то они все тянут с собою ебанистические рантаймы, и ими никто не пользуется в серьез.
Все так и останется.
Wasm нужен именно для компияторов. ЧТобы использвовать их оптимизации при алгоритмах с числодроблениями например.
>>739810 Алсо, вместе с wasm придут расширения спеки, типа совместимых дататайпов с низкоуровневыми языками, или SIMD Но пользоваться ими можно будет и из js
Те кому и сейчас нужны оптимизации и так пишут оптмизированный код, и задействую всякие ништяки типа TypedArray которые есть уже давно.
>>739879 В новом JS появился новый пиздец: паттерны наподобие Array.prototype[Symbol.iterator]. Раньше нубов пугали с помощью [].slice.call(arguments), теперь будут вот этим.
>>739899 >а [].slice.call(arguments) простое делегирование по-моему, главная уловка в том, что новички не знают о ебанутой природе объекта arguments, который не массив, но с параметром length.
>>739900 Это описывается в каждом учебнике. Так что если какой-то новичок этого не знает, то он какой-то странный новичок.
Уловкой тут было бы правильно назвать, что конструкция >[].slice.call(arguments) на каждый вызов будет создавать экземпляр объекта И вернее использовать Array.prototype,slice.call
Это разумеется мелочь, и в отдельных случаях экономия на спичках. Но выходит так, что опуская подобные мелочи в самом начале, люди во-первых не до конца понимают архитектуру языка, а во-вторых приучаются писать плохой код, потому что во-первых.
То же самое с замыканиями и прочими вещами. На хеллоу-вордах, много замыканий не страшно разумеется. Но им кто-то видимо говорит это так. что это нес страшно вовсе, потому как потом они запиливают эти замыкания в циклах, на каждый чих и все такое прочее.
Переучиваться потом сложнее, чем понимать сразу.
К слову слайсить arguments тоже нет необходимости всегда, а только лишь тогда, когда тебе нужен этот аргументс полностью как массив. Но я часто видел, как люди слайсят его и просто, чтобы например получить последний аргумент (зачем-то).
Печально то, что многие не вникают в суть той или иной конструкции, да.
Добавил бы статическую типизацию и расширенный ООП уровня шарпа. Тайпскрипт идеален, жалко его нужно компилировать и пока нет движков, выполняющих его напрямую.
>>739928 В чем проблема компиляции? Тот же шап, нужно компилировать в IL, который выполняет CLR, тот же механизм ts->js->browser/node. SystemJS, кстати, может загружать .ts файлы, и компилировать их уже в браузере.
Ангуларобоги, подскажите. По нажатию на Enter отправляю сообщения в чат и делаю содержимое инпута равным "", курсор после нажатия перескакивает на следующую строку. Как изменить поведение курсора, чтобы он оставался на месте после нажатия на энтер?
Сап. Насколько встроенные методы завязаны на встроенные объекты?
Если я перепиливаю весь рантайм, меняю прототипы у встроенных объектов и все такое прочее. Есть ли вероятность того, что где-то какой-то метод завязан на метод встроенного объекта, а не использует его через какую-то внутреннею ссылку?
Проще говоря, если я например переопределю Array.prototype.sort Есть ли вероятность что сломается какой нибудь Element.prototype.someMethod ?
>>739961 >Вместо этого вынеси один раз memoryList.style в переменную и уже дальше используй style.display Это копейки рядом с временем операции по применению любого стиля.
>>739949 Спасибо, решил проблему. Следующий вопрос, необходимо по комбинации shift+enter не слать сообщение в чате, а переходить на следующую строку в чате. Как сделать?
>>739928 А я бы ничего бы не менял. Js вполне логичен, если сесть и разобраться в нем самом, а не сравнивать с другими яп и тем как привык, как не привык. Но мое мнение никому не интересно, поэтому и выходит что могу на двачике только его писать
>>740005 А меня например коробит, от нововведеной конструкции class которая не нужна, а еще от испокон веков поведшейся концепции хранить конструктор отдельно от прототипа.
Должно быть что-то типа Object.new () { return Object.create(this) }
Как раз это бы было максимально логично. И так, чтобы инстансить можно было любой объект. А если в нем не прописан конструктор, то возвращается именно Object.create(this)
>>740007 >меня например коробит, от нововведеной конструкции class которая не нужна Недавно переделал все фабрики в своём nodejs-проекте под class'ы - код стал намного чище. Стало можно без изворотов делать многоуровневое наследование.
>>740011 Я тебе тоже самое могу сказать. Запиши мне с помощью class В прототип поле field со значением true
Или в статик поле запиши?
А наследование реализуется как и прежде. Только раньше можно было запилить удобную обертку, и она бы не выбивалась из общей концепции. А этот сахар новомодный, как раз выбивается, потому что он не повторяет поведения.
>>737862 (OP) Жаваскриптаны, оцените хуйню которую я написал на жкверях. https://jsfiddle.net/Lk7w309j/ Код вначале скрипта - плагин на колесо мыши (не нашел как иначе добавить), дальше мой. Сносно или пиздец?
>>739680 >>739644 Господи, все эти дилетанты, которые абсолютно не понимают как работают браузеры, которые абсолютно не понимают зачем и почему есть жс. Кичиться какими-то бэнчмарками, но не знать про то, что бОльшую часть времени выполняются рендер, обращения к дому и к прочим браузерным апи.
>>740156 >в тестах тестируют node js >но не знать про то, что бОльшую часть времени выполняются рендер, обращения к дому и к прочим браузерным апи. >все дилетанты Подмойся.
>>740167 Я про отсутствие фундаментальных знаний. Вот и ты не понимаешь как нода работает, поэтому бэнчмарки как показатель ПРОИЗВОДИТЕЛЬНОСТИ можешь засунуть куда подальше вместе с: > transliterated from Mike Pall's Lua program > transliterated from Rick Branson's Ruby program
>>740177 Я все прекрасно понимаю. Но спорить с персонажем с завышенным ЧСВ, который не предоставил опровержения бенчам (хотя ведь если он такой всезнающий, для него бы не составило труда переписать тест под ноду, и доказать свою правоту по в-рослому, а не кукареканиями - вы врееетии) и поклоняется каким-то аффторитетам, типа Крокфорда. О чем с тобою говорить.
Поясните по JWT. Данные, которые находятся в теле, довольно предугадываемые. Что мешает злоумышленнику, зная вход, выход и алгоритм, подобрать наш секрет и подписывать себе админские токены?
>>740214 Самое простое - отксорить. Конечно, с hmac не пройдет, но первая интуитивная мысль - почему бы и нет? Сейчас читнул SO, говорят, можно только брутфорсом.
>>740225 >Сейчас читнул SO, говорят, можно только брутфорсом. В том то и дело, ты представляешь себе возможным брутфорсить JWT токен со сроком годности? С учетом того, как легко присечь подобного рода брутфорс, заморачиваться на эту тему не стоит.
>>740239 Интересно, я наверное просто не в теме, я помню читал статью про client side bruteforce и она по сути сводилась к тому, что это стандартный брутфорс, просто ты не отсылаешь токены через кукисы атакующей машины, а используешь клиента для выполнения атаки. Я не совсем понимаю, как ты без сервера узнаешь что токен прошел верификацию, когда сам факт верификации объявляется сервером?
>>740245 Так верификация это просто декодирование, используя входное сообщение, алгоритм и секрет. Делаем hmac_decode, пока не получим выходной json. Конечно, есть вероятность коллизии, что hmac_decode(secret1) = hmac_decode(secret2). Но мы даже до нее вряд ли сможем забрутить.
Посони, кажите где косячу в скрипте? Надо получить среднее арифметическое, значения переменных приходят корректно, но полученное значение не выводит в <p> http://pastebin.com/k160tNZn мимопитонист
Есть html таблица, из неё нужно вытащить данные, которые находятся в ячейках и сформировать ассоциативный массив, после чего сформировать xml страницу с этими данными. Как это осуществить, аноны?
Тут чувак в презентации говорит, мол если юзать реакт с жуквери, то виртуал дом похерится, потому что реакт не будет понимать, где свои изменения, а где жукверевские:
>>740515 Это значит, что реакт монополизирует ДОМ. Если кто-то написал что-то на реакте. А потом кто-то захотел, что-то допилить, не затрагивая всю архитектуру (добавить ебаных снежинок, лол, не суть что). То это все пойдет по пизде?
>>740542 >>740534 Это означает именно монополизацию. То с чем так долго боролись, по типу модификаци нативных обхектов, расширения\изменения нативных прототипов и все такое прочее, что мешало бы в проекте использовать сторонние модули, или дополнять проект не зная third_party библиотек. Все это вылезло в ином месте.
>>740547 Я бы не рассматривал это как что-то ужасное. Времена, когда надо было добавлять свистоперделки на свой сайт на народе уже давно прошли. И для задач простого представления информации давно уже придумали кучу элегантных решений.
Но сейчас то задачи сводятся к другому, люди хотят видеть полное приложение, к чему хтмл и дом приспособлены очень плохо, они не создавались для этого. Для этого и придумывают такие вещи как виртульный дом, и реакты, чтобы создать некую систему взаимодействия и это не предусматривает кучу костылей.
В любом случае стек и инструменты это твой (или твоего начальства) выбор.
>>740534 >будет беспомощный лох. Если я заказываю проект, с учетом того, что правок в его архитектуре не будет, но я может в будущем захочу допилить там лишнюю формочку, или добавить выпадающую менюшку, а так как я не вау-программист, и мои знания ограничиваются ванилой и джеквери. Я плачу за эту работу, и мне запиливают так, что я потом нихуя не смогу сделать не нанимая кого-то снова - это не круто.
Чтобы починить\заменить вилку от провода, мне не нужно знать физику\электрику.
Чтобы заменить масло или ремень, не нужно быть автослесарем.
>>740558 Парадокс в том, что когда всякого рода монополизацию делали с помощью неразрекламированных продуктов, хотя точно так же отлично документированных. Сообщество взрывалось - да как так можно. Как только монополизацию произвели корпорации - сообщество проглотило и попросило еще.
Ну вот что за хуйню он тут лепит? Монополия, блядь. Вообще охуеть. Запилят тебе на бекбоне с кофескриптом в *.eco темплейтах приложение и захочется тебе добавить завтра новый кусок к нему, знаешь что ты будешь делать? Правильно, будешь ебашить бекбон на кофе в ико темплейтах или с нуля всё переписывать под то, что тебе надо. А знаешь что будет если тебе на ангуларе запилят такое приложение? Всё верно, будешь хуярить на ангуларе, может ещё и тайпскриптец подтянуть надо будет. Или, если ты не "вау-программист" будешь искать того, кто знает стак который у тебя в продакшене. Всегда так было и всегда так будет.
>>740558 >к чему хтмл и дом приспособлены очень плохо Чем это? Все тормоза не из-за них, а из-за возможностей которые они предоставляют. А эти возможности очень широкие.
Если ебашить динамические интерфейсы на какой-нибудь нативной либе, то там тебе придется все примитивы реализовывать самому, и рендерить самому, когда тебе виджетов будет не хватать.
Собственно никто тебе не мешает точно так же делать и в вебе. Например различные онлайн-офисы, не используют для рендеринга дом, потому что это не рационально. Но то же самое было бы и в нативных гуишных либах, точно так же отрисовывали бы на контекстах в ручную.
>>740534 >>740547 Блять, поехавшие. Шедоу-ДОМ это неофициальный стандарт, который скоро будут поддерживать все браузеры. Второй ангулар тоже в него может.
>>740575 Это инструменты статичного веба, который еще сам Тим Бернес-Ли придумал. И тормоза от того как костылями с этим борются. Канвас это тоже костыль.
>>740582 Конечно было. Инструментов меньше в целом было меньше, поэтому менее разношёрстные стаки были, а по сути если у тебя было extjs приложение, то extjs бы ты и писал. Короче ни о чем вискас, я пошел пить кофе.
>>740598 shadow dom - это дом. со всеми вытекаюшими. вдом - это объект, который только биндится и обновляет куски настоящего дома.
С тем же успехом, ты мог бы сам управлять обычным домом. Но совсеременный программист слишком глуп для этого, ему нужно чтобы кто-то делал это за него, чтобы он не косячил.
Когда shadow dom придет всюду, те кто сейчас не пользуются обычным домом, так же не будут пользоваться теневым. Будут так же использовать такие же прослойки как реакт, потому что с домом они обращаться не умеют.
>>740604 >Будут так же использовать такие же прослойки как реакт, потому что с домом они обращаться не умеют А я и не против. Только я предпочитаю думать, что это дополнительный уровень абстракции для удобства, а не я тупой. мимопроходил
>>740606 Давай поебемся) я буду нежно и страстно целовать тебя, делать массаж, гладить твою нежную попку и теребить языком соски. Потом войду в тебя, мы сольемся в единый организм, состоящий из оргазма, наслаждения, похоти, чувств, тишины, тоски по детству, низости первородного греха, голубого неба, ветра в поле, ночного костра..затем я поцелую тебя в лоб, прижму к себе и ты укутаешься в мои объятия, предавшись миру Морфия. Я же включу недосмотренный тайтл и добью оставшиеся 5 серий. Выключив ноутбук, я, ощутив тепло твоего тела и услышав размеренное спокойной дыхание, постараюсь уснуть.
>>739891 [].slice.call(arguments) - это вызов метода slice у array.prototype для преобразования массивоподобного объекта в массив, да? Я недавно js начал изучать
>>740885 Ты пытаешся использовать на ходу анонимную функцию, не присваивая ее никуда, и не используя в качестве колбека. Скобочный блок возвращает последний результат, поэтому оно будет работать. А плюсик это вообще приведение к числу так что я хз что там у тебя работает
>>740891 >Ты пытаешся использовать на ходу анонимную функцию, не присваивая ее никуда, и не используя в качестве колбека. И что? Ты когда считаешь 1+2 никуда не присваивая, или используешь любой литерал в репле, это же работает.
>Скобочный блок возвращает последний результат, поэтому оно будет работать. Подтяни свои знания Во=первых стрелочные функции, а что такое скобочный блок я не знаю. А во-вторых ()=>{10} не вернет тебе 10 Авто-ретурн работает только для однострочных функций.
>>740891 >>740892 То есть по-вашему нормально, что > var x = eval('100'); // x = 100 работает, а >var x = eval('function(){}'); // SyntaxError не работает?
>>740909 Ты получаешь ошибку потому что это поведение бессмысленно. Ты создаешь анонимную функцию, не присваиваия ее в переменную и не в качестве коллбека. То есть ее невозможно вызвать вринципе, к ней нет доступа.
>>740914 >бессмысленно Это твое существование бессмысленно. Только посмотрите на него. Изобрели компиляторы, которые оценивают смысл написанного программистом кода.
>>740913 Да это понятно. Просто забавное поведение. Хочется докопаться до причины. Arrow же пропускает. Мне кажется либо это arrow забыли не пропускать, либо наоборот, осталось легаси какое-то.
>>740954 Никакой чертовщины. Создать пустой объект дешевле, чем запрашивать цепочку из Array > prototype > slice или по-твоему как поля ищутся в объекте. Цепочка вызова никак не компилируется в одну ссылку, потому что никогда не известно куда будет ссылаться эта цепочка в следующий момент. Язык динамический же.
>>740958 >Создать пустой объект дешевле, чем запрашивать цепочку из Array > prototype > slice По твоему в случае вызова метода из объекта, он не обращается к prototype?
>>740995 >>740987 Еще раз, логика в том, что при вызове метода объекта, если не указана прямая ссылка, то обращение идет к prototype. Только в случае прямого присвоения (в фабрике) не будет цепочки прототипов. Но будет оверхед на ссылку (4 байта, вроде бы).
Почему let так странно работает в заголовке цикла? В других языках эта переменная тоже новая каждый проход? Как теперь ловить новичков на собеседованиях.
for (let i = 0; i < 5; i++) { setTimeout(()=> console.log(i), i*10); // 0, 1, 2, 3, 4 }
>>740998 В случае фабрики - да, поэтому фабрика лучше, если объектов меньше 50 тысяч и быстродействие важнее памяти. В случае же чистого быстродействия без создания объекта прямая ссылка, естественно, выиграет.
>>741015 ты вообще не понял о чем я говорю. каждый проход цикла i получается новая. нельзя ошибочно сослаться на её устаревшее значение в асинхронной функции как в случае с var.
>>741018 Потому что в случае с var в момент вызова твоей отложенной по таймауту функции твоя переменная уже изменена. Там нет никакой ошибки. Ошибка в твоем не понимани как замыкаются области видимости.
Начал изучать JS по сайту learn.javascript.ru , остановился на одном задании и никак не мог его решить, посмотрел в ответ на схему решения, а до этого попытался понять логику и составить какой-то алгоритм решения "на бумаге", получилось что-то такое:
1) Создать интервал (Number) от 2 до 10, с помощью цикла for: for (Number = 2; Number <= 10; Number++)
2) Создать второй интервал чисел от 2 до Number-1 c помощью цикла for: for (i = 2; i<= Number-1; i++)
3) Как-то с помощью этих циклов начать делить Number на i и проверять условие: if (Number % i !== 0) т.е "условие выполняется если Number не делится на i без остатка" и выводятся alert(Number) т.е так называемые простые числа.
В схеме из решения написано "проверить, делится ли число i на какое-либо из чисел до него". И я это просто осмыслить не могу немного, как это работает вообще и как это понять. Всегда была проблема (в школе на информатике) с циклами и я не могу представить одновременную работу двух циклов сразу да и вообще в представлении каких-то логических штук у меня вечно проблемы, нихуя не понимаю, зато другие это решают без проблем а я выдумываю что-то непонятное.
>>741042 Если есть сложности с пониманием алгоритма, прогони его вручную на бумаге. Типа вот у нас есть Number=2 из первого цикла, второй цикл будет проходит от 2 до 1, то есть ни одного раза; Number=3, i от 2 до 2, делится на 2? нет, значит простое и так далее.
кстати при таких фигурных скобках второй цикл возвращается к первому, а не переходит на if (только потом уже начинает переходить) и этого я тоже не пойму, почему так?
>>741047 Гугли решето эратосфена. Когда-то задали подобное на практичной и пока у всех были пиздецкие нагрузки на обработку тысяч чисел, мне один зракомый сказал о решете
>>741009 >массив перебираешь? Читал, что индекс это плохо Массив перебирать по индексу это вполне ок, map и forEach в любом случае перебирают по индексу.
>>741175 Да конечно можно индекс, какая разница. Тебе нужен уникальный идентификатор, просто обычно данные редактируются и потом сабмитятся обратно на сервер, поэтому всегда есть айди. Если у тебя просто шоу каких-то фиксированных данных, то можешь по индексу.
Народ, а на какую кату/дан с codewars джун тянет? Или нет такого соответствия? Просто интересно, увидел у вас выше ссылку на сайт, зарегался только что, начал решать задачки.
>>741234 ну надо полагать потому что в неправльном случае ты меняешь переменную, а результатом выводишь изначальный объект. Работает-то он правильно. наверно стоит после умножения добавить obj[key] = objKey ?
>>741248 >удобней все операции совершать над переменной? Это если они мутабельная и все операции твои соответствующие.
Ты же там сначала делаешь objKey = obj[key], а потом objKey = ... Очевидно, что ты изменяешь значение переменной objKey, а не элемета массива. Это тебе не си, где можно было бы int z = 0; int i = &z; i = 5;
>>741407 Лол, там 5-6 кью за час под чаек набивается. Сегодня зарегался уже набил. А вот задачки 4 и выше уже потяжелее кажутся. Так что скорее с него джун начинается
>>741447 Ну я на кодварс подзабил пока сам. С ванили хочу соскочить, сейчас жквери изучаю, затем фреймворки начать курить с реакта. >>741431 Да ты охуел, свободного. Я пашу на заводе по 12 часов.
>>737862 (OP) Работаю простым HTML/CSS верстальщиком. Параллельно учу JS. Читаю уже второй учебник. Синтаксис более менее освоил. Но не совсем понятно, что конкретно из себя представляет работа фронт-енд разработчика (да и вообще разработка сайта в целом). Допустим, есть у меня адаптивный макет, вот что с ним дальше делать?
>>741565 >адаптивный макет Настоящий JS-кодер поворачивается и уходит, едва заслышав хотя бы одно слово из этих двух. Вёрстка - работа девочек-студенток, а не фронтенд-разработчика.
>>741568 Понял-понял. Девочка-студентка сверстала макет, дальше отдает его настоящему фронтенд-разработчику. В чем заключается работа фронтендера? Опиши дальнейшие этапы разработки или подскажи, где самому почитать об этом в деталях (гугл не помогает)?
>>741582 Он может работать с DOM'ом, но только из JS. Верстальщик делает окно чата на html и пишет стили для div-мессагов, а фронтент-разработчик пишет логику добавления новых сообщений, подцепляя описанные css-стили из кода.
>>741586 Ты конечно прав, в идеальном мире. На деле же верстальщик городит какую-то хуйню, так как он не шарит как в дальнейшем логика будет представлена, поэтому большую часть стилей и разметки фронт все равно потом переделывает/дописывает под себя.
Ананасы, есть 2 дня на подготовку к собеседованию мидл-фулстек макаки, посоветуйте исходя их этого какую-нибудь книгу, где максимально сжато но в то же время глубоко и содержательно изложены главные аспекты и тонкости языка, желательно на английском. С js знаком довольно неплохо, но работаю в основном однотипно в контексте angular/jquery, поэтому интересуют именно тонкости, что могут спрашивать на mid/senior fullstack.
>>741601 Чем ниже, тем лучше. ЖС погромист вообще не должен знать верстку, этим девочки-студенки занимаются. Если ты даже не догадываешься что такое <div> или text-transform, значит ты об это говно не шкварился и тебя можно брать на работу. Ну а если что-то верстал в своей жизни, то ты просто ВЕРСТАЛЬЩИК, таких червей-пидоров погромистоми не берут.
>>741629 кстати в начале переменных еще погромисты на jq ставят знак доллара. Венгерская нотация или хз как оно называется, мол это переменные для jq. Хотя по венгерской там вроде типы указывают в начале
>>741568 Если твой скилл верстки ограничивается созданием простенького макетика, то не значит что другие не могут делать что-то годное. В верстке потолок умений намного выше, чем все думают.
Этот тред посвящён главному языку будущего - 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/ для серверного кода.