• Вам действительно нужен Redux?

      Не так давно React позиционировал себя как "V in MVC". После этого коммита маркетинговый текст изменился, но суть осталась той же: React отвечает за отображение, разработчик — за все остальное, то есть, говоря в терминах MVC, за Model и Controller.


      Одним из решений для управления Model (состоянием) вашего приложения стал Redux. Его появление мотивировано возросшей сложностью frontend-приложений, с которой не способен справиться MVC.


      Главный Технический Императив Разработки ПО — управление сложностью

      Совершенный код

      Redux предлагает управлять сложностью с помощью предсказуемых изменений состояния. Предсказуемость достигается за счет трех фундаментальных принципов:


      • состояние всего приложения хранится в одном месте
      • единственный способ изменить состояние — отправка Action'ов
      • все изменения происходят с помощью чистых функций

      Смог ли Redux побороть возросшую сложность и было ли с чем бороться?

      Читать дальше →
    • Вопросы для собеседования бэкенд-разработчика

      • Перевод
      Этот список появился как личная памятка по темам, которые я обсуждал с коллегами и друзьями и в которых хотел разобраться поглубже…

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

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

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

        В объектной же парадигме для реализации связи объектов используют их идентификаторы. Причем, если связи объектов придать строгую симметричную форму: в виде пары прямая | обратная ссылка, то это позволяет практически полностью заменить Select естественной навигацией по ссылкам. Но что не менее важно, симметричная форма делает связь объектов полноправным и самостоятельным элементом логической структуры базы данных, обладающим собственным поведением и функциональной зависимостью от других действующих связей.

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

          malloc

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

          Примечание. В статье под функцией malloc часто будет подразумеваться, что речь идёт не только именно об этой функции, но и о calloc, realloc, _aligned_malloc, _recalloc, strdup и так далее. Не хочется загромождать текст статьи, постоянно повторяя названия всех этих функций. Общее у них то, что они могут вернуть нулевой указатель.
          Читать дальше →
        • Моделирование событий и операций

            Введение


            Допустим, что мы наблюдаем процесс точения детали. Зададимся вопросом: кто точит деталь? Ответом может быть: Иванов, токарь, начальник цеха, друг Петрова. Мы можем сказать, что это один и тот же человек, но потом понимаем, что токарь – не человек, а роль, начальник цеха и друг – тоже. Так кто же точит деталь?

            Пусть есть событие «яблоко поспело». До этого события яблоко было зеленым, после этого события яблоко стало красным. Вопрос: каким было яблоко в процессе совершения самого события?

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

            Как я говорил, две проекции на время и на пространство дают представление о моделируемом пространственно-временном объеме. Существует три способа спроецировать 4-Д объем на время:

            1. в виде события (операции),
            2. конечного множества событий (операций) (сценарий),
            3. бесконечного множества событий (операций) (функция).

            Читать дальше →
          • Информационная безопасность банковских безналичных платежей. Часть 1 — Экономические основы



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

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

              Исследование получилось довольно обширным, поэтому публиковаться будет по частям. И начнем мы с первой части, которая расскажет о том, что такое безналичные платежи с экономической точки зрения.
              Читать дальше →
            • Лекции Технотрека. Разработка под Android (осень 2017)


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


                Курс ведут Юрий Береза, старший программист студии IT Territory, и Кирилл Филимонов, руководитель команды разработки BeepCar Android.

                Читать дальше →
                • +34
                • 17k
                • 4
              • Окружение для разработки веб-приложений на TypeScript и React: от 'hello world' до современного SPA. Часть 1

                Цель данной статьи — вместе с читателем написать окружение для разработки современных веб-приложений, последовательно добавляя и настраивая необходимые инструменты и библиотеки. По аналогии с многочисленными starter-kit / boilerplate репозиториями, но наш, собственный.

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

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

                image
                Читать дальше →
              • Мир, в котором IPv6 придуман хорошо

                Перевод статьи Avery Pennarun, одного из сотрудников Google, о том, почему современный интернет такой, какой он есть, об истории и предпосылках создания IPv6, а также о том, как был бы устроен идеальный протокол IPv6, почему это не так и как можно к этому идеалу приблизиться.
                Читать дальше →