← All posts tagged JS

janPona

Всё. (Всё!!!)
Я ёбнулся окончательно!

Взял фриланс-проект.

Это при том, что у меня есть работа, опенсорсный проект и закрытый проект против интернет-цензуры в Украине. Когда я все успеваю? Хз, но, самое прикольное, что успеваю.

janPona

Так вот, обещал вчера рассказать, за что я люблю TypeScript. За строгую типизацию, которая диктует разработчику мышление проектировщика. Да, это сдерживает несущих тебя коней говнокодинга, но часто ловлю себя на том, что пишу час-два что-то, не тестируя и не запуская, а потом запускаю — и оно (о ужас!) работает! Потому что строгая система типов спасает от говна и случайностей.

janPona

БЛЯ
(навеяно #2949902)

У меня есть препод бывший по информатике. Это словами не передать. Он уже давно не работает преподом, слинял с ЛНР. При этом он — хороший программист, отличный просто! Но не хочет идти программировать, потому что видите ли, считает, что по уши в долгу перед своей родственницей, которая его в своё время вытащила с Донбасса. Поэтому он будет плакать, колоться, но жрать кактусы, продолжая за копейки работать у этой своей родственницы менеджером мелкого звена с 8:00 до 21:00 вместо того, чтобы пойти работать программером и прокормить жену и двоих детей по-человечески.

Но это ещё фигня! Он и студентов таких же плодит. Был у него перспективнейший студент, который уже сейчас готов джуновские $1500-$2000 получать в любой галере. Но мальчик этот... предпочёл доучиваться в никому не нужном ЛНРовском вузе на хер пойми какую "околокомпьюторную" специальность (вот, примерно, как у Монстреека и её дочери). А потом кому он покажет свой ЛНРовский диплом? HR-у галеры? Унитазу? Офицеру СБУ? Кому, блядь? Мы его, нахуй, в свою галеру уже были готовы забрать, но он пошёл в этот злоебучий "вуз".

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

Блядь, нахуя себе жизни ломать так?

janPona

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

janPona

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

А надо сказать, что это был год 2012, когда про эти ваши реакты с ангулярами слыхом никто не слыхивал, ES6 ещё не существовало, и вообще и вообще. Весь фронтэнд у нас представлял собой кашу-малашу из джаваскриптов, хаотично сваленых в кучу и, с помощью матюков и PHP, кое-как работающих.

Я, молодой специалист, горел сердцем за код и везде хотел внести хоть какой-то порядок. Буду сыпать техническими терминами, ничего? Никакого стейт-менеджмента в коде не было. Понятие "модель" отсутствовало, всё было "нописоно на джейкуери" коряво и абы как. Я предложил революционную на тот момент технологию — Backbone. Смотрите — есть модельки, на них можно подписываться, они умеют ходить по REST на сервер, есть коллекции, есть роутер! (Я даже не предлагал Backbone.View, которые были правда неудачными).

Ответ был просто сногсшибателен: "Не надо! Страшно! Вдруг что! А что если поменяется API? А что если поменяется лицензионная политика? О, это страшно".

А страшилка в том, что в JS не было не просто ничего, в нём не было НИХУЯ. Даже классов (да, знаю, их и там сейчас нет, но они хоть есть). И никакого EventEmitter-а не было в проекте на 3e6 строк кода, хоть в нём и нуждались. Всё это было в Backbone, но фобии запрещали просто взять и подключить его. Что я в итоге сделал? Правильно, я написал собственную ООП-библиотеку и EventEmitter с нуля. Такие же, как в Backbone, но потратив несколько десятков человеко-часов. Зачем? Потому что такова политика компании. И не зря её потом выкупил Oracle — дурак дурака видит издалека.

Что же касается модульности, то её в JS тоже не было, но был передовой на тот момент инструмент под названием RequireJS. Я был инициатором его внедрения. Впрочем, это тоже просрали, потому что люди попросту не понимали, зачем это нужно.

Как мы уже говорили, понятия Views в проекте также не существовало. Вместо слоя представлений всё было по-колхозному. С помощью jQuery мы что-то запрашивали по AJAX, потом что-то куда-то пихали с помощью того же jQuery (и дай бог запихнуть в правильном порядке, ну вы поняли). Вот тогда я начал войну. Я заимел единомышленников и сколотил из них инициативную группу по свержению существующего режима. Я вёл партизанские действия несколько месяцев, и наконец, была предложена концепция декларативной UI-библиотеки (уж не помню, как мы её назвали). Тогда, как я говорил, ни реакта, ни ангуляра не было, но мы знали Delphi, XAML и прочие UI-решения из мира нормального программирования. И мне повезло, что моим соратников выступил мой коллега который в своё время был одним из разработчиков Lazarus (эдакого опенсорсного линуксоидного клона Delpghi).

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

Кто были нашими оппонентами? Это были "пиздаболы" — разработчики с узким взглядом на разработку, но близкие к начальству. Коммуникабельные, но абсолютно непродуктивные. Они не внесли сколько-бы то ни было заметного вклада в продукт, но зато (зато!) были очень красноречивы на совещаниях, когда надо было завернуть какую-нибудь идею, да и вообще попиздеть (не поработать) любили. Митинговые пиздаболы.

janPona

Из-за того, что я рефакторю больше всех (если считать по клоичсетву строк), то моё имя фигурирует во всех блеймах, куда бы кто ни ткнулся. И поэтому все думают, что именно я написал {shit_code_name}. И долгие годы ещё будут думать. И возможно, через много-много лет, когда я уже уволюсь, кто-то даже попытается найти меня и пристрелить. Будет ржачно, если я уже к тому времени сдохну. Интересно, выкопают и осквернят или просто анафеме предадут?

janPona

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

janPona

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

janPona

Учу бомжа программировать на джавоскрипте. Но шо-то или бомжи у нас не такие, как в США, или джаваскрипт какой-то неправильный, короче, бля, чувствую, что нихуя не получится

janPona

Кроме любимого фреймворка React, могу назвать ещё, пожалуй, один. svelte.technology

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

В общем, если есть желание написать осмысленное, структурированное и современное приложение и при этом не хочется тянуть вообще никакой фреймворк, то Svelte — самое то.

Кстати, я на нём пишу UI для игры (рендерится будет с помощью SVG)