Как стать автором
Обновить
1
0
Александр @nefone

Junior разработчик

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

Программист VS Инженер

Время на прочтение4 мин
Количество просмотров32K
Привет, Хабр. Я достаточно давно наблюдаю за ИТ рынком, но никогда ничего не писал. Это первая часть моей первой пасты, а посему прошу сильно не хейтить.

Таков путь


В своих статьях я хочу поделиться опытом поиска, обучения и интеграции интернов или джунов в продуктовую команду (не путать с фриланс-командами или типа того).

В первую очередь, нужно понимать, что всё написанное ниже сугубо моё личное, субъективное мнение. Оно основано на многолетних наблюдениях и опыте, в частности, опыте и наблюдениях последних пяти лет. Разумеется, не претендую на исключительность и не утверждаю, что оно является истиной в последней инстанции.

image

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

Рассмотрим два базовых варианта:
Читать дальше →
Всего голосов 19: ↑10 и ↓9+1
Комментарии40

Как мы планировали повысить версию PHP за месяц, а потратили на это год

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров24K

Как и множество больших сервисов, Яндекс Еда основана на микросервисной архитектуре. В общей сложности у нас чуть больше 200 микросервисов. Но есть один сервис, который совсем не микро – легаси-монолит.

Он написан на PHP 7.2 разработчиками разного уровня и в разное время. Мы подумали, что так больше нельзя, и решили навести порядок. В ходе разбирательств выяснилось, что версия языка, на котором всё написано, устарела и уже не поддерживается, что ведёт к рискам безопасности. Делать нечего — мы приняли решение обновиться до 8-й версии.

В этой статье я расскажу, чего стоило нам проапгрейдить монолит, сколько тестов мы сломали и как в этом проекте поучаствовали почти все PHP-разработчики Яндекс Еды. Это интересный и уникальный опыт, которым я хотел бы с вами поделиться. В конце дам несколько советов тем, кто тоже захочет ввязаться в подобную авантюру.

Читать далее
Всего голосов 92: ↑92 и ↓0+92
Комментарии55

Redis на практических примерах

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

Redis — достаточно популярный инструмент, который из коробки поддерживает большое количество различных типов данных и методов работы с ними. Во многих проектах он используется в качестве кэшируещего слоя, но его возможности намного шире. Мы в ManyChat очень любим Redis и активно используем его в нашем продукте для решения огромного количества задач. Про некоторые интересные кейсы использования этой in-memory key-value базы данных я расскажу на примерах. Надеюсь, вам они будут полезны, и вы сможете применить что-то в своих проектах.

Рассмотрим следующие кейсы:

  • Кэширование данных (да, банально и скучно, но это классный инструмент для кэширования и обойти стороной этот кейс, кажется будет не правильно)
  • Работа с очередями на базе redis
  • Организация блокировок (mutex)
  • Делаем систему rate-limit
  • Pubsub — делаем рассылки сообщений на клиенты

Буду работать с сырыми redis командами, чтобы не завязываться на какую-либо конкретную библиотеку, предоставляющую обертку над этими командами. Код буду писать на PHP с использованием ext-redis, но он здесь для наглядности, использовать представленные подходы можно в связке с любым другим языком программирования.


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

Новый PHP, часть 1: Return types

Время на прочтение5 мин
Количество просмотров43K
Каждый мажорный релиз PHP добавляет ряд новых возможностей, некоторые из которых действительно имеют значение. Для PHP 5.3 — это были пространства имен и анонимные функции. Для PHP 5.4 — трейты. Для PHP 5.5 — генераторы. Для 5.6 — списки аргументов переменной длины.

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

Почему поддержка строгой типизации так важна? Она предоставляет программе — компилятору или рантайму и другим разработчикам ценную информацию о том, что вы пытались сделать, без необходимости исполнять код. Это дает три типа преимуществ:
Читать дальше →
Всего голосов 41: ↑36 и ↓5+31
Комментарии38

Шпаргалка по SOLID-принципам с примерами на PHP

Время на прочтение10 мин
Количество просмотров440K
Тема SOLID-принципов и в целом чистоты кода не раз поднималась на Хабре и, возможно, уже порядком изъезженная. Но тем не менее, не так давно мне приходилось проходить собеседования в одну интересную IT-компанию, где меня попросили рассказать о принципах SOLID с примерами и ситуациями, когда я не соблюл эти принципы и к чему это привело. И в тот момент я понял, что на каком-то подсознательном уровне я понимаю эти принципы и даже могут назвать их все, но привести лаконичные и понятные примеры для меня стало проблемой. Поэтому я и решил для себя самого и для сообщества обобщить информацию по SOLID-принципам для ещё лучшего её понимания. Статья должна быть полезной, для людей только знакомящихся с SOLID-принципами, также, как и для людей «съевших собаку» на SOLID-принципах.

Читать дальше →
Всего голосов 110: ↑100 и ↓10+90
Комментарии67

Провинциальный подход к e-commerce

Время на прочтение4 мин
Количество просмотров7.6K
В предыдущей статье “Опыт развития интернет-магазина на бесплатных CMS” я описал техническою сторону интернет-магазина для производителя, который располагается даже не в областном центре, а достаточном удалении от него. Теперь пришло время рассказать, как я оптимизировал и продвигал сайт, и что сделал для увеличения продаж.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии2

Камень в огород дизайнера

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


*Статья предназначена для начинающих дизайнеров интернет-магазинов, а также frontend разработчикам способных как-то повлиять на оных. Если Вы не относитесь к этим категориям, можете не тратить свое время. Я предупредил.
“ Все ошибки которые допустил frontend разработчик ему вернутся при сборке сайта, все недоработки которые поленился прорисовать дизайнер будет додумывать верстальщик ”
Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии20

Интеграция Опенкарт с учетными системами

Время на прочтение4 мин
Количество просмотров6.4K
Опенкарт — один из самых распространенных интернет-магазинов. Во многих случаях возникает задача интеграции со складской учетной системой (чаще всего с 1С).

Интеграция предполагает, как минимум, передачу заказов с ИМ в складскую систему для их обработки и отправки товаров покупателю и обновление количества товаров в ИМ в соответствии с реальным наличием на складе.

Также часто стоит задача засинхронизировать сами товары, их параметры, фотографии и так далее.

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

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

Модуль бесплатный с открытым кодом, расположен на гитхабе.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

Дополнительное поле в карточке товара OpenCart

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

Разрабатывая модуль для OpenCart, возникла необходимость сделать произвольное поле в карточке товара, которое должно быть видно только в админке. Это должно быть поле с логическим значением "маркирован товар или нет".

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии6

События в OpenCart

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

Статья нашего сотрудника из его личного блога.

В статье речь идет об OpenCart версии> =2.3, а именно рассматриваются 2.3 и 3.0

Система событий в OpenCart достаточно интересна, она не является заранее предопределенным списком событий. Внутренность движка устроена таким образом, что почти каждый метод контроллера, который реагирует на определенный роут, загружает какие-то файлы (другие контроллеры, модели, представления, переводы).

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии5

OpenCart popup, модальные окна

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

Статья нашего сотрудника из его личного блога.

Разрабатывая модуль, в админке мне понадобилось использовать модальные окна OpenCart для вывода определенной информации, а так же для показа формы. Мой опыт frontend на тот момент был так себе, однако коллега подсказал что в OpenCart используется jquery (2.1.1), а у этой библиотеки есть поддержка popup окон. Но не все так просто …

Читать далее
Всего голосов 11: ↑8 и ↓3+5
Комментарии3

Как я устанавливал и настраивал OpenCart: краткий мануал

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров16K


Когда передо мной в очередной раз возникла задача собрать небольшой интернет-магазин, я решил провести эксперимент: отойти от привычной связки WordPress + WooCommerce и попробовать специализированный «магазинный» движок, заточенный конкретно под электронную торговлю. Выбор пал на OpenCart. Я устанавливал стандартную английскую версию с последующей руссификацией, хотя рациональнее, наверное, было сразу скачать русскую версию. По результатам эксперимента я написал небольшой мануал для начинающих по развертыванию и базовой настройке интернет-магазина на OpenCart: надеюсь, эта инструкция будет полезна тем, кто сталкивается с этой CMS впервые.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии5

Как я 30 дней автообновление валюты чинил: Opencart 3.0

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

Я новичок, в прошлом году, только начал изучать JavaScript, HTML, CSS и вот я web-администратор в офисе.

Все началось с обычного замечания на утренней планерке — генеральный директор сказал мне: "Видел? На сайте сумма в рублях за доллар соответствует завтрашнему дню, а должна быть еще сегодняшняя!" Все товары, рекламные площадки, клиенты, заказы — все это завязано на валюте, которая обновляется на сутки раньше, чем должна.

И тут я понял что меня ждет очень сложная и почти не выполнимая задача. Ведь я совсем не секу в PHP и с Opencart только месяц как знаком. «Сделаю, конечно!», ответил я, не бить же в грязь лицом.

Как у меня это получилось
Всего голосов 19: ↑14 и ↓5+9
Комментарии23

Готовимся к собеседованию по PHP: Всё, что вы хотели узнать об интерфейсах, совместимости сигнатур и не побоялись узнать

Время на прочтение6 мин
Количество просмотров109K
imageИнтерфейсы, впервые появившись в PHP 5, давно уже заняли прочное место в объектно-ориентированной (или всё-таки правильнее «класс-ориентированной»?) части языка.

Казалось бы — что может быть проще интерфейса? "Как бы класс, но и не класс, нельзя создать экземпляр, скорее контракт для будущих классов, содержит в себе заголовки публичных методов" — не правда ли, именно такими словами вы чаще всего отвечаете на собеседовании на дежурный вопрос о том, что такое интерфейс?

Однако не всё так просто, как может показаться начинающему программисту на PHP. Привычные аналогии не работают, руководство по языку вводит вас в заблуждение, в коде таятся неожиданные «подводные камни»…

Три предыдущие части:

Проверьте себя: всё ли вы знаете об интерфейсах в PHP?
Всего голосов 29: ↑27 и ↓2+25
Комментарии41

Руководство по Docker Compose для начинающих

Время на прочтение9 мин
Количество просмотров785K
Автор статьи, перевод которой мы сегодня публикуем, говорит, что она предназначена для тех разработчиков, которые хотят изучить Docker Compose и идут к тому, чтобы создать своё первое клиент-серверное приложение с использованием Docker. Предполагается, что читатель этого материала знаком с основами Docker. Если это не так — можете взглянуть на эту серию материалов, на эту публикацию, где основы Docker рассмотрены вместе с основами Kubernetes, и на эту статью для начинающих.

image
Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии14

Docker Compose

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров27K

Сегодняшняя статья будет посвящена Docker Compose. При работе с контейнерами Docker рано или поздно наступает момент, когда наше приложение превращается в несколько распределенных сервисов, которым необходимо взаимодействие друг с другом. В таком случае для автоматизации управления компонентами такого распределенного приложения нам потребуется Docker Compose. В качестве примера такого приложения можно привести веб ресурс, взаимодействующий с базой данных или служба, использующая дополнительные компоненты, такие как кэш Redis.

Docker Compose это средство, предоставляющее способ организации управления несколькими контейнерами для совместной работы. Если вы используете модель микросервисов для разработки своего приложения, вы можете использовать Docker Compose для разделения кода приложения на несколько независимо работающих служб, которые взаимодействуют с помощью веб-запросов.

По сути, Docker Compose это тот же Docker, но позволяющий автоматизировать работу с более сложными приложениями. Кроме того, для сценариев с одним контейнером использование Docker Compose обеспечивает независимую от инструмента конфигурацию таким образом, чего не делает отдельный файл Dockerfile. Параметры конфигурации, такие как подключение тома для контейнера, сопоставления портов и переменные среды, могут быть объявлены в файлах docker-compose YML.

Читать далее
Всего голосов 17: ↑12 и ↓5+7
Комментарии6

Как я сделал сайт для риелтора (маклера)

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.4K

Привет Сообщество! Хочу впервые поделиться тут своим опытом разработки сайта и рассказать про сам процесс разработки. Надеюсь, вам будет очень интересно почитать и поделиться своим мнением.

Читать далее
Всего голосов 14: ↑5 и ↓9-4
Комментарии24

Как за 1,5 месяца создать сайт с нуля и подготовить его к нагрузкам ~230 000 пользователей в день? Кейс Финзачета

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

Привет, Хабр. Я — Влад Климанов, бэкенд-разработчик в ДАЛЕЕ. В декабре 2022 года мы запустили сайт Финзачета — самого массового зачета по финансовой грамотности в стране. Собрал в статью историю о том, как мы работали с проектом, основной особенностью которого был сжатый срок: всего 1,5 месяца для реализации сайта, который выдержит поток миллионов пользователей. Бонусом внутри немного статистики о финансовой грамотности

Читать далее
Всего голосов 12: ↑5 и ↓7-2
Комментарии15

Долгоиграющие приложения на PHP

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров19K

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

Меня зовут Александр Пряхин, я TechUnit Lead в Авито. В IT работаю уже 14 лет. Из них 8 лет руковожу командами. Параллельно с этим преподаю и менторю. Сегодня разберём, как готовить демонов на PHP — от А до Я, и почему это актуально.

Читать далее
Всего голосов 62: ↑60 и ↓2+58
Комментарии17

Приложения и сервисы в Docker

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

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

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии2
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Долгопрудный, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность