Pull to refresh
19
0
Михаил Фадеев @ItwithMisha

Авторский канал по IT — https://t.me/itwithmisha

Send message

Туннель IPv6 через IPv4 для обхода замедления Youtube на уровне роутера

Level of difficultyEasy
Reading time3 min
Views163K

Туннели IPv6 через IPv4 помогают получить доступ к сайтам и сервисам, которые используют новый протокол IPv6, даже если у вас старый IP‑адрес версии 4 (IPv4). Чтобы его настроить, нужно зарегистрироваться на сайте провайдера, который предоставляет такую услугу (его еще называют туннельный брокер), и использует технологию 6in4. После регистрации вы получите все необходимые данные для подключения.

Одно из преимуществ данного способа заключается в том, что не потребуется настраивать что-то дополнительно на других устройствах в локальной сети, не сломается работа на AndroidTV итд.

Туннель работает только с белым IP‑адресом (некоторые провайдеры выдают его бесплатно, некоторые за определённую сумму в месяц).

Читать далее
Total votes 45: ↑44 and ↓1+54
Comments116

Топ-100 вопросов на собеседовании по системному анализу

Level of difficultyEasy
Reading time4 min
Views11K

Салют!

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

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

Читать далее
Total votes 11: ↑7 and ↓4+5
Comments1

Чиним замедление YouTube на уровне роутера

Level of difficultyMedium
Reading time6 min
Views641K

Всех категорический приветствую. Буквально первого августа, прямо в ночь, стал у меня жутко лагать YouTube. Естественно, мне это сильно не понравилось. Ну, что же, давайте разбираться, почему и как это исправить в условиях моей личной сети.

Что случилось?

Хорошо описано произошедшее здесь, на Хабре. Если совсем кратко, своими словами - во время установки SSL соединения в открытом виде домен передается к которому мы подключаемся(так называемое SNI). И если это googlevideo.com то начинают твориться "интересные вещи". Можно проверить это локально коммандами из статьи.

$ curl https://speedtest.selectel.ru/100MB -o/dev/null

Читать далее
Total votes 360: ↑357 and ↓3+412
Comments1053

Как пройти техническое собеседование на системного аналитика в любой компании (сборник вопросов)

Reading time10 min
Views196K

Я проходил технические собеседования на системного аналитика в самых разных компаниях и каждый раз записывал все вопросы. У меня накопилось 120 вопросов. Список вопросов выкладываю в этой статье. Даю гарантию, что, подготовившись по этим вопросам, вы будете успешно проходить технические собеседования в большинстве, если не во всех, it-компаниях. Почему? Потому что большинство вопросов повторяются от собеседования к собеседованию. Очень высока вероятность того, что вопросы, которые вам будут задавать, будут из этого списка.

Перейти к списку вопросов
Total votes 26: ↑26 and ↓0+26
Comments39

Structured concurrency в языке Go

Reading time5 min
Views5K

Горутины виснут непонятно почему, случайная запись в закрытый канал вызывает panic, нормально протестировать приложение вообще невозможно.


Наверняка многие из вас сталкивались с такой проблемой: синтаксис языка Go вроде бы очень простой, можно сказать примитивный, да и горутины создаются элементарно, но при этом написать мало-мальски серьёзную программу, которая конкурентно что-то делает, внезапно оказывается не так-то просто.


Чтобы не запутаться, люди придумали концепцию structured concurrency, которую можно применять и в Go.

Читай или страдай
Total votes 16: ↑13 and ↓3+13
Comments17

Протокол QUIC в деле: как его внедрял Uber, чтобы оптимизировать производительность

Reading time12 min
Views15K
За протоколом QUIC чрезвычайно интересно наблюдать, поэтому мы любим писать о нем. Но если предыдущие публикации о QUIC носили больше исторический (краеведческий, если хотите) характер и матчасть, то сегодня мы рады опубликовать перевод другого толка – речь пойдет про реальное применение протокола в 2019 году. Причем речь не про малую инфраструктуру, базирующуюся в условном гараже, а про Uber, который работает почти по всему миру. Как инженеры компании пришли к решению использовать QUIC в продакшене, как проводили тесты и что увидели после раскатки в прод – под катом.
Картинки кликабельны. Приятного чтения!


Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments9

Как компании удерживали, удерживают и будут удерживать сотрудников: блеск и нищета корпоративной культуры

Reading time20 min
Views71K

Если у вас есть время и желание заняться странной деятельностью, я предлагаю вам развлечение под названием «кадровая археология». Суть проста — вы вводите в поиск запрос, вроде «вакансии в России в 1990-х» и по ним пытаетесь понять, как жили древние люди. А точнее, как мыслили HR‑ы и их руководители, а также, какой была ситуация на рынке труда.

Наша задача на сегодня — проанализировать ряд найденных артефактов было эпохи, дойти до наших дней и понять, как развивалась корпоративная культура, зачем она нужна и предположить, куда же она приведет. А сделать это можно только через гадание на таро и кофейной гуще футурологические прогнозы социально‑экономической ситуации. Hi‑tech, low life и манипуляции — вот краткое содержание этой статьи.

Ностальгировать, читать, думать
Total votes 98: ↑88 and ↓10+91
Comments117

Создание telegram web apps и взаимодействие с ними в телеграм ботах

Reading time8 min
Views296K

В обновлении Bot API 6.0 телеграм-боты получили много новых функций. Из них для разработчиков самая примечательная - Telegram Web Apps (Веб-приложения внутри телеграм). С этим нововведением разработчики могут подключать к своим ботам web-приложения, которые открываются в дополнительном окне, что сильно расширяет инструментарий, а, следовательно и функционал ботов в телеграм.

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

Инструменты реализации API-сервера на Golang с автогенерацией кода и документации

Reading time13 min
Views35K

Я бы хотел в этой статье рассказать вам о том как можно быстро и просто сделать веб сервер на языке Golang с документацией к нему. И о том какие есть подходы и инструменты для их реализации


Сегодня мы разберем эти готовые инструменты:


Читать дальше →
Total votes 8: ↑7 and ↓1+11
Comments0

gb — менеджмент зависимостей для Go

Reading time8 min
Views21K
Отсутствие в Go нативного менеджера зависимостей и версий является одним из самых частых пунктов в критике языка. В этой статье мы рассмотрим проблему детальнее и познакомимся с новым проектом, с лаконичным именем gb, который набирает популярность в Go-коммьюнити и обещает вскоре стать де-факто стандартом для управления зависимостями и версиями в Go.


(Credit orig.photo: Nathan Youngman)

Для начала давайте разберемся, из-за чего весь шум и почему в Go изначально не было продвинутого менеджера зависимостей.
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments18

Как потреблять API с ограничением по RPS в .NET приложениях

Level of difficultyEasy
Reading time11 min
Views13K


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

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

Но теперь на Хабре есть эта статья, которая научит отправлять запросы из HttpClient так, чтобы не получать 429 Too Many Requests.
Читать дальше →
Total votes 45: ↑44 and ↓1+63
Comments10

В поиске оптимального подхода к миграциям в Go

Level of difficultyEasy
Reading time9 min
Views17K

Привет! Меня зовут Нина, и я Golang разработчик.

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

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

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

Мониторинг и трассировка в Go: от Prometheus до Jaeger

Level of difficultyEasy
Reading time15 min
Views11K

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

Когда приложения становятся все более сложными и распределенными, и эффективное управление ими требует глубокого понимания происходящего внутри. Мониторинг позволяет нам наблюдать за состоянием приложения, собирать ценные метрики о его работе и предоставлять нам обратную связь в реальном времени. Это помогает в обнаружении и устранении проблем до того, как они станут серьезными. Мониторинг также дает возможность планировать масштабирование и оптимизацию, основываясь на данных, а не на предположениях.

Инструменты мониторинга, такие как Prometheus, позволяют нам собирать метрики, настраивать правила оповещения и создавать графики для визуализации данных.

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

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

Читать далее
Total votes 10: ↑9 and ↓1+12
Comments0

Как реализовать DDD в Go

Reading time25 min
Views34K

С помощью микросервисной архитектуры можно построить масштабируемое и гибкое приложение. Однако, если команда бессистемно использует этот подход в своей работе, то скоро столкнется с разочарованием и неконтролируемой сложностью. Избежать этого поможет DDD (Domain-Driven Design, предметно ориентированное проектирование). Не так давно я ничего не знал про этот подход, но сейчас я постоянно натыкаюсь на эту тему.

Представляю вам перевод статьи "How to Implement Domain-Driven Design (DDD) in Golang". Повествование буду вести от лица автора, иногда прерывая собственными мыслями в таком же формате, как и это отступление. Приятного чтения.

Читать далее
Total votes 23: ↑20 and ↓3+19
Comments24

О массивах и слайсах в Go

Level of difficultyMedium
Reading time6 min
Views29K

Массивы в Go являлись для меня одной из сложных тем, так как я не понимал как они работают. В данной статье рассмотрим как же именно работают слайсы и массивы в Go, а также как именно работает append и copy.

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

Управление пакетами с помощью модулей Go: Прагматическое руководство

Reading time8 min
Views44K
Всем привет. В преддверии старта курса «Разработчик Golang» подготовили для вас еще один интересный перевод.




Модули — это способ борьбы с зависимостями в Go. Изначально представленные в качестве эксперимента, модули предполагают вывести на поле в качестве нового стандарта для управления пакетами с версии 1.13.

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

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

Так что если вам по пути, запрыгивайте и наслаждайтесь поездкой.
Читать дальше →
Total votes 9: ↑7 and ↓2+8
Comments1

Как структурировать проект на Golang: гайд от backend-разработчика

Reading time4 min
Views49K

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

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

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

Введение в систему модулей Go

Reading time8 min
Views174K

Грядущий релиз версии 1.11 языка программирования Go принесет экспериментальную поддержку модулей — новую систему управления зависимостями для Go. (прим.перев.: релиз состоялся)


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


Итак, вот, что мы будем делать: создадим новый пакет и потом сделаем несколько релизов, чтобы посмотреть, как это работает.

Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments49

Принципы SOLID, только понятно

Level of difficultyEasy
Reading time6 min
Views79K

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

Изучить принципы
Total votes 80: ↑66 and ↓14+59
Comments94

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Lead
C#
Database
PostgreSQL
MySQL
MongoDB
Redis