- 1
Анальные размышления...
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Анальные размышления...
WEB-разработка в 2012-м году:
HTML, JavaScript, CSS, PHP/Java/ASP, MySQL/PostgreSQL.
WEB-разработка в 2018-м году:
Composer, Gulp, NPM, React.js, Yarn, Angular, SASS, Vue.js, TypeScript, Bower, WebPack, GraphQL и где-то там немного каких-то непонятных HTML, JavaScript, CSS, PHP/Java/ASP, MySQL/PostgreSQL...
Итог - за шесть лет некие одиозные уёбки всю индустрию WEB-разработки захламили откровенным мусором.
К примеру, сегодня решил на одном из проектов обновить "jQuery" путём скачивания его последней версии с официального сайта, и мимоходом заприметил весьма прелюбопытное изменение, обошедшее мою осведомлённость стороною, а именно - эти бляди уже не подсказывают, как это было раньше везде, как можно включить скрипт в HTML-код (путём вставки в "<head>...</head>" тега вида "<script src="джикюери.жээс"></script>"); теперь они сходу, на полном серьёзе, без песды, сразу предлагают выполнить команды установки в "NPM" или в "Yarn", тем самым демонстрируя, что это поеботня теперь первична.
"React.js", по которому ныне течёт половина косящих под илиту псевдопрограммистов в очочках и с мерзкими бородками, тоже ебанут, но по-своему - предлагает плюнуть на чистые и предельно очевидные "HTML" и "JavaScript" и перейти на его мыльнопузырное API с ёбнутым синтаксисом.
Не кажется ли вам, что индустрия пресыщена наслоениями? Или же некоторые из них вы по некоей причине находите для себя полезными?
Хотя, локальное хранение всех нужных библиотек и модулей поддерживаю. Их копии должны быть не только на сервере (<script src="/scripts/jquery.js" вместо <script src="//ololo.cdn.pitux/kokoko/jquery.js"), но и, если не в репозитории СКВ, то хотя бы бэкапиться вместе с проектом должны.
што?
чем yarn.lock не устраивает?
>>Их копии должны быть не только на сервере
CDN в жопу, да. Потому что я хочу сам собирать нужные мне модули каким-нить вебпаком.
И уж точно не хочу зависеть от того что сайт РКН завтра забанит CDN и у меня все упадет
Или от того, что в какой-то момент психанувший владелец CDN может встроить в скрипт вывод эротического баннера...
ня
Тут нужен аналог <noscript>
просто в моем примере проверяется sha, так что поменять либу не получится
Это не я придумал, кстати: Это на MDN написано
Может показаться, что в opensource подобная ситуация невозможна - дескать, никто не пожелает портить себе репутацию и принимать у себя дома цепных псов в погонах; однако нечто приближенное к этому имело место пяток годков назад, когда в банальный JS-файл рекламного движка "OpenX" (ныне "Revive Ad Server") некто из "доброго" и "бескорыстного" opensource-сообщества вклинил закомментированный PHP-эксплоит, который, заранее не зная, невозможно было найти и который при хитровыебанном запросе мог выполнять на сервере любой код. Ёбнута тогда была не одна сотня крупных порталов, использовавших халявный движок рекламной сети. К CDN непосредственного отношения данный пример не имеет; но он демонстрирует, что все эти "цедээнчики" и "гитхубчики" не являютя гарантией защиты от подстав.
Ты или читай ВЕСЬ код того, чем пользуешься или доверяй
Значит, серьезные продукты типа Linux или PHP можно не проверять, а код leftPad лучше читать перед использованием
> што?
> чем yarn.lock не устраивает?
Это же метаданные? То есть снова зависимость от репозитория.
Нехорошо, когда всё работало, и даже версии все записаны, а самих файлов уже по какой-то причине нет. Особенно, если проект завтра сдавать.
Тут лучше пойти многослойным путём. Метаданные в виде описания пакета и yarn.lock на первом уровне, бэкапы пакетов на втором, бэкап виртуалки с работающим проектом не третьем, копия работающего компьютера на четвёртом. Для проекта, с которым работаешь более месяца, обязательно нужен второй уровень.
Если оно в Питере то у них проблемы, а если ты чуть более хитрый то у тебя будет 3 инстанца в разных датацентрах. AWS так умет
хотя при деплое и своего приложения на какой-то СДН можно либы тоже рядом хранить
Речь шла о ситуации когда у тебя приложение на твоем сервере, а jquery к нему подключен через CDN.
> This will install jQuery in the node_modules directory. Within node_modules/jquery/dist/ you will find an uncompressed release, a compressed release, and a map file.
Тут мы приходим к изначальному вопросу. Что нахуй делать с этим "node_modules/jquery/dist/"
Вообще, на этой странице должен был быть полный пример HTML с подключением "jQuery" и его использованием. А npm- и yarn-макаки сами знают как установить, которых меньшинство, и это вторично.
Нужно поменять тайм-аут ожидания? - гуглишь какой модуль, "npm install", "require(ebotnya)".
Нужно логгировать ошибки (php_error_log)? Текущий модуль конечно-же это не умеет, гуглим какую хуйню ещё бы подключить. Нужен access_log - хуй, ...
Один, понимаешь?
Вот сидит веб-погроммист и хуячит ВСЁ на JS: и клиента и описание проекта и его сборку и тесты и бекенд и фронт энд. Все. Понимаешь?
Я не защищаю ноду, я вообще не очень люблю JS, но я прекрасно понимаю почему писать приложение на ОДНОМ языке лучше, чем на ДВУХ
https://habr.com/post/326284/
Здесь кто-то пытался начать сотый по счёту срач против "PHP", и мне сразу приглянулся такой комментарий (полностью соответствует моим взглядам):
"Знаете, я постоянно слышу, PHP мертв и вот Х язык/технология теперь будет топ.
Языки/технологии приходят и уходят а PHP как был востребован так и есть.
Помнится Ruby (RoR) появился в тренде, сколько проектов стали на нем разрабатывать, сколько вайна на PHP было и т.д.
Затем питон так же ворвался в нашу экосистему, занял конечно свою нишу, там и сидит.
Вот и NodeJs…
Все это на уровне интереса, тренда и т.п. Но реальные проекты, выбирают PHP или Java.
Остальное же просто тлен, за редким исключением.
P.S.
17 лет опыта разработки веб-проектов, 10 лет HL++"
Единственное - за "Java" я бы ему табло подобесточил; а в целом всё верно.
В целом же Python умудрился потеснить PHP в области веба, и это довольно логично потому что переходы на Python с PHP случаются, а вот обратно, разумеется, нет.
Это звук говна, упавшего в воду в унитазе
а gulp не нужен потому что есть webpack да и npm умеет таски
CLI уже заценил?
Такое ощущение, что проекты делаются "на продажу" и без оглядки на уместность и поддерживаемость. Программист хочет опробовать пару-тройку модных сырых инструментов в новом проекте, маркетологи неустанно прессуют низкокачественные пластмассовые ведёрки и грабельки.
Кто и как потом будет разгребать всю эту песочницу - никого не волнует. Выживут ли пластмассовые грабельки через пару лет, будут ли их поддерживать, легко ли будет поддерживать код с ними - вопросы, ответы на которые никто даже не пытается искать.
А логика-то простая: не брать в рот каку, ловить столько рыбы, сколько сможешь съесть и думать, выдержит ли зимой амбар столько зерна. То есть, думать и использовать только необходимые проверенные инструменты, которые реально упростят разработку и не усложнят поддержку.
Пакетные питухи - вещь полезная. Возможность быстро достать или обновить нужный модуль крайне удобна.
Желание интерактивности (выпадающих менюшек, драгндропа и валидации без перегрузки страницы) вполне закономерно: люди привыкли к интерактивным программам на десктопе уже много лет, и конечно же все хотят этого в вебе.
Любой, кто пытался шарить логику между серверов на php и клиентом на JavaScript знает, как приятно это делать. Это какой-то больной бессмысленный костыль, это копипаст кода, это треш, говно и ад.
Вполне логично что как только появилась возможность делать ВСЕ на клиенте и ВСЕ на одном языке люди за нее ухватилиcь.
А боли так много потому что у JS кризис подросткового возраста: с одной стороны на нем уже хотят взрослые дяди писать серьезную логику, крутые визуальные эффекты и продавать это за миллоны долларов.
А с другой стороны он только вчера научился модули, и package менеджера у него нет и стандартной библиотки нет (отсюда и миллионы leftPadов). Его еще трясет.
Ну, я надеюсь что лет через пять утрясет и у нас будут стандартные подходы для решения всех задач, может быть какая-то библиотека, точно везде будут модули (может быть их можно убдет устанавливать и кешировать в браузере, то-есть сайты будут как пакеты с зависимостями) и наверянка туда завезут опциональную стат типизацию как в питонию.
Станет не так противно.
LOL
И браузеры будут весить ещё больше, чем "node_modules"
Можно удалять неиспользуемые: если не открывали использующий модуль сайт неделю -- нахуй его
Десяток сайтов использует один и тот же модуль, но, т.к разработка происходила в разное время, с разным уровнем проггеров, их предпочтений и других модулей, поддержку с которыми требовалось обеспечить, каждый из сайтов использует свою, отличную от других, версию модуля. Итого, уже десяток единиц.. одного модуля, но разных версий.
В конечном счёте, окажется, что, тупо кешировать скрипты и стили сайтов на энное время( Что обычно и делается. Учитывая, что они обычно минифицированы итд ), более простое, эффективное и универсальное решение.
Мы нихера не умеем, но вы можете поставить N и D пакеты чтобы получить ещё большую хуйню, а когда мы высылаем релизы, то клали мы хер на совместимость, и похер веники что ваши проплаченные депенденсы отказываются компилится.
Если обратить внимание на корпо (или копро?)ративный умирающий (бессмертны? 20 лет, а все ни как не сдохнет) Delphi, то у них есть ВСЁ, в одной сука коробке, проект 2009-го года? не проблема! Открой, компилируй, даже проекты delphi 5 с небольшой анальной болью, но можно конвертнуть.... а ещё там есть бинарные пакеты, которые в общем-то позволяют энтерпрайзу помогать не умирать delphi, потому что можно за исходники драть по +3k$, или лови бинари по 90$ и соси документацию. У ноды нет бинарных пакетов, но да... вы можете написать это на C++, ахуеть короче. Короче мысль у меня такая:
Толковый продуктмен понимает, что общество это огромное количество пидорасов, где каждый хочет поиметь бабла со всех прочих, а потому все создают себе свой лунапарк и собственно не знают че потом со всем этим блять делать и кому продать. А потому надо брать все в свои руки, и писать собственный 100% суппортный шаблонизатор, ORM или иную хуйню которую очень хочет большинство пидорасов, но никак не скооперируется и не с умеет, потому что полюбому встанет вопрос как и кто гребет шекели. У ноды же другой подход:
Вот вам говно и палки, стройте сами свои ебучие замки из алмазов и сахара. У каждый блять наровит построить свой лунапарк.... в этом вся суть ноды.
Особенно охуенно когда в твоем лунапарке в одном из кирпичей возникает неебический баг, потому что создатель кирпича в общем-то положил хер на backward compability и все посыпалось после апдейта. Это ещё один касяк ноды. Хэдтрик короче.
>HTML, JavaScript, CSS, PHP/Java/ASP, MySQL/PostgreSQL.
Вьёб-индустрия уже тогда была пересыщена хуйнёю. Уже тогда.
Всякие недофреймворки (gwt,drupal, smarty), "полезные" питухи, новые говнофичи экмы.
Веб-мастер делал статичеческий сайт на чистом HTML 3 (от CSS и JS толку все равно не было да и не все их умели), максимум что могло быть это SSI и там вызов CGI на перле
https://en.wikipedia.org/wiki/ASP.NET_Razor
На моей памяти, популярные (говно)жеэсфреймоврки из 00х: ext(sencha), prototype, scriptaculous, moo tools.
Там в хидден поле сохранялся стейт всей формы
а если за говно берётся
то просто тратит меньше сил
ну цель была как-бы благая: формошлепки под WinForms должны были научиться делать веб не зная как веб работает: модель разработки такая же: там делаешь компоненту, делаешь у ней OnClick обработчик итд.
Получилось не очень:) Потом они изобрели MVC.NET
Что за оргазмы вокруг "Angular", "Vue" или "React" - так и не въебал...
Это как старый-добрый серверный шаблонизатор смарти/джанго/jstl/your name it с биндингом то есть обратной связью. Поменял данные: обновилась модель.
Ну и ещё один плюс: вёрстка отдельно, код отдельно. Модули, директивы, компоненты.
А вот реакт ёбань редкостная. Чего ещё от фейсбука ждать?
Поменял данные -- обнови страницу?
Не очень-то:) Особенно когда нужно грузить данные в зависимости от действий пользователя.
>>вёрстка отдельно, код отдельно.
К сожалению в современном мире верстка спаяна с JS, а JS с бизнес-логикой.
Мне тоже нравится когда бекенд полностью готовит данные, и потом отдает их в виде json или xml верстке которая просто их отображает. Но даже в Django люди любят писать:
Так что на эмоциональном уровне я понимаю тех, кто пишет все приложение целиком на JavaScript вместе с кодом и вертской и от бекенда ему нужны только данные. Там с сервера вообще чуть-ли не база торчит, в которую он шлет запросы типа SQL
С тех пор, как браузеры стали поддерживать document.querySelectorAll, это можно делать и без Жуквери.
Самое смешное: Жуквери есть смысл подключать, если хочешь поддерживать старые браузеры типа IE7. Но Жуквери 2.x уже IE7 не поддерживает, поэтому нужно подключать 1.x.
Какой смысл в Жуквери 2.x? Троллейбус из буханки?
Пайтукс?
Звучит как китайский клон одной опенсорсной ОС.
ааа
Pitux is a client-server communication protocol. It synchronizes action between pidors and Twitter feeds
https://www.npmjs.com/package/pitux
лолшто? у вас там Win2k?
Увольняйся скорее
вот в 2004 никто бы не мог
кстати, java после хотспота уже не такая медленная
а вместо asp надо говорить asp.net, потому что именно .net надо сравнивать с жабов
А "JavaScript"?
А вот "App Store" -- монополист, да, потому что на "iOS" без "jailbreak" даже через файл нельзя установить никакую программу.
В целом репозитории это хорошо потому что вирусни будет меньше.
нормально, можно
ынтерпрайзная учетка должна быть у разработчика приложения и ставь себе с его https сервера
И то через жопу.
Там ЕМНИП сначала нужен веб-сервер со ссылкой типа
А в том манифесте XML в котором путь до .ipa файла, и тогда можно ставить.
Причем надо еще автора добавить в разрешенные, иначе оно не запустится.
Но мы же про обычные программы.
Distribute proprietary, in-house iOS, watchOS, and tvOS apps within your organization. Securely host and deploy apps to your employees' devices.
Польщователи просто говорят что они тебе доверяют, и все: могут пользоваться
Или ты о том что там надо явно указать ID всех людей которые будут ею пользоваться?
Это правда (если я не путаю с тестовой версией)
- ну, да. Там вроде даже id не людей, а патефонов, если я не путаю.
Там целых полтора варианта, как дистрибьютить enterprise-приложения:
1) ты его рассылаешь по почте или держишь на уютной корпоративной помойке, откуда каждая желающая блядь его тянет, предварительно согласившись с тем, что ты охуенный разработчик при помощи волшебной галочки
2) ты платишь денежку дяденькам, у которых в облаке плавает SaaS, изображающий из себя копроративный AppStore
Своего АппСтора для бизнеса Эппл придумать и не сумела. Оно и понятно: слишком много гемора для 300 баксов в год
Я уже не помню: там было две сборки: для QA и для юзеров. Для QA точно надо было указывать ID патефонов, для юзеров не помню, ну может ты и прав.
Мы дистрибутили через вебсайтик с ipa файлом и itms-services:/, я помню.
Оче давно было
В общем там было так: в ту пору еще нельзя было даже во время разработки загружать что либо в телефон если ты не имеешь лицензии.
Потом она появилась и там надо было зарегистрирвоать телефон и стало можно в него загружать. Таким же макаром можно было загрузить в несколько телефонов для тестов (вероятно это и были ad-hoc билды).
- эта пора не так давно была, в общем-то.
А о чём щас речь? Сборка ad-hoc это когда у тебя есть ad-hoc provision profile, в нём есть список устройств, на которые можно заливать приложение, обычно это делалось для тестов или для демонстрации заказчиков. Уже года 3 с половиной как Эппл купил Тестфлайт и таким никто не занимается (ну, 99% людей)
Я имел близкие отношения с яблоком когда ARC только-только появился:)
и ты же сам себя ниже опроверг, потому что
> откуда каждая желающая блядь его тянет, предварительно согласившись с тем, что ты охуенный разработчик при помощи волшебной галочки
учетка покупается за 300 баксов вместо обычной за 100, которой и подписывается приложение, юзер ничего не платит, и айфон ему достаточен обычный, пидорский
Кстати, use case для enterprise app так сразу в голову и не приходит. То есть, я с таким сталкивался, но там ребята просто с жиру бесились. А так разве что корпоративный vpn
Ну ему напилили формочек с хранилкой на CoreData и с синком этого дела по HTTPS/Rest.
Хотя в целом ты прав: Он конечно бесился с жиру. Я ему 150 раз предлагал взять готовое, но он уперся
Ну там нагрузил себе 150 задач, в них и картинки (квиквью или как там либа чтобы их смотреть) и текст и говно всякое.
А кордата умеет и ORM: мапит всеполя в моделные объекты и умеет их оттуда доставать по запросу, удобно тащемто
- кордата и есть ORM. Какое у неё ещё предназначение? 🙂
> Так хотели же чтобы без интернетов работало.
- хорошо хоть не хотели, чтоб без электричества работало
Я не ловко выразился.
Я имел ввиду что она умеет и мапинг полей и запросы (и хранит все в sqlite, но я об этом знать не должен).
>>- хорошо хоть не хотели, чтоб без электричества работало
Так батарейка же.
Если бы они хотели просто айфоновый UI к сайту то было бы в тыщу раз лучше, не пришлось бы решать хитрые задачи синзронизации)
Но и без того знаешь как много интересных мест возникает когда надо хранить креденшелы для доступа к сайту с http auth в keychain, дебажить NSURLConnection (session вроде был но глючил) причем не было вроде даже никаких внешних либ (или была джя json, не помню), зато cocoa pods не использовали.
Помню что как-то было не просто все
- бэкенд там разный типа есть: sqlite, in-memory, xml и просто бинарные файлы. Из последних трёх что-то только на MacOS, но я не помню, что именно, потому что это дрочь для собесов и не более.
> Но и без того знаешь как много интересных мест возникает когда надо хранить
- ну должны же быть на мобайле и интересные задачи 😉
именно что enterprise app - приложение на заказ для исполнения какой-то конкретной прикладной бизнес-задачи заказчика, или не конкретной, а большой, рабочий мобильный терминал работника, который он (работник) должен держать в руке 90% рабочего дня
прямо сейчас пишем пару таких
и им не место в аппсторах/маркетах в общем случае
про терминал выше - там андроид, но мы всё равно на замарине его захуячим
а так, было в прошлом, например - приложение для губернатора и его ближайшее окружение, госконтракт, типа контроль исполнения поручений, там четко под айфон захотели, с дизайном интерфейса под кожу
часто заказчикам (которые на уровне, например, директоров ИТ) надо не только дешевле и функционал, но и чтобы показать своему высокому руководству, которое оплачивает банкет, что это не абы какая-то хуйня, а Хуйня с большой буквы, и поэтому она стоит много денех
Вам C# нравится больше чем Kotlin, или хочется потом быстро перепрыгнуть на iOS если что?
>> там четко под айфон захотели, с дизайном интерфейса под кожу
Ну это я понимаю: в смысле если крупные дяди пользуются то они могут хотеть свой золотой айфон, а если это оператор на складе то я бы ему китайский андроидный планшет бы выдал
Если выбирать между шестой джавой (которая тогда была под ART в андроиде) и C# то я одназначно за сишарп
все так думают, пока не начнут ковырять эту тему
- планшет неудобно держать 1 рукой
- девайс должен, например, смочь отработать минимум часов 8-9 без подзарядки на яркости, близкой к максимальной, будучи работающим почти 100% времени
- желательна защита от падений на пол, а также куда нить прикрепить ремешок
- желательна защита от дождя/снега - если выходить работать на улицу и/или туда-сюда
- иногда еще и температурные режимы накладываются
- терминал означает, что там и камера нужна хорошая в большинстве случаев с цепким автофокусом
- еще и nfc было бы заебись
- подумать над числом циклов зарядки и в целом процессе зарядки между сменами работников
- насколько китайский девайс не выкинет говна - например, отвалит к хуям модуль связи при пробуждении, или будет самопроизвольно кнопки зажимать в кармане, или будет ребутиться через раз
- сервисный контракт, чтобы на месте могли чинить сломанные экраны, микрофоны, выпавшие разъемы, не ожидая 2 месяца запчастей - далеко не каждый китайский вендор вообще имеет такую поддержку в россиюшке
эта ниша в целом всё ещё занята пиздец какими дорогими девайсами моторола, работающими в основном на какой-то шиндошс покет едишен практически - зато с аппаратным ик сканером, эргономикой хвата, и стоят по 60-90 т.р.
А шиндошс покет едишен можно на .NET хотя-бы?
там CE какой-то вроде, дотнет должен работать, 5 лет назад аналогичный девайс смотрели, как раз на дотнете и написали небольшой апп
мы не под моторолу эту пишем, мы её как бы заменяем сейчас
просто заказчик ровно с этой же стартовой точкой был - "бля, пиздец заебались 90к за устройство выбрасывать, давайте по 10, ну или ладно, по 12 тыщщ рублей сейчас накупим всем нашим тупорылым ублюдкам качественных китайских телефонов"
чует моя жопа, сразу по запуску в прод он обнаружит, что его охуительная идея сканировать камерой его говнокитайского телефона qr код 10х10см с расстояния 1-2м вообще не такая и охуительная, и тогда и под моторолу, походу, попишем модуль сопряжения, будет как блютус аксессуар
у меня нет предрассудков насчет языков, только если это не php, дальше экономика решает
если говорить про xamarin в частности, то всё говно кроме мочи
> быстро перепрыгнуть на iOS
быстро никогда и нигде не получится, но потенциальная такая возможность остается - писать придется на треть меньше
не пойму, шо там сложнаго то? Разрешил в настройках установку из неизвестных источников (одну галочку поставить) и кочай-устанавливай наздоровье 🙂
В Андроиде менеджер закачек после скачивания файла спрашивает, нужно ли его запустить. Соглашаешься. Он показывает манифест. Соглашаешься. Готово.
В Винде... запускаешь скачанный файл, ставишь галочки на непонятных фразах со словами "agree" и "accept", жмёшь 100500 раз кнопку "Next", при этом снимаешь галочки с предложения установить Яндекс-Браузер, шпионские тулбары и прочую ерунду...
В общем, в Винде процесс более увлекательный.
Впрочем, на старых андроидах с разрешениями было точно так же.
ты не админ на собственной машине?
А вот те, кому нужен админ, должны быть подписаны. Неподписанную программу от админа запускать это примерно как из под рута запустить скачанный из Интернета скрипт на перле
как будто мало CA, которые выдают code signing cert, и как будто они там какую-то ответственность несут за ущерб софта, который будет подписан сертификатом, ими выданным
Хм. Мне казалось это делает только MS для свои нативных апп, или это только для драйверов?
Всякие NSIS и InstallShield это от лукавого
На самом деле это всё боль, тлен и мрак. Кто-то чуть хуже, кто-то чуть лучше.
Просто MSI удобнее распостранять в больших сетях и управлять скриптом
У "Windows 10" был спецвыпуск с суффиксом "S" в названии, в котором была запрещена установка программ отовсюду, кроме "Windows Store".
Туда нужно добавить Chrome и 1С. А офис там уже есть. И 89% пользователей будут удовлетоврены
попробуй написать на своем любимом "джикюери.жээс" веб приложение средней сложности или SPA
ладно, ты прав: в php всё мусор: что язык, что фреймворки, что ORM