Email or username:

Password:

Forgot your password?
1,629 posts total
Roman

Я нашел таки способ идеально готовить с минимальными затратами вареные яйца. Аэрогриль. В нем они не лопаются. Осталось только время подобрать, судя по всему 180 градусов и 9 минут. Попробую на 220 может быстрее будет. Никакой воды не надо кипятить. Потом бросил в холодную и все, гриль еще и пищит когда надо.

Iron Bug
так потом же скорлупу хрен отчистишь, без воды-то.
𝙹𝚘𝚑𝚊𝚗

@3draven Разве 180° подходит под понятие «вареные»?

Roman

Прошло три месяца с момента атомарной миграции на убунту 24.04. Снес 20.04 оставив только хомяк и етц. Еще несколько месяцев и снесу раздел.

Roman

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

Roman

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

Roman

Поставил убунту свою на бтрфс месяца три назад. Кажется стали подвисать некоторые проги где надо за изменениями файлов следить. Типа сред разработки.

Roman

Поддался несколько раз порыву и пилил ночью. Больше так делать не стану по возможности. Заметно как режим начал трещать.

Roman

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

Roman

Макрос не стал для ньютайпов юзать, еще потом макрос дебажить :)

Roman

Тесты буду просто класть прямо в контроллеры.

Roman

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

Roman

Услышал историю как лгбт мужик отпиздил девочку на олимпиаде. Девочку жалко.

Roman

Так что типы будут жирные по тексту, а не автомат.

#[derive(Debug, Serialize, Deserialize)]
#[serde(from = "String")]
pub struct PreferredUsername(pub String);

impl std::ops::Deref for PreferredUsername {
type Target = String;

fn deref(&self) -> &Self::Target {
&self.0
}
}

impl From<String> for PreferredUsername {
fn from(value: String) -> Self {
PreferredUsername(value)
}
}

Может я просто пока что то не понимаю.

Так что типы будут жирные по тексту, а не автомат.

#[derive(Debug, Serialize, Deserialize)]
#[serde(from = "String")]
pub struct PreferredUsername(pub String);

impl std::ops::Deref for PreferredUsername {
type Target = String;

fn deref(&self) -> &Self::Target {
&self.0
}
}

impl From<String> for PreferredUsername {
fn from(value: String) -> Self {
PreferredUsername(value)
}
}

Roman

Сделаю макрос, я с ума сойду для каждого столько писать.

Roman

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

Roman

Но может я передумаю, все же serde_Rusqile неплохое решение, относительно.

Roman

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

Roman

Боже, благослови git и Торвальдса! Откатил два коммита назад что бы не вычищать дизель.

Roman

Включил фильм Затоичи. Блин, какой класс

Roman

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

Roman

Ну, то есть их много, но до них доживать еще далеко.

Roman

Хочу кабана в шоколаде!

Roman

Еще не запускал но дизель оказался не страшный

diesel::insert_into(settings::table)
.values(&setting)
.on_conflict(key)
.do_update()
.set(value.eq(excluded(value)))
.execute(&mut conn)
.context("Error saving new post")?;

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

Roman

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

Roman

Вырезание anyhow из хэловорда прошло в мирной обстановке с охреневанием лишь по началу. В итоге пришлось сделать ошибку с контекстом (нравится) и внутри нее ошибку конвертер с помощью thiserror куда просто добавить все типы ошибок, что есть в приложении, там их штук десять может, включая зонтичные от либ. В итоге контроль над кодами ответов прямой, контексты есть, а добавление новой ошибки это две строки...ну три, копипастой. Удобство осталось, зато никаких макросов.

Roman

Следующим будет впиливание дизеля, но потом, скоро кафе закроют.

Roman

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

Roman

И anyhow я кажется из проекта выкину. Thiserror прекрасно ее заменяет. Так же рефинери заменится тем же дизелем. Три либы уйдут, одна добавится, а писанины станет меньше.

Go Up