🏗️ Структуры данных для разработчиков: 10 самых важных
Структуры данных — фундамент эффективной разработки. Кратко разберем 10 ключевых структур данных, которые необходимо освоить каждому разработчику для создания производительных и масштабируемых приложений, а подробнее читайте в статье👇
🔹 Списки отлично подходят для хранения и обработки упорядоченных данных и полезны в различных приложениях, таких как управление задачами, ленты соцсетей и корзины интернет-магазинов.
🔹 Массивы — упорядоченная коллекция элементов фиксированного размера и хорошо подходят для ситуаций, где размер коллекции известен или редко меняется.
🔹 Стеки следуют принципу «последним пришел — первым вышел». Они идеальны для реализации операций отмены/повтора в текстовых редакторах или ведения истории просмотров в веб-браузерах.
🔹 Очереди работают по принципу «первым пришел — первым вышел». Они подходят для управления заданиями печати, отправки действий пользователя в играх на сервер или обработки сообщений в чат-приложениях.
🔹 Кучи используются для планирования задач и управления памятью. Они особенно полезны в реализации очередей с приоритетами, где нужен доступ к элементу с наивысшим или наименьшим приоритетом.
🔹 Деревья организуют данные иерархически. Они полезны для представления данных с естественными иерархиями или связями и могут использоваться в различных приложениях, таких как индексация баз данных.
🔹 Хеш-таблицы позволяют эффективно искать, вставлять и удалять данные. Они используют хеш-функцию для сопоставления ключей с соответствующими местами хранения и обеспечивают доступ к сохраненным значениям за постоянное время.
🔹 Суффиксные деревья специализируются на поиске строк в документах, что делает их идеальными для текстовых редакторов и алгоритмов поиска.
🔹 Графы отслеживают отношения и находят пути, что делает их незаменимыми в социальных сетях, рекомендательных системах и алгоритмах поиска путей.
🔹 KD-деревья хороши для поиска ближайших соседей и важны для картографических приложений и геолокационных сервисов.
🤖 6 основных алгоритмов машинного обучения: руководство для начинающих
В новой статье мы расскажем о шести основных алгоритмах машинного обучения и их практическом применении в различных отраслях.
Вот алгоритмы, которые мы рассмотрим:
🔹линейная регрессия;
🔹SVM;
🔹дерево решений;
🔹случайный лес;
🔹наивный байес;
🔹логистическая регрессия.
🔗 Читать статью
☄️ -35% на все курсы Proglib Academy
Берем от лета максимум, чтобы прокачать мозги, получить крутой оффер, уехать на Бали и больше не быть онлайн 😎
👾 Математика для Data Science – 19 490 рублей 29 990 рублей
👾 Алгоритмы и структуры данных – 23 390 рублей 35 990 рублей
👾 Основы программирования на Python – 12 990 рублей 19 990 рублей
Переходите, активируйте пробную версию и начинайте учиться уже сейчас!
🌚 А еще вы можете активировать бесплатную демо-версию любого курса – https://proglib.io/w/aa0b92b6
А также посмотреть вебинары на интересующие вас темы 🙌🏻
Привет, друзья! 👋
Мы готовим статью о том, что делать, если вы наврали в резюме, и нам нужна ваша помощь! 🤔
Поделитесь своим опытом и мнением, а самые интересные и полезные советы мы обязательно включим в нашу статью.
❓ Сталкивались ли вы когда-нибудь с ситуацией, когда пришлось преувеличить свои навыки в резюме? Как вы с этим справились?
❓ Какой, по вашему мнению, самый эффективный способ исправить ситуацию, если вы немного приукрасили свое резюме?
❓ Как вы думаете, какая «ложь» в резюме может быть простительной, а какая — абсолютно недопустимой?
💬 Не стесняйтесь делиться своими историями и мнениями в комментариях! Ваш опыт может помочь другим избежать подобных ситуаций или найти выход, если они уже в них оказались. Спасибо за участие!
Сервис Notion, предназначенный для создания и редактирования заметок и баз данных, прекратит свою работу в России с 9 сентября
🆕📜 Что нового в TypeScript 5.5: 4 ключевых улучшения
Кирилл Мыльников, frontend-разработчик в компании Usetech, подробно рассматривает четыре значительных улучшения в версии 5.5 и их сравнение с ограничениями предыдущей версии. Эти нововведения позволяют разработчикам создавать более безопасный и легко поддерживаемый код.
☑️ TypeScript 5.5 предлагает значительные улучшения в проверке типов, обеспечивая более точное обнаружение ошибок еще на этапе компиляции.
☑️ Новые фичи, такие как предикаты выводимых типов и сужение потока управления, значительно улучшают опыт разработки, упрощая чтение и поддержку кода.
☑️ TypeScript 5.5 гарантирует совместимость с существующими кодовыми базами, облегчая обновление без необходимости кардинальных изменений и обеспечивая плавный переход.
☑️ Эта версия эффективно обрабатывает критические изменения и устаревшие функции, позволяя разработчикам адаптировать свой код к современным стандартам и передовым практикам веб-разработки.
👉 Читать статью
👉 Зеркало
🐧 Сегодня, 25 августа, мы отмечаем день рождения одной из самых значимых и революционных операционных систем в мире — Linux! Линус Торвальдс в 1991 году даже не предполагал, насколько далеко зайдёт его «просто хобби».
👉 Почему Linux важен для нас, разработчиков?
☑️ Открытый исходный код
☑️ Надежность и стабильность
☑️ Гибкость и масштабируемость
☑️ Развитие сообщества и многое другое
👩💻 Стратегии масштабирования Kubernetes: на заметку разработчику и DevOps-специалисту
👉 Источник
#инфографика #инструменты
🏃 Самоучитель по Go для начинающих. Часть 15. Конкурентность. Горутины. Каналы
В 15-й части самоучителя мы разберем работу базовых сущностей ОС для погружения в парадигму конкурентного программирования, а затем изучим основные способы её реализации в Go с помощью горутин и каналов.
👉 Читать гайд
📌 Остальные части в серии:
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
⚒️ Ключевые понятия, составляющие и юзкейсы Kafka: на заметку разработчику
👉 Источник
#инфографика
Привет, друзья! 👋
Мы готовим статью о прокрастинации среди разработчиков и хотим узнать ваше мнение! 🤓 Поделитесь своим опытом, а самые интересные и полезные советы мы обязательно включим в нашу статью.
❓ Какая самая необычная причина прокрастинации у вас была в работе над проектом?
❓ Какой метод борьбы с прокрастинацией оказался для вас наиболее эффективным?
❓ Как вы справляетесь с когнитивной перегрузкой во время работы над сложными задачами?
Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
🤔 Кем я хочу быть – DS или ML engineer?! Стоит ли понимать специфику сферы?!
🗓 Встречаемся сегодня в 20:00 по МСК чтобы ответить на эти и другие вопросы на вебинаре «Как меняется математика в разных индустриях: от мобильных игр к фондовым рынкам»
В эфире вас будет ждать Павел Запольский – Senior Quantitative Researcher at Exness и Co-founder GrowLytics. Запустивший более 10 проектов по машинному обучению и анализу данных для ведущих компаний.
➡️ Регистрируйтесь, если еще не успели: https://proglib.io/w/3aab60c7
🚀 Топ-5 стратегий кэширования
➡️ Реальное использование:
🔹 Cache Aside + Write Through: обеспечивает согласованную синхронизацию кэша/БД, позволяя при этом осуществлять контроль заполнения кэша во время чтения. Немедленные записи в базу данных могут нагружать БД.
🔹 Read Through + Write Back: абстрагирует БД и хорошо справляется с потоком трафика записи, задерживая синхронизацию. Однако это сопряжено с риском большей потери данных, если кэш выйдет из строя до синхронизации буферизованных записей с базой данных.
👉 Источник
#инфографика
Привет, друзья! 👋
Мы готовим статью на тему: «5 признаков зависимости от программирования». Нам очень важно ваше мнение! Поделитесь своим опытом и советами, и самые интересные из них мы включим в статью.
⌛ Как вы понимаете, что программирование начинает занимать слишком много места в вашей жизни? Какие признаки вы замечаете?
🏄 Какие методы и стратегии вы используете, чтобы сохранить баланс между работой и личной жизнью?
😔 Был ли у вас опыт, когда программирование негативно влияло на ваши отношения с близкими или здоровье? Как вы справились с этим?
Ваши ответы помогут многим! Спасибо за участие!
🤔 Как небольшой команде переехать на ClickHouse
Петр Гонин, инженер по данным в Okko, делится опытом переезда на ClickHouse. Причин для переезда было несколько, но одной из главных была низкая производительность — среднее время аналитического запроса составляло около минуты, а после переезда составило около 2 с. И это не предел.
Из статьи вы узнаете, как удалось прийти к текущему состоянию хранилища данных и с какими проблемами пришлось столкнуться.
👉 Читать
🙇♂️ На кого идти учиться, чтобы затраты на обучение когда-нибудь окупились
Ожидаемо, что айтишные специальности первые в списке. Как думаете, актуальна ли данная статистика для России?
👉 Источник
🤩 Минимальный набор знаний о concurrency, который нужен каждому разработчику
Все знания о конкурентности, которые у вас есть, наверняка получены из множества разных источников.
Если хочется навести порядок в голове и разобраться в сути дела, ловите руководство, которое можно осилить за короткое время.
👉 Источник
🙌 20 популярных проектов с открытым исходным кодом, начатых или поддерживаемых крупными компаниями
👉 Источник
🎮📖 Библиотека геймдизайнера: 10 must-read книг 2024 года
От концепции до реализации, от баланса до монетизации – представляем вашему вниманию 10 ключевых книг 2024 года, которые помогут вам достичь новых высот в геймдеве.
👉 Статья
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🐍 У нас есть еженедельная email-рассылка, посвященная последним открытиям и тенденциям в мире Python.
В ней:
● Новые возможности в последних версиях Python
● Работа с базами данных и SQL в Python
● Веб-разработка на Django и Flask
● Машинное обучение и анализ данных с помощью Python
● Автоматизация и работа с API на Python
● Тестирование и отладка кода на Python
● Задачи для новичков с решениями
👉Подписаться👈
🤯⚡ Дурова арестовали: что будет с телеграм
Главная новость последних суток: Павла Дурова арестовали во Франции по обвинениям в том, что он не модерировал контент в телеграм и не сотрудничал с местными властями по тяжким преступлениям. Дурову грозит до 20 лет тюрьмы во Франции, так как он имеет французское гражданство.
Работать мессенджер не перестанет: на такой случай у команды разработчиков есть запасной план. Тем не менее многие телеграм-каналы уже начали нагнетать — мол, срочно делаем бэкапы в связи с возможным арестом серверов телеграма в США и Амстердаме.
У телеграма множество серверов в разных странах мира, в том числе в Сингапуре. Если какие-то из них перестают работать, подключаются остальные. Также у облачных серверов есть свои бэкапы.
В общем, паника откладывается. Однако мы все равно рекомендуем вам на всякий случай подписаться на наш ВК.
🔥 The algorithms — крупнейшая библиотека алгоритмов с открытым исходным кодом на GitHub
На сайте вы можете совместно с другими разрабами писать, документировать и улучшать алгоритмы, делиться кодом и помогать друг другу решать различные сложные задачи.
👉 Сайт & GitHub
Как находить только релевантные вакансии?
Когда вы ищете работу, то зачастую сталкиваетесь с массой неподходящих предложений. Мы знаем, как это может напрягать.
Для решения этой проблемы мы создали сервис Jobski. Его алгоритм сам подбирает релевантные вакансии, на основе вашей специализации, грейда, стека технологий, опыта и зарплатных ожиданий. В сервисе есть предложения для разработчиков, тестировщиков, аналитиков и других технических специалистов. Пул вакансий постоянно расширяется.
Чтобы начать поиск, вам нужно пройти регистрацию через Telegram и заполнить профиль.
Реклама. ООО "ТИММЕЙТ", ИНН 5503268412. Erid 2VtzqvCq2Ud
👨🍳 Rails Соглашение от David Heinemeier Hansson
У какого еще языка есть такое? А ниже — девять основных столпов Соглашения:
1️⃣ Оптимизация на радость программистам
2️⃣ Соглашение над конфигурацией
3️⃣ Меню это омакасе
4️⃣ Отсутсвие парадигм
5️⃣ Культ красоты кода
6️⃣ Острые лезвия
7️⃣ Цените интегрированные системы
8️⃣ Прогресс превыше стабильности
9️⃣ Возведите большую палатку
🔍 Два потока, одно ядро: как устроена одновременная многопоточность
Одновременная многопоточность (Simultaneous multithreading, SMT) — это функция, позволяющая процессору одновременно обрабатывать команды из двух разных потоков. Но задавались ли вы когда-нибудь вопросом, как это работает? Как процессор отслеживает два потока и распределяет ресурсы между ними?
В статье автор объясняет, как устроена эта функция. Понимание внутреннего устройства SMT поможет вам решить, подходит ли она для ваших продакшен-серверов. Иногда SMT способна резко повысить производительность системы, но в некоторых случаях она приводит к замедлению. Знание подробностей позволит вам сделать правильный выбор.
👉 Читать
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉авторов в наше медиа proglib.io
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉авторов в наше медиа proglib.io
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
📶 Паттерны коммуникации в распределенных системах
Распределенные системы состоят из многих отдельных частей/узлов, работающих вместе, но физически расположенных в разных местах. Эти части системы должны общаться друг с другом через сеть, чтобы система могла функционировать как единое целое.
Хотя коммуникация критически важна, правильно ее организовать бывает непросто: разработчики иногда пытаются использовать один и тот же подход ко всем задачам коммуникации, что может быть неэффективно. Важно понимать, что существуют разные способы организации коммуникации, и выбор правильного метода зависит от конкретной задачи. Рассмотрим основные паттерны коммуникации, которые можно использовать для решения разных задач.
☑️ Запрос-ответ с HTTP
Этот синхронный паттерн коммуникации предполагает, что один сервис отправляет запрос другому сервису и ожидает ответа или ошибки, блокируя свою работу до получения результата. REST, наиболее популярный архитектурный стиль для этой модели коммуникации, использует методы протокола HTTP — GET, POST, PUT и DELETE.
Однако использование этого паттерна может привести к проблемам, если сервисы образуют цепочку взаимодействий: в таком случае сбой одного из сервисов может привести к отказу всей операции, а также к расточительному использованию ресурсов и каскадным сбоям.
☑️ Общие данные
Этот паттерн часто остается незамеченным, поскольку разработчики не всегда воспринимают его как модель коммуникации. В рамках этого подхода один компонент записывает данные в определенное место, а другой компонент считывает и обрабатывает эти данные. Например, один сервис может загрузить файл в облачное объектное хранилище (например, в корзину Amazon S3), а другой сервис затем извлекает этот файл для дальнейших действий.
Главное преимущество этого паттерна — простота реализации и возможность обеспечения взаимодействия между устаревшими и современными системами без проблем совместимости. Однако он не подходит для сценариев, требующих низкой задержки.
☑️ Асинхронный запрос-ответ
В отличие от синхронного подхода, запрос-ответ может быть реализован асинхронно и без блокировки. В этом случае получающий сервис должен явно знать место назначения для отправки ответа. Для реализации этого паттерна идеально подходят очереди сообщений, которые позволяют буферизовать несколько запросов.
Основная сложность здесь — корреляция между запросом и ответом: экземпляр сервиса, отправивший запрос, может отличаться от экземпляра, получающего ответ, поэтому требуется способ отслеживания запросов.
☑️ Коммуникация на основе событий
В этом подходе сервисы не общаются напрямую друг с другом, а генерируют события, которые могут быть использованы другими сервисами. Это требует наличия места для отправки данных о событиях и механизма, позволяющего получающим сервисам обнаруживать эти события. Брокеры сообщений, такие как RabbitMQ, могут обрабатывать оба этих аспекта. Издатели используют API для отправки событий в брокер, который управляет подписками и уведомляет подписчиков при поступлении события.
Этот паттерн идеально подходит для создания слабосвязанных взаимодействий между сервисами. Однако брокер сообщений должен обеспечивать надежную доставку событий, их упорядочивание и согласованность. Кроме того, добавляется дополнительный компонент в систему.
📨 Материал взят из нашей еженедельной email-рассылки, посвященной бэкенду. Подпишитесь, чтобы быть в числе первых, кто получит дайджест.