Основы программирования Основы программирования - Паттерны, шаблоны, ООП, алгоритмы etc.
Основы программирования

Практики программирования

Паттерны, шаблоны, ООП, алгоритмы etc.

Создание шаблона для Libarea

Этот сайт работает на платформе для коллективных блогов libarea. Недавно в репозитории Libarea была обновлена версия и внесено много улучшений. Посмотрел код проекта - он стал продвинутее и появились новые возможности. Но возникли проблемы с обновлением этого блога, потому что не следовал инструкции и изменил исходный код во многих местах, добиваясь нужного вида. В этот раз создам свой шаблон и опишу его создание, чтобы...

Читать далее
1
24

Обработка ошибок и исключений в PHP

PHP

После выхода PHP 7 механизм встроенных ошибок был сильно изменён и теперь представляет собой разделение на классы Error (Фатальная ошибка) и Exception (Исключение). Первый содержит перечень унаследованных от него типизированных классов для фатальных ошибок PHP, а Exception должен содержать исключения с возможностью обработки, которые будут от него унаследованы. Вместе эти два основных класса объединены интерфейсом Throwable, соответственно и...

Читать далее
2
204

Какие процессы происходят после ввода URL в браузере

Когда пользователь вводит URL в браузере, происходит следующая последовательность процессов:

  1. Парсинг URL: Браузер анализирует введенный URL, чтобы выделить протокол, доменное имя и путь к ресурсу.

  2. DNS-поиск: Браузер отправляет запрос к DNS-серверу для получения IP-адреса, связанного с доменным именем. DNS-сервер возвращает IP-адрес браузеру.

  3. Установка TCP-соединения: Браузер устанавливает TCP-соединение с веб-сервером, используя...

Читать далее
3
377

Шпаргалка по REST - стиле разработки веб-сервисов

REST, или Representational State Transfer, это архитектурный стиль для разработки веб-сервисов. Он основан на нескольких принципах, что делает его простым, масштабируемым и гибким для создания и использования веб-сервисов.

REST использует стандартные HTTP-методы, такие как GET, POST, PUT и DELETE, для взаимодействия между клиентом и сервером. Каждая операция выполняется на определенном ресурсе, которому обычно соответствует определенный URL.

REST подчеркивает...

Читать далее
3
192

Для чего нужны атрибуты в PHP

PHP

Атрибуты вида #[CustomAttribute] добавлены в PHP 8.0 (RFC, Документация)

Атрибуты предоставляют возможность добавлять различную конфигурацию к конкретным классам, методам, константам класса и тд. При этом, пока вы не начнёте обращаться к этой конфигурации, выполнение PHP никак её не воспринимает, как и обычные комментарии. Через рефлексию можно запросить атрибут конкретного класса/метода и...

Читать далее
2
217
1
Публикуйте, отвечайте, комментируйте...
Вы еще не зарегистрировались?
Войти

Самый ужасный код, который когда либо встречал

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

Читать далее
1
309
3

Экранировать ввод или вывод?

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

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

Читать далее
2
82

Что такое легаси и спагетти в коде

Что такое легаси в коде

Долгое время для меня была очевидной формулировка "легаси" как низкая читаемость кода и невозможность его полноценной поддержки, пока уровень проектов, на которых работаю, не стал повышаться. Казалось бы, можно бы жить спокойно, так как там легаси нет, но не всё так просто, ведь там этим словом называют код, который только устарел, хоть и написан он качественно. Есть даже известная...

Читать далее
2
122

Что вы должны использовать в качестве визуализации соединений SQL вместо диаграмм Венна Перевод

Перевод. Оригинал статьи Автор Андреас Мартинсон (Andreas Martinson)

От 4 апреля 2022 г.

Диаграммы Венна (Venn Diagrams) устарели (по утверждению автора).

Диаграммы Венна

вместо диаграмм Венна

Выше показано изображение автора, вдохновленное R for Data Science (предлагаемое им вместо диаграмм...

Читать далее
1
128
4

Веб-проектирование как кораблестроение, а не архитектура зданий

Веб-проектирование

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

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

Читать далее
2
80

Для чего нужен оператор yield в PHP

PHP

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

Для понимания, что делает yield, необходимо понимать, что такое генераторы. Генераторам же предшествуют итераторы. Когда вы...

Читать далее
1
72

Что десктопу хорошо, то вебу ― смерть

Что десктопу хорошо, то вебу ― смерть

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

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

Читать далее
2
75

Использование псевдотипа iterable в качестве параметра

PHP

Тип iterable может использоваться как тип параметра для указания, что функция принимает набор значений, но ей не важна форма этого набора, пока он будет использоваться с foreach.

   function example(iterable $iterable) {
      foreach ($iterable as $param) {
          // ...
      }
   }

Каким типом может быть этот набор? Параметр принимает любой массив (array) или объект, реализующий интерфейс Traversable. Оба этих типа тоже итерируются с помощью foreach.

Псевдотип iterable впервые появился в PHP 7.1.0

1
62

Движки для базы данных MySQL - InnoDB, MyISAM и Archive

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

Читать далее
1
79
2

💾 Как сохранять смайлы в базу данных MySQL

Если вы хотите сохранить смайлы 😁 в базу данных MySQL, необходимо, чтобы в таблице была кодировка utf8mb4(utf8mb4_general_ci), которая поддерживает верхний диапазон Unicode символов.

Для таблицы можно выполнить следующие запросы, в них MyTable - название таблицы, content - название поля в таблице, в которое сохраняется контент со смайлами. При изменении кодировки контент столбца будет переконвертирован в новую кодировку.


ALTER TABLE `MyTable` COLLATE...
Читать далее
1
117

Функция PHP chunk_split — разбивает строку на фрагменты

PHP

chunk_split()

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


Имеет три параметра:

string string — разбиваемая строка.

int length — длина фрагмента. Необязательный, по умолчанию 76.

string separator — последовательность символов, используемая в качестве конца строки. Необязательный, по умолчанию "\r\n".

Возвращает: string


Пример:

Читать далее
1
99

Должен ли код подстраиваться под его тестирование?

«Команда Android пошла ещё дальше — телефоны основной команды разработки почти постоянно работают на ежедневной сборке. Идея в том, что разработчики будут писать меньше кода с ошибками, если от этого зависит их возможность позвонить домой.»

(«Как тестируют в Google» Джеймс Уиттакер, Джейсон Арбон, Джефф Кароло)

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

Читать далее
2
64

Как подступиться к программированию для начинающего. Часть 2. Практика

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

Читать далее
3
71

Как подступиться к программированию для начинающего. Часть 1. Теория

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

Читать далее
3
63

Паттерны проектирования

Что из себя представляет паттерн?

Паттерн проектирования — это распространённое решение конкретной проблемы при проектировании архитектуры программы.

Паттерны проектирования

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

Читать далее
2
137

Насколько завершёнными должны быть классы в OOП (анти-принцип YAGNI)?

YAGNI («You aren't gonna need it»; с англ. — «Вам это не понадобится») — процесс и принцип проектирования ПО, при котором в качестве основной цели и/или ценности декларируется отказ от избыточной функциональности, — то есть отказ добавления функциональности, в которой нет непосредственной надобности.

С этим утверждением из Википедии довольно сложно спорить. Но любая программа не имеет своего завершения и постоянно изменяется и ...

Читать далее
2
140

От корки до корки, изучать фреймворки

Схема фреймворка

Если вы захотите рассказать о своём проекте, о технической его стороне, то, возможно, важным фактом будет указание, на каком фреймворке он написан. Тем не менее самое важное в нём то, какие идеи вы реализовали на этом фреймворке, потому что без них фреймворк способен только на "hello world" и то, пока вы этого не укажете явно.

Примечание. Язык программирования озвучивать не нужно, об этом...

Читать далее
2
135
2

Laravel - высокая скорость... разработки

Удивительно, но всякий раз, когда упоминается "быстрота" Laravel, подразумевается скорость разработки на нём, а не что либо иное, что можно подумать. Когда Тэйлор Отвел (автор фреймворка) создал его упрощённую версию под названием Lumen, причиной стали несколько коммерческих заказов на разработку, их итоговый результат не совсем устраивал Тэйлора (возможно, заказчиков тоже), в основном из-за медленной работы Laravel. С чисто репутационной...

Читать далее
4
150
2

SOLID - основные принципы проектирования в ООП

SOLID

SOLID

Это аббревиатура пяти основных принципов проектирования в объектно-ориентированном программировании

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

Читать далее
1
304
2

Что такое трейты в PHP и как их использовать

Трейты в PHP

Трейты в PHP существуют с версии 5.4, то есть относительно давно, они добавляют возможность переиспользования кода без наследования, когда один и тот же код можно использовать в совершенно не связанных между собой классах. Факт использования трейтов во фреймворке Symfony, говорит о том, что они могут без проблем вписаться в современные архитектурные решения кода и ничуть не устарели. В целом, они...

Читать далее
2
215
1


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.