Псковское вече


Здравствуйте, меня зовут Михаил Капелько. Занимаюсь профессиональной разработкой ПО более 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)


  1. amarao
    06.08.2019 12:28
    +3

    … крошечный скрипт на питоне. На 30 лет.


    Первая строчка скрипта — #!/usr/bin/python


    … которая должна вести на python2, потому что если указать на python3, то миллион скриптов сломается, и этого никогда не сделают.


    А python2 умирает через… https://pythonclock.org/
    0 Years 4 Months 25 Days 10 Hours 31 Minutes


    Долговечненько получилось.


    1. kornerr Автор
      06.08.2019 12:58
      -1

      Действительно, в статье я указал, что у ПСКОВА есть ограничение в виде ЛФСД, который сейчас Питоне. Сам ПСКОВ никак не пострадает от изменений с Питоном.
      К тому же, запускать ЛФСД нужно руками, поэтому запустить его можно и передав его непосредственно интерпретатору Питона, как это показано в примере для Windows


      Так что придирка к Python2 мимо.


      1. amarao
        06.08.2019 13:14
        +1

        Если он не пострадает, то зачем скрипт?


        А если вы хотите писать переносимые приложения… Например, если вы что-то написали бы на sh в 1977 году, то оно прекрасно бы работало и в 2019, аж 42 года, и с большой вероятностью продолжило бы работать дальше.


        Почему html? Браузерная технология слишком молодая для того, чтобы ожидать, что она проживёт долго. Даже такие переходные вещи, как win32 api и то более долговечны.


        1. kornerr Автор
          06.08.2019 13:35

          Зачем скрипт?


          В статье я указывал на существенное ограничение браузеров в виде невозможности достучаться до локальной файловой системы пользователя. Именно эту воможность предоставляет скрипт ЛФСД (200 строк).


          Если вдруг завтра пропадёт Питон или его запретят ставить на ОС во всём мире, то я сделаю ЛФСД на Node.js. Если же пропадёт Node.js, то я сделаю ЛФСД на Ruby. Текущая версия ПСКОВА при этом не изменится ни на грамм. Это и означает, что ПСКОВ не пострадает.


          Переносимые приложения


          Всё-таки я про доступные приложения, которые даже переносить не надо. Т.е. открываешь ссылку, и всё. Это цель.


          Конечно, сейчас ещё придётся запустить ЛФСД руками, это тоже по-своему неудобно. Тут есть разные решения, и я работаю над выбором наиболее удобного. В своё время опубликую и его.


          Почему HTML?


          Цель в долговечности и доступности: лишь HTML можно запустить на любом устройстве пользователю без каких-либо телодвижений.


          Молодость веб-технологий относительна:


          • Браузер: 1990, 29 лет
          • HTML: 1993, 26 лет
          • JavaScript: 1995, 24 года
          • CSS: 1996, 23 года

          Используемые нынче API (и даже этот сайт хабра) несоизмеримо моложе веб-технологий.


          1. amarao
            06.08.2019 13:51

            Сравните 29 лет у браузера (в котором ваше приложение работать не будет), javascript (в редакции 1995 года ваше приложение работать не будет) и shell (1977), в котором приложение на shell работало и тогда, и работает сейчас.


            чтобы запустить шелл-код надо всего лишь поставить shell.
            На моей системе shell занимает 127 килобайт.
            Браузер — 205 мегабайт.


            1. kornerr Автор
              06.08.2019 13:57

              ПСКОВ всё-таки не является сферическим кодом в вакууме в отличие от вашего гипотетического шелл-кода. Покажите мне шелл-код, делающий то же, что и ПСКОВ, на системе 1977-2000 годов.


              ПСКОВ работает без изменений на Windows 2000 и новее. Побейте этот рекорд :)


              1. iig
                07.08.2019 09:57
                +1

                Что-то я не понял в чем челендж. Почти любое приложение для windows из 2000 года функционально до сих пор. Да и для dos тоже.
                Генератор статических страниц был ещё в древних выпусках MS Office, потом его выпили.
                Или первое апреля теперь празднуют не по календарю, а по настроению? :)


                1. kornerr Автор
                  07.08.2019 12:21

                  В последних сообщениях amarao утверждал, что шелл-код долговечнее веб-приложения, ибо якобы работает аж с 1977. Я предложил amarao доказать это на примере путём воссоздания ПСКОВА на упомянутом шелл-коде, чтобы этот код работал на системах 1977-2000 годов выпуска. В этом состоит вызов.


                  Если хотите принять этот вызов — вперёд :) Мне очень хотелось бы узнать, как поддержать системы до Windows 2000.


                  1. amarao
                    07.08.2019 13:31
                    +1

                    Давайте наборот. ВЫ ГОВОРИТЕ ЧТО псков ПОЗВОЛЯЕТ СОЗДАТЬ ПРИЛОЖЕНИЯ.


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


                    1. kornerr Автор
                      07.08.2019 13:48

                      Я нигде не говорил, что ПСКОВ позволяет создать приложение. ПСКОВ является веб-приложением, которое я создал. Он лежит по указанному выше адресу, пользуйтесь.


                      1. staticlab
                        07.08.2019 14:17

                        Правильно, но для запуска ваших приложений требуется наличие в системе python и браузера с поддержкой JS. Браузер, как правило, на компьютерах уже есть. Таким образом, конечному пользователю потребуется установить Python, затем разобраться как запустить скрипт ЛФСД в директории приложения, убедиться, что он заработал (а порт может быть занят) и, наконец, открыть в браузере нужный URL. Это довольно трудоёмко.


                        1. kornerr Автор
                          07.08.2019 14:38

                          Если Linux и macOS, то ставить Питон не надо. Если порт вдруг занят, то да, придётся туго.


                          Над возможностью работать без ЛФСД я работаю. Она есть, но, как всегда, со своими нюансами.


  1. murzix
    06.08.2019 12:45

    В этой статье слишком много ПСКОВа, без каких-либо обоснований причин выбора такого названия.

    Я как скобарь — негодую.


    1. kornerr Автор
      06.08.2019 13:00

      Псков — древний русский город, который в своё время имел народное вече (изображение к статье). Несмотря на то, что нынче город Псков не является сколько-нибудь значимым промышленным центром в России, в Пскове всё равно живут и здравствуют люди.


      Представленный ПСКОВ не станет новым машинным обучением, однако, будет на протяжение многих лет делать своё дело — генерировать статические сайты.


  1. Matisumi
    06.08.2019 14:13

    Я не совсем понял, это пост — тонкая пост-ирония, или это все серьезно написано?


    1. kornerr Автор
      06.08.2019 14:16

      Тут есть всё. ПСКОВ как генератор статических сайтов существует и здравствует. Попробуйте его сами :)


      1. amarao
        07.08.2019 14:19

        А что означает абревиатура ПСКОВ? Или это как в армии, если капсом, значит крик?


        1. kornerr Автор
          07.08.2019 14:39

          ПСКОВ имя собственное, не аббревиатура (пока что). Использую написание заглавными буквами, чтобы отличать от города Пскова.


  1. codecity
    06.08.2019 15:19

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


    1. iig
      08.08.2019 07:33

      Использование стандартов решает. Use POSIX, например. Или придумайте свой, только не забудьте поддерживать его хотя бы лет 30.


      1. kornerr Автор
        08.08.2019 11:49

        Эти стандарты я как раз и использовал в ПСКОВЕ :)


  1. staticlab
    06.08.2019 15:28

    Где ссылка на git? Почему у ПСКОВа настолько невалидная вёрстка? Зачем нужен ЛФСД, если можно просто написать


    python -m SimpleHTTPServer 8080


    1. kornerr Автор
      06.08.2019 16:11

      1) Исходный код доступен здесь: https://bitbucket.org/ogstudio/pskov
      Осторожно: подход к организации кода ещё более нестандартный, чем само приложение в браузере.


      2) О какой невалидной вёрстке вы говорите и как мне проверить её (не)валидность?


      3) SimpleHTTPServer действительно прекрасен, но не умеет:


      • писать файлы
      • отдавать путь к рабочей директории
      • отдавать список файлов указанной директории


      1. staticlab
        06.08.2019 16:18

        2) О какой невалидной вёрстке вы говорите и как мне проверить её (не)валидность?

        Например, открываете <head> после <meta>, добавляете закрывающий тег </input>.


        1. kornerr Автор
          07.08.2019 12:25

          Участник дискуссии ниже раскрыл мне смысл ваших нареканий. К удивлению обнаружил, что высказанные вами нарекания лишь ещё раз подтверждают долговечность и стойкость описанного мною подхода. Спасибо.


      1. codecity
        07.08.2019 07:02

        О какой невалидной вёрстке вы говорите и как мне проверить её (не)валидность?

        Видимо имелся в виду validator.w3.org

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


        1. kornerr Автор
          07.08.2019 12:24

          Спасибо за пояснение. Да, замечания действительно есть. В т.ч. про устаревший тэг <center>.


          Юмор состоит в том, что эти замечания о неверных тэгах лишь доказывают долговечность описанного мною подхода.


          1. staticlab
            07.08.2019 12:31

            В чём же тут ваша заслуга?


            1. kornerr Автор
              07.08.2019 12:33

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


              Моя роль лишь показать, как можно писать один раз и надолго.


              1. iig
                08.08.2019 09:47

                " показать, как можно писать один раз и надолго."


                Смотрим в прошлое: что за последние 20 лет не поменялось? Html и markdown? Ок, так и запишем, конвертор из md в html это то, что нужно всем и на века. А, к примеру, 20 лет назад не было андроида — и не нужен он никому.


                1. kornerr Автор
                  08.08.2019 11:30

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


                  1. iig
                    08.08.2019 23:27

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


                    Если это ваш код, собственный так сказать, что вас может заставить в нем что-то менять? Только ваше личное решение. Все open source именно так работает ;)


  1. Virgo_Style
    06.08.2019 16:06

    Для освобождения ПСКОВА из клетки пришлось создать ЛФСД, крошечный скрипт на Python, который необходимо запускать руками на время работы ПСКОВА.

    единицы людей скачают себе неизвестное приложение

    Ваша правда.
    А вообще стоит различать «будет работать» и «будут пользоваться». Это две заметные разницы. Палка-копалка до сих пор вполне функциональна, но количество пользователей у нее уже немного не то.


    1. kornerr Автор
      06.08.2019 16:17

      Согласен.


      В данном случае я сделал инструмент, который нужен именно мне. Попутно сделал его общедоступным и долговечным.
      Раньше подобное у меня складировалось в виде скриптов на Питоне или Баше где-то на жёстком диске. Эти скрипты со временем терялись, забывались и т.п…
      Теперь же результаты моего труда не потеряются на просторах локального жёсткого диска, а будут доступны и мне, и любому желающему (которым скорее всего буду сам я через несколько лет).


  1. AVX
    06.08.2019 21:52

    Ну не знаю… это не претендует на действительно универсальное ПРИЛОЖЕНИЕ. Это просто веб-страница, которая к тому же добавляет необходимость что-то ещё делать.

    С тем же успехом можно сделать просто скрипт, в одном файле, который можно запустить в windows и в linux, который далее сделает (сам или при помощи других утилит или команд, если обнаружит, что они доступны) нужную задачу. Я такой делал, работает в линуксах где есть shell и утилита md5sum, и виндах (тоже практически любых версий) где работает .cmd, и есть любой powershell. (скрипт вычисляет контрольные суммы файлов в указанной папке, записывает в отдельный файл, и наоборот, может вычислить и сравнить, не изменилось ли что-то; это я делал чисто для себя, нужна была такая утилита). При желании можно доработать под указанные Вами требования, и сделать на других языках.

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

    Я не смотрел код странички, но могу поспорить, что эту задачу можно реализовать и на многих скриптовых языках, не говоря уже о чистом C и прочих. Однако не знаю, как можно скомпилировать приложение, чтобы оно (один и тот же файл) мог запуститься и в линукс и в винде. Скрипт — можно. В принципе, можно в тело скрипта запихнуть эти две программы (или больше), и он будет запускать то что нужно.


    1. kornerr Автор
      07.08.2019 12:28

      Действительно, можно написать 2 скрипта — Bash и CMD. Тем не менее, ПСКОВ написан на одном языке, работающим на всех настольных ПК, начиная (это важно) с Windows 2000.


      Итого несколько требований:


      • работа без изменений, начиная с Windows 2000
      • единый код для всех платформ
      • отсутствие необходимости в поддержке минимум лет 10
      • доступность каждому

      Ни Bash, ни CMD, ни C так не могут.


      1. staticlab
        07.08.2019 12:38

        https://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)


        1. kornerr Автор
          07.08.2019 13:00

          Таки мы опять перешли на сферический код (теперь уже TCL?) в вакууме. Спорить комментариями можно бесконечно. ПСКОВ лежит по указанному выше адресу и работает. Предлагаю перекрыть его рабочим инструментом, а не списком поддерживаемых систем TCL.


          1. staticlab
            07.08.2019 14:23

            Tcl/Tk — это платформа, которая позволяет на относительно простом скриптовом языке писать кроссплатформенные десктопные приложения, которые можно запускать на огромном количестве платформ с минимальным оверхедом. Браузер, к сожалению, слишком громоздкая платформа. Критика Electron это подтверждает. Но даже приложения на Electron намного удобнее разрабатывать и использовать.


            1. kornerr Автор
              07.08.2019 14:40

              Браузер есть у всех, TCL нет ни у кого.


              1. staticlab
                07.08.2019 16:41

                Плохой аргумент, учитывая, что вы на Python завязываетесь. К тому же, вы не поверите, но Tcl/Tk по дефолту стоит в дистрибутивах Linux (например, в Ubuntu) и даже в macOS. Скрипты, позволяющие создавать GUI на Tk, можно запускать через утилиту wish.


      1. AVX
        07.08.2019 12:44

        Я писал, что именно один файл, а не два. Один для линукса и он же для винды. Остальным требованиям в принципе отвечает. Правда я не проверял на вин2к, но не вижу причин там не работать.
        Кстати, создание веб страниц относительно легко можно делать в чистом bash и в cmd.exe тоже. И этому скрипту не нужен будет ни интернет ни сервер ни питон локальный. Но это всё как троллейбус из буханки- можно сделать, но зачем?


        1. kornerr Автор
          07.08.2019 13:02

          Я с удовольствием хотел бы научиться писать такой скрипт, который работает на Windows (2000+), Linux, macOS. Однако, я не нашёл сходств в Bash и CMD. С радостью готов перенять ваше знание, если таковым обладаете, без шуток. Эта статья как раз про то, как я делюсь своим знанием создавать долговечные приложения. Я готов принять знание, которое позволит мне сделать гораздо более долговечный и доступный ПСКОВ.


          1. AVX
            07.08.2019 13:17

            Если кратко и без деталей — то в bash и cmd.exe много общего, но можно обеспечить работу и там и там благодаря символам комментариев, которые различаются у них. В моём скрипте кроме того ещё тот же файл передаётся на управление в powershell, но и с ним можно разделить. Я когда-то писал статью на Intel IT Galaxy, но с 2016 года проект закрыт, статьи в открытом доступе нет. Планировал написать её же здесь, но сказывается нехватка времени — всё же нужно её доработать под строгие требования местного сообщества :-)


            1. kornerr Автор
              07.08.2019 13:50

              Я готов взглянуть на любую версию данной статьи, мне главное узнать принцип.


              Я когда-то писал статью на Intel IT Galaxy, но с 2016 года проект закрыт, статьи в открытом доступе нет

              Это как раз то, почему ПСКОВ именно веб-приложение, которое никто (даже я) не сможет "закрыть".


              1. AVX
                07.08.2019 16:05

                Пришлите адрес электронной почты в личку. Я отправлю завтра сам скрипт, там комментариев много. Однако, он уже устарел, в КДЕ с 5 версии изменилось что-то, но в принципе это можно всё исправить, просто мне лень. В 2015 году, при создании скрипта была 4 версия КДЕ, там всё работало.


                1. kornerr Автор
                  07.08.2019 17:11

                  Однако, он уже устарел, в КДЕ с 5 версии изменилось что-то

                  Это как раз то, от чего защищён ПСКОВ ;)


          1. staticlab
            07.08.2019 14:24

            Однако Tcl/Tk вы проигнорировали.


            1. kornerr Автор
              07.08.2019 14:41

              Я всегда за то, чтобы перенять знания. Однако, вы пока только кидаетесь сферическими технологиями в вакууме. Сделайте аналог генератора сайта на TCL так, чтобы работал и дольше, и на большем количестве устройств, нежели ПСКОВ. Я тогда с удовольствием заберу его себе.


              1. staticlab
                07.08.2019 16:44

                Есть ТЗ?


                1. kornerr Автор
                  07.08.2019 17:21

                  Краткое описание:


                  • прочитать pskov.cfg
                  • получить список директорий для обработки и настройки этой обработки
                  • обработать каждую директорию

                  Обработка директории:


                  • конвертировать каждый файл md в html
                  • использовать дату, заголовок, название файла из ключей файла md для генерации html
                  • создать страницы с предпросмотрами (index.html, index2.html, ...)

                  Страницы с предпросмотрами:


                  • содержат предпросмотры файлов md
                  • содержат переключение между страницами предпросмотра


                  1. staticlab
                    07.08.2019 17:33

                    Зачем системе сборки нужен GUI? Зачем конечному пользователю мучиться со всем этим добром, если ему проще опубликоваться на GitBook?


                    1. kornerr Автор
                      07.08.2019 17:46

                      Предлагаю сделать удобнее на TCL :)


                      1. staticlab
                        07.08.2019 18:29
                        +1

                        Лично для меня удобнее — это не использовать в данной задаче GUI в принципе, а собирать готовой системой сборки вроде make из консоли. Поэтому и вопрос: зачем в данной задаче нужен GUI? Из ТЗ это не понятно.


                        1. kornerr Автор
                          08.08.2019 11:31

                          Конкретно для этой задачи UI некритичен, просто его легко получить на вебе.
                          Вызов-то вы приняли? Или будем спорить в комментах? :)


                          1. staticlab
                            08.08.2019 13:56

                            Какие ещё вызовы?


  1. ainu
    06.08.2019 22:20

    Послезавтра этот хак уберут/починят, и всё может сломаться. В коде на 30 лет не должно быть хаков.

    Хитрый символ


    1. kornerr Автор
      07.08.2019 12:31

      Этот хак из библиотеки showdown.js. Возможно, это сломается. Можем проверить. Через сколько лет, по-вашему, этот хак приведёт к неисправной работе ПСКОВА?


      1. ainu
        07.08.2019 13:52

        Я думаю, лет через 5, но не конкретно этот хак, а проверки вроде typeof==«function», наблюдал в последних ES бывает что-то было объектом, и перестало им быть, особенно на границе новых версий в React проектах, где полно разных библиотек.


        1. kornerr Автор
          07.08.2019 13:57

          Отлично. Через 5 лет подведу промежуточные итоги по стойкости текущей версии ПСКОВА. Сюда отпишусь.


  1. ua30
    07.08.2019 09:58

    Знаете, это все конечно интересно (может быть). Но бессмысленно. Современные приложения и интерфейсы постоянно меняются. Веб сегодня уже не тот, что был буквально 5 лет назад (а 5 лет назад не то, что был еще 5 лет назад). Компании, которые хотят идти в ногу со временем, просто вынуждены постоянно переписывать свой код и модернизировать свои приложения.


    1. kornerr Автор
      07.08.2019 12:36

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


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


      1. lair
        07.08.2019 13:25

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

        На самом деле, нет. Первое условие такого приложения — полезность. Потому что очень легко сделать долговечное и доступное приложение, которое при этом бесполезно.


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


        1. kornerr Автор
          07.08.2019 13:55

          Польза


          Действительно, польза крайне важна. Для меня польза от ПСКОВА в том, что он всегда под рукой (по указанному выше адресу) и что я на любом настольном ПК могу обновить свои сайты. Полезно и нужно ли это кому-то ещё? Это уже вопрос не ко мне. Возможно, вы знаете, чего не хватает вам в ПСКОВЕ? Буду рад услышать предложения.


          Яндекс.Музыка


          Действительно, ПСКОВ является лишь генератором статических сайтов, а не сайтов воспроизведения музыки. Вместе с тем, технически можно сделать воспроизведение музыкальных файлов с локального диска в веб-приложении. Такой проигрыватель я бы с удовольствием забрал себе.


          1. lair
            07.08.2019 14:08

            Возможно, вы знаете, чего не хватает вам в ПСКОВЕ?

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


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

            В любом браузере? Не думаю. А учитывая, что основная ценность Яндекс.Музыки совсем не в этом — тем более.


            1. kornerr Автор
              07.08.2019 14:42

              В чём основная ценность Яндекс.Музыки, если не в воспроизведении музыкальных файлов?


              1. lair
                07.08.2019 14:45

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


                1. kornerr Автор
                  07.08.2019 14:47
                  -2

                  Попробуйте воспроизвести альбом "Cynic paradise" группы "Pain" и расскажите мне после этого о доступности откуда угодно и об очень большой коллекции :)


                  1. lair
                    07.08.2019 14:50

                    Если вам хочется подменять понятия вместо дискуссии — сколько угодно, но без меня.


                    Я, прямо скажем, Яндекс.Музыкой не пользуюсь, я пользуюсь Google Music (которой Яндекс.Музыка, скажем так, вдохновлялась), так вот, Google Music прекрасно предоставляет мне доступ ко всей моей коллекции безотносительно ее происхождения. Если Яндекс.Музыка так не умеет — горе ей, но ваша технология все равно не может ни того, что может Яндекс.Музыка, ни того, что может Google Music — проще говоря, она не может того, что нужно мне.


                    1. kornerr Автор
                      08.08.2019 11:46
                      -1

                      На самом деле, я просто тоже немного поиграл в используемую здесь игру "ответочка". В эту игру очень легко играть, однако, иногда она может кого-то обидеть.


                      В своей реплике я намекал на то, что музыка не принадлежит ни Яндекс.Музыке, ни Гугл.Музыке, ни какому-либо другому сервису. Конкретно альбом "Cynic paradise" пропал около пары месяцев назад, а раньше был доступен. Это всё к вопросу о том, кто чем владеет.


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


                      1. lair
                        08.08.2019 11:53

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

                        А какая мне разница, кто владеет приложением, если оно не может того, что мне нужно?


                        Если бы у меня был проигрывать в браузере, умеющий воспроизводить с локального диска, я бы на Яндекс.Музыку и подобные сервисы просто не заходил. И альбомы бы были всегда при мне.

                        … при условии, что "при вас" устройство, на котором этот локальный диск и браузер. Что в моем случае совсем не так — собственно, на компьютере, на котором хранится моя музыкальная коллекция, я музыку не слушаю почти никогда.


                        Повторю свою мысль еще раз: не важно, насколько долговечно приложение, не важно, кому оно принадлежит, если оно не приносит пользователю пользы.


                        1. kornerr Автор
                          08.08.2019 12:39

                          Согласен. Вполне вероятно, необходимое лично вам приложение я не создам никогда. ПСКОВ пока удобен лично мне.


      1. ua30
        07.08.2019 13:39

        Приятная вещь в том, что своими отвёртками можно пользоваться десятилетиями, несмотря на то что на рынке появляются шуруповёрты на атомных батарейках.
        Можно. Но опять же — бессмысленно. Все равно что зачем машины и самолеты, если есть велосипед…

        Я не говорю что это плохо. Но практического смысла конкретно в такой «долговечности» нет.


        1. kornerr Автор
          07.08.2019 13:59

          Допускаю, что вам ПСКОВ может быть не нужен в текущем виде. Тут я ничего не могу поделать. Вместе с тем, вы можете знать, чего не хватает в ПСКОВЕ именно вам. Если есть пожелания, пожалуйста, поделитесь. Возможно, это поможет сделать мне следующую версию ПСКОВА полезной и вам.


          1. ua30
            08.08.2019 11:21

            Если честно, я когда открыл, посмотрел секунд 5-10. В голове была лишь одна мысль — «руками в блокноте будет проще, чем разбираться что тут к чему».


            1. kornerr Автор
              08.08.2019 11:37

              Вчера у меня была такая же ситуация. У меня не получалось закомитить на свой сервер гита файл более 1МБ по HTTPS, т.к. что-то на сервере было настроено с таким ограничением. Данного ограничения нет по SSH, но мне было лень заморачиваться с SSH: содавать ключи, копировать их, настраивать агента SSH. Поэтому я просто забил и решил подождать, пока коллега поправит сервер.


              Я прекрасно понимаю, что всегда хочется делать так, как привык. В моём случае это взять логин/пароль и использовать их везде, чем один раз заморочиться с малоизвестным мне SSH.


              Правильно ли я поступил? Это вопрос непростой.


  1. HomeDimoN
    07.08.2019 11:22
    +1

    Таки не понял, причем тут «народовластие, киберпанк, democracy, cyberpunk»
    Таки не понял, в чем преимущество?
    Таки не понял, а что проект tiddlywiki уже умер?

    tiddlywiki:

    • CSS, JavaScript, ресурсы, картинки в одном «флаконе» HTML файле
    • Плагины
    • Встроеный редактор
    • WiKi, markdown разметка
    • Перекрестные ссылки
    • Возможность сборки структуры и наполнения «Сайта» из исходников


    1. kornerr Автор
      07.08.2019 12:56

      Народовластие


      Участник дискуссии выше задал схожий вопрос. Он говорил о том, что в нормальных-то компаниях всегда будут идти в ногу со временем (модой). Чтобы оставаться модной компанией для молодых работников и привлекать их к себе, этой компании всегда нужно меняться и менять свои продукты, даже если они работают и устраивают пользователей.


      Это пример внешнего контроля пользователя: компания полностью владеет инструментов, а пользователю остаётся лишь смириться.


      Народовластие означает внутренний контроль пользователя: каждый желающий может сделать себе свою Яндекс.Музыку, которая может иметь вполне себе топорный интерфейс, но работать безотказно десятилетиями. Если вдруг мне подобный инструмент будет полезен, то я смогу взять его себе (в виде одного файла HTML) и разместить у себя.


      Разница в том, кто принимает решение: вы сами или кто-то за вас.


      TiddlyWiki


      TiddlyWiki является редактором. ПСКОВ же является всего лишь долговечным генератором без намёка на редактирование в нём самом.
      TiddlyWiki в локальном исполнении постоянно предлагает скачать новый файл самого себя, чтобы сохранить изменения. ПСКОВ для этого использует ЛФСД.
      ПСКОВ можно сохранить с помощью Ctrl+S, ибо это ровно один файл HTML. В самом же TiddlyWiki написано, что Ctrl+S работать не будет.


  1. gw19
    07.08.2019 12:33

    Скрипт парсит .md файл, генерирует статическую html-страницу. И куда он ее публикует? На внешний сервис?


    1. kornerr Автор
      07.08.2019 12:57

      ПСКОВ является приложением, исполняемым в браузере. Скриптом является ЛФСД, который предоставляет ПСКОВУ возможность работы с файловой системой пользователя. ПСКОВ генерирует для каждого файла *.md соответствующий файл *.html рядом.


      1. iig
        07.08.2019 21:23

        Если это весь функционал, то вы придумали утилиту make (ей годиков поболее чем windows 2000), только с сильно урезанным функционалом (умеет только html страницы). И браузер ей не нужен.


        1. kornerr Автор
          08.08.2019 11:38

          Готов принять подобную утилиту на основе make, если вы в силах её предоставить.


          1. staticlab
            08.08.2019 13:58

            Это будет не утилита, а обычный мейкфайл. Неужели вам так трудно посмотреть в интернете, что такое make?


            1. kornerr Автор
              08.08.2019 14:29

              Я бы мог поспорить с вами о том, что в Windows никаких Makefile нет, однако, вижу, что спор смысла иметь не будет.


              1. lair
                08.08.2019 15:32

                В Windows и питона нет, если уж на то пошло.


  1. ainu
    07.08.2019 14:03

    Вот настоящий великолепный пример программы, которая работает вечно:
    www.youtube.com/watch?v=PH1BKPSGcxQ
    excel, paint из windows 2.0 работают в Windows 10 (31 год, больше чем 19 лет, заявленные ПСКОВом, и уж точно ПСКОВ не мог работать на 2.0). Причём они сохранились в системе просто в процессе обновления системы одна за другой.


    1. ainu
      07.08.2019 14:04

      Вердикт — писать надо на си/си++ (возможно, go)


      1. kornerr Автор
        07.08.2019 14:45

        На C/C++ тоже буду писать, всему своё время :)


    1. kornerr Автор
      07.08.2019 14:43

      Подождите. А как же Linux и macOS?


      1. ainu
        07.08.2019 15:50

        Никак. Речь про почти-вечное приложение (а для Windows буквально ничего более вечного пока не делали). Если надо кроссплатформенно, то наверное golang, или кросскомпиляция.
        MacOS вообще такая штука, в которой раньше была архитектура процессора другая, там или java или чтото подобное нужно.
        Про линукс я молчу, там таких проблем нет. Старые всякие программы, написанные на си, могут и дольше работать, а вот графическая часть для них само собой устаревает.


        1. kornerr Автор
          07.08.2019 16:41

          ПСКОВ работает на Windows (2000+), Linux, macOS без изменений. Причём в отличие от C/C++ без каких-либо телодвижений с компилятором. Доступно и долговечно.


          1. staticlab
            07.08.2019 16:48

            Но требует установки Python на компьютер пользователя. В то время как сборку опенсорсного приложения на C/C++ вполне можно делать на AppVeyor CI. Пользователям достаточно будет скачать готовый экзешник.


            1. kornerr Автор
              07.08.2019 17:11

              ЛФСД на C++ вам подойдёт? :)


              1. staticlab
                07.08.2019 17:12

                Тогда уже всё приложение целиком на C++ сделать и не парить никому мозг.


                1. kornerr Автор
                  07.08.2019 17:18

                  Не, я лучше ЛФСД уберу, раз уж вы так к нему привязались.


      1. Virgo_Style
        07.08.2019 19:01

        А почему такой узкий набор? Предлагаю добавить WinCE, iOS и Android. И незаслуженно забытый МК-61.


        1. kornerr Автор
          08.08.2019 11:39

          Потому что это лишь первая попытка. В дальнейшем будут все системы, где есть браузеры. Всему своё время.


  1. Mabu
    07.08.2019 18:06

    Я думаю, что использование VBScript решил проблему доступности для Windows 98 и доступу к файловой системе без питона.


    1. kornerr Автор
      07.08.2019 18:24

      Когда искал сервер HTTP для GET/POST, не нашёл готового для VBScript, работающего на Windows 98.


      1. Mabu
        07.08.2019 18:52
        +1

        Я думал, что генератор страниц преобразует множество строк из *.md?файла во множество строк *.html?файла, но не думал, что для его работы нужен целый HTTP?сервер.


        1. kornerr Автор
          08.08.2019 11:41

          Действительно, если сделать решение для чисто комадной строки, HTTP будет не нужен. Однако, цель была в том, чтобы конкретно это решение жило десятилетиями на всех настольных ПК.
          Если у вас есть скрипт на VBScript, который умеет MD->HTML и Windows 98, я с радостью взгляну на него и использую у себя.


  1. mkpankov
    08.08.2019 09:33

    Много философии, мало технологии.


    1. kornerr Автор
      08.08.2019 11:41
      -1

      Мало буков.