Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Жиза? Был у меня друг один. Всё на JavaScript писал. И клиента и бэкенд и десктоп даже. И базы данных на джаваскрипте делал и игрушки клепал. Говорил удобно, быстро, клёво. Всё работает, всё устраивает. Ну, потом его в дурку сдали конечно…
- Что это такое? - Это современный Javascript и сейчас я научу тебя программировать - Я же верстальщик - Ставишь на комп ноду и npm - Ставишь ... - Затем ставишь ... и пишешь ... config - Ставишь ... - Я попытался вспомнить как верстал свои первые странички - Это лучший язык программирования, а ты даже не слушаешь - Дальше webpack, пишешь два конфига - Один под продакшен, второй под dev - На dev'e не забываешь поставить webpack.dev.server и настроить ... - На проде не забудь бить код на чанки, uglify, critical CSS - Инициализируешь git
Анон, что он говорит в местах где у меня стоят многоточния?
>>971941 >- Что это такое? >- Это современный Javascript и сейчас я научу тебя программировать >- Я же верстальщик >- Ставишь на комп ноду и npm >- Ставишь yarn и ... >- Затем ставишь babel и пишешь babel config >- Ставишь eslint и экстендишь конфиг от ... >- Я попытался вспомнить как верстал свои первые странички >- Это лучший язык программирования, а ты даже не слушаешь >- Дальше webpack, пишешь два конфига >- Один под продакшен, второй под dev >- На dev'e не забываешь поставить webpack.dev.server и настроить hot reload >- На проде не забудь бить код на чанки, uglify, critical CSS >- Инициализируешь git
Вчерашний ретард опять выходит на связь. https://github.com/C2FO/fast-csv var ws= fs.createWriteStream('PlayerStats.csv'); csv.write ([ ["Name","Team", "Position","Apps"], [name, team,position,apps] ], {headers:true, delimiter: ';'}) .pipe(ws); Так создаю и записываю данные в файл. Как мне дописать в уже существующий PlayerStats.csv новые строки вида [name, team,position,apps] (начиная с пустой строки) У меня выходить только перезаписать существующий файл изменяя уже имеющиеся данные.
>>972004 У меня будет данных на 400 строк, каждая из которых будет добавлять по очереди друг за другом, алсо время от времени эту таблицу будет нужно обновлять и заполнять по новой. В таком случае твой способ выглядит не самым удобным. Хотя информация я принял. Но не неужели просто добавление новой строки в csv файл так сложно реализовать?
>>972013 Я вообще не понимаю нахер нужен пакет для записи в csv файл. Ты планируешь использовать там какие-то странные строки с запятыми или кавычками?
>>972020 Нет, но мне нужно хранить данные в удобном формате с возможностью что-то изменять/дописывать вручную. Алсо с этими данными нужно будет потом работать и производить мат. расчеты на их основе. Csv показалось удобным форматом под это дело.
>>972038 Я к тому что csv файл пишется кодом уровня print(a); print(','); print(b); print('\n'); Соответственно и дописывается кодом такой же сложности, просто открытием файла в режиме append. Другое дело если тебе в середине что-то менять надо - тогда лучше пакет использовать. Но там же просто: прочитал, засунул в массив, дописал/изменил, сохранил.
>>971974 >а что должно быть из коробки в библиотеке для вьюх ? какой библиотеки и для чего тебе не нашлось ? Как для библиотеки для вьюх все есть, но как основы для серьезного проекта, там маловато всего, а точнее нихуя и хуй бы с ним, если бы комьюнити писало что-то полезное, так нет, кинешься, а типовые задачи(например, мне нужна была либа для работы с табличными данными, огромными данными) не решены, и пишешь сам все. Это минус. На ангуляре таких проблем не было. например.
я посмотрел package.json файлы для bootstrap и еще одного npm пакета, у них есть аттрибуты: main, style -- пути к стилям и js. как с помощью gulp скопировать эти main, style в мою public директорию?
или это устарело? везде вебпак советуют. есть для новичков современное руководство?
>>972339 Зависит от того на сколько сложен твой js. Если у тебя больше верстка, то галп норм. А так всякие модули-компонентики собирать, обрабатывать уже лучше вебпаком, да. Он потому и называется module bundler, в отличие от галпа, который просто task runner. Ты их вообще при желании можешьмсовместить, лол
>>972339 >>972342 Осильте шапку хотя бы. Гальп и вебпак - совершенно разные вещи. Зачастую вебпак запускают через гальп. Их постоянно используют вместе.
Помогите пожалуйста дябилу. https://pastebin.com/P7GyvrYc у меня есть список нод nodes = ["ddd", "aaa",...]; у них есть статус и он проверяется посредством выполнения скрипта мне нужно получить список всех нод со статусом я написал в менеджере метод (getNodeStatus()), который дергает скрипт и выполняет функцию переданную в successAction (Executor это моя обертка для выполнения скриптов). все нормально работает, но я не понимаю как мне вернуть мои статусы >status => { return status; } вот сюда они доходят, я выводил их в консоль но return я так понимаю возвращает их вникуда и на выходе у меня ничего нет как сделать чтоб по-нормальному было?
хуйня вопрос, делай следующее: ставишь на комп ноду и нпм ставишь ярн ставишь бабел и пишешь бабелконфиг ставишь еслинт эхкстендишь конфиг от эирбиэнби и пишешь еслинтконфиг, вешаешь хук на прекоммит ставишь вебпак и пишешь два конфига один под прод второй под дев, на деве не забываешь поставвить вебпакдевсервер и настроить хатрелоад, на проде не забудь бить код на чанки, углифай, критикал си эс эс инитишь гит, добавляешь гитигнор не забудь ярн лок в репу потом корочи ставишь дев зависимости бабель-кор, бабель-лоадер, бабель-плагин-трансформ-обджект-рест-сприд, бабель-пресет-2015, бабель-пресет-реакт, вебпак, вебпак-дев-сервер, сиэсэс-лоадер, стайл-лоадер, стайл-экст-эйчтиэмэль-вебпак-плагин, лесс или сасс, лесс или сасс лоадер, еслинт, еслинт-конфиг-эирбиэнби, еслинт-плагин-импорт, еслинт-плагин-реакт, экстракт-текст-вебпак-плагин, эйчтиэмэль-вебпак-плагин потом корочи зависимости материал-юай или реакт-мдл-юай или бутстрап, нормалайзр, реакт, реакт-дом, редакс, реакт-редакс, реакт-роутер, реакт-тэп-эвент-плагин, редакс-тсанк, дабльюашэйтидаблюджи-фетч для удобства в нпм скрипты алиасы, но вызывай все через ярн потому тчо так круче
короче делаешь папочки там контейнеры компоненты экшены стор миддлверы, редбюсеры еще и утилзы и понеслась короче пиши код твори пили сайт который будет через апи другого сервиса брать определенные данные и выводить их у тебя, строй его.
>>967538 (OP) Вкатываюсь в первую работу с жс и вебом. На какой стул сесть: ангуляр2+пхп, либо метеор+реакт, либо фронт на первом ангуляр. По деньгам лучше всего платят во третьей конторе. По метеору я 0, но тимлид убеждал что ничего не стоит вкатиться в него.
Боже, помогите дауну лёрн жаваскрипт рекурсия. Как блядь ебаная хуйня фибоначчи вычисляется то тут? Всё остальное с рекурсией понятно. Допустим, я беру fib(16) и получается 987. Как эта поношенная блядь вычисляет это говно поэтапно? 16-1 + 16 - 2 = 29 + 15-1 + 15 - 2 = 27 и так далее? или как? Что происходит я не пойму, я сначала подумал что вызов функции просто закольцовывает действие, а не подразумевает собой цифру. Гандонство ебаное, все задания нормально делал сам, долез до этой выблядской ебалы, сначала хуй понял в чем суть ряда этого ебаного, потом нихуя не мог нормально написать код и в конце концов чувствую себя конченным дегенератом из-за того, что не смог сам решить это говно. Неужели есть 14-15 летние выблядки для которых с первого раза решать эту поебалу легко? Сначала ведь очень близко написал, но ответы хуелу выдавали, боже. Есть ли какой-то склад пидорского ума, что ли, чтобы это легко давалось или это просто говняная практика как и всё остальное? Я НЕ ВЕРЮ ЧТОБЫ КТО-ТО СДЕЛАЛ ЭТО ГОВНО СРАЗУ БЛЯДЬ
>>971814 (OP) блядь что за нахуй ? 6 лет учу жс/html/css eloquent javascript cunt'ора три книги секреты ниндзя все гниги ю донт ноу жс включая ес6 не имею высшего не могу никуда устроится, хиккую. скоро со съемной хаты погонят а тут бля сообщения в духе народ я устроился в офис на 300к/сек как добавить класс к элементу на ноджс
>>972777 Чувак, все дело в рекурсивных гномах. Они магическим образом вычисляют fib(16-1) и fib(16-2) а потом ты складываешь эти два числа. А вообще ты правильно их разгадал. Пока никто не видит, эти рекурсивные гномы друг друга в очко пежат. У них это называется tail call, можешь загуглить картинки.
Я вообще заметил что в программировании везде повторяются одни и те же сперва неочевидные фишки типа создания новой переменной и присваивания в нее нового результата. Первое просто что вспомнилось мне, новичку. Сколько вообще таких вот подводных нужно знать для хорошей работы ? var max = 0; var maxName = ""; for (var name in salaries) { if (max < salaries[name]) { max = salaries[name]; maxName = name;
>>972601 >Метеор Реакт это заебок, конечно, но вот с этой парашей я бы не связывался. Сейчас работаю с ним, наблюдая паралельно его предсмертные судорги. Могу долго рассказывать, что там плохо, но ограничусь пока простой рекомендацией держаться подальше.
Ну и от себя вопрос - охуенно получилось оседлать реактовский хайп, зп взлетела, вакансий море. Как считаете, можно и дальше дрочить его? С моей колокольни выглядит так, что еще пару лет его ничто не перегонит, но может я зашорен и уже пора потихоньку готовить перекат? И если да, то куда именно? Часто слишу про второй ангуляр и вью, что сильнее укрепит мои позиции на жоп маркете?
Думаю что еще пару лет как минимум реакт будет всё ебать, а потом подкатится какой-нибудь React Fiber В любом случае все самое многообещающее так или иначе использует наработки реакта, даже тот же Вуе (который многие хвалят но я еще не тыкал) От ангуляра у всех баттхёрт. Второй может вытянет но ощущение что шанс проебан и им надо очень постараться чтобы завоевать доверие снова.
Я лично планирую дальше использовать реакт и потыкать Вуе
>>972872 >От ангуляра у всех баттхёрт. Второй может вытянет но ощущение что шанс проебан и им надо очень постараться чтобы завоевать доверие снова. А что там? Что там? Я последние полгода на реакте работаю, пока доволен, но раньше со вторым сталкивался, вроде норм был. Что случилось?
Вкатываюсь в js (серьезно), до этого учил пользовался bower, npm и ковырял первый ангуляр на курсеровском курсе, как я понял сейчас все это устарело, собираюсь осваивать такой стек тулзов, gulp, webpack, babel, yarn (npm как я понял тоже уже устарел) react и Vue в качестве фреймворков. Все правильно делаю?
>>972397 Бамп. Мне удалось нагуглить проблему, но смущает ее решение. А именно установка сторонней библиотеки для этого (npm install async). Честно сказать, немного в шоке, что рядовую задачу нельзя решить встроенными средствами, это вообще нормально? Вообще у меня были кое-какие догадки запилить это через EventEmitter, но я не написал, просто хотел удостоверится, что тут мне это и посоветуют. Но на stackoverflow не нашел, чтобы кто-то такое предлагал.
>>971814 (OP) Сап двоще, расскажи про фронтенд. Это норм, если я зная хтмл и цсс на уровне нарисовать список и сделать его зеленым, знаниями чистого JS, про который написано в книжке с носорогом, возьму React и буду его дрочить. Или есть подводные? Что посоветуешь анон?
пс: опыт программирования других вещей на других не JS языках имеется, не имеется только с браузером. пс2: я не хочу становиться прям пиздец фронденд на фуллтайм, просто хочу знать и немного уметь че там как работает, ну и для своих проектов
Сап, котаны Строю проект, там используются слайдеры для задания параметров поиска, в стиле google material design, но проблема в том, что они глючат на мобилках, а также значение из них нельзя получить сразу при изменении, кто знает есть ли подобные слайдеры, которые хорошо работают на мобилках и без этого бага http://vk.finder.ecsv.org.ua/search
>>973276 Ноду не юзал, но как вариант хорошая связка это PostgreSQL + Mongo/Redis В PostgreSQL хранить данные которые не часто записываются. Вроде данных юзеров и какой нибудь истории/архива А в Mongo/Redis всякие счетчики, временные данные, кэш, результаты промежуточных вычислений и т.д
>>973278 Ну хз, юзаю 3 языка и вполне неплохо чувствую себя. Можешь выучить любой более-менее серьезный серверный язык, а JS юзать для клиентской части. Лично мне так проще, один язык серверный, другой на клиенте, чтобы не смешивать все в кучу
Пишу парсер данных с веб страницы. Чтобы получить доступ к данным надо передавать Request Headers, в которых есть динамическая переменная, без которой нихуя не работает. Это model-last-mode. Объясните что за шляпа и с чем её едят. Как парсить её для каждом конкретной страницы?
Тот самый хедерс, который нужен для запроса на страницу с инфой. Каким образом я могу его выдрать отсюда? запись выглядит как json, но json parse вроде не подходит т.к сама страница в другом формате
Кто разбирается в html5 и имеет опыт, подскажите, пожалуйста.
Хочу сделать йоба-эффект как на сайте айфона 7 с помощью привязки видео к скроллу. Типа, когда скроллишь до какого-то места, параллельно видео тоже мотается само.
Сделал прямо на <video> (по этому принципу: https://codepen.io/anon/pen/GxDJg ), но у меня таких видосов несколько, поэтому подлагивает, запросов в секунду в три раза больше. Вопрос: как сделать оптимизированней, чтобы не лагало? Что быстрее будет работать, напрямую элемент <video>, или рендерить источник видоса на <canvas>?
На сайте Эппла вроде кэнвас используется, но их реализацию я пока так и не понял (код разбирать надо).
Чет автора немного не понял, почему данное функциональное выражение не имеет замыкания? Ведь у функции есть свое лексическое окружение, которое пустует на момент её вызова. Но потом функция ищет переменную а, в области видимости "повыше" - в глобальной. Разве не так?
>>973399 Потому что он долбоеб и не понимает, что такое замыкание. Хуесос считает замыканием то как он его применяет, а не само замыкание. Пиздец, еще и учебники строчат. Шли его нахуй.
>>973433 В переводе часто порят ошибки, базарю. Читал Крокфорда в переводе, вот так же смутился из-за какой-то фразы. Открыл оригинал, а там фразу перевели натурально ОБРАТНО ПО СМЫСЛУ ФРАЗЕ ОРИГИНАЛА. Так что найди английскую версию и чекни че там.
Потыкался в него: глобальные пакеты ставятся через жопу, при вызове из вложенных в проект директорий он разваливается нахуй -- нахуй он нужен-то в итоге?
>>973447 Это сейчас конечно вброс некомпетентности на вентилятор будет, но я как-то разворачивал здоровый проект на рабочей машине и нпм постоянно падал с какими-то ошибками - то ему прав не хватало, то то, то сё. Дело было к ночи, подумал я -чем черт не шутит и натравил ярн на проект. Все поставилось с первого раза, начал колбасить. После этого свичнулся и начал жить.
Вот ещё непонятка, но тут возможно просто я тупой. Почему внутренняя функция в функции setTimeout запускаются после всех итераций цикла? Ведь по логике оно должно выполняться каждую итерацию?
Нужно просто запомнить как правило что функции переданные как параметры не будут выполняться на каждой итерации цикла, а только в конце самого цикла? Немного непонятно почему это работает именно так.
>>973399 Это не замыкание потому что данная функция вызывается в своей же лексическом контексте, о чем автор тебе и пишет. Если бы ты возвратил эту функцию и вызвал в другом лексическом контексте, то тогда это было бы замыкание. >>973414 а ты сам долбаеб
>>973486 Потому что setTimeout - это специальная функция, которая по сути является врапером для web api. Для того чтобы понять это надо понять что есть такое event loop. Гугли event loop и смотри видео https://www.youtube.com/watch?v=8aGhZQkoFbQ
>>973488 >вызывается в своей же лексическом контексте Но какая разница где она вызывается если она использует переменную из области видимости что ВНЕ этой функции, а на уровень выше (в глобальной области), не это ли называется замыканием? Кантор вроде именно об этом говорил, странно как-то.
>>973490 Пиздец, я ещё JS нихуя не знаю и не понимаю что такое модули, а в ебаной книге уже какие-то примеры ебанутые с подобными вещами. Хотя подразумевается что это книга для тех людей которые даже не понимают что такое замыкания...
>>973493 а ты не зеленый часом? в том примере, функция находит переменную в контексте ИСПОЛНЕНИЯ (не лексическом контексте), который находится выше в стеке, то есть в том, который и вызвал эту функцию. Замыкания - это совсем другое. Тебе надо взять другую книгу или прочитать ещё раз.
>>973497 >в контексте ИСПОЛНЕНИЯ Ну я к сожалению не знаю как работает этот контекст исполнения, учился по кантору немного, потом не понял про this и замыкания и решил почитать данную книгу, но сейчас какая-то хуйня всплывает которую я даже не знаю и которая мешает нормальному пониманию.
>>973498 С английским крайне хуево (но я над этим работаю), поэтому читаю только на русском.
>>973488 Замыкание это функция со своим лексическим окружением, так что долбоеб ты. Любая функция имеет его, про стрелочные только точно не скажу. Съебал нахуй. Еще один уебан, который путает применение замыканий и их сущность. Пздц.
Советую побыстрей учить английский, потому что ссаный русский крайне не совместим с программированием. Когда ты оперируешь терминами на английском, то всё становится куда понятней.
>>973488 >>973507 И не вздумай вскукарекнуть про внешнее ЛО, потому как ссылка на него лежит в скоупе собственном самой функции и это будет лишь софистика, а она для пидоров. Вроде тебя.
>>973489 Я другой анон, но ты троллишь или в манямире? Сейчас в джспарашу вкатиться легче, чем когда-либо. Педаль свой говнокод левой пяткой, а тулзы его превратят сами в идеал стиля и производительности. Думать уже не надо, основные архитектурные решения за тебя приняли, сиди программируй мышкой. Это я к чему - сейчас в джс джуниорская зп - это плевок в лицо.
>>973507 не стоит вскрывать эту тему. функция не может иметь замыкание, т.к. замыкание - это и есть функция, только не просто функция, а которая имеет ссылки на внешние переменные.
>>973520 Не ебу сколько там у хуесосов сейчас валюта. Мне 20ки на все хватает, никаких проблем + скорое повышение зп, так что все ок - жопа в тепле, проект интересный, чего дергаться?
>>973515 Стараюсь, но у меня не очень быстро это получается ибо я даун какой-то, слишком много времени трачу чтобы понять простейший материал.
Ну вот что вычитал в Итоге в конце статьи, наверное более правильное понятие замыкания: Замыкание — это когда функция может запомнить и иметь доступ к своей лексической области видимости даже тогда, когда она вызывается вне своей лексической области видимости. Хотя Кантор для простоты вещей вроде говорит как-то иначе, но я думаю что всем похуй на формулировку, главное понимать что функции имеют ссылки на свои области видимости даже если вызываются где-то в жопе, вот и всё.
Пацаны, вот мне надо отправить ажаксом json на другой домен со своего юзерскрипта в мозиле. Метод get не подходит, так как джейсон иногда бывает слишком длинным. Реально ли это как-то postом сделать?
>>973527 Не в Киеве, в Хуевом, что-то ты пиздишь за 40-к с полутора годами стажа на джс или в Киеве реально крутые зп, потому как знакомые крутые джависты с 6+ лет не получают столько.
>>973535 Хочешь нотариально заверенный скриншот банковского счета? Пиздец, про крутого джависта, который даже 1.5 зелени не получает это страшилка какая-то. Ну опыта у меня два года было, но я честно сказал, что первые полгода только верстал. То есть в сухом остатке 1.5 на джс. Но у меня даже не средняя температура по больнице. Я откуда взял эту цифру - зашел на джинни, посмотрел, сколько просят с мои опытом. Баксов 200 отминусовал, потому что была нпуверенность в своих силах. Сейчас думаю зря даже.
Кто-то считать не умеет? 20к гривен - это меньше штуки баксов. Правильно говорят, что джуновская зарплата. Я меньше полугода проработал 14к получаю. И 80к рублей - это не 20к гривен, а где-то 37к.
>>973546 >1.5 зелени Вот на этом моменте я понял что спиздел и считать нужно учиться снова. Знакомый джавист поднимает 2+ евро. Но то джава + тимлид + синьор помидор, как на джс можно 1000 мидлов брать - не верю нихуя, в 700 поверил бы, но 1000, хм, делать меня задуматься.
>>973551 >1000 баксов мидлоМ selffix >>973550 >Я меньше полугода проработал 14к получаю Ага, сегодня на репетицию митол-группы идешь? Дохуя что-то для вчерашнего джуна. В 10к еще поверю. Пиздишь.
>>973551 Алсо проведи исследование с зарплатным вмджетом на доу - заметно, что основной рост зп происходит на втором и третьем году карьеры. После 4-5 лет зарплата вообще растет едва ли не у единиц.
Есть ли в треде джуниоры которые подрабатывают фрилансом на каких-либо сервисах? Зарабатывая при этом чисто на еду, но всё таки зарабатывая, есть ли такие?
>>973613 Ну интересует есть ли вообще такие люди или для этого нужно быть хотя бы миддлом? И насколько сложно вкатиться в такой фриланс (нужно ли запилить пару своих проектов или возможно по мелочам будут и так брать) ?
>>973605 Только вкатился недавно в веб-кодинг, на фрилансе не работал, но работаю удаленно, одна работа постоянная, правда там оплата маленькая так как сейчас задач мало. Вот недавно вторую нашел, через группу вк Поговорили по скайпу, все обсудили. Закончил первые 2 задания и вот буквально в течении пару часов сегодня получу оплату. Так и живем. Там в общем разработка модуля общей стоимость 8к рублей
>>973622 Ну я джуном на апворке зарегался. Работу чисто джсную сложно найти с небольшим скиллом, но много разного говна где джс в том числе нужно пердолить. Например у меня был проект, где ангуляр на клиенте прикрученный к богомерзкому вордпресу. Минимальные примеры кода на гитхабе лучше иметь, могут чисто ради приличия затребовать, хотя заказчики такого говна редко понимают, что ты там наговнокодил. Денег не много, но баксов на 7 в час можно найти, если не даун.
>>973648 Вот недавно хотел вкатиться на Upwork, чтобы доп. работа была, скиллы есть, портфолио есть, тест нужный прошел на 4 из 5 Рассылаю всем сообщение с этим всем. Но никто не отзывается. Может дело в том, что я это сообщение рассылаю одинаковое всем подряд?Лень каждый раз заново строчить.
>>973654 Рассылай активнее, там на несложные проекты большая конкуренция. Выхватывай баззворды и пиши в сообщениях, что вот с этой штукой я много работал (конечно лучше иметь представление о ней, если пишешь). Если долго никто не будет отзываться - демпингуй, всяко лучше хоть пару проектов за еду сделать, чем сидеть с пустым профайлом.
Есть одна вакансия (на Джанго), указано, что плюсом является знакомство с nodejs. Знаю ЖС на уровне минимального редактирования дом-дерева на jquerry + делал некоторе уроки на nodeschool
Вопрос: Анон подкинь мне тренировочное задание на nodejs чтобы можно было этим похвастаться. Сам думаю сделать вебсокет чат для начала (хотя вроде как звучит изи) , вдруг ты еще что подскажешь.
>>973480 Слушай, а регуляркой не получиться выдрать? Вроде этой var last_mode_header_name = 'Model-Last-Mode' var pattern = last_mode_header_name + "': '(.*)' }")
>>973662 Где-то был тренировочный таск, в котором нужно было ( используя билиотеки, офк ) сделать приложушку, в которую можно фотки из браузера загружать, а она бы находила лица на них, вырезала и возвращала с сервера пикчи со всеми лицами. Как-то так. На github это лежало где-то, как репка называлась не помню. Тоже хуйня по сути, но выглядеть должно прикольно и хоть надрочишься с файлами манипулировать в ноде
>>973671 > >Где-то был тренировочный таск, в котором нужно было ( используя билиотеки, офк ) сделать приложушку, в которую можно фотки из браузера загружать, а она бы находила лица на них, вырезала и возвращала с сервера пикчи со всеми лицами. Как-то так. На github это лежало где-то, как репка называлась не помню. Тоже хуйня по сути, но выглядеть должно прикольно и хоть надрочишься с файлами манипулировать в ноде
https://learn.javascript.ru/closures#возврат-функции - почему функция makeCounter ВООБЩЕ запоминает значение currentCount ? Т.е если я вызову makeCounter()(), то всегда будет показывать единицу, но если присвоить эту функцию (точнее получается что внутреннюю) в какую-то переменную, то currentCount не будет удаляться после выполнения функции? Это как-нибудь объясняется дальше по урокам Кантора или нет?
>>973694 Уже сам нашел ответ, который упустил: "Они независимы, потому что при каждом запуске makeCounter создаётся свой объект переменных LexicalEnvironment, со своим свойством currentCount, на который новый счётчик получит ссылку [[Scope]]."
>>973694 В дополнении опять же к этому посту должен сказать что на мой взгляд, Кантора стоит читать по 2-3 раза, обращая внимание на всякие мелочи, ибо он их особо не выделяет жирным шрифтом (зато какую-нибудь хуйню - выделяет). И не всегда материал с первого раза запоминается даже если после теории выполнил какие-то задания.
Ох, читаю элокент, протипное наследование - это конечно что-то с чем-то, в реально практике я надеюсь с ним не нужно сталкиваться и все прикрыто библиотеками с новой class нотацией создания объектов?
>>973964 Да надо привыкнуть походу, после питона/джавы пугает та простота, с которой можно любому объекту записать или переписать любые свойства и методы прямо в рантайме
Нужна хелпа, как заставить webpack-dev-server сохранять файлы при их изменении на диск? Пока использую 2 параллельно запущенные задачи (webpack-dev-server, webpack:watch). Но это не очень удобно. А вместе через одну задачу работает только либо watch, либо dev-server, в зависимости что раньше запустилось.
и прежде я не программировал никогд ав жизни совсем - что я смогу сделать на джаваскрипте? Смогу ли запилить небольшую двухмерную игру? Приложение для поиска партнеров по гей-сексу? Или свой фейсбук с блекджеком и шлюхами?
>>974097 Главное задания все делай, особенно во втором учебнике, сам его прохожу, но до этого си учил, питон и джаву и я скажу, учебник клевый, но не для начинающих.
Посоны, есть Restful сервер с JWT аутентификацией. Авторизацию я могу провести, получить токен и вот это все. Подскажите где лучше хранить его? Кидать в локалсторедж или есть способ лучше, что бы никто не видел токена?
Очень желательно, что бы юзер мог и через месяц вновь использовать сайт, при условии что токен не истек. Сам пишу на ангуляре, но не думаю что это очень важно.
Оба примера выше взяты из пасты в шапке. Но там указано ооочень много книг. Что и в каком порядке учить? Напоминаю, я совсем не знаком с программированием.
>>971814 (OP) Здравствуй, программач. Сорян, что влезаю в этот уютный тред с нубским вопросом почти не по темею Если так- перенаправь в нужный тред. Но тем не менее. Есть один мэйл ру. В почте есть сраный рекламный баннер слева, который уже нифига не блочится аддблоком. Нанл инспектировать через браузер, что за эту срань отвечает. Вроде как некий скрипт //js.imgsmail.ru/mail/e/utf/ts/1492094275/ru_RU/images/js/ru/build/v2.js, добавление которого в адблок не принесло никаких результатов. Пожалуйста, подскажи, как эту срань убрать- портит весь внешний вид. Браузер огнелис. сможет ли какой-нибудь ю-матрикс это говно выпилить? Благодарю за внимание и терпимость.
>>974202 Первым читать learnjavascript, либо если совсем-совсем ньюфаня, то JavaScript for Kids (не шучу) После Кантора надо поделать всякие мини штуки (javascript30 в помощь) и почитать что-нибудь по es2015+ поплотнее (например exploring es6, exploring es2016-es2017) После садишься за вещи типа node, gulp, webpack И потом выбираешь фреймворк: React/Angular/Vue и пишешь уже на нем, погружаясь в экосистему. После этого уже можешь начинать упарываться всякой функциональщиной если будет желание или смотреть в сторону сервера (express, koa, sails) или здесь подставь все что хочешь...
В общем продолжение >>974326 >>974312 Ублок не помог. Пипетка элемент видит, но вот незадача: при каждом обновлении страницы скрипт генерирует новое имя для баннера вроде ###e0Q1G-3h. Таким образом, постоянно блочить его невозможно. >>974303 Поставил, нашел стили для маилсру, которые, по идее, должны убирать все лишнее. Однако, не робит. В т.ч. при отключенных адблоке и ублоке. Написать свой- пожалуй, для этого следует знать джаву. Увы, с программированием как-то не срослось. Уматрикс эту штуку не берет. В общем, основательно программеры мейлру напердолили.
>>974376 Я, безусловно нуб, но залез в один из тем для мэйла, которые, по крайней мере, активируются в мэйл.сру, выдрал там кусок кода и заодно впихнул туда тот джаваскрипт, что подозреваю:
>>974376 Пардон, поторопился с отправкой. Так вот, тема возможна к выбору на странице, но результатов, увы, не приносит. Как сама оригинальная тема автора, так и мои попытки что-то такое интуитивно напердолить.
Играюсь с Angular2. Пытаюсь получить в компоненте элемент DOM по классу, используя jQuery, но оно возвращает undefined. Подскажите как работать с DOM, а конкретно, необходимо вернуть высоту элемента.
Сижу тут, крудошлёплю. Есть простенький сервис, сделанный на коленке, с почти RESTful api (asp.net web api). Хочу нахуярить для него админку SPA на js. Без фреймфорков. Инфы вообще нарыть не смог. Фронтом в жизни не занимался. Помогите, пожалуйста.
Возник вопрос, возможно глупый, но все же задам его. Как я понимаю до появление новомодных фреймворков на js, были приложения например на RoR, который формировал хтмл на сервере и отправлял клиенту, потом появились ангуляры и реакты, которые работают на клиенте, снижают нагрузку с сервера, а теперь есть фреймворки основанные на фронтенд фреймворках, которые рендерят хтмл опять на сервере(next.js/nuxt.js), ибо бандлы получаются большими, что нехорошо для медленного мобильного интернета и лучше в плане сео. И вот собственно вопрос. Нахуя?
>>974581 >И вот собственно вопрос. Нахуя? У меня вот другой овпрос. Насколько я понимаю, JS жутко простая вещь. В виду чего, наличие к нему "фремворков" немного обескураживает. Js в бравзере это итак фреймворк. Что там еще фремворкать?
>>974601 если ты пишешь простой одностраничный лендинг с двумя функциями, которые на сервер отправляют формы то хуйня. если тебе нужен сайт сложнее вроде сервисов гуглопочты, то на чистом жс ты охуеешь это все писать. а при помощи фреймворков такие вещи делать проще и расширять в разы проще.
>>974621 >ЖСаны, у нас тут залётный. >Ты ещё успеешь охуеть, насколько этот жс простой Ну, я парочку простых сайтиков(веб приложений, как щас модно) на нем сделал, общаясь с сервером через xml. Там же логика вся элементарная, скрыть нарисовать кнопочку изменить размер цвет эдемента вписать текст в елемент итд. Тоесть, Js в бравзере и так на уровне визуального редактора форм в шарпе кокомнибудь. И даже лучше местами.
>>971941 Братишки, я герой этого ролика. У меня бэкграунд дизайнера, в том числе в полиграфии, хуже меня не было. Я начал верстать, освоил gulp, jade(pug), sass и тд. И теперь почти не включаю фотошоп, т.е. дизайн-верстка теперь один процесс. У меня огромный гап в области JS, я потихоньку начал вкатываться. И знаете чего не понимаю, нахуя мне вообще JS, как я буду зарабатывать 300к в секунду? Для меня JS это подключить owlcarousel.js, нампример. Какие профиты для таких верстал как я?
>>974785 >>974789 Парни, че вы как пидоры отвечаете. Вы подсобите, епта. Как перестать верстать на HTML, а начать по-модному react-хуякт, angular-хуиляр.
>>973556 >>973550 >>973412 Пиздец. Я с 4 годами опыта JS + PHP + Oracle получаю ебучие 45к рублей, пребывая в перманентной депрессии. Наверное, пора по собеседованиям походить, а лучше уёбывать.
Мимипроходил. Сисадмин, нихера не секу в вебе вашем почти. Поэтому объясните так что бы дибилу было понятно. Есть набор данных. Термин = Определение. Хочу что бы страница со списком терминов, кликаешь на элемент списка и появляется его определение. На php спокойно бы запилил, но вот есть такая ультрагодная вещь как github pages, а там как я понял только js. Собственно вопрос - как из массива терминов автоматом запилить список и с помощью каких функций можно осуществить вывод конкретного определения на страницу?
Котаны, помогите реактивному ньюфане. Нигде в документации не могу найти информацию о том, дожидается ли ReactDOM.render(), пока DOM загрузится, или нужно оборачивать это в $(document).ready
>>975289 Да ты шо! Еще, небось, DOMContentLoaded и ивент лиснеры тоже только в джиквери есть. Браузер, должно быть, без джиквери даже не запустится. Говорят, даже в центральный процессор встроен маленький хардварный джиквери.
Хочу послать лучи поноса мозилле с их Webextensions. Для того чтобы ввести поддержку файрфокса в своем расширении пришлось переписать часть кода под спагетти-промисы и теперь я не до конца понимаю что и как у меня там происходит. Алсо эти пидоры больше месяца не аппрувят расширение в своем сторе, при этом если оно не подтверждено, ставить его могут только те у кого файрфокс ниже(!) версии 43. Уебки.
Здрасьте. Крудошлёп вернулся в тред. XMLHttpRequest
Вот сидишь, пишешь фронт для реста на asp.net web api.
И если запросы асинхронные, то гарантировано ловишь еблом ексепшн. Вот, что происходит, когда запрашиваешь несуществующий ресурс: 1. АСП не находит твой ебучий ресурс. И шлёт 404 2. XMLHttpRequest.send() в случае 404 пытается, кажется, что-то достать из поля, которое в этом случае null и высирает. 3. + АСП на 404 ответ не крепит заголовков для поддержки cors, от этого жс ещё больше высирает 4. сидишь обосранный
Тут три стула. Реализовать для моего сервера метод Head, чтобы проверять на 404 (стул с хуями). Делать асинхронные запросы, которые, вроде, позвляют делать проверки (или нет). (мистический стул) Трайкетчить метод, который высирает ексепшн и так обрабатывать 404 от сервера (стул с пиками).
Влез в ЖС день назад. Не вкурил до сих пор ни стиля, ни назначения языка. Сижу обосранный. У кого первое знакомство было веселее?
Сап, кто-нибудь слышал про такую либу для редакса, что-то я не сильно понял чем она мне упростит жизнь, зато вижу как усложнит. Может у кого есть опыт? https://github.com/acdlite/redux-actions
>>971814 (OP) Зачем нужны прототипы? Я сколько не использую js, мне в реальной жизни они ни разу не пригодились.
То есть если мне нужны новые объекты, я просто создаю их с уникальными свойствами. Если мне нужно наследование я просто добавляю примеси в эти же объекты и вот уже другие объекты, которые могут как наследовать, так и терять ненужные им свойства.
Тогда как прототипы мало того что портят весь код своим синтаксисом с этими ебанутыми потчёркиваниями, так ещё и выглядят как костыль.
По мне так это абсолютно ненужное говно, которое можно смело выпиливать из языка.
>>975470 Более того протипирование нарушает логику.
Если обычно мы создаём объект и на его основе потомков, то прототипирование используется в любом месте кода и очень легко превратить код в спагетти напрототипировав уже существующие объекты.
По ебанутости это даже хуже goto, который можно использовать дисциплинировано, тогда как прототипы это всегда наглое изменение структуры объекта в любом месте кода и в любой момент исполнения, что часто приводит к существованию разных объектов одного и того же класса и ошибкам вида отсутствия метода до прототипирования.
>>975472 Классы - это сахар, у которого под капотом работают прототипы. Юзаю реакт там компоненты экстендятся от реакт компонент, значит я юзаю прототипы. Далее, делаешь какие-нибудь манипуляции с дом - тоже полагаешься на работу прототипов. Вызываешь встроенный метод например массива - тоже задействуешь прототип... такие дела. Короче вообще ненужны))
Немного не по теме, но в общем есть у меня переменная, ее жс меняет, мне надо в лесс захуярить. Я делаю это как padding-top: @pt * 1px Иначе блядь между пикселем и цифрой пробел будет. Этот способ работает, но блядь выглядит даунски, это норм или есть норм решение? Переменная с пикселями придти не может
Подскажите, на странице есть такая ошибка. Непонятно, где именно она возникает. Знаю только то, что если фильтры подключаются (ползунки всякие), то ошибка там и есть. Как найти строку где идет обращение к undefined? Все блядь одни ссылки на либы. Мимо не фронтендер, попросили помочь.
>>971814 (OP) Сап джаваскриптач, объясни пожалуйста - нахуя в событиях onClick пишут что-то вроде onClick="func(args); return false/true"? Зачём там что-то возвращается?
>>975720 Ты дурак? Когда функцию вызываешь, электроны уходят в стек. Если ничего не вернуть, электроны не возвращаются и у тебя нагревается процессор, он даже сгореть может от этого.
Скриптаны, скринкаст Кантора по ноде до какого урока смотреть? Вроде видел часто повторяли мол смотреть строго до определенного - затем хуйня. Или хуйня и ебашить все?
Нужен прогер, для разработки и дальнейшей работы над мобильным приложением. Опыт работы обязателен. Мои контакты [email protected] Зарплата от 500зеленых в месяц. В перспективе рост зп В письме рассказать немного о себе, о своих проектах и т.п., сколько готовы уделять время работе, возраст.
>>976166 >Я так и не понял, что это за херня Вот смотри, есть курятина - js код, интерпретатор в браузере это перемелывает сначала в пюрешку(байткод), а потом выполняет(кушоет). webasm - это сразу пюрешка, её не нужно перемалывать, а можно сразу кушоть.
>>976096 >до какого урока смотреть? Как перестанешь что-либо понимать. >>976170 >как перехватить загружаемый html отредактировать и запихать обрато в браузер Шта, вопрос уровня как выебать овцу если у меня вместо хуя вагина
>>976209 Улиент загружает страницу, но вместо того чтобы сразу исполнять ее в браузере и строить дом, клиент анализирует ее вручную или автоматически, редактирует и затем загружает в браузере. Ясно?
Объясните нубу плз про дескрипторы. Геттер-функция это та с помощью которой мы можем назначить свойству функцию, но она как бы будет сразу возвращать значение, без вызова через скобки. А сеттер это та функция которая считывает значение с свойства (записывая его в свой параметр value) и после этого выполняется. Правильно ли я всё понял?.
Пацаны не допираю чуток, надо чтоб нажал на кнопку, она рагорелась (это я сделал), а когда снова нажал, она сделалась обратно (не ебу как), куда копать?
>>976389 Геттер вызывается когда получаешь значение чего то console.log(a) читается как console.log(a.get()) аналогично с сеттерами a = 5 читается как a.set(5)
>>976476 Когда хочешь получить значение вызывается геттер, из него можно вернуть любое обработанное значение. Сеттер то же самое, может вообще не присваивать ничего. >но она как бы будет сразу возвращать значение, без вызова через скобки Но она вызывается как раз и вернет она то что у нее в return
А далее в главе https://learn.javascript.ru/bind#пример-потери-контекста - пишут, что "Это произошло потому, что в примере выше setTimeout получил функцию user.sayHi, но не её контекст." Так какого же хуя это произошло если точка должна передавать контекст и всё должно работать нормально, в чем дело то?
Ну допустим точно хранит контекст специально для скобок "()" и передаёт его им. Так почему она не хранит этот самый контекст когда мы передаём функцию в другую функцию или когда записываем в другую переменную? Че за хуйня. Совсем неосилятор я чет.
Почему Кантор в этом примере пишет в скобках у метода apply - (context, arguments) ? Т.е понятно что значение context передаётся через внешнюю функцию, а arguments нахуя? Ведь получается что тогда эта функция запустится с аргументом - "arguments", который вообще выдает ошибку, разве нет?
Т.е мы делаем некую обертку-клон как .call или .apply, чтобы можно было вызывать функцию где-либо без потери контекста из точки. Но при этом можно просто вызывать user.sayHi.apply(user) ? Зачем тогда писать эту сложную функцию обертку если можно просто всегда прописывать так? Просто ради красивого кода?
>>977088 Вроде немного понял, .bind возвращает именно функцию, а не выполняет её. Т.е мы заранее привязываем контекст к функции, которую ПОТОМ будем вызывать. Всё отличие по сути в том что bind это обёртка для того чтобы заранее передать контекст для функции которая потом будет вызвана, а .call и .apply это методы которые тут же выполняют функцию с указанным контекстом. Хз, правильно ли я всё понял.
Какие ещё годные учебники есть вроде Кантора, хотелось бы обучаться сразу по нескольким, чтобы изучать один и тот же материал, но разными словами (мне кажется так понимание будет лучше) . Ну и естественно чтобы задания были. Кроме Выразительного Javascript есть ли что-то ещё подобное?
>>977230 Ну разве что в отпуск уйти на лет десять. Года два назад "А может на рельсах ебанём?" ещё бы сработало, а нынче вот нет. Го хотят. Хотят скейлить под хайлоад магазины цветов и лендинги.
>>977238 Ты думаешь я траллакаю, а я правда говорю. На мороз, конечно, не выгоняют ещё (пока), но разговоры заводятся за го постоянно. Жс-то никуда не уходит на клиенте, ui няшный на реакте всегда писать надо, хоть под скалу. Но я ведь чувствую, что разговоры всё чаще заводиться будут про го, пока из серии наблюдений, мол вон ребята на го это написали, а вот тут как круто всё работает. Вы только посмотрите какой они rpm крутят. Гарантирую, что к концу придётся писать уже. Благо язык простой, думаю проблем не будет.
>>977261 Относительно небольшой банкинг на джаве, средних размеров веб хуерга в виде магазинчиков разных мастей - рельсы (кроме одного большого, там тоже джава), приложения дашбордового типа обычно на ноде. В целом рельсы и нода довольно смешанная группа, на сносном уровне приходится знать оба стака, языки-то ладно, но инфрастуктуры и там и там гора ебаная. Я прям уверен, что к концу года будем писать на го и магазинчики и приложения на го. Банкинг, конечно, трогать не будут пока, но если пойдёт, то и джаваниггеров запрягут переписывать.
>>977265 Ну мне кажется банкинг на го писать - сомнительно, у го нет по сути ничего кроме производительности, которая до джавы даже не дотягивает, и простоты, нет инфраструктуры, очень странно, если будет так, как ты описываешь, ладно там api писать для spa.
Сырцы, смотрю сейчас видео от Wes Bos, чувак на ванильке лепит всякие чудеса. Проблема в том что у него там fetch запрашивает json файл со списком городов, у меня этот файл не работет, не подключается. Так вот, накидайте json файлов в тырнетах к которым можно поключиться и попробывать поработать, а то гуглю хуету только выкидывает.
>>977242 А разговоры про го, вангую, менеджеры заводят, которые сами код не пишут, а только хабру и прочую хуергу читают? И откуда ресурсы на переписывание вообще? Никогда подобной хуйни не встречал на практике, чтобы прямо переписывали, какие-то критичные части-да, но не всё с нуля. У меня на работе из того, где нужна скорость написано на крестах и работает в виде нативных модулей к ноде. Кстати, главный умный крестовик, что-то пробовал на го писать, пришёл к выводу, что говно и забросил.
>>977276 >>977267 Да язык простой очень, я сам правда дальше нескольких хелоуворлдов не заморачивался, но в принципе терпимо. Уебанства конечно хватает, без всяких map, reduce, filter, etc чувствуешь себя как инвалид ебаный, но кого это заботит как ты себя чувствуешь. > А разговоры про го, вангую, менеджеры заводят, которые сами код не пишут, а только хабру и прочую хуергу читают? Так и есть. >И откуда ресурсы на переписывание вообще? Я утрировал конечно, что запрягут джаваниггеров переписывать. Да и меня мало их болото заботит, а новые проекты очень вероятно будем писать на го. Наш умный крестовик ничего не говорил про го, да и ему похуй вообще. Мужику сорокет, двадцать в кодинге, к нему джависты как-то плакаться пришли, что-то у них на андройде что-то не стыковалось с вебом, не знаю подробностей, но пришли они просить какое-то решение на эрланге. Он в прямом смысле за пол дня сел и накатал им всё как надо, ребята до потолка прыгали. Но он такой меланхолик, что ему похуй вообще. Скажут на го писать, он спорить не станет, за вечер освоит и будет писать. И мы будем.
>>977285 >Скажут на го писать, он спорить не станет, за вечер освоит и будет писать. И мы будем. И меня заставят. Блядь, как же это печально, какая же у меня дикая фрустрация и бессильная что-либо изменить злоба от этого го.
>>977147 В том что я не осознал, что один аргумент из внутренней функции имеет замыкание на внешнюю функцию, а второй аргумент это сам массив аргументов внутренней. Ну и понял вроде как эта обертка сама работает.
https://jsfiddle.net/ewrdpLab/1/ Не понимаю, почему нельзя сохранить инфу из ajax-запроса в глобальную переменную, почему первый алерт делает то что должен, а второй выдает undefined
http://plnkr.co/edit/O7MdSdZhtWQXnOssIhcB?p=preview Нихуя не пойму, вот если прописать перед функциями this.loginOk.bind(user), this.loginFail.bind(user) то всё работает, но не пойму почему без этого не работает? И как вообще происходит срабатывание этой функции? 1) checkPassword() вызывает функцию ask() и передаёт ей параметры. 2) loginOk.bind(user) возвращает обертку функции loginOk которая вызывается в контексте user. 3) Но нахуй this прописывать? Но ведь если я припишу this , то по логике эта обертка (bind) будет запускаться в контексте ask(), т.е текущего или нет?
>>977520 Т.е насколько я понимаю просто передавая loginOk.bind(user), loginFail.bind(user) , то функция ask() начинает запускать их в своем контексте. А когда указывается this, то они вызываются в контексте объекта, в котором собственно и вызываются? Но разве функция checkPassword() сама по себе не является объектом? Ведь получается this должен передавать именно этот объект, а не какой-то внешний, разве нет? Вроде блять прочитал 2 раза эту тему про this, понимаю что контекст this присваивается из того места, откуда была вызвана эта функция, но вот такие случаи почему-то в уроке не проговариваются.
>>977522 checkPassword запускается с контекстом user. Т.е. this внутри нее user. Ты хочешь передаваемые функции прибить к user, поэтому пишешь bind this. Т.к. там просили не привязывать к user напрямую вдруг ссылка изменится.
>>977531 >Т.е. this внутри нее user Ну это понятно, но почему вызывая внутри функции checkPassword() функцию ask() и передавая этим параметрам this - он не становится объектом checkPassword()? Возможно я недопонял тему, но this вызывается именно в контексте обычного объекта, а не объекта-функции?
А если не ставить this перед точкой, т.е просто loginOk.bind(this) то как будет происходить последовательность? Т.е я понимаю что произойдёт ошибка, выдаёт что loginOk in not defined. Кто именно не находит эту переменную, функция ask() или checkPassword() ?
>>977555 Сам тоже только учусь, поэтому могу быть не прав, но ворде как checkpassword. Ask тут только инициализируется, она пока типа не при чем. Это как если бы ты вместо this.password написал бы просто password. Получил бы тоже ошибку плана "че за пассворд, не знаю такого".
А биндишь ты для того, что эти твои методы не теряли контекст , когда вызываются изнутри ask. В функциях обычно this=undefined.
>>977555 Ты не с той стороны думаешь. Еще раз. Ты вызываешь checkPassword. Если с user. впереди то this внутри это user. Если без, то при use strict undefined, иначе глобальный объект. Далее внутри вызывается ask с передачей параметров. Мы все еще находимся внутри checkPassword, поэтому this такой же какой мы определили выше. ask тут вообще не при чем в данный момент, она просто вызывается получая параметры.
Это снова ваш дебил не понимающий this. Вот например this (выделил стрелочкой), контекст определяется тем, где вызвана эта функция. Получается что эта функция вызывается в контексте функции ask(), у которой значение this = undefined, правильно? Иначе если нет, тогда почему именно здесь возникает ошибка?
>>977669 у твоей анонимной функции которая оборачивает то место куда ты стрелочкой показываешь и которая будет вызвана на 66 строке this будет undefined.
>>977669 >у которой значение this = undefined, правильно? Значение this будет ссылаться на глобальный объект, именно в этом контексте вызывается твоя функция. В случае браузера на Window, либо на global в случае ноды. >почему именно здесь возникает ошибка Скорее всего из-за того, что в твоем глобальном контексте не определен loginDone.
лол с js. у меня есть 25к документов. их нужно обработать.
docs.forEach(doc, function(doc) { ... addDoc(doc).then(function(indexes) { ...... console.log("blah") ...... // do something with indexes ... }) })
вот что получается: памяти сожрал 1гб, ни одного вывода "blah" не увидел. не стал ждать и прибил процесс.
как же быть? рекурсивно, вот так: function load(i) { ... let doc = docs ... addDoc(doc).then(function(indexes) { ...... // do something with indexes ...... load(i + 1) ... }) } смешно, тому что не просто. 25к записией и не схватил stackoverflow, хвостовая рекурсия что ли есть?
>>977781 т.е. addDoc возвращает new Promise. ладно, хуй знает как промисы работают. нет хвостовой оптимизации. попробовал простую рекурсивную ф-у и схватил stackoverflow.
Ну вот тогда опять первый пример (скрин). Почему this.loginOk.bing(this) находит этот самый loginOk (с помощью первого this), ведь функция также вызывается в контексте ask() ?
>>977812 На 22 строке функция ask еще не вызвана, ты тут просто передаешь ей параметры. На 22й строке this = user, именно поэтому все находится как надо. Далее, когда управление переходит в ask (условно на 4ю строку) , ok представляется собой следующее: function() {alert this.login + 'вошел на сайт'} c привязанным контекстом this = user. То же самое касается fail.
Хз, если все еще не доходит, я рекомендую тебе пока забить и просто читать дальше. Со временем в голове все устаканится как надо.
когда вызываем resolve(), то он не вызывает then(() => ...) сразу. если бы было так, то вывод был бы в другом порядке. как я понял, при вызове resolve(), добавляется сообщение в очередь событий. про события: https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop пока не завершится обработка собития, другие события не выполняются. поэтому, в предыдущем примере, обработчики не выполнялись во время docs.forEach.
>>977835 Просто как-то странно осознавать что передавая готовой функции параметры (т.е запуская ask() ) - она по какой-то причине не запускается (ну видимо потому что внешняя функция checkPassword() ещё не вызвана и поэтому не вызывает свою внутреннюю. Ну в общем ладно, пойду ещё раз всё переварю в голове и буду дальше учить. Хотя уже 2й день ебусь с этими задачами и в голове всё равно каша.
>>977870 Ничего не понял из того что ты написал, но попробую еще раз поэтапно, на основе последнего скрина: 1) Мы за кадром вызываем user.checkPassword(), верно? 2) Управление переходит на 22 строку, где идет инициализация вызова ask, с передачей соотв.параметров. Перечислим: question = "Ваш пароль?" answer = '12345' ok = function() {alert this.login + ' вошел на сайт'} , с привязанным контекстом user (то бишь внутри этой функции this = user, а значит this.login будет равняться user.login) fail = function() {alert this.login + ' ошибка входа'} , с привязанным контекстом this = user 3) Перескакиваем на 4 строку. Начинает работать ask, т.к. мы только что ее вызвали, с указанными выше аргументами. 4) Дальше идут твои проверки и соотв. вызов ok или fail, которые выведут адекватную инфу, потому что this у них равняется юзеру. Конец.
>>977909 >ok = function() {alert this.login + ' вошел на сайт'} , с привязанным контекстом user (то бишь внутри этой функции this = user, а значит this.login будет равняться user.login)
Это контекст, внутри ФУНКЦИИ привязывается через bind.
А я не понимал всё это время, почему самый первый this (перед точкой) имеет ссылку на объект, ведь значение this присваивается только на момент ВЫЗОВА функции, но функция ask() при этом не вызывается. И т.к this находится в параметрах ask(), я думал что этот контекст должен присваиваться только после запуска этой функции и не иметь отношение к функции checkPassword(), ну ибо вызов ask() вложен в неё и я думал это как-то по другому здесь будет работать.
>>971814 (OP) Посоны, запилил юзерскрипт https://pastebin.com/ZciW5CXQ, который в gmail показывает точное время вместо формата "месяц день". Как букмарклет скрипт работает. Работает и как скрипт, добавленный через tampermonkey если в качестве параметра addeventlistener указать DOMNodeInserted, но при этом выбрасывает ошибку Uncaught RangeError: maximum call stack. А если в качестве параметра использовать DOMContentLoaded (что я и хочу в результате использовать) то вообще не работает. Почему? Может кто-нибудь объяснить поведение скрипта при DOMNodeInserted и DOMContentLoaded?
Сап, вопрос к работающим анонам Предположим вас берут на проект, там фрилансерами из индии и снг нахуячено много нечитаемого кода. Как поступать? Переписывать, оставлять так, как вообще разобраться в нем? Написано на backbone, но так что кажется будто я вообще впервые backbone вижу.
Я к вам из фронтенд треда. Дело такое: я распиздяй, который не работя и располагая большим количеством свободного времени решил себя занять изучением чего-нибудь, чтобы мозг не атрофировался+мало ли, может работу найти. Начал по шапке фронтенд треда HTML/CSS + JS. Сейчас есть четкое осознание, что верстка меня люто-бешено бесит, и учить ее дальше желания никакого нет. А вот JS- это любопытненько. Есть ли смысл забить на верстку, начать учить Node.js с целью может быть когда-нибудь вкатиться в бэкенд, или для такого как я это нереально? Если все же реально, то за что браться после Кантора? Сразу за node.js или как?
>>978720 Фронтендер-джун без умения верстать нахуй никому не нужен. Бекендер-джун на одной только ноде тоже. Вёрстка бесит лентяев-неосиляторов, в 2017-м верстать в десятки раз проще, чем в 2007-м. Вообще, если ты только начал свой вкат в IT, а тебя уже что-то "люто-бешено бесит", то это повод призадуматься. мимо-бекендер-умеющий-адаптивно-верстать
>>978720 Полюби верстку, все равно любого нодера в любой момент могут дернуть на фронт, а на фронте придется верстать в том числе. Меня тоже тошнило, но я занимаюсь версткой тогда, когда от кодинга мозги устрают, воспринимай ее, как отдых.
Долбанный javascript, как сверхзвуковой самолет, за ним не угонишься. Как вы постоянно учите эти бесконечные фреймворки???? Или фреймворки простые? И самый пиздец, что в перспективе js серьезно потеснит все остальные языки.
блин, меня тоже бесит верстка, чувствую, как мозги превращаются в кисель. ни стройных структур, ни возможности подумать, одно сплошное полотно жаваскрипта и цсс селекторов, фуууу
>>978754 Ты ебанутый? Мускул находится в недрах сервера, а реакт - библиотека мало того, что для фронта, так еще и тупо для view-части, схуяли-насрали они как-то вообще должны между собой общаться?
Я вообще сомневаюсь, что на ноду берут не фул стеков, потому что она учавствует только, как апи, а вся движуха с данными уже проиходит на фронте в реактах/ангулярах
>>978754 ajax запрос к серверу, сервер(node/php/python) делает запрос к базе, получает ответ, формирует json, отдает клиенту, react вставляет данные в шаблон html, профит, если где-то ошибся, поправьте.
Слоник вкатился. Посоны, есть короч одно web-приложение (если можно так назвать). Тестировалось на денвере. Состоит из клиентской части - на стороне клиента JS считает всю тригонометрию с рендерингом и рисует картиночка в canvas. И серверной части, где собственно и происходит вся оставшаяся математика. Пользователь с сервера получает два массива себе в браузер, в каждом массиве по 20 элементов (скажем так, координаты, целые числа, могут быть отрицательными). После всей отрисовки пользователь жмякает кнопочку и на сервер Аяксиной улетает некоторое значение (индекс). На сервере происходит немношк срань, но пришлось искать некий компромисс. В текстовом файле (serialize) хранится массив на 20 тыщ элементов, каждый из элементов этого массива - в свою очередь вложенный массив на 20 элементов (те самые, которые пихаем в Json-строку и отправляем клиенту). Когда от клиента получаем индекс, с соответствующим ему элементом массива делаем некоторые действия, пихаем обратно в файл и выдаем клиенту новых два массива. Чому не SQL? У клиента есть еще одна ОСОБАЯ КНОПОЧКА, которую ТЕОРЕТИЧЕСКИ он должен жмякать после некоторого (неопределенного, в зависимости от того, что там JS отрисует) числа нажатий на обычную кнопочку. После нажатия на ОСОБУЮ КНОПОЧКУ на сервере происходит вся магия. Достается весь этот 20-тыщ-элементов-массив, делится на 200 маленьких массивчиков по 100 элементов, каждый в свою очередь делится пополам. Сортируется вся эта поебота. Создается временный массив, куда некоторые (в зависимости от...) из элементов маленьких массивчиков складываются, хм, надо тут еще придумать, как из каждого массивчика элементы между собой обменивать. В общем вся эта хуйня смешивается, считается, пихается из временного массива обратно, еще раз сортируется, пихается обратно в файл. Ну и пользователю опять выдаем два массива. Всё заебись работает. Но это у меня работает, томущо знаю, когда на ОСОБУЮ КНОПОЧКУ надо жать. Но вот я некоторые функции в приложении еще реализую и на хабру выложу - мне первые же 10 пользователей сайт ушатают. Даже если сто раз объясню, куда и в каком порядке нажимать - на особую кнопочку всегда найдется особый пользователь. Так я вот подумал. Серверная часть мне и не нужна, по большому счету. Всю серверную математику можно в JS посчитать. А вот с хранением данных возникает вопрос. Какие там в JS завезли механизмы для хранения больших объемов данных на стороне клиента?
>>978943 Не интересно. >ОСОБАЯ КНОПОЧКА, которую ТЕОРЕТИЧЕСКИ он должен жмякать после некоторого (неопределенного, в зависимости от того, что там JS отрисует) числа нажатий на обычную кнопочку.
В общем накидал тут примерный размер массива https://pastebin.com/qMCS8E0s localStorage вывезет? А если мы еще и всю историю хранить будем (массив так раз в 32 побольше станет)?
Короче эпик. Недавно в контыче списалась с куном с моего города. Случайно получилось, я давно-давно оставляла комментарий, мол, есть ли хорошие программисты в моём городе и вот недавно он отписался, мол, могу попробовать помочь. Но это вообще не суть, так уж получилось, что он сегодня написал, мол, давай встретимся поговорим, а то мне не хочется дома сидеть весь день. Ну мне как-то особо делать в выходной тоже нечего было, почему бы и нет. Поехала в центр в условленное место. Сразу скажу, что фотографий вконтакте у него нет, кроме одной, где плохо видно лицо, а тела вообще нет. Ему 18, мне 20. Ну приезжаю, опоздала ещё, он где-то там минут 10 сидел, ждал, лол. И что я вижу? Мелкий (173 от силы), ужасно одетый в какую-то непонятную куртку цвета блевотины и ботинки цвета мочи чмоша. Может какую-нибудь одинокую жируху это и устроило бы, как собеседник на вечер, но я еле удержалася от того, чтобы развернуться и уйти. Ну похуй, решила не обижать. Пошли в кофейню. Снимаем куртки, я выставляю на показ мои пиздатые татухи, iPhone 7 Plus и шмот за 700 баксов. А он блядь в ОГРОМНОМ худи на молнии(!), которая расстегнута и из-под неё видно ебаную футболку с эмблемой JavaScript (!!!). И телефон вроде был Xiaomi. Я вздохнула и заказал кофе. Сидим, говорим. Стеснительный, пиздец. Просто ходячий комплекс. По ходу диалога выясняется, что он играет в ебаную Доту 2, пишет на React + Redux, чето там пиздел ещё про Webpack, ES6, типа модно... Смотрит аниме и читает комиксы. Просто ничтожество. Ну, я вздохнула, потравила немного баек из моей жизни, вышли из кофейни, пошароёбились немного по центру города. Всё это время я чувствовала себя так, как будто гуляю с младшим братом. Сняла денег с карты, захотелось ещё кофе, пошли в другую кофейню. Заходим. Берём кофе. Он опять снимает куртку и я снова вижу эту блевотную ебливую кофту с футболкой с ебучим логотипом JavaScript, которые скрывают его дрыщявую фигуру, делая его ещё более жалким. Ну и сидит, что-то пиздит про виртуальный DOM, я медленно разглядываю его. Плеч нет. На лице прыщи. Полноватые ноги. Детские кисти рук. Тонкие, убогие губы. Облысение. Рядом снуёт высокий, подтянутый блондин официант с потрясающей улыбкой, я сижу с ребёнком, который мне рассказывает, почему Facebook — лучшие.
Короче, меня прорвало. Я начала разносить его по каждому пункту, начиная с доты 2 и React + Redux, которые безусловно являются говном для даунов, к которым нормальный парень никогда не притронется и заканчивая его сука кофтой, встречают по одёжке, провожают по уму, запомните это, тупорылые долбоёбы. Всё это время он сидел и молчал с какой-то жалкой полуулыбкой, иногда пытаясь что-то промямлить в духе "за React будущее", "мы передаем props в компоненты", "мне нравится Javascript" и прочие инфантильную хуйню сосачерских вырожденецев-программистом.. Финалом стало то, что я сказала ему: "В моих глазах ты не выглядишь, как мужчина", мы расплатились, я довёла его до остановки, дождалась, пока автобус увезёт его нахуй и пошла смотреть на пожар: какой-то сраный склад загорелся и я пару минут наблюдала это зрелище, наслаждаясь видом и табаком. И блядь, как кульминация всей этой хуйни, я приехала домой, легла спать, а он пишет мне "Приятных тебе снов" и предлагает пойти с ним куда то. Я просто угарела, сисоньки мои.
>>972862 > взлетела, вакансий море. Как считаете, можно и дальше дрочить его? С моей колокольни выглядит так, что еще пару лет его ничто не перегонит, но может я зашорен и уже пора потихоньку готовить перекат? И если да, то куда именно? Часто слишу про второй ангуляр и вью, что сильнее укрепит мои позиции на жоп маркете?
другой анон. Сейчас вкатываюсь на него и, пока что, все идет очень даже хорошо. Можешь пояснить за подводные?
>>979612 DOM, картинки и прочая залупа загружаются не моментально и к моменту начала исполнения скрипта могут быть недоступны. Если тебе нужно оперировать с домом, например, то разумно сначала подождать, пока он прогрузится
>>979650 А вот такой еще вопрос. Есть массивчик, как на пикче. Как мне его тудым-с в локалсторедж запихать? Прям вот так: localStorage[hello] = array; Или его надо как-то сериализовать как в PHP? Индекс n у меня не от нуля идет (anglemin). Индексы похерятся, когда я его из локалстореджа обратно доставать буду?
>>979847 Да, вижу. Ты ее объявил, но значения не присвоил. После объявления в переменной лежит (переменная ссылается) undefined. А ты работаешь с ней как с объектом - обращается через точку к свойствам.
>>979858 Спасибо, я в общем понял что код вообще кривой и логики в нём ноль, но всё равно спс. Кстати когда пишу такое - cache.[arguments[0]] , то выдаёт ошибку. Можно ли всё равно как-то реализовать подобную строку? Т.е мне нужно чтобы свойство в cache называлось как первый аргумент из текущего объекта.
>>979871 Всё таки доделал скрипт. Криво, косо, нечитабельно, но кое-как доделал, немного хотя бы разобрался, но всё равно в голове немного каша =) Первый раз с помощью отладчика в браузере разобрался почему не работает нихуя http://jsbin.com/weyutovezu/edit?js,console - сделано.
>>979882 У тебя всегда выполняется вызов исходной функции. Только потом идет проверка есть ли на такое значение аргумента что-то в словаре. По этому теряется весь смысл кеширования. Нужно проверять наличие в словаре ключа и если есть, сразу возвращать значение.
Поцоны, поясните в какую сторону вообще гуглить, и может есть какие то библиотеки, инструменты под мою задачу. Задача: 1. Среда исполнения User.js через greasemonkey 2. Инструменты jquery или другая либа 3. Необходимо лазить по сайту (типо crawler) извлекать какую-то информацию, складировать с возможностью последующей выгрузки, и на основании страницы переходить на другую страницу. Все это должно быть в браузере, никаких ноде.жс и тд. Может есть уже какие то либи или как мне такое организовать? Раньше когда нужно было что-то зациклить. Делал рекурсивный вызов через SetTimeout https://pastebin.com/BvButcXx И внутри соответственно AJAX запрос. Теперь когда попробовал вместо AJAX запроса вставить >$(location).attr("href","http://example.com/"+get_uri());
>>979882 Нормальный у тебя код. Решение ведь понял. Попробуй еще числа фибоначи на таком декораторе посчитать и без него. С декоратором будет будет в овердохуя раз быстрее. А этот пример с рандомом не очень наглядный.
>>979774 У меня солянка. Как f не проебать? Если каждый элемент массива в отдельную ячейку локалстореджа писать - как это скажется на производительности? И на объеме данных в хранилище? Я так понимаю, что названия ключей тоже в этих 5мб хранятся, а названия эти подлиннее самих значений. Хотя, можно наверное все эти f отдельным массивом записать. >>979775 Что не так с var?
>>980095 Если у тебя солянка, то нехуй называть это массивом, сделай это объектом, у которого некоторые ключи просто будут числами. Если нужна возможность итерации по свойствам с числовыми ключами - читай про Object.defineProperty и enumerable. Хранить что-то, помимо числовых ключей, в массиве - это хак и у тебя будет все ломаться, как те же stringify / parse
>>980095 Алсо >Что не так с var? Не так то, что var ложит хуй на области видимости переменных и на порядок их объявления. Нихуя блять не интуитивно, что { var mocha=true; } console.log(mocha);
выдаст true. На дебаг такой глупости можно полдня убить.
Анонусы, мозг сломал. Надо подправить страницу, но в js нихуя не смыслю. Есть элемент <input type="text" id="add_task_actionQuantity" name="add_task[actionQuantity]" required="required" class="form-control" style="width: 30%;" placeholder="ХУЙ">
alert(document.getElementById("add_task_actionQuantity").placeholder); Показывает "ХУЙ", но alert(document.getElementById("add_task_actionQuantity").class); нихуя не показывает. Почему так?
пацаны, а вот есть у меня в реакте очень глубоко вложенный компонент, а все нужные данные фетчатся в самом верхнем компоненте и соответственно приходится много раз их передавать по иерархии вниз, я конечно изобрел свой dependency injector но может кто объяснит как такое обычно делается ?
Немного не понял с какой всё таки последовательностью выполняется данный код. Т.е setTimeout через 100мс запустит функцию, пока идёт этот таймер управление переходит в код который ниже, т.е запускается функция hardWork(), и т.к setTimeout не может прервать эту функция (а она выполняется дольше чем 100мс), то просто дожидается окончания выполнения и потом управление (ну или как это назвать) снова переходит в setTimeout и запускается уже внутренняя анонимная функция. Правильно?
>>980712 то есть не передавать их приходится много раз а много раз писать хуйню в духе <SecondLevelComponent height='300' /> а в нем <ThirdLevelComponent height='300' /> а этот prop нужен в <ElevelLevelComponent />
>>980713 интерпретатор js увидит твой сеттаймаут, и запомнит, что через 100мс ему надо запустить анонимную функцию, а пока эти 100мс он будет ждать, он займется другой работой а именно выполнит функцию хардвок после выполнения которой переменная i станет равно 1e8 после выполнения хардвок интерпритатор вспомнит, бля яж через 100 мс должен был выполнить анонимную функцию и выполнит ее
Сап, програмач. Я чуть не пизданулся, несколько часов пытался найти ошибку в своем коде (у меня phpQuery парсит другую страничку). Оказалось, что DOM получает изначальную версию документа, с нулевыми значениями. Например, на том сайте есть таблица с различными данными, я эти данные пытаюсь вытащить. Но мне в ДОМ парсится хтмл код с таблицой, где все значения нулевые. Похоже, что эти значения меняются с нулевых на нормальные через какие-то милисекунды. Что это за хуета такая и как мне получить финальные значения?
>>980720 правильно относительно чего ? Я даже за жквери не брался пока ecmascript'овый стандарт не вызубрил. А так если понимаешь о чем рассказывается в учебнике/доке по фреймворку то все норм.
а если по сути: если ты учишься то учи на насколько можно низком уровне, когда будешь работать тогда пользуйся абстракциями которые предоставляют vue/css фреймвоахахахахахки
Дублирую, может жс челы тоже в теме. >>980778 Уже когда высрал, вспомнил за feathers и экспресс. Мб бекенд (там умеренно сложная апишка) можно ебануть на ноде?
>>980797 Cорри, ответ был тому анону. От пыхи всегда должен придти уже отрендеренный контент, если у него пусто значит он после прорисовки страницы загребается жсом, значит нужно убеждаться что страница отрисована, проще всего - начинать парсить когда точно знаешь что значения стянуло. Если там какой т аякс реквест то делать что-то дальше когда он выполнился
>>980794 >>980797 >>980807 Я парсю с phpQuery, вот так это выглядит в коде. Сделаю все, что скажете, но с этой либы не слезу, раньше пытался стандартными методами и не получалось, хотя консультировался в тредах.
Нужен совет, екмаскриптач! Что первым делать на проекте? Бабилить файлы, а потом собирать их вебпаком или сначала вебпаком в бандл собирать, а потом бабилить?
>>980903 ога нашел вроде годный ссыль по работе с вебпаком, где за лоадер говорится и показывается, не могу теперь вспомнить почему я ранее юзал отдельно бабель и отдельно вебпак, то есть сначала гонял все файлы в бабель форму, потом вебпаком бандлил. х3 о чем я думал полгода назад. С лоадером вроде попроще все, если взлетит, конечно, лол
А еще вопрос, практикуется ли возврат мейн.ксс в теле бандла.джс, если да, то где рыть, как лоадер называется для вебпака етц. Вроде мне кажется, что когда полгноданазад искал инфу, то у меня сложилось мнение, что такое делают, чтобы по тсп быстро один файл отдать, где и джс и ксс разом, или меня глючит и по-старому отдаются по отдельности?
>>980912 Ах да, и нужен ли он мне, ибо я юзаю СКСС, то есть файл и так компилится в единый, в общем, плохо шарю как лучше организовать все, подскажите, кто шарит. Буду благодарен.
https://learn.javascript.ru/settimeout-setinterval - блять, только один я долбаеб не смог 2 последние задачи решить? Охуеть дизмораль когда люди в комментах там ещё разные решения предлагают, а ты даже одним способом в голове сообразить не можешь.
Этот тред посвящён главному языку будущего - 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
Конфа /pr/ в Slack:
https://invite-me-to-2chpr.herokuapp.com/
JS-конфа в телеграме:
https://telegram.me/jsthread
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.