Как стать автором
Обновить
-7
0
Алексей @Alekseyz

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

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

Как управлять распределённой системой, не привлекая внимания санитаров

Уровень сложности Средний
Количество просмотров 1.5K

Привет! Меня зовут Александр Попов, я tech lead команды маркетплейса 05.ru. Сейчас мы занимаемся бэком маркетплейса и некоторыми другими сервисами на рынке Дагестана. 

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

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

Лучшие практики для надёжной работы с RabbitMQ

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

Привет, Хабр! Я Женя, архитектор интеграционной платформы в Точке, отвечаю за асинхронный обмен сообщениями между внутренними сервисами, за ESB и за брокеры сообщений.

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

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

Следуй за белым кроликом
Всего голосов 43: ↑43 и ↓0 +43
Комментарии 11

Async/await, There is no thread – легко обмануть тех, кто сам обманываться рад

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

Когда нам показывают на некотором примере, что асинхронная операция не создает потока, нам пытаются внушить, что асинхронная операция НИКОГДА не создает потока и в принципе не может его создать, но это не правда! Простой пример с работающим кодом доказывает обратное. Давайте разберем этот пример.

Логика тех, кто поддается такому внушению мне вполне понятна, они хотят упростить себе жизнь, сократить объем теории, с которой надо разбираться.

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

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

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

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

В 2023 году с нуля запустили собственный проект по продаже настольных ковриков для ноутбука, клавиатуры и мыши. Нашли поставщика в Китае, доставили товары в Москву и запустили продажи на трех маркетплейсах: Ozon, Wildberries и Яндекс Маркет. Результат — более 5 млн руб. дохода за год на 12 SKU (ковриков разных цветов).

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

Делимся в кейсе лайфхаками, которые будут актуальны и в 2024 году:

Как запустить продажи на всех маркетплейсах — алгоритм работы;

Что делать при сезонном спаде и почему еще могут проседать продажи;

Как экономить на логистике и сокращать комиссию площадки.

Читать кейс
Всего голосов 72: ↑38 и ↓34 +4
Комментарии 98

Шпаргалка для алгособеса 2 — графовые и строковые алгоритмы

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

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

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

Самым прямым образом — алгоритмы прокачивают умение системно мыслить, искать нестандартные пути решения; человека, у которого эти скиллы на высоте, вряд ли заменит ИИ. Так что, тратя бесценное время на алгоритмы, вы занимаетесь очень полезным делом, расслабьтесь и получайте удовольствие) В качестве бонуса к прокачиванию серого вещества вы получите сверхспособность пройти любой алгособес в FAANG и удовлетворить любые потребности пирамиды Маслоу — довольно приятно)

В этой статье мы разберём графовые алгоритмы типо DFS, Флойда–Уоршелла и строковые наподобие Ахо-Корасик.

Читать далее
Всего голосов 41: ↑39 и ↓2 +37
Комментарии 35

Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра

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

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

Так уж повелось, что любой уважающий себя работодатель перенимает передовые^✻ методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.

Читать далее
Всего голосов 216: ↑214 и ↓2 +212
Комментарии 77

Когнитивные искажения, о которых стоит помнить

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

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

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

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

Читать далее
Всего голосов 95: ↑87 и ↓8 +79
Комментарии 34

Разобраться раз и навсегда: Task.WhenAll или Parallel.ForEachAsync в C#

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


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

Если быстро посмотреть на результаты, которые появляются в интернете при поиске советов по реализации подобных вещей, то можно увидеть, что есть как много похожих, так и различных предложений от различных программистов. В какой-то момент поиска вы, вероятно, столкнётесь с поиском идеей использования Task.WhenAll или Parallel.ForEachAsync.

При чтении некоторых из этих материалов будет видно много различных противоречивых ответов как на StackOverflow, так и по всему интернету. Сегодня я собираюсь сравнить эти два метода с помощью определённых бенчмарков, которые стравят их друг против друга, чтобы, наконец, выяснить применимость каждого из двух методов.
Читать дальше →
Всего голосов 58: ↑57 и ↓1 +56
Комментарии 18

Как на самом деле Async/Await работают в C#. Часть 1. Проблемы модели асинхронного программирования (APM)

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

Это перевод первой главы из поста How Async/Await Really Works in C#

Этот пост .Net блога является продолжением исходного поста, глубоко погружающим в историю, приведшую к созданию конструкций async/await и стоящие за этим дизайнерские решения и детали реализации async/await в C# и .NET.

Исходный пост What is .NET, and why should you choose it? предоставляет обзор платформы на высоком-уровне, перечисляя различные компоненты и решения на уровне дизайна, и предваряя последующие посты в глубину обозначенных тем.

Ссылки в развитие темы:

1. Часть 2 Артефакты от EAP шаблона, SynchronizationContext

2. Уроки по асинхронному программированию из первой половины работы

3. Параллельные вычисления — Все дело в контексте-синхронизации (SynchronizationContext)

4. Async/Await из C#. Головоломка для разработчиков компилятора и для нас

Читать далее
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 12

Как root-права и альтернативные прошивки делают ваш android смартфон уязвимым

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

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

Часто для этого рекомендуется получение прав суперпользователя в системе (root-права), удаление системных приложений от Google и от производителя устройства, или даже полная замена стандартной ОС на альтернативные сборки, чаще всего LineageOS (бывший CyanogenMod). При этом первым шагом в этом процессе всегда будет так называемая "разблокировка загрузчика". Во время её выполнения устройство несколько раз покажет нам страшные предупреждения о том, что теперь оно станет более уязвимо для злоумышленников, но мы смело нажимаем "подтвердить" и шьём root или самую свежую сборку кастомной прошивки, не задумываясь о том какие проблемы создаёт нам незаблокированный загрузчик. 

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

Интересующихся приглашаю под кат.

Читать далее
Всего голосов 127: ↑123 и ↓4 +119
Комментарии 210

Это база: нюансы работы с Redis. Часть 1

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

Привет! Меня зовут Петр и мы в компании Nixys очень любим Redis. Эта база используется, если не на каждом нашем проекте, то на подавляющем большинстве. Мы работали как с разными инсталляциями Redis, так и с разными версиями, вплоть до самых дремучих, вроде 2.2. Несмотря на то, что в Интернете очень много статей и докладов по этой БД, мы в своей практике достаточно часто встречаемся с непониманием некоторых основных концепций Redis и со стороны разработчиков, и со стороны системных администраторов.

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 26: ↑23 и ↓3 +20
Комментарии 1

Многопоточность (Multithreading) для практического программирования. То, о чем «забыть-нельзя-вспоминать» придется

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

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

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

Мне кажется нельзя считать что вы до конца понимаете концепцию многопоточности (Multithreading/ Concurrency) если вы не понимаете когда (для каких задач) ее можно и/или нужно использовать на однопроцессорной машине, 2-х процессорной, N‑процессорной машине и от чего это зависит.

Читать далее
Всего голосов 16: ↑10 и ↓6 +4
Комментарии 19

Как мы настраивали PostgreSQL для использования в качестве кэша

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

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

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

Как я проходил опросник по c#

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

Только что мне предложили пройти анкету с вопросами по c#, ну я быстро ответил и довольный отправил. Удивило потом то что я оказывается мало на что ответил правильно. Было странно, вопросы то вроде простые, ну я начал разбираться и сравнивать правильные ответы с неправильными. Итак вот что было:

Читать далее
Всего голосов 18: ↑13 и ↓5 +8
Комментарии 34

Как на самом деле работает Async/Await в C# (Часть 7)

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

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Disclaimer: Я не являюсь профессиональным переводчиком, перевод подготовлен скорее для себя и коллег. Я буду благодарен за любые исправления и помощь в переводе, статья очень интересная давайте сделаем её доступной на русском языке.

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

Как получить 30 удаленных работ? Опыт 300 собеседований. 9 неочевидных советов для соискателя

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

Этот метод дал мне конверсию 50% из собеседования в оффер на вакансию «маркетолог» с доходом от 70к.

Меня зовут Слава, 4 года назад я работал маркетологом в агентстве. И решил поискать работу мечты на hh.ru. Я знал, что даже есть агентства, которые закрывают себе клиентов на hh.ru.

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

Читать далее
Всего голосов 58: ↑44 и ↓14 +30
Комментарии 52

Как на самом деле работает Async/Await в C# (Часть 2)

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

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 8

Как на самом деле работает Async/Await в C# (Часть 1)

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

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 8

А работают ли игровые механики?

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

Этот вопрос мне задают постоянно. 

Привет, Хабр! Меня зовут Тагир Хайрутдинов, я старший аналитик данных в Альфа-Банке. За прошлый год я посетил примерно 10 профильных конференций и прочих мероприятий. Когда на мероприятиях я рассказываю людям о том, что такое геймификация и какое влияние она оказывает на бизнес на примере проектов Альфы, то самый частый вопрос от маркетологов, овнеров, аналитиков и прочих — «А это реально работает?»

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

Читать далее
Всего голосов 26: ↑23 и ↓3 +20
Комментарии 16

Информация

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