← All posts tagged jabber.ru

ermine
jabber.ru Только что предупредили, что отключат сеть к жаберу на часик, а завтра — с 9 утра до 14, так что всем срочно в телеграм валить
ermine
Загрузила в айфон побольше чтива про APNs (яблочные пуши), в процессе гугления нашлись пара-тройка библиотек на Rust под это дело. Но вопрос не об этом. В процессе гугления также попадались упоминания про какое-то Rust Expo. Слово Expo у меня ассоциируется с React Native, способом программирования приложений под айос и андроид. Но вот что такое Rust Expo?
ermine
Одиннадцатый. В rust я пробовала парить строчки с помощью навороченных макросов-сканнеров Scan-macroses. Или он тупой, или я тупая, но я не осилила как там делать вложенные сканнеры, чтобы разбирать строчку вида a=1,b="c,d,e",d=qwe==
Проще оказалось написать так, как пишут на голом цэ, но меня при этом всегда мучал вопрос = а является ли такой ручной парсинг безопасным? и что является, собственно, безопасным партером, особенно после того, когда наслушаешься о том, что язык rust — самый безопасный язык?
ermine
rust apteryx Что у нас там дальше по плану? SASL? А что у нас уже есть? Тоже наверное придется писать с нуля, реализуя не менее пяти-десятка механизмов шифрами. Ну-ко, пора сходить в магаз за спикером.
ermine
rust apteryx Я не забила на аптерыкса, я наконец дописала PRECIS и JID. До сих пор непонятно, как программировать на Rust, точнее, как экономить на копировании значений — чуть что, так компилятор сразу орет cannot move/borrow и так далее. Ну, если Rust соглашается везде с тем, чтобы я явно копировала эти гребенные значения, значит, я всё правильно делаю!
ermine
rust А почему на расте нет реализации PRECIS (RFCs 7613)? Как же без готовой реализации этой делать жиды (jids)? На js вон в npm болтается какая-то готовая библиотека даже, А КАК ПЕРЕГНАТЬ js в rust?
ermine
rust Как в этом долбанутом на всю больную голову безопасности этом вашем ресте понять, почему прога падает? Бэктрейсов на три экрана, но там ни одной ссылки на мой код! Этот ваш unwrap() из Options. Очень безопасно. А вот если говядина падает с паникой — по бэктрейсу все видно, где чинить надо. А тут — фиг. Зато безопасно.
ermine
rust apteryx Как-то дописала парсер земля для аптерыкса. Работает как-то. Даже компилируя. Теперь дописать генератор хмпп. Много узнала, как пишется код, и, видимо, еще много узнаю. Это интереснее, чем всякие джавы, джаваскрипты, тайпскрипты, даже камло (вчера пришлось почитать свой старый код на камне, чуток прослезилась от ностальгии — монады, iteratee чудные на камле!). Так-то. Кстати, зачем мне понадобился код на камле. Там у меня реализован алгоритм енкогдинга utf8. Во всем русте я не нашла, как без напряга читать данные из сокета и постепеннее конвертить в утфы, так, чтобы не потерять хвосты (а их образуется аж две штуки: первый хвост — когда считал из интернета неполный утф8 символ, и второй хвост, когда недопарсив строчку, возвращаешь токен). Есть чем гордиться как домохозяйка-рустистка.
ermine
rust Тесты на русте — это такая штука, которая позволяет отладить проект любого размера, ни разу не запустив его. Прям сказка для домохозяйки, которая бы умерла с тоски, отлаживая свой любимый проект, напичкав его принцами и запуская в реальном мире. Я в восторге.
ermine
rust Длина строчки кода на русте не должна превышать 90 символов. Мудрые расисты, сделали мудрый выбор между 80 и 132+ символами.
ermine
apteryx Мне нужен протокол, чтобы гонять туфту между процессами или своими серверами по TCP. Скажите, а ASN.1 еще в моде или протобуф еще круче? а может asф.1 круче? а оно есть на Rust? Там делов-то — взял структуру и завернул ее и ее поля в tlv и погнал по тцп.
ermine
rust apteryx Пока жуйк в моем макбуке и моем айфоне глючат, написала уже первую тысячу строк кода, на которые компилятор не плюется. Теперь надо культово так писать тесты. Интересно, в vs Code есть для руста такая же крутая штука как для jest? Чтобы подмигивало лампочками и указывало ту строчку, где тест сбоит.
ermine
rust Расскажите, пожалуйста, как писать кодогенератор на Rust! Шоб по [#derive(XMPPCodec)] генерал мне код имплементации структуры.

@vt отвернись, ты не посоветуешь годного соложена, иди допиши сначала гейжуйк
ermine
rust Я теперь почти специалист по Rust — почти две недели боролась с Borrow check компилятора и наконец код аптерыкса начал компиляться. Из-за заморочек с борровсами, оказывается, надо писать много лишнего кода — просто так писать код как на сишечке или яваскрипте — низзя, ближе будет ырланковский код или на камне, причем борровчекер особо зверствует в match, не дает сразу маячить и делать изменения в одном и том же self. Не знаю, насколько это удобно, но наверняка всю ответственность за правильность кода можно спихнуть на Rust — я всегда любила парадигму "если код скомпилился — значит будет работать!"
@vt ты уже прочитал книжку по Rust?
ermine
rust apteryx Три дня пыталась скопились свой парсер иксемеля, борясь в основном с ошибкой 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
rust apteryx Второй день жру кактус с лайфтаймами раста. Проблемы с ними возникли когда засунула в hashmap в качестве ключа и значения тип &str и потом долго блудила с буковками типа 'a, 'b по коду, пока случайно в гугле не обнаружила хитрое замечание о том, что в некоторых коллекциях раста идиоматично будет использовать тип String. Это помогло. Ну и чудеса! Ведь лайфтаймы — это такая штука, на которых, как говорят, многие мужики сливают из раста. :)