Search
Write a publication
Pull to refresh
25
0
netslow @netslow

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

Send message

Преобразование Уолша-Адамара

Level of difficultyHard
Reading time11 min
Views16K

На сайте hackerrank.com есть отличная задача. По заданному массиву short[] A; найти максимальное количество его подмассивов, xor элементов которых будет одинаковым. Сам этот xor тоже нужно найти.

Максимальная длина массива равна 105, так что квадратичный алгоритм не укладывается в лимит по времени исполнения. Я в своё время с этой задачей не справился и сдался, решив подсмотреть авторское решение. И в этот момент я понял почему не справился — автор предлагал решать задачу через дискретное преобразование Фурье.

Читать далее

Почему стоимость биткоинов – вымышленное понятие

Reading time13 min
Views19K
Эссе в трёх частях:

  1. У биткоинов нет единой «цены», и рынок ужасно неэффективен.
  2. Разберитесь в законах, касающихся идентификации клиентов и отмывания денег.
  3. Биткоин – это не схема Понци! Она просто работает похожим образом.

Статьи были написаны в 2017 году как предупреждение для мало осведомлённых о мире финансов энтузиастов, решивших заработать «лёгкие деньги» на криптоторговле. Написал их Дэвид Жерар, автор книги «Нападение 50-футового блокчейна: биткоин, блокчейн, Ethereum и умные контракты».

Часть 1: у биткоинов нет единой «цены», а рынок ужасно неэффективен


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

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

И это всё неправда.
Читать дальше →

Как развивать soft skills в техническом коллективе: проводим учебные марафоны для сотрудников

Reading time8 min
Views2.1K

Согласно исследованию, проведенному платформой для корпоративного обучения Lerna.ru, почти 80% работодателей уделяют внимание обучению сотрудников. 69% из них делают упор на soft skills: универсальные умения вроде навыков коммуникации и критического мышления.

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

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

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

Читать далее

Выгорание: рассматривая золу под макроскопом

Level of difficultyMedium
Reading time12 min
Views18K

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

Я начал свой путь как разработчик и был им 15 лет, а сейчас руководитель группы разработки. Прошёл всю дорогу от младшего до ведущего и шагнул дальше. Пока я гнал по карьерному треку, я полноценно выгорал два раза, а потом решил, что хватит это терпеть. И не выгорел третий. Как получилось? Об этом и будет эта статья.

Читать далее

Как не выгореть от операционки — мои самые эффективные правила планирования

Level of difficultyEasy
Reading time3 min
Views23K

Подарите 25 час в день и 8 день в неделю. Да еще одну неделечку к отпуску... Знакомо? Вот и я долгое время грустно смотрела в свой календарь и не понимала, куда все время уходит время и почему задачи закрываются в последний, самый горящий момент.

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

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

Итак, путь к личной эффективности начнем с небольшого аудита.

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

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

Читать далее

За кем сейчас охотятся крупные работодатели в IT?

Level of difficultyEasy
Reading time3 min
Views71K

Привет, на связи Кирилл Антонов, коммерческий директор hitch. Мы занимаемся аутстафом IT‑специалистов — выводим разработчиков (и не только) на проекты отечественных корпораций. Непрерывно следим за тем, как меняются потребности крупнейших IT‑компаний и поведение соискателей.

Раз в несколько месяцев буду публиковать «срезы» — заметки о том, кто сейчас особенно востребован на отечественном рынке (а значит, кому больше всего платят).

Читать далее

Функторы, аппликативные функторы и монады в картинках

Reading time5 min
Views195K
Вот некое простое значение:


И мы знаем, как к нему можно применить функцию:


Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:


Теперь, когда вы примените функцию к этому значению, результаты вы будете получать разные — в зависимости от контекста. Это основная идея, на которой базируются функторы, аппликативные функторы, монады, стрелки и т.п. Тип данных Maybe определяет два связанных контекста:


data Maybe a = Nothing | Just a

Позже мы увидим разницу в поведении функции для Just a против Nothing. Но сначала поговорим о функторах!
Читать дальше →

Монады с точки зрения программистов (и немного теории категорий)

Reading time14 min
Views56K

Введение


Как узнать, что человек понял, что такое монады? Он сам вам об этом расскажет в первые 5 минут общения и обязательно попробует объяснить. А ещё напишет об этом текст и по возможности где-нибудь его опубликует, чтобы все остальные тоже поняли, что такое монады.


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


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


Моё изложение во многом основывается на книге Бартоша Милевски "Теория категорий для программистов", которая создавалась как серия блогпостов, доступна в PDF, а недавно вышла в бумаге.


Примеры приводятся на Haskell, предполагается, что читатель знаком с синтаксисом и основными понятиями языка. В упомянутой книге есть примеры и на С++, можете сравнить чистоту и понятность кода.


Читать дальше →

Монады как паттерн переиспользования кода

Reading time24 min
Views75K


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


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


Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


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

Читать дальше →

Грокаем монады

Reading time7 min
Views13K

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

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

Читать далее

Применяем Java Sealed Classes на практике

Level of difficultyEasy
Reading time4 min
Views7.9K

В этой статье применим Sealed Classes для улучшения читаемости кода, используя пример из реальной разработки.
В статье используется Java 21 т.к. это первая LTS версия Java с релизным Pattern Matching. Также в примере используется Spring Boot, но этот подход можно использовать в любой похожей ситуации.

Читать далее

ClickHouse как бэкенд для Prometheus

Level of difficultyMedium
Reading time8 min
Views12K

Привет! Меня зовут Михаил Кажемский, я Lead DevOps в IT‑интеграторе Hilbert Team. В последнее время к нам часто обращаются заказчики, которым нужна помощь с организацией хранения долгосрочных метрик в российских облаках. Так как для многих эта задача сейчас актуальная, в данной статье мы с моим коллегой Денисом Бабичевым решили рассказать, как мы используем мощные возможности ClickHouse для эффективного долгосрочного хранения метрик Prometheus. В статье вы найдете рекомендации по использованию инструмента и описание альтернативных решений, таких как Thanos, Grafana Mimir и Victoria Metrics.

Читать далее

Введение в многомерный анализ

Reading time12 min
Views175K

Некоторое время назад мне довелось организовывать новую группу разработки, которая должна была заняться развитием OLAP и BI продуктов в дружеской софтверной компании. А так как группа была собрана из свежих выпускников ВУЗов, то мне пришлось написать «краткий курс молодого бойца» для того чтобы максимально доступно дать начальные понятия об OLAP людям, которые ни разу с ним не сталкивались, но уже имели опыт программирования и работы с БД.



Выкладываю теперь это Введение в Общественное Достояние.



В статье несколько смешиваются понятия OLAP, Business Intelligence, и Data Warehouse, но и в жизни часто сложно понять, где проходит граница. А уж в реальных проектах, так и подавно, все они ходят рядом. Поэтому прошу не судить строго.



Итак, что же такое OLAP.

Монады как строительные блоки функционального Java

Level of difficultyEasy
Reading time10 min
Views7.5K

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

Читать далее

Реактивное программирование со Spring, часть 1 Введение

Reading time7 min
Views52K

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

Читать далее

Реактивное программирование со Spring, часть 2 Project Reactor

Reading time15 min
Views92K

Это вторая часть серии заметок о реактивном программировании, в которой представлен обзор Project Reactor, реактивной библиотеки, основанной на спецификации Reactive Streams.

Читать далее

Ubiquitous Language и Bounded Context в DDD

Reading time3 min
Views60K

Domain-Driven Design: Tackling Complexity in the Heart of Software Эванса — лучшая книга о проектировании действительно больших enterprise-приложений, что я читал. Видимо это мнение разделяют многие другие разработчики и проектировщики, потому что Entity и ValueObject, Repository и Specification встречаются почти в каждой большой кодовой базе. Но вот незадача, Ubiquitous Language (единый язык) и Bounded Context (контекст предметной области) в чужом коде я не видел ни разу. И здесь зарыта очень большая собака.
Выкапываем собаку

Инструменты аудита команды

Level of difficultyEasy
Reading time8 min
Views7.2K

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

Почитать

Domain-driven design: рецепт для прагматика

Reading time21 min
Views76K

Почему к DDD обычно подходят не с той стороны? А с какой стороны надо? Какое отношение ко всему этому имеют жирафы и утконосы?

Специально для Хабра — текстовая расшифровка доклада «Domain-driven design: рецепт для прагматика». Доклад был сделан на .NET-конференции DotNext, но может пригодиться не только дотнетчикам, а всем интересующимся DDD (мы верим, вы осилите пару примеров кода на C#). Видеозапись доклада также прилагается.

Как мы попробовали DDD, CQRS и Event Sourcing и какие выводы сделали

Reading time9 min
Views79K
Вот уже около трех лет я использую в работе принципы Spec By Example, Domain Driven Design и CQRS. За это время накопился опыт практического применения этих практик на платформе .NET. В статье я хочу поделиться нашим опытом и выводами, которые могут быть полезными командам, желающим использовать эти подходы в разработке.

Факты, цифры, код

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity