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

Спешите видеть: знание арифметики за третий (sic!) класс уже делает человека умным.

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

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

Да понял я уже что твоя мечта — единственная кнопка «ЗДЕЛОТЬ ЗБС», понял.

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

Какие именно разработчики тащат много ненужного? Ты говорил, что нельзя запилить что-то крупнее туду листа. Тебе чтобы запилить что-то крупнее туда листа надо тащить что-то из легаси? Обоснуй зачем.

Я описал сложности, с которыми столкнётся рядовой программист на этом языке.

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

Претензия к разработчикам интерпретатора.

Они более, чем логичны.

Даже в пыхе они более логичны. Есть конкатенация, есть добавление.

Где аргументы против него?

Потеря точности

Тебя их кто заставляет использовать, ответишь?

А, вы не знаете. При использовании необъявленной переменной он делает её глобальной.

Неожиданное для тебя в силу твоей некомпетентности, верно?

Зачем сорту давать функцию? Почему в питоне это можно реализовать нормально, а в джаваскрипте нет?

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

Автоматизация != «свалить все в одну кучу».

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

И еще отдельный физический вычислитель для каждого. А то несчитово.

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

А, вы не знаете. При использовании необъявленной переменной он делает её глобальной.

Может это вы просто современный JS не знаете? :)

Зачем сорту давать функцию?

А вы как считаете?

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

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

Си спокойно выбрасывает старые стандарты, даже пиэйчпи выбрасывает и развивается.

А теперь вопрос, чего же strict mode не стоит изначально? Он действительно несколько улучшает язык. Неужели веб тормозит развитие?

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

ЗероНет — одноранговая, а близнецам-то сервера нужны. Контента маловато, но штука занятная. Документацию читать — самое то.

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

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

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

Может это вы просто современный JS не знаете? :)

Вполне возможно, вот только я это проверял, и оно даже работает.

А вы как считаете?

Плохо спроектирован язык, а теперь менять нельзя, ведь тогда сайты полетят.

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

Там же в ЧаВо явно сказано, что диалектов маркдауна до черта лысого, и какой брать? И отдельная ремарка, что пропихнуть Content-type:markdown возможно, лишь бы клиент его понял.

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

Из стандарта выбросили, из библиотеки — нет. Всё легаси будет работать.

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

Я описал сложности, с которыми столкнётся рядовой программист на этом языке.

Лол, нет. Ты ничего не описал. Я тебя спросил - зачем тебе, как разработчику, тащить легаси. Что тебе мещает его не тащить, ты можешь внятно пояснить?

Претензия к разработчикам интерпретатора.

В чем она заключается? В том, что разработчики позволяют исполняться коду, который написан десятилетия назад? Ты пояснишь, чем это плохо или нет?

Даже в пыхе они более логичны. Есть конкатенация, есть добавление.

В жс тоже есть конкатенация, ты ей пользуешься?

Потеря точности

Ииии?? У тебя есть предложения относительно эффективного хранения и обработки чисел с плавающей токой без потери точности?

А, вы не знаете. При использовании необъявленной переменной он делает её глобальной.

4.2. strict mode появился 12 лет назад, это больше половины времени всего существования жс в целом. И если ты пишешь качественный код, то при использовании не объявленной переменной ты получишь исключение. В модулях strict mode включен по умолчанию, его даже не требуется дополнительно объявлять.

Так ты намерено врешь, или ты все-таки обладаешь достаточной компетенцией?

Зачем сорту давать функцию? Почему в питоне это можно реализовать нормально, а в джаваскрипте нет?

Чтобы задавать условие сортировки. Если ты не передаешь компаратор, применяется дефолтный. Все как в питоне. Тебя не устраивает то, что в одном языке не так, как в том, к которому ты привык?

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

А у gemini какая клиентская база? Кучка фанатиков?

Ну хотите, так еще и Вы будете :)

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

Промихнуть-то возможно, но при этом для своего Gemini сайта придется костылить свой отдельный клиент и убеждать посетителей пользоваться им, потому что по спецификации клиент все-таки не обязан понимать контент, который не text/gemini.

Kzer-Za
()
Ответ на: комментарий от fernandos

А теперь вопрос, чего же strict mode не стоит изначально?

А теперь ответ, он стоит изначально если ты пишешь современный код, а не намеренно пишешь легаси.

У меня встречный вопрос - почему ты этого не знаешь?

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

Тащемта, на уровне железа примерно так и бывает. Взять то же умножение путем многократного сложения.

anonymous
()

даже пока не понятно: хипстерство или Ъ.

красивого

ну да, конечно. а съехавшие иконки на кнопках?

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

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

Лол, нет. Ты ничего не описал. Я тебя спросил - зачем тебе, как разработчику, тащить легаси. Что тебе мещает его не тащить, ты можешь внятно пояснить?

Тащат разработчики интерпретатора и стандарта.

В чем она заключается? В том, что разработчики позволяют исполняться коду, который написан десятилетия назад? Ты пояснишь, чем это плохо или нет?

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

В жс тоже есть конкатенация, ты ей пользуешься?

Я говорю про разницу конкатенации и добавления.

4.2. strict mode появился 12 лет назад

И до сих пор его надо вручную включать.

Чтобы задавать условие сортировки. Если ты не передаешь компаратор, применяется дефолтный. Все как в питоне. Тебя не устраивает то, что в одном языке не так, как в том, к которому ты привык?

Вы действительно считаете, что массив [12,9,3] должен быть отсортирован в [12, 3, 9]? Питон — просто хороший пример, не более.

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

Тащат разработчики интерпретатора и стандарта.

Тебе это как разработчику, как именно мешает?

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

Какие именно нелогичные аспекты, ты назовешь уже или будешь продолжать демонстрировать свое невежество?

Я говорю про разницу конкатенации и добавления.

Ну и? В жс есть разница между конкатенацией и добавлением. Что дальше? Ты говоришь о том, что не знаешь про нее?

И до сих пор его надо вручную включать.

Нет, не надо. Ты продолжаешь врать. Почему?

Вы действительно считаете, что массив [12,9,3] должен быть отсортирован в [12, 3, 9]?

Разумеется, массив [12,9,3] должен быть отсортирован в порядке [12, 3, 9]. Если мне нужно его отсортировать по признаку сравнения чисел, а не позиции в таблице юникода, я применю нужный компаратор. А вы почему так не делаете?

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

Тебе это как разработчику, как именно мешает?

Ну конечно. А как вы представляете развитие, если старые стандарты не будут пересмотрены?

Какие именно нелогичные аспекты, ты назовешь уже или будешь продолжать демонстрировать свое невежество?

Уже называл. Сортировка, сравнение, неопределённости, глобальные переменные (нет, строгий режим выключен изначально).

Ну и? В жс есть разница между конкатенацией и добавлением. Что дальше? Ты говоришь о том, что не знаешь про нее?

Если я добавлю число к строке, оно преобразуется в строку и произойдёт конкатенация. Если же я отниму, то строка преобразуется к числу.

Нет, не надо. Ты продолжаешь врать. Почему?

Нет, надо. Я только что создал файл, проверил на проблему глобальных переменных — строгий режим надо включать ручками.

А вы почему так не делаете?

А я руководствуюсь логикой.

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

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

А как происходит развитие в данный момент?

Уже называл. Нет, вы лишь рассказали о том, насколько некомпетентны. И да, strict mode ВКЛЮЧЕН по умолчанию. Зарубите себе на носу.

Если я добавлю число к строке

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

строгий режим надо включать ручками.

Нет, не надо.

А я руководствуюсь логикой.

У вас она отсутствует.

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

А как происходит развитие в данный момент?

Новое заносят, старое оставляют неизменным. 

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

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

У вас она отсутствует.

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

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

Новое заносят

Ты же выше писал, что никто не развивается. Все продолжаешь врать выходит.

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

Писал, что они не выбрасывают старые нелогичные аспекты из языка. И да, развитие гораздо сложнее добавление новых возможностей, это улучшение.

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

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

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

Что видно? Я тебе и показываю, что strict mode объявлен по умолчанию, если ты пишешь современый жс код, а не сознательно легаси? Ты открыл коносль убедился в наличии эксепшена? В сорцах нашел где-то место включения use stirct у меня?

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

Так а дефолтная сортировка как должна себя вести? Должен быть либо один, либо второй вариант, оба сразу быть не могут.

Она сортирует как строки. Всё логично.

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

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

fernandos ★★★
()

Какова позиция Saahriktu по сабжу?

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

Кому должна и зачем? Это придирки уровня шашечки не того цвета.

В 99% случаев один хрен приходится сортировать объекты по значению поля.

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