Программирование

Ответить в тред Ответить в тред
Check this out!
JSThread #191 /js/ Аноним 01/01/21 Птн 19:15:02 18979841
16069129603330.png 56Кб, 1050x1050
1050x1050
Предыдущий тред: >>1892152 (OP)

Больше пары строк кода в посте или на скриншоте ведут в ад.

Для программирования на HTML https://jsfiddle.net
Для Node.js с консолькой https://repl.it/languages/nodejs

Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.

Руководство для вката: https://developer.mozilla.org
Аноним 01/01/21 Птн 19:17:30 18979862
Аноним 01/01/21 Птн 19:30:03 18979943
>>1897921 →
что за глупый вопрос
то что во первых меньше запросов надо, а во вторых ты замучаешься определять когда надо делать запросы потому что корзина поменялась где-то в другой части приложения
Аноним 01/01/21 Птн 19:53:20 18980054
>>1897956 →
Это жаваскрипт.
Жаваскрипт это имплементация экмаскрипт. А экмаскрипт - это встраиваемый язык без средств ввода вывода. На голом ес ты даже console.log не напишешь. Все, что ты делаешь на жс - это то, что предоставляет ранйтайм куда он встреон. И рантайм везде разный - нода, браузер, ардуино, фотошоп, автокад, что угодно еще. Даже nginx.
Аноним 01/01/21 Птн 20:20:20 18980245
>>1897994
>то что во первых меньше запросов надо
Или писать эндпоинты нормально, а не высирать весь список джейсоном на каждый пук.
>а во вторых ты замучаешься определять когда надо делать запросы потому что корзина поменялась где-то в другой части приложения
Можно подумать со стором ты не заебёшься определять состояние корзины, когда сайт на двух страницах открыт. А если ещё и воркеров сверху насыпать, то там вообще анал карнавал начинается.
Аноним 01/01/21 Птн 20:31:57 18980356
Почему жс тред находится в pr?
Аноним 01/01/21 Птн 20:45:26 18980497
Аноним 01/01/21 Птн 21:05:50 18980828
Аноним 01/01/21 Птн 21:08:29 18980879
Стоит вкатываться в докер?
Аноним 01/01/21 Птн 21:09:41 189809310
Аноним 01/01/21 Птн 21:22:13 189810811
>>1898082
Ну так питон тоже игрушечный язык.
Аноним 01/01/21 Птн 21:36:15 189811412
>>1898108
Питон изначально делался для школьников, даже не студентов как паскаль, а жс изначально язык для работающих вебмакак. Айк вообще хотел чтобы жс был разновидностью лиспа, но начальство не разрешило. Но это вы и без меня знаете...
Аноним 01/01/21 Птн 21:56:30 189812613
>>1898114
Питон изначально делался для УЧЁНЫХ, но не инженеров-программистов. Вот для тех, кому язык нужен в научной работе, и у кого культура соответствующая. Это чувствуется. В этом его уникальность, кстати.

Потом уже на питон начали навешивать инженерные фишки, чтобы дружить его с прикладным программированием.
Аноним 01/01/21 Птн 21:59:41 189812914
>>1898126
А точнее, история языков:
Питон делался для учёных не программистов.
JS делался для того, чтобы добавить динамики в простенькие веб странички.
PHP делался для того, чтобы добавить чуть динамики в сгенерированные сервером странички.

Это такое родовое происхождение языков. Все три серьёзно выстрелили, и их уже стали конвертировать в серьёзные индустриальные инженерные языки для профессиональных разработчиков. Но во всех их "родовые травмы" проявляются.
Аноним 01/01/21 Птн 22:11:11 189813915
16070878473590.jpg 18Кб, 640x640
640x640
А в чем проблема всем экспертам с вышкой CS собраться вместе и запилить, учитывая набитые за годы шишки, лучшие языки для фронта и бэка, и фреймворки под них? Коммерчески не выгодно? Так полно идейных задротов.
Аноним 01/01/21 Птн 22:16:19 189814816
>>1898139
Ну пили язык для фронта. А потом убеди произвоителей браузеров, что его все должны внедрить, в полном соответствии со стандартами.

С другими языками проблема в том, что они сначала выросли, потому что были в нужной нише, а потом стали думать, что не очень удачные. А при этом уже накоплена огромная кодовая база.

А переделывать сложно, вон как больно питон с v2 на v3 перекатывался, при том что изменения были умеренные.
Аноним 01/01/21 Птн 22:20:03 189815117
>>1898139
Вон гугел дарт тебе запилил. Пользуйся.
Аноним 01/01/21 Птн 22:58:41 189818018
>>1898151
Дарт кст для бэка тоже же можно юзать, допустим под кафку либа есть даже уже, синтаксис адекватный, реально, в чем проблема юзать
Аноним 01/01/21 Птн 23:08:28 189818619
>>1898180
А зачем? Чтобы в вендорлок по уши залезть?
Аноним 01/01/21 Птн 23:16:22 189819020
>>1898186
А какой там вендорлок-то? Да, он от гугла, но го же спокойно все используют
Аноним 01/01/21 Птн 23:25:44 189819621
>>1898190
>го же спокойно все используют
Пока гром не грянет...
Аноним 02/01/21 Суб 02:57:46 189836322
4b5b332d2a7fe02[...].jpg 85Кб, 750x1334
750x1334
Здравствуй, дорогой двач, в интернетах наткнулся на программирование скриптов в фотошопе, а происходит это все под джава скриптом. И хотелось бы узнать что нужно читать для того, чтобы хоть что-то накодить в фш. Хочу найти какую-то книгу для этого, чтобы ещё написана была хорошо, примерно как Герберт Шильдт "руководство пользователя Java". Книги из нафаня трндов не чекал, тут в шапке все про фронт энд, а может я в очи долблюсь и не могу найти гайд
Аноним 02/01/21 Суб 03:22:57 189836523
Аноним 02/01/21 Суб 03:37:26 189837024
IMG-20201211-WA[...].jpg 92Кб, 900x1600
900x1600
>>1898365
Не совсем то, что я ищу. Мне нужно что-то, типо, тех документации js с пояснениями операторов и всего такого.
Аноним 02/01/21 Суб 04:01:05 189838125
>>1898370
Быстрофикс. По ссылке нашёл гайд от adobe по методам включенным в фш, но так и не нашёл ничего про оператов в js.
Аноним 02/01/21 Суб 06:31:31 189840226
Аноним 02/01/21 Суб 08:42:11 189841227
>>1898402
w3cschools самый конченный ресурс порицаемый всем сообществлм.

Ты нахуя его притащил долюоеб?
Аноним 02/01/21 Суб 08:43:50 189841328
>>1898114
Айк хотел разновидность смоллтолка. Недаано же он все пояснил в твиттере буквально месяц назад.
Аноним 02/01/21 Суб 10:45:03 189843629
Аноним 02/01/21 Суб 12:44:19 189850130
Двач, помоги. Пытаюсь задеплоить страницу на github pages но получаю просто пустую страницу, хотя иконка сайта почему-то загружается. Раньше получалось фиксить путем убирания слешей в путях, типа "/static/js/bsdasd.chunk" на "static/js...", но теперь это не помогает.
Что я пробовал: разворачивать сайт через npm run deploy, указывал там в package.json все что нужно, делал по этому туториалу https://create-react-app.dev/docs/deployment/#github-pages-https-pagesgithubcom и всё равно получаю хуй с маслом. Так же пробовал делать как в этом видосе: https://www.youtube.com/watch?v=ctLFWAanxcI&list=LL&index=1 и тоже не помогло. У кого-нибудь может было?
Аноним 02/01/21 Суб 12:52:03 189850831
>>1898501
Ты ссылку на проект приложить забыл
Аноним 02/01/21 Суб 12:59:59 189851332
>>1898412
Сообществом долбаебов?
Аноним 02/01/21 Суб 13:07:19 189851633
>>1898370
Слушай, вот в шапке всего 3 ссылки. Как у тебя получилось не найти среди них ссылку на MDN?
Аноним 02/01/21 Суб 14:32:12 189860634
>>1898412
никто и не говорит платить за их серты. как справочник они нормас
Аноним 02/01/21 Суб 14:36:57 189861235
>>1898508
Всё, пофиксил. Но теперь медиазапрос слетает... Блять, сука, реакт действитетльно уебище блять. Пока билдил на лохохосте - всё работало, и мобильная раскладка и десктопная. Теперь опять сидеть разбираться ЧТО ПОЛШЛО НЕ ТАК
Аноним 02/01/21 Суб 14:48:32 189862136
>>1898612
В штаны тебе Реакт не срет случайно?
Аноним 02/01/21 Суб 14:50:54 189862337
>>1898621
Пошел нахуй олень ёбаный)))))))))
Аноним 02/01/21 Суб 15:01:55 189863038
>>1898612
Причём здесь реакт? Если ты запросы на сторонние ресурсы делаешь, то один хуй прокси-сервер надо ставить, так как браузер будет их блочить. Одной статикой не отделаешься, даже на SPA.
Аноним 02/01/21 Суб 15:16:02 189863839
>>1898126
>Питон изначально делался для УЧЁНЫХ
Накуя ученым Питон, когда есть Fortran, Algol, Matlab, Haskell ?
Аноним 02/01/21 Суб 15:19:27 189864340
>>1898638
Чученые тоже любят сидеть в носу ковыряться, а не изучать хаскели.
Аноним 02/01/21 Суб 15:22:42 189865041
image.png 39Кб, 930x600
930x600
>>1898606
>как справочник они нормас
Серьезно?
Ну объясни мне смысл этого code example. ЧТо конкретно он тут демонстрирует.
Аноним 02/01/21 Суб 15:38:24 189866642
>>1898650
Перепутали person.id с person[id]
Аноним 02/01/21 Суб 15:42:21 189867143
>>1898638
Haskell не создан для практических задач, он чисто академический язык для ковыряния теорий и развития компьютер саенс
Аноним 02/01/21 Суб 15:46:10 189867644
>>1898650
Ну это не для тупых просто, экзампл поясняет что такое символ и как его использовать, но ты ведь читать не умеешь и тебе непонятно, значит ресурс виноват.
Аноним 02/01/21 Суб 16:00:38 189869345
>>1898671
Интересно как ты представляешь развитие любой науки, если не через решение практических задач?
Аноним 02/01/21 Суб 16:46:29 189871846
Аноны, а есть какой-то устоявшийся способ отображать разноцветные иконки в реакт нейтиве (в частности, внутри кнопок)? Неужели надо png в <Image /> грузить?
Аноним 02/01/21 Суб 17:08:14 189872947
изображение.png 11Кб, 1400x310
1400x310
>>1898516
Мой браузер говорит что руководству пизда
Аноним 02/01/21 Суб 17:12:37 189873048
>>1898718
font awesome или любой другой иконочный шрифт. Так как это шрифт(то есть просто текст), то цвет иконок ты можешь менять просто через css color: blue, как менял бы цвет у текста.
Аноним 02/01/21 Суб 17:14:37 189873149
>>1898730
А свои svg иконки как-то можно использовать?
Аноним 02/01/21 Суб 17:16:13 189873350
Аноним 02/01/21 Суб 17:17:20 189873451
>>1898731
Когда я занимался RN, с SVG там были большие проблемы. Мы в итоге просто грузили кучу разноцветных иконок.
Аноним 02/01/21 Суб 17:49:15 189875852
1.png 30Кб, 641x515
641x515
2.png 43Кб, 641x512
641x512
3.png 44Кб, 708x559
708x559
Аноны, подскажите как можно решить вопрос с урлами в express в шаблонизаторе pug? Я не хочу хардкорно привязывать ссылки к навигационным ссылкам. Есть ли норм способ получить ссылки из вызывающей middleware?
Аноним 02/01/21 Суб 18:27:05 189880953
15908241197990.jpg 270Кб, 2000x2000
2000x2000
>>1898733
Немного полистал - годно
Аноним 02/01/21 Суб 18:46:18 189882054
>>1898758
Что за вопрос-то хоть?
Аноним 02/01/21 Суб 18:47:55 189882255
изображение.png 3Кб, 465x137
465x137
Аноны, что это за хуйня? Что делает этот >>> оператор?

Встретил эту поебень в этом коде

let array = []
for (let i = sortItmAll.length >>> 0; i--;){
array = sortItmAll
}

Непонятно как работает, но работает.
Могли бы пояснить для тупых за код?

Что значит эта хуйня?
"Присваивание с беззнаковым сдвигом вправо"

Какие нахуй биты, вы чо угараете?! Вы чо угараете, какие биты??
"The unsigned right shift operator (>>>) (zero-fill right shift) shifts the first operand the specified number of bits to the right. Excess bits shifted off to the right are discarded. Zero bits are shifted in from the left. The sign bit becomes 0, so the result is always non-negative. Unlike the other bitwise operators, zero-fill right shift returns an unsigned 32-bit integer."
Аноним 02/01/21 Суб 18:55:02 189883156
>>1898822
Это типо как шаги что ли?
Аноним 02/01/21 Суб 19:11:55 189883657
Аноним 02/01/21 Суб 19:14:37 189884058
>>1898822
>Какие нахуй биты, вы чо угараете?! Вы чо угараете, какие биты??
2021 год
@
Типичный кодерок на JS
Аноним 02/01/21 Суб 19:19:08 189885059
>>1898840
Учитывая, что высокоуровневые языки программирования как раз и были созданы, потому что с битами и байтами вручную дрочиться - это больно, неэффективно и не нужно в 99% случаев, то ничего необычного, что пишущий на таком языке программист не знаком с битовым представлением, если перед этим отдельно его не выдрочил по какой-то причине. Твой высокомерный пук неуместен.
Аноним 02/01/21 Суб 19:29:30 189886760
>>1898850
Не дрочиться постоянно с битами и байтами != Не разбираться в азах информатики
Аноним 02/01/21 Суб 19:31:21 189887161
>>1898650
Пиздец, ты даже не осилил понять что там написано.
Воистину - умный любит учиться, а дурак - учить.
Аноним 02/01/21 Суб 19:31:22 189887262
>>1898758
Так первый как раз не хардкод. А то, что ты хочешь получить, называется абсолютизация ссылок, и нет способа как-то сделать, чтобы написал и работало.
Самый простой способ - написать вспомогательную функцию, склеивающую `Request.protocol` и `Request.hostname`, которая идёт аргументом `base` к конструктору `new URL()`, а результат этого конструктора вставляется в `href`. Жирный недостаток - ссылка будет меняться в зависимости от адреса запроса. На запрос c http будут ставится http ссылки, а на https - https, что для поискового робота будет считаться как две разные ссылки и соответственно дупликацией контента. Для решения этой проблемы нужно настраивать редиректы, но там тоже не без подводных камней. По сути хуже относительных ссылок, так как не решает проблемы и требует смены архитектуры.
Другой способ - склеивать базовую ссылку через переменные среды, а функцию, создающую финальную ссылку, запихать в `app.locals`, что сделает её доступной во всех шаблонах. Недостаток конечно же в харкоде и при смене хоста нужно не забыть подправлять конфиги ручками. А уж со всякими проксями вообще анал-карнавал начинается.
В общем ставь относительные ссылки и не выёбывайся. Если вдруг кабанчик наймёт сеошника, который скажет тебе абсолютизировать/канонизировать ссылки, тогда и будешь костылить решение.
Аноним 02/01/21 Суб 19:37:00 189888263
>>1898867
Ты все еще не назвал причину, по которой человеку, программирующему на любом высокоуровневом языке, нужно в своей ежедневной практике знать, что такое биты и как их можно сдвигать. Если идти по бессмысленным эмоциональным кукарекам "ита же азы как их не знать", то и тебя можно отправить учиться паять процессоры и переизобретать ассемблер, потому что это еще больше "азы".
Аноним 02/01/21 Суб 19:52:26 189890764
>>1898882
Причина простая - программирование это сложная инженерная дисциплина требующая высокой квалификации для решения постоянно возникающих нетривиальных задач по обработке информации. На рынке, конечно, до сих пор есть место для макак-формошлепов, но эта ниша, во-первых, занята индусами работающими за плошку риса, а во-вторых, понемногу закрывается разными генераторами этих самых форм

> паять процессоры и переизобретать ассемблер
Может быть процессор я не спаяю и ассемблер не переизобрету, но в том как устроены процессоры с ассемблерами я например разбираюсь
Аноним 02/01/21 Суб 19:52:44 189891065
>>1898882
Чувачок, у тебя аргументация на уровне детского сада.

Если ты не понимаешь, что такое байт, сдвиг, побитовые операции - ты не программист.
Это как не знать, что Земля круглая, примерно.
Но, можешь утешаться тем, что таких псевдо-программистов довольно дохуя в мире.
Аноним 02/01/21 Суб 20:01:16 189893466
>>1898907
>Причина простая - программирование это сложная инженерная дисциплина требующая высокой квалификации для решения постоянно возникающих нетривиальных задач по обработке информации.
Что же тогда в НИИ крестовики за МРОТ работают?
>но эта ниша, во-первых, занята индусами работающими за плошку риса, а во-вторых, понемногу закрывается разными генераторами этих самых форм
Ох уж эти фантазии разработчика заднего конца. Скорее бэкэнд заменят конструкторами, в котором только разбирающиеся пердолики останутся, а всяких перекладывателей джейсонов отправят на мороз.
>Может быть процессор я не спаяю и ассемблер не переизобрету, но в том как устроены процессоры с ассемблерами я например разбираюсь
Что нихуя тебе не поможет при спаивании процессора и написания ассемблера.
Аноним 02/01/21 Суб 20:02:59 189893867
>>1898907
Все еще не назвал причину и область применения такого знания в ежедневной работе программиста высокоуровневого языка.
>Может быть процессор я не спаяю и ассемблер не переизобрету
Как же так? Ведь
>программирование это сложная инженерная дисциплина требующая высокой квалификации для решения постоянно возникающих нетривиальных задач по обработке информации.
а ты даже процессор спаять и запрограммировать не можешь, если вдруг придется решить "постоянно возникающую нетривиальную задачу" по пайке и программированию процессора, формошлеп.
>>1898910
>Если ты не понимаешь, что такое байт, сдвиг, побитовые операции - ты не программист.
Это потому что ты так сказал? Ну я тогда сказал, что если процессоры не умеешь паять, то ты не программист, парируй, непрограммист.
Аноним 02/01/21 Суб 20:05:23 189894468
>>1898850
Каким образом уровень языка программированирования освобождает от обязанности знать азы? Ну напиши мне хекс-редактор без знания двоичной арифметики. Или это слишком низкоуровневая задача по-твоему?
Аноним 02/01/21 Суб 20:14:25 189895769
>>1898944
>обязанности знать азы
О такой обязанности лично Алан Тьюринг в программистской библии написал или откуда ты ее взял?
>Ну напиши мне хекс-редактор без знания двоичной арифметики
Ну спаяй мне процессор без навыков пайки.
Аноним 02/01/21 Суб 20:18:39 189896170
изображение.png 1102Кб, 1024x819
1024x819
>>1898836
Пендоский не уважаю, но со временем пойму, благодарен.


>>1898934
>>1898907
Приятно, что начал срач.


>Не дрочиться постоянно с битами и байтами != Не разбираться в азах информатики

На уроках информатике мы играли в ксс, извини.
А на практике не приходилось сталкиваться с битами. До недавних пор.


>понемногу закрывается разными генераторами этих самых форм

Что за генераторы? Моя мама была не права, когда отдавала меня учиться на вебдев к хауди-хо? Генераторы, Анон, что они значат?


>>1898944
>Каким образом уровень языка программированирования >освобождает от обязанности знать азы? Ну напиши мне хекс-
>редактор без знания двоичной арифметики. Или это слишком >низкоуровневая задача по-твоему?

Вообще не интересует хекс-хуекс. Чисто для себя на жиесе кодю. Вот заканчиваю туду, что-то вроде проект-менеджера.
Ты бы видел мой php. Моя база данных - сохранение html в файл.


Мимо тот Анон, который не знает про сдвиг битов.
Аноним 02/01/21 Суб 20:18:42 189896271
>>1898822
>let array = []
>for (let i = sortItmAll.length >>> 0; i--;){
>array = sortItmAll
>}
Что блядь?
Аноним 02/01/21 Суб 20:21:39 189896772
изображение.png 15Кб, 403x357
403x357
>>1898962
// Sort Priority
function PrioritetSorter(){
let sortBlock = document.querySelector('.content')
let sortItmAll = document.querySelectorAll('.prioritet')

// convert nodelist to array
let array = []
for (let i = sortItmAll.length >>> 0; i--;){
array = sortItmAll
}

// perform sort
array.sort(function(a, b) {
return Number(a.innerHTML) - Number(b.innerHTML)
});

// join the array back into HTML
let output = ""
for (let i = 0; i < array.length; i++) {
output += array.closest('.content_itm').outerHTML
}

// inner text in
sortBlock.innerHTML = output
ReloadAll()
}
//

Спиздил где-то сортировку. Работает, но не понимал ">>> ".
Аноним 02/01/21 Суб 20:27:28 189897573
>>1898938
Процессоры паяют электронщики, а не программисты.
Я, кстати, умею. И неоднократно это делал.
И в JS умею лучше тебя.
Парируй теперь.
Аноним 02/01/21 Суб 20:32:17 189898374
>>1898957
>откуда ты ее взял?
Из базового курса информатики, мань.
Аноним 02/01/21 Суб 20:33:05 189898475
>>1898967
>convert nodelist to array
А можно ещё более неочевидный способ?
Аноним 02/01/21 Суб 20:33:14 189898676
>>1898975
>Процессоры паяют электронщики, а не программисты.
Ну а с байтами тогда дрочатся байтоебы, а не программисты.
>И в JS умею лучше тебя.
Опустим твои выдумки и вернемся к вопросу - почему "настоящий" программист должен знать побитовые операции, но внезапно не должен уметь паять процессоры? Ответ будет сегодня или опять продолжишь вилять жопой?
Аноним 02/01/21 Суб 20:37:38 189899177
>>1898983
>Из базового курса информатики
Из какого? Почему именно из этого? Если кто-то программирует, но слыхом не слышал о твоей библейском курсе информатики с десятью заповедями, то он не настоящий программист? Почему?
Аноним 02/01/21 Суб 20:38:07 189899278
>>1898967
Документацию к какому-нибудь жквери читаешь что ли? Конвертировать коллекцию в массив, а потом в строку - то ещё извращение. Ещё и вставлять через innerHTML заместо фрагмента.
Аноним 02/01/21 Суб 20:39:35 189899579
image.png 341Кб, 620x462
620x462
>>1897984 (OP)
Добрый вечер о великие фронтендеры всея двача. Обращается к вам подданый низкоуровневый грязный и немытый разработчик бэкенд серверный гречневый. Прошу о фронтендеры, дайте совет заблудшему грязному негодяю.

Короче в чем суть. Сейчас пилю пет проект ну ок не совсем пет, но будет опенсорсным, суть в том, что один из главных интерфейсов - это веб морда. Соответственно разделен он на обособленное API, которое можно будет дергать по http, апи хранит в себе основной функционал и в таком роде. Так вот, в чем вопрос - как лучше организовать SPA фронтенд? Писать буду самостоятельно, что там у вас сейчас актуально для этой темы, возможно будет обособленный бэкенд на ноде (т.к. основное апи пишется на низкоуровневом языке, если есть возможность - не тащить туда бизнес процессы типа регистраций и в таком роде), но пока все в процессе планирования. Если тут есть не только вкатуны в жс, но и состоявшиеся фронтенд боги, вертящие фреймворками и технологиями как хотят - буду рад советам.

Пока думаю просто взять vue с нодой/питоном и не париться особо, слать все запросы через бэк самого фронта, а апи так и останется внутренним изолированным сервисом с кор логикой.
Аноним 02/01/21 Суб 20:43:43 189900180
>>1898991
Потому же, поему не каждый фотографирующий фотограф, пишущий -писатель, а готовящий - повар. Ты настолько долбоеб с идиотскими аналогиями, что тратить на тебя свое время жалко. так что иди нахуй.
Аноним 02/01/21 Суб 20:49:59 189900681
>>1897984 (OP)
IndexedDB на практике как часто юзается? Или это антипаттерн?
Аноним 02/01/21 Суб 20:50:24 189900782
>>1898938
Область применения битовых операций в JS - реализация битовых карт, например, или функций хэширования. Может лично тебе никогда не понадобится, но если вдруг понадобятся - ты вместо хорошего решения насеришь костыльный говнокод
Аноним 02/01/21 Суб 20:51:38 189901083
>>1898995
>фронтенд vue
Бери nuxt
>бекенд api nodejs
бери nestjs
Аноним 02/01/21 Суб 20:52:41 189901184
>>1899010
Долбаеб таблетки не принял?
Аноним 02/01/21 Суб 20:54:12 189901285
>>1899010
> nuxt
Кстати у нас он был на прошлом месте работы у фронтендеров. Постоянно слышал как у них жопа горела, когда пытались авторизацию реализовать. Я не заебусь его изучать, он кажется очень комплексным, а переквалифицироваться в фронтендера не хочется.

> nestjs
Пиздец у вас фреймворков, аж в глазах рябит
Аноним 02/01/21 Суб 20:54:27 189901386
>>1899010
Хуй сосешь? Пидарас?
Аноним 02/01/21 Суб 20:56:47 189901487
>>1899012
nestjs альтернатив нет, если ты настоящий бекендер
Аноним 02/01/21 Суб 20:58:05 189901788
gazeta-zabawny-[...].jpg 31Кб, 398x470
398x470
>>1898995
>как лучше организовать SPA фронтенд
Делай сервис чтобы дергать API, опиши модели данных с помощью классов, организуй хранилище этих данных, потом отрисовывай реактивно на страничку. Не забуть взять какой-нибудь роутер и запилить наиболее часто используемые виджеты в виде компонент

мимо гуру фронт-енда
Аноним 02/01/21 Суб 20:58:11 189901889
>>1899014
>пук-среньк
жс-блядь что-то про "настоящего бекендера" высрала? Чудно, однако
Аноним 02/01/21 Суб 20:58:40 189901990
изображение.png 87Кб, 225x225
225x225
>>1898992
Документация для быдла ебаного!

А если серьезно, то просто появлялась идея и гуглил ее. Именно эту сортировку вроде с стаковерфлоу украл.

Знаю, что лютый говнокод, но он работает!
Аноним 02/01/21 Суб 20:58:57 189902091
>>1899001
>Потому же, поему не каждый фотографирующий фотограф
Потому же - почему? Опять причину забыл назвать.
>Ты настолько долбоеб с идиотскими аналогиями
Аналогий я не использовал, программирование процессоров - это не аналогия, это абсолютно такие же программистские "азы", как и дрочево битов, просто более "азовое", и почему-то такие "азы" у тебя вызывают дискомфорт.

И ответ на самом деле прост, ты путаешь историю программирования с профессией программирования. Тот исторический факт, что диды без байтоебства не смогли бы изобрести высокоуровневые языки программирования, никаким образом не накладывает обязанность байтоебствовать на современного профессионального программиста. Если хочешь аналогию, то это то же самое, что говорить "ты не настоящий повар, потому что не можешь дичь освежевать, а только с готовыми кусками мяса работаешь".
>>1899007
>Может лично тебе никогда не понадобится, но если вдруг понадобятся
А если тебе вдруг понадобится запрограммировать процессор? Или написать нейросеть? Или принтер починить? Или в жопу поебаться с тимлидом? Вдруг понадобится, а ты не умеешь и обосрешься? Срочно беги изучать.
Аноним 02/01/21 Суб 20:59:17 189902192
>>1899017
>модели данных с помощью классо
Игорь, ты? Узнал тебя по твоим шизоидным высерам
Аноним 02/01/21 Суб 21:00:49 189902293
>>1899018
Я не школоло чтобы быть язык нейм программистом, маня. У вопрошающего была реч о ноде, как прокладке между внутренними сервисами и фронтом.
Аноним 02/01/21 Суб 21:01:19 189902394
Аноним 02/01/21 Суб 21:02:18 189902595
>>1899022
А мой хуй - прокладка между твоей матерью и мной
Аноним 02/01/21 Суб 21:04:13 189902896
>>1899020
>биты это история программирования

Я тебя услышал. Рюкзак собирай.
02/01/21 Суб 21:05:28 189903097
>>1899022
>Я не школоло
Ты просто уебан
Аноним 02/01/21 Суб 21:06:55 189903298
image.png 341Кб, 620x462
620x462
>>1899017
> опиши модели данных с помощью классов, организуй хранилище этих данных, потом отрисовывай реактивно на страничку
На чем это будет проще сделать, чтобы не требовалось 2 года опыта во фронтенде, но при этом и не сделать лютое говнище неподдерживаемое? У меня опыт во фронте - это Vuejs с реактом на уровне написания компонентов в не SPA, я боюсь, что погрязну во всем этом на месяцы, а желательно побыстрее закончить. Но в любом случае фронт будет отдельно, вероятно без ноды не обойтись, ибо апи будет через гейтвей с потенциалом скейлинга в ширь.

Нукст хорошей идеей будет? Вроде все в одной коробке с сервером и фронтом, если не ошибаюсь? По сути на фронте будут личные кабинеты с регистрацией возможно нахуй, просто oauth запилю и бд юзеров по факту.
Аноним 02/01/21 Суб 21:07:49 189903499
Какие же вы лего воспламеняемые зумеры. Батя керосином бухал вместо водки?
Аноним 02/01/21 Суб 21:08:39 1899035100
>>1899020
Ты походу обосрешься сразу как только потребуется написать рекурсивную функцию, а первый встретившийся оператор битового сдвига в коде будет причиной срыва сроков проекта
Аноним 02/01/21 Суб 21:10:14 1899038101
>>1899028
>обосрался в дискуссии, поэтому выдумаю за оппонента фразу, которой он не говорил
Понятно.
>>1899035
Ты походу обосрешься сразу как только потребуется запрограммировать микроконтроллер, а первый встретившийся тимлид-гей будет причиной срыва сроков проекта
Аноним 02/01/21 Суб 21:12:16 1899039102
>>1899032
Что-то никаких проблем с нукстом не испытывал, авторизацию обычную сессиями запилил. Правда это не на работе. На работе всякое spa говно на вуе и реакте
Аноним 02/01/21 Суб 21:12:40 1899040103
1TYHUmI3Yxxrgwa[...].png 22Кб, 456x502
456x502
>>1899032
Vue+Vuex+ES7

>Нукст хорошей идеей будет?
Если SSR нужен, то бери, если не нужен - забей
Аноним 02/01/21 Суб 21:14:02 1899041104
>>1899038
>как только потребуется запрограммировать микроконтроллер, а первый встретившийся тимлид-гей
Неа, у меня в позции написано что я фронт-енд. Алсо я официально на удаленке, так что никаких сексов в жеппы, извени
Аноним 02/01/21 Суб 21:15:42 1899043105
>>1899040
> Vue+Vuex+ES7
А бэк? На чистой ноде? Вроде нукст как раз хорош тем, что все вместе, или я ошибаюсь?
Аноним 02/01/21 Суб 21:16:21 1899044106
>>1899041
На заборе тоже много чего написано, а тимлид может и к тебе домой заехать.
Аноним 02/01/21 Суб 21:17:02 1899046107
>>1899040
SSR не нужен если это проект для внутреннего использования компанией заказчиком. Там похуй на юзверей конечно, никуда они не уйдут. Если это saas то нужен
Аноним 02/01/21 Суб 21:17:13 1899047108
image.png 341Кб, 620x462
620x462
Аноним 02/01/21 Суб 21:18:47 1899048109
>>1899043
nestjs бери даже если тупаскрипт не будешь использовать. У других фреймворков на ноде просто нет архитектуры
Аноним 02/01/21 Суб 21:21:08 1899051110
image.png 341Кб, 620x462
620x462
>>1899048
>>1899040
>>1899043
Блин, наверн лучше на питоне с фласком бэк подниму, иначе ебнусь все это изучать. Видимо вуй возьму. Если еще у кого есть предложения - с радостью выслушаю
Аноним 02/01/21 Суб 21:22:43 1899052111
>>1899043
> На чистой ноде?
Экспресс ежжи

>>1899046
SSR для поисковиков обычно надо, потому что SPA они плохо индексируют. Ну и потом уже оптимизация скорости загрузки для юзеров
Аноним 02/01/21 Суб 21:22:49 1899053112
>>1899051
Это правильно. Нода только mvp годится

тот же анон с nestjs
Аноним 02/01/21 Суб 21:34:22 1899059113
>>1899047
Это я начал, извини.
Аноним 02/01/21 Суб 21:36:30 1899060114
>>1899006
Какой антипаттерн? Он позволяет хранить большие файлы на клиенте, для этого и используй. Обыкновенный стор он не заменит, так как поддержка варьируется между браузерами, но как дополнительная фича, позволяющая снизить нагрузку на сервер - вполне подойдёт.
Аноним 02/01/21 Суб 22:02:09 1899083115
>>1899032
Хуюкст сервер на заменит, один хуй тебе придётся отдельный апи сервер пилить, так как встроеные псевдосерверные нукстовские заморочки костыльны и плохо задокументированы.
Аноним 02/01/21 Суб 22:22:05 1899096116
>>1899060
>хранить большие файлы на клиенте
НА
ХУ
Я
Аноним 02/01/21 Суб 22:23:45 1899097117
>>1898986
Ебанько, а алгоритмы настоящий программист знать должен?
А зачем? Если все нужные алгоритмы уже реализованы в библиотеках?
Ты дегенерат, ты это понимаешь?
Аноним 02/01/21 Суб 22:26:17 1899099118
>>1899096
Чтобы засрать клиент еще больше, ведь куча говна от всякого говна типа progressive web apps
Аноним 02/01/21 Суб 22:26:42 1899100119
>>1899099
> ведь куча говна от всякого типа progressive web apps не достаточно
фикс*
Аноним 02/01/21 Суб 22:34:58 1899105120
>>1899097
Мысль написать забыл.
Аноним 02/01/21 Суб 22:35:30 1899106121
>>1899020
Ты демагог, дегенерат и пидорас.

Ты понимаешь, что ты смешон?
Ты не в состоянии осилить детскую хуйню (а биты-байты-сдвиги-ксоры - это именно что детская хуйня), но, что-то кукарекаешь о профессионализме.
Ты 100% и на жс программируешь как говно.
Аноним 02/01/21 Суб 22:36:11 1899107122
Аноним 02/01/21 Суб 22:37:39 1899108123
>>1899106
Да ну, анон. Жир уже стекает с монитора, оставь ты его в покое, видишь же, что не выкупает
Аноним 02/01/21 Суб 22:38:09 1899109124
>>1899106
Это не мысль, это тебе от чего-то стало неприятно и ты сорвался на эмоции. Когда успокоишься - попробуй выразить, что там у тебя в голове дырявой.
Аноним 02/01/21 Суб 22:44:52 1899112125
maxresdefault2e[...].jpg 163Кб, 1280x720
1280x720
explorer-win10.jpg 135Кб, 645x491
645x491
>>1897984 (OP)
>>1888626 (OP)
Сап, двач.
1. Хочу сделать такой же красивый gui, как пикрелейтед1. В окошке несколько прямоугольников c надписями(до 10^6), между некоторыми рёбра-курвы. Разумеется далеко не все прямоугольники надо рендерить одновременно, нужна навигация в таком окне + изменение масштаба - удалить, приблизить, чтобы не слишком эти самые прямоугольники руинило.
2. Хочу сделать такой же красивый gui, как пикрелейтед2

Есть ли на javascript что нибудь подходящее для такой задачи?
Аноним 02/01/21 Суб 22:48:52 1899115126
>>1899109
Выразил тебе за щеку, глотай.
Аноним 02/01/21 Суб 22:51:18 1899118127
У меня питон 21 см, стоит ли мне вкатываться в жс или остаться с Python?
Аноним 02/01/21 Суб 22:55:04 1899121128
>>1899096
Если не заметил, то через тырнет уже давно не только текстовые файлы передают. А васяну клипцо на мобилке нужно здесь и сейчас.
Аноним 02/01/21 Суб 22:57:05 1899125129
Аноним 02/01/21 Суб 22:57:41 1899126130
image 7Кб, 422x246
422x246
Зачем в JSON значения ключа заключают в кавычки? Чтобы имя ключа могло быть вообще любым unicode символом? Но это кажется не очень эффективным для быстрого парсинга, да и вроде все равно никто не пользуется ничем, кроме латиницы для названий ключей.
Аноним 02/01/21 Суб 22:59:27 1899129131
>>1899112
Первое на Canvas/WebGL лучше (конкретно окно с нодами, остальное DOM). На последнем можно вытянуть где-то 100к спрайтов в 60 фпс, если попотеть. Я бы руками писал, но если СЛОЖНА, то начни с Pixi.

Второе изи делается на DOM и вообще с JS никак не связано.
Аноним 02/01/21 Суб 23:00:01 1899131132
>>1899126
Потому что по спеке валидно только так.
Аноним 02/01/21 Суб 23:00:13 1899132133
>>1899112
Казалось бы, причём здесь жаваскрипт? Есть Canvas2D/3D и WebGL, но весь гуй на нём заебёшься рисовать. А для второго наворачивай электрон, но там надо будет и HTML/CSS для гуя дёргать.
Аноним 02/01/21 Суб 23:01:35 1899133134
>>1899131
так я и спрашиваю зачем сделали так, а не иначе
Аноним 02/01/21 Суб 23:03:14 1899134135
>>1899126
Потому что объекты - ассоциативные массивы. Не поверишь, но ключи ЖС объекта - тоже строки.
Аноним 02/01/21 Суб 23:03:58 1899136136
>>1899112
возьми любую gui либу (SDL2, GTK..) и пропусти через emscripten
Аноним 02/01/21 Суб 23:06:35 1899139137
>>1899134
Так я и говорю, что поиск по ключам в ассоциативном массиве, где символы не весь юникод, а только латиница, был бы быстрее
Аноним 02/01/21 Суб 23:06:37 1899140138
>>1899133
Пробелы, слышал про них?

JSON = JavaScript Object Notation.
Предлагаешь запретить использовать строки с пробелами в качестве ключей объектов?
Аноним 02/01/21 Суб 23:07:20 1899141139
>>1899139
А если тольк цифры - то ещё быстрее.
Аноним 02/01/21 Суб 23:09:14 1899144140
>>1899140
читай внимательнее, что я написал, а не срач разводи
>>1899141
безусловно, но именованые ключи эффективнее для цели назначения формата
Аноним 02/01/21 Суб 23:14:57 1899148141
>>1899144
Ты написал хуйню, если коротко.

Ты предлагаешь запретить строки с пробелами в качестве ключей объектов?
Или брать всё до двоеточия?
Тогда запретить двоеточия?
Или смотреть - есть кавычки или нет, и, если нет, то брать слово целиком?
Так не делают форматы, чувак.

Более того, с чего ты взял, что в этой теме кого-то интересует быстродействие любой ценой? Кто тебе это сказал?

Преждевременные (микро) оптимизации - маркер ньюфага.
Аноним 02/01/21 Суб 23:21:35 1899154142
>>1899148
нормально общаться учись, а не как агрошкольник

ввести один спецсимвол разделения ключа и значения(сейчас это двоеточие), если нужно в имя вдруг его засовывать, то как и сейчас механизм через слеш, само имя просто не весь юникод, а ограниченный набор аски (например, нечно похожее в виде ограничения есть на формат 3d моделей gltf и как раз таки для упрощения и ускорения, потому что реально никто почти не использует весь юникод для ключей, а парсинг замедляет)
Аноним 02/01/21 Суб 23:28:27 1899160143
>>1899154
Ты поучи ещё меня хорошим манерам, щенок ёбаный, лол.

По самой постановке твоего вопроса уже всё понятно.
И ты упорно не читаешь ответы.
Тебе, блядь, сказали - это формат для представления JS _объектов_.
Понимаешь?

Ещё раз - ты хочешь ввести ограничения на то, какого рода строки могут быть ключами _объектов_ в JS?
Ты долбоёб?
Про биты выше не ты писал, что они не нужны?

Если тебя не устраивает скорость обработки JSON - используй свой фомат. Так раньше делали сплошь и рядом. И сейчас делают, но, реже, т.к. на быстродействие стало похуй - оно априори достаточное.
Аноним 02/01/21 Суб 23:29:24 1899162144
>>1899126
>Но это кажется не очень эффективным для быстрого парсинга
Собственно почему? Ключи парсятся ровно тем же кодом что и строковые значения, значит больше шансов этому коду попасть в кэш
Аноним 02/01/21 Суб 23:34:08 1899166145
>>1899154
>формат 3d моделей gltf
Охуеть пример. Ты в курсе, что джейсоны используют для передачи произвольных данных, а не для пробрасывания ноликов и единиц в графическом движке? Распарси-ка таблицу с твоей охуенной идеей, погромист наверно должен сам придумывать названия всех ключей, даже если таблицу в первый раз в жизни видит.
Если у тебя от джейсона бомбит, то с XML наверно вообще сердце остановится от оптимизаторства.
Аноним 02/01/21 Суб 23:44:09 1899173146
>>1899126
Если тебе прям так дохуя надо скорость сериализации/десериализации или более компактное представление, то есть специализированные форматы типа BSON или MessagePack. JSON - это простота и универсальность в первую очередь. Очень важные штуки на самом деле
Аноним 03/01/21 Вск 00:21:04 1899191147
>>1899121
> не только текстовые файлы передают
Нахуя БД на уровне клиента, ты мне скажи? Нахуя?
Аноним 03/01/21 Вск 00:25:19 1899194148
>>1899126
У жсона относительно большая спецификация с чётко прописанными штуками типа обязательных двойных ковычек в ключах и обязательного отсутствия трейлинг запятой, например
Макакить любую хуйню в фигурные скобки тебе даёт рассчитанный на макак рантайм
Перформанс-ориентированные парсинг либы не сожрут и одинарные ковычки
Аноним 03/01/21 Вск 00:25:59 1899196149
>>1898693
Ты конечно охуеешь мой юный друг, но реальный мир использует от силы 0.1% от того что было придумано в теоретической математике. Типа суперзадач - реального применения нет, но идея интересная (в парте 6 жожо есть стенд который уменьшает тех кто бежит до владельца в 2 раза - это и есть суперзадач). Так и идёт развитие - однажды ктото думает как бы реализовать ту или иную хуйню и внезапно находит что решение уже давно было придумано в теоретических сферах наук, но никогда не было реализовано. Хаскелл это просто для теоретического дроча, почитай что сами авторы языка о нем говорят.
Аноним 03/01/21 Вск 00:29:15 1899199150
>>1899191
Чтобы не загружать клипцо лишний раз.
Аноним 03/01/21 Вск 00:38:05 1899205151
>>1899199
БД то нахуя? Ты хоть в курсе как данные хранятся?
Аноним 03/01/21 Вск 00:42:31 1899213152
>>1899196
Математика - это не наука, а дедукция из аксиом.
Аноним 03/01/21 Вск 00:47:42 1899219153
>>1899196
>реальный мир использует от силы 0.1% от того что было придумано в теоретической математике
Вывод: математика - говно без задач
Аноним 03/01/21 Вск 00:54:46 1899231154
>>1899205
>Ты хоть в курсе как данные хранятся?
А ты в курсе? Или увидел DB в названии и сразу пошли въетнамские флэшбеки от SQL-запросов?
Аноним 03/01/21 Вск 01:29:54 1899268155
Как использовать await на верхнем уровне? Постоянно хуячить анонимные async-функции?
Аноним 03/01/21 Вск 01:33:02 1899270156
>>1899213
А аксиомы откуда берутся, клоун?
Аноним 03/01/21 Вск 01:36:00 1899273157
>>1899219
Не, вывод должен быть: задачи - говно. Но ты ещё маленький чтобы понять суетность мира, и почему некоторые вещи делаются по фану. Ирвинг Финкель всю молодость потратил на расшифровку правил для королевской игры Ур. Практической пользы от этого мало в итоге. Ему просто доставило это делать.
Аноним 03/01/21 Вск 01:42:58 1899277158
>>1899273
>Ирвинг Финкель всю молодость потратил на расшифровку правил для королевской игры Ур. Практической пользы от этого мало в итоге
Не, знание истории намного более практично чем кажется. Другое дело, что практичность часто совсем не понятна обычному мимокрокодилу, лишенному знания контекста
Аноним 03/01/21 Вск 01:52:26 1899285159
>>1899268
Просто оборачиваешь весь скоуп в асинхронное мгновенно вызываемое функциональное выражение и не паришься.
А по-хорошему, если ты делаешь какой-то ассинхронный запрос, то ожидаешь ответа или его отсутствия, то есть в любом случае нужно возвращать какие-то данные и обрабатывать ошибки. А такие простыни пихать мгновенным вызовом - не уважать себя и других людей, читающих твой код.
Аноним 03/01/21 Вск 01:57:14 1899287160
>>1899270
При чем тут "откуда берутся аксиомы"? Речь о том, что любая наука прежде всего индуктивна и дедукцию использует только в очень редких случаях. В математике же индукции нет от слова совсем, она на 100% состоит из чистой дедукции.
Аноним 03/01/21 Вск 01:57:38 1899288161
>>1899285
>в асинхронное мгновенно вызываемое функциональное выражение и не паришься
Это и есть async-анонимная функция блин

async () =>
{
await execMyShittyFunc();
} ();
Аноним 03/01/21 Вск 02:04:15 1899293162
>>1899288
Вот её и вызываешь в начале файла, а внутрь пихаешь всё содержимое. Здоровый человек это назвал бы модулём, но мы же всё-таки курильщики.
Аноним 03/01/21 Вск 02:07:00 1899295163
>>1899268
>>1899288

>Постоянно хуячить анонимные async-функции?
Можешь хуячить не-анонимные:

main()

async function main () {
// тырыпыры
}
Аноним 03/01/21 Вск 02:14:28 1899297164
>>1899288
Блять, разве есть что-то пизже чем ES6-нотация для функций, а? Сука, у меня аж хуй встает когда вижу такое
Аноним 03/01/21 Вск 02:35:06 1899302165
>>1899297
Конечно есть. Классы, например
Аноним 03/01/21 Вск 04:36:37 1899324166
15547844435090.gif 425Кб, 300x300
300x300
Посоны, кто-нибудь игры делал на js? Успешно? Хочу сделать простенькую аркадку. Хер знает с чего начать.
Аноним 03/01/21 Вск 05:14:46 1899335167
>>1899324
На MDN есть раздел, посвящённый игроёбству на жс, вот с него и начни.
Аноним 03/01/21 Вск 07:28:02 1899350168
>>1899324
я делал
мини игру для промо страницы
успешно лол, несколько тысяч человек сыграло
Аноним 03/01/21 Вск 09:49:54 1899388169
Почему монго не может в нормальную загрузку картинок? Сука на ютубе одни дегенераты которые дрочат на свой multer, только у однго нашел FileBase64, нахуй форсить непаботающее говнище?
Аноним 03/01/21 Вск 10:41:37 1899409170
Аноним 03/01/21 Вск 11:00:10 1899418171
Аноним 03/01/21 Вск 11:00:50 1899419172
Огласите топ ui либ на 2021
Аноним 03/01/21 Вск 12:48:15 1899446173
>>1899388
>Почему монго не может
Потому что это монго(ненужный кал).
Аноним 03/01/21 Вск 14:14:53 1899480174
>>1899388
Казалось бы, причём здесь монга?
анон 03/01/21 Вск 15:57:50 1899557175
https://jsfiddle.net/2gbd5upa/

Объясните, почему при передаче одной и той же функции в разные переменные, при вызове через эти переменные, они ведут себя как две разные, но идентичные функции? Насколько я успел понять, функция это объект где-то в памяти, и тут оба counter должны ссылаться на него, но выходит не так.
Аноним 03/01/21 Вск 16:05:46 1899559176
>>1899557
Вызов func() создает новый объект со своим контекстом. Для того чтобы работало так как ты себе это представлял нужно написать:
let counter1 = func();
let counter2 = counter1;

Тогда эти переменные действительно будут ссылаться на один объект.
Аноним 03/01/21 Вск 16:48:54 1899580177
Хочу напилить чат типа дискорда че заюзать?
Аноним 03/01/21 Вск 16:58:59 1899589178
>>1899580
node.js + react/angular/vue/svelte выбирай что больше нравится
Аноним 03/01/21 Вск 17:00:42 1899591179
Аноним 03/01/21 Вск 17:00:47 1899592180
>>1899388
Но ты же картинки будешь хранить, в чем-то типа Amazon S3, а в базе только стрингу с адрес на сдн с которого картинка раздается
Аноним 03/01/21 Вск 17:01:23 1899593181
>>1899591
А что еще? Что тебя конкретно интересует?
анон 03/01/21 Вск 17:01:32 1899595182
Аноны, привет. Я начинающий в изучении джаваскрипта и в программирования в целом. Такой к вам вопрос, что по вашему мнению самой сложное в js?
Аноним 03/01/21 Вск 17:05:24 1899599183
>>1899592
А почему сразу нельзя в одной базе держать?
Аноним 03/01/21 Вск 17:14:29 1899611184
>>1899599
А сервить ты их потом как будешь? Со своего сервера? Это ж ебануться какая нагрузка + сдн у того же амазона будет располагаться по ближе к юзеру
Аноним 03/01/21 Вск 17:15:25 1899613185
Если сервис для раши, то тогда конечно лучше облако яндекса, чем амазона
Аноним 03/01/21 Вск 17:21:35 1899618186
Аноним 03/01/21 Вск 17:56:27 1899648187
>>1899592
По-хорошему ещё бы надо и всякие мета-данные сохранять, чтобы их сразу кормить в шаблон.
>>1899599
Ты в курсе, что у базы данных и файл-серверов взаимоисключающие требования к работе? ДБ нужно как можно более эффективно шуршать по произвольным данным, а файл-серверу нужно как можно быстрее отправлять огромные массивы.
Аноним 03/01/21 Вск 18:35:26 1899664188
Нахера ваш axios неужели обычного фетча не хватает ?
Аноним 03/01/21 Вск 18:40:02 1899669189
>>1899664
В фетче нужно пердолить свою реализацию прогресса загрузки, плюс аксиос на старых эксплорерах работает.
Аноним 03/01/21 Вск 19:07:12 1899690190
>>1899664
Для браузера фетч в сто раз лучше, проще и прямолинейнее в использовании, аксиос - это нагромождение лютой хуйни, 99% из которой мало того, что не нужно и может быть заменено одной функцией(интерсепторы, две трети опций в конфиге и т.д), так еще и сделано через жопу.
>>1899669
>В фетче нужно пердолить свою реализацию прогресса загрузки
Во-первых, в фетче это сделать невозможно в принципе.
Во-вторых, в аксиосе тебе тоже нужно ее "пердолить" до хоть сколько-то удобоваримого состояния, потому что это по сути просто API XMLHttpRequest и если уж ты его готов пердолить, то сделать отдельную обертку на редкую загрузку, реально требующую прогресс бара, будет не сильно сложнее.
В-третьих это хуйня на переферии, никто не выбирает http-клиент по "а можно ли там прогресс аплоада получить".
>аксиос на старых эксплорерах работает.
Фетч с полифилом тоже работает.
Аноним 03/01/21 Вск 19:08:56 1899692191
>>1899690

Нинужно. Твердо и чётко.
Аноним 03/01/21 Вск 20:22:34 1899770192
Аноним 03/01/21 Вск 20:25:07 1899777193
>>1899770
Нахуя теория без практики? Учишь вертску js сам прдтянется
Аноним 03/01/21 Вск 20:31:18 1899785194
UVlkAXl.png 178Кб, 463x492
463x492
Аноним 03/01/21 Вск 20:40:38 1899790195
>>1899785
Аниме, ты не пищи, а слушай анона.
Аноним 03/01/21 Вск 22:13:28 1899943196
>>1899790
>>1899777
Какой годный туториал почитать по html\css, прежде чем верстать
Аноним 03/01/21 Вск 22:22:20 1899951197
image.png 22Кб, 743x383
743x383
image.png 8Кб, 332x133
332x133
Хули ему уже не нравится?
Аноним 03/01/21 Вск 23:27:09 1899995198
>>1899951
Так у тебя `name` в глобал скоупе.
Если не хочешь, чтобы тайпскрипт матерился, оборачивай свои простые скрипты в мгновенно вызываемое функциональное выражение.
Аноним 03/01/21 Вск 23:35:15 1900001199
>>1899995
Ебать спасибо нахуй, вкатился в js.
Аноним 03/01/21 Вск 23:35:32 1900002200
>>1900001
Хотя оно работает, а значит мне похуй.
Аноним 03/01/21 Вск 23:44:34 1900012201
>>1900002
Это тебя просто Кантор говно заставляет писать, я НИГДЕ не видел использование промпта за пределами его справочника.
Вкатывайся лучше с гайда в MDN, там хоть по HTML/CSS сперва пробегают, так как их нужно знать для манипуляций с DOM'ом в жс.
А этот пример сразу хёвым практикам учит: использование prompt/alert, неявный возврат значений.
Аноним 04/01/21 Пнд 00:01:57 1900018202
>>1899995
>мгновенно вызываемое
Бля, immediately - это не "мгновенно", а "немедленно", "сразу же".
Разницу понимаешь?
Мгновенно - это про быстро/медленно.
Немедленно - это про сейчас/потом.
Аноним 04/01/21 Пнд 00:03:56 1900019203
Аноним 04/01/21 Пнд 00:05:38 1900023204
>>1900019
А какие ты ещё знаешь?
Аноним 04/01/21 Пнд 00:07:10 1900024205
Аноним 04/01/21 Пнд 00:12:41 1900025206
>>1900024
Ну, из этих - JS вне конкуренции, лол.

