Your trial period has ended!
For full access to functionality, please pay for a premium subscription
Channel age
Created
Language
Russian
-
ER (week)
-
ERR (week)

Yet another channel of a backend developer living in Serbia. Очередной канал обычного бэкенд разработчика живущего в Сербии. Связь: @alexeyfv

Messages Statistics
Reposts and citations
Publication networks
Satellites
Contacts
History
Top categories
Main categories of messages will appear here.
Top mentions
The most frequent mentions of people, organizations and places appear here.
Found 24 results
YE
yet another dev
200 subscribers
92
👩‍💻 Опыт использования ИИ-агентов GitHub Copilot

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

Лучше всего показала себя связка Ask + Edits с ручной проверкой. Например, так я использую её для поиска и исправления багов:

1. Указываю один или несколько проектов, где, предположительно, есть баг.

2. Включаю режим Ask и прошу проанализировать код, найти и объяснить возможное место ошибки.

3. ИИ предлагает участок кода и объясняет, в чём может быть проблема.

4. Проверяю, действительно ли там может быть баг.

5. Если да, то переключаюсь на режим Edits и пишу: «теперь исправь баг». Благодаря общему контексту, Edits использует объяснение из Ask.

6. Жду результата и проверяю. Если не сработало — возвращаюсь к шагу 1.

Делитесь своим опытом использования ИИ. 👇
04/21/2025, 10:34
t.me/yet_another_dev/184
YE
yet another dev
200 subscribers
164
04/18/2025, 08:40
t.me/yet_another_dev/180
YE
yet another dev
200 subscribers
164
04/18/2025, 08:40
t.me/yet_another_dev/181
YE
yet another dev
200 subscribers
164
04/18/2025, 08:40
t.me/yet_another_dev/182
YE
yet another dev
200 subscribers
164
📈 Рынок труда

Месяц назад выкладывал статистику с hh.ru. С тех пор продолжаю следить — ежедневно фиксирую количество вакансий в разных разрезах. Вот что есть интересного:

🔹 Самый «вакансийный» день — среда. Затем вторник и четверг. Меньше всего предложений по понедельникам и в выходные. Почему так я не знаю. Может, дело в алгоритмах hh или привычки HR-ов.

🔹 Количество вакансий колеблется в пределах от 2337 до 2544. Разброс небольшой, но есть.

🔹 За месяц — минус 3%. Это разница между медианным количеством вакансий в первую и последнюю неделю наблюдений. Выводы никакие не делаю, т.к. причин может быть множество. Нужно наблюдать.

🔹 С зарплатами без изменений. 48% вакансий с зарплатой предлагают до ₽150к. До ₽400к попадают 95% вакансий.

🔹 С удалёнкой тоже все стабильно: 36%.

Если интересно — продолжу делиться наблюдениями.
04/18/2025, 08:40
t.me/yet_another_dev/183
YE
yet another dev
200 subscribers
1.3 k
👩‍💻 Бесплатные PostgreSQL as a Service решения для пет-проектов

В продолжение своего вопроса собрал список провайдеров, которые предоставляют бесплатный хостинг PostgreSQL.

👩‍💻 Репозиторий: github.com/alexeyfv/awesome-free-postgres

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

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

Везде зарегистрировался и проверил сам.
04/11/2025, 08:34
t.me/yet_another_dev/179
YE
yet another dev
200 subscribers
140
Альтернативы SharpLab

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

👩‍💻 C# Interactive в Visual Studio — встроенный REPL, который запускается через меню View → Other Windows → C# Interactive. Позволяет писать и выполнять C# код в отдельном окне.

👩‍💻 C# Interactive в Rider — аналогичный инструмент от JetBrains.

👩‍💻 csharprepl — опенсорсная REPL-утилита. Устанавливается через .NET CLI: dotnet tool install -g csharprepl. Есть автокомплит, Intellisense, подсветка синтаксиса, просмотр IL-кода и даже поддержка OpenAI через Bring Your Own Token. Примеры использования можно посмотреть в репозитории.

👩‍💻 dotnet-repl — ещё одна опенсорсная REPL-утилита. Также устанавливается через .NET CLI: dotnet tool install -g dotnet-repl. По сравнению с csharprepl, хуже работает подсветка синтаксиса. Совсем нет автокомплита, Intellisense и других фичей.

👩‍💻 Polyglot Notebook — расширение для VS Code. Использовать очень просто: установить, создать .dib файл, выбрать С# и можно писать код. Функционал аналогичен Jupiter Notebook.

⚙️ LINQPad — старая добрая десктопная программа, которая, пожалуй, больше всего по внешнему виду и функционалу похожа на SharpLab. Работает только на Windows и Mac (бета). К сожалению, полноценный функционал доступен только в платной версии, поэтому не очень подходит для рабочей тачки.

🌐 Compiler Explorer — онлайн дизассемблер. Позволяет просматривать только ASM. Поддерживает множество языков и C#, в том числе.

👩‍💻 dotPeek — бесплатный декомпайлер от JetBrains. Удобен тем, что позволяет смотреть C#, IL и ASM в одном окне. Работает только на Windows.

За рекомендации спасибо @ishvedov и @NSent.
04/10/2025, 07:29
t.me/yet_another_dev/178
YE
yet another dev
200 subscribers
151
SharpLab мёртв?

Сегодня буднично писал код. В какой-то момент мне понадобилось быстро вспомнить работу одной коллекции. Для таких случаях я обычно использую sharplab.io.

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

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

Последняя активность в проекте — 18 ноября 2024 года. С тех пор — тишина.

На всякий случай я открыл issue с вопросом. Посмотрим, что ответит Андрей (автор SharpLab) и будет ли вообще ответ.
04/09/2025, 13:08
t.me/yet_another_dev/177
YE
yet another dev
200 subscribers
165
Коллеги, посоветуйте, пожалуйста, бесплатные Postgres-as-a-Service решения.

Цены у облачных провайдеров совсем не подходят для pet-проектов. Например, тот же Яндекс стоит больше 5000 рублей / месяц.

Основные требования:
- Бесплатно навсегда, без триал периода.
- Наличие резервных копий с возможностью восстановления хотя бы за последние 1–3 дня.
- Без обязательной привязки банковской карты.
- Локация — Европа.
- Объём — достаточно пары сотен мегабайт.

Google Sheets не предлагать. Я уже использую её в качестве базы данных.
04/08/2025, 13:51
t.me/yet_another_dev/176
YE
yet another dev
200 subscribers
249
Ещё больше опенсорсных проектов становятся платными

Две свежие новости из мира open-source software (OSS) в .NET:

1. MassTransit станет платным, начиная с версии 9. Новая версия будет распространяться по коммерческой лицензии. При этом версия 8 останется OSS и будет получать только критические патчи и багфиксы.

2. Джимми Богарт, автор AutoMapper и MediatR, также сообщил, что переводит свои проекты на коммерческую модель. Он больше не может поддерживать их в свободное от работы время, как раньше, и хочет создать устойчивую модель развития. Конкретные детали монетизации пока не объявлены. Забавно, что всего 2 месяца назад он писал, что никогда не сделает MediatR платным.

Что происходит?

Не сказать, что я большой фанат AutoMapper и MediatR. По-моему, от них даже больше проблем, чем пользы. Но поддержка OSS – действительно сложная штука. Людей, которые тратят личное время на такие проекты можно понять. Я это вижу даже по EventFlow. У библиотеки 2.4 тыс. звёзд на GitHub и миллионы загрузок на NuGet. Но при этом автор пишет, что почти нет пул-реквестов от компаний, не говоря уже о финансовой поддержке.

Можно вспомнить свежий случай с FluentAssertions. Ещё 2 года назад автор с иронией «хвастался», что кто-то задонатил $31. Неудивительно, что он решил продать своё детище компании. Правда это не отменяет текущий неадекватный ценник на библиотеку – сейчас она стоит почти как Rider.

Также можно привести в пример Avalonia UI. У проекта 27.3 тыс. звёзд на GitHub, десятки миллионов загрузок на NuGet и всего 43 спонсора. Даже если предположить, что каждый из них донатит по $100 в месяц (что маловероятно), это всего $4300 — немного для команды из 11 человек. Да, они наверняка дополнительно зарабатывают на консалтинге, но если говорить исключительно о добровольной поддержке через донаты — ситуация грустная.

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

В итоге от всей этой ситуации выигрывают только корпорации. Одни просто используют OSS в своих коммерческих продуктах. Другие скупают права на библиотеки, фактически присваивая результат многолетнего труда десятков разработчиков, которые вкладывали в проект своё время, знания и энтузиазм.
04/03/2025, 18:42
t.me/yet_another_dev/175
YE
yet another dev
200 subscribers
259
Утиная типизация в C#

English version.

Думаю, опытные C#-разработчики знают ответ на вопрос: «Что нужно сделать, чтобы можно было перечислить объекты при помощи foreach?»

Для этого не обязательно наследовать класс от интерфейса IEnumerable. Достаточно, чтобы класс имел публичный метод GetEnumerator, который возвращает объект, реализующий IEnumerator.

// Этот код компилируется
var obj = new MyType();
foreach (var item in obj);

class MyType {
public IEnumerator GetEnumerator() {
throw new Exception();
}
}

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

Аналогичное поведение встречается и при работе с async-await. Чтобы «ожидать» тип, достаточно, чтобы у него был метод GetAwaiter(), возвращающий тип TaskAwaiter или ValueTaskAwaiter. При этом даже не обязательно, чтобы этот метод был внутри самого ожидаемого типа.

cs
// Этот код тоже компилируется
var obj = new MyType();
await obj;

class MyType {
}

static class MyTypeExtensions {
public static TaskAwaiter GetAwaiter(
this MyType @object) {
throw new Exception();
}
}

Недавно я наткнулся на ещё один случай, который можно считать примером утиной типизации. Начиная с версии 12, в C# появился упрощённый способ инициализации коллекций:

int[] array = [1, 2, 3, 4, 5];
List list = [1, 2, 3, 4, 5];

Этот лаконичный синтаксис работает не со всеми коллекциями. Например, следующий код не скомпилируется:

Queue queue = [1, 2, 3, 4, 5];
Stack stack = [1, 2, 3, 4, 5];

Компилятор ожидает, что у типа коллекции будет метод Add, но в Queue вместо него используется Enqueue, а в Stack — Push. Изменить эти типы мы не можем, поэтому можно сделать следующий финт и помочь компилятору обнаружить метод Add:

public static class CollectionExtensions {

public static void Add(
this Queue collection,
T item) => collection.Enqueue(item);

public static void Add(
this Stack collection,
T item) => collection.Push(item);
}

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

// и этот код компилируется
MyType collection = [1, 2, 3];

class MyType : IEnumerable {
public IEnumerator GetEnumerator() {
throw new Exception();
}
}

static class MyTypeExtensions {
public static void Add(
this MyType o,
int value) { }
}
UPD: В комментариях выяснили, что оператор using может быть использован с ref struct без IDisposable начиная с C# 8.0.

using var obj = new MyType();

ref struct MyType {
public void Dispose() { }
}
UPD2: В комментариях выяснили, что foreach может обойтись без IEnumerator.

// Этот код компилируется
var obj = new MyType();
foreach (var item in obj);

class MyType {
public MyEnumerator GetEnumerator() => new();
}

class MyEnumerator {
public object Current => new();
public bool MoveNext() => false;
}
03/31/2025, 08:47
t.me/yet_another_dev/174
YE
yet another dev
200 subscribers
210
ИИ впечатляет всё больше и больше

Последние несколько дней я занимаюсь миграцией своего блога с Jekyll на Astro, и в этом мне очень помогает ИИ.

1. Частично пишу код с помощью ИИ-агентов в GitHub Copilot (тот самый Vibe Coding). Особенно полезно, когда нужно выполнить много рутинных задач: заменить на , добавить краткие описания ко всем постам, отредактировать теги и привести их к единому стилю.

2. В Astro у каждого поста должна быть обложка, тогда как в Jekyll она была не обязательной. Здесь на помощь приходит генерация картинок в ChatGPT. Впечатляет, что нейросети уже умеют корректно генерировать текст.
03/30/2025, 19:31
t.me/yet_another_dev/173
YE
yet another dev
200 subscribers
329
03/21/2025, 10:11
t.me/yet_another_dev/171
YE
yet another dev
200 subscribers
157
Куда-то делись комментарии. 🤔
03/19/2025, 11:44
t.me/yet_another_dev/170
YE
yet another dev
200 subscribers
164
Уже вторую неделю встречаю комментарии в духе: «Если C# такой быстрый и хороший, то почему Microsoft переписала компилятор TypeScript на Go, а не на C#?»

Среди множества спекуляций на эту тему мне попался один комментарий на Хабре, который, как мне кажется, ясно объясняет причину.

Btw, компилятор C# (Roslyn) написан на C#.
03/19/2025, 10:58
t.me/yet_another_dev/169
YE
yet another dev
200 subscribers
164
03/19/2025, 10:58
t.me/yet_another_dev/168
YE
yet another dev
200 subscribers
261
03/14/2025, 09:44
t.me/yet_another_dev/165
YE
yet another dev
200 subscribers
261
🧳 Рынок труда

Наверное, многие слышали о сокращениях в российской IT-сфере. Например, пару месяцев назад уволили мою однокурсницу из «Купера». По её словам, там сократили ещё множество сотрудников. Кроме того, я заметил, что HR почти перестали писать мне с предложениями о работе. Хотя не исключаю, что компании просто избегают релокантов. Так или иначе, мне стало интересно, какие вакансии для C# разработчиков сейчас публикуются на сайтах по поиску работы. Я решил написать скрепер для hh.ru.

Методология сбора данных

Данные собирается по следующим параметрам:

1. Общее количество вакансий.
2. Количество вакансий по месту работы (офис/удалёнка).
3. Количество вакансий по образованию.
4. Количество вакансий по опыту.
5. Количество вакансий по указанной зарплате.

В выборку попадают все вакансии, где указан навык C#. Это не только разработчики, но и, например, тимлиды и AQA.

Важно учитывать, что:

- Одна вакансия может быть на несколько позиций. Например, когда требуется нанять сразу несколько C# программистов на один проект.
- Разные вакансии могут быть на одну и ту же позицию, но размещены в нескольких городах.
- В зарплатах указываются как нижний, так и верхний предел вилки.

Поэтому диаграммы лишь приблизительно отражают реальную картину.

Результаты

1. Без фильтров hh.ru показывает 2574 вакансий с навыком C#. Большая часть из них — разработка. С фильтрами, почему-то суммарное количество получается немного другое. Например, если разбивать по образованию, то суммарное количество вакансий будет 2624 — на 40 больше.

2. Удалёнка разрешена в 36% вакансий.

3. Для 28% вакансий требуется высшее образование.

4. Для начинающих айтишников доступно 11% вакансий.

5. Зарплата указана для 33% вакансий. Судя по распределению, медианная зарплата находится где-то в районе 150к - 175к рублей.

Что дальше

Интересно понаблюдать за вакансиями в динамике. Поэтому сейчас готовлю деплой на свою VPS с возможностью ежедневного сбора.

Также планирую анализировать вакансии с Хабр Карьеры. Если знаете другие популярные сайты с вакансиями — напишите в комментариях.
03/14/2025, 09:44
t.me/yet_another_dev/167
YE
yet another dev
200 subscribers
261
03/14/2025, 09:44
t.me/yet_another_dev/164
YE
yet another dev
200 subscribers
261
03/14/2025, 09:44
t.me/yet_another_dev/166
YE
yet another dev
200 subscribers
235
03/11/2025, 08:59
t.me/yet_another_dev/163
YE
yet another dev
200 subscribers
316
FluentAssertions стала платной

Коллеги, если вы вдруг пропустили новость, то сообщаю. Библиотека для тестирования FluentAssertions стала платной около месяца назад. Теперь стандартная лицензия для 1 разработчика стоит $129.95 в год, а для небольших компаний – $49.95 в год.

Новость довольно неприятная. Мы, например, используем её повсеместно на наших проектах.

Какие есть альтернативы:

1. Остаться на FluentAssertions не выше версии 7.0.0.

2. Перейти на AwesomeAssertions – форк FluentAssertions с лицензией Apache 2.0, который продолжит развиваться сообществом.

3. Перейти на Shouldly – бесплатную библиотеку с лицензией BSD.

4. Перейти на NFluent – ещё одну бесплатную библиотеку.

5. Вернуться к классическому Assert.

Если вы уже используете FluentAssertions, самым простым вариантом будет переход на AwesomeAssertions.
02/15/2025, 12:12
t.me/yet_another_dev/162
YE
yet another dev
200 subscribers
224
Оптимизация JIT-компилятора при работе с коллекциями

Помните я писал статью про производительность foreach при работе с коллекциями через интерфейс IEnumerable?

Вкратце напомню в чём дело. Когда мы используем, например массивы и списки через интерфейс IEnumerable, то их энумератор приводится к интерфейсу IEnumerator. У массивов и списков энумератор – это структура. Следовательно, при приведении происходит упаковка.

Так вот, команда .NET собирается добавить в .NET 10 оптимизацию для таких случаев, по крайней мере для массивов.

По моему, это круто. Теоретически, работа с массивами через LINQ должна ускориться. Будет интересно проверить этот функционал, когда появится первый релиз .NET 10.
02/07/2025, 09:16
t.me/yet_another_dev/161
YE
yet another dev
200 subscribers
171
Сообщество DotNetRu на подкасте разбирает статью про пулы объектов в C#

Сегодня ребята из DotNetRu выложили подкаст, на котором разобрали мою статью про паттерн ObjectPool.

Если вы пропустили эту статью и вам интересен формат подкаста, то вот ссылка.
02/03/2025, 20:03
t.me/yet_another_dev/160
Search results are limited to 100 messages.
Some features are available to premium users only.
You need to buy subscription to use them.
Filter
Message type
Similar message chronology:
Newest first
Similar messages not found
Messages
Find similar avatars
Channels 0
High
Title
Subscribers
No results match your search criteria