This media is not supported in your browser
VIEW IN TELEGRAM
Новичок в IT рассказывает другу, как пишутся программы. Из опыта только Hello World
😁6
Большая подборка проектов для прокачки навыков DevOps
Если решили встать на путь ДевоПса, тоне проходите мимо. Здесь собраны реальные кейсы, с которыми вы можете столкнуться во время работы. Он содержит руководства и решения для развертывания масштабируемых систем, например, для развертывания Java-приложения на AWS с использованием трехуровневой архитектуры и настройки масштабируемых VPC-архитектур в облаке.
Каждый проект содержит подобный README с полезной информацией. А самое главное, что всё бесплатно!
Забираем по ссылке.
#devops
Если решили встать на путь ДевоПса, тоне проходите мимо. Здесь собраны реальные кейсы, с которыми вы можете столкнуться во время работы. Он содержит руководства и решения для развертывания масштабируемых систем, например, для развертывания Java-приложения на AWS с использованием трехуровневой архитектуры и настройки масштабируемых VPC-архитектур в облаке.
Каждый проект содержит подобный README с полезной информацией. А самое главное, что всё бесплатно!
Забираем по ссылке.
#devops
❤2
Многопоточность в Java
Когда я изучал Java, то всё было легко до темы многопоточности. Там мой мозг начал ломаться и отказывался понимать происходящее на экране. Тема, конечно, сложная. Но как потом оказалось, что сложной была не только тема, но и подача, по которой я изучал её.
Но на днях я нашёл, как мне кажется, отличную серию статей, в которых всё доносится предельно понятно. Плюс тут разбираются современные способы работы с потоками, а не только стандартные synchronized и new Thread().
Так что рекомендую к прочтению всем, кто хочет наконец-то разобраться в теме.
Первая часть здесь.
А вторая тут.
#java #многопоточность
Когда я изучал Java, то всё было легко до темы многопоточности. Там мой мозг начал ломаться и отказывался понимать происходящее на экране. Тема, конечно, сложная. Но как потом оказалось, что сложной была не только тема, но и подача, по которой я изучал её.
Но на днях я нашёл, как мне кажется, отличную серию статей, в которых всё доносится предельно понятно. Плюс тут разбираются современные способы работы с потоками, а не только стандартные synchronized и new Thread().
Так что рекомендую к прочтению всем, кто хочет наконец-то разобраться в теме.
Первая часть здесь.
А вторая тут.
#java #многопоточность
❤4
Forwarded from Веб-страница
This media is not supported in your browser
VIEW IN TELEGRAM
Полезная функция в Chrome Dev Tools
Не все знают, но в инструментах разработчика есть раздел CSS Overview. Он позволяет вам в одном месте и в удобном виде посмотреть какие стили используются на сайте. Есть отдельный раздел со шрифтами, цветами, медиазапросами. Отдельного внимания стоит раздел, в котором показаны не используемые CSS-правила.
Инструкция по входу в раздел на видео.
#css #chrome
Не все знают, но в инструментах разработчика есть раздел CSS Overview. Он позволяет вам в одном месте и в удобном виде посмотреть какие стили используются на сайте. Есть отдельный раздел со шрифтами, цветами, медиазапросами. Отдельного внимания стоит раздел, в котором показаны не используемые CSS-правила.
Инструкция по входу в раздел на видео.
#css #chrome
❤4
Что такое коллизия хэш-функций и чем она опасна
Хэш-функция получает на входе какие-то данные, а на выходе отдаёт 16-теричное число (hex). Это позволяет стандартизировать различные объекты, присвоив им уникальные ID.
Но у такого метода есть недостаток — в некоторых случаях разным объектам может быть присвоен один ID. Это и есть коллизия. И она может привести к большим проблемам.
О том, как возникают коллизии, что делать с ними и почему полностью избавиться от них невозможно, рекомендую прочитать в статье.
Хэш-функция получает на входе какие-то данные, а на выходе отдаёт 16-теричное число (hex). Это позволяет стандартизировать различные объекты, присвоив им уникальные ID.
Но у такого метода есть недостаток — в некоторых случаях разным объектам может быть присвоен один ID. Это и есть коллизия. И она может привести к большим проблемам.
О том, как возникают коллизии, что делать с ними и почему полностью избавиться от них невозможно, рекомендую прочитать в статье.
🔥4
Моё кунг-фу лучше твоего кунг-фу: ключевые парадигмы программирования
Парадигмы программирования — это различные стили или подходы к написанию программного кода. Каждая из них предлагает свой взгляд на структуру и способ взаимодействия компонентов программы. Давайте рассмотрим основные парадигмы и поймем, чем они отличаются.
Императивное программирование
Это один из самых старых и интуитивно понятных подходов. В императивном программировании акцент делается на последовательные шаги, которые компьютер должен выполнить. Программист пишет детальные инструкции о том, как выполняются операции.
Основные элементы: переменные, циклы, условия.
Примеры:
Декларативное программирование
Здесь основной упор делается на то, что нужно сделать, а не на то, как это сделать. Программист описывает результат, который хочет получить, и система сама решает, как это сделать.
Основные элементы: выражения, правила.
Примеры: SQL, регулярные выражения.
Функциональное программирование
Этот подход основывается на математических функциях. Программы состоят из функций, которые не имеют состояния и побочных эффектов. Это делает программы предсказуемыми и легко тестируемыми.
Основные элементы: функции, неизменяемость данных.
Примеры: рекурсия, чистые функции (без побочных эффектов).
Объектно-ориентированное программирование (ООП)
В этом подходе всё строится вокруг объектов. Объекты — это сущности, которые объединяют данные и методы для работы с этими данными. ООП помогает моделировать реальный мир и способствует повторному использованию кода.
Основные элементы: классы, объекты, наследование, инкапсуляция, полиморфизм.
Примеры: создание класса
Логическое программирование
В логическом программировании программы определяются через логические утверждения и правила. Компьютер использует эти правила для вывода заключений и решения задач.
Основные элементы: факты, правила, запросы.
Примеры: базовые логические операции и запросы в Prolog.
Реактивное программирование
Эта парадигма акцентирует внимание на потоках данных и пропагандирует асинхронное вычисление. Реактивное программирование позволяет обрабатывать события по мере их возникновения.
Основные элементы: абстракции потоков данных, операторы трансформации.
Примеры: обработка событий пользовательского интерфейса, стриминг данных.
Компонентно-ориентированное программирование
Это подход, который строится вокруг создания программ из небольших и независимых компонентов, которые могут взаимодействовать друг с другом. В компонентно-ориентированном программировании акцент делается на повторном использовании и модульности.
Основные элементы: компоненты, интерфейсы.
Примеры: создание виджетов для пользовательского интерфейса.
Заключение
Каждая парадигма программирования имеет свои сильные стороны и подходящие случаи использования. Зачастую в реальных проектах используются сразу несколько парадигм, чтобы использовать их преимущества в разных частях программы. Понимание различных парадигм помогает разработчикам выбирать наиболее подходящие инструменты и методы для решения конкретных задач. Ещё более подробно можно почитать в статье: https://doka.guide/tools/programming-paradigms/
#советы #основы
Парадигмы программирования — это различные стили или подходы к написанию программного кода. Каждая из них предлагает свой взгляд на структуру и способ взаимодействия компонентов программы. Давайте рассмотрим основные парадигмы и поймем, чем они отличаются.
Императивное программирование
Это один из самых старых и интуитивно понятных подходов. В императивном программировании акцент делается на последовательные шаги, которые компьютер должен выполнить. Программист пишет детальные инструкции о том, как выполняются операции.
Основные элементы: переменные, циклы, условия.
Примеры:
for циклы, if-else конструкции.Декларативное программирование
Здесь основной упор делается на то, что нужно сделать, а не на то, как это сделать. Программист описывает результат, который хочет получить, и система сама решает, как это сделать.
Основные элементы: выражения, правила.
Примеры: SQL, регулярные выражения.
Функциональное программирование
Этот подход основывается на математических функциях. Программы состоят из функций, которые не имеют состояния и побочных эффектов. Это делает программы предсказуемыми и легко тестируемыми.
Основные элементы: функции, неизменяемость данных.
Примеры: рекурсия, чистые функции (без побочных эффектов).
Объектно-ориентированное программирование (ООП)
В этом подходе всё строится вокруг объектов. Объекты — это сущности, которые объединяют данные и методы для работы с этими данными. ООП помогает моделировать реальный мир и способствует повторному использованию кода.
Основные элементы: классы, объекты, наследование, инкапсуляция, полиморфизм.
Примеры: создание класса
Car, экземпляры my_car, your_car.Логическое программирование
В логическом программировании программы определяются через логические утверждения и правила. Компьютер использует эти правила для вывода заключений и решения задач.
Основные элементы: факты, правила, запросы.
Примеры: базовые логические операции и запросы в Prolog.
Реактивное программирование
Эта парадигма акцентирует внимание на потоках данных и пропагандирует асинхронное вычисление. Реактивное программирование позволяет обрабатывать события по мере их возникновения.
Основные элементы: абстракции потоков данных, операторы трансформации.
Примеры: обработка событий пользовательского интерфейса, стриминг данных.
Компонентно-ориентированное программирование
Это подход, который строится вокруг создания программ из небольших и независимых компонентов, которые могут взаимодействовать друг с другом. В компонентно-ориентированном программировании акцент делается на повторном использовании и модульности.
Основные элементы: компоненты, интерфейсы.
Примеры: создание виджетов для пользовательского интерфейса.
Заключение
Каждая парадигма программирования имеет свои сильные стороны и подходящие случаи использования. Зачастую в реальных проектах используются сразу несколько парадигм, чтобы использовать их преимущества в разных частях программы. Понимание различных парадигм помогает разработчикам выбирать наиболее подходящие инструменты и методы для решения конкретных задач. Ещё более подробно можно почитать в статье: https://doka.guide/tools/programming-paradigms/
#советы #основы
Дока
Парадигмы программирования — Веб-платформа — Дока
Моё кунг-фу сильнее твоего кунг-фу (из разговора программистов).
❤2
Это я сделал очередной проект не до конца разобравшись со стеком, но все работает:
This media is not supported in your browser
VIEW IN TELEGRAM
😁16🔥3
Что такое REST на самом деле
Почему один API мы можем называть REST API, а другой нет? В этом видео вы узнаете, что делает API по-настоящему RESTful, что за архитектурный стиль такой и на каких правилах он основан.
Простое видео для тех, кто не хочет сесть в лужу на собесе.
#restapi #api #видео
Почему один API мы можем называть REST API, а другой нет? В этом видео вы узнаете, что делает API по-настоящему RESTful, что за архитектурный стиль такой и на каких правилах он основан.
Простое видео для тех, кто не хочет сесть в лужу на собесе.
#restapi #api #видео
YouTube
Что такое REST на самом деле?
Онлайн-курс "Фронтенд-разработчик с нуля":
https://wiki.merionet.ru/merion-academy/courses/frontend-razrabotchik-s-nulya/?utm_source=YT&utm_medium=own&utm_campaign=rest
Что позволяет называть один API как REST API, а другой нет? Сейчас попробуем разложить…
https://wiki.merionet.ru/merion-academy/courses/frontend-razrabotchik-s-nulya/?utm_source=YT&utm_medium=own&utm_campaign=rest
Что позволяет называть один API как REST API, а другой нет? Сейчас попробуем разложить…
🆒1
Учитесь новому так, как удобно вам, вместе с Академией Топ
Академия Топ — это крупнейшая образовательная сеть с филиалами в 230 городах, в которой вы можете изучать множество разнообразных IT-профессий.
По итогам обучения выпускники Академии получают государственный диплом, признанный в 7 странах мира.
Выбирайте курс по душе:
• «Разработка на Python»
• «Разработчик программного обеспечения»
• «Кибербезопасность и сетевые технологии»
• и многое другое
Академия регулярно проводит бесплатные дни открытых дверей «Старт в IT» для тех, кто мечтает о карьере в IT, но не знает, с чего начать.
Вы сможете познакомиться с преподавателями, получить индивидуальную консультацию, увидеть работы студентов и посетить экскурсию по Академии.
А для тех, кто уже выбрал своим направлением Python-разработку, в Академии Топ проводят пробные занятия «Python с нуля: создаём чат-бота», где вы на практике изучите основы универсального языка программирования и создадите свой первый проект.
Выбирайте свой курс с подходящим вам форматом обучения!
Реклама. Филиал «АКАДЕМИЯ ТОП КУТУЗОВСКИЙ», ИНН 7730257499, erid: 2W5zFK5c4jS
Академия Топ — это крупнейшая образовательная сеть с филиалами в 230 городах, в которой вы можете изучать множество разнообразных IT-профессий.
По итогам обучения выпускники Академии получают государственный диплом, признанный в 7 странах мира.
Выбирайте курс по душе:
• «Разработка на Python»
• «Разработчик программного обеспечения»
• «Кибербезопасность и сетевые технологии»
• и многое другое
Академия регулярно проводит бесплатные дни открытых дверей «Старт в IT» для тех, кто мечтает о карьере в IT, но не знает, с чего начать.
Вы сможете познакомиться с преподавателями, получить индивидуальную консультацию, увидеть работы студентов и посетить экскурсию по Академии.
А для тех, кто уже выбрал своим направлением Python-разработку, в Академии Топ проводят пробные занятия «Python с нуля: создаём чат-бота», где вы на практике изучите основы универсального языка программирования и создадите свой первый проект.
Выбирайте свой курс с подходящим вам форматом обучения!
Реклама. Филиал «АКАДЕМИЯ ТОП КУТУЗОВСКИЙ», ИНН 7730257499, erid: 2W5zFK5c4jS
❤5🔥3❤🔥2🤩2👍1
Forwarded from Типичный программист
Собрали для вас подборку новогодних адвент-календарей, которые помогут интересно скрасить декабрь. Здесь задачи, статьи, видео и немного HTML-ужасов.
AdventJS. Классический адвент с задачами по JavaScript и TypeScript, живёт с 2015 года. В декабре вас ждут 24 задачи — по одной каждый день.
PerfPlanet Performance Calendar. Ежегодный адвент про web performance. Внутри свежие статьи, практики оптимизации и кейсы от инженеров крупных компаний.
HTMHell Advent Calendar. Адвент-календарь из HTML-антипаттернов. Каждый день вас ждёт забавный, но поучительный пример того, как верстать не нужно (и чем это заменить).
CSS Advent Calendar. Короткие ежедневные сниппеты про современный CSS. Хороший способ подтянуть свежие фичи и приёмы без длинных статей.
Accessibility Advent. Адвент, посвящённый доступности интерфейсов. Практики, паттерны и методы, которые помогают сделать продукты удобнее для разных пользователей.
CS Advent (C#). Каждый день публикуют по два материала про разработку на C#. Формат — статьи от практиков, фокус на реальных задачах и инструментах.
Java Advent. Адвент для всех, кто шарит за Java.
Raku Advent Calendar. Raku — это тот самый бывший Perl 6. В календаре статьи про приложения, полезные модули, техники программирования, контейнеры и даже гайды по миграции с Perl.
Knowit Julekalender. Адвент от норвежской компании Knowit для всех, кто любит программировать. За каждой «дверцей» спрятана задачка, на которую нужно ответить текстом или числом; уровень сложности плавает.
Advent of Sysadmin. 12-дневный адвент с задачами по Linux и DevOps разной сложности (с 1 по 12 декабря).
Advent of Agents (Google). Бесплатный адвент от Google для тех, кто хочет «подружиться» с ИИ-агентами. 25 дней коротких уроков, материалы под рукой и копируемый код — от быстрого старта до оркестрации мультиагентных систем.
Advent of Code 2025. Культовый адвент для тех, кто любит программные головоломки. Каждый день — новая задачка, где важны и алгоритмы, и аккуратное чтение условия.
Bekk Christmas. Контентный адвент от команды Bekk. Каждый день до 25 декабря выходят новые статьи, подкасты, туториалы, чек-листы и видео от разработчиков, дизайнеров, менеджеров и консалтеров.
Festive Tech Calendar. Месячный комьюнити-адвент с ежедневными видео, вебинарами и воркшопами по техтемам (Azure, .NET, AI, security).
А если знаете ещё какие-то крутые календари, то присылайте в комментарии. Добавим их в подборку!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤩1
Шутка перестала быть мемом: Инженер реализовал завирусившийся XKCD-комикс про зависимости ПО
Все ведь видели этот мем? Веб-инженер Маттиас Хюэль сделал из него реальную жизу, добавив интерактивности. Проект Stacktower превращает рисунок в настоящую визуализацию зависимостей реальных проектов.
Так можно легко убедиться, что даже простое приложение тянет десятки модулей, часто неподконтрольных разработчику. А крупные проекты порой держатся на очень маленьких зависимостях.
Автор подчеркивает, что цель проекта — не критиковать экосистемы, а показать их реальное устройство. Подробнее можно прочитать у нас на сайте.
Кстати, вы можете проверить свой проект, если он есть на GitHub. Показывайте свои «башни» в комментариях.
Все ведь видели этот мем? Веб-инженер Маттиас Хюэль сделал из него реальную жизу, добавив интерактивности. Проект Stacktower превращает рисунок в настоящую визуализацию зависимостей реальных проектов.
Так можно легко убедиться, что даже простое приложение тянет десятки модулей, часто неподконтрольных разработчику. А крупные проекты порой держатся на очень маленьких зависимостях.
Автор подчеркивает, что цель проекта — не критиковать экосистемы, а показать их реальное устройство. Подробнее можно прочитать у нас на сайте.
Кстати, вы можете проверить свой проект, если он есть на GitHub. Показывайте свои «башни» в комментариях.
❤5
Используете ИИ в своём обучении?
В последнее время я стал меньше публиковать шпаргалок, потому что кажется, что сегодня проще спросить у нейронки, чем ковыряться в табличках и подсказках. Но вдруг это только мне так кажется?
Расскажите используете ли вы вы нейросети в своём обучении и если да, то в каких сценариях? Спрашиваете совета, уточняете как работает метод, просите написать за вас или как-то ещё?
Пишите в комментариях, давайте обсудим.
В последнее время я стал меньше публиковать шпаргалок, потому что кажется, что сегодня проще спросить у нейронки, чем ковыряться в табличках и подсказках. Но вдруг это только мне так кажется?
Расскажите используете ли вы вы нейросети в своём обучении и если да, то в каких сценариях? Спрашиваете совета, уточняете как работает метод, просите написать за вас или как-то ещё?
Пишите в комментариях, давайте обсудим.
This media is not supported in your browser
VIEW IN TELEGRAM
Популярные способы сортировки и визуализация их работы
Существует множество способов отсортировать данные. Ниже вы увидите несколько из них. А выше наглядная демонстрация, как работает каждый способ.
Selection Sort (Сортировка выбором): Находит минимальный элемент в несортированной части массива и перемещает его в начало. Прост, но медленный на больших данных. Сложность сортировки: \( O(n^2) \).
Insertion Sort (Сортировка вставками): Поэлементно добавляет элементы в правильное место в отсортированной части массива. Хорошо работает на почти отсортированных данных. Сложность сортировки: \( O(n^2) \) в худшем случае, \( O(n) \) в лучшем.
Heap Sort (Пирамидальная сортировка): Использует двоичную кучу для последовательного извлечения максимального элемента и его размещения в конце массива. Стабильный алгоритм. Сложность сортировки: \( O(n \log n) \).
Bubble Sort (Пузырьковая сортировка): Попарно сравнивает соседние элементы и меняет их местами, если они в неправильном порядке. Самый простой, но крайне неэффективный метод. Сложность сортировки: \( O(n^2) \).
Cocktail Sort (Коктейльная сортировка): Двусторонний вариант пузырьковой сортировки, проходит массив в прямом и обратном направлении, уменьшая количество проверок. Сложность сортировки: \( O(n^2) \).
Circle Sort (Круговая сортировка): Рекурсивно сравнивает и обменивает элементы, находящиеся на противоположных концах массива, эффективно упорядочивая данные. Сложность сортировки: \( O(n \log n) \) в среднем.
Merge Sort (Сортировка слиянием): Делит массив на части, сортирует каждую часть отдельно и сливает их в один отсортированный массив. Эффективен для больших данных, но требует дополнительной памяти. Сложность сортировки: \( O(n \log n) \).
Quick Sort (Быстрая сортировка): Выбирает опорный элемент, делит массив на элементы меньше и больше него, сортирует их рекурсивно. Один из самых быстрых алгоритмов, но чувствителен к выбору опорного элемента. Сложность сортировки: \( O(n \log n) \) в среднем, \( O(n^2) \) в худшем случае.
Shell Sort (Сортировка Шелла): Улучшение вставок, использующее сортировку с убывающим шагом. Быстрее, чем классические вставки, но зависит от выбора шага. Сложность сортировки: \( O(n^{3/2}) \) в среднем.
Какие ещё способы знаете? Пишите в комментах.
#сортировка
Существует множество способов отсортировать данные. Ниже вы увидите несколько из них. А выше наглядная демонстрация, как работает каждый способ.
Selection Sort (Сортировка выбором): Находит минимальный элемент в несортированной части массива и перемещает его в начало. Прост, но медленный на больших данных. Сложность сортировки: \( O(n^2) \).
Insertion Sort (Сортировка вставками): Поэлементно добавляет элементы в правильное место в отсортированной части массива. Хорошо работает на почти отсортированных данных. Сложность сортировки: \( O(n^2) \) в худшем случае, \( O(n) \) в лучшем.
Heap Sort (Пирамидальная сортировка): Использует двоичную кучу для последовательного извлечения максимального элемента и его размещения в конце массива. Стабильный алгоритм. Сложность сортировки: \( O(n \log n) \).
Bubble Sort (Пузырьковая сортировка): Попарно сравнивает соседние элементы и меняет их местами, если они в неправильном порядке. Самый простой, но крайне неэффективный метод. Сложность сортировки: \( O(n^2) \).
Cocktail Sort (Коктейльная сортировка): Двусторонний вариант пузырьковой сортировки, проходит массив в прямом и обратном направлении, уменьшая количество проверок. Сложность сортировки: \( O(n^2) \).
Circle Sort (Круговая сортировка): Рекурсивно сравнивает и обменивает элементы, находящиеся на противоположных концах массива, эффективно упорядочивая данные. Сложность сортировки: \( O(n \log n) \) в среднем.
Merge Sort (Сортировка слиянием): Делит массив на части, сортирует каждую часть отдельно и сливает их в один отсортированный массив. Эффективен для больших данных, но требует дополнительной памяти. Сложность сортировки: \( O(n \log n) \).
Quick Sort (Быстрая сортировка): Выбирает опорный элемент, делит массив на элементы меньше и больше него, сортирует их рекурсивно. Один из самых быстрых алгоритмов, но чувствителен к выбору опорного элемента. Сложность сортировки: \( O(n \log n) \) в среднем, \( O(n^2) \) в худшем случае.
Shell Sort (Сортировка Шелла): Улучшение вставок, использующее сортировку с убывающим шагом. Быстрее, чем классические вставки, но зависит от выбора шага. Сложность сортировки: \( O(n^{3/2}) \) в среднем.
Какие ещё способы знаете? Пишите в комментах.
#сортировка
👍1