Разработка кода и здоровый шмептицизм
209 subscribers
227 photos
23 videos
1 file
109 links
Пишу про коммерческую веб-разработку с ИИ и без него, тимлидинг и будни моей небольшой студии netspark.ru. 20 лет опыта с Drupal, также работаю с Laravel и Vue.js.

Между постами про разработку пишу просто про жизнь, которая в это время происходит.
Download Telegram
Приступили к семейному просмотру. Болеем за Хоппера, Стива и Динамо!
1🔥63
Обсуждал тут улучшения своих сайтиков с чатом жопотэ, дипсиком, перплексити и другими сказителями. Идей роботы озвучили очень много, и внезапно я понял, что нужно возвращаться к истокам: взять и переписать свой бложек и лендинг студии обратно на Turbo Pascal Друпал.

Эксперимент с October CMS был по-своему прекрасен, узнал и сделал много нового, и CMS неплохая. Но ряд вещей, которые я хочу сделать, на Друпале сделать тупо в 2–3 раза быстрее.

Перенести в принципе недолго, сделать всё на вьюзах, а шаблоны фронта в October уже сделаны на twig. Можно даже управиться к Новому году. Надо только понять, к какому.
1👍6🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Ради этого стоило изобретать генеративные нейросети!
🔥4🥰3😁2
А вот и дайджест материалов за ноябрь.

Рабочее 🧐
— написал статью о выборе между CMS и фреймворками, вместо VC отправил копию на Workspace, попробую там публиковать что-то релевантное
про службу доставки и синдром самозванца

Техническое 👨‍💻
рецепт регистрации/логина через телеграм ботов
— пост о том, почему не надо писать тесты на визуал
рецепт сортировки по json-полю в таблицах Laravel Orchid

Про жизнь ✍️
— если можно делиться рецептами кода, почему бы не поделиться рецептом коктейля
— и шуткой на английском
— про сериалы: The Chair Company, с Джеймсом Пьюрфоем и конечно про Pluribus
— про книжку The Subtle Art of Not Giving a F*ck

Октябрьский дайджест
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Начал тут из любопытства китайский на дуолингве. А там почти сразу ероглифы эти надо не только читать, но и даже писать.
Как вообще китайцы всё это ханьцзы запоминают, невозможно же. Должны быть какие-то мнемонические правила. Ведь должны быть?
4
Мама я в телевизоре 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Сколько стоит работа фрилансера?
Отвечает эксперт из комьюнити Mellow 👆

Подписывайтесь на наш канал о зарубежном фрилансе и заходите в чат: там можно задать вопрос фрилансерам с опытом, найти новых знакомых из своей сферы и даже (иногда) получить заказ.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍7
Важное пятничное напоминание:

Что один программист сделает за месяц, два программиста сделают за два месяца.
💯42😁2
Воскресная открыточка на день разработчиков по white label. Такого дня в календаре почему-то нет, а хорошо бы был.
6
Практическая задачка про командную разработку

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

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

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

Разработчик переключается на изначально предложенный метод А. Метод А срабатывает как ожидалось, задачу удается решить, но с превышением оценки на ~80% из-за потраченного на Б времени.

Система S — внешняя, узконишевая, почти безальтернативная и довольно инновационная. Найти разработчиков с опытом в ней непросто. Документация к S есть, но неполная. Как водится, её неполнота усугубляется с каждым обновлением. По сути разработчики работают с S раз в жизни — если придётся. У тимлида есть прямая линия с CEO системы S, но она не предполагает ежедневных бесед по любому поводу.

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

Ниже опрос.
🔥2
Обсуждение бесполезности тимлидов на одной из платформ, куда я запостил «чудовищную ошибку» выше, напомнило старый анекдот.

Токарь вдумчиво протирает гаечный ключик тряпочкой. К нему подходит начальник цеха:
— Петров, [censored]! Ты какого лешего домой так рано собираешься? Время всего 17:30!
— Понимаешь, я пока ключик тряпочкой протру, пока станок железной щеточкой почищу, пока ручки мыльцем отмою, пока переоденусь… Вот как раз и конец рабочего дня наступит.
— Нет, Петров! Считаю, что это неправильно! Вот я, например, собираюсь с работы ровно в 18:00.
— А тебе-то что собираться? Рот закрыл и пошёл…


Надо написать что-нибудь ещё жизнеутверждающее про пользу тимлидства.
👍4🔥3
В ходе нетворкинга общаюсь с разными людьми, тоже связанными с веб-разработкой. И конечно часто упоминаю Drupal, раз уж последние 20 лет чаще всего работаю с ним.

И довольно часто слышу в ответ что-то вроде: «Друпал? А он что, еще жив?»

Понять можно. Если человек сталкивался с ним когда-то давно, в начале 10х годов например, и тогда показалось что он не очень актуален, то сегодня-то тем более. Тогда Друпал критиковали за всякое — и за «отсутствие ООП», и излишнюю функциональность, и за принцип not invented here, и за сложность перехода от одной мажорной версии к другой. Хотя лично мне и D6, и D7 хорошо заходили.

Это как встретить старого приятеля, которого не видел 20 лет. Сознание не очень-то интерполирует его «возможный жизненный путь» и не натягивает его на эти 20 лет. Поэтому может показаться, что он все такой же, как «тогда». А он уже не такой.


Вот и Друпал уже не такой. Правда, за эти годы он нажил не седину, геморрой и алименты. А наоборот — стал гораздо краше! В конце 2015-го с ним произошло лучшее, что могло произойти: вышла версия 8, в которой сделали:

Конфиги на yaml. То есть всё, что ты накликал в админке, лёгким движением руки выгружалось в файлики и автоматически разворачивалось в продакшне. Это упростило в разы не только разработку, но и поддержку: теперь можно легко увидеть, чего там клиент в настройках нажал и всё сломалось. Увидеть и отменить.

Установку и обновление всего через composer. Апгрейд мажорных версий тоже упростили. Для перехода с 8 на 9, 10 и 11 переписывать сайт целиком уже необязательно.

— Темизацию на Twig, медиа-библиотеку а ля Wordpress, поддержку REST для вывода контента в JSON/XML и получения headless CMS, и много чего ещё.

Отринули критикуемый многими принцип not invented here, по которому не любо было тащить в ядро сторонние решения. Отринули и тут же затащили под капот Symfony.

Это такой крутой фреймворк на PHP, на котором можно писать в три раза больше кода, чем в Laravel, зато он будет чистый и правильный.


Это сразу зарешало большинство претензий к несовременному коду и отсутствию ООП. Классов, объектов и паттернов теперь сколько угодно. И контроллеры есть, и роутинг, и внедрение зависимостей, и декораторы, и подписка на события.

Ляпота, короче. «Свинья в помаде» (для тех кто не помнит) превратилась в прекрасную бабочку серьезный современный продукт. С высоким по-прежнему порогом вхождения и с чувством полного удовлетворения от своей работы, если этот порог преодолеть.

— Так что, да, Друпал жив! — глаголю я вам в ответ, дорогие друзья. И уж точно поживее многих.

Да, в нашей стране ситуация с ним не очень удачная: всё вокруг поглотил 1С Битрикс. Хотя обидно не это, так бывает. Мне как разработчику обидно, что на то нет никаких технических причин. Писал про это в статье CMS vs Framework.

При этом во всем остальном мире с Друпалом полный порядок. Серьёзные контентные сайты, крупные, со связанными поддоменами, университеты, e-com, государственные порталы — везде ему находится применение. Поработал с парой десятков проектов в Европе и США, за последние 7 лет 1 каталог перешел на битрикс WordPress, 1 магазин на Shopify — в связи со сменой маркетинговых команд, которым на входе конечно надо всё переделать. Остальным всё круто, работают годами. Хотелось бы конечно и на нашем рынке с ним чаще работать.

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

А ещё недавно Canvas 1.0 вышел, визуальный конструктор лендосиков на Drupal. На днях мы с ним поиграем, посмотрим чего он может, а чего нет. Результаты будут тут, не переключайтесь.
5🔥6👍32
The Revenge Club / Клуб мести

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

Шестеро незнакомцев встретились в группе поддержки для переживающих развод. Это как анонимные алкоголики, только не анонимные и бухать пока можно. И вот они сидят в кружке на стульчиках, рассказывают как их бросили, обманули, изменили и кинули. А потом идут собстна в бар и там слово за слово решают, что надо с этим что-то делать. А именно — страшно мстить. Ну или не очень страшно, но как-то немножко мстить нужно обязательно. Потому что сколько можно это терпеть, доколе и вообще nevermore.

Вот к мести они вшестером и приступают. И, судя по тому, что в самом начале их допрашивает полиция, всё пойдет не совсем так, как задумано.

В жанрах у сериала указаны комедия, драма и триллер. В плане комедии — поржать не удастся. Шутки какие-то есть и ирония чувствуется, но не более того. Триллера маловато. Но как ироничная драма с элементами детектива смотрится неплохо. В главных ролях Эйми-Ффион Эдвардс из Slow Horses и Мартин Компстон из Line of Duty. И это безусловно плюс.

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

На imdb рейтинг сейчас 7.6. Сериал всего из 6 серий, неплохой, чтобы скрасить пару вечеров. Тем более, как сообщает сериальный ботопотам, смотреть сейчас всё равно больше нечего. 17-го только выйдет новый сезон Fallout, а 25-го — еще три серии «Странных дел», и больше ни-че-го.

#сериалы
1👍4
Вчера перед сном решил — а ну-ка сейчас за 20 минут добью большую фичу. Долго делал, чуть-чуть осталось. Сел, открыл, и правда — через 20 минут фича была готова. Но чёрт меня дернул запустить после этого все тесты. Пока фичу делал — смысла не было запускать весь пакет. А тут, в ночи, решил запустить.

И конечно как посыпались ошибки! Пару простых исправил, и оказалось, что все остальные — потому что сломался поиск. У меня в проекте используется Laravel Scout для быстрого поиска-автодополнения по нескольким типам моделей одновременно, чтобы было удобно искать что угодно. И вот он сломался сразу весь. Абсолютно все поиски возвращались пустыми.

Посмотрел на проде — всё еще работает. Стал разбираться, чего такого я мог сломать. Отключил несколько установленных библиотек — вдруг конфликт у трейта Searchable с чем-нибудь. Включил обратно ту, которую наоборот — стёр за ненадобностью. Не работает.

Откатил контроль версий на точку до начала разработки фичи. Не работает! Подозрительно как-то. Накатил обратно. Обновил зависимости. Не работает.

Поотлаживал классы Скаута — увидел, что почему-то драйвер поиска определяется как null (то есть никакой)! Полез смотреть, оказывается у меня внезапно в .env прописано SCOUT_DRIVER=null! Хотя я просто полагался на дефолтное значение из конфига scout.php (который не менялся), и в .env вообще драйвер не прописывал.

В общем, непонятно, кто такое сделал-то — то ли один из устанавливаемых пакетов в ходе vendor:publish проявил инициативу. То ли я зачем-то выставил, хотя никакой пользы от этого не припоминаю. То ли нейросеть, которую тем более об этом не просили.

В общем, пока нашёл ошибку и вернул нормальный драйвер, прошло уже конечно в разы больше 20 минут. Зато в конце увидел все тесты зелёными. На чем и ушел спать, вот только
🔥5👍42
Издревле, еще до взлета на холмы, было принято на Руси делать сайты на Drupal.
Сайты на Drupal — надежно, добротно, любо! Заходи добрый путник в комментарии, обсудим!
1👍5🥰32🔥1