Введение Данное руководство раскрывает лучшие практики разработки http+json api. Основы Обязательное использование TLS Требуйте подключение с использованием TLS, без исключений. Не вижу смысла даже объяснять, почему полезно TLS и чем опасен отказ от его использования. Просто возьмите за привычку использовать TLS всегда, когда это возможно. В идеале, просто отклоняйте любые не TLS запросы, не отвечая на запросы на порт 80,… Читать далее »
По-умолчанию, все системные диалоги confirm используют стандартный javascript alert(). Однако это немного не вписывается в концепцию сайта на Twitter Bootstrap. Библиотека Bootbox содержит как стандартные методы alert, prompt и confirm, так и метод dialog, создающий модальное диалоговое окно. Метод confirm описан в файле app/vendor/yiisoft/yii2/assets/yii.js: [js]/** * Displays a confirmation dialog. * The default implementation simply displays a js confirmation dialog. * You… Читать далее »
Зачастую перед разработчиками встает задача реализации пакетного ввода данных для пользователя. Нужно предоставить пользователю возможность создания нескольких сущностей одной модели и сохранения их разом. Чаще всего для реализации подобной задачи используется html-таблица, отсюда и название: табличный ввод. Вариант 1 Использовать готовые решения, например TabularForm widget. Вариант 2 Запилить собственную реализацию табличного ввода в Yii 2.0.
Должно быть, это одна из самых часто возникающих, и в тоже время, очень простая задача для реализации в Yii 2.0. Зачастую мы сохраняем дату/время в базе данных в одном формате, а вывести на экран ее нужно в другом формате. Многие уходят огородами и изобретают свои велосипеды. Ниже представлены несколько простых советов, которые помогут в освоении работы с данными в формате… Читать далее »
В фреймворке Yii 2.0 встроена поддержка jquery плагина pjax, объединяющего pushState и ajax технологии. Подробнее на гитхабе разработчика. Для примера сделаем возможность добавления новой Заметки в списке заметок без перезагрузки страницы.
Одной из замечательных особенностей Yii 2.0 является встроенная поддержка Bootstrap 3.0 от Twitter. Для вывода компонентов бутстрапа в шаблонах приложения можно использовать виджеты. Виджеты в Yii2 — небольшие блоки кода, которые можно легко многократно использовать для форматированного вывода данных. Как и большинство объектов в Yii 2.0, настройки виджету можно передать в виде массива параметров. Вместо немного монструозного $param = array(‘key1′ =>’value1’,… Читать далее »
Одно из основных понятий в фреймворке Yii 2.0 — приложение. В контексте Yii2, приложение — объект, который определяет структуру и и жизненный цикл запросов на веб-сайте. Приложение, так же, может быть и консольным, но мы будем рассматривать веб-приложение. Каждый запрос к Yii-приложению осуществляется через входной скрипт, который настраивает приложение: $application = new yii\web\Application($config); и запускает его: $application->run();
Один из самых часто встречающихся вопросов по Yii 2.0 — реализация управления доступом на основе ролей. Поддержка RBAC встроена в Yii2, но она может быть сложновата для реализации начинающими разработчиками, впервые столкнувшимися с этим вопросом при знакомстве с Yii 2.0. Часто бывает достаточно всего двух ролей: Пользователь и Администратор. Эта реализация поможет понять как работает механизм RBAC в Yii2 и… Читать далее »
В данной статье мы установим Yii 2.0, настроим локальную среду для разработки и создадим первое простое приложение из встроенного шаблона basic. Релиз Yii 2.0, новой версии замечательного фреймворка, состоялся 12 октября 2014 года. Установка Yii 2.0 Подробную информацию по установке фреймворка можно найти в соответствующем разделе Документации по Yii 2.0. Там же можно найти и описание классов и расширений. Русская… Читать далее »
Недавно появилась необходимость собирать скриншоты с нескольких управляемых PTZ купольных IP камер RVi-IPC52DN20. Стандарт Onvif подразумевает взаимодействие с устройством через SOAP интерфейс. Получаем информацию об устройстве Согласно официальной спецификации, на запрос GetDeviceInformation: [xml]<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <GetDeviceInformation xmlns="http://www.onvif.org/ver10/device/wsdl"/> </s:Body> </s:Envelope>[/xml]
Несколько раз приходилось сталкиваться с серверами, использующими жесткие диски объемом 2Тб. На одном из них нужно было оставить 100Гб под нужны операционной системы и другого программного обеспечения, а все остальное место предназначено для хранения данных. Диск был разбит с использованием LVM (Linux Volume Manager) /dev/sda на весь диск. Использование fdisk для создания дополнительных разделов было невозможно. Создадим новый логический том… Читать далее »
Столкнулся со следующей проблемой, иногда curl возвращает ошибку «406 Not Acceptable» answer: # curl http://domain.com/curl.php <html><head> <title>406 Not Acceptable</title> </head><body> <h1>Not Acceptable</h1> <p>An appropriate representation of the requested resource /curl.php could not be found on this server.</p> <p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p> </body></html> Способ решения проблемы найден достаточно… Читать далее »
Недавно, в очередной раз, понадобилось сделать снимок работающей базы данных MySQL и развернуть его в другом месте. Этот метод сохраняет ВСЕ базы данных в один файл, который может быть импортирован на другом сервере. Для этого понадобится учетная запись root MySQL сервера. Экспортируем: # mysqldump -u root -p $PASS —all-databases > MyDUMP.sql Импортируем:
Столкнулся с проблемой, пользователь не может переслать письмо на адреса root@somehost и postmaster@somehost в Plesk. Я, так же, пробовал сделать это вручную, через командную строку. Меня привлекла следующая запись об ошибке в логах qmail: Uh-oh:_first_line_of_.qmail_file_is_blank.
Ежедневно тысячи «скрипт-киддисов» бороздят просторы интернетов при помощи специальных сканеров, анализирующих версии серверного программного обеспечения на предмет наличия уязвимостей, упрощающих удаленный взлом. Например версия устаревшего Apache может выдать уязвимость, через которую злоумышленник сможет загрузить шелл и скомпрометировать безопасность всего сервера. Список сайтов со старыми, уязвимыми версиями скриптов, cms, форумных движков можно найти в любой поисковой системе.
Рассмотрим общий алгоритм добавления нового диска в систему CentOS или RedHat. Убедимся, что диск отформатирован. Первый, второй и третий диски будут, соответственно, /dev/sda, /dev/sdb и /dev/sdc. Проверяем командой fdisk -l: [13:23:12] [root@localhost ~]# fdisk -l Disk /dev/sda: 25.7 GB, 24741258411 bytes 255 heads, 63 sectors/track, 3471 cylinders Units = cylinders of 12254 * 512 = 6274048 bytes Device Boot Start… Читать далее »
Проблема со слишком большим количеством подключений к MySQL возникает обычно по двум причинам: Все логично — очень большое количество посетителей и, как следствие, большая нагрузка на сервер. Встречается не так часто, но и не редко — большое количество подключений MySQL, при небольшом количестве посетителей. Не оптимизированные скрипты, работающие с субд, в том числе и не закрывающие подключения. Первый способ решения… Читать далее »
Сегодня вышла в свет стабильная версия php-фреймворка yii 2.0 и я не могу не написать об этом знаменательном событии, которого многие ожидали с нетерпением. Официальную информацию можно узнать здесь. Чем больше я узнаю yii2, тем больше он мне нравится. Начиная с альфа версии, я приступил к его изучению, тогда документация была совсем еще сырая. И несмотря на это, я смог… Читать далее »
Я часто встречаю в сети вопросы пользователей wordpress и других cms вроде этого: При попытке загрузить файл, сервер выдает ошибку: Не удалось загрузить файл image.jpg. Невозможно создать директорию wp-content/uploads/2014/09. Проверьте доступность данной директории на запись! Обычно каталог «uploads» должен иметь разрешения 777 или принадлежать пользователю, под которым работает веб-сервер/php, но в зависимости от используемых инструментов разработчика (Webmin/cPanel/Pleask и других), права… Читать далее »
Данная таблица позволяет легко понять и запомнить механизм разграничения прав доступа в linux: User (пользователь) Group (группа) Other (все остальные) Read 4 4 4 Write 2 2 2 Execute 1 1 1 U G O X X X И, на последок, пример расшифровки некоторых значений chmod: 777 rwxrwxrwx 755 rwxr-xr-x 750 rwxr-x— 700 rwx—— 644 rw-r—r—