Forwarded from Слава
enum InputDataValue {
Simple(String),
NestedItems(Vec<InputData>),
NestedValue(Vec<InputDataValue>),
}
Вот это то самое, чего в шарпах не хватает
Simple(String),
NestedItems(Vec<InputData>),
NestedValue(Vec<InputDataValue>),
}
Вот это то самое, чего в шарпах не хватает
Forwarded from Αλεχ Zhukovsky
один раз была херня когда чуваки из парити решили юзера сменить, пришлось немного своей обертки написать, но все же это на порядок удобнее ручного развертывания
GitHub
orbita-center/parity-poa-playground
Setup your first Parity PoA network in a few commands - orbita-center/parity-poa-playground
Forwarded from Константин
про задачку? делали сервис для работы с фтп ЕИС, надо было забирать данные о поставках товаров в текстовом виде, и конвертить в структурированный вид
а описания там могли быть любые, типа "поставщик обязуется поставлять 100 бутылок водки в течение 15 рабочих дней с 21.01.2019, еще 200 бутылок с 20.03.2019 по 10.05.2019" и т.д, надо в итоге было строить график поставок, сколько партий, с какого по какое число, в каком количестве, с учетом производственного календаря
сам сервис был на го, а для парсера взяли раст, потому что под него есть pest, а у го ничего похожего не нашлось, что могло бы генерить строго-типизированный парсер по описанию грамматики на этапе компиляции, и чтобы было удобно работать с синтаксическим деревом (на расте обработчик состоял по большей части из паттерн матчинга, на го боюсь представить, какая портянка была бы с ифами и проверками типов)
ну и запилили, сервис брал сообщения из рэббита, парсил, результат клал в монго
грамматика вышла с кучей шаблонов, строк на 700, компилилось долго, зато релизные билды летали, для тестовой веб-морды взяли gotham, самый кайф был - после тестирования открываешь лог запросов, а там время обработки написано в микросекундах, потому что большинство запросов отрабатывало быстрее миллисекунды
от раста вся команда кайфанула, потом когда обратно на го пересели, жаловались, что не хватает обработки ошибок, Result'a/Option'a, итераторов с их map/filter/fold, и еще много чего
особенно по карго скучали
с го еще случай был как раз в то время, заюзали какую-то орм-ку, импортировали по полному пути, как полагается, import ("github.com...")
и в один день начали падать билды, владелец репа то ли перенес его в битбакет, то ли еще куда-то, уже не помню, пришлось пробегаться по всему коду автозаменой, менять импорты на новый адрес, в итоге юзали go vendor везде, коммитили все зависимости прямо в реп
на фоне удобства карго это такой дикостью казалось
а описания там могли быть любые, типа "поставщик обязуется поставлять 100 бутылок водки в течение 15 рабочих дней с 21.01.2019, еще 200 бутылок с 20.03.2019 по 10.05.2019" и т.д, надо в итоге было строить график поставок, сколько партий, с какого по какое число, в каком количестве, с учетом производственного календаря
сам сервис был на го, а для парсера взяли раст, потому что под него есть pest, а у го ничего похожего не нашлось, что могло бы генерить строго-типизированный парсер по описанию грамматики на этапе компиляции, и чтобы было удобно работать с синтаксическим деревом (на расте обработчик состоял по большей части из паттерн матчинга, на го боюсь представить, какая портянка была бы с ифами и проверками типов)
ну и запилили, сервис брал сообщения из рэббита, парсил, результат клал в монго
грамматика вышла с кучей шаблонов, строк на 700, компилилось долго, зато релизные билды летали, для тестовой веб-морды взяли gotham, самый кайф был - после тестирования открываешь лог запросов, а там время обработки написано в микросекундах, потому что большинство запросов отрабатывало быстрее миллисекунды
от раста вся команда кайфанула, потом когда обратно на го пересели, жаловались, что не хватает обработки ошибок, Result'a/Option'a, итераторов с их map/filter/fold, и еще много чего
особенно по карго скучали
с го еще случай был как раз в то время, заюзали какую-то орм-ку, импортировали по полному пути, как полагается, import ("github.com...")
и в один день начали падать билды, владелец репа то ли перенес его в битбакет, то ли еще куда-то, уже не помню, пришлось пробегаться по всему коду автозаменой, менять импорты на новый адрес, в итоге юзали go vendor везде, коммитили все зависимости прямо в реп
на фоне удобства карго это такой дикостью казалось
Anton Cheshurepushko:
Эм, что? Пишешь std::move и принимаешь universal references — и вперёд
Т-34 85:
а что такое " universal references"? это const &?
Roman Proskuryakov:
это T&&
Т-34 85:
а если мы туда передадим const lvalue, то будет конструктор копирования вызван?
вообще, там щас полный пипец. То copy elision отработает, то не отработает
то куча перегрузок на эти квалификаторы
то move semantics не разрушающая
да, после такого реально начинаешь думать, что modern cpp - не то, что нужно
Эм, что? Пишешь std::move и принимаешь universal references — и вперёд
Т-34 85:
а что такое " universal references"? это const &?
Roman Proskuryakov:
это T&&
Т-34 85:
а если мы туда передадим const lvalue, то будет конструктор копирования вызван?
вообще, там щас полный пипец. То copy elision отработает, то не отработает
то куча перегрузок на эти квалификаторы
то move semantics не разрушающая
да, после такого реально начинаешь думать, что modern cpp - не то, что нужно
Forwarded from Oleg Andreev
вот когда люди говорят мол "раст для тех кто на с++ не умеет", то я это полностью поддерживаю. Я С++ не умею и уметь не собираюсь. Так что оч рад что кто-то придумал Раст для таких смертных как я.
Forwarded from Антон
std::mem::size_of::<Option<&T>>() == std::mem::size_of::<*T>(), напримерForwarded from Nikita Vilunov
Forwarded from Bogdan
print-type-size type: `A<B<i64>>`: 16 bytes, alignment: 8 bytes
print-type-size variant `Some`: 16 bytes
print-type-size field `.0`: 16 bytes
print-type-size variant `None`: 0 bytes
print-type-size type: `A<i64>`: 16 bytes, alignment: 8 bytes
print-type-size discriminant: 8 bytes
print-type-size variant `Some`: 8 bytes
print-type-size field `.0`: 8 bytes
print-type-size variant `None`: 0 bytes
print-type-size type: `B<i64>`: 16 bytes, alignment: 8 bytes
print-type-size discriminant: 8 bytes
print-type-size variant `Some`: 8 bytes
print-type-size field `.0`: 8 bytes
print-type-size variant `None`: 0 bytes