Как стать автором
Обновить
0
0

Веб-разработчик

Отправить сообщение

Как мы разрабатываем персональные товарные рекомендации

Время на прочтение 8 мин
Количество просмотров 7.5K

image
Наши клиенты-магазины хотят делать крутой маркетинг. Чтобы люди больше покупали, они регулярно шлют им email-рассылки. И каждый раз думают: “Что же написать в письме?”.




Можно писать просто: “Покупайте у нас почаще!”, но это не очень-то работает. Идея получше — вставлять в письмо рекламу товаров. Желательно, рекламу товаров, которые заинтересуют покупателей.


Дальше расскажу о том, как мы с нуля делали настоящие персональные рекомендации.

Читать дальше →
Всего голосов 13: ↑9 и ↓4 +5
Комментарии 13

Шейдеры 3D-игр для начинающих

Время на прочтение 19 мин
Количество просмотров 24K
image

Хотите научиться добавлять в свою 3D-игру текстуры, освещение, тени, карты нормалей, светящиеся объекты, ambient occlusion и другие эффекты? Отлично! В этой статье представлен набор техник затенения, способных поднять уровень графики вашей игры на новые высоты. Я объясняю каждую технику таким образом, чтобы вы могли применить/портировать эту информацию в любом стеке инструментов, будь то Godot, Unity или что-то иное.

В качестве «клея» между шейдерами я решил использовать великолепный игровой движок Panda3D и OpenGL Shading Language (GLSL). Если вы пользуетесь таким же стеком, то получите дополнительное преимущество — узнаете, как использовать техники затенения конкретно в Panda3D и OpenGL.
Читать дальше →
Всего голосов 46: ↑46 и ↓0 +46
Комментарии 6

В этой статье слишком много воды

Время на прочтение 9 мин
Количество просмотров 40K
«Мы начинаем разработку новой игры, и нам нужна классная вода. Такую сможешь?»


, — cпросили меня. «Да не вопрос! Конечно, смогу», — ответил я, но голос предательски задрожал. «А, еще и на Unity?», — и мне стало понятно, что впереди очень много работы.
Читать дальше →
Всего голосов 175: ↑174 и ↓1 +173
Комментарии 36

Laracon 2017 — краткий обзор и куча полезных ссылок

Время на прочтение 11 мин
Количество просмотров 9.4K

laracon-2017


Я побывал первый раз на конференции Laracon лично и, должен сказать, я получил там весьма приятный опыт — возможно, даже более приятный, чем я ожидал. Конференция была хорошо организована и доклады были разнообразными, информативными и действенными. Первый день был посвящен техническим вопросам и в основном вращался вокруг Laravel. Второй день был разбавлен выступлениями на самые разные темы, довольно занимательными и заставляющими задуматься.

Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 6

Начни изучать Elixir прямо сейчас! Перевод всей серии статей готов

Время на прочтение 15 мин
Количество просмотров 15K


От переводчика: «Elixir и Phoenix — прекрасный пример того, куда движется современная веб-разработка. Уже сейчас эти инструменты предоставляют качественный доступ к технологиям реального времени для веб-приложений. Сайты с повышенной интерактивностью, многопользовательские браузерные игры, микросервисы — те направления, в которых данные технологии сослужат хорошую службу. Далее представлен перевод серии из 11 статей, подробно описывающих аспекты разработки на фреймворке Феникс казалось бы такой тривиальной вещи, как блоговый движок. Но не спешите кукситься, будет действительно интересно, особенно если статьи побудят вас обратить внимание на Эликсир либо стать его последователями.»


В этой части речь больше пойдёт о вёрстке, чем непосредственно об Эликсире, однако статья будет полезна тем, что расскажет о взаимодействии с ассет-пайплайном Phoenix.


Вы можете прямо сейчас открыть первую часть и за несколько вечеров создать работающее приложение на Фениксе и посмотреть на Эликсир в действии. А также познакомиться с вебсокетами, плагами, ченджсетами и другими страшными словами функциональной веб-разработки :)

Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Комментарии 23

«C чем это едят»: что такое блокчейн

Время на прочтение 6 мин
Количество просмотров 40K
Блокчейн — это многогранная, молодая и набирающая популярность технология. Её многогранность в первую очередь обуславливается тем, что она стоит на пересечении сразу нескольких научных дисциплин и сфер деятельности.

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

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

Читать дальше →
Всего голосов 33: ↑24 и ↓9 +15
Комментарии 10

Как мы делали экосистему – единый «язык» дизайна для front end десятков связанных систем

Время на прочтение 10 мин
Количество просмотров 9.7K
В этом посте мы расскажем о том, как учились разговаривать с пользователем на «языке» дизайна UI/UX и пришли к необходимости создания единой экосистемы для разных приложений одного заказчика. А также о том, какие технологии в этом помогли.

Что мы подразумеваем под единой экосистемой? Это комплекс разных IT-решений, веб- и мобильных приложений, объединенных единым «языком», на котором они разговаривают с пользователем. Такой язык есть, например, у всех продуктов Microsoft или у всех устройств Apple. Какое бы приложение одного и того же производителя вы не открыли, оно будет повторять логику своих «сородичей», показывать вам знакомые иконки.
Для компаний, создающих цифровые продукты, единая экосистема – ключевое конкурентное преимущество. Для нецифровых компаний, которые переходят «в цифру», создание аналогичных единых экосистем становится необходимостью, поскольку дает много преимуществ. В первую очередь, конечно, обеспечивает пользователям однородный UX и UI во всех системах, облегчает поддержку и обновление систем, повышает конверсию и удовлетворенность клиентов.
Разработка такой экосистемы стала для нас итогом длинного пути, о котором мы и расскажем.
Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 5

Разбираемся с SOLID: Инверсия зависимостей

Время на прочтение 6 мин
Количество просмотров 152K

Давайте глянем на определение принципа инверсии зависимостей из википедии:


Принцип инверсии зависимостей (англ. dependency inversion principle, DIP) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах. Входит в пятёрку принципов SOLID.

Формулировка:

A. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
B. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Большинство разработчиков, с которыми мне доводилось общаться, понимают только вторую часть определения. Мол "ну а что тут такого, надо завязывать классы не на конкретную реализацию а на интерфейс". И вроде бы верно, но только кому должен принадлежать интерфейс? Да и почему вообще этот принцип так важен? Давайте разбираться.

Читать дальше →
Всего голосов 37: ↑33 и ↓4 +29
Комментарии 21

25 Laravel Tips and Tricks

Время на прочтение 11 мин
Количество просмотров 83K
Было время, достаточно недавно, когда PHP и его сообщество ненавидели. Главная шутка была про то, насколько ужасен PHP.

Да, к сожалению, сообщество и экосистема просто были ниже сообществ других современных языков по уровню. Казалось, что предназначение PHP было прожить большинство времени в форме беспорядочных тем для WordPress.

Но позже, на удивление, вещи начали меняться — и достаточно быстро. Как будто пока ведьма помешивала горшочек, из ниоткуда начали появляться новаторские проекты. Наверно, самый заметный проект был Composer: наиболее полный менеджер зависимостей для PHP (как Bundler для Ruby или NPM для Node.js). В прошлом PHP разработчики были вынуждены совладать с PEAR (что было страшным сном, на самом деле), сейчас, благодаря Composer, они могут просто обновить JSON файл, и немедленно подтянуть все нужные зависимости. Здесь — профайлер, там — фреймворк для тестирования. Это занимает секунды.
Читать дальше →
Всего голосов 47: ↑40 и ↓7 +33
Комментарии 190

Init.js: Зачем и как разрабатывать с Full-Stack JavaScript

Время на прочтение 13 мин
Количество просмотров 31K

История


Итак, у вас и у вашего партнера появилась замечательная бизнес-идея. Верно? Вы постоянно добавляете в уме все новые и новые возможности. Вы регулярно спрашиваете у потенциальных клиентов их мнение, и все они без ума от вашей идеи.

Окей, значит людям это нужно. На этом можно даже заработать денег. И единственная причина, по которой люди до сих пор этим не пользуются: вы не реализовали свою идею. Пока не реализовали.

И наконец, в один прекрасный день вы решили: “Сделаем это!”. И вот вы уже пытаетесь разобраться как реализовать бизнес-логику своего приложения, ту киллер-фичу, которая будет двигать продукт вперед. У вас есть идея как это сделать, и вы знаете, что способны на это. И вот вы говорите: “Готово! Работает!” У вас есть успешный прототип! Осталось только упаковать его в веб приложение.

“Окей, сделаем сайт,” говорите вы.

А только потом вы понимаете, что для этого нужно выбрать язык программирования; нужно выбрать (современную) платформу; нужно выбрать какие-то (современные) фреймворки; нужно настроить (и купить) хранилище, базы данных и хостинг; нужно обеспечить интерфейс для администрирования; нужно обеспечить контроль доступа и систему управления контентом.

Перед вами десятки и десятки архитектурных решений, которые необходимо принять. И вы не хотите ошибиться: требуются технологии, которые позволят вести быструю разработку, поддерживают постоянные итерации, максимальную эффективность, скорость, устойчивость и многое другое. Вы хотите быть бережливым (lean) и гибким (agile). Вы хотите использовать технологии, которые помогут вам быть успешным как в краткосрочной, так и в долгосрочной перспективе. А выбрать их далеко не всегда так просто.

“Я перегружен”, говорите вы и чувствуете себя перегруженным. Энергия уже не та, что была в начале. Вы пытаетесь собраться с мыслями, но работы слишком много. Прототип медленно блекнет и умирает.
Читать дальше →
Всего голосов 34: ↑30 и ↓4 +26
Комментарии 29

PhpStorm — повышаем производительность (клавиатурные сокращения). Часть 1

Время на прочтение 4 мин
Количество просмотров 209K
imagePhpStorm — повышаем производительность (плагины и темы оформления). Часть 2

У всех нас есть любимые IDE или редакторы в которых мы пишем код. Для меня это PhpStorm, и потребовалось некоторое время, чтобы освоить все клавиатурные сокращения и ускорить свой рабочий процесс. В этой статье я поделюсь с вами некоторыми сочетания клавиш и советами, которые возьмут на себя часть рутинной работы, если вы тоже делаете свою работу в этой IDE. Эта статья была частично вдохновлена этим Reddit тредом, и я буду упомянать и демонстрировать некоторые трюки найденные там.

Обратите внимание, что я разрабатываю на Linux в Vagrant, размещенном в Windows, я буду использовать клавишу CTRL вместо CMD. Если вы работаете в OS X, замените CTRL на CMD.

Клавиатурные сокращения и хаки


PhpStorm позволяет настроить себя практически до бесконечности — вы можете заточить этот инструмент под себя так, что постороннему может показаться, что это совсем другая IDE.

(осторожно, много gif изображений)
Давайте посмотрим, чем мы можем воспользоваться
Всего голосов 77: ↑68 и ↓9 +59
Комментарии 58

Обзор бесплатных сервисов для веб-разработки

Время на прочтение 4 мин
Количество просмотров 143K
Пост является личной подборкой полезных и нужных онлайн сервисов, которые позволяют бесплатно (или условно бесплатно) создавать действительно крутые вещи и разворачивать их в Сети. Не претендую на новизну или на полноту, но буду счастлив, если кому пригодится.

Всем нам иногда хочется попробовать новую идею, запилить какой-нибудь сайтик про манулов, но чтоб обязательно на node.js, хайлоад реди, с мемкешем, монго, фейловером и с претензией на мировое господство. У меня для Вас хорошие новости: благодаря щедрости проклятых западных капиталистов всё это можно получить совершенно бесплатно.
Читать дальше →
Всего голосов 157: ↑136 и ↓21 +115
Комментарии 113

Примитивный игровой дизайн. Пошаговая разработка карточной игры

Время на прочтение 9 мин
Количество просмотров 47K


Мотивированный прочтением тематической литературы и нескольких статей на хабре о гейм-дизайне в целом и о том, как наконец-то встать с четверенек и попробовать сделать первые шаги, я решил, что все, что от меня требуется — это сесть и начать работать.
Пусть это будет не ААА проект, подкрепленный миллионными вложениями, а нечто более тривиальное и простое.
Карточная игра. Затягивающая, интересная, не слишком сложная. А там уже посмотрим.

Под катом — вводная, начало процесса и много размышлений на тему.

Заглянуть
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 6

Как реанимировать ваш PHP-проект с помощью Symfony2 компонентов

Время на прочтение 7 мин
Количество просмотров 9.9K
Данный пост является переводом не статьи, как принято, а доклада+презентации, поэтому текст поста достаточно вольный.

Думаю, всем хорошо известно и очевидно, что PHP — один из самых популярных языков программирования, на котором написано множество веб-проектов, начиная с персональных homepage-страниц и заканчивая мастодонтами типа Facebook, Vimeo, WordPress и даже YouPorn.

PHP появился в 1995 году, при этом полноценная поддержка ООП была реализована только в PHP5, который вышел в 2005 году. За это время было написано большое количество кода, как хорошего, так и плохого, а точнее сказать сильно устаревшего и тяжело сопровождаемого.

Многие проекты, как и экосистема PHP в целом, к настоящему моменту стали представлять подобие оживленного городского квартала.

Читать дальше →
Всего голосов 56: ↑47 и ↓9 +38
Комментарии 73

10 самых популярных видео докладов с 404фест 2012

Время на прочтение 4 мин
Количество просмотров 29K
image

Как вы знаете, мы тут в своей Самаре каждый год проводим Фестиваль 404, куда приезжают разные люди и делятся опытом. Мы этот процесс записываем на видео и выкладываем совершенно бесплатно на свой канал youtube. Предлагаем подборку самых популярных видео докладов за прошлый год.
Читать дальше →
Всего голосов 55: ↑47 и ↓8 +39
Комментарии 11

Используете ли вы оператор нестрогого сравнения ("==") в PHP?

Время на прочтение 2 мин
Количество просмотров 37K
Из-за того, что в PHP при сравнении строк оператор "==" пытается сначала преобразовать их в числа [1][2] (даже, если оба операнда — строки), результат порой может оказаться неожиданным:
<?php
var_dump('123' == '       123'); // true
var_dump('1e3' == '1000'); // true
var_dump('+74951112233' == '74951112233'); // true
var_dump('00000020' == '0000000000000000020'); // true
var_dump('0X1D' == '29E0'); // true
var_dump('0xafebac' == '11529132'); // true
var_dump('0xafebac' == '0XAFEBAC'); // true
var_dump('0xeb' == '+235e-0'); // true
var_dump('0.235' == '+.235'); // true
var_dump('0.2e-10' == '2.0E-11'); // true
var_dump('61529519452809720693702583126814' == '61529519452809720000000000000000'); // true в php < 5.4.4

Читать дальше →
Всего голосов 92: ↑53 и ↓39 +14
Комментарии 175

Генераторы в действии

Время на прочтение 8 мин
Количество просмотров 98K

Небольшое вступление


Не так давно я решил для себя, что пора восполнить большой пробел в знаниях и решил прочитать про переходы между версиями PHP, т.к. понимал, что остался где-то между 5.2 и 5.3 и этот пробел необходимо как-то устранить. До этого я читал про namespaces, traits и т.д, но дальше чтения не уходило. И вот тут я заметил генераторы, почитал документацию, одну из статей на хабре на этот счет и после этого возникла мысль — а как раньше без них жили-то?

Данным переводом хочу помочь хотя бы новичкам, поскольку на php.net документация по генераторам на английском и, на мой взгляд, должным образом не раскрывает всю идею и места применения. Текста много, кода чуть меньше, картинок нет. Потребуются общие знания, например, про итераторы. Очевидный код комментировать не буду, а вот сложные для понимания примеры постараюсь объяснить в силу своих знаний.

UPD1: Изменил расплывчатую формулировку, про которую говорили в комментариях.
UPD2: Добавил решение с принудительным break.

И сразу под хабракат
Всего голосов 59: ↑55 и ↓4 +51
Комментарии 25

Обзор смартфона Lenovo P780

Время на прочтение 6 мин
Количество просмотров 238K
image
Логичным продолжением линейки «долгоиграющих» смартфонов стал выход Lenovo P780. Позиционируется данное устройство как развитие предыдущей модели Lenovo P770 с существенными отличиями в аппаратной части
Читать дальше →
Всего голосов 23: ↑18 и ↓5 +13
Комментарии 28

Абсолютное горизонтальное и вертикальное центрирование

Время на прочтение 5 мин
Количество просмотров 310K
Сколько уже было сломано копий о задачу выравнивания элементов на странице. Предлагаю вашему вниманию перевод отличной статьи с решением этой проблемы от Стефана Шоу (Stephen Shaw) для Smashing Magazine — Absolute Horizontal And Vertical Centering In CSS.

Все мы знали о margin: 0 auto; для горизонтального центрирования, но margin: auto; не работало для вертикального. Это можно легко исправить, просто задав высоту и применив следующие стили:

.Absolute-Center {
  margin: auto;
  position: absolute;
  top: 0; left: 0; bottom: 0; right: 0;
}

Я не первый, кто предложил это решение, однако такой подход редко применяется при вертикальном выравнивании. В комментариях к статье How to Center Anything With CSS Simon ссылается на пример jsFiddle, где приводится отличное решение для вертикального центрирования. Вот еще несколько источников на эту тему.

Рассмотрим способ поближе.
Читать дальше →
Всего голосов 112: ↑106 и ↓6 +100
Комментарии 10

Проблема инициализации объектов в ООП приложениях на PHP. Поиск решения при помощи шаблонов Registry, Factory Method, Service Locator и Dependency Injection

Время на прочтение 13 мин
Количество просмотров 49K
Так уж повелось, что программисты закрепляют удачные решения в виде шаблонов проектирования. По шаблонам существует множество литературы. Классикой безусловно считается книга Банды четырех «Design Patterns» by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides" и еще, пожалуй, «Patterns of Enterprise Application Architecture» by Martin Fowler. Лучшее из того, что я читал с примерами на PHP – это «PHP Objects, Patterns and Practice» by Matt Zandstra. Так уж получилось, что вся эта литература достаточно сложна для людей, которые только начали осваивать ООП. Поэтому у меня появилась идея изложить некоторые паттерны, которые я считаю наиболее полезными, в сильно упрощенном виде. Другими словами, эта статья – моя первая попытка интерпретировать шаблоны проектирования в KISS стиле.
Сегодня речь пойдет о том, какие проблемы могут возникнуть с инициализацией объектов в ООП приложении и о том, как можно использовать некоторые популярные шаблоны проектирования для решения этих проблем.
Читать дальше.
Всего голосов 59: ↑53 и ↓6 +47
Комментарии 31
1

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность