PHP-Дайджест № 96 – интересные новости, материалы и инструменты (1 – 13 ноября 2016)



Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
Приятного чтения!
11/13/2016 23:42:20
0

DRP-план в ИТ-компании и проверка его работоспособности

Проводим проверку работоспособности плана восстановления после аварии


Все мы хотим надеяться, что ничего подобного никогда не произойдет

У большинства предприятий есть (ну, или хотя бы должен быть) план восстановления после аварии. Аналогичный план должен быть у оператора дата-центра. Любой из подобных объектов подвержен влиянию внешних факторов — полностью исключить вариант аварии нельзя. Даже, казалось бы, самые защищенные объекты могут все же попасть в очень неприятную ситуацию, о чем мы как-то уже писали.

Соответственно, DRP-план (disaster-recovery plan) должен помочь компании быстро выйти на предшествующий аварии рабочий уровень. Обычно в таком плане описываются действия сотрудников в случае аварии. При составлении такого плана цель обычно — сведение к минимуму последствий аварии с обеспечением возможности вернуть контроль над решением критически важных задач, используя заранее определенные ресурсы. Но план — планом, а будет ли он работать? Для проверки этого стоит провести «учебную тревогу».
11/13/2016 23:27:17
0

[Из песочницы] Умный указатель для начинающих с использованием счетчика

Статья пишется с единственной целью — дать начинающим базовое представление об умных указателях. Я осведомлен в том, что статьи такого рода уже существуют, но они едва ли дают новичку понимание действия данного инструменты. Мне ни в коем случае не хочется журить других авторов, дело только в том, что многие упоминают о самой реализации умного указателя только вскользь, все больше толкуя о существующих инструментах, хронологии их появления, преимуществах и недостатках. Мне же хотелось бы, чтобы студент-первокурсник, делая лабораторную работу, получил готовую и простую реализацию умного указателя с пакетом объяснений в придачу.
11/13/2016 23:08:24
0

О сравнении объектов по значению — 3, или Type-specific Equals & Equality operators

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


Теперь рассмотрим Type-specific реализацию сравнения объектов по значению, включающую реализацию Generic-интерфейса IEquatable(Of T) и перегрузку операторов "==" и "!=".


Type-specific сравнение объектов по значению позволяет достичь:


  • Более стабильного, масштабируемого и мнемонического (читаемого) кода (последнее за счет перегруженных операторов).
  • Более высокой производительности.

Кроме того, реализация Type-specific сравнения по значению необходима по причинам:


  • Стандартные Generic-коллекции (List(Ot T), Dictionary(Of TKey, TValue) и др.) рекомендуют наличие реализации IEquatable(Of T) для всех объектов, помещаемых в коллекции.
  • Стандартный компаратор EqualityComparer(Of T).Default использует (по умолчанию — при наличии) реализацию IEquatable(Of T) у операндов.

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


  • Соответствие результатов сравнения у различных способов.
  • Сохранение поведения при наследовании.
  • Минимизацию copy-paste и общего объема кода.
  • Учет того, что операторы сравнения технически являются статическими методами и, соответственно, у них отсутствует полиморфность (а также, что не все CLS-совместимые языки поддерживают операторы или их перегрузку).

Рассмотрим реализацию сравнения объектов по значению с учетом вышеизложенных условий, на примере класса Person.


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

11/13/2016 22:21:01
0

Израильские разработчики смогли научить ИИ побеждать человека в Mortal Kombat

image
3D-окружение еще сложно для восприятия слабой формой ИИ, что влечет за собой проблемы компьютера при прохождении таких игр

При помощи видеоигр современные специалисты по искусственному интеллекту собираются обучать ИИ методам преодоления препятствий и решения возникающих проблем «на ходу». К примеру, сотрудники DeepMind совместно с Blizzard превратили StarCraft II в среду для обучения слабой формы ИИ. В прошлом году система искусственного интеллекта Google самостоятельно освоила 49 старых игр Atari.

И речь идет не о системе, интегрированной в игру (вроде AI-противников в файтингах, футбольных симуляторах или симуляторах гонок), которой прекрасно известны условия и правила. ИИ, который обучают разработчики в компьютерных играх сейчас, поставлен в равные с человеком условия. Система наблюдает за картинкой на экране, обучаясь методам проб и ошибок. И такая программа способна находить решение не только в играх, она пригодна для поиска решения в самом широком кругу задач, независимо от правил или условий.
11/13/2016 19:45:54
0

Как еще использовать type safety в целях улучшения API

Всем привет! Я — lead developer cocos2d-objc. Сейчас мы находимся в процессе портирования на Swift. Я планирую освещать процесс разработки, рассказывать архитектурные решения и т.д. Пока что проект еще на proof-of-a-concept стадии, поэтому сегодня я расскажу только о маленьком приёме, который, как я считаю, сделал нашу математическую библиотеку чуть лучше. Если интересно — прошу под кат.
image
11/13/2016 19:08:41
0

Доступен Cutelyst 1.0.0, фреймворк для разработки web-приложений на C++ и Qt

После трёх лет разработки представлен первый стабильный релиз фреймворка Cutelyst, предоставляющего средства для разработки web-приложений с использованием технологий Qt и MVC-парадигмы в стиле Perl-фреймворка Catalyst. В выпуске Cutelyst 1.0.0 объявлено о стабилизации API и ABI, которые в дальнейшем будут развиваться с обеспечением обратной совместимости. Код проекта написан на языке C++ и распространяется под лицензией LGPLv2+.
11/13/2016 18:58:51
0

Правильный полиморфный билдер на Java

О чем все это?


При реализации chained builder на Java все прекрасно, пока не понадобится добавить наследование. Сразу же возникают две проблемы — как сделать, чтобы методы родительского билдера возвращали объект дочернего билдера и как передавать дочерний билдер в функции, принимающие родительский. Предлагается реализация паттерна, которая позволяет решить обе проблемы. Исходники можно посмотреть здесь на гитхабе

11/13/2016 18:36:16
0

Дешевые авиабилеты… Сеть мошеннических сайтов, ворующих деньги с карт. Расследование-Часть2. Причем здесь Промсвязьбанк?



Около месяца назад я опубликовал на Geektimes статью «Дешевые авиабилеты… Или сеть мошеннических сайтов, ворующих деньги с карт. Мое расследование.» Публикация получила большой отклик и неожиданное продолжение…

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

Во всех обнаруженных случаях для кражи денег такие сайты используют сервисы банков для перевода денег с карты на карту (P2P). В первой части был подробно разобран механизм того, как страница Банка Тинькова для оплаты с карты на карту маскируется и встраивается на мошеннические сайты, так, чтобы «покупатель» ничего не заметил. Также упоминался Промсвязьбанк, — именно через него были украдены деньги с карты потерпевшего в истории, которая была описана. И если с банком ТКС вопросов не осталось, то в случае с Промсвязьбанком было непонятно, как именно выводятся деньги. Основной скрипт, служащий для воровства денег, выполнялся на стороне сервера и без исходных кодов можно было только стоить предположения, что именно он делает.

И вот один из пользователей Geektimes связался со мной и прислал тот самый скрипт payp2p.php, который использовался в последнее время на большой части мошеннических сайтов по продаже авиабилетов. Скрипт этот использует сервис Промсвязьбанка для перевода с карты на карту. И на мой взгляд, Промсвязьбанк, предоставляя свой сервис, который было легко обмануть, способствовал росту количества интернет-мошенников.
11/13/2016 18:23:07
0

[Из песочницы] Сканирование на терминальном сервере бесплатно

На работе поставили задачу перевести нескольких сотрудников на терминальный сервер, чтобы все-все делалось на нем, в т. ч. сканирование с локального сканера. Пользователь работает в Windows. Можно было бы пробросить USB, но драйверов для Виндоус Сервера у этой модели сканера не было.

Поискал в сети по запросу Scan over RDP, нашел программы типа Scan Redirector RDP Edition, TSX Scan и т. п., за которые хотят в районе сотни-другой баксов за 1 лицензию, вроде бы даже видел за 800 баксов.

Я не люблю нелицензионный софт, поэтому решил реализовать сам:


11/13/2016 17:58:38
0