Программирование [страница: 1.4]
- /**
* @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.
- /**
* @author: Revenger
* Date: 2021-05-14
*/

В процессе работы над своим первым проектом в Clion столкнулся с одним неудобством при сборке проекта. Программа после компиляции не запускалась по клику, выводилось сообщение "Для файлов типа 'Разделяемая библиотека' не установлено ни одного...", при этом, через командную строку приложение запускалось.
То есть, при компиляции тип файла устанавливался как "shared library", т.е., "разделяемая библиотека" и что-то с этим нужно делать.
- /**
* @author: Revenger
* Date: 2021-04-09
*/

После многих лет программирования на РНР захотелось попробовать силы в принципиально другом направлении - в десктопной разработке на C++. Здесь сразу пропускаю вопросы типа "почему (не Python, Java, Go, etc)", просто, захотелось.
Это мой первый учебный проект, но, возможно, кому-то также будет полезно для изучения. Аналогов этой программы, если что, десятки и сотни, наверное и намного более функциональные. Но, суть не в этом.
Кто-то бухает, кто-то курит, а мне, вот интересно попробовать изучить другой, непохожий язык программирования. Не только, конечно, это, есть и другие интересы, но они не подходят по тематике этой статьи.
Для изучения чего-то желательно не просто сферический проект в вакууме, а нечто более или менее полезное в работе.
Так как я часто разрабатываю различные API, решил сделать клиента для отправки POST запросов. Для начала достаточно, тем более что это первый опыт разработки на C++.
Дополнительно, получу минимальный опыт в разработке интерфейсов.
Да, я написал еще один велосипед (:
- /**
* @author: Revenger
* Date: 2021-02-04
*/

Решил написать простой пример тестового приложения на GTK3 и C++. Конечно, это не какое-то новшество, в сети такого навалом, но рабочих примеров с гулькин ... хм, нос.
Будет пример создания простого окна с текстовым вводом и кнопкой.
- /**
* @author: Revenger
* Date: 2021-02-03
*/

JavaScript функция, принимающая на вход параметр адресной строки (query string) и меняюща его на указанный.
- /**
* @author: Revenger
* Date: 2020-12-17
*/

Чтобы получить программу, которая не завершается после выполнения, а возвращается в некоторое начальное состояние и ждет команды от пользователя, нужно сделать цикл и выбор значения вводимой перемененой.
- /**
* @author: Revenger
* Date: 2020-12-15
*/

Есть стандартный виджет форм, через который реализована загрузка файла и стандартная проблема с двойной отправкой.
- /**
* @author: Revenger
* Date: 2020-12-10
*/

- /**
* @author: Revenger
* Date: 2020-09-16
*/

Base64 - это способ закодировать некие данные при помощи 64-х символов (a-zA-Z0-9) ASCII и дополнительных символов.
Сложность определения состоит в том, что закодированная строка для программы ничем не отличается от любой другой строки. Можно, конечно, пытаться искать по отсутствию пробелов (не сработает для одиночных слов), по наличию кириллицы (не сработает для некириллических строк) или по наличию спецсимволов (актуально только для HTML).
Вместо этого можно использовать вышеперечисленные методы вместе как дополнительный инструмент определения.
- /**
* @author: Revenger
* Date: 2020-07-22
*/

Самый простой способ убрать все пробелы - это комбинация str_replace и trim. Еще одна шпаргалка.
- /**
* @author: Revenger
* Date: 2020-06-25
*/

Понадобилось мне заполнять на основе ассоциативного массива выпадающий список <select><option></option></select> используя jQuery. Каких-то готовых решений нет, каждый пишет свой велосипед. Вот я тоже напишу свой, но с бантиками.
- /**
* @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 и не писать свой велосипед.