Как стать автором
Обновить
4
0

Пользователь

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

Реализация Graceful Shutdown в Go

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

Изящное завершение работы (Graceful Shutdown) важно для любого длительного процесса, особенно для того, который обрабатывает состояние. Например, что если вы хотите завершить работу базы данных, поддерживающей ваше приложение, а процесс db не сбрасывает текущее состояние на диск, или что если вы хотите завершить работу веб-сервера с тысячами соединений, но не дожидаетесь окончания запросов. Изящное завершение работы не только положительно сказывается на пользовательском опыте, но и облегчает внутренние операции, что приводит к более счастливым инженерам и менее напряженным SRE.

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

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

Интересные способы использования Go каналов (перевод)

Время на прочтение9 мин
Количество просмотров35K
Предлагаю вам перевод статьи Gary Willoughby «Interesting ways of using Go channels».

Статья предназначена для тех, кто уже немного разбирается в Go.

gopher

Интересные способы использования Go каналов


Я написал этот пост, чтобы задокументировать доклад про Go каналы Джона Грэм-Камминга на конференции GopherCon 2014. Доклад назывался «Краткое руководство по каналам» и он доступен для просмотра на youtube.com.

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

Следующие примеры демонстрируют различные техники, как использовать каналы в Go. Код был специально упрощен для их понимания. Не стоит его использовать для продакшн версий. Например, пропущены все обработки ошибок.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии29

Сказ о том, как я за год решил более 700 leetcode задач

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

Всем салют!

Хочу рассказать вам историю о том, как я начинал с уровня — «не могу решить даже 1 easy задачу из 10» до уровня — «могу решить каждую вторую medium задачу» и прошел несколько coding сессий в таких компаниях как Meta, Booking, Careem, Avito...

Читать далее
Всего голосов 150: ↑141 и ↓9+132
Комментарии407

Моя учеба в голландской провинции и что из этого вышло

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

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

Перед чтением этой статьи советую вам ознакомиться с моим лонгридом о поступлении в американские ВУЗы, где говорится о том, как я тут оказалась и через что мне пришлось для этого пройти. Обещаю — она точно не заставит вас скучать!

Читать далее
Всего голосов 39: ↑36 и ↓3+33
Комментарии29

Как мы планировали повысить версию PHP за месяц, а потратили на это год

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

Как и множество больших сервисов, Яндекс Еда основана на микросервисной архитектуре. В общей сложности у нас чуть больше 200 микросервисов. Но есть один сервис, который совсем не микро – легаси-монолит.

Он написан на PHP 7.2 разработчиками разного уровня и в разное время. Мы подумали, что так больше нельзя, и решили навести порядок. В ходе разбирательств выяснилось, что версия языка, на котором всё написано, устарела и уже не поддерживается, что ведёт к рискам безопасности. Делать нечего — мы приняли решение обновиться до 8-й версии.

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

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

Где россиянину легче получить гражданство в 2023 году

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

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

Читать далее
Всего голосов 58: ↑34 и ↓24+10
Комментарии170

MEV: DeFi transaction ordering for profit and fun

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

Эта статья про один из новых, серьезных вызовов для DeFi проектов - MEV. Его аналоги в предыдущей финансовой реальности, волнуют лишь малое число узких специалистов, имещих закрытый, приоритетный доступ к серверам бирж. В DeFi доступ к "финансовым API" есть у любого пользователя. На обычных биржах это высокоскростные линии связи, привилегированный доступ за большие деньги, специализированный софт. В DeFi доступ алгоритмически одинаков для любого, у кого есть хотя бы 1 wei, спецификация API полностью открыта и всем можно свободно пользоваться. Так что теперь, в блокчейн-мире, те же вопросы ордеринга касаются всех пользователей, а огромное число возможных видов финансовых инструментов в виде смарт-контрактов дают множество возможностей эксплоитинга на разных уровнях.

Предлагаю познакомиться с MEV поближе.

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

Учимся разрабатывать REST API на Go на примере сокращателя ссылок

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

В этой статье мы напишем полноценный REST API сервис — URL Shortener — и задеплоим его на виртуальный сервер с помощью GitHub Actions.

Говоря «полноценный», я имею в виду, что это будет не игрушечный проект, а готовый к использованию:

  • мы выберем для него актуальный http-роутер,
  • позаботимся о логах,
  • напишем тесты: unit-тесты, тесты хэндлеров и функциональные,
  • настроим автоматический деплой через GitHub Actions и др.

Но важно понимать, что «готовый к продакшену» != «энтерпрайз».

Кратко обо мне: меня зовут Николай Тузов, я много лет занимаюсь разработкой на Go, очень люблю этот язык. Также веду свой YouTube-канал, на котором есть видеоверсия текущего гайда, с более подробными объяснениями.
Читать дальше →
Всего голосов 57: ↑56 и ↓1+55
Комментарии40

Внезапно сложная задача на литкоде: Варианты покупки двух товаров

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

Есть вот такая, вроде бы, простая задача на литкоде: Дано три числа total - сколько у вас есть денег, cost1, cost2 - цены двух товаров. Надо подсчитать, сколько всего существует различных способов купить сколько-то этих двух товаров, не выходя из бюджета (значение имеет только общее количество покупок). Иными словами, сколько существет целых неотрицательных пар (x, y), таких что x*cost1+y*cost2 <= total . Например, имея товары ценами {5, 10} и 20 денег на руках, есть 9 способов потратить деньги: 0, 5, 5+5, 5+5+5, 5+5+5+5, 10, 10+5, 10+5+5, 10+10.

Она там даже помечена как medium и вообще в одну строчку решается, но это если допускать безумно медленное решение за O(total / max(cost1, cost2)) , т.е линейное от входных чисел. А сможете ли вы решить ее сильно быстрее - за O(log(max(cost1, cost2))) ? В этом случае задачка становится вполне себе hard и требует много математики и аккуратности. Если интересно решение - добро пожаловать под кат. Буду рад любым альтернативным решениям. Может кто-то сможет додуматься до похожего решения проще.

Читать далее
Всего голосов 28: ↑23 и ↓5+18
Комментарии49

Millions of orders per second matching engine testing

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

I had some experience in the matching engine development for cryptocurrency exchange some time ago. That was an interesting and challenging experience. I developed it in clear C++ from scratch. The testing of it is also quite a challenging task. You need to get data for testing, perform testing, collect some statistics, and at last, analyze collected data to find weak points and bottlenecks. I want to focus on testing the C++ matching engine and show how testing can give insights for optimizations even without the need to change the code. The matching engine I developed can do more than 1’000’000 TPS (transactions per second) and is 10x times faster than the matching engine of the Binance cryptocurrency exchange (see one post on Binance Blog).

Read more
Всего голосов 5: ↑5 и ↓0+5
Комментарии1

Как стать копирайтером, которого не заменит нейросеть?

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

В 2023 году все больше и больше профессий оказываются под угрозой исчезновения из-за развития технологий, в том числе нейросетей. Копирайтеры — не исключение. Что это значит для тех, кто зарабатывает написанием текстов? Уже пора искать новую работу? Давайте разбираться. 

Начнем с простого: что такое нейросеть? Это программное обеспечение, которое умеет обрабатывать информацию и составлять ответы на основе анализа большого количества данных из Интернета. Самой продвинутой нейросетью сейчас считается ChatGPT, созданная компанией OpenAI. Она способна генерировать тексты, отвечая на вопросы и поддерживая беседу. 

В теории ChatGPT вполне способен выполнять функции копирайтера: он неплохо генерирует текст на почти любую тему, а еще работает бесплатно, без перерывов и выходных. Одни плюсы. А что на практике? 

Читать далее
Всего голосов 24: ↑15 и ↓9+6
Комментарии29

Резюме для Middle разработчика

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

Недавно поставил цель устроиться на Middle позицию. В статье я расскажу как я улучшил свое резюме (+ конечно много готовился к собесам, но в этот раз это опустим) и повысил з/п в 5 раз!

Прокачку резюме я решил доверить профессионалу с большим опытом в найме и развитии сотрудников - Маше Давыдовой - карьерным консультантом в Эйч.

Машу я попросил рассказать

а) как смотрит на резюме мидла рекрутер?

б) как показать в резюме, что я уже вырос из джуна?

в) что в моем резюме хорошо, а что плохо?

Мы рассматривали каждый блок резюме, поэтому в таком же порядке я опишу ответы Маши на мои вопросы. Свое резюме в pdf я делал, конечно, на своем сайте :)

Читать далее
Всего голосов 23: ↑7 и ↓16-9
Комментарии23

Самый детальный разбор закона об электронных повестках через Госуслуги. Как сняться с военного учета удаленно

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

Новый закон об электронных повестках потенциально касается практически всех российских мужчин от 18 до 70 лет. Я узнал у адвоката со специализацией в вопросах мобилизации, чем конкретно нам грозят эти нововведения, и можно ли как-то «выписаться из военкомата» удаленно.

Читать далее
Всего голосов 339: ↑300 и ↓39+261
Комментарии612

Практические советы по устранению утечек памяти в Go

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

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

Причины утечек

Для начала перечислим возможные причины утечки памяти:

1) Утечка горутин

При утечки горутины утекают также переменные, которые находятся в области ее видимости. Кроме того, стек горутины выделяется в куче

2) Бесконечная запись в глобальные переменные

Приложение может бесконечно писать в какую-нибудь глобальную мапу, в результате чего память будет утекать. Один раз я пытался найти утечку у приложения, которое использовало gorilla context. Особенность этой библиотеки в том, что при обработке http запроса она сохраняет указатель на запрос в глобальную мапу и не удаляет ключ мапы без явного указания в пользовательском коде. Начиная с Go 1.7, разработчики gorilla рекомендуют использовать http.Request.Context()

Читать далее
Всего голосов 20: ↑18 и ↓2+16
Комментарии4

Как обнулялся Credit Suisse: разбираем траекторию погружения на дно швейцарского гига-банка

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

167 лет истории, 50 тысяч сотрудников и почти полтора триллиона долларов под управлением – всё это не помешало второму по размеру швейцарскому банку уйти на дно в марте 2023 года. В этой статье мы разберемся, как многолетние скандалы вокруг Credit Suisse уронили когда-то великий банк.

Читать далее
Всего голосов 190: ↑176 и ↓14+162
Комментарии163

Самая маленькая хеш-таблица в мире

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

1 декабря я в очередной раз поучаствовал в Advent of Code, написав программу на Rust. Если интересно — код можно найти на GitHub. Тут мне хотелось бы рассказать о моём решении задачи, предлагавшейся во 2 день мероприятия, так как это решение, с одной стороны, сверх всякой меры оптимизировано, а с другой — демонстрирует кое-какие полезные приёмы. Чтобы не усложнять себе жизнь — мы рассмотрим лишь первую часть задачи, но те же приёмы можно применить и к её второй части.

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

Бесплатный мультиязычный чат для сайта на Tawk + Notion + Telegram + chatGPT + GPT-Index

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

Вы хотите общаться с посетителями сайта на всех языках и при этом чтобы вам помогал обученный на вашей базе знаний chatGPT?

Я следил за различными видами использования chatGPT с момента его выхода. Предлагаемое в статье решение я еще не встречал и поэтому думаю оно будет кому-то полезным.

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

Этот планшет лежит в комодах у половины населения России: Находим применение китайскому трансформеру за 500 рублей

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров16K
Планшеты-трансформеры прочно заняли свою нишу в нашей повседневной жизни, потихоньку вытеснив нетбуки. Ведь это очень удобно: захотел физическую клавиатуру и дополнительную АКБ — «прицепился» к док-станции, захотел полежать на диване и полистать Хабр — «отцепил» и пальцем пользуешься устройством. 10 лет назад китайские инженеры подумали: «а почему бы не взять дешевое планшетное железо, сделать гибкий чехол и продавать это в качестве трансформера за 3 копейки?». И таки сделали, а девайс, благодаря цене в 2-3-4 тысячи рублей за новое устройство, стал очень успешным и производился несколько лет! Сегодня у нас будет легендарная подделка, которая лежит в шкафах многих моих читателей: Samsung Galaxy Tab N8000. Мы с вами: вспомним историю появления этих гаджетов, узнаем что у них «под капотом», заменим аккумулятор, получим root и пропатчим систему и узнаем, где можно применить такой смартбук в 2023! И да, максимальный интерес вызовет всего одна фраза: Сюда можно накатить Linux!

image

Читать дальше →
Всего голосов 38: ↑28 и ↓10+18
Комментарии57

5 классных сервисов на основе ИИ (с примерами)

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

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

Сегодня я бы хотел показать 5 сервисов на основе нейронных сетей, которые не связаны с chatGPT, Midjorney или Stable Diffusion. Эти сервисы помогают обрабатывать аудио, преобразовывать текст в речь и удалять ненужные вещи с картинок.

Ознакомиться
Всего голосов 72: ↑70 и ↓2+68
Комментарии25

История создания интернет-поисковиков

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

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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность