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

Replies (9)

  • @ermine, Чтобы без напряга читать данные из сокета — придуманы протоколы с ФРЕЙМИНГОМ. В xmpp в качестве фрейма выступает станза. Как появилась станза — значит можно обрабатывать строку. Какие тут могут быть "хвосты" еще? "Хвосты" могут возникнуть только у тех, чей убогий хмл-парсер не умеет читать фрейм-станзу целиком.
  • @vt, Давай переходить на фрейминги!!! Скажи верное направление, кэп!!!! Какой протокол нынче самый православный????
  • @vt, ты, казёл, опять забил на гейсавим православный!
  • @ermine, Какая разница, если ты даже в хмпп не видишь начало и конец строчки? Тут другой протокол как-то поможет?
  • @ermine, я все еще работаю на трех работах, никак не закончу, вот-вот уже скоро должен освободиться
  • @vt, если ты получаешь три зряплаты, то мог бы купить мне уже второй макбук
  • @ermine, Я тебе скидывал пример, как фреймить станзы xmpp, ещё и асинхронно
  • @O01eg, Скидывал, ага, много-много непонятных строчек с переупаковкой хвостиков туда-сюда, ничо не поняла, а у меня в decode() всего три строчки кода!
  • @O01eg, кстати еще к такому "фрейлину подзадача — считать бантики, чтобы обеспечить лимит Станзы. Поначалу я использовала str::from_utf8() и потом пользовалась какой-то там функцией из std::char, чтобы каунтерить по ширине символа. Щас сообразила, что эту фигню можно вынести из партера в тот модуль енкодинга utf8. Даже блин надо подумать, как делать трехэтажный декодер — utf8 -> xml -> xmpp, не встраивая и не смешивая одно в другом