Где Контекст, а где Проблема? Мотивация или Изменение? «Чтобы что?». Плюс нестандартное использование для UX-редакторов. Как составить с помощью ИИ?
.NET
Создание .NET библиотеки от А до Я
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/a51/377/a75/a51377a756e927fc15536cdbdffc74a4.png)
Думаете о создании .NET библиотеки, но не знаете, в какую сторону двигаться? Уже разрабатываете нечто подобное, но хочется открыть для себя что-то новое? Ищете варианты расширить автоматизацию? Не знаете, что делать с пользователями?
Надеюсь, данная статья поможет ответить на эти и другие вопросы. На примере своей библиотеки с открытым исходным кодом – DryWetMIDI – рассмотрим различные аспекты создания подобных проектов. И хотя речь будет идти про .NET/C#, уверен, многое применимо и к другим популярным платформам и языкам программирования.
Микросервисы в представлении среднего разработчика, и как всё на самом деле
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/2e5/84b/242/2e584b242f5adc1af7f68eaa880ca278.jpg)
Периодически общаюсь с разработчиками о микросервисах, монолитах и прочих мифических существах. Удивляет, какая эзотерика живёт в головах у людей, иногда слышишь такое, что ёжики в тумане нервно курят в сторонке.
Когда спрашиваю у людей на собесах, или когда в команде решаем, как клепать очередной проект, такое порой слышу, что становится страшновато. Мне кажется, лет через 5 все компании будут обитать в мультивселенной безумия из “микросервисов”, которую они себе радостно построили, уходя от этих ваших страшных “монолитов”.
Дай думаю поделюсь инфой, чтобы наше с вами будущее не было наполнено болью, страданием и борьбой с последствиями тех дурацких решений, которые можно напринимать прямо сейчас с той кашей в голове, которую я вижу у людей по этой теме.
Медленная сборка кода с .NET Roslyn: как найти и устранить причину
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/553/236/4fa/5532364fa11022bfd052e91e7dae216b.png)
.NET разработчики знают, что такое ждать сборки кода. Работать при этом невозможно: пока не увидишь, как обновится приложение, — не перейдешь к следующему шагу. А переключиться на другую задачу за это время не успеешь. Получается, если в день переписать код 5 раз, можно потерять полчаса при сборке, а то и больше.
Теперь на примере платформы автоматизации маркетинга Mindbox. Основное программное решение — это монолит на C#: несколько миллионов строк, 50 проектов, над которыми одновременно работают десятки команд. Даже сэкономленная при сборке минута выливается в кучу продуктивных человеко-часов. Поэтому, когда речь зашла о переходе всей компании на MacBook в будущем, мы решили выяснить, как это отразится на производительности.
Решение внутренних конфликтов: инженерный подход
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/358/ae6/cf6/358ae6cf6f25f72526f92227a6e18af4.png)
Люди на Земле уже многие века как-то решают свои внутренние конфликты. Да что там говорить - это умеют делать даже обезьяны. Хотя у людей получается лучше: нам помогают не только инстинкты и развитый неокортекс, но и чужой опыт: мифы, религии, философские учения, нормы культуры, а порой даже и книги об "успешном успехе".
Однако, развитие человечества не стоит на месте, и наша цивилизация совершает экспансию не только в космос, биотехнологии и виртуальные реальности, но и во внутренний мир человека. Научный подход (наблюдение-гипотеза-эксперимент-результат) и инженерный подход (изобретение практичных технологий, учитывающих реальные ограничения) находит место и в психологии. Решение внутренних конфликтов превращается из искусства в повторяемую технологию, а психология - из гуманитарной - в инженерную дисциплину (с некоторыми оговорками).
В этой статье вас ждёт:
• Дизассемблирование структуры внутреннего конфликта до атомарных инструкций
• Путешествие в джунгли legacy-кода, хранящегося в чертогах подсознания.
• Разрешение внутренних конфликтов как выплата техдолга,
• Формирование эффективных промптов для бионейросети (той, которая между ушами)
• Простота: фреймворк, который подходит для решения доброй половины внутренних конфликтов
• Глубина: экстремальное погружение во внутренний мир человека.
Кто продаёт спутниковые фотографии и сколько они стоят
![](https://habrastorage.org/webt/i2/og/fs/i2ogfs37ctmj_hft5to5khytpgq.jpeg)
Статья содержит ответы на ряд популярных вопросов, о возможности строительства и запуска космических спутников, способах и стоимости заказа космической фотосъёмки и о ресурсах, на которых можно найти бесплатные спутниковые фото, а также о том, какую пользу приносит использование спутниковых фото в разных сферах жизни.
Полное понимание асинхронности в браузере
- Цикл событий
Задачи, тики и Web API
Очередь задач
16,6 миллисекунды на задачу
Обработка больших задач
Микрозадачи
requestAnimationFrame
requestIdleCallback
Сравнение очередей
Цикл событий в Node.js - Функции обратного вызова
Ад обратных вызовов
Не выпускайте Залго
Жёсткая сцепленность
Проблема доверия - Обещания
Цепочки обещаний и проброс отказа
Неявное поведение
Возвращение нового обещания
Спрятанный try/catch
Thenable-объекты
Статические методы
Promise.all
Promise.race
Promise.any
Promise.allSettled
Промисификация
Обещания или функции обратного вызова?
Корутины - Async/await
Верхнеуровневый await и асинхронные модули
Обработка ошибок
Не все await одинаково полезны - Заключение
Гайд по эвент-сорсингу
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/656/b9d/d1d/656b9dd1d94006fdf58ad27765963bff.jpg)
Считается, что эвент-сорсинг это просто паттерн работы с данными, но применение эвент-сорсинга на деле приводит к большому числу изменений в дизайне приложений. К тому же, сделать эвент-сорсинг правильно не так просто, с одной стороны потому, что нужно заранее ответить на большое количество вопросов, а с другой нужно знать на какие вопросы отвечать.
В этой статье попробую рассказать о том, что такое эвент-сорсинг, как он меняет дизайн приложений, постараюсь подсветить те вопросы, которые нужно учесть при проектировании и ещё поделюсь примером системы из двух приложений, написанных с применением эвент-сорсинга.
Проверяем Архитектурные стили на движке Factorio (часть 2, SOA)
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/c5e/bd9/0f6/c5ebd90f696902ad797c52a3276221d1.png)
Все снова большой привет, спустя полгода! Сегодня мы будем продолжать работать на движке Factorio в попытках разобраться, какой же Архитектурный стиль по каким аспектам является хорошим или плохим!
Welcome!
Сегодня мы рассмотрим SOA и даже сравним его с Monolith-архитектурой!
Как использовать макросы в Confluence, чтобы систематизировать и оформить документацию по продукту и процессам?
![](https://habrastorage.org/webt/3i/86/eb/3i86ebhrtrvb_4zncrjhhbyfuci.png)
Привет, Хабр! Меня зовут Таня Дудо, и я уже 6 лет помогаю людям и командам обмениваться знаниями внутри компаний. Для этого использую Confluence. Да-да, ту самую wiki-систему, которую часто называют неудобной и несовременной. Сегодня выступлю ее адвокатом-обозревателем: расскажу про 7 полезных макросов для систематизации и оформления контента и наглядно покажу, как они работают.
Дисклеймер: с марта Atlassian не продают лицензии в Россию напрямую. Но если у вас уже есть, никто не запрещает ей пользоваться. На сайте Atlassian есть развернутая документация по установке Confluence и Jira. Она охватывает практически все аспекты. Вот, например, одна из статей.
Грейды для менеджеров
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/56a/e6d/c19/56ae6dc1995f032b2c97897df5d194b1.png)
У нас, в компании FINCH, у каждого из отделов есть система грейдов. Система предназначенная для оценки навыков специалистов и зарплатной вилки на которую они могут претендовать, в зависимости от выполняемых задач и роли занимаемой в проекте.
До последнего времени у отдела менеджеров не было такой системы и это вызывало непредсказуемые решения в управлении кадрами и распределении проектов.
Этим летом, когда количество менеджеров увеличилось, руководством было принято решение реализовать распределение менеджеров по грейдам в соответсвии с их навыками.
Суперземля как иллюзия
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/1b8/9c3/b86/1b89c3b86c75d16c61e67b2ed2b38001.jpg)
Ещё около 30 лет назад никто не мог бы с уверенностью сказать, имеются ли у других звёзд планеты. В настоящее время количество известных экзопланет превышает 5000, а с учётом планет-кандидатов, которых в 2021 насчитывалось 7913, общее количество таких внесолнечных миров приближается к 15000.
Наиболее достоверный способ обнаружения экзопланет в настоящее время — это транзитный метод (здесь приведён обзор этого и других методов поиска, применяемых в планетологии). Планета обнаруживается в период прохода по диску звезды, в это время звезда измеримо затмевается. В таком случае удаётся оценить расстояние от планеты до звезды, размер планеты, наличие атмосферы у этой планеты, а также её массу и орбитальный период (сколько времени там длится год).
Соответственно, данные об экзопланетах отчасти неполные, а отчасти косвенные, поэтому классификация экзопланет затруднена. Тем не менее, уже открытые экзопланеты гораздо разнообразнее, чем миры, имеющиеся в нашей Солнечной системе. По некоторым источникам, самый распространённый класс планет – это «суперземли». Примерно из 4000 экзопланет, достоверно известных к концу 2021 года, к числу суперземель относится примерно 1500. Возможно, это крупные скалистые планеты с атмосферой и гидросферой, превышающие по размеру Землю в 3-10 раз. Но почему, в таком случае, подобной планеты нет в нашей системе, ведь это противоречит принципу заурядности? Ниже мы обсудим, что нам сейчас известно о суперземлях и других экзотических классах планет, как образуются суперземли, и существуют ли они вообще.
Вероятно вам не нужен MediatR
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/9fd/ec9/067/9fdec90672873c0bbd659334c56fd4b9.jpg)
MediatR - это очень популярная библиотека, которая используется для уменьшения зависимостей между объектами. Она популяризует архитектуру, основанную на крайне значимых принципах проектирования:
• препятствование прямому общению между объектами для уменьшения связности;
• нацеливание на Message-Oriented архитектуру;
• поддержка асинхронного внутреннего обмена сообщениями;
• ориентирование на переиспользование объектов.
Эти практики не пустое слово для меня. Кроме того, кажется, что такой способ создания программного обеспечения должен быть совершенно очевидным. Без сомнения, библиотека MediatR очень успешна и широко применяется разработчиками, которые разделяют эти ценности.
Существует множество статей о MediatR, но лишь их малая часть фокусируется на недостатках и помогает определить случаи, когда использование инструмента не имеет смысла. Этот пост один из таких.
В этой статье хочу поговорить о том когда и почему применение MediatR может не оправдать ожиданий. В частности, думаю, что, несмотря на добрые намерения, некоторые способы внедрения MediatR могут причинить вред в погоне за лучшими архитектурными практиками и даже привести к использованию анти-паттернов.
Также стоит отметить, что эта статья не покрывает положительные аспекты библиотеки, а фокусируется только на недостатках.
Почему ваш веб-сайт должен быть меньше 14 КБ
![](https://habrastorage.org/webt/sc/zv/l_/sczvl_vandb6zj0wbsfh15fnpcc.png)
Чем меньше веб-сайт, тем быстрее он грузится, и это неудивительно.
Удивительно то, что страница на
14 КБ
может грузиться гораздо быстрее, чем страница на 15 КБ
, даже на 612 мс
быстрее, хотя разница между страницами на 15 КБ
и 16 КБ
минимальна.Так происходит из-за алгоритма медленного старта TCP. В этой статье я расскажу, что это такое, как оно работает и почему это важно. Но сначала мы вкратце расскажем об основах.
Фиксация соглашений в команде
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/36d/edf/0a6/36dedf0a6ece755264678c3ec0abfaad.png)
Соглашения — важная часть процесса разработки. Они призваны снижать затраты и упрощать жизнь сотрудников. Проблема в том, что часто соглашения, наоборот, только всё усложняют, поскольку они толком не зафиксированы и передаются исключительно из уст в уста, как старые сказки. В процессе передачи они обрастают новыми подробностями, а прежние подробности упускаются. В итоге у каждого участника команды в голове свой набор соглашений, которые он периодически забывает.
Ещё хуже, когда соглашения начинают-таки фиксировать, но делают это как попало — и вы получаете свалку непонятно связанных между собой текстов, половина которых неактуальна.
В этой статье я расскажу, как фиксировать соглашения правильно, чтобы они приносили вам пользу.
Ошибки начинающего проектного менеджера
В первый месяц стажировки ментор мне говорил: «В жизни каждого уважающего себя менеджера должен быть один легендарный факап». А что скажете насчёт пяти?
Fluent Generics in C#
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/adf/59d/64e/adf59d64e9db3498a5b54b7ea6c4e97e.png)
Дженерики - мощная фича доступная во многих статически типизированных языках программирования. С их помощью можно писать код, который постоянно работает со множеством разных типов, делая упор на их общие особенности, нежели на сами типы. Они позволяют создавать гибкие и переиспользуемые компоненты без нужды в дублировании кода и жертвы безопасности типов.
Несмотря на то, что дженерики давно в C#, мне всё же удаётся найти новые интересные способы их применения. Например, в одной из моих предыдущих статей я написал об уловке, позволяющей добиться return type inference, что может облегчить работу с контейнерными union types.
Недавно, мне также довелось работать над кодом, использующим дженерики. Тогда передо мной встала нетипичная задача: было необходимо определить сигнатуру, где все типовые параметры опциональны и могут использоваться друг с другом в произвольных комбинациях. Первая попытка подступиться к решению заключалась в манипуляциях с перегрузками типов, однако такой подход оказался довольно непрактичным и не увлекательным.
После нескольких экспериментов, я нашёл способ решить проблему элегантно, используя подход схожий с паттерном проектирования fluent interface, который был применён не к объектам, а к типам. Мой подход предлагает domain-specific language, который позволяет разработчику построить нужный тип за несколько логических шагов, последовательно его "конфигурируя".
В данной статье я расскажу, что из себя представляет этот подход и как его можно использовать для того, чтобы сложные обобщённые типы писать просто.
Разработчик с мозгом груга
![](https://habrastorage.org/webt/ij/ne/1v/ijne1vzlrjua2fya65cobgr9tpi.jpeg)
Введение
это сборник мыслей о разработке программ собранный разработчиком с мозгом груга
разработчик с мозгом груга не очень умный, но разработчик с мозгом груга программирует много лет и научился кое чему, хоть всё равно часто запутывается
разработчик с мозгом груга хочет собрать знания в маленькую, простую и интересную страницу не только для тебя, молодой груг, но и для себя, потому что разработчик с мозгом груга стареет и забывает важные вещи, например что ел на завтрак или надеть штаны
разработчиков с большим мозгом много, некоторым страница не понравится, скривят кислая рожа
Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится
(груг раньше думал груг с большим мозгом, но потом всё понял)
это ладно!
груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Как я работаю с командной строкой
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/500/aa5/1df/500aa51dfb0eeecbd4ffba6befce0eab.png)
Всем привет. Все мы пользовались консольными приложениями. Да и наше первое приложение "Hello, world!" - консольное. Я решил сделать свое + с поддержкой аргументов. Столкнулся с тем, что я не знал как правильно их создавать. В этом посте я расскажу как шаг за шагом проектировал самую сложную на мой взгляд часть - работу с аргументами командной строки.
OSINT по спутниковым изображениям
![image](https://habrastorage.org/webt/vz/rw/oe/vzrwoex9qniyjfrmubk6l8bazks.jpeg)
Мы живем в такое время, когда снимок со спутника можно получить в один клик. В оптическом, в инфракрасном и в радиодиапазоне. А еще историю изменений в определенной координате за несколько лет.
Зеленый Кот нашел разбившуюся советскую исследовательскую станцию «Марс-3» по снимкам со спутника, тысячи экологов следят за лесами Амазонки и состоянием береговой линии, школьники делают учебные проекты по слежке за популяцией моржей, репортеры проводят расследования, освобождают рабов, мониторят лагеря беженцев.
Предлагаю вам подборку бесплатных ресурсов и проектов со спутниковыми данными, программами обработки этих данных и полезные статьи.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность