nullfaces

Система управление правами доступа на Python

Недавно задался целью реализовать элегантный способ для управления правами доступа абстрактных объектов системы, о чем и хочу рассказать в этом тексте. В частности данный функционал понадобился для работы cubelibre.ru, поэтому опишу суть проблемы на конкретном примере. Практически любое приложение в наше время имеет ряд сущностей, которые необходимо контролировать, а именно устанавливать какие то правила, согласно которым должно регулироваться поведение сущности в системе. Простейшим примером будет такая сущность как пользователь. Существуют разные действия, которые пользователи могут совершить в системе. В cubelibre.ru например, есть группа пользователей "читатели" которые могут приобретать рассказы, увеличивать как рейтинг рассказа так и рейтинг других пользователей системы, а так же оставлять комментарии к рассказам при этом список возможностей постоянно расширяется. Приятно иметь средство управления возможностями пользователей, например кому то запретить написание комментариев к рассказам. Помимо этого рассказы сами по себе так же являются сущностями которыми хорошо бы управлять, то есть, например указать что для данного рассказа не может быть оставлен комментарий или автор больше не может изменять какие то поля рассказа. Для реализации подобного функционала хотелось бы иметь универсальное решение, которое при этом было бы очень простым и понятным.

Далее

This is Scala! Часть II. Коллекции

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

Наверно стоит начать с того, что же такое коллекции. По сути коллекции это пакет, в который входят множество классов, цель которых хранить другие объекты и предоставлять методы для манипуляции своим содержимым - контейнер для объектов. Коллекции бывают разного типа, в целом они отличается особенностями хранения объектов и доступа к ним. Коллекции это очень богатая и интересная тема. Есть множество толстых книг посвященных тому как работают коллекции в том или ином языке программирования, какие типы структур данных бывают, как они реализую хранение и доступ к своему содержимому. Scala содержит огромное количество классов в пакете scala.collection, который в свою очередь делится на два под пакета - scala.collection.immutable и scala.collection.mutable. Отличия между пакетами в том, что в immutable хранятся классы которые реализуют неизменяемые коллекции, а пакет mutable изменяемые. В чем практическое отличие? Лучше объяснить на примере.

Далее

Что такое cubelibre.ru

Cubelibre.ru – это интернет сервис для людей, которые пишут литературные произведения, а так же для тех кто любит читать. Основные цели проекта следующие:

Коммерческая выгода владельцев сервиса заключается в получении фиксированного процента с каждой покупки.

Далее

This is Scala! Часть I. Функция

Снова подходит такой момент в жизни когда хочется чего то нового, так как я с определенной долей самолюбия могу назвать себя программистом, захотелось мне нового языка программирования. Выбор под каким то скрытым общественным давлением пал на Scala. Хотя почему скрытым? На самом деле, в последнее время просматривается тенденция в сторону языков программирования которые ориентируется на выполнение в JVM. Список таких языков достаточно велик, на мой взгляд упоминания заслуживают следующие Clojure, Groovy, Jython и собственно Scala. Clojure меня изначально пугает возможно в будущем я и смогу смотреть в его сторону, но сейчас явно не тот случай. Jython не сулил мне захватывающих минут при его изучении, так как с Java и Python я знаком, и как показала практика этого более чем достаточно. Groovy не подошел тем что подошла Scala. Изучение Scala сулило все то чего так хотелось, а именно: что то новое, что то правильное (такое как Python), что то стабильное (JVM), так как я не отношу себя к тем людям которые могут изучить язык программирования "для фана", для меня было важно что бы язык был практичным и перспективным. Так же меня подкупило то что Java фреймворк Play! поддерживал Scala. При этом у Scala существует и собственный фреймворк Lift упоминания о котором в последнее время я все чаше и чаше слышу.

Далее