Программирование
- /**
* @author: Revenger
* Date: 2024-12-18
*/

This function updates the numbering of table rows after rows are added or removed.
Функция перенумерует строки таблицы после их удаления или добавления.
- /**
* @author: Revenger
* Date: 2024-11-26
*/

У нас есть TABLE A с некоторым количеством записей и связанная TABLE B с миллиардами записей. В Yii2 есть геттер для связанных таблиц, как раз для таких случаев. Но он хорошо работает с небольшими объемами данных, так как делает много запросов. В идеале, его нужно использовать для единичных записей. А в этом случае нужно добавить подзапрос, который будет работать быстрее.
--
We have table A includes some records and related table B containing billions of records. Yii2 provides a getter for related tables, which works well with a small number of records. For cases with large number of related records, we can use a subquery.
- /**
* @author: Revenger
* Date: 2024-10-26
*/

Архитектурные стили определяют, как взаимодействуют друг с другом различные компоненты интерфейса программирования приложений (API). Они обеспечивают эффективность, надёжность и лёгкость интеграции с другими системами, задавая стандартный подход к проектированию и созданию API. Вот наиболее часто используемые стили:
- /**
* @author: Revenger
* Date: 2024-10-17
*/

Передача параметров по ссылке и через переменную (по значению) имеет несколько ключевых отличий. Вот основные моменты, которые объясняют разницу, а также плюсы и минусы каждого подхода:
1. Передача параметра по ссылке:
Что это: При передаче параметра по ссылке функция получает доступ к оригинальной переменной. Это означает, что все изменения, сделанные с параметром внутри функции, повлияют на оригинальную переменную.
- /**
* @author: Revenger
* Date: 2024-09-24
*/

Обычно, фреймворк состоит из контроллеров, моделей и представлений. И рассмотрим типичную его структуру, пройдемся по основным его составляющим и разберем, что в них должно быть, а чего не должно быть.
- /**
* @author: Revenger
* Date: 2024-09-21
*/

I faced this problem when i paste some text to input and an AJAX request is executed immediately. To prevent XSS need to replace special characters before inserting. If you use replacement during pasting then the AJAX request sends the original string. Therefore we need to replace before inserting and we have to change standard input behavior.
-
Столкнулся с такой проблемой, что при вставке в инпут сразу же срабатывал ajax запрос и текст отправлялся на сервер. Что бы предотвратить XSS, нужно заменить спецсимволы. Но, если использовать автозамену при вставке, то в запрос уходит изначальная строка, то есть, значение меняется после того как будет присвоено инпуту. Что бы сделать автозамену до вставки, нужно перехватить вставку текста до того, как она произойдет в инпуте. Для этого нужно изменить поведение инпута.
- /**
* @author: Revenger
* Date: 2024-09-11
*/

If we have an array in PHP with one of its values equal to 0, after array_filter(), this value is removed. But sometimes we consider 0 a valid value.
The second argument of this function helps us. We will write a callback function with a custom filter for empty values, excluding zero.
- /**
* @author: Revenger
* Date: 2024-08-23
*/

Парадигма программирования — это подход или методология, определяющая способ организации и написания программного кода. Она описывает основные принципы и концепции, которые используются для решения задач и построения программного обеспечения. Парадигмы помогают структурировать код и формируют базовые правила для написания программ.
- /**
* @author: Revenger
* Date: 2024-07-13
*/

Я со всей скромностью считаю себя не гениальным, но достаточно хорошим программистом. Но быть хорошим программистом - это не то, что бы не совершать ошибок, а скорее, уметь их признавать и знать способы их решения сейчас и как избежать в будущем.
- /**
* @author: Revenger
* Date: 2024-06-25
*/

Магические строки – это литеральные строки, встроенные непосредственно в исходный код, такие как "Hello World" или "ERROR_001".
Использование магических строк может вызвать несколько проблем:
- /**
* @author: Revenger
* Date: 2024-05-04
*/

Enum — это типизированная константа, которая задается для новой формы данных Enumeration. Эффективным способом описания набора именованных целочисленных констант, присвоенных переменной, является включение типобезопасного перечисления. Перечисления делают код более читабельным и менее уязвимым к ошибкам.
- /**
* @author: Revenger
* Date: 2024-04-25
*/

Избегайте слишком большого количества аргументов в функциях. Рекомендуется ограничить количество аргументов функции двумя. Если функция требует большего, это может быть признаком того, что функция делает слишком много и нуждается в рефакторинге.
- /**
* @author: Revenger
* Date: 2024-03-13
*/

This diagram shows 6 types of database models: Flat Model, Hierarchical Model, Relational Model, Star Schema, Snowflake Model, Network Model
- /**
* @author: Revenger
* Date: 2024-03-11
*/

Here are the 8 most useful CSS generators:
1/ Button CSS generator
100+ buttons you can use in your project.
- /**
* @author: Revenger
* Date: 2024-02-15
*/

I've got a string with dates from date picker and diveded it on two parts: `from` and `to`.
Both parts has been converted into time.
- /**
* @author: Revenger
* Date: 2024-02-12
*/

That is how can we make a custom validation for field `Password` in Yii2. For example, the password must contain at least 1 uppercase letter, 1 lowercase letter, and 1 digit, with a length ranging from 8 to 32 characters.
It's not too hard. Just create method validateCustomPassword() in model.
- /**
* @author: Revenger
* Date: 2024-01-26
*/

Настоящие цифровые часы из цифр в виде классического циферблата с движущимися стрелками.
- /**
* @author: Revenger
* Date: 2024-01-19
*/

Pjax is a technology that facilitates updating part of a page without a full reload. In the context of Yii2, Pjax is commonly used to update data on the page, including pagination navigation.
And i give an example how it works.
- /**
* @author: Revenger
* Date: 2024-01-16
*/

Наверное, есть много людей, которых бесят стандартные таблицы. Особенно, когда на маленьких экранах их содержимое начинает стремительно исчезать за пределами правой части экрана.
- /**
* @author: Revenger
* Date: 2024-01-15
*/

How to change table view in Yii2 component GridView.
First of all, you should override standard files. For this you need to create in /%yii dir%/components your own "GridView", en example "MyGridView".
- /**
* @author: Revenger
* Date: 2023-09-14
*/

Buenos dias, mi amigos.
Today we will add an local extra plugins into CKEditor CDN.
Сегодня я расскажу как добавить недостающие плагины в CKEditor CDN. Плагин будет размещен где-то локально и успешно будет подключен в визуальный редактор.
- /**
* @author: Revenger
* Date: 2023-08-01
*/

По умолчанию в Yii2 ActoveForm <label> идет перед <input>. Но бывают ситуации, когда нужно сделать иначе. В этом нам (не нам, а вам) поможет пользовательский шаблон.
--
By default in Yii2 ActiveForm <label> displays before <input>. But sometimes it needs to display <label> before. In such cases, we can utilize a custom template to achieve this.
- /**
* @author: Revenger
* Date: 2023-06-28
*/

При работе с MS SQL иногда встречается ошибка такого вида: "Символьные или двоичные данные могут быть усечены. Выполнение данной инструкции было прервано.".
- /**
* @author: Revenger
* Date: 2023-06-12
*/

Example code of Yii2 component ArrayDataProvider which displays array as table using GridView.
- /**
* @author: Revenger
* Date: 2023-05-16
*/

Как скачать изображение base64 по клику при помощи javaScript
- /**
* @author: Revenger
* Date: 2023-04-26
*/

Here is a list of some common HTML input types along with examples:
- /**
* @author: Revenger
* Date: 2023-04-18
*/

SQL - это как математика, только на языке компьютеров. SQL это сокращение от "Structured Query Language" и используется для работы с базами данных и является мастхэв для всех кто даже чуть-чуть июнь.
Если вы взяли в руки клавиатуру, то пути на зад нет, только учить SQL.
- /**
* @author: Revenger
* Date: 2023-03-31
*/

Base64 и URL-кодирование - это два разных процесса кодирования данных, которые могут использоваться вместе для безопасной передачи данных через Интернет.
- /**
* @author: Revenger
* Date: 2023-03-30
*/

Сегодня будет отправка почты с вложением методом Gmail API message.send на PHP и curl.
- /**
* @author: Revenger
* Date: 2023-03-29
*/

This code example shows how to send email using Gmail API method 'message.send' and PHP.
- /**
* @author: Revenger
* Date: 2023-03-10
*/

Как проверить существование свойства в объектк js и избежать ошибки "Cannot Read Property of Undefined"?
- /**
* @author: Revenger
* Date: 2023-03-07
*/

100500-я статья про солид.
Об этом можно писать бесконечно и все равно ничего не ясно.
--
SOLID - это аббревиатура, которая объединяет в себе 5 принципов, способствующих написанию правильного кода (и каждый уважающий себя HR напишет эту аббревиатуру в описание вакансии, хотя не понимает что оно такое).
1). Single Responsibility Principle (Принцип единственной ответственности) - это означает, что каждый класс должен отвечать только за одну задачу. Например, если у вас есть класс "Корзина", он должен отвечать только за добавление и удаление товаров из корзины, но не должен отвечать за оплату или оформление заказа.
- /**
* @author: Revenger
* Date: 2023-02-09
*/

- /**
* @author: Revenger
* Date: 2023-01-27
*/

Как использовать маски для инпутов с помощью jQuery input mask bundle ip-адрес и телефон.
- /**
* @author: Revenger
* Date: 2023-01-19
*/

По клику на чекбокс в шапке таблицы менять состояние всех других чекбоксов.
- /**
* @author: Revenger
* Date: 2023-01-16
*/

Как авторизоваться используя oAuth 2 в Google Chat API.
Для этого необходим некий внешний ресурс, на который будет отправляться код авторизации, который, в свою очередь, будет использовться для получения кода доступа.
Например, https://yoursite.dev/oauth, зарегистрировать этот ресурс в своем приложении. Как это сделать - можно посмотреть статью по Gmail API, там я описывал свой первый опыт с этим. Авторизация в чате на 99% схожа с авторизацией в Gmail.
- /**
* @author: Revenger
* Date: 2022-12-28
*/

Как удалить все пробелы в строке используя javaScript. Удаляются только лишние пробелы перед и после.
- /**
* @author: Revenger
* Date: 2022-12-08
*/

Так что бы не искать каждый раз, оставляю рабочий на 100% пример загрузки файла из формы, сгенерированной из js.
- /**
* @author: Revenger
* Date: 2022-12-05
*/

Любой уважающий себя программист просто обязан рассказать как он легко оперирует паттернами, а я как-то совершенно упускаю эту тему и совершенно ничем не оперирую. Хотя, если окунуться в омут кода, то парочку примеров таки можно найти - к гадалке не ходи.
В условиях постоянно модифицирующегося ПО с регулярными перестройками в угоду рыночным тенденциям, которое дорабатывается в момент появления необходимости нет почти никакой возможности заранее что-то архитектурно спрогнозировать.
Сегодня, к примеру, нужно просто отправлять клиентам емейлы при совешении каких-то действий, завтра емейлы уже неактуальны и все сидят в телеге, послезавтра нужно будет транслировать мысли прямо в мозг.
- /**
* @author: Revenger
* Date: 2022-11-21
*/

Как получить текущую дату и сравнить с некоей указанной датой в формате dd.mm.yyyy на js.
- /**
* @author: Revenger
* Date: 2022-11-11
*/

Если вы хотите создать такой класс, методы которого можно вызывать последовательно в виде цепочке, то для этого необходимо, что бы каждый метод возвращал объект $this.
Этот шаблон программирования (паттерн) называется "текучий интерфейс" (fluent interface) и его назначение сделать код более компактным и читабельным.
На простом примере покажу как сделать такой класс калькулятора, только нужно добавить аргументы каждому методу.
- /**
* @author: Revenger
* Date: 2022-11-07
*/

Что бы раз и навсегда закрыть вопрос по определению четного или нечетного числа в PHP. Для этого используем деление по модулю, т.е., вычисление остатка. Суть в том, что при делении четного числа на четное остаток будет 0, иначе !=0.
- /**
* @author: Revenger
* Date: 2022-09-28
*/

Как посчитать суммы размеров всех строковых элементов масива на PHP? Имхо, оптимальный вариант - callback функция array_map().
- /**
* @author: Revenger
* Date: 2022-09-07
*/

Рабочий пример использования виджета GridView. Это такой виджет, который позволяет отображать данные в виде таблицы с фильтрацией, сортировкой и постраничной навигацией, также, с возможностью менять как внешний вид отдельных элементов так и модифицировать выводимые данные.
- /**
* @author: Revenger
* Date: 2022-08-17
*/

Ситуация описана типичная, ответов в интернете море, будет еще один.
Бывают такие ситуации, когда необходимо понять, какая функция или метод класса вызывает текущую функцию - метод.
Например, есть функция girl(), которая вызывает метод erection(). Вызываемый метод работает с какими-то данными. Вызывающих методов много (wife(), girl(), lover()), работая с некоторыми данными, нужно понимать, какой именно метод вызывает erection().
Для этого вводим в метод erection() такую стандартную функцию как debug_backtrace().
- /**
* @author: Revenger
* Date: 2022-07-04
*/

Примечание: эта статья выражает всю мою боль и мучения, связанные с изучением процесса получения результата.
Все совпадения с реальными личностями или историческими событиями случайны. Я не испытываю ненависти к Google.
Gmail API это достаточно перспективный способ получения и управления содержимым почтового ящика Google для автоматизации различных процессов.
На примере этой статьи хотелось бы получать письма из почтового ящика по определенным критериям и присвоить определенную метку.
Всегда, конечно, есть способ получения через IMAP, но сейчас нужно еще и присваивать письмам определенные ярлыки и в перспективе производить всякие прочие манипуляции (отправка, удаление, перемещение внутри папок).
Для начала, нужно разобраться как работать с этим API. В этом нам будет помогать Will Smith и приложение для получения снимков экрана xscreenshot.
- /**
* @author: Revenger
* Date: 2021-11-03
*/

Часто (хотя, у кого как) при использовании баз данных для упорядочивания и/или группировки таблиц используют префиксы имени владельца.
По умолчанию в MS SQL используется пользователь DBO - database owner. Но также можно использовать и других пользователей для удобства выдачи прав и разделения доступов. И тут возникает первая сложность при попытке подключиться к таблице нестандартного пользователя.
Хотя, на самом деле, никаких сложностей, просто нужно добавить в модели префикс пользователя к имени таблицы.
- /**
* @author: Revenger
* Date: 2021-10-19
*/

На эту тему написан миллион статей, но когда начинаешь искать любой простой пример, как обычно, ничего толкового не найдешь. Поэтому, сделаю миллионпервый пример для себя.
Есть массив с девушками и датами свиданий. Нужно отсортировать по дате, чтобы не перепутать.
Для удобства и простоты кода использую анонимную функцию сортировки.
- /**
* @author: Revenger
* Date: 2021-06-13
*/

Когда подсаживаешься на C++, очень сложно остановиться. Мне показалось мало просто написать какое-нибудь простое приложение под Linux, я сразу решил его делать и под Windows.
Итак, задача на данный момент - написать пока что простое оконное приложение с необходимыми элементами управления пока без функционала на чистом WinAPI на языке C++.
Мне нравится классические Windows приложения, такие, как они выглядели в старых Windows 98/2000/XP. В идеале, чтобы мое приложение запускалось на 2000+.
И, конечно же, я пишу приложение, которое смогу использовать в работе.
- /**
* @author: Revenger
* Date: 2021-06-11
*/

Если нужно текстовое поле (text input) только для цифр и с ограничениме длины строки, то есть хорошая и плохая новость.
Современные браузеры предоставляют отличную возможность проверки вводимых даннных, реализуя определенные типы полей ввода: цифровой, дата, номер телефона и т.д.
К сожалению, я столкнулся с ситуацией, что не могу установить на input number ограничение длины номера и пришлось использовать input text, не было реакции на maxlenght.