Вы видите копию треда, сохраненную 4 октября 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы:
https://github.com/vladimir37/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/vladimir37/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/vladimir37/js-thread/blob/master/Wiki/tools.md
Инструмент для визуализации и экспериментов со связями между объектами в JavaScript:
http://www.objectplayground.com/
Конфа /pr/ в Slack:
https://slack-2chpr.herokuapp.com/
JS-конфа в телеграме:
https://telegram.me/jsthread
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
Cажи джава-скрипт макакам
И слава богам Египта!
1. В JavaScript нет классов — есть конструкторы
2. Цепь прототипов — база на которую опирается все наследование в JavaScript
3. Свойство объекта получается с использованием цепи прототипов
4. __proto__ — это ссылка на прототип конструктора(prototype)
5. Оператор new создает пустой объект с единственным свойством __proto__, которое ссылается на F.prototype, выполняет конструктор F в котором this — созданный ранее объект и возвращает объект
6. Оператор instanceof не проверяет порожден ли данный объект «Object» конструктором «ObjectsConstoructor», для своего вердикта он использует цепь прототипов
7. В JavaScript значение this определяется вызывающей стороной по форме вызова
8. void — это оператор, а не функция. undefined, null — примитивные значения
В JavaScript значение this определяется вызывающей стороной по форме вызова. Правило по которому определяется то, что будет в this такое объясню по-простому:
1. Если метод вызывается напрямую (без new, call, apply, bind, with, try catch), то значением this будет тот объект, который стоит перед точкой, слева от имени метода.
2. Если точки нет (функция вызывается напрямую), то this будет приравнен к undefined, null или window(global), в зависимости от среды и «use strict».
3. Если выражение представляет из себя не ссылку, а значение, то применяется пункт 2
>нет нормальных классов
>нет абстрактных классов и интерфейсов
>наследование через жопу
>нет модификаторов доступа
Зато есть TypeScript и пиздатый event-loop
>нет нормальных классов
>нет абстрактных классов и интерфейсов
>наследование через жопу
>нет модификаторов доступа
всё давно есть
#1 https://ilikekillnerds.com/2015/06/abstract-classes-in-javascript/
#2 https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Inheritance
#3 https://scotch.io/bar-talk/4-javascript-design-patterns-you-should-know
Написал функцию, которая лексикографически сравнивает один массив с другим и если строка первого массива присутствует в какой-либо строке другого массива, тогда она становится часть нового массива и далее выводится.
Использую метод instanceOf, который всегда выдает -1, кроме полного совпадение элементов массива.
Что я делаю не так?
https://jsfiddle.net/ax24rbsx/
Добавил в закладки.
Кстати, интересно, а можно ли из ноды задействовать гпу для ресурсоемких вычислений?
Ишь чего захотел! Жри что дают мразь!
Ты забыл про this в событиях типа onclick
Нет
Не понял. Ни один из этих методов не использовал, они и не подходят.
В первом массиве есть строка 'op', во втором 'pop' и так как первая строка полностью имеется в строке второго массива она должна передаваться в новый.
Спасибо!
"Лексикографически" это из задания. Я думал это о сравнение строк, хоть и гуглив слово. Оказалось надо было по алфавиту отсортировать.
И в этом решении работает indexOf. Видимо я пытаясь сначала уменьшить вероятность появления ошибки использовал цикл, вместо высшей функции, получил только проблемы
Манипуляции с HTML, синтаксис, представление о ООП в JS, базовое понимание о замыканиях, AJAX.
https://learn.javascript.ru/first-steps
открываешь это и ебошишь, за два-три дня вполне реально осилить и понять все разделы. В ES2015 не лезь только, это уже не базовое.
>CouchDB
спросил уже ответ тут >>1052141 но там похоже все умерли давно.
спрошу еще и здесь, так как CouchDB тесно связана с ЖС.
мб юзал кто CouchDB для продакшина, какие подводные камни?
Нет, полная хуйня. Шарп это жаба с традиционным говно ооп уровня крестов. Впрочем если ты linq-мастер, то тебе будет норм.
Кауч в продкшне юзали Meebo, хотя ты, наверное, и не застал, что это за сервис был такой.
Гугли их юзкейс.
>Meebo
спсб за идею, буду гуглить разные рабочие проекты/сервисы с участием этой дб.
Мне их идея с документами, которые могут быть одновременно приложениями доставляет, но там вроде как не всё гладко с записью большого количества простых документов и потреблением места на диске.
Отчасти верно.
Отправляю ajax-запрос через jQuery на php-обработчик в формате json (JSON.stringify). Всё ок, пхп получает и тоже возвращает json (json_encode). Обычно раньше, я в JS использовал JSON.parse, однако сейчас увидел, что ответ уже приходит в виде массива JS, то есть уже распарсеный. Это всё из-за того, что указан type: 'json', верно? До этого использовал type: 'html'.
Перечитал свой вопрос (и посмотрел на сайте jQuery) и понял, что спросил о том, что и так очевидно. Стыдно.
Почему учебник Node на сайте Мазилы сразу мне жестко поясняет за шмот за Express? Почему сначала подучить Ноду, а не сразу дрочить фреймвоки?У меня от этой хуйни дедушка заулыбался, блять написали учебник Express
Пишется похоже, но идеология другая.
Основа - прототипы, в них разбирайся в первую очередь, чтобы не тормозить.
пишешь ник и игру
тупо проверяется список зрителей каждого стрима и ищет этот ник
как оно должно работать? чисто схематически с запросами\парсами и всякой такой шляпой
>нахуя зубрить JavaScript когда есть jQuery?
Чтобы писать божественное
jQuery.extend(anchor,{href,'about:blank'})
вместо устаревшего
anchor.href='about:blank'
У этого дедушки геморрой
В догонку - еще важное отличие от строгих языков - в JS нельзя быть уверенным в значении переменной и вообще в ее наличии, то же самое с аргументами функций. Так что перед использованием переменные нужно проверять на существование и тип значения в них.
Это сперва очень непривычно для классических программистов, и потому порождает кучу элементарных ошибок.
Ты похоже не умеешь программировать? Тогда для решения такой задачи тебе ой как далеко. Если срочно - попроси кого-то сделать. А если хочешь сам - приступай к изучению JS (или Python/PHP/Ruby)
Я разобрался. Через app.locals закидываю прочитанный JSON файл, а потом в рендер передаю request.app.locals.переменная.
Говно — это ваш недоязык, который отчаянно пытается походить на нормальный, но каждый раз обсирается всё сильнее и сильнее.
Но возник вопрос, а где брать готовые компоненты? Раньше брали jQueryUI/ExtJS + Bootstrap для стилизации и тем. Но у Vue свой виртуальный DOM вместо браузерного, и jQuery с ним работать не умеет (а значит, и эти фреймворки не будут). Так что, неужели придется самому писать всякие панели, деревья, сплиттеры и т.д.? Или есть какие-нибудь готовые наборы?
Вроде задача тривиальная. Можете накидать примерно как это будет выглядить?
Вот:
https://jsfiddle.net/xwghvkyw/
событие таково - допустим когда в die появляется текстовая строка "www", - это считается событием, и запускается обработчик, допустим с алертом.
Нихуя логику не пойму. А у кантора мудреный пример.
Обьясните, как нибудь попроще нубу.
https://jsfiddle.net/jm0vbtnz/1/
как можно получить доступ к data-id не навешивая обработчик на div, потому что div в будущем будет перерисовываться.
Аноны, помогите! Я аж чешусь бладж!!!
вот обновленный код с комментариями:
https://jsfiddle.net/v9nyga5p/
Это мудацкая хуйня. Нахуя блять эти модные фреймворки, если они заставляют генерить тонны бойлерплейта?
Можешь переписать сеттер innerHTML, чтобы тот в добавок к присвоению нового значения еще и вызывал нужное тебе событие, или добавить новый метод/сеттер элементу, чтобы тот присваивал innerHTML и вызывал твое событие, или использовать прокси, или реагировать на событие DOMSubtreeModified, или использовать MutationObserver (не уверен), или либу какую найти, которая упрощает это дело, но любое событие где-то да нужно вызывать вручную, ты можешь только замаскировать и спрятать это подальше. Могу ошибаться.
Здравствуйте, есть один браузер хром(60.0.3112.107) для андроида и мне нужно смотреть куки. До недавнего времени я использовал "javascript:alert(document.cookie)" и все бы ничего пока не настал лимит отображения, то есть новые куки я не вижу.
Задачи:
1. Вытянуть по названию(я его знаю)
2. Удалить первые.
И как это сделать я не знаю. Вот допустим должна быть куки с названием Gay_porn_id что мне нужно написать что бы увидеть ее значение?
Подключить телефон к пека и смотреть через инструменты разработчика, предварительно настроив удаленную отладку. Или я тебя не правильно понял.
Немного почитал здесь:
https://learn.javascript.ru/cookie
И вот смотрите javascript:alert( document.cookie ); у меня работает и для этого сайта отображает куки usercode_auth
А вот когда я javascript:function getCookie(usercode_auth) то ничего.
>>1053266
> del
> {del();del();del
Не хочу тебя обидеть но оставлю это на потом, все равно буду удалить все что бы очистить "кеш отображения" на следующие разы.
>>1053270
Я вообще не программист, даже телефон не рутирован. С рутом похоже есть программы что могут читать куки... То что ты написал для меня это уровень расшифровки https трафика на мощности какой нибуть криптофермы, ради несчастной печеньки(Ну вы поняли).
Спасибо бро за развернутый ответ. Я сидел и горевал по поводу того что я тупой, что то что мне требуется лежит на поверхности, а я понять не могу.
>>Можешь переписать сеттер innerHTML
Не хочется ковырятюся в нативных методах.
>>добавить новый метод/сеттер элементу
А вот это уже реальнее. Добавить метод элементу, которое будет реагировать на изменение innerHTML и вызывать кастомное событие.
Шпасибо!
Как итог мне нужен был всего-то такое
javascript: getCookie("Gay_porn_id");
Теперь я явапрограмист?
Снова пример от кантора.
Снова прошу хелпа!
https://jsfiddle.net/Lcrz4pzp/
комментарии внутри
Бука!
Такой пример.
Есть сайт, на котором прогружаются div-ки с баннером (на каждой странице домена) и каждый раз, когда я захожу на какую-либо страницу сайта, у меня подгружается эта div'ка.
Вручную я удалить ее могу через панель разработчика (просто hide element в chrome), но если я обновлю страницу или зайду на другую, дивка снова подгрузится. Можно ли как-то автоматом зашить удаление этой div в браузере?
deflate и не еби мозг
только если для взаимодействия с бд ты возьмешь ноду.
Для всего хватит хтмл цсс жс, если нода на беке устраивает.
связка не проблема, экшен будет когда тебе начнёт не хватать ресурсов и все это нужно будет как-то срочно растянуть на несколько машин
Псевдокод
var fappedLastTime = userinput;
var daysSinceFapped;
for (var i=0; i<100; /все равно больше не продержишься / i++) {
daysSinceFapped++
}
Время берешь через Date().getTime()
Вопрос: это у всех так? Может, просто не моё? Мне 30 и я гуманитарий, может дело в этом.
Люди делятся на два типа.
Одни понимают указатели, другие нет.
Одни понимают рекурсию, другие нет.
Одни понимают трансформеры монад, другие нет.
Это все одни и те же люди. Одни тупые, другие нет.
Ну так тут не в программировании дело, а в математике.
Но вообще-то если гуманитарий, то каким хером тебя в программирование понесло? Деньги?
Вот здесь https://vuejs.org/v2/guide/plugins.html в конце написано:
>Checkout awesome-vue for a huge collection of community-contributed plugins and libraries.
> https://github.com/vuejs/awesome-vue#user-content-components--libraries
>не по специальности на тупиковой должности
Как и почти вся страна. А почему сразу в техвуз не пошел, математику не учил? Какие-то другие планы были, артистом например стать?
Купи макбук.
Как чувак который осилил почти весь учебник кантора скажу - это ебанное начало только. Будет тяжелее.
Очень высок уровень абстракции. И должно выработаться специфическое мышление.
>>1054192
>>Кратко: да, деньги
Честно, не уверен что это разумно. Суть в том что программирование "должно зайти", когда ты сидишь до часу ночи разбирая какую нибудь хуиту, забесплатно, тупо потому что нравится. И второе - когда ты осилишь учебник кантора - ты вдруг поймешь как мало ты знаешь. Хочешь пилить полноценные сайты на сервере - изволь учить node.js, что бы самостоятельно верстать быстро - бутстрап. И куча еще всяких технологий.
И при всем этом пиздице ты через месяцев 6-7, когда все осилишь, потратив дохуя часов - ты пойдешь каким нибудь джуном за 40 тыщщ.
И ток через пару лет вьеба ты доползешь до сильных ЗП. Наверное.
К сожалению в россиюшке программирование привлекательно единственно тем, что гипотетически ЗП могут прийти к европейскому уровню ЗП, ну или прямо работать с заграницей не поднимая сраки с родного дивана.
Я лично перекатываюсь потому что я по образованию "сисюадмин", но уже 5 лет работаю в информационной безопасности, а это настолько бумажная специализация что пиздец. Тошнит уже.
Я мог бы в какой нибудь банк уползти и там кидать акты на заключения. Но заебло. Я хочу технической работы.
Мой совет - научись блядь штукатурку нормально класть. Через пару месяцев будешь подмастерьем, через год будешь хуярить на себя. И поднимать нихуя не меньше, если работать и не бухать.
Да это шутка была.
Подробности сразу давай. Скока денег?
Жму лежа 175, достаточно сильный?
Можешь поставить расширение для браузера, которое применяет пользовательские стили к сайту (для хрома - User CSS, например). Тогда можно просто к селектору этого баннера `display: none` применить.
ой я что-то засмущалась и вышла. там столько мальчиков. ._.
https://github.com/sorfeai/vocabulary
Самое главное забыл. Могу ли я сейчас претендовать на джуна в не самой опущенной команде?
Учитывая что я не понимаю 80% процентов того о чем тут говорят это странно, лол.
Лол, помню тебя, ты выкладывал резюме во фронтенд треде полгода назад. Тебя что, не приняли тогда на работу, или что? Что то у тебя прогресс медленно идёт, я за это время уже дохуя приложений высрал.
имеется большой массив вида [[a: 1, param: 2], [b: 2, param: 3]]
Как функционально реализовать следующую задачу - обработать каждый элемент массива (как в map();) плюс вставить после обрабатываемого элемента дополнительные?
Императивный алгоритм у меня есть, может есть какие то методы для этого?
Например:
[[a: 1, param: 2], [b: 2, param: 3]]
// Умножить первый подэлемент на 2, вставить дополнительный соответственно подэлементу param
[[a: 2, param: 2], [new: 1], [new: 1], [b: 4, param: 3], [new: 1], [new: 1], [new: 1]]
Приняли, я дропнул потому что НЕ МОЕ и работал год дизайнером/иллюстратором, заебало и опять пересел на фронт. Поэтому я можно сказать на том же уровне что и год назад.
'abcabcabcxyzabcabcxyzxyz'
Над из этой хуйни одним оператором получить:
['abcabcabc','xyz','abcabc','xyzxyz']
Короче анон, в данном примере я до определенных вещей дошел сам.
спасибо, пидоры, помогли бладж
впрочем зато сам покопротивлялся, туда сюда учебник полистал, и по итогу понял сам, что оже полезно
Но есть вопросик.
https://jsfiddle.net/Lcrz4pzp/3/
- а чего это у тебя редакс и промисы в дев-депенденси?
- ах ты уёба, еще и react-create-app используешь (не делай так, иначе тебя девопс отхуярит)
- "открой каталог layout и охуей", ебать ты наркоман.
- используй автопрефиксер, ёпт, https://github.com/sorfeai/vocabulary/blob/master/src/styles/global.css
Итого, поработай джуном в обоссаной команде годик(-другой), а потом уже иди в нормальную.
ты до какой-то хуйни похоже дошел и пропустил кейворд new перед Menu
30$
Что не так с react-create-app?
https://jsfiddle.net/jcg44ukd/1/
потому что ты мудень, не читавший спецификацию.
функции твои срабатывают не в контексте объектов userOne, userTwo, а в контексте window
в первом случае у window нет свойства 'firstname', поэтому ты получаешь undefined, если его присвоить все становится очевидно
во втором случае, внезапно, свойство 'name' у window есть и оно равно пустой строке.
А то чувствую себя дауном ибо уже второй день ковыряюсь в разделе Замыкания, область видимости
Ты как-то слишком быстро идёшь. Проверь свои знания: https://gist.github.com/codedokode/ce30e7a036f18f416ae0#Задачки-на-js/
Кантора месяцами проходят.
это сложная тема, поебаться с ней как следует это нормально
>Кантора месяцами проходят.
Ну до этого раздела там всё легко было.
>Проверь свои знания: https://gist.github.com/codedokode/ce30e7a036f18f416ae0#Задачки-на-js/
ок
Анон, есть вопрос. Пишу на node.js. Есть ли разница для работодателей, какой стандарт языка ты используешь?
Обычно это не указывают в вакансиях, но мб это само собой подразумевается? Стоит ли вообще использовать старый синтаксис?
Суть такова: декоратор, который кеширует результаты функций. И есть два кода.
Номер раз) https://codepen.io/anon/pen/wqNBgE?editors=0012
Номер два) https://codepen.io/anon/pen/XaOJNJ?editors=0012
Первый работает, второй - нет. И понятно почему: в первом случае мы мапе передаём ключем числа, которые при сравнение равны, а во втором массивы, которые нет.
Вопрос: как это победить?
В принципе, можно привести аргументы к строке, но тогда и смысла в мапе немного - можно в объекте хранить.
сериализуй/хешируй
крочи, если твое знание ес6 ограничено тем что ты вместо вар стал писать лет то нет смысла, а если разобрался с промисами то да.
Если ты хочешь вывести "anon" то тебе просто нужно вызвать функции, а не сослаться на них. Зачем кукарекать, если ты не знаешь сам что делаешь?
setTimeout(userOne.sayHi(), 1000); // anon
setTimeout(userTwo.sayHi(), 1000);// anon
>setTimeout(userOne.sayHi(), 1000); // anon
>setTimeout(userTwo.sayHi(), 1000);\t// anon
ох ты и мудило, блет, сам нубяра а лезет кого-то учить. ты вообще соображаешь что сделал? ты немедленно без задержки вызвал функцию и передал в сеттаймаут ее результат в виде говнища
чтобы сделать то что он хочет нужно прибиндить контекст к функции так
setTimeout(userOne.sayHi.bind(userOne), 2000);
setTimeout(userTwo.sayHi.bind(userTwo), 2000);
И нахуй такую хуйню разводить, когда можно через анонимную функцию сделать?
setTimeout(() => userOne.sayHi(), 1000);
>хуйню разводить
это не хуйня, а классика, блядь, это знать надо
с помощью байнда можно взять любую функцию и вызвать ее в любом контексте, не копируя и не передавая как параметр
твоя ссаная лямбда так умеет, мм?
На весь учебник, с процентов 80 решенных заданий ушло 5 месяцев. Это с ноля. Правда я много проебывался, и месяца полтора почти подряд проебал. Думаю что если заниматься часов по 5 ежедневно, то месяца три займет.
var не завезли?
коллбек в данном случае это сейхай.
бинд - это метод прототипа Function, который декорирует коллбек
Бладж, я и имел ввиду что сейхай с привязанным контекстом.
эх, вот бы в 2017 внятно излагать свои мысли
Спасибо
Что за хуйня блядь, КАК СДЕЛАТЬ ЗАЛУПУ ПО МАССИВУ ПИСЕК.
Вы урод?
Почему вы не разрабатываете приложения? Почему я захожу и вижу залетных даунов с гугловопросами-1-секунда?
А ну-ка пиздуйте!
Мы не умеем. Подскажи годных туториалов по созданию сложных SPA на реакте с ООП. И чтоб стек из 9-10 перделок.
инбифо тудулист
Смысл копировать туториалы ничего не понимая?
Ставь задачу, - реализуй. И лучше освой немного ООП и модульность, это делается за день.
Дальше ставь фановые задачи и реализуй. Все придет.
Скриптач, как бы мне создать DOMElement из строки? При этом строка должна не в innerHTML помещаться, а как бы целиком превращаться в объект.
убей себя, мамкин погромизд, бляю
'000000'.replace(/^(.{2}).{1}?(.*)$/, '$11$2')
Напишите в одну строку функцию, которая принимает на вход строку вида
>"brown black black"
или
>"brown black brown gold"
Четвертый цвет может встретиться, а может и нет
Что c ней надо сделать.
Есть словарь:
black: 0, brown: 1, red: 2, orange: 3, yellow: 4, green: 5, blue: 6, violet: 7, gray: 8, white: 9
Это кодирование цветом сопротивления резисторов, но это значения не имеет.
Первые два цвета путем сложения их цифр как строк дают число, например
"yellow violet ..."
дадут
'4'+'7' = '47' // а не 4+7=11
Третий кусок переводится в число по тому же словарю и служит экспонентой для возведения в степень числа 10, например
"... ... black"
даст нам
10 в степени 0 = 1
Четвертый опциональный кусок добавит в конец итоговой строки проценты. Если этого куска нет - 20%, иначе если
silver: 10%
gold: 5%
Теперь первый промежуточный результат переводится в число и перемножается со вторым, получаем 47х1=47
Теперь нужно вернуть строку по следующим правилам
-если результат<1000 вернуть строку "47 ом, 20%"
-если 1000<результат<1000000 вернуть строку "4.7k ом, 20%", то есть результат/1000
-если 1000000<результатвернуть строку "4.7M ом, 20%", то есть результат/1000000
Примеры
"brown black black" // "10 ом, 20%"
"brown black brown gold" // "100 ом, 5%"
"red red brown" // "220 ом, 20%"
"orange orange brown gold" // "330 ом, 5%"
"yellow violet brown silver" // "470 ом, 10%"
"yellow violet orange gold" // "47k ohms, 5%"
"brown black yellow gold" // "100k ohms, 5%"
"orange orange yellow gold" // "330k ohms, 5%"
Напишите в одну строку функцию, которая принимает на вход строку вида
>"brown black black"
или
>"brown black brown gold"
Четвертый цвет может встретиться, а может и нет
Что c ней надо сделать.
Есть словарь:
black: 0, brown: 1, red: 2, orange: 3, yellow: 4, green: 5, blue: 6, violet: 7, gray: 8, white: 9
Это кодирование цветом сопротивления резисторов, но это значения не имеет.
Первые два цвета путем сложения их цифр как строк дают число, например
"yellow violet ..."
дадут
'4'+'7' = '47' // а не 4+7=11
Третий кусок переводится в число по тому же словарю и служит экспонентой для возведения в степень числа 10, например
"... ... black"
даст нам
10 в степени 0 = 1
Четвертый опциональный кусок добавит в конец итоговой строки проценты. Если этого куска нет - 20%, иначе если
silver: 10%
gold: 5%
Теперь первый промежуточный результат переводится в число и перемножается со вторым, получаем 47х1=47
Теперь нужно вернуть строку по следующим правилам
-если результат<1000 вернуть строку "47 ом, 20%"
-если 1000<результат<1000000 вернуть строку "4.7k ом, 20%", то есть результат/1000
-если 1000000<результатвернуть строку "4.7M ом, 20%", то есть результат/1000000
Примеры
"brown black black" // "10 ом, 20%"
"brown black brown gold" // "100 ом, 5%"
"red red brown" // "220 ом, 20%"
"orange orange brown gold" // "330 ом, 5%"
"yellow violet brown silver" // "470 ом, 10%"
"yellow violet orange gold" // "47k ohms, 5%"
"brown black yellow gold" // "100k ohms, 5%"
"orange orange yellow gold" // "330k ohms, 5%"
Я сам сторонник идеи самодокументирующегося кода, стараюсь обычно писать так, чтобы из названия переменных и функций и предельно простой/плоской структуры кода было понятно без комментариев что там где. Не помню у кого из писак было: "если вы ставите в коде комментарий, то это явный знак, что ваш код неочевиден и лучше бы его переписать попроще".
Но идея JSDoc'а мне понравилась, подсмотрел это дело на бэкенде у джавистов, плюс вижу что многие JS-ные библиотеки или сайты с публичным API предоставляют документацию, явно автоматически сгенерированную из этого добра.
Попробовал, пока не особо радует. Плюсы которые получил:
- какой-никакой автокомплит
- корректные сигнатуры методов
Минусы:
- сигнатуры на самом деле нифига не корректные; чтобы хоть как-то себе представлять, что там на входе и на выходе, надо заморачиваться с @typedef'ами, если их писать сверху от методов, то коммент к одной функции на четыре строки занимает ебучие полэкрана. Приходится все typedef'ы оставлять в шапке файла.
- typedef'ы работают локально в пределах файла, но у меня полно примитивных типов типа Range { start: number, end: number }, Color { B: number, G: number, R: number, A: number} и прочей хуйни, не писать же это все в каждом файле. Доки на сам JSDoc говорят что поддерживается что-то типа неймспейсов и можно ссылаться на модули, но VSCode нихуя этого не воспринимает, это из-за того что у меня IDE курильщика и надо переходить на IDE здорового человека?
- если я допустим в каком-то контексте объявил переменную, которой присвоил значение во внутренней функции (beforeAll допустим в Jest'е), то в другой функции VSCode уже нихуя не знает про автоподстановку и сигнатуры.
Что вообще стоит покрывать JSDoc'ом, если основной стек React + Redux? Стоит ли от всех этих головняков перекатываться в Typescript или Flow?
Осваиваю JS. Сталкиваюсь с тем, что имею проблемы с алгоритмами.
Вот пример:
Допустим есть список:
<ul>
<li></li>
...
<ul>
он рандомен полностью.
Нужно написать код, который допустим обежит все ветви списка, и к примеру считает из каждого элемента текст.
Сделать на JS это с помощью рекурсивного вызова функции - это я могу.
Но как это сделать лишь с помощью циклов и условйи логических? Короче без рекурсии.
Я принципиально хочу сам догнать - все утро парюсь и не выкупаю.
Какую хорошую книгу по алгоритмам можно почитать?
У HTMLElement'ов (типа <ul>) есть свойство children, которое возвращает тебе коллекцию дочерних элементов. Соответственно надо:
1) Обратиться к ul (по id, по css-классу или еще как)
2) Взять его свойство children
3) Построить цикл, зная, что HTMLCollection предоставляет свойство длины коллекции length и метод обращения к элементу коллекции item()
типа for (let i = 0; i < element.children.length; i++)
4) В теле цикла обращаться к отдельным элементам по индексу element.children.item(i)
Лол, зачем? Почему бы просто селектором не забрать всех li? Array.from(element.querySelectorAll('li'))
Можно и так, но мне показалось, что если нет опыта в разработке вообще - а его нет, раз для такой задачи спрашивают "что почитать по алгоритмам" - то лучше начать с базовых конструкций.
>>1056446
>>1056450
Чуваки, вы меня не поняли.
Вопрос не в обращении к DOM элементам и их методам или свойствам.
Проблем в создании алгоритма обхода всех ветвей дерева без рекурсии.
Вот задача с сайта кантора:
https://jsfiddle.net/wsfzkLxt/
Эту задачу без проблем я решил рекурсивной функцией.
Но как ее решить не используя рекурсию?
Где то я прочем что любой рекурсивный способ можно превратить в способ использующий циклы и условия.
Поэтому я и прошу что то фундаментальное по алгоритмам.
Хочется всеже разбираться, пусть я и вэб макака.
> Где то я прочем что любой рекурсивный способ можно превратить в способ использующий циклы и условия.
Да, используя стек. В JS у тебя уже есть массив и методы pop() и push() на нём, этого достаточно. (Так и гугли "замена рекурсии стеком")
И не надо макакой себя называть.
JSON.parse - синхронная операция, потому вынесли в отдельный блок then, чтобы логически и визуально её отделить от остальной асинхронной поеботы.
upd: хотя я догнал почему, спасибо
1) Как вставлять скрипты? Не могу даже сраный пост из вк вставить на страничку. Точнее я его вставил, а он исчезает если перейти на другой компонент и вернуться, потому что скрипт срабатывает только один раз.
2) Какого хуя не работает ссылка-тэг на определенную часть страницы?
На стаковерфлоу кроме тысячи строк костылей никаких вменяемых ответов не нашел.
Почему этот ангулар такой ебанутый?
Просто ты необучаемая js-макака. Смирись.
https://stackoverflow.com/questions/42993859/twitter-widget-on-angular-2
Бамп
Я только начал изучать это все. Т.е. для того чтобы вставить сраный твит или пост из вк мне надо эту всю еболу писать?
У меня есть скрипты в несколько сотен килобайт, написанные в одну строчку. Какие сложности?
Опыт HTML как бы намекает на вынос постороннего оформления в отдельный файл CSS.
Так что загаживание кода длинными комментариями, содержащими еще один (да еще и неочевидый) язык - ошибка. Что бы там очередные восхищенные бандерлоги не укали, как это клево и модно.
Вообще-то рекурсия как раз и использует стёк, поэтому на неё косо и смотрят - из-за переполнения стёка.
Ты имел в виду ручную имитацию стёка с помощью массива.
А просто конвертнуть в HTML через .outerHTML и потом просто в innerHTML вставить этот кусок кода - не прокатывает?
был опыт на шарпах, яве, плюсах
с чего начать изучение, посоветуйте макулатуру
Гугли курс кантора
> Опыт HTML как бы намекает на вынос постороннего оформления в отдельный файл CSS.
Ну, во-первых, многие сейчас тянут мазу за то, чтобы писать стили скриптом и держать в одном файле с модулем. Я сам стараюсь так не делать, но не могу не заметить, что это сейчас очень распространенная практика, так что опыт HTML'а получается сделал полный круг. Где-то это официально рекомендуемый документацией подход, а где-то тебя просто нагибают, выставляя наружу компоненты игнорирующие className - чтобы стилизовать такие через отдельный .css-файл, приходится забуриться в детали реализации. Особенно весело, если библиотечка все стили инлайнит - после этого твой .css файл выглядит как говно со всеми этими !important. Вроде кто-то упарывается JSS'ом, который хотя бы это решает..
Во-вторых, это по-моему не совсем одно и то же - css из html'а вынести можно, а JSDoc из модуля - нельзя (ну или я не знаю как). Что предлагается-то, не писать его вообще? А если автодокументирование все-таки нужно? Ну или хотя бы вот видеть перед глазами, какой формы объект метод возвращает
Ну и еще потому что в JS будет заздана цепочка объектов переменных и цепочка запусков функций. Которые будут жарт память.
Кстати, котаны, при рекурсивном вызове создается только новый обьект переменных, или еще в довесок задаются дополнительные экземпляры обьектв function?
>Кнут - искусство программирования
Хех, спасибо. Но там чет примеры на асемблерах.
Хотя почитаю попробую конечно.
Так о том и речь, лол)
Ребята, есть сервак на Node.js. ка лучше всего организовать поиск собеседника для чата, по заданым параметрам?
Ты бы хоть рассказал что за сервак, а то вопрос звучит как "У меня есть строительные материалы, как построить дом?"
>это сейчас очень распространенная практика, так что опыт HTML'а получается сделал полный круг.
Прсто подтянулись молодые, которым не хочется учить старый опыт, а хочется делать поленивее и учиться на своих ошибках (оху уж этот крговорот велосипедов - изобретают снова и снова). Имхо, дело в этом.
А еще - проблема в средствах разработки, которые до сих пор нормально не интегрируют файлы в "пакеты" и занимаются редактированием отдельных plain файлов вместо их виртуальной интеграции.
>А если автодокументирование все-таки нужно?
Автодокументирование вещь правильная, только реализуется неправильно. Все-таки описывать функции нужно более подробно, чем это делается в коде сейчас, и в то же время сейчас предлагается писать слишком много постороннего в комментариях, что сильно загаживает код.
Автодокументирование должно анализировать код, создавать хребет, но брать описание из другого файла, а заодно проверять соответствие. То есть оно должно быть интеллектуальным.
Меня удивляет такая тормознутость разработчиков IDE.
Собираюсь написать небольшой сайт в качестве тестового проекта.
Сам сайт что-то вроде онлайн блокнота, с авторизацией.
Бэкенд будет на джаве со спрингом (опыт в джаве уже есть), а вот фронтенд - хз.
На жс я писал всего несколько простеньких скриптов без использования библиотек.
Собеседники регистрируюся на сервере, и среди тех сессий, с которыми есть коннект, можно искать.
encodeURIComponent
Например чтобы решить dns можно инжектить адрес с именем в /etc/hosts при запуске. Но как решить сертификат? Умею в докер.
Накатывать нжиникс с сертом на локалке пробовал? Если брезгуешь - виртуалка и докер.
хочу сделать образ проекта - настроить все на этапе дева, потом просто его дропнуть на vps и ниче в проде не ковырять
Пикрил стоит тысячу рублей, норм книга?
спизди в интернете все книги, которые только захочешьпрограммистом от этого ты все равно не станешь
Вопрос был про физическую копию. Тебе-то какая разница, стану я кем-то или нет?
Пикрил есть у меня, и это не книга, а просто справочник по функциям.
Вот есть такое понятие, как состояние (в контексте реакта). Реакт я не знаю, пишу только на vue, хоть и для него есть либа, добавляющая состояния.
Что это вообще такое? Я с трудом понимаю в чем суть. Это что-то вроде централизованного хранилища данных, не зависимое ни от каких компонентов, верно? И что там нужно по-хорошему хранить? Объясните простыми словами, пожалуйста.
Есть на сайтк кнопка +1, нажимая её рисуется результат 123456...
Это состояние. Хранится в памяти. Корявый код может привести к утечке.
это бесполезная херня, просто пересказ документации, причем устаревающий каждый день, зачем он нужен если под рукой есть https://developer.mozilla.org я понятия не имею
>опка +1, нажимая её рисуется результат 12
То есть получается, что состояние - это данные о том, что пользователь сам сделал в процессе работы с веб-приложением в настоящий момент. В то время как данные, получаемые в процессе загрузки приложения, будь то что-то из базы данных или что-то еще состоянием не являются?
В общем случае да. В реакте компонент отвечает за свое состояние. Сам спросил, сам поменял. В то время как props отвечают за изменение компонента извне.
Есть одна страничка с книгой, необходимо, чтобы при ее повторном открытии юзер возвращался на то же место, где он оставался при ее закрытии. Делается это джаваскриптом или есть методы полегче?
С меня как обычно нихуя
Ага, значит получается я всегда использовал эти самые состояния в контексте vue, сам того не подозревая. Ладно, спасибо
Копай в сторону диалогов "Are you sure to leave this page?" - это если при закрытии странички нужно запомнить положение. Но можно это делать при каждом скроллинге страничек - тогда гугль про события скроллинга.
Нахера тогда во фронт вкатываешься, если тебя тошнит. Учить - не учить, все равно по работе придется всем заниматься. Ты будешь выморажвать коллег в дедлайне своими - а я это не знаю, а я то не буду.
Как учить жс, если уже немного умеешь программировать, базовые принципы понимаешь, либо если это не первый твой язык? жопошкрипьт.ру? Фланаган? КодАкадеми? Как правильнее. быстрее, эффективнее, лучше?
А по существу?
https://jsfiddle.net/4z1obzvc/
само ядро языка(синтаксис, кейворды, типы данных, ооп) можно спокойно учить в отрыве от окружения. у кантора так и сделано, первая часть учебника это язык, второе это браузер.
>Тошнит уже от этих тегов и скобок треугольных
в стеке верстки есть перделки с синтаксическим сахаром
В каких случаях лучше использовать "switch", а в каких "else if"? Потому что в данный момент, они для меня одинаковы.
Куда бы можно вкатиться, зная JS, кроме как делать сайты? Не то что бы очень сам по себе фронт-энд вдохновлял. Можно ли делать мобильные приложения? Где вообще можно применять жс?
Сам думаю вкатиться все-таки сначала во фронт, т.к. процесс не должен быть слишком долгим, а там поднаберусь опыта и хоть каких-то средств и попробую заняться чем-то поинтересней.
>Куда бы можно вкатиться, зная JS, кроме как делать сайты?
Для начала бы неплохо знать гугл.
Ты такой умный)))) Можно сделать тебе сасай))))
ну дак и чо? просто хочу уже хуярить второй раздел учебника.
может в жс есть хуйня которую можно освоить уже походу дела либо ваще только когда понадобится %%если понадобится%
>сосоны, читаю кантора и почти уже дошёл до ооп и подумал что он ненужен как и во многих других языках. загуглил - ну народ примерно такое и пишет.
Ты верно выхватил тренд последних лет, теперь функциональщина в моде.
Главное отличии в том, какой элемент является основным строительным блоком. в ФП это функции, в ООП это объект, есть слепленый воедино комок данных и методов.
Да, это так.
Тонкий намек: switch часто используется в связке с break. Наличие или отсутствие break в нужных местах может давать поведение, которое обычными условиями достичь сложнее.
Ну и лично по мне если сравниваешь одну переменную, то свич интуитивнее, чем нагромождение if-else.
>npm install -g module
>echo "require('module');" >> file.js
>node file.js
>
>sudo node file.js
>Error: Cannot find module 'module'
Чому так? С sudo нода в какой-то другой залупе модули ищет, что ли? Или просто у sudo меньше прав, чем без судо, и ему даже /usr/local/lib нельзя?
Оно только локальный node_modules показывает (грубо говоря, $(pwd)/node_modules получается), даже если нет такой директории.
Для адаптивности к плагину carousel хотел прописать скрипт для свайпа пальцем, но ни 1 не работает.
Что я сделал не так?
Может bootstrap 4 не поддерживает swipe? читал доки, про свайп ни слова
и причем тут инспектор элементов?
Тут https://learn.javascript.ru/static-properties-and-methods нихуя непонятно. Даже в ютубе про это нихуя нет. Есть видосы просто про конструкторы.
Нет. Мне не нравятся примеры.
Ребзя, что у Кантора за неточности, как это понимать? Какой из вариантов правильный?
Тема: Модули через замыкание
Вбей оба примера да попробуй. Разницы никакой.
>оба правильные, используй какой хочешь.
Плохой совет.
Хороший совет: Не используй вообще, уже 2 года как let есть.
Сам я не программист и как делать не знаю, придумал такой порядок действий, но реализовать его не смог.
Мне нужно удалить все свои посты и комментарии в чужой группе.
Захожу группу, запускаю скрипт.
1. Скрипт должен долистать стену до определённой даты, например 3 месяца назад, дату ввожу я сам.
2. Из всего, что он нашёл на стене выбрать мои посты и удалить их. Остальные посты развернуть и удалить оттуда мои коменты.
Буду оче благодарен тем, кто напишет такой скрипт и расскажет как он работает.
Ребят, как привязать Onclick к картинке, чтобы считала клики, и показывала клики внутри фрейма, ну или блока.
Почему почти все последние изменения в js напоминают синтаксис гоферов?
Или мне по нюфажеству так кажется?
По нюфажеству.
Learn javascript сайт, там читаешь всё\скипаешь очевидные моменты
Чем дальше тем больше пиздец.
Да это мой первый язык. Да я дрочу его меньше месяца.
Все-таки добавил вторую проверку. Посмотрел лучшее решение других людей и оно оказалось практически таким же как и мое. Мне казалось есть какая-то простая формула, а может она действительно есть.
>>1058722
Рекомендую "Выразительный JavaScript" охренительная книга, но застрял на одном месте, скоро с новыми силами и знаниями снова наброшусь на нее.
Все остальные книги похожи на справочники.
(остановился на 6 главе. позор)
Надо было начинать с ликвидации компьютерной безграмотности и чистого С.
Хуёвая идея вкатываться не понимая не типов и структур данных.
это он так тралит, а сам по ночам рыдает в подушку осозновая нинужность своего мертвого языка. биты-то не попереставлять
Ну так, ты начни с изучения языков программирования, а не фрейворка для формошлепов. Не С, но там та же scheme по SICP, паскаль по школьным учебникам, может Lua по книжке с оф сайта.
Это те языки, которые разрабатывались академиками, а не слесарями, в них не всегда удобно ебашить проект в миллионы строк, и библиотек для генерации днявочек может не быть, но они сделаны так, чтобы их можно было описать небольшим количеством правил, а не тысячей исключений, а это как раз то что нужно личинке погромиста.
В Гарварде учат на примере C, да и популярные языки - сиподобные.
Так что, никто не знает? Как же мне запускать сервер на портах <1000, держа кучу дерьма в локальном node_modules, что ли, как последний дегенерат?
Хром, фирефокс,
Но зачем? Если так приспичило писать в браузер свою особую идеальную дрисню, то проще сделать очередное транспилер, который будет выплёвывать православную троицу после переварки твоих закорючек.
>Но зачем?
Для облегчения жизни разработчика и существенного повышения скорости разработки и производительности сайтов.
>Если так приспичило писать в браузер свою особую идеальную дрисню, то проще сделать очередное транспилер, который будет выплёвывать православную троицу после переварки твоих закорючек.
Накопленные знания и опыт помогут написать намного лучший браузерное ядро чем поддерживать старое глючное говно.
Ребята, а скринкаст Кантора по node.js (его первая часть) ещё считается актуальной? А то там версия 0.0.1, когда на дворе уже версия 6.9 несколько лет как LTS. Из личной практики заметил что некоторые модули что он проповедует уже давно не поддерживаются и не используются. Есть что-то более актуальное, но не уступающее по качеству, в виде скринкаста?
Именно не разработка сайта на экспрессе, а пояснение нативных функций и возможностей Node.js, чтобы когда на собеседовании спросят, было что ответить. Документацию пока осилить не могу, а вот посмотреть видео с обьяснениями и примерами, было бы очень кстати...
Да вы ебанутые! Нахуя мне учить дидовский язык если за это время я всё же смогу осилить кривой js.
Не слушай их. Раньше в гейропке учили хардовою латынь, а потом уже брались за другие языки. Объясняли тем что латынь стоит у истоков и его сложность только в помощь, потому что выучив его, ты точно осилишь какой-нибудь французский. Бред. Люди часто не могли его осилить и в итоге не знали никакой язык кроме родного.
Сам в начале пути, но уверен что у меня получится несмотря на незнание ассемблера
вкатывайся в Хаскель, базарю не пожалеешь
https://pastebin.com/6RkMLvsZ
Почти всегда часть файлов в папке public не загружаются с 404, а быстродействие даже хуже, чем с одним потоком.
Если с помощью этого метода переведём число 7 в бинарную систему, получим "111" что на самом деле будет являть 00000111. Мне нужны эти опускаемые нули
Dumpach board
https://2ch.hk/pr/res/1057223.html (М)
Можете обоссать, но конструктивная критика будет лучше, ну и еще потестить милости прошу
Создаю формочку с помощью create-react-app. Пишу сам компонент yobaForm.js, пишу базовые стили и подключаю в yobaForm.js простым import from "./yobaStyle.css". Запускаю с помощью npm start, проверяю — все збс.
Создаю так же еще кучу компонентов. Все удобно, все легко запускаются и тестируются.
Проблема возникает дальше.
Создаю само приложение с помощью create-react-app, подключаю зависимости, пишу import "yobaForm"; — сам компонент подключается, но вебпак отказывается найти "./yobaStyle.css", импортированный в этой форме. Если прописать пути в webpack.config.js — стили находятся, но этого хочется избежать. Как быть?
Переосмысление задачи обычно происходит после перерыва. Нужно иногда переключаться между задачами.
Нее, только начиная от первого div, кроме root.
> arrow function
arrow function не bind'ит от слова совсем.
Но какая-то тупая макака решила, что таки биндит волшебно, пошел слух. Так и живем.
>
>Но какая-то тупая макака решила, что таки биндит волшебно, пошел слух. Так и живем.
Да ты чо? Использую их в классах, всё биндится к родительскому объекту. А макаки зачем то биндят в конструкторе. Нахуя?
Обратной совместимости вроде как нет никаким полифилом или библиотекой это не пофиксить. Кто из нас нуб?
Не очень понимаю, про какой биндинг через стрелки идет речь. Если это просто анонимная функция в рендере как это в туториалах часто показывают, то это вызывает проблемы с пересозданием функции на каждый ререндер.
Биндинг в конструкторе, помимо привязки контекста, еще полезен при кэррировании, чтоб не плодить однотипных методов.
он имеет ввиду то что стрелочные функции объявленные в конструкторе уже прибиндены к экземпляру класса и в дальнейшем их уже нельзя перебиндить. а вот чо ты хочешь донести я тоже не пойму.
> никаким полифилом или библиотекой это не пофиксить.
Ты на острове живёшь? Почитай про babel
> Рецензент пишет мол переменная i в глобальной видимости ты типо переменные пиши не var a let.
Претензия мне не очень понятна, обычно i используется только внутри циклов. Но в целом лучше использовать let. Например этот код: https://jsfiddle.net/Lmfdp0o3/
по задумке должен выводить цифры от 0 до 9 с промежутком в одну секунду, но вместо этого 10 раз выводиться число 10. Если поменять var на let - то всё ок. Ещё хорошая идея использовать const для переменных, которые не собираешь перезаписывать.
Понятно. Ну, такой подход кмк не очень катит, если методы не однострочники, а по
5-10 строк, а то и какой-нибудь кусок рендера.
input: [[0,0], [0,1], [0, 0], [1,1], [1,1], [1,1], [2, 2]]
output: [[0, 0], [0, 1], [1,1],[2,2]]
Я пока использую uniqBy из lodash:
uniqBy(arr, (cell) => `${cell[0]}${cell[1]}`)
Но это костыль какой-то.
> const result = [...new Map(input.map(x => [JSON.stringify(x), x])).values()];
Замени JSON.stringify на подходящую проверку, например на _.eq
Тут ещё Фастифай подъехал, ЖСОН-ориентированный. Хеллоу-ворлдами в три раза быстрей кидается, чем Экспресс.
https://thenewstack.io/introducing-fastify-speedy-node-js-web-framework/
this за пределами function указывает куда угодно - стандарт не регламентирует. В браузерах это window.
стак - это стильно модно и молодежно.
а я в топ-400 на кодварсах
> Блять, как же все же сука пиздато, когда блять целый день решаешь эту ебаную Канторовскую задачу, и уже блять смотреть на нее не можешь, а потом хуяк и решил.
И в чём смысл решения этих ебанутых задач? Да ещё и тратить на них целый день. Я помню как первым языком решил дрочить питон и там тоже были ебанутые задачки, а потом в книге дошёл до реальных задач которые не имели нихуя общего с теми говнозадачками про подсчёты анусов и прочей еболы.
Канторовские задачи максимально приближены к боевым условиям.
>Да и возможно ли вообще такое
Без помощи фронта нет, ни нодой ни чем другим на беке.
>Как через node.js получить на сервере ID нажатой кнопки
Смотри по обстановке, если сабмитишь форму по клику на кнопку, можешь ее id записывать в поле hidden перед сабмитом. Если просто кнопка, то навешивай обработчик события клика, посылай ajax запрос.
Можно поинтересоваться? Почему ответ на этот вопрос не ищешь в документации?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
написать функцию, которая возвращает строку 'Hello, world!' не используя в коде символы: h e l o w r d x
>не используя в коде символы: h e l o w r d x
() => "\u0048\u0065\u006c\u006c\u006f\u002c\u0020\u0077\u006f\u0072\u006c\u0064\u0021"
На 2 и 3 пикчах почему то две ссылки не работают, хотя должны как исправить?
Еще добавлю.
Я хочу через метод PUT обновить нужный элемент в массиве но он нихрена не может достучатся.
Или наверно нужно массив ListE отдельно чтобы был?
Реакт прост как нечего-делать. Ангуляр — энтерпрайзный монстр, естественно посложнее.
https://codepen.io/anon/pen/dzxNRZ
Вроде бы всё работает, но в сравнении с http://online-timer.ru/ и таймером на моём телефоне наблюдается рассинхрон. Каждые минуты 2 увеличивают отставание моего таймера где-то на секунду. С чем это связано? Где косяк? Если вместо 1000 поставить 999 на интервал, то отставание начнется позже и будет более медленным, но тем не менее будет.
Я правильно понимаю, что дело в том, что коду тоже нужно какое-то время на выполнение и из-за этого копятся сдвиги на 1-2 мс? И если нужна нормальная точность, то нужно какой-то хак придумать, который, допустим, раз в минуту будет проверять сколько времени прошло с момента запуска таймера, сколько времени прошло по мнению таймера и фиксить.
Двач, как же я заебался, где можно найти годную инфу по докеру и node.js? Везде, блеать даже в официальной документации node.js и даже в ёбаной официальной документации докера (где примеры на Python) есть пример только с запуском ОДНОГО контейнера, да как так то, а? Как так?
Сама идеология говорит о том, что нужно запускать много контейнеров, чтобы было ништяково, а они в оффициальных гайдах запускают по одному контейнеру и нигде нет инфы как правильно запустить несколько докеров и связать их между собой, чтобы было ништяково, отсюда реквест, братики, пожалуйста, скиньте мб уже какие-то примеры реализованых приложений на гитхабе с node.js+express+mongo (или любым другим стеком), где будет показано как нужно написать своё приложение, чтобы запустить его в докере с НЕСКОЛЬКИМИ контейнерами. Или видео с гайдом или текст с гайдом, а то я в полнейшем замешательстве, один контейнер запустить могу, с базой данных на втором, а что делать дальше с ним - непонятно. Как например доппилить авторизацию на другом контейнере или какую-то ещё фичу, типу API.
релейт https://stackoverflow.com/a/939412/2337281
можно так и так, потому что спека языка это не запрещает.
но первый вариант как у кантора норм, так как он четко показывает, что там будет возвращен результат, а не инстанция
Проще говоря, как создавать новые сервисы и подключаться к уже существующим? Просто писать в приложуху и вызывать из папок, добавляя строки в Dockerfile или писать много разных приложух со своими package.json, хостить их в докер контейнерах по отдельности, а потом заставить как-то взаимодействовать, если да, то как?
Присвоил коэффициент по шкале от 1 до 5 в трех категориях.
Под новизной понимается то что я не просто выучу JS-2, а какие-то новые парадигмы, как статическая типизация, полноценный ООП. Синтаксис напротив хотелось бы JS-подобный хотя питоньи отступы выглядят хорошо. Востребованность на основе анализа вакансий в моем ДС-4.
Все ли правильно сделал?
Руби, питон, пхп — ничего нового после js, наоборот, меньше концепций (более императивные языки). Никаких новых парадигм, типизации, саморазвития.
Для развития глянь F#, Haskell, хотя можешь начать и с C#
Жабу учи, если ещё даже со статической типизацией и нормальным ООП не сталкивался.
Ты уж определись, хочешь ты развития или инструмент на продажу. Если второе, учи пхп, вакансий тьма.
Но внутри ? нельзя вставлять стейтменты, например ретурн, а внутри ифов можно. Понятно что переписать по-другому можно всегда.
Ну ты уж определись, либо все есть выражение, и ты за чистоту, либо ты согласен на чуть-более удобный синтаксис, но по прежнему не против того, чтобы функция по вычислению процента по кредиту вызывала коллекторов.
> все является выражением
Да, это очень интересная фича, странно как она забрела в руби.
Но в любом случае так можно писать и JS, нужны для этого только тернарный оператор и функции. То, что остальные конструкции языка — стейтменты — не имеет значения, потому как они не нужны при написании в фп стиле.
>нужны для этого только тернарный оператор и функции
А как перегнать в экспрешн такое например?
const f = x => {
if(x) {throw 'error'} else {return 1}
}
такое не катит
const f = x => x?(_=>throw 'error')():1
const f = x => x?(_=>{throw 'error'})():1
При большой необходимости можно и так, но по хорошему как я сказал — не нужны, как и остальные statements с сайд эффектами.
для JSX, IE6 и прочих выкрутасов и если не использовать Typescript.
Просто писать на ES2015-2016 можно и нативно.
Блять, совсем про jsx забыл
Сначала они говорят: "В конце выполнения функции объект с переменными обычно выбрасывается и память очищается. ... Через некоторое время мы рассмотрим более сложные ситуации, при которых объект с переменными сохраняется и после завершения функции."
От чего именно это зависит - объект пропадет или останется?
Алсо, такой код:
function makeCounter() {
var currentCount = 1;
return function() {
return currentCount++;
};
}
var counter = makeCounter(); // [[Scope]] -> {currentCount: 1}
alert( counter() ); // 1, [[Scope]] -> {currentCount: 1}
alert( counter() ); // 2, [[Scope]] -> {currentCount: 2}
alert( counter() ); // 3, [[Scope]] -> {currentCount: 3}
alert( counter2() ); // 1, счётчики независимы
И объясняют происходящее: "В примере выше было создано несколько счётчиков. Они независимы, потому что при каждом запуске makeCounter создаётся свой объект переменных LexicalEnvironment, со своим свойством currentCount, на который новый счётчик получит ссылку [[Scope]]."
Вопрос: почему после каждого вызова объект не исчез, а продолжил существовать так что мы могли каждый раз увеличивать переменную на один?
Функция makeCounter создает локальную переменную, а потом создает и возвращает функцию, которая смотрит на эту переменную и может ее модифицировать.
В обычной ситуации, локальные переменные сгорают после завершения функции. Но в данном случае объявляется другая функция и завязывается на нее. Это называется замыканием. В итоге переменная count будет жить столько, сколько живет функция ее замкнувшая.
Соответственно каждый раз вызывая makeCounter, создается новая функция с новой переменной внутри.
>почему после каждого вызова объект не исчез, а продолжил существовать
1. ты написал в коде что-то вроде
function hitler() {
var x=1
return x
}
2. под капотом интерпретатора, незаметно для тебя создался невидимый объект lexical environment. его нельзя получить в коде, но он существует. представь что это что-то вроде
hitler.lexicalEnvironment
в этот объект записалось два свойства {x:1, [[scope]]:window} // или другая функция внутри которой создан гитлер
3. если ты про просто запустишь функцию hitler() то очевидно что после отработки ее lexicalEnvironment больше нахрен не нужен и интерпретатор его затирает, так как его никто не использует. но если внутрь гитлера добавить другую функцию, которая обращается к иксу
function hitler() {
var x=1
return function() { return x+1 }
}
то станет очевидно что этот объект надо сохранять, так как он используется. причем для каждой отдельно отработавшей функции будет создаваться и храниться отдельный объект с независимыми значениями икса.
это сложная тема, посоветовал бы почитать спецификацию, но ты ж не будешь.
Ясноньо, спасибо. Если хотите что-то добавить, говорите, я прочитаю.
Может и буду, если руки дойдут. Спасибо за объяснение.
Двачую. Это реально, что в эликсире сборка мусора происходит без stop the world?
только вчера по нему книгу открыл, боюсь пиздануть лишнего. но, вроде как да.
гугли за девять девяток у эрланга, на котором базируется эликсир.
Пишу "create-foo-app component-x", прописываю в нем компонент с использованием современного синтаксиса и scss, запускаю через npm start. Создаю второй компонент с помощью "create-foo-app y-component", в нем импортирую component-x со всеми стилями и радуюсь.
Что есть:
Пишу "create-react-app component-x", создаю компонент, запускаю через npm start. Создаю второй компонент, но не радуюсь, потому что без eject не удастся подключить стили из component-x, да и поддержки es2017 по умолчанию нет — приходится прописывать пути в конфиге вебпака.
С nwb такая же проблема.
Есть ли какой-нибудь тулкит, который позволяет удобно создавать независимые компоненты?
без partial application
_.get(obj, ['huy', 'id'])
c partial application должно быть так (huy динамичный)
_.get(obj, [ЧТОБЫ ВОТ СЮДА СУКА, 'id'])
const partial => arg => (obj, arr) => _.get(obj, arg.concat(arr))
Но я не очень понял, что ты там городишь, объясни лучше
>Им реально кто-то пользуется
Нет, MS просто деньги вникуда спускает чтобы на двачике холивары были.
>карьеру в 8 лет
>не задуматься о типизации в JS
Что ты имеешь ввиду под
>не задуматься о типизации в JS
Мне например это вообще никак не мешает. И не мешало никогда. Я даже специально не могу придумать пример когда это чему-то помешает.
>питон
>Никаких новых парадигм, типизации, саморазвития
Лол, async for, async yield, async nebo, async allah
Забей, никто им не пользуется, просто студенческая поделка какого-то Хайлсберга, который ничего в программировании не понимает.
>>мой дед писал и ты пиши.
Ну видимо ты и есть дед либо переигрывающая php-макака, раз не понимаешь профита статической типизации.
>Поясните за TypeScript. Почему все его звалят
>MS просто деньги вникуда спускает чтобы на двачике холивары были.
>Поясните тогда за типизацию
>Забей, никто им не пользуется, просто студенческая поделка какого-то Хайлсберга,
>Так профит то в чём?
>Ну видимо ты и есть дед либо переигрывающая php-макака
А есть кто-нибудь не токсичный и агрессивный?
А php после всей этой фигни с js "за неделю" осилю?
Привет.
От делать нечего пишу парсер flac файлов на ноде. Ломаю голову над асинхронщиной. Есть код: https://jsfiddle.net/g6gjdxqj/
Задача пока простая - чекаем файл на то, является ли файл флаком: по спекам в начале файла закодированы символы 'fLaC'. Но в ноде чтение файлов и прочие операции синхронные. Вопрос, как мне получить из промиса или асинхронной функции результат так, чтобы до его получения программа не прерывалась? Ну и вообще сохранить его для последующего использования...
Как будто что-то плохое
Так долго? Это просто JS или JS + фрэймворки?
>Языки разметки еще не забудь.
Я их знаю чуток.
Долго? Ты хотел сказать "быстро" может все же?
Это просто базовый жс до состояния, когда какой-нибудь фреймворк просто берешь и юзаешь.
Ладно, попытаюсь посильнее налегать на материалы из шапки.
Спасибо за ответы анон.
Когда пишешь js, можешь быть увереным в отсутствии случайных ошибок только покрыв все тестами на 100%.
(Для наглядности взгляни на повальный фанатизм к тестированию в руби сообществе.)
В TS такие обишки просто не совершаешь, потому что IDE тебе все подчеркивает красным. Сильно развязывает руки, позволяет все редактировать, рефакторить настолько глубоко, насколько хочется. Ускоряет прототипирование, скорость разработки ну и как там модно говорить про модные языки.
Как легкий бонус — вплывающая документация, автодополнение и прочие прелести IDE.
Круто. Спасибо за развёрнутый ответ анон.
При этом иногда система типов бьет тебе по ебалу. Еще часто тайпингсы для сторонних либ кривые или их вообще нет. Долгая компиляция вместо ф5 прилагается.
Выполняю пример из Eloquent который немного усложнил и сразу понят что что-то не так.
https://jsfiddle.net/e0k6y8un/
В этой срани я просто поделился. Как и написано в оп посте. А так я пишу в IDE.
>система типов бьет тебе по ебалу
Для этого есть any
> тайпингсы для сторонних либ кривые или их вообще нет
Если нет в @typings/libaName ну шо поделать, значит твоей библиотекой пользуется полтора замлекопа.
>Долгая компиляция вместо ф5
webpack --watch
Сколько одинаковых онкликов на одном элементе ты можешь сделать? А динамически?
Скачал, потыкал — а там ж нихуя нет, кроме обёртки над запуском http.server и перетаскиванием данных из request в context, абсолютно.
Было бы неверно предположить, что цепочки областей видимости отличаются для пяти функций в массиве result. Вместо этого каждое обновление переменной i обновляет область видимости, которую делят между собой все пять анонимных функций. Это можно исправить путём добавления нового контекста исполнения, в котором копия значения i поступит извне как параметр функции.
И потом код:
var result = [];
for (var i = 0; i < 5; i++) {
result = >(function inner(x) {
// additional enclosing context
return function() {
console.log(x);
}
>})(i);
}
result[0](); // 0, expected 0
result[1](); // 1, expected 1
result[2](); // 2, expected 2
result[3](); // 3, expected 3
result[4](); // 4, expected 4
Собсна вопрос: что это за скобочки и почему они решили проблему, если без них было result[0](); // 5, expected 0
result[1](); // 5, expected 1
result[2](); // 5, expected 2
result[3](); // 5, expected 3
result[4](); // 5, expected 4
Скобочки выделил зеленым.
Было бы неверно предположить, что цепочки областей видимости отличаются для пяти функций в массиве result. Вместо этого каждое обновление переменной i обновляет область видимости, которую делят между собой все пять анонимных функций. Это можно исправить путём добавления нового контекста исполнения, в котором копия значения i поступит извне как параметр функции.
И потом код:
var result = [];
for (var i = 0; i < 5; i++) {
result = >(function inner(x) {
// additional enclosing context
return function() {
console.log(x);
}
>})(i);
}
result[0](); // 0, expected 0
result[1](); // 1, expected 1
result[2](); // 2, expected 2
result[3](); // 3, expected 3
result[4](); // 4, expected 4
Собсна вопрос: что это за скобочки и почему они решили проблему, если без них было result[0](); // 5, expected 0
result[1](); // 5, expected 1
result[2](); // 5, expected 2
result[3](); // 5, expected 3
result[4](); // 5, expected 4
Скобочки выделил зеленым.
Они не выделись. Ну вы понели?
Это я отсюда взял https://medium.com/@sshambir/осваиваем-замыкания-в-javascript-5b83267ef7d1
>webpack --watch
Который не ускоряет компиляцию, а лишь чаще разогревает пекарню. В больших проектах что обновление через watch, что ручной рестарт — время теряется.
Flow в этом плане получше. Анализ кода идет независимо от сборки проекта. Бабель просто вырезает типы и все происходит чуть быстрее.
Я сделал скриншот.
Гугли self execution function. Скобочки эти позволяют вызвать анонимную функцию сразу же после её объявления.
Ушел гуглить, спасибо!
Решили внедрить Webpack в легаси проект - и сразу же начались проблемы с интеграцией существующего кодбейза. Проблема в том, что нынешний JS код представляет собой:
- Россыпь древних плагинов, местами использующих функции, которые уже давно убрали из актуальной версии jQuery. Интеграция плагинов в единое целое была реализована с помощью expose-loader, что делать с вызовом удаленных методов - понятия не имею. Есть ли какие-то заглушки, возвращающие старый API?
- Один здоровенный main.js и кучу инлайнового говна, ссылающегося на глобалки из этого самого скрипта. Вот что тут делать - совершенно не знаю, можно ли заставить Webpack просто минифицировать этот файл и сконкатенировать с bundle.js, без инкапсуляции?
Буду благодарен за любые советы.
Зачем тебе вебпак для этого? Напиши паур тасков для галпа
Это не для школоты сделано, а для серьезных дядей, которые жирнософт пишут
Устоявшееся название для этого IIFE — Immediately Invoked Function Expression
Действительно. Зачем все эти строгие и надежные языки, давайте говнокодить на js и python, жить в дебаггере и бояться изменять код. Что однажды написано изменению не поддлежит.
Ребзя, вопрос, как лучше всего найти совпадающие строки или словосочетания на javascript?
Ну например:
var text_a = "Lorem ipsum dolor sit amet";
var text_b = "Dolor lorem ipsum amet";
Результат: ["lorem ipsum", "dolor", "amet"]
Неужели нет готового алгоритма для такого задания?
сравнивая посимвольно каждое словосочетание со строкой.
у тебя условие непонятное, что с кейс сенситив?
если считается что "lorem ipsum" входит в обе строки то почему просто "lorem" не входит?
>pass
передать ссылку на глобальный объект
он это делает чтобы внутри модуля записать в шиндош единственную переменную, в которой уже лежат все функции его библы. это и происходит на десятой строчке
например в джквери это переменная $ и когда ты пишешь
$('#id').. //чото там
ты фактически пишешь
window.$... //чото там
В смысле, что мешает написать window.$ = blalbalba без параметра? Ведь функция просто полезет искать такое имя на уровень выше в сам шиндош и найдет его?
Ебать ты гуманитарий.
Двумерный массив заменили на одномерный (все "строки" двумерного выстроили в одну большую "строку"). Для того чтобы взять X элемент в Y строке тебе нужно добраться до Y строки (Y WIDTH) и в ней взять X элемент (+ X). Итого (Y WIDTH) + X.
чисто для минификации. в первом случае будет такое
(function(x){
alert(x)
alert(x)
alert(x)
})(window)
а во втором ты всегда должен писать window
(function(){
alert(window)
alert(window)
alert(window)
})()
ну и еще доступ к локальным переменным быстрее чем лезть в замыкание
Вот теперь совсем все понял, спасибо анончик!
Большое человеческое СПАСИБО!
Так почему
Хз, с ssd не замечаю проблем.
>олько в том что можно дописывать типы данных к параметрам функций и всякую ненужную парашу типа приват/паблик
Генерики, енумы, декораторы и прочие ништяки мы тактично опустим.
Прошу совет насчёт правильной траты мыслетоплива/правильного обучения.
Работаю 5/2 по 9 часов. Работа физическая. После работы и после душа, туалета, кухни сажусь учить js. Ложусь в 9:00, просыпаюсь в 5:00, чтобы основное время дома потратить на обучение свежей головой. Во время работы иногда появляется свободное время и я пытаюсь тратить эти крупицы не напрасно. Сконцентрироваться сложно. Попытки не очень удачный.
В редкие дни весь день сижу в месте с тв с непродолжительными подергиваниями. Телевизор регулярно захватывает внимание, что усиливает неспособность к обучению.
Эти жалкие попытки почитать с телефона на работе с постоянными отвлечениями, кажется, влияют на моё состояние дома.
Замечаю что в дни когда работаю как обычно, со средней загруженностью, то есть не устаю физически и нет времени сидеть без дела, занимаюсь дома с максимальной эффективностью.
Вопрос: стоит ли вообще пытаться не тратить впустую время на работе? Намного ли меньше растрачиваются силы при сёрфинге и при чтении учебников, с постоянными отвлечениями? Чем вообще лучше заняться в свободное время? Ничего не делать?
Иди сторожем, дежурным электриком в поликлинику, курьером (хуже), посменная работа (очень плохо), тяжелая физ работа плохо сказывается на обучении
Тяжелая работа приводит к тому, что после трудового дня организм вбрасывает в кровь уйму эндорфинов, чтобы уменьшить мышечную боль и мозг засыпает вместе с ним.
Еще добавлю, чем плоха посменная работа - это то, что для эффективного обучения нужен регулярный полноценный сон
Но нагрузки стали нормой и я не чувствую усталости после рабочего дня. Сторожем пошёл бы, но разве берут туда, кого-нибудь младше сорока? И могу ли я на этих работка получать хотя бы те 25к, что я получаю?700к город
Работу специально выбирал чтобы забывать о ней, как окончится рабочий день. Этот пункт выполнен. Думал о подработках, на выходных грузить мебель про переездах, но тогда бы я совсем разума лишился бы
как там в 2013? они для этого и были сделаны, что бы ты их мог использовать в любом месте, спека это не ограничевает
> 25к
Студни занимающиеся по 16 часов в день и жрущие один пакет доширака в месяц обгонят тебя за 1 год в несколько раз
>я не чувствую усталости после рабочего дня
Тогда вкатывайся пока молодой, это быстро пройдет.
Мань, я говорю тебе о том, что ты совершаешь типичную ошибку и неправильно пользуешься async/await в js.
Почитай: http://2ality.com/2016/10/async-function-tips.html
ну ты и мудило. по твоей же ссылке:
>Another option is an Immediately Invoked Async Arrow Function:
>(async () => {
> console.log(await asyncFunction());
>})();
Твоя проблема в том, что ты делаешь два независимых запроса в бд синхронно.
Вместо
r1 = await db.q1()
r2 = await db.q2()
return {r1, r2}
надо делать
r1 = db.q1()
r2 = db.q2()
return {r1: await r1, r2: await r2}
или через Promise.all
Не верю что кто-то может заниматься по 16 часов в день.
Думаю аноны из этого треда занимаются по часов пять
Аноны из этого итт треда уже свое отзанимались. Теперь рубят свои 300кк/час.
Очердное необразованное мудло, которое не знает как работает компьютер. Читай про IEEE754
При чем тут жабоскрипт? Любой язык тебе выдаст неточный результат при вычислении с десятичными дробями.
поминуты на унижение пыхоребенка его собственной спекой
http://php.net/manual/en/language.types.float.php
Внутреннее представление всё равно не точное.
>>1061384
Фантазер ебучий. http://php.net/manual/en/language.types.float.php
В пыхе у тебя все зависит от системы, то есть ты нихуя не знаешь как оно сработает, если не влепишь проверку.
В жсе в стандарте прописано: 64bit iee754
https://www.ecma-international.org/ecma-262/5.1/#sec-4.3.19
Можно переопределять класс.
Ну и да, как const f = function x() {}
https://stackoverflow.com/questions/34565362/what-is-use-of-named-or-unnamed-class-expression-in-es6
да, не ок, не заметил даже, конечно из БД лучше параллельно забрать результаты, завтра буду копать в сторону await Promise.all, добра
перекот >>1061439 (OP)
перекот >>1061439 (OP)
перекот >>1061439 (OP)
перекот >>1061439 (OP)
В PHP как раз есть интерфейсы, тайп-хинтинг (в 7-й версии ещё и для скалярных типов), нормальные классы со спецификаторами доступа. PHP таки умеет хоть и в рантайме, но падать с читабельной ошибкой вроде "Ожидаю класс Foo, получил null", что позволяет быстрее обнаруживать баги. А если статический анализатор для JS что-нибудь пропустит, то JS, в силу его динамичности, не упадёт сразу, а пролезет ещё через кучу строк и упадёт с невнятной ошибкой. Я сам пользуюсь Flow, всем советую, а вот TypeScript мне когда-то показался бесполезным - он отлавливал только самые очевидные ошибки.
Легкая пометка ": string" избавит от необходимости в 95% тестов.
Хотя это не актуально для тех, кому платят за строки кода и 100%-ое покрытие.
Братики, как вы думаете, стоит ли припиздеть о своих умениях (когда ты джун), чтобы устроится на работу (на джуна)? Вот требуются какие-то ебанутые технологии, я посомтрел видосы, вроде всё понятно, но опыта работы с нгими нет. СТоит ли сказать что я это всё умею и имею опыт?
Пацаны, что можно пиздатого сделать за 1-2 дня, чтобы было не стыдно на гитхаб залить?
Моя специализация: бэк на Node.JS (умею в вебсокеты, парсеры, лямбда функции) и фронт на HTML+CSS+Jquery/React.
Вы видите копию треда, сохраненную 4 октября 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.