Flexible Coding
155 subscribers
165 photos
2 files
99 links
Download Telegram
Всем привет! Пока контент готовится, расскажу вам про ещё одну мою активность

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

Мы собрали кейсы для аналитиков, продактов и разработчиков и представили их в своих презентациях. И всё прошло отлично! В конце доклада была интересная дискуссия на темы использования ИИ в работе, от безопасности до "а что если делегируя всё ИИ ты не будешь развиваться?"

Могу сказать, что организовывать такие мини-митапы действительно очень крутая практика, и это точно не последний мой доклад. А про то, как я использую GPT в жизни у меня есть статья (пусть немного и устаревшая - сейчас я использую его в большем количестве кейсов)

(а ещё у меня сегодня день рождения)

Flex Code
🎉13👍6
Всем привет!
Вспоминая недавний митап, расскажу подробнее про то, как я использую GPT на работе.

Важно понимать, что GPT (по крайней мере бесплатные версии) не сможет решать сложные/комплексные/специфичные задачи, особенно если про них мало информации в интернете. Однако базовые рутинные дела он может выполнять быстрее (и иногда лучше) чем человек. И вот примеры:
1. Маппинги объектов. Переложить 40+ полей из класса A в класс B с дополнительной логикой - тупая, но затратная задача. Однако можно просто написать в GPT "Напиши метод маппинга из класса <код> в класс <код>", и с высокой вероятностью он всё сделает как надо. А где "сомневается" - оставит коммент
2. Генерация SQL. Лично я в первую очередь использовал GPT для генерации таблиц на основе классов - мне было супер-лень писать код самостоятельно или натыкивать каждый столбец в интерфейсе СУБД. Ну а ещё он может быстро сгенерить код для пагинации или других запросов
3. Генерация DTO по документации. Скармливаем GPT json или просто описание полей из документации (иногда поля в интеграциях просто описываются списком в ворд-документе) и получаем необходимые классы

ВАЖНО!
Код от GPT надо проверять, а потом перепроверять. Он может генерировать плохой код, код с несуществующими методами или просто код, который не выполняет нужную задачу. Однако как показывает практика, лично мне проверить и добавить пару фиксов в уже готовый код гораздо проще, чем писать всё с нуля

А вот ещё пара статей про безопасность ChatGPT:
- GPT сливает персональные данные
- GPT генерирует уязвимый код
- Немного дырявый GPT
- Мысли про безопасность использования GPT

Flex Code
👍14
Итак, 2023 год подходит к концу.

Небольшие итоги:
- 7 статей для Flex Code
- 4 статьи для TimeWeb (чуть чуть попробовал себя в роли копирайтера)
- Очень много книг, однако технических стало поменьше - про 5 из них я рассказал в этом блоге
- Один завершённый пет-проект (кстати открыл исходники)
- Посетил конференцию "Стачка" в Ульяновске
- Организовал 2 митапа - в колледже и на работе

В целом считаю, что год прошёл очень хорошо, а следующий будет ещё лучше! (но можно было и не заболевать на праздники)
Всех с Наступающим!🎄🎄🎄
🎄13
Под новый год JetBrains сделали мне "подарок" - отказались продлевать учебную лицензию для своих IDE. И ради интереса я решил посмотреть, а как там VS Code?

Мой прошлый опыт с VS Code был негативным - очень плохой автокомплит, отсутствуют встроенные Tests Explorer и Solution Explorer, рабочий проект очень медленно индексируется. Однако сейчас, с новым расширением от Microsoft "C# Dev Kit" всё поменялось:
- Довольно быстро индексируется проект
- Нормальный автокомплит с автоматическими using из коробки
- Встроенные обозреватели решений и тестов довольно удобные
- Наконец-то vs code парсит файл launchSettings.json и не нужно создавать кастомные конфигурации запуска проектов

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

Подводя итоги - VS Code для меня стала лучшей бесплатной IDE под C#. Но я постараюсь вернуться в райдер)
🤷3👍1😢1🫡1
Недавно прочитал две книги про продуктивность и тайм-менеджмент:
- Джедайские техники
- Путь Джедая

Об этих книгах я слышал много, но как-то руки не доходили их прочитать. Теперь вот дошли :)

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

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

В обоих книгах полно отсылок на другие труды, такие как "Антихрупкость" Нассима Талеба или "Думай медленно - решай быстро" Канемана. Тоже очень порадовало, да и в целом читаются книги легко и приятно.

В общем, рекомендую. Даже не нашёл недостатков у этих книг :)
#книги
🔥11
Всем привет!

Сегодня расскажу про одно приложение, о котором я знал давно, но только недавно начал пользоваться

Loom - приложение для записи экрана. По сути это просто расширение для браузера, которое позволяет очень быстро записать короткое видео и сразу поделиться им

Как его можно использовать?
- Если вы тестировщик, саппорт или разработчик, и вам необходимо показать факт воспроизведения какого-то бага. Иногда видео гораздо нагляднее и удобнее.
- В обучающих кейсах - быстро записать видео с пояснением как учитель, продемонстрировать домашнее задание - очень удобно
- Черновики для видеоконтента
- Много других кейсов

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

А ещё есть прикольные интеграции с разными сервисами - от GitHub до Notion. В общем, полезная штука, советую

#приложения
Flex Code
🔥8👏1👌1
Неочевидный дизайн enum в C#

Недавно столкнулся с задачей сконвертировать строковое значение в Enum. В строке может быть как нормальное строковое значение из перечисления, так и число.
Задачка тривиальная:
- Вызываем Enum.TryParse(value, out var result)
- Если распарсили - используем это значение дальше
- Если нет - выполняем логику обработки отсутствия значения в enum

И тут на вход прилетает строковое значение "333" (такого значения в enum нет). А TryParse возвращает true. Итог - некорректное поведение системы. И нет, это не баг - это стандартное поведение метода TryParse.

Лично для меня супер неочевидно то, что TryParse не проверяет соответствие числа именованной константе из enum . Теперь знаю, что такое поведение исправляется с помощью метода IsDefined. (Источник - https://github.com/microsoft/referencesource/blob/master/mscorlib/system/enum.cs#L367)

А вот пример для воспроизведения:
var value = "333";

Console.WriteLine($"Пытаемся распарсить: '{value}'");

if (Enum.TryParse<SomeEnum>(value, out var result))
{
Console.WriteLine($"Результат парсинга - '{result}'. Тип - '{result.GetType().Name}'");
}
else
{
Console.WriteLine("Распарсить значение не удалось");
}
public enum SomeEnum
{
FirstValue = 0,
SecondValue = 1
}


Что интересно: в java и kotlin такого поведения не замечено (беглым тестом в онлайн компиляторе). В typescript тоже - при парсинге из числа, которое не входит в enum мы получаем undefined. Интересно, какие причины такой реализации?

#кейсы
🤔5👏2🫡1
{"query": {"bool": {"must": [{"nested": {"path": "nested_field","query": {"bool": {"must": [{ "match": { "nested_field.field1": "value1" }},{ "match": { "nested_field.field2": "value2" }}]}} }},{ "range": { "date_field": { "gte": "2024-01-01", "lte": "2024-02-01" }}}],"should": [{ "term": { "should_field": "value3" }},{ "term": { "should_field": "value4" }}]}}}. Как вам такое? Читаемо? Понятно? Это запрос в elasticsearch, причём не самый большой и сложный. С подобными огромными джейсонами без форматирования я сталкиваюсь очень часто. А ещё их часто надо сравнивать. А ещё я иногда использую регулярки. Есть тонна сайтов, которые решают каждую из этих проблем по отдельности, но это не очень удобно. У некоторых бесит дизайн, сами эти сайты нужно выискивать и добавлять в закладки...

Да, это снова рекомендации по приложениям. На этот раз - DevToys - мультитул разработчика. Очень удобная штука, которую использую как в работе, так и в пет-проектах.

Мои основные кейсы:
- Форматирование JSON (или XML) - часто из дебага вытаскиваю огромные запросы эластика и монги, и надо их раскрыть и проанализировать. Копирую огромный JSON, вставляю в DevToys - получаю читаемый текст. Много проблемных запросов обнаружил как раз благодаря этому инструменту
- Сравнение текстов - снова пример с запросами в БД. Допустим, есть баг - на продакшн среде и на тестовой среде разное поведение. Беру запрос с прода, с теста и сравниваю. Или просто какие-то тексты, результаты от API, и прочее - всё, что нельзя или неудобно сравнивать через гит
- Проверка регулярных выражений - иногда пользуюсь сайтом regex101, иногда этим приложением

В зависимости от задач и специфики работы могут пригодиться совершенно разные функции этого приложения. Думаю, что оно будет полезно не только разработчикам, но и аналитикам, тестировщикам и многим другим. В общем, пробуйте!
#приложения
Flex Code
🔥8👍2🫡2