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


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
649 45 137

JavaScript.thread = Number(`135`); /js/ Аноним 23/06/19 Вск 17:44:14 14209861
15592690145450.png (61Кб, 1050x1050)
1050x1050
Прошлый тред: >>1409651 (OP) (OP)

НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Для программирования на ХТМЛ https://codepen.io/pen/
Для Ноды с консолькой https://repl.it/languages/nodejs
Для фреймворков https://codesandbox.io/
Залить, задеплоить страничку, сервер, контейнер https://zeit.co/now

Аноны, хочу получить советов мудрых, высераю пару предложений и код на скриншоте, а получаю смехуёчки. Как быть?

Если рассчитываешь получить дельный ответ, формулируй правильно вопрос:

У меня есть проблема\задача (А) %текст-ошибки или задача%. Я пытался решить ее так %кусок-кода-опционально% (Б), у меня не вышло %текст-ошибки%. Я погуглил, почитал документацию и попробовал сделать так %кусок-кода-%(В), но получаю ошибку (Г).


Сделай песочницу по ссылкам выше для ясности и удобства. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Аноним 23/06/19 Вск 17:45:49 14209892
Аноним 23/06/19 Вск 20:50:17 14211193
Кто-нибудь может в внутреннее устройство V8 в Node.JS а именно про мапы(?) объектов?
Которые %HaveSameMap() с флагом --allow-natives-syntax
У меня вопрос, на который я не могу найти ответ.
Аноним 23/06/19 Вск 21:53:27 14212124
>>1421119
Кто-нибудь может. Вопрос-то какой?
Аноним 23/06/19 Вск 22:49:46 14212565
Аноним 23/06/19 Вск 23:04:51 14212646
изображение.png (17Кб, 870x353)
870x353
изображение.png (19Кб, 902x391)
902x391
>>1421212
https://pastebin.com/raw/JqqF4j2g
Какого хера %HaveSameMap(user1, user4); = FALSE
User() меняется в памяти что ли когда я создаю "user3"?
И после этого "user4" уже создан не из того "new User()" который был в начале, а это уже другой "new User()"?
Аноним 23/06/19 Вск 23:24:30 14212737
image.png (15Кб, 519x166)
519x166
>>1421264
У тебя hidden class поменялся, потому что ты типы свойств поменял.
Пик немного релейтед
Аноним 23/06/19 Вск 23:55:17 14212868
изображение.png (2Кб, 243x96)
243x96
изображение.png (2Кб, 236x104)
236x104
>>1421264
Всё, мне подсказали. user1 остался с старым map, потому что его никто не трогает. Как только меняешь какое-то свойство, то он сразу становится равен user4. Пикрелейтед.
Правда я так и не понял как JIT отреагирует на это.
Получается он будет считать user1 и user4 разными типами пока я не внесу изменения в user1?

А, бля. Он изменится даже если прочитаешь из него что-нибудь.
Хорошо сделали! Маладца!

>>1421273
У меня user1 и user4 полностью одинаковые. А у тебя на пике разные.
Аноним 24/06/19 Пнд 04:37:01 14213239
JS «программирование» vs. 1C «программирование».

JS:
Плюсы:
Высокая зп на поздних этапах.
Большое количество технологий, откуда следует возможность выбора
Возможна интересная разработка.
С макаками работать куда лучше, чем с бабками, хотя...
Среда разработки.
Развитие языка.
В будущем возможна смена деятельности(например бэк).
И конечно же возможность написать свою социальную сеть как Павел Дуров и разбогатеть.

Минусы:
С сегодняшним стэком технологий очень высокий порог вхождения.
Огромная конкуренция.
Очень маленькая зп на ранних этапах.
Новые фичи, стандарты, фреймворки и библиотеки, которые надо учить.
Обязательный английский язык на уровне чтения технической документации(а в современных реалиях уже и этого недостаточно).
Все новые и не только технологии на английском, отсюда, если ты не думаешь на нем, то будешь постоянно перегорать еще на этапах обучения.
Не подходит для хикки.
Постоянные насмешки от богов С++.
Рынок фриланса закрыт для начинающих(за 6 месяцев обучения ты так и будешь сосать лапу).

1С:
Плюсы:
Высокая зп на поздних этапах.
Достаточная(дошик) зп на самых ранних этапах.
Все обучение на русском
Разработка на родном языке, отсюда, порог вхождения ниже.
Сочные милфы 45+ всегда в твоем поле зрения.
Востребованность на рынке труда.

Минусы:
Работа с быдлом, овуляхами и прочим скамом.
Сильное эмоциональное напряжение исходя из первого пункта.
Среда разработки ограничивается продуктами 1с.
* Невозможность относительно быстрой смены языка.


Кто что думает из вышеизложенного?

Мимо вкатываюсь. Изучая js пришел к такому выводу, что либо ты знаешь английский и изначально обучаешься с настроем того, что ты заведешь трактор. В противном случае твоя работа будет в рф со всеми вытекающими, отсюда встал вопрос: если изначальная цель деньги и относительно достойная жизнь, то зачем выбирать между говном и мочей, когда очевидный выбор это моча?

Но так же стоит отметить, что сам js, судя по ранним этапам обучения мне очень нравится и вызывает интерес, но потом приходит понимание, что возможно всё в пустую, а не хотелось бы тратить уйму времени в никуда.




24/06/19 Пнд 05:12:23 142132610
зачем еще один тред номер 135 когда предыдущий тред номер 150 еще далеко до бамплимита
24/06/19 Пнд 05:15:48 142132711
*номер 135
Аноним 24/06/19 Пнд 08:58:12 142135612
>>1421323
>а не хотелось бы тратить уйму времени в никуда
Что значит "тратить уйму времени в никуда". Программирование - это жизнь, это то,чем ты занимаешься ради собственного удовольствия. Ты выбираешь направление, выбираешь стек по душе и кайфуешь. Ты же не жалуешься, что тратишь время в никуда, когда смотришь сирялы, играешь в игры или дергаешь свой пиструн? Работа для программиста - это просто денежное вознаграждение его интересов и образа жизни. Если ты сюда пришел просто срубить бабла, то тебе тут не место. Ну или пробуй в php вкатиться, там таких хватает.
Аноним 24/06/19 Пнд 12:33:01 142144013
изображение.png (36Кб, 1148x228)
1148x228
>>1421286
А вот в JSC из вебкита такое не работает.
StructureID не меняется. Значит когда в объект попадает тип, который JSC не ожидает, он меняет саму структуру, а не создаёт новую как V8.
Аноним 24/06/19 Пнд 12:48:57 142145314
>>1421356
Понятно, что любого рода деятельность «это жизнь», возникает как мне кажется нормальный вопрос, как эта деятельность, в которую ты сейчас вкатываешься будет тебя обеспечивать в будущем. То, что видно сейчас так это перенасыщенность рынка JS и высокая конкуренция, отсюда постоянный рост порога вхождения, а так же тенденция к уменьшению ЗП. И из вышесказанного следует, что на данном этапе JS’а он уже не такой доступный в профессиональном плане, как ранее, сам посмотри количество резюме к количеству вакансий и увидишь, что рынок завален такими же вкатывальщиками.
Само собой можно долго кукарекать, что программирование это удовольствие, но до тех пор, пока оно в состоянии должным образом тебя обеспечивать, иначе это просто хобби, которое несет в себе сомнительную пользу, как в прочем и любая другая деятельность не приносящая дивидендов.
Конечно я не опустил руки, думаю всё же поучу JS в усиленном темпе, благо ситуация пока позволяет, но смогу ли я на за условный год изучения что-то получать, хотя бы дошик и возможность развиваться по ходу работы , учитывая, что способность к обучению у меня среднего уровня - вопрос. И это еще учитывая очень низкие скилы к изучению английского, то же чтение документации дается с трудом. Это мой главный костыль.

Отбросив маняфатназии и посмотрев на рынок пришел к выводу, что для юного или не очень вкатывальщика в ойти тот же 1с при всем говне вокруг него, будет куда лучшим выбором. И вот сижу думаю: а стоит ли тратить этот условный год на JS, когда не интересный и богомерзкий 1с, в перспективе загребания бабла на дошики, более верный вариант.

Вообще интересно, есть ли люди на позиции мидла с достойной зп, но с уровнем английского «чтение тех.документации»?
Аноним 24/06/19 Пнд 12:57:02 142145615
>>1421453
>И вот сижу думаю: а стоит ли тратить этот условный год на JS, когда не интересный и богомерзкий 1с, в перспективе загребания бабла на дошики, более верный вариант.
Послушай 30+ летнего дядю, отрок, заниматься работой, которая тебе не интересна, это ровная и быстрая дорожка к выгоранию, депресии, хроническим заболеваниям и потере вкуса к жизни.
Аноним 24/06/19 Пнд 13:23:28 142146916
>>1421456
Слушай сюда дядя, я лишь рассуждаю на перспективу и в ней «любимая работа за дошик»===«нелюбимой работе за 300кк», а JS сегодня не даст без связей не даст вкатится в норм компанию, но конечно есть вариант работать у себя в мухосране за ЗП выше средней, но тут ты стукаешься об факт того, что со временем, тебя выкинут так как галера закроется или что-то еще. И помимо всего прочего на ты будешь заябываться как черт, в таких условиях быть в тренде технологии очень трудно. По итогу будет вот что: твоя вакансия с устаревшим стэком будет весеть на всех возможных площадках, а ты сам без нужной(деньги) мотивации уже не будешь гореть изучать новый стэк, отсюда 1С(хоть и стыдно быть 1с’ником), как мне кажется, имея не самый высокий порог вхождения и «всегданужность» дает большую перспективу(деньги).
Аноним 24/06/19 Пнд 13:24:50 142147017
Аноним 24/06/19 Пнд 13:33:02 142147818
>>1421469
>JS сегодня не даст без связей не даст вкатится в норм компанию
Хуйня. Пишу либы и выкладываю на npm и github, пару раз в год пишут компании с предложениями переехать к ним в офис с блекджеком и печеньками.
Аноним 24/06/19 Пнд 13:39:11 142148119
>>1421478
Наверное ты хотел сказать пройти собеседование.
Сам то уже вкатился?
Аноним 24/06/19 Пнд 13:43:50 142148520
>>1421481
>собеседование
Когда весь твой код лежит в открытом доступе, сразу видно что ты умеешь и что знаешь.
>вкатился
Я больше для хобби. Вкатился бы, не хватало бы времени писать бесплатные либы.
Аноним 24/06/19 Пнд 13:59:17 142149021
>>1421485
А ну ясно тогда.
Тут либо ты действительно пишешь хороший код, что кто-то тебя рекомендует, либо пиздишь.
Аноним 24/06/19 Пнд 14:06:23 142149622
>>1421453
>рынок завален такими же вкатывальщиками.
Там вкатывальщики соответствующие. Практически ничего не знают и не умеют. Проходят какие-то манякурсы и думают что их с руками ногами должны брать ждунами.
>могу ли я на за условный год изучения что-то получать, хотя бы дошик и возможность развиваться по ходу работы
Выбирай PHP, там самый быстрый вкат. По ходу работы будешь подтягивать навыки или изучать другой стек если захочешь. По 1С сказать не могу, у них там своя атмосфера. В мухосрансках хорошо поднимают, есть свое комьюнити. Как вкатиться хз, знкомые вкатывались из смежных профессий туда.
Аноним 24/06/19 Пнд 14:40:44 142152023
>>1421496
На счёт первого цетирования. Я очень сомневаюсь, не уверен, что они прям настолько тупые, мне кажется тут всё же играет перенасыщенность рынка. Просто представь картину: ты такой прочитал где-то, что фронт получает 300кк, нашёл курсы по первой ссылке в гугле и решил сэкономленные деньги на поддержанный логан потратить на эти самые курсы, затем ты успешно их прошел(а как иначе?) и не сколько не сомневаясь в своих знаниях(ведь ты сделал целый интернет магазин, почти сам, по шаблону правда, но сам тыкал по кнопкам) идешь искать высокооплачиваемую работу. Ну это бред, не могут быть люди настолько тупыми.

PHP, да, выглядит перспективно в плане того, что всегда есть работа, но пока не вникал, сейчас активно JS учу.
Аноним 24/06/19 Пнд 15:20:58 142154324
>>1421520
Там дело не столько в тупости, сколько в лапше, которую им вешают курсовики (пройдешь наш крутой курс и с руками-ногами оторвут работодатели). Учти, что на курсы записывается много васянов с домохозяйками, которые не ищут инфу сами, а полагаются а авторитет тренеров из курсов
Аноним 24/06/19 Пнд 15:34:51 142155425
Так ведь на курсах ничему дальше html, css, js не учат. Дай бог если про es6 ещё расскажут немного. А самая последняя тема в жсе у них это объекты и прототипы.
Аноним 24/06/19 Пнд 15:56:25 142156326
>>1421554
Где-то учат, где-тот программа на уровни разбита, чтобы больше бабла срубить. Но это не отменяет факта, что ты нахуй никому не нужен после этих курсов и твой потолок это либо работа за ЗП выше среднего в своем мухосранске, либо везение и связи. Рынок перенасыщен и находясь на одной позиции(поиск работы) с огромным количеством юнитов, зная лишь ванилу, ES6 и фреймворк, ты не найдешь хороший оклад. Даже чтобы попасть в мелкую студию ты уже как минимум должен уметь бэк.

И вообще покупать курсы это зашквар, когда всё слито и есть возможность делать тоже самое но бесплатно.
Аноним 24/06/19 Пнд 16:11:50 142156827
>>1421563
>Рынок перенасыщен и находясь на одной позиции(поиск работы) с огромным количеством юнитов, зная лишь ванилу, ES6 и фреймворк, ты не найдешь хороший оклад.
Так это с любым языком сейчас так.
Аноним 24/06/19 Пнд 16:12:03 142156928
>>1421563
>твой потолок это либо работа за ЗП выше среднего в своем мухосранске
А это плохо для джуна вкатиться на ЗП выше среднего? Полгода поучится, а там и на мидла выйдет.

>Рынок перенасыщен
Не начинай..

>зная лишь ванилу, ES6 и фреймворк
А что еще знать надо? Я видел вакансии, где даже фреймворк не просят.

>должен уметь бэк
Ну это несложно, спасибо ноде. Если на курсах тебе пояснили за асинхронность с промисами, то быстро разберешься на базовом уровне хотя бы.

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

По-моему, проблема курсов как раз в том, что там учат события на кнопки вешать, а не программировать.
Аноним 24/06/19 Пнд 18:07:26 142161729
Господа, нахожусь в ступоре. Пробовал гуглить несколько дней, но я видимо не могу гуглу правильно сформулировать свой запрос. Вопрос достаточно простой.Есть React Redux. Есть уже отрендеренная строчка и я хочу изменить стиль (например opacity с 0 до 1 с шагом 0.25). При этом это изменение абсолютно автономное и не зависит от каких либо hover и т д. Так вот могу ли я напрямую через цикл поменять стиль, при этом не рендеря новую компоненту? Как бы я хочу как в родном JS , найти элемент нужный и дальше редактировать его стиль.

Пока что мне ничего не приходит в голову, кроме как массива 4 одинаковых блоков с измененным стилем. Но это уже выглядит
ужастно ( первое впечатление).
Аноним 24/06/19 Пнд 18:49:34 142163430
>>1421617
нани
как можно поменять стиль через джаваскрипт не рендеря компоненту, у тебя ререндер на каждое изменение
Аноним 24/06/19 Пнд 18:52:16 142163631
>>1421634
т.е. мне нужно делать массив одной и той же компоненты с разными стилями и возвращать их по очереди?
Аноним 24/06/19 Пнд 18:56:57 142163832
>>1421636
прост непонятно что ты хочешь, неудивительно что гугл не понимает тоже
Аноним 24/06/19 Пнд 19:04:43 142164433
>>1421638
вызывается на экран блок с текстом, я хочу чтобы его появление сопровождалось изменением opacity от 0 до 1. Я хочу напрямую менять стиль уже отрендеренного блока ( например было {opacity: 0} стало => {opacity: 0.25}) . Тоже самое что, я зайду в панель разработки и перепишу opacity на нужное значение.
Аноним 24/06/19 Пнд 19:38:27 142165634
>>1421644
>его появление
React transition group для этого как раз

>напрямую менять стиль уже отрендеренного блока
Ну или можешь привязать к блоку ref и сам вручную это делать.
Аноним 24/06/19 Пнд 22:46:28 142175935
Capture.PNG (38Кб, 765x767)
765x767
Бле
Поясните как в данном случае отрабатывает inBetween
Откуда она берёт этот злоебучий х?
Аноним 24/06/19 Пнд 22:49:34 142176236
Аноним 24/06/19 Пнд 22:51:25 142176537
Народ а какой прекол в этом вашем набирании кодов всяких? Зойчем вы етим занимаетесь?
Аноним 24/06/19 Пнд 23:02:17 142177238
Аноним 24/06/19 Пнд 23:06:22 142177439
Аноним 24/06/19 Пнд 23:12:04 142177640
>>1421762
Бля, понял только псоле дрочки дебаггера и ты добавил уверенности.
хули так сложна то а.....
Аноним 24/06/19 Пнд 23:18:09 142177841
>>1421776
Сложно? Ты ебанулся?
Аноним 24/06/19 Пнд 23:19:42 142177942
>>1421778
Та не, просто тупой нормис)
Аноним 24/06/19 Пнд 23:34:30 142178143
>>1421774
я не набираю, просто в треде сру. и остальные также
Аноним 25/06/19 Втр 00:22:33 142179744
>>1421781
тогда я с вами тут посижу
посру немного и авось что-то произойдёт...
Аноним 25/06/19 Втр 00:30:44 142180045
>>1421453
Да всё просто. Ты либо пиздатый на фоне дебсов, то есть именно программист, а не мимодрочер, ка кнаписал >>1421496, либо такой же, как они. Сам знаю человека, который хочет пойти на курсы по JS https://elbrusboot.camp/program/

Там типа ты берешь и чуть ли не живешь с этими людьми, ну и резюме тебе составляют, заставляют делать какой-то проект (который они же потом и продают и получают за это деньги, лол). Мне этой херней уже все уши прожужжали люди, не знакомые с программированием, но желающие укатиться со своей нынешней работы.
Аноним 25/06/19 Втр 00:52:51 142180246
>>1421800
найс реклама

