172 похожих чатов

А как ВЫ внедряете БД в свой проект? прямо тип в

структуру внедряете? или трейт?

16 ответов

6 просмотров

Шанс того, что в процессе работы над проектом сменится бд - стремится к 0, поэтому мы юзаем хардкод на конкретную базу (хотя у sqlx и выбор не велик, oracle, к сожалению, не поддерживается)

Oleh-Bozhok Автор вопроса
Артем Пятницкий
Шанс того, что в процессе работы над проектом смен...

а что за проект у вас, где используетсяя раст? а не какой ни буть go или java или js

Oleh-Bozhok Автор вопроса
Артем Пятницкий
Банк, нужно быстро и безопасно

а время разработки страдает иногда?

Arseniy Lebedev
Жалко mentat помер

А что это? Не гуглится просто

Oleh Bozhok
а время разработки страдает иногда?

Бывает, но окупается большой гибкостью и бОльшим перформансом. Сам пришел из го, где я страдал из-за нехватки всего. Хотя, конечно, иногда хочется все бросить и накидать простейший код на го, вместо борьбы с компилятором)

Oleh Bozhok
нехватка "всего" это что?)

Отвратная обработка ошибок в виде 3/4 всех строк кода это if err != nil {...} Отсутствие дженериков (самая большая боль), а как следствие всяких удобных option, result, универсальных функций, мьютексов (которые не забудешь) и тд. Отсутствие enum'ов, даже примитивных как в си, вместо этого константы юзаются Отсутствие паттернматчинга Отсутствие макросов (спорно, но растовые мне очень упрощают жизнь) Наличие nil Неявные интерфейсы с отсутствием решения пересечения названий методов Неудобные модули (во всяком случае я начинал до 1.11, сейчас лучше, но все равно привязка к url'у меня бесит) Нет unbound канала, который не буферизированный, но и не блокирующий Громоздкие лямбды Неявный захват по ссылке в лямбдах и возможности отстрелить себе ногу при спауне горутин (можно конечно просто так не делать, но никто не запрещает) Туплы очень простые, не дающие писать удобный однострочный код Нельзя вернуть переменную из {}, приходится создавать переменную блоком выше и не забыть внутри ее везде использовать Отсутствие деструктуров, а следствие неудобный во много defer, который нельзя объявить для скоупа, а не для функции Может что-то ещё, но я уже не помню

Oleh-Bozhok Автор вопроса
Артем Пятницкий
Отвратная обработка ошибок в виде 3/4 всех строк к...

да, нормальный такой список.. у меня уже по ходу проф деформация, я многого просто не замечаю) вот по поводу обработки ошибок мне сейчас пришлось таку от штуку делать match q { Ok(q) => { self.lang_cache.insert(lang.to_string(), q.id); return Ok(q.id); } Err(e) => match e { sqlx::Error::RowNotFound => { let exec_result = sqlx::query!("insert into langs(lang) values($1)", lang) .execute(&self.db) .await; .... } _ => { return Err(Box::new(e)); } }, } как сделать обработку ошибок проще?

Артем Пятницкий
Отвратная обработка ошибок в виде 3/4 всех строк к...

+ с т.з. HPC бесит GC который много кушает и заставляет городить спец. структуры данных с фиксированным числом указателей

Oleh-Bozhok Автор вопроса
Yerden Zhumabekov
+ с т.з. HPC бесит GC который много кушает и заста...

мне не приходилось работать с такой нагрузкой где GC уже напрягает...

Oleh Bozhok
да, нормальный такой список.. у меня уже по ходу п...

Ну как минимум можно убрать одну вложенность матча и написать сразу Err(sqlx::Error::RowNotFound) => {...} other => return Err(Box::new(other))

Oleh Bozhok
да, нормальный такой список.. у меня уже по ходу п...

Плюс я лично мало юзаю функциональный подход для футур, но думаю есть адаптеры для написания чейнов таких, но я не подскажу, мне проще такой явный писать

Похожие вопросы

Обсуждают сегодня

Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
А чем вам питонисты не угодили?😂
.
79
Всем привет. Поделитесь, пожалуйста, опытом. Есть форма, на которой имеется dbgrid и кнопки: добавить, редактировать, удалить. Если нет записей в dbgrid, то кнопки редактирова...
Евгений
4
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
83
Вот смотрите у меня есть два стрима сейчас fs, cs: TStream; fs := TFileStream.Create('filename'); cs := TCompressionStream.Create(compression_level, fs); Я хочу сделать так: ...
notme
5
type TExtensions<GExtender>=class function GetExtension<GEntityExtenderType>:GEntityExtenderType; end; function TExtensions<GExtender>.GetExtension<GEntityExtenderType...
zamtmn
8
Всем здравствуйте! Я хотел узнать сколько стоит средняя месячная зарплата у Electron js разработчиков? Мне очень это важно и нужно, плиз помогите узнать эту инфу! Для Джунио...
U.K.
10
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Карта сайта