Как стать автором
Обновить
15
0
Artem Zinoviev @nahmnenik

Java Developer

Отправить сообщение

Youtube разблокировали, но не у всех. Как решить проблему?

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров305K

image


Эпопея с блокировками сервиса продолжается, что происходит сейчас? С 20 по 23 сентября пользователи разных провайдеров заявили, что у них появился доступ до видеохостинга без использования средств обхода ограничений. Чтобы объективно оценить реальное состояние доступа к видеохостингу и блокировок у разных провайдеров, воспользуемся сервисом мониторинга

Читать дальше →
Всего голосов 36: ↑32 и ↓4+40
Комментарии85

Работа с аренами: почти избавляемся от GC

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров9K

Меня зовут Максим Горозий. Я тимлид в Т-Банке, работаю над нашей образовательной платформой, которая служит для разных направлений бизнеса. В ИТ больше 10 лет и успел поработать в двух GameDev-компаниях, где управление памятью занимало весомое время в оптимизации производительности кода. Люблю строить системы и взаимосвязи между ними, а также EdTech и преподавание, а еще больше — работать над инструментами обучения. Хотя начинал с C, я идеологический фанат Go, DDD и Agile.

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

Читать далее
Всего голосов 30: ↑30 и ↓0+33
Комментарии15

Нам мало CAP. Да здравствует PACELC

Время на прочтение10 мин
Количество просмотров13K
image
Если вы когда-нибудь сталкивались с распределёнными СУБД или системами обработки данных, то слышали о двух теоремах: CAP и PACELC, определяющих грани возможных конфигураций этих систем. Споры об их универсальности не утихают до сих пор, однако альтернативы, способные полностью заместить данные научные изыскания, ещё не сформулированы и вряд ли в ближайшее время появятся. Поэтому всем, кто работает с распределёнными системами, необходимо учитывать эти теории. Мы, команда разработки СУБД Jatoba, также столкнулись с противоречивостью теорем, детально разобрались и готовы помочь всем, кто только начинает работу с ними.

Введение


В 2000 году Эрик Брюер выдвинул гипотезу, суть которой можно описать так: в распределённой системе невозможно обеспечить одновременное выполнение всех трёх условий: корректности, доступности и устойчивости к разделению узлов CAP (Consistency-Availability-Partition tolerance). За 20 лет применения теорема действительно доказала свою состоятельность, однако показалась недостаточной. Так в 2010 году появилась PACELC как расширение CAP, которое гласит, что в случае разделения сети в распределённой компьютерной системе необходимо выбирать между доступностью и согласованностью, но даже если система работает нормально в отсутствии разделения, нужно выбирать между задержками и согласованностью.
Как это работает, рассмотрим далее.
Читать дальше →
Всего голосов 6: ↑4 и ↓2+7
Комментарии2

Golang: bytes.Buffer изнутри

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров4.4K

Работая с кодом на Go, любому специалисту приходилось сталкиваться со стандартным пакетом bytes . Внутри него лежит определение Buffer . Что же это такое?

Читать далее
Всего голосов 11: ↑8 и ↓3+10
Комментарии1

Как начинать проект на Go в 2023 году

Время на прочтение14 мин
Количество просмотров17K

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

Читать далее
Всего голосов 9: ↑7 и ↓2+8
Комментарии0

Что такое Web3? Децентрализованный Интернет будущего

Время на прочтение9 мин
Количество просмотров92K

Если вы читаете эту статью, значит, вы являетесь участником современного Интернета. Интернет, с которым мы сталкиваемся сегодня, значительно отличается от того, каким он был всего 10 лет назад. Как развивался веб, и, что более важно, куда он движется дальше? И почему все это очень важно?

Если история нас чему-то научила, то эти изменения будут иметь большое значение в будущем.

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

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

Читать далее
Всего голосов 41: ↑9 и ↓32-21
Комментарии81

Системное мышление на практике: переход от монолита к микрофронтендам и обратно

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров8.5K

Меня зовут Олег, я уже 20 лет работаю в ИТ и в основном на Enterprise-проектах. Сейчас работаю в Альфа-Банке на проекте Альфа-Онлайн и хочу поделиться своим видением управления сложностью на больших проектах.

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

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

Читать далее
Всего голосов 28: ↑27 и ↓1+31
Комментарии15

Подготовка к техническому собеседованию Senior/Team Lead backend

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров20K

Недавно появились мысли походить на собеседования чем я успешно занялся. Если конкретно - смотрел лидовскую/сеньерскую позиции на Python и Golang(но статья может пригодиться backend разработчикам в целом). Не ставлю целью статьи объять все не объятное и дать какие-то гарантии. Я лишь зафиксирую данные для себя на будущее.

Вообще ходить на собеседования неплохой навык - в моем случае удается неплохо прокачать технические скилы и узнать запросы рынка на текущий момент(ведь может случиться так, что твои навыки перестанут быть актуальными).

Сразу сделаю пометку, что некоторые навыки/ресурсы специфичны(по типу нарешивания Leetcode), но отталкиваемся от текущих реалий рынка.

Читать далее
Всего голосов 22: ↑21 и ↓1+22
Комментарии13

Визуализируй это: как я обучаю джунов и ставлю задачи через диаграммы и графики

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров9.8K

Привет, меня зовут Сергей, я ведущий разработчик в DDoS-Guard и человек из мемов xkcd, который любит всё экстраполировать, истовый фанат визуализации данных. Диаграммы и графики решают кучу моих проблем с онбордингом джунов и объяснением задачи исполнителям. 

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

Читать далее
Всего голосов 19: ↑19 и ↓0+20
Комментарии7

Работа с Kubernetes: поднимаем локальный кластер и деплоим в него приложения

Время на прочтение5 мин
Количество просмотров15K

Павел Агалецкий, ведущий разработчик юнита Platform as a Service Авито, написал, как поднять кластер Kubernetes на локальном компьютере Mac с помощью подручных инструментов, а потом задеплоить в него простейшие приложения.

Читать далее
Всего голосов 12: ↑10 и ↓2+9
Комментарии5

Go Channels Internals

Время на прочтение12 мин
Количество просмотров25K
На Go можно реализовать тысячи goroutine одновременно без больших требований к железу. При этом горутины могут легко и просто обмениваться данными между собой и синхронизироваться с помощью каналов. Но как устроены каналы внутри? Об этом написано не так уж много, а в условиях многопоточки и асинхронного кода хорошо бы не просто работать с каналами, а понимать, как их использовать более практично и эффективно.

Егор Гришечко, старший разработчик в Insolar, разрабатывает блокчейн для b2b сегмента (по сути, стартап), и у команды как раз большая многопоточка и много асинхронного кода. Егор не только разобрался на практике, как работают каналы, что это такое и как они вообще устроены внутри. Он еще рассказал о каналах внутри команды, а потом, увидев интерес, поделился на конференции Golang Conf 2019.

Сегодня мы публикуем расшифровку его доклада.


Читать дальше →
Всего голосов 30: ↑29 и ↓1+40
Комментарии2

Неклассическое чтение для руководителей: книги по стратегическому управлению от ведущих ученых и отчеты аналитиков

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров9.2K

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

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии5

Распределённые транзакции

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров43K

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

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

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

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

Читать далее
Всего голосов 22: ↑19 и ↓3+20
Комментарии2

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

Время на прочтение10 мин
Количество просмотров193K

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

Перейти к списку вопросов
Всего голосов 26: ↑26 и ↓0+26
Комментарии39

Глубокое погружение в Java Memory Model

Время на прочтение53 мин
Количество просмотров154K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

Читать дальше →
Всего голосов 109: ↑109 и ↓0+109
Комментарии60

База по шардированию базы

Время на прочтение10 мин
Количество просмотров39K

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

Мы на пальцах рассмотрим что такое шардирование, как оно помогает в масштабировании и даже рассмотрим тот самый этап «роста».

Читать далее
Всего голосов 25: ↑24 и ↓1+25
Комментарии19

5 вещей, которым я научился за 20 лет программирования

Время на прочтение10 мин
Количество просмотров70K

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

Эрик Дитрих* около 10 лет провел на должностях, где его основной функцией было написание кода. Еще 10 лет были связаны с управлением программистами, их обучением, консультированием организаций, практикой оценки кодовой базы, а в наши дни и контент-маркетингом. Но во всех этих ролях он в той или иной степени писал код. И, по своим расчетам, прошел больший путь, чем 94% работающих в отрасли. Получается некое противопоставление: программист со стажем, который общается с кучей новичков в программировании.

Специально для своего блога Эрик попытался обобщить весь свой опыт в виде кратких советов, которые он хотел бы дать молодым программистам. Под катом — наиболее важные, на взгляд автора, уроки и выводы из его 20-летней карьеры.

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

Читать далее
Всего голосов 82: ↑74 и ↓8+75
Комментарии111

«Гигиенический минимум» в работе тимлида

Время на прочтение13 мин
Количество просмотров7.4K

Привет, я Илья — Frontend Team Lead в Альфа-Банк. Отвечаю не только за команду, но также веду и техчасть. Как тимлид я часто задаюсь вопросом «В чем моя роль?», «Как измерить эффективность моей работы?» и «Какой профит от лидов для проекта в целом?»

Для себя я вывел определение и задачи лида. Это всего лишь мои субъективные умозаключения, и искушенной публике Хабра могут быть хорошо знакомы, иногда слишком очевидны, но…повторение мать учения, как когда-то говорили. И даже если мы сто раз что-то слышали — не значит, что мы начали это делать. То, о чем я хочу рассказать – простые шаги, которые работают только при регулярном повторении, без пропуска какого-то пункта, это важно.

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

Читать далее
Всего голосов 31: ↑27 и ↓4+26
Комментарии8

Важные изменения в работе CTE в PostgreSQL 12

Время на прочтение2 мин
Количество просмотров26K
WITH w AS  NOT MATERIALIZED (
    SELECT * 
    FROM very_very_big_table
)
SELECT * 
FROM w AS w1 
    JOIN w AS w2 
        ON w1.key = w2.ref
WHERE w2.key = 123;

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


Это войдет в PostgreSQL 12, и это big deal. Давайте рассмотрим, почему

Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии15

Новый GC Epsilon. У джавы может не быть сборки мусора. Шок. Сенсация

Время на прочтение6 мин
Количество просмотров38K
Добрый день, господа! Спешу сообщить, что настают последние дни. Кажется, мир Java развился до такой степени, что то ли мы теперь можем спокойно использовать Rust вместо Java, то ли Java вместо Rust. Кровавые подробности ждут вас под катом.
Читать дальше →
Всего голосов 84: ↑69 и ↓15+54
Комментарии96

Информация

В рейтинге
Не участвует
Откуда
Макеевка, Донецкая обл., Украина
Дата рождения
Зарегистрирован
Активность