🎞️ Видео, от которого сложно оторваться: эволюция языков программирования с 1958 по 2025
В этом ролике — детальная инфографика, которая показывает, как менялись самые популярные языки программирования за последние 67 лет.
➖ Что внутри:
▪️ Как C, Java и Python захватывали мир.
▪️ Когда Fortran и COBOL теряли свои позиции.
▪️ Какие языки стали лидерами в последние годы.
Рейтинг построен на основе опросов, данных GitHub, книг и статей, а также аналитики популярности за последние годы.
В этом ролике — детальная инфографика, которая показывает, как менялись самые популярные языки программирования за последние 67 лет.
➖ Что внутри:
▪️ Как C, Java и Python захватывали мир.
▪️ Когда Fortran и COBOL теряли свои позиции.
▪️ Какие языки стали лидерами в последние годы.
Рейтинг построен на основе опросов, данных GitHub, книг и статей, а также аналитики популярности за последние годы.
👍2🥱2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
😂 Dev Memes: утренние дилеммы, правки и зарплаты
Третья неделя года позади, а мы всё ещё смеёмся над мемами. Ловите подборку лучших шуток из нашего канала «Библиотека IT-мемов».
🔗 Подборка самых топовых мемов
Третья неделя года позади, а мы всё ещё смеёмся над мемами. Ловите подборку лучших шуток из нашего канала «Библиотека IT-мемов».
🔗 Подборка самых топовых мемов
😁8❤1👍1
🧩Экономичные контейнерные Smoke-тесты, которые должен иметь каждый проект Symfony
Smoke-тесты — это простые проверки, которые не требуют подключения к базе данных, внешним сервисам, или использования моков. Они работают с контейнером зависимостей Symfony, пишутся быстро и будут полезны на протяжении всего жизненного цикла проекта.
Автор статьи рассказывает о важности контейнерных smoke-тестов в проектах Symfony на личным опытом: как такие тесты помогли обнаружить сложные баги, которые не выявили юнит-, интеграционные и E2E-тесты. Эти баги связаны не только с бизнес-логикой, но и с взаимодействием с фреймворком, что делает их особенно трудными для обнаружения.
👉Читать статью
Smoke-тесты — это простые проверки, которые не требуют подключения к базе данных, внешним сервисам, или использования моков. Они работают с контейнером зависимостей Symfony, пишутся быстро и будут полезны на протяжении всего жизненного цикла проекта.
Автор статьи рассказывает о важности контейнерных smoke-тестов в проектах Symfony на личным опытом: как такие тесты помогли обнаружить сложные баги, которые не выявили юнит-, интеграционные и E2E-тесты. Эти баги связаны не только с бизнес-логикой, но и с взаимодействием с фреймворком, что делает их особенно трудными для обнаружения.
👉Читать статью
❤5😁5👍2
💼Как организовать структуру приложения
Структура кода — это не просто способ организации файлов и папок в проекте, это фундаментальный аспект разработки, который влияет на её эффективность, качество, и долгосрочную поддержку. Красиво организованный код облегчает понимание, упрощает внедрение новых функций и снижает вероятность ошибок. Независимо от масштаба проекта, будь то небольшое приложение или сложная система, структурированный подход к организации кода способствует снижению рисков, связанных с техническим долгом, и повышает продуктивность команды разработчиков. Однако не все разработчики осознают, насколько велика разница между проектами с хорошо продуманной структурой и хаотично организованной.
В этой статье разбирается, что значит «понятная структура кода», и почему её наличие столь важно для успешной разработки.
👉Хабр
Структура кода — это не просто способ организации файлов и папок в проекте, это фундаментальный аспект разработки, который влияет на её эффективность, качество, и долгосрочную поддержку. Красиво организованный код облегчает понимание, упрощает внедрение новых функций и снижает вероятность ошибок. Независимо от масштаба проекта, будь то небольшое приложение или сложная система, структурированный подход к организации кода способствует снижению рисков, связанных с техническим долгом, и повышает продуктивность команды разработчиков. Однако не все разработчики осознают, насколько велика разница между проектами с хорошо продуманной структурой и хаотично организованной.
В этой статье разбирается, что значит «понятная структура кода», и почему её наличие столь важно для успешной разработки.
👉Хабр
👍4😁2
Карточка состояния базы данных для Laravel Pulse
Разработчик Джейми Схоутен создал изящную карту Laravel Pulse для мониторинга состояния вашей базы данных, предоставляя ключевые показатели, такие как активные потоки, соединения и многое другое
Эта конфигурация карты поддерживает настройку нескольких баз данных, и вы можете указать, какие типы данных включать.
👉Гитхаб
Разработчик Джейми Схоутен создал изящную карту Laravel Pulse для мониторинга состояния вашей базы данных, предоставляя ключевые показатели, такие как активные потоки, соединения и многое другое
Эта конфигурация карты поддерживает настройку нескольких баз данных, и вы можете указать, какие типы данных включать.
👉Гитхаб
👍2❤1
В чем разница между Eloquent и Query Builder в Ларавеле?
В Laravel Eloquent — это инструмент для объектно-реляционного отображения (ORM), который предоставляет простой и удобный способ взаимодействия с базой данных с использованием PHP-кода. Eloquent позволяет определять ваши таблицы базы данных как классы, а строки таблицы как объекты. С другой стороны, Query Builder предоставляет более низкоуровневый способ создания SQL-запросов с использованием цепочки методов.
Основное различие между Eloquent и Query Builder заключается в том, что Eloquent предоставляет более высокоуровневый, более выразительный API для взаимодействия с вашей базой данных, в то время как Query Builder предоставляет более низкоуровневый, более гибкий API.
#вопросы_с_собеседования
В Laravel Eloquent — это инструмент для объектно-реляционного отображения (ORM), который предоставляет простой и удобный способ взаимодействия с базой данных с использованием PHP-кода. Eloquent позволяет определять ваши таблицы базы данных как классы, а строки таблицы как объекты. С другой стороны, Query Builder предоставляет более низкоуровневый способ создания SQL-запросов с использованием цепочки методов.
Основное различие между Eloquent и Query Builder заключается в том, что Eloquent предоставляет более высокоуровневый, более выразительный API для взаимодействия с вашей базой данных, в то время как Query Builder предоставляет более низкоуровневый, более гибкий API.
#вопросы_с_собеседования
🥱12👍8❤1🔥1
Форматирование валют с помощью расширенного Number Helper в Laravel
Number helper теперь поддерживает настраиваемые валюты по умолчанию, что упрощает форматирование цен в разных регионах и различных сценариях использования.
🔗Сайт Laravel
Number helper теперь поддерживает настраиваемые валюты по умолчанию, что упрощает форматирование цен в разных регионах и различных сценариях использования.
🔗Сайт Laravel
👍4😁3
glob() со скрытыми файлами
По умолчанию функция
С помощью опции
#совет
По умолчанию функция
glob()
перечисляет только файлы, которые не начинаются с точки .. Это означает, что скрытые файлы в Linux не перечисляются.С помощью опции
GLOB_BRACE`
можно перечислить все файлы и даже отфильтровать постоянно присутствующие '.' и '..'#совет
👾3👍1🤔1😢1🌚1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
🤖 DeepSeek PHP API-клиент
API-клиент, поддерживаемый сообществом, который позволяет взаимодействовать с API deepseek.
Добавляем через Composer:
🔗Github
#инструменты
API-клиент, поддерживаемый сообществом, который позволяет взаимодействовать с API deepseek.
Добавляем через Composer:
composer require deepseek-php/deepseek-php-client
🔗Github
#инструменты
👍24❤2🔥2🥰1
💬 Как использовать array_merge() и array_combine() в PHP?
array_combine(): Она используется для создания нового массива, используя значения одного массива в качестве ключей и значения другого массива в качестве значений. Самое главное при использовании
array_merge(): Объединяет один или несколько массивов таким образом, что значение одного массива добавляется в конец первого массива, и если массивы имеют одинаковые строки-ключи, то последующее значение отменяет предыдущее значение для этого ключа.
#вопросы_с_собеседований
array_combine(): Она используется для создания нового массива, используя значения одного массива в качестве ключей и значения другого массива в качестве значений. Самое главное при использовании
array_combine()
, что количество значений в обоих массивах должно быть одинаковым.array_merge(): Объединяет один или несколько массивов таким образом, что значение одного массива добавляется в конец первого массива, и если массивы имеют одинаковые строки-ключи, то последующее значение отменяет предыдущее значение для этого ключа.
#вопросы_с_собеседований
🔥7👍4🌚2
Автор статьи делится размышлениями о том, как упростить работу с контроллерами в Laravel, избегая дублирования кода при обработке CRUD-операций. В стандартном подходе для выполнения действий с базой данных он использует try-catch внутри контроллера, чтобы обрабатывать возможные ошибки и показывать пользователю сообщения об успешном или неудачном результате. Однако частое повторение этого кода натолкнуло его на мысль вынести обработку ошибок и транзакций в само действие (Action), а не в контроллер.
Для этого он решил использовать PHP-атрибуты, появившиеся в версии 8.0. Он создал атрибут
Однако в процессе реализации автор столкнулся с проблемами: код начал усложняться, скрывая важные детали обработки ошибок и усложняя отладку. В итоге он пришёл к выводу, что в данном случае лучше следовать принципу «явное лучше, чем неявное», и оставил первоначальный вариант с try-catch в контроллере.
👉Читать статью
Для этого он решил использовать PHP-атрибуты, появившиеся в версии 8.0. Он создал атрибут
#[Transactionable]
, который можно добавлять к методам, требующим обёртки в транзакцию. Затем с помощью Reflection API проверяется, есть ли у метода этот атрибут, и если да, то метод выполняется внутри транзакции. Это позволяет контроллеру просто вызывать execute()
, не заботясь о try-catch и логировании ошибок.Однако в процессе реализации автор столкнулся с проблемами: код начал усложняться, скрывая важные детали обработки ошибок и усложняя отладку. В итоге он пришёл к выводу, что в данном случае лучше следовать принципу «явное лучше, чем неявное», и оставил первоначальный вариант с try-catch в контроллере.
👉Читать статью
😁17👍3🤔1
💡 Топ-6 стратегий для снижения задержек в системах
В высоконагруженных приложениях каждое миллисекундное улучшение имеет значение. Вот ключевые подходы, которые помогут сократить задержки и улучшить пользовательский опыт.
🔸 Caching
🔸 CDN
🔸 Load Balancers
🔸 Asynchronous Task Processing
🔸 Database Indexing
🔸 Pre-caching
#инфографика
В высоконагруженных приложениях каждое миллисекундное улучшение имеет значение. Вот ключевые подходы, которые помогут сократить задержки и улучшить пользовательский опыт.
🔸 Caching
🔸 CDN
🔸 Load Balancers
🔸 Asynchronous Task Processing
🔸 Database Indexing
🔸 Pre-caching
#инфографика
👍8