Для получения полного доступа
зарегистрируйтесь.

dfatt    259   121 070


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

  • Kazan
  • Stash
  • PHP, C#, JS
  • Зарегистрирован 5 лет назад

Быстрый способ добавить цветовой оверлей на фоновое изображение

.block_business {
    background: linear-gradient(
            rgba(0, 0, 0, 0.7),
            rgba(0, 0, 0, 0.7)
    ),
    url('https://images.unsplash.com/photo-1524758631624-e2822e304c36');
}

Результат:

Если SF3 ставить на Docker, без лишних заморочек с конфигурированием, отдача страницы будет около 30 сек, что очень долго. После долгого чтения гугла, я пробовал вариант с :cached, стало веселее - отдача страницы 2-3 секунды.

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

Вот простое решение задачи:

php:
    ...
    volumes:
    	- ${SYMFONY_APP_PATH}:/var/www/src
    	- ${SYMFONY_APP_PATH}/var/logs:/var/www/src/var/logs
    	- /var/www/src/vendor
    	- /var/www/src/var/cache

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

Intervention Image — библиотека с простым API для работы с изображениям.

Что библиотека умеет:

  1. изменение размера
  2. обрезка
  3. добавление прозрачности
  4. добавление блюра
  5. кеширование изображений
  6. и многое другое

Вы можете использовать Intervention Image двумя способами:

// open an image file
$img = Image::make('public/foo.jpg');

// now you are able to resize the instance
$img->resize(320, 240);

// and insert a watermark for example
$img->insert('public/watermark.png');

// finally we save the image as a new file
$img->save('public/bar.jpg');

Либо, через цепочку вызовов:

$img = Image::make('public/foo.jpg')
    ->resize(320, 240)
    ->insert('public/watermark.png')
    ->save('public/bar.jpg');

Помимо статического вызова, можно создать объект, и работать с ним:

// include composer autoload
require 'vendor/autoload.php';

// import the Intervention Image Manager Class
use Intervention\Image\ImageManager;

// create an image manager instance with favored driver
$manager = new ImageManager(array('driver' => 'imagick'));

// to finally create image instances
$image = $manager->make('public/foo.jpg')->resize(300, 200);

Для разработчиков Laravel, всё работает из коробки.

Ссылки
Репозиторий на Github
Документация

На случай если вы не знали, Ctrl + R ищет команды которые вы вводили ранее. Бывает так, что начало команды одно, и вы не можете посмотреть следующий результат поиска. Например:

ssh root@216.3.118.12
ssh root@52.111.13.175

Решение: нажмите Ctrl + R в режиме поиска, если хотите получить следующий результат.

Эта библиотека проста в использовании, имеет удобный API, небольшой вес, множество локализаций. Далее мы разберём пример её использования.

Продолжение »

К своему стыду обнаружил, что в классе Controller, фреймвока Symfony 3, есть следующие полезные методы. Если вы про это знаете, то листайте дальше, тут ничего нового не будет :)

json

Если нужно отдать Response в JSON, нам достаточно выполнить код:

$data = ['hello' => 'world'];
return $this->json($data);

file

Этот метод понадобиться, когда вам нужно отдать файл для скачивания:

return $this->file('/path/to/file.doc');

Продолжение »

Во время тестирования REST API, вам приходит строка JSON, на вид не читабельная, особенно если вам нужно скинуть этот JSON своему коллеге. Что бы упростить эту задачу, можно воспользоваться jq

Продолжение »

Данная библиотека автоматически приводит код к нужному стандарту — PSR-1, PSR-2. На входе указываем файл или директорию, после этого, код будет отформатирован по указанному стандарту. Также есть возможность настроить форматирование через опции.

Установка

Скачиваем

curl -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.0.0/php-cs-fixer.phar -o php-cs-fixer

Переносим, для доступа к утилите, из любого места

sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

Продолжение »

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

Проблема была в следующем, видов ссылок на видео с ютуба, может быть два (или больше).

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

UPD. Используется версия jestonedev

function youTubeGetId(url) {
    var expression = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be[.]?\/|youtube\.com[.]?\/(?:embed\/|v\/|watch\/?\?(?:\S+=\S*&)*v=))([\w-]{11})\S*$/;
    return url.match(expression) ? RegExp.$1 : undefined;
}

Главной фичей CMS является то, что вам не нужна база данных (данные храняться в файлах), за счёт чего и достигается простота в установке. Для установки CMS, вы можете — либо просто распоковать *.zip-архтив, либо установить через Composer:

composer create-project getgrav/grav ~/webroot/grav

В состав CMS, входят следующие библиотеки:

  • Twig Templating
  • Markdown
  • YAML
  • Parsedown
  • Doctrine Cache
  • Pimple Dependency Injection Container
  • Symfony Event Dispatcher
  • Symfony Console
  • Gregwar Image Library

Простая в использовании библиотека, позволяет строить красивые графики использую <canvas>.

Фичи

— Библиотека содержит 8 типов графиков
— Графики адаптивны — будут выглядеть везде хорошо, как на десктопах, так и на мобильных устройствах
— Можно совмещать разные типы графиков
— Отличная документация
— Простое API

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

Продолжение »

Плюсом данного фреймворка является то, что написав код для бота, он будет работать для множества платформ:

  1. Slack
  2. Telegram
  3. Microsoft Bot Framework
  4. Nexmo
  5. HipChat
  6. Facebook Messenger

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

// Restrict to Slack and Telegram driver
$botman->hears('keyword', function(BotMan $bot) {
    // do something to respond to message
    $bot->reply('You used a keyword!');
})->driver([SlackDriver::DRIVER_NAME, TelegramDriver::DRIVER_NAME]);

Как написали в комментариях к моему сниппету, 58kb довольно много для инпута от которого нужен только поиск.Правда этот вариант требует jQuery, но, нет проблем переписать на Vanila JS.

Покажу сразу результат того, что у нас получится:

А теперь, к делу. Для начала добавим общий скелет:

Продолжение »

На сайте Designmodo предоставлена большая подборка плагинов, без дополнительных библиотек типа jQuery.

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

Plyr (Github)
Красивый плеер для воспроизведения видео с таких сервисов как Youtube, Vimeo

Продолжение »

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

Для того чтобы отменить коммит, достаточно в консоли ввести команду:

git reset --soft HEAD~

0X0pVCN.png

Если вам нужно, чтобы открытый popover в Boostrap 3 по наведению не скрывался, пока курсор на самом popover, вам поможет следующее решение.

Демо 97f041fdf9247cf838713969b2855d0b.gif

Продолжение »

Если вы используете репозитории, то выбрать записи с некоторыми ID можно через метод findBy

$em = $this->get('doctrine')->getManager('default');

$statusIds = [120, 130, 230, 240];
$shippings = $em->getRepository('AppBundle:Item')->findBy(['status'=> $statusIds]);

Задача была следующей, сделать красивую полосу прокрутки для кода сниппетов. В MacOS, полоса прокрутки очень минималистична и красиво вписывается в наш интерфейс. Но, в Windows и других OS, полоса прокрутки выглядет везде по разному. Поэтому было решено заменить системный скроллбар на свой.

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

89f82efb23d7643ffb367b9adf801611.gif

Продолжение »

В одном проекте, мне понадобилось сделать простую проверку доступа к страница в CI.

В док-комментарии я устанавливал значение @auth_required, мне нужно было узнать, установленно ли оно у класса или нет.

Пример чуть шире, извлекаем текст комментария из класса и метода.

/**
 * Class Test
 * @val1
 * @val2
 */
class Test
{
    /**
     * Method test()
     * @val1
     * @val2
     */
    public function test()
    {
    }
}

$reflectionClass = new ReflectionClass('Test');
$reflectionMethod = new ReflectionMethod('Test', 'test');

var_dump($reflectionClass->getDocComment());
var_dump($reflectionMethod->getDocComment());

Сразу покажу демо:

l41m5gGukcDpZa2MU.gif

В качестве фреймворка используем Yii2, для работы с веб-сокетами Ratchet.

Добавляем через composer Ratchet:

composer require cboden/ratchet

Затем, создаём контроллер в папке commands для запуска сервера:

Продолжение »