Best Practices for Modern PHP Development

PHP is a complex language that has suffered years of twists, bends, stretches, and hacks. It’s highly inconsistent and sometimes buggy. Each version has its own unique features, warts, and quirks, and it’s hard to keep track of what version has what problems. It’s easy to see why it gets as much hate as it does sometimes.

Despite that, it’s the most popular language on the web today. Because of its long history, you’ll find lots of tutorials on how to do basic things like password hashing and database access. The problem is that out of five tutorials, you have a good chance of finding five totally different ways of doing something. Which way is the “right” way? Do any of the other ways have subtle bugs or gotchas? It’s really hard to find out, and you’ll be bouncing around the internet trying to pin down the right answer.

That’s also one of the reasons why new PHP programmers are so frequently blamed for ugly, outdated, or insecure code. They can’t help it if the first Google result was a four-year-old article teaching a five-year-old method!

This document tries to address that. It’s an attempt to compile a set of basic instructions for what can be considered best practices for common and confusing issues and tasks in PHP. If a low-level task has multiple and confusing approaches in PHP, it belongs here. (more…)

Continue Reading Best Practices for Modern PHP Development

PSR Стандарты

PSR — Чуть больше, чем стиль оформления кода.

Как показала практика, многие PHP-разработчики знакомы с аббревиатурой PSR. Однако большинство все еще ограничены знанием, что PSR это стандарт оформления кода.

Ребята из PHP-FIG (PHP Framework Interop Group), группа концепций совместимости PHP, которые занимаются развитием PSR (PHP Standards Recommendations) шагнули далеко вперед. Поэтому давайте разберемся, что из себя представляет PSR…


Continue Reading PSR Стандарты

PHP – Strict Types

Being able to declare types, such as intstring, or bool was a massive improvement added to PHP with the release of 7.0. However, there is a small but important factor that you might not be aware of.

The Problem

The problem is best explained with code. Below is a function that just adds two integers together: (more…)

Continue Reading PHP – Strict Types

Resize an Image in AWS S3 Using a Lambda Function


AWS Lambda is a compute service that runs your code in response to events and automatically manages the compute resources for you, making it easy to build applications that respond quickly to new information.

AWS Lambda starts running your code within milliseconds of an event such as an image upload, in-app activity, website click, or output from a connected device. You can also use AWS Lambda to create new back-end services where compute resources are automatically triggered based on custom requests. (more…)

Continue Reading Resize an Image in AWS S3 Using a Lambda Function

Что почитать менеджеру продукта или проекта: от исследований Канемана до мотивации Брэдбери

Всем привет! В нашем совместном с МФТИ учебном проекте Технотрек есть семестровый курс по Product Management. Меня зовут Станислав, и я ведущий преподаватель этого курса, а также менеджер продукта в проекте DonationAlerts. Готовясь к курсу, я собрал внушительный список полезных материалов. Сделал для вас из этого списка подборку книг и блогов, которые будут полезны менеджерам продуктов или проектов.

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

Continue Reading Что почитать менеджеру продукта или проекта: от исследований Канемана до мотивации Брэдбери

CI Tools comparison: CodeBuild vs Bitbucket Pipelines vs Jenkins

Multiple tools are available to do CI/CD. In the article, I’ll compare CodeBuild, Bitbucket Pipelines and a brief overview of Jenkins.


Both offer notification options. On Bitbucket, you can add Slack notifications quickly by going to Chat Notifications > Settings > Add Subscription. CodeBuild integration is not that intuitive but offers a more significant deal of flexibility. You would have to subscribe build-notifications to SNS topic. From there you can add AWS ChatBots to push notifications to your Slack, or email, or Lambda, or HTTPS endpoint or even send SMS.

You could also add custom logic to your notifications. Bitbucket offers webhooks on pipeline events.

CodeBuild triggers existing Bitbucket webhooks too, which makes migration less painful.


Continue Reading CI Tools comparison: CodeBuild vs Bitbucket Pipelines vs Jenkins

О понятии «бессерверные технологии» serverless

У многих бессерверные вычисления ассоциируются с существующими платформами, представляющими услуги в формате «функция как сервис» (function-as-a-servise, FaaS), что вполне понятно. Многих эти платформы разочаровывают, заставляют с подозрением смотреть на всё «бессерверное». Однако, это — слишком узкий взгляд на вещи.

Сегодня я расскажу о том, как развитие бессерверных платформ уже совсем скоро изменит наше отношение к ним. Я покажу три волны универсальных бессерверных технологий и продемонстрирую их взаимодействие, которое направлено на предоставление гораздо более широких возможностей, нежели FaaS-продукты.

О понятии «бессерверные технологии»

Бессерверные технологии — это всегда абстракция уровня сервиса, иллюзия, созданная ради удобств конечного пользователя. Аппаратное обеспечение при этом, естественно, никуда не девается. По сути, можно выделить две определяющие характеристики бессерверных технологий: невидимая инфраструктура вместо настраиваемых образов виртуальных машин? и схема оплаты, основанная на фактически потребляемых ресурсах вместо фиксированной почасовой ставки. (more…)

Continue Reading О понятии «бессерверные технологии» serverless

Serverless Best Practices

Within the community we’ve been debating the best practices for many years, but there are a few that have been relatively accepted for most of that time.

Most serverless practitioners who subscribe to these practices work at scale. The promise of serverless plays out mostly at both high scale and bursty workloads rather than at a relatively low level, so a lot of these best practices come from the scale angle e.g. Nordstrom in retail and iRobot in IoT. If you’re not aiming to scale that far, then you can probably get away without following these best practices anyway.

And remember that best practices are not “the only practices”. Best practices rely on a set of underlying assumptions. If those assumptions don’t fit your use case, then those best practices may not fit.

My main assumption is that everybody is building their application to be able to run at scale (even if it never ends up being run at scale).

So these are my best practices as I see them. (more…)

Continue Reading Serverless Best Practices

Советы бывалого программиста или Здравствуй, дорогой я двадцать лет назад

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

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


Continue Reading Советы бывалого программиста или Здравствуй, дорогой я двадцать лет назад