← All posts tagged apteryx

ermine

Что у нас там дальше по плану? SASL? А что у нас уже есть? Тоже наверное придется писать с нуля, реализуя не менее пяти-десятка механизмов шифрами. Ну-ко, пора сходить в магаз за спикером.

ermine

Я не забила на аптерыкса, я наконец дописала PRECIS и JID. До сих пор непонятно, как программировать на Rust, точнее, как экономить на копировании значений — чуть что, так компилятор сразу орет cannot move/borrow и так далее. Ну, если Rust соглашается везде с тем, чтобы я явно копировала эти гребенные значения, значит, я всё правильно делаю!

ermine

Как-то дописала парсер земля для аптерыкса. Работает как-то. Даже компилируя. Теперь дописать генератор хмпп. Много узнала, как пишется код, и, видимо, еще много узнаю. Это интереснее, чем всякие джавы, джаваскрипты, тайпскрипты, даже камло (вчера пришлось почитать свой старый код на камне, чуток прослезилась от ностальгии — монады, iteratee чудные на камле!). Так-то. Кстати, зачем мне понадобился код на камле. Там у меня реализован алгоритм енкогдинга utf8. Во всем русте я не нашла, как без напряга читать данные из сокета и постепеннее конвертить в утфы, так, чтобы не потерять хвосты (а их образуется аж две штуки: первый хвост — когда считал из интернета неполный утф8 символ, и второй хвост, когда недопарсив строчку, возвращаешь токен). Есть чем гордиться как домохозяйка-рустистка.

ermine

Мне нужен протокол, чтобы гонять туфту между процессами или своими серверами по TCP. Скажите, а ASN.1 еще в моде или протобуф еще круче? а может asф.1 круче? а оно есть на Rust? Там делов-то — взял структуру и завернул ее и ее поля в tlv и погнал по тцп.

ermine

Пока жуйк в моем макбуке и моем айфоне глючат, написала уже первую тысячу строк кода, на которые компилятор не плюется. Теперь надо культово так писать тесты. Интересно, в vs Code есть для руста такая же крутая штука как для jest? Чтобы подмигивало лампочками и указывало ту строчку, где тест сбоит.

ermine

Три дня пыталась скопились свой парсер иксемеля, борясь в основном с ошибкой cannot move out of borrowed content, потом сдалась и набрала сильно упрощенный пример и почти сразу удалось привести его в компилабельный вид. Вот, привожу этот пример с кучей ошибок:

enum S {
A,
B(String),
C(String)
}

struct X {
state: S
}

impl X {
fn parse(&mut self, s: String) {
for ch in s.chars() {
match &self.state {
S::A => {
let mut s = String::new();
self.state = S::B(s)
}

S::C(ref mut z) => {
z.push(ch);
self.state = S::C(*z);
}

S::B(ref mut word) => {
word.push(ch);
continue;
}
}
}
}
}

fn main() {
let mut x = X { state: S::A };
x.parse("abyr".to_string());
}

Ты читал книжку по Rust? Теперь скопили!

ermine

Второй день жру кактус с лайфтаймами раста. Проблемы с ними возникли когда засунула в hashmap в качестве ключа и значения тип &str и потом долго блудила с буковками типа 'a, 'b по коду, пока случайно в гугле не обнаружила хитрое замечание о том, что в некоторых коллекциях раста идиоматично будет использовать тип String. Это помогло. Ну и чудеса! Ведь лайфтаймы — это такая штука, на которых, как говорят, многие мужики сливают из раста. :)

ermine

Как правильно и православно делать кодек utf8 для Tokio, чтобы само автоматически из чанков делало utf8 строки или позволяло итератить массив байтов по utf8 символам? Готового кода не вижу!

ermine

Глядя на то, как @vt до сих пор не может починить жуйк (а может, толком и не знает, что упало), есть мысль реализовать в недоптичке какую-то систему самомониторинга, вот вопрос — а есть наука про такую вещь?