YouTrack (как и все таск-трекеры) естественно тем или иным способом позволяют отслеживать сколько времени человек тратит на ту или иную задачу (даже если это примитивное: забить ручками цифру) и это обычнейшая практика, которая ничего общего с «шпионажем» не имеет.
В те годы (начало 2010х) Intel под себя захапал почти все «около-ПКшное» (тот же рынок ноутбуков был на 99% голубой), за что неоднократно был показательно порот антимонопольной комиссией, проще было уступить.
И, пришедшая к рулю АМД, Лиза Су уже имела контакты в Сони (подробнее в тематичном ролике Pro HiTech).
Так что дело не только в том что «все в одном», т.к история показывает что и мешать вполне норм:
— xbox original — Pentium III + NVIDIA
— xbox 360 — PowerPC + ATI (тогда еще независимая)
— playstation 3 — Cell + NVIDIA
Да даже и натягивать не надо.
Я вчера с iOS-разработчиком с прошлой работы общался, и он рассказал как там у них что проходит:
— прошлым летом Эппл заанонсила 13ю iOS и некоторое количество фичей.
— руководство почесало тыковку и написала Эпплу: «Пссс парни, мы тут приложеньку делаем (speech-to-text), хотели бы внедрить ваши новые фишки в первых рядах»
— им ответили, подробно все расписали: список фичей в порядке приоритета, ссылки на свежие гайды как эти фичи правильно вставлять.
— в процессе разработки саппорт Эппла не хреначил дежурные отписки, а именно что помогал
— за две недели до релиза новой версии было жесткое (ну парни все-таки «на главную метили») но информативное ревью. Не отписка бота: «Вы пролетаете, чините», а опять же подробное описание проблем где что не так, не совсем так.
— …
— Ну и релиз, место «на главной» и какой-то буст аудитории (про доходы ничего не скажу, потому что чужие деньги не считаю, но если они по похожей схеме хотят сделать версии для iPad/MacOS то наверное сработало)
И все это для «компании» в 3 человека.
На мой скромный взгляд подобное отношение к разработчику* вполне стоит тех «несправедливых поборов на карман инвесторов»(с)
* я понимаю что на одну эту мою success-story, можно найти кучу грустных. Но такова уж специфика интернета: когда все хорошо, то это хорошо, а когда стало плохо то надо в каждую щель орать о том «как же плохо стало»
И я конечно понимаю что "по докам" там "рай, радуга и единороги с понями". Только вот это никак не лишает нас того факта что "наверстав" на старте кривой логики (что прекрасно можно сделать хоть на ангуляре/хоть на реакте), потом не придется нанимать Вью-синьора, который "за хорошую денюжку" будет разгребать за "верстальщиками" и скорее всего останется в штате, бить последних линейкой по лапкам за очередную "верстку" логики.
Сейчас сложно сказать, но думаю «по нубству» я бы все-таки пытался следовать букве туториалов и самое тупое что бы я натворил это на один экшен менял бы несколько редьюсеров.
Ну почему только относительно MobX? Еще Vue удостаивается этой чести. И вроде Angular 1.x в свое время тоже (но тут не уверен).
Что же относительно ваших примеров то за всех говорить не могу, лишь свои мысли:
— React — в современном виде (хуки, саспенс и прочие навороты) стал не менее «магичен». Но, основная его концепция (то самое «меняем стейт — верстка обновляется») все еще остается достаточно «приземленной магией», потому что разработчик все еще должен объяснять «глупому» Реакту, на его «реактовом» языке как меняется стейт и какая из этого должна получиться верстка.
В то же время MobX одной строчкой в конструкторе makeAutoObservable(this) превращает простой и тупой js-класс в свой вариант Observable, и в то же время для разработчика это все еще продолжает выглядеть как «простой и тупой js-класс» (особенно когда это прилетает из сторонней либы). А потом мы оборачиваем тупой React-компонент магическим словом observer, прокидываем в него «тупой js-класс» и теперь мы можем напрямую теребить объект js-класса (и может быть даже вообще в другом месте!), а компонент сам будет на это реагировать.
Мы написали всего-лишь 2 вызова, и класс превратился в «состояние», а компонент начал это состояние отслеживать. Чтобы провернуть подобный трюк на чистом React понадобится больше 2х «магических слов».
Потому mobx и «магия».
— Webpack — весьма странный пример в контексте обсуждения библиотек/фреймворков, это все-таки инструмент помогающий в разработке, но в целом на нее не влияющий. Да и вообще «голый webpack» (по крайней мере версий 3, 4) все на что способен это «взять много js-файлов — выдать один js-файл». Вся остальная «магия» прячется в лоадерах и плагинах и требует добротного полотнища webpack.config чтобы заработать. Вот если бы вы упомянули parcel, тогда да «чистейшая магия».
Это не проблема, проблема только в кривых ручках разработчика. Вот и все.
Я не пытался подвергать сомнению прямоту лично ваших рук. Но я прожил уже достаточно чтобы убедиться что даже «лучшие из лучших» умудряются ошибаться (можно сходить на ютуб и поискать записи live-coding чтобы лично в этом убедиться).
Это лишь говорит что-то о вас, а не о MobX. Ведь вы же пишете сами фигню, как вы говорите.
Только я в своем сообщении 3 раза уточнил в чем именно «проблема», а вы почему-то решили что обсуждение личных качеств разработчиков это интереснее (ваше P.S).
Да что вы говорите? Серьезно прям getters/setters не используются?
Тут скорее произошло недопонимание, т.к под getters/setters я почему-то вспомнил только старый добрый Object.defineProperty (который к слову никуда не делся даже из нового MobX). Но я предпочту посидеть в тихой и спокойной луже потому что мы переходим к финальному аккорду.
P.S. Джуны и мидлы пишут говнокод всегда и точка. Библиотека/фреймворк и ЯП роли не играют. И никакой архитектуры даже близко они не состряпают. На то они джуны и мидлы. Опыт и стиль мышления решает.
Какой смысл приводить какие-то «аргументы» опираясь на них?
Наверное потому что мы живем все таки в реальном мире?
В мире где в большинстве своем именно джуны и мидлы своим «говнокодом» фиксят баги и пилят фичи разной степени сложности (пока «синьоры» в комментариях решают чья либа круче =) ).
А еще в этом мире лычка «синьор» тоже такое себе мерило «опыта и стиля мышления» (мне же не нужно рассказывать о чудесном мире аутсорса/аутстаффа?).
Поэтому в нашей суровой реальности прилежный мидл вполне может, решая простейшую задачу по «перегонке json в список в браузере», получить в итоге красивую мини-архитектуру где «запросы в API отдельно, состояние списка отдельно, и сама вьюха списка поделена на красивые компонентики». А потом запушить это в общую репу, где похожие «синьорские» компоненты напрямую fetch-ат из componentDidMount…
Впрочем это все лирика и дальнейший «спор» нецелесообразен. Вы нашли свой «золотой mobx-грааль» и как-то слишком фанатично отстаиваете его непогрешимость. Ваше право, но мне неохота быть объектом его реализации.
А остальные после ознакомления с этой веткой сами смогут сделать свои выводы, чай не маленькие.
2 часа проб и экспериментов и ты знаешь его отлично! Поэтому эта «проблема» не актуальна.
Мы говорим о чуть-чуть разных «знаниях», но к этому вернемся позже.
Да и магии там никакой нет, просто getters/setters (опять же 15-30 минут про них почитать и поэкспериментировать и ты всё знаешь)
Немного странно топить за MobX и не знать что с 5.х версии getters/setters заменили на Proxy, ну да ладно. В случае же «магии» я имел ввиду вроде как общеупотребимое в IT-среде понятие когда разработчик берет «А» кидает его в «черный ящик» библиотеки и получает «Б» и при этом большую часть работы по взаимодействию «А» и «Б» происходит в том самом «черном ящике».
На очень грубом псевдо-JS это как-то так:
@observable A;
@computed B () { return A + 1 }
A = 4;
console.log(B); // "5" потому что заботливый MobX где-то "за кадром" протянул ниточку от A к B
Вообще элементарно
WebStorm и VS Code умеют сто лет в обед — «Find References / Find Usages» где сразу видно в каких местах переменная читается, а в каких местах переменная изменяется.
Когда при поиске причинно-следственных связей приходится раз 5 попрыгать между 2-4мя файлами это уже не совсем «элементарно». А если нужно computed вывести из пары-тройки других? А если эти другие тоже «нетривиальны»? Необходимость рисовать на бумажке граф связей observable/computed как-то далековато от понятия «элементарности».
Да, это проблема плохого OOD, а не MobX.
Но MobX, благодаря своей простоте и магии, не запрещает абстрактному джуну сварить сочное спагетти из пары-тройки (а то и больше) сторов нежно связанных двумя-тремя десятками observable/computed и вдобавок политое сверху соусом из пятка container-components (которые тоже не прочь пощупать сторы через свои ui-events). И в итоге уже через годик этот же джун (или его коллега) «элементарно» устанет прыгать по «Go to Definition» в поисках наиболее оптимального пути внедрения новых фич.
И я напомню что ситуацию про спагетти из сторов я взял не из воздуха, я лично написал такую фигню и лично вот ее разгребаю
TL;DR: Проблема MobX не в самой библиотеке, а в той свободе которую она предоставляет. И тут нужно понимать что для какого-нибудь топ-синьора эта самая свобода — благо, дающее возможность построить именно ту систему которую нужно. В то же время как не каждый мидл способен без посторонней помощи совладать со счастьем писать «что-нибудь и как-нибудь» и все работает.
TL;DR #2: Чтобы написать сложный, но хороший и понятный, код на MobX недостаточно просто знать MobX, полезно еще знать всякие OOD, SOLID и компанию.
Серьезно? То есть тратить время на Redux, Recoil, Redux-Toolkit и т.п. это да, а 30 минут потратить на изучение MobX который на 2 порядка лучше их всех вместе взятых это нет?
Как человек в свое время изучавший MobX «за 30 минут, еще и на ходу» для применения в реальной задаче («планировщик связанных задач») могу ответственно заявить:
— MobX действительно простой и понятный
— Кода действительно в разы меньше чем у того же Redux
Но…
— Если ты плохо знаешь MobX(*) и тащишь его в задачу сложнее «типичной тудушки» то в результате можно получить прекрасное спагетти где черт ногу сломит понимать что где мутирует и на что влияет. Потому что «магия».
Подобный «нубский» код на Redux будет стремным, копипастным, распухшим, но более очевидным. Потому что «будьте добры однозначно описать ваши намерения».
Но моя основная позиция относительно «Стейт-менеджмента» до сих пор неизменна и сводится к классической «аксиоме Эскобара». Потому что «золотого Грааля» в данном вопросе еще не изобрели, увы.
* Несомненно этот пробел можно «подлатать» фундаментальными знаниями по архитектуре, но… у скольки «вкатывающихся в IT» (особенно с каких-нибудь курсов «React с 0 до 100 тыс в месяц») они есть? Я и сам года 3 назад считал что это «слишком энтерпрайзно», сейчас вот начитался умных книжек и поумнел (правда все что я могу сейчас сделать с этими знаниями это фейспалмить глядя на то как очередной «компонент-многостаночник» нежно размазывает генеренные GraphQL типы по шаблону...)
Тем что нет тех же железобетонных правил и ограничений «чистых ФП-языков», когда шаг вправо-влево, расстрел компилятором на месте.
И соответственно разработчик волен либо сам костылить монады/каррирование и прочее, либо брать библиотеку и полагаться на «стороннее видение»*. А потом приходит js-джуниор и «пишет как умеет».
И по итогу у большинства там будет не «надежное ФП», а «функциональный цирк».
*тут из личного опыта могу вспомнить милые попытки скрестить lodash с TypeScript и «радости» от того что какой-нибудь compose с огромным удовольствием терял типы где-то внутри себя, порождая на выходе any.
Существует GOG. Ровно на том же рынке, что и стим.
В который даже инди-разработчики стараются идти не сразу из-за принципиальной политики оного (DRM-free), остальным спасибо что те самые good old games хотя-бы начали спускать.
Вас никто не обязует покупать исключительно в стиме, исключительно региональное и прочее.
— Я пришел в магазин купить коробку на полку, в коробке только ключ от стим (раз в год ЕГС) и никаких других вариантов.
— Я «поверил в разнообразие выбора» и пошел в любой из ранее широкорекламируемых «ларьков» типа «ГейбСтор» и… мне там продали ключ в Стим =/.
В начале года на PC я купил 2 игры:
— Doom Eternal, который можно купить или в Стиме или на кладбище Бесезда-шопа (прекрасный выбор или надежный проверенный ТЦ или ларек который день на день закроется)
— Gears 5, где тоже выбор не ахти, но еще более однозначный: Стим (региональные рубли) или МС-шоп (баксы и курс). Т.к я люблю Сони (т.е не обладаю Шайтан-Боксом), то иду в Стим.
Про то куда в 99% ведут ссылки «Купить» на промо/оффсайтах игр я скромно промолчу.
А в Стиме будь добр «исключительно региональное и прочее».
Более того, вы можете покупать у людей напрямую, если они захотят создать свою дистрибуцию.
У вас целых 7 ошибок в слове «смогут».
Потому что здесь мы как раз и можем отлично наблюдать всю ту «иллюзию выбора и непринуждения», которой вы пытаетесь петь дифирамбы, но в упор не видите ее ложности.
Потому что не каждый инди-разработчик стоит на «китайском броневичке с лейбой Tencent», не каждый разработчик Бобби Котик (которому, кстати, никакие проценты не мешают держать планку «самой прибыльной компании»), не у каждого разработчика есть конвейер «Фифа ХХХХ». И поэтому разработчику, который «считает тот самый каждый %» проще или «продаться в ЕГС за чемодан» или пойти «куда примут» чтобы продаться вообще. Затраты на «самостоятельную продажу» даже через бесплатную «промо-страничку», мне кажется с лихвой перекроют потери от тех самых пресловутых "%".
Вас никто ни к чем под PC не принуждает.
Бесезду, ЕА, Майкрософт тоже ничего* не принуждало к возвращению в Стим, а вон оно как вышло.
Блин, да того же Тима ничего* не принуждало весной этого года пойти на поклон к Гуглу (1.5 года терпел что в плей-сторе на запрос 'fortnite' предлагало 'pubg'!).
* читать как «рыночек»
Все ваши рассуждения — исключительно попытка подменить тезисы и увести от темы.
Все превентивные обвинения, как правило, подразумевают что обвиняющий сам уже давно «за чертой» (а чтобы в этом убедиться достаточно всего-лишь посмотреть ваши ответы оппонентам).
Во-первых, все «платформы» в мире можно сразу поделить на 2 типа: открытые и закрытые. И это не запрещено никакими законами.
Во-вторых, даже «открытые платформы» (FOSS наверное идеальнейший пример) имеют свои правила, и если их нарушить то нарушитель перестает быть частью платформы (те же FOSS-снобы в своих бложиках смешают вас с коричневой субстанцией и их аудитория больше не будет ставить ваше творение).
«Моя территория — мои правила» — делай всё сам.
Владельцы Бизнес-Центров на этом месте хватаются за животики, потому что они на их территории диктуют подрядчикам (провайдерам, секьюрити службам, кафе-столовым и прочим обслуживающим этот самый БЦ сервисам) СВОИ условия. А ведь должны же сволочи сами тянуть инет от ближайшего хаба, решать вопросы с поставками сырья для готовки/готовкой и т.п, организовать свою СБ с нуля… Там же рядом хохочут и владельцы ТЦ.
Хочешь получать деньги за услуги — продавай услуги, а не «доступ к безграничным возможностям».
Владельцы БЦ и ТЦ уже рыдают от смеха.
Потому что «площадь у нас арендуй», а дальше…
Хочешь инет — плати вот этому провайдеру
Хочешь кушать — иди вот в эту столовую (и хорошо если БЦ не в попе мира, в случае ТЦ чуть получше, но не всегда)
Хочешь воду в офис — будь добр исполнять «Ку» для СБ, чтобы они курьерскую машину пустили на территорию.
Нужны поставки «на витрину» — сам решай, но тоже будь добр «Ку» для СБ.
Зато ежемесячно с тебя спрашивают плату за «доступ к безграничным возможностям»(с)
А если не согласен то никто тебе не запрещает дома, на коленке, пилить свой интернет магазин, вложить дофига денег в «продвижение», и молиться чтобы выстрелило. Ну или через годик осознать бессмысленность этой затеи и распродать остатки дай бог по себестоимости (потому что на единицу твоего штучного и действительно качественного товара, на Алике уже сотню позиций выдает за копейки).
Я писал уже ранее, Эппл если что берет деньги не только за «доступ к безграничным возможностям»(с), но и за то чтобы ты, как разработчик, мог этими самыми безграничными возможностями пользоваться:
— их саппорт не кусается, а помогает решать твои проблемы (и баги в СДК чинить тоже, да)
— при «модерации» тебе объясняют чего не хватает (в том числе чтобы «на витрине» ты не выглядел как «бедный родственник»)
— и твое приложение может залететь «на главную» на тех же правах что и пресловутый «Фортнайт», и с тебя за это не спросят сумму с Н-нулями.
Прошаренные пользователи такие смешные, когда верят в то что 100% населения прошарено не намного хуже их. В их вселенной не существует детей, «гуманитариев» (простите не знаю что лучше подобрать), дедушек и бабушек, лишь 100% IT-грамотные люди.
Тут игра вышла на PC и PS4 — Fall Guys.
На ютубе уже гуляют ролики о том «как правильно поставить несуществующую мобильную версию» через установку каких-то левых .apk с предлогом «ну вы тут скачайте поставьте запустите, это нужно чтобы проверить что вы не бот».
Вот и подумай сколько людей попытаются «поверить в свое счастье», если даже комьюнити-менеджер пишет ну очевидные же вещи.
Я тут погулял, развеялся, а потом загрустил…
Потому что «моя выгода» таки не слишком то и выгодна :(
1) мне больше ничего не принадлежит: даже купив диск в самом «пупер-дупер-издании» я не получаю игру целиком, я получаю диск с недопатченной версией 1.0 и ключик на скачивание тонны ДЛЦ).
2) При, казалось бы «регион-фри» интернете, магазины в региональных рамках творят что им хочется: достаточно посмотреть на недавний цирк CoD 2019 и Sony в РФ и его последствия.
3) Тут уже вопрос к тому самому Стиму: спасибо конечно за региональные цены, но… почему некоторые игры которые я уже купил, живя в РФ я не могу запустить за пределами «СНГ», даже если я в отпуск выехал?
И перед тем как помахать пальчиком и заявить: «так против этого же мы и топим» я уточню два нюанса:
— в сообщении выше вы подали зарождение этого как благо, а я сейчас лишь смиряюсь с обстоятельствами, в которых один капитальный ТЦ все же лучше чем «стихийный рынок» по выходным.
— ваше будущее: «ставлю что хочу, откуда хочу» не столь радужно как вы себе рисуете, и решать кто, что и откуда будет ставить, как и кому и сколько % отдавать будете не вы или маленький инди-разработчик а Эпики, Фейсбук, Амазон и Ко. И я думаю очевидно что о вас будут думать в последнюю очередь (как и о той же Эппл/Гугл и прочих платформ-холдерах).
Та самая забота о своих пользователях, которую здесь вовсю ругают?
Только вот все эти ругатели, не учитывают грубо говоря «95%» остальных пользователей платформы.
Человек купил iPhone, он абсолютно точно знает что если что-то у него будет не так то он накатает письмо в саппорт/придет в белый сервисный центр/магазин и там ему постараются помочь.
А теперь, вырастив за годы этот рефлекс, мы даем право каждому Джону сделать свой сервис/магазин где он будет делать все на свое усмотрение.
Наш обычный «95%» Пользователь:
— теми или иными путями попадает в этот магазин,
— ставит с него приложение,
— видит что «нужно оплатить подписку»/«докупить валюты»/«разблокировать новый урок»,
— достает кредитку и платит
— деньги уходят, а в результате кукиш
— вымуштрованный за годы пользователь пишет письмо в саппорт эппл (раньше же как-то помогали!), там шлют к «Джону»
— он идет в белый сервисный центр и там тоже пожимают плечами и шлют к «Джону»
— он пишет письмо «Джону» и (тут мы сжалимся над пользователем) его шлют к «разрабам»
— он с горем пополам пишет разрабам, а в ответ получает «ТЫ ЛОХ, ХА ХА».
— пользователь в следующий раз покупает Сяоми…
В текущей реальности, по моим сведениям, Эппл может обеспечить мани-бэк в случае единичных проблемных случаев или забанить мошенников полностью, если это систематично
Вы вообще-то начали этот тред с чуть более актуальных времен:
Рынок игр под PC — это свой рынок, и там, как раз таки эпики, стимы и прочие — конкурируют вполне себе удачно
Можно пожалуйста позитивные результаты вот этой «удачной конкуренции».
Или как и в случае со Стимом тогда я должен «кушать кактус сейчас», и надеяться на то что весь этот текущий ларечный цирк приведет к светлому будущему?
В июне был «The Last of Us: Part 2» и споры на темы: «шедевр или УГ», «насколько правильно 'обманывать' ожидания», «сколько повесточки завезли» и «какого размера были чемоданы за поголовные 10/10 от прессы».
И в июле «Ghost of Tsushima» сыграл на контрасте с TLoU 2 и «сменил полярность»: обзорщики покрутили носами и сказали «среднячок», а игрокам наоборот понравилось.
Но т.к проекты сингловые то за недельку все стихло, а через две уже никто ничего и не помнит :).
Как и «положено» ИИ не понимает о чем речь.
YouTrack (как и все таск-трекеры) естественно тем или иным способом позволяют отслеживать сколько времени человек тратит на ту или иную задачу (даже если это примитивное: забить ручками цифру) и это обычнейшая практика, которая ничего общего с «шпионажем» не имеет.
И, пришедшая к рулю АМД, Лиза Су уже имела контакты в Сони (подробнее в тематичном ролике Pro HiTech).
Так что дело не только в том что «все в одном», т.к история показывает что и мешать вполне норм:
— xbox original — Pentium III + NVIDIA
— xbox 360 — PowerPC + ATI (тогда еще независимая)
— playstation 3 — Cell + NVIDIA
Почитал ради общего развития.
Жаль только та часть что про Node.js развивает неверное представление.
Я вчера с iOS-разработчиком с прошлой работы общался, и он рассказал как там у них что проходит:
— прошлым летом Эппл заанонсила 13ю iOS и некоторое количество фичей.
— руководство почесало тыковку и написала Эпплу: «Пссс парни, мы тут приложеньку делаем (speech-to-text), хотели бы внедрить ваши новые фишки в первых рядах»
— им ответили, подробно все расписали: список фичей в порядке приоритета, ссылки на свежие гайды как эти фичи правильно вставлять.
— в процессе разработки саппорт Эппла не хреначил дежурные отписки, а именно что помогал
— за две недели до релиза новой версии было жесткое (ну парни все-таки «на главную метили») но информативное ревью. Не отписка бота: «Вы пролетаете, чините», а опять же подробное описание проблем где что не так, не совсем так.
— …
— Ну и релиз, место «на главной» и какой-то буст аудитории (про доходы ничего не скажу, потому что чужие деньги не считаю, но если они по похожей схеме хотят сделать версии для iPad/MacOS то наверное сработало)
И все это для «компании» в 3 человека.
На мой скромный взгляд подобное отношение к разработчику* вполне стоит тех «несправедливых поборов на карман инвесторов»(с)
* я понимаю что на одну эту мою success-story, можно найти кучу грустных. Но такова уж специфика интернета: когда все хорошо, то это хорошо, а когда стало плохо то надо в каждую щель орать о том «как же плохо стало»
Vuex вообще-то отдельная библиотека и ни разу не проще чем тот же redux (она с него внезапно писалась).
А для всего остального работает "теорема Эскобара" (тем более Вью при необходимости в jsx тоже умеет)
А давно во Вью не нужно писать логику?
И я конечно понимаю что "по докам" там "рай, радуга и единороги с понями". Только вот это никак не лишает нас того факта что "наверстав" на старте кривой логики (что прекрасно можно сделать хоть на ангуляре/хоть на реакте), потом не придется нанимать Вью-синьора, который "за хорошую денюжку" будет разгребать за "верстальщиками" и скорее всего останется в штате, бить последних линейкой по лапкам за очередную "верстку" логики.
Но, вот этот твит, заставляет задуматься =).
Что же относительно ваших примеров то за всех говорить не могу, лишь свои мысли:
— React — в современном виде (хуки, саспенс и прочие навороты) стал не менее «магичен». Но, основная его концепция (то самое «меняем стейт — верстка обновляется») все еще остается достаточно «приземленной магией», потому что разработчик все еще должен объяснять «глупому» Реакту, на его «реактовом» языке как меняется стейт и какая из этого должна получиться верстка.
В то же время MobX одной строчкой в конструкторе makeAutoObservable(this) превращает простой и тупой js-класс в свой вариант Observable, и в то же время для разработчика это все еще продолжает выглядеть как «простой и тупой js-класс» (особенно когда это прилетает из сторонней либы). А потом мы оборачиваем тупой React-компонент магическим словом observer, прокидываем в него «тупой js-класс» и теперь мы можем напрямую теребить объект js-класса (и может быть даже вообще в другом месте!), а компонент сам будет на это реагировать.
Мы написали всего-лишь 2 вызова, и класс превратился в «состояние», а компонент начал это состояние отслеживать. Чтобы провернуть подобный трюк на чистом React понадобится больше 2х «магических слов».
Потому mobx и «магия».
— Webpack — весьма странный пример в контексте обсуждения библиотек/фреймворков, это все-таки инструмент помогающий в разработке, но в целом на нее не влияющий. Да и вообще «голый webpack» (по крайней мере версий 3, 4) все на что способен это «взять много js-файлов — выдать один js-файл». Вся остальная «магия» прячется в лоадерах и плагинах и требует добротного полотнища webpack.config чтобы заработать. Вот если бы вы упомянули parcel, тогда да «чистейшая магия».
Я не пытался подвергать сомнению прямоту лично ваших рук. Но я прожил уже достаточно чтобы убедиться что даже «лучшие из лучших» умудряются ошибаться (можно сходить на ютуб и поискать записи live-coding чтобы лично в этом убедиться).
Только я в своем сообщении 3 раза уточнил в чем именно «проблема», а вы почему-то решили что обсуждение личных качеств разработчиков это интереснее (ваше P.S).
Тут скорее произошло недопонимание, т.к под getters/setters я почему-то вспомнил только старый добрый Object.defineProperty (который к слову никуда не делся даже из нового MobX). Но я предпочту посидеть в тихой и спокойной луже потому что мы переходим к финальному аккорду.
Наверное потому что мы живем все таки в реальном мире?
В мире где в большинстве своем именно джуны и мидлы своим «говнокодом» фиксят баги и пилят фичи разной степени сложности (пока «синьоры» в комментариях решают чья либа круче =) ).
А еще в этом мире лычка «синьор» тоже такое себе мерило «опыта и стиля мышления» (мне же не нужно рассказывать о чудесном мире аутсорса/аутстаффа?).
Поэтому в нашей суровой реальности прилежный мидл вполне может, решая простейшую задачу по «перегонке json в список в браузере», получить в итоге красивую мини-архитектуру где «запросы в API отдельно, состояние списка отдельно, и сама вьюха списка поделена на красивые компонентики». А потом запушить это в общую репу, где похожие «синьорские» компоненты напрямую fetch-ат из componentDidMount…
Впрочем это все лирика и дальнейший «спор» нецелесообразен. Вы нашли свой «золотой mobx-грааль» и как-то слишком фанатично отстаиваете его непогрешимость. Ваше право, но мне неохота быть объектом его реализации.
А остальные после ознакомления с этой веткой сами смогут сделать свои выводы, чай не маленькие.
Мы говорим о чуть-чуть разных «знаниях», но к этому вернемся позже.
Немного странно топить за MobX и не знать что с 5.х версии getters/setters заменили на Proxy, ну да ладно. В случае же «магии» я имел ввиду вроде как общеупотребимое в IT-среде понятие когда разработчик берет «А» кидает его в «черный ящик» библиотеки и получает «Б» и при этом большую часть работы по взаимодействию «А» и «Б» происходит в том самом «черном ящике».
На очень грубом псевдо-JS это как-то так:
Когда при поиске причинно-следственных связей приходится раз 5 попрыгать между 2-4мя файлами это уже не совсем «элементарно». А если нужно computed вывести из пары-тройки других? А если эти другие тоже «нетривиальны»? Необходимость рисовать на бумажке граф связей observable/computed как-то далековато от понятия «элементарности».
Да, это проблема плохого OOD, а не MobX.
Но MobX, благодаря своей простоте и магии, не запрещает абстрактному джуну сварить сочное спагетти из пары-тройки (а то и больше) сторов нежно связанных двумя-тремя десятками observable/computed и вдобавок политое сверху соусом из пятка container-components (которые тоже не прочь пощупать сторы через свои ui-events). И в итоге уже через годик этот же джун (или его коллега) «элементарно» устанет прыгать по «Go to Definition» в поисках наиболее оптимального пути внедрения новых фич.
И я напомню что ситуацию про спагетти из сторов я взял не из воздуха, я лично написал такую фигню и лично вот ее разгребаю
TL;DR: Проблема MobX не в самой библиотеке, а в той свободе которую она предоставляет. И тут нужно понимать что для какого-нибудь топ-синьора эта самая свобода — благо, дающее возможность построить именно ту систему которую нужно. В то же время как не каждый мидл способен без посторонней помощи совладать со счастьем писать «что-нибудь и как-нибудь» и все работает.
TL;DR #2: Чтобы написать сложный, но хороший и понятный, код на MobX недостаточно просто знать MobX, полезно еще знать всякие OOD, SOLID и компанию.
Как человек в свое время изучавший MobX «за 30 минут, еще и на ходу» для применения в реальной задаче («планировщик связанных задач») могу ответственно заявить:
— MobX действительно простой и понятный
— Кода действительно в разы меньше чем у того же Redux
Но…
— Если ты плохо знаешь MobX(*) и тащишь его в задачу сложнее «типичной тудушки» то в результате можно получить прекрасное спагетти где черт ногу сломит понимать что где мутирует и на что влияет. Потому что «магия».
Подобный «нубский» код на Redux будет стремным, копипастным, распухшим, но более очевидным. Потому что «будьте добры однозначно описать ваши намерения».
Но моя основная позиция относительно «Стейт-менеджмента» до сих пор неизменна и сводится к классической «аксиоме Эскобара». Потому что «золотого Грааля» в данном вопросе еще не изобрели, увы.
* Несомненно этот пробел можно «подлатать» фундаментальными знаниями по архитектуре, но… у скольки «вкатывающихся в IT» (особенно с каких-нибудь курсов «React с 0 до 100 тыс в месяц») они есть? Я и сам года 3 назад считал что это «слишком энтерпрайзно», сейчас вот начитался умных книжек и поумнел (правда все что я могу сейчас сделать с этими знаниями это фейспалмить глядя на то как очередной «компонент-многостаночник» нежно размазывает генеренные GraphQL типы по шаблону...)
И соответственно разработчик волен либо сам костылить монады/каррирование и прочее, либо брать библиотеку и полагаться на «стороннее видение»*. А потом приходит js-джуниор и «пишет как умеет».
И по итогу у большинства там будет не «надежное ФП», а «функциональный цирк».
*тут из личного опыта могу вспомнить милые попытки скрестить lodash с TypeScript и «радости» от того что какой-нибудь compose с огромным удовольствием терял типы где-то внутри себя, порождая на выходе any.
В который даже инди-разработчики стараются идти не сразу из-за принципиальной политики оного (DRM-free), остальным спасибо что те самые good old games хотя-бы начали спускать.
— Я пришел в магазин купить коробку на полку, в коробке только ключ от стим (раз в год ЕГС) и никаких других вариантов.
— Я «поверил в разнообразие выбора» и пошел в любой из ранее широкорекламируемых «ларьков» типа «ГейбСтор» и… мне там продали ключ в Стим =/.
В начале года на PC я купил 2 игры:
— Doom Eternal, который можно купить или в Стиме или на кладбище Бесезда-шопа (прекрасный выбор или надежный проверенный ТЦ или ларек который день на день закроется)
— Gears 5, где тоже выбор не ахти, но еще более однозначный: Стим (региональные рубли) или МС-шоп (баксы и курс). Т.к я люблю Сони (т.е не обладаю Шайтан-Боксом), то иду в Стим.
Про то куда в 99% ведут ссылки «Купить» на промо/оффсайтах игр я скромно промолчу.
А в Стиме будь добр «исключительно региональное и прочее».
У вас целых 7 ошибок в слове «смогут».
Потому что здесь мы как раз и можем отлично наблюдать всю ту «иллюзию выбора и непринуждения», которой вы пытаетесь петь дифирамбы, но в упор не видите ее ложности.
Потому что не каждый инди-разработчик стоит на «китайском броневичке с лейбой Tencent», не каждый разработчик Бобби Котик (которому, кстати, никакие проценты не мешают держать планку «самой прибыльной компании»), не у каждого разработчика есть конвейер «Фифа ХХХХ». И поэтому разработчику, который «считает тот самый каждый %» проще или «продаться в ЕГС за чемодан» или пойти «куда примут» чтобы продаться вообще. Затраты на «самостоятельную продажу» даже через бесплатную «промо-страничку», мне кажется с лихвой перекроют потери от тех самых пресловутых "%".
Бесезду, ЕА, Майкрософт тоже ничего* не принуждало к возвращению в Стим, а вон оно как вышло.
Блин, да того же Тима ничего* не принуждало весной этого года пойти на поклон к Гуглу (1.5 года терпел что в плей-сторе на запрос 'fortnite' предлагало 'pubg'!).
* читать как «рыночек»
Все превентивные обвинения, как правило, подразумевают что обвиняющий сам уже давно «за чертой» (а чтобы в этом убедиться достаточно всего-лишь посмотреть ваши ответы оппонентам).
Во-первых, все «платформы» в мире можно сразу поделить на 2 типа: открытые и закрытые. И это не запрещено никакими законами.
Во-вторых, даже «открытые платформы» (FOSS наверное идеальнейший пример) имеют свои правила, и если их нарушить то нарушитель перестает быть частью платформы (те же FOSS-снобы в своих бложиках смешают вас с коричневой субстанцией и их аудитория больше не будет ставить ваше творение).
Владельцы Бизнес-Центров на этом месте хватаются за животики, потому что они на их территории диктуют подрядчикам (провайдерам, секьюрити службам, кафе-столовым и прочим обслуживающим этот самый БЦ сервисам) СВОИ условия. А ведь должны же сволочи сами тянуть инет от ближайшего хаба, решать вопросы с поставками сырья для готовки/готовкой и т.п, организовать свою СБ с нуля…
Там же рядом хохочут и владельцы ТЦ.
Владельцы БЦ и ТЦ уже рыдают от смеха.
Потому что «площадь у нас арендуй», а дальше…
Хочешь инет — плати вот этому провайдеру
Хочешь кушать — иди вот в эту столовую (и хорошо если БЦ не в попе мира, в случае ТЦ чуть получше, но не всегда)
Хочешь воду в офис — будь добр исполнять «Ку» для СБ, чтобы они курьерскую машину пустили на территорию.
Нужны поставки «на витрину» — сам решай, но тоже будь добр «Ку» для СБ.
Зато ежемесячно с тебя спрашивают плату за «доступ к безграничным возможностям»(с)
А если не согласен то никто тебе не запрещает дома, на коленке, пилить свой интернет магазин, вложить дофига денег в «продвижение», и молиться чтобы выстрелило. Ну или через годик осознать бессмысленность этой затеи и распродать остатки дай бог по себестоимости (потому что на единицу твоего штучного и действительно качественного товара, на Алике уже сотню позиций выдает за копейки).
Я писал уже ранее, Эппл если что берет деньги не только за «доступ к безграничным возможностям»(с), но и за то чтобы ты, как разработчик, мог этими самыми безграничными возможностями пользоваться:
— их саппорт не кусается, а помогает решать твои проблемы (и баги в СДК чинить тоже, да)
— при «модерации» тебе объясняют чего не хватает (в том числе чтобы «на витрине» ты не выглядел как «бедный родственник»)
— и твое приложение может залететь «на главную» на тех же правах что и пресловутый «Фортнайт», и с тебя за это не спросят сумму с Н-нулями.
Тут игра вышла на PC и PS4 — Fall Guys.
На ютубе уже гуляют ролики о том «как правильно поставить несуществующую мобильную версию» через установку каких-то левых .apk с предлогом «ну вы тут скачайте поставьте запустите, это нужно чтобы проверить что вы не бот».
Вот и подумай сколько людей попытаются «поверить в свое счастье», если даже комьюнити-менеджер пишет ну очевидные же вещи.
Потому что «моя выгода» таки не слишком то и выгодна :(
1) мне больше ничего не принадлежит: даже купив диск в самом «пупер-дупер-издании» я не получаю игру целиком, я получаю диск с недопатченной версией 1.0 и ключик на скачивание тонны ДЛЦ).
2) При, казалось бы «регион-фри» интернете, магазины в региональных рамках творят что им хочется: достаточно посмотреть на недавний цирк CoD 2019 и Sony в РФ и его последствия.
3) Тут уже вопрос к тому самому Стиму: спасибо конечно за региональные цены, но… почему некоторые игры которые я уже купил, живя в РФ я не могу запустить за пределами «СНГ», даже если я в отпуск выехал?
И перед тем как помахать пальчиком и заявить: «так против этого же мы и топим» я уточню два нюанса:
— в сообщении выше вы подали зарождение этого как благо, а я сейчас лишь смиряюсь с обстоятельствами, в которых один капитальный ТЦ все же лучше чем «стихийный рынок» по выходным.
— ваше будущее: «ставлю что хочу, откуда хочу» не столь радужно как вы себе рисуете, и решать кто, что и откуда будет ставить, как и кому и сколько % отдавать будете не вы или маленький инди-разработчик а Эпики, Фейсбук, Амазон и Ко. И я думаю очевидно что о вас будут думать в последнюю очередь (как и о той же Эппл/Гугл и прочих платформ-холдерах).
Только вот все эти ругатели, не учитывают грубо говоря «95%» остальных пользователей платформы.
Человек купил iPhone, он абсолютно точно знает что если что-то у него будет не так то он накатает письмо в саппорт/придет в белый сервисный центр/магазин и там ему постараются помочь.
А теперь, вырастив за годы этот рефлекс, мы даем право каждому Джону сделать свой сервис/магазин где он будет делать все на свое усмотрение.
Наш обычный «95%» Пользователь:
— теми или иными путями попадает в этот магазин,
— ставит с него приложение,
— видит что «нужно оплатить подписку»/«докупить валюты»/«разблокировать новый урок»,
— достает кредитку и платит
— деньги уходят, а в результате кукиш
— вымуштрованный за годы пользователь пишет письмо в саппорт эппл (раньше же как-то помогали!), там шлют к «Джону»
— он идет в белый сервисный центр и там тоже пожимают плечами и шлют к «Джону»
— он пишет письмо «Джону» и (тут мы сжалимся над пользователем) его шлют к «разрабам»
— он с горем пополам пишет разрабам, а в ответ получает «ТЫ ЛОХ, ХА ХА».
— пользователь в следующий раз покупает Сяоми…
В текущей реальности, по моим сведениям, Эппл может обеспечить мани-бэк в случае единичных проблемных случаев или забанить мошенников полностью, если это систематично
Можно пожалуйста позитивные результаты вот этой «удачной конкуренции».
Или как и в случае со Стимом тогда я должен «кушать кактус сейчас», и надеяться на то что весь этот текущий ларечный цирк приведет к светлому будущему?
И в июле «Ghost of Tsushima» сыграл на контрасте с TLoU 2 и «сменил полярность»: обзорщики покрутили носами и сказали «среднячок», а игрокам наоборот понравилось.
Но т.к проекты сингловые то за недельку все стихло, а через две уже никто ничего и не помнит :).