>Там типа ты берешь и чуть ли не живешь с этими людьми, ну и резюме тебе составляют, заставляют делать какой-то проект
у нормальных людей это называется стажировка и платят они тебе
Аноним 25/06/19 Втр 00:55:42 142180347
>>1421802
Спасибо, возможно во мне пропадает маркетолог
Аноним 25/06/19 Втр 10:33:41 142188148
Эйчары в треде?
Аноним 25/06/19 Втр 10:38:42 142188449
>>1421881
Не, они в основном в гаче сидят.
Аноним 25/06/19 Втр 10:51:43 142188850
Народ, я вам принес: https://codepen.io/anon/pen/wLeZXy
Помогите разобраться. Откуда берутся эти разные имена name для разных объектов если функция User уже отработала и по идее объект переменных _ ака _ лексическое окружение уже умерло? Тут получается что: два раза я запускаю User с разными параметрами, и для функции User создаются два разных объекта переменных, которые живут даже после того как функция User отработала? ведь в объекте вася и ибрагим нет свойств в котором сохранялась эта перменная? Как работает программа, подскажите:
1) инициализация : на этом этапе определена и хранит в себе фунецию window.User, window.vasya window.ibragim хранят undefined
2) Выполнение : создается объект vasya в котором есть одно свойство-метод сэйХай. Далее, после того как функция User закончила свое выполнение запускаем sayHi без аргументов и О ЧУДО оно откуда-то получает ту переменную нейм из объекта переменных прошлого вызова User! Как это возможно?? Когда умирает объект переменных функции?

Аноним 25/06/19 Втр 11:06:31 142189251
>>1421888
Правильно ли я понял, пока есть что-то, что может сослаться на объект переменных функции этот объект переменных не удаляется?
Аноним 25/06/19 Втр 11:25:53 142190452
>>1421892
>>1421888
>О ЧУДО

В чем заключается чудо-то?

>Оно откуда-то получает ту переменную нейм из объекта переменных прошлого вызова User! Как это возможно??

Ну так ты уже передал имя в функцию, в чем проблема не пойму?
Аноним 25/06/19 Втр 11:57:22 142192753
>>1421904
Я долбаеб, забыл это: Объект переменных внешней функции существует в памяти до тех пор, пока существует хоть одна внутренняя функция, ссылающаяся на него через свойство [[Scope]].

Аноним 25/06/19 Втр 12:02:20 142193254
>>1421927
ПЛюс к этому еще то, что при каждом вызове функции создается свой объект переменных.
Аноним 25/06/19 Втр 12:29:55 142194755
Гуру JS, подскажите. Код на пике. Будет ли существовать после вызова КофеМашин ее объект переменных или нет? По сути, после того, как функция отработала не существует ссылок, которые могли бы ссылаться на этот объект (нет функций). Получается, отработав объект переменных вызова КофеМашин исчезнет?
Аноним 25/06/19 Втр 12:30:13 142194956
Безымянный.jpg (43Кб, 696x265)
696x265
Аноним 25/06/19 Втр 12:52:28 142197057
Аноним 25/06/19 Втр 19:32:34 142215358
Аноним 25/06/19 Втр 19:33:53 142215459
Аноним 25/06/19 Втр 20:06:18 142218460
Господа жабаскриптеры, нужна помощь. Есть один инпут с текстовым содержимым. Также есть кнопка, печатающая в этот инпут символ, нужно найти положение курсора в поле, чтобы при нажатии символ писался туда а не в конец строки. Например: в поле с содержимым <2ch/pr> курсор стоит после 2, а при нажатии на кнопку, печатающая <!> инпут бы обновлялся и становился <2!ch/pr>
Аноним 25/06/19 Втр 20:23:43 142219261
Аноним 26/06/19 Срд 08:56:34 142234462
Какие шаблоны проектирования чаще всего используются во фронтенде?
Аноним 26/06/19 Срд 09:51:21 142236263
>>1422184
selectionStart/selectionEnd

>>1422192
> Все, нашел
Да всем глубоко похуй, что ты там нашёл, если ты не опубликовал ответ по теме.
Аноним 26/06/19 Срд 09:51:59 142236364
Аноним 26/06/19 Срд 10:03:29 142236765
8bDASzsqJD4.jpg (147Кб, 748x840)
748x840
Двач, jQuery мёртв?
Аноним 26/06/19 Срд 11:02:20 142239466
https://codepen.io/anon/pen/LKzPjb

Ребята, хочу создать функцию, которая возвращает функцию которая выводит все свои аргументы. Пытаюсь сделать это позаимствовав метод Array.prototype.toString но у меня не получается. Что я делаю не так? ведь alert([1,2]) выведет 1,2, я хочу чтобы также выводились мои аргументы.
Аноним 26/06/19 Срд 12:33:26 142243867
Аноним 26/06/19 Срд 12:53:50 142244468
>>1422394
У тебя ошибка в генах.
Аноним 26/06/19 Срд 12:54:31 142244669
Аноним 26/06/19 Срд 13:08:33 142245170
>>1421949
>>1421947
Она у тебя не отрабатывает, она у тебя предоставляет конструктор для назначения переменной coffeMachine, после чего эта переменная хранит в себе все переменный функции СoffeMachine
Аноним 26/06/19 Срд 13:10:54 142245271
Аноним 26/06/19 Срд 13:12:13 142245372
>>1422367
Как вывести такую девушку в консоль?
Аноним 26/06/19 Срд 13:33:54 142245973
image.png (336Кб, 1968x1768)
1968x1768
Двачеры-друзья, реквестирую помощь. Выебал себе все мозги уже, но не могу найти ошибку.
Есть сервер на express, который по определенному route должен выдавать массив "последних чатов". Проблема в том, что у меня он выдает то массив из 2-х объектов типа "последний чат" (как и должно быть, в базе данных именно так), то из одного. То есть, в 50% случаев респонс запроса неполный. Почему у меня такое может происходить? Я понимаю, что чуть-чуть захардкодил эту часть, но я ее и переписывал не раз, все не могу найти ошибку.

Аноним 26/06/19 Срд 13:45:47 142246674
>>1422459
Как ты, блядь, умудрился устроить коллбек хелл на промисах?
Ну а так вставляй везде console.log и смотри где ломается. Я не понимаю что у тебя там происходит.
Аноним 26/06/19 Срд 14:11:50 142248975
>>1422466
как такое правильно делать, если не вложенными промисами?
Аноним 26/06/19 Срд 14:14:19 142249176
>>1422453
Никак. У вас нет соответствующего метода. В следующий раз наследуйтесь правильно.
Аноним 26/06/19 Срд 14:20:49 142249677
>>1422459
>в 50% случаев респонс запроса неполный
В 50% чего?
Если req.user.id = X, и ты этот X не меняешь и обновляешь страницу, у тебя каждый раз по разному что ли? То 1 объект, то 2?
Аноним 26/06/19 Срд 14:39:15 142251878
>>1422489
> как такое правильно делать, если не вложенными промисами?
тебе с таким кодом промисы надо в анус вложить

>>1422459
в 17 строке "docs.forEach"
внутри этого forEach-цикла (асинхронного, чтоб совсем заебись) у тебя строка №32, где выдаётся ответ, и №31, где проверяется, что цикл на последнем элементе

тебе долбоёбу надо переходить в пхп и оттуда жаловаться, что нода глючит и 0.1 + 0.2 != 0.3 в джаваскрипте

но я над тобой сжалюсь и подскажу, чтобы ты точно понял, что писать код это не твоё:
строка №32 выполняется АСИНХРОННО БЛЯДЬ, это значит, что ты отправляешь к базе данных (или куда ты там делаешь findById в №23 и findOne в №27) несколько запросов ОДНОВРЕМЕННО

если первым приходит ответ на последний элемент цикла, то сразу возвращается ответ клиенту. если первым приходят другие ответы, то они добавляются в массив и оттуда возвращаются клиенту

весь этот код надо переписать нахуй, плюс с использованием async/await, потому что 2019 год на дворе блядь

если ты пидрила скинешь codepen вместо ебучего скриншота, то я даже за тебя его перепишу
Аноним 26/06/19 Срд 14:39:22 142251979
Ребята, все привет. Изучаю JS по http://learn.javascript.ru/. Почти оформил первую главу, только без последнего подпункта. Но у меня есть пробелы с тем, как грамотно передавать контекст this в функции, плюс еще почти не зашла глава про прототипное наследование. Что посоветуете почитать? Или забить хуй, продолжать дальше обучаться там, потом с опытом придет?
Аноним 26/06/19 Срд 14:44:43 142252380
>>1422519
И я так понял что на русском языке там устаревшая информация, может кто какую-то хорошую книгу посоветует по JS на русском но с более актульной инфой?
Аноним 26/06/19 Срд 14:47:52 142252881
>>1422519
> прототипное наследование
наследование в JS существует для пидарасов-джавистов, которым мозгов не хватает осилить ФП
учи ФП, а пока не доучил (он сука сложный для школьников), передавай объекты в функцию и не еби мозг наследованием

> контекст this
это тоже полная хуйня, которая нужна только для дебага легаси-проектов, написанных в 2006 году
пиши pure-функции (гугли, что такое) и радуйся отсутствию this и прочего лишнего контекста, который мешает нормально код писать, тестить и читать
если тебе в 2019 захотелось использовать в функции контекстно-зависимый this, то либо надо к психологу обращаться, либо он реально нужен, но тогда ты уже должен давно понимать, как он работает
Аноним 26/06/19 Срд 14:51:05 142253282
>>1422528
А есть какая-нибудь книжка по ФП конкретно на JS? SICP на JS пойдет?
Аноним 26/06/19 Срд 14:52:35 142253483
>>1422528
Блядь, я просто видимо читаю этот учебник, а он пизда старый. Что читать на русском, чтобы быть в теме?
Аноним 26/06/19 Срд 14:53:58 142253884
>>1422523
инфа по JS даже на английском сейчас успевает устареть, пока ты твит печатаешь, не говоря уже о "книгах на русском"
учи базовые концепции программирования: циклы, переменные, функции, объекты, поля, массивы (списки), ассоциативные массивы (dictionary, словари, POJO), коллбеки и т.п.
особенности джса потом почитаешь в треде с горящими жопами питонистов, которые не могут осилить адекватный язык
Аноним 26/06/19 Срд 14:56:55 142254185
>>1422534
глянул их содержание - нормальный учебник, просто пропускай непонятные темы и сиди дальше разбирайся
и заведи себе учебный проект типа калькулятора, змейки, тетриса или ММОРПГ, на котором будешь обкатывать новые знания
заодно научишься работать с гитхабом и прочими инструментами
Аноним 26/06/19 Срд 15:06:27 142254386
>>1422538
Зачем питонистам осиливать жс, у них же другие сферы деятельности.
Аноним 26/06/19 Срд 15:08:54 142254687
>>1422528
>наследование в JS существует для пидарасов-джавистов, которым мозгов не хватает осилить ФП
>учи ФП, а пока не доучил (он сука сложный для школьников), передавайнаследование в JS существует для пидарасов-джавистов, которым мозгов не хватает осилить ФП
>если тебе в 2019 захотелось использовать в функции контекстно-зависимый this, то либо надо к психологу обращаться, либо он реально нужен, но тогда ты уже должен давно понимать, как он работает
>инфа по JS даже на английском сейчас успевает устареть, пока ты твит печатаешь
А вот и залетный каникуляр вернулся. На лето уже всю литературу прочитал?
Аноним 26/06/19 Срд 15:09:13 142254888
Аноним 26/06/19 Срд 15:11:45 142255189
>>1422543
питон просто как пример языка, который прост для обучения, но со временем прививает культуру тупого быдлокодинга: отсутствие типов, определение переменных при первом использовании и т.д.
голый JS (без православного тайпскрипта) туда же отправляется, кстати. но с JS можно на TS перекатиться, а с питона никуда не перекатишься без горения в области низа спины
Аноним 26/06/19 Срд 15:13:15 142255390
>>1422546
нет, не прочитал, с начала каникул мамку твою ебу и не делаю нихуя
Аноним 26/06/19 Срд 15:16:28 142255591
>>1422528
Как же охуенно в вуе брать всё с контекста, просто сказка
Кстати, всё апишки на ооп
Аноним 26/06/19 Срд 15:21:42 142256192
>>1422555
> вуе
пиздец блядь

ОПу от учебника javascript.ru до фронтенд-фреймворков два месяца дрочки, за которые можно и замыкания успеть изучить, и прототипы
Аноним 26/06/19 Срд 15:53:48 142258393
>>1422518
бля, брат, спасибо
я понял
первый раз route с необходимостью использовать много запросов к БД
Аноним 26/06/19 Срд 15:56:09 142258594
>>1422583
сделай Promise.all() на массиве запросов к БД, и код станет более плоским, и асинхронность перестанет так в очко ебать
Аноним 26/06/19 Срд 16:48:10 142261495
image.png (291Кб, 1560x1486)
1560x1486
image.png (40Кб, 834x220)
834x220
>>1422459
>>1422518
>>1422583
Переписал на async/await, получилось пикрил.
Ебался с async/await внутри forEach, потом нашел на медиуме статью о долбоебистости асинхронности в фориче, использовал кастомный asyncForEach.
В принципе все заработало, но я чувствую, что написал полнейшую хуйню с точки зрения семантики. Подправьте если есть возможность, с меня поставлю свечку за здравие
Аноним 26/06/19 Срд 16:53:50 142261996
>>1422614
>45 строчка user user: user.name
Аноним 26/06/19 Срд 17:04:48 142262697
>>1422541
Никогда не понимал зачем на гитхаб всякое говно, на котором ты шишки набиваешь выкладывать.
Аноним 26/06/19 Срд 17:25:43 142264798
>>1422626
Вот кстати, я пойду устраиваться на работу, покажу гитхаб, а у меня там только мувисерчер и тудушка мои. Очевидно, никто ими пользоваться не будет т.к. это же просто приложения. Это все равно показывает скилл, что я могу что-то сделать, или надо накодить какой-то инструмент, которым будут пользоваться люди нормальные?
Аноним 26/06/19 Срд 18:03:25 142267099
>>1422626
1. чтобы не проебалось при смене компа
2. показать будущему работодателю ссылкой сразу много проектов
3. что для тебя говно, другому может спасти кучу геморроя
4. есть приватные репы (возможно уже даже бесплатные), можно хранить код в них и никому не показывать
5. коллаборация: скинул на двачи ссылку, тебе прибежали и в issues накидали советов как правильно жить, а в пулл реквесты накидали кода

плюсов много, минусов ни одного

>>1422647
99% написанного кода либо никогда не дошло до продакшена, либо уже удалено и заменено на другой. не парься.
скилл твой показывает стиль работы: какой код пишешь, какие технологии используешь, как делишь функциональность на коммиты, как бранчуешься, какие коммит месседжи пишешь, как мерджишься - всё информация, во всём может найтись что-то интересное, за что глаз зацепится и твой будущий техлид (я) решит уточнить при встрече, вы мило попиздите и тебя возьмут на работу
Аноним 26/06/19 Срд 18:12:00 1422672100
>>1422614
гораздо пизже же стало, не согласен?

async foreach тебе тут на самом деле не сдался, т.к. тебе похуй на порядок выгрузки диалогов из БД - главное, чтобы они выгрузились все.

массив recents нахуй, вместо него:

let recents = await Promise.all(dialogues.map(dialogue => loadDialogue(dialogue)))

где loadDialogue - это всё тело твоего цикла, которое возвращает объект {user,message,id}, который ты раньше в recents добавлял
функцию отдельную можешь не создавать, оставить инлайном, я для краткости так написал
Аноним 26/06/19 Срд 18:42:20 1422682101
изображение.png (163Кб, 784x340)
784x340
>>1420986 (OP)
Всё время думал, что пикрил это сортировка пузырьком, а оказалось, що это не так. Теперь уснуть не могу, до жути интересно как же она на самом деле называется, подскажите
Аноним 26/06/19 Срд 18:57:50 1422689102
>>1422672
согласен, намного пизже
сейчас переписал как ты сказал, стало ещё охуеннее

Спасибо, гуру
Аноним 26/06/19 Срд 19:11:11 1422694103
>>1422682
Почему ты теперь думаешь, что это не сортировка пузырьком?
Аноним 26/06/19 Срд 19:18:30 1422702104
изображение.png (151Кб, 637x305)
637x305
Аноним 26/06/19 Срд 19:30:02 1422708105
Аноним 26/06/19 Срд 19:43:09 1422715106
>>1422708
selection sort тож по другому же пишется
Аноним 26/06/19 Срд 20:41:19 1422749107
Что такое "тудушки" и "мувичерчеры"?
Аноним 26/06/19 Срд 21:02:02 1422770108
>>1422749
Приложения, которые 100 тредов тому назад достаточно было иметь в гитхабе сделанными, чтобы устроиться на 300кк джуном.
Аноним 26/06/19 Срд 21:02:02 1422771109
>>1421759
Вспомогательные программы, которые автоматизируют некоторые процессы. Тудушки это своего рода интерактивный блокнот вкоторый ты записываешь задачи, которые тебе нужно сделать, в котором ты вычеркиваешь уже нужные задачи.
Мувисерчеры это парсеры сайтов с базами фильмов, которые улучшают функционал таких сайтов и настраиваются под себя.
Аноним 26/06/19 Срд 22:46:41 1422824110
Дайте типсов как не обосраться на собесе. Физбаз задрочил, за замыкания поясню, лайфсайкл компонент реакта, промисы, селекторы ксс, что еще часто спрашивают вкатывающихся?
Аноним 26/06/19 Срд 22:58:30 1422835111
Аноним 26/06/19 Срд 23:29:50 1422857112
Аноним 27/06/19 Чтв 01:11:12 1422896113
>>1422824
Проснись на час-два раньше, чем обычно, выпей кофе, хорошо просрись, подмойся в душе.
Аноним 27/06/19 Чтв 01:21:54 1422901114
>>1422824
>выучил то, что вчерашние заводчане проходят на курсах кокодемии в первую неделю
Тебе перезвонят, не переживай.
Аноним 27/06/19 Чтв 01:41:32 1422907115
Аноним 27/06/19 Чтв 02:11:13 1422910116
Аноним 27/06/19 Чтв 04:03:02 1422915117
grl.png (266Кб, 1680x1010)
1680x1010
>>1422453
как-то так
вообще почему нет нормального аски конвертера в интернете. с конвертацией в силуэт и всем таким прочим, помню пользовался давно такой фичей в аски редакторе, но он была на 6-ой джаве, я ее автору даже открытку обычной почтой отправил с аски рисунком, не конвертированным, нарисованным, лол, она была посткардваре иирк
Аноним 27/06/19 Чтв 10:06:21 1423016118
>>1422824
Расскажи что такое прототипное наследование и как оно работает в js.
Аноним 27/06/19 Чтв 10:29:41 1423033119
Мокаки, планирую вкатываться на фулстек, есть ли понт сейчас учить jq? Или сразу перескакивать на Angular и\или React?
Аноним 27/06/19 Чтв 11:06:11 1423065120
>>1422561
> от учебника javascript.ru до фронтенд-фреймворков
Какой-то путь юного пидораса.
Аноним 27/06/19 Чтв 11:09:36 1423067121
>>1423016
Про прототипы можно полчаса на собесе пиздеть наверное.
Если в двух словах, то методы и свойства не найденные в объекте будут перенаправляться по цепочке прототипов, пока искомое не будет найдено или не упрется в нулевой прототип. Этим механизмом можно воспользоваться как для прямого расширения функционала существующих "классов", путем добавления методов в их прототипы, так и для создания унаследованных, для чего достаточно запихать ссылку на родителя в свой прототип. Как-то так.
Аноним 27/06/19 Чтв 11:12:28 1423070122
>>1423067
Ок. На что указывает this?
Аноним 27/06/19 Чтв 11:15:54 1423076123
>>1420986 (OP)
И куда вы топовую шапку проебали, долбоебы? Хотя бы на learnjavascript ссылку прикрепили.
Аноним 27/06/19 Чтв 11:27:26 1423082124
>>1423070
It depends. Это ссылка на контекст, который зависит от того как код запустили. Для замыкания это контекст внешней функции, для методов объекта сконструированного с помощью new это сам объект, для какого-то левого кода это глобальный объект window(в браузере, хз что там в ноде) или вообще undefined в вне strict mode. Так же можно задать this самостоятельно, через apply, call, bind.
Аноним 27/06/19 Чтв 13:01:15 1423162125
Ребятушки, земля мне пухом.
Начал изучать Redux после React и Node.js
и понял, что я вообще перестал понимать о чем речь. Разрабы ебанутые что-ли какие-то.
Специально усложняют разработку простейших вещей....
Аноним 27/06/19 Чтв 13:01:44 1423164126
Какие-то экспорты модулей через другую ф-цию, какие-то бессмысленные файлики, вообще поехавшие.....
Аноним 27/06/19 Чтв 13:05:34 1423169127
>>1423164
>экспорты модулей через другую ф-цию
Connect? Просто создает новый компонент на основе твоего, со всеми нужными подписками на стор.
Посмотри чужой код на гитхабе, какие-нибудь ролики сраные на трубе, там все примитивно на самом деле. А документация действительно чет неудачная.
Аноним 27/06/19 Чтв 13:09:48 1423180128
>>1423169
для разработчиков JS, насколько нужно понимать этот Redux?
То есть код то можно механически забить, но никакого осмысления этого нет...
Аноним 27/06/19 Чтв 13:10:04 1423181129
>>1423065
субъективно лучше так, чем дрочить годам теорию, сидя без работы. для индустрии эти фронтендщики с опытом в полтора месяца - рак, но конкретному отдельно взятому двощеру гораздо лучше сидеть джуниор-фронтом в офисе, постигая секретные техники за зарплату в 90к, чем голодать за учебниками дома
Аноним 27/06/19 Чтв 13:13:02 1423182130
>>1423181
>секретные техники за зарплату в 90к

В глазах россиянских рабосоздателей, всё, что ниже миддлов - это бесполезный баласт. даже с учетом того, что имею год работы на Джанго - смотрят как на парашу..
Аноним 27/06/19 Чтв 13:14:23 1423183131
>>1423076
Да это какой-то школьный долбоеб с недостатком внимания второй тред высрал. Лето тяжелая пора.
Аноним 27/06/19 Чтв 13:15:33 1423186132
>>1423183
Все равно курсы нинужны
Аноним 27/06/19 Чтв 13:17:22 1423187133
>>1423180
Там нечего понимать, кроме самого подхода, открой его сорцы - 100 строчек кода.
Аноним 27/06/19 Чтв 13:30:40 1423196134
>>1423162
>>1423164
>>1423180

Бро, там всё очень просто на самом деле. Это ебанутый денис абрамович всё усложняет, а на деле изи.

Во-первых, представь, что у тебя есть гигантское фронтенд-приложение, в котором до ебеней всяких визуальных элементов.
Пусть будет какой-нибудь сайт банка: вот у тебя шапка с текущим денежным балансом юзера, вот у тебя на странице его счета, карты, кредиты с разбивкой на разные валюты, сбоку ещё какая-нибудь хуйня и всплывающие окошки при разных действиях.
Элементов дохуя, а данные в них одни и те же: деньги на счету, имя юзера и т.д.
Предположим, ты хранишь данные в самих элементах (реакт-компоненты или другая срань), и обновляешь при необходимости (событие там какое посылаешь по иерархии).

Теперь представь, что юзер нажимает кнопку "погасить кредит", и у него с одного счёта списывается миллиард рублей на погашение кредитного счёта. И тебе надо ебануться, чтобы обновить все элементы вручную. Где-то можешь забыть, где-то элемент сам периодически запросы делает к серверу и обновляет данные и будет конфликт, где-то ещё что-то.
Поэтому логично забить хуй на инкапсуляцию данных в рамках элемента и перенести их все в глобальную помойку.
Это первый шаг: делаем хранилище данных (текущий стейт приложения) глобальным.

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

А теперь, когда у тебя централизованный иммутабельный стейт, то хули бы не сделать машину времени, которая собирает последовательность всех мутаций стейта и может в любой момент вернуться назад во времени, или зафиксировать последовательность действий, которая привела к ошибке?
Называешь мутации стейта "action" и складываешь их в массив истории.

Вот и весь редакс. Остальное - накрученный функционал для удобства работы, или для всякой асинхронной хуйни, которая не так легко ложится в описанную концепцию.

Если даже после моего объяснения совсем туго редакс идёт, то попробуй Vuex: он проще для изучения, но основные концепции в голову вдолбит.
Аноним 27/06/19 Чтв 13:36:24 1423199135
>>1423082
Что такое бинарный поиск в общих чертах?
Аноним 27/06/19 Чтв 13:36:46 1423200136
>>1423182
Год работы на джанго в роли кого? Если ты за год всю подноготную питона, окружения (линукс, баш, вся хуйня) и джанги (плюс других фреймворков) изучил, то цены тебе нет. А если ты год сидел роуты и миграции руками прописывал, то от тебя будут бежать как от чумы.
В любом случае, процесс принятия на работу часто зависит не от реальных скиллов, а от умения проходить собеседование. И твой опыт мог вообще не играть роли, если у двадцатилетней эйчарши напротив ПМС, а цвет твоей футболки вызывает у неё мигрень.
Аноним 27/06/19 Чтв 13:39:01 1423201137
Аноним 27/06/19 Чтв 13:42:18 1423204138
>>1423196
Твои слова как божья доброта
спасибо!
Аноним 27/06/19 Чтв 15:20:40 1423262139
Почти час убил на то, чтобы выяснить почему не проходит POST запрос на node.js
оказалось, написал header вместо headers в ебучем axios
Аноним 27/06/19 Чтв 15:22:23 1423263140
>>1423262
в итоге начал делать fetch запрос и увидел..............
Аноним 27/06/19 Чтв 15:52:54 1423306141
>>1423263
ПОГРОМИСТЫ БЫЛИ В ШОКЕ КОГДА УВИДЕЛИ ЭТО...
Аноним 27/06/19 Чтв 16:24:33 1423331142
923546e31b0eb91[...].jpg (55Кб, 426x658)
426x658
Норм, если в качестве (пет)проекта для обучения у меня будет что-то вроде песочницы. Такой свалки, где я буду проводить всякие практические эксперименты из того, что узнал? Потом может и рожу чего годное. Практиковаться хочется, но оформленных идей покачто нет.
Аноним 27/06/19 Чтв 16:37:19 1423340143
>>1423331
Для кого "норм"? Если для получения практики, то норм, если для портфолио, то нет.
Аноним 27/06/19 Чтв 16:39:53 1423343144
>>1423331
Зачем тогда выкладывать это в паблик?
Аноним 27/06/19 Чтв 16:42:38 1423346145
>>1423196
Разложил по полкам как господь.
Аноним 27/06/19 Чтв 18:06:23 1423398146
>>1423262
А есть линтеры чтобы такое говно ловить?
Аноним 27/06/19 Чтв 18:50:57 1423436147
>>1423196
>сделаешь стейт иммутабельным, а для его изменения
>иммутабельный
>изменение
У вас в жс "иммутабельный" имеет какое-то особое значение?
Аноним 27/06/19 Чтв 19:16:02 1423456148
>>1423436
Такое же, каждый раз создается новый стейт вместо мутации. Иначе редакс тупо не работает.
Аноним 27/06/19 Чтв 19:24:19 1423461149
>>1423456
А как обстоят дела с памятью? У пользователя веб-приложения банка после пары десятков кликов на сайте вкладка больше гигабайта RAM не съест?
Аноним 27/06/19 Чтв 19:53:47 1423490150
Аноним 27/06/19 Чтв 19:55:14 1423491151
>>1423461
Я бы задал другой вопрос - когда у тебя меняется один атрибут стейта, ты можешь легко отразить изменения только этого атрибута в гуи
когда у тебя фактически (из-за одного атрибута) меняется ВЕСЬ стейт, тебе надо отрисовать ВСЕ заново
чо-то как-то так себе идея
Аноним 27/06/19 Чтв 19:56:24 1423492152
Ребята, подскажите, какое желательно железо иметь, чтобы без тормозов работал WebStorm? Ну, про не менее 16 Гб ОЗУ понятно. Что по процу? Ниже чего смотреть не стоит?
Аноним 27/06/19 Чтв 22:08:36 1423565153
>>1423492
Нахуй он тебе нужен? Гоняю js в виме на убитом ноуте, брат жив, быдло с собесов боится.
Аноним 27/06/19 Чтв 22:26:23 1423572154
Пиздец, аноны, какой же ts костыль на костыле. Мне плакать хочется от доков.
Аноним 27/06/19 Чтв 22:30:01 1423574155
>>1423572
Мимокрокодилу поясни чё там не так. Сам вкатиться думал.
Аноним 27/06/19 Чтв 22:39:47 1423577156
3.png (18Кб, 884x311)
884x311
Аноним 27/06/19 Чтв 22:45:45 1423579157
>>1423577
Тебе тип any не нравится или че?
Аноним 27/06/19 Чтв 23:08:53 1423586158
Анонсы, привет. Переехал в ДС по работе эникееадмином. Переезжал с расчетом дальнейшего переката во фронтенд, т.к. увидел, что работы много, а требования адекватные, чем в регионах. На данный момент владею базовыми знаниями js. HTML и CSS знаю на уровне верстки простых страниц, с гуглом могу реализовать большинство макетов, которые удалось найти. Есть вопросы к анонам, которые с нуля вкатывались в ДС фронтенд.
1. Насколько перегрет рынок в действительности? По подсчетам примерно 3 вкатывальщика с более-менее адекватным резюме (с фото) и портфолио-бэкграундом. Ошибся ли я в подсчетах?
2. Сколько интервью было пройдено перед получением оффера?
3. Насколько реально начинающему в ДС получать хотя бы 60к на руки?
4. Насколько оправдано приоритетное изучение, например, vue.js? Имею ввиду делать упор на библиотеку/фреймворк, а не чистый is?
Ну и, если не лень, расскажите вкратце свои кулстори о вкате с нуля - мне очень интересно.
Всем добра!
Аноним 27/06/19 Чтв 23:12:38 1423587159
>>1423586
>Аноны
>адекватнее
Быстрофикс, пишу с мобилки.
Аноним 27/06/19 Чтв 23:48:18 1423607160
hqdefault.png (170Кб, 480x360)
480x360
>>1423586
1. Рынок перегрет пиздец, в расчетах не сильно ошибся, но без бэкграунда лучше не лезть.
2. Не могу ответить, потому что сначала получил оффер, а потом интераью было для галочки.
3. У начинающего вилка порядка 50-70, вполне реально.
4. Чуть более чем дохуя оправданно, тебе чуть ли не обязательно иметь в резюме в стеке технологий хотя бы один ебать_фреймворк (react/vue/angular).

Удачи, хуле.
Аноним 28/06/19 Птн 00:53:26 1423655161
>>1423607
Спасибо, анон. А с какими знаниями и опытом вкатывался? Какой стек и какие проекты были в портфолио? Лвл?
Аноним 28/06/19 Птн 01:54:27 1423687162
Сейчас бы про стек давно вкатившихся спрашивать, когда год назад просили один жквери, а сейчас требуют знать все, от верстки и алгоритмов до сборки и автоматизации
Аноним 28/06/19 Птн 08:14:20 1423721163
>>1423687
ничего-ничего, мы еще прорвемся.
Сейчас google вместе с Mozilla разработает новый язык SharpGoScript и на нем все сайты будут писать. Тогда и вкатимся!
Аноним 28/06/19 Птн 08:35:30 1423727164
>>1423579
Ну попробую объяснить, язык претендует на строгую типизацию и концепции ооп, но при этом ему явно не хватает строгости, а ооп реализовано в стиле "ai через if/else".
Аноним 28/06/19 Птн 08:42:48 1423729165
>>1423727
Самый прикол TS в том, что его типизация работает только в compile time и не спасёт тебя от ошибок в runtime.
Аноним 28/06/19 Птн 10:40:04 1423794166
Аноним 28/06/19 Птн 10:46:40 1423796167
>>1423461
Даже если взять гигантский стейт (мегабайт, предположим, хуй знает, что туда надо на мегабайт запихнуть), то при паре десятков кликов на сайте у юзера поменяется пара десятков свойств в этом стейте. Памяти выделится байт 200, столько же соберёт GC.

>>1423491
Так конечно не делается, в реакте миниатюрные патчи и диффы стейта, а во вью вообще умные геттеры с деревом иерархии.
Перерисовывается только тот компонент, который изменился, причём не просто перерисовывается втупую, а аккуратно проставляются обновлённые свойства.
Подробнее можно в исходниках глянуть: https://github.com/Matt-Esch/virtual-dom
Аноним 28/06/19 Птн 10:59:02 1423803168
>>1423572
>>1423577
>>1423727
>>1423729
TS - язык богов, если не понял ещё этого, то возвращайся в JS и обмазывайся линтерами и бабелями.

В примере на скрине от тайпскрипта ровно одно изменение: типы "any" в сигнатуре метода.
Для тех, кто не имел опыта в TS, тип "any" - это переводится как "я ебал строгую типизацию, мне нужно срочно наговнокодить, чтобы заработало, похуй на типы".
Но даже в приведённом примере благодаря использованию тайпскрипта появляется автокомплит свойств на массиве baseCtors и Object.getOwnPropertyNames/Object.defineProperty.
То есть даже если типы писать на отъебись (тут хуй пойми что, а тут массив из хуй пойми чего), тайпскрипт уже начинает ловить ошибки и опечатки.

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

И объясните такую хуйню: вы можете скопипастить JS-код в файл, скомпилировать его тайпскриптом, и получить на выходе тот же JS-файл.
Чем вас тайпскрипт не устраивает? Как будто он заставляет что-то делать. Нихуя же не заставляет, пишите в любимом стиле на JS, на выходе получите тот же код, только ещё будет полная консоль рекомендаций по его улучшению.
Аноним 28/06/19 Птн 11:06:11 1423806169
>>1422682
>>1422702
Это и есть сортировка пузырьком, просто вложенный цикл развернут. Свап выебистый, через сложение, работает только для чисел, мол смотрите как я могу - сразу видно писал вкатывальщик.
Аноним 28/06/19 Птн 11:18:58 1423818170
frontend-transp[...].png (465Кб, 1177x3175)
1177x3175
5 часов в день. Сколько на все?
Аноним 28/06/19 Птн 11:20:31 1423819171
>>1422682
>>1422702
>>1423806
в этой сортировке охуенно всё:
1. уничтожение исходного массива вместо возвращения копии
2. работает только на числах
3. не работает на дробных числах
4. не работает на больших числах

к слову, я видел пример такого говнокода в старом детском учебнике по программированию от какого-то хайпового московского математического лицея. там была задачка "поменяйте местами значения двух переменных без использования временной третьей"
Аноним 28/06/19 Птн 11:21:51 1423820172
>>1423803
>И от ошибок в рантайме надо спасаться валидацией данных

Вот и выходит, что чистый JS заменил TS путём добавления параметров по умолчанию, пиши function ts_soset(x = 0, y = {i:9,j:10}) и ты заменишь TS. А валидацию данных я и без него сделать могу. TS при этом не способствует написанию этой валидации, он даёт тебе мнимую типизацию и расслабляет твой мозг.
Аноним 28/06/19 Птн 11:21:57 1423821173
>>1423818
2 года
все равно сдуешься
Аноним 28/06/19 Птн 11:22:07 1423822174
Аноним 28/06/19 Птн 11:28:43 1423825175
>>1423820
я не могу понять, у нас мискоммуникация или ты вообще не понимаешь, что TS делает.
TS существует для описания типов, чтобы самому себя защищать от ошибок, и чтобы твоя IDE подсказывала методы у объектов.
ты вообще писал когда-нибудь на языках со статической типизацией, понимаешь её отличия от динамической?

вот тебе пример:
function updateScreen(screen: { width: number, height: number}) {
screen.width = 640
screen.heigth = 480
}

тайпскрипт тебе сразу ошибку покажет, в JS ты будешь ебаться с дебагом
Аноним 28/06/19 Птн 11:29:01 1423827176
>>1423818
HTML + CSS - месяц (интерактивы кокодемии + их интенсивы скачанные с торрента)

JS + React + Node.js - 3 месяца (2 месяца JS, остаток на остальное)

Далее одного месяца хватит для того чтобы подтянуть уже существующие знания, если ты хочешь вкатиться в фронтенд-разработку + выучить препроцессоры и сборщики модулей.

Либо 1.5 месяца на то чтобы подтянуть знания для работы бэкендером (пара фреймворков типа Express + вспомогательные либы).

Либо 2 месяца для того чтобы подтянуть знания и вкатываться в фуллстек разраба.

Electron и ReactNative можно выучить ради интереса, либо если у тебя есть идея какого-нибудь проекта, потому что они редко используются в разработке декстоп/мобильных приложений.
Аноним 28/06/19 Птн 11:38:24 1423836177
>>1423818
Всю диаграмму выучить невозможно ни за какое время. Тем более для вкатывальщика. Максимум - пройтись по верхам.
Но нет и никакого смысла изучать подряд SEO, CSS-препроцессоры и React Native. Из этих трёх навыков ни в одной работе джуниора/мидла не пригодится более, чем один.

По таймингам можно так ориентироваться:
Изучить основы кодинга на скриптовом языке - 60 часов
Поковырять HTML - 40 часов
Написать калькулятор на html+js - 40 часов

Т.е. за месяц с твоим графиком можно более-менее начать ориентироваться, как работают сайты в браузере.
Дальше как сказал анон >>1423821 два года если не сдуешься, чтобы от тебя был какой-то толк на реальных задачах.
Аноним 28/06/19 Птн 11:38:27 1423837178
>>1423825
Конечно понимаю и писал, а ты выучил ненужный TS и думаешь, что приблизился к языками типа C#, когда на деле просто проапгрейдил свой IDE.

>тайпскрипт тебе сразу ошибку покажет, в JS ты будешь ебаться с дебагом

Это всё делается при помощи расширений для IDE, отдельная обертка в виде TS не нужна.

Статическая типизация это не когда за тебя компилятор опечатки исправляет, а когда у тебя есть класс screen, которому ты дал определение в коде, когда проверка идёт не только во время компиляции, но и во время исполнения кода.
Аноним 28/06/19 Птн 11:56:10 1423854179
>>1423837
Выучивал ты таблицу умножения два года назад. Я на тайпскрипте пишу с первого дня его появления без порога вхождения и выучивания.

TS > C#, потому что structural typing > nominal typing

И то, что ты называешь статической типизацией, на самом деле - номинальная, с автодобавленными рантайм-проверками.

Что касается расширений для IDE, то это любопытно посмотреть, конечно, как ты собираешься в расширениях сложные типы описывать. Особенно круто расширения для IDE работают в рамках CI/CD.
Но даже на любое твоё расширение я смогу привести контрпример, где тайпскрипт прочекает всё грамотно, а расширение (если это не тайпскрипт-компилятор) этого не сможет.

У меня есть опыт проповедования тайпскрипта неверующим, и всегда помогает один и тот же способ: покажи человеку ошибку, которую он дебажил несколько часов или дней, и которую ему бы показал компилятор тайпскрипта через секунду после написания.
Если не помогает - git log и список коммитов, фиксящих ошибки, которых не могло быть с тайпскриптом.

Это работает каждый раз.
Потому что на скриптовых языках без типов невозможно надёжно писать крупные проекты. Нужна типизация, нужны проверки. И нужны они именно на этапе компиляции. Данные, которые тебе юзер или чужое апи прислали в рантайме, компилятор проверять не должен.
Аноним 28/06/19 Птн 12:03:11 1423860180
>>1423854
>Тратишь сотни часов, обмазывая апи и говнокод чтобы хоть как-то заработало к дедлайну
>Все равно фиксишь ошибки по-старинке, потому что any нихуя не отлавливает
Аноним 28/06/19 Птн 12:06:31 1423862181
>>1423854
>Я на тайпскрипте пишу с первого дня его появления

Так бы и сказал, что ты фанатик и твой мозг не способен на трезвый анализ.

>TS > C#, потому что structural typing > nominal typing

Это вообще пушка. ООП уже давно дал пососать ФП, так что можешь засунуть свой structural typing себе в жопу. В С# для этого существует наследование и имплементация.
Аноним 28/06/19 Птн 12:17:11 1423867182
>>1423860
Какие сотни часов.
Сейчас переключился на IDE, взял первый открытый файл (rest-апиха на экспрессе для админки сайта и для данных на фронте).
Файл в 310 строчек, общее количество символов: 9645, количество символов, описывающих типы: 56.
Типы занимают 0.5% от размера файла. Те же самые 0.5% времени занимает их написание.
И за эти 0.5% времени я получаю научно доказанное уменьшение количества багов от 15% до 38%.

Пруфы:
https://blog.acolyer.org/2017/09/19/to-type-or-not-to-type-quantifying-detectable-bugs-in-javascript/
https://www.reddit.com/r/typescript/comments/aofcik/38_of_bugs_at_airbnb_could_have_been_prevented_by/

Как можно в здравом уме отказываться от инструмента, облегчающего работу? Вы с сумками из магазина по лестнице поднимаетесь, потому что лифт ждать надо?
Аноним 28/06/19 Птн 12:19:11 1423870183
>>1423867
>310 строчек
>баги

Ты же инвалид, удивляюсь как тебе только одного костыля в виде TS хватает. Признавайся, наверно еще проверяешь потом свои 300 строчек неделю, да?
Аноним 28/06/19 Птн 12:26:50 1423876184
>>1423862
Не фанатик, а использую инструменты по назначению.
Тайпскрипт с первого дня даёт прирост к производительности. Мидлу на зарплате в корпорации на 10к рыл этого не понять, но код вообще-то требуется писать максимально быстро и максимально надёжно.
И если есть инструмент, который это позволяет делать, то надо его использовать.

Кому там ООП дал пососать - это вообще смешно, тебе в школе ООП преподавали, а ФП забыли? Это две разных парадигмы, использующиеся в разных ситуациях, и если ты способен писать только в одной, то грош тебе цена как специалисту, так и сдохнешь мидлом-фронтендщиком.

Наследование и имплементация не помогут, когда тебе надо провести одну и ту же операцию над объектами из разных веток дерева наследования. Либо обмазываешься интерфейсами со всех сторон (охуенно обмазывать интерфейсами чужой код из бинарной либы), либо дублируешь свои методы по десять раз для каждого класса.

Структурная типизация от ФП/ООП вообще не зависит, но это ладно. Подучишь, разберёшься. Хуже программистом это тебя не делает, в отличие от психологического блока на отдельные парадигмы и инструменты.
Аноним 28/06/19 Птн 12:30:10 1423882185
>>1423876
>Либо обмазываешься интерфейсами со всех сторон (охуенно обмазывать интерфейсами чужой код из бинарной либы), либо дублируешь свои методы по десять раз для каждого класса.

Либо сразу пишешь нормальный код. Структурная типизация это огромный минус к читаемости кода, используй её и сразу можешь ставить крест на поддержке своего кода. Это костыль, который не решает проблему, а закрывает на неё глаза.
Аноним 28/06/19 Птн 12:32:36 1423887186
>>1423870
Так ты из тех, кто в один файл на 10 000 строк захуяривает несвязанные между собой модули и всё это дебажит неделями? Так бы и сказал, что говноед, я бы тебе покушать принёс.

Файл в 310 строк, потому что его функция - поднять rest-сервер, отдать под паролем эндпойнты редактирования данных в базе, и без пароля эндпойнты просмотра частичных данных.
Вся функциональность расчёта этих данных лежит внутри других модулей в отдельных файлах.
Но это архитектура, разделение ответственности, сложная хуйня, школьникам с годом опыта на голом JS не понять.
Аноним 28/06/19 Птн 12:48:26 1423898187
>>1423882
Давай простой пример.
Есть сервер, он отдаёт тебе по HTTP JSON вот такого формата:
{
users: [ { id: 1, name: "Pasha", surname: "Durov", regdate: 1561625871 }, { id: 2, name: "Anon", regdate: 1561714764 } ],
messages: [ { user: 1, text: "anon - huy", date: 1561714871 }, { user: 2, text: "sam huy", date: 1561714893 } ]
}

Например, тебе надо отфильтровать объекты юзеров и месседжей, которые произошли после 1561700000, чтобы показать свежие новости. И заодно добавить объектам соответствующий тип, чтобы различать.
Вот как это делается со структурной типизацией:

let START = 1561700000
let updates: (IUser | IMessage)[] = []
updates.concat(json.users.filter(u => u.regdate > START).map(u => u.type = "user"))
updates.concat(json.messages.filter(m => m.date > START).map(m => m.type = "message"))

console.log(updates) // { type: "user", id: 2, name: "Anon", regdate: 1561714764 }, { type: "message", user: 1, text: "anon - huy", date: 1561714871 }, { type: "message", user: 2, text: "sam huy", date: 1561714893 }


Давай посмотрим, можно ли за 3-4 строчки (или за 30-40, неважно) сделать то же самое на C#.
Аноним 28/06/19 Птн 12:50:57 1423902188
>>1423882

Причём C# - это пример охуенного языка. А есть ведь ещё джава и другое говно.

>>1423898
Быстрофикс: там, где `u => u.type = "user"` должно быть естественно `u => { u.type = "user"; return u }`
Писал на дваче, опечатался.
Аноним 28/06/19 Птн 14:34:26 1423938189
>>1423898
Можно, используя LINQ и динамическую типизацию.
Аноним 28/06/19 Птн 14:51:56 1423946190
Привет, я проебался жуть как. Послушайте, если не впадлу и дайте совет.
В общем, закончил свой вуз в июне 18 года, после чего в августе полетел работать на галеру. Знания были: HTML, CSS, js/jq на уровне подрубить карусельку и модифицировать её, пыха циклом перегнать массив записей и вывести, например, названия записей (в WordPress, но не суть короче). Вёрстку знаю лучше всего. Не суть. На галере занимался что-то типа: "передвинь кнопку", "удали страницу", "размести фотки на сайте" и всё такое. Контора по большей части оптимизацией поисковой занимается. То есть я сначала работал на 25к, потом повысили до 35 (после вычетов 31 с хуем мои были). Я НИЧЕМУ не научился, кроме как с нуля сверстать макет, насадить на modx, разбивая на чанки и т.д, но мне это не особо нравится. Скопил 80к и увольняюсь через две недели, и у меня будет месяц-два на изучение JS. Аноны, реально ли вкурить JS (ES 6+, кстати, не шарю, какие там версии даже) на таком уровне, чтобы уже можно было лезть в реакт какой-нибудь?
Сам виноват, знаю. Если интересно, зп такие в ДС платят.
Проебавший год анон вот-вот почти 23 лвла
Аноним 28/06/19 Птн 14:54:45 1423948191
>>1423946
>циклом перегнать массив
прогнать
>Аноны, реально ли вкурить JS
Аноны, реально ли вкурить за этот срок (1-2 мес) JS
фикс, сори сижу сейчас грустный, как будто хуй сосал невкусный
Аноним 28/06/19 Птн 14:58:42 1423953192
>>1423946
Балбес, не копить нужно было, а знакомиться с нужными человечками в конторах куда хочешь перекатиться.
>будет месяц-два
С нуля оче тяжело будет, затягивай пояс и хуярь каждый день че. И чтобы пару пет-проектов написал нормальных.
Аноним 28/06/19 Птн 15:02:03 1423956193
>>1423953
да с кем тут на моей галере знакомиться, нас пятеро лол. копил, потому что знал, что уволюсь и надо будет на что-то жрать и покурить купить. но более 2 месяцев как-то неловко сидеть, т.к живу с родителями
Аноним 28/06/19 Птн 15:03:23 1423958194
>>1423953
>>1423956
дополню, джс не совсем на нуле. найти значение элемента и дальше с ним че нить сделать могу, могу элементарное, типа, клик по кнопке - менюшка вскрывается. Как и на js, так и на jq могу. jq, к слову, ненавижу, такая мерзость
Аноним 28/06/19 Птн 16:04:52 1423988195
>>1423946
Спокуха, всё можно сделать. Главное, что у тебя есть опыт ковыряния в грязи, а знания приложатся.
Поскольку времени на проёбывание нет, устрой себе серию хакатонов с чётким графиком.
2 дня работаешь - 1 день отдыхаешь - по новой.
Каждые двое суток работы - это конкретный законченый проект с использованием всего, что ты знаешь, и какой-нибудь одной новой технологии.

Ходить вокруг да около не надо, бери и прям через день после увольнения начинай хуярить калькулятор на реакте.
Задача - за двое суток поднять реакт со всем окружением, настроить себе среду разработки, и закодить калькулятор: в одном окошке пишешь выражение из цифр и операторов, в другом окошке оно сразу считается.

Если сделал, молодец, в оставшееся от двух суток время поковыряешь внутренности, посмотришь, как работает.
Не сделал - твои проблемы, переходишь к следующей задаче не доделывая предыдущую.

За месяц ты таким образом сделаешь 10 небольших проектов, каждый будет с какой-то новой фичей, и закреплением старых навыков.

Идеи для задач тебе аноны накидают, моя версия:
1. [основы реакта] Калькулятор (парсит данные из одного окошка в другое)
2. [работа с редаксом и стейтом приложения] Локальный TODO-лист (добавлять задачи, удалять, помечать прочитанными, сортировать)
3. [работа с REST API] Кинопоиск (список фильмов с картинками, возможность сохранить их в локальное избранное, поиск по фильмам)
https://developers.themoviedb.org/3/getting-started/introduction

И дальше ещё 7 штук.

Главное - укладывайся в двое суток, и каждый раз начинай проект с нуля. К концу месяца задрочишь реакт до того, что любое тестовое задание сделаешь на автомате.
Аноним 28/06/19 Птн 16:09:09 1423993196
>>1423837
>расширений для IDE, отдельная обертка в виде TS не нужна
Vscode из сигнатуры d.ts берет (для js файлов), а не jsdoc или что ты там имел ввиду
>Статическая типизация это не когда за тебя компилятор опечатки исправляет
Если я обозначил типы, то с какого фига в рантайме должно измениться? Динамическим параметром извне что ли?
Аноним 28/06/19 Птн 16:10:03 1423994197
>>1423946
>>1423988

Забыл добавить: в каждый промежуток между проектами обновляй резюме, ставь туда новые приобретённые навыки. Это мотивировать будет похлеще пинка под зад.

А начиная со второго месяца можешь ползать по hh.ru и регулярно смотреть вакансии джуниоров, или даже подписаться на рассылку. Видишь подходящую вакансию - отправляй резюме.
С конца второго месяца, если продержишься в том же ритме, у тебя будет 20 проектов, написанных лично тобой с нуля. Это уже повод отправлять резюме не только на джуна, но и на мидла - шансы небольшие, но может повезти.
Аноним 28/06/19 Птн 16:38:01 1424011198
>>1423988
>>1423994
Спасибо большое, добрый анон. Правда спасибо :3
Аноним 28/06/19 Птн 16:47:28 1424019199
>>1423946
>ES 6+, кстати, не шарю, какие там версии даже
Идешь и смотришь, как ES6 компилится в ES5. Разберешься с ним за полчаса.
Аноним 28/06/19 Птн 16:58:13 1424026200
>>1423854
>ты зачем на трехколесном велосипеде ездишь вместо машины?
>да пошел ты нахуй! я на нем езжу с первого дня покупки и еще ни разу не жаловался
Аноним 28/06/19 Птн 17:23:08 1424034201
>>1424019
а es2016, es 8 и 9?
Какому стандарту следовать? Я в них не разбираюсь
Аноним 28/06/19 Птн 17:30:27 1424039202
>>1423993
>Если я обозначил типы, то с какого фига в рантайме должно измениться? Динамическим параметром извне что ли?

Прислал тебе сервер в ответ не 34, а "34", твой код это проглотил, несмотря на то, что при его написании ты указал, что параметром должно быть число, а не строка. Если бы была статическая типизация, то код бы выбросил исключение.
Аноним 28/06/19 Птн 17:34:32 1424041203
>>1424034
Что значит какому следовать? Следовать последнему стандарту можешь с use strict. Стандарты просто возможности добавили, как патчи в игре.
ну погугли хоть, привыкай сам искать информацию
https://tproger.ru/translations/wtf-is-ecmascript/
Аноним 28/06/19 Птн 17:40:08 1424044204
>>1424039
>Если бы была статическая типизация, то код бы выбросил исключение.
Ну и как мне это поможет?
В статических тоже парсят данные, на java пример
String number = "10";
int result = Integer.parseInt(number);
Аноним 28/06/19 Птн 18:08:36 1424054205
>>1424044
Поможет не обосраться если ты ожидаешь один ответ, а приходит другой. Будет у тебя, например, пополнение баланса через какой-нибудь агрегатор, отправил ты ему запрос на пополнение баланса пользователя X, в ответ получил статус пополнения, например:
{
success: true,
amount: "20"
}

При этом ты ожидаешь, что res.amount будет не string, а int, поэтому делаешь:
x.balance += res.amount;

В итоге получаешь не эксепшен, а пользователя у которого баланс из 20 превратился не в 40, а в "2020".

Даже parseFloat не поможет, потому что в ответе может прийти значение null и ты будешь получать NaN.
Аноним 28/06/19 Птн 18:32:03 1424072206
>>1424054
Что-то много если выходит, но, если такой рандом возвращается, то логично будет валидировать проверкой строки на число, а не на эксепшены надеяться
Аноним 28/06/19 Птн 19:02:30 1424089207
>>1424072
Если всего одно - получение непредвиденного типа во время исполнения. А это всего лишь один из случаев.
> то логично будет валидировать проверкой строки на число
Вот и я говорю, TS не нужен, потому что валидировать всё равно приходится.
Аноним 28/06/19 Птн 19:18:56 1424097208
>>1423988
Как он будет реакт юзать, если не знает js блджад
Аноним 28/06/19 Птн 20:25:35 1424139209
>>1424097
Он же пишет:
> js/jq на уровне подрубить карусельку и модифицировать её,
> пыха циклом перегнать массив записей и вывести, например, названия записей
С кодом сталкивался, задачи решал, не хватает именно фундаментальных знаний.
За два месяца фундаментально программирование изучить невозможно, а вот набить руку на максимально приближенных к реальности проектах - вполне.
Аноним 28/06/19 Птн 20:34:46 1424142210
А нет какого-то удобного комплексоного списка литературы/курсов и всего такого по оперативному вкату в веб? Знаком с html/css и SQL, в целом программировал только на ООП, но о том, как строгать сайты не имею представления и с какой стороны к данному контенту подойти, однако жизнь сложилась так, что очень нужно за рекордно короткое время нахуярить сайт без всяких вордпрессов и т.д.
Аноним 28/06/19 Птн 20:50:11 1424147211
image.png (132Кб, 1808x780)
1808x780
>>1424039
Если твой код глотает всё, что ему дают, это твоя проблема, а не инструмента.
Серьёзно, ощущение, что ты 2 года прогал на C# (юнити, наверное, либо ебанутый энтерпрайз), а потом тебя начальник на работе посадил писать фронтенд, и у тебя пригорает.

Ты слышал вообще про валидацию данных? Про либу joi или аналоги слышал когда-нибудь? https://github.com/hapijs/joi
Ты понимаешь, что валидация данных не имеет никакого отношения к языку?
Ты понимаешь, что объект из JSON.parse() возвращается типа `any`, а если говорить более строго, то должен быть `unknown`?

Ты понимаешь, что в тайпскрипте есть целый ряд техник, которые позволяют обеспечить безопасность кода, абсолютно не сравнимую с той, которую дают любые внешние инструменты вроде линтера и прочих?
Аноним 28/06/19 Птн 21:04:05 1424155212
>>1424142
Если нужно за рекордно короткое время нахуярить сайт, то воспользуйся конструктором типа Wix или Tilda.
На них иногда можно мышкой сайт наговнякать быстрее и приятнее глазу, чем профессиональный фронтендер тебе сверстает. Под капотом будет дичь и пиздец, но кто же туда посмотрит.

Если всё же решишь вкатываться, то начинай делать задачи, а по мере возникновения проблем гугли их. Наработаешь свои техники, потом посмотришь, как другие делают, и здесь же на двачах можешь спросить, зачем кто-то делает что-то не так, как ты.
Аноним 28/06/19 Птн 21:19:16 1424161213
>>1424147
Я всё понимаю, не понимаю только манек вроде тебя, которые используют апгрейд для IDE (typescript) и называют его отдельным языком программирования, после чего еще и кричат, что проверка типов во время рантайма НИНУЖНА.
Аноним 28/06/19 Птн 21:32:07 1424173214
>>1424161
Да не понимаешь ты нихуя. Понимал бы - поставил бы себе тайпскрипт и радовался, что он за тебя половину работы делает.
Но ты сидишь и споришь, что ощущения не те. Валидацию данных зачем-то приплёл, хотя тебе данные могут вообще какие угодно прийти от сервера, не говоря уж о тех, что юзер прислал.
При таком уровне дискуссии следующий твой аргумент будет, что ТДД с юнит-тестами спасают от ошибок, и поэтому тайпскрипт не нужен.

Посмотри на картинку из >>1424147 и задумайся, нужно ли тебе ловить ошибки на этапе компиляции, или ты предпочтёшь падать в рантайме и дебажить часами тупые опечатки, перепутанные местами аргументы в вызовах функций, отсутствующие проверки на null и прочее.

Мне интересно, ты фичи ES6-ES7 типа async/await и arrow functions используешь, или они тоже не нужны, потому что сервер может прислать строку вместо числа?
Аноним 28/06/19 Птн 21:38:51 1424176215
>>1424161
И отдельно блядь заебал называть валидацию данных "проверкой типов". Вот реально заебал, хватит. Почитай, погугли, разберись, чем эти вещи отличаются, и не позорься.
Аноним 28/06/19 Птн 21:55:54 1424185216
>>1424173
>поставил бы себе тайпскрипт и радовался, что он за тебя половину работы делает.

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

>от сервера, не говоря уж о тех, что юзер прислал.

Я и говорю, что ничто от этого JS не спасает, тем более обертка в виде TS.

>нужно ли тебе ловить ошибки на этапе компиляции,

Нужно, и это делается без TS, без лишнего кода. Именно для этого и существует JS, но нет, давайте сделаем костыль в виде очередного слоя абстракции, потому что иначе умственно отсталые хомячки не хотят работать мозгами, они лучше напишут побольше говнокода.

>или ты предпочтёшь падать в рантайме

В рантайме JS не падает, в этом и проблема, он просто молча проглатывает код и продолжает работу, TS на рантайм никак не влияет.

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

Время идёт, а TS-петушок не знает о деструктуризации и написании JS кода вида:
function f ({a=3,x=5,y=10}) {return x+y+a}
f({y=4}) // 12

Именно поэтому костыли типа TS губительны. Они не заставляют мозг работать, они вырабатывают плохую привычку. Ввели новый функционал в JS, но TS-о петух не будет его применять и изучать, потому что у него эти костыли уже вросли в тело и он не хочет с ними расставаться.

Потом еще и о фишках ES6-ES7 говорит.

>потому что сервер может прислать строку вместо числа?

И какая взаимосвязь между асинхронным программированием, стрелочными функциями и твоим высером?

>>1424176
Долбоеб, речь идёт не о том, что ты там в коде написал, а о том, что происходит на уровне интерпретатора. Но откуда формошлепу это знать, да?


Аноним 28/06/19 Птн 22:30:21 1424214217
>>1424185
Формошлёп твой батя на заводе. Тебя тут учат бесплатно, а ты ещё выёбываешься.

> Ввели новый функционал в JS, но TS-о петух не будет его применять и изучать, потому что у него эти костыли уже вросли в тело и он не хочет с ними расставаться
Тайпскрипт поддерживал деструктуризацию до того, как ES6 начал появляться в браузерах, как и со всеми остальными ESNext-фичами бывает. Кукарекай дальше.

> Время идёт, а TS-петушок не знает о деструктуризации
Ты тупой просто пиздец. Как тебе деструктуризация поможет блядь с библиотечными функциями от других программистов? Ясен хуй, когда пишешь код на одну страницу без зависимостей, там и без тайпскрипта можно, и переписать все методы под свой стиль, и вообще что угодно.
Не говоря уже о том, что чужие (да и свои) API меняются, и при переименовании/добавлении/удалении очередного параметра ты отхватишь хуёв в голом JS в непредсказуемый момент, а тайпскрипт тебя предупредит через секунду после того, как ты этот параметр удалил, переименовал или сделал обязательным.

Дефолтные аргументы вообще охуенно ложатся, когда у тебя например не должно быть дефолтного аргумента. Но конечно, нахуя использовать специально созданный для этого язык со специальным синтаксисом, если можно передать дефолтные параметры везде, даже когда их быть не должно по семантике (погугли, что такое).

> И какая взаимосвязь между асинхронным программированием, стрелочными функциями и твоим высером?
Такая же, как между статической типизацией и номинативной рантайм-валидацией.

> В рантайме JS не падает, в этом и проблема, он просто молча проглатывает код и продолжает работу, TS на рантайм никак не влияет.
Ну расскажи, как JS не падает в рантайме при вызовах и обращении к свойствам неопределённых объектов (null, undefined).
Тайпскрипт на это влияет напрямую: он отлавливает обращения к объектам, которые могут быть не определены в текущей точке, и показывает, куда надо добавить проверку. Багов становится меньше.

> Я и говорю, что ничто от этого JS не спасает, тем более обертка в виде TS.
Потому что язык не для этого создан, как это блядь можно не понимать. Он существует для того, чтобы статически проверять типы во время компиляции.
И со своей задачей он справляется охуенно.

Ты можешь посмотреть ссылки, которые я выше кидал, где доказано уменьшение количества багов в коде при использовании тайпскрипта.
Ты можешь поднимать реальные проблемы тайпскрипта, типа поддержки higher kinded types или unsound-типизации в некоторых местах.
Но ты до этих проблем даже не дошёл. И мне непонятно, что тебя останавливает от использования инструмента, который облегчает работу и делает результат более стабильным и надёжным.

> Они не заставляют мозг работать
Опять же, это твои проблемы. У нормальных людей мозг не перестаёт работать от пиздатых инструментов, они просто меньше времени тратят на рутину и больше на высокоуровневые задачи.
Аноним 28/06/19 Птн 22:35:01 1424216218
Более полугода назад написал мувисерчер, выложил на гитхаб и устролся за копейки в мухосранске.
Реакт, редакс, стайледы, все что хотел использовал.
Небольшая компания, в которой одни бэкенд разрабы, пилящие и фронт.
Никаких код ревью, никакого менторства. Пришла задача — решил задачу.

На днях написал заявление и купил билет в ДС2.
Не хотели отпускать, предлагали почти в два раза повысить зп и еще плюшки.

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

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

Вот думаю, насколько тяжело будет устроиться и решил спросить местного анона, который когда-то помогал в малом вкатывании.
Аноним 28/06/19 Птн 22:47:41 1424222219
>>1424216
> Не хотели отпускать, предлагали почти в два раза повысить зп и еще плюшки.
А чё не согласился?
Аноним 28/06/19 Птн 22:49:14 1424223220
>>1424216
> Фундаментальных знаний не имею, не имею понятия о всяких алгоритмах, структурах данных, за особенности v8, браузеров ничего не скажу, могу просто клепать формы и прокидывать пропсы.
С такими пробелами в знаниях никуда не возьмут, надо восполнять. Это максимум стажёрская/джуниорская должность с соответствующим окладом.
Аноним 28/06/19 Птн 23:05:32 1424227221
>>1424222
Хочу прокачаться, а тут среда не совсем располагает.

>>1424223
Как считаешь, стоит перво-наперво начинать с низов, это получается математика -> алогритмы/структуры данных -> ???что-то еще???
Или сейчас лучше прочесть какой-нибудь YDKJS?

А на за мидла и не рассчитываю.
Аноним 28/06/19 Птн 23:10:24 1424228222
>>1424214
Ты предлагаешь вводить ещё один слой поверх текущего, ради того, чтобы избавиться от небольшого процента ошибок, которые обычно от низкой культуры программирования идут и отлавливаются проще других.

Сам привёл ссылку, где из 400 багов только 60 ловятся ТС. 15%.

Аноним 28/06/19 Птн 23:23:26 1424231223
Аноним 28/06/19 Птн 23:46:48 1424240224
>>1424228
Из 400 багов можно 60 поймать бесплатно. А ещё получить автокомплит в редакторе и документированные типы для других коллег на проекте.
Минусы-то какие? Дополнительных слоёв не вводится, код остаётся тем же самым, только с аннотациями в редких местах, где выведение типов не отрабатывает: почти исключительно в сигнатурах методов.
Аноним 28/06/19 Птн 23:48:25 1424241225
>>1424214
>Опять же, это твои проблемы. У нормальных людей мозг не перестаёт работать от пиздатых инструментов

При этом "нормальный человек" (ты) умудрился обосраться с незнанием деструктуризации, пукнув в оправдание "ТАЙПСКРИПТ ПАДЕРЖИВАЛ ДО ЭТАВА!".

>Как тебе деструктуризация поможет блядь с библиотечными функциями от других программистов?

Ну да, типичное высказывание для долбоеба. Вместо того чтобы использовать новый функционал, давайте делать костыли, потому что у нас есть работа с легаси кодом.

>номинативной рантайм-валидацией

Это особое название номинативной типизации для "нормальных людей" использующих TS?

>Ну расскажи, как JS не падает в рантайме при вызовах и обращении к свойствам неопределённых объектов (null, undefined).

Хуесосина тупорылая, в рантайме твой TS на это никак не повлияет. Получил ответ от сервера с null/undefined вместо нужного типа == сосёшь хуй как с чистым JS, так и с TS.

>Ты можешь посмотреть ссылки

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

Аноним 28/06/19 Птн 23:51:16 1424242226
>>1424227
>Хочу прокачаться, а тут среда не совсем располагает.

Хуею с таких клоунов. Ну так прокачивайся параллельно работе, понятно, что это будет медленнее чем в рабочем коллективе, который тебя тянет, но нужно учитывать, что в такой коллектив сначала попасть нужно. Надеюсь, что ты пососёшь хуй и вернёшься обратно в свою мухосрань на зарплату в 2 раза меньше прежней.
Аноним 28/06/19 Птн 23:57:03 1424244227
>>1424240
>Из 400 багов можно 60 поймать бесплатно.

С условием того, что ты криворукий дебил/индус порождающий портянки низкокачественного кода.

>А ещё получить автокомплит в редакторе
>пишешь 100 символов кода для того чтобы получить автокомплит который в целом сэкономит тебе написание 20 символов

10/10 оптимизация.

>документированные типы для других коллег на проекте.

Комментариями религия не позволяет пользоваться?

>Дополнительных слоёв не вводится

Дурачок, твой код на TS и есть дополнительный (лишний) слой, потому что компилируется в JS, добавляя функционал не языку, а редактору.
Аноним 28/06/19 Птн 23:57:54 1424245228
>>1424227
Математика тебе зачем?
Алгоритмы и структуры данных нужны, конечно, но их нельзя изучать в теории, надо на практике.
YDKJS читать не надо, вон анон >>1424231 предлагает SICP, но я не рекомендую на текущем этапе. Если хочется книгу, то полистай Code Complete — это самая важная прикладная книга для программиста.

Если тебя на собеседования не зовут, то надо резюме редактировать и письмо сопроводительное. Скиллы тут ни при чём, ни до ТЗ, ни до разговора ты не доходишь.
Аноним 29/06/19 Суб 00:07:25 1424248229
Проебали шапку, теперь люди ресурсы найти не могут.
Аноним 29/06/19 Суб 00:23:14 1424256230
Возможно ли отправить с ноды html-файл вместе с json-ом единственным ответом на запрос ? (у меня сейчас при переходе на страницу сначала загружается html, затем из него запрашиваются дополнительные данные. Получается два запроса вместо одного)


Возможно ли заставить реакт "пересоздать" объект (удалить старый и заново вызвать конструктор)?
Аноним 29/06/19 Суб 00:25:04 1424258231
>>1424241
Ты какую-то хуйню совсем понёс.

Очевидно, что деструктуризацию я использую в работе ежедневно, как и большинство других фич языка. Языка TypeScript, естественно, а не голого JS. Не понимаю, почему ты считаешь, что кто-то может не знать таких базовых вещей. Следующее обвинение будет, что я не умею fat arrow писать или не знаю отличий let/var/const? Да без проблем, кукарекай.

> Вместо того чтобы использовать новый функционал, давайте делать костыли, потому что у нас есть работа с легаси кодом
Не работа с легаси кодом, а работа с чужими библиотеками. Ты хоть раз писал parseInt()? JSON.parse()? Это библиотечные функции, с ними работают так, как они написаны, а не как хочется анону с двача.

> Это особое название номинативной типизации для "нормальных людей" использующих TS?
Я тебе ещё раз говорю, почитай, что такое валидация данных, и что такое типизация.
Номинативная типизация — это когда тебе C#-компилятор не даёт передать в функцию GetX(Point p) объект класса Point3D, у которого нет общих предков с Point. Компилятор не даёт на этапе компиляции — отказывается компилировать код.
Номинативная рантайм-валидация, о которой я говорю — это когда ты скастовал свой Point3D к динамику и прокинул его в функцию. И компилятор это проглотил. Но потом в рантайме у тебя всё ёбнулось, потому что Point3D передавать было нельзя.
Это оправдано в языке, который объекты хранит в запакованном бинарном виде, а не как джс ассоциативным массивом.

> Хуесосина тупорылая, в рантайме твой TS на это никак не повлияет
Мне сколько раз ещё повторить, что тайпскрипт — это КОМПИЛЯТОР, который работает на этапе КОМПИЛЯЦИИ? В рантайме нет никакого тайпскрипта. Ты от компилятора хочешь, чтобы он перестал компилировать и полез к тебе в рантайм? Раскрою тебе секрет: ошибку несоответствия типов в C# в рантайме тебе кидает не компилятор сишарпа, её тебе кидает CLR, который выполняет далеко не C#-код, а скомпилированный CIL-код.
Но ты упорно это компилятору приписываешь.

>>1424244
> С условием того, что ты криворукий дебил/индус порождающий портянки низкокачественного кода.
Ты бы посмотрел проекты, о которых речь идёт. Тот же airbnb.
А хочешь, кинь ссылку на свой проект на гитхабе с историей коммитов, и мы составим список ошибок, которые не допустил бы тайпскрипт-компилятор. И бонусом прогоним компилятор по текущему коду и найдём новые баги, о которых ты мог не знать.

>пишешь 100 символов кода для того чтобы получить автокомплит который в целом сэкономит тебе написание 20 символов
Пишешь 0 символов, но type inference (ввведение типов) определяет тип и показывает автокомплит на всех методах.

> Комментариями религия не позволяет пользоваться?
Комментарии могут устареть, код — нет. Аннотации типов в коде.
И теперь вместо описания формы можно потратить время и место на написание комментария о том, почему этот код написан так, как написан, и что он должен выполнять.

> Дурачок, твой код на TS и есть дополнительный (лишний) слой, потому что компилируется в JS, добавляя функционал не языку, а редактору.
Функциональность добавляется как раз языку. Не рантайму, а именно языку, каким его пишет программист, читает программист, и статически анализирует компилятор.
Аноним 29/06/19 Суб 00:29:25 1424260232
>>1424256
> Получается два запроса вместо одного
Чем тебе это мешает? Хочешь ускорить загрузку страницы? Или снизить нагрузку на сервер?
Аноним 29/06/19 Суб 00:37:54 1424262233
>>1424260
>Хочешь ускорить загрузку страницы? Или снизить нагрузку на сервер?

И то и другое
Аноним 29/06/19 Суб 00:49:24 1424266234
>>1424262
То есть ты уже измерил пррфайлером, сколько времени занимает второй запрос на фронте, сколько ты выиграешь миллисекунд и процентов до рендера страницы? И сколько процентов нагрузки ЦП сэкономится на сервере?
Это я так намекаю, что не надо заниматься преждевременной оптимизацией.
Да, плохо, что вместо одного запроса делается два. Но у тебя в коде есть более важные места, над которыми работать, а это пока лучше бросить как есть.
Аноним 29/06/19 Суб 01:02:09 1424271235
Как же хочется ментора...
Аноним 29/06/19 Суб 01:05:56 1424276236
>>1424271
Вот у тебя полный двач менторов и куча чатов в телеге. Было бы желание код писать.
Аноним 29/06/19 Суб 01:08:29 1424277237
image.png (2Кб, 251x30)
251x30
>>1424276
Кодирую, просто хотелось бы прикрепиться к сенпаю и спрашивать его личные практисы.
Аноним 29/06/19 Суб 01:16:11 1424279238
Screenshot20190[...].png (10Кб, 690x89)
690x89
>>1424277
Больше надо кодировать.
Аноним 29/06/19 Суб 01:17:38 1424281239
Аноним 29/06/19 Суб 01:18:32 1424282240
>>1424277
Чего ты ждёшь от ментора? Пиши прямо здесь, тебе аноны пояснят
Аноним 29/06/19 Суб 01:20:03 1424284241
>>1424282
Что скажешь про composition over inheritance?
Аноним 29/06/19 Суб 01:25:55 1424287242
>>1424284
Название само за себя говорит.
Зачем создавать лишние ограничения, связи и иерархии наследованием, если можно положить кусочки функциональности рядом и собрать в модуль покрупнее.
Тот же тренд в архитектуре сервера: микросервисы и прочая хуйня вместо гигантских монолитов.
Чем меньше связность (coupling) кода, тем проще его
1. Писать
2. Тестировать
3. Рефакторить
4. Аутсорсить
5. Ревьюить
6. Выпиливать
7. Оформлять в пакеты и либы
Меньше связность = лучше код.
Аноним 29/06/19 Суб 01:29:25 1424288243
>>1424287
>>1424284
Забыл сказать, что наследование — это сильная связь. Обращение по публичному апи — более слабая связь. Ещё более слабая — отправка событий/сообщений.
Нужно искать золотую середину, а наследование — скорее экстремум.
Аноним 29/06/19 Суб 04:40:02 1424317244
Прошу не кидаться говном, только учу js. Проблема в том, что моя функция не хочет работать (на пасту не буду заливать, объясню тут на примере):
function test (call, back) {call(0); back(0);}
Почему на первый коллбек выдаёт ошибку?
Аноним 29/06/19 Суб 08:11:12 1424326245
>>1424317
Потому что нужно писать
function test (call, back) {call(back);}
Аноним 29/06/19 Суб 08:52:58 1424338246
Добавляемся, инфа о прохождении собеседований на js: winterview101
Аноним 29/06/19 Суб 10:32:32 1424369247
Аноним 29/06/19 Суб 13:09:49 1424429248
>>1424244
>дебил/индус порождающий портянки низкокачественного кода.
Жс порождает трэш [1, "3"] + 1) //1,31, даже гуру лажают, правда они не пишут хеловорлды
>>1424244
>потому что компилируется в JS, добавляя функционал не языку, а редактору.
А ты хотел чтобы все операции оборачивал в проверки в рантайме, чтобы ты валидировал в try-catch? Ещё в браузере такого не хватало
Аноним 29/06/19 Суб 14:46:24 1424531249
>>1424429
Я хотел чтобы все смиренно ждали выхода новой редакции ECMAscript и изучали его старые, а не придумывали себе костыли, потому что не хотят улучшать свои навыки программирования. Вот выйдет новая редакция, добавит функции которых не хватает, но которые заменяются костылем, а пользователи костыля не захотят избавляться от своего приспособления, потому что им придётся переучиваться.
Аноним 29/06/19 Суб 14:55:08 1424540250
>>1424531
>добавит функции которых не хватает
Так ведь это те же костыли, прописанные на внутреннем уровне
Аноним 29/06/19 Суб 15:07:40 1424548251
У кого было также?
Сидел пару вечеров над домашним пет проектом, не работало и не мог понять почему

Сегодня на раслабоне принял литр пивасика, и менее чем за 10 нашел все ошибки.....
Аноним 29/06/19 Суб 15:07:57 1424549252
>>1424548
менее чем за 10 минут *
Аноним 29/06/19 Суб 15:36:55 1424563253
https://jsfiddle.net/72r4dj1c/

Если кто-нибудь разберет мой код - научите пожалуйста удалять заметку по клику на красную кнопку. Смотрел курсы, там все рассказывают про замыкания, this, а я все равно не понимаю как этим пользоваться в моем случае
Аноним 29/06/19 Суб 16:59:42 1424604254
>>1424563
Пиздец ты криворукая обезьяна, я даже в детстве такой говнокод не выдавал. Что, вариант onclick="this.parentNode.parentNode.removeChild(this.parentNode);" не срабатывает?
Аноним 29/06/19 Суб 17:14:39 1424608255
>>1424604
Этот пидорас один див в другой засунул, на него навести нельзя даже нормально
Аноним 29/06/19 Суб 17:17:39 1424609256
Аноны, привет!

Опыта программирования нет совсем, знаю только какие-то базовые вещи и хожу в гугл за ответами. В качестве развлечения решаю задачки на codewars. Есть задача https://www.codewars.com/kata/mumbling/javascript

Вот мое решение:
https://www.codepile.net/pile/VPqeo2PL

В гугл практически не заглядывал, пытался сам выстроить логику решения из тех знаний, которые име. 0 знаний. Когда посмотрел бест практис решений по этому заданию впал в легкое уныние. Насколько я безнадежен?
Аноним 29/06/19 Суб 17:21:57 1424612257
Codewars или leetcode?
Аноним 29/06/19 Суб 17:22:28 1424613258
>>1424563
Кнопку закрытия нужно добавлять при помощи псевдоэлемента, а не отдельного дива, тогда она у тебя не будет мерцать постоянно из-за того что поочередно срабатывают твои обработчики событий.
Убирать надо добавлением обработчика onclick перед тем как ты создаешь новый элемент. Т. е. сначала создаешь элемент, потом добавляешь ему обработчик, и только после этого добавляешь его родительскому элементу.
Аноним 29/06/19 Суб 17:23:41 1424614259
>>1424612
Литкод конечно. Кодварс слишком перегружен + нет теста производительности твоего кода и подробных описаний решений.
Аноним 29/06/19 Суб 17:44:19 1424618260
>>1424614
Hakerrank Там хотя бы учебный материал есть. Даже не на хинди
Аноним 29/06/19 Суб 18:39:45 1424630261
1.jpg (60Кб, 1015x427)
1015x427
>>1424609
На пикриле бестпрактис, а то что там это не бестпрактис, а самый короткий код из возможных, потому что по производительности сосёт.
Аноним 29/06/19 Суб 18:48:27 1424633262
>>1424630
Отступы уже не бестпрактис?
Аноним 29/06/19 Суб 18:50:18 1424635263
>>1424633
Это уже распределение задач. Отступами IDE занимается, а не программист.
Аноним 29/06/19 Суб 18:58:55 1424639264
>>1424630
То есть, если код сокращен до 3-4 строк вместо 30, то это еще не значит, что он оптимально работает? И те решения и бест практис для меня пока очень трудочитаемы, а вариант на твоем пике очень понятен.
Аноним 29/06/19 Суб 20:24:34 1424663265
Программисты, подскажите, как во vue/vuex вызывать геттер через событие инпут с передачей значения, введённого в этот инпут. Есть массив объектов, который нужно фильтровать через инпут, живой поиск короче.
Аноним 29/06/19 Суб 20:41:49 1424667266
>>1424639
Ну вот это и есть "бест практис" - то что будет использовано на практике. На практике используется код, который поддерживает баланс вида "читаемость-оптимизация", с большим приоритетом у читаемости.
Аноним 29/06/19 Суб 20:55:26 1424671267
Аноним 29/06/19 Суб 21:13:35 1424678268
Аноним 29/06/19 Суб 21:16:35 1424679269
>>1424671
По ссылке мутаторы, перешёл на страницу геттеров, там пишут
store.getters.getTodoById(2), а где это прописывать? В computed? И что в аргументе передавать? event.target.value?
Аноним 29/06/19 Суб 21:22:05 1424680270
>>1424679
Непонятно что тебе не понятно. Геттер возвращает в данном случае функцию. В компьютед конечно. Передавай что тебе надо.
Аноним 29/06/19 Суб 21:33:43 1424684271
>>1424680
Типа такого?
@input="filterArray"

computed: {
filterArray: function (e) {
this.$store.getters.doThis(e.target.value)
}
}

getters: {
doThis: state => query => {
return state.array.filter(item => item.include(query))
}
}
Аноним 29/06/19 Суб 21:42:32 1424689272
>>1424684
v-model="query"

computed: {
serchResult() {
return this.$store.getters.doThis(this.query)
}
}

getters: {
doThis: state => query => {
return state.array.filter(item => item.include(query))
}
}
Аноним 29/06/19 Суб 21:53:24 1424696273
>>1424689
А query что здесь? Вычисляемое свойство компонента?, и как searchResult вызывать через @input?, как введённое значение передавать в геттер? Ещё больше запутался.
Аноним 29/06/19 Суб 21:57:54 1424697274
>>1424696
Пиздец

<input v-model="query">
<ul>
<li v-for="item in searchResult">{{ item }}</li>
</ul>

export default {
data() {
return {
query: ""
}
}
}
Аноним 29/06/19 Суб 21:59:00 1424699275
>>1424697
export default {
data() {
return {
query: "",

},
computed: {
serchResult() {
return this.$store.getters.doThis(this.query)
}
}
}
}
Аноним 29/06/19 Суб 22:05:40 1424703276
А как правильно отрисовать компонент в зависимости от роута? Есть компонент поиска в компоненте хидера, на главной странице список элементов в виде ссылок, при переходе на страницу определенного элемента поиск не нужно показывать.
Аноним 29/06/19 Суб 22:52:30 1424723277
Пример:
Есть сайт с двумя страницами:
yoba.ru и yoba.ru/kek

Если использовать react-router для перехода между страницами и не прописать на серверной стороне ответ на yoba.ru/kek, то посетитель получит 404 при попытке обращения к /kek (если вобьёт адрес в строку браузера, а не перейдёт через объект Link)?
Аноним 29/06/19 Суб 22:58:56 1424726278
>>1424723
Чем yaba.ru/#kek хужее yaba.ru/kek ?
Аноним 29/06/19 Суб 23:28:53 1424733279
>>1424726
У меня на данный момент сайт вообще по факту одностраничный, (вместо перехода между страницами друг друга подменяют компоненты реакта).

Решил разбить сайт на отдельные страницы, чтобы заходить можно было не только на главную (или сохранённую в куках); и, заодно, чтобы прочие страницы тоже индексировались поисковиками.

Проблема в том, чтобы сохранять state при переходах между страницами. Если использовать react-router, то состояние можно хранить попросту в корневом элементе либо в контексте.
Аноним 30/06/19 Вск 00:07:39 1424744280
2019-06-2923-56[...].png (20Кб, 672x497)
672x497
2019-06-2923-59[...].png (689Кб, 1208x727)
1208x727
Помогите Ананасы. Пытаюсь познавать JS с помощью самостоятельного мозгоебства и гугла. Короче есть слайдер, что-бы переключение происходило путем нажатие на конкретную кнопку в слайдере я вроде как сделал. Теперь мне бы как-то завязать кнопки "вперед" и "назад" на этом слайдере. Что-бы они понимали какой слайд сейчас активен и переключали на следующий\предыдущий. Мне надо сделать как-то так, что-бы при нажатии кнопки, он находил элемент в массиве с классом ".active", извлекал индекс данного объекта в массиве, убирал у него ".active", и давал элементу в массиве на единицу меньше или больше.Вначале я получил массив путем querySelectorAll, потом я понял, что это и не массив вроде как. Переделал его в массив путем Array.from. Короче я запутался жестко, как мне сделать проверку на наличие объекта с классом в массиве + получить его индекс в массиве. Только мне нужно понять как это работает, а не просто решение для копировать\вставить. Я же всё-таки учусь.
Аноним 30/06/19 Вск 01:33:23 1424774281
>>1424733
Ну ты бы хоть сказал, что у тебя за бек. В webpack-dev-server есть опция historyFallbackAPI (или как-то так) как раз для этого. В express'e просто можно описать сначала какие-то конкретные пути и ответы на них (ну там /public, /static, /api), а для всего остального, в предположении что это роуты, сделать * просто. Можно ещё сделать сервис воркер, чтобы он все запросы, кроме уже обозначенных /public и т.п., подменял на запросы к корню /.
Аноним 30/06/19 Вск 01:40:25 1424775282
Пиздец, очередной вкатывальщик уровня:
шаг 1. alert('hello world')
шаг 2. аноны, как сделать слайдер?
Аноним 30/06/19 Вск 01:40:42 1424776283
Аноним 30/06/19 Вск 09:22:21 1424796284
>>1424699
Ничего не происходит

<input id="i" v-model="search" type="text" placeholder="Поиск..." autofocus class="search-game">

export default {
name: 'my-search',
data() {
return {
search: ''
}
},

computed: {

searchResult() {
return this.$store.getters.updateGames(this.search)
}
}

updateGames: state => query => {
return state.games.filter((game) => {
return game.title.toString().toLowerCase().includes(query.toString().toLowerCase())
console.log(state.games)
})
}
Аноним 30/06/19 Вск 10:19:03 1424801285
Аноним 30/06/19 Вск 10:49:47 1424806286
>>1424801
Спасибо за решение, у меня несколько компонентов. В Home.vue вывожу список через v-for, в Header.vue находится Search.vue, в котором уже input находится, как мне правильно прописать все? Мне эту функцию searchResult нужно протащить из Search.vue в Home.vue?
Аноним 30/06/19 Вск 11:06:51 1424811287
Аноним 30/06/19 Вск 11:11:55 1424812288
>>1424806
Зависит от того как ты searchResult буешь использовать
1. Если searchResult нужен в нескольких местах в приложении, можешь сдель его стейтом и обновлять через actions
2 Если searchResult нужен локально то
2.1 Зачем тебе отдельный компонент для обычного input? Просто помести весь код в Home.vue
2.2 Если у тебя навороченный инпут Search.vue и ты хочешь его переиспользовать, то моделируй нужные свойства инпута для компонента Search.vue. Как минимум инпут эвент и используй это в родителе
Аноним 30/06/19 Вск 11:25:11 1424816289
>>1424811
Тебе правельнее searchResult сделать глобальным стейтом, а комитить новое состояние с параметрами query и categoryId
Аноним 30/06/19 Вск 13:00:21 1424838290
>>1424531
>потому что им придётся переучиваться
Нет, типы выкинул и вот тебе жс-костыль, как-то там работает и норм
Аноним 30/06/19 Вск 13:19:15 1424848291
Аноним 30/06/19 Вск 14:06:23 1424875292
>>1424848
preventDefault надо делать в хендлере сабмита, а не через 7 стекфреймов после
Аноним 30/06/19 Вск 14:20:28 1424889293
>>1424812
Я поместил весь код в Home. При вводе запроса в инпут идет фильтрация массива, но при закрытии инпута у меня в скрипте
var inp = document.querySelector(".search-game");
inp.value = "";
инпут очищается, но отфильтрованный массив остается на странице, как изначальный выводить?

https://codesandbox.io/s/driv3rsimple-ju7hc
Аноним 30/06/19 Вск 14:33:28 1424900294
>>1424875
так вроде ивент там, который нужен, ну я в инструментах разработчика посмотрел тип сабмит (а если использовать то что я скинул, то там тип редистэйтчендж)
Аноним 30/06/19 Вск 14:34:20 1424901295
>>1424875
зы спосибо за ответ
Аноним 30/06/19 Вск 17:25:16 1424973296
>>1424889
Если вместо type="text" задать "search" при нажатии на появляющийся крестик фильтр сбрасывается, а как баттону задать такое поведение в инпуте типа текст?
Аноним 30/06/19 Вск 17:39:35 1424976297
>>1424973
Чому бы тебе по нажатию на кнопку не сделать search = '' ?
Аноним 30/06/19 Вск 18:19:19 1424989298
image.png (44Кб, 1250x320)
1250x320
>>1420986 (OP)
Прошу знающих анонов объяснить эту НЕХ, кидаю в дроп зону файл, если отслеживаю дататрансфер, то он показывает что файлов нет, если отслеживаю дататрансфер.файлз, то файл есть и длина = 1.
Что за хуйня?
Аноним 30/06/19 Вск 19:37:51 1425041299
Анон, как мне рассчитать вероятность? К примеру у менять есть поток последовательных чисел (одно идёт за другим), я могу их считывать постоянно (получать последнее число), как мне предугадать к примеру число 200? Может формула какая? Нужно именно попытаться предугадать, потому что поток идёт относительно быстро.
Аноним 30/06/19 Вск 20:15:42 1425057300
>>1425041
Не для тебя задача. Оставь её и ищи другую. Это сложные задачи, у тебя глубокие провалы в самой-самой базе.
Аноним 30/06/19 Вск 20:26:38 1425065301
Аноним 30/06/19 Вск 20:42:59 1425081302
>>1425065
Так он прав, ты же дебил, если сам сообразить не можешь.
Аноним 30/06/19 Вск 20:53:51 1425087303
>>1425081
Ну я дурак, но я хочу понять.
Аноним 30/06/19 Вск 20:57:25 1425090304
>>1425087
Для начала пойми что расчет "вероятности" в данном случае тебе не поможет с "предсказанием"
Аноним 30/06/19 Вск 20:57:45 1425091305
>>1425087
>но я хочу
Хотеть не вредно.
Аноним 30/06/19 Вск 20:58:12 1425092306
Аноним 30/06/19 Вск 21:00:17 1425093307
Аноним 30/06/19 Вск 21:03:53 1425099308
>>1425087
Что такое "вероятность", по-твоему? Вот ты даже этого не понимаешь. А задача на порядок сложнее, ты бы её сформулировал адекватно.

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

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

Опиши детально задачу, какие там проблемы и какие у тебя идеи есть, и может тебе чего посоветуют уже как нормальному человеку, а не тупой школоте.
Аноним 30/06/19 Вск 22:12:23 1425159309
Анон, я только начал знакомство с нодкой и вообще с js в целом, поясните почему это не работает? https://pastebin.com/1E6uyq5F
Аноним 30/06/19 Вск 22:15:40 1425161310
Пацаны. Херачу на ангуляре уже третий год, саиты делал, сейчас админки\црм запиливаю, с редаксами всякими и вроде даже не гавнокод так говорили. Попутно немного тыкаюсь в ноду, делал для одного из проектов апиху, с базой и всей хуйней, в принципе збс вышло. Еще могу в юнит и е2е тесты, но у нас их не пишут так что уже и забыл все нахуй лол.

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

Или в тупую уволиться, написать в резюме что я уже сеньор и запрашивать 3к. А там как повезет. Как аноны становились помидорами и устраивались на нормальные зарплаты?
Аноним 30/06/19 Вск 22:17:07 1425164311
>>1421456
мимо крок 30лвл собрался вкатываться в js. дс

стОит? или ппц поздно?
Аноним 30/06/19 Вск 22:22:51 1425169312
>>1425161
Последнее, но не увольнятся, а просто в резюме написать что сеньор
Аноним 30/06/19 Вск 23:34:21 1425217313
>>1425159
Ты как в анекдоте, когда Чапаев рассказывает про устройство паровоза, а Петька "всё понятно, но куда лошадь цеплять надо".

У тебя функция асинхронная. Ты не можешь так писать цикл.

Я не очень понимаю, что это за функция request, но смысл в том, что она должна класть коллбэк в очередь обработки. Ты в принципе не можешь вернуть из неё какие-то данные и так обрабатывать в цикле.

В общем тут всё не так. В классическом JS подобный цикл реализовать невозможно. В более современном объект может возвращать "промис" и результат можно ждать через await, но я бы искренне тебе советовал сначала сломать мозг и разобраться с классическим подходом с коллбэками.
Аноним 30/06/19 Вск 23:38:35 1425221314
>>1425217
>>1425159
И даже с точки зрения обычного программирования я не понимаю, что ты хотел написать. Почему у тебя в цикле условие "i <= result()", зачем это, что за логика. Тем более, что result() ничего не возвращает.

Но даже если бы возвращала, начались бы проблемы с асинхронностью. Тебе надо поработать с более простыми вещами, написанием обычных циклов и т.п., ты ещё в самом-самом начале пути, судя по всему. Дорогу осилит идущий, удачи.
Аноним 01/07/19 Пнд 01:54:54 1425248315
Аноним 01/07/19 Пнд 03:22:25 1425254316
>>1425164
Хочешь - вкатывайся, не хочешь - не надо. Все просто. Пока возраст-то норм, а вот что делать после 40 - хз.
Аноним 01/07/19 Пнд 03:53:24 1425256317
>>1425254
Все очень просто.
с 30 до 40 лет вкатываться в офисное программирование ради опыта и зп 30килорублей, с юношами и школьниками.
После 40 лет из-за биологической старости уже никому не нужен на очную ставку - тут либо на завод идти инженером-программистом 2й категории или охранником в пятерочку, НО с 10ью годами коммерческого опыта
рынок фриланса будет открыт ИЛИ можно возглавлять такие же чудные галерки, где кодить уже не нужно, но придется врать всем соискателям о великих целях предприятиях и исключительных заказчиках, и удерживать завтраками.

Тем более, JavaScript это не Delphi или Ocaml, будет востребованным еще лет 20 (как раз до биологической смерти), отчасти на легаси проектах (Реакты 50й версии итогдалие)
Аноним 01/07/19 Пнд 06:01:01 1425272318
>>1425256
а в сша люди и в 40 вкатываются
а еще говорят в рашке народу не хватает когда по всем вакухам такая тема, не только в кодинге
Аноним 01/07/19 Пнд 06:55:09 1425276319
>>1425272
ну можно на старости лет (в 40 по рашкинским меркам) и в США попробовать

народу не хватает, потому что ейчарам нужны сеньоры в 25 лет
Аноним 01/07/19 Пнд 07:58:59 1425284320
>>1425272
Ты США не приплетай, это по отношению к рашке как параллельная вселенная. Это только у нас ищут сеньоров в 25 лет на позицию джуна с зп в 12к.
Аноним 01/07/19 Пнд 08:49:49 1425290321
>>1425284
>на позицию джуна с зп в 12к.

Молодой человек, картриджи еще менять будете
Аноним 01/07/19 Пнд 09:01:17 1425292322
>>1424216
Чертов конкурент! Мне тоже еле отвечают, но сейчас лето хули.
Аноним 01/07/19 Пнд 09:22:50 1425296323
>>1421799
> явисты в гуглях вымерли практически. там теперь го-аутизм и как обычно крестобляди.

Кукаретики такие кукаретики.
Аноним 01/07/19 Пнд 09:29:10 1425298324
Аноним 01/07/19 Пнд 09:29:37 1425299325
>>1424216
а что ты не пытался устроиться дистанционно?
Аноним 01/07/19 Пнд 09:42:24 1425304326
>>1425298
Мне нужно знать, какое событие срабатывает при закрытии инпута типа search, когда нажимаешь на синий крестик, чтобы его прописать в скрипте для инпута типа текст.
Аноним 01/07/19 Пнд 09:46:07 1425306327
>>1425304
Вот ты уже на этом этапе не понимаешь, что пытаешься костыли делать?
Аноним 01/07/19 Пнд 09:48:36 1425309328
>>1425306
А как мне это сделать
>Если вместо type="text" задать "search" при нажатии на появляющийся крестик фильтр сбрасывается, а как баттону задать такое поведение в инпуте типа текст?
Аноним 01/07/19 Пнд 09:51:28 1425313329
>>1425309
И да, я знаю, что можно кастомный крестик сделать через ::-webkit-search-cancel-button, но он же не везде поддерживается.
Аноним 01/07/19 Пнд 10:02:20 1425318330
devs.jpg (65Кб, 1920x447)
1920x447
Посоны, мне кажется или услуги разработчика на реакт не востребованы в российском фрилансе. Мельком пробежался по заказам, wp, wp, modx, как и 10 лет назад. Да и на апворке в топе wp-девелоперы через одного.

Аноним 01/07/19 Пнд 10:05:03 1425320331
>>1425318
Мне кажется, разработчики с упором на цмс берут больше разовых заказов, поэтому у них рейтинг и выше. А реакт разработчики находят удаленку 1 раз и кормятся с нее.
Аноним 01/07/19 Пнд 10:11:16 1425324332
Помогите придумать пет-проект. Хочу залить на гитхаб что-нибудь, а дефолтный круд как-то стремно.
Аноним 01/07/19 Пнд 10:18:26 1425332333
>>1425309
Ты хочешь сделать кнопку, при нажатии на которую будет сбрасывать текст в инпуте?
Аноним 01/07/19 Пнд 10:22:57 1425336334
>>1425332
Нет, я хочу, чтобы при закрытии инпута, у меня помимо того, что он очищается нужно убирать фильтр с массива, и выводить изначальный список. Если сделать инпут типа search, то при закрытии идет нужное мне поведение, и мне нужно знать, что именно с инпутом происходит в данный момент, чтобы прописать это для инпута типа текст.

https://codesandbox.io/s/driv3rsimple-ju7hc
Аноним 01/07/19 Пнд 11:14:55 1425349335
>>1425336
Твои проблемы из-за хуевого дизайна. При поиске результаты должны выливаться в отдельный селект, тогда бы подобных проблем у тебя не было.
Аноним 01/07/19 Пнд 11:43:06 1425357336
>>1425349
>отдельный селект
Не уверен, что понял тебя. Речь про тег <select>? При чем здесь это. Список выводится в див, есть инпут, при вводе список фильтруется, при закрытии инпута фильтр должен сбрасываться, т.к. инпут очищается -> выводится изначальный список. О каком дизайне речь, вроде простейшая процедура. Или это троллинг такой или мы о разных вещах говорим.
Аноним 01/07/19 Пнд 11:44:23 1425358337
>>1425357
Я про выпадающий список с результатами поиска.
Аноним 01/07/19 Пнд 11:46:04 1425359338
>>1425358
И я про него же. Он и так в отдельный див выводится, кроме списка там ничего нет. Есть связка инпут + див, как тут хуевый дизайн (разметка?) можно нагородить.
Аноним 01/07/19 Пнд 11:47:25 1425360339
>>1425359
В твоем примере результаты поиска выливаются в основную плитку.
Аноним 01/07/19 Пнд 11:50:52 1425361340
>>1425360
Пусть выливаются, толку от того, что я в основной див ещё див засуну.
Аноним 01/07/19 Пнд 11:53:11 1425362341
>>1425361
>Пусть выливаются
Разве сейчас у тебя проблемы не из-за того, что 2 источника данных показываются одним и тем же местом?
Аноним 01/07/19 Пнд 12:16:50 1425371342
Аноны, у меня есть родительский компонент и два дочерних, нужно сделать, чтобы при нажатии на кнопку в первом дочернем, менялся стейт во втором дочернем компоненте. Я сделал так, что у меня меняется стейт родительского компонента, который потом передается в дочерний, но это получается такое дублирование. Как все это правильно сделать? Нужно событие вешать?
Аноним 01/07/19 Пнд 12:27:39 1425372343
>>1425371
правильно через Redux Recuder
Аноним 01/07/19 Пнд 13:32:41 1425398344
>>1425256
40 летние погромисты так плохо котируются?
Аноним 01/07/19 Пнд 13:52:50 1425407345
>>1425398
Смотря какие, кого с руками отрывать будут, а кто нихуя не делал в пидорашенской контрое, без ачивок и знакомств. Ну ты понел, лучше студента-задрота со смазливой мордашкой нанять если что.
Аноним 01/07/19 Пнд 14:29:33 1425441346
>>1425362
У меня один источник - .json файл, элементы которого выводятся в этом диве в цикле.
Аноним 01/07/19 Пнд 14:46:02 1425449347
>>1425441
Я сейчас говорю про плитку со списком итемов. Сейчас плитка показывает результаты поиска, если они есть, или данные из выбранной категории, если нет. Если ты сделаешь так, что результаты поиска будут показываться в одном месте, а список по выбранной категории - в другом, то баг исчезнет сам собой.
Аноним 01/07/19 Пнд 15:23:49 1425464348
>>1425449
Понятно, ты код не смотрел, категории только в разметке, в скрипте они не участвуют.
Аноним 01/07/19 Пнд 15:27:11 1425465349
>>1425464
>в скрипте они не участвуют.
Это абсолютно неважно в контексте данной проблемы.
Аноним 01/07/19 Пнд 15:29:42 1425466350
>>1425465
Походу все-таки произошел троллинг, ещё раз - логика для них не написана, это просто список ссылок, которые никуда не ведут. Если весь блок с ними удалить - ничего не изменится.
Аноним 01/07/19 Пнд 15:40:14 1425468351
>>1425466
Я это понимаю. Окей, перечитай мой пост, заменив слова "из выбранной категории" на то, как ты называешь тот список данных, который хочешь показать пользователю, пока поиск не активен.
Аноним 01/07/19 Пнд 16:00:13 1425475352
>>1425468
>тот список данных, который хочешь показать пользователю, пока поиск не активен.
Пока инпут пустой выводится массив объектов из .json'а. При вводе запроса в инпут идет фильтрация массива по строке - соответствие названию объекта, при постепенной очистке инпута Backspace'ом список выводится полностью. У меня див и инпут связаны, инпут пустой - выводится весь список, в инпуте что-то введено - фильтрация списка по вводу. Всё. Я уже третий или четвёртый раз одно и тоже пишу. Почему бэкспейсом список возвращается в исходное состояние, а при клике на кнопку - нет. Хотя я прописал, что при клике input.value="", но ничего не происходит, только инпут очищается, а список остается отфильтрованным.
Аноним 01/07/19 Пнд 16:03:08 1425479353
>>1425475
А который можно загуглить за 5, а разбирать полчаса? А если загуглить не получается?
Аноним 01/07/19 Пнд 16:04:30 1425481354
>>1425479
>,
Кто-то из нас сумасшедший, пусть буду я, забей.
Аноним 01/07/19 Пнд 16:07:05 1425488355
>>1425475
>идет фильтрация массива
Мне кажется, твоя проблема в этом. Держи отдельно данные для отображения в основной плитке, и отдельно результаты поиска, пускай они у тебя пока что берутся из одного места (из жсона, как ты сказал). Когда ты начнешь держать их отдельно, то и понять, что отображать их надо отдельно, тебе станет легче.
Аноним 01/07/19 Пнд 16:54:15 1425506356
>>1423082
>Для замыкания это контекст внешней функции,
Разве? Немного запутался на эту тему, но ведь из замыкания не получить контекст внешней функции без bind/переменной с this из лексического окружения.
Аноним 01/07/19 Пнд 20:34:18 1425637357
изображение.png (7Кб, 625x214)
625x214
изображение.png (11Кб, 577x217)
577x217
изображение.png (8Кб, 703x179)
703x179
изображение.png (8Кб, 600x187)
600x187
Чуваки, вы видели Visual Studio Code (бесплатный) и установленный в него ESLint с eslint-config-airbnb-base?
Это просто 10 из 10. Я бы в жопу давал за такие среды разработки.
Всё для людей. Подсказывает где ты наебался, где можно использовать const, а где let. Где как лучше переделать.
Охуеть просто.
ESLint вообще ставится в папку проекта и создаётся файл с настройками, который под себя очень легко настраиваешь. При ошибках он сразу показывает имя настройки, которую можно нагуглить и почитать аргументированный пример кода.
https://eslint.org/docs/rules/no-plusplus например.
А сколько там доступно аддонов https://marketplace.visualstudio.com/VSCode
И ставятся они парой кликов. Слева кнопка аддонов, сразу открывается список рекомендаций и поиск, вбиваешь в поиск имя и сразу ставишь кликом.

Я пользую webstorm и он просто кусок говна по сравнению с этим даром богов.
Аноним 01/07/19 Пнд 20:37:04 1425639358
>>1425637
Prettier установи, вообще охуеешь.
Аноним 01/07/19 Пнд 20:38:08 1425641359
изображение.png (12Кб, 674x220)
674x220
>>1425637
Против вот этой вот хуеты в вебсторме.
Ещё и лампочка слева появляется через раз, её ловить надо.
Аноним 01/07/19 Пнд 21:19:34 1425673360
Ребята, сдал курсовую. Бабушка забирает на дачу копать картошку мне 19 лет, тру стори, я не троль. Но я хочу продолжать учить js. Чего почитать для пассивного изучения, т.е. без решения задач и прочей практики?
Аноним 01/07/19 Пнд 21:26:52 1425684361
>>1425673
Доки скачай, книжку по алгоритмам. Редакс/редукс/роутер/гайды по контурингу.
Аноним 01/07/19 Пнд 21:30:02 1425688362
>>1425684
Книжку какую именно
Аноним 01/07/19 Пнд 21:38:55 1425699363
Аноним 01/07/19 Пнд 21:39:35 1425701364
zgwprvtucjt21.jpg (705Кб, 1512x2688)
1512x2688
https://ideone.com/T5tBu7

Анон, платина для js.
Как сделать последовательное выполнение с задержкой?
А если серъезнее - есть значит ПЛК Omron, есть библиотека omron-fins, есть сервер с node.js, есть сишник-байтоёб.

Задача такая - имея список тегов (там их много и они идут в порядке возрастания диапазонами) надо опрашивать ПЛК.
Логика библиотеки такая - с одной процедуры уходит запрос (read) (а в коллбек - кол-во отправленных байт), с другой функции (reply) считываешь ответ (там emit видимо). По правильному - функция GetOmron должна через какое-то время (это видимо через Promise делается?) выдать результат. Эта функция будет к разным диапазонам запрашиваться. Загвоздка ещё в том, что если ПЛК не ответил, то reply не будет вызван - надо делать таймаут пару секунд.

Я заебенил через привычный мне switch-case и не знаю как сделать return из функции, чтобы он вызывался уже после всех опросов. Также я не пойму, как сделать на promise всю эту трехомудия без switch-case.

Если кто сможет в кратце объяснить как мне следует написать, буду премного благодарен
Аноним 01/07/19 Пнд 21:52:04 1425710365
>>1425637
>Я пользую webstorm и он просто кусок говна по сравнению с этим даром богов.
Добро пожаловать.
А теперь еще вспомни, что тут вшитая поддержка ts и упади в обморок.
Аноним 01/07/19 Пнд 21:54:01 1425713366
>Не пользоваться редактором богов
vim конечно
Аноним 01/07/19 Пнд 21:54:01 1425714367
>>1425637
Поставь еще цветные скобки, вообще отвал бошки
Аноним 01/07/19 Пнд 22:12:10 1425743368
>>1425701
>Как сделать последовательное выполнение с задержкой?


async function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

await sleep(2000); //задержка выполнения кода на 2 секунды

Только использовать await можно только в асинхронных функциях, а асинхронная функция всегда возвращает промис, поэтому тебе нужно переписать код учитывая это.
Аноним 01/07/19 Пнд 22:19:06 1425755369
>>1425713
Так речь не про редакторы
Аноним 02/07/19 Втр 02:32:55 1425929370
>>1425673
У тебя ноута нет, что-ли? За 15 т.р. можно новый годный ноут купить, годный для проганья, за 6 т.р б/у.

Без практики сложно книжки читать. На чём ты их читать будешь, если книжки все электронные?

Найти что-нибудь про теорию, интернет-протоколы и т.п. Или про операционные системы. Полезно.
Аноним 02/07/19 Втр 06:06:09 1425951371
>>1425929
>За 15 т.р. можно новый годный ноут купить
это какой?
Аноним 02/07/19 Втр 06:09:38 1425952372
>>1425688
я лично читаю грокаем алгоритмы лол
Аноним 02/07/19 Втр 06:10:08 1425953373
>>1425743
Так не пойдет, там не всегда надо ждать 2 секунды, обычно reply приходит за сотню--другую миллисекунд (, но в 10% случаях ничего не приходит)
Просто сделать delay не канает
Аноним 02/07/19 Втр 06:30:49 1425955374
лень разбираться но что мешает все асинхронные вызовы писать через await в async функции, они все будут ждать друг друга по очереди
Аноним 02/07/19 Втр 06:42:28 1425956375
>>1425701
Тебе тут промисы не нужны.

Я так понимаю, смысл задачи в том, что раз в 30 секунд опрашивается сервер. Если в течении двух секунд сервер не отвечает, то запрос надо прибить. Если отвечает, то ответ сохранить в какой-то массив, чтобы потом выдать по другому запросу. Так?

Если запросы не перекрываются, то можно поступить так:
Ты создаёшь переменную handler_request_killer, которая доступна и для client.reader
В момент обращения к client.reader делаешь
handler_request_killer = setTimeout(request_killer, 2000)

request_killer должен прибивать запрос client.reader, который ты отправил, и делать повторный вызов client.reader.

а в client.reader нужно нужно отменять вызов request_killer через clearTimeout

Идея примерно такая. Небольшие нюансы могут быть. Если не можешь отменить client.reader, то надо чуть усложнить, чтобы хендреры друг друга не перетирали и чтобы не было проблем, если вдруг client.reader пришлёт данные через 2.5 секунды, у тебя дублирование тогда будет, скорее всего это плохо


Аноним 02/07/19 Втр 06:58:59 1425959376
Народ подскажите кто можно почитать, про использование javascript кода, с например c++ программе? Как скажем это реализовано в движке cocos2d-x где ты можешь писать на яваскрипт, но конечное приложение всеравно компилиться в си, и в андройд скажем запускается как нативное приложение через android NDK. Я как понимаю нужно использовать движки типа spodermonkey или v8. Но насколько это тривиальная задача? А есть ли где либо какие-нибудь примеры

да исходники кокоса открыты, но не хотелось бы убить несколько вечеров на их изучение, куда было бы удобнее почитать матчасть и посмотреть пару маленьких пнимеров
Аноним 02/07/19 Втр 07:06:45 1425961377
>>1425953
Чтобы не ждать, тебе нужно делать асинхронный запрос и также получать его ответ через await. Сейчас у тебя просто какая-то лютая хуета написана с нулевыми таймаутами, непонятно зачем, которую разбирать не хочется.
Аноним 02/07/19 Втр 07:09:09 1425962378
>>1425956
>handler_request_killer

В голос. Для таких вещей придумали таймаут у запросов, а также функцию которая выполняется при таймауте.
Аноним 02/07/19 Втр 07:11:43 1425963379
>>1425961
Да не нужны тут никакие await и промисы, с которыми надо ещё остальной код дружить. Эта задача красиво решается самыми обычными коллбэками. Классическая задача. Есть нюансы с тем, как тут работает объект client, можно ли его закрыть, сколько попыток нужно сделать и т.п.

Аноним 02/07/19 Втр 07:11:45 1425964380
>>1425959
> Как скажем это реализовано в движке cocos2d-x где ты можешь писать на яваскрипт, но конечное приложение всеравно компилиться в си

Компилятор переделывает JS код в код на С, суть в том, что не весь функционал JS доступен, и никто тебе не напишет React спашку скомпилированную в С, иначе так бы все и делали.
Аноним 02/07/19 Втр 07:12:43 1425965381
>>1425962
Это только если этот объект поддерживает таймауты. Что не факт.
Аноним 02/07/19 Втр 07:15:01 1425966382
>>1425963
>Эта задача красиво решается самыми обычными коллбэками.

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

>с которыми надо ещё остальной код дружить

Можно и не дружить, а делать всё внутри функций, вообще звучит как незнание промисов и их боязнь. Тебе бы лучше книжку по асинхронному программированию почитать, а не советы давать.
Аноним 02/07/19 Втр 07:17:24 1425967383
>>1425965
Любой запрос это поддерживает, единственное, что он может не поддерживать, так это функцию которая выполняется при таймауте, но это решается обертыванием всего запроса в промис при помощи util.promisify ноды и написание нужной логики в блок catch.
Аноним 02/07/19 Втр 07:18:48 1425968384
>>1425964
Да я понимаю, вот и спрашиваю, что конкретно нужно сделать, как-то описать реализацию js кода в c++?
Аноним 02/07/19 Втр 07:25:19 1425969385
>>1425966
Промисы для других задач. Промисы нужны тогда, когда тебе надо ждать результат конкретного запроса. А здесь тебе нужно ждать, что произойдёт раньше, ответ, либо таймаут. Это абсолютно разные вещи, прямая противоположность.

>>1425966
>Можно и не дружить, а делать всё внутри функций, вообще звучит как незнание промисов и их боязнь. Тебе бы лучше книжку по асинхронному программированию почитать, а не советы давать.
Тебе самому нужно учиться пользоваться языком, а не клепать кривой говнокод.
Аноним 02/07/19 Втр 07:28:21 1425971386
>>1425967
Ты понимаешь, что это называется "через жопу"?

У тебя запрос легко может не поддерживать, потому что это объект с каким-то интерфейсом, у которого параметра "таймаут" может не быть. Который внутри, быть может, ещё объект подобный вызывает, и тоже без таймаута. А через пару слоёв только будет какой-нибудь сокет, но к его интерфейсу ты не доберёшься.

А делать бесконечные обёртки - это говнокод и через жопу. Из-за таких, как ты, и репутация у языка соответствующая.
Аноним 02/07/19 Втр 07:34:23 1425973387
>>1425971
>У тебя запрос легко может не поддерживать

Покажи мне библиотеку/фреймворк для клиент-серверных приложений, которые не имеет поддержки таймаутов у запроса.

>А делать бесконечные обёртки - это говнокод и через жопу. Из-за таких, как ты, и репутация у языка соответствующая.

Никто и не говорит про бесконечные обёртки, говорят про оживление легаси дерьма который не имеет асинхронного интерфейса. И лучше уж обернуть написав один раз util.promisify чем лепить калбэк.
Аноним 02/07/19 Втр 07:35:18 1425974388
>>1425968

>>1425964
Оказалось на сайте мозилы довольно доступно описано
Аноним 02/07/19 Втр 07:37:57 1425975389
>>1425969
>ждать результат конкретного запроса.
>нужно ждать, что произойдёт раньше, ответ, либо таймаут

Не перестаю проигрывать с твоей тупости. Ты понимаешь, что ответ/таймаут это и есть результат конкретного запроса? Если отслеживать нужно только ответ/таймаут конкретного запроса и очередность этих запросов не имеет значения, то тогда тем более нужно делать всё через промисы, используя Promise.all если ты динозавр, если нормальный человек, то в ход идёт bluebird или аналогичная библиотека.
Аноним 02/07/19 Втр 07:44:02 1425977390
>>1425956
нет, там именно КАЖДЫЙ запрос с таймаутом, т.к. связь в цехе плохая, то часть пакетов не доходит.

>>1425975
Я тоже считаю, что надо через Promise выкрутиться. На rejected таймаут, на fullfilled как раз reply от клиента.

Про promise.all нельзя - ПЛК может только последовательно отвечать.

>>1425961
нулевые таймауты - там раньше по 100, 200 мс было, я эксперементировал, но получилось, что можно без задержек после ответа запрос посылать.

Сегодня еще посижу до часу ночи, поди рожу чего-нибудь правильного и лаконичного.
Аноним 02/07/19 Втр 07:45:47 1425979391
>>1425973
Очень многие клиентские оболочки. Ты же не всегда напрямую с сокетом работаешь. Ты может работаешь с какой-то библиотекой, которая реализует свой протокол, у неё внутри сокеты, но у тебя их нет.

Ты скорее всего серьёзно с сетями не работал просто. Иначе бы знал, что возможны многие проблемы:
1) долго не устанавливается соединение, это классический таймаут, который сокеты позволяют выставить
2) оборвалась сеть сразу после соединения. Сюрприз, ты об этом не узнаешь так просто. Для этого тебе надо и keep alive выставлять, и повторно таймаут. Учти, что ты работаешь с обёрткой, а не с библиотекой сокетов.
3) коннект держится, но сервер на той стороне по какой-то причине тупит, тебе надо эту ситуацию обрабатывать.

Тебе, возможно, надо по-разному эти ситуации обрабатывать и логгировать.

Оборачивать в лишние промисы и await - это кривое решение. Ты просто подумай, как у тебя реально код будет криво устроен и криво работать. Лучше это не делать, либо переписывать библиотеку ниже, чтобы она корректно всё обрабатывала, иначе реально говнокод, от которого тошнит.

И эта задача решается очень красиво через коллбэки. Чуть больше переписать надо, но при этом больше возможностей открывается.
Аноним 02/07/19 Втр 07:56:07 1425980392
>>1425977
Тебе надо более чёткую логику менеджера запросов выстроить. Хранить задачи и их состояния. Промисы нужны для того, чтобы библиотеки реализовывать, а не для того, чтобы их в фрагментах кода использовать.

Вариант, ты реализовываешь функцию getClientRequest, которая возвращает промис. Но внутри она работает на цикле обработки событий.

В твоём случае хитрее, поскольку тебе такая функция не нужна, ты реализуешь классический планировщик. Планировщики обычно реализуются через цикл обработки событий даже там, где в языке принято пользоваться async/await.

>>1425977
>нулевые таймауты - там раньше по 100, 200 мс было, я эксперементировал, но получилось, что можно без задержек после ответа запрос посылать.
В данном случае ключевое, что ты асинхронную рекурсию реализуешь. Ты планируешь дальнейший вызов, а то, что 0 секунд, не важно, ты уже 2 секунды подождал.

Аноним 02/07/19 Втр 08:02:40 1425984393
>>1425964
Хочешь сказать, не все, написанное на js, можно скомпилить в си?
Аноним 02/07/19 Втр 08:11:55 1425987394
>>1425979
>Ты же не всегда напрямую с сокетом работаешь.
Вся работа с сокетами в 99% случаев ведётся через интерфейс библиотеки/фреймворка.

>Ты может работаешь с какой-то библиотекой, которая реализует свой протокол, у неё внутри сокеты, но у тебя их нет.

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

>Ты скорее всего серьёзно с сетями не работал просто.

Ага, калькуляторы на JS только и пишу. С ПРОМИСАМИ!

>Тебе, возможно, надо по-разному эти ситуации обрабатывать и логгировать.

Не вижу связи между твоими пунктами и отсутствием настройки таймаутов. Который работает элементарно - ждёт определенное время и при отсутствии ответа, освобождает сокет, независимо от причины по которой ответ не получен, возвращая ошибку request timeout.

>Оборачивать в лишние промисы и await - это кривое решение.

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

>очень красиво
>Чуть больше переписать надо
> больше возможностей
Ясно. Очередное противоречие, а что за возможности, ты конечно тоже не скажешь.
Аноним 02/07/19 Втр 08:15:14 1425988395
>>1425984
Автоматически - нельзя. Это и не нужно, потому что в браузерах нет поддержки C кода.
Аноним 02/07/19 Втр 08:26:30 1425990396
>>1425987
Мне надоело с тобой спорить про очевидные вещи. Например о том, что в библиотеке необходимо поддержать разные типы таймаутов целенаправленно, чтобы они были. А эта библиотека может быть очень специфичной. Автор пока не ответил, поддерживает его библиотека это, или нет.

Промисы сами по себе почти бесполезны, почти те же колбэки. Действительно они раскрываются в связке async/await.

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

await нужен, когда тебе надо остановиться и подождать результат запроса, чтобы не городить дальше callback hell. Но только в этой задаче это не нужно. Нужен менеджер запросов, который обрабатывает много запросов и выдаёт агрегированный результат по запросу. Это другая задача.
Аноним 02/07/19 Втр 08:36:58 1425992397
>>1425990
>Например о том, что в библиотеке необходимо поддержать разные типы таймаутов

Так это ты от волнения и осознания того, что обосрался, перешел с "ТАМ МОЖЕТ И НЕ БЫТЬ ПОДДЕРЖКИ ТАЙМАУТА" на "МОЖЕТ БЫТЬ НЕСКОЛЬКО ТАЙМАУТОВ". Самому не стыдно или ты уже ничего не соображаешь?

>Промисы сами по себе почти бесполезны
> почти те же колбэки

Звучит как "ну скажите мне, что это почти тоже самое, скажите мне уже, что не нужно переписывать всё на промисы и вникать в их работу, ведь это почти тоже самое".

>Но только в этой задаче это не нужно.

Тебе прямым текстом пишут, что нужно подождать результат выполнения запроса, но ты пишешь НИНУЖНО, ты в своём уме?

>Нужен менеджер запросов, который обрабатывает много запросов

Также долбоебу написали, что отправка нескольких запросов невозможна, поэтому и нужно ждать ответ, посылая запросы по одному. Но долбоеб впал в делирий и продолжает бредить про какой-то менеджер запросов. Стой, ты спешишь! Перед тем как создавать менеджер запросов (в данном случае запроса, лол) нужно создать менеджер менеджера запросов!

И в случае многочисленных запросов тоже нужно использовать промисы, потому что при их помощи это делается в одну строку. Но калбэкошизик будет это отрицать и пилить очередную портянку, мамля себе под нос, что это почти также, параллельно фантазируя об одному ему известных дополнительных возможностях.
Аноним 02/07/19 Втр 08:45:54 1425993398
>>1425992
В сокете несколько видом таймаутов может быть. Даже если разработчики библиотеки предусмотрели таймаут, что не факт, совсем не факт, что он будет полноценным.

>>1425992
>Тебе прямым текстом пишут, что нужно подождать результат выполнения запроса, но ты пишешь НИНУЖНО, ты в своём уме?
Ты глянь код и вникни в задачу и слова. Сервер опрашивают разными запросами, результат складируют в общую кучу. Но соединение ненадёжное, и тут возникает требование повторять запрос. Это классическая задача.

Тебе, однако, код было тяжело глянуть, не умеешь ты чужой код читать, по одной фразе сделал вывод о задаче.
Аноним 02/07/19 Втр 08:55:06 1425997399
>>1425993
>Сервер опрашивают разными запросами, результат складируют в общую кучу.
>Про promise.all нельзя - ПЛК может только последовательно отвечать.
>ПЛК может только последовательно отвечать.
>Сервер опрашивают разными запросами

Ясно.
Аноним 02/07/19 Втр 09:04:25 1425999400
>>1425997
На самом деле главный вопрос, на который ответа нет, это какие возможности у его библиотеки
> let client = fins.FinsClient(9600, adr);
вот поддерживает ли этот FinsClient установку таймаута, если да, то насколько этот таймаут адекватно работает. Можно ли сделать какой-нибудь close() для объекта, чтобы соединение было закрыто, если оно работает слишком долго. Иначе реальна ситуация, когда ты сначала сделаешь несколько запросов, а потом одновременно придёт несколько ответов. Главные вопросы здесь.

Реализовать красиво можно на чём угодно, можно коллбэками, можно и промисы поддержать. Но "промисы" это ни разу не ответ на вопрос, вопрос был совсем в другом, тут проблемы другие, которые промисы никак не решают.
Аноним 02/07/19 Втр 09:44:47 1426014401
v7kjs5ikd5w21.jpg (201Кб, 1368x1723)
1368x1723
>>1425993
>>1425999
https://github.com/patrick--/node-omron-fins
ну я хз, что она там поддерживает. Как понять "разные виды таймаутов"?

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

Return из getOmron я сделал через emitter - в целом, моя цель достигнута, код уже работает КАК Я ХОЧУ. Осталось теперь switch-case как-то переписать и убрать, чтобы те, кому придется редактировать (или я через год) сразу понимали что происходит.


Кстати, занятный диалог получается - "классическая" дваче-схема из 3.5 анонов. В любом случае пасибки за ответы.
Аноним 02/07/19 Втр 10:10:01 1426028402
>>1420986 (OP)
>Объявите переменную, присвойте ей массив с десятью произвольными числами и найдите самое большое число в этом массиве. Объявите еще одну переменную для хранения наибольшего числа и присвойте ей значение первого (нулевого) элемента. На каждой итерации сравнивайте эту переменную и значение текущего элемента, и если он оказался больше - присвойте его значение переменной. Выведите полученное значение.
Я нашел с помощью math.max максимальное значение в массиве и сижу не пониманию зачем делать дальше. Покажите, как это должно быть дауну.
Аноним 02/07/19 Втр 10:19:07 1426037403
>>1426028
https://codepen.io/anon/pen/vqRMgp
По учебной программе ты должен освоить циклы и массивы. Вот ты и должен сделать через циклы и массивы.
Аноним 02/07/19 Втр 10:28:46 1426041404
>>1426037
Cпасибо, все оказалось проще, чем я наворотил в уме.
Аноним 02/07/19 Втр 10:32:37 1426048405
>>1423819
В защиту учебника, это задача на правильную работу с операциями (мб с битовыми, я лично не помню). А не хорошая замена swap.
Аноним 02/07/19 Втр 10:32:45 1426049406
>>1426041
>>1426037
бля, я проебался с переенной t, там должно быть t=a[0]; конечно же, а не -1000
Аноним 02/07/19 Втр 10:34:34 1426052407
Аноним 02/07/19 Втр 11:36:14 1426073408
>>1426014
Ты пишешь не усложненно, а криво. Какие-то свитч-кейс с двумя условиями, ты совсем ебанулся? Твой код настолько кривой, что хочется закрыть его как можно быстрей, не говоря уже о том чтобы начать его разбирать.
Аноним 02/07/19 Втр 11:39:53 1426076409
>>1426037
>заведомо меньшее число.

Так только отбитые делают. Нужно писать t = a[0] и итерацию цикла начинать не с 0, а с 1. При этом объявлять t желательно в конструкции for.
Аноним 02/07/19 Втр 12:15:59 1426098410
изображение.png (6Кб, 435x174)
435x174
>>1425639
Вот тут уже сложнее. Там несколько способов установки, некоторые работают, некоторые нет.
Поставил, настроил, теперь ещё охуеннее стало, чем было.
Только определиться не могу, табуляцию сделать 2 или 4 пробела.

>>1425714
ОХУЕННО!

Чё там ещё можно накатить на вскод?
Аноним 02/07/19 Втр 12:46:14 1426117411
>>1425371
Это нормально для реакта. Если прокидывать надо через ебучую вложенность (родитель-чайлд-чайлд-т.д.), то юзай Redux. Ебанина еще та по началу, потом норм.
Аноним 02/07/19 Втр 12:50:29 1426123412
>>1425506
Замыкание и есть внешний контекст, ты чо, пес.
Аноним 02/07/19 Втр 13:01:41 1426133413
>>1425990
>Промисы сами по себе почти бесполезны, почти те же колбэки.

>Добавляем промисам генератор.

>await топчик async кек, вообще по-другому теперь
Аноним 02/07/19 Втр 13:12:47 1426138414
>>1426117
Почему не через контекст прокидывать?
Аноним 02/07/19 Втр 13:33:09 1426151415
image.png (437Кб, 1200x659)
1200x659
>>1426073
ну так я в ваших этих ява-скриптах и нодах не работал никогда, дали в понедельник задачу, вот ебусь как умею. На микроконтроллерах свитч-кейс нормальная тема.

Ну и, кстати, поебать всем на твоё мнение, спрашиваю-то что конкретно сделать, а как к этому относятся другие.
Аноним 02/07/19 Втр 13:39:18 1426155416
>>1426151
*а НЕ как к этому относятся другие
слоуфикс
Аноним 02/07/19 Втр 14:02:18 1426168417
Аноним 02/07/19 Втр 14:16:23 1426178418
>>1426151
В том и проблема, что тебе сказали как нужно сделать, ты вместо того чтобы переделать всё на нормальный лад, пытаешься воскресить своё дерьмо.
Аноним 02/07/19 Втр 15:20:39 1426223419
>>1426151
Ты просто видимо не очень понимаешь логику работы JS.

Принцип работы такой, что твой объект client, после того, как ты вызываешь метод read, кладёт в планировщик задач задание, суть которого в том, что "вызвать функцию, описанную в client.on('reply'...), когда будет ответ. Весь код, который разбирает ответ, должен быть там.

Как сказано в документации, этот объект поддерживает таймаут, но его надо передать в виде опции в трений параметр при инициализации объекта. Функция setTimeout для другого нужна.
Следующий вызов, через setTimeout(,0) надо делать из метода reply и error, но только надо убедиться, что только одно из этих событий обрабатывается. Возможно reply в любом случае вызывается, надо документацию изучать и проверять.

switch тут заведомо не нужен. И заполнять данные в "case 1" заведомо не нужно, это надо в reply делать.

Аноним 02/07/19 Втр 15:42:19 1426232420
Аноним 02/07/19 Втр 15:45:14 1426237421
>>1425637
Я отказался от эслинта, пользуюсь только претиром, я один тут такой, кто заебался всякие мелочи фиксить?
Аноним 02/07/19 Втр 15:50:19 1426248422
>>1426237
Дак ты любую мелочь отключить можешь в .eslintrc.json
Аноним 02/07/19 Втр 16:37:01 1426307423
>>1426123
А если функция в объекте, и че?
Аноним 02/07/19 Втр 17:10:29 1426364424
Слышите, а поясните за смысл существования тайпскрипта?
Его планируют добавить в жс, чтоб в самом жсе можно было указывать типы? Или зачем он существует?
Аноним 02/07/19 Втр 17:11:08 1426366425
>>1426364
Чтобы было проще дебажить в идешке.
Аноним 02/07/19 Втр 17:18:49 1426377426
>>1426364
Для облегчения работы по поддержанию крупного проекта, в котором разным людям приходится сталкиваться с чужим кодом. Также он помогает отловить много ошибок на этапе компиляции, что в случае с JS очень важно, так как ты не получишь экспешн при операциях вида "1" + 2, но получишь результат вида "12", если проект крупный, то даже такой элементарный пример отловить сложно. Минус TS в том, что он не влияет на рантайм, т. е. если взять тот же пример и получать один из операндов путём сетевого запроса, то ты получишь такой же результат, независимо от того, что в TS ты указал типы каждого операнда, т. е. в случае когда результат точно не определен, тебе всё равно придётся встраивать рантайм проверку типов.
Аноним 02/07/19 Втр 18:28:28 1426408427
Скиньте старую шапку в тред, пожалуйста.
Аноним 02/07/19 Втр 19:11:27 1426429428
>>1421480
А let и const куда попадают?
Аноним 02/07/19 Втр 19:46:54 1426455429
n9ojeniwgit21.jpg (54Кб, 960x540)
960x540
image.png (54Кб, 741x711)
741x711
>>1426223
Да, switch-case не нужен, сделал без него, ебанул рекурсию (обычно ей не пользуюсь, т.к. в микроконтроллерах это край как не приветствуется, но тут стек, относительно, огромный)

>Весь код, который разбирает ответ, должен быть там.
>И заполнять данные в "case 1" заведомо не нужно, это надо в reply делать.
да, так и сделал

>Как сказано в документации, этот объект поддерживает таймаут, но его надо передать в виде опции в трений параметр при инициализации объекта.
Этот таймаут срабатывает только первый раз, это первое, что я проверил. Т.е. с точки зрения разработчика библиотеки, надо считать, что связь всегда заебись, и если таймаут, значит либо обрыв, либо ПЛК выкл. Так что буду на каждый запрос создавать клиент и закрывать сокет потом.

https://ideone.com/auq5P3

Кажется, можно ещё через функцию-генератор сделать красивше (чтобы сокет не открывать/закрывать постоянно)
Аноним 02/07/19 Втр 20:55:03 1426526430
Зачем нужна эта убанская стрелка ()=>{} заместо function(){} ?
Я конечно все понимаю, НО ИЗ ЗА ЭТОЙ ЕБАНОЙ СТРЕЛКИ НЕКОТОРЫЕ СКРИПТЫ НЕ РАБОТАЮТ
Аноним 02/07/19 Втр 20:56:00 1426530431
>>1426526
Чтобы передать контекст в функцию. Чтобы писать меньше символов.
Аноним 02/07/19 Втр 20:56:55 1426532432
>>1426530
ну а почему она не всегда работает?
Аноним 02/07/19 Втр 20:58:56 1426535433
>>1426530
А че бля нельзя сделать чтоп контекст был и в обычной функции?
Аноним 02/07/19 Втр 21:01:32 1426542434
>>1426535
можно, а. Короче не используйте стрелку посоны.
Аноним 02/07/19 Втр 21:02:35 1426544435
>>1426532
Потому что нужен отдельный контекст, а не копия того из которого вызвана функция.
>>1426535
Можно, только для этого еще больше символов писать нужно.
Аноним 02/07/19 Втр 21:05:48 1426549436
>>1426544
на jquery я такое поведение заметил
Аноним 02/07/19 Втр 21:11:12 1426554437
>>1426549
Это уже зависит от того что именно из жквери ты использовал.
Аноним 02/07/19 Втр 21:12:26 1426556438
Аноним 02/07/19 Втр 21:19:17 1426566439