LINUX.ORG.RU

Gemini-клиент Lagrange 1.2

 , , lagrange, ,

Gemini-клиент Lagrange 1.2

11

5

Вышла новая версия красивого и полнофункционального Gemini-клиента — Lagrange, написанного на языке C с использованием библиотеки SDL.

Gemini — это новый протокол прикладного уровня, по своему предназначению являющийся простой альтернативой HTTP и усовершенствованной альтернативой Gopher, то есть проектом «посередине» между ними в плане сложности. Он появился как реакция на недостатки последних, в особенности HTTP. В основу его дизайна легли идеи уважения приватности пользователя и сознательного отказа от расширяемости в пользу консервативного сохранения спецификации в минимальном, но удовлетворяющем пользовательские потребности виде (сейчас она заморожена). Проект использует уже знакомые многим стандарты, вроде URI, MIME и TLS. Проект не использует HTML, CSS и JavaScript — для разметки файлов предлагается похожий на Markdown формат Gemtext, а запуск кода и применение стилей на стороне клиента не предусмотрены. Для интерактивного взаимодействия с сервером существует CGI и потоковая отправка сообщений клиенту с помощью долгоживущего TCP-соединения (вследствие чего, например, возможна реализация чата). Сайты принудительно используют шифрование с помощью TLS без CA — вместо него используется механизм TOFU, а для аутентификации пользователей используются пользовательские сертификаты.

Сообщество разрастается интересными для пользователей проектами, вроде поисковой системы GUS, агрегатора новостей CAPCOM, каталогом Gemini-капсул (так называются местные сайты) Medusae, техническими демо возможностей протокола, вроде анонимной текстовой доски, агрегатора ссылок и чата. Доступны прокси как для просмотра Geminispace с помощью HTTP [1] [2] [3], так и для просмотра HTTP с помощью Gemini, и то же самое для Gopher.

Протокол достаточно прост, чтобы любой желающий мог создать свой клиент и сервер — чего нельзя сказать о текущем состоянии современного WWW с тысячами страниц спецификаций. По этой причине уже существует разнообразие проектов энтузиастов и активная дискуссия в почтовой рассылке проекта.

Lagrange является одним из таких проектов — небольшим Gemini-клиентом с поддержкой аппаратного ускорения с помощью SDL и плавного листания страниц, отображения картинок на странице, вкладок, тем оформления, закладок, истории, пользовательских сертификатов, оглавлений, новостных лент.

В этом выпуске добавлена поддержка новостных Atom-лент, загрузки отдельных файлов со страницы без открытия новой вкладки, пиктограмм для закладок, поиска по капсулам с помощью выбранной системы в настройках, опция для автоматической перезагрузки страницы по интервалу и изменения в дизайне.

В разработке порт Lagrange на мобильные платформы! А до тех пор пользователи могут попробовать Ariane на Android, например.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: commagray (всего исправлений: 6)

Ответ на: комментарий от anonymous

Правильно ли я понимаю, что аналога POST-запросов в gemini нет, а есть только GET с ограничением на длину в 1024?

Да.

Если так, то форум на этом чуде без костылей не сделать.

С ограничением на длину сообщения. Как twitter.

monk ★★★★★
()
Ответ на: комментарий от monk

Меня просто напрягает писать пачки настроек типа … внутри которых на 90% копипаста

расскажите ему про какой-нибудь scss/sass. больно ж смотреть как живой человек страдает.

dummy ★★
()
Последнее исправление: dummy (всего исправлений: 2)
Ответ на: комментарий от dummy

расскажите ему про какой-нибудь scss/sass. больно ж смотреть как живой человек страдает.

Лучше расскажите про какой-нибудь препроцессор, где можно написать @media touchscreen и он сам распакует во все апктуальные варианты.

monk ★★★★★
()
Ответ на: комментарий от monk

Ну нету никаких таких вариантов. Мобильных устройств тысячи разных моделей. Как ты не понимаешь?

wandrien ★★
()
Ответ на: комментарий от monk

Кстати, так и не понял, что плохого, если сайт подстраивается под окно в маленьком размере окне точно так же как при маленьком экране мобилки.

Это же наоборот, классно, удобно.

Может у вас просто дизайн такой, что вам самим на него стрёмно смотреть в окне?

wandrien ★★
()
Ответ на: комментарий от monk

Лучше расскажите про какой-нибудь препроцессор, где можно написать @media touchscreen

вы про резрешение дисплея или про события, генерируемые касанием экрана?

dummy ★★
()
Ответ на: комментарий от wandrien

Кстати, так и не понял, что плохого, если сайт подстраивается под окно в маленьком размере окне точно так же как при маленьком экране мобилки.

Например, у ЛОРа при ширине в треть экрана внезапно делается очень мелкий шрифт. У многих сайтов пропадает навигационное меню. На github’е половина функций напрочь исчезают: например, кнопка fork и ссылка для клонирования.

В результате вроде графический интерфейс и многооконный, но браузер надо растягивать по ширине. А с учётом того, что текст читается удобнее, когда высота страницы в 1,4 раза больше ширины, то вообще глупо.

monk ★★★★★
()
Ответ на: комментарий от dummy

вы про резрешение дисплея или про события, генерируемые касанием экрана?

Про то, что устройство не имеет нормального манипулятора для выбора элементов графического интерфейса (мыши/тачпада/трекбола/…).

monk ★★★★★
()
Ответ на: комментарий от anonymous

А чем автор обосновал это ограничение?

Протокол должен быть простым. POST очень сложно назвать простым.

monk ★★★★★
()
Ответ на: комментарий от monk

Например, у ЛОРа при ширине в треть экрана внезапно делается очень мелкий шрифт. У многих сайтов пропадает навигационное меню. На github’е половина функций напрочь исчезают: например, кнопка fork и ссылка для клонирования.

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

Они хоть с фрейворками, хоть без, сделают одинаковое неюзабельное говно, потому что техзадание изначально предполагает, что если пользователь заходит со смарта, он ущербный и неполноценный.

Я не знаю, откуда это повелось. Видимо, самим дизайнерам вот этим всем нравится пользоваться.

Если верстка компактная, это не означает, что она убогая.

Лично я так не верстаю и другим стараюсь объяснить, что так делать не стоит. Кто б меня слушал…

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 2)
Ответ на: комментарий от monk

Про то, что устройство не имеет нормального манипулятора для выбора элементов графического интерфейса (мыши/тачпада/трекбола/…)

я не специалист в области интерфейсов для людей с ограниченными возможностями, но уверерен, что если проблема решается копипастой, она может быть решена препроцессором.

dummy ★★
()
Ответ на: комментарий от dummy

Она решается. Нужно централизованное обновляемое хранилище списков актуального мобильного оборудования. Из которого препроцессором просто вытаскивать нужную пачку условий.

Или через JS читать User-Agent и править CSS. Или как рекомендуют делать все сайты для инвалидов пользователей без мышек.

monk ★★★★★
()
Ответ на: комментарий от monk

Упс, каюсь. Оказывается плохо гуглил.

Существует @media (pointer: fine). И даже почти всюду поддерживается.

monk ★★★★★
()
Ответ на: комментарий от monk

А может еще ядро ОС в 20 строк написать?

Это — клиника.

Инструмент должен решать задачу, а не сам быть себе задачей «собери меня из говна и палок в 20 строк».

wandrien ★★
()
Ответ на: комментарий от monk

Нужно централизованное обновляемое хранилище списков актуального мобильного оборудования. Из которого препроцессором просто вытаскивать нужную пачку условий.

КАК вы собираетесь детектировать «мобильное оборудование» из этого списка?

Уже даже не спрашиваю ЗАЧЕМ…

wandrien ★★
()
Ответ на: комментарий от wandrien

А может еще ядро ОС в 20 строк написать?

GET в 20 строк легко реализуется. Даже меньше.

Для Gemini общий размер клиента не должен превышать 200 строк на высокоуровневом языке программирования (в FAQ п 2.1.1).

monk ★★★★★
()
Ответ на: комментарий от wandrien

КАК вы собираетесь детектировать «мобильное оборудование» из этого списка?

Собирая из него комбинации ширина+dpi. Уже не собираюсь, нашёл media (pointer: fine).

Уже даже не спрашиваю ЗАЧЕМ…

https://www.w3.org/TR/mediaqueries-4/#valdef-media-pointer-fine

monk ★★★★★
()
Ответ на: комментарий от wandrien

Я скорее не про панель задач, а про spicview. Ты же будешь сопротивляться, если тебе предложат туда добавить наложение фильтров и выделение произвольных областей изображения для копирования?

monk ★★★★★
()
Ответ на: комментарий от monk

Нужно централизованное обновляемое хранилище списков актуального мобильного оборудования

а «актуальный список всех пользователей интернета» вам еще не приходил в голову?

dummy ★★
()
Ответ на: комментарий от monk

Ты же будешь сопротивляться, если тебе предложат туда добавить наложение фильтров и выделение произвольных областей изображения для копирования?

Сначала хотел написать, что это не впишется в концепцию его UI.

Потом вспомнил, как наложение фильтра выглядит на мобилках… да впишется, why not. Только на gtk2 чтобы это изобразить, нужно запариться.

выделение произвольных областей изображения для копирования?

А это годный фич-реквест, кстати.

Ты же будешь

А почему должен? Какие ваши аргументы? (c)

wandrien ★★
()
Ответ на: комментарий от wandrien

А почему должен? Какие ваши аргументы? (c)

Так там написано «легковесная программа». Если всё в неё добавить, то она не будет легковесной. А также

только на gtk2 чтобы это изобразить, нужно запариться.

Но точку зрения понял. Легковесность ради легковесности ты не одобряешь.

monk ★★★★★
()
Ответ на: комментарий от dummy

а «актуальный список всех пользователей интернета» вам еще не приходил в голову?

Актуальный список всех спамеров ведь придумали. И актуальный список всех рекламщиков. А они побольше будут.

monk ★★★★★
()
Ответ на: комментарий от monk

а «актуальный список всех пользователей интернета» вам еще не приходил в голову?

Актуальный список всех спамеров ведь придумали. И актуальный список всех рекламщиков. А они побольше будут.

вам бы к доктору. может еще не поздно

dummy ★★
()
Ответ на: комментарий от monk

Если всё в неё добавить, то она не будет легковесной.

Требуется определение легковесности :)

Например, я кэширую данные в ОЗУ, стараясь детектировать, что ОЗУ не используется. Это легковесно или нет? Когда просмотрщик картинок занимает 4 ГБ ОЗУ?

wandrien ★★
()
Ответ на: комментарий от monk

Вес в понятии легковесности не о наличии фич, Роман.

tcc, quikjs, quemu, ffmpeg от Беллара - это все легковесные программы, умеющие многое.

anonymous
()
Ответ на: комментарий от dummy

вам бы к доктору. может еще не поздно

В цитировании не теряйте контекст. Список актуального мобильного оборудования меньше, чем какой-нибудь DRBL. Или Вы с этим не согласны?

monk ★★★★★
()
Ответ на: комментарий от wandrien

Требуется определение легковесности :)

Так ты это слово используешь, тебе и определять, какой смысл в него вкладывать. Я предполагал минимально необходимую функциональность. В смысле, YAGNI.

monk ★★★★★
()
Ответ на: комментарий от dummy

Актуальный список всех спамеров ведь придумали. И актуальный список всех рекламщиков. А они побольше будут.

вам бы к доктору. может еще не поздно

Поздно… %)

wandrien ★★
()
Ответ на: комментарий от wandrien

Это о принципах кодирования, а не возможностях ПО.

И о возможностях ПО тоже. Когда в ПО не пихаются все возможные функции по принципу «чем больше, тем лучше» заранее, а включаются только те, которые необходимы для функциональности данного ПО.

monk ★★★★★
()
Ответ на: комментарий от anonymous

Кем определяется необходимая функциональность?

Разработчиком. Если просмотрщик изображений только просматривает изображения, то это хорошо, а если он пишет их на CD, конвертирует в PDF, заливает в Интернет и делает из них анимацию, то это уже никак не легковесный просмотрщик изображений.

monk ★★★★★
()
Ответ на: комментарий от monk

Список актуального мобильного оборудования меньше, чем какой-нибудь DRBL

вы же понимаете, что rdbl - это не решение проблемы, а жалкая попытка минимизации потерь от спама, поддерживаимая жертвами такового? то, что вы хотите, еще более утопично, учитывая, что никто не имеет никакого интереса в поддержании актуальности таких данных. особенно при наличии более-менее устаканенного способа определения и реагирования на основные возможности устройства типа разрешения экрана, реакции на касания и пр.

dummy ★★
()
Ответ на: комментарий от monk

Ты только что сказал, что необходимую функциональность определяет разработчик. И следом за этим снова опираешься на какие-то свои собственные представления о критериях легковесности. Ты разве разработчик и определяешь необходимую функциональность просмотрщика изображений?

anonymous
()

Первая проблема это дейстивтельно POST в целом можно было бы отказаться от GET и других разновижностей протокола, но не от POST. Вторая муть это изобретать HTTP еще раз он и так есть назви его GTTP и уменьши спецификацию до необходимой. Третье, а в чем преимущество для скажем интернет магазина? Или любого другого сайта? Какие человеческие проблемы он решает?

anonymous
()
Ответ на: комментарий от anonymous

У GET и POST разная семантика тащем-та.

Или вы при получении зарплаты привыкли отдавать деньги бухгалтерии?

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от monk
  1. В диалоге «Открыть», «Сохранить» в Windows 98 была возможность воспользоваться любой функцией файлового менеджера: удалить, переименовать, копировать, просмотреть свойства, открыть любой файл в другой программе и т.п.

  2. В диалогах gtk тупо ничего не было, кроме возможности посмотреть оглавление каталогов и вбить имя файла. Только недавно в gtk3 завезли команды «удалить», «переименовать», «открыть в файловом менеджере». При этом как таковой полноценной интеграции по прежнему нет. До этого было «ненужно, это же не ФМ! нечего усложнять!».

На компьютере, на котором летала w98, софт на gtk3 даже не запустится. Не хватит оперативной памяти даже под инициализацию самого графстека, не то что приложения.

Кто из них легковесный?

wandrien ★★
()
Ответ на: комментарий от anonymous

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

Можешь рассматривать INPUT в Gemini не как GET из HTTP, а как search из Gopher.

Вторая муть это изобретать HTTP еще раз он и так есть назви его GTTP и уменьши спецификацию до необходимой.

Опять же. Считай, что это не урезанный HTTP, а чуть-чуть расширенный Gopher.

уменьши спецификацию до необходимой.

Как в нём сделать авторизацию по сертификату?

monk ★★★★★
()
Ответ на: комментарий от wandrien

Ну и в чем тогда проблема?

Ни в чём. У разработчика gemini тоже есть своё представление, чего достаточно просмотрщику сайтов.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от monk

По функциям GTK. Только очень неоптимизированный.

Бгг. Нет. Архитектуру невозможно оптимизировать. Она либо нормальная, либо вместо неё говно.

Вот у Проводника винды под капотом относительно нормальная архитектура на COM-объектах. Поэтому он работает на калькуляторах из 1998-го года, и поэтому в него можно добавлять любое количество функций без усложнения кода проводника.

А gtk и весь стек гнома — ну ты понял.

Я многие годы надеялся, что опенсорс сможет DE сделать ЛУЧШЕ проприетарного решения. Но получается только хуже.

Точно так же и HTTP — гибкое, универсальное решение, которое «выполняет ровно одну задачу, и выполняет её хорошо». А Gemini — студенческая работа.

wandrien ★★
()
Ответ на: комментарий от wandrien

Бгг. Нет. Архитектуру невозможно оптимизировать. Она либо нормальная, либо вместо неё говно.

Точно так же и HTTP — гибкое, универсальное решение, которое «выполняет ровно одну задачу, и выполняет её хорошо». А Gemini — студенческая работа.

Сейчас HTML+JS настолько же тяжелее GTK3, насколько GTK3 тяжелее Win98 GDI.

Именно HTTP решение хорошее, но достаточно объёмное. Когда-то было гибкое универсальное решение X.500 DAP. Потом из него почти всё выкинули, получился LDAP. Было гибкое универсальное решение CORBA. Теперь используется гораздо менее функциональный dbus.

И HTTP тоже активно заменяется бинарным HTTP/2.

Я многие годы надеялся, что опенсорс сможет DE сделать ЛУЧШЕ проприетарного решения. Но получается только хуже.

Что понимать под «лучше»? Работать на калькуляторах? KolibriOS GUI опенсорс и работает быстрее, чем Win98.

Гибче? Покажи как к Win прикрутить темы на CSS. В GTK3 есть.

monk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.