Правильный ответ - TS
Аноним 04/01/21 Пнд 00:16:02 1900026207
>>1900025
>сравнивать жопаскрипт с божественной кложей
>называть отдельным языком жалкую попытку обмазать жопаскрипт еще большим говном(типами) и закрыть незакрываемые дырки
Держи в курсе.
Аноним 04/01/21 Пнд 00:16:06 1900027208
Аноним 04/01/21 Пнд 00:20:59 1900028209
мгновенный.png 3Кб, 597x76
597x76
>>1900018
Ты свой пилпуль оставь для своих дружков-пердоликов.
Аноним 04/01/21 Пнд 00:21:31 1900029210
Аноним 04/01/21 Пнд 00:22:42 1900030211
Аноним 04/01/21 Пнд 00:32:22 1900037212
>>1900030
Чтобы трансипилировать код.
Аноним 04/01/21 Пнд 00:38:31 1900039213
>>1900037
Ты реально очень крутой!
Аноним 04/01/21 Пнд 01:01:26 1900049214
>>1900028
Не умничай, клоун.
То, что ты не особенно талантлив по части языков, это было сразу понятно.
И никакие говнокартинки этого факта не изменят.

Зайди в гугл транслейт, и посмотри, как immediate переводится на русский.
Аноним 04/01/21 Пнд 01:16:21 1900052215
Google Переводч[...].png 15Кб, 642x376
642x376
>>1900049
>Не умничай, клоун.
Охуенные истории от косноязычного дебиловатого педанта, пытающегося приебаться к семантике и жиденько обсирающегося в этом.
>То, что ты не особенно талантлив по части языков, это было сразу понятно.
>Зайди в гугл транслейт, и посмотри, как immediate переводится на русский.
Бля, гугл транслейт оказывается истина в последней инстанции по русскому языку! Это ты благодаря ему свой аргумент высрал?
Вот тебе определение "мгновенного" на твоём любимом и уважаемом гугл транслейте. Неудивительно, что русские доки такое говно - их переводят, советуясь гугл транслейтом, а не русским языком. Небось и ноду узлом называешь?
>И никакие говнокартинки этого факта не изменят.
Ну да, русский викисловарь это какая-то говнокартинка, то ли дело швитой гугл, который машинное обучение пользует для переводов (а значит никогда не сможет в синтетические языки).
Аноним 04/01/21 Пнд 01:34:54 1900058216
Как проще всего в юзерскрипте узнать текущие открытые вкладки одного сайта (скрипт запущен на каждой)? Что-то вроде chrome.tabs, но не в расширении.
Аноним 04/01/21 Пнд 01:42:53 1900060217
>>1900052
Пошёл на хуй, дурак.
Аноним 04/01/21 Пнд 01:44:19 1900061218
Аноним 04/01/21 Пнд 02:43:48 1900085219
>>1900026
Как разруливается ситуация если скажем у нас проект на кложе, но надо заюзать какую-то либу которая на жс?
Аноним 04/01/21 Пнд 03:13:05 1900094220
>>1899951
что это за кошмарная лайт тема, которая не меняет сайдбар
Аноним 04/01/21 Пнд 03:25:42 1900096221
>>1900061
Я уже двумя с половиной способами это сделал. Просто спрашиваю, может кто знает самый просто и быстрый вариант, который я проглядел.
Аноним 04/01/21 Пнд 03:29:22 1900099222
>>1900096
>Я уже двумя с половиной способами это сделал.

Так рассказывай.
Аноним 04/01/21 Пнд 03:44:42 1900113223
>>1900085
Ну, не думаю, что будет больше проблем, чем с кложурой на jvm и java либами - там всё делается просто как два пальца обоссать.

>>1900026
Где тред по твоей божественной кложе, сынок?
Почему там пусто?
Аноним 04/01/21 Пнд 04:36:50 1900130224
>>1900113
>Ну, не думаю
То есть никак?
Аноним 04/01/21 Пнд 05:03:48 1900139225
>>1900130
Не осилил дочитать предложение до конца?
Наоборот - всё будет OK.
Если уж на джаве с этим всё нормально, то на жс - тем более.
Аноним 04/01/21 Пнд 05:13:39 1900143226
Аноним 04/01/21 Пнд 05:39:36 1900161227
>>1899595
>Consuming JavaScript Code
А можно без потребительства?
Аноним 04/01/21 Пнд 06:07:45 1900163228
XT.mp4 159Кб, 640x360, 00:00:01
640x360
Аноним 04/01/21 Пнд 08:26:51 1900185229
fig17.png 38Кб, 825x501
825x501
Capture1.PNG 122Кб, 223x227
223x227
Все больше работая в ФП стиле и изучая ФП в целом наконец-то выхожу на уровень, когда не понимаешь как вообще люди пишут на ООП и главное зачем.

Вдвойне приятно, что JS если откинуть ненужные this'ы вполне себе полноценный ФП язык (конечно, имею ввиду Тайпскрипт больше, писать без типов в 2020 даже иронично не смешно уже), уже успешно применяю некоторые практики на работе, в том числе пишу point free c помощью ramda в редьюсерах редакса кстати вголос проигрываю с местных обсуждений редакса и вьюкса, вы совсем долбоебы что ли не понимаете зачем нужен этот паттерн, зачем разделять экшны и редьюсеры и "добавлять код в 3 файла" чтобы сделать правку, если для вас это бойлерплейт и ваш проект просто фетчит списки с сервера, то земля вам пузом, редакс вообще не про это ало.

Советовался с сеньоромправда мое повышение на сеньора тоже не загорами, в этом году планируется весной/тимлидом/лучшим другом по совместительству, сказал что рамду одобряет, только конечно же большинство разрабов неосилит, поэтому нужно будет оставлять комменты, иметь типы @types/ramda напрягает немного, к сожалению в ТС нельзя выразить по-нормальному каррирование и некоторые функции по типу compose и обучать местных мидлов.

Кстати, работаю не с DOM, а canvas и в редьюсерах у нас таки довольно сложные вычисления, рамда идеально зашла, как и ФП подход в целом.

Подводные камни от знающих?
04/01/21 Пнд 08:42:18 1900189230
>>1900185
Ты ж почти сеньор какие нахуй советы?
Аноним 04/01/21 Пнд 08:43:56 1900191231
>>1900185
>редьюсерах у нас таки довольно сложные вычисления,
Земля тебе пухом долбаебина
Аноним 04/01/21 Пнд 08:55:04 1900194232
>>1900185
Просветлившийся функциональщик на месте, я спокоен. Таблетки принять не забывай.
Аноним 04/01/21 Пнд 08:56:12 1900196233
>>1900185
О ты то наверное и пояснишь за редакс. Смотри есть файл сервиса фетчаший запросы на сервак, запускаю его в экшн креаторе, диспатчу результат в стор, сам ЭК юзаю уже в компоненте, это норм практика? Долбени с ютуба за кой то хуй фетчат запросы прям из юзэфекта, это норм?
Аноним 04/01/21 Пнд 09:00:35 1900197234
>>1900185
>Подводные камни от знающих?

Ты через месяц хуй прочтёшь, что ты там написал.
А так - всё нормально, продолжай.
Аноним 04/01/21 Пнд 09:13:24 1900203235
Jwt актуально юзать?
Аноним 04/01/21 Пнд 09:19:23 1900207236
carbon.png 55Кб, 1244x520
1244x520
>>1900196
Да, так и задумано. Норм делать все что касается экшна в экшн криейторе, в том числе запросы на сервер, для этого thunk-actions и были придуманы, чтобы было удобно задиспатчить экшн, а внутри него произвести какой-то сайд эффект и задиспатчить в зависимости от результата. Пикрелейтед пример абстрактный.

Из юзефекта не норм, а полный пиздец, одна из причин почему современный реакт код скатывается в стену нечитаемого микса сайдэффектов, хуков, вычислений и JSX'а.

>>1900197
>>1900191
>>1900194
Ну что вы как шизики, нормально же общались.

>>1900189
>Ты ж почти сеньор какие нахуй советы?
И что если сеньор, я ж не один на проекте и не тимлид. Я спокойно мог бы и сам принять решение, но есть коллеги.
Аноним 04/01/21 Пнд 09:23:52 1900209237
x86-assembly-c-[...].png 124Кб, 500x917
500x917
>>1900197
Касательно этого как раз наоборот, мутабельную лапшу разгребать одно дело спустя года, а чистенький ФП, где каждая функция делает что-то одно и написан как просто преобразования данных, другое дело.
Аноним 04/01/21 Пнд 09:24:14 1900210238
Аноним 04/01/21 Пнд 09:48:53 1900218239
>>1900207
это пиздец какой-то а не удобочитаемый код
Аноним 04/01/21 Пнд 09:51:36 1900220240
>>1900185
что за хуйню ты несёшь
писать надо чтобы работало а не чтобы письку дрочить
Аноним 04/01/21 Пнд 09:57:06 1900222241
>>1900220
Он не читал Дейкстру.
Который говорил, что профессионал никогда не будет писать clever код, потому, что он не может себе этого позволить, будучи профессионалом.

А потом на хедхантере можно увидеть экзотические вакансии, типа энтерпрайзного проекта на JRuby - очень clever, и совершенно non-maintenable. Потому, что просветлённый съебался, а для всех остальных - это бредятина и тёмный лес.

Аноним 04/01/21 Пнд 10:08:17 1900224242
>>1900222
Сейчас бы думать о долбаебах
Аноним 04/01/21 Пнд 10:32:53 1900236243
>>1900222
Валидный аргумент, ну тут собственно и дело в том, что правильный ФП код легко поддерживать. Но как легко говнокодит просветленный, так легко говнокодят и ООП-макаки с их "архитектурами" и "паттернами", которые проще потом просто нахуй переписать, чем рефакторить или поддерживать.

>>1900220
Если ты пишешь код, который идет в прод и про него забывают потом - да, так можно. Я работаю на проекте где поддерживаемость и читаемость кода в приоритете, т.к. долгосрочный продукт/фреймворк. Поэтому ФП идеально ложится в картину.

А то что макаки не способны писать ни хороший ООП, ни хороший ФП, это их проблемы и проблемы тех кто их нанимают.
Аноним 04/01/21 Пнд 11:11:45 1900261244
>>1900185
>Подводные камни от знающих?
Если коротко, то дикий оверхед по ресурсам на поддержание иммутабельности. Особенно если ты там каждый фрейм что-то пересчитываешь на своем канвасе. Почитай вот, например:
https://tonsky.livejournal.com/322036.html
https://tonsky.livejournal.com/322450.html

бывший дрочер на рамду
Аноним 04/01/21 Пнд 11:14:26 1900262245
>>1900236
> говнокодит просветленный
В том-то и дело, что речь не про говнокод, а совсем наоборот - слишком заумный (clever) код. Который пишут исключительно ради cleverness и чесания чсв, вот как >>1900185 излагает, примерно.

И который, кроме просветлённого, никому не понятен. И самому просветлённому он, спустя время, будет непонятен точно так же. Только он, при желании, ещё сможет размотать клубок, а остальные - нет.

И ФП для написания такого кода - очень благодатная среда.
И лиспы ещё.
Ну, и руби, разумеется, если кто-то ещё помнит, что такое руби.
Аноним 04/01/21 Пнд 11:17:29 1900263246
>>1900261
Кстати, да, про ресурсы-то я и забыл.
ЖС - не кложура, никаких оптимизаций иммутабельных структур тут нету.
Аноним 04/01/21 Пнд 12:14:18 1900309247
Capture1.PNG 122Кб, 223x227
223x227
>>1900261
О, наконец-то адекватный ответ. Про оверхед я, конечно же в курсе, мы не вызываем трансдьюсеры на каждый тик канваса. Тонкие места написаны как можно более лоу-лвльно. Ну и мы не обрабатываем тысячи элементов нигде, поэтому все довольно шустро работает.

>бывший дрочер на рамду
Мне кажется пути обратно быть не может.
Аноним 04/01/21 Пнд 12:15:37 1900312248
>>1900262
>Ну, и руби, разумеется, если кто-то ещё помнит, что такое руби.
Веришь-нет, мой первый язык программирования был Руби и именно в нем я полюбил выразительность и чистоту кода, поэтому ФП естественное развитие событий.

И это нормально, рубисты рубистов поймут, как и ФП-господы ФП-господ. Никто же не лезет с ФП в Джаву пока что.
Аноним 04/01/21 Пнд 12:17:32 1900316249
>>1900185
>JS
>ФП

Очередной дегенерат написал [1,2,3,4].map(e => e * 2) и думает, что теперь познал ФП. Сочувствую.
Аноним 04/01/21 Пнд 12:18:57 1900320250
>>1900209
Никто не мешает тебе придерживаться ООП и делать всё иммутабельным.
Аноним 04/01/21 Пнд 12:26:10 1900335251
>>1900309
>Мне кажется пути обратно быть не может.
Может. И рамда, и отсутствие мутаций даже там где это не нужно и «мы вообще не пишем циклы» это самолюбование все. Как просветлишься, так попустит.
Аноним 04/01/21 Пнд 12:27:32 1900338252
>>1900316
Ты хотел сказать map(double)?

Понимаю что таких большинство, но я немножко дальше пошел в pointfree код, каррирование и представление программы как композиции функций.
Аноним 04/01/21 Пнд 12:30:46 1900344253
>>1900320
Зачем делать все иммутабельным, если можно просто писать код, который не мутирует данные. Вы что. Тут все долбоебы конченные?

Аноним 04/01/21 Пнд 12:31:43 1900346254
>>1900335
Ну не надо бросаться с одной крайности в другую, мне кажется ФП как минимум учит писать более организованный и безошибочный ООП код в том числе. Для среднего джсера главный урок который надо вынести это контролируемые сайд эффекты, а не то что нельзя использовать циклы и хуярить новые обьекты и массивы направо и налево.
Аноним 04/01/21 Пнд 12:32:21 1900348255
>>1900312
Хаскель то пиздец как выразительный. А Сoq вообще пушка, чего на нем не пишешь кстати?
Аноним 04/01/21 Пнд 12:33:48 1900352256
>>1900348
А он и есть выразительный, те же list comprehensions в одной строчке сколько всего делают. Выразительный не значит легкочитаемый для залетного формошлепа.

В случае с JS просто надо уметь соблюдать баланс между декларативностью и "заумностью" кода.
Аноним 04/01/21 Пнд 12:37:29 1900361257
image.png 8Кб, 1135x60
1135x60
>>1900352
>Выразительный не значит легкочитаемый
Обожаю мань, выдумывающих собственные определения и толкования слов.
Аноним 04/01/21 Пнд 12:38:08 1900362258
>>1900346
Ну да, наверно. Но мне кажется, что простой принцип «не мутировать аргументы» хорошо лечит львиную долю таких проблем.
Аноним 04/01/21 Пнд 12:44:55 1900375259
Функциональщик на месте? Распиши роадмап по ФП
Аноним 04/01/21 Пнд 12:48:43 1900378260
fpinjava.png 27Кб, 360x451
360x451
>>1900312
Не то, что верю, я это знаю.
Ибо запах этого говна хуй отмоешь, и хуй парфюмерией забьёшь, лол. Как в том анекдоте.

Вообще, это известный факт, что рубибляди, как крысы с корабля, набежали в node и в js вообще, когда руби хайп закончился.

>выразительность и чистоту кода
Это вам так кажется, что оно чисто и выразительно.
Однако, на этот счёт есть и другие мнения.
Особенно, насчёт "чистоты".

>Никто же не лезет с ФП в Джаву
Пикрелейтед.
Эту книжку я купил 4 года назад.

Пойми, никто не говорит, что ФП - это плохо.
Наоборот, это хорошо, и изучение ФП делает тебя гораздо более лучшим программистом.
Но, в продакшн-коде на мейнстримных языках это надо использовать строго по месту, дозированно и с умом. А не просто потому, что тебе сегодня так нравится. Через полгода твои предпочтения изменятся, а кода, не читаемого без стакана, в прод ты уже нахуярил.
Аноним 04/01/21 Пнд 12:50:36 1900380261
>>1900344
>Зачем делать все иммутабельным, если можно просто делать всё иммутабельным

Таблетки выпил?
Аноним 04/01/21 Пнд 12:51:53 1900382262
monads-5-638.jpg 41Кб, 638x479
638x479
>>1900361
Легко читаются, если ты знаешь что абстракции обозначают.

pipe(
map(ages)
filter(eligibleToVote)
either(wasBornInCountry, wasNaturalized),
reduce(averageAgeReducer)
)(citizens)

Выразительно и легко читается? Да. Понятен ли полностью этот код, если программист не знает что такое map, filter, reduce и pipe и как работают функции в целом? Нет. По мне так даже не зная что функции делают, все равно очевидно по именам. Код читается как английский текст.

Изучив основы ФП выразительный код становится и легкочитаемым, потому что весь ФП основываеся на базовых функциях и абстракциях, котоыре ты соединяешь как тебе угодно для обработки данных.

В ООП безусловно тоже можно добиться похожего, если писать идеальный SOLID код и пользоваться паттернами. Только на практике мы видем километровые методы и лапшу из переменных, объектов, циклов, if else и т.д.
Аноним 04/01/21 Пнд 12:56:27 1900385263
>>1900382
Дебил, то что ты написал делается также и в ООП коде. У тебя просто определения ООП и ФП уровня "ну ООП это там где объекты, а ФП это там где функции...". В этом и прелесть ООП - ты можешь объединять его с конструкциями, которые похожи на конструкции из ФП и получать идеальное сочетание. В то время как языки из ФП навязывают тебе городить лапшу лишь бы не оборачивать всё в объекты.
Аноним 04/01/21 Пнд 12:58:27 1900387264
>>1900382
Это же самое пишется за 1 (один) цикл, выполняется быстрее, не дает вообще никакого оверхеда по памяти и удобнее типизируется.

Алсо, ты сначала делаешь map(ages), а потом из возраста каким-то образом вычисляешь either(wasBornInCountry, wasNaturalized).
Аноним 04/01/21 Пнд 13:01:59 1900388265
>>1900382
Обожаю такие объяснения, как на пике.
Хуита ни о чём.
И сразу понятно, что объясняющий - самовлюблённый пидар, а не профессионал.

>если ты знаешь что абстракции обозначают
Чувак, твой пример - это не фп, а детский сад.
Это просто value oriented programming и конвейер.
А критикуют в данной дискуссии совсем другие вещи.
Аноним 04/01/21 Пнд 13:04:34 1900389266
>>1900380
Серьезно не понимаешь разницы между "делать иммутабельным" и "не мутировать"?
Аноним 04/01/21 Пнд 13:08:18 1900394267
>>1900388
>value oriented programming
Подавился.
Ты чего, они такого не слышали никогда.
Аноним 04/01/21 Пнд 13:09:23 1900395268
>>1900378
>Вообще, это известный факт, что рубибляди, как крысы с корабля, набежали в node и в js вообще, когда руби хайп закончился.
Жиза, но я все еще считаю Руби лучшим языком для бекенда для стартапов. Рельсы слишком хороши и приятны, чтобы от них отказываться, и я полностью солидарен с DDD в плане что современные SPA и упор на клиентскую сторону это шиза.

>изучение ФП делает тебя гораздо более лучшим программистом
>Но, в продакшн-коде на мейнстримных языках это надо использовать строго по месту, дозированно и с умом. А не просто потому, что тебе сегодня так нравится. Через полгода твои предпочтения изменятся, а кода, не читаемого без стакана, в прод ты уже нахуярил.
Я абсолютно согласен с этим. Я и говорю, не стоит бросаться в крайности. Я замечаю за собой, что погружаюсь в просветление лол, но я так же не забываю, например, что мы работает с канвасом и что производительность > красивых композиций функций в тонких местах. И что другие программисты вынуждены будут 50 грамм наливать пытаясь прочитать мои элегантные пайпы в редьюсерах редакса.

>>1900385
>>1900387
Блять, вы шизики? Я просто пример привел рандомный.

>Это же самое пишется за 1 (один) цикл, выполняется быстрее, не дает вообще никакого оверхеда по памяти и удобнее типизируется.
И превращается в большой метод, который изменяет переменные и вместо того чтобы декларативно увидеть и понять код, я вынужден тратить полчаса чтобы разобраться что ты там натипизировал и нациклил. Знаю я эти циклы, дяди, не первый год работаю.

Возможно когда-нибудь я попаду в какой-нибудь ФП проект где нихуя не понятно, но пока что основы ФП выглядят намного приятнее чем обычный подход и УЖЕ улучшают кодовую базу на работе, мне этого более чем достаточно пока что.

>В этом и прелесть ООП - ты можешь объединять его с конструкциями, которые похожи на конструкции из ФП и получать идеальное сочетание.
Какой толк из этого сочетания, если ты все еще используешь обьекты, this'ы, инстансы и остальной мусор, который плодит ошибки? ФП языки именно поэтому и обязывают "городить лапшу", чтобы получить строгий инпут - аутпут.

>>1900388
>Чувак, твой пример - это не фп, а детский сад.
Так я сам только начал изучать месяц назад. Я тебе что, монады на монаде должен показать сейчас? Я сам хоть и понимаю, что они выразительные, не пойму сейчас такой код.
А эти "примитивные" вещи УЖЕ КАК МИНИМУМ делают дефолтную лапшу на JS намного приятнее и поддерживаемей.
Аноним 04/01/21 Пнд 13:39:08 1900417269
>>1900395
>современные SPA и упор на клиентскую сторону это шиза
Да, говно.
Но, это не идеология, а способ увеличить throughput серверов для задач, ориентированных на широкие массы быдла - сотни тысяч и миллионы. Сервер выплюнул и забыл, а вся хуйня происходит на клиенте, где даже на сраной мобиле по цене доширака, уже 6-ти ядерный камень.

>Я тебе что, монады на монаде должен показать сейчас?
Монада - очень простой и полезный паттерн.
Если приглядеться - они повсюду. И ты их наверняка используешь.
Если есть проблемы с пониманием - посмотри вот это:
https://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html

>"примитивные" вещи
Я не имел в виду, что это плохо, примитивно или дёшево.
Наоборот - именно такие вещи (простые и понятные) и есть рациональное использование ФП в реальном промышленном коде.
Аноним 04/01/21 Пнд 13:59:09 1900445270
>>1900417
>Если приглядеться - они повсюду. И ты их наверняка используешь.
>Если есть проблемы с пониманием - посмотри вот это:
Спасибо. Не то что бы есть проблемы с пониманием, просто был сосредоточен на более базовых вещах и практиковался + на работе пробую использовать где уместно. Теперь когда я легко читаю, пишу и понимаю partial applied функции (мне самое сложное было начать легко воспринимать это на лету) и осилил functional light JS книжку которая кстати мастхев как по мне любому JS разработчику, т.к. опять же она не просто показывает основы ФП, она в целом учит писать более качественный код и очень прагматична, буду переходить к более сложным концепциям.

Я как раз эту статью читал уже давненько, теперь интересней будет почитать с большим опытом.

>Наоборот - именно такие вещи (простые и понятные) и есть рациональное использование ФП в реальном промышленном коде.
А я о чем. Когда-нибудь я надеюсь я стану ФП-гуру чисто для себя, но я прекрасно понимаю что это далеко не серебрянная пуля в практическом применении. И я прекрасно понимаю почему большинство саркастически говорят о просветлении и почему многие плюются от ФП.
Аноним 04/01/21 Пнд 14:06:33 1900450271
>>1900395
>И превращается в большой метод, который изменяет переменные и вместо того чтобы декларативно увидеть и понять код, я вынужден тратить полчаса чтобы разобраться что ты там натипизировал и нациклил. Знаю я эти циклы, дяди, не первый год работаю.

let averageAge = 0;

citizens.forEach(citizen => {
if (eligibleToVote(citizen) && (wasBornInCountry(citizen) || wasNaturalized(citizen))
averageAge += citizen.age / citizens.length;
})

Ух ебать огромный сложный код, пиздос какие страншные мутации, меньше чем за полчаса точно не разобраться. Надо рамду тянуть, иначе никак!
Аноним 04/01/21 Пнд 14:09:03 1900452272
>>1900445
>functional light JS
Посмотри книгу JavaScript Allonge.
Это очень годная книга по ФП на ЖС.

Она есть в двух версиях - для ES5 и ES6.
Для ES6 - бесплатная:
(там надо поставить цену 0)
https://leanpub.com/javascriptallongesix
Аноним 04/01/21 Пнд 14:13:41 1900461273
>>1900450
И нахуя тебе здесь forEach, если достаточно for..of, мань?
Аноним 04/01/21 Пнд 14:15:59 1900463274
>>1900450
>let
дальше можно не читать

мимо FP-боярин
Аноним 04/01/21 Пнд 14:20:14 1900466275
>>1900450
У тебя уже как минимум 1 левая переменная, пиздецкое условие в if и оверхед вычисления age. Есть ли выигрыш здесь от ФП? Практически нет. Но когда реальный код сложнее раза в два хотя бы и подобного кода 30 файлов с "классами" и "методами", которые делают this.averageAge и подобное, тогда дело и выходит из под контроля. К тому же, это ты написал так этот код. А другой разработчик напишет через for ... of, а третий вообще eligibleToVote напишет как citizen.age >= 18. И когда вот подобных различий становится десятки, а кода на тысячи строк, тогда наступает и пиздец.
Аноним 04/01/21 Пнд 14:22:12 1900472276
>>1900466
>А другой разработчик напишет через for ... of, а третий вообще eligibleToVote напишет как citizen.age >= 18
И что будет? Ты перестанешь понимать, что делает код или сломается мозг от перегрузки? Шизоиднее претензии не придумаешь.
Аноним 04/01/21 Пнд 14:26:31 1900478277
>>1900472
Да, сломается от перегрузки. Мне нужно для каждого подобного случая смотреть что где меняется, потому что БАЗОВЫЕ абстракции каждый раз заново пишутся императивно. Опять же, если у тебя 3 функции подобных, вообще похуй как ты их напишешь. Но проблемы неизбежно возникают в средне-больших проектах при подобном подходе. И если тебе ни разу не приходилось разгребать подобные &&, || и let iWillBeMutated10times = 0, то могу лишь порадоваться за тебя.
Аноним 04/01/21 Пнд 14:27:40 1900479278
>>1900452
Спасибо, попробую навернуть Хотя с первого взгляда будет повторение уже того что знаю, но написано солидно вроде
Аноним 04/01/21 Пнд 14:28:28 1900481279
>>1900478
Что ты несешь, шизоид? Какие блять базовые абстракции? Ты не знаешь, как работает for of, но при этом знаешь, как работает forEach, а другой разработчик наоборот?
Аноним 04/01/21 Пнд 14:33:13 1900487280
>>1900461
У for...of так себе перформанс во всех браузерах кроме Хрома. Но я согласен, что он идиоматичнее.

>>1900466
>1 левая переменная
Нет таких

>пиздецкое условие в if
Чего? По-твоему два фильтра по всему массиву с использованием левых либ, а не встроенного в JS синтаксиса это лучше что ли?

>оверхед вычисления age
От деления-то? Интересно посмотреть на содержание твоего reduce без оверхеда.

>А другой разработчик напишет через for ... of, а третий вообще eligibleToVote напишет как citizen.age >= 18. И когда вот подобных различий становится десятки, а кода на тысячи строк, тогда наступает и пиздец.
Охуеть аргумент. А на ФП только один способом написать можно по-твоему? Я тебе ровно то же самое и про твой код сказать могу — вот будут у вас сложные ветки из десятков функций в пайпе и тогда-то пиздец и наступит бу-бу-бу. Алсо, у вас там код-ревью не изобрели еще?
Аноним 04/01/21 Пнд 14:34:35 1900489281
>>1900478
> разгребать подобные &&, ||
Чот орнул.
Аноним 04/01/21 Пнд 14:51:37 1900517282
>>1900478
А с чего ты вообще взял, что код с map, filter, reduce - это декларативный код?
С каккх пор действия это декларативность?

Чтобы он у тебя был декларативным писать надо mapped, filtered, reduced
Аноним 04/01/21 Пнд 15:02:03 1900524283
>>1900517
Декларативность не от названия исходит, а от того как ты действие выполняешь. for циклом ты указываешь пошагово как нужно выполнить цикл, написав map ты указываешь (декларируешь) что ты получаешь.
Аноним 04/01/21 Пнд 15:08:27 1900527284
>>1900524
Это твои выдумки и переворачивание терминов.
Когда ты пишешь map(age) ты говоришь отразить каждый элемент коллекции во что-то.
Ровно так же, как когда ты пишешь for..of ты говришь что сделать с каждым элементом коллекции.

Противопоставляя декларативность императивности все нормальные люди говорят об описании либо готового результата (что-то вот что-то отражено), либо об описании процесса (что-то во что-то отразить).

Аноним 04/01/21 Пнд 15:09:02 1900528285
>>1900524
Каким образом map достанет твою мамку из борделя декларативно? Придется так же писать алгоритм оплаты сутенерам. Посещения комнаты с кроватью. Ты не ебнулся случаем?
Аноним 04/01/21 Пнд 15:20:24 1900537286
>>1900524
>or циклом ты указываешь пошагово
А ты ты не пошагово указываешь?
pipe(
map(ages)
filter(eligibleToVote)
either(wasBornInCountry, wasNaturalized),
reduce(averageAgeReducer)
)(citizens)

>map ты указываешь (декларируешь) что ты получаешь
Нет, ты не описал, что ты получаешь. Ты описал, что сделать.
Аноним 04/01/21 Пнд 15:33:02 1900562287
>>1900527
>отразить
Отобразить же, лол.
От слова "образ".
Аноним 04/01/21 Пнд 15:37:57 1900576288
>>1900537
Нет, он прав.
Императив - описание того, как получить результат.
Декларатив - описание того, что нужно получить.
Реализация же ("как") упрятана в стандартные библиотечные функции.

Но, важнее другое.
В ФП-подходе идёт трансформация _значений_. А в императивном - последовательность _команд_. Ты не можешь прервать последовательность команд и потом продолжить её в другом месте.
Но, можешь в любом месте разорвать цепочку ФП-преобразований, и продолжить потом, в другом месте, просто взяв промежуточное значение и передав его куда-то.
Аноним 04/01/21 Пнд 15:38:54 1900577289
>>1900537
>>1900528
>>1900527
Вы только посмотрите на этих мамкиных специалистов по декларативности, советую быстро звонить в международный консорциум по функциональщине, ведь мы только что доказали что map(fn) это не декларативный код.

>>1900537
В pipe ты не указываешь что делать, а декларируешь чем это является. Буквально говоришь, что cредний возраст это композиция из отфильтрованных родившися в стране, которым разрешено голосовать и у которых возраст достаточный.

В императивном коде же, ты описываешь КАК ты проходишься по циклу, ПРИСВАЕВАЕШЬ счетчик i, СУММИРУЕШЬ в переменную averageAge и так дальше.

В декларативном коде детали реализации скрыты за абстракцией, в императивном нет.

Банальный пример:

// Императивно проходимся в цикле и пушим в массив
const ages = [];
for (let i = 0; i < citizens.length; i += 1) {
ages.push(citizens.age);
}

// Декларативно заявляем что возраста это мап свойства 'age' граждан
const ages = map(prop('age'));
const citizensAges = ages(citizens);
Аноним 04/01/21 Пнд 15:41:04 1900581290
>>1900576
Именно так!

>Реализация же ("как") упрятана в стандартные библиотечные функции.
И самое главное, эта реализация каждой функции отточена и работает предсказуемо.
Когда я вижу map(prop('age') я знаю что я получу в итоге.
Когда я вижу for... я вынужден лезть во внутрь, потому что каждый разработчик засунет внутрь абсолютно что угодно. Пуш в массивы, присваивания в переменные, возможный выход из цикла и т.д.
Аноним 04/01/21 Пнд 15:41:13 1900582291
>>1900576
>Ты не можешь прервать последовательность команд и потом продолжить её в другом месте.
yield
Аноним 04/01/21 Пнд 15:41:33 1900584292
>>1900576
Добавлю:
Например, попробуй рассмотреть асинхронные операции - колбек (императив) vs промис (фп, монада).
Ты можешь делать с промисом всё то, что ты можешь делать, например, со строкой или числом. Например, подвергнуть его цепочке преобразований. Но, ты не можешь так же поступать в коде, сделанном на колбеках.
Аноним 04/01/21 Пнд 15:42:44 1900586293
>>1900582
За yield стоит хуева туча магии.
Это очень сильно другое.
Аноним 04/01/21 Пнд 15:45:30 1900592294
Аноним 04/01/21 Пнд 15:46:08 1900593295
>>1900577
let citizensAges = []
for(let {age} of citizens) citizensAges.push(age)

>>1900581
>Когда я вижу map(prop('age') я знаю что я получу в итоге.
Фантазер.
Аноним 04/01/21 Пнд 15:47:27 1900597296
>>1900586
Что другое? ты написал, что я не могу в императивном коде преврать выполнение и продолжить его в другом месте, взяв промежутное знаенчие.

Могу.
анон 04/01/21 Пнд 15:50:07 1900601297
Какая средня зп у фронтенд миддла в Москве?
Аноним 04/01/21 Пнд 15:53:03 1900605298
>>1897984 (OP)
для ДОМа это использовать -> jsdom?
Аноним 04/01/21 Пнд 15:53:57 1900610299
>>1900601
Зачаем фронтенд мидлу Москва если дядя Боб платит больше?
Аноним 04/01/21 Пнд 15:54:00 1900611300
Аноним 04/01/21 Пнд 15:54:57 1900613301
>>1900605
Если для дома - это пет проект называется.
Аноним 04/01/21 Пнд 15:55:50 1900617302
>>1900450
Поправил тебя

const isVoter = (citizen) =>
__eligibleToVote(citizen) &&
__(wasBornInCountry(citizen) || wasNaturalized(citizen));

const voters = citizens.filter(isVoter);

const votersAgeSum = voters.reduce(
__(averageAge, voter) => averageAge + voter.age,
__0
);

const arerageVoterAge = votersAgeSum / citizens.length;
Аноним 04/01/21 Пнд 15:56:46 1900619303
>>1900611
Это для фулстак с пхп, т. е для тех кто не занет ни фронта ни бека нормально. Чисто фронты больше получают.
Аноним 04/01/21 Пнд 15:59:37 1900624304
>>1900601
~150к

А вообще нашел где спросить, иди на hh и смотри вакансии
Аноним 04/01/21 Пнд 15:59:52 1900625305
>>1900489
>Чот орнул.
Это ты тут орнул, а в проекте, когда голова забита решением текущей задачи, а не разгадкой старого кода, можешь соснуть. А если не ты, то колега
Вот мое, если что >>1900617
Аноним 04/01/21 Пнд 16:01:41 1900627306
>Когда я вижу map(prop('age') я знаю что я получу в итоге.
unknown[]?
Аноним 04/01/21 Пнд 16:03:09 1900628307
>>1900597
Для этого тебе придётся написать дополнительный код, сохранить кучу вещей куда-то, и т.п. Это будет уже _другой_ код. Причём - каждый раз разный, в зависимости от. В value oriented - всё и так уже значения, никакого дополнительного состояния нет - всё в аргументах функций. Просто подключаешь-отключаешь-переключаешь.

Вообще, вместо того, чтобы лезть в залупу и выставлять себя дураком, лучше попробуй понять, о чём идёт речь. Это, естественно, потребует времени и усилий. Но, старание будет вознаграждено, будь уверен.
Аноним 04/01/21 Пнд 16:03:22 1900629308
>>1900625
Я понимаю, что && и || это очень сложные операторы, но как-то справляюсь пока.
Аноним 04/01/21 Пнд 16:03:43 1900630309
>>1900605
как в нем двигаться по дереву, методы не гуглятся нихуя
Аноним 04/01/21 Пнд 16:05:39 1900631310
>>1900617
Добавил в мой код лишних переменных, лишних проходов по массиву, немного оверхеда по памяти и ошибку в вычислении среднего? Ну спасибо, конечно.
Аноним 04/01/21 Пнд 16:06:04 1900632311
>>1900617
>__
Вообще, это всё и без рамды можно сделать.
И даже лучше без неё, если только не для побаловаться.
Аноним 04/01/21 Пнд 16:06:12 1900633312
>>1900610
Да с товарищем в спор вступили на эту тему.

>>1900611
Лол, в Барнауле столько или даже больше будут платить.

>>1900624
Мне кажется, на хх не пишут реальные цифры.
Аноним 04/01/21 Пнд 16:07:55 1900635313
>>1900630
>как в нем двигаться по дереву
Ногами дерево покрепче обхватывай.
И руками.
Подтягиваешься на руках, ногами перебираешь, так и лезешь.
Аноним 04/01/21 Пнд 16:08:15 1900636314
>>1900629
>пока
до встречи скорой
Аноним 04/01/21 Пнд 16:12:43 1900637315
>>1900631
>лишних переменных
не поместится на тетрадком листочке и препод наругает?
>лишних проходов по массиву
уже сделал бенчмарк чтоб замерить разницу условия и .length VS моего фильтра?
>ошибку в вычислении среднего
чё?)

>>1900632
засмеялся. Это longdash, новая ФП либа
Аноним 04/01/21 Пнд 16:15:01 1900638316
1599077170819.jpg 1354Кб, 1254x1771
1254x1771
>>1900635
дай ссылочку на список методов плз))querySelector нихуя не работает)
Аноним 04/01/21 Пнд 16:15:59 1900639317
>>1900637
> longdash
А, то-то я думаю, что оно всё как-то странно выглядит.
Но, я не спец по рамде, так что, подумал, что и хуй с ним, что непонятно.
Аноним 04/01/21 Пнд 16:16:33 1900640318
>>1900593
>let citizensAges = []
>for(let {age} of citizens) citizensAges.push(age)
И? Типичная императивная шляпа с обьявлением 2х переменных и мутацией массива. И это лишь примитивный пример. Суть не в количестве строчек кода, а в том как ты выражаешь код.

>>1900617
Вот это уже намного лучше. Не 100% ФП, но по крайней мере код читаемый.

>>1900631
>Добавил в мой код лишних переменных, лишних проходов по массиву, немного оверхеда по памяти
Экономия на спичках и наносекундах. Читаемость кода и легкость правки в 10 раз важнее.

> и ошибку в вычислении среднего?
Все правильно там написано.

>>1900627
Функцию, которая "ждет" массив из объектов со свойством age.

const ages = map(prop('age')); // objects => map(prop('age'), objects)

const citizens = [
{ name: "Victor", age: 21 },
{ name: "Daniel", age: 33 },
{ name: "Ellie", age: 19 }
];

ages(citizens); // [21, 33, 19]
Аноним 04/01/21 Пнд 16:17:37 1900642319
>>1900638
Каких методов? Что ты делать хочешь?
querySelector != "двигаться по дереву"
И почему не работает?
Аноним 04/01/21 Пнд 16:20:16 1900643320
>>1900640
>Не 100% ФП
я считаю, что 100% фп то перебор, как и рамда. Functional light js читал, если что
Аноним 04/01/21 Пнд 16:24:18 1900647321
>>1900642
у меня есть jsdom я хочу его парсить

const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
console.log(dom.window.document.querySelectorAll('p'))
>NodeList {}
Аноним 04/01/21 Пнд 16:24:27 1900648322
>>1900643
Та я сыглы, дело вкуса, зависит от проекта и разрабов. Но то как ты написал это УЖЕ на 3 головы выше лапши которую я частенько вижу и это даже не обязательно должно рассматриваться как ФП, это просто написание более чистого и читаемого кода. Как я и говорил, я бы советовал всем JS разрабам почитать functional light JS.
Аноним 04/01/21 Пнд 16:28:17 1900654323
>>1900576
>Ты не можешь прервать последовательность команд и потом продолжить её в другом месте.
В обычном цикле вполне можно контроллировать течение цикла, в отличие от всяких методов массивов, где приходится костылить километровый колбэк для какого-нибудь `forEach()`, если количество элементов в массиве меняется во время исполнения.
>>1900581
>И самое главное, эта реализация каждой функции отточена и работает предсказуемо.
Пока ты только в примерах хэлловорлды приводишь, ФП быстро скатывается в неперевариваемую кашу, особенно когда мамкин ФПшник пихает анонимки заместо колбэка. Там так же будешь смотреть, не хуйнул ли Вася сайдэффект и откуда вообще переменные берёт, только это дело будет скрыто в простыне редюсера, у которого километровый колбэк идёт перед аккумулятором.
>>1900628
>Для этого тебе придётся написать дополнительный код, сохранить кучу вещей куда-то, и т.п.
Ну а в ФП коде конечно же вообще ничего не нужно писать и всё само сохраняется.
Аноним 04/01/21 Пнд 16:29:26 1900655324
>>1900637
>>1900640
Пиздец, вы не видите ошибку даже когда я на нее явно указал? А где же прозрачность и читаемость фунционального стиля? Там идет деление на число всех граждан, а должно быть только на голосующих.

Алсо, это код (в отличие от моего, опять же) крашнется при передаче пустого массива из-за деления на ноль.
Аноним 04/01/21 Пнд 16:30:57 1900657325
Аноним 04/01/21 Пнд 16:35:30 1900662326
>>1900640
>Функцию, которая "ждет" массив из объектов со свойством age.
Кажется, ты не уловил сарказма
Аноним 04/01/21 Пнд 16:36:12 1900663327
>>1900655
>А где же прозрачность и читаемость фунционального стиля?
на месте
>Там идет деление на число всех граждан, а должно быть только на голосующих
опечатался офк. Ты тоже скобку пропустил
>>1900655
>Алсо, это код (в отличие от моего, опять же) крашнется при передаче пустого массива из-за деления на ноль.
+ || 0
Аноним 04/01/21 Пнд 16:39:41 1900666328
>>1900655
>Алсо, это код (в отличие от моего, опять же) крашнется при передаче пустого массива из-за деления на ноль.
Монады вошли в чат.
Аноним 04/01/21 Пнд 16:40:42 1900668329
>>1900654
>Ну а в ФП коде конечно же вообще ничего не нужно писать и всё само сохраняется.

Ты даже не пытаешься понять, о чём тебе говорят.
В теме не ориентируешься совершенно.
Но, пишешь простыни поучающим тоном, и рассказываешь, как оно на самом деле.
Даннинг-Крюгер в чистом виде.

>>1900647
А, извини, я не понял, что речь именно про JSDOM.
Не знаю, не работал с ним.
Погуглил - да, там какая-то залупа с querySelector, углубляться не стал.
Аноним 04/01/21 Пнд 17:04:04 1900699330
>>1900647
console.log(dom.window.document.querySelectorAll("p").length);
Нод лист не пустой, он тебе просто результат в консоль не покажет, добавь ещё один p и логни длину
Аноним 04/01/21 Пнд 17:23:38 1900729331
1606667142270.jpg 82Кб, 1280x720
1280x720
>>1900668
с каким домом работал?
какой editor с автокомплитом используешь? (sublime text с плагином не очень, vs code лагает)
посоветуй годный гайд
Аноним 04/01/21 Пнд 17:24:36 1900730332
MutationObserver в ванильном жс это то на чем основана либа rxjs?
Аноним 04/01/21 Пнд 17:32:34 1900745333
>>1900730
Нет, либа rxjs основана на паттерне Observer
Аноним 04/01/21 Пнд 17:37:00 1900750334
>>1900668
как заставить console.log(node) всё его содержимое в красивом формате html?
Аноним 04/01/21 Пнд 17:37:51 1900752335
>>1900729
С браузерным.

>editor с автокомплитом
IDEA
WebStorm по-вашему

>посоветуй годный гайд
Гайд по чему именно?
Аноним 04/01/21 Пнд 17:44:28 1900770336
>>1900730
>это то на чем основана либа rxjs
>BLACK LIVES MATTER
Аноним 04/01/21 Пнд 17:47:09 1900778337
>>1900770
А под кроватью ты уже сегодня проверял? А то вдруг и там негры с СЖВ спрятались.
Аноним 04/01/21 Пнд 17:47:52 1900783338
image.png 125Кб, 1140x751
1140x751
Аноним 04/01/21 Пнд 17:52:43 1900786339
>>1900783
А из под кровати-то где скрин? Сколько негров уже поймал сегодня?
Аноним 04/01/21 Пнд 17:54:06 1900788340
>>1900750
Никак.

Кстати, речь про браузер или опять про jsdom?
И какова вообще конечная цель?
Аноним 04/01/21 Пнд 17:55:59 1900790341
>>1900786
Ты там метнись в спальню. Там наверняка твою мамашу жарит нигер Ашот из команды rxjs.
Аноним 04/01/21 Пнд 17:55:59 1900791342
>>1900730
>MutationObserver в ванильном жс
Чего блять
Аноним 04/01/21 Пнд 17:56:20 1900792343
Аноним 04/01/21 Пнд 17:57:13 1900794344
Аноним 04/01/21 Пнд 19:11:01 1900825345
>>1900752
Б-браузерным, а что за библиотека?
Гайд по jquery и puppeteer
Аноним 04/01/21 Пнд 19:13:21 1900827346
>>1900788
>Никак
пидора ответ
Аноним 04/01/21 Пнд 19:33:35 1900849347
Правда ли, что присваивать что-то именам параметров ф-ции - плохой паттерн?
Например, так:
function( x, y ) {
x = 4
...
}
По-моему, этот "плохой паттерн" высосан из пальца.
А если бы я сделал деструктуризацию с переименованием типа такого?
function({ $: value, delta }) {
value = value + delta;
}
Аноним 04/01/21 Пнд 19:37:36 1900853348
>>1900825
>Гайд ...
В гугле есть же.

>а что за библиотека?
Я тебя не понимаю вообще.
Какая библиотека?
Что ты хочешь получить, в конечном итоге?
И не экономь буквы, их на всех хватит.
Аноним 04/01/21 Пнд 19:45:26 1900863349
>>1900853
Подожду, пока ответит кто-то более шарящий.
Аноним 04/01/21 Пнд 19:46:19 1900867350
>>1900849
Значение по умолчанию просто поставь.
Аноним 04/01/21 Пнд 19:50:48 1900874351
>>1900867
Но мне не нужно значение по умолчанию, я просто не хочу в простой функции объявлять лишние переменные. Особенно с учетом того, что теперь всем приспичило объявлять их через const. А я раньше смеялся над длинным local в луа.
Аноним 04/01/21 Пнд 19:53:12 1900880352
>>1900874
Тогда зачем тебе х в аргументах, если ты внутри все равно его переопределяешь? Суть аргумента в том, чтобы получить его из вне.
Аноним 04/01/21 Пнд 19:58:51 1900884353
>>1900849
Ну т. е. я передаю в функцию 5, а она у меня заменяется на 4, потом что-то работает не так как ожидалось, я дебажу с осознанием того, что передаю 5, но нахожу баг только когда дохожу до исходного кода функции в которой долбоеб зачем то меняет передаваемый аргумент на 4, а не 5.
Поэтому это и плохой паттерн. Если ты заменяешь аргумент функции, значит нужно как минимум уведомить об этом того кто этот аргумент передаёт.
Аноним 04/01/21 Пнд 20:01:32 1900889354
>>1900884
> Ну т. е. я передаю в функцию 5, а она у меня заменяется на 4
толсто
Аноним 04/01/21 Пнд 20:02:58 1900893355
>>1900880
Да там условный код. Если я переопределяю х, это не значит, что до того я им не пользуюсь.
Аноним 04/01/21 Пнд 20:06:31 1900901356
>>1900889
>function( x, y ) {
>x = 4
>толсто

Ясно.
Аноним 04/01/21 Пнд 20:16:11 1900917357
>>1900901
Толсто — это приходить в JS тред, изображая незнание самых азов программирования.

P.S. По поводу моего изначального вопроса, единственный реальный аргумент против переопределения параметров — это мутация объекта arguments. Но кто вообще юзает эту глючную депрекейтед херню в 2021?
Аноним 04/01/21 Пнд 20:29:44 1900932358
>>1900917
Дурик, у тебя мутация аргумента происходит, этого уже достатчно для того чтобы твой говнокод стал еще хуже, хотя бы потому, что для того чтобы изменить любую функцию написанную тобой, нужно сначала проверить не захуячил ли ты там где-нибудь в середине какой-нибудь цикл который у тебя вертит на хую аргумент функции.
Аноним 04/01/21 Пнд 20:35:49 1900940359
>>1900932
Фп-шиз, в мутациях нет ничего плохого. Плохо - это постоянно создавать новые переменные и засирать все вокруг.
Аноним 04/01/21 Пнд 20:47:00 1900950360
>>1900940
Во-первых, если переменная лишняя, то её не будет в итоговом коде благодаря оптимизациям компилятора. Во-вторых, зачем ты игнорируешь то что тебе говорят, в частности пример ситуации когда тебе нужно внести изменения в существующий код?
Тебя если не интересует ответ на твой вопрос, то ты сразу так и пиши - моя идея охуенная и мне похуй на опыт моих предшественников.
Аноним 04/01/21 Пнд 20:50:13 1900955361
Почему все так дрочать на spa? Хотя до сих пор юзают ssr
Аноним 04/01/21 Пнд 20:51:51 1900959362
>>1900884
>Если ты заменяешь аргумент функции, значит нужно как минимум уведомить об этом того кто этот аргумент передаёт.
Что ты несешь, шизоид? Если ты не мутируешь переданный объект/массив, то на переопределение переменных внутри функции похуй абсолютно, вызывающему от этого ни тепло ни холодно, ему важно только чтобы функция сделала что должна.
Аноним 04/01/21 Пнд 20:55:31 1900962363
WJKh5rx.png 170Кб, 374x347
374x347
Аноним 04/01/21 Пнд 21:01:11 1900968364
>>1900955
Каждая технология для своих задач. Если у тебя вебгл-игра, ясен пень выбираешь SPA, если у тебя магазин запчастей, цель которого повыше влезть в выдачу гугла, тебе нужен SSR.
Аноним 04/01/21 Пнд 21:24:25 1900987365
>>1900959
>важно только чтобы функция сделала что должна.

Функция должна складывать 2 числа. Я передаю в неё два массива. Функция возвращает мне результат сложения двух единиц. Почему? Потому что важно чтобы функция сделала что должна.

В общем, поссал тебе на голову, выскочка тупорылая.
Аноним 04/01/21 Пнд 21:25:04 1900988366
>>1900968
>цель которого повыше влезть в выдачу гугла, тебе нужен SSR.

Как там в 2008? Закупились биткоинами?
Аноним 04/01/21 Пнд 21:30:14 1900995367
>>1900987
Таблетки выпил? А то уже начал придумывать какие-то функции, которые в твоей голове что-то возвращают, скоро и голоса слышать начнешь.
Аноним 04/01/21 Пнд 21:31:08 1900996368
Как найти вакансию, чтобы писать на ваниле онли?
Аноним 04/01/21 Пнд 21:31:52 1900997369
Аноним 04/01/21 Пнд 21:33:58 1900999370
>>1900996
ищешь вакуху где нужен жиквери и типа коварно пишешь на ванилле вместо жиквери
Аноним 04/01/21 Пнд 21:36:14 1901002371
>>1900995
Штаны уже постирал или решил начать с оправданий?
Аноним 04/01/21 Пнд 22:13:30 1901025372
>>1897984 (OP)
как сделать чтобы нода видела глобальные модули?
Аноним 04/01/21 Пнд 22:23:19 1901035373
>>1900996
мне интереснее, как найти вакансию, чтобы вообще прогать что-нибудь на JS.
во фронте никому не нужны программисты, всем нужны версталы, пишущие цсс со скоростью пять медиакверей в секунду
Аноним 04/01/21 Пнд 22:25:35 1901040374
какой потолок возможностей канваса?
Аноним 04/01/21 Пнд 22:31:00 1901043375
Аноним 04/01/21 Пнд 22:35:40 1901046376
>>1901035
вакансии на фреймворки это преимущественно кодинг а не верстка
Аноним 04/01/21 Пнд 22:37:24 1901048377
>>1900849
Напиши весь проект в таком паттерне и расскажешь, как охуенно это дело дебажить.
Аноним 04/01/21 Пнд 22:37:42 1901049378
>>1901043
окей,а что надо чтобы крестики-нолики были через инет?
Аноним 04/01/21 Пнд 22:39:32 1901051379
>>1901049
многопользовательские?
Аноним 04/01/21 Пнд 22:40:35 1901052380
Аноним 04/01/21 Пнд 22:41:54 1901055381
Аноним 04/01/21 Пнд 22:42:30 1901056382
>>1900988
От гугла насчёт SPA есть только честное слово. Другие поисковоки так и вообще в них не могут.
Аноним 04/01/21 Пнд 22:43:02 1901058383
Аноним 04/01/21 Пнд 22:43:20 1901059384
Аноним 04/01/21 Пнд 22:43:56 1901061385
Аноним 04/01/21 Пнд 22:44:16 1901062386
Аноним 04/01/21 Пнд 22:48:44 1901069387
>>1901049
Надо понимание кучи вещей, на самом деле.
Нужно бегло разбираться в JS, CSS и HTML, иметь общее представление о клиент-серверном взаимодействии, потом скурить десяток-другой мануалов по ноде. Через полгода, когда от объёма информации перестанет кружиться голова, можно сесть и сделать мультиплеерные крестики-нолики за пару часов.
Аноним 04/01/21 Пнд 22:57:22 1901082388
>>1901069
а игровое поле рисовать в граф редакторе?
Аноним 04/01/21 Пнд 22:59:27 1901084389
>>1897984 (OP)
как использовать jquery в скрипте? require(jquery) не работает
Аноним 04/01/21 Пнд 23:01:23 1901088390
>>1901084
>как использовать jquery
Не использовать
Аноним 04/01/21 Пнд 23:03:42 1901091391
>>1901088
я с твоей девушкой тоже не использую
Аноним 04/01/21 Пнд 23:22:06 1901102392
>>1897984 (OP)
есть html страница ИЗ ФАЙЛА, как использовать на неё jquery без всяких иньекций?
Аноним 04/01/21 Пнд 23:25:47 1901104393
>>1901102
Никак. HTML это просто текст, а jQuery работает с DOM, ему нужно браузерное окружение.
Аноним 04/01/21 Пнд 23:29:18 1901106394
>>1901104
как взять DOM из puppeteer
Аноним 04/01/21 Пнд 23:30:27 1901108395
>>1901102
Что значит "на неё"?
В ней?
Через тэг:

<script src="jquery.js"></script>

Файл jquery.js надо скачать с сайта jquery и поместить в тот же каталог, где страница.
Аноним 04/01/21 Пнд 23:31:22 1901109396
Аноним 04/01/21 Пнд 23:31:47 1901110397
>>1901106
Ты опять выходишь на связь?
Что ты хочешь получить в итоге?
С какой целью ты всё это делаешь?
Аноним 04/01/21 Пнд 23:33:26 1901112398
1smp5QQVnZU-Zcs[...].jpeg 63Кб, 709x765
709x765
Аноним 04/01/21 Пнд 23:36:23 1901114399
>>1901112
Ты хочешь странного
Аноним 04/01/21 Пнд 23:41:30 1901119400
>>1901112
Ну, кто-то здесь точно кого-то троллит.

>>1901114
Он просто пиздюлей хочет, мне кажется.
Аноним 04/01/21 Пнд 23:42:42 1901121401
>>1901082
Игровое поле - 9 дивов, вложенных в десятый.
Аноним 04/01/21 Пнд 23:43:17 1901123402
>>1901084
Зачем тебе жиквери в нодовском окружении?
Аноним 04/01/21 Пнд 23:46:24 1901124403
>>1901123
Он хочет лазить по дереву - >>1900630
Такой способ - >>1900635 - его не устраивает.
querySelector в jsdom работает как-то через жопу.
Теперь он, похоже, решил попробовать jQuery.
Конечную цель всего этого - упорно скрывает.
Аноним 04/01/21 Пнд 23:48:49 1901128404
79a90b65fc9478b[...].jpg 30Кб, 500x312
500x312
>>1901123
>>1901119
>>1901114
Задача поставлена четко и ясно, взять динамическую страницу паппетиром, парсить jquery что непонятного.

сделал костылем с jsdom
const { JSDOM } = require( "jsdom" );
const { window } = new JSDOM( "" );
const $ = require( "jquery" )( window );
const puppeteer = require('puppeteer')

вариант н2
await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.2.1.min.js'});

Больше не гуглится
Аноним 04/01/21 Пнд 23:51:05 1901129405
>>1901124
querySelector работает нормально. Но jsdom не дал мне динам страницу
Аноним 04/01/21 Пнд 23:51:30 1901130406
14432589708860.jpg 25Кб, 457x480
457x480
Аноним 04/01/21 Пнд 23:57:31 1901134407
>>1901128
Если ты не троллишь, то, тебе надо научиться связно излагать свои мысли.
Потому, что если ты даже этого не можешь, то, как ты сможешь написать программу?
Что такое "динамическая страница"?
Где её нужно взять?
И т.д. И т.п.

Если же ты троллишь, то тебе просто надо сходить на хуй.
Это, обычно, помогает.
Аноним 04/01/21 Пнд 23:59:29 1901137408
Аноним 05/01/21 Втр 00:09:38 1901140409
>>1901137
Похоже, тебя больше устраивает опция 2 из поста >>1901134
Я правильно понял?

Потому, что иначе непонятно, зачем ты ебёшь тут мозги.

Но, хуй с тобой, давай покормлю:
- Тебе надо настроить node как веб сервер, для отдачи статического конента. Или использовать другой веб сервер.
- Положить туда свой html.
- Добиться того, чтобы он открывался оттуда браузером.
- Использовать куклоёба кукловода вместо браузера. Как это сделать - почитать в гугле.
Аноним 05/01/21 Втр 00:15:37 1901143410
>>1901128
Зачем тебе парсить жиквери? Паппетир может лазить по дому без всяких писечек.
Аноним 05/01/21 Втр 00:29:05 1901147411
>>1901140
>>1901143
Подожду, пока кто-то более шаристый ответит.
Аноним 05/01/21 Втр 01:38:45 1901171412
>>1900791
Учи матчасть, ебанарот
Аноним 05/01/21 Втр 01:53:19 1901179413
Аноны, пишу небольшую апиху и столкнулся с проблемой. Есть бд, в ней условная таблица Парикмахеры связана с таблицей Записи. У каждого парикмахера определено рабочее время в виде промежутка, время на одного клиента, время на отдых.
У каждой записи есть собственно время записи - промежуток между начальным временем и конечным, то есть начальное время(то на которое клиент назначил запись) + время на одного клиента + время на отдых.

Апиха позволяет создать запись с выбранным парикмахером, если время записи входит в промежуток рабочего времени, и не пересекается по времени с другими записями, то все ок.

Появилась потребность отфильтровать парикмахеров по фильтру "свободен сегодня". То есть взять каждого парикмахера, посмотреть его записи, и если есть время еще хотя бы для одной записи, то пометить этого парикмахера как "свободен сегодня".
Но как перебрать все записи?
То есть надо как-то по порядку взять промежутки для каждой записи в виде "конечное время предыдущей записи - начальное время следующей записи" и вернуть парикмахера, у которого хотя бы один промежуток может вместить время новой записи - промежуток между начальным временем и конечным.

Использую библиотеку Luxon, там промежутки очень легко сравнивать методом Inetrval().contains()
Но как это сделать с помощью цикла для каждой записи у всех парикмахеров?
Аноним 05/01/21 Втр 02:34:57 1901199414
Аноним 05/01/21 Втр 02:35:14 1901200415
>>1901179
Отсортируй список, сделай как нибудь pairwise чтобы из [A,B,C] получилось [(A,B), (B,C)], потом мапишь в {endFirst, startSecond}, потом фильтруешь по duration >= X

Или напиши функцию, которая пилит один интервал другим, а потом appointments.reduce((freeIntervals, a) => freeIntervals.flatMap(x => split(x, a)), [worktimeInterval])
Аноним 05/01/21 Втр 02:47:46 1901213416
>>1901179
Если ты собрался парикмахеров и их записи руками перебирать и тебе абсолютно похуй на перформанс, то это просто sort на массиве с записями и потом проход по этому массиву с ужасным мутабельным прерываемым циклом, который будет проверять промежуток между концом предыдущей записи и началом следующей на наличие свободного окна, строчек в 10 чистого, читабельного и быстрого жопоскрипта уложишься, в отличие от функционального шизика >>1901200

Если же ты хочешь сделать нормально, через один запрос к своей реляционной БД, то без хеви рефакторинга не обойтись, надо менять таблицу записей на таблицу "рабочее время", которая будет включать в себя и записи, и свободное время(которое тебе так же придется добавлять каждом парикмахеру на каждый рабочий день, менять при добавлении записи и т.д).
Аноним 05/01/21 Втр 03:06:43 1901223417
>>1901213
>менять при добавлении записи и т.д
Нормально ты придумал вычисляемые поля считать руками и хранить в бд. Хоть бы materialized view предложил
Аноним 05/01/21 Втр 03:19:25 1901228418
>>1901223
Это не вычисляемые поля, это структура рабочего дня, которая может меняться как угодно в течение каждого отдельно взятого дня(отменили запись, добавили запись, время освободилось, рабочий день короче из-за выходных, и т.д), и каждое из этих изменений должно отображаться и учитываться при поиске. Как ты собрался это делать, кроме как руками и в БД?
Аноним 05/01/21 Втр 03:34:12 1901232419
Хочу сделать квест гейм онли с кнопками. Встал вопрос. Как сделать, чтобы при нажатии нескольких кнопок в игре игроком они добавлялись в массив? Например есть 4 кнопки и пользователь активировал две из четырех и надо чтобы эти две кнопки добавились в массив, которые выполняли бы дальнейшие функции
Аноним 05/01/21 Втр 03:34:23 1901233420
>>1901228
Свободное время - это интервалы рабочего времени без записей, считается где угодно, как в бд, так и не в бд.
Рабочее время на каждый день хранить тоже пушка, рабочее время на конкретный день считается из расписания (рабочие дни, 2 через 2 и т.д.) плюс всякие ограничения типа производственного календаря, больничных, отпусков и отгулов.
Хранить надо то что накликал пользователь - записи, и то накликал хозяин - расписание.
Если хочется пооптимизировать - вьюшечки и кэшики, а не усложнять все остальные операции ради ускорения обной
Аноним 05/01/21 Втр 03:59:39 1901244421
>>1901232
Вешаешь на эти кнопки клик эвенты и внутри колбэка можешь хоть свою мамашу в массив положить.
Аноним 05/01/21 Втр 04:43:07 1901253422
ну что потомки, разобрались как переменную объявить в жс?
Аноним 05/01/21 Втр 04:57:14 1901254423
>>1901253
<script>
var name = "ti hui ego eris"
</script>
Аноним 05/01/21 Втр 08:41:46 1901284424
>>1901199
тайпскрипт для тех, кому граблей коффискрипта показалось мало.

уже сейчас есть proposal для опциональных типов в стандарте. когда примут, будете обратно переписывать свою кодобазу с тайпскрипта на ваниллу.
Аноним 05/01/21 Втр 08:54:19 1901285425
Аноним 05/01/21 Втр 08:59:36 1901286426
>>1901285
затем что представь, что у тебя был бы сейчас хотя бы мегабайт кода на коффискрипте.
а он сейчас есть у тех, кто в 2015-ом не избавился от него, пока ещё на hh водились коффискриптеры.
Аноним 05/01/21 Втр 09:10:16 1901289427
>>1901286
Давай еще про wa задвинь че нибудь, по итогу пук среньк как писали на js/ts так и будут дальше
Аноним 05/01/21 Втр 09:28:05 1901292428
Аноним 05/01/21 Втр 11:10:12 1901329429
>>1901284
...
Ты же понимаешь что статическая типизация оберегает от описок и ошибок на стадии компиляции кода?
или не понимаешь?
Аноним 05/01/21 Втр 11:11:38 1901330430
>>1897984 (OP)
Анонасы, как написать функцию

>new Xyeta().add(1, 2, 3).add(11).add(12).add(55555)

add может складывать все это в массив, не суть важно.
Аноним 05/01/21 Втр 11:16:49 1901331431
>>1901330
...
То есть блять добавить массив значений для единого вызова метода add "никрута"? Или же если мы вынуждены будем между ними засунуть другие операция с инстансом Xyeta то цикл for это тоже "никрута"?
ФПшники, вы там совсем ебанулись?
Аноним 05/01/21 Втр 11:23:42 1901335432
>>1901330
class Adder {
value = [];

add(...nums) {
this.value = [...this.value, ...nums];

return this;
}
}
Аноним 05/01/21 Втр 11:26:55 1901336433
Аноним 05/01/21 Втр 11:26:57 1901337434
111.jpg 26Кб, 400x317
400x317
Аноним 05/01/21 Втр 11:29:10 1901338435
>>1901335
>>1901337
Спс, так же пытался, только без возвращения this и нихуя не работало.
А зачем this возвращать, может кто объяснить?
Аноним 05/01/21 Втр 11:30:00 1901339436
>>1901338
Чтобы можно было вызвать add, очевидно.
Аноним 05/01/21 Втр 11:30:53 1901340437
>>1901339
Это понятно. На что this будет указывать?
Аноним 05/01/21 Втр 11:31:44 1901341438
>>1901340
На тот же инстанс класса Adder, очевидно
Аноним 05/01/21 Втр 11:37:14 1901344439
Аноним 05/01/21 Втр 11:38:39 1901345440
>>1901340
На объект перед точкой.
Аноним 05/01/21 Втр 11:40:18 1901346441
>>1901340
На контекст, в котором вызван add(). В общем случае на объект Adder, у которого есть свой add(), по-этому на результате выполнения add() можно сделать add()
Аноним 05/01/21 Втр 11:44:35 1901348442
>>1901335
но ведь так `...this.value` при каждом вызове метода будет создавать копию массива, а там четыре миллиона элементов
Аноним 05/01/21 Втр 11:46:31 1901350443
>>1901348
Если новый референс не нужен, то можно и пушить, я не пурист в этом плане
Аноним 05/01/21 Втр 12:09:13 1901367444
>>1901233
>рабочее время на конкретный день считается из расписания
Необязательно, расписание не всегда фиксированное и может меняться для каждого работника(ушел раньше, пришел позже), плюс изначально задача стоит как "найти всех работников, у которых в выбранный день есть свободный интервал рабочего времени в n часов". Как ты собрался это делать одним запросом(подразумеваем sql-базу), без перебора каждого работника вручную, если все, что у тебя в базе есть - это записи клиентов, я представить не могу.
Аноним 05/01/21 Втр 12:13:04 1901374445
>>1901329
Не оберегает, это как прикладывать подорожник к перелому. Если у тебя нет правильного метода написания и валидации кода TDD, то хоть типизируй, хоть не типизируй, баги, рантайм ошибки и прочее-прочее будет без вариантов. А если правильный метод есть, то типизация отпадает за ненадобностью.
Аноним 05/01/21 Втр 12:17:06 1901377446
>>1901374
>типизация отпадает за ненадобностью
В проектах уровня "змейка", "калькулятор" или "маня -CRUD"

Поработал бы хоть в одном крупном проекте, такой херни никогда б не спизданул
Аноним 05/01/21 Втр 12:18:50 1901380447
>>1901377
>ad hominem пук
Возвращайся, когда научишься аргументировать свою позицию, а не просто пукать, сопляк.
Аноним 05/01/21 Втр 12:19:50 1901383448
>>1901380
Недоросль, пиздуй-ка на кухню, твоя маман уже зовет борща навернуть
Аноним 05/01/21 Втр 12:21:49 1901386449
Аноним 05/01/21 Втр 12:26:34 1901390450
Бля ребятишки помогите с вебпаком. Есть две папки client server, сервер собирается tsconfig-ом и запускается нодемоном, client собирается через жопу вебпак в папку дист и нихуя не работает, те запросы не проксируются на сервер, хотя в режиме dev все работает через девсервер
Аноним 05/01/21 Втр 12:28:16 1901391451
>>1901380
Но он прав, а пукаешь ты.
Аноним 05/01/21 Втр 12:34:35 1901396452
>>1901377
Ох уж эти "крупные проекты", возможные только на типизированных языках. На руби и питоне-то отродясь ничего крупного не писали, а если писали, то сразу умирали в агонии потому что типов нет и поддерживать нельзя только джава, сисярп и их брат-имбецил тайпскрипт.
Аноним 05/01/21 Втр 12:36:42 1901397453
На странице есть несколько изображений, все они вида <img src="https://random/Download?entityId=54654" alt="" />, атрибуты width и height не указаны.
Вопрос, можно ли получить как-то высоту и ширину изображений?
Аноним 05/01/21 Втр 12:36:51 1901398454
>>1901396
В пистоне-то как раз типы есть. Статической типизации там нет
Аноним 05/01/21 Втр 12:42:34 1901401455
>>1901398
Прямо как в жсе, охуеть, да?
Аноним 05/01/21 Втр 12:59:18 1901407456
test
Аноним 05/01/21 Втр 12:59:46 1901408457
434.png 3Кб, 414x163
414x163
>>1901330
> чейнинг
как там в 2012, конец света наступил?
теперь в моде функциональный стиль:
Аноним 05/01/21 Втр 13:12:46 1901417458
Аноним 05/01/21 Втр 13:26:20 1901431459
>>1901417
void, кстати, получил второе дыхание с введением стрелочных функций. Когда не хочется писать лишние скобки и хочется избежать возврата чего попало, поможет void.
Аноним 05/01/21 Втр 13:53:49 1901445460
>>1901386
Где можно почитать про $ и $$ нотацию?
Аноним 05/01/21 Втр 13:56:21 1901446461
>>1901408
Зачем ты создал объект, который сразу выбросил? Чтобы засрать память и добавить работы сборщику мусора*
Аноним 05/01/21 Втр 13:56:45 1901447462
игры в Вконтакте на чем пишут?
Аноним 05/01/21 Втр 14:20:29 1901460463
Аноним 05/01/21 Втр 14:27:34 1901471464
>>1901460
А всякие иксбэты джойказино и прочая ебала?
Аноним 05/01/21 Втр 14:30:40 1901477465
>>1901471
На срякте наверняка.
Аноним 05/01/21 Втр 14:36:31 1901484466
>>1901460
так он помер в прошлом году...
а дальше на чем писать будут?
Аноним 05/01/21 Втр 15:03:29 1901504467
16011320437830.png 7Кб, 810x84
810x84
Аноним 05/01/21 Втр 15:10:35 1901510468
Аноним 05/01/21 Втр 15:19:42 1901517469
16060938858540.png 273Кб, 720x583
720x583
Аноним 05/01/21 Втр 15:44:33 1901538470
111.png 17Кб, 760x300
760x300
как вам эмуляция php-массива?
Аноним 05/01/21 Втр 15:58:43 1901560471
>>1901538
Говно собачье, еще и не работающее.
Положи в свой массив другой массив, или ссылку на массив или объект.
Аноним 05/01/21 Втр 16:07:02 1901578472
>>1901560
всё работает не пизди
Аноним 05/01/21 Втр 16:07:40 1901579473
Docker compose -d
Аноним 05/01/21 Втр 16:30:41 1901609474
Аноним 05/01/21 Втр 16:43:56 1901616475
>>1901517
На пике типичный тайпскриптер
Аноним 05/01/21 Втр 16:49:35 1901619476
до какого объёма либа считается лайтвеигхт? вон threejs полмегабайта, а тоже лайтвеигхт, судя по их вики
Аноним 05/01/21 Втр 17:23:28 1901672477
>>1901619
Зависит от предназначения. Для 3d библиотеки полмегабайта это действительно лайгтвейт.
Аноним 05/01/21 Втр 19:06:22 1901782478
Хотел заюзать геттеры и сеттеры, но смутно помнил про них что-то плохое. Проверил — и верно: они очень медленные. В тысячи раз медленнее вызова функции и в десятки тысяч раз медленнее обычного доступа к полю. Выглядит как баг, если честно.
Аноним 05/01/21 Втр 19:11:01 1901786479
Кто-нибудь может у себя провести тест? Я хз, может у меня жыт их не обрабатывает или оперативка кончается. Откуда такой разрыв.
Аноним 05/01/21 Втр 19:21:22 1901797480
>>1901782
Выглядит как шиза долбоеба который ожидает от JS производительности.
Аноним 05/01/21 Втр 19:32:33 1901811481
image.png 28Кб, 496x540
496x540
Аноним 05/01/21 Втр 19:35:18 1901815482
>>1901811
>тест
>консоль браузера

Я думал дебилы уже вымерли, а нет, еще ты остался.
Аноним 05/01/21 Втр 19:46:53 1901831483
>>1901811
А ретурн у setv зачем?
В общем, разрыв тоже в разы, хоть и меньше моего.
Аноним 05/01/21 Втр 19:51:39 1901834484
>>1901831
>А ретурн у setv зачем?
Потому что операция присвоения возвращает результат присвоения.
Аноним 05/01/21 Втр 19:56:05 1901836485
>>1901786
И что же ты ожидаешь от жита? По сути вызываешь произвольные функции с произвольными данными, так что интерпретатору приходиться пердеть с угадыванием и приведением типов. Это тебе не жава-хуява, с компилятором не получится поиграться.
Аноним 05/01/21 Втр 19:59:11 1901837486
>>1901836
Не произвольными. Жит умеет оптимизировать функции до 4 разных типов входящих параметров. Если тип вообще не меняется, то функция мономорфна и оптимизируется на раз.

Проседание в скорости вовсе не поэтому, а потому что алгоритм прямого доступа к полю, вызова метода и геттера сильно различен.

Аноним 05/01/21 Втр 20:23:47 1901849487
>>1901837
>Жит умеет оптимизировать функции до 4 разных типов входящих параметров.
Это ты про какой движок и какой версии?
Аноним 05/01/21 Втр 20:31:54 1901857488
>>1901849
В v8 spidermonkey и jscore это так и последние 6 лет ничего не меняется
Аноним 05/01/21 Втр 21:13:46 1901897489
>Ученые осуществили квантовую телепортацию на 44 км

Страницы теперь будут загружаться моментально?
Аноним 05/01/21 Втр 21:14:59 1901898490
>>1901897
Исследователям удалось передать квантовое состояние на 44 км с точностью более 90% по волоконно-оптическим сетям, аналогичным тем, которые составляют основу существующего интернета.
Аноним 05/01/21 Втр 21:19:31 1901906491
>>1901898
>квантовое состояние
>с точностью более 90%
То есть проебали его.
Аноним 05/01/21 Втр 21:33:52 1901927492
В общем, делаю хартстоуноподобную игру на ноде, существа наследуют от класса EventEmitter и обмениваются событиями при взаимодействии. Система получилась гибкой и работала успешно, пока это дело не разрослось и я не столкнулся с круговыми зависимостями, приводящими к бесконечному стэку колбеков (у меня проблемы бесконечного стэка нет, т.к. колбеки асинхронные, но один хрен игра застревает на каком-нибудь циклическом взаимодействии).
Простой пример: у мечников есть способность контратаковать врага, если враг промахнулся. Если раскачать уворот двум мечникам до небес, и направить одного на другого, они будут махаться до бесконечности, и ход никогда не завершится.
Можно, конечно, поставить кап на максимальный уворот и так далее, но это всё полумеры, и при разрастании проекта такие зацикливания будут неизбежны.
Хотелось бы придумать какое-нибудь архитектурное решение.
Аноним 05/01/21 Втр 21:39:23 1901931493
>>1901906
Кот Шредингера остался без хвоста
Аноним 05/01/21 Втр 21:42:09 1901933494
>>1901927
Ограничивать пропагацию события?
Аноним 05/01/21 Втр 21:52:28 1901941495
>>1901927
Так надо было сразу разделять атаку и контратаку, как стадии боя или механически, и соответсвенно мечники контратакуют если атака противника промахнулась. Это даже не программирование, а уровень гейм дизайна.
Аноним 05/01/21 Втр 21:55:32 1901943496
>>1901941
Да я там явно переборщил с гибкостью. С мечниками ещё относительно простой пример. А что, если у игрока есть артефакт, который повышает атаку всем существам со защитой меньше X, и есть существо, чья защита повышается пропорционально его атаке.
Всё, бесконечная гонка обсерверов.
Это действительно больше вопрос геймдизайна.
Аноним 05/01/21 Втр 22:04:05 1901954497
>>1901943я.
1) Ввести две "мировые константы" в игре: коэфициент затухания ε воздействия и порог срабатывания воздействия F.
2) В кажом событии передовать параметр А - силу воздействия
3) Событие распостряняется на следующий объект с силой М = ε * A
4) Если М < F то собыите не срабатывает и не распостраняется дальше.
Аноним 05/01/21 Втр 22:08:32 1901958498
Аноним 05/01/21 Втр 22:09:58 1901959499
>>1901954
Проще уж ввести лимит срабатываний на каждый обсервящий события колбек. Счётчик будет обнуляться каждый раз, когда "ход обсчитан".
Аноним 05/01/21 Втр 22:15:58 1901961500
>>1901943
>А что, если у игрока есть артефакт, который повышает атаку всем существам со защитой меньше X, и есть существо, чья защита повышается пропорционально его атаке.
И схуев ли тут бесконечная рекурсия? Даже если ты накриворучил, что у тебя артефакт какого-то хуя бафает существ при каждом изменении их защиты, а не работает как аура или одноразовый бафф, то он все равно должен останавливаться, когда защита превышает X.
>>1901954
Охуенно наверное переизобретать stack depth limit, да еще и вставлять его прямо в механику игры, потому что не смог поправить бесконечную рекурсию, 10/10 идея.
Аноним 05/01/21 Втр 22:17:01 1901962501
>>1901959
Может потом захочется сделать А вектором (разные параметры эффекта), M и F - нормой, а ε матрицей
Аноним 05/01/21 Втр 22:20:05 1901963502
>>1901961
Я как раз не предалагаю stack depth limit, а советую тоже самое что и ты, только более формально описав.
Аноним 05/01/21 Втр 22:23:57 1901964503
>>1901961
Артефакт следит за защитой существ, и когда она меньше 10, даёт существу +5 атаки.
Существо изначально обладает атакой 7 и способностью "защита этого существа всегда равна его атаке".
Артефакт повышает атаку --> Существо повышает защиту --> Артефакт убирает повышение атаки --> Существо понижает защиту --> начинай сначала
Аноним 05/01/21 Втр 22:29:02 1901966504
>>1901963
Нет, ты советуешь именно глобальный костыль для остановки рекурсии, когда она превышает некий порог. Это самый что ни на есть лимит стека.
Аноним 05/01/21 Втр 22:29:26 1901968505
>>1901964
Тут вообще непонятно, что должно получиться в итоге.
Аноним 05/01/21 Втр 22:30:36 1901969506
>>1901964
А как оно должно работать-то?

Ты в MTG играл? Раздели статические эффекты на слои и применяй их в сторого обозначенном порядке. Более верхний слой не может влиять не предыдущий.
Аноним 05/01/21 Втр 22:32:44 1901970507
>>1901969
>Раздели статические эффекты на слои и применяй их в сторого обозначенном порядке. Более верхний слой не может влиять не предыдущий.
Не очень понимаю, как это.
Аноним 05/01/21 Втр 22:48:46 1901990508
>>1901966
Ну так не только это, какая то разумная модель должна быть. Нельзя же было просто унаследоваться от EventEmitter и айда логику писать, уникальную в каждом методе.
Аноним 05/01/21 Втр 22:57:07 1902000509
>>1901990
Ни в каком виде это разумной моделью быть не может, потому что рекурсия в твоей программе возникать не должна в принципе, если она возникает, то это баг, и баги правят только там, где они возникли, а не глобальными костылями.
Аноним 05/01/21 Втр 22:57:23 1902001510
>>1901970
Разберу на примере атаки/защиты (опять же, как оно в MTG). Там порядок такой:

1. Изначальная атака/защита
2. Эффекты, которые устанавливают атаку/защиту в конкретное значение
3. Эффекты, которые добавляют или удаляют атаку/защиту
4. Эффекты, которые меняют атаку и защиту местами

>Артефакт следит за защитой существ, и когда она меньше 10, даёт существу +5 атаки.
>Существо изначально обладает атакой 7 и способностью "защита этого существа всегда равна его атаке".

1. Изначальная атака 7
2. Установлена защита 7
3. Атака модифицирована до 12
4. ...

Итого — существо 12/7.

Ну а дальше уже меняй систему как тебе надо.
Аноним 05/01/21 Втр 23:04:26 1902008511
>>1902001
>1. Изначальная атака 7
>2. Установлена защита 7
>3. Атака модифицирована до 12
>4. ...
>
>Итого — существо 12/7.

Какая-то фигня. Если я напою существо эликсиром на +10 атаки, то защита у него тоже не возрастёт, и мне придётся долго растолковывать игрокам, почему так получилось.
Аноним 05/01/21 Втр 23:04:45 1902009512
>>1902000
Да я предложил не бороться с рекурсией, а модель похожую на физическую. В природе тоже рассеяние есть, трение из-за чего упавший мячик не скачет как маятник. В модели А может быть векором эффектов воздействия, М нормой ε как матрицей так и числом.
Аноним 05/01/21 Втр 23:08:13 1902011513
>>1902009
Ну то есть два мечника устанут молотить друг друга - и поэтому другие существа даже не походят.
Аноним 05/01/21 Втр 23:08:57 1902012514
>>1902008
>Какая-то фигня. Если я напою существо эликсиром на +10 атаки, то защита у него тоже не возрастёт, и мне придётся долго растолковывать игрокам, почему так получилось.
Блэт, я же тебе написал, что это только принцип. Ты можешь поменять слои 2 и 3 местами. Или придумывать менее всратые абилки, которые не взрывают мозг игроками и взаимодействуют более очевидным образом.
Аноним 05/01/21 Втр 23:10:35 1902013515
>>1902011
Там одно событие на всю игру и есть объект бог, который это одно событие создает ?
Аноним 05/01/21 Втр 23:14:06 1902016516
>>1902013
Если там turn based рогалик, то зачем вообще геморой с событиями было создавать?
Аноним 05/01/21 Втр 23:22:11 1902024517
>>1902009
Этим методом ты прежде всего пытаешься бороться именно с нежелательной рекурсией и ни с чем другим. И в карточной игре должны быть строгие правила а не костыльное "затухание", которое хуй знает как работает и на каких комбинациях карт.
Аноним 05/01/21 Втр 23:22:50 1902025518
>>1902016
Потому что блин это там самое прикольное: ты приказываешь атаковать, а на поле секунд десять происходит всякая дичь, потому что у одного сработал триггер на уворот и контрудар, у второго на "прикрыть союзника", у третьего ещё на что-то.
Аноним 05/01/21 Втр 23:23:19 1902026519
>>1902024
>И в карточной игре должны быть строгие правила а не костыльное "затухание"
То-то в харстоуне тупо лимит на стек из 50 событий.
Аноним 05/01/21 Втр 23:27:30 1902028520
>>1902026
Если ты основываешь свою игру на ебаном херстоуне, написанном индусами, о ебанутых багах, костылях и кривых механиках которого слышал даже не игравший в него человек, то земля тебе пухом.
Аноним 05/01/21 Втр 23:30:02 1902034521
>>1902026
Не говоря уже про то, что у даже у них хватило ума не делать "мамяумный у меня динамический коэфицент затухания рекурсии", а просто ебануть хард лимит на действия.
Аноним 06/01/21 Срд 06:17:56 1902221522
Попробовал я ваш реакт, написал пару тудушек, новостную ленту с монго сервером и самой серверной частью на ноде, че лучше поюзать дальше ангулар или вью?
Аноним 06/01/21 Срд 07:03:31 1902225523
Аноним 06/01/21 Срд 08:30:50 1902240524
>>1902221
И то, и то параша. Делать интерфейсы — самое дно для программиста.
Аноним 06/01/21 Срд 09:01:25 1902247525
>>1902240
А кто тебе сказал что это програмирование?
Аноним 06/01/21 Срд 09:13:15 1902250526
>>1902240
>Делать интерфейсы — самое дно для программиста.
Абсолютно всё пррграмиирование заключается в том, чтобы делать интерфейсы
Аноним 06/01/21 Срд 09:14:02 1902251527
>>1902250
> мам смари как я пошутил
Аноним 06/01/21 Срд 09:32:06 1902257528
Аноним 06/01/21 Срд 09:37:25 1902258529
>>1902257
значит это тупость
Аноним 06/01/21 Срд 09:58:56 1902265530
Аноним 06/01/21 Срд 10:15:17 1902272531
Как вообще дебажат ноду?
У меня сейчас вот сервер тупо встал: ошибок в консоли нет, процесс запущен, при этом сервер не реагирует на запросы, будто ушёл в бесконечный цикл.
Аноним 06/01/21 Срд 10:17:17 1902273532
>>1902272
прикол: нажал в консоли Ctrl+C, и сервер возобновил работу, будто был на паузе. что за дерьмо?
Аноним 06/01/21 Срд 10:56:34 1902286533
>>1902272
>вообще дебажат
console.log
Аноним 06/01/21 Срд 12:01:23 1902323534
Аноним 06/01/21 Срд 17:18:26 1902763535
>>1901927
Мне пришла в голову дерзкая идея, как всё упростить.
Что, если показывать игрокам не актуальные статы существ, а статы на момент последнего вычисления? Учитывая, что вычисление статов на сервере происходит по требованию, получается простая логика: игрок не знает урон существа, пока это существо никого не ударило. Игрок не знает броню существа, пока это существо не получило удар. И так далее.
Это снимает целый пласт проблем с поддержанием кучи параметров в актуальном состоянии, а также добавляет в игру элемент эксплора, кек.
Аноним 06/01/21 Срд 17:53:10 1902830536
>>1902273
Если с cmd из винды, то ты наверняка выделил текст в консоли, а это замораживает любой процесс. Ctrl+C отменяет выделение.
Аноним 06/01/21 Срд 18:54:37 1902934537
>>1902830
Да, действительно, скорее всего так и было.
Аноним 07/01/21 Чтв 02:47:55 1903308538
>>1902272
Как минимум в вс код есть дебаггер и в принципе у ноды есть какие-то выходы для дебага. Но анон выше правильно сказал, единственное, что намертво замораживает процесс - это такое выделение в консоли.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов