Pull to refresh
1
0
Максим @sesharim

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

Send message

ErrorHandling-патерн в golang

Level of difficultyMedium
Reading time3 min
Views2.1K

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

Будем отталкиваться от примера, где мы ожидаем результатов выполнения n-горутин. Результат читаем из канала resultChannel:

Читать далее

Type VS Interface: разница есть, но не всегда

Level of difficultyMedium
Reading time8 min
Views7.5K

Когда речь заходит о TypeScript, один из самых частых вопросов, которые мне задают студенты, звучит так: «Что лучше использовать: интерфейсы или типы?»

На эту тему написано уже множество статей, в том числе на Хабре (например тут и тут), и обсуждений в сообществе более чем достаточно. Однако даже после всех этих разъяснений часто остаётся ощущение, что однозначного ответа нет. Одни авторы говорят: «Интерфейсы лучше для декларативности», другие уверяют: «Типы универсальнее», и каждый подкрепляет свою точку зрения примерами.

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

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

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

В поисках наиболее точного и понятного объяснения различий между интерфейсами и типами я пересмотрел множество источников. Среди них особенно выделилась статья «Type vs Interface» от Mykyta M.. В ней автор обстоятельно разбирает преимущества и недостатки обоих подходов, а также приводит примеры их использования.

Читать далее

Оптимизация SQL запросов

Level of difficultyMedium
Reading time6 min
Views27K

Оптимизация SQL-запросов является одной из ключевых задач при работе с реляционными базами данных. Эффективные SQL-запросы позволяют значительно улучшить производительность приложений и обеспечить более быстрый доступ к данным. В данной статье мы рассмотрим как переписать запрос, чтобы выполнялся быстрее. В статье пойдет речь о PostgreSQL, хотя применять данные советы к любой базе данных SQL Ниже будут представлены термины и операторы, о которых пойдет в данной статье.

Читать про оптимизацию

Как работать с потоками в JavaScript: оптимизация асинхронных запросов

Level of difficultyMedium
Reading time13 min
Views5.7K

Асинхронное программирование — это тема, которая часто вызывает трудности у новичков JS. Неопытные разработчики сталкиваются со множеством вопросов, связанных с обработкой параллельных операций, управлением потоками данных и «адом коллбэков». Тем не менее, понимание и освоение асинхронности является важным шагом на пути к эффективной разработке современных веб-приложений. В этой статье разберем основные инструменты, такие как промисы и async/await, и покажем, как они могут облегчить обработку данных в фоновом режиме и повысить читаемость кода.

Привет, Хабр! Меня зовут Олег Волков, я ведущий frontend-разработчик IBS. В этой статье я хочу поделиться выжимкой из книги Кайла Симпсона «Вы не знаете JS. Асинхронная обработка & оптимизация». Лично мне она открыла глаза. Уверен, что другие JS-специалисты найдут ее не менее полезной!

Читать далее

Горутины и каналы в Go: эффективная конкурентность

Level of difficultyEasy
Reading time3 min
Views2.3K

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

Читать далее

Вникаем в метаклассы Ruby

Reading time6 min
Views53K

Примечание переводчика: данный пост является логическим развитием, а точнее «предысторией» поста Вникаем в include и extend и был подсказан в комментариях к нему пользователем murr, за что ему большое спасибо.

Классы и объекты в Ruby связаны между собой достаточно затейливо и не сразу можно понять что к чему. Из-за особого назначения классов очень легко потерять из вида тот факт, что классы — это тоже объекты Ruby. От «обычных» объектов их отличает два вещи: они служат образцом для создания новых объектов и они являются частью иерархии классов. Все верно, классы могут иметь экземпляры себя (объекты), суперклассы (родителей) и подклассы (детей).

Если классы — это объекты, то у них должен быть свой собственный класс. Классом всех классов (как объектов) в Ruby является класс Class:

# один из способов создать новый класс
Dog = Class.new
    
# общепринятый способ создания класса
class Dog
    # какая-то реализация собачьего поведения
end

Dog.class
=> Class

Читать дальше →

Что спрашивают у проджектов на собесах в Циане, Авито, Яндексе и Сбере: 250 вопросов чтобы подготовиться к интервью

Level of difficultyEasy
Reading time11 min
Views17K

Привет, Хабр!

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

Посмотреть вопросы

Быстрый запуск Redis через Docker Compose

Level of difficultyMedium
Reading time5 min
Views28K

Доброго времени суток! Сегодня я продемонстрирую вам, как быстро и эффективно настроить Redis с помощью Docker Compose. Этот процесс займет всего несколько минут, но в результате вы получите полноценную базу данных Redis, работающую в изолированном Docker контейнере. Важные компоненты, такие как данные кэша и конфигурации, будут сохранены на вашей локальной машине благодаря использованию томов (volumes), что обеспечит надежность и доступность данных.

Читать далее

React Server Components и Next.js 13: новый шаг к оптимальному рендерингу

Level of difficultyEasy
Reading time4 min
Views2.4K

Мир React долгое время делился на две «сферы»: серверный рендеринг (SSR) и клиентский рендеринг (CSR). Приложения обычно подгружали часть контента с сервера для быстрого старта, а затем загружали большой бандл JS для полного интерактивного опыта на клиенте. Однако это приводило к дублированию логики и дополнительной головной боли при оптимизации.

Сегодня громко обсуждаются React Server Components (RSC) — новый подход к рендерингу компонентов, при котором логика, которая не должна выполняться на клиенте, может быть полностью «вырезана» до отдачи готовой HTML-структуры. Это обещает уменьшить бандлы, улучшить производительность и упростить архитектуру.

Next.js 13 — фреймворк, который уже предлагает нативную поддержку RSC и новые возможности по маршрутизации, загрузке данных и оптимизации. Почему это важно и как начать?

Читать далее

Redux для новичков: база, с которой можно стартовать

Level of difficultyEasy
Reading time9 min
Views6K

Привет, Хабр!

Сегодня рассмотрим библиотеку Redux для JS, зачем она нужна, и стоит ли она вашего внимания. Redux — это библиотека для управления состоянием приложения. Redux создан для тех случаев, когда:

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

Эти данные нужно шарить между компонентами, которые находятся на разных уровнях иерархии.

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

Читать далее

Дженерики в Go

Level of difficultyEasy
Reading time10 min
Views4.3K

Это первая часть статьи, посвященной дженерикам в Go, из четырех.

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

Читать далее

Как я делал бюджетное устройство мониторинга качества среды и что из этого вышло

Level of difficultyEasy
Reading time8 min
Views15K
image

В начале немного предыстории.

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

Как работать с Postgres в Go: практики, особенности, нюансы

Reading time10 min
Views145K


Неожиданное поведение приложения в отношении работы с базой приводит к войне между DBA и разработчиками: DBA кричат: «Ваше приложение роняет базу», разработчики — «Но ведь до этого всё работало!». Хуже всего, что DBA и разработчики не могут помочь друг другу: одни не знают про нюансы работы приложения и драйвера, другие не знают про особенности, связанные с инфраструктурой. Было бы неплохо такой ситуации избежать.


Надо понимать, часто недостаточно полистать go-database-sql.org. Лучше вооружиться чужим опытом. Еще лучше, если это будет опыт, полученный кровью и потерянными деньгами.

Преимущества Иерархической Структуры Работ (WBS) для менеджеров ИТ проектов

Reading time6 min
Views75K
Имеющие дело со сложными ИТ проектами руководители подтвердят, что разделение задач на более мелкие и управляемые части делает рабочий процесс намного проще. В этой статье расскажу о процессе, который поможет структурировать каждый этап проекта и учитывать все поставленные задачи. Речь идет об иерархической структуре работ WBS (Work Breakdown Structure).

WBS и диаграммы Ганта
Читать дальше →

PostgreSQL Antipatterns: работаем с отрезками в «кровавом энтерпрайзе»

Reading time6 min
Views11K
В различных бизнес-приложениях регулярно возникает необходимость решить какую-либо задачу с отрезками/интервалами. Самое сложное в них — понять, что это именно одна из таких задач.


Как правило, они отчаянно маскируются, и даже у нас в СБИС их найти можно в абсолютно разных сферах управления предприятием: контроле рабочего времени, оценке загрузки линий АТС или даже в бухгалтерском учете.
«Отличие enterprise [решения] от всего остального — он всегда идёт от запросов бизнеса и решает какую-то бизнес-задачу.» [src]
Вот и давайте посмотрим, какие именно прикладные задачи и как можно решить с помощью PostgreSQL и сократить время анализа данных с нескольких секунд на бизнес-логике до десятков миллисекунд, умея эффективно применять следующие алгоритмы непосредственно внутри SQL-запроса:

  • поиск отрезков, пересекающих точку/интервал
  • слияние отрезков по максимальному перекрытию
  • подсчет количества отрезков в каждой точке
Читать дальше →

109 бесплатных курсов по Data Science

Reading time5 min
Views13K
image

Информационные технологии позволяют получить невероятно крутые образовательные ресурсы в один клик. Бесплатно.

Я сейчас решаю задачу, как из огромной массы жизненно важного контента выбрать тот, который стоит попробовать в первую очередь, как «разметить данные», чтобы нейросеточка у подрастающего поколения обучилась более эффективно. (ontol.org, «Выгорание», «Удаленка», телеграмм-канал).

Предлагаю вам подборку бесплатных онлайн-курсов по Data Science от лучших университетов в мире:

Читать дальше →

Бесплатные курсы по Data Science от Harvard University

Reading time4 min
Views28K
image

Информационные технологии позволяют получить невероятно крутые образовательные ресурсы в один клик. Бесплатно.

Я сейчас решаю задачу, как из огромной массы жизненно важного контента выбрать тот, который стоит попробовать в первую очередь, как «разметить данные», чтобы нейросеточка у подрастающего поколения обучилась более эффективно. (ontol.org, «Выгорание», «Удаленка», телеграмм-канал).

Предлагаю вам подборку бесплатных онлайн-курсов по Data Scienceот одного из лучших университетов в мире:

Statistics and R


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

Популярность: 284 784 регистраций
Длительность: 4 недели (2-4 часа в неделю)
Стоимость: Бесплатно (сертификат за $249)
Уровень: Intermediate


Data Science: R Basics


Освойте основы R и узнайте как обрабатывать, анализировать и визуализировать данные.

Популярность: 449 708 регистраций
Длительность: 8 недели (1-2 часа в неделю)
Стоимость: Бесплатно (сертификат за $49)
Уровень: Introductory

Сахар и COVID-19

Reading time10 min
Views78K
Пандемия COVID-19 супер нова для науки, часто требуются годы, прежде чем ученые докажут связь факторов риска и проведут подтверждающие исследования, но сейчас не время ждать. Я сижу на карантине и наблюдаю за различными фактами о COVID-19, на их основе вырисовывается «Гипотеза о связи между уровнем сахара в крови и инфекцией». Единственная причина, по которой я делаю пост на такую противоречивую тему, заключается в том, что я искренне верю, эта информация может спасти жизни. Жизни моих друзей, их друзей и их родственников.

Дисклеймер. Это не статья про лекарства или методы лечения, а про то, насколько рационально, исходя из наблюдаемых по всему миру взаимосвязей между высоким уровнем сахара в крови и остротой течения болезни, соблюдать рекомендации по активности и добавленному сахару. Эталоном здесь я считаю Британскую Систему Здравоохранения, NHS, она рекомендует добавленного сахара 30 гр. взрослым, 24 гр. от 7 до 10 лет и 19 гр. от 4 до 6 [0].
Читать дальше →

Практическое руководство по разработке бэкенд-сервиса на Python

Reading time57 min
Views184K
Привет, меня зовут Александр Васин, я бэкенд-разработчик в Едадиле. Идея этого материала началась с того, что я хотел разобрать вступительное задание (Я.Диск) в Школу бэкенд-разработки Яндекса. Я начал описывать все тонкости выбора тех или иных технологий, методику тестирования… Получался совсем не разбор, а очень подробный гайд по тому, как писать бэкенды на Python. От первоначальной идеи остались только требования к сервису, на примере которых удобно разбирать инструменты и технологии. В итоге я очнулся на сотне тысяч символов. Ровно столько потребовалось, чтобы рассмотреть всё в мельчайших подробностях. Итак, программа на следующие 100 килобайт: как строить бэкенд сервиса, начиная от выбора инструментов и заканчивая деплоем.



TL;DR: Вот репка на GitHub с приложением, а кто любит (настоящие) лонгриды — прошу под кат.
Читать дальше →

Сохраните в закладках эту статью, если вы новичок в Python (особенно если изучаете Python сами)

Reading time6 min
Views51K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Bookmark this if you are new to Python (especially if you self-learn Python)" в двух частях (1, 2) c простыми, но полезными советами и трюками в Python.



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


Уточнение: в настоящее время я использую Python 3.8. Если вы столкнулись с какими-либо проблемами во время запуска моих примеров, пожалуйста, проверьте, не связано ли это с вашей версией Python.

Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity