• Понимаем декораторы в Python'e, шаг за шагом. Шаг 1

    • Translation
    • Tutorial

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

    Итак, что же такое «декоратор»?


    Впереди достаточно длинная статья, так что, если кто-то спешит — вот пример того, как работают декораторы:
    def makebold(fn):
        def wrapped():
            return "<b>" + fn() + "</b>"
        return wrapped
     
    def makeitalic(fn):
        def wrapped():
            return "<i>" + fn() + "</i>"
        return wrapped
     
    @makebold
    @makeitalic
    def hello():
        return "hello habr"
     
    print hello() ## выведет <b><i>hello habr</i></b>

    Те же из вас, кто готов потратить немного времени, приглашаются прочесть длиииинный пост
  • Понимаем декораторы в Python'e, шаг за шагом. Шаг 2

    • Translation
    • Tutorial

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


    Итак, в первой части данной статьи мы совершили базовое знакомство с декораторами, принципами их работы и даже написали свой вручную.
    Однако, все декораторы, которые мы до этого рассматривали не имели одного очень важного функционала — передачи аргументов декорируемой функции.
    Что ж, исправим это недоразумение!
    Читать дальше →
  • Fabric — пара прикладных рецептов

      Сегодня неожиданно понял, что скрипты — это сила (спустя несколько месяцев использования fabric). На самом деле 30 минут потраченные на написание адекватного сценария избавляют от многих совокупных часов повторения ненужных действий. Для упрощения жизни адептов python'а существует такой прекрасный модуль как fabric. И я хочу поделиться парой кусков своего fab-файла как пример упрощения жизни девелопера.

      Это будут функции: «умный» комментатор локальных файлов и git-коммитер.
      Читать дальше →
      • +24
      • 22.2k
      • 7
    • Циклическое слайд-шоу на чистом CSS3

      • Translation
      • Tutorial
      Благодаря CSS3 мы можем создавать эффекты анимации, не используя JavaScript, что упростит работу многих разработчиков.
      Мы не должны злоупотреблять CSS3, потому что старые браузеры не поддерживают все его свойства. В любом случае, все мы видим потенциал CSS3, и в этой статье мы обсудим, как создать зацикленный слайдер изображений, используя только CSS3-анимацию.

      Скриншот слайд-шоу на чистом CSS3
      Читать дальше →
    • Настоящие нечестные конкурентные преимущества

      • Translation
      image

      Что, если кто-нибудь скопирует вашу гениальную бизнес-идею?



      Около двадцати человек на Answers OnStartups задали этот вопрос в той или иной форме:
      Когда я встречаюсь с инвестором-ангелом, он может спросить: «Что, если большая компания скопирует твою идею и разработает такой же сайт, как у тебя после того, как твой сайт увидит мир?»

      Как я могу ответить на этот вопрос?

      Нет, вопрос звучит иначе: что вы сейчас делаете, зная, что большая компания будет копировать вашу идею?
      Читать дальше →
    • PHP: фрактал плохого дизайна

      • Translation

      Предисловие


      Я капризный. Я жалуюсь о многих вещах. Многое в мире технологий мне не нравится и это предсказуемо: программирование — шумная молодая дисциплина, и никто из нас не имеет ни малейшего представления, что он делает. Учитывая закон Старджона, у нас достаточно вещей для постижения на всю жизнь.

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

      PHP — единственное исключение. Фактически каждая деталь PHP в какой-то мере поломана. Язык, структура, экосистема: всё плохо. И даже нельзя указать на одну убийственную вещь, настолько дефект систематичный. Каждый раз, когда я пытаюсь систематизировать недостатки PHP, я теряюсь в поиске в глубину обнаруживая всё больше и больше ужасных мелочей(отсюда фрактал).

      PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.
      Читать дальше →
    • PHP — отстой! Но я люблю его!

      • Translation
      Буквально вчера я прочёл весьма занимательный пост PHP: a fractal of bad design (русский вариант на хабреприм. перев.). Этот неоднозначный и провокационный топик широко обсуждается всем PHP-сообществом. Честно говоря, там есть как действительно хорошие позиции и замечания, так и откровенные ошибки, не позволяющие увидеть всю картину в целом.

      Читать дальше →
    • Форд, Тойота и морские свинки

        — Какое отношение имеет морская свинка к морю?
        — Примерно такое же, как утконос к проектированию дирижаблей.


        Введение.


        Я имею обыкновение во время прогулок прокручивать информацию из нескольких источников, сопоставляя куски. Одна из любопытных находок – почти полное соответствие статистических наблюдений Демарко и Листера в «Peopleware» и теоретических выкладок Голдратта в «Критической цепи».

        Осенью 2011 я крутил в голове:
        [1] «Стоя на плечах гигантов» Эли М. Голдратт © Eliyahu M. Goldratt, 2008
        [2] «Производственный менеджмент: управление потоком» Одед Коуэн, Елена Федурко
        [3] «История одной доски» (http://cartmendum.livejournal.com/tag/theboard).

        Далее хотелось бы написать: «Как вдруг…», — но это будет неправдой. Это случилось не вдруг. Мне понадобилось пару недель, но, в конце концов, в голове сложилась достаточно цельная картинка.

        За что именно я зацепился:
        • Таичи Оно (Öno Taiichi) не понимал, почему его система работает.
        • Существует несколько разных типов производственных потоков – V, A, T, I. Каждый тип потока ставит особые задачи.
        • Неудачи внедрения доски Максима Дорофеева в некоторых подразделениях
        • Ряд компаний не смог внедрить систему Тойота, несмотря на все приложенные усилия.
        • Система Тойота и система Форда основывается на одинаковых принципах, но прикладные решения ограничены определенными типами производства.
        Читать дальше →
      • Что такое Grab:Spider?

          Никак не могу дописать документацию по Grab:Spider — это часть библиотеки Grab — для написания асинхронных пауков. Подумал выкладывать куски документации на хабрахабр. Думаю, с некоторым фидбэком дело быстрей пойдёт. На данный момент в документации есть лишь введение, описывающие в общих чертах, что за это за зверь такой Grab:Spider. Его и выкладываю.
          Читать дальше →