Pull to refresh
0
0
Игорь Николаев @savares

User

Send message

Ультимативный гайд по HTTP. Структура запроса и ответа

Level of difficultyEasy
Reading time9 min
Views70K

Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture. Я решил написать цикл статей об истории и развитии HTTP, рассмотреть каждую из его версий и проблемы, которые они решали и решают сейчас. 

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

Читать далее
Total votes 16: ↑14 and ↓2+12
Comments4

Ультимативный гайд по HTTP. Cookies и CORS

Level of difficultyEasy
Reading time7 min
Views30K

Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture, а это мой цикл статей о протоколе HTTP. В первой части мы уже познакомились с версией протокола 1.0 и поговорили о структуре ответов и запросов. Теперь пришло время узнать, что такое Cookies и для чего нужен CORS.

Читать далее
Total votes 18: ↑17 and ↓1+18
Comments2

5 паттернов параллельного программирования в GO, которые сделают ваш следующий проект лучше

Reading time10 min
Views16K

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

Читать далее
Total votes 15: ↑12 and ↓3+10
Comments6

Согласованность данных: что это на самом деле такое и почему с ней все так сложно

Reading time10 min
Views12K


Понятие согласованности данных сложное, неоднозначное и включает в себя широкий спектр определений, лишь частично совпадающих друг с другом. Команда VK Cloud перевела статью, в которой автор определяет термин «согласованность» в области распределенных БД и рассуждает на тему этой самой согласованности.
Читать дальше →
Total votes 22: ↑20 and ↓2+32
Comments2

Вы используете интерфейсы в Go неправильно!

Reading time4 min
Views22K
С таким громким заголовком я думал сначала написать статью. Нет, на самом деле, вполне возможно, что у вас всё хорошо и эта статья — не про вас. Но очень часто, когда люди приходят из других языков, можно видеть, как они пытаются «притянуть за уши» паттерны из того языка, к которому они привыкли, и они в Go зачастую работают плохо.



В этой статье я хотел бы собрать несколько типичных ошибок, которые делают начинающие программисты на Go (и я в том числе), и как этих ошибок избежать.
Читать дальше →
Total votes 28: ↑20 and ↓8+12
Comments8

Как Go выполняет встраивание

Reading time10 min
Views14K

Привет, я Никита Галушко, работаю над мессенджером ВКонтакте. Расскажу, как Go подходит к инлайнингу функций — этот процесс ещё называют встраиванием. В статье разберёмся, зачем вообще это нужно, какой профит можно получить для ускорения работы кода, а когда плюсы могут обернуться минусами. На примерах углубимся в специфику Go: как этот язык инлайнит функции, что можно и что нельзя встроить, какие возможности доступны в разных версиях. Также обсудим ограничения и способы обойти их.

Читать далее
Total votes 55: ↑54 and ↓1+71
Comments15

Как навсегда запомнить выученное — 2 самые эффективные техники запоминания

Reading time17 min
Views59K

Интервальное повторение, эффект припоминания, метод Фейнмана, гипотеза желательной сложности, эффект генерации и другие свойства памяти, не позволяющие информации затеряться в синапсах мозга. Существуют ли техники обучения (запоминания) более эффективные, чем последовательное чтение учебного материала, пусть даже и с заметками?

Читать далее
Total votes 29: ↑28 and ↓1+33
Comments23

Ты не работаешь в офисе: подборка статей для удалёнщиков

Level of difficultyEasy
Reading time5 min
Views12K

Я ушла на удалёнку 7,5 лет назад, задолго до ковида — примерно в те времена, когда аналитические конторы насчитывали около 30 000 удалёнщиков на всю страну, а сам формат был непонятным едва ли не всем. Тем не менее, март 2020 года не стал для меня уверенным поворотом: я, как и все, сменила коворкинг с кучей интересных и разных ребят из IT-компаний на квартиру. А это совершенно другие ощущения от работы, организации места, общения с родными, здоровья и даже хобби. Жизнь так сложилась, что сейчас многие сотрудники продолжают переходить на удалённую работу, находят удалённые проекты, устраиваются в офисы, где принят home office. И они обязательно сталкиваются с растерянностью, непониманием, опасениями и даже страхами. Между тем на Хабре и на других сайтах немало хороших статей, которые и помогают, и подсказывают — буквально протягивают руку поддержки и дают понять: ничего уникального, ты не один и ты справишься. Отобрала для вас лучшие.

Читать далее
Total votes 27: ↑27 and ↓0+27
Comments8

Пять примечательных функций Postman, которые мы используем в тестировании банковских систем

Reading time10 min
Views20K

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

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

Читать далее
Total votes 14: ↑13 and ↓1+15
Comments12

Языковая механика escape analysis

Reading time9 min
Views18K

Прелюдия


Это вторая из четырех статей в серии, которая даст представление о механике и дизайне указателей, стеков, куч, escape analysis и семантики значения/указателя в Go. Этот пост посвящен кучам и escape analysis.

Оглавление цикла статей:

  1. Language Mechanics On Stacks And Pointers (перевод)
  2. Language Mechanics On Escape Analysis
  3. Language Mechanics On Memory Profiling (перевод)
  4. Design Philosophy On Data And Semantics

Вступление


В первом посте из этой серии я рассказал основы механики указателя на примере, в котором значение распределяется по стеку между горутинами. Я не показывал вам, что происходит, когда вы разделяете значение в стеке. Чтобы понять это, вам нужно узнать о другой области памяти, где могут находиться значения: о «куче». С этим знанием вы можете начать изучать «escape analysis».
Читать дальше →
Total votes 4: ↑3 and ↓1+5
Comments1

Языковая механика стеков и указателей

Reading time10 min
Views10K

Прелюдия


Это первая из четырех статей в серии, которая даст представление о механике и дизайне указателей, стеков, куч, escape analysis и семантики значения/указателя в Go. Этот пост посвящен стекам и указателям.

Оглавление цикла статей:

  1. Language Mechanics On Stacks And Pointers
  2. Language Mechanics On Escape Analysis (перевод)
  3. Language Mechanics On Memory Profiling (перевод)
  4. Design Philosophy On Data And Semantics

Вступление


Не буду лукавить — указатели трудны в понимании. При неправильном использовании указатели могут вызвать неприятные ошибки и даже проблемы с производительностью. Это особенно верно при написании конкурентных или многопоточных программ. Неудивительно, что многие языки пытаются скрыть указатели от программистов. Однако, если вы пишете на Go, вы не сможете избежать указателей. Без четкого понимания указателей вам будет сложно писать чистый, простой и эффективный код.
Читать дальше →
Total votes 6: ↑5 and ↓1+6
Comments7

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

Reading time6 min
Views5.2K

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

Мы поговорили с Ником, JavaScript-разработчиком. Он пережил несколько внутренних кризисов компаний и поделится опытом, как их вовремя распознать и как с ними справляться, чтобы сохранить работу и душевное равновесие. Передаем ему слово.

Читать далее
Total votes 19: ↑17 and ↓2+19
Comments2

Вот что я нагуглила за неделю в качестве старшего инженера-программиста

Reading time6 min
Views41K

Три года назад разработчик Софи Кунин* опубликовала пост под названием «Вот что я нагуглила за неделю в качестве профессионального инженера-программиста», и он явно нашел отклик у читателей, поскольку стал довольно вирусным. За эти три года многое произошло. Софи повысили, теперь она старший инженер-программист и руководитель направления веб-разработок в Monzo. Но одно не изменилось: она по-прежнему много гуглит, каждый божий день. Вот что она нагуглила за неделю, версия 2022 года.

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Total votes 42: ↑32 and ↓10+27
Comments20

Языковая механика профилирования памяти

Reading time11 min
Views4.3K

Прелюдия


Это третья из четырех статей в серии, которая даст представление о механике и дизайне указателей, стеков, куч, escape analysis и семантики значения/указателя в Go. Этот пост посвящен профилированию памяти.

Оглавление цикла статей:

  1. Language Mechanics On Stacks And Pointers (перевод)
  2. Language Mechanics On Escape Analysis (перевод)
  3. Language Mechanics On Memory Profiling
  4. Design Philosophy On Data And Semantics

Посмотрите это видео, чтобы увидеть демонстрацию этого кода:
DGopherCon Singapore (2017) — Escape Analysis

Вступление


В предыдущем посте я обучил основам escape analysis, используя пример, который разделяет значение в стеке горутины. Я не показал вам других сценариев, которые могут привести к переносу значений в кучу. Чтобы помочь вам с этим я собираюсь отладить программу, которая делает аллокации неожиданным образом.
Читать дальше →
Total votes 3: ↑2 and ↓1+5
Comments0

Табличные тесты в Go с использованием Gomock

Reading time6 min
Views23K

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

Этот текст написал Golang-разработчик Арек Ностер. С разрешения автора мы перевели статью.

Читать далее
Total votes 11: ↑9 and ↓2+9
Comments1

Использование Postgres в качестве очереди сообщений

Reading time6 min
Views19K

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

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

Читать далее
Total votes 12: ↑10 and ↓2+10
Comments10

Изучаем PostgreSQL. Часть 1. Знакомимся с архитектурой

Reading time8 min
Views97K

 На сегодняшний день существует большое количество различных систем управления базами данных - СУБД, от коммерческих до открытых, от реляционных до новомодных NoSQL и аналогичных.

Одним из лидеров направления СУБД является PostgreSQL и ее различные ответвления, о некоторых из которых мы рассмотрим подробнее.

В этой статье мы начнем говорить о СУБД PostgreSQL, рассмотрим отличия редакций и некоторые особенности архитектуры, а также процесс установки. Но начнем мы с небольшого ликбеза для того, чтобы читатели плохо знакомые с терминологией баз данных могли быстро войти в курс дела.

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

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

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

Читать далее
Total votes 20: ↑13 and ↓7+8
Comments8

Поиск в глубину, поиск в ширину, алгоритмы Дейкстры и А* — это один и тот же алгоритм

Reading time7 min
Views16K

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

Читать далее
Total votes 31: ↑26 and ↓5+29
Comments21

[Python Intermediate] Урок 2. Docker и docker-compose

Reading time11 min
Views30K

К сожалению, в python-мире до сих пор повсеместно применяется неизолированный запуск приложения и его инфраструктуры на личных устройствах. Боюсь, даже опытные специалисты неохотно используют контейнеризацию, хотя в действительности её плюсы неоспоримы.

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

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments10

Как я в зеленом банке архитектором работал

Reading time10 min
Views35K

Привет, друзья!

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

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

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

Читать далее
Total votes 79: ↑72 and ↓7+85
Comments77

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity