• PHP -Casbin: Библиотека авторизации с поддержкой контроля доступа ACL, RBAC, ABAC


    PHP-Casbin — это легкая платформа контроля доступа с открытым исходным кодом (https://github.com/php-casbin/php-casbin), встроенная в PHP, и в настоящее время она является открытым исходным кодом на GitHub. PHP-Casbin использует метамодельный подход к дизайну, который поддерживает множество классических схем управления доступом, таких как RBAC на основе ролей, управление доступом ABAC на основе атрибутов и многое другое.


    функции


    1. Поддержка формата пользовательского запроса, формат запроса по умолчанию: {subject, object, action};
    2. Имеют две основные концепции модели и стратегии контроля доступа;
    3. Поддержка многоуровневого наследования роли в RBAC, а не только основной орган может иметь роли, но ресурсы также могут иметь роли;
    4. Поддержка суперпользователей, таких как root или Administrator, суперпользователи могут получить доступ к произвольным ресурсам, не привязавшись к политикам авторизации;
    5. Поддержка множества встроенных операторов, таких как keyMatch, для облегчения управления ресурсами на основе пути, например /foo/bar, можно сопоставить с /foo*

    Что PHP-Casbin не делает


    1. Аутентификация подлинности (то есть проверка имени пользователя и пароля пользователя), PHP-Casbin отвечает только за контроль доступа. Должны быть другие специализированные компоненты, ответственные за аутентификацию подлинности, а затем контроль доступа с помощью PHP-Casbin, эти два являются взаимно совместимыми;
    2. Управление списками пользователей или списками ролей. PHP-Casbin считает, что более подходящим для самого проекта является управление пользователями и списками ролей. PHP-Casbin предполагает, что пользователи, роли и ресурсы, которые отображаются во всех политиках и запросах, являются законными и действительными.

    устанавливать


    composer require casbin/casbin
    Читать дальше →
    • –1
    • 465
    • 3
  • Несертифицированный GPS-трекер из Китая. Законно ли в России?

    Иностранные интернет-магазины завалены разнообразными устройствами, оснащёнными GPS, GSM-модулями, позволяющими отслеживать местоположение наблюдаемого объекта и управлять устройством посредством SMS и мобильных приложений. И, конечно же, большинство из них не сертифицированы и запрещены для ввоза/использования в России. Простой обыватель, услышав слова «несертифицированный» и «GPS» в одном предложении, скажет: «Это незаконно по статье 138.1 УК РФ!», и будет прав. А может и нет. Во всём этом я попытался разобраться и сконсолидировать в этой статье.

    Читать дальше →
  • Julia. Работа с таблицами


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


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


    Безусловно, одним из важнейших этапов работы программы, выполняющей анализ данных, является их импорт и экспорт. Причем, наиболее распространенный формат представления данных — это таблица. Существуют библиотеки для Julia, которые предоставляют доступ к реляционным СУБД, используют обменные форматы типа HDF5, MATLAB, JLD. Но в данном случае нас будет интересовать только текстовый формат представления таблиц, типа CSV.

    Читать дальше →
  • Программистом к ирландским букмекерам

    Привет, Хабр!


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


    В хабе IT-эмиграция в последнее время публикуют всё больше и больше статей про переезд в разные страны, но довольно мало про Ирландию — решил восполнить этот пробел. Надеюсь, кому-то будет полезно.


    image


    Я работаю разработчиком программного обеспечения в международной букмекерской компании со штаб-квартирой в Дублине. Если чуть точнее, пишу на Scala/Akka, хотя планирую не ограничивать себя только этим. Разрабатываем кластерные отказоустойчивые высоконагруженные приложения.


    Подробности ниже.

    Читать дальше →
  • Как строить и построить

    Предыстория


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


    • валидировать типы данных;
    • задавать дефолтные значения вместо невалидных полей или элементов;
    • удалять невалидные части объекта или массива;
    • получать сообщение об ошибке;

    В основе которой будет:


    • Легкость в освоении
    • Читабельность получаемого кода.
    • Легкость модификации кода

    Для достижения этих целей была разработана библиотека валидации quartet.

    Читать дальше →
  • DMS (Dealership Management System) – Внедрение Информационных ЭкоСистем для управления Дилерскими сетями

    В свое время, а было это около 7 лет назад, я столкнулся с проблематикой внедрения DMS Информационной системы в крупной дилерской сети (170 дилеров). До этого у меня уже был опыт автоматизации дилерских сетей на базе различных ИТ-решений. Но специфика данного внедрения заключалась в том, что сеть состояла из самостоятельных игроков бизнеса, годовой товарооборот которых, порой, существенно превышал товарооборот нашей организации.

    Еще не начав проект мы, с моей командой, столкнулись с нетривиальными вопросами:

    • Как выбрать решение?
    • Из каких этапов должно состоять внедрение?
    • Как выстроить коммуникацию?
    • Как создать продукт, лояльность к которому позволит нам преодолеть сопротивление партнеров, уже имеющих собственные развитые ИТ-системы и процессы?

    И т.д.

    С чего начать, в конце концов?!

    Первое, что я сделал – обратился к внутрикорпоративному опыту и опыту других компаний, в надежде отыскать ответы на этот комплекс вопросов. И, увы, не нашел НИЧЕГО!

    Не то, чтобы данный опыт нам ничего не предлагал. Отнюдь, как только мы объявили о подготовительном этапе проекта, нас, буквально, засыпали предложениями по автоматизации: к нам приезжали ИТ-компании с пресейлом их систем, проводили красочные и «убедительные» презентации, рассказывали нам о безоблачном будущем, которое нас ждет, если мы выберем их решение. Но со всеми вендорами был ряд проблем:

    • они были ангажированы на бюджет проекта, но не на результат;
    • стоимость их решений порой превышала годовой бюджет на ИТ в компаниях-партнерах;
    • слабое понимание специфики бизнеса;
    • низкий уровень кастомизации решений

    Читать дальше →
  • Stack-based calculator on the Cyclone IV FPGA board

    Introduction


    As first-year students of Innopolis University, we had an opportunity to make our own project in computer architecture. University suggested us several projects and we have chosen to make a stack-based calculator with reverse polish notation. One of the requirements for the project is to use FPGA board provided by the university.



    As our board, we have chosen Cyclon IV. Therefore, we had to write code on hardware description language. In the course we have studied Verilog, so we have chosen it. Also, the university has additional modules for FPGA, such as numpad, thus we decided to use it in our project.

    In this article, we want to share our knowledge about FPGA and Verilog, also provide you with a tutorial to repeat our project.
    Читать дальше →
  • Быть на своем месте или почему я ушел из ЕПАМ

    Добрый день.

    Кому интересно именно про ЕПАМ – под кат и мотайте в конец.

    Лет мне уже много. И хотя места работы я меняю почти регулярно, но все это в рамках ИТ индустрии. Был хелпдеском, сисадмином, системным инженером, девопсом и вот сейчас системный архитектор. Все изложенное ниже исключительно с точек зрения, перечисленных выше. Дважды пытался уйти из профессии. Оба раза хватило примерно на полгода. Не пошло. И как-то так получилось, что в выбранной нише я уже варюсь почти 30 лет. Сменив в очередной раз работу, я с интересом подсчитал, что новое рабочее место это 16 (шестнадцатое) в моей жизни. В среднем получилось, что на каждом месте я задерживаюсь примерно на три года. Минимум 4 месяца, максимум – почти пять лет. И я подумал, а много это или мало?
    Читать дальше →
  • CI для фронтенда: Gitlab, Traefik, Docker

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

    Цель данной статьи — показать простую технику настройки стенда на несколько веток. Данная статья написана разработчикам от разработчика, поэтому вряд ли будет представлять существенный интерес для профессиональных DevOps инженеров.
    Читать дальше →
  • Быстрый Sin и Cos на встроенном ASM для Delphi

    Всем привет!

    Возникла потребность написать быстрое вычисление Sin и Cos. За основу для вычислений взял разложение по ряду Тейлора. Использую в 3D-системах (OpenGL и графическая библиотека своей разработки). К сожалению свести ряд «идеально» для Double не получается, но это компенсируется хорошим ускорением. Код написан на встроенном в Delphi XE6 ассемблере. Используется SSE2.

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

    В итоге:

    1. Достигнутая точность результата равна: 10.e-13
    2. Максимальное расхождение с CPU — 0.000000000000045.
    3. Скорость увеличена в сравнении с CPU в 4.75 раза.
    4. Скорость увеличена в сравнении с Math.Sin и Math.Cos в 2.6 раза.

    Для теста использовал процессор Intel Core-i7 6950X Extreme 3.0 ГГц.
    Исходный текст на Delphi встроен в комментарии к ассемблеру.
    Читать дальше →