• Модернизация старого PHP-приложения

    • Перевод
    • Tutorial

    Недавно мне выдалась случайная возможность поработать с несколькими старыми PHP-приложениями. Я заметил несколько распространённых антипаттернов, которые пришлось исправлять. Эта статья не о том, как переписывать старое PHP-приложение на <вставьте сюда название чудесного фреймворка>, а о том, как сделать его более удобным в сопровождении и менее хлопотным в работе.
    Читать дальше →
  • Создание CI/CD-цепочки и автоматизация работы с Docker

    • Перевод
    Я написала мои первые сайты в конце 90-х. Тогда приводить их в рабочее состояние было очень просто. Был Apache-сервер на каком-нибудь общем хостинге, на этот сервер можно было войти по FTP, написав в браузерной строке нечто вроде ftp://ftp.example.com. Потом надо было ввести имя и пароль и выгрузить файлы на сервер. Другие были времена, всё тогда было проще, чем сейчас.



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

    Для моего персонального проекта у меня была особая конфигурация. И я знала, что мне нужна возможность разворачивать сайт в продакшне, выполняя всего одно действие: запись кода в ветку master на GitHub. Я, кроме того, знала, что мне, для обеспечения работы моего маленького веб-приложения, не хочется заниматься управлением огромным кластером Kubernetes, или пользоваться технологией Docker Swarm, или поддерживать парк серверов с подами, агентами и всякими другими сложностями. Для того чтобы достичь цели по максимальному упрощению работы, мне понадобилось познакомиться с CI/CD.

    Если у вас имеется маленький проект (в нашем случае речь идёт о Node.js-проекте) и вам хотелось бы узнать о том, как автоматизировать развёртывание этого проекта, сделав при этом так, чтобы то, что хранится в репозитории, в точности соответствовало бы тому, что работает в продакшне, то, полагаю, вас может заинтересовать эта статья.
    Читать дальше →
    • +31
    • 25,6k
    • 4
  • Cложный код или история одного интервью

    Хотелось бы поделиться своей историей неудачи, если понимать под этим негативный фидбек от компании после ревью технического задания. Конечно же, каждый подобный опыт — это всегда прекрасная возможность пересмотреть стратегию, сделать определенные выводы из своих или чужих ошибок. И в данном случае, у меня есть отличный повод порефлексировать над пережитым опытом интервью, даже несмотря на то, что он не закончился оффером. Хочу заранее выразить свою благодарность за время, которое вы потратите на чтение этой статьи с кодом и усилия, приложенные на их понимание. Хочу выразить двойную благодарность, если при этом читатель поделится своим мнением.
    Читать дальше →
  • «Двойное дно Telegram» — Конкурс на $5000



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



      Ни один из популярных мессенджеров не имеет защиты от подобной «атаки». Мы предлагаем тебе исправить эту ситуацию на основе открытого кода Telegram. Если твое решение окажется лучшим, то ты получишь 5000$. Твоей задачей будет разработать принцип «двойного дна» в оригинальном клиенте Telegram.

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

      Подробнее о конкурсе на нашем Telegram-канале @postuf
    • Хиральность, космические лучи и эволюция



        Случайности неслучайны, по крайней мере, если более пристально рассмотреть законы природы, управляющие миром вокруг нас. Каждый элемент, каждая молекула подчиняются определенным правилам, нарушив которые они могут попросту перестать существовать. Вся структура мироздания, несмотря на видимый хаос, весьма упорядочена. Правда не всегда удается понять, почему все устроено именно так, и никак иначе. Сегодня мы познакомимся с исследованием, в котором ученые из Стэнфордского университета (США) выдвинули теорию о том, что один из основополагающих элементов нашего мира, хиральность, был сформирован посредством длительного влияния космических лучей. Что такое хиральность, как именно космические лучи повлияли на ее формирование и как это проверить? Ответы ждут в докладе ученых. Поехали.
        Читать дальше →
      • Коронавирус: почему надо действовать прямо сейчас

        • Перевод
        • Tutorial

        Вступление


        Учитывая всё, что происходит с коронавирусом, может оказаться очень сложно принять решение, что делать прямо сейчас. Стоит ли подождать, пока станет больше информации? Надо ли предпринять что-то уже сегодня? Если да, то что?

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

        • Сколько людей заболеют коронавирусом в вашем регионе?
        • Что случится, когда они начнут заболевать?
        • Что вы должны делать?
        • Когда?

        Когда вы закончите читать статью, вы придёте к следующим выводам:

        • Коронавирус приближается к вам.
        • Он приближается с экспоненциальной скоростью: сперва постепенно, а потом внезапно.
        • Это вопрос нескольких дней. Может быть, неделя или две.
        • Когда это случится, ваша система здравоохранения будет перегружена.
        • Ваши сограждане будут лечиться в коридорах.
        • Изможденные медицинские работники сломаются. Некоторые погибнут.
        • Им придётся решать, кто из пациентов получит лечение, а кто умрет.
        • Единственный способ предотвратить это — социальная изоляция уже сегодня. Не завтра. Сегодня.
        • Это значит держать как можно больше людей дома, начиная с сегодняшнего дня.

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

        Сейчас вы можете опасаться: что, если это избыточная реакция? Не станут ли люди смеяться надо мной? Вдруг они разозлятся на меня? Не буду ли я выглядеть глупо? Не лучше ли подождать, пока другие сделают первые шаги? Что, если это слишком навредит бизнесу?

        Однако через 2-4 недели, когда весь мир будет закрыт и изолирован, когда окажется, что несколько драгоценных дней социальной изоляции, которые вы организовали, спасли жизни, вас больше не будут критиковать. Люди будут благодарить вас за то, что вы приняли правильное решение.

        Итак, давайте разбираться.
        Много графиков и длинный текст
      • Инструменты Domain Driven Design

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

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



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

          Что такое DDD и какие инструменты в нем есть, мы расскажем в статье на основе доклада Артема Малышева. Подход DDD в Python, инструменты, подводные камни, контрактное программирование и проектирование продукта вокруг решаемой проблемы, а не используемого фреймворка — все это под катом.
          Читать дальше →
        • Предсказываем финансовые кризисы с помощью Python

            По состоянию на 9 марта 2020 мы имеем резкое снижение рынков США начиная с исторического максимума в 20-числах февраля 2020, которое на данный момент составило около -16%. Новости пестрят заголовками про надвигающуюся рецессию из-за коронавируса, Россия вышла из сделки Опек+, что ударило по ценам на нефть (-20% за день) и завтра, (10 марта 2020) ожидается снижение рынка ММВБ также на 20%, судя по котировкам наших акций на западных рынках.


            Ждет ли нас глобальная рецессия? В этой статье мы попробуем разобраться как можно заранее увидеть сигналы начала рецессии средствами Python.
            Читать дальше
          • Laravel+Docker+Gitlab. С чего начать

            Я обычно всегда обходился без докера и думал, что докер нужен только для больших проектов в больших компаниях. Но однажды я увидел как работает докер в паре с гитлабом у моего товарища и понял, что мне все таки стоит его изучить. Однако, как обычно это бывает, одной подходящей статьи я не нашел — они были либо слишком сложные, либо не полные, либо подразумевали, что вы все знаете само собой. Мне пришлось долго искать различные источники, соединять все это вместе и в итоге у меня получилось сделать простенький проект и CI/CD для него.

            Всю работу можно разделить на три части: на локальной машине, на гитлабе и на сервере.

            Итак, для реализации проекта нам понадобится аккаунт gitlab и удаленный сервер с виртуализацией KVM или XEN.

            Часть 1. Локальная машина


            На локальной машине необходимо установить docker.

            Замечание
            Тут небольшое отступление. Docker можно поставить как на Linux системах (как Ubuntu, например), так и на Windows и MacOS. По поводу macos я ничего сказать не могу, а вот установка под Windows не самая хорошая идея для начинающего. Как минимум из-за того, что все мануалы и документации написаны для linux систем. Так и из-за того, что можно нажить проблем с доступом к различным папкам и файлам. Также докер конфликтует с виртуальной машиной VirtualBox. Поэтому проще и быстрее будет сделать виртуальную машину с Ubuntu и работать под ней
            Читать дальше →
          • React.js: собираем с нуля изоморфное / универсальное приложение. Часть 1: собираем стек

            image

            Лицо моей жены, когда она вычитывала эту статью


            Я решил написать цикл статей, который и сам был бы счастлив найти где-то полгода назад. Он будет интересен в первую очередь тем, кто хотел бы начать разрабатывать классные приложения на React.js, но не знает, как подступиться к зоопарку разных технологий и инструментов, которые необходимо знать для полноценной front-end разработки в наши дни.


            Я хочу с нуля реализовать, пожалуй, наиболее востребованный сценарий: у нас есть серверная часть, которая предоставляет REST API. Часть его методов требует, чтобы пользователь веб-приложения был авторизован.

            Читать дальше →
          • Книга «Вселенная. Путешествие во времени и пространстве»

              image «Вселенная. Путешествие во времени и пространстве» написана профессиональным астрономом, директором Астрономической обсерватории Иркутского государственного университета Сергеем Язевым.

              «О если бы писали мы о том лишь, что доподлинно известно, подумайте, о трезвые умы, как было бы читать неинтересно!»

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

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

              Музей космонавтики
              Читать дальше →
            • Cassandra. Как не умереть, если знаешь только Oracle

                Привет, Хабр.

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

                Чем хороша Cassandra? Это NoSQL-база данных, cпроектированная без единой точки отказа, которая хорошо масштабируется. Если вам нужно добавить пару терабайт для какой-нибудь базы, вы просто добавляете ноды в кольцо. Расширить ее на еще один дата-центр? Добавляете ноды в кластер. Увеличить обрабатываемый RPS? Добавляете ноды в кластер. В обратную сторону тоже работает.



                В чем еще она хороша? В том, чтобы обрабатывать много запросов. Но много — это сколько? 10, 20, 30, 40 тысяч запросов в секунду — это немного. 100 тысяч запросов в секунду на запись — тоже. Есть компании, которые говорили, что они держат 2 млн. запросов в секунду. Вот им, наверное, придется поверить.

                И в принципе у Cassandra есть одно большое отличие от реляционных данных — она вообще на них не похожа. И об этом очень важно помнить.
                Читать дальше →
              • Donate — демон для автоматической оплаты задач на GitHub

                  Российский хакер Михаил Клементьев (jollheef) как аноним представил на LOR'е новый опенсорсный проект donate, который он описывает как «self-hosted сервис пожертвований на задачи».

                  Cервис можно использовать для оплаты работы над опенсорсными проектами. Вероятно, таким способом спонсоры могут оплачивать труд мейнтейнера или направлять его внимание на конкретные тикеты. Или владелец репозитория может деньгами стимулировать сообщество закрывать задачи, на которые у него самого нет времени. Текущий список вознаграждений для проектов GitHub обновляется на страничке donate.dumpstack.io.

                  Главные особенности сервиса — абсолютная простота, отсутствие комиссий, поддержка нескольких криптовалют и разных хостингов (пока только GitHub).
                  Читать дальше →
                • Свидетельства, по нескольку десятилетий обманывавшие учёных

                  • Перевод


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

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

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

                    image

                    В конце прошлого года случилось давно ожидаемое литературное событие — группа переводчиков, которая в течении пяти лет переводила роман «Червь» известного канадского писателя Джона МакКрэя, пишущего под псевдонимом «Wildbow», наконец-то завершила работу.

                    Если вы не слышали об этом романе, или не брались за него по причине незавершенности перевода, то я вам даже немного завидую — вас ожидает пара месяцев (а то и полгода — роман чудовищно, невообразимо огромен) отличного чтения. «Червь» сложный, многоплановый НФ триллер со сложным рациональным сюжетом. (Немного больше здесь:)
                    Внимание: Опасайтесь спойлеров — роман к ним чувствителен. Поэтому, если вы не прочли роман — лучше всего отложить чтение статьи и скачать книгу. Помните: несмотря на то, что текст распространяется свободно, автору очень нужны ваши пожертвования — это основной источник его доходов.
                    Ну, а тех из читателей, что уже прочли роман, я приглашаю познакомиться с «Клубом любителей попереводить Червя» — с командой, подарившей нам русский перевод. Уверен, что даже далеким от литературы читателям Хабра будет интересно ознакомиться с опытом организации успешного проекта, связавшего воедино множество творческих личностей.
                    Читать дальше →
                  • Письмо начинающему изучать Data Science

                    Я бы хотел получить такое письмо три года назад, когда только начинал изучать Data Science (DS). Чтобы там были необходимые ссылки на полезные материалы. Статья не претендует на полноту охвата необъятной области DS. Однако для начинающего специалиста будет полезна.


                    Нейронные сети – это...

                    Читать дальше →
                  • Принцип увеличения гибкости характеристик современных автомобильных ДВС


                      Насколько важно иметь совершенный код в программе для ее быстрой и качественной работы? Настолько же важно для ДВС тратить меньше энергии там, где этих затрат можно избежать.
                      Прошлая статья из-за упрощений вызвала вопросы критического характера у части хабра-людей. В этой я попробую ответить на них подробнее как и обещал, а так же раскрыть один из основных принципов ДВС последних десятилетий упомянутый в статье «Эволюция развития автомобильных двигателей с начала 90-х годов.»
                      Читать дальше →
                    • Объяснение парадокса Ферми в рамках космической социологии Лю Цысиня

                        Млечный путь

                        Не будем спойлерить сюжет или технологии, описанные в увлекательной трилогии «Память о прошлом Земли», нас интересует объяснение парадокса Ферми, данное китайским писателем, и только оно.
                        Читать дальше
                      • Книга «Нереальная реальность. Путешествие по квантовой петле»

                          image Привет, Хаброжители! Что есть время и пространство? Откуда берется материя? Что такое реальность?
                          «Главный парадокс науки состоит в том, что, открывая нам твердые и надежные знания о природе, она в то же время стремительно меняет ею же созданные представления о реальности. Эта парадоксальность как нельзя лучше отражена в книге Карло Ровелли, которая посвящена самой острой проблеме современной фундаментальной физики — поискам квантовой теории гравитации. Упоминание этого названия многие слышали в сериале “Теория Большого взрыва”, но узнать, в чем смысл петлевой гравитации, было почти негде. А между тем эта теория — один из важных игроков на переднем крае фундаментальной физики», — Александр Сергеев, сооснователь, автор заданий и завлаб проекта «Открытая лабораторная».
                          Читать дальше →