Это копия, сохраненная 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Для программирования на ХТМЛ https://codepen.io/pen/
Для Ноды с консолькой https://repl.it/languages/nodejs
Для фреймворков https://codesandbox.io/
Залить, задеплоить страничку, сервер, контейнер https://zeit.co/now
Аноны, хочу получить советов мудрых, высераю пару предложений и код на скриншоте, а получаю смехуёчки. Как быть?
Если рассчитываешь получить дельный ответ, формулируй правильно вопрос:
У меня есть проблема\задача (А) %текст-ошибки или задача%. Я пытался решить ее так %кусок-кода-опционально% (Б), у меня не вышло %текст-ошибки%. Я погуглил, почитал документацию и попробовал сделать так %кусок-кода-%(В), но получаю ошибку (Г).
Сделай песочницу по ссылкам выше для ясности и удобства. Если никогда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Асука это сахар над промисами упрощающий работу с ними. То есть выбор лежит - использовать промисы как пещерный человек или же как цивилизованный.
WTF?
./node_modules/react-router-native/NativeRouter.js
Module parse failed: Unexpected token (10:30)
You may need an appropriate loader to handle this file type.
| user confirmations via Alert by default.
| /
| const NativeRouter = props => <MemoryRouter {...props} />;
|
| NativeRouter.propTypes = {
Тута мы, родимые, бубликовые автоматы.
а async
Ну шарпик норм. От туда можно тащить, ничего против не имею.
Я еще поддерживаю пиздинг из питона, особенно его подход к работе со списками.
Беру таски через страх, знаю что справлюсь, но все равно боюсь. Как фиксить?
Задачу нельзя не выполнить, просто на нее потребуется больше времени. Смирись, будешь затягивать сроки, проебывать дедлайны, гуглить 90% рабочего времени. Ну и со временем пройдет, с опытом будешь примерно понимать сколько времени требует та или иная задача.
Ну zeit же в шапке есть
Я кстати не так давно пытался на хероку запустить дискорд бота, после 5-10 минут он стабильно падал и его приходилось перезапускать. Это у меня руки кривые или хероку теперь не поддерживает постоянный хостинг бесплатного говна?
Дискорд
Я раньше думал, что это игра, где надо код писать в геймплее, а оказалось обычный платформер.
Скачай дистрибутив с оф сайта. Ставится в два клика, работает без проблем.
Предатель.
В том то и дело, что она даже 30 минут не работал, а 5-10. Вообще дело было месяца 4 назад, я все облазил, но этой таблички не нашел, спасибо за инфу
html + css
Просто переходной шок. Джава сложнее, на самом деле. Тут просто вопрос привычки к слегка другим концептам и направлениям программирования.
> Vaadin предлагает сервер-ориентированную архитектуру, базирующуюся на Java Enterprise Edition
С таким же успехом можно и на ассемблере писать.
https://exploringjs.com/es6/index.html
По содержанию, как я понял, нечто среднее между пересказом стандарта и книгами типа how to breathe for dummies. В принципе, всё понятно, но присутствует ощущение какой-то неконсистентности, что-ли. Хотя, скорее всего, я просто не вкурил. Закрамлю сегодня сколько смогу и завтра видно будет, сможет ли мозг что-то внятное собрать. С другой стороны, жаба показалась мне простой как спичка, ибо я начинал вкуривать её снизу вверх, по статьям о всяческих кишках жвм, и на выходе у мозга было достаточно полное представление о том, как это всё говно на самом деле работает.
так эта книга про es5 => es6 , в основном пересказ стандарта. Ну и вообще в js нет хороших книг по языку, лучше сразу начать что-то писать и посматривать в mdn.
Респект им.
Нужен, нужен. В проекте найдется место для макаки, чтоб формочки рисовать и json посылать серьезным людям.
НОДА НА БЭКЕ ЭТО НОРМАЛЬНО!
>Vaadin
>Google Web Toolkit
>компилится в жс
>последняя версия вышла 2 года назад
Сами ебетись с транспилерами работающими под капотом на мертвом фреймворке.
Ты просто не видел ничего кроме жс-мира, где каждые полгода новый фреймворк учат. Java 8 юзается в 80% тырпрайза, хотя вышла в 2015-ом.
Ебать, я угадал про 80%, это я написал до того, как нашел пикчу
В JS нужно иметь хорошее абстрактное мышление и понимать слегка метапрограммирование.
Проиграл с поддува
А лучше разработанную попку
> Задачу нельзя не выполнить, просто на нее потребуется больше времени. Смирись, будешь затягивать сроки, проебывать дедлайны, гуглить 90% рабочего времени. Ну и со временем пройдет, с опытом будешь примерно понимать сколько времени требует та или иная задача.
Все-таки сделал. После выполненного таска появляется мотивация сделать еще, прокачивать скиллы. Работаю верстаком/js и реактером.
Тоже из жабы вкатывлся. И не пожалел. Жс гораздо более сильный язык. Особенно когда понимаешь преимущества функционального програмирования в сравнении с допотопным ооп. Плюс такие удобные функции как map, sort, filter. Куча вариантов for. Template literals. В то время как в жабе без мапинга до сих пор по варварски через цикл for перебираются по массивам.
Я сверстал небольшую карточку, внизу которой у меня название фильма, год и жанр. Расположил их с помощью флексов, однако если у фильма слишком длинное название, он просто переносит его ниже и название фильма накрывает текст под ним. Как такое пофиксить? Названию фильма даю маргин, толку 0.
Не востребованно. Как и ничего что не эликсир из функциональщины.
Тащемта, там в 8 жабе в хэлпер класс Arrays завезли фабричные методы, возвращающие стрим элементов массива.
Спасибо.
Ага. Поначалу только нода была. Но потихоньку и фронт беру на себя. Нажил проблем хуле.
helloworld.js
Вот скажем я почти всегда использую свой объект, куда записываю все параметры и функции.
Скажем "var core = {...}".
Далее уже использую этот объект в проекте непосредственно. Например "core.create.button ({имя: 'имя', параметры: создания}); core.button[id].onclick = f () {}". Суть понятна.
Не знаю почему я выбрал этот подход, но использую его уже много лет. Дошёл до него сам. Изначально просто писал функции где попало, но хотелось структурированности.
Впрочем интересно как вы обычно организуете структуру своих проектов?
чел, ты из какого года? Все на фреймворках уже давно
я уже третий тред спрашиваю, щас прибегут жаберы из соседнего треда и пояснят, что весь тыртырпрайз на жабе, а нода нахуй не нужна
Как верстать сайты с использованием react компонентов, в самом приложении реакта просто указывать в каком DIV он будет отображаться?
Сам не пилил, там до меня уже запилено все. Просто иак сказать поддерживаю его работоспособность. Проэкт... скажем так один из известных телеканалов.
Т.е. это были какие-то микросервисы с не особо ценной информацией? Была какая-то серьезная бизнес-логика?
Мне просто интересно, какие именно части проектов отдают под ноду
Почему ты сичтаешь фронтендеров мусорными формошлепами, а бекендеров серьезными программистами?
Вот я вставил js файл, который выплюнул webpack, компонент, который вызывается в определенном div имеет свое DOM дерево отделенное?
Спрашиваешь какую-то хуйню в вакууме
Современный жс имеет самую лучшую реализацию ФП
Со всеми деструктуризациями и обработками массивов даже из коробки можно переворачивать структуры данных в 2 строчки, что размазалось бы в каких-нибудь петонах с пыхами на несколько вспомогательных методов для каждого случая
Лучшая реализация асинка среди всей веб параши если не в принципе
По бенчмаркам даже оверхеднутый экпресс обгоняет практически всех конкурентов
Ты о чём?
React рендерится через ReactDOM.render(element, node)
Где element это реактоэлемент, а node - это домовская нода, doucment.getElementById('root')
У меня есть поле инпута, в которое я ввожу текст. После того, как отправляют текст на сервак, он в виде маленького дива появляется под самим полем. Написал такой функционал, что при простом клике на див, текст с него перетекает в инпут, а при двойном клике он удаляется. Сделал удаление через elem.removeChild(). После этого не могу более одного раза что-то отправить с формы, при отправке текста во второй раз происходит краш и всё слетает. Что может быть не так?
>Ну так выклади с формами всеми
Мне тогда придётся почти весь проект впихивать туда. Я только кусок с формой выложил.
Смотри, под импутом есть див, в который я помещаю всё то, что отправляю инпутом. Так-же, чтобы не дублировать одно и то-же я сделал объект, в который добавляю то, что ищем и флаг true/false. Когда происходит дабл-клик, то я удаляю и ДОМа и из того объекта.
Существует ли где-нибудь client-side скрипт на JavaScript, для архивации и разархивации zip-файлов в браузере.
Например, у меня есть base64, dataURL, blob или arraybuffer или Uint8Array c байтами или просто hex, и стоит задача сохранить его как zip-файл, задав пароль, а не открытым текстом по HTTP его гнать.
Весь интернет перерыл, не нашёл ничего годного. Многие скрипты что я нашёл - требуют NodeJS.
А надо что-то такое, чтобы в html-файле прописать script src="blahblah.js" и начать с ним работать, без нод-хуёд.
Пока что нашёл только голую имплементацию алгоритма Deflate, вот здесь: https://github.com/dankogai/js-deflate
Хуй знает как с него zip-файл сделать, и как его паролем-то зашифровать.
Есть чё-нить более годное, а посоны?
Я уже видел. test.html - не работает. Какая-то херня в консоли.
Свиду, скрипты похожи на нодные, для node.js, а не для браузера.
Но всё-же удалось открыть и потестить, по этому вот гайду: https://stackoverflow.com/a/52659207
С обычными архивами работает, но как я понял, там нет поддержки zip-пароля, и вводить её не планируют...
А есть чё-нибудь с паролем?
Пока, нашёл тут: https://stackoverflow.com/questions/14829782/generate-a-password-protected-zip-file-in-node-js
некий minizip-asm.js, но он вроде как тоже для ноды,
а не - для браузера.
> php
Все еще жив в своей нише вордпрессов и маджент. Фрилансеры-одиночки любят. Клепают на нем проекты и просят как за настоящую работу. Для них работает.
> ruby
Оно само себя убило
> python
Лол, у него сейчас золотая эра. Это питон теснит всех сейчас.
Вебпак тебе реализует полную инкапсуляцию модулей. У каждого файла будет по сути свой скоуп невидимый из глобала. В глобал можно только явно выкидывать то, что тебе нужно через объект window. Но если ты возьмешь любой нормальный фреймворк, то у тебя и потребности выкидывать что-то в глобал не будет. Ты реально что-то отстал.
> Современный жс имеет самую лучшую реализацию ФП
Даже лучше, чем в чистых ФП языках! А всякие рамбды.жс юзают потому-что в жс самая лучшая реализация ФП искаропки.
>Со всеми деструктуризациями и обработками массивов даже из коробки можно переворачивать структуры данных в 2 строчки, что размазалось бы в каких-нибудь петонах с пыхами на несколько вспомогательных методов для каждого случая
Ты точно работал с питоном?
> По бенчмаркам даже оверхеднутый экпресс обгоняет практически всех конкурентов
...включая GO.
>>1421
>Даже лучше, чем в чистых ФП языках!
Поянтно что речь идет о вебе
>Лол, у него сейчас золотая эра. Это питон теснит всех сейчас.
Очевидно рынок перенасыщен никому не нужными вышкододиками готовыми работать за копейки
>Ты точно работал с питоном?
Напишите любую датаструктурную хуйню я перепешу это в пару строчек на жсе
>обгоняет практически всех конкурентов
>...включая GO.
Под конкурентами имел в виду вышеперечисленную веб клоаку, говно с ржавченой это другое
Пооностью весь бэк на ноде
мимо-два-года-фронтендщик до армейки
НАКАНЕЦТА
Ничего. Лишь старые технологии немного изменились, типо в реактах стали активно юзать хуки, и то, не все.
Этот процесс скачкообразный, а не постоянный. В какой-то момент появился спрос на более усложненный фронт и стали плодиться различные решения для удовлетворения спроса. Сейчас этот спрос покрыт кучей работающих решений.
Следующий такой скачек может случиться в связи с развитием PWA или webAsm, что не так и долго ждать.
хуярю пва на юнити, компилирую в васм уже сегодня
Потому-что в 90х-нулевых веб это был архив документов в интернете, тогда как сейчас веб стал каталогом онлайн приложений и в том числе документов.
Не надо только ныть про то, что прогресс не нужно и надо было так и сидеть на фреймах.
Ясен хуй, прогресс это хорошо. Только вот появление новых технологий должно быть обосновано. Теперь поясни, зачем нужен еще более сложный фронт?
возможности. ЗАчем тогда ОС нужна и десктоп, сидите сразу с
одного браузера и его локальным хранилищем размером с ваш жесткий диск. А ядром ОС будет линукс, чтоб мало весил и сам браузер работал, больше ничего не надо. Скоро и игры будут играть в облаке.
Вообще то все IT это автоматизация ради автоматизации, прогресс ради прогресса.
Какого типа проекты?
Короче, представь, 2049 год, все сидят на хромбуках. Всё, от фотошопа до игрулек должно работать в бровсере.
Просто по твоей логике даже html - излишек прогресса ради прогресса. Вот нахуя все эти красоты нужны? Текст же сам по себе вполне функионал свой выполняет.
>>1604
>Приложений
>хромбуки
Ты сам-то понял что сказал?
> Ты сам-то понял что сказал?
Понял, нет приложений которые работают на v8. Он делался с учетом того, что под него будут пилить всякие pwa, но никто не захотел.
две пластины, которые носят с собой хромающие люди
>pwa
>гугол
А теперь ещё раз подумай что ты вообще высрал. Ща гугел вам даст швабоду, вместо привязки яйцами к себе, ага.
То, что PWA, очевидно, протеворечит гугловской бизнес модели. Гугл не един в своих подразделениях, они там ного чего продвигали. И так же закапывали.
Привязать всех яйцами к своим сервисам. И кормить всех этими сервисами. А для такого, очевидно, нужно чтобы абсолютно всё было в облаке.
Ебать ты валенок, братишка. Не зря в жс треде сидим.
Извини, ведением бизнеса не интересуюсь.
Задачи казуальные и по-своему всратые.
https://medium.com/webbdev/js-2b0820b3788f
Расчехляйте свои решения. https://repl.it/@CharonIV/5-tipovykh-zadach
проорал с этой 2n анаграммы
FizzBuzz говно, дал параметр -10, нихуя не отработало. От 1 до -10 не можешь посчитать, лох?
Вот не надо тут про валидацию входящих данных говорить. Это все синтетические задания. Давай еще типы аргументов проверять, вдруг ты buffer запихнешь туда
ДА я ж пошутил.
2.
const fizzbuzz = end =>
[...Array(end).keys()].forEach(num =>
console.log(num, (num % 3 === 0 ? "Fizz" : '' ) + (num % 5 === 0 ? "Buzz" : '') || num )
)
3.
const ww = word => word.toLowerCase().split('').sort().join('')
const anagram = (w1,w2) => w1.length === w2.length && ww(w1) === ww(w2)
5.
const fiB = (n,a,b) => n === 0 ? a : fiB(n-1,b,a+b);
const fib = nth => fiB(nth,0,1);
А зачем? Если жизнь дает тебе лимоны, делай лимонад. Как бы задания на позицию JS разработчика, вот и должен показать, что умеешь в js. Давай на if else for while все зафигачим, которые есть в любом языке программирования.
Что сильно дохуя умный? А коменты где, а форматирование? Кто потом разбирать это дерьмо будет? Переделывай нахер все
Как этот долбаеб пися статью и коментя может взрывать стаки
Разные, почитай про async await, в двух словах это синхорный способой работать с асинхорным кодом.
async-функция возвращает промис, потому с возвращаемым от нее значением можно работать с then.
Всмысле? Там 2 return
Запускает саму себя до того момента, пока не сработает первое условие, после этого начинает идти обратно по стеку и возвращать значения, вроде как-то так
Некрасивый орган.
На проекте юзается Ngrx/data, это обертка поверх Ngrx/entity.
Мне нужен кастомный запрос, типа не Апдейт/Делит а сделайДохуя(ид). И кастомный АПИ ендпоинт. Вот как это блять сделать? Как добавить кастомный этот метод и потом в еффекте или где дернуть апи, дождаться респонса и заапдейтить стор.
Перечитал вот эту хуйню https://github.com/johnpapa/angular-ngrx-data/tree/master/docs
заимплементил кастомный дата сервис, кеш сервис, редюсер. НО оно просто оверайдить существующие методы Ngrx/data. Те, которые в EntityOp. А как срать сделать полностью свой метод?
дааа так сразу и не понять!тут требуется серьезниший РИСЁЧ
В последних двух задачах ничего эффективнее не придумать, а вот в первых трёх можно сделать эффективнее.
https://repl.it/repls/SnarlingQuerulousDegree
>как рекурсия
Первый пик рекурсия из статьи
На каждый шаг рекурсия пидорится на две другие, что ебаный пиздец и лучше на собесе вообще ничего не написать чем высрать такое
Второй пик обычная рекурсия с аккумулятором >>1671
>Там же нет return
Если ты про
(n,a,b) => n === 0 ? a : fiB(n-1,b,a+b);
В стрелочных функциях при неуказывании фигурных скобок автоматически становится return, но должин быть один экспрэшон
(n,a,b) => n === 0 ? a : fiB(n-1,b,a+b);
(n,a,b) => { return n === 0 ? a : fiB(n-1,b,a+b); }
function(n,a,b) {
return n === 0 ? a : fiB(n-1,b,a+b);
}
Писать что-то типа
n => let a =1; n+1;
Нельзя
Еще в стрелочных функциях не обязательно засовывать в скобки () аргумент если он один
>как рекурсия
Первый пик рекурсия из статьи
На каждый шаг рекурсия пидорится на две другие, что ебаный пиздец и лучше на собесе вообще ничего не написать чем высрать такое
Второй пик обычная рекурсия с аккумулятором >>1671
>Там же нет return
Если ты про
(n,a,b) => n === 0 ? a : fiB(n-1,b,a+b);
В стрелочных функциях при неуказывании фигурных скобок автоматически становится return, но должин быть один экспрэшон
(n,a,b) => n === 0 ? a : fiB(n-1,b,a+b);
(n,a,b) => { return n === 0 ? a : fiB(n-1,b,a+b); }
function(n,a,b) {
return n === 0 ? a : fiB(n-1,b,a+b);
}
Писать что-то типа
n => let a =1; n+1;
Нельзя
Еще в стрелочных функциях не обязательно засовывать в скобки () аргумент если он один
>На каждый шаг рекурсия пидорится на две другие
Это не самый пиздец. Пиздец , если ты им формулу Бине напишешь или если у тебя ее спросят. Я лично не знаю как она выводится, но я решал задачу через нее, потому что когда-то давно смотрел формулы чисел фибоначчи.
По началу я удивился, что существует на столько мощный метод вычисления, но потом задумался : является ли он столь эффективным? Если присмотреться к формуле, то можно увидеть что от n растет кол-во умножений и делений, а классический подход лишь суммирует числа. Я замеры на скорость не делал, но что-то мне подсказывает, что одно суммирование явно быстрее чем несколько умножений
Скинь статью плз.
for (let _cl of src) {
console.log(_cl)
for (var key of Object.getOwnPropertyNames(_cl.prototype)) {
console.log(key)
Shape.prototype[key] = _cl.prototype[key]
}
}
}
https://playcode.io/468568?tabs=script.js,preview
Быстро фикс не то скопипастил.
Mixin
Object.create не позволяет сделать объект более чем от одного прототипа. Требуется создать функцию mixin позволяющую подмешивать множество прототипов в итоговый объект
Код-условие и тесты:
/ Test example /
function Shape() {}
const originalPrototype = Shape.prototype
function Drawable() {}
Drawable.prototype.draw = function() {}
function Chainable() {}
Chainable.prototype.chain = function() {}
Shape.prototype = mixin(Drawable.prototype, Chainable.prototype);
assert(Shape.prototype).toBe(originalPrototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Drawable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Chainable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.draw).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).toBe(Chainable.prototype.chain)
assert(Shape.prototype.__proto__.draw).toBe(Drawable.prototype.draw)
/
mixin() - function that student should create
assert(actual) - object that takes actual result
toBe(expected) - method compare with expected
notToBe(not expected) - method compare with not expected
/
https://playcode.io/468568?tabs=script.js,preview
Мой вариант решения, но не получается подмешать примесь к нужному прототипу в цикле( не знаю как записать)
Mixin
Object.create не позволяет сделать объект более чем от одного прототипа. Требуется создать функцию mixin позволяющую подмешивать множество прототипов в итоговый объект
Код-условие и тесты:
/ Test example /
function Shape() {}
const originalPrototype = Shape.prototype
function Drawable() {}
Drawable.prototype.draw = function() {}
function Chainable() {}
Chainable.prototype.chain = function() {}
Shape.prototype = mixin(Drawable.prototype, Chainable.prototype);
assert(Shape.prototype).toBe(originalPrototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Drawable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Chainable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.draw).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).toBe(Chainable.prototype.chain)
assert(Shape.prototype.__proto__.draw).toBe(Drawable.prototype.draw)
/
mixin() - function that student should create
assert(actual) - object that takes actual result
toBe(expected) - method compare with expected
notToBe(not expected) - method compare with not expected
/
https://playcode.io/468568?tabs=script.js,preview
Мой вариант решения, но не получается подмешать примесь к нужному прототипу в цикле( не знаю как записать)
Да, я долбоёб
Фиксю:
Код-условие и тесты:
/ Test example /
function Shape() {}
const originalPrototype = Shape.prototype
function Drawable() {}
Drawable.prototype.draw = function() {}
function Chainable() {}
Chainable.prototype.chain = function() {}
Shape.prototype = mixin(Drawable.prototype, Chainable.prototype);
assert(Shape.prototype).toBe(originalPrototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Drawable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Chainable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.draw).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).toBe(Chainable.prototype.chain)
assert(Shape.prototype.__proto__.draw).toBe(Drawable.prototype.draw)
/
mixin() - function that student should create
assert(actual) - object that takes actual result
toBe(expected) - method compare with expected
notToBe(not expected) - method compare with not expected
/
Да, я долбоёб
Фиксю:
Код-условие и тесты:
/ Test example /
function Shape() {}
const originalPrototype = Shape.prototype
function Drawable() {}
Drawable.prototype.draw = function() {}
function Chainable() {}
Chainable.prototype.chain = function() {}
Shape.prototype = mixin(Drawable.prototype, Chainable.prototype);
assert(Shape.prototype).toBe(originalPrototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Drawable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Chainable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.draw).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).toBe(Chainable.prototype.chain)
assert(Shape.prototype.__proto__.draw).toBe(Drawable.prototype.draw)
/
mixin() - function that student should create
assert(actual) - object that takes actual result
toBe(expected) - method compare with expected
notToBe(not expected) - method compare with not expected
/
хз я даже обычную формулу фибоначи не стал бы писать без вики перед глазами, если зп не запредельная
И учитывая что это жс тред
>На главной есть полностью клиент сайдный скрипт
Только вот он не zip-ает нихуя. Блокнотом открой этот zip и увидишь в коде - "Hello World" извнутри текстовика Hello.txt.
Говорил же, что пароль надо, даже работает сжатие.
>>1444
Видел, но эта тулза тоже без пароля, вроде...
Один Issue открыт и он без ответа:
https://github.com/gildas-lormeau/zip.js/issues/161
Почему ЖС-эры могут вывести массив одной строчкой, а я как дурак должен циклом обходить?
Меня вынуждают обстоятельства!
Так можно в любом языке с динамической типизацией, где списочные типы автоматически приводятся к строке.
>По какому тутору, книге, статье можно фастом поднять експресс
ищешь проект на гитхабе -> клонируешь
Я должен как джун понимать этот код ? что то понятно, но все как в тумане, какое то нечитабельное говно.
Там ошибка. Задание требует создать функцию mixin позволяющую подмешивать множество прототипов в итоговый объект.
И у задания есть код-условие, а так же тесты которые должна проходить написанная функция:
Код-условие и тесты:
/ Test example /
function Shape() {}
const originalPrototype = Shape.prototype
function Drawable() {}
Drawable.prototype.draw = function() {}
function Chainable() {}
Chainable.prototype.chain = function() {}
Shape.prototype = mixin(Drawable.prototype, Chainable.prototype);
assert(Shape.prototype).toBe(originalPrototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Drawable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Chainable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.draw).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).toBe(Chainable.prototype.chain)
assert(Shape.prototype.__proto__.draw).toBe(Drawable.prototype.draw)
/
mixin() - function that student should create
assert(actual) - object that takes actual result
toBe(expected) - method compare with expected
notToBe(not expected) - method compare with not expected
/
Сам мой код:
https://playcode.io/468568?tabs=script.js,preview
но я не понимаю как мне присвоить в цикле что последний аргумент является прототипом следующего.
Там ошибка. Задание требует создать функцию mixin позволяющую подмешивать множество прототипов в итоговый объект.
И у задания есть код-условие, а так же тесты которые должна проходить написанная функция:
Код-условие и тесты:
/ Test example /
function Shape() {}
const originalPrototype = Shape.prototype
function Drawable() {}
Drawable.prototype.draw = function() {}
function Chainable() {}
Chainable.prototype.chain = function() {}
Shape.prototype = mixin(Drawable.prototype, Chainable.prototype);
assert(Shape.prototype).toBe(originalPrototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Drawable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.__proto__).toBe(Object.prototype)
assert(Chainable.prototype.__proto__).toBe(Object.prototype)
assert(Shape.prototype.__proto__.draw).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).notToBe(undefined)
assert(Shape.prototype.__proto__.chain).toBe(Chainable.prototype.chain)
assert(Shape.prototype.__proto__.draw).toBe(Drawable.prototype.draw)
/
mixin() - function that student should create
assert(actual) - object that takes actual result
toBe(expected) - method compare with expected
notToBe(not expected) - method compare with not expected
/
Сам мой код:
https://playcode.io/468568?tabs=script.js,preview
но я не понимаю как мне присвоить в цикле что последний аргумент является прототипом следующего.
Зацените исходники.
Если говнокод, то что в первую очередь надо пофиксить?
https://github.com/vlr-hub/pricing-tools-frontend
Server-Side Rendering?
А в чём смысл? Бизнесу ведь не выгодно арендовать мощные серваки?
У меня бэк рендерит только исходную страницу (передаёт "стартовые" параметры, по которым реакт определяет, какую именно страницу нужно открыть). Ну а при переходах внутри сайта запрашивается только контент, включая данные из БД.
https://github.com/vlr-hub/pricing-tools-backend/blob/master/resources/views/index.blade.php
Смысл в том, что бизнес зависим от рекламы, а рекламу в интернете можно получить либо покупая её, либо занимаясь продвижением в поисковиках. Если гугл еще может кое-как работать с js контентом, то яндекс нахер шлет таких. А если в поисковиках у тебя нет никаких позиций, то еще и покупаемая реклама будет стоить дороже.
И яндекс и гугл добавляют в поиск страницы, указанные в sitemap.xml.
https://pricing.tools/sitemap.xml
Только на этих страницах для поисковиков нет контента. Вот так выглядят они для поисковых ботов.
let list = [1,2,3]
for(let i = 0; i<list.length; i++) {
list.push(i+3)
console.log(list)
}
Насколько я понял и React и Vue могут рендериться на серваке только в паре с нодой. Однако подавляющее большинство сайтов работают на апаче и nginx.
Для чего они тогда используются?
Тупой вопрос: зачем ставить на сервер nginx и переправлять запросы на ноду (https://stackoverflow.com/questions/5009324/node-js-nginx-what-now), если можно обращаться к ноде напрямую?
Виндертон, ты?
Добавь в приложухе аддон New Relic и настрой там пинг вебморды каждые 10 минут. Добавляешь к акку кредитку и, вуаля, бесплатный хостинг 24/7
Создайте функцию truncate(str, maxlength), которая проверяет длину строки str и, если она превосходит maxlength, заменяет конец str на "…", так, чтобы её длина стала равна maxlength.
Результатом функции должна быть та же строка, если усечение не требуется, либо, если необходимо, усечённая строка.
https://pastebin.com/vHGkS5En
Почему у меня к результату усечения строки приклеивает undefined ?
Кто-нибудь читал "eloquent javascript"?
Как вам книга и пойдет для нуба с небольшим опытом?
сделать нормальную загрузку данных. Открыл ram, сервер потянул 1.5мб данных, охуеть
Сейчас бы в 2к19 считать, что 1.5 мб это много.
let list = [1,2,3]
for(let i = 0; i<list.length; i++) {
if(i<10) {
list.push(i+3)
console.log(list)
}
}
function truncate(str, maxlength) {
if (str.length < maxlength || str.length === maxlength) alert(str)
else alert(str.slice(0,maxlength-1) + '...')
}
const truncate = (str, len) => (str.length < len || str.length === len) ? alert (str) : alert(str.slice(0,len-1) + '...')
const truncate = (str, maxlength) => {
const tail = "...";
return str.length > maxlength ? str.slice(0, maxlength-tail.length)+tail : srt;
}
оператор && имеет приоритет над ||
(выражение1 && выражение2)
сначала вычисляется выражение1
2 это не false
далее вычисляется выражение2
3 это не false
любая хуйня || не false это не false
возвращается результат выражения2 как результат вычисления логической функции
Потому что ёжики носят яблоки, а не яблоки ёжиков.
При сравнении строк, сравнивается не длина, а посимвольно. https://learn.javascript.ru/comparison#sravnenie-strok
> добавили уже оператор ??, который находится на финальной стадии принятия в стандарт экмы. Значительно более удобный, чем ||. Рикомендую.
Он добавляет какие-то новые функции?
Более ожидаемое поведение по сравнению с ||, так как не зависит напрямую от falsy сравнений. ?? проверяет на наличие или отсуствие данных.
https://github.com/tc39/proposal-nullish-coalescing
https://devblogs.microsoft.com/typescript/announcing-typescript-3-7-beta/
Optional Chaining еще мелкое, но очень удобное добавление.
Понятно, а то я думал чисто косметические изминения
Тебя не бесит ПОДЛАГИВАНИЕ при перелистывании таблиц, списков и тд., которое обязательно присутствует при запрашивании данных по кускам?
>Не понял
https://javascript.info/comparison#string-comparison
console.log('ё'.charCodeAt(), 'я'.charCodeAt());
Так и есть. На ноде в крупных проектах пишут разве что какие-то прослойки или отдельные микросервисы, но никто не будет юзать её как основу. Не потому, что нода говно, а потому, что у Джавы банально намного более развитая экосистема. Тот же Спринг предоставляет тебе инструментов намного больше и даёт гораздо более высокий уровень абстракции, чем любой жс-фреймворк для бэка. И очень многое там есть из коробки, без какой-то дополнительной еботни.
Нет. Ты и так ожидаешь, что при перелистывании будет небольшая задержка. А вот когда первый раз открываешь и ждешь 3 секунды - это пзидец
Плотили за разгребания такого говна, я не выдержол
>2020
>ssr
Удивлён что до сих пор бывают не-SPA фронтенды.
Не встречал их с 2009 и надеюсь не встречу.
В этом итт слабо понимают разницу между SPA и SaaS
>Аргументы
>у Джавы банально намного более развитая экосистема
>Тот же Спринг предоставляет тебе инструментов намного больше и даёт гораздо более высокий уровень абстракции
>На ноде в крупных проектах пишут разве что какие-то прослойки или отдельные микросервисы
>пук
Плохо
const handler = newVal => setS(newVal);
onClick={(e) => handler(e.target.value)}
const handler = e => setS(e.target.value);
onClick={handler}
Ок
const toVal = e => e.target.value;
const handler =pipe(toVal,setS);
onClick={handler}
Как разработчики справляются с этой проблемой?
>/Спецификация языка/
>Как разработчики справляются с этой проблемой?
Где проблема-то?
Хотя бы пример какого-нибудь случая
>Где проблема-то?
Ну как минимум проблема в быстродействии:
1) операции с целыми числами выполняются процессором быстрее чем операции с числами с плавающей точкой.
2) нельзя выполнить целочисленное деление, не применяя при этом функцию округления.
JS для барбершопов и слайдеров, а не для математических вычислений. Всем похуй.
скороникогда
>We have plans for how we would implement such support, but it is another case where we would first like to find out whether that is really what you, our users, care about the most; or whether we should spend our time on something else instead.
Откуда вы такие набегаете?
Что ты хочешь услышать на свой пук?
>Ну как минимум проблема в быстродействии
Процессор тратит больше времени на обработку I/O (в котором ЖС на голову выше всего остального веба) чем на сами вычисления
Топ компании до сих пор перекатываются на Ноду ради перфоманса
Рынок ни при чем, убрав фронтенд сярп/ява/питоно макак будет в полтора-два раза больше
>Там в папке example index.html включает в себя сам скрипт
>+ ещё скрипт с логикой для сайта
>(скомпресованный в нечитабельный вид, но на это у жээсеров наверняка есть своя затычка).
Судя по комментарию в самом начале:
>Operative v0.4.5 (c) 2013 James padolsey, MIT-licensed, http://github.com/padolsey/operative
это - минифицированный скрипт operative, для подключения Worker'a, в браузере.
Вот этот проект здесь: https://github.com/padolsey/operative
Тут: https://raw.githubusercontent.com/padolsey/operative/0.4.4/dist/operative.min.js
последняя версия
А вот тут: https://raw.githubusercontent.com/padolsey/operative/0.4.4/dist/operative.js
полный исходник, не минифицированный.
Ну и чтобы проверить это, выкачал их, и подключил в index.html. Всё работает.
Вместо него BigInt.
Но вообще ты не понимаешь скриптовые языки. Если тебе нужна точная математика, то делай вставки на вебасме.
>1) операции с целыми числами выполняются процессором быстрее чем операции с числами с плавающей точкой.
Внутри JavaScript число представлено в виде 64-битного формата IEEE-754. Для хранения числа используется 64 бита: 52 из них используется для хранения цифр, 11 из них для хранения положения десятичной точки (если число целое, то хранится 0), и один бит отведён на хранение знака.
У тебя всегда есть дробная часть, ты её не видешь. Напиши let a = 2.0 и верни его. Он тебе вернет обычную двойку. Но явный флоат Питона или Си и т.д. вернет тебе 2.0 . Этим и отличается JS от остальных языков. Резюмируя, на скорость это никак не влияет. Она по умолчанию гавно.
>сидишь-пердишь, решаешь разные ката на codewars
>вроде сделал, всё работает, хоть и выгляди некрасиво
>submit final
>чекаешь чужие решения (интересно жи)
>пикрел
а ещё там один челик вообще скопипастил реализацию BigInt целиком в решение, но у меня она в экран не помещается
классика
Поясни, что там произошло? Задание было перемножить 2 больших инта? Один тупо заюзал апи, а второй захардкодил результаты тестов?
Вместо решения задачи, он просто считает итерацию юнит теста и выдает ожидаемое им решение. Читор, криса, короче.
В одном задание было перемножить два больших инта, а в другом сложить, но суть ты полностью раскрыл.
А если компонентов 2, а если 3, а если 10, а 100?
fs.readdir(<путь>, (err, files) => {
<Что-то делаю с files>
});
Как сделать похожую? Нужно чтобы она кое-что делала и внутри неё можно было что-то делать с её результатом.
Мне нужна функция для работы с хэшем, а простая конструкция function a() {... return b} не подходит так как код продолжает выполняться, не дождавшись результата функции.
В async не умею и почти ничего в нём не понимаю. Пробовал создать async функцию, но ничего не менялось.
Потому-что заветы flux-архитектуры. Какие-то умные дядьки вывели целую теорию и написали кучу макулатуры, почему нужно делать так, а не иначе. Им виднее.
Кроме пропсов ты можешь организовывать общение между компонентами через context api, redux, mobx и еще кучу других вариантов.
Я не знаю. Терпеть его не могу. Он заставляет меня страдать прямо сейчас. В своих личных проектах я обмазываю реакт мобиксом.
Context api, на самом деле, слегка оверейтед как универсальный убийца стор менеджеров, главным образом тем, что context api удобен что бы просто гонять данные между компонентами, но он нифига не заменяет собой собственно полноценный стор. А полноценный стор приложения ты сам захочешь, если напишешь достаточно крупное реакт-приложение.
Не знаю, не использовал. Уверен, что документация на mdn дает исчерпывающий ответ.
Есть html тег <div>, внутри него еще допустим пять дочерних <div>. Как сделать анимацию закртытия этих дочерних <div> поочередно c помощью jQuery. Тоесть допустим скрывается сначала первый, потом второй и т.д.
Я знаю классический - колбеком в качестве аргумента hide(), второй - используя объект Deferred.
Какие еще варианты? jQuery изучаю джва часа.
через колбек делай
Потому что я не дебилко, которое для маня сайта за двадцатник с двумя формами, будет тянуть на него реакт/вебпак/babel и прочее .
Касательно промисов и fs, используй библиотеку bluebird, потому что я уже не вспомню в чем именно проблема, но при ошибках в fs, дефолтные промисы не поймают throw exception и все приложение ляжет.
Не говорю про то, что такое обязательно вылезет, но если появится, то нервов можно много потратить на поиск ошибки. Там какая-то проблема, что fs использует низкоуровневые вызовы, которые стандартные промисы не ловят, и исключение летит в главный процесс и валит все к херам.
Вот когда ченить будешь делать практическое, тогда и попизди мне.
Ого. На будущее заметочку оставил конечно, но мой говнокод не стоит таких выкрутасов. Спасибо.
Это не масштабный продакшон, а свой маленький бот в телегу, так что похуй.
Все говномагазины переписываем на реакт срочно! Так в треде на дваче сказали
То есть альтернатива жквери - это реакт, вебпак и бабель? Ты просто не разбираешься в теме.
хотя я все равно смотрю на писателей на жикверей, как на неосиляторов.
И что еще есть, как альтернатива джейквери? Желательно не либа известаня 3.5 смузихлебам.
И в чем преимущества у этих либ переж жеквери будет?
>>хотя я все равно смотрю на писателей на жикверей, как на неосиляторов.
Если подумаешь - то жеквери очень часто юзают бекендеры. Которым со стороны фронта порою что то нужно сделать быстро и без ебли.
Сейчас чистый js может практически все тоже самое, что и jquery. Еще несколько лет и он отпадет за ненадобностью. Приправляй только полифилами код через webpack, транспилируй с помощью babel и радуйся.
Ну труп жикверей еще тащат запиленные на него плагины.
А вообще интересно, есть ли какая-то либа для UI на чистом js? Я бы где-то такое даже применял бы.
Реализую очередь на node+redis. Считывание из очереди делаю с помощью brpop(указав ему таймаут), пуш - lpush. Как реализовать следующую штуку:
Кидаем гет-запрос(brpop) на пустую очередь. Тк вытаскивать нечего, ждем указанный таймаут. В это время кидаем пост-запрос(ЛПУШ). Как только в очередь что-то запушилось и это произошло до истечения таймаута у брпоп - он должен вернуть нам эту запись из очереди. Проблема в том, что сейчас если кинуть гет на пустую очередь то брпоп просто блокирует все на время таймаута и следующий запрос с пушем параллельно не обрабатывается.
Вопрос уровня "докажи что бога нет". Ты сначала докажи что он есть - тогда поговорим. Понимаешь аналогию?
Чистый es6 делает всё то же самое, что делает жквери, кроме анимаций на позиционированиях (они всё равно должны быть запрещены какой-нибудь конвенцией давным-давно, ибо трансформы)
Что за бинарное мышление - либо жквери, либо ангуляр? Писать можно на ванилле, а собирать тебе придётся всё равно, как минимум - минифицировать. Если ты предлагаешь даже не минифицировать - то ты просто самозванец от индустрии, и никакого оправдания тебе нет.
Не слушай долбоебов, спокойно юзай джиквери на своем небольшом проекте, он намного удобнее чистого жс в контексте твоей задачи.
>>Сейчас чистый js может практически все тоже самое, что и jquery.
>>4155
>>А вообще интересно, есть ли какая-то либа для UI на чистом js?
>>4165
>>Чистый es6 делает всё то же самое
Я конечно все понимаю... Я из бэкенд-стороны прилетел, JS знаю нативный, react уровня тудушечки. Немношк Nоde.js использую. Но я чет фрустрирую от ваших местных с заявлениями про "чистый" JS и "либы на чистом JS".
Джейквери - это видимо бинарный пакет на C++.
Ебать у вас цирк.
Не цирк, а детский сад. А ты чего сюда зашел старый пердун?
Крестобоярин вкатился итт. Не думал что этот день наступит так скоро. Нужно выучить ваш джава мать его скрипт. Обрисуйте вкратце что куда и как.
Лол, что, qml осваиваешь? Я изучал по learn javascript на инглише, но на сам деле он там используется в довольно урезанном виде.
другой крестобоярин
Затем, что контекст не заменяет редакс. Редакс - это как контекст на стероидах, если в двух словах. Контекст - это механизм передачи пропсов на разное кол-во уровней вложенностей, а редакс это полноценный стейт менеджер.
Что такое стейт менеджер ты можешь загуглить сам.
Объясни зачем тебе глобальный стейт менеджмент? Потому что у тебя стейт большой? Ты в стейт пихаешь всякое говно?
Потому что в современном real-world приложении управление состоянием приложения далеко не такая тривиальная вещь, какой она может показаться на первый взгляд.
И да, стейт большой и сложная асинхронная логика с кучей сайд эффектов, которые нужно контролировать. Это уже отвечая на твой вопрос.
Но ведь Редукс вводят для глобального стейта, а потом героически решают проблемы с запросами к бекенду с помощью саги хуяги
Потому что вместо того чтобы прокидывать компонненты в пропсах на один два уровня, собирают в глобальны пучок зависимости и хардкодят компоненты на нижнем уровне
Короче пишут на реакте как на vue
Некрасиво
Деньги плати - будет информация. Я не буду тратить своё время и всё разжевывать, что бы даже амёба поняла. С опытом поймешь, короче.
Твой туду на редаксе не есть опыт, инфузория
Это копия, сохраненная 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.