10.9K subscribers
331 photos
17 videos
15 files
714 links
Архитектура | Программирование | Профессиональное развитие

Live канал - https://t.iss.one/soer_live

SOER CLUB - https://soer.pro или https://boosty.to/s0er

Бусты - https://t.iss.one/boost/softwareengineervlog

№ 5101661084
Download Telegram
Forwarded from FrontEndDev
Конвертируем строку в дату

Способы получения даты из строки и основные ошибки, которые при этом допускают разработчики

https://www.rajamsr.com/javascript-convert-string-to-date/
👍104
Брендированные типы в typescript

Привет, с вами снова @devmargooo и сегодня мы с вами поговорим о типизации в приложении на typescript. Структурная типизация в typescript, в отличие от номинативной, определяет совместимость типов, основываясь не на названии типа, а на его наборе полей. В этом структурная типизация похожа на утиную: если это выглядит как утка, плавает как утка и крякает как утка, то, вероятно, это утка. К сожалению, это может приводить к проблемам. Следующий код не приведет к ошибке компиляции, несмотря на то, что тип some_string указан как string, а не Email :

type Email = string;

function auth(login:Email) {}

const some_string:string = "some_string";

auth(some_string); // ok


Тип string структурно идентичен типу Email , поэтому ошибки нет.

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

type Email = string & { _: 'Email' };


Теперь тип Email будет структурно не совместим с типом string. Мы получим ошибку компиляции:

type Email = string & { _: 'Email' };

function auth(login:Email) {}

const some_string:string = "some_string";

auth(some_string); // Argument of type 'string' is not assignable to parameter of type 'Email'.


Чтобы код заработал, нам придется явно указывать, что переменная имеет тип Email:

const some_string = "some_string" as Email;


Или добавить проверку в наш код, которая также будет выводить нужный нам тип:

function isEmail(value:string): value is Email {
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return emailRegex.test(value);
}


Для удобства создания брендированных типов можно воспользоваться дежнериком:

type Brand<B extends string, T> = T & { readonly _: B }


Пример использования:
type Email = Brand<'Email', string>;
👍52💩162🤷1
На Boosty добавил запись стрима "Как разбить монолит на компоненты" (доступ только для подписчиков Boosty, так же стрим доступен на soer.pro)
👎23👍74🤷2🔥1🤡1
У нас в клубе много профессионалов, которые открыто делятся знаниями, хочу порекомендовать человека из клуба, который завёл канал, где фиксирует мысли по менеджменту, канал называется "Management stuff". Не реклама, реально ведёт один из наших соеров.
🤡15👍13🥰2
Отличный доклад про моделирование предметной области на типах:
https://www.youtube.com/watch?v=2JB1_e5wZmU&t=2s&ab_channel=KanDDDinsky
👍23
Небольшой, но интересный обзор нашумевшей технологии ИИ-инженера Devin
🤖 ИИ только что лишил меня работы... Я ненавижу тебя Devin

▪️Видео

@machinelearning_ru
😁306👍4🔥3💩1🤡1💯1
Обсуждаем в клубе идеальное резюме, вот такой вариант мне прям очень понравился (по оформлению) https://cdn.myresume.ru/wp-content/uploads/2022/02/Rezjume-po-GOSTu.png
😁23🔥11👎8🤡1
В связи с развитием AI найм в айти будет сильно меняться. Можно, конечно, верить, что все останется как сейчас, но лучше подготовиться к разным вариантам развития.

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

Дальше тренд будет только усиливаться, новички будут подвергаться все более строгим проверкам и конкурс на место будет только расти.

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

Рекомендации и нетворкинг работают и сейчас, но я думаю, что их роль будет усиливаться.

Поэтому, мы будем в Соер клубе особое внимание уделять проблемам найма, и всячески оказывать помощь при поиске первой работы. Сегодня это цель номер один.
👍83🤡44🗿62🤔2
Я люблю идеи OpenSource ещё с тех пор, когда начал писать первые игры (1998 год) и познакомился с библиотекой Allegro, которая строго говоря не называлсь тогда OpenSource, но была ярким примером свободного софта.

Моё понимание OpenSource в значительной мере связано с идеями свободного софта, ведь здорово когда люди делятся своими наработками, получают обратную связь и в целом делают индустрию лучше.

Недавно в России проводили интересный опрос о том как обстоят дела с OpenSource. Ожидаемо, что свободным софтом пользуются почти все, очевидная польза открытых проектов доказана практикой многих компаний. Но так же важно, что больше половины людей считают что нет отдельного российского OpenSource.

Последний вывод важен тем, что соответствует вайбу открытого софта, это важно помнить и понимать, как только появляются границы, идея превращается в тыкву.
15👍9🤡3💯3🤔1👌1
Как относитесь к переходу многих технологий - Redis, как недавний пример, на двойное лицензирование, вместо лицензии, которая соответствовала open source?

Для меня здесь несколько моментов:
1. Для создания хорошего софта нужны деньги и компании всегда будут искать варианты монетизации своих продуктов. Это нормально.
2. Переупаковка софта с открытым кодом с целью дальнейшей продажи - часто встречаются на рынке и то что Redis хочет ограничить такую возможность - это нормально.
3. Не нормально то, что теперь людям надо дважды думать, что они могут делать с кодом от Redis, а чего нет. Это дополнительная сложность, которая может быть ложкой дёгтя в бочке мёда. Хотя ядро, вроде, осталось под BSD лицензией, но все равно не все прозрачно и понятно.

В целом рынок становится все сложнее, компаниям хочется зарабатывать и развиваться, так что как говорится се ля ви.
22👍9🫡1
12 факторов, влияющих на качество веб-приложений

1. Кодовая база
В проекте должна быть единая кодовая база для развертывания на всех стадиях тестирования и работы в проде. Кодовая база должна подвергаться многократному ревью в процессе работы.

2. Система конфигурирования
Конфигурация должна быть выделена в отдельную подсистему, а сами конфигурационные данные обрабатываться и храниться в рамках единой политики (например, использовать среду окружения)

3. Сервисный подход
Инфраструктурные вещи должны использоваться через надежные сервисы, а не переписываться каждый раз с нуля.

4. Явные зависимости
Зависимости должны быть определены прозрачно и группироваться (или изолироваться) по отношению к собственному коду

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

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

7. Резервное копирование
Должна быть предложена внятная политика резервного копирования как пользовательских, так и служебных данных

8. Горизонтальное масштабирование
Должна быть проработана стратегия увеличения производительности за счет увеличение количества узлов, на которых развернуто программное обеспечение

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

10. Контроль и улучшение производительности
Должны профилироваться время загрузки, время отклика системы, количество единовременных конкурентных запросов и т.д. Должны быть проработаны контрольные точки (SLA) в рамках которых должна функционировать система

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

12. Администрирование
Должна быть проработана политика администрирования программного продукта.

#знания #теория
👍5321
Старые добрые структурные подходы, которые много лет используются в разработке программного обеспечения, не всегда хорошо работают в современных системах, завязанных на асинхронной обработке данных.

Для лучшего понимания сути проблемы рекомендую к прочтению старую заметку о том как структурные проблемы можно решать за счет Behavior programming

#знания #теория #ссылка #рекомендация
👍11
Forwarded from Open Source AI
Фанаты AMD, самое время обновить WindowsMicrosoft пофиксили баг, который замедлял работу процессоров Ryzen.

После обновления в начале марта на Microsoft посыпались жалобы, что Windows 11 на процессорах AMD работает буквально никак.

Open Source AI
| ChatGPT
👌23👍4
На boosty делаю зеркало записей стримов, размещенных на soer.pro, сегодня перенес запись "Архитектура с общей шиной и очередью". В видео рассказываю чем шина отличается от очереди, как правильно использовать шину и очередь в своих проектах.

Полный архив всех стримов есть на soer.pro
👍13
что думаете по поводу предстоящего релиза snapdragon x elite, будущего арм vs х86, и кто будет лидировать на рынке не-apple arm процессоров?


1. Мне нравится активный движ, который идет в сторону arm процессоров
2. Думаю что массовое применение вопрос недалекого будущего, на ноутах АРМ процессоры вполне себе могут вытеснить x86
3. x86 пока выглядит сильно "роднее" и эту инертность сознания еще надо преодолеть
4. Пока непонятно что будет с десктопами, не слышал про выпуск процессоров отдельно, только в сборке с ноутом или планшетом
5. Кто будет лидировать не знаю, скорее всего легко могут появиться и новые игроки, и старые делить рынок в разных пропорциях. Не располагаю данными для прогноза
👍15👨‍💻31🤔1
Forwarded from Andrey Lis
Ноутбуки на арме есть давно, среди них даже были успешеые модели прекрасно работающие на винде.

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

Если вам все же интересно, то на данный момент я вижу что количество ноутбуков на арме снова сокращается, после роста 18-20 годов, они просто не могут найти целевую аудиторию, никому из потребителей не хочется перелезать на что-то несовместимое, программистам не хочется переписывать драйвера, радиоинженерам мириться с новыми проблемами новой архитектуры.

Яблочники поступили мудро создав совместимость в своих продуктах с ai64, но все же есть не мало вопросов к их армам.
👍201
Forwarded from { между скобок } анонсы 📣 (Grisha Skobelev)
6 апреля 12:00 по мск “От монолита к микросервисам. Глава 5 Проблемы микросервисов / Илья Казначеев, Евгений Сергеев”

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

Помогать в обсуждении нам будут невероятно интересные гости - Илья Казначеев и Евгений Сергеев 🔥
Илья - эксперт в области PaaS и SaaS систем, Google Developer Expert по облачным технологиям, кандидат технических наук.
Женя - архитектор, разработчик, автор телеграмм и youtube канала S0ER.

Подключайтесь в субботу к YouTube трансляции или в Zoom

А в комментариях к этому посту оставляйте свои вопросы, которые хотели бы задать Илье и Жене ⤵️
👍392🏆1
Я не могу, поэтому это неважно

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

Теперь задумайтесь, если вы пользуетесь YouTube, то вы 100% сталкивались с работой библиотеки ffmpeg, которая зашита практически в любой сайт по работе с видео. Код этой библиотеки лежит на github и вы можете легко его найти, но скорее всего вы не сможете понять, что там написано.

FFmpeg считается одной из самых сложных кодовых баз, для освоения которой нужные хорошие теоретические знания, математика, опыт и другие хардскилы (особенно часть со сжатием данных, кодировками и т.д.).

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

Так происходит не только с кодом, а со всеми сложными для восприятиями вещами , просто "это неважно".

- Сложная музыка? Это неважно!
- Приготовление сложных блюд? Это неважно!
- Авторское кино? Это неважно!
- Искусство? Это неважно!

Почему так происходит? На самом деле "это неважно" заменяет другу фразу, которую люди боятся и не хотят произносить "я не могу".

- Разобраться со сложной музыкой? Я не могу!
- Приготовить сложное блюдо? Я не могу!
- Посмотреть и понять авторское кино? Я не могу!
- Разобраться в живописи? Я не могу!
- Разобраться со сложным кодом? Я не могу!
- Принять участие в спортивном программировании? Я не могу!

Большая часть людей сталкиваясь с трудностями сразу сдается и прячется за фразой "это неважно".

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

Уверен, что у вас есть (или был) коллега, которы не тянет свои задачи и ему помогают всем коллективом, но этот коллега будет всем говорить, что "посмотрите, я делаю тоже, что остальная команда".

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

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

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

Поэтому там где одни скажут "это неважно", я скажу "это интересно, но я не могу понять/сделать/разобраться". Я не смогу разобраться со всеми интересными вещами и мне придется выбирать куда двигаться, но главное, что мне не надо обманывать себя говоря "это неважно", "я могу также".

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

Поэтому кому-то нравится потреблять, кому-то создавать - Кесарю – кесарево, слесарю – слесарево

Boosty | soer.pro
👍137🔥29🤡2210🤔10🥴94💊4👎3🫡2💯1