C#razy
144 subscribers
253 photos
51 videos
2 files
389 links
Путь в IT, рост, менторство, поддержка, прокачка, мотивация

👨‍💻 Senior .NET dev с 12+ лет опыта
📚 Учусь в MIT по Computer Science
🖥 100+ дней подряд LeetCode
⚒️ Работаю на зарубеж
💻 Веду блог про рост в IT с нуля
🧭 Помогаю понять, куда двигаться
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
The semicolon cats of real programmer;

🦉;

#humor

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Demonstration of a new feature to a customer 🥹

#humor

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!

Есть отличный "задачник" для тех кто готовится к собеседованиям по C# и не только, ну или вы хотите проверить свои знания в .NET

Андрей Акиньшин создал давно книгу ProblemBook.NET которая может поломать мозг многим ребятам кто давно в отрасли.

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

#csharp #interview

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Raft Consensus Algorithm

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

🙉 Что такое Raft?
Raft — это алгоритм, разработанный для достижения согласия между несколькими серверами в распределённой системе. Он упрощает процесс выбора лидера и управления состоянием системы, делая его более понятным по сравнению с другими алгоритмами, такими как Paxos. Raft спроектирован с учётом возможных сбоев. Если Leader выходит из строя, система быстро выбирает нового Leader, что обеспечивает высокую доступность и надёжность.

Основные компоненты Raft
➡️ Leader и Followers
В Raft серверы делятся на Leader и Followers. Leader координирует действия и обрабатывает команды от клиентов, а Followers следуют указаниям лидера.

➡️ Выбор Leader
Когда система запускается, происходит выбор лидера. Если текущий Leader не отвечает, Followers могут инициировать новый выбор. Это напоминает демократические выборы, где каждый голос важен.

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

🙉 Зачем это нужно?
Raft делает сложные вещи понятными. Он упрощает реализацию распределённых систем, что позволяет разработчикам сосредоточиться на бизнес-логике, а не на борьбе с алгоритмическими тонкостями.

📝Итого
Raft — это не просто алгоритм, а подход к построению надёжных распределённых систем. Если вы хотите создать систему, которая будет устойчива к сбоям и легко понимаема, обратите внимание на Raft. Хоть она и реализована уже во многих местах, но стоит знать что это и как это работает.

📎 Ссылки
- https://habr.com/ru/companies/dododev/articles/469999/
- https://habr.com/ru/companies/otus/articles/793198/
- https://pk.org/417/notes/raft.html
- https://blog.container-solutions.com/raft-explained-part-23-overview-core-protocol

#consensus #raft

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Discord - это было быстро

Роскомнадзор (РКН) принял это решение 8 октября 2024 года. Люди уже заметили недоступность сервиса, думаю это относится в первую очередь к игровой индустрии, предполагаю что все вернутся обратно в TeamSpeak. Причины отключения нарушения требований местного законодательства.

В итоге люди уже начали искать решения и альтернативные платформы для общения, такие как Zoom или Skype. Я учу английский через Discord 🙉 и преподаватель накануне поменял площадку на Zoom.

#news #discord

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👀2
Garbage Collector: Large Object Heap

В .NET Core память управляется при помощи нескольких куч (heaps). Они предназначены для оптимизации работы с объектами разных размеров.

Small Object Heap (SOH) — используется для хранения объектов размером до 85,000 байт.
Large Object Heap (LOH) — для объектов размером более 85,000 байт.

Почему есть разделение на SOH и LOH?
➡️ Разделение на SOH и LOH помогает эффективно управлять памятью и оптимизировать работу сборщика мусора GC.

➡️ Мелкие объекты (массивы, строки, небольшие классы) хранятся в SOH, где они могут быть быстро размещены и освобождены. В SOH объекты перемещаются между поколениями (Generation 0, 1 и 2) что позволяет более эффективно управлять памятью.

➡️ Крупные объекты, такие как массивы с большим числом элементов, помещаются в LOH. Порог в 85,000 байт был выбран из-за компромисса производительности и минимального переноса данных.
В LOH крупные объекты не перемещаются между поколениями, как в SOH. Это снижает нагрузку на GC, так как перемещение крупных блоков данных требовало бы значительных ресурсов.

➡️ Разделение на SOH и LOH уменьшает фрагментацию🧐. Крупные объекты занимают отдельное место и не смешиваются с мелкими, что снижает риск создания множества небольших пустых областей в памяти, которые не могут быть использованы для новых больших объектов.

Вспомним что было в предыдущих сериях
❕Сборка мусора в .NET Core организована по принципу разделения на поколения

Generation 0 — для новых объектов
Generation 1 — для объектов, которые пережили одну сборку Generation 0
Generation 2 — для объектов с долгим сроком жизни и тех, что пережили несколько сборок.
LOH в .NET Core считается частью Generation 2!!

❕Сборка мусора для LOH запускается во время сборки Generation 2

Поскольку LOH управляется как часть Generation 2, очистка памяти в LOH происходит только во время сборки Generation 2. Это происходит реже, чем сборки Generation 0 и Generation 1, что минимизирует влияние на производительность. Это позволяет избежать частых остановок программы (GC pauses) при работе с крупными объектами.

❕В отличие от .NET Framework, Compact Phases для LOH была вручную, команды запускали сборку Generation 2 и LOH что сильно бьёт по перформансу. .NET Core GC делает это автоматически Compact Phases в LOH, если понимает, что фрагментация становится проблемой. Под капотом в .NET Core GC анализирует состояние памяти и принимает решение о том, когда целесообразно выполнять Compact Phases в LOH, основываясь на текущей нагрузке и уровне фрагментации.

❕.NET Core также поддерживает два режима работы GC: Server GC и Workstation GC.
Для серверных приложений чаще используется Server GC, который управляет сборкой мусора параллельно на нескольких потоках, у каждого потока свой heap, подходит для большой нагрузки (API). Workstation GC в основном использует один поток для выполнения сборки мусора, оптимизация для GUI приложений.


📝Итого
Large Object Heap в .NET Core управляется автоматически GC и поддержка Compact Phase. Разделение на LOH и SOH позволяет эффективно управлять памятью для мелких и крупных объектов, снижая частоту сборок мусора и фрагментацию.

📎 Ссылка: Microsoft

#NoAI #GC #s01e05

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Friday 👋

#humor

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
It is RUST 👩‍💻

#humor

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Mail Cloud/Yandex cloud не доступены

Всю неделю лихорадит инфраструктуру, сложности с доступом как внутри так и снаружи.

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

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Типичный ответ разработчика 😅

#humor

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
😎1
Не могу не поделиться.
У @llw33 есть супер объяснение процентилей, просто и понятно.
Forwarded from STEM: Science & Tech
Процентили. Дискретные и непрерывные процентили.

🇺🇸 Percentiles. Discrete and Continuous Percentiles

🇪🇸 Percentiles. Percentiles Discretos y Continuos

p-th percentile - это значение, ниже которого находится P процентов данных. Например, 90-й процентиль - это значение, ниже которого находится 90% наблюдений.

Для нахождения процентиля данные должны быть отсортированы в порядке возрастания. Процентили делят данные на 100 равных частей.

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

→ Непрерывный процентиль

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

→ Дискретный процентиль

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

→ Найдем 90-й непрерывный процентиль для набора данных

Шаг 1. Нам нужен 90-й процентиль, поэтому P = 0.90.

Шаг 2. Исходный датасет: 2, 10, 1, 3, 40, 0

Шаг 3. Сортировка датасета: 0, 1, 2, 3, 10, 40

Шаг 4. Вычисляем позицию процентиля по формуле:
(P * (N - 1)) + 1 = 0.90 * (6 - 1) + 1 = 5.5.
Прибавляем единицу для того, чтобы позиция начинась с индекса = 1, а не 0.

Шаг 5. Применяем линейную интерполяцию. Формула: interpolated_value = a + (fraction * (b - a)).
Позиция 5.5 находится между 5-й и 6-й точками в отсортированном списке. 5-е значение: a = 10, а 6-е значение: b = 40, и fraction = 0.5 (дробная часть позиции 5.5).
res = 10 + (0.5 * (40 - 10)) = 25.

Шаг 6. Таким образом, значение на позиции 5.5, которое является 90-м процентилем для данного набора данных, составляет 25.

‼️ Важно не путать:
- Сам процентиль: 90-й
- Позицию 90-го процентиля в нашем датасете: 5.5
- Значение 90-го непрерывного процентиля в нашем датасете: 25.

Для дискретного процентиля:
поскольку он не использует интерполяцию, мы выбираем ближайшее значение, которое соответствует или превышает позицию 5.5. В данном случае это 6-е значение: percentile_90 = 40.

В следующем посте мы посмотрим на то, как процентили применяются в науке.

#math #statistics #computer_science #science
.NET Core позволяет решить задачи несколькими путями, например вопросы конфигурации проектов.

Вообщем разработчики .NET Core стремились создать гибкую платформу, которая может адаптироваться к любым нуждам и хотелкам. Поэтому конфигурацию можно настраивать через JSON, XML, даже INI файлы, переменные среды, командную строку, базы данных и если вам этого мало вы можете сами сделать свой провайдер. Но лучше посмотреть одно видео 😎

#dotnet

📎 Ссылка: YouTube

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Я только что получил сертификат по английскому языку, но зачем мне всё это нужно?

Когда я только начинал работать в IT, мне казалось, что знание английского это необязательный навык. Поскольку я могу найти документацию на родном языке, а все в команде говорят как бы не по-английски). Чем дальше я продвигался в профессиональной сфере, тем больше понимал, что английский это не просто язык, а ключ к новым возможностям и росту. Плюс к этому стало всё сложнее, потому что я изучал французский, но это уже другая история)

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

#lifestory

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Retention и анализ, зачем это всё?

Как то я нашел один классный небольшой стартап, который разрабатывал мобильное приложение, идея была огонь, но пользователи быстро отказываются от него после первой недели. Product Analysis в голос говорят про какой то Retention и других много непонятных слов. Пришло время поднимать компетенцию в продакте :)

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

В итоге, я наткнулся на отличный доклад, который раскрывает некоторые аспекты Product и как ищутся боли и находятся маркеры ЦА

Разбор кейса: YouTube

#product

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Frontend 🥹

#humor

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Масштабирование стартапа до миллионов пользователей: баланс технологий и затрат

Всем привет!

Хотел вам сообщить что выступал на конференции, конфа прошла отлично, были интересные вопросы и дискуссии.

Всех прошу прошу посмотреть, что в итоге получилось.

Видео доступно на YouTube

#dev #conference #architecture

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👏2