Как стать автором
Обновить
3
0

Пирожочек

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

Пишем расширения для PHP 7 на C++

Время на прочтение14 мин
Количество просмотров23K
Мне приходилось писать расширения для того, чтобы воспользоваться функциями C++ библиотек в коде PHP. Ещё, одно тяжёлое расширение портировал с 5й версии на 7ю.

Если загуглить документацию на тему написания расширений для PHP, то, в основном, это будут тексты до 2014 года, актуальные для версии 5. Сам сайт php.net предоставляет обрывчатые и устаревшие сведения, а то, что удаётся найти в их wiki, опять про 5ю версию. Максимум, что удалось найти на офф сайте, это скудный ман по миграции уже написанных расширений.

В итоге, единственным более или менее понятным маном по написанию расширений для меня оказался исходный код PHP, которым я и руководствовался при написании и миграции расширений.
Читать дальше →

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Время на прочтение7 мин
Количество просмотров754K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →

Наведение порядка: в Chrome и Firefox будет прекращено доверие к удостоверяющему центру Symantec

Время на прочтение4 мин
Количество просмотров28K
unlockКак обычно, до ката нужно привести выжимку: в связи с проблемами в организации работы инфраструктуры, нарушениями при подготовке отчётности и злоупотреблениями, которые привели к выдаче сертификатов уровня EV (Extended Validation) без требуемых проверок, в настоящее время Google и Mozilla планируют процесс утраты доверия к сертификатам Symantec.

Компания Symantec согласилась с 1 декабря 2017 года ввести в строй новый процесс выдачи сертификатов, при котором компания не будет иметь своего корневого сертификата и будет выступать агентом другого удостоверяющего центра, выполняя роль SubCA (Subordinate Certificate Authority), работающего под внешним контролем (Managed CA). Сертификаты Symantec, выданные после 1 декабря 2017 года, не будут подпадать под блокировку и, судя по всему, продолжат работу.
Подробности и сроки

Doctrine Specification Pattern или ваш реюзабельный QueryBuilder

Время на прочтение5 мин
Количество просмотров18K
Я постараюсь максимально коротко рассказать о том, как можно использовать этот паттерн с нашей любимой Doctrine на примерах и почему так делать — true.

Давайте представим себе базовый кейс:

  1. У нас есть: сущность «Дом», сущность «Квартира в доме», сущность «Застройщик», сущность «Регион».
  2. У нас есть задача: иметь возможность получить всех застройщиков, иметь возможность получить все занятые регионы застройщиком, уметь возможность получить все дома, которые принадлежат застройщику и все доступные регионы вообще в принципе, где ведутся продажи домов.
  3. У нас есть правила от бизнеса:
Читать дальше →

Данные: красивые и ужасные

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


Данные повсюду. И это прекрасно. Они меняют нашу жизнь, заново изобретают сторителлинг и оказывают влияние практически на все отрасли — бизнес, искусство, развлечения, музыку, технологии.
Вот некоторые яркие примеры…

Информационная журналистика




Совершенно ужасающая инфографика. Проект, который называется «С глаз долой, из сердца вон», — это хронология ударов беспилотных дронов в Пакистане с июля 2004 года по декабрь 2013 года.

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

Перевод книги Appium Essentials. Глава 6

Время на прочтение14 мин
Количество просмотров7.1K
Добрый вечер, Хабр. У нас тут подходит к концу перевод Appium Essentials. Что уже пройдено:


В этой главе:

  • Автоматизируем набор номера на устройстве Android
  • Автоматизируем форму регистрации на Android
  • Используя Chrome, залогинимся на Gmail
  • iOS. Автоматизируем Body Mass Index (BMI)
  • Автоматизация гибридных приложений на устройствах iOS
  • iOS. Автоматизация веб-приложений
Читать дальше →

Dotty – будущее языка Scala

Время на прочтение17 мин
Количество просмотров19K
В конце мая я оказался среди слушателей конференции Scala Days в Копенгагене. Одним из ключевых спикеров был создатель языка Scala Мартин Одерски. Он рассказал о развитии языка и, в частности, о разработке компилятора, названного Dotty. Планируется, что на основе Dotty будет разработан новый компилятор для версии 3.0.

Мартин не раз выступал на эту тему, и я бы хотел собрать здесь всю актуальную информацию о Dotty – новые ключевые возможности и элементы, удаленные за ненадобностью.


Мартин Одерски. План развития Scala на ближайшие несколько лет

Этот пост будет полезен и знатокам, и совсем новичкам, для которых разговор о Dotty я предваряю рассказом об особенностях Scala, а также о том, что лежит в его математической основе.
Читать дальше →

Enjoy! Сервер аутентификации Isolate в Open Source

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

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

У нас 300 клиентов. Кому-то это «всего», а для нас — это почти 2000 серверов на обслуживании. Чтобы хранить, обновлять и управлять базой из 2000 паролей для 60 сотрудников, управлять доступом к ней и не объяснять каждый раз клиенту, что пароли к его серверам будут одновременно знать 60 человек, мы сделали сервер аутентификации и назвали его Isolate. Под катом описание функций и ссылка на Github — мы выложили его в Open Source.
Читать дальше →

JavaScript без this

Время на прочтение10 мин
Количество просмотров21K
Ключевое слово this в JavaScript можно назвать одной из наиболее обсуждаемых и неоднозначных особенностей языка. Всё дело в том, что то, на что оно указывает, выглядит по-разному в зависимости от того, где обращаются к this. Дело усугубляется тем, что на this влияет и то, включён или нет строгий режим.



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

Разбираемся с копированием и клонированием

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


Я наткнулся на статью Нареша Джоши о копировании и клонировании и был удивлён ситуацией с производительностью. У клонирования есть проблемы с финальными полями. А учитывая тот факт, что интерфейс Cloneable не предоставляет метод clone, то для вызова clone вам необходимо будет знать конкретный тип класса.

Читать дальше →

Криптовалюта с точки зрения гражданского права

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

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

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

SOAP и REST сервисы с помощью Python-библиотеки Spyne

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

Знакомство с библиотекой Spyne


В данной статье я хочу рассказать о замечательной Python-библиотеке Spyne. Мое знакомство с Spyne началось в тот момент, когда передо мной поставили задачу написать Веб-сервис, который будет принимать и отдавать запросы через SOAP-протокол. Немного погуглив я наткнулся на Spyne, которая является форком библиотеки soaplib. А еще я был удивлен, насколько мало русскоязычной информации встречается о данной библиотеке.

С помощью Spyne можно писать веб-сервисы, которые умеют работать с SOAP, JSON, YAML, а написанный скрипт можно запустить через mod_wsgi Apache. Итак, давайте рассмотрим несколько примеров, напишем работающие скрипты и настроим так, чтобы скрипты работали через apache.
Читать дальше →

Анализ исходного кода Doom 3

Время на прочтение32 мин
Количество просмотров56K
image

23 ноября 2011 года id Software поддержала собственную традицию и опубликовала исходный код своего предыдущего движка.

На сей раз настало время idTech4, который использовался в Prey, в Quake 4 и, разумеется, в Doom 3. Всего за несколько часов было создано больше 400 форков репозитория на GitHub, люди начали исследовать внутренние механизмы игры или портировать её на другие платформы. Я тоже решил поучаствовать и создал Intel-версию для Mac OS X, которую Джон Кармак любезно прорекламировал.

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

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

Skype-бот с человеческим лицом (на Microsoft Bot Framework V3 и Slack API)

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


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

Синглтоны и общие экземпляры

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


Каждый раз при обсуждении программного обеспечения с другими разработчиками всплывает тема синглтонов, особенно в контексте развития WordPress’а. Я часто пытаюсь объяснить, почему их надо избегать, даже если они считаются стандартным шаблоном.


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

Читать дальше →

Покойся с миром, REST. Долгих лет жизни GraphQL

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


Перевод. Автор оригинала Samer Buna. Оригинал статьи.

Когда я впервые узнал о GraphQL после долгого использования различных REST API, то не мог удержаться от твитов такого содержания:

Rest API превратился в REST-in-Peace API. Долгих лет жизни GraphQL


Примечание переводчика – Rest In Peace, RIP – распространенная эпитафия "Покойся с миром". Первое слово в ней пишется так же, как акроним REST.

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


Поймите правильно. Я не собираюсь обвинять GraphQL в убийстве REST или чём-то таком. REST не умрет никогда, также как XML будет жить вечно. Но кто в здравом уме станет использовать XML вместо JSON? На мой взгляд, GraphQL сделает для REST то же самое, что JSON сделал для XML.

Читать дальше →

Что нового в nginx?

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


Максим Дунин (Nginx, Inc.)


Ведущий: Я представляю вашему вниманию следующего докладчика. Встречайте – Максим Дунин. И он расскажет о том, что же нового появилось в технологии под названием nginx.

Дисклеймер: речь пойдёт о нововведениях в 2016 году. Можно подумать, что это давно, но информация об изменениях в changelog от автора этих самых изменений полезна всегда!

Максим Дунин: Добрый день! Я Максим Дунин. Как вы, наверное, знаете, я разработчик nginx. Сегодня буду вам читать changelog вслух и с выражением. Для начала давайте определимся, с какого именно места мы будем читать changelog. Посмотрим на статистику.


CASL. Авторизация для JavaScript приложения

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

CASL JavaScript В наше время почти каждое приложение имеет понятие прав доступа и предоставляет различные функции для разных групп пользователей (например, admin, member, subscriber и т.д.). Эти группы обычно называются "роли".


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

Читать дальше →

Throwable exception и ошибки в php7

Время на прочтение4 мин
Количество просмотров42K
В прошлом, обрабатывать фатальные ошибки было практически невозможно. Обработчик, установленный set_error_handler вызван не будет, скрипт просто будет завершен.
В PHP 7 при возникновении фатальных ошибок (E_ERROR) и фатальных ошибок с возможностью обработки (E_RECOVERABLE_ERROR) будет выброшен exception, а не произойдет завершение скрипта. Но определенные ошибки, например «out of memory», по прежнему приведут к остановке. Не перехваченные ошибки в PHP 7, будут «фатальны», так же как и в php 5.*.
Обратите внимание, что другие виды ошибок, такие как warinng и notice остаются без изменения в php 7.

Исключения выброшенные из E_ERROR и E_RECOVERABLE_ERROR не наследуются от Exception. Это разделение было сделано, чтобы предотвратить обработку этих ошибок кодом, написанным под 5.*. Исключения для фатальных ошибок теперь являются экземпляром нового класса: Error. Как и любые другие исключения, Error может отловлен, обработан и выполнен finally блок.
Читать дальше →

Власть приводит к повреждению мозга

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

Как лидеры теряют умственные способности – в первую очередь, возможность видеть людей насквозь – бывшие необходимыми для их прихода к власти


image

Если бы власть выписывали как лекарство по рецепту, у неё был бы длинный список побочных эффектов. Она токсична, она портит, она даже может заставить Генри Киссинджера считать себя сексуально привлекательным. Но может ли она привести к повреждению мозга?

Когда различные законотворцы прошлой осенью набросились на Джона Стампфа на слушании в Конгрессе, казалось, что каждый из них нашёл новый способ раскритиковать бывшего генерального директора Wells Fargo за то, что он не сумел остановить почти 5000 его сотрудников от заведения подложных учётных записей для клиентов. Но самым интересным было поведение Стампфа. Это был человек, поднявшийся до вершин самого ценного в то время банка в мире, при этом, казалось, он совершенно не способен воспринять настрой присутствующих. Хотя он и извинился, он не был похож на человека смиренного и полного раскаяния. Но он и не казался вызывающим, самодовольным или лицемерным. Он выглядел дезориентированным, как испытывающий эффекты смены часовых поясов космический турист с планеты Стампф, на которой уважение к нему считается законом природы, а 5000 – достаточно маленькое количество людей. Даже самые непосредственные колкости: "Да вы, наверно, шутите" и "Не могу поверить в то, что слышу", не смогли его расшевелить.
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность