Pull to refresh
0
0

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

Send message

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

Reading time 8 min
Views 7.5K

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




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


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

Читать дальше →
Total votes 13: ↑9 and ↓4 +5
Comments 13

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

Reading time 19 min
Views 24K
image

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

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

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

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


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

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

Reading time 11 min
Views 9.4K

laracon-2017


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

Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 6

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

Reading time 15 min
Views 15K


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


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


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

Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 23

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

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

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

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

Читать дальше →
Total votes 33: ↑24 and ↓9 +15
Comments 10

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

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

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

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

Reading time 6 min
Views 152K

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


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

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

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

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

Читать дальше →
Total votes 37: ↑33 and ↓4 +29
Comments 21

25 Laravel Tips and Tricks

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

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

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

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

Reading time 13 min
Views 31K

История


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

Reading time 9 min
Views 47K


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

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

Заглянуть
Total votes 30: ↑30 and ↓0 +30
Comments 6

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

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

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

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

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

Читать дальше →
Total votes 56: ↑47 and ↓9 +38
Comments 73

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

Reading time 4 min
Views 29K
image

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

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

Reading time 2 min
Views 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

Читать дальше →
Total votes 92: ↑53 and ↓39 +14
Comments 175

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

Reading time 8 min
Views 98K

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


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

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

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

И сразу под хабракат
Total votes 59: ↑55 and ↓4 +51
Comments 25

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

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

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

Reading time 5 min
Views 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, где приводится отличное решение для вертикального центрирования. Вот еще несколько источников на эту тему.

Рассмотрим способ поближе.
Читать дальше →
Total votes 112: ↑106 and ↓6 +100
Comments 10

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

Reading time 13 min
Views 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 стиле.
Сегодня речь пойдет о том, какие проблемы могут возникнуть с инициализацией объектов в ООП приложении и о том, как можно использовать некоторые популярные шаблоны проектирования для решения этих проблем.
Читать дальше.
Total votes 59: ↑53 and ↓6 +47
Comments 31
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity