Микро-толки — дайджест #8

В этом микро-толке мы затронули довольно много тем. Было обсуждение и MySQL, и неочевидного поведения PHP, и "трюков" javascript. А началась наша встреча с понятия, которое сейчас очень сильно хайпится — Serverless.

Serverless архитектура имеет 2 основных определения:

  1. Backend as a Service или приложения, которые полностью или в значительной мере зависят от сторонних вендоров для реализации логики бекенда или хранения состояния приложения. Это определение было популярно до 2015 года.
  2. С выходом AWS Lambda в 2014-2015 годах стало популярно определение Function as a Service — такая архитектура приложения, при которой часть серверной логики выполняется в вычислительных контейнерах без состояния.

Довольно хороший обзор Serverless архитектуры дается в статье "Serverless Architectures". Кроме того в рамках второго определения становится очень популярным Serverless Framework.

От Serverless-движения мы перескочим сразу к новости о выходе Boostrap 4. Он был одним из первопроходцев в своём роде и набрал свою популярность за счет простоты использования и огромного количества тем и дизайнов, построенных базе него. Сейчас подобными библиотеками никого не удивишь и есть множество альтернатив с гораздо более богатым набором компонентов и более удобной интеграцией с современными инструментами разработки фронтенда.

И от фронтенда вернемся обратно к бекенду. Один мой коллега встретился со странным кейсом: в MySQL в колонках с ограничением NOT NULL присутствовали NULL значения. Как такое могло случиться? Оказывается в MySQL есть строгий режим, и если он выключен, то база данных прощает многие ошибочные значения, например, при вставке данных мы можем не указать значение для NOT NULL колонки без значения по умолчанию. И в итоге увидим в ней NULL. По умолчанию, строгий режим включен начиная с версии 5.7, но все равно стоит почитать документацию, чтобы знать чего можно ожидать.

Ещё одна тема, поднятая моим коллегой — это смысл protected static методов. Вроде как извне можно вызвать static-методы, только если они публичные. На самом деле, всё просто — protected static методы можно вызывать из других методов класса (как обычных, так и статичных), а использовать это можно для вынесения части логики и упрощения кода других методов класса.

Интересные статьи на тему PHP публикует Александр Майоров в своем блоге на Medium:

  • Fun PHP #1 про параметры конструктора PHP.
  • Fun PHP #2 про приоритет и ассоциативность операций JS vs PHP — довольно замороченная штука.
  • Fun PHP #3 про передачу значений по ссылке в PHP.

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

Еще одна новость из мира PHP — это смерть микро-фреймворка Silex с выходом Symfony 4.

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

А теперь перейдем к Javascript.

  • Презентация JavaScript: The Bad Parts рассказывает про проблемы с выражением with, наследованием от стандартных классов Array и Promise, про то как транспайлеры могут вас обманывать и всё это с точки зрения внутренностей движка V8.
  • В интернете гуляет много опросников-тестов по Javascript, вот еще один JavaScript quiz.
  • А вот статья, объясняющая другой известный JS-тест: Answering Baranovskiy's JavaScript quiz.
  • Всем известен доклад "Wat", где автор показывает неочевидное и странное поведение системы типов Javascript и Ruby. Этому конечно же есть простое и логичное объяснение: The WHY behind the WAT: An explanation of JavaScript’s weird type system. Интересно узнать особенности парсера и разницу между var a = {a: '1'}; a+[]; vs {a: '1'} + []; vs {'a':'1'}+[];.
  • Еще одна статья на ту же тему — "JS WTF with Math".
  • Ну и напоследок — популярный вопрос за последнее время на StackOverflow "Can (a== 1 && a ==2 && a==3) ever evaluate to true?". Постарайтесь найти ответ до перехода по ссылке.

И в заключении, новость из мира PHP — принят стандарт PSR-15 и хорошие пояснения можно найти в этой статье.

Предыдущий дайджест: Микро-толки — дайджест #7