Рубрика «переводы» - 30

Давно хотел написать на эту тему. Первым толчком послужила статья Miško Hevery "Static Methods are Death to Testability". Я написал ответную статью, но так и не опубликовал ее. А вот недавно увидел нечто, что можно назвать «Классо-Ориентированное Программирование». Это освежило мой интерес к теме и вот результат.

«Классо-Ориентированое Программирование» — это когда используются классы, состоящие только из статических методов и свойств, а экземпляр класса никогда не создается. В этой статье я буду говорить о том, что:

  • это не дает никаких преимуществ по сравнению с процедурным программированием
  • не стоит отказываться от объектов
  • наличие статических членов класса != смерть тестам

Хотя эта статья про PHP, концепции применимы и к другим языкам.
Читать полностью »

Большинство фанатов ООП одновременно являются и фанатами полиморфизма. Многие хорошие в других отношениях книги (например, «Рефакторинг» Фаулера) впадают в крайность, утверждая, что если вы используете проверки типов во время выполнения (такие как операция instanceof в Java), то вы, по всей вероятности, в душе злодейский злодей из тех, что пугают маленьких детей операторами switch.

Вообще говоря, я согласен с тем, что использование instanceof и его аналогов обычно является признаком недостаточных навыков ООП проектирования. Полиморфизм лучше проверок типов, он делает код гибче и понятнее. Однако, по крайней мере в одном случае, достаточно распространенном чтобы считаться паттерном сам по себе, вы просто не можете использовать полиморфизм. Я бы применил его с удовольствием, честно, и если вы знаете как это сделать – расскажите мне. Но не думаю что это возможно, особенно в статических языках типа Java или C++.

Определение полиморфизма

На тот случай если вы незнакомы с терминологией ООП, полиморфизм – это претенциозное обозначение для концепции позднего связывания. Позднее связывание – это претенциозное обозначение (вы обнаружите здесь паттерн если копнете глубже) для отсрочки решения о том какой метод будет вызван до начала выполнения программы. Когда и будет выполнена проверка соответствия объекта и сообщения (метода).

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

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

Читать полностью »

FIDO (Fast IDentity Online) Альянс был создан в июле 2012 года для решения проблемы поддержки устройств строгой аутентификации в сети Интернет, а также с целью упростить жизнь пользователям, вынужденным создавать и запоминать имена пользователей и пароли. FIDO Альянс планирует изменить текущую ситуацию с аутентификацией путем разработки спецификаций, определяющих набор механизмов, которые вытеснят зависимость от паролей и обеспечат безопасную аутентификацию пользователей интернет-услуг. Новый стандарт по безопасности устройств и плагинов для браузеров позволит любому веб-сайту или облачному приложению взаимодействовать с широким спектром существующих и перспективных устройств для обеспечения безопасной аутентификации пользователей.

Для обеспечения безопасной работы пользователей проект FIDO объединяет аппаратные средства, программное обеспечение и интернет-сервисы.
Как работает FIDO
Читать полностью »

Добрый день, уважаемые коллеги,

Представляю вам перевод статьи от нашего зарубежного айтишника-коллеги про Windows Azure Virtual Machines. В связи с большим количеством идиоматических и просто словесных изысков, местами перевод довольно вольный.

Некоторые из самых главных противостояний Microsoft не ведутся в открытую, на спорном поле, на котором главенствует общественное мнение, постоянно при этом освещаемое СМИ. Но, если же есть что-то, что Microsoft всегда делали лучше конкурентов — так это распахивание новой целины, нахождение новых возможностей и точная, но безотказная их обработка. Apple и Samsung могут, конечно, и дальше держать нос по курсу, тупиком которого всегда будет бытовая электроника; Microsoft же имеет куда больший потенциал, будучи восходящей звездой на облачной арене. Это противостояние началось со стремления Microsoft перенести электронную почту в облако Office 365, дальше же в битву за господство отправляются Windows Azure и XaaS.

Читать полностью »

Как упоминалось ранее, Ангуляр предоставляет класс $resource для повышения уровня абстракции между кодом на стороне клиента и серверным API. Поэтому теперь выполнять операции CRUD по сети довольно легко. Но что происходит, когда необходимо выполнить команду для RESTful ресурса, что выходит за пределы стандартных методов CRUD (т. е. создания, чтения, обновления, удаления)? К счастью, Ангуляр достаточно хорошо работает с RESTful «контроллерами».Читать полностью »

Наверняка многие из вас задумывались о том, как устроены шаблонизаторы, какого его внутреннее устройство и каким образом происходит преобразование в фрагменты HTML-кода, однако не догадывались о каких-то особенностях его реализации. Поэтому давайте реализуем упрощенную версию движка шаблонов и продемонстрируем как это работает «под капотом».
Читать полностью »

От переводчика: Думаю, что статьи по архитектуре приложения и организации кода наиболее важны на начальном этапе, т. к., в отличие от всего остального, основу приложения поменять очень трудно. [Оригинал статьи]

Многие разработчики изо всех сил стараются организовать кодовую базу приложения, как только оно вырастает в размерах. В последнее время наблюдал это и в ангуляр и в яваскрипт приложениях, но исторически такая проблема присуща любым технологиям, включая Яву и многие флекс-приложения, с которыми работал в прошлом.Читать полностью »

image

После года работы с большим проектом на AngularJS, думаю поделиться некоторыми, извлеченными в процессе, уроками. Во-первых, мне нравится Ангуляр. Он отлично удовлетворяет моим потребности и, думаю, полностью перейти на него в обозримом будущем, когда мне потребуется надежный фреймворк для одностраничного «толстого клиента». Он потрясающий. Над ним работает команда мирового уровня, сообщество фантастическое, и он содержит (или предлагает сообщество) целый комбайн функций для создания веб-приложений.Читать полностью »

Кейт Мэтсудейра: Масштабируемая Веб архитектура и распределенные системыЧетыре месяца назад ребром встал вопрос о тексте для моего дипломного перевода. Результатом помощи коллективного разума стало решение переводить главу Scalable Web Architecture and Distributed Systems за авторством Kate Matsudaira. Нужно отметить, что это мой первый перевод такого объема и сложности. Текст, был мною относительно успешно переведен, хотя по качеству перевода я поставил бы себе 6-7 из 10. Дабы мои усилия не пропали втуне, публикую результат своих трудов.

Читать полностью »

В последнее время, я часто слышу мнения, что “Объем отправки писем это ключ к успеху в email-маркетинге!”. По своей сути, они означают, что отправка дополнительных email приводит к большей активности подписчиков, зарабатыванию большего числа денег, и, вообще, лучше (вне зависимости от того, что “лучше” значит для вас).

Их аргументы просты:

  1. Мои данные показывают, что чем больше получает/открывает/кликает мою рассылку, тем больше денег я зарабатываю.
  2. Так как я не могу волшебным образом “наколдовать” новые email-адреса, поэтому я должен чаще отправлять рассылки тем, кто уже есть.

Ведь если у вас есть адресная база в 10 000 адресов и каждый раз, когда вы отправляете по ним email, вы получите 100 заказов, то, отправив email на эти адреса два раза в месяц, а не один, вы ожидаете получить на 100 заказов больше, верно? Деньги у вас в кармане! Почему бы не пойти на это?

Безусловно, рассуждения верные. Но не все так просто.

Может быть, вы сможете увеличить частоту ваших рассылок для роста продаж, а может и не сможете. И вот почему: Активность подписчика (открытия, клики) зависит от частоты отправки рассылок. Чем больше вы отправляете, тем меньше подписчиков открывают ваши рассылки и кликают по ссылкам в них. А значит должна быть точка равновесия, в которой определенная частота рассылки максимизирует активность подписчика (а, следовательно, и ваши продажи).

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js