Здравствуйте, меня зовут Михаил Капелько. Занимаюсь профессиональной разработкой ПО более 10 лет, в свободное время разрабатываю игры и средства для их создания.
В этой статье я расскажу о своём первом долговечном приложении для настольных ПК — генераторе статических сайтов ПСКОВ.
Долговечность
Под долговечным приложением я понимаю такое приложение, которое работает без единого изменения на операционных системах, выпущенных в период 2010-2030 годов. Иными словами, долговечное приложение обладает 10-летней обратной совместимостью и 10-летней прочностью. Впрочем, ПСКОВ работает даже на Windows 2000, так что у него 19-летняя обратная совместимость.
Технически ПСКОВ представляет из себя один файл HTML с упакованными в нём разметкой (HTML), стилями (CSS) и кодом (JavaScript). ПСКОВ исполняется строго в веб-браузере без взаимодействия с сервером.
Подобная организация даёт ПСКОВУ следующие возможности:
- его можно копировать без ограничений
- его можно размещать на любом хостинге
- его можно запускать локально
- он может работать без Интернета
10-летнюю прочность я гарантировать не могу, т.к. будущим не владею. Вместе с тем, история развития HTML, CSS, JavaScript говорит о том, что указанные технологии развиваются с максимально возможной обратной совместимостью. Во-первых, новые возможности JavaScript не отменяют старые. Во-вторых, производители веб-браузеров заинтересованы в том, чтобы их веб-браузеры работали с как можно большим числом сайтов. В результате, например, тэг <center>, объявленный устаревшим в 2014-м году, без проблем работает 5 лет спустя в 2019-м.
В то же время у любого приложения в веб-браузере есть серьёзное ограничение — клетка, обманчиво именуемая песочницей. Эта клетка запрещает доступ как к локальной файловой системе пользователя, так и почти ко всем ресурсам в Интернете без санкции владельца ресурса (CORS). В итоге что-либо отдать приложение может либо определённому серверу, либо пользователю в виде файла для скачивания. Файлы скачивать по одному или архивом неудобно, поэтому в мире нынче преобладает серверный подход, проблем которого я коснусь чуть позже.
Для освобождения ПСКОВА из клетки пришлось создать ЛФСД, крошечный скрипт на Python, который необходимо запускать руками на время работы ПСКОВА. ЛФСД даёт возможность ПСКОВУ работать с локальной файловой системой пользователя. Python выбран ввиду его наличия по умолчанию на Linux и macOS, а также возможности поставить на Windows (даже Windows 2000).
Послужной список
ПСКОВ успешно опробован для создания следующих небольших сайтов:
Теперь о причинах создания ПСКОВА именно в виде долговечного приложения для веб-браузера.
Причина №1: накопление и сохранение знаний в доступном виде
Уже не первый год я тружусь над созданием удобных средств разработки игр. До недавнего времени накопленные знания представляли из себя родные приложения для настольных ПК, обучающие статьи по смежным технологиям либо видео результатов. Указанные виды накопленных знаний отличает то, что знания эти по сути мертвы:
- единицы людей скачают себе неизвестное приложение
- единицы людей прочтут хотя бы часть статей
- единицы людей посмотрят хотя бы часть видео
Во многом эта смерть обусловлена недоступностью: нужно приложить неизвестное количество усилий для достижения неизвестного результата. Врядли таким можно кого-либо нынче заманить. Совсем иначе дело обстоит с приложением в браузере, которое потенциально работает везде: необходимо приложить известное усилие — открыть ссылку — для достижения неизвестного результата. История проведения твиттер-революций говорит о том, что открывать ссылки и ставить лайки за смену "кровавого режима" умеют практически все.
Причина №2: народовластие
Нынче любой чих в Интернете осуществляется посредством сервисов, которые почти всегда принадлежат какой-то компании: сообщения, карты, поиск, музыка, исходный код и т.д… Следствием подобной узурпации власти становится закрытие тех сервисов, которые контролирующая компания считает нерентабельными. Причём без какого-либо обсуждения с теми пользователям, без которых этот сервис никогда бы не взлетел.
В других случаях компания может просто запретить конкурирующему браузеру использовать свой сервис, как это недавно случилось с веб-версией Скайпа. Вместе с тем, существуют люди, не согласные с такой политикой. Благодаря им появляются инструменты отключения блокировок.
На мой взгляд, подобное положение вещей недопустимо. Однако, вина в этом лежит не только лишь на одичавшем бизнесе, но и простых пользователях, каждом из нас. Вы можете возразить, что у пользователей нет выбора, что кто-то другой (власть, рептилоиды, нужное подчеркнуть) сделал этот мир несправедливым. Кто-то может даже прямо винить власть/рептилоидов и веровать в то, что вот без них-то мы заживём. К сожалению, история человечества говорит обратное: "государство — это не какая-то вражья орда, оккупировавшая общество, а то, что растет из общества и зеркально его отражает".
Будучи частью народа, я начал с себя и решил употребить свою власть во благо: создавать необходимые мне приложения так, чтобы они работали для всех везде и всегда. ПСКОВ является первой попыткой, которая более чем превзошла мои ожидания. Конечно, у ПСКОВА есть свои ограничения в виде ЛФСД и работы по HTTP без шифрования; предстоит ещё многое сделать для увеличения доступности ПСКОВА, но уже сейчас я готов поспорить с любым: ПСКОВ через 10 лет будет работать без единого изменения. Как говорится, запомните этот твит.
На этом я заканчиваю рассказ о своём первом долговечном приложении для настольных ПК — генераторе статических сайтов ПСКОВ.
Комментарии (103)
murzix
06.08.2019 12:45В этой статье слишком много ПСКОВа, без каких-либо обоснований причин выбора такого названия.
Я как скобарь — негодую.kornerr Автор
06.08.2019 13:00Псков — древний русский город, который в своё время имел народное вече (изображение к статье). Несмотря на то, что нынче город Псков не является сколько-нибудь значимым промышленным центром в России, в Пскове всё равно живут и здравствуют люди.
Представленный ПСКОВ не станет новым машинным обучением, однако, будет на протяжение многих лет делать своё дело — генерировать статические сайты.
codecity
06.08.2019 15:19Плюсую за понимание важности вопроса долговечности, а то технологии-однодневки вкрай надоели. Мало кто задумывается над этим.
staticlab
06.08.2019 15:28Где ссылка на git? Почему у ПСКОВа настолько невалидная вёрстка? Зачем нужен ЛФСД, если можно просто написать
python -m SimpleHTTPServer 8080
kornerr Автор
06.08.2019 16:111) Исходный код доступен здесь: https://bitbucket.org/ogstudio/pskov
Осторожно: подход к организации кода ещё более нестандартный, чем само приложение в браузере.
2) О какой невалидной вёрстке вы говорите и как мне проверить её (не)валидность?
3) SimpleHTTPServer действительно прекрасен, но не умеет:
- писать файлы
- отдавать путь к рабочей директории
- отдавать список файлов указанной директории
staticlab
06.08.2019 16:182) О какой невалидной вёрстке вы говорите и как мне проверить её (не)валидность?
Например, открываете
<head>
после<meta>
, добавляете закрывающий тег</input>
.kornerr Автор
07.08.2019 12:25Участник дискуссии ниже раскрыл мне смысл ваших нареканий. К удивлению обнаружил, что высказанные вами нарекания лишь ещё раз подтверждают долговечность и стойкость описанного мною подхода. Спасибо.
codecity
07.08.2019 07:02О какой невалидной вёрстке вы говорите и как мне проверить её (не)валидность?
Видимо имелся в виду validator.w3.org
Сама идея долговечности мне нравится. Но конкретно по вашей программе — открыл и не очевидно как ее использовать, множество данных нужно вводить. По этому пока да, использовать ее может только автор.kornerr Автор
07.08.2019 12:24Спасибо за пояснение. Да, замечания действительно есть. В т.ч. про устаревший тэг
<center>
.
Юмор состоит в том, что эти замечания о неверных тэгах лишь доказывают долговечность описанного мною подхода.
staticlab
07.08.2019 12:31В чём же тут ваша заслуга?
kornerr Автор
07.08.2019 12:33Эта статья не про мои заслуги, а про то, как писать долговечные приложения. Если что-то вполне себе покалеченное, но продолжает жить десятилетия и полностью исполнять возложенные функции, разве это не доказательство долговечности?
Моя роль лишь показать, как можно писать один раз и надолго.
iig
08.08.2019 09:47" показать, как можно писать один раз и надолго."
Смотрим в прошлое: что за последние 20 лет не поменялось? Html и markdown? Ок, так и запишем, конвертор из md в html это то, что нужно всем и на века. А, к примеру, 20 лет назад не было андроида — и не нужен он никому.
kornerr Автор
08.08.2019 11:30Вопрос не в том, что меняется. Вопрос в том, как написать что-либо таким образом, чтобы единственная причина что-то менять было вашим решением, а не чужим. Почувствуйте разницу.
iig
08.08.2019 23:27"как написать что-либо таким образом, чтобы единственная причина что-то менять было вашим решением, а не чужим."
Если это ваш код, собственный так сказать, что вас может заставить в нем что-то менять? Только ваше личное решение. Все open source именно так работает ;)
Virgo_Style
06.08.2019 16:06Для освобождения ПСКОВА из клетки пришлось создать ЛФСД, крошечный скрипт на Python, который необходимо запускать руками на время работы ПСКОВА.
единицы людей скачают себе неизвестное приложение
Ваша правда.
А вообще стоит различать «будет работать» и «будут пользоваться». Это две заметные разницы. Палка-копалка до сих пор вполне функциональна, но количество пользователей у нее уже немного не то.kornerr Автор
06.08.2019 16:17Согласен.
В данном случае я сделал инструмент, который нужен именно мне. Попутно сделал его общедоступным и долговечным.
Раньше подобное у меня складировалось в виде скриптов на Питоне или Баше где-то на жёстком диске. Эти скрипты со временем терялись, забывались и т.п…
Теперь же результаты моего труда не потеряются на просторах локального жёсткого диска, а будут доступны и мне, и любому желающему (которым скорее всего буду сам я через несколько лет).
AVX
06.08.2019 21:52Ну не знаю… это не претендует на действительно универсальное ПРИЛОЖЕНИЕ. Это просто веб-страница, которая к тому же добавляет необходимость что-то ещё делать.
С тем же успехом можно сделать просто скрипт, в одном файле, который можно запустить в windows и в linux, который далее сделает (сам или при помощи других утилит или команд, если обнаружит, что они доступны) нужную задачу. Я такой делал, работает в линуксах где есть shell и утилита md5sum, и виндах (тоже практически любых версий) где работает .cmd, и есть любой powershell. (скрипт вычисляет контрольные суммы файлов в указанной папке, записывает в отдельный файл, и наоборот, может вычислить и сравнить, не изменилось ли что-то; это я делал чисто для себя, нужна была такая утилита). При желании можно доработать под указанные Вами требования, и сделать на других языках.
При этом, по-настоящему долгоживущее приложение не нужно где-то хранить в виде сайта — достаточно, чтобы оно когда-то стало популярным для решения своей задачи, а дальше, кому надо — скачает и будет пользоваться в течение этих 20-30 лет.
Я не смотрел код странички, но могу поспорить, что эту задачу можно реализовать и на многих скриптовых языках, не говоря уже о чистом C и прочих. Однако не знаю, как можно скомпилировать приложение, чтобы оно (один и тот же файл) мог запуститься и в линукс и в винде. Скрипт — можно. В принципе, можно в тело скрипта запихнуть эти две программы (или больше), и он будет запускать то что нужно.kornerr Автор
07.08.2019 12:28Действительно, можно написать 2 скрипта — Bash и CMD. Тем не менее, ПСКОВ написан на одном языке, работающим на всех настольных ПК, начиная (это важно) с Windows 2000.
Итого несколько требований:
- работа без изменений, начиная с Windows 2000
- единый код для всех платформ
- отсутствие необходимости в поддержке минимум лет 10
- доступность каждому
Ни Bash, ни CMD, ни C так не могут.
staticlab
07.08.2019 12:38https://www.tcl.tk/software/tcltk/8.2.html
Tcl/Tk 8.2 is compatible with most releases of the following operating systems:
- Windows 95 and 98
- Windows NT
- Solaris and SunOS
- Linux
- HP-UX
- SGI
- IRIX
- Digital Unix
- AIX
- SCO Unix
- NetBSD, FreeBSD, BSDi
- Most other Unix-like operating systems
- Macintosh (68K and Power Mac)
kornerr Автор
07.08.2019 13:00Таки мы опять перешли на сферический код (теперь уже TCL?) в вакууме. Спорить комментариями можно бесконечно. ПСКОВ лежит по указанному выше адресу и работает. Предлагаю перекрыть его рабочим инструментом, а не списком поддерживаемых систем TCL.
staticlab
07.08.2019 14:23Tcl/Tk — это платформа, которая позволяет на относительно простом скриптовом языке писать кроссплатформенные десктопные приложения, которые можно запускать на огромном количестве платформ с минимальным оверхедом. Браузер, к сожалению, слишком громоздкая платформа. Критика Electron это подтверждает. Но даже приложения на Electron намного удобнее разрабатывать и использовать.
AVX
07.08.2019 12:44Я писал, что именно один файл, а не два. Один для линукса и он же для винды. Остальным требованиям в принципе отвечает. Правда я не проверял на вин2к, но не вижу причин там не работать.
Кстати, создание веб страниц относительно легко можно делать в чистом bash и в cmd.exe тоже. И этому скрипту не нужен будет ни интернет ни сервер ни питон локальный. Но это всё как троллейбус из буханки- можно сделать, но зачем?kornerr Автор
07.08.2019 13:02Я с удовольствием хотел бы научиться писать такой скрипт, который работает на Windows (2000+), Linux, macOS. Однако, я не нашёл сходств в Bash и CMD. С радостью готов перенять ваше знание, если таковым обладаете, без шуток. Эта статья как раз про то, как я делюсь своим знанием создавать долговечные приложения. Я готов принять знание, которое позволит мне сделать гораздо более долговечный и доступный ПСКОВ.
AVX
07.08.2019 13:17Если кратко и без деталей — то в bash и cmd.exe много общего, но можно обеспечить работу и там и там благодаря символам комментариев, которые различаются у них. В моём скрипте кроме того ещё тот же файл передаётся на управление в powershell, но и с ним можно разделить. Я когда-то писал статью на Intel IT Galaxy, но с 2016 года проект закрыт, статьи в открытом доступе нет. Планировал написать её же здесь, но сказывается нехватка времени — всё же нужно её доработать под строгие требования местного сообщества :-)
kornerr Автор
07.08.2019 13:50Я готов взглянуть на любую версию данной статьи, мне главное узнать принцип.
Я когда-то писал статью на Intel IT Galaxy, но с 2016 года проект закрыт, статьи в открытом доступе нет
Это как раз то, почему ПСКОВ именно веб-приложение, которое никто (даже я) не сможет "закрыть".
AVX
07.08.2019 16:05Пришлите адрес электронной почты в личку. Я отправлю завтра сам скрипт, там комментариев много. Однако, он уже устарел, в КДЕ с 5 версии изменилось что-то, но в принципе это можно всё исправить, просто мне лень. В 2015 году, при создании скрипта была 4 версия КДЕ, там всё работало.
kornerr Автор
07.08.2019 17:11Однако, он уже устарел, в КДЕ с 5 версии изменилось что-то
Это как раз то, от чего защищён ПСКОВ ;)
staticlab
07.08.2019 14:24Однако Tcl/Tk вы проигнорировали.
kornerr Автор
07.08.2019 14:41Я всегда за то, чтобы перенять знания. Однако, вы пока только кидаетесь сферическими технологиями в вакууме. Сделайте аналог генератора сайта на TCL так, чтобы работал и дольше, и на большем количестве устройств, нежели ПСКОВ. Я тогда с удовольствием заберу его себе.
staticlab
07.08.2019 16:44Есть ТЗ?
kornerr Автор
07.08.2019 17:21Краткое описание:
- прочитать pskov.cfg
- получить список директорий для обработки и настройки этой обработки
- обработать каждую директорию
Обработка директории:
- конвертировать каждый файл md в html
- использовать дату, заголовок, название файла из ключей файла md для генерации html
- создать страницы с предпросмотрами (index.html, index2.html, ...)
Страницы с предпросмотрами:
- содержат предпросмотры файлов md
- содержат переключение между страницами предпросмотра
staticlab
07.08.2019 17:33Зачем системе сборки нужен GUI? Зачем конечному пользователю мучиться со всем этим добром, если ему проще опубликоваться на GitBook?
ainu
06.08.2019 22:20Послезавтра этот хак уберут/починят, и всё может сломаться. В коде на 30 лет не должно быть хаков.
Хитрый символkornerr Автор
07.08.2019 12:31Этот хак из библиотеки showdown.js. Возможно, это сломается. Можем проверить. Через сколько лет, по-вашему, этот хак приведёт к неисправной работе ПСКОВА?
ainu
07.08.2019 13:52Я думаю, лет через 5, но не конкретно этот хак, а проверки вроде typeof==«function», наблюдал в последних ES бывает что-то было объектом, и перестало им быть, особенно на границе новых версий в React проектах, где полно разных библиотек.
kornerr Автор
07.08.2019 13:57Отлично. Через 5 лет подведу промежуточные итоги по стойкости текущей версии ПСКОВА. Сюда отпишусь.
ua30
07.08.2019 09:58Знаете, это все конечно интересно (может быть). Но бессмысленно. Современные приложения и интерфейсы постоянно меняются. Веб сегодня уже не тот, что был буквально 5 лет назад (а 5 лет назад не то, что был еще 5 лет назад). Компании, которые хотят идти в ногу со временем, просто вынуждены постоянно переписывать свой код и модернизировать свои приложения.
kornerr Автор
07.08.2019 12:36Эта статья не про компании, которые всегда будут идти со временем и задавать темп этого самого времени. Эта статья о том, как делать приложения себе таким образом, чтобы они потенциально могли пригодиться и другим. Первые условия такого приложения — долговечность и доступность.
Приятная вещь в том, что своими отвёртками можно пользоваться десятилетиями, несмотря на то что на рынке появляются шуруповёрты на атомных батарейках. Отвёртки не соревнуются с шуруповёртами, они просто есть и не устареют.
lair
07.08.2019 13:25Эта статья о том, как делать приложения себе таким образом, чтобы они потенциально могли пригодиться и другим. Первые условия такого приложения — долговечность и доступность.
На самом деле, нет. Первое условие такого приложения — полезность. Потому что очень легко сделать долговечное и доступное приложение, которое при этом бесполезно.
В частности, вы в одном из соседних комментариев пишете про "собственную Яндекс.Музыку", так вот, на вашей технологии ее сделать нельзя.
kornerr Автор
07.08.2019 13:55Польза
Действительно, польза крайне важна. Для меня польза от ПСКОВА в том, что он всегда под рукой (по указанному выше адресу) и что я на любом настольном ПК могу обновить свои сайты. Полезно и нужно ли это кому-то ещё? Это уже вопрос не ко мне. Возможно, вы знаете, чего не хватает вам в ПСКОВЕ? Буду рад услышать предложения.
Яндекс.Музыка
Действительно, ПСКОВ является лишь генератором статических сайтов, а не сайтов воспроизведения музыки. Вместе с тем, технически можно сделать воспроизведение музыкальных файлов с локального диска в веб-приложении. Такой проигрыватель я бы с удовольствием забрал себе.
lair
07.08.2019 14:08Возможно, вы знаете, чего не хватает вам в ПСКОВЕ?
Мне он просто не нужен, у меня нет задач, которые он мог бы эффективно решать.
Вместе с тем, технически можно сделать воспроизведение музыкальных файлов с локального диска в веб-приложении.
В любом браузере? Не думаю. А учитывая, что основная ценность Яндекс.Музыки совсем не в этом — тем более.
kornerr Автор
07.08.2019 14:42В чём основная ценность Яндекс.Музыки, если не в воспроизведении музыкальных файлов?
lair
07.08.2019 14:45Воспроизведением музыкальных файлов занимается плеер. Яндекс.Музыка, как и прочие облачные музыкальные сервисы, дают доступ к вашей коллекции музыки (а в случае подписки это очень большая коллекция) откуда угодно, вне зависимости от того, есть ли у вас включенный компьютер.
kornerr Автор
07.08.2019 14:47-2Попробуйте воспроизвести альбом "Cynic paradise" группы "Pain" и расскажите мне после этого о доступности откуда угодно и об очень большой коллекции :)
lair
07.08.2019 14:50Если вам хочется подменять понятия вместо дискуссии — сколько угодно, но без меня.
Я, прямо скажем, Яндекс.Музыкой не пользуюсь, я пользуюсь Google Music (которой Яндекс.Музыка, скажем так, вдохновлялась), так вот, Google Music прекрасно предоставляет мне доступ ко всей моей коллекции безотносительно ее происхождения. Если Яндекс.Музыка так не умеет — горе ей, но ваша технология все равно не может ни того, что может Яндекс.Музыка, ни того, что может Google Music — проще говоря, она не может того, что нужно мне.
kornerr Автор
08.08.2019 11:46-1На самом деле, я просто тоже немного поиграл в используемую здесь игру "ответочка". В эту игру очень легко играть, однако, иногда она может кого-то обидеть.
В своей реплике я намекал на то, что музыка не принадлежит ни Яндекс.Музыке, ни Гугл.Музыке, ни какому-либо другому сервису. Конкретно альбом "Cynic paradise" пропал около пары месяцев назад, а раньше был доступен. Это всё к вопросу о том, кто чем владеет.
В данной статье я показал пример того, как можно создавать приложения, которыми владеет конечный пользователь, а не какая-либо компания. Если бы у меня был проигрывать в браузере, умеющий воспроизводить с локального диска, я бы на Яндекс.Музыку и подобные сервисы просто не заходил. И альбомы бы были всегда при мне.
lair
08.08.2019 11:53В данной статье я показал пример того, как можно создавать приложения, которыми владеет конечный пользователь, а не какая-либо компания.
А какая мне разница, кто владеет приложением, если оно не может того, что мне нужно?
Если бы у меня был проигрывать в браузере, умеющий воспроизводить с локального диска, я бы на Яндекс.Музыку и подобные сервисы просто не заходил. И альбомы бы были всегда при мне.
… при условии, что "при вас" устройство, на котором этот локальный диск и браузер. Что в моем случае совсем не так — собственно, на компьютере, на котором хранится моя музыкальная коллекция, я музыку не слушаю почти никогда.
Повторю свою мысль еще раз: не важно, насколько долговечно приложение, не важно, кому оно принадлежит, если оно не приносит пользователю пользы.
kornerr Автор
08.08.2019 12:39Согласен. Вполне вероятно, необходимое лично вам приложение я не создам никогда. ПСКОВ пока удобен лично мне.
ua30
07.08.2019 13:39Приятная вещь в том, что своими отвёртками можно пользоваться десятилетиями, несмотря на то что на рынке появляются шуруповёрты на атомных батарейках.
Можно. Но опять же — бессмысленно. Все равно что зачем машины и самолеты, если есть велосипед…
Я не говорю что это плохо. Но практического смысла конкретно в такой «долговечности» нет.kornerr Автор
07.08.2019 13:59Допускаю, что вам ПСКОВ может быть не нужен в текущем виде. Тут я ничего не могу поделать. Вместе с тем, вы можете знать, чего не хватает в ПСКОВЕ именно вам. Если есть пожелания, пожалуйста, поделитесь. Возможно, это поможет сделать мне следующую версию ПСКОВА полезной и вам.
ua30
08.08.2019 11:21Если честно, я когда открыл, посмотрел секунд 5-10. В голове была лишь одна мысль — «руками в блокноте будет проще, чем разбираться что тут к чему».
kornerr Автор
08.08.2019 11:37Вчера у меня была такая же ситуация. У меня не получалось закомитить на свой сервер гита файл более 1МБ по HTTPS, т.к. что-то на сервере было настроено с таким ограничением. Данного ограничения нет по SSH, но мне было лень заморачиваться с SSH: содавать ключи, копировать их, настраивать агента SSH. Поэтому я просто забил и решил подождать, пока коллега поправит сервер.
Я прекрасно понимаю, что всегда хочется делать так, как привык. В моём случае это взять логин/пароль и использовать их везде, чем один раз заморочиться с малоизвестным мне SSH.
Правильно ли я поступил? Это вопрос непростой.
HomeDimoN
07.08.2019 11:22+1Таки не понял, причем тут «народовластие, киберпанк, democracy, cyberpunk»
Таки не понял, в чем преимущество?
Таки не понял, а что проект tiddlywiki уже умер?
tiddlywiki:
- CSS, JavaScript, ресурсы, картинки в одном
«флаконе»HTML файле - Плагины
- Встроеный редактор
- WiKi, markdown разметка
- Перекрестные ссылки
- Возможность сборки структуры и наполнения «Сайта» из исходников
kornerr Автор
07.08.2019 12:56Народовластие
Участник дискуссии выше задал схожий вопрос. Он говорил о том, что в нормальных-то компаниях всегда будут идти в ногу со временем (модой). Чтобы оставаться модной компанией для молодых работников и привлекать их к себе, этой компании всегда нужно меняться и менять свои продукты, даже если они работают и устраивают пользователей.
Это пример внешнего контроля пользователя: компания полностью владеет инструментов, а пользователю остаётся лишь смириться.
Народовластие означает внутренний контроль пользователя: каждый желающий может сделать себе свою Яндекс.Музыку, которая может иметь вполне себе топорный интерфейс, но работать безотказно десятилетиями. Если вдруг мне подобный инструмент будет полезен, то я смогу взять его себе (в виде одного файла HTML) и разместить у себя.
Разница в том, кто принимает решение: вы сами или кто-то за вас.
TiddlyWiki
TiddlyWiki является редактором. ПСКОВ же является всего лишь долговечным генератором без намёка на редактирование в нём самом.
TiddlyWiki в локальном исполнении постоянно предлагает скачать новый файл самого себя, чтобы сохранить изменения. ПСКОВ для этого использует ЛФСД.
ПСКОВ можно сохранить с помощью Ctrl+S, ибо это ровно один файл HTML. В самом же TiddlyWiki написано, что Ctrl+S работать не будет.
- CSS, JavaScript, ресурсы, картинки в одном
gw19
07.08.2019 12:33Скрипт парсит .md файл, генерирует статическую html-страницу. И куда он ее публикует? На внешний сервис?
kornerr Автор
07.08.2019 12:57ПСКОВ является приложением, исполняемым в браузере. Скриптом является ЛФСД, который предоставляет ПСКОВУ возможность работы с файловой системой пользователя. ПСКОВ генерирует для каждого файла
*.md
соответствующий файл*.html
рядом.iig
07.08.2019 21:23Если это весь функционал, то вы придумали утилиту make (ей годиков поболее чем windows 2000), только с сильно урезанным функционалом (умеет только html страницы). И браузер ей не нужен.
ainu
07.08.2019 14:03Вот настоящий великолепный пример программы, которая работает вечно:
www.youtube.com/watch?v=PH1BKPSGcxQ
excel, paint из windows 2.0 работают в Windows 10 (31 год, больше чем 19 лет, заявленные ПСКОВом, и уж точно ПСКОВ не мог работать на 2.0). Причём они сохранились в системе просто в процессе обновления системы одна за другой.kornerr Автор
07.08.2019 14:43Подождите. А как же Linux и macOS?
ainu
07.08.2019 15:50Никак. Речь про почти-вечное приложение (а для Windows буквально ничего более вечного пока не делали). Если надо кроссплатформенно, то наверное golang, или кросскомпиляция.
MacOS вообще такая штука, в которой раньше была архитектура процессора другая, там или java или чтото подобное нужно.
Про линукс я молчу, там таких проблем нет. Старые всякие программы, написанные на си, могут и дольше работать, а вот графическая часть для них само собой устаревает.kornerr Автор
07.08.2019 16:41ПСКОВ работает на Windows (2000+), Linux, macOS без изменений. Причём в отличие от C/C++ без каких-либо телодвижений с компилятором. Доступно и долговечно.
staticlab
07.08.2019 16:48Но требует установки Python на компьютер пользователя. В то время как сборку опенсорсного приложения на C/C++ вполне можно делать на AppVeyor CI. Пользователям достаточно будет скачать готовый экзешник.
Virgo_Style
07.08.2019 19:01А почему такой узкий набор? Предлагаю добавить WinCE, iOS и Android. И незаслуженно забытый МК-61.
kornerr Автор
08.08.2019 11:39Потому что это лишь первая попытка. В дальнейшем будут все системы, где есть браузеры. Всему своё время.
Mabu
07.08.2019 18:06Я думаю, что использование VBScript решил проблему доступности для Windows 98 и доступу к файловой системе без питона.
kornerr Автор
07.08.2019 18:24Когда искал сервер HTTP для GET/POST, не нашёл готового для VBScript, работающего на Windows 98.
Mabu
07.08.2019 18:52+1Я думал, что генератор страниц преобразует множество строк из *.md?файла во множество строк *.html?файла, но не думал, что для его работы нужен целый HTTP?сервер.
kornerr Автор
08.08.2019 11:41Действительно, если сделать решение для чисто комадной строки, HTTP будет не нужен. Однако, цель была в том, чтобы конкретно это решение жило десятилетиями на всех настольных ПК.
Если у вас есть скрипт на VBScript, который умеет MD->HTML и Windows 98, я с радостью взгляну на него и использую у себя.
amarao
… крошечный скрипт на питоне. На 30 лет.
Первая строчка скрипта — #!/usr/bin/python
… которая должна вести на python2, потому что если указать на python3, то миллион скриптов сломается, и этого никогда не сделают.
А python2 умирает через… https://pythonclock.org/
0 Years 4 Months 25 Days 10 Hours 31 Minutes
Долговечненько получилось.
kornerr Автор
Действительно, в статье я указал, что у ПСКОВА есть ограничение в виде ЛФСД, который сейчас Питоне. Сам ПСКОВ никак не пострадает от изменений с Питоном.
К тому же, запускать ЛФСД нужно руками, поэтому запустить его можно и передав его непосредственно интерпретатору Питона, как это показано в примере для Windows
Так что придирка к Python2 мимо.
amarao
Если он не пострадает, то зачем скрипт?
А если вы хотите писать переносимые приложения… Например, если вы что-то написали бы на sh в 1977 году, то оно прекрасно бы работало и в 2019, аж 42 года, и с большой вероятностью продолжило бы работать дальше.
Почему html? Браузерная технология слишком молодая для того, чтобы ожидать, что она проживёт долго. Даже такие переходные вещи, как win32 api и то более долговечны.
kornerr Автор
Зачем скрипт?
В статье я указывал на существенное ограничение браузеров в виде невозможности достучаться до локальной файловой системы пользователя. Именно эту воможность предоставляет скрипт ЛФСД (200 строк).
Если вдруг завтра пропадёт Питон или его запретят ставить на ОС во всём мире, то я сделаю ЛФСД на Node.js. Если же пропадёт Node.js, то я сделаю ЛФСД на Ruby. Текущая версия ПСКОВА при этом не изменится ни на грамм. Это и означает, что ПСКОВ не пострадает.
Переносимые приложения
Всё-таки я про доступные приложения, которые даже переносить не надо. Т.е. открываешь ссылку, и всё. Это цель.
Конечно, сейчас ещё придётся запустить ЛФСД руками, это тоже по-своему неудобно. Тут есть разные решения, и я работаю над выбором наиболее удобного. В своё время опубликую и его.
Почему HTML?
Цель в долговечности и доступности: лишь HTML можно запустить на любом устройстве пользователю без каких-либо телодвижений.
Молодость веб-технологий относительна:
Используемые нынче API (и даже этот сайт хабра) несоизмеримо моложе веб-технологий.
amarao
Сравните 29 лет у браузера (в котором ваше приложение работать не будет), javascript (в редакции 1995 года ваше приложение работать не будет) и shell (1977), в котором приложение на shell работало и тогда, и работает сейчас.
чтобы запустить шелл-код надо всего лишь поставить shell.
На моей системе shell занимает 127 килобайт.
Браузер — 205 мегабайт.
kornerr Автор
ПСКОВ всё-таки не является сферическим кодом в вакууме в отличие от вашего гипотетического шелл-кода. Покажите мне шелл-код, делающий то же, что и ПСКОВ, на системе 1977-2000 годов.
ПСКОВ работает без изменений на Windows 2000 и новее. Побейте этот рекорд :)
iig
Что-то я не понял в чем челендж. Почти любое приложение для windows из 2000 года функционально до сих пор. Да и для dos тоже.
Генератор статических страниц был ещё в древних выпусках MS Office, потом его выпили.
Или первое апреля теперь празднуют не по календарю, а по настроению? :)
kornerr Автор
В последних сообщениях amarao утверждал, что шелл-код долговечнее веб-приложения, ибо якобы работает аж с 1977. Я предложил amarao доказать это на примере путём воссоздания ПСКОВА на упомянутом шелл-коде, чтобы этот код работал на системах 1977-2000 годов выпуска. В этом состоит вызов.
Если хотите принять этот вызов — вперёд :) Мне очень хотелось бы узнать, как поддержать системы до Windows 2000.
amarao
Давайте наборот. ВЫ ГОВОРИТЕ ЧТО псков ПОЗВОЛЯЕТ СОЗДАТЬ ПРИЛОЖЕНИЯ.
Ну, попробуйте доказать это, создав, например, простейший демон, который может в отсутствие пользователя следить, что файл существует, и если не существует, создавать его.
kornerr Автор
Я нигде не говорил, что ПСКОВ позволяет создать приложение. ПСКОВ является веб-приложением, которое я создал. Он лежит по указанному выше адресу, пользуйтесь.
staticlab
Правильно, но для запуска ваших приложений требуется наличие в системе python и браузера с поддержкой JS. Браузер, как правило, на компьютерах уже есть. Таким образом, конечному пользователю потребуется установить Python, затем разобраться как запустить скрипт ЛФСД в директории приложения, убедиться, что он заработал (а порт может быть занят) и, наконец, открыть в браузере нужный URL. Это довольно трудоёмко.
kornerr Автор
Если Linux и macOS, то ставить Питон не надо. Если порт вдруг занят, то да, придётся туго.
Над возможностью работать без ЛФСД я работаю. Она есть, но, как всегда, со своими нюансами.