RESTful API на Yii framework с RBAC и тестами

Автор: admin от 26-05-2014, 20:05, посмотрело: 606

Существует множество готовых решений для реализации RESTFul API на Yii framework, но при использовании этих решений в реальных проектах понимаешь что все красиво выглядит только на примерах с собачками и их хозяевами.

Возможно, за время подготовки и написания статьи она немного потеряла актуальность с выходом Yii2 со встроенным фреймворком для создания RESTful API. Но статья по прежнему будет полезна для тех, кто пока не знаком с Yii2, или для тех, кому необходимо быстро и просто реализовать полноценное API для уже существующего приложения.

Для начала приведу список некоторых возможностей, которых мне очень не хватало для полноценной работой с серверным API при использовании существующих расширений:


  • Одна из первых проблем с которой я столкнулся — сохранение различных сущностей в одной таблице. Для получения таких записей уже не достаточно просто указать имя модели как это предлагается, например тут. Один из примеров такого механизма — таблица AuthItems, которая используется фреймворком в механизме RBAC (если кто-то не знаком с ним — есть замечательная статья на эту тему). В ней содержатся роли, операции и задачи которые определяются флагом type, и для работы с этими сущностями через API мне хотелось использовать url не такого типа:
    GET: /api/authitems/?type=0 - получение списка операций
    GET: /api/authitems/?type=1 - получение списка задач
    GET: /api/authitems/?type=2 - получение списка ролей

    а такого:
    GET: /api/operations - получение списка операций
    GET: /api/tasks - получение списка задач
    GET: /api/roles - получение списка ролей

    Согласитесь, второй вариант выглядит очевиднее и понятнее, тем более для человека не знакомого с фрейморком и устройством RBAC в нем.

  • Вторая немаловажная возможность — механизм поиска и фильтрации данных, с возможностью задавать условия и комбинировать правила. Например, мне хотелось иметь возможность выполнить аналог такого запроса:
    SELECT * FROM users WHERE (age>25 AND first_name LIKE '%alex%') OR (last_name='shepard');
    


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

  • Еще одним важным моментом была возможность получать связанные данные. Например: получить данные роли вместе со всеми её задачами и операциями.

  • Конечно невозможно хоть сколько-нибудь комфортно работать с API не имея возможности ограничить количество получаемых записей (limit), сместить начало выборки (offset), и указать порядок сортировки записей (order by). Так же не плохо бы иметь возможность группировки (group by).

  • Важно иметь возможность для каждой из операций проверять права пользователя (метод checkAccess все в том же RBAC).

  • Ну и наконец, все это дело нужно как-то тестировать.


  • В результате анализа примерно такого списка «хотелок» и появился на свет мой вариант реализации API на этом замечательном фреймворке!

    Категория: Программирование

     

    Когда AES(?) = ? — криптобинарный фокус

    Автор: admin от 26-05-2014, 18:50, посмотрело: 283

    Когда AES(?) = ? — криптобинарный фокус

    Специалиста по реверс-инжинирингу Анжа Альбертини (Ange Albertini) из компании Corkami в шутку спросили: можно ли сгенерировать картинку JPEG, которая после обработки шифром AES опять превратится в валидный JPEG. Анж принял вызов, а по результатам исследования опубликовал презентацию с объяснением, как это делается с разными форматами.

    Категория: Программирование, Криптография

     

    Синдром внезапной смерти (он же Sudden Death Syndrome, он же SDS) Samsung Galaxy Note 2 и Samsung Galaxy S3

    Автор: admin от 26-05-2014, 17:50, посмотрело: 630

    Всем привет!
    Хочу рассказать всем владельцам замечательного смартфона Samsung Galaxy Note 2 и Samsung Galaxy S3 о синдроме внезапной смерти.

    Синдром внезапной смерти (он же Sudden Death Syndrome, он же SDS) Samsung Galaxy Note 2 и Samsung Galaxy S3

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

    Смерти от Синдрома внезапной смерти (он же Sudden Death Syndrome, он же SDS), подвержены аппараты:

    Категория: Гаджеты, Android

     

    Sunduk или 10 секунд на название

    Автор: admin от 26-05-2014, 17:50, посмотрело: 357

    Sunduk или 10 секунд на название

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

    Категория: Программирование

     

    Феерическая расстановка всех точек над Lumia 1020 или каким должен быть настоящий камерофон с поддержкой RAW

    Автор: admin от 26-05-2014, 16:50, посмотрело: 618

    Феерическая расстановка всех точек над Lumia 1020 или каким должен быть настоящий камерофон с поддержкой RAW
    Пришло время собрать в одном месте все-все-все мифы и разоблачения одного из самых противоречивых с точки зрения читателей камерофонов — Lumia 1020.

    А также гвоздь программы, впервые на хабре, у всех на глазах: работа с RAW-исходниками, полученными с 1020, и их обработка.

    Садитесь поудобнее, мы начинаем ;)
    Какие вопросы чаще всего приходят в голову, когда читатель слышит выражение: «Камерофон Lumia 1020 с камерой в 41 мегапиксель»?


  • 41 мегапиксель, как он там умещается?

  • Соответствует ли остальное железо заявленному уровню фотомодуля?

  • И всё же, там правда столько мегапикселей?

  • Да даже если столько, какая от них польза? Зачем столько?

  • Предположим, что в этом есть смысл, но RAW в смартфоне — это же перебор, толку от него с такой матрицы?!!

  • Всё равно зеркалка лучше!


  • P.S. Да, у автора всё так же остался приступ «Люди любят обиженных» и он всё ещё отчаянно пытается восстановить честь финских инженеров, чьи достижения, по мнению автора, были незаслуженно проигнорированы в свете последних событий.

    Феерическая расстановка всех точек над Lumia 1020 или каким должен быть настоящий камерофон с поддержкой RAW
    Пойдём по порядку.

    Категория: Гаджеты, Windows

     

    Рендеринг WEB-страницы: что об этом должен знать front-end разработчик

    Автор: admin от 26-05-2014, 16:50, посмотрело: 414

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

    Данное направление можно и нужно оптимизировать на этапе вёрстки/frontend-разработки, поскольку, очевидно, что разметка, стили и скрипты принимают в рендеринге непосредственное участие. Для этого соответствующие специалисты должны знать некоторые тонкости.

    Категория: Программирование » Веб-разработка

     

    Звуковая карта как последовательный порт

    Автор: admin от 26-05-2014, 16:50, посмотрело: 517

    В современных ПК есть проблема отсутствия простых в использовании интерфейсов. Для использования USB требуется большой объем непростого кода, а для UART нужен переходник USB-COM. Если внешнее устройство несложное, то разработка интерфейса может занять больше времени, чем разработка самого устройства. В то же время во многих устройствах есть аналоговый интерфейс для аудиоустройств, который можно использовать для ввода или вывода данных без какой бы то ни было доработки. Здесь пример ввода данных с платы STM32VLDISCOVERY в ПК с ОС Windows ХР через микрофонный вход. Интерфейс не чисто цифровой, а цифро-аналоговый. Данные с платы передаются пачками из 4-х прямоугольных импульсов разной амплитуды, через ЦАП контроллера. Частота следования импульсов соответствует верхней частоте входного усилителя большинства звуковых карт – 20 кГц. Начало пачки отмечается импульсом удвоенной ширины. Следующие 3 импульса несут информацию, которая заложена в амплитуде импульса. Скорость передачи данных при 4-х разрядном кодировании амплитуды составляет примерно 45 кбит/с.

    Код для прошивки STM32VLDISCOVERY:

    Категория: Железо

     

    [ libGDX ] Пишем полноценную игру под Android. Часть 1

    Автор: admin от 26-05-2014, 15:50, посмотрело: 2825

    Здравствуйте! Я решил попробовать себя на поприще game-dev'а и заодно рассказать и показать как это было.

    Игра представляет собой экран, на котором расположены созвездия. Каждая звезда этого созвездия имеет свой цвет (нота). Например, ноту «До» обычно представляют красным цветом, а «Ми» — желтым. Вот что получится в итоге:

    [ libGDX ] Пишем полноценную игру под Android. Часть 1

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

    Писать будем, используя фреймворк libGDX. Мне он больше всех понравился, как новичку в этом деле. Да и информации по нему я нашел больше. Итак, приступим.

    Категория: Веб-разработка, Android

     

    Разбор задач третьего квалификационного раунда Russian Code Cup 2014

    Автор: admin от 26-05-2014, 13:15, посмотрело: 406

    Разбор задач третьего квалификационного раунда Russian Code Cup 2014


    В субботу 24 мая прошел третий квалификационный раунд RCC 2014. На участие в раунде зарегистрировалось 5483 человека, приняло участие более 1500, из них хотя бы одно решение прислали 893 участника.

    Прищенко Богдан (LeBron), студент Львовского национального университета им. Ивана Франко, первым на 2:25 минуте решил задачу А (Треугольники). Задачу В (Оригами) на 4:44 минуте первым решил Юлдашев Марат (snowbear), задачу С (Митя и граф) первым на 10:34 минуте решил Ахмедов Максим (Zlobober), правильное решение задачи D (Призы) на 26:45 минуте прислал Копелиович Сергей (Burunduk1), а последнюю задачу E (Криптостойкие ключи) быстрее всех решил Пономарев Павел (pperm) на 54:38 минуте.

    По итогам 3 квалификационного раунда не было ни одной дисквалификации за списывание, а 200 лучших спортивных программистов перешли в отборочный раунд.

    Категория: Программирование, Веб-разработка

     

    Совершенствуем понимание веб-страниц

    Автор: admin от 26-05-2014, 13:15, посмотрело: 301

    Уровень подготовки веб-мастера: для всех

    В 1998 году, когда все наши серверы умещались в гараже Сьюзан Войчицки (Susan Wojcicki), мало кто задумывался о том, как javascript или CSS взаимодействуют с поисковым роботом: эти технологии применялись нечасто. Разве что создатели некоторых страниц с помощью javascript заставляли элементы оформления… мигать. Однако с тех пор многое изменилось. Сейчас в Интернете можно найти множество красочных сайтов с интерактивным дизайном, на которых широко используется javascript. И сегодня мы поговорим об индексации ресурсов со сложным интерфейсом и структурой:


    • о том, почему Google обрабатывает их так, как это делают современные браузеры;

    • зачем нужно обращаться к внешним ресурсам;

    • как наша система анализирует код javascript и CSS.

    Категория: Компании » Google

     
    Назад Вперед