The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

В Polkit добавлена поддержка JavaScript-движка Duktape

25.01.2022 20:42

В инструментарий Polkit, используемый в дистрибутивах для обработки авторизации и определения правил доступа к операциям, требующим повышенных прав доступа (например, монтирования USB-накопителя), добавлен бэкенд, позволяющий использовать встраиваемый JavaScript-движок Duktape вместо ранее применяемого движка Mozilla SpiderMonkey (по умолчанию как и раньше осуществляется сборка с движком Mozilla). Язык JavaScript в Polkit используется для определения правил доступа, которые взаимодействуют с привилегированным фоновым процессом polkitd при помощи объекта "polkit".

Duktape используется в браузере NetSurf и отличается компактным размером, высокой переносимостью и низким потреблением ресурсов (код занимает около 160 kB, а для выполнения достаточно 64kB ОЗУ). Обеспечивается полная совместимость со спецификациями Ecmascript 5.1 и частичная поддержка Ecmascript 2015 и 2016 (ES6 и ES7). Также предоставляются специфичные расширения, такие как поддержка сопрограмм, встроенный фреймворк для журналирования, механизм загрузки модулей на основе CommonJS, система кэширования байткода, позволяющая сохранять и загружать скомпилированные функции. В состав входит встроенный отладчик, движок для выполнения регулярных выражений и подсистема для поддержки Unicode.

  1. Главная ссылка к новости (https://gitlab.freedesktop.org...)
  2. OpenNews: Уязвимость в Polkit, позволяющая повысить свои привилегии в системе
  3. OpenNews: В KDE обеспечена интеграция с PolKit
  4. OpenNews: Выпуск web-браузера NetSurf 3.10
  5. OpenNews: Выпуск встраиваемого JavaScript-движка Duktape 2.4.0
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/56578-polkit
Ключевые слова: polkit, duktape, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (152) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, макпыф (ok), 20:48, 25/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    УРА

    UPD: Блин, там для сборки этого ducktape нода похоже нужна. Впрочем все равно лучше чем mozjs
    UPD2: Только для мастера. Релиз без неё.

     
     
  • 2.5, Аноним (5), 21:05, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    котлеты против макаронов ?
     
  • 2.11, Аноним (11), 21:43, 25/01/2022 Скрыто модератором
  • +5 +/
     
     
  • 3.16, Аноним (16), 21:51, 25/01/2022 Скрыто модератором
  • +6 +/
     
     
  • 4.33, Самокатофил (?), 00:30, 26/01/2022 Скрыто модератором
  • +/
     
  • 4.36, Crazy Alex (ok), 01:44, 26/01/2022 Скрыто модератором
  • +1 +/
     

     ....ответы скрыты модератором (5)

  • 1.3, mimocrocodile (?), 20:48, 25/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Открываешь репо polkit а там

    > pkexec: local privilege escalation (CVE-2021-4034)

     
     
  • 2.54, . (?), 08:46, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Погодите, так ведь он для этого ж и предназначен? Программа для получения доступа к повышенным привиллегиям в обход стандартных юникс-механизмов - предоставила кому-то к ним доступ? Ну ахренеть, я изумлен.

     
     
  • 3.61, Аноним (61), 10:35, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Погодите, так ведь он для этого ж и предназначен?

    И сколько платят безопасникам за нахождение дыр в дуршлаге? Думаю, прибыльная работа.

     
     
  • 4.64, . (?), 10:56, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >> Погодите, так ведь он для этого ж и предназначен?
    > И сколько платят безопасникам за нахождение дыр в дуршлаге? Думаю, прибыльная работа.

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

    Software Description:
    - policykit-1: framework for managing administrative policies and privileges
    Summary:
    policykit-1 could be made to run programs as an administrator.

    - то ли это просто вывод apt show, то ли это USN? Мне вот вредно столько бухать чтоб отличать с первой попытки.

     
     
  • 5.70, Аноним (61), 11:10, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > нервная очень, а печень небесконечная.

    Ну, так медицинскую коноплю разрешили в отличии от кулинарного мака.

     

  • 1.4, sdkhflskhgl (?), 21:03, 25/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    ух тыж... ducktape реально классная реализация жабаскрипта, по идеологии чем-то похож на sqlite - тоже только один Хидер и один сырец. встраивать такие модули в свой проект - одно удовольствие. правда нужно какое-то время чтобы привыкнуть к стековой машине (API там весьма далёк от классики жанра), но если разобраться (занимает день с перекурами если не торопиться) - то потом можно расширять функционал движка до бесконечности :)
     
     
  • 2.26, Аноним (26), 23:17, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    API у него действительно классное. Но я бы предпочёл обёртку над SpiderMonkey.
     
  • 2.37, Crazy Alex (ok), 01:45, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А там сильно нужен джаваскрипт вообще?
     
     
  • 3.90, Аноним (90), 13:16, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Миллениалы не понимают конфиги вида ключ-значение, им надо обязательно писать ифы. А на жававскрипте вместо простенького язычка для встраивания (кто сказал луа?), потому что другого они не умеют.
     
     
  • 4.91, sdkhflskhgl (?), 14:01, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    иногда надо делать конфиги чуть более структурированными, чем просто плоская портянка, для таких случаев json очень хороший вариант: легко читается, минималистичен по дополнительным символам
     
     
  • 5.166, минона (?), 11:56, 30/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    (неловкая пауза) а как связаны движок джаваскрипта и json в конфигах?
     
  • 2.62, OpenEcho (?), 10:51, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    IMHO QuickJS от Фабриса Белларда покруче будет чем дактэйп
     
     
  • 3.80, Аноним (80), 12:36, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Таки почему же?
     
     
  • 4.99, OpenEcho (?), 14:22, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Таки почему же?

    Из малышей он супортит больше фич из ECMAscript ну и продуктивность:

    https://bellard.org/quickjs/bench.html

     
  • 3.82, Аноним (-), 12:38, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    нет
     
     
  • 4.100, OpenEcho (?), 14:24, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > нет

    Спасибо за досканальное разьяснение !!!

     

  • 1.6, Аноним (11), 21:21, 25/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Вот и пришла хана polkit

    в такие вещи пихать попаскрипт - хоронить

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

     
     
  • 2.8, муу (?), 21:28, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +19 +/
    > Вот и пришла хана polkit
    > в такие вещи пихать попаскрипт - хоронить

    а он, внезапно, там уже давно, до добавления duktape использовался mozjs, для сборки которого нужны python, llvm, rust и ведро соплей девственниц.

     
     
  • 3.13, Аноним (11), 21:44, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    та внезапно по барабану. у меня polkit вообще в системе нету и ниразу не понадобился
     
  • 2.9, псевдонимус (?), 21:28, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Зато прог к этому не прикрученых все меньше.
     
     
  • 3.12, Аноним (11), 21:43, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вагон и маленькая тележка. почти всё не прикручено у меня этого polkit вообще нету
     
  • 3.38, Crazy Alex (ok), 01:46, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Единственное, что к нему прикручено - это DE всякие. Смысл которых лично я не понимал вообще никогда.
     
  • 2.53, Аноним (53), 07:59, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >Вот и пришла хана polkit
    >в такие вещи пихать попаскрипт - хоронить

    Так JS в нём отродясь был, только от Мурзилы. Но свежие версии SpyderMonkey хотят собираться Растом.

     
     
  • 3.55, . (?), 08:50, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Так JS в нём отродясь был

    -rwxr-xr-x 1 root root 9980 Nov  5  2011 /usr/lib/polkit-1/polkitd
    ты уверен что в нем поместился js? Чудеса микроминиатюризации, не иначе.

    Но идея, конечно, и изначально была идиотской. Хотели UAC какввенде. Впрочем, в венде там хотя бы нет js вместе с мурзилой целиком.

     
     
  • 4.81, Аноним (-), 12:38, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >> Так JS в нём отродясь был
    > -rwxr-xr-x 1 root root 9980 Nov  5  2011 /usr/lib/polkit-1/polkitd
    > ты уверен что в нем поместился js? Чудеса микроминиатюризации, не иначе.

    https://gitlab.freedesktop.org/polkit/polkit/-/blob/0.111/NEWS
    > Highlights:  The JavaScript interpreter is now mandatory.  Both js185 and mozjs17 versions of SpiderMonkey are supported.

     
  • 4.83, Аноним (83), 12:43, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Надо было задание правил сделать декларативно просто, чтоб не было возможности в алгоритмы.
     
     
  • 5.87, Аноним (87), 13:07, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В той версии - так и было. Но тогда получалось недостаточное какввенде - поэтому добавили ж0поскрипт.
     

  • 1.18, Oxyd76 (?), 22:05, 25/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Божечки. Ну зачем? Почему не более подходящие, для системной компоненты вещи. Ну хочется вам встроить поддержку логики, так возьмите ну тот-же LUA.
     
     
  • 2.19, Аноним (19), 22:07, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Луа слишком сложный язык.
     
  • 2.20, Аноним (20), 22:14, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • –9 +/
    А чем JavaScript не подходящий? Он для этого был создан. Реализация отличная, настоящий embedded. Потребляет очень мало.

    Наверное это в 💯 раз лучше чем bash портянки (но на них тут никто не ругается).

    И он во много-много раз быстрее недоязыка bash.

     
     
  • 3.21, Аноним (21), 22:21, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    запомни: скриптовать что-то сложное принято исключительно на самых тормознутых языках. Например на баше, где "всё есть строка". Или на пыхе, -- писать тормозкрипты пробельчиками. Куда ты тут лезешь со своим яваскриптом?
     
     
  • 4.56, Аноним (56), 08:52, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В php очень быстрый интерпретатор, даже без jit
     
  • 3.22, anonymous (??), 22:25, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Всем хорош. Одна только проблема. polkit до мержа использовал mozjs сиречь spidermonkey, который для себя требует дохера зависимостей рантайма и билда. Но теперь, когда они переехали на duktape, это и в самом деле что-то близкое к embedded.
     
     
  • 4.29, Аноним (26), 23:22, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тебе всё равно Firefox ставить, так что на десктопах SM оптимальнее, ибо и JiT, и JS нормальный, и памяти не жрёт дополнительно, ибо у тедя Firefox всё равно перманентно запущен.
     
     
  • 5.43, Аноним (-), 02:07, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Тебе всё равно Firefox ставить, так что на десктопах SM оптимальнее, ибо
    > и JiT, и JS нормальный, и памяти не жрёт дополнительно, ибо
    > у тедя Firefox всё равно перманентно запущен.

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


     
  • 3.46, Аноньимъ (ok), 04:55, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >Наверное это в 💯 раз лучше чем bash портянки (но на них тут никто не ругается).

    Я ругаюсь например.
    Ну и так себе аргумент. Всё что угодно лучше баша.

    >А чем JavaScript не подходящий? Он для этого был создан.

    Даже не знаю для чего он был создан.

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

     
     
  • 4.48, ыы (?), 05:55, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ждем от вас дистрибутив линукса, в котором bash заменен на жабоскрипт.
     
     
  • 5.66, . (?), 10:58, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Ждем от вас дистрибутив линукса, в котором bash заменен на жабоскрипт.

    не надо! А то так и сделают.

     
  • 4.50, Anonymoustus (ok), 06:05, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >> А чем JavaScript не подходящий? Он для этого был создан.
    >
    > Даже не знаю для чего он был создан.
    >

    Он был создан для того, чтобы рисовать «спецэффекты» в окне браузера: танцующие снежинки, цветные переливы, «динамические меню» и так далее. В своё время, до очередного «изобретения» квадратных колёс в виде HTML5, это называли DHTML.

    https://en.wikipedia.org/wiki/Dynamic_HTML

     
     
  • 5.119, Аноньимъ (ok), 17:35, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это да, его так намеревались использовать.
    Но вопрос был немного в другом.
     
     
  • 6.130, . (?), 22:47, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Это да, его так намеревались использовать.

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

     
  • 4.57, Аноним (56), 08:53, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какие?
     
  • 4.93, Урри (ok), 14:12, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Не то чтобы это был ужасный язык если смотреть в вакууме.

    Ужасный, ужасный.

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

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

    Примеров вокруг - миллионы.

     
     
  • 5.98, Аноним (56), 14:21, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Назови хотя-бы 5
     
     
  • 6.163, Урри (ok), 22:20, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-
     
  • 5.107, Аноним (21), 15:05, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    очередной хелловорлдщик Урри вещает свое ыкспертное мнение 👍
     
     
  • 6.142, Урри (ok), 13:22, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хелловорлдщик Урри, по крайней мере, хелловорлды пишет. В отличие от некоторых чисто теоретиков.
    Посему у него экспертиза несколько повыше будет, да.
     
  • 5.117, Аноньимъ (ok), 17:33, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Ужасный, ужасный.
    > Дизайн джаваскрипта зело неудачен, хуже почти всех известных используемых языков.

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

     
     
  • 6.122, Аноним (20), 18:14, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так-то я могу переписывать огромные баулы JS (на TypeScript) кода с очень высокой вероятностью что это всё будет корректно работать.

    С и С++ такого и не снилось.

     
     
  • 7.126, Аноньимъ (ok), 19:04, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну так-то я могу переписывать огромные баулы JS (на TypeScript) кода с
    > очень высокой вероятностью что это всё будет корректно работать.

    Вы большой молодец.

    > С и С++ такого и не снилось.

    Хвала Аллаху!

    Вы надеюсь тут не пытались провести аналогию между JS - TS и C - C++ ?

     
     
  • 8.133, Likern (?), 23:15, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Конкретный пример - взял Luxon https github com moment luxon - супер-популярна... большой текст свёрнут, показать
     
     
  • 9.143, Урри (ok), 13:25, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вот и совершенно типичнейший комментарий джаваскриптера - я не хочу учиться, я ... текст свёрнут, показать
     
     
  • 10.145, Аноним (20), 14:28, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    По-существу ответить нечего Понятно Добавлю что автор языка Zig бывший JavaScr... текст свёрнут, показать
     
  • 10.149, Газпром (?), 19:29, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какой объемный выброс газа Вы молодец Так держать ... текст свёрнут, показать
     
  • 6.140, Урри (ok), 13:18, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Всё же мне больше непонятно зачем его вообще нужно было изобретать.

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

     
  • 2.25, Аноним (25), 23:13, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Они не могут взять Lua, потому что там уже был JS. Придётся правила переписывать — никто не хочет.
     
     
  • 3.28, Аноним (26), 23:20, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • –7 +/
    lua - такое говно, что к ней лучше не прикасаться и избегать at all costs. Такого геморроя как с луной я давно не обретал. Дизайнили явно лунатики.
     
     
  • 4.39, Crazy Alex (ok), 01:50, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вот уже сто раз ловил себя на том, что очень не хватает простого удобного скриптового языка, который не пытается быть всем.

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

     
     
  • 5.44, Аноним (21), 02:19, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > не пригодное для написания сложного кода
    > строго типизированное

    Параграфы соблюдены.

    Не пойму, чем так не нравится JS. Успешно применяется в самых неожиданных областях. explorer.exe в вантуз-98 имел боковую панель с голубым уголком -- он управлялся из JScript. DAZ Studio позволяет себя скриптовать и подгружает свои ассеты через "Daz Script", который тоже ECMAScript. nginx/njs, nodejs, react native... Все применяют, а у тебя, видишь ли, "странности". А обернув в тайпскрипт, получаешь свою типизацию.

    А со "странностями" в яваскрипте я сталкиваюсь ровно один раз в 3-5 лет -- когда мне по этим "странностям" задают вопросы на собесах.

    Как альтернатива есть Vala, тоже может работать в скриптовом режиме. Всяко получше всяких перлов-башев-пыхов.

     
     
  • 6.47, Аноньимъ (ok), 04:59, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы какой-то со странностями...
     
  • 6.58, Аноним (20), 09:49, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кстати, из прошлых срачей "parseInt(Infinity, 19)"
     
     
  • 7.63, Аноним (21), 10:54, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну и что это? снова гипотетическая проблема, которую встретишь только в собесах, и которой нет даже в хелловорлдах начинающих?

    declare function parseInt(string: string, radix?: number): number;

     
     
  • 8.94, Урри (ok), 14:14, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Дай угадаю - программист хелловорлда, да ... текст свёрнут, показать
     
     
  • 9.105, Аноним (21), 14:57, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    дай угадаю не умеешь в тайпскрипт и держишь в одних и тех же переменных значени... текст свёрнут, показать
     
     
  • 10.120, Аноньимъ (ok), 17:41, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    1 Тайпскрип НЕ жаваскрипт 2 И подумать никто не может чтобы с вами соревноват... текст свёрнут, показать
     
     
  • 11.121, Аноним (21), 18:12, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Продолжай оправдывай свое незнание тайпскрипта и писать абы как, присваивая ежик... текст свёрнут, показать
     
     
  • 12.125, Аноньимъ (ok), 19:01, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вы не понимаете как работает форум Вы говорите сами с собой, у вас шизофрения ... текст свёрнут, показать
     
  • 7.101, Аноним (56), 14:26, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не запускала, но ответ 19?
    А ещё в js typeof NaN === "number"
     
     
  • 8.102, Аноним (56), 14:27, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    И 1 1 11 ... текст свёрнут, показать
     
  • 8.106, Аноним (21), 15:02, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Подучи матчасть, в частности IEEE 754 Берем например Java static double NaN A ... текст свёрнут, показать
     
  • 7.103, Аноним (56), 14:33, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Все странности с типами решает typescript который такую ерунду просто не скомпилирует.
    Слабая типизация в js поле для бесконечных манипуляций вида засунуть ерунду в ерунду и получить ерунду. JS ужастный!!!111
     
     
  • 8.104, Аноним (56), 14:34, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В сишечке вот тоже слабая типизация хоть и статическая, но её тут нахваливают... текст свёрнут, показать
     
  • 8.146, Урри (ok), 18:01, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Типичный js ник - ноль знаний по типизации, в данном конкретном случае и напро... большой текст свёрнут, показать
     
  • 7.109, Аноним (109), 15:20, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    функция parseInt преобрабразует первые числовые символы в строку. Это даже отравдано учитывае повсеместное распространение в веб значений вида "11px", "2em"

    функция parseInt принимает в качестве первого аргумента строку, поэтому константа Infinity типа number автоматически преобразуется в строку "Inifinity"

    мы указали десятнацатиричную систему счисления тоесть символы /0-9a-i/i это цифры, в нашей строке первая I это единственное число, а дальше идет строковая часть. i в десятичной системе счисления это 18

    Правильный ответ в итоге 18, а не 19, но наверное на собеседовании мне бы этот ответ засчитали так как спрашивают еще и почему так получилось.

     
     
  • 8.116, Аноним (20), 17:30, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Молодец, практически всё правильно А говорят JS программисты тупые Они, худо ... текст свёрнут, показать
     
  • 8.144, Урри (ok), 13:53, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какие прекрасные встроенные грабли ... текст свёрнут, показать
     
     
  • 9.164, Аноним (109), 11:16, 29/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    просто чтобы программировать на любом языке, нужно знать стандартную библиотеку,... текст свёрнут, показать
     
  • 7.110, Аноним (109), 16:42, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ладно infinity, но вы только посмотрите какой js ужастный!
    parseInt("ololo", 36)
    41322444
    parseInt(undefined, 36)
    86464843759093
     
  • 6.77, Crazy Alex (ok), 12:22, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не нравится тем, что он сложный для нормальных скриптовых задач. Мало того, что куча странностей с преобразованиями, всякие прототипные наследования, так ещё и слишком много хитрой функциональности вроде футур и подобного.

    Со "странностями" вы сталкиваетесь каждый день, только привыкли.

     
     
  • 7.85, Аноним (21), 12:52, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > куча странностей с преобразованиями

    Гипотетических. На практике их нет ни у кого, включая хелловорлдщиков. Странности -- это поле деятельности авторов статей про "странности яваскрипта", их затем за 5 минут до собеседования вычитывают интервьюеры (потому что сами тоже не сталкивались!) и задают вопросы, чтоб снизить зарплатные ожидания, типа "ну ты же не знаешь, что будет, если засунуть строку в винегрет, а винегрет умножить на пылесос, а это основа основ".

    > всякие прототипные наследования
    > хитрой функциональности вроде футур и подобного

    Вещи полезные, но если СЛОЖНА/НИАСИЛИЛ, то ими пользоваться не обязательно и до определенной степени можно игнорировать.

     
     
  • 8.115, Crazy Alex (ok), 17:21, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не В данном случае хочется язык, на котором сложно написать нельзя Который учи... текст свёрнут, показать
     
     
  • 9.118, Аноним (20), 17:34, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тебе Zig нужно попробовать Никаких исключений, даже строк нет есть u8 массив... текст свёрнут, показать
     
     
  • 10.148, Урри (ok), 18:07, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какой-то раст недоделанный http rosettacode org wiki Category Zig pub fn ... текст свёрнут, показать
     
  • 10.153, Crazy Alex (ok), 20:46, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    функцию в функцию в замыкание - и в Polkit такое А потом кто-то будет судорожно... текст свёрнут, показать
     
  • 9.123, Аноним (21), 18:22, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну возьми HQ9 , че - ничего сложнее тупого императивного стиля check - никаких... текст свёрнут, показать
     
     
  • 10.127, Аноним (109), 19:52, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    там есть печать hellow world и квайн, а значет пункт и всего прочего нужно счи... текст свёрнут, показать
     
  • 9.147, Урри (ok), 18:05, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Возьми лисп а точнее scheme, ибо cl - буэ Учится за 10 минут я лично объясня... текст свёрнут, показать
     
  • 9.159, Annoynimous (?), 17:57, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Паскаль Только не современный паскаль в стиле Delphi Oxygene FPC - а старый... текст свёрнут, показать
     
  • 6.84, Аноним (83), 12:50, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Как альтернатива есть Vala, тоже может работать в скриптовом режиме. Всяко получше всяких перлов-башев-пыхов.

    В Vala есть своя странность - разрабатывается гномерами. А из этого могут последовать странности, которые всяким перлам-башем-пыхам и не снились.

     
  • 5.59, Аноним (59), 10:04, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну т.е. твоя мечта это питон?
     
     
  • 6.76, Crazy Alex (ok), 12:19, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. Типов нет, зато всякие наследования, magic методы и тому подобное - есть.
     
     
  • 7.86, Аноним (59), 12:56, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Как это, нет типов? Он очень типизированный, вот в си, например, нет типов (есть сахар притворяющийся типами). Такие тонкости как наследование ромбиком тебе не понадобятся с таким подходом к вопросу.
     
     
  • 8.114, Crazy Alex (ok), 17:17, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да вот так - нет С точки зрения пользователя, по крайней мере Не заставляет ук... текст свёрнут, показать
     
  • 5.60, Аноним (80), 10:34, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    mruby хватит всем [pokerface]
     
     
  • 6.73, Аноним (20), 12:08, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Закопайте стюардессу.
     
  • 5.69, OpenEcho (?), 11:08, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > А что-то вроде бейсика - простое, как топор

    FreeBASIC ? Нет?

    > в принципе не пригодное для написания сложного кода,

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

    > но не провоцирующее, как шелл, выстрелы в ногу.

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

     
     
  • 6.79, Crazy Alex (ok), 12:30, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Бейсик уж слишком архаичен в плане синтаксиса, но да, как вариант Понятие сложн... большой текст свёрнут, показать
     
     
  • 7.92, Cradle (?), 14:10, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "back to the basics" - возмоте один из вариантов паскаля, благо их за 50 лет достаточно накопилось. Создавался он вот как будто специально как раз по Вашим запросам.
     
     
  • 8.112, Crazy Alex (ok), 16:53, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Чем клепать 1001-й вариант а там, как минимум, надо добавить какие-никакие объе... текст свёрнут, показать
     
  • 7.96, OpenEcho (?), 14:17, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > чтобы простое было писать легко, а сложное - практически невозможно.

    Сорри, но слышится ка - "Хочу белое, но что бы было черное"

    > Иначе будет очередной питон или php.

    А чем пых не угодил, писать легко, документация ИМХО одна из лучших. Если скомпилировать статически и ужать upx-ом, так по современным меркам 12мег вообще ничто.

    > В шеле - всё, что связано с кавычками - самый яркий пример,
    > ну и то, что всё тащим через строки и, соответственно, по
    > типам никакого контроля.

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

    Надо простое но с типами, ну так tinycc или еще лучше chibicc, 8 kilobytes и будет работать везде

     
     
  • 8.113, Crazy Alex (ok), 17:05, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    как раз запрос простое легко, а сложное - невозможно реализуется автоматом есл... большой текст свёрнут, показать
     
     
  • 9.124, Cradle (?), 18:49, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот на полке стоит книжка Вирта по Оберону, там вся грамматика языка на две с по... текст свёрнут, показать
     
  • 9.128, OpenEcho (?), 20:28, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Т е вы хотите сказать что за пол века люди так и не придумали то, что вам надо ... большой текст свёрнут, показать
     
     
  • 10.134, Crazy Alex (ok), 01:42, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не Подход бери подходящее подмножество и не парься работает для профеесиональ... большой текст свёрнут, показать
     
     
  • 11.137, OpenEcho (?), 11:32, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кажется, я начинаю понимать в какую сторону ветер Для такой аудитории придумали... большой текст свёрнут, показать
     
     
  • 12.152, Crazy Alex (ok), 20:44, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да-да, правильно всё поняли Вот в моём понимании всякие эмбедные язычки как вот... большой текст свёрнут, показать
     
     
  • 13.158, OpenEcho (?), 15:23, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я с вами полностью согласен, что поначалу - дико, особено если в програмирование... большой текст свёрнут, показать
     
  • 5.71, Аноним (71), 11:12, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Tcl. Проще некуда, типы добавляются расширением, классический язык конфигурации и настройки. Иногда не нужно изобретать велосипеды, когда есть готовое, отлаженное решение.
     
     
  • 6.75, Crazy Alex (ok), 12:16, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Сильно инопланетный. По идее нужно что-то такое, что будет понятно любому, кто в школе if-then-else учил.
     
     
  • 7.95, Урри (ok), 14:16, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну так и используй Паскаль. Что мешает?
    Есть все, что ты хотел.
     
     
  • 8.108, Аноним (87), 15:19, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    То что он в школе учил basic, наверное ... текст свёрнут, показать
     
  • 8.111, Crazy Alex (ok), 16:49, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Паскаль как скриптовый язык - уж больно странная идея, не находите А если серьё... текст свёрнут, показать
     
     
  • 9.129, OpenEcho (?), 20:39, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так это же bin dash Или возьмите то же awk, вполне приличный язык для зада... текст свёрнут, показать
     
     
  • 10.135, Crazy Alex (ok), 01:53, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Идеи одна другой краше Я о читабельности и предельной понятности фактически - ... текст свёрнут, показать
     
     
  • 11.138, OpenEcho (?), 11:51, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А что awk У него кстати попроще будет семантика и нет жестких ограничений с обя... текст свёрнут, показать
     
     
  • 12.151, Crazy Alex (ok), 20:30, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Насчёт авка и шелла - сорри, но тут какое-то принципиальное непонимание вы на м... текст свёрнут, показать
     
     
  • 13.157, OpenEcho (?), 15:08, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное мы из разных сословий Подучите awk и вы поймете, насколько он сил... текст свёрнут, показать
     
  • 9.141, Урри (ok), 13:20, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нахожу Но он полностью соответствует озвученным критериям выше -- Лично я паск... текст свёрнут, показать
     
  • 7.132, Аноним (71), 23:05, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда Squirell - простой, Си-подобный, встраиваемый аналог Lua.
     
     
  • 8.136, Crazy Alex (ok), 01:56, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Из описания dynamic typing delegation classes inheritance higher order functi... текст свёрнут, показать
     
     
  • 9.139, OpenEcho (?), 11:56, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чуть выше вы хотели классы , теперь - нет ... текст свёрнут, показать
     
     
  • 10.150, Crazy Alex (ok), 20:22, 27/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я говорил о наследовании, а не о классах Класс в минимальном виде - то есть стр... текст свёрнут, показать
     
     
  • 11.154, PnD (??), 11:51, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    У меня такое ощущение что Вы подгоняете решение под ответ go Но в скриптовые... текст свёрнут, показать
     
     
  • 12.156, OpenEcho (?), 14:54, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В одной хорошо известной конторе в европе, эту проблему решили жестко и просто ... текст свёрнут, показать
     
  • 11.155, OpenEcho (?), 14:37, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем такая кастрация Это и не нормальный ООП и не нормальный простой инструм... текст свёрнут, показать
     
     
  • 12.160, Annoynimous (?), 18:08, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вообще - это и не классы Это нормальный Си или Паскаль -D В Си это называет... текст свёрнут, показать
     
     
  • 13.162, OpenEcho (?), 18:13, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    О чем и разговор, - это просто абстракции, т к под капотом, ЦПУ понятия не имее... текст свёрнут, показать
     
  • 6.88, Аноним (83), 13:12, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >Tcl

    RMS его не одобрил. Guile рекомендовал.

     
     
  • 7.131, Аноним (71), 23:00, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    По политическим причинам, а еще подозреваю из-за NIH. Вместо него породили Bash. Guile - диалект Lisp со всеми плюсами и минусами, но да, его тоже посоветую для настроек и несложных скриптов.
     
     
  • 8.161, Annoynimous (?), 18:12, 28/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    тогда, если guile - то ещё и nix наверное а вокруг их использования, как языков... текст свёрнут, показать
     

     ....большая нить свёрнута, показать (102)

  • 1.27, Аноним (26), 23:18, 25/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >вместо ранее применяемого движка Mozilla Gecko

    Gecko - это браузер. Движок - это SpiderMonkey.

     
     
  • 2.30, Аноним (26), 23:24, 25/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    *JS-движок
     

  • 1.31, Генри Форд (?), 23:26, 25/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Реально? В системных компонентах линукса крутится JavaScript?

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

     
     
  • 2.34, Аноним (21), 01:04, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    в нгинксе комплекс секьюрити чеки можно делать через njs
    в бровзерах помнится бывали PAC-скрипты, возвращающие адрес прокси-сервера по урлу страницы

    Но здесь нельзя. Никак нельзя. Это другое. Ни в коем случае. Не-не-не. Вам не понять.

     
     
  • 3.40, Crazy Alex (ok), 01:52, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Между "можно делать" и "засунули по умолчанию" очень большая дистанция.
     
  • 3.67, john_erohin (?), 11:01, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > бровзерах помнится бывали PAC-скрипты, возвращающие адрес прокси-сервера по урлу страницы

    да, бывали. они больше не будут. мерзкое было изобретение.

    wpad IN A 127.0.0.1

     
  • 2.41, Crazy Alex (ok), 01:53, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это не "системные компоненты". Это так, один из возможных вариантов обвязок, хоть и очень распространённый.
     
  • 2.45, Аноним (45), 03:37, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Все спасет. Выкинуть "==" и допилить нормально систему типов и базовую библиотеку будет вполне нормальный язык. А прикрутить LLVM и компиляцию, так вообще сказка будет, но это уже скорее для TypeScript работенка.
     

  • 1.42, deeaitch (ok), 02:05, 26/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хорошая новость. Полезная информация. Всегда было на него плевать и не нужен был в embedded его функционал вообще не нужен (нет таких задач, всё жёстко завязано), а если где в сестеме и был (например на ноуте), я его не замечал. Теперь знаю что там внутри. Полезно, познавательно.

    Это реальность. К сожалению.

    Всем изветсно качество кода на javascript, не потому что он плохой, потому что там много зелёной школоты. Доказательством тому ежедневные сотни замечательных вещей в npm и прочих около javascript штуках. И проблема не в памяти как считают некоторые секты. К сожалению это реальность. И реальность такова что основные сейчас в Linux это дети из мира javascript.

    Ну как есть. По крайней мере этот движок легче. Только те кто приписывает это к embedded, ребята, не позорьтесь. Календарьчик в телефоне на javascript для mail.ru это ещё не embedded. Да и вообще не embedded.

    Но хоть стал легче. Может когда придут к более здравому решению. Опыт одной крупной компании уже доказал, что javascript в embedded (по крайней мере automotive) не место. Но дороги назад нет и они спешно делают велосипеды.

    Учитесь на чужих ошибках, не повторяйте их. Удачи.

     
     
  • 2.97, Урри (ok), 14:17, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Всем изветсно качество кода на javascript, не потому что он плохой, потому что там много зелёной школоты.

    Нет. Именно потому, что он плохой.

     

  • 1.68, хрю (?), 11:04, 26/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не совсем понятно - в polkit js примитивный донельзя и по идее там любой js двиг. подойдёт. Про duktape встречал несколько упоминаний, что его можно использовать с polkit. Или тут именно вкомпилировать его в сам polkit?
     
     
  • 2.78, . (?), 12:29, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > и по идее там любой js двиг. подойдёт

    и много ты их знаешь, "любых"?

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

    Да и задача "сделать как в венде!" такого не предполагает.

     

  • 1.72, Ordu (ok), 11:23, 26/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Забавно вышло. Почитал новость: https://arstechnica.com/information-technology/2022/01/a-bug-lurking-for-12-ye

    Зашёл на опеннет полюбоваться cpaчем вокруг неё. А тут cpaчик по поводу того, что polkit js-движок встраивает. До обсуждения 0day ещё даже не дошло.

     
     
  • 2.74, Аноним (20), 12:11, 26/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    По мотивам новая новость. Там будет весь срачик по этому поводу.
     

  • 1.89, Аноним (89), 13:15, 26/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Язык JavaScript в Polkit используется для определения правил доступа, которые взаимодействуют с привилегированным фоновым процессом polkitd при помощи объекта "polkit".

    Дискретного контроля прав доступа вполне хватает. Настройте DAC в дистрах и не изврасчайтесь с JavaScript.

    Какой самый удобный формат для написания и просмотра правил контроля доступа?
    https://www.linux.org.ru/forum/security/15600248?cid=15622030

    systemd, dbus, polkitd+JS не нужны совсем:
    https://www.linux.org.ru/forum/security/15600248?cid=15620606
    https://www.linux.org.ru/forum/security/15600248?cid=15600880
    https://www.linux.org.ru/forum/security/15600248?cid=15600757
    https://www.linux.org.ru/forum/security/15600248?cid=15600633

     
  • 1.165, arisu (ok), 17:41, 29/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    и сразу соседняя новость: «Критическая уязвимость в PolKit, позволяющая получить root-доступ в большинстве дистрибутивов Linux». ой. как так-то?..
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру