👨🏻 IT-блог Давида Шекунца 👴🏿
164 subscribers
1 photo
74 links
#fullstack #аналитика #data #продуктоводство #product #менеджмент #проектирование #architect etc.

А еще у меня есть хардкорный IT-проект t.me/it_kachalka

По любым вопросам, без стеснения: @davidshekunts 💋

davidshekunts.ru
Download Telegram
to view and join the conversation
⚡️ СУПЕР БЫСТРЫЕ АНОНСЫ ⚡️

(1) Выпустил англоязычный блог на Gatsby.js new.davidshekunts.com | https://github.com/Dionid/davidshekunts_blog

(2) Сделал open source сервис – Headless FAQ (скоро релиз)

(3) – Готовлю статью про инструменты современного “контент-мейкера”: Static Site Generators и Headless CMS или “Как же меня заебал WordPress”

Остальное смотреть в ВИДОСЕ: https://www.youtube.com/watch?v=ufQnLKFhj-0

P.S. Если заходит формат видео, ставьте здесь и в ютабах лайк и я все буду делать видосами

Сладких снов 💋
Моя новая разработка – Безголовый FAQ!

Я выпустил сервис, который позволяет быстро и непринужденно добавить стильную секцию FAQ (вопрос ответ) на свой сайт. А главное, абсолютно бесплатно!

Подробнее можно почитать в этой статье или в этом видосе.

А главное, теперь вы можете задавать мне любые вопросы!

Да, да, я разместил FAQ виджет на каждую страницу своих статей и если у вас возникает любой вопрос, вы можете (даже анонимно) написать его мне!

Помните, именно ваши вопросы наталкивают меня на написание годного контента, не стесняйтесь, вылейте сжатые стеснением потаёные мысли, назовите меня “падре Давид” и исповедуйтесь, станьте моим телезрителем, а я вашим Вассерманом, сделайте меня своим stackoverflow!

Всем удачи
(tech) Почему лучше заранее компилировать TS в JS

Моя первая статья-заметка на Habr, в которой я рассказываю почему использую предварительную компиляцию (например, tsc), а не компиляцию и запуск на лету (например, ts-node)

Меня даже практически не обосрали… Но буду рад, если вы накините там лайков и превратите хейтеров в труху (не зря же я своих людей здесь собираю 😈)

https://habr.com/ru/post/506562/
​​(iot) Что можно использовать, как надежный локальный хаб (мини сервер) с WiFi, GPS и другими модулями

IIoT (Индустриальный Интернет Вещей) – тема, которую я очень люблю и время от времени продолжаю заниматься, поэтому буду писать сюда всякие заметки

Часто встает вопрос: “Нужен локальный хаб (мини сервер) для размещения у клиента (возможно вне помещения), чтобы управлять датчиками и контроллерами. Он должен быть удобным в программировании, надежным в эксплуатации, модульным и дешевым, что лучше использовать?”

Вот к чему я пришел в одном из последних кейсов:

1. Микроконтроллер (на STM, ESP, etc.) – модульность и дешевизна, но сложность в программировании (C/C++ и в лучшем случае mJS / mPython), а главное низкая надежность (как со стороны софта, так и со стороны железа).

Я бы советовал их использовать, как “мозги” 1-3 датчиков / контроллеров и не более, но как объеденяющий хаб слишком непрактично.

2. Raspberry Pi (и похожие) – модульный, дешевый и удобный для программирования (поскольку Linux), но вот эксплуатация проблематичная: влага, перепады напряжения и недостаток охлаждения очень быстро выведут его из строя + модули часто “игрушечные” и имеют такие же проблемы с эксплуатацией.

Короче, вы убьете слишком много денег и времени, если будете эксперементировать, поэтому использовать только если повезет найти фирму, у которой уже есть (!) уже проверенные в бою (!) модели с RPi на борту.

3. Телефон Android – стоимость, удобство программирования, впринципе, даже в эксплуатации неплох.

Основная проблема – модульность (хоть и тут есть хаки), корпус и неполная легальность.

А еще не все клиенты / инвесторы поймут, если вдруг увидят Android телефоны в корпусе устройства.

!ПОБЕДИТЕЛЬ!
4. Промышленный роутер – я даже не знал об их существовании, но это чудо: Linux, ARM, до 512 RAM, очень удобны в эксплуатации, имеют аналоговые и цифровые выходы, а также идут в комплекте с GPS, SIM и подобными модулями. Короче, это Raspberry, но для серьезных проектов. Даже цена радует: около 250-300$

Изучая российский рынок, самой оптимальной (на конец 2019-го) считаю модель: iRZ RL21w (LTE/UMTS/HSUPA/HSDPA/EDGE+WiFi) 4G

Итого

Идеально, это иметь сервер на стороне клиента, но это не всегда возможно, поэтому промышленные роутеры вам в помощь.

Буду рад, если поделитесь своими альтернативами в комментариях или ЛС
(iot) (V1.1) Что можно использовать, как надежный локальный хаб (мини сервер) с WiFi, GPS и другими модулями

Мой многоуважаемый коллега Егор (@zeromind) и по совместительству главный инженер в нашем проекте Meveric подсказал еще одно очень интересное решение:

5. Wiren Board (wirenboard.com)

Со слов Егора:

“Там внутри модульный компьютер, рассчитанный на индустриальные применения, а не китайские платы для любителей.

Я делал на нем контроллер теплицы, когда в X работал.

К этому компу, собранному с необходимым обвесом в корпус на дин рейку идёт огромное количество модулей – измерения мощности, реле, диммеры, модули ввода, есть гальванически развязанный 485, есть крипто-чип на плате.

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

Приложения на Golang собираются для него через кросс-компиляцию.

В целом, хорошая штука.”
(nerd) Мини-заметка + чеклист по работе с Логгерами

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

Просьбы: (1) если вам нужно больше пояснений по пунктам, напишите свой вопрос в виджет внизу страницы поста или мне в ЛС, (2) если знаете, что еще нельзя забывать в логгерах, то обязательно пишите в комментарии или ЛС.

https://davidshekunts.ru/2020/06/22/bytie-loggera/
(tech) Как делить компоненты с логикой и без (React / Vue / Шо угодно)

Заметка о том, как я делю компоненты на Frontend и небольшое кол-во правил, которых придерживаюсь (в будущем буду расширять, но это наиболее показательные)

Заметка быстрая и кривая, мне интересно насколько подобное вам понятно и интересно, поэтому, если там все ок то ставьте 👌, если же непонятно, то ставьте 👎, НО обязательно пишите комментарий, иначе я не понимаю как делать контент лучше для вас

https://davidshekunts.ru/2020/06/23/kak-delit-ui-komponenty-s-logikoj-i-bez/
(it) Пересядь с иглы WordPress на Static Site Generator и Headless CMS #нивкакиестэки

Первый долгожданный длиннопост на habr, ура, товарищи 🎉

Посвящен он сравнению WordPress с альтернативным “модным” технологическим дуэтом Static Site Generators (SSG) + Headless CMS (HCMS)

Рассказываю про свой опыт создания new.davidshekunts.com (куда я рано или поздно начну активно писать для забугорной аудитории) благодаря которому я наконец-то “осознал”, что такое SSG и HCMS

Короче, если вам интересно узнать про новые инструменты контент-мейкинга или вы также сильно заебались от WordPress, как и я, то добро пожаловать по ссылке:

https://habr.com/ru/post/507918/

Почитайте перед сном и спать 💋
(rulethemall) Как познакомить разработчика с ценностями вашего бизнеса не прибегая к насилию

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

А почитав комментарии, у меня начались флешбэки во времена предательств, угона клиентов, менеджеров-сутенеров, клиентов-насильников и другой грязи, с которой приходится сталкиваться, работая фрилансером или в студии до 1м за проект. Вау, я думал я уже поборол ПТСР с того времени, ан нет, оказывается…)

https://habr.com/ru/post/508384/
(kierkegaard) Комментарии – инструмент рефлексии

Долго пытался сформулировать одну мысль и только длительная дискуссия в комментариях под предыдущим постом помогла это сделать:

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

Поэтому появляется ощущение, что автор (я) такой же, как они, и прием этот только для манипуляций.

Наверное, главный мой посыл: «Есть места, где умеют грамотно управлять людьми и где #{тема статьи} используется во благо, а не для манипуляции.» – стоит написать отдельный пост и давать на него ссылку во всех статьях «от чистой души и сердца», которые я пишу.

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

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

Так что не стесняйтесь писать, это дает мне возможность подумать.
(db) PostgreSQL json/jsonb column to View + Hasura lifehack

Дэенджер: задротский пост

PostgreSQL – потрясающая База Данных (БД). Одной из ее самых крутых функция является полноценная поддержка типа json и даже свой более оптимизированный jsonb. Фильрации, сортировки, поиск по ключам, совпадениям и векторам, даже функции и триггеры, все есть из коробки.

Но бывают ситуации, когда вам хочется хранить данные в jsonb, а нужна таблица с этими данными.

Например, такая ситуация происходит, если использовать Hasura.

Hasura – это Access Managment и GUI до вашей PostgreSQL, которая при этом еще автоматический создает GraphQL CRUD API поверх всех таблиц. Hasura нафарширована таким огромным и потрясающим функционал, что я буду ее очень часто упомянать и рассказывать про ее прелести.

Так вот, Hasura дает CRUD API, который позволяет делать поиск по всем колонкам таблиц, в том числе jsonb. Но на данный момент (июль 2020) у поиска по jsonb отсутсвует много важных функций, которые дает PostgreSQL.

Чтобы врубить все возможности Hasura на полную надо превратить колонку jsonb в Представление (View).

Представление – это “виртуальная” таблица, которая не совсем существует, но при этом с ней можно обращаться почти на 100% также как и с обычной таблицей.

Как именно превратить json/jsonb колонки с объектами/массивами объектов во View я рассказал вот здесь: https://dba.stackexchange.com/questions/151838/postgresql-json-column-to-view/270546#270546
(tech) Превращаем обычный backend в Firebase-like машину смерти (или нет)

Рубрика: «Очумелые рукожопики»

И сегодня я расскажу о мегакостыле, который может прилично сэкономить вам времени:

Представим, что вам с frontend надо делать запрос к backend и при этом уточнять кучу фильтров, сортировок и полей, которые вы хотите получить.

А проект надо запустить уже завтра. И вы вздыхаете:

«Вот бы у нас была возможность как в Firebase или Hasura прям с frontend запрашивать нужные данные с любыми фильтрами и сортировками… Но у нас обычный API и SQL база данных, мы так не можем…»

И тут вы неправы! Можете! Причем без всякого стороннего ПО!

А “как?” узнаете в статье, а то слишком длинный пост получится.

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

https://davidshekunts.ru/2020/07/09/zaprosy-k-bd-pryamo-s-frontend/
(tech) МЕГА НОВОСТИ: alpha-версии DDD Light Framework для Node.js & Typescript + релиз Headless FAQ + релиз Tiamo

!Видео версия!

(1) 🎉 Я выпустил alpha-версию DDD Light Framework для Node.js & Typescript 🎉

Вот ссылочка: https://github.com/Dionid/dddl

Там вы найдете монорепу с библиотеками, которые позволяют реализовать кучу концепций из DDD, CQRS, EDA, SOA, ROP и так далее.

Уже сейчас этот фреймворк используется в production проекта 2 проекта и дает отличные результаты.

Вы можете спокойно тыкать его и даже использовать на своих pet-проектах!

Если же совсем непонятно, что там я накодил, не беда, ждите скорого выхода новых глав Энциклопедии DDDL и Курса, в которых я буду рассказывать про реализованные концепции и давать гайд по коду фреймворка.

(2) ⁉️ Headless FAQ теперь на github

Если кто забыл ссылочка на пост

Вот здесь можно посмотреть код: https://github.com/Dionid/headless-faq

Там вы найдете: React Admin, Hasura, Serverless, GraphQL, а главное, DDD Light в действии!

(3) 🛡️Tiamo – True Identity and Access Management Oh yeah

Вот здесь можно посмотреть код: https://github.com/Dionid/tiamo

Сервис, который позволит добавить сервис аутентификацию и авторизацию в одну команду!

Это еще один проект на DDD Light Framework, причем код там достаточно интересный, например, там уже реализована Passwordless аутентификация.

А еще это прекрасный starter-kit для следующего проекта на Node.js + TypeScript.

Изучайте код, оставляйте Pull Request (PR), задавайте в Issues вопросы, я на все отвечу, ругайте меня там, где я накосячил (а это много где), любите маму, двигайте булочками

P.S.

Это очень важный для меня момент и я рад, что я не один, спасибо всем вам 💋

Обязательно смотрите видос: https://www.youtube.com/watch?v=tjJugHxD9II
👨🏻 IT-блог Давида Шекунца 👴🏿 pinned «(tech) МЕГА НОВОСТИ: alpha-версии DDD Light Framework для Node.js & Typescript + релиз Headless FAQ + релиз Tiamo !Видео версия! (1) 🎉 Я выпустил alpha-версию DDD Light Framework для Node.js & Typescript 🎉 Вот ссылочка: https://github.com/Dionid/dddl Там…»
(tech) Эволюция развития разработчика и Framework

Автор просто потрясающе и невероятно лаконично рассказал какие типы Framework существуют, расставил их как ступеньки и объяснил как и зачем разработчик по ним поднимается. Смотреть видос х2 скорости

Если соберем 10 👌, я сниму такой же видос, но с примерами на Node.js

https://deworker.pro/edu/series/interactive-site/why-microframework
(tech) Как (юнит) тестить приватные методы класса

1. Если в ваших приватных (защищенных) методах много важной логики, которую надо тестировать – это сигнал, что пора эту логику вынести в отдельный класс, методы которого будут публичными и передавать его, как зависимость (DI) в конструктор исходного класса.

Так вы (1) сделаете свой основной класс тоньше и ближе к SOLID, (2) не столкнетесь с проблемой тестирования приватных методов.

2. Исходя из первого пункта, можно также заключить, что само по себе “тестирование приватных методов” – нелогичная идея. Они должны быть небольшими и утилитарными, поскольку настоющую ценность для вашего приложения имеют как раз таки публичные методы (другие компоненты приложения могут вызывать только их).

3. Если уж никак не получается / не хочется выделять в отдельный класс, то есть лайфхак:

В файле теста наследуете тестируемый класс и объявляете у него публичные методы, которые под собой просто вызывают приватные. Пример:

// user.ts
class User {
protected hashPassword(password: string): void {
….
}
}

// user.test.ts
class UserForTest extends User {
public testHashPassword(password: string): void {
return this.hashPassword(password)
}
}
(tech) Как пройти тестовое, не написав ни строчки кода

Этот совет поможет и тем, кто эти тестовые делает и тем, кто дает.

Любая компания часто дает одинаковые тестовые задания не только в рамках одного отбора, но и из года в год.

Принимают они эти тестовые, в виде github репозиториев. (смекнули?)

Поэтому, идем в Github и наверху в поисковой строке вписываете название фирмы / название фирмы test task. (сходите проверьте свою фирму и отпишитесь в коменты)

Так я находил задания для ДоДо Пиццы, Ultimate Guitar и многих других фирм еще до того, как даже отправлял им свою кандидатуру.

Конечно, я мальца приврал с “ни строчки кода”, но если у вас есть голова на плечах, вы сможете оценить задачу, заранее продумать архитектуру решения, а что-то реально интересное просто спiздить.

Собственно, компаниям бороться с этим не имеет смысла, сложно. Поэтому посоветую (1) менять чаще тему задания, (2) добавлять всякие плюшечки: “не redux, а mobx”, “не компонентами, а хуками”, “не join, а subqiery”, “не вот эта ORM, а другая” – если человек совсем кретин, он не справится с таким маленьким изменением.
(курс) “LVL👆UP” – профессиональный рост команды разработки

Запускаю курсы по повышению квалификации команд IT-разработки под названием “LVL UP”!

Короче, выведу команду из Middle в Senior, а из Senior прямо в космос

(особенно эффективно для Full-stack JS / TS команд)

Больше подробностей о том как это происходит и отзывы клиентов здесь: https://davidshekunts.ru/2020/05/23/service-lvl-up/

Пишите в ЛС (@davidshekunts), буду рад познакомиться)

А еще советуйте своим коллегам и знакомым, за каждого клиента щедро отблагодарю 😉
(lvlup) Плавненько от MVC к DDD Light. Часть 1. Диета жирной Модели.

Рассказываю об ошибках и проблемах, с которыми я сталкивался при тех анализе проектов в рамках LVL UP.

Сегодня поговорим про проблемы, которые могут преследовать стандартный MVC код, а именно “ожирение” Модели.

https://davidshekunts.ru/2020/04/06/plavnenko-ot-mvc-k-ddd-dieta-zhirnoj-modeli

Я буду рефактирить текст и выкидывать его на хабр, поэтому мне очень важна обратная связь от вас в ЛС / комментарии / рекциями к посту, спасибо 💋
(rulethemall) Что делать, если разработчик не называет свою цену?

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

Такое простительно для Junior, но непростительно для Middle+

Назвать цену – значит взять ответственность за результат, который человек принесет в ответ.

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

Если интересно, как “оценить себя”, неважно, кодер вы, дизайнер, редактор, кто угодно, поставьте 10 классов (👌) под этим постиком.
This media is not supported in your browser
VIEW IN TELEGRAM