• Проектирование RESTful API с помощью Python и Flask

    • Translation
    • Tutorial
    В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API.

    В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

    Что такое REST?


    Характеристика системы REST определяется шестью правилами дизайна:

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

    Читать дальше →
  • Как использовать секционные элементы HTML5

    Один славный малый Matt West c туманного альбиона, промышляющий фрилансом и предпринимательством, предложил нашему вниманию пост: «Как использовать секционные элементы HTML5».
    Ниже приводится его перевод.




    HTML5 предлагает набор секционных элементов, используя которые в своей разметке вы добавляете смысловую или семантическую нагрузку своим страницам, тем самым позволяя компьютерным программам лучше понимать их содержание.
    Прочитав этот пост, вы научитесь применять секционные элементы на ваших веб-сайтах. Я постараюсь объяснить, в каких случаях лучше использовать тот или иной элемент и когда лучше прибегнуть к старому доброму .
    Давайте начнем.
    Читать дальше →
  • 40 ключевых концепций информационных технологий доступно и понятно

    • Translation
    Представляю вашему вниманию перевод очень ёмкой, и в то же время достаточно краткой (для такого масштаба проблемы) статьи Карла Чео. Я решил, что очень хочу сделать её перевод практически сразу, как только начал читать, и очень рад, что в итоге сделал это.
    Для того, чтобы сделать обучение более веселым и интересным, представляю вам перечень важных теорий и концепций информатики, объяснённых с помощью аналогий с минимальным количеством технических деталей. Это будет похоже на очень быстрый курс информатики для всех с целью просто дать вам общее представление об основных концепциях.

    Важные замечания:
    • Пункты с неуказанным источником написаны мной самостоятельно. Поправьте меня, если вы заметите какие-то неточности. Предложите лучшую аналогию, если это возможно.
    • Заголовки ссылаются на соответствующие им статьи в Wikipedia. Пожалуйста, читайте эти статьи для более серьезных и детальных объяснений.
    • Аналогии — отличный способ объяснить материал, но они не идеальны. Если вы хотите по-настоящему понять перечисленные концепции, вам следует начать с фундаментальных азов и рассуждать, исходя из них.

    Также зацените эту инфографику (вариант на русском), если вы просто начинающий программист.
    Читать дальше →
  • Удачная модель ветвления для Git

    • Translation
    Перевод статьи Vincent Driessen: A successful Git branching model

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



    В качестве инструмента управления версиями всего исходного кода она использует Git.

    Читать дальше →
  • Искусство командной строки



      Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

      Enjoy!
    • Ночные кошмары Питона: неявный `this`

        Обсуждение статьи "Не совсем крутой Ruby" зашло достаточно далеко: недостатки и достоинства Ruby между делом перетекали в обсуждение недостатков и достоинств Python. Не сильно удивило то, что передача self в качестве первого аргумента метода класса, некоторым хабравчанам кажется лишней. Ну что ж, не хотите явного self, будет вам неявный this! Под катом, немного магии на чистом Python.
        Читать дальше →
      • Руководство к дескрипторам

        • Translation

        Краткий обзор


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

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

        Читать дальше →
        • +45
        • 115k
        • 5
      • 50+ лучших дополнений к Bootstrap



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

          Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
          Читать дальше →
        • Метаклассы в Python

          • Translation
          Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

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

          Читать дальше →
        • Сайт TrueCrypt сообщает о закрытии проекта и предлагает переходить на BitLocker

            imageРазработчики TrueCrypt ответили: сайт | твиттер
            Разработчик TrueCrypt «David»: «Мы были счастливы, что аудит ничего не выявил. Мы усердно работали над проектом 10 лет, но ничего не длится вечно.»
            Steven Barnhart: (перефразировано) разработчик считает, что форк навредит еще больше: «Исходный код в любом случае доступен, можете подглядывать» (The source is still available as a reference though). «Я спросил, и было очевидно в последнем ответе, что разработчики считают форк вредным, т.к. только они сами разбираются в коде». «Также он сказал, что никакого контакта с правительством, кроме когда ему предлагали „контракт на поддержку“, у него не было».
            Разработчик TrueCrypt «David»: «Битлокер 'достаточно хорош' и Windows был основной целью разработки»
            Цитируя разработчика: «Больше нет интереса».

            TL;DR: «Новая» версия может только дешифровывать данные, и может содержать троян (хотя я и не нашел, но вы мне не верьте на слово). Бинарник подписан верным ключом разработчика. Все старые версии удалены, репозиторий тоже очищен.

            На странице рассказывается о том, что разработка TrueCrypt была прекращена в мае этого года, после того, как Microsoft прекратила поддержку Windows XP, и что TrueCrypt более небезопасен и может содержать уязвимости.
            Далее, на странице содержится подробная инструкция миграции с TrueCrypt на BitLocker.

            На сайте есть также ссылки на бинарный файл TrueCrypt, которые ведут в раздел загрузок SourceForge, вместе с цифровой подписью. Этот файл подписан корректным (старым) ключом, а внутри него:
            Читать дальше →
          • Django на production. uWSGI + nginx. Подробное руководство

            • Translation
            • Tutorial
            Перед вами руководство по настройке production окружения для Django. Здесь будут описаны необходимые шаги по настройке Django, uWSGI и nginx. Руководство охватывает все три компонента — полный стек серверного ПО для веб-приложений.

            Подразумевается, что вы используете Unix-подобную операционную систему и менеджер пакетов, эквивалентный aptitude. Найти эквивалент aptitude почти для любой операционной системы, в том числе и для Mac OS X, для вас не составит никакого труда.

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

            Общая идея


            Веб-сервер может по запросу отдавать пользователям файлы из своей файловой системы, однако он не может напрямую работать с Djangо приложениями. Веб-серверу нужен интерфейс, который будет запускать Django приложение, передавать ему запрос от пользователя и возвращать ответ.

            Для выполнения этих задач был разработан Web Server Gateway Interface — WSGI — стандарт взаимодействия Python программ и веб-сервра.

            uWSGI — одна из реализаций WSGI. В этом руководстве мы установим и настроим uWSGI для создания Unix сокета и взаимодействия с веб-сервером по протоколу WSGI.
            Читать дальше →
          • Ограничиваем интерфейс редактирования с помощью прокси-моделей

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

              А что делать, если мы хотим разрешить пользователю редактировать только часть полей? И в то же время оставить возможность другим пользователям редактировать все поля.
              Читать дальше →
            • Поиск VPS — обновленная версия

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



                Первое и самое существенное нововведение — это появление новых параметров поиска и возможность выбора нескольких пунктов одновременно.

                • Тип жесткого диска (sata, sas, ssd)
                • Операционные системы, которые можно установить на виртуальный сервер
                • Способы оплаты, которые поддерживает хостер
                • Наличие бесплатной панели управления сервером (ISPmanager, cPanel, DirectAdmin, Plesk Panel)
                • Тип администрирования, который идет в комплекте в VPS
                • Возможность поддержки IPv6

                Читать дальше →
              • Django widgets и еще пара трюков



                  Все знают что Django это замечательный фреймворк для разработки, с кучей мощных батареек. Лично для меня, при первом знакомстве с django все казалось крайней удобным — все для удобства разработчика, думалось мне. Но те кто с ним вынужден работать в течении долгого времени, знают, что не все так сказочно, как кажется новичку. Шло время проекты становились больше, сложнее, писать вьюшки стало неудобным, а разбираться во взаимоотношении моделей становилось сложнее и сложнее. Но работа есть работа, проект был большой и сложный, и, ко всему прочему необходимо было иметь систему управления страниц как в cms, и, вроде бы, есть замечательный django cms, к которому всего и надо что написать плагинов. Но оказалось, что можно сделать весь процесс несколько более удобным, добавив пару фич и немного кода.
                  Читать дальше →
                • CSS3-генераторы. Лучшее









                    Доброго времени суток! Сразу объяснюсь по поводу оформления поста: однажды, наткнувшись на статью о CSS-генераторах, меня не сильно порадовало безмерное количество информации и навигационных элементов в представленных генераторах, и еще больше — их пользовательский интерфейс! Возмутило то, что инструменты для работы со стилями — сами не выдержаны в рамках возможностей, которые они представляют… как так?!

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

                    Надеюсь, для многих ноу-хау станет хорошим помощником в процессе веб-разработки.
                    Читать дальше →
                  • Полезности Mercurial

                      Думаю, почти все читающие знают, что такое Mercurial — это распределённая система контроля версий, для исходного кода и других (преимущественно текстовых) файлов. Многие ей пользуются, и знают основные команды, как то удаление/добавление файлов, создание коммита и отправка локальных изменений в другие репозитории. Однако, Mercurial имеет множество не столь известных функций и команд, которые часто достаточно полезны и удобны. Некоторые из них можно использовать сразу после установки по-умолчанию, некоторые нужно включить в настройках, а для других может потребоваться скачать дополнительное расширение.

                      Краткий список того, о чём пойдёт речь в статье:

                      • hg serve (hgweb) — встроенный веб-сервер
                      • расширения pager, progress и color
                      • hg [c]record — выбор отдельных изменений для коммита
                      • revsets и filesets — поиск коммитов и файлов с запросами любой сложности
                      • hg evolve — Changeset Evolution или же «изменяемая история»


                      logo
                      Узнать подробности...
                    • Адаптивный и мобильный дизайн с CSS3 Media Queries

                      • Translation
                      Разрешение экрана в наши дни колеблется от 320px (iPhone) до 2560px (большие мониторы) или даже выше. Пользователи больше не просматривают сайты только на настольных компьютерах. Теперь пользователи используют мобильные телефоны, небольшие ноутбуки, планшетные устройства, такие как iPad или Playbook для доступа в интернет. Поэтому, традиционный дизайн с фиксированной шириной больше не работает. Дизайн должен быть адаптивным. Структура должна автоматически изменяться с учетом всех разрешений дисплеев. Эта статья покажет вам как создавать кросс-браузерный адаптивный дизайн при помощи HTML5 и CSS3 media queries.
                      Читать дальше →
                    • Ежедневная работа с Git

                      • Tutorial
                      Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

                      Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
                      • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
                      • будет ли менеджер и заказчик удовлетворён этим процессом?
                      • будет ли легко работать разработчикам?
                      • смогут ли новички быстро включиться в процесс?
                      • можно ли процесс относительно легко и быстро изменить?


                      Конечно, я попытаюсь рассказать обо всём по-порядку, начиная с основ. Поэтому, эта статья будет крайне полезна тем, кто только начинает или хочет разобраться с git. Более опытные читатели, возможно, найдут для себя что-то новое, укажут на ошибки или поделятся советом.

                      Далее очень много букв случайным образом превратились в пост.