Бортовой журнал Ктулху

Программирование

A graph is a set of connected points — just like people in a social network, cities on a map, or links between web pages.

Sometimes we need to find the shortest connection — for example, the fewest hops between two people. That’s where Breadth-First Search (BFS) helps.

It explores all neighbors first, then moves level by level — guaranteeing the shortest path in an unweighted network.

I didn’t get it right on the first try.

That’s okay.

What matters is understanding the idea.

Most developers use sort() and never think about what’s inside. But classic algorithms like Bubble Sort are perfect for understanding how sorting logic works step by step. Let’s look at a clean PHP implementation.

Many PHP developers use nested loops for data lookups or joins. But in some cases, a simple hash map (associative array) can make your code several times faster.

Let’s compare them with two short benchmarks (10 000 records each).

This function updates the numbering of table rows after rows are added or removed.

Функция перенумерует строки таблицы после их удаления или добавления.

У нас есть 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. 

Архитектурные стили определяют, как взаимодействуют друг с другом различные компоненты интерфейса программирования приложений (API). Они обеспечивают эффективность, надёжность и лёгкость интеграции с другими системами, задавая стандартный подход к проектированию и созданию API. Вот наиболее часто используемые стили:

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

1. Передача параметра по ссылке:

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

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

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, нужно заменить спецсимволы. Но, если использовать автозамену при вставке, то в запрос уходит изначальная строка, то есть, значение меняется после того как будет присвоено инпуту. Что бы сделать автозамену до вставки, нужно перехватить вставку текста до того, как она произойдет в инпуте. Для этого нужно изменить поведение инпута.

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.

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

 

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

Магические строки – это литеральные строки, встроенные непосредственно в исходный код, такие как "Hello World" или "ERROR_001".

Использование магических строк может вызвать несколько проблем:

Enum — это типизированная константа, которая задается для новой формы данных Enumeration. Эффективным способом описания набора именованных целочисленных констант, присвоенных переменной, является включение типобезопасного перечисления. Перечисления делают код более читабельным и менее уязвимым к ошибкам.

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

This diagram shows 6 types of database models: Flat Model, Hierarchical Model, Relational Model, Star Schema, Snowflake Model, Network Model

 

Here are the 8 most useful CSS generators:

1/ Button CSS generator

100+ buttons you can use in your project.

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.

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.

Настоящие цифровые часы из цифр в виде классического циферблата с движущимися стрелками.

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.

 

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

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".

Buenos dias, mi amigos.

Today we will add an local extra plugins into CKEditor CDN.

Сегодня я расскажу как добавить недостающие плагины в CKEditor CDN. Плагин будет размещен где-то локально и успешно будет подключен в визуальный редактор.

По умолчанию в 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.

При работе с MS SQL иногда встречается ошибка такого вида: "Символьные или двоичные данные могут быть усечены. Выполнение данной инструкции было прервано.".

Example code of Yii2 component ArrayDataProvider which displays array as table using GridView.

Как скачать изображение base64 по клику при помощи javaScript

Here is a list of some common HTML input types along with examples:

 

SQL - это как математика, только на языке компьютеров. SQL это сокращение от "Structured Query Language" и используется для работы с базами данных и является мастхэв для всех кто даже чуть-чуть июнь.

Если вы взяли в руки клавиатуру, то пути на зад нет, только учить SQL.

Base64 и URL-кодирование - это два разных процесса кодирования данных, которые могут использоваться вместе для безопасной передачи данных через Интернет.

Сегодня будет отправка почты с вложением методом Gmail API message.send на PHP и curl.

This code example shows how to send email using Gmail API method 'message.send' and PHP.

Как проверить существование свойства в объектк js и избежать ошибки "Cannot Read Property of Undefined"?

100500-я статья про солид.

Об этом можно писать бесконечно и все равно ничего не ясно.

--

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

1). Single Responsibility Principle (Принцип единственной ответственности) - это означает, что каждый класс должен отвечать только за одну задачу. Например, если у вас есть класс "Корзина", он должен отвечать только за добавление и удаление товаров из корзины, но не должен отвечать за оплату или оформление заказа.

Готовые методы работы с куками на  javaScript.

Как использовать маски для инпутов с помощью jQuery input mask bundle ip-адрес и телефон.

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

Как авторизоваться используя oAuth 2 в Google Chat API.

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

Например, https://yoursite.dev/oauth, зарегистрировать этот ресурс в своем приложении. Как это сделать - можно посмотреть статью по Gmail API, там я описывал свой первый опыт с этим. Авторизация в чате на 99% схожа с авторизацией в Gmail.

Как удалить все пробелы в строке используя javaScript. Удаляются только лишние пробелы перед и после.

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

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

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

Сегодня, к примеру, нужно просто отправлять клиентам емейлы при совешении каких-то действий, завтра емейлы уже неактуальны и все сидят в телеге, послезавтра нужно будет транслировать мысли прямо в мозг.

Как получить текущую дату и сравнить с некоей указанной датой в формате dd.mm.yyyy на js.

Если вы хотите создать такой класс, методы которого можно вызывать последовательно в виде цепочке, то для этого необходимо, что бы каждый метод возвращал объект $this.

Этот шаблон программирования (паттерн) называется "текучий интерфейс" (fluent interface) и его назначение сделать код более компактным и читабельным.

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

Что бы раз и навсегда закрыть вопрос по определению четного или нечетного числа в PHP. Для этого используем деление по модулю, т.е., вычисление остатка. Суть в том, что при делении четного числа на четное остаток будет 0, иначе !=0.

Как посчитать суммы размеров всех строковых элементов масива на PHP? Имхо, оптимальный вариант  - callback функция array_map().

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

Ситуация описана типичная, ответов в интернете море, будет еще один.

Бывают такие ситуации, когда необходимо понять, какая функция или метод класса вызывает текущую функцию - метод.

Например, есть функция girl(), которая вызывает метод erection(). Вызываемый метод работает с какими-то данными. Вызывающих методов много (wife(), girl(), lover()), работая с некоторыми данными, нужно понимать, какой именно метод вызывает erection().

Для этого вводим в метод erection() такую стандартную функцию как debug_backtrace().

Примечание: эта статья выражает всю мою боль и мучения, связанные с изучением процесса получения результата.

Все совпадения с реальными личностями или историческими событиями случайны. Я не испытываю ненависти к Google.

 

Gmail API это достаточно перспективный способ получения и управления содержимым почтового ящика Google для автоматизации различных процессов.

На примере этой статьи хотелось бы получать письма из почтового ящика по определенным критериям и присвоить определенную метку.

Всегда, конечно, есть способ получения через IMAP, но сейчас нужно еще и присваивать письмам определенные ярлыки и в перспективе производить всякие прочие манипуляции (отправка, удаление, перемещение внутри папок).

Для начала, нужно разобраться как работать с этим API. В этом нам будет помогать Will Smith и приложение для получения снимков экрана xscreenshot.