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

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

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

Индексы в SQL базах данных

Что такое индексы?

При вставке очередной строки в таблицу сервер вашей БД технически не размещает их в какой-либо таблице по порядку, вместо этого он просто помещает данные в следующее доступное место в файле по списку этих свободных мест. При запросе к таблице серверу приходится проверять каждую строку таблицы, чтобы ответить по условиям запроса. Например, чтобы найти пользователей, имя которых начинается с "F", сервер должен...

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

Транзакции в MySQL

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

Управление транзакциями

Управление транзакциями является важной частью работы базы...

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

Критерии ACID для транзакций в MySQL

ACID - это аббревиатура, обозначающая четыре ключевых свойства систем обработки транзакций: атомарность, согласованность, изолированность и долговечность. Эти характеристики являются основополагающими для обеспечения надежности и защиты данных в базах данных.

ACID

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

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

Нейросети как будущее разработки ПО

Трансформация текущих ролей программистов и ИИ (в перспективе).

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

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

Использование слеша в конце URL

Со слешем или без, как правильно?

Есть два типа распространённых вида URL(Uniform Resource Locator) для сайтов - это со слешем в конце и без слеша. Изначально предполагалось, что адрес со слешем указывает на директорию, в то время как адрес без слеша на файл. Со временем, когда эти URL стали участвовать в маршрутизации и потеряли связь со внутренней структурой папок и файлов сайта, стали встречаться различные варианты реализации. Например, WordPress и...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

OPTIONS....

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PHP

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

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

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

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

1
78

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

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

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

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

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

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


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

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

PHP

chunk_split()

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


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

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

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

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

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


Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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