Программирование [страница: 2.2]
- /**
* @author: Revenger
* Date: 2020-05-21
*/

Как связать две таблиц через ActiveRecord Yii2, используя промежуточную таблицу.
- /**
* @author: Revenger
* Date: 2020-04-22
*/

В связи с переходом на https возникла проблема при получении файлов при помощи функции file_get_contents, а именно,file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:↵error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed.
- /**
* @author: Revenger
* Date: 2020-02-14
*/

Такое вот решение нашлось в процессе создания формы на базе виджета ActiveForm и сохранения без перезагрузки:
1. используем валидацию на клиенте.
2. ловим событие beforeSubmit и отправляем Ajax-запрос на обработчик.
- /**
* @author: Revenger
* Date: 2020-02-10
*/

При использовании фреймов частая проблема - это неполное отображение содержимого вследствие его динамичности на различных разрешениях. Например, на широкоформатном мониторе условный фрейм отображает все содержимое, а на маленьком мониторе часть содержимого может скрываться нижней границей фрейма из-за его (содержимого) адааптивности. Если сделать фрейм зависимым от высоты содержимого, то такой проблемы не будет.
- /**
* @author: Revenger
* Date: 2020-01-15
*/

Простое и понятное объяснение как использовать абстрактные классы и интерфейсы, в чем их отличие.
- /**
* @author: Revenger
* Date: 2019-12-11
*/

Недавно я писал как можно использовать GridView для отображения данных из одной таблицы, а сегодня задача немного усложняется - нужно фильтровать данные из таблицы по одному из полей. Делать буду максимально просто для общего понимания.
- /**
* @author: Revenger
* Date: 2019-11-20
*/

Пример работы с виджетом GridView. Хороший инструмент для вывода данных в табличной форме. В этом примере я разберу как построить интерфейс для отображения данных в виде таблицы материалов с детальным просмотром каждого из материалов при помощи GridView Yii2.
- /**
* @author: Revenger
* Date: 2019-11-06
*/

Довольно часто встречающееся действие при разработке интерфейсов - нужно скрыть какую-нибудь выпадашку по клику извне. Для примера, есть некий some-dive который, допустим, является каким-то элементом выбора и его надо скрыть как только он перестает быть нужным, например, кликнув где-то в другом месте.
- /**
* @author: Revenger
* Date: 2019-10-02
*/

Нужно выбрать некие данные из таблицы, сгруппировав их по году и месяцу. Пусть это будет количество продаж фирмы "Рога и копыта" с группировкой по месяцам и годам.
- /**
* @author: Revenger
* Date: 2019-10-01
*/

Если у вас есть некая html-форма и вам необходимо валидировать в ней поля перед отправкой, самый простой способ - использовать jQuery Validate и не писать свой велосипед.
- /**
* @author: Revenger
* Date: 2019-09-04
*/

Суть проблемы: у меня есть две таблицы, в одной некоторые записи, а в другой таблице есть поля, содержащие ID записей из первой таблицы. Нужно посчитать во второй таблице сколько записей соответствует полям из первой таблицы.
Я постарался представить это на примере школы, где есть классы (первая таблица), в которых находятся ученики (вторая таблица) и нужно посчитать сколько учеников в каждом из классов.
- /**
* @author: Revenger
* Date: 2019-08-20
*/

Выходной день был немного подпорчен пришедшим в корпоративный чат сообщением о непонятной ошибке "Malformed UTF-8 characters, possibly incorrectly encoded". То есть, не то чтобы сама ошибка была непонятной, скорее причина ее происхождения.
- /**
* @author: Revenger
* Date: 2019-08-09
*/

- /**
* @author: Revenger
* Date: 2019-07-17
*/

Как сравнить две одинаковые по структуре но различающиеся по содержимому таблицы.
- /**
* @author: Revenger
* Date: 2019-05-14
*/

Есть ассоциативный массив с условно неизвестными ключами и нужно получить первый элемент этого массива.
- /**
* @author: Revenger
* Date: 2019-04-04
*/

Подключиться к MSSQL через ODBC можно с настройкой DSN или с использованием параметров подключения а также через PDO. Будут примеры всех (или почти всех) возможных вариантов подключения.
- /**
* @author: Revenger
* Date: 2019-04-03
*/

При работе с Sybase есть несколько малоизвестных нюансов.
- /**
* @author: Revenger
* Date: 2019-03-28
*/

Так чтобы окончательно закрыть все вопросы касательно функция include и require на примерах покажу разницу в поведении этих функций.
- /**
* @author: Revenger
* Date: 2019-02-27
*/

Часто встречающаяся задача которая решается при помощи usort и пользовательской функции. Но немного интереснее становится когда нужно делать это при помощи метода класса.
- /**
* @author: Revenger
* Date: 2019-02-15
*/

Поле ввода в виде тегов, которые можно добавлять и удалять. Нет смысла подробно это описывать, кому нужно - поймет.
Хотя в сети миллионы подобных примеров, мой прост и он работает=)
- /**
* @author: Revenger
* Date: 2019-01-16
*/

Три способа обойти дочерние элементы на jQuery.
Есть несколько способов это сделать, я напишу три из них.
- /**
* @author: Revenger
* Date: 2018-12-27
*/

Шпаргалка по функциям фильтрации текста, в частности, при приеме данных для подготовки SQL-запроса но и для других целей.
- /**
* @author: Revenger
* Date: 2018-12-04
*/

Достаточно простой пример регулярного выражения, показано его устройство с пояснениями.
- /**
* @author: Revenger
* Date: 2018-10-26
*/

Небольшой скрипт на jQuery, показывающий сколько еще слов можно добавить в текстовое поле.
- /**
* @author: Revenger
* Date: 2018-10-26
*/

Простая функция на PHP для валидации разрешенных IP адресов (или запрещенных, кому как удобнее).
- /**
* @author: Revenger
* Date: 2018-10-17
*/

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

Тема, конечно, не новая, но напомнить полезно.
В Yii2 есть свой механизм конструирования SQL запросов, поэтому, стоит использовать только его и не допускать "чистых" запросов. Лучше использовать Active Record или, если не хочется городить модель, использовать CreateCommand.
- /**
* @author: Revenger
* Date: 2018-09-29
*/

- /**
* @author: Revenger
* Date: 2018-08-19
*/

При использовании ssh2_scp_send на сервер приходят обрезанные в конце файлы. Это хорошо заметно на примере текстовых и картинок (просто другие файлы могут не открыться вообще). Проблема заключается в том, что вы не закрываете сеанс SSH. Таким образом, внутренние буферы не очищаются, и файлы полностью не записываются на диск.
- /**
* @author: Revenger
* Date: 2018-08-04
*/

Так уж вышло, что верся сайта для разработчика наодтся за прокси-сервером. Поскольку сайт на Вордпресе, ему периодически нужно лезть в Интернет за обновлениями, а без прямого доступа это невозможно.
Но не все так плохо, Вордпресс можно научить работать через прокси.
- /**
* @author: Revenger
* Date: 2018-07-21
*/

Пример скрипта для скачивания больших файлов с гугл диска. Особенностью скачивания больших файлов является наличие дополнительного подтверждения для скачивания, гугл предупреждает что файл большой уточняет, точно ли его нужно скачать.
- /**
* @author: Revenger
* Date: 2018-07-16
*/

Несколько дней назад перестала работать отправка почты PHPMailer + Gmail. Вероятно, закрутили какие-то гайки, так как до этого все работало, но это не точно, может быть, провайдер приложил руку.
В логе были ошибки ssl3_get_server_certificate:certificate verify failed.
- /**
* @author: Revenger
* Date: 2018-06-14
*/

Абсолютно одинаковые файлы вели себя по-разному а именно, один запускался а другой нет и в логах попадались ошибки: "end of script output before headers". Не помогала даже установка прав 777.
- /**
* @author: Revenger
* Date: 2018-05-10
*/

Нажимая на воспроизведение анимированого изображения на сайте (фб, твиттер, вк т.д.) в консоли браузера можно увидеть что запускается воспроизведение видеофайла.
- /**
* @author: Revenger
* Date: 2018-04-10
*/

Я думаю, каждый программист так или иначе сталкивается с ошибками наподобие "Fatal error: Allowed memory size of 402653184 bytes exhausted (tried to allocate 1126637679 bytes) in /var/www/html/puper-puper-script.php on line 256". Можно, конечно увеличивать количество доступной памяти для PHP, но это нельзя делать бесконечно. Но можно и попытаться разобраться на что расходуется память.
- /**
* @author: Revenger
* Date: 2018-04-05
*/

JSON - результат работы функции json_encode(). Под катом будет описан метод проверки строки, является ли она JSON или нет.
- /**
* @author: Revenger
* Date: 2018-04-03
*/

Flexbox можно назвать удачной попыткой решения огромного количества проблем при верстке, таких, например, как выравнивание блоков по вертикали. Любой верстальщик знает несколько путей выровнять что-либо по вертикали или сделать 3-х колоночный макет с резиновой средней колонкой. Но все эти способы довольно странные, похожи на хак костыли, подходят не во всех случаях, сложны для восприятия и не работают при несоблюдении определенных магических условий, которые сложились исторически и вообще, это не проще обряда вызова Сатаны.
- /**
* @author: Revenger
* Date: 2018-03-31
*/

В некоторых случаях необходимо использовать возможности модели но без использования таблиц. Самый простой пример - валидировать поля формы но без записи в базу.
Нет ничего проще!
- /**
* @author: Revenger
* Date: 2018-03-13
*/

Метод beforeAction позволяет выполнить произвольный код перед выполнением экшена, что следует из его названия. И практический пример использования.
- /**
* @author: Revenger
* Date: 2018-03-12
*/

В Yii2 есть такой функционал как сценарии которые позволяют изменять правила валидации в различных ситуациях.
Например, есть некий набор полей, который будет валидироваться в одном случае и не будет в другом. Сценарии объединяют в понятные группы правила валидации и регистрируя условного Уасю, при редактированиии нельзя будет изменить его логин и при сохранении в базу объекта "Уася" поле "Логин" не будет подвергаться валидации.
- /**
* @author: Revenger
* Date: 2018-02-23
*/

Поиск рекурсивно в многоуровневом массиве пустых значений на PHP. Функция писалась для проверки json по-быстрому.
- /**
* @author: Revenger
* Date: 2018-02-13
*/

Тернарный оператор - это такой урезанный аналог if else для двух значений. Также его удобно использовать если предварительно нужно проверить существование значения. Ниже несколько примеров использования.
- /**
* @author: Revenger
* Date: 2018-02-08
*/

Коротко об использовании сессий в Yii2. Такая шпаргалка которая всегда под руками.
В php работа с сессиями происходит через глобальный массив $_SESSION. В Yii 2 есть компонент yii\web\Session, который доступен через Yii::$app->session.
Это как и обычные сессии в PHP но с некоторыми дополнительными возможностями.
- /**
* @author: Revenger
* Date: 2018-01-04
*/

Инструкция по добавлению мета тегов в заголовок страницы на фреймворке Yii2.
- /**
* @author: Revenger
* Date: 2018-01-03
*/

После того как сделана выборка, например, статей из, например, блога, неплохо было бы разбить вывод на страницы для снижения нагрузки на сайт.
- /**
* @author: Revenger
* Date: 2017-12-16
*/

Yii2 обладает собственным классом загрузки файлов \Yii\we\UploadedFile, который представляет файл в виде объекта для удобства дальнейшей работы.
- /**
* @author: Revenger
* Date: 2017-11-07
*/

Примеры для выборки, обновления, записи и удаления данных в БД при помощи Active Record на Yii2.
- /**
* @author: Revenger
* Date: 2017-11-04
*/

Active Form на Yii2 используется для создания форм, как ни странно. Приведу самый простой пример, достаточный для понимания как создавать формы при помощи этого компонента.
- /**
* @author: Revenger
* Date: 2017-09-02
*/

Как сравнить между собой неизвестное количество массивов и как вывести их общие значения? Таким вопросом я задался недавно.
- /**
* @author: Revenger
* Date: 2017-08-17
*/

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