Индексы в SQL базах данных
Что такое индексы?
При вставке очередной строки в таблицу сервер вашей БД технически не размещает их в какой-либо таблице по порядку, вместо этого он просто помещает данные в следующее доступное место в файле по списку этих свободных мест. При запросе к таблице серверу приходится проверять каждую строку таблицы, чтобы ответить по условиям запроса. Например, чтобы найти пользователей, имя которых начинается с "F", сервер должен...
Транзакции в MySQL
Транзакция представляет собой группу операторов SQL, которые обрабатываются атомарно, то есть как цельная единица проведённой работы. Если механизм базы данных может применить всю группу операторов к базе данных, он делает это, но если какой-либо из операторов не может быть выполнен из-за сбоя или по другой причине, ни один из них не применяется.
Управление транзакциями
Управление транзакциями является важной частью работы базы...
Критерии ACID для транзакций в MySQL
ACID - это аббревиатура, обозначающая четыре ключевых свойства систем обработки транзакций: атомарность, согласованность, изолированность и долговечность. Эти характеристики являются основополагающими для обеспечения надежности и защиты данных в базах данных.
ACID
Атомарность. Транзакция воспринимается как единое целое, и ее выполнение подразумевает, что или все действия выполняются успешно, или не выполняется ни одно. Это...
Нейросети как будущее разработки ПО
Трансформация текущих ролей программистов и ИИ (в перспективе).
С каждым годом мы видим всё больше примеров применения нейросетей и автоматизации при их помощи в программировании. Одним из наиболее интересных направлений является генерация тестов для проверки качества кода. Но давайте заглянем немного дальше: возможно, в будущем программисты будут заниматься главным образом созданием тестов, а нейросети — писать программный...
Использование слеша в конце URL
Со слешем или без, как правильно?
Есть два типа распространённых вида URL(Uniform Resource Locator) для сайтов - это со слешем в конце и без слеша. Изначально предполагалось, что адрес со слешем указывает на директорию, в то время как адрес без слеша на файл. Со временем, когда эти URL стали участвовать в маршрутизации и потеряли связь со внутренней структурой папок и файлов сайта, стали встречаться различные варианты реализации. Например, WordPress и...
Вы еще не зарегистрировались? Войти
Создание шаблона для Libarea
Этот сайт работает на платформе для коллективных блогов libarea. Недавно в репозитории Libarea была обновлена версия и внесено много улучшений. Посмотрел код проекта - он стал продвинутее и появились новые возможности. Но возникли проблемы с обновлением этого блога, потому что не следовал инструкции и изменил исходный код во многих местах, добиваясь нужного вида. В этот раз создам свой шаблон и опишу его создание, чтобы...
Обработка ошибок и исключений в PHP
После выхода PHP 7 механизм встроенных ошибок был сильно изменён и теперь представляет собой разделение на классы Error (Фатальная ошибка) и Exception (Исключение). Первый содержит перечень унаследованных от него типизированных классов для фатальных ошибок PHP, а Exception должен содержать исключения с возможностью обработки, которые будут от него унаследованы. Вместе эти два основных класса объединены интерфейсом Throwable, соответственно и...
Какие процессы происходят после ввода URL в браузере
Когда пользователь вводит URL в браузере, происходит следующая последовательность процессов:
-
Парсинг URL: Браузер анализирует введенный URL, чтобы выделить протокол, доменное имя и путь к ресурсу.
-
DNS-поиск: Браузер отправляет запрос к DNS-серверу для получения IP-адреса, связанного с доменным именем. DNS-сервер возвращает IP-адрес браузеру.
-
Установка TCP-соединения: Браузер устанавливает TCP-соединение с веб-сервером, используя...
Шпаргалка по REST - стиле разработки веб-сервисов
REST, или Representational State Transfer, это архитектурный стиль для разработки веб-сервисов. Он основан на нескольких принципах, что делает его простым, масштабируемым и гибким для создания и использования веб-сервисов.
REST использует стандартные HTTP-методы, такие как GET, POST, PUT и DELETE, для взаимодействия между клиентом и сервером. Каждая операция выполняется на определенном ресурсе, которому обычно соответствует определенный URL.
OPTIONS....
Для чего нужны атрибуты в PHP
Атрибуты вида #[CustomAttribute]
добавлены в PHP 8.0 (RFC, Документация)
Атрибуты предоставляют возможность добавлять различную конфигурацию к конкретным классам, методам, константам класса и тд. При этом, пока вы не начнёте обращаться к этой конфигурации, выполнение PHP никак её не воспринимает, как и обычные комментарии. Через рефлексию можно запросить атрибут конкретного класса/метода и...
Самый ужасный код, который когда либо встречал
Когда мне говорят, что нужно рефакторить какой-то плохой участок чужого кода, мне интересно, насколько сильно он подходит под определение мной однажды виденного и ставшего образцом, скажем так совершенного и идеально ужасного кода. Этот образчик наблюдал в средней известности компании и проекте, последний в своём роде был очень даже ничего по популярности. Но секрет его популярности был в том, что он один из первых занял нишу и в ней...
Экранировать ввод или вывод?
Тенденция иметь один ответ на все возможные варианты может не только облегчить жизнь программисту, но и навредить результатам его профессиональной деятельности. Этот случай не исключение.
Принимая во внимание все многообразие существующих Веб-сайтов (и это только если их рассматривать отдельно) можно ли считать, что для всех может существовать один принцип экранирования данных? В реальности из стартапов в большие проекты...
Что такое легаси и спагетти в коде
Долгое время для меня была очевидной формулировка "легаси" как низкая читаемость кода и невозможность его полноценной поддержки, пока уровень проектов, на которых работаю, не стал повышаться. Казалось бы, можно бы жить спокойно, так как там легаси нет, но не всё так просто, ведь там этим словом называют код, который только устарел, хоть и написан он качественно. Есть даже известная...
Что вы должны использовать в качестве визуализации соединений SQL вместо диаграмм Венна Перевод
Перевод. Оригинал статьи Автор Андреас Мартинсон (Andreas Martinson)
От 4 апреля 2022 г.
Диаграммы Венна (Venn Diagrams) устарели (по утверждению автора).
Выше показано изображение автора, вдохновленное R for Data Science (предлагаемое им вместо диаграмм...
Веб-проектирование как кораблестроение, а не архитектура зданий
Немного ранее уже упоминал о том, что подходить с одними и теми же стандартами проектирования к принципиально разным направлениям программирования не может быть достаточно рационально.
При этом утверждении возник вопрос, а в какой же форме тогда предстанет Web-разработка, если отделить её от общих стандартов, распространяющихся сейчас на все виды...
Для чего нужен оператор yield в PHP
Оператор yield — основа генераторной функции. Отдалённо этот оператор похож на оператор return , так как тоже реализует возврат, только вместо того, чтобы останавливать выполнение текущей функции, yield предоставляет значение коду, зацикливающемуся на генераторе, и приостанавливает выполнение функции генератора.
Для понимания, что делает yield, необходимо понимать, что такое генераторы. Генераторам же предшествуют итераторы. Когда вы...
Что десктопу хорошо, то вебу ― смерть
В предыдущих статьях кратко касался идеи, что распространённые правила программирования по-разному применимы к десктопным приложениям и для веб-разработки, теперь попробую расширить эту тему.
Большинство книг с рекомендациями по паттернам разработки и архитектурного проектирования кода приложения максимально размыты по отношению к области применения. В...
Использование псевдотипа iterable в качестве параметра
Тип iterable может использоваться как тип параметра для указания, что функция принимает набор значений, но ей не важна форма этого набора, пока он будет использоваться с foreach.
function example(iterable $iterable) {
foreach ($iterable as $param) {
// ...
}
}
Каким типом может быть этот набор? Параметр принимает любой массив (array) или объект, реализующий интерфейс Traversable. Оба этих типа тоже итерируются с помощью foreach.
Псевдотип iterable впервые появился в PHP 7.1.0
Движки для базы данных MySQL - InnoDB, MyISAM и Archive
InnoDB — многофункциональный движок, который поддерживает большинство функций: транзакции, все ограничения, внешние ключи, связи таблиц и другое, но не поддерживает полнотекстовый индекс. Данный движок в основном направлен на выборку данных, а не на вставку, следовательно, лучше использовать его там, где чаще всего нужно будет быстро что-то выбрать, а не вставить. Или там, где нужен какой-то функционал,...
💾 Как сохранять смайлы в базу данных MySQL
Если вы хотите сохранить смайлы 😁 в базу данных MySQL, необходимо, чтобы в таблице была кодировка utf8mb4(utf8mb4_general_ci), которая поддерживает верхний диапазон Unicode символов.
Для таблицы можно выполнить следующие запросы, в них MyTable
- название таблицы, content
- название поля в таблице, в которое сохраняется контент со смайлами.
При изменении кодировки контент столбца будет переконвертирован в новую кодировку.
ALTER TABLE `MyTable` COLLATE...
Функция PHP chunk_split — разбивает строку на фрагменты
chunk_split()
Позволяет разбить строку на фрагменты по заданному количеству символов. Может пригодиться, когда нужно отобразить пользователю многозначный код в читаемом виде или в иных подобных случаях.
Имеет три параметра:
string string — разбиваемая строка.
int length — длина фрагмента. Необязательный, по умолчанию 76.
string separator — последовательность символов, используемая в качестве конца строки. Необязательный, по умолчанию "\r\n".
Возвращает: string
Пример:
Должен ли код подстраиваться под его тестирование?
«Команда Android пошла ещё дальше — телефоны основной команды разработки почти постоянно работают на ежедневной сборке. Идея в том, что разработчики будут писать меньше кода с ошибками, если от этого зависит их возможность позвонить домой.»
(«Как тестируют в Google» Джеймс Уиттакер, Джейсон Арбон, Джефф Кароло)
Хоть однозначного ответа на этот вопрос нет, можно рассмотреть конкретные случаи, когда тестирование кода влияет в той или...
Как подступиться к программированию для начинающего. Часть 2. Практика
В прошлой части мне показалось уместным вспомнить собственный опыт в качестве начинающего на нескольких примерах, теперь же можно порассуждать о практике программирования. Собственно, рассуждать здесь не нужно, практика и ещё раз практика. Но, из первой части, возможно уже стало понятно, что интересная практика гораздо полезнее рутины для развития в качестве программиста. Здесь же упоминается...
Как подступиться к программированию для начинающего. Часть 1. Теория
В интернете множество рекомендаций и курсов, как изучать тот или иной язык программирования, соответствующая таргетированная реклама преследует каждого, кто хотя бы раз поинтересовался "Как научиться программировать с нуля" или хотел завести домашнего питона (Python). Тем не менее, для начинающего программиста не только важно знать циклы и условия, но и перейти к необходимой логике составления кода, исполняющегося всегда буквально....
Паттерны проектирования
Что из себя представляет паттерн?
Паттерн проектирования — это распространённое решение конкретной проблемы при проектировании архитектуры программы.
В отличие от готовых функций или библиотек с определённым кодом, паттерн нельзя просто вставить в программу и использовать. Паттерн представляет собой общую концепцию решения той или иной проблемы, которую нужно...