Value Object'ы у Symfony формах
Symfony разработчики часто задаются вопросом, как заставить Symfony формы работать с value-object'ами. Давайте, для примера, представим тип Money как объект с двумя полями $amount и $currency:
class Money
{
private $amount;
private $currency;
public function __construct($amount, $currency)
{
$this->amount = $amount;
$this->currency = $currency;
}
public function getAmount() // ...
public function getCurrency() // ...
}
Можете ли вы создать form type для этого класса без методов setAmount() и setCurrency()? В этой заметке вы научитесь этому.
Создание респонсивных таблиц с помощью css
В этой заметке мы рассмотрим, как можно использовать таблицы в респонсивных шаблонах и как мы можем сделать удобным использование таблиц на мобильных устройствах.
При создании респонсивных таблиц вы столкнетесь с множеством проблем:
- Слишком много колонок
- Слова вылазят за границы ячеек
- Ширина колонки становится слишком малой
- Если у вас много строк, при скроле вы не сможете видеть заголовки колонок
В этой заметке, надеюсь, мы исправим все эти проблемы путем использования респонсивного css-решения.
Junior vs Senior разработчик: в чем, в конце концов, разница между ними?
Кажется, что есть резкий контраст между этими уровнями. Но на самом деле, какое различие между Junior и Senior разработчиком?
Что еще более важно, как с обеих сторон можно оценить рост разработчика в более высшую лигу? Чтобы разобраться в этом вопросе, продолжайте читать статью.
Этот вопрос может показаться глупым и очевидным, но какой же ответ на самом деле?
Готовимся к HTTP/2: Руководство для веб-дизайнеров и разработчиков
Протокол передачи гипертекста (HTTP, англ. HyperText Transfer Protocol) - протокол, который управляет соединением между вашим сервером и браузерами клиентов. Впервые после 1999 года, появилась новая версия этого протокола, и это обещает значительно ускорить каждый сайт.
В этой статье мы опишем основы HTTP/2 для дизайнеров и разработчиков. Я объясню некоторые ключевые особенности нового протокола, рассмотрю совместимость (серверную и браузерную) и остановлюсь подробнее на вещах, над которыми нужно задуматься, поскольку все чаще видим внедрение HTTP/2. Прочитав эту статью, вы получите обзор того, что нужно изменить в вашей работе в кратко- и долгосрочной перспективе. Также я включу множество дополнительных ресурсов, на тот случай, если вы захотите углубится в вопрос. Моя цель - предоставить достаточное количество знаний, которое поможет принят правильное решение о переходе на HTTP/2.
Новое в PHP 7: оператор объединения со значением NULL
Не слишком броское имя для оператора, но раз уж php 7 принес нам удобный оператор объединения со значением NULL (англ. null coalesce operator), покажем пример.
У php 5 уже есть тернарный оператор, который проверяет выражение и потом возвращает второй элемент, если оно истинно и третий если ложно:
echo $count ? $count : 10; // выводит 10
Использование php-генераторов
Несмотря на то, что php-генераторы доступны с php 5.5.0, они все еще почти не используются. Более того, большинство разработчиков, которых я знаю, понимают, как работают генераторы, но не видят, когда они могут быть полезны в реальной жизни.
Да, генераторы определенно смотрятся хорошо, но знаете... Я не понимаю, где они могут быть полезными для меня, разве что для расчета последовательности Фибоначчи.
И они не ошибаются, ведь даже примеры в php-документации слишком упрощены. Они только объясняют, как эффективно реализовать range или итерировать по строкам файла.
Но даже с этих простых пример мы можем понять ключевые преимущества использования генераторов: они просто упрощают итераторы.
Поворот изображения на html5 canvas
Возможно, вы уже знаете что есть удобный метод canvas context drawImage:
context.drawImage(image, x, y);
где image - это DOM изображение (или другой canvas), x, y - левый верхний край изображения. Также там есть несколько опциональных параметров, но мы не будем их сегодня использовать.