
Просто о том, чем отличаются HTTP1, HTTP2 и HTTP3, а также почему HTTP3 ещё и QUIC. Статья для junior'ов, интересующихся и готовящихся к собеседованиям.
User
Просто о том, чем отличаются HTTP1, HTTP2 и HTTP3, а также почему HTTP3 ещё и QUIC. Статья для junior'ов, интересующихся и готовящихся к собеседованиям.
Продолжаю знакомить вас с наработками моего математического кружка, в котором я стараюсь ответы на некоторые простые и наивные вопросы превратить в интересный и даже полезный рассказ. Сегодня мы порассуждаем над двумя вопросами:
• Что получится, если сложить все-все-все числа друг с другом?
• Чему равен факториал отрицательного числа?
На оба эти вопроса нам поможет найти осмысленный ответ алгебра, теорема Уилсона и некоторые её обобщения. Статья, адаптирована и расширена для уровня читателей Хабра, так что не пугайтесь, встретив в ней гамма‑функцию или вычеты функции комплексного переменного. На занятиях в кружке никто из детей не пострадал.
Этой публикацией мы начинаем серию небольших статей с разбором «сложных» заданий из сертификации для Java‑разработчиков, чтобы помочь вам подготовиться к сдаче сертификационного экзамена и помочь вам лучше понять, как работает Java и как эффективнее использовать его в своих проектах.
Итак, один из подвопросов, традиционно выносимых на экзамен — будь это сертификация Oracle или сертификации для Java‑разработчиков от Учебного центра IBS, — интересуется разработкой кода с использованием классов‑оболочек, в частности, Boolean, Double или, скажем, Integer.
Страницы этого документа содержат рекомендации по лучшим практикам код-ревью, основанные на многолетнем опыте компании Google. Это один законченный документ, разбитый на разделы. Необязательно читать их все, но многие прочитали документ целиком и нашли это полезным.
От автора перевода: в Google вместо PR (Pull Request) принято использовать аббревиатуру CL (ChangeList — список изменений). Остальные термины, на мой взгляд, понятны и без пояснений. Чтобы разбавить кучу текста, в качестве разделителей разделов использованы генерации на тему "код-ревью от разных мультипликаторов" от нейросети Kandinsky.
2,5 года назад мы запустили собственный курс по Flutter. Идея была простая: во-первых, мы много вкладываемся в развитие Flutter-сообщества в России (с — скромность), и было логично систематизировать знания и опыт в виде курса. Во-вторых, мы хотели выращивать хороших разработчиков в наш Flutter-отдел: спрос на Flutter-проекты у клиентов рос, а количество разработчиков на Flutter в России было ничтожно мало.
Курс эти задачи решал, но со временем вскрылись проблемы, которые не были очевидны для нас на старте.
Рассказываем о нашем первом опыте в эдтехе: как была устроена первая версия курса, что пошло не так, чем мы вдохновились при создании второй версии и как провели работу над ошибками.
В этой статье изучим с разных сторон уязвимость XSS в CMS, написанной на C#. Вспомним теорию, разберёмся, как дефект безопасности выглядит со стороны пользователя и кода, а также поупражняемся в составлении эксплойтов.
Как говорится: сидел, никого не трогал, программировал на C#, и тут родилась «хитрая» нужда. В рамках одного из своих проектов мне понадобился механизм обезличенного вызова делегатов, который бы позволил организовать их универсальные хранение и вызов. Также, главной целью разработки являлся уход от необходимости вызова методов конкретных экземпляров объектов через рефлексию (рефлексия используется только на этапе инициализации), что в конечном счете сильно увеличило производительность.
Обезличенный вызов делегата - вызов делегата с известным количеством параметров, но с неизвестными типами параметров, где каждый тип параметра представлен базовым классом Object. Пример: Action<string, int> преобразуется в Action<object, object>.
Многие оптимизации в компиляторе выглядят естественными. Но IndVarSimplification, предмет этой статьи, сильно выделяется среди них. Это та оптимизация, которая сначала кажется темной магией, но за маской на самом деле скрывается математика.
В этой статье я постарался разобраться, как работает IndVarSimplification. Будет немного кода на Rust, чтение ассемблера и копание в коде LLVM.
Слово «математика» у кого-то ассоциируется с вечной зубрёжкой и строгим учителем, другие же представляют себе некоторую абстракцию, существующую отдельно от нашего мира, но есть и те, кто видит проявления этой науки в нашей повседневной жизни.
«Лучший способ в чём-то разобраться до конца — это попробовать научить этому компьютер». Дональд Кнут (как минимум викицитатник говорит, что он так сказал).
Год назад я осознал, что моё развитие как инженера застопорилось. Не то, чтобы я перестал изучать что-то новое, скорее, страдал от отсутствия системности. Не было понятно, что изучать дальше, что уже получилось изучить и что из изученного я смог для себя извлечь. Поэтому я решил как-то осмыслить процесс самообучения и за год привёл его к системе, которая мне довольно сильно помогает.
Для тех, кто, как и я, испытывал похожие проблемы, я решил поделиться своим методом.
Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.
Disclaimer: Я не являюсь профессиональным переводчиком, перевод подготовлен скорее для себя и коллег. Я буду благодарен за любые исправления и помощь в переводе, статья очень интересная давайте сделаем её доступной на русском языке.
В этой статье Мудассар Хан (Mudassar Khan) продемонстрирует нам, как реализовать проверку Google reCAPTCHA V2 (версии 2.0) в ASP.Net Core MVC.
Приведенный в этой статье пример демонстрирует, как Google reCAPTCHA V2 проверяет ответы с капчей от пользователей, получаемые из коллбэк-функций в JavaScript.
Основной способ задать новый тип данных в Haskell — это использование конструкции data. Однако, есть ещё и newtype
. Практикующие программисты Haskell пользуются конструкцией newtype
постоянно, популярный линтер hlint
предлагает заменять data
на newtype
если это возможно.
Но почему?
Вы используете TypeScript, но впадаете в ступор перед, когда видите типы в сторонних библиотеках? Generics, generic constraint, infer, rest infer, conditional и recursive types, satisfies вызывают головную боль? Мы постараемся снизить градус сложности и напишем типы для роутинга в React приложении. Данный материал будет полезен как фронтендерам, так и бекендерам.
В этой статье мы расскажем о нашем использовании ProseMirror для создания редактора сообщений. ProseMirror предоставляет инструменты для создания WYSIWYG‑редактора текста в веб‑интерфейсе. Мы рассмотрим, те возможности, которые использовали сами: как создавать в ProseMirror свои простые типы узлов (для приложенных файлов и изображений), что такое транзакции в ProseMirror, и как создать узел с более сложной логикой — с динамическим изменением содержимого по подписке GraphQL. В будущих статьях мы также расскажем о реализации совместного редактирования.
В данной статье описан простой пример написания docker-compose.yml файла на примере контейнеризации приложения с использованием Spring Boot на бэкенде, React на фронте, PostgreSQL в качестве базы данных и pgAdmin - для просмотра данных в базе.
Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.