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
Всем привет и с наступившим новым годом!

📝 Создал видео памятку по малому бизнесу для ИП в Грузии с 1%

🟥С 1 января 2025 изменилась форма декларации. Описывается только вариант с оборотом < 500 000 лари без уплаты НДС. Ссылка на matsne.gov.ge

Подача декларации
Подать декларацию надо до 15 числа месяца, следующего за отчетным (Пример: за август надо подать до 15 сентября)

1. Включить Грузинскую сим-карту.
2. Авторизоватся на сайте налоговой eservices.rs.ge.
3. В левом нижнем углу жмём English Version
4. Выбираем раздел Declarations
5. В левом меню Montlhly > Small Business Annual Income Declaration
6. Нажимаем кнопку New return
7. Откроется форма декларации, заполняем 15 и одну или все из 18-21 полей
— графа 15, суммарный доход нарастающим итогом с января (или месяца, когда начали платить налог)
— графа 17, ваш доход за прошлый месяц — заполнится автоматически после заполнения графы 18-21
— графа 18, сумма, полученная через кассовый аппарат
— графа 19, сумма, полученная через физический POS-терминал
— графа 20, сумма, полученная на расчетные счета в банке
— графа 21, сумма, полученная в иных формах (на Payoneer, PayPal, Wise, если они декларируются по приходу на платежные системы, бартером по договорам на крипту и т.п)
8. Жмём Next и Send
9. Оплачиваем налог. Плачу Epay.ge

🟥В феврале 2025 года, при подаче декларации за январь, отсчет дохода с нарастающим итогом в графе 15 начинается заново — с 1 января 2025 года.

Пример #1
Ведёте деятельность с января 2024.
Подаете декларацию за декабрь 2024 в январе 2025.
С января по ноябрь суммарно: 1000 лари.
Декабрь: 100 лари - получен на расчетные счет в Credo Банк

--------
графа 15 — 1100 лари (Суммарный доход с января по ноябрь + декабрь).
графа 16 - Рассчитывается автоматически. Ставка налога. (Например: 1%)
графа 20 - 100 лари

--------
графа 17 - Заполнится автоматически: 100 лари
графа 26 - Отобразится налог: 1 ларь


Пример #2
Ведёте деятельность с марта 2024. 
Подаете декларацию за октябрь 2024.
С января по март: 0 лари.
С марта по сентябрь суммарно: 1000 лари.
Октябрь: 200 лари из них
- 100 лари через кассовый аппарат
- 50 лари через POS-терминал
- 30 лари полученные на расчетный счет в банке
- 20 лари через Payoneer

--------
графа 15 — 1200 лари (Суммарный доход с января по сентябрь + октябрь).
графа 16 - Рассчитывается автоматически. Ставка налога. (Например: 1%)
графа 18 - 100 лари
графа 19 - 50 лари
графа 20 - 30 лари
графа 21 - 20 лари

--------
графа 17 - Рассчитывается автоматически: 200 лари
графа 26 - Отобразится налог: 2 лари


Ошибка в декларации
Если вы допустили ошибку в декларации и хотите её исправить, необходимо подать новую декларацию за тот же период. Редактировать предыдущую не требуется.

#Грузия
#МалыйБизнес
#Декларация

Видео: YouTube

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👏2
Первая рабочая неделя в этом году была сложная 😅

#humour

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1😁1🤣1
Мой календарь первой рабочей недели в 2025 😳

#humour

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤣6❤1
Как устроены ленты в социальных сетях: что под капотом?

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

Недавно наткнулся на отличный доклад с HighLoad++: Архитектура ленты и рекомендаций ВКонтакте

Технической части много, плотно и понять как работает лента/рекомендации, лайки, подписки, рекомендации друзей вообщем всё это и больше разбирается в видео, но 40 мин это конечно мало, но всё равно смотрится интересно.

там есть PHP и С++

#ranking
#vk

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Как стать .NET разработчиком в 2025 году?

Я открыл .NET Core Roadmap на 2025 год и такой: "Чего? Это вообще реально освоить?" - Реально!

Первое и важное
Учитесь через практику, не пытайтесь объять всё сразу. Шаг за шагом.

Всё начинается с основ
Алгоритмы, структуры данных, ООП. Без них всё остальное – это просто набор инструментов.

Дальше экосистема .NET
ASP .NET Core - это обязательно. Blazor/MAUI - хотя бы по верхам глянуть что это.

Задачки со звёздочкой и это облака
Azure/AWS/GCP, Docker, Kubernetes – это уже не опция, а стандарт. Научитесь автоматизировать деплой, масштабировать сервисы, работать с данными – от PostgreSQL до Redis.

И конечно soft skills
умение донести идею и работать в команде сегодня так же важно, как кодить.

Звучит как план?🧙🏻‍♂️

#dotnet
#обучение

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🤓2😱1
И тут я решил проверить не забыл ли я выключить 😳

#humour

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3❤1
C# выходит на новый уровень 🫠

#humour

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Сокращение в Сбере

А точнее в Купере, Мегамаркете, Сберлогистике и Саамокате

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

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

Как проходит процесс?
Сотрудникам Сбера, попавшим под сокращения и массовые увольнения, предлагают два основных варианта ухода:
1. Увольнения по соглашению сторон с выплатой двух-трех окладов.
2. Руководители могут получить компенсацию до шести окладов.
3. Дождаться двухмесячного уведомления об увольнении и получить лишь один оклад.

📎 Ссылки: Источник, Forbes.ru

#Сбер

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
😱4❤1
Как облегчить изучение английского языка?

Все мы знаем, как важны ассоциации!
Если ассоциировать слова, Например времена в английском с эмоциями, событиями или яркими образами, процесс обучения станет намного проще и увлекательнее.

Например, все 12 времен английского языка можно связать с I break production.

Хорошей пятницы и не ломайте продакшен!

В помощь вам я сделал картинку-напоминание.

#english

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6
This media is not supported in your browser
VIEW IN TELEGRAM
Галлюцинации ИИ моего детства 🤓

#humour

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6
Почему обновления .NET — это не опция, а необходимость

Недавно вышел релиз .NET 9.0.1 с важным исправлением уязвимости безопасности.

🟥Уязвимости могла привести к утечке данных или выполнению кода из-за неправильного управления памятью.

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

Список исправленых серьёзных уязвимостей:

CVE-2025-21171 — уязвимость в десериализации JSON, позволяющая злоумышленнику выполнить произвольный код или нарушить целостность данных.
CVE-2025-21172 — проблема с некорректной проверкой входных данных, что открывает возможность для выполнения произвольного кода.
CVE-2025-21173 — ошибка в System.Data.SqlClient и Microsoft.Data.SqlClient, способная привести к утечке конфиденциальной информации.
CVE-2025-21176 — уязвимость в механизмах сериализации, где вредоносные объекты могут использоваться для выполнения произвольного кода.

Обновление доступно здесь: Microsoft .NET Updates

P.S.: Вообщем не стоит забивать и забывать про безопасность и безопасность это процесс, а НЕ одноразовое действие.

#dotnet
#security

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Коротко о том что сделал DeepSeek



#humour
#ai
#deepseek

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

Ребята кому нужна работа в C#
По факту это ближе к middle чем к senior
Удалённая работу. Если интересно пишите

ПравоТех — продуктовая IT-компания, которая с 2008 года создает решения для автоматизации юридических бизнес-процессов.


Стек
.NET 3.1/6, .NET Framework 4.6.2/4.8, PHP, Hyper-V, Docker, Kubernetes bare metal, RabbitMQ, Elasticsearch, MSSQL, PostgreSQL, MySQL, HAProxy, Proxmox, Yandex Cloud.


Задачи
Выработка технического решения на основе бизнес-требований от аналитиков и архитекторов;
Участие в принятии архитектурных решений;
Оптимизация производительности приложения;
Написание качественного кода согласно задачам от аналитиков и архитекторов;
Соблюдение сроков выполнения задач;
Поддержка и доработка уже работающего проекта;
Создание новых модулей, рефакторинг старых;
Поддержка и оптимизация существующего функционала и реализация новых модулей;
Проведение Code Review.


Must-Have
Разработчик .Net от 4-х лет;
C# 6.0 и выше, .NET 4.5 и выше;
ASP.NET MVC / ASP.NET Web API / ASP.NET Core;
PostgreSQL.


Nice-to-have
.NET Core;
Разработка с применением гибких методологий;
Git;
Entity Framework 6, T-Sql;
Принципы ООП, SOLID и шаблоны проектирования.


Что предлагают
Удаленку или офис (Москва, Самара);
ДМС со стоматологией;
Рабочую технику;
Брендированные подарки.


#cv
#vacancy

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
321
The Phoenix Project

я одолел эту книгу) Книга на самом деле читается на одном дыхании, главное найти время, а дальше книга сама всё сделает. Заберёт твоё время и подарит много мыслей.

Как рецензия - это однозначно must-read для всех, кто строит инженерные процессы. В книге объясняются три ключевых принципа DevOps: flow, feedback и обучение.

Вообщем DevOps — это не только про инструменты, но и про мышление.

Flow — это про то, как сделать процесс разработки быстрее и эффективнее. Важно ускорить доставку изменений в production, устраняя узкие места и автоматизируя процессы. Чем быстрее мы двигаемся, тем быстрее получаем результат. Так же я отметил рефакторить/оптимизировать надо впервую очередь где bottleneck, потому что это приносит больше всего эффективности

Feedback — это суперсила. Чем быстрее узнаем о проблемах, тем меньше боль на проде. Жтот путь про создание механизмов быстрой обратной связи, чтобы быстро обнаруживать и устранять ошибки. Быстрое реагирование на проблемы помогает улучшить качество и стабильность системы в целом. Логично, но многие забивают на это, а не надо!

Continuous Learning — DevOps-команды (это не просто админы, но и разрабы, аналитики да вообще всё IT) должны постоянно учиться, экспериментировать и адаптироваться.

Ошибки — это не провал, а возможность для роста, если мы используем их как источник знаний, но last but not the least чтобы об этом понимал бизнес и продакт и ПМ.

Если хотите вывести процессы на новый уровень — очень рекомендую эту книгу. Книга топ за свои деньги!

#devops
#cognition
#developer

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
41
У меня смешнее же да?)😅

#humour

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍431
Я тут уже давно жду того дня, когда всё такие в C# появится вы не поверите, нативная поддержка LEFT JOIN и похоже, не только я, но и многие .net разрабы разделяют этого желанию.

Этот оператор в SQL позволяет интуитивно и лаконично как бы писать запросы, возвращающие все записи из левой коллекции, даже если для них нет соответствий в правой и вообще это как бы топ 2 операция!

В LINQ приходится прибегать к громоздким конструкциям вроде GroupJoin с DefaultIfEmpty, что в принципе приходится гуглить потому что зачем это помнить =)

Многие разработчики мечтают (например я) о простоте синтаксиса, ну куда проще использвоать нативный LEFT JOIN который бы сократил код и сделал его проще, особенно для тех кто работает с SQL каждый день и привык к нему.

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

Конечно, я прекрасно понимаючто внедрение нового синтаксиса и сахара требует изменений, пересмотра работы компилятора и поддержки различных провайдеров LINQ. Но я верю ребята это Mircosoft или кто? и мы увидим долгожданное обновление, которое сделает жизнь C# еще краше.

Пока же я стою в очереди и остаётся только ждать и надеяться

📎 GitHub

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32
Skype отключат в мае ему было всего 22 года

Да-да конец эпохи. Этот сервис, который когда-то был одним из самых популярных для звонков, не смог удержаться на рынке. С появление конкурентов, особенно во време COVID, таких как Slack, Discord, Zoom, Google Meet и с натяжкой Teams.. Skype потерял окончательно потерял популярность. Новые потребности общества он не покрыл уже.

Однако, одной из удобных функций Skype были звонки на мобильные и стационарные телефоны. Я даже получил бонус 5$ и меня этот сервис выручал порой, когда надо было позвонить на другой континент.
Cо временем эта возможность стала менее востребована снова, появились другие сервисы более удобные.
В итоге снова не с мог конкурировать с миром.

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

Звонки с родителями, звонки по работе, онлайн звонки когда играли в CS, Dota - вообщем не забываемое время, особенно когда он отваливался в самый неподходящий и подходящий момент, но иногда это было даже кстати)

#microsoft
#skype

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
История этой недели: Фантомный баг

Фантомный баг - это не ошибка, это боль. ЭТО может "поймать" кто угодно: саппорты, QA, да кто угодно.. да, но только разработчик чаще всего не ловит. И вот ты слышишь об этом баге на митингах, на звонках с ребятами, этот баг появляется и исчезает и ты не успеваешь даже понять, что это было, причём тут ты или он или они. Так вот, это прилюдие моей недели.

Пишет support: Нашли баг у клиента, он не критичный, но может повлиять на продажу продукта. По сути, он может появиться на демонстрации и сбить клиента с толку.

Ок думаю, задача будет на мне, начну делать, за одно и подождём может найдут кейс.

——

ПНД: Вижу багу, чекаю - не воспроизводится. Отправляю ответ: "it doesnot play on my side". Через пару минут прилетает видео с тем, как баг появился. Я в ответ — два видео, где бага нет. support проверяет и пишет: "Баг отсутствует!" думаю: Шах и мат вообщем (нет)

Проходит пару дней и баг снова прилетает. Проверяю, говорю: "Бага нет." Общаюсь с продактом, а он: "Да, баг был, я сам видел, но сейчас его нет". Тут я спросил "Подразумевается, что продолжаем?". Угадайте какой ответ 👍

Проверяю логи, повторяю шаги - все работает как должно. Сижу спокойно, думаю, может все в порядке... и тут пишут: "Вот, смотри, баг поймали!" Я смотрю, пробую, баг не воспроизводится -_- Делаю те же шаги от лица customer, но всё работает Ок

На сладкое добавляем: мы используем платные библиотеки

Прошло где то часов 14 подряд.
Результаты: баг появляется один раз из десяти -_-
Я пытаюсь его поймать - баг исчезает. что-где-когда происходит в реальности

На самом деле я уже верю, что кто-то написал это в либе:
if (new Random().NextDouble() < 0.05)
throw new NullReferenceException("Object reference not set to an instance of an object.");

Обсфусцировал, а теперь, я пробую найти это место и пофиксить.

- Кто не осведомлён
Этот код "обсфусцирован", это когда код изменяют так, чтобы его было сложно понять. Это делается, чтобы защититься от копирования, скрыть код или затруднить поиск ошибок - по сути защита от копирования и для запутывания (это в платных либах обычная практика). Как правило, ошибки NullReferenceException случаются, когда пытаешься работать с объектом, который не существует (т.е. NULL). В данном случае, выбрасывать это исключение случайным образом с вероятностью ~5%.

#dotnet
#bug

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
33👨‍💻1
Дорогие дамы, поздравляю с 00001000.00000011 Марта

Поздравляю с 8 Марта! Пусть каждый день приносит радость, вдохновение и новые возможности. Будьте счастливы, любимы и окружены теплом!

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

git commit -m "Happy Women's Day! 🎉"


#congratulation

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥3
CQRS переоцененный паттерн?

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

Большинству проектов хватает обычного CRUD + индексы на БД.
CQRS может быть просто архитектурным оверхедом или всё таки поможет нам?


Как всегда всё зависит от проекта и задачи.

Добавим в компилку чуток ответов от Артёма Акулякова

[ Осторожно, тут мог встречаться Медиатор]

Ссылка: YouTube

#CQRS

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Алгоритм: Two Pointers

Two Pointers - это техника, при которой два индекса двигаются по массиву, чтобы эффективно решать задачи без использования вложенных циклов. Я запомнил как read pointer и write pointer

➡️ Суть
- Один индекс начинает с одного конца, второй с другого. Они двигаются навстречу друг, другу или в одном направлении в зависимости от задачи;
- Позволяет решать многие задачи за O(n) вместо O(n²)
- Работает лучше всего на отсортированных данных или в задачах с поиском зависимостей между элементами.

➡️ Задача
443. String Compression

➡️ Условие
Задан массив символов chars, сжать его с помощью следующего алгоритма:

Дан массив символов chars, сжать его, используя следующий алгоритм:

Начать с пустой строки s. Для каждой группы последовательно повторяющихся символов в chars:
- Если длина группы равна 1, добавьте этот символ в s
- В противном случае добавьте символ - длина группы.
- Сжатая строка s не должна возвращаться отдельно, а должна храниться в массиве входных символов chars.
- Обратите имание, что длина группы, равная 10 или более, будет разбита на несколько символов в chars.
- После завершения модификации входного массива верните его новую длину.
- Вы должны написать алгоритм, который использует только постоянное дополнительное пространство.


➡️ Пример
Input: chars = ["a","a","b","b","c","c","c"]
Output: Return 6, and the first 6 characters of the input array should be: ["a","2","b","2","c","3"]
Explanation: The groups are "aa", "bb", and "ccc". This compresses to "a2b2c3".


➡️ Решение
public static int Compress(char[] input)
{
var begin = 0;
var count = 0;

while (begin < input.Length)
{
var group = 1;

while (begin + group < input.Length && input[begin + group] == input[begin])
group++;

input[count++] = input[begin];
begin += group;

if (group > 1)
{
foreach (var ch in group.ToString())
input[count++] = ch;
}
}

return count;
}


➡️ HW?
1⃣ begin – начальный индекс текущей группы (индекс чтения), count – длина ответа, сжатой строки (индекс записи). group - длинна группы
2⃣ Находим длину group
3⃣ input[count++] = input[begin] - не забыть скопировать элемент в индекс записи
5⃣ begin += group - сдвигаем (индекс записи) на начало следующей группы
5⃣ вставляем длину группы

#leetcode
#medium
#algorithm
#two_pointers

💡 Channel | ✏ Chat
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👨‍💻1