Ответ на всё сразу

Так, ладно, раз уж диалог завязался (и спасибо за такой тёплый, хоть и, хм, своеобразный приём), выскажу наконец свои основные мысли по поводу этого всего.

1. Да, я — любитель спутниковых каналов связи, тора, анонимности, анархии и всего того, что у вас здесь, видимо, принято относить ко списку смертных грехов, а по факту чуть ли не единственного залога комфортного существования в онлайне. Сеть ii меня заинтересовала как раз своим потенциалом превращения в антифидо: меньшая гэбнявость при тех же (или даже больших) распределённости и легковесности протокола. Добавить бы сюда только приватность на транспортном уровне (например, Gopher-узлы в .onion имеются, вполне можно сделать там же ii-станции) и будет вообще хорошо. А то, например, Tox и SimpleX тоже распределены, но легковесностью там и не пахнет из-за количества задействованной криптографии. Ну и они на реалтайм больше рассчитаны, а здесь наоборот.

2. Официальная документация ii/IDEC вроде и подробна, но написана так, что некоторые вещи либо неочевидны, либо их надо додумывать самостоятельно. Например, касательно разделителя строк. На момент написания мной этого поста в доках НИГДЕ не указано, что разделитель строк в теле сообщения — строго \n. Это явно указано только для формата бандла:
> Разделитель для бандла - новая линия (LF, код 10).
Естественно, по аналогии с остальными легковесными протоколами я запостил тестовое сообщение с \r\n на концах строк. И естественно, получил отлуп и понял, что там только \n должно было быть. Но то, что у кого-то при этом что-то отвалилось на серверной части... Ребят, валидация входящих данных — это БАЗОВЫЙ принцип безопасности. Если у вас от непреднамеренной бинарщины валится сервер, это не проблемы отправителя этой бинарщины, а сугубо ваши, поскольку к преднамеренной такой сервер окажется совсем не готовым.

3. Надо бы как-то придумать, как оптимизировать фетчинг. С этими GET-запросами на /u/m я вот столкнулся с ограничением, что у каких-то нод и их долбаного нжинкса тело GET-строки не может превышать 256 символов. Соответственно, за один запрос можно выкачать бандл максимум из 12 сообщений. Крайне неэффективно выходит. Ну или я что-то не так понял в доках и всё-таки имеются способы пооптимальнее. Не говоря уж о том, что такой же фетчинг было бы неплохо организовать по тому же Gemini или Gopher/Finger/Nex, например. HTTP для данных целей — вообще оверхед. Достаточно одной строки запроса и погнал ответ. Тем более, что спецификация прямо говорит, что HTTP — лишь один из вариантов.

4. Веб-зеркалам, как по мне, не нужно придавать особого значения. Может, это здесь обсуждалось, но вроде бы фишка именно в распределённости: каждый выкачивает максимум контента. Если все начнут пассивно читать веб-зеркала, что от сети в итоге останется, если основные ноды выйдут покурить? Не знаю, может, в будущем размер станет иметь значение, но вот на данный момент у меня sqlite3-база с содержимым (публичных) эх из пяти станций занимает 104 мега. Это меньше любого из современных браузерных движков в распакованном виде. Не думаю, что единоразовое выкачивание данных такого объёма вызовет у кого-то проблему, особенно если решить вопрос пункта 3.

5. Shaos нашёл исходники моего ii-клиента tii/tiix, но это всё ещё в процессе допила. Как посчитаю действительно готовым, сделаю анонс со ссылками. Тогда и о новой станции можно будет поговорить.

Спасибо за внимание.
Ответы на это сообщение: tuple (2024-10-24 10:49:25) hugeping (2024-10-24 10:50:52)
revoltech (2024-10-24 10:15:21) [Ответить]
Предыдущее сообщение Следующее сообщение