• Скупой не платит дважды – настраиваем память на платформе AMD B450 и получаем бесплатную производительность

      Нельзя отрицать, что компания AMD покоряет рынок процессоров семимильными шагами. Началось всё с появления новинок на базе архитектуры Zen, которые получили имя Ryzen. Да, старт был не таким гладким, как хотелось бы, но шороху производитель навёл немало. В чём секрет успеха второго поколения? Почему энтузиасты обратили особое внимание не на «топовый» чипсет? Правда ли, что в сети есть программы-калькуляторы для настроек памяти? И даже в играх производительность заметно вырастет после тонкой настройки? А что, бывает разная память и какая-то может даже не заработать?


      Читать дальше →
    • Изучаем Docker, часть 2: термины и концепции

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

      Часть 1: основы
      Часть 2: термины и концепции
      Часть 3: файлы Dockerfile
      Часть 4: уменьшение размеров образов и ускорение их сборки
      Часть 5: команды
      Часть 6: работа с данными



      Читать дальше →
    • Делаем современное веб-приложение с нуля

      • Tutorial
      Итак, вы решили сделать новый проект. И проект этот — веб-приложение. Сколько времени уйдёт на создание базового прототипа? Насколько это сложно? Что должен уже со старта уметь современный веб-сайт?

      В этой статье мы попробуем набросать boilerplate простейшего веб-приложения со следующей архитектурой:


      Что мы покроем:

      • настройка dev-окружения в docker-compose.
      • создание бэкенда на Flask.
      • создание фронтенда на Express.
      • сборка JS с помощью Webpack.
      • React, Redux и server side rendering.
      • очереди задач с RQ.
      Читать дальше →
    • Типичные ошибки при работе с PostgreSQL. Часть 2

        Мы продолжаем публиковать видео и расшифровки лучших докладов с конференции PGConf.Russia 2019. В первой части доклада Ивана Фролкова речь шла о непоследовательном именовании, о constraints, о том, где лучше сосредоточить логику — в базе или в приложении. В этой части вас ждет разбор обработки ошибок, конкурентного доступа, неотменяемых операций, CTE и JSON.



        Расскажу такую историю. Наш клиент говорит: «Медленно работает база, а наше приложение занимается обслуживаем населения. Мы боимся, что нас тут поднимут на вилы». Выяснилось, что у них было очень много процессов в состоянии idle in transaction. Приложение начало транзакцию, ничего не делает, но и транзакцию не завершает. Если вы взаимодействуете с какими-то внешними сервисами, то, в принципе, это нормальная ситуация. Другое дело, что если у вас состояние idle in transaction длится долго (больше минуты уже подозрительно), то это плохо потому, что PostgreSQL очень не любит долгие транзакции: VACUUM не сможет почистить все те строки, которые он мог бы увидеть, и долго висящая транзакция эффективно блокирует VACUUM. Начинают разбухать таблицы, индексы становятся всё менее эффективными.

        Читать дальше →
      • Tornado vs Aiohttp: путешествие в дебри асинхронных фреймворков

          Привет! Я Дима, и я довольно давно и плотно сижу на Python. Сегодня хочу показать вам отличия двух асинхронных фреймворков — Tornado и Aiohttp. Расскажу историю выбора между фреймворками в нашем проекте, чем отличаются корутины в Tornado и в AsyncIO, покажу бенчмарки и дам немного полезных советов, как забраться в дебри фреймворков и успешно оттуда выбраться.


          Читать дальше →
        • Django under microscope

            Если по докладу Артёма Малышева (proofit404) будут снимать фильм, то режиссером выступит Квентин Тарантино — один фильм про Django он уже снял, снимет и второй. Все подробности из жизни внутренних механизмов Django от первого байта HTTP-запроса до последнего байта ответа. Феерия работы парсер-форм, остросюжетная компиляция SQL, спецэффекты реализации шаблонизатора для HTML. Кем и как управляется connection pool? Всё это в хронологическом порядке обработки WSGI-объектов. На всех экранах страны — расшифровка «Django under microscope».



            О спикере: Артём Малышев — основатель проекта Dry Python и Core-разработчик Django Channels версии 1.0. Пишет на Python 5 лет, помогал организовывать митапы «Rannts» по Python в Нижнем Новгороде. Артём может быть знаком вам под ником PROOFIT404. Презентация к докладу хранится здесь.
            Читать дальше →
          • Каждый может с легкостью выучить английский язык


              В современном мире знание английского языка приравнивается к элементарным, базовым знаниям. Это так же важно, как знать родной язык, уметь пользоваться компьютером и смартфоном. Английский сегодня нужен абсолютно каждому. Конкретно вам он тоже нужен, даже если вы об этом пока не догадываетесь.

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

              Я составил для вас памятку, которая обязательная поможет в изучении английского. Самая радостная новость: английский можно освоить полностью комфортно и не прилагая адских усилий.
              Читать дальше →
            • Трансформируем рабочее место в лежачее за 200$

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



              Мысль о работе с компьютером лёжа впервые пришла ко мне ещё во времена студенчества, когда после сидения на дешёвом офисном стульчике очень затекала поясница. Беглый поиск в интернете показал, что офисная мода об этом молчит, а недорогие самодельные решения существуют, но выглядело это всё так сомнительно и неэстетично, что отбивало всякую охоту повторять подвиги умельцев.
              Читать дальше →
            • 8 ошибок в произношении английских звуков, которые делает большинство русскоговорящих



                Во время изучения иностранных языков много внимания уделяют произношению звуков и слов. Правильное произношение ставят долго — за несколько занятий поймать правильное звучание слов практически невозможно.

                Причина очень проста. Звуки и звукообразование в разных языках отличается кардинально.
                В японском языке отсутствует звук [l]. И на первых этапах изучения английского языка они заменяют его звуком [r]. Все потому, что в японском звук [r] ударный, а не вибрационный. Во время произношения язык прикасается к нёбу лишь на долю секунды, поэтому на выходе получается что-то среднее между знакомыми нам [р] и [л]. Именно поэтому сложно понять, что имеет в виду японец: «law» или «raw».

                Конечно, при целенаправленных тренировках японцы начинают выговаривать звук [l], но крайне малая часть изучающих английский тренирует произношение настолько глубоко.
                Абсолютно на же ситуация с английским и русским языками. В английском есть ряд звуков, которые очень сложно даются русскоговорящим. Просто потому, что в русском языке их нет. А еще есть нюансы между схожими звуками, которые русское ухо просто не замечает.

                Нередко такие нюансы полностью меняют смысл предложения.
                И вместо «I like this beach» («Мне нравится этот пляж») собеседник услышит «I like this bitch» («Мне нравится эта девушка с пониженной социальной ответственностью»).
                В этой статье мы расскажем о 8 ошибках в произношении, которые часто встречаются у русскоговорящих, а также расскажем хитрости, которые помогут вам от них избавиться. Поехали.
                Читать дальше →
              • Введение в аннотации типов Python. Продолжение


                  Автор иллюстрации — Magdalena Tomczyk


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

                  Читать дальше →
                • REST? Возьмите тупой JSON-RPC

                    В последнее время на Хабре разгорелось много споров по поводу того, как правильно готовить REST API.

                    Вместо того, чтобы бушевать в комментариях, подумайте: а нужен ли вам REST вообще?
                    Что это — осознанный выбор или привычка?

                    Возможно, именно вашему проекту RPC-like API подойдет лучше?
                    Читать дальше →
                  • Светодиодное враньё невиданных масштабов

                      В магазинах можно встретить множество мощных светодиодных ламп, например «свечки» и «шарики» 9 и 11 Вт.

                      Вот только свечек и шариков такой мощности сегодня существовать не может.
                      Читать дальше →
                    • Побеждаем прокрастинацию игровой зависимостью

                      Всем вам, безусловно, знакомо явление прокрастинации. Психологическая неспособность покинуть зону комфорта и начать заниматься каким-то делом здесь и сейчас съела немало человеко-часов представителей самых разных профессий. Под её влиянием, не занимаясь ни делом, ни отдыхом, а только каким-нибудь бесцельным занятием вроде сёрфинга сети, мы зарабатываем только лишний стресс. Это история о том, как одна случайная идея позволила мне не только избавиться от этой проблемы, но и повысить свою продуктивность до уровня, о котором я раньше мог только мечтать.

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

                      image

                      Захожу на кухню, а на столе сидит маленький гномик и вертит в руках перочинный нож. Я что-то говорю гномику, он недовольно сплевывает вбок, нехотя поднимается и отрезает кусок от огромной сосиски, которая лежит на столе. Так я запомнил метод массива splice. Главная идея «Дворца Памяти» — придумать образ, который просто невозможно забыть, и прикрепить его в воображении к реальному месту, которое хорошо знаешь.
                      Читать дальше →
                    • Детальная настройка браузера Firefox

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


                        Надеюсь она немножко поможет в популяризации этого чудесного браузера.

                        Читать дальше →
                      • Введение в аннотации типов Python

                          Введение



                          Автор иллюстрации — Magdalena Tomczyk


                          Вторая часть


                          Python — язык с динамической типизацией и позволяет нам довольно вольно оперировать переменными разных типов. Однако при написании кода мы так или иначе предполагаем переменные каких типов будут использоваться (это может быть вызвано ограничением алгоритма или бизнес логики). И для корректной работы программы нам важно как можно раньше найти ошибки, связанные с передачей данных неверного типа.


                          Сохраняя идею динамической утиной типизации в современных версиях Python (3.6+) поддерживает аннотации типов переменных, полей класса, аргументов и возвращаемых значений функций:



                          Аннотации типов просто считываются интерпретатором Python и никак более не обрабатываются, но доступны для использования из стороннего кода и в первую очередь рассчитаны для использования статическими анализаторами.


                          Меня зовут Тихонов Андрей и я занимаюсь backend-разработкой в Lamoda.


                          В этой статье я хочу объяснить основы использования аннотаций типов и рассмотреть типичные примеры, реализуемые аннотациями из пакета typing.

                          Читать дальше →
                        • Дружба, благодаря которой Google вырос до огромных размеров

                          • Перевод
                          Программируя вместе за одним компьютером, Джефф Дин и Санджай Гемават изменили курс компании — и весь Интернет. На иллюстрации: лучшие программисты Google иногда кажутся двумя полушариями одного мозга. Рисунок Дэвида Планкерта

                          Однажды в марте 2000 года шесть лучших инженеров Google собрались в импровизированном конференц-зале. Произошло ЧП: с октября 1999 года остановились краулеры. Хотя пользователям ещё выдавали поисковые результаты, но они устарели на пять месяцев. На карту было поставлено больше, чем предполагали инженеры. В данный момент Ларри Пейдж и Сергей Брин вели переговоры о поставке поиска Google на крупнейший в интернете портал Yahoo и обещали увеличить поисковый индекс в десять раз, чтобы идти в ногу со Всемирной паутиной, которая за предыдущий год удвоилась в размере. Если краулеры не починят, google.com застрянет в прошлом, сделка с Yahoo может провалиться, а компания рискует сжечь полученные инвестиции и кануть в небытие.
                          Читать дальше →
                        • Бэкап для Linux, или как создать снапшот

                            Всем привет! Я работаю в Veeam над проектом Veeam Agent for Linux. С помощью этого продукта можно бэкапить машину с ОС Linux. «Agent» в названии означает, что программа позволяет бэкапить физические машины. Виртуалки тоже бэкапит, но располагается при этом на гостевой ОС.

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

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

                            Всех заинтересовавшихся прошу под кат!


                            Читать дальше →
                            • +22
                            • 13,5k
                            • 5
                          • Домашняя электросеть

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

                              Это не столько инструкция, сколько объяснение, что должно быть сделано, так как каждое подключение по сути индивидуально. В любом случае необходима консультация с учетом реальной ситуации.
                              Читать дальше →
                            • Продвинутое конфигурирование Docker Compose (перевод)

                                Docker Compose обладает целым рядом нетривиальных способов применения, которые мы рассмотрим в этой заметке. Это очередной перевод статьи, которую мы разбирали при подготовке материалов нашего курса Python для Web-разработки.



                                Контроль порядка запуска


                                Docker Compose запускает контейнеры в порядке зависимостей, используя опцию depends_on, чтобы указывать, когда запускается сервис. Для определения порядка запуска Compose применяет depends_on, links, volumes_from и network_mode: «service: ...».

                                Если контейнер должен дождаться состояния “ready” другого контейнера, можно использовать инструменты wait-for-it или dockerize. Они будут проверять хосты и порты до тех пор, пока TCP соединение не будет подтверждено. Для включения принудительного ожидания в композицию необходимо добавить entrypoint:

                                version: '2'
                                
                                services:
                                    web:
                                        build: .
                                        ports:
                                            - "80:8000"
                                        depends_on:
                                            - db
                                        entrypoint: "./wait-for-it.sh db:5432"
                                    db:
                                        image: postgres

                                Вы всегда можете самостоятельно написать скрипт-обёртку, если возникнет необходимость в усилении контроля.
                                Читать дальше →
                                • +17
                                • 37k
                                • 8