• Alpine собирает Docker билды под Python в 50 раз медленней, а образы в 2 раза тяжелей

    • Translation


    Alpine Linux — часто рекомендованный как базовый образ для Docker`а. Вам говорят, что использование Alpine сделает ваши билды меньше, а процесс сборки быстрей.

    Но если вы используете Alpine Linux для Python приложений, то он:

    • Делает ваши билды намного медленней
    • Делает ваши образы больше
    • Тратит ваше время
    • И в итоге может стать причиной ошибок в рантайме
    Читать дальше →
  • Чтобы избавиться от боли в спине вам, возможно, придётся сидеть по-другому

    • Translation


    Когда я сижу, у меня болит спина.

    Это происходит уже последние 10 лет. И неважно, где я нахожусь – на работе, в ресторане, даже дома на диване. Моя поясница кричит: «Прекрати сидеть!»

    Чтобы уменьшить боли в спине, на работу я купила себе коленный стул. Потом стол для работы стоя. Потом вернулась к обычному стулу, потому что мне стало больно стоять.

    Я ходила к врачам, хирургам-ортопедам и специалистам по боли. Я освоила пилатес, увеличила свою гибкость и силу мускулов. В какой-то момент мой пресс стал таким сильным, что муж стал называть его «дощечкой».

    Эти средства немного помогли – сначала. Но боль так и не ушла. Поэтому несколько лет назад я решила принять это как должное: сидячее положение причиняет мне боль, и так будет всегда.
    Читать дальше →
  • Антисобеседования

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


    Собеседование — это экзамен


    Ведущий — строгий учитель, а кандидат — студент. Классический сеттинг. Обычно проходит так. Спросили откуда ты, что ты, и потом пошло техническое собеседование.

    Начинается с простых вопросов на раскачку, примерно таких:
    Читать дальше →
  • Добро пожаловать на борт: вводим новых разработчиков в команду


      Привет, Хабр! Меня зовут Андрей Гоменюк, я тимлид одной из команд серверной разработки Badoo.

      На майском Badoo Techleads Meetup, посвящённом управлению разработкой, я поделился опытом интеграции новичков в команду. А сегодня делюсь текстовым дополненным и улучшенным вариантом своего доклада.

      Представьте, что сегодня ваш первый рабочий день в Badoo. Каких же знаний и умений ждёт от вас отдел и в частности я, руководитель? Как минимум таких:
      Читать дальше →
    • Полноценный REST API для перфекционистов за 5 минут



        Привет, Хабр! Меня зовут Владимир, мне 28 лет и я наркоман наркоман. Мой наркотик – простота. На простоту я подсел из-за своего перфекционизма, которым меня наградили при рождении.

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

        Мир вокруг не идеален, сложную вещь сделать простой – невероятно сложно, поэтому всё чрезмерно усложнено. Людям нравится чувствовать себя профессионалами, поэтому они оперируют сложными терминами, когда в этом нет необходимости, так они ощущают свою значимость и заполняют пустоту, которая образовалась из-за страха потерянного времени.
        Читать дальше →
      • Кейс NGINX: Как противостоять DDoS-атакам

          Основная цель нашей работы состоит в том, чтобы сделать IaaS простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Поэтому мы проводим постоянную оптимизацию всех систем и рассказываем о том, что нам удалось сделать, в нашем блоге на Хабре.

          Пара примеров:


          Сегодня мы решили взглянуть на западный опыт и кратко проанализировать тему балансировки нагрузки. Нас привлекла заметка на тему работы с DDoS-атаками.

          Читать дальше →
          • +14
          • 25.3k
          • 5
        • Чего мы больше получаем от компьютерных игр: вреда или пользы?



            Большинство людей, сталкивавшихся с компьютерными играми, имеют об этом времяпрепровождение либо отрицательно, либо положительное мнение. Равнодушных, в общем-то, немного. И вот уже много лет не утихают споры между противниками и сторонниками компьютерных игр, причём аргументы приводятся самые разнообразные. Порой диву даёшься, какие логические цепочки выстраивают. И в основном обе стороны упирают на моменты, связанные с психикой, социумом, личностным развитием. Давайте попробуем разобраться, что думают о видеоиграх психологи.
            Читать дальше →
          • Разработчик заявил об «официальном джейлбрейке» PS4



              Если у вас есть игровая консоль PS4 и вы ждете ее взлома, то есть немного хороших новостей. На днях разработчик, известный под ником CTurt, объявил о выходе «официального джейлбрейка PS4». Для того, чтобы добиться поставленной цели, CTurt решил использовать эксплоит для ядра FreeBSD.

              Сам взломщик является «С-программистом», который интересуется эксплоитами и реверсивным инжинирингом. Также он интересуется веб-разработкой и игровым дизайном.
              Читать дальше →
            • Как работает yield

              • Translation
              На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

              Вот исходный вопрос:
              Как используется ключевое слово yield в Python? Что оно делает?

              Например, я пытаюсь понять этот код (**):
              def _get_child_candidates(self, distance, min_dist, max_dist):
                  if self._leftchild and distance - max_dist < self._median:
                      yield self._leftchild
                  if self._rightchild and distance + max_dist >= self._median:
                      yield self._rightchild
              

              Вызывается он так:
              result, candidates = list(), [self]
              while candidates:
                  node = candidates.pop()
                  distance = node._get_dist(obj)
                  if distance <= max_dist and distance >= min_dist:
                      result.extend(node._values)
                      candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
                      return result
              


              Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

              ** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

              Подробный и обстоятельный ответ
            • Django DB Mailer — простая и удобная батарейка, для отправки почтовых сообщений в вашем проекте

              • Tutorial
              В подавляющем большинстве проектов используется отправка сообщений на почтовые адреса клиентов/админов/отделов. На сколько утомительно каждый раз создавать шаблоны на файловой системе, задавать сигналы, использовать часто дублирующийся код для рендеринга и отправки.

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

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

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


              Читать дальше →