Как стать автором
Обновить
-2
0
Максим @OKyJIucT

Пользователь

Отправить сообщение

TypeScript и все что тебе нужно в разработке

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров30K

Все для работы с продвинутым TS внутри. Generic Types, Mapped Types, Types Guard, Utility Types и многое другое. Шпаргалка с навигацией и примерами.

К изучению
Всего голосов 20: ↑16 и ↓4+12
Комментарии12

10 000 дней солнечной и гелиосферной обсерватории (SOHO), о Солнце, нужна ли дата-центрам защита от солнечных бурь?

Время на прочтение42 мин
Количество просмотров4.7K
18 апреля 2023 года исполнилось 10 000 дней с момента запуска солнечной и гелиосферной обсерватории (SOHO), миссия которой изначально была рассчитана на 2 года. Однако до сих пор профессиональные астрономы и любители науки могут наблюдать Солнце «онлайн» — получать данные и высококачественные снимки с ПЗС-камеры обсерватории, спроектированной и запущенной в точку Лагранжа, на расстояние свыше миллиона километров от Земли, более 27 лет назад.


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

Сегодня мы поговорим о том, как такое вообще возможно? Зачем нам нужно изучать Солнце, как оно влияет на нашу жизнь, и может ли вспышка на Солнце уничтожить привычную нам жизнь на Земле. А также о том, почему до сих пор не учтены риски повторной вспышки 1859 года, которая вывела из строя даже телеграфную связь, а сейчас может вывести из строя всю более чувствительную к электромагнитным импульсам электронику (компьютеры, мобильные телефоны, серверы и в целом всё, что имеет в своём строении электрическую цепь, в которой могут индуцироваться токи), которые не защищены и не могут быть защищены должным образом?
Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии9

Мощь декораторов TypeScript на живых примерах. Декорирование методов класса

Время на прочтение12 мин
Количество просмотров23K

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

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

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии6

Индексирование JSON в MySQL

Время на прочтение8 мин
Количество просмотров7.7K


В середине 2015 года, в MySQL 5.7.8 появился тип данных JSON. С тех пор он применяется, чтобы избегать жёстких определений столбцов и сохранять документы JSON всех форм и размеров: логи аудита, параметры конфигурации, сторонние полезные нагрузки, пользовательские поля и др. Подробности — к старту нашего курса по анализу данных.

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии11

Middleware и возможности Pipeline в Laravel

Время на прочтение7 мин
Количество просмотров23K


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

И сегодня речь пойдет об одном из таких инструментов, а точнее о его использовании и реализации со стороны программиста. Отсутствие полноценной документации, а также отсутствие русскоязычных статей и очень малое количество статей иностранных — подтолкнуло меня к решению раскрыть некую завесу тайны об этой интересной возможности фреймворка и выбору этой темы в качестве моей первой статьи на Хабре.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии9

GridComponent. Часть II. Котики, NestJS и чуть-чуть о Postman

Время на прочтение17 мин
Количество просмотров5.1K

Доброго дня, хабровчане!

Как и обещал, в продолжение своего пет-проекта по созданию грид-компонента опишу здесь создание backend части.

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

Обмен данными между Phaser.js и Vue.js используя Vuex

Время на прочтение2 мин
Количество просмотров3.2K

Я потерял много времени, пытаясь найти решение — как осуществить обмен данными между vue.js и Phaser. Этот вопрос заинтересовал меня, т.к. все что не касается игровой механики, намного удобнее и быстрее делать вне игрового движка, например: авторизация и вывод игровой статистики.

Поскольку у меня есть некоторый опыт работы с Vue.js, то я решил использовать его для этих целей.

Поскольку Phaser работает как отдельное приложение, то вы не можете передавать или извлекать информацию из него, для этого вам потребуется немного пофантазировать.

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

Читать далее
Всего голосов 6: ↑4 и ↓2+2
Комментарии10

«Джеймс Уэбб»: 35 лет от задумки до первого снимка

Время на прочтение42 мин
Количество просмотров27K
25 декабря 2021 года ракета «Ариан-5» взмыла со стартовой площадки ELA-3 космодрома Куру в Гвианском космическом центре. Через 25 минут двухступенчатая ракета отправила полезную нагрузку по заданной траектории в глубокий космос. Через несколько минут от второй ступени ракеты отделился и начал самостоятельный полёт космический телескоп «Джеймс Уэбб». Всего через полчаса после того, как обсерватория покинула Землю, она развернула солнечные панели.

За следующие полгода телескоп прибыл в точку Лагранжа L2, охладил свои системы и прошёл долгий процесс калибровки. 12 июля 2022 года НАСА показало первые снимки и опубликовало научные данные обсерватории.

Этому событию предшествовали долгие этапы планирования, разработки и реализации, многочисленные сдвиги сроков запуска и серьёзные намерения отменить проект полностью. О самой идее подобного телескопа задумались ещё в конце восьмидесятых, но реальностью она стала лишь 35 лет спустя.


Полномасштабная модель телескопа, которую Northrop Grumman построила в 2005 году и демонстрировала в различных городах США
Читать дальше →
Всего голосов 141: ↑141 и ↓0+141
Комментарии11

Мои вопросы работодателю, когда подаюсь на разработчика

Время на прочтение9 мин
Количество просмотров86K

За последние 10 лет я поменял 3 работы, прособеседовался с 10+ компаний на позицию разработчика (software engineer) и вел переписку с HR/рекрутерами из нескольких десятков фирм. По ходу дела заметил, что вопросы, которые я задаю на собеседовании с менеджером/командой или с HR, повторяются, и решил их структурировать. Некоторые из них являются общими, и их может задать кандидат на почти любую вакансию; другие касаются только вакансий для программистов. В этой статье поделюсь с вами наиболее типичными и важными вопросами, которые, на мой взгляд, может задать соискатель потенциальному работодателю.

Читать далее
Всего голосов 90: ↑84 и ↓6+78
Комментарии70

Хочу перемен: почему пора переходить на Vue 3

Время на прочтение10 мин
Количество просмотров27K

Привет! Меня зовут Влад, я frontend-разработчик в компании SimbirSoft. Мне приходилось создавать приложения как на старых версиях Vue, так и на новых. Причем многие из моих коллег вполне успешно разрабатывают на Vue 2 и не спешат переходить на Vue3, даже спустя два года после релиза.

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

В этой статье попытался раскрыть новшества, которые могут стать «триггером» для миграции на новую технологию для обеих заинтересованных групп. Поговорим об экосистеме Vue 3, о новинках и пользе для разработчиков и бизнеса. И, разумеется, сравним Vue 2 и Vue 3 с технической точки зрения. Также рассмотрим одно из главных нововведений фреймворка – Composition API, раскроем технические нюансы и определим лучшие кейсы использования нового API.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии25

Как бы вы реализовали форму аутентификации на сайте? Вопрос для собеседования на Junior/Middle/Senior?

Время на прочтение9 мин
Количество просмотров54K

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

Тема с одной стороны в общем-то простая, а с другой - многогранная. Можно сделать “на коленке”, а можно и “по-взрослому” -  зависит от знаний конкретного девелопера и технического задания. Ну и не привязывается к конкретному языку. Что nodejs, что .net, что PHP - на ответы это не влияет. Ну и отлично же! Давайте попробуем.

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

Как бы вы ответили на конкретный вопрос? Попробуйте проверить себя и потратить пару минут на обдумывание прежде чем читать ответ.

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

Итак, за вёсла!

Читать далее
Всего голосов 69: ↑59 и ↓10+49
Комментарии211

Принципы для разработки: KISS, DRY, YAGNI, BDUF, SOLID, APO и бритва Оккама

Время на прочтение8 мин
Количество просмотров240K
image

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

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

Последовательное применение этих принципов упростит ваш переход от миддла к сеньору. Вы можете обнаружить, что некоторые (вероятно) вы применяете интуитивно.

Принципов много. Мы остановимся на семи самых важных. Их использование поможет вам в развитии и позволит стать лучшим программистом.

1. YAGNI

You Aren’t Gonna Need It / Вам это не понадобится

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

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

Может наступить день, когда они снова понадобятся – тогда вы сможете воспользоваться git-репозиторием, чтобы воскресить их из мертвых.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии9

Язык программирования типов, скрытый в TypeScript. Utility Types

Время на прочтение5 мин
Количество просмотров15K

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

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

Читать далее
Всего голосов 23: ↑22 и ↓1+21
Комментарии3

Как два программиста хлеб пекли

Время на прочтение5 мин
Количество просмотров259K


Я работаю программистом уже много лет, на протяжении которых, как это ни странно, я всё время что-то программирую. И вот какую интересную вещь я заметил: в коде, написанном мной месяц назад, всегда хочется что-то чуть-чуть поправить. В код полугодичной давности хочется поменять очень многое, а код, написанный два-три года назад, превращает меня в эмо: хочется заплакать и умереть. В этой статье я опишу два подхода. Благодаря первому архитектура программы получается запутанной, а сопровождение — неоправданно дорогим, а второй — это принцип KISS.

Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
— Ребята, нам нужно, чтобы делался хлеб.

Именно так, «делался», без уточнения способа производства.

Как же поступят наши программисты?
Читать дальше →
Всего голосов 380: ↑348 и ↓32+316
Комментарии328

Практическое руководство по именованию классов, функций и переменных

Время на прочтение4 мин
Количество просмотров44K

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

Читать далее
Всего голосов 37: ↑32 и ↓5+27
Комментарии41

Что нужно знать, чтобы быть синьором?

Время на прочтение11 мин
Количество просмотров89K

В последнее время случилась (и продолжает случаться) тьма публикаций про кадровый голод в айти, про переоценённость синьоров, недооценённость всех остальных, про золотые горы, скандалы, интриги и конский перекос баланса фракции "программисты". Ну, короче, вы сами всё читали и вполне себе в теме. Так вот, в сим опусе хочется вспомнить, а ктож такой синьор и что ему крайне желательно знать, чтобы синдром самозванца не накрывал и чтобы окружающие уважали и на поклон за советом приходили.

Ну-ка, ну-ка...
Всего голосов 190: ↑172 и ↓18+154
Комментарии258

Laravel: создание фабрик и seeders при связях между моделями

Время на прочтение8 мин
Количество просмотров21K

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

Предлагаю исследовать эту проблему и вывести единственно правильную реализацию создания фабрик и сидов в такой ситуации.

Спойлер: фабрики не должны зависеть от сидов.

Читать далее
Всего голосов 9: ↑7 и ↓2+5
Комментарии5

Строим эффективный сетевой обмен в PHP-микросервисах

Время на прочтение13 мин
Количество просмотров20K

Микросервисы сейчас — это новый черный. Все больше и больше компаний переходят именно на микросервисную архитектуру. И при переходе ловят самые разные ошибки. Самая популярная происходит из-за того, что люди просто не готовы к тому, что их приложения начинают активно использовать сеть. Потому что IPC и RPC-запросы  — это абсолютно разные вещи.

Я техлид в команде Авито в проекте SLA. Сегодня расскажу, как мы оптимизировали сетевые вызовы, чтобы избежать проблем с сетью при переходе в микросервисный мир. Разговор будет про оптимизацию CURL-запросов, деградацию сервисов и FAIL-FAST-подходы.

Читать далее
Всего голосов 43: ↑42 и ↓1+41
Комментарии38

Блеск и нищета модели предметной области

Время на прочтение28 мин
Количество просмотров48K


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии46
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность