1. Куча / Говнокод #26838

    +1

    1. 1
    Бесконечный оффтоп имени Борманда #4

    #1: https://govnokod.ru/25864 https://govnokod.xyz/_25864
    #2: https://govnokod.ru/25921 https://govnokod.xyz/_25921
    #3: https://govnokod.ru/26544 https://govnokod.xyz/_26544

    Запостил: nepeKamHblu_nemyx, 03 Августа 2020

    Комментарии (428) RSS

    • Добрый вечер.

      Этот оффтоп сгенерирован автоматически.
      Индекс оффтопов: https://index.gcode.space/.
      Зеркала Говнокода и полезные ресурсы:
      * https://govnokod.xyz/
      * https://gcode.space/
      * @GovnokodBot в «Telegram»
      Ответить
    • Перекатный петух заработал. Сейчас инженерный отдел занимается публикацией перекатного петуха на удалённый сервер.
      Ответить
      • А если продолжать писать в старый тред, он будет напоминать о перекате?
        Ответить
        • Нет, он не настолько умный.
          Ответить
          • Пока просто перекатывает оффтопы длиннее 400?
            Ответить
            • Подтверждаю.

              Тем временем, перекатный петух запущен на удалённом сервере, проверка на оффтопы будет происходить раз в час.
              В ближайшие дни инженерный отдел закончит очистку кода и выдавит его на «Гитхаб».
              Ответить
              • Кстати, а как он треды читает? Напрямую или через говнокод.космос?
                Ответить
                • В космосе спрашивает, чтобы лишний раз не грузить ГК (оффтопы-то обычно тяжёлые). Проверяет последний оффтоп из каждой категории на предмет наличия четырёх сотен комментов через https://gcode.space/api/posts_info/26833,26836.
                  Ответить
                  • А какой в этом всём был смысл, кроме твоего спортивного интереса?
                    Ответить
                    • Чтобы мы не грузили слишком большие оффтопы и не клали ГК.
                      Ответить
              • > на гитхаб

                Опасный инструмент так то, если в плохие руки попадёт. Но установка тензорфлоу - достаточный барьер, наверное.
                Ответить
                • Борманд, какими ты пользовался тулзами для код ревью, кроме гитхаба?
                  Ответить
                • Распознавалка капчи вынесена в отдельный сервис, с пользователями и авторизацией, перекатный петух его дёргает.
                  Ответить
                  • А автокомплит для пользователей в поиске скоро будет?
                    Ответить
                    • Сегодня вечером попытаемся что-то наговнякать, но у нашего инженерного отдела от фронта очень сильно пригорает, трудно работать.
                      Ответить
                      • Наймите фронтендера. Могу 1024-- порекомендовать.
                        Ответить
                        • 1024-- вроде писал, что с фреймворками особо не работал.

                          Я так понимаю, что у госта проблема с отображением списка.
                          Ответить
                          • Да ладно, даже я директивы для ангуляра писал. Так что опытный жсник без проблем справится.
                            Ответить
                            • >даже я директивы для ангуляра писал
                              Подтверждаю.

                              Другое дело что в ангуляре нет из коробки ui-плюшек и готовых компонент.
                              *(Может уже и есть)
                              Ответить
                              • Ну блин, неужели никто ещё такой очевидный плагин не написал? На крайний случай из жыквери можно спиздить да в директиву завернуть, лол.
                                Ответить
                                • >На крайний случай из жыквери можно спиздить да в директиву завернуть, лол.

                                  См. ниже.

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

                              https://www.npmjs.com/package/angular-ng-autocomplete
                              Ответить
                              • Ну что-то госту готовые не понравились.
                                Ответить
                                • >npmjs.com
                                  >pethu
                                  >isTen

                                  Просто он не понаслышке знает какого какчества модули на npm
                                  Ответить
                                  • > pethu

                                    Пользуясь случаем, прорекламирую свой сайт: https://pethu.ru/
                                    Ответить
                      • Инженерный отдел начал пилить прототип, вроде получается. Посмотрим, как дальше пойдёт.

                        На самом деле не пилить, а пиздить, кто в конце угадает, с какого сайта — тому нихуя.
                        Ответить
                        • надеюсь, с qaru.site?
                          Ответить
                        • С главной Гугла?
                          Ответить
                          • Г разве на нагуляре?
                            Ответить
                            • Так если гост пилит свой компонент, то он туда может что угодно вставить
                              Ответить
                            • Логику инженерный отдел спокойно сам запилить может, там делов на несколько десятков строк ЙАЖАсцрипта максимум. Инженерный отдел горит от вёрстки.
                              Ответить
                              • Вот чё нашёл.

                                https://material.angularjs.org/latest/demo/autocomplete

                                Для первого ангуляра.

                                Ебать, а я когда-то как лошара скильная сам писал директивы.
                                Ответить
                                • Это другой «Ангуляр», материальный.
                                  Ответить
                                  • Не понял.
                                    Там вроде первый нагуляр, как и в НГК.Пространстве

                                    Просто ещё пару js подключить и лолжно работать.
                                    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.0/angular.min.js"></script>
                                      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.0/angular-animate.min.js"></script>
                                      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.0/angular-route.min.js"></script>
                                      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.0/angular-aria.min.js"></script>
                                      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.0/angular-messages.min.js"></script>
                                      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
                                    
                                      <script src="angular-material.min.js"></script>
                                      <script src="docs.js"></script>
                                      <script src="docs-demo-scripts.js"></script>
                                    Ответить
                                    • А, понял, я думал это два разных «Ангуляра».

                                      Не, пошли они нахуй, я не буду грузить сорок два мегабайта скриптов чтобы отрисовать простой список.
                                      Ответить
                                      • Ну там 400к и 100к gzipped.

                                        > не буду грузить сорок два мегабайта скриптов чтобы отрисовать простой список

                                        Я тоже так думал, когда велосипедил, но потом нужен ещё какой-то компонент, потом ещё один, итд.

                                        Просто когда я изучал «АнгуларЙС» этой либы ещё не было. А вот оказывается теперь компоненты из коробки.
                                        Ответить
                                        • Наш инженерный отдел очень сильно борется за «TTFB», поэтому загрузка лишних (!) сторонних (!!) скриптов для нас — как серпом по «PHP». Особенно с учётом того, что велосипедный вореант — это двести неминифицированных строчек ЙАЖАСцрипта.
                                          Ответить
                                          • > очень сильно борется за «TTFB»

                                            >document.getElementById('username-input')

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

                                            Лучше бы они альтернативные функции завезли, вместо ecma7 питухов.

                                            >document.getElementById

                                            >element.byId
                                            >element.byName
                                            >element.byTag
                                            >element.byCss
                                            Ответить
                                            • Типичный обфусцированный js-файл начинается с такой питушни:
                                              var i = document.getElementById;
                                              var n = document.getElementByName;
                                              Ответить
                                              • а
                                                var d = document;

                                                ?
                                                Ответить
                                                • Просто подумайте сколько раз js-макаки писали такие бессмертные строки за 20 с лишним лет.
                                                  function ebid(id){return document.getElementById(id);}
                                                  Резиг вообще целый jquery для этого написал.
                                                  Ответить
                                                  • Не поверю, что не существует такого npm-пакета.
                                                    Ответить
          • >он не настолько умный
            Куриные мозги
            Ответить
    • Вчера в 22:04:30 кто-то минуту дёргал «НГК» по ~100 запросов в секунду. Какой багор (((
      Ответить
    • Автокомплит запилен. Работающая модель была готова ещё ночью, но потом инженерный отдел ебанулся на отличненько и решил сделать всё по феншую, с управлением стрелочками и всем таким.

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

      https://github.com/gost-gk/ngk/commit/d2bbc802a1de8152e9545fa069d4557737027486
      Ответить
      • Благодарю.

        С т.з. пользователя всё работает. И это хорошо.

        >но потом инженерный отдел ебанулся на отличненько и решил сделать всё по феншую, с управлением стрелочками и всем таким
        Спасибо! Enter даже переносит фокус.
        Ответить
      • $scope.$on('$destroy', function() {
                infScroll.cancel();
                updateSuggestions.cancel();
                window.removeEventListener('scroll', infScrollListener);
                window.removeEventListener('resize', adjustAutocompletionListPosition);
            });

        Ахахаха. Типично идиоматичный gost.
        Даже в жсухе освобождает ресурсы.
        Ответить
      • case 'ArrowDown': скроллит вниз не только список, но и всю страницу. Выглядит гадко.
        Браузер: ФФ.


        let request = {
                    method: 'GET',
                    url: '/api/autocomplete/user/name/' + encodeURI(username),
                    params: {}
                };
        
                $http(request).then(function(response) {
                    handleNewSuggestions(username, response.data.map(function(user) { return user.name; }));
                });

        А мне нравится $resource.
        https://docs.angularjs.org/api/ngResource/service/$resource

        Если уж объявлять request отдельным объектом, я бы сделал его ресурсом.
        И там формат-стринги есть, чтобы не конкатенировать запрос и не пердолиться с encodeURI.

        Но это так, вкусовщина.
        Ответить
      • В keydownах напрашивается
        event.preventDefault();
        Ответить
        • Спасибо, добавил, теперь вроде как не скроллит.

          > А мне нравится $resource.
          Любопытно, в следующей итерации, скорее всего, заменим.

          Ещё чуть-чуть улучшений добавил, в частности, нормальный ng-repeat с track by comment.id, теперь рендеринг должен быть существенно быстрее (особенно добавление/обновление комментов).
          Ответить
          • Теперь хорошо, да.

            >скорее всего, заменим

            Работает — не трогай!
            Ресурс дико удобен когда на одной ссылке полный crud. И put, и delete, etc.
            Ответить
            • > Работает — не трогай!
              Подтверждаю.
              Ну, если понадобится — заменим.
              Ответить
    • показать все, что скрытоvanished
      Ответить
      • > То-есть где-то есть указатель с адресом региона, где-то есть указатель на него, итд, и в итоге в каком-то потоке в стеке есть указатель, c которого всё начинается.
        Очень вряд ли. Так можно попробовать найти владельца памяти, но кто её выделил — останется загадкой. В любом случае, искать уко-ко-козатели в дампе приложения сложнее «puts("Hello World!")» — задача для очень крутых хакеров с очень большим количеством свободного времени. Либо для каких-то очень хитрых утилит.

        > Как бы вы потрекали high memory usage на удаленном виндохосте?
        Я бы запилил кастомный аллокатор с тегами а-ля ядерный https://techcommunity.microsoft.com/t5/ask-the-performance-team/an-introduction-to-pool-tags/ba-p/372983, но я в этом деле не специалист. Возможно, для этого есть более подходящие специализированные решения, вроде упомянутого «UMDH».
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • > Разве что почитать эту память, и попытаться понять по её содержимому.
            Да, это наиболее просто (но и наименее надёжно). Если там в куче валяется дохуя «89 50 4e 47 0d 0a 1a 0a», к примеру, то это будет весьма полезное подсказкой.
            Ответить
          • > в куче всегда видны классы объектов

            В крестах тоже на самом деле. По таблице виртуальных методов очень легко узнать класс если символы есть. Но мелочь без виртуальных методов так не опознать.

            Кстати в студии есть heap profiler. По крайней мере на живом процессе, х.з. как там с дампами.
            Ответить
      • Здравствуйте. Это форум десктоп разработчиков под винду?
        Ответить
    • Редирект с gcode-xp.space на gcode.space установлен.
      Ответить
    • Перекатный петух теперь регулярно проверяет оффтопы на ваниш (1 раз в час, перерыв между запросами — 5 секунд) и будет перекатывать, если последний оффтоп заванишен (да, сообщение о перекате отправится в ваниш). Нагрузки на ГК удалось избежать благодаря применению параметра «?format=ajax», который позволяет полностью избежать загрузки комментариев.
      Ответить
      • какой скилл
        Ответить
      • На https://index.gcode.space/ (UPD: напоминаю о существовании API https://index.gcode.space/api/index, если кому надо) показания ваниша актуализированы (кроме первых двух хрю больше ничего не исчезло).
        Ответить
    • Домен gcode.space продлён. gcode-xp.space отправится в лучший мир 23-го сентября сего года.
      Ответить
      • Спасибо.
        Ответить
      • Как думаешь, Сёме удалось звести новую машину с десяткой или что-то пошло не так и он пытается зайти через XP?
        Ответить
    • показать все, что скрытоvanished
      Ответить
    • Добавили ссылку на индекс.
      Инженерный отдел несколько проебался: мало того, что пришлось выкатывать мелкий кусок от будущего коммита с синхронизацией настроек (БД уже мигрировали), так ещё и на проде внезапно оказались какие-то старые изменения, которых на локальной машине не было. Какой багор (((
      Ответить
      • > которых на локальной машине не было

        Именно поэтому я коммитил из одной точки - прямо с прода.

        Какой анскилл )))
        Ответить
        • Какой анскилл )))

          Сейчас у инженерного отдела исходники «НГК» автоматически заливаются по «FTP» «SFTP» на отдельный дев-инстанс сразу после сохранения, можно в лайв-режиме смотреть изменения (правда, надо «Development Mode» в «Cloudflare» включать). Потом, когда всё начинает работать, с локальной машины коммитим в «Гитхаб» и с прода пуллим. Почти гринбля!
          Ответить
          • Ну это не гринбля, это обычный стейджинг.
            Ответить
          • >и с прода пуллим
            фу таким быть

            лучше помечай тагом стабильный коммит (или лучше даже бранчуй его) и тяни с прода конкретный таг или бранч
            Ответить
    • Перекат заванишенных оффтопов временно приостановлен.
      Ответить
    • psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "1;"
      LINE 3: WHERE comments.comment_id = '1;' ORDER BY comments.posted DE...
                                          ^
                                          
      psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "1;--"
      LINE 3: WHERE comments.comment_id = '1;--' ORDER BY comments.posted ...
                                          ^
                                          
      psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "1';--"
      LINE 3: WHERE comments.comment_id = '1'';--' ORDER BY comments.poste...
                                          ^
                                          
      sqlalchemy.exc.DataError: (psycopg2.errors.InvalidTextRepresentation) invalid input syntax for type integer: "1';--"
      LINE 3: WHERE comments.comment_id = '1'';--' ORDER BY comments.poste...
                                          ^
                                          
      psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "1";--"
      LINE 3: WHERE comments.comment_id = '1";--' ORDER BY comments.posted...
                                          ^

      Уважаемые! Если вам нужен дамп базы «NGK» — скачайте его в разделе «дампы», не нужно засирать логи, пожалуйста.
      Ответить
      • Да это поди ботнет какой-нибудь типичные уязвимости сканит?

        Зачем нгк пытаться сломать, там же нет никакой персональной инфы.
        Ответить
        • айпишник проверьте, ну

          если там китай, то это тчоно не мы
          Ответить
      • Хрюкалку заело
        Ответить
      • Так не смотри логи и всё.
        Ответить
      • пожалуйста, скажи, что ты не суваешь говно из гет запроса прямо в алчеми. Если там нужно число, то ты же дешаешь int(), верно?
        Ответить
        • А в чём проблема? Postgres не sqlite, с типами вполне разбирается.
          Ответить
          • а зачем слать в базу заведомое говно?
            Кстати, ORM разве не должен это сам исправлять? Я в алчеми не очень, но кажется что джангоорм такого бы не позволил
            Ответить
            • Ну до психосвиньи2 дошли эти '1";--', значит ORM сам не поправил.
              Ответить
              • Вот я и удивился)

                в джанго бы так не получилось. Там тип отсекли бы сразу после GET, и в ORM пришел бы уже инт
                ну и ORM бы его проверил)

                А в таком вот решении, где говнецо идет сразу в базу, я чувствую тонкие нотки PHP.
                Ответить
                • Ну возможно я в модели недоспецифировал что-то, поэтому ORM пропускает. А с другой стороны в базе все эти констрейнты уже есть, зачем 2 раза проверять?
                  Ответить
                  • а во фляшке незя
                    @app.route('/<id:int>')
                    def my_view_func(id):
                        # ...
                    Ответить
                • Дык оно в базу и не идёт, его драйвер нахуй посылает.

                  > @app.route('/<id:int>')
                  Можно, я в новых API так и делаю, но у /api/comments id через GET-параметр принимается, его, насколько я знаю, только ручками надо проверять.
                  Ответить
                  • >LINE 3: WHERE comments.comment_id
                    это точно драйвер, а не база?

                    ну в любом случае лучше бы это фиксть на уровне GET или ОРМ кму
                    Ответить
                    • Погуглил, действительно, это база плюётся (https://www.psycopg.org/docs/errors.html).

                      Ну и ладно, похуй.
                      Ответить
                      • нет, не опхуй
                        втыкни там int()
                        Ответить
                        • Ой, бля, это ещё ошибки обрабатывать, ответ какой-то посылать*… Нахуй, пусть лучше так остаётся.

                          * Там пользовательский ввод нигде не проверяется, в случае ошибки просто отдаётся стандартный фласковский 500.
                          Ответить
                          • 500 и запись в логи про Int() в 925 раз луше чем 500 и запись в логи про ошибку вбазе
                            имхо
                            Ответить
                • Что значит отсекли?
                  Это повод вернуть сразу еггог 400, а не заниматься отсечением
                  Ответить
                  • это значит, что либо аргумент кастится в int, и дальше идет как int, либо пользователю возвращается ошибка, если аргумент в инт не кастится
                    Ответить
                    • По-моему вы сейчас об одном и том же.

                      Если там число, то сразу кастануть в int.
                      Если там мусор, то сразу вернуть 400.
                      Ответить
                      • В "PHP" для проверки на число есть замечательная функция "is_numeric". А что есть в том языке, на котором написан "сток"?
                        Ответить
                      • Мне показалось, что "42pitux" надо скастить в 42 и продолжить, это и есть "отсечь"

                        Но если мы об одном и том же, то ладно.
                        Ответить
    • Дампы каждой страницы поста с ГК, которые гостовский «НГК» загружал на протяжении всей своей работы (с 25-го сентября 2019-го года). Внутри архива — по одному архиву на каждый день до апреля сего года и общий архив с остальными дампами.
      В распакованном виде — что-то около 20-25 гигабайт.

      https://www.dropbox.com/s/7yr0r22lfzd3tf6/dumps.rar?dl=0
      Ответить
      • Какая бигдата )))

        После дедупликации поди метров до 100 без архива ужмётся.
        Ответить
        • ой блять не напоминай
          сижу как раз разбираюсь в TSDB (графит, инфлюкс) и колоночными БД над ними (кликхаус, друид)
          чтобы какое-то собственное мнение составить
          Ответить
        • >После дедупликации
          после удаления постов про нигерийские хуйцы
          Ответить
      • У наших отделов тяжёлый период уже полтора месяцев каждый период был трудным, поэтому сторонние работы затягиваются. Приносим извинения за доставленные неудобства.
        Ответить
    • Инженерный отдел сделал прототип БД и переписал под неё парсеры, сейчас парсит дампы для тестового отдела: https://i.imgur.com/1CqAfMU.png. На очереди:
      1) Допиливание напильником БД (включая индексы);
      2) Автоматизация парсеров (в идеале выкинем «sync_states», будем всё гонять по «redis» и течь);
      3) Перепиливание API под новую схему.
      Ответить
      • У тебя, наверно, свободного времени валом?.. Если да, то я тебе завидую.
        Ответить
      • Ускорили парсинг в ~70 раз: из-за слишком глобальных xpath-ов («.//element» — рекурсивный поиск всех элементов в нижележащих узлах) там получалося O(N^2), и на особенно крупных тредах всё вставало раком (1367 комментов парсились больше минуты).
        Ответить
        • >.//element
          нельзя так делать, это любой XML птиух знает.

          А что, вы еще не наладили нормальный экспорт без парсинга говна?
          Ответить
          • Как только Страйко сделает API с джейсонами — так сразу и наладим. А пока приходится городить говно:
            def _parse_comments(comments_node: lxml.etree._Element) -> List[ParsedComment]:
                comments: List[ParsedComment] = []
            
                comment_nodes: List[Tuple[Optional[int], Any]] = [(None, c) for c in comments_node.xpath('./li[@class="hcomment"]')]
                while len(comment_nodes) > 0:
                    parent_id, comment_node = comment_nodes.pop()
                    
                    comment_wrapper = comment_node.xpath('./div[@class="entry-comment-wrapper"]')[0]
                    comment_link = comment_wrapper.xpath('./p[@class="entry-info"]/a[@class="comment-link"]')[0]
                    m = re.search('govnokod\\.ru/(\d+)#comment(\d+)$', comment_link.get('href', ''))
                    if m is None:
                        raise ValueError('Invalid comment-link (no regex match)')
                    post_id = int(m.group(1))
                    comment_id = int(m.group(2))
                    comments.append(_parse_comment_node(comment_wrapper, post_id, comment_id, parent_id))
            
                    for node in comment_node.xpath('./ul/li[@class="hcomment"]'):
                        comment_nodes.append((comment_id, node))
            
                return comments
            Ответить
            • на вкус как земля, конечно

              не твой код, а сама задача
              Ответить
              • Подтверждаю. Я заебался пытаться давать осмысленные имена всем этим врапперам, нодам и улам.
                Ответить
                • Хорошо что разметка стабильна и десятилетиями не менялась.
                  Ответить
                • В начале нулевых глупые переусложнятели мечтали, что все сайты будут на XML, который будет преврашаться в UI посредством XSL.

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

                  Теперь кушают
                  Ответить
            • > 'govnokod\\.ru/(\d+)#comment(\d+)$'
              Какая-то плохая питушня вроде трусов и крестика. Тут бы либо так, либо так:
              r'govnokod\.ru/(\d+)#comment(\d+)$'
              'govnokod\\.ru/(\\d+)#comment(\\d+)$'
              Ответить
              • И правда питушня, хуй знает, почему она работала.
                Ответить
              • Откуда такая любовь к регуляркам? В роду были регулировщицы?

                https://www.youtube.com/watch?v=fsSbZpDBH8I
                Ответить
            • Обрати внимание на классы со странными названиями «hatom», «hentry». Это он пытался реализовать микроформат:

              http://microformats.org/wiki/hatom

              Есть готовые библиотеки для работы с микроформатами.

              На новых сайтах микроформаты уступили место «RDFa» (XHTML) и «микроданным» (HTML, атрибуты itemscope, itemtype, itemprop), но «Говнокод» застрял в 2008-м.

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

              https://en.wikipedia.org/wiki/Microdata_(HTML)
              Ответить
              • P.S. Да, попрошу не путать «microformats» с «microformats2». Могут и напутать. В «microformats» класс «hentry», а в «microformats2» класс «h-entry».

                Реальный пример пакета для «Питона»:
                https://pypi.org/project/hentry/
                Ответить
                • А кто их реально парсит? Гуглы да яндексы всякие чтобы в результатах красиво показать?
                  Ответить
                  • Так точно. У них даже в хелпе есть список поддерживаемых форматов.

                    «Яндекс», «Гугл», «Бинг» и даже менее известные поисковики выводят звёздочки (от одной до пяти) у результата поиска, если страница содержит коды разметки «Review».
                    Ответить
                  • Чуть не забыл. Кроме «microformats», «microformats 2.0», «RDFa», «microdata» есть ещё «LD-JSON» — это попытка перевести «RDFa» с языка «XML» на язык «JSON». И да, «Гугл» и «Яндекс» даже кое-что в этом формате вытягивают. Например, адрес компании.

                    P.S. То есть «JSON-LD»:
                    https://ru.wikipedia.org/wiki/JSON-LD
                    Ответить
                  • А ещё на «Говнокоде» есть фейсбуковский «OpenGraph». Представлен единственным элементом:
                    <meta property="og:image" content="http://govnokod.ru/images/brand.gif" />
                    Ответить
                    • А как сделать опенсурсный сайт, кстати?
                      Ответить
                      • Убедиться, что .git попадает под раздачу.
                        Ответить
                      • Сделать исходники доступными из браузера (вроде в "Apache" так можно).
                        Ответить
                        • Знаю историю как питух пхпкод хранил в файле с расширением ``inc``, и подключал его в ``пхп``

                          Ему удалось сделать исходники доступными из браузера
                          Ответить
                        • Раньше было много серверов, настроенных так, что при добавлении тильды к имени (например, index.php~ или guestbook.pl~) скрипт не исполнялся, а отдавался в сыром виде. Фреймворков с роутингом тогда не было.
                          Ответить
                          • Какой багор )))
                            Ответить
                          • А матильда в начале - это тоже из-за этого? http://site.govno/~/knigi/prophp.pdf или как-то так.
                            Ответить
              • Именно поэтому я за "Говнокод".
                Ответить
          • Подтверждаю.
            Ответить
      • Перепилили API, допилили индексы, остались полнотекстовые индексы (самое сложное) и парсеры.
        Ответить
    • Свинокур.

      Ну и, соответственно, свинокурник: пирог такой
      Ответить
      • А свинокурсник – это тот, с кем ты учишься в вузе и ходишь вместе в столовку.
        Ответить
        • А Свинокурск - город, где живёт макака.
          Минус за кормление уёбка въёбан.
          Ответить
    • Есть тут ма-те-ма-ти-ки?

      Допустим, я хочу уравнение окружности, которая лежит на сфере, при этом мне известна точка на сфере и радиус окружности, т.е. длина дуги от точки до границы окружности.

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

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

      Вопрос: я правильно мыслю? У меня получится таким образом получить уравнение окружности на сфере по координате её центра и радиусу?
      Ответить
      • Дайвинчик?
        Кстати, замля плоская, может это как-то можно использовать?
        Ответить
        • > Дайвинчик?

          Возможно..... А как ты угадал?

          > Кстати, замля плоская

          Ты просто низкий и тебе не видно, как она загогуливается у горизонта. Был бы как я — 163см минимум — тоже бы увидел!
          Ответить
      • Иди в вуз там есть аналитическая геометрия
        Ответить
        • > аналитическая

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

          Питушня какая-то.
          Ответить
      • XY-problem? Зачем тебе уравнение окружности?
        Ответить
        • Чтобы потом три такие окружности пересечь и найти прикол. Решать планарную задачу мне не хочется, это анскилл, да ещё и менее точно.
          Ответить
          • Хм, может тебе проще 3 сферы пересечь? Пробовал гуглить такое? 4 могут и не пересечься.
            Ответить
            • Какой багор )))

              И правда! Я об этом думал, но почему-то отбросил такую идею. Сейчас ещё разок погуглил – и поисковик мне показал статью про трилатерацию.

              Как раз туда можно ещё сферическую систему координат прикрутить, скорее всего.
              Ответить
        • Вообще, с точками на сфере лучше работать в сферических координатах.

          Вангую, ты хочешь описать множество точек на определенном расстоянии от заданной. Подумай не как математик, а как программист.
          Перебирай "Зенит", а по нему вычисли какой должен быть "Азимут". (но это не точно, первое что пришло в голову).

          А ещё лучше - перебирай все адреса, и находи те, которые больше всего тебе подходят по расстояниям.
          Ответить
          • > Вообще, с точками на сфере лучше работать в сферических координатах.

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

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

            Три таких множества, чтобы найти их точку пересечения.

            > А ещё лучше - перебирай все адреса

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

              )))))))))
              Блядь, вот так вот! Чтобы поябаться бедные прогромисты должны решить системы нелинейных уравнений, и то не факт, что поябутся.
              Ответить
              • Что-то я ещё ничего не сделал, а уже наябался всласть!

                Кто бы мог подумать, что в самой важной — и к тому же заключительной — части моего плана, в нахождении пересечений кругов/сфер, придётся решать системы нелинейных алгебраических уравнений, для которых нет аналитических методов решения >:С

                У меня есть два вопроса к математикам:

                1. Почему вы ещё не изобрели аналитическое решение систем линейных алгебраических уравнений?

                2. Как вам такая идея ...
                (оформляю в псевдокоде)
                let A[3] = точка с координатами x, y, z.
                let B[3] = точка с координатами x, y, z.
                let C[3] = точка с координатами x, y, z.
                
                let D[3] = расстояния от точек до места прикола.
                
                let rds[3] = радиусы каждой из трёх сфер, описанных вокруг точек A, B, C.
                
                R = радиус планеты «The Mля».
                
                function dist(A, B):
                  // расстояние между точками A и B.
                endfn
                
                for a in 0..90:
                  for b in 0..180:
                    let X[3] // некоторая точка на сфере вокруг точки A.
                    X[0] = A[0] + R * sin(a) * cos(b) // x
                    X[1] = A[1] + R * sin(a) * cos(b) // y
                    X[2] = A[2] + R * cos(a) // z
                
                    if ( dist(X, B) == rds[1] AND dist(X, C) == rds[2] ):
                      echo "Нашли точку, теперь посчитаем и вернём ответ :)"
                      геtuгn result;


                Для перформанса можно перед тем как считать всё, что после X[0..3], проверить X на принадлежность плоскости замли.

                ... ?
                Ответить
                • > для которых нет аналитических методов решения

                  А в этом как раз отличие математика от инженера. Математик безуспешно ищет аналитическое решение, которого для 99.9% интересных задач не существует. А инженер юзает приближённые методы и течёт.
                  Ответить
                  • какая гидрогазодинамика ))) во всех смыслах
                    Ответить
    • Волею судеб приходится ковырять Clojure. Это где к JVM прикрутили динамическую питуизацию и метушню, много метушни.
      :cas (try+
                  (let [[old new] (:value op)]
                    (assoc op :type (if (v/cas! conn "foo" old new)
                                      :ok
                                      :fail)))
                  (catch [:errorCode 100] ex
                    (assoc op :type :fail, :error :not-found)))))


      Какое unholy abomination )))
      Ответить
    • Полина, добавь фильтры по дате в «порыться в говне». Борманд делал, но потёр, пидор
      Ответить
    • Зачем борманд зафорсил на говнокод "ня"?
      Ответить
    • С днём сисадмина, коллеги!
      Ответить
    • Проведено обновление «NGK». Для корректной работы сбросьте кэши.
      Ответить
      • > сбросьте кэши

        Почистите кеш браузером.
        Ответить
      • а ченжлог?
        Ответить
        • Судя по исходникам там какой-то огромный апдейт про северную баню и мочераторов...
          Ответить
        • - Обновлена версия SocketIO (из-за чего и необходимо сбрасывать кэш: старый клиент новый сервер не поддерживает). В новой версии, в частности, убраны кривые куки.
          - Добавлены serverside-баны. Пользователи могут подписываться на «источники» банов (они же «модераторы»), после чего сервер будет проводить фильтрацию комментариев от всех пользователей, «забаненных» в указанных источниках (точно так же, как раньше осуществлялась индивидуальная фильтрация).
          На данный момент существует только один источник (github:gost-gk:gk-denylist), в который автоматически подтягиваются учётные записи уёбков, перечисленные в https://github.com/gost-gk/gk-denylist/blob/master/denylist.hocon .

          Продолжается работа над интерфейсом для «модераторов», через который доверенные (пока что) лица смогут составлять свои списки уёбков.
          Ответить
          • В https://github.com/1024--/govnokod.ru-userscripts/blob/master/nosmegma.user.js список длинней.
            Некоторых питухов забанили, или не все перечислены?
            Ответить
            • Не всех перечислил.
              Смерджил уёбков оттуда, список на сервере обновился автоматически.
              Ответить
          • > denylist

            Какая политкорретность )))
            Ответить
            • а могло бы быть ueboktrap

              (trap в смысле ловушка)
              Ответить
          • > Добавлены serverside-баны. Пользователи могут подписываться на «источники» банов (они же «модераторы»)

            Джва года ждал автообновляемых списков уебков.

            Спасибо.
            Ответить
            • > автообновляемых списков уебков

              Да ещё и в реалтайме по вебсокету!
              Ответить
              • ещё не знает, что уёбок, а уже забанен
                Ответить
              • И чтоб с блокчейном и смузями
                Ответить
              • По вебхукам.
                На каждый пуш в репозиторий «Гитхаб» дёргает «НГК», «НГК» в ответ на это идёт за новой версией списка и обновляет свою базу.
                Ответить
                • А вот ещё такой реквест.

                  // quick and dirty filter agains guest spam
                  // it can reject normal links, but who cares...

                  Там колобок, который дёргается по одному комменту, а мне для advanced-эвристик спама нужно иметь весь массив сразу. Приходится пердолиться, сначала складывать в массив, а потом фильтровать.
                  Ответить
              • И 10 лет не прошло:
                https://govnokod.ru/9835#comment133831
                Ответить
          • а что такое hocon?
            Ответить
            • Это как «JSON» (ЕМНИП, любой «JSON» является валидным «HOCON»), только с комментариями и другими плюшками.
              Ответить
          • > работа над интерфейсом для «модераторов», через который доверенные (пока что) лица смогут составлять свои списки уёбков
            Можно сделать доверенных девелоперами в gk-denylist и разрешить срать в свою ветку. Скажем, bormand занимает ветку bormand или bormandt.
            Ответить
            • Вручную коммитить -- как-то слишком много работы.

              Лучше что-нибудь в духе передачи локального списка на сервер, чтобы в один клик распространялось. Тем более он туда один фиг передаётся.
              Ответить
              • > Лучше что-нибудь в духе передачи локального списка на сервер, чтобы в один клик распространялось. Тем более он туда один фиг передаётся.
                API для этого уже есть, осталось прикрутить интерфейс.
                Штука с «Гитом» сделана в качестве времянки.
                Ответить
              • Я и позабыл, что это фан-проект, с которым весело повозиться.
                Мой вариант - для случая, когда хочется достичь функциональности минимумом кода.
                Ответить
                • Ну вот тебе хочется собирать список уёбков, а потом идти коммитить его на гитхаб?

                  Это пиздец непрактично.
                  Ответить
                  • Я (1024--) так уже сделал.

                    Я не против удобных интерфейсов, я только за. Но как пользователь.
                    А как программист я бы по умолчанию сделал пердольную питушню с консолечкой, а в новых версиях бы упрощал UI/UX.

                    Кстати, скрипту для навигации в этом году исполнилось 7 лет, а я так и не добавил нормальные поля ввода настроек, которые просил Сёма.
                    Первый коммит: https://github.com/1024--/govnokod.ru-userscripts/commit/fe4c9c16b93921af6f2c9164d50f5cd22ef7329a #diff-3251f343ece2739495513f439366ba904941dd48 814b89044ca7806e288dae4b
                    Потому, что один раз настроил и забыл. Делать форму для одноразовой питушни очень лень.
                    Ответить
                    • Ну тут реализация отправки не выглядит особо сложной: получить список да вставить в базу. С аутентификацией разве что будут заморочки, возможно.
                      Ответить
                      • Я же говорю — на бэке всё готово. Можно хоть сейчас слать запрос на /api/mod/ban/8086,100500 — только предварительно нужно сгенерировать подпись приватным ключом, публичная пара к которому лежит в базе.
                        Ответить
                        • А зачем интерфейс? Чисто для указания ключа?

                          Отправка же автоматическая будет, сразу после клика в крестик?
                          Ответить
                          • > Чисто для указания ключа?
                            Для указания ключа и создания подписи.

                            > Отправка же автоматическая будет, сразу после клика в крестик?
                            Скорее всего. Над разбаном нужно будет подумать отдельно: придётся делать отдельную табличку «мои серверные баны», в которой можно будет ими управлять.
                            Ответить
                            • А зачем разделять серверные и локальные? Просто сливать локальный список на сервер при любом изменении (и бан через крестик и разбан через уже существующий интерфейс).

                              Ну и возможно для удобства скачивать с сервера, если локальный старее и вбит известный ключ.
                              Ответить
                              • Чтобы была возможность не включать фильтрацию локально.

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

                                  Может просто переключатель "фильтрованное / не фильтрованное"? Чтобы и списки и подписки не трогать, если хочется отключить.
                                  Ответить
                                • > генерации подписи

                                  Можно начать просто с уникального токена. У тебя один фиг https. Раздать токены "доверенным" не особо сложно.
                                  Ответить
                                • > в генерации подписи, инженерный отдел занимается этим вопросов
                                  Не слишком ли сложно?

                                  По-моему и так всё заебись.
                                  Ответить
                                • А списки будут суммироваться?

                                  Ну, скажем, кто-то из авторов сказал "ня, пока" и выпилился с ГК на несколько месяцев, как это обычно бывает. У него был хороший список, а у молодых и активных есть свежие багры, но старых нет.
                                  Ответить
                                  • Конечно. Можно задавать произвольное количество списков, фильтроваться будут все пользователи из них (возможно, в будущем подумаем над белыми списками).
                                    Ответить
                      • Я бы сделал простую страницу со вводом ника (допустим, 1024--) и сохранением его в localStorage.
                        На странице бы отображался этот умный JSON с питухами из localStorages.irnoredUsers в textarea (на нём focus) и ссылка вида https://github.com/gost-gk/gk-denylist/edit/1024--/denylist.hocon.

                        Всё, открываешь страницу с забаненными питухами, делаешь Ctrl+A, Ctrl+C, клик по ссылке, Ctrl+A, Ctrl+V, клик по кнопке сохранения.

                        И не пердолиться с API и authушнёй, только добавить загрузку с ГХ.
                        Ответить
                        • > https://github.com/gost-gk/gk-denylist/edit/1024--/denylist.hocon
                          Насколько я знаю, без большого пердолинга не получится разрешить отдельному юзеру доступ только к одной ветке репозитория.
                          Ответить
                          • Жаль. Видимо, можно только создать питухов, которые вместе срут везде, кроме мастера.

                            Ну тогда открывать интерфейс редактирования в форке:
                            https://github.com/1024--/gk-denylist/edit/master/denylist.hocon

                            Или при форке хуки просрутся? Какой багор )))
                            Ответить
                            • В хуке забит секрет, которым подписывается сообщение от «Гитхаба». «НГК» проверяет подпись и идёт обновлять список по URL, лежащему в БД (https://raw.githubusercontent.com/gost-gk/gk-denylist/master/denylist.hocon).
                              Ответить
                              • А, то есть если генерировать секрет и возрождать хук не сложнее, чем Ваша планируемая authушня, то можно сделать вореант с гитхабом.
                                Ответить
          • В древнем «Palemoon» комментарии на главной отображаются, а в древнем «Хроме» — нет. // не холивар
            Ответить
          • > доверенные (пока что)

            Какой тлен и безысходность )))

            В конце-концов все там будем?
            Ответить
            • В конце-концов планируется сделать «регистрацию» публичной/автоматической, но для этого надо придумать механизм защиты от спама.
              Ответить
              • по ssh
                Ответить
              • Кстати, отправил тебе и «Хацтехбке» список разгаданных е-мейлов. Можете поиграть в статистику и в классификацию.
                Ответить
                • Спасибо, скачала. Интересное название у первого файла. Прямо как один известный сайт.

                  P.S. Я Настенька!
                  Ответить
                  • Тебя там так и не разбанили?
                    Ответить
                    • Нет. Даже с IP из другой /24 получил, но всё равно закрыто.
                      Хотя, судя по петуху, МТС/16 не забанена целиком.
                      Ответить
                      • Ну видимо ты со своей дос-атакой загрузкой комментов засветился в логах и попал под руку как подозрительно часто встречающийся айпишник...

                        У тебя же там скрипт походу без задержек ебашит?
                        Ответить
                        • У меня с задержками. Я секунду-две ставил, когда качал.
                          Но всё равно запросов наверно вышло больше, чем у доктора Смегмы. Он вроде бы просто раз в 6 минут сток засирал.
                          Ответить
                      • Наши с тобой айпишники равны с точностью до /16. Поэтому скорее всего он ёбнул её. Он что, не посмотрел, что это МТС?
                        Ответить
                        • А петух нас разыграл? Почему у него работает?
                          Ответить
                          • Я не успеваю читать весь говнокод. Где он писал?
                            Ответить
                          • Петух, у тебя 213.87 ?
                            Ответить
                            • Тут писал: https://govnokod.xyz/_27610/#comment-652660
                              Да, у него 213.87
                              Ответить
                              • Написал тоже виистрайкеру. Может тебе он не верит, а мне поверит, т.к. по моей просьбе он забанил по ip, а значит я вряд ли уёбок.
                                Ответить
                                • Т.е. получается ты себя забанил по айпи?

                                  Какой багор )))
                                  Ответить
                                • Может, наоборот. Читает он письмо, а там какой-то няк мтсный просит забанить честного доктора Смегму. И забанил няка мтсного.

                                  > тебе он не верит
                                  А я вообще номерной, кто мне поверит.
                                  Ответить
                                  • Да он поди полез в лог проверить, и действительно нашёл там стертора, а рядом в соседних строчках увидел запросы от 1024--. Вот и хуйнул всю сетку недолго думая. Вроде всё сходится.
                                    Ответить
                                    • Много GETов: DDOS.

                                      Вот Persecutor Senator накрыл всё кодло: и срунов и дыдосеров.
                                      Ответить
                                      • > Много GETов: DDOS

                                        Тем более сайт действительно лагал как говно. Возможно доктор его тоже ддосил за компанию.
                                        Ответить
                                        • Так блядь. Может сайт лагал из-за 1023, а не Стертора? Теперь понятно почему меня зацепило. Только у меня ещё и рабочий IP зацепило.
                                          Ответить
                                          • Я закончил качать 24 августа в 23 по GMT. Вот скрипт выдал:
                                            https://gist.github.com/1024--/13fe424ec0f31d9a870678d85fec93e8

                                            У Борманда лагало утром 25 числа, а потом он писал, что исправилось: https://govnokod.ru/27615#comment663232

                                            Если у Борманда лагало до 6 утра по GMT+7, приношу свои извинения ГК и Иньо.
                                            Ответить
                                  • > https://github.com/wiistriker/govnokod.ru/issues/57
                                    > https://github.com/felixspb

                                    Это случайно не ты?
                                    Ответить
                                    • Я номерной 1024--. От своей мирской учётки Страйкеру не писал.
                                      Ответить
                • Я для интиреса по пробавала по добрать не каторые логины [a-z0-9\+\-][email protected]<дамены из csv>. пахоже на mailcatch надо генирировать вареции нападодобие реальных слов вида "аба", "абаба", "баба", "ббаба", "абба" и тп
                  падбор [a-z][email protected] пирспективен
                  падбор <вареция>@mailcatch пирспективен и оптемален но я не реализавала
                  падбор [a-z0-9\+\-][email protected]<харошая почта> менее пирспективен но позволел вылавить трех олдфагов с кароткой почтой

                  результаты от правила
                  Ответить
                  • Спасибо. У хороших почт, кстати, разные регулярки.

                    У «Яндекса» может быть [a-z0-9\.\-]+ (знак подчёркивания не используется). Дальше может идти плюсик и довольно произвольный набор символов (какие точно разрешены, я не знаю).

                    У «Mail.ru» в логине знак подчёркивания разрешён, т. е. регулярка будет [a-z0-9\.\-_]+ . Дальше тоже может идти плюсик и произвольная строка.

                    У «Рамблера» такие же ограничения, как у «Mail.ru». И у hotmail.com/live.com/outlook.com такие же.

                    У «Гмейла» я не встречал ни минуса, ни знака подчёркивания, зато точки там в юзернейме можно ставить произвольно.

                    У «Yahoo» вроде минусы не разрешены, потому что они там зарезервированы для псевдонимов, а точку и знак подчёркивания использовать можно.
                    Ответить
                    • > точки там в юзернейме можно ставить произвольно

                      – некоторые Васи Пупкины регаются в сервисах с почтой [email protected], просто потому что. а потом другой Вася Пупкин с почтой [email protected] охуевает
                      Ответить
                      • В «Гмейле» адреса [email protected] и [email protected] принадлежат одному владельцу. «Гмейл» при аутентификации убирает все точки из локальной части. Т. е. письмо, отправленное на [email protected], попадёт к тому же адресату.
                        Ответить
                        • Ну да

                          В том-то и дело, что некоторые люди тупо вбивают своё ФИО в качестве почты, даже если у них этой почты никогда и не было

                          Бляди малограмотные
                          Ответить
                          • Я побрутил профили в «Граватаре». Куча народа там неправильно заполнила поля. В «Граватаре» в форме для редактирования профиля стоит плейсхолдер «Идентификатор...» (в русской версии, английский вариант не помню, причём вставлен не через свойство placeholder из HTML5, а костыльный на скриптах). Так вот некоторым удалось вписать свои данные поверх плейсхолдера, примерно вот так:
                            Идент[email protected]ификатор...
                            Ответить
                    • Перепесала свой пруфоф концепт скрипт на сишку стало быстрее. вореции переспиктивные стоит азаботица напесанием генерации например паставить лемиты на количества согласных и гласных падряд точка минус буква вай збрасывают щетчик

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

                        Пусть имеются классы символов t по N(t) символов в каждом.

                        Тогда размер алфавита будет (sum(t) N(t)), для n символов существует Kobe0 последовательностей:
                        Kobe0(n) = (sum(t) N(t)) ^ n


                        Определим слово как последовательность символов, где не существует L(t)+1 символов класса t подряд. Насколько таких слов меньше, чем всех последовательностей?

                        Будем искать коэффициенты Кобе, корекурсивно добавляя новые символы. Будем рассматривать совокупность состояний (t, r) - "слово заканчивается последовательностью из r символов класса t".

                        Для слова из одной буквы имеются только последовательности длины 1 для символов каждого класса.
                        Символ класса t можно взять N(t) способами. Число кобенаций для состояний (t, r=1):
                        K(1, t, 1) = N(t)

                        В слове из одной буквы не существует последовательностей символов длины 2 и более, т.е. состояния (t, r>1) дают нулевой вклад:
                        K(1, t, r) = 0, 1 < r <= L(t)


                        При добавлении символа есть две ситуации.
                        1. Добавляем символ из другого класса t<>t0. Получили на конце слова последовательность из одного символа нового класса для всех случаев. Все состояния (t0<>t, r) старого слова дают вклад в состояния (t, r=1) нового слова:
                        K(n+1, t, 1) = sum(t0<>t, r) ( N(t) * K(n, t0, r) )

                        2. Добавляем символ из того же класса. Для последовательностей из r<L(t) символов получаются последовательности r+1 символов. Последовательноси r=L(t) символов при добавлении символа того же класса производят некорректное слово и не учитываются:
                        K(n+1, t, r) = N(t) * K(n, t, r-1), 1 < r <= L(t)


                        Количество кобенаций есть сумма количеств кобенаций каждого состояния:
                        Kobe1(n) = sum(t,r) K(n, t, r)


                        На практике полезен относительный первый коэффициент Кобе
                        Kobe1%(n) = Kobe1(n) / Kobe0(n) * 100
                        Ответить
                        • Практические примеры:
                          L(vowels)     = 2
                          L(consonants) = 2
                          L(symbols)    = 0
                          L(digits)     = 0
                          
                           n  Kobe0(n)  Kobe1(n)  Kobe1%(n)
                          ---------------------------------
                           1  2.60e+01  2.60e+01  100.0000
                           2  6.76e+02  6.76e+02  100.0000
                           3  1.76e+04  8.19e+03   46.5976
                           4  4.57e+05  1.64e+05   35.8903
                           5  1.19e+07  2.99e+06   25.1829
                           6  3.09e+08  4.70e+07   15.2251
                           7  8.03e+09  8.52e+08   10.6104
                           8  2.09e+11  1.49e+10    7.1423
                           9  5.43e+12  2.51e+11    4.6205
                          10  1.41e+14  4.41e+12    3.1248
                          11  3.67e+15  7.65e+13    2.0830
                          12  9.54e+16  1.31e+15    1.3753
                          13  2.48e+18  2.28e+16    0.9204
                          14  6.45e+19  3.95e+17    0.6126
                          15  1.68e+21  6.82e+18    0.4068
                          
                          L(vowels)     = 2
                          L(consonants) = 3
                          L(symbols)    = 0
                          L(digits)     = 0
                          
                           n  Kobe0(n)  Kobe1(n)  Kobe1%(n)
                          ---------------------------------
                           1  2.60e+01  2.60e+01  100.0000
                           2  6.76e+02  6.76e+02  100.0000
                           3  1.76e+04  1.75e+04   99.2888
                           4  4.57e+05  2.57e+05   56.1561
                           5  1.19e+07  5.63e+06   47.3974
                           6  3.09e+08  1.19e+08   38.6387
                           7  8.03e+09  2.45e+09   30.4894
                           8  2.09e+11  4.67e+10   22.3435
                           9  5.43e+12  9.65e+11   17.7779
                          10  1.41e+14  1.97e+13   13.9773
                          11  3.67e+15  3.97e+14   10.8099
                          12  9.54e+16  7.95e+15    8.3296
                          13  2.48e+18  1.62e+17    6.5158
                          14  6.45e+19  3.27e+18    5.0728
                          15  1.68e+21  6.60e+19    3.9344
                          Ответить
                          • ВОВЕЛ
                            Ответить
                            • ВОВПАЛ ВАББИТ
                              Ответить
                              • Вовпал Ваббит (такође познат и као „ВВ“) је брза интернетска интерактивна библиотека и програм система за машинско учење отвореног кода развијени првобитно на Иахоо! -



                                Репозиторијум гитхуб.цом/ ВовпалВаббит/ вовпал_ваббит Написано у Ц ++ Оперативни систем Линук, мацОС, Мицрософт Виндовс

                                https://sr.lbicph.com/154800-vowpal-wabbit-XWYTSY

                                Мацос
                                Ответить
                        • Если добавить числа и символы, частая смена классов сильно повысит коэффициенты Кобе:
                          L(vowels)     = 2
                          L(consonants) = 2
                          L(symbols)    = 1
                          L(digits)     = infinity
                          
                           n  Kobe0(n)  Kobe1(n)  Kobe1%(n)
                          ---------------------------------
                           1  4.00e+01  4.00e+01  100.0000
                           2  1.60e+03  1.58e+03   99.0000
                           3  6.40e+04  5.34e+04   83.4344
                           4  2.56e+06  1.93e+06   75.4901
                           5  1.02e+08  6.95e+07   67.8481
                           6  4.10e+09  2.47e+09   60.3823
                           7  1.64e+11  8.86e+10   54.0646
                           8  6.55e+12  3.17e+12   48.3509
                           9  2.62e+14  1.13e+14   43.2180
                          10  1.05e+16  4.05e+15   38.6485
                          11  4.19e+17  1.45e+17   34.5573
                          12  1.68e+19  5.18e+18   30.8987
                          13  6.71e+20  1.85e+20   27.6283
                          14  2.68e+22  6.63e+21   24.7037
                          15  1.07e+24  2.37e+23   22.0888
                          
                          L(vowels)     = 2
                          L(consonants) = 3
                          L(symbols)    = 1
                          L(digits)     = infinity
                          
                           n  Kobe0(n)  Kobe1(n)  Kobe1%(n)
                          ---------------------------------
                           1  4.00e+01  4.00e+01  100.0000
                           2  1.60e+03  1.58e+03   99.0000
                           3  6.40e+04  6.27e+04   97.9047
                           4  2.56e+06  2.28e+06   89.2369
                           5  1.02e+08  8.66e+07   84.5703
                           6  4.10e+09  3.28e+09   80.0669
                           7  1.64e+11  1.24e+11   75.6616
                           8  6.55e+12  4.68e+12   71.3421
                           9  2.62e+14  1.77e+14   67.3821
                          10  1.05e+16  6.67e+15   63.6306
                          11  4.19e+17  2.52e+17   60.0805
                          12  1.68e+19  9.52e+18   56.7263
                          13  6.71e+20  3.59e+20   53.5629
                          14  2.68e+22  1.36e+22   50.5751
                          15  1.07e+24  5.13e+23   47.7538
                          Ответить
              • Пулл-реквестом публичного ключа в репу и ручной проверкой на адекватность? Тогда и интерфейсы никакие не нужны.

                З.Ы. Хотя приватный ключ всё-равно куда-то втыкать надо.
                Ответить
      • 1) Какой анскилл. Гост, от тебя не ожидал. Добавляй к статике параметр ?v=123. Не хочу искать как на айфоне кеш сбрасывать.
        2) А что не с Полины? Обратно пол решил сменить? С возвращением, рад, что ты одумался.
        3) Учётку gost правда забанил П. Сракер?
        Ответить
        • > Какой анскилл. Гост, от тебя не ожидал. Добавляй к статике параметр ?v=123. Не хочу искать как на айфоне кеш сбрасывать.

          Айфонопроблемы. Рука привычно долбит Ctrl+R, даже не пришлось кеш чистить.

          Говночую вопросы 2 и 3.
          Ответить
          • > Хз-хз. Рука привычно долбит Ctrl+R, даже не пришлось кеш чистить.
            ИТушок детектед.

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

          А по-моему было весело.
          Ответить
          • AI движок ГК всё-равно не вышло обмануть.

            https://govnokod.ru/user/67888
            Его говнокоды (24)
            Ответить
          • жаль, что у людей всего два пола
            Ответить
            • Но это никому не мешает придумывать всякие "Xe, Xir, Xem, Xeir": https://stayhipp.com/glossary/what-do-xir-xem-xeir-mean/
              Ответить
              • Шизики ещё больше придумали:
                https://nonbinary.wiki/wiki/Pronouns

                https://nonbinary.wiki/wiki/English_neutral_pronouns
                Ответить
              • полов от этого больше не становится

                а можно было бы как у Лема
                Ответить
              • А ещё аттеншнвхоры указывают в профиле тип личности (как будто кого-то это някает):

                https://pbs.twimg.com/media/EwNy0x8WgAAVfqO.jpg

                https://ru.wikipedia.org/wiki/Типология_Майерс_—_Бриггс
                Ответить
                • параша какая-то
                  Ответить
                  • Почему-то некоторые любят сами себя обвешивать ярлыками.
                    Ответить
                    • это типа как купить "именной" номер или четырёхзнак в аське

                      эксгибиционизм
                      Ответить
                • Почему 16 типов, почему не 12 или не 19, что это за херня вообще? Похоже что это из серии говнотестиков типа "какой я персонаж из аниме Наруто", но с претензией на научность.
                  Ответить
                  • Почему в гороскопах все делятся на 12 групп?
                    Ответить
                    • Тут сложнее.

                      1 цикл Луны примерно 30 дней.

                      1 цикл вокруг Солнца примерно 12 циклов Луны.

                      Соответственно древние пришли к мысли поделить небо на 12 сегментов.

                      Также 12-ричная система чрезвычайно удобна для расчётов, из-за большого числа делителей базы.

                      12 = 2*6 = 4*3 = 2*2*3

                      И она до сих пор широко используется (футы, дюймы, время, типографские пункты).
                      Ответить
                      • В солнечном годе 12...13 лунных.

                        Календарь христианских праздников с «високосными» годами: для подгонки под солнечный цикл количество лунных циклов меняют, поэтому Пасха отъезжает то вперёд по гражданскому календарю, то назад.

                        Мусульмане же решили взять фиксированное количество лунных лет в цикле, поэтому их байрамы постоянно движутся по гражданскому календарю в одном направлении. Сейчас Ураза-байрам весной, а когда-то был осенью.
                        Ответить
                        • Да. И тут получилось говно с датами.

                          Потому и придумали нулябрь 13е созвездие «Змееносец».
                          Ответить
                        • Причём число 12 фигурирует почти во всех мифологиях: 12 олимпийских богов, у Иосифа 12 братьев, 12 колен Израиля, у Христа 12 учеников. В Коране тоже есть упоминания.

                          И естественно самое древнее: это вавилонская 60ричная система

                          Гораздо более сложный вопрос: почему в неделе именно 7 дней.

                          Тут такого однозначного ответа нет.
                          Ответить
                          • > почему в неделе именно 7 дней

                            Религиозная абстракция?
                            Ответить
                            • > Религиозная абстракция?
                              Нет, там тоже были вполне прямые астрономические аналогии.

                              Причём как и с числом 12 ещё дохристианскиедоиудейские, пришедшие из Месопотамии.

                              7 видимых небесных тел, например.

                              Так каждому дню недели соотвествует небесный объект.

                              У нас это стёрлось. Но следы остались в романских языках:

                              Sun-day — Sun
                              Monday — Moon
                              ...
                              Saturn-day — Saturn

                              Ответить
                              • Ага, а Thursday вдруг внезапно в честь Тора:)

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

                                Да, иканус?
                                Ответить
                            • На самом деле там никакой религией не пахнет, у всех констант и делителей очень рациональные корни.

                              Вореантнее всего сказочки про сотворение в 7 дней написали позднейшие авторы.

                              И если разобраться, то ма-тем-ати-ки из Вавилона сделали всё очень продуманно. На века.

                              Вместо недель конечно можно было сделать декады из 10 дней, как это сделали после Великой Французской Революции.

                              Но даже французы, при всём новаторстве и революционном угаре не стали менять число месяцев.
                              Ответить
                              • > число месяцев

                                Ну месяц, день и год сложно поменять, их всё-таки видно невооружённым глазом.
                                Ответить
                                • А вот 24 часа в сутках, это последствие деления внутридневного солнечного пути на 12 кусков.

                                  Сделали по аналогии с месяцами.

                                  Видимо это поздейший говнодел. Какие-то лалки просто копипастили не думая.

                                  Потому что тут логики нет. Солнечный путь меняется от времени года.

                                  Возможно в ихних Иудеях и Египтах ближе к экватору это не так заметно, но всё же.

                                  Мне французская система с 100 секундами в минуте, и 100 минутами в часе в чём-то даже нравится.
                                  Ответить
                                  • Ну да, а недели и часы -- это просто какие-то достаточно удобные на практике производные от суток, чистая выдумка, не привязанная ни к какой физике.

                                    100 часов сильно дохуя, 5 маловато, возьмём 24. А хули, красивое число и делится много на что.
                                    Ответить
                                    • > часы -- это просто какие-то достаточно удобные производные от суток

                                      Нет. Там логика тоже есть.

                                      Солнце в течение года перемещается по 12 условным зонам (знаки зодиака).

                                      Вот внутри дня тоже решили сделать 12 секторов. Один сектор назвали «часом».

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

                                      360 удобнее для расчётов чем 365.25, т.к. там просто дикое количество всяких делителей.

                                      Там почти у каждой константы есть логичное астрономическое объяснение.
                                      Ответить
                          • > 12 олимпийских богов

                            похоже, натягивание совы на глобус

                            Вместе с тем, состав «двенадцати» не был каноническим в древнегреческой теологии. В зависимости от местных культов состав двенадцатичленного пантеона менялся. В частности, таких богов в разное время насчитывалось как двенадцать, так и тринадцать, и четырнадцать.
                            Ответить
                            • > двенадцатичленного
                              > менялся

                              Не могли определить у кого есть хуй?
                              Ответить
                        • > поэтому их байрамы постоянно движутся по гражданскому календарю в одном направлении
                          Мне, кстати, так и не объяснили, что будут делать мусульмане, когда у них рамадан выпадет на полярный день.
                          Ответить
                          • Помнится, по телевизору был репортаж о том, как в космос отправили мусульманина. Муфтий ему в порядке исключения разрешил молиться не в сторону Мекки, а просто в сторону Земли, и не пять раз за световой день, а столько, сколько космонавт сочтёт нужным.
                            Ответить
                            • > в сторону

                              А какая погрешность допустима?
                              Ответить
                          • > когда у них рамадан выпадет на полярный день

                            Я знаю ответ для евреев. Для мусульман тоже думаю сойдёт.
                            Ответить
                            • У нас тут, оказывается, есть исламский центр. Если буду в том районе, нужно будет зайти, поинтересоваться.
                              Ответить
                          • > что будут делать мусульмане, когда у них рамадан выпадет на полярный день.

                            Еврей спрашивает раввина:

                            - Ребе, я приехал на Крайний Север! Что делать, тут полярный день! Весь день светло,а иногда даже светит солнце! Скажите, как же мне в таких условиях соблюдать Шаббат? Как определить, когда зажигать свечи?

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

                            - Значит на Крайнем Севере?

                            Еврей с готовностью: Да!

                            - Значит полярный день?

                            Еврей с радостью : Ага!

                            Раввин: Нормальному еврею ТАМ делать НЕЧЕГО!
                            Ответить
                  • Пародия на соционику. 2⁴ = 16
                    Ответить
          • Мне было грустно.
            Ответить
        • - Обсуждали пару лет назад. Для этого надо добавлять этап сборки статики, а инженерному отделу лень возиться в говне. В скором времени планируется переезд на другой сервер, скорее всего, вместе с этим сделаем версионирование статики.
          - Да.
          Ответить
          • > Да

            А чё так?
            Ответить
            • Не знаю. Попробовал ему написать, но получил только одну отписку.
              Ответить
          • Гост, а ты больше не полина?

            > добавлять этап сборки статики,
            А в чем проблема?
            Ответить
        • > Добавляй к статике параметр ?v=123
          Забыл вчера добавить, что проблему кэшированного index.html это не решит.
          Ответить
          • ССЗБ. Нехуй его кешировать.
            Именно поэтому я за «PHP».
            Ответить
            • Давно 100/100 по производительности в «Lighthouse» получал?
              Ответить
              • Много потерял по баблу?
                Ответить
              • зачем? зачем?
                Ответить
                • Больше всего в современном вебе меня бесят медленные, тормозящие и долго загружающиеся сайты. Именно поэтому «NGK» разрабатывается так, чтобы быть максимально быстрым и не тупить по пять секунд, когда я открываю его на своём телефоне.
                  Ответить
                  • https://developers.google.com/web/tools/lighthouse/

                    мужики, там на видео тянка тёмный верх светлый низ, весьма няшная, хотя и немного какая-то затраханная
                    Ответить
                    • > You can also use Lighthouse CI to prevent regressions on your sites.
                      Удобно: лагнул CI — запускай пайплайн заново!
                      Ответить
                    • > google
                      > So today our goal is to make sure we measure, optimize, monitor our sites speeds like a pros

                      > optimize, monitor our sites speeds
                      > gmail
                      Ответить
                    • Тянка норм, всё остальное как-то лень смотреть и слушать.
                      Ответить
                      • > Тянка норм
                        Согласен. Они несут какую-то женерик-питушню.

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

                        Просто отключить нахуй все свои анал-итики, метрики, адсенсы, 1e100.net.

                        Ещё бы дропнуть огромные бессмысленные картинки из статей, а каждой заедушной уёб-обезьяне в жопу банану.
                        Ответить
                        • Кстати, когда отправил метрики-адсенсы в топку локалхоста, некоторые сайты отзывчивее стали.
                          Ответить
                      • https://www.linkedin.com/in/egsweeny/

                        сначала училась на Graphic Design, Film and Sound Engineering

                        потом Bachelor of Commerce, Business Management; Middle Eastern Foreign Policy Focus; Pre-Law

                        закончилось всё Computer Science and Engineering

                        и на дуде грец

                        это я завидую, да?

                        p.s. по ходу пьесы ещё Assisted in patent drafting, application, and maintenance of two successfully filed patents for a novel internal combustion engine valve.
                        Ответить
    • Синдром отодвигания ворот

      Произвольно изменять требования к критериям доказательства, как только начальные оказались выполненными

      на ГК популярно
      Ответить
    • Инженерный отдел завершил разработку предварительной версии интерфейса и интеграции списков фильтрации, см. https://gcode.space/#!/settings.
      Краткое описание интерфейса (сверху вниз):
      1. Источники серверных банов: это список существующих «модераторов» с их ID (напротив флажка) и публичным ключом (ниже ID).
      Пользователь может выбрать любое количество источников (в том числе и ни одного); отфильтрованы будут комментаторы, состоящие хотя бы в одном из списков.

      2. Блок управления локальными ключами со следующими полями:
      2.1 ID: Произвольный текстовый ID, который будет отображаться в списке источников серверных банов.
      2.2 Приватный ключ: приватный ключ, которым будет производиться подпись. Показывать никому нельзя.
      2.3 Публичный ключ: публичный ключ, который будет отображаться в списке источников серверных банов и использоваться для проверки подписи.

      3. Кнопки управления локальными ключами:
      3.1 Сохранить ключи: перезаписывает текущий локальный приватный ключ тем, который введён в поле. Отменить это действие никак нельзя.
      3.2 Сгенерировать ключи: генерация случайной ключевой пары. Чтобы сохранить её — необходимо нажать на кнопку «Сохранить ключи».
      3.3 Вернуть локальные ключи: сброс изменений в полях ключей и возврат тех, которые были сохранены.

      4. Настройка синхронизации:
      4.1 Синхронизировать серверный список с локальным: каждая операция блокировки/разблокировки комментатора будет отправлять на сервер соответствующую команду. Если серверный список изначально не соответствует локальному, то лишние записи _не_ будут удалены.
      4.2 Строгая синхронизация: каждая операция блокировки/разблокировки отправляет на сервер полное состояние локального списка заблокированных пользователей, к которому приводится серверный список. Любые лишние записи удаляются.

      5. Ручное управление списком.
      Ответить
      • Замечания, пожелания, отзывы приветствуются.
        Ответить
        • очень сложно
          Ответить
          • Согласен. Нужна кнопка «сделать заебись». Какие в жопу ключи???
            Ответить
            • Там есть галочка «Сделать синхронизацию».
              Для простых посетителей там нужно просто выбрать подходящие списки. Ключи нужны тем, кто хочет списки заполнять.
              Ответить
            • это есть у premium-аккаунтов
              Ответить
        • minor: при ховере на пункт "Строгая синхронизация" курсор бы менять на стрелку с вопросиком
          Ответить
          • Сложные слова какие-то, наверное, на фронтендерском.
            Провентилируем этот вопросик.
            Ответить
            • Перевожу:
              https://drafts.csswg.org/css-ui-3/#propdef-cursor
              Ответить
            • извиняюсь. при наведении курсора мыши.

              я просто сначала думал, что там глюк, потому что тип не сразу же появляется
              Ответить
              • А, понятно. Наш инженерный отдел просто въебал туда <abbr>; выглядит, конечно, не очень.
                Ответить
            • > Сложные слова какие-то, наверное, на фронтендерском.

              Он овец по-шотландски считает: ян, тъян, тетера, метера, пимп, сетера, летера, ховера, довера, дик.
              Ответить
        • В разделе "кого куда синхронизировать" хорошо бы использовать стрелочки и пояснение, что куда отправится. Референс - интерфейс FreeCommander
          https://freecommander.com/fchelpxe/en/Synchronize.html

          Или около кнопки нарисовать схему действия кнопки:
          +--- клиент ----+
          |нет на сервере |-------> сервер
          |есть на сервере|
          +---------------+
          
          +--- клиент ----+
          |нет на сервере |--------> сервер
          |есть на сервере|-forced-> сервер
          +---------------+
          
          +--- клиент ----+        +--- сервер ----+
          |нет на сервере |------->|               |
          |есть на сервере|        |есть на сервере|
          |               |<-------|нет на клиенте |
          +---------------+        +---------------+
          
          +--- клиент ----+
          |нет на сервере |->нах*й   +--- сервер ----+
          |есть на сервере|          |есть на сервере|
          |               |<---------|нет на клиенте |
          +---------------+          +---------------+
          
          +--- клиент ----+
          |нет на сервере |->нах*й   +--- сервер ----+
          |есть на сервере|<-forced--|есть на сервере|
          |               |<---------|нет на клиенте |
          +---------------+          +---------------+
          
          +--- клиент ----+          +--- сервер ----+
          |нет на сервере |--------->|               |
          |есть на сервере|--forced->|есть на сервере|
          |               |   нах*й<-|нет на клиенте |
          +---------------+          +---------------+
          Ответить
          • -----------------------------------
                Клиент                  Сервер
                A                       A
                B                       C
            
            Клиент банит D:
                Нестрогая синхронизация
                A                       A
                B                       C
                D --------------------> D
            
                Строгая синхронизация
                A -|                    A
                B ---[A, B, D]--------> B
                D -|                    D
                
            -----------------------------------
                Клиент                  Сервер
                A                       A
                B                       C
            
            Клиент разбанивает A:
                Нестрогая синхронизация
                  ----[unban A]-------> 
                B                       C
                
            
                Строгая синхронизация
                B -------[b]----------> B
                
            -----------------------------------
                Клиент                  Сервер
                A                       A
                B                       C
            
            Клиент разбанивает всех:
                Нестрогая синхронизация
                 ----[unban A, B]-----> C
                
            
                Строгая синхронизация
                 ---------[ ]--------->
            Ответить
          • Или вот можно три переключателя на чекбоксах, которые генерируют нужную кобенастеньку:
            +----- клиент -----+                   +---- сервер -----+
            |только на клиенте | [->]  [пох] [нах] |                 |
            |есть и на сервере | [->]  [пох]  [<-] |есть и на клиенте|
            |                  | [нах] [пох]  [<-] |только на сервере|
            +------------------+                   +-----------------+


            Как-то так в HTML:
            <table>
              <tr>
                <th>клиент</th>
                <th> </th>
                <th>сервер</th>
              </tr>
              <tr>
                <td>только на клиенте</td>
                <td>
                  <label><input type="checkbox" name="client" value="toserver" /> &rarr;</label>
                  <label><input type="checkbox" name="client" checked value="donothing" /> пох</label>
                  <label><input type="checkbox" name="client" value="remove" /> нах</label>
                </td>
                <td> </td>
              </tr>
              <tr>
                <td>есть и на сервере</td>
                <td>
                  <label><input type="checkbox" name="both" value="toserver" /> &rarr;</label>
                  <label><input type="checkbox" name="both" checked value="donothing" /> пох</label>
                  <label><input type="checkbox" name="both" value="toclient" /> &larr;</label>
                </td>
                <td>есть и на клиенте</td>
              </tr>
              <tr>
                <td> </td>
                <td>
                  <label><input type="checkbox" name="server" value="remove" /> нах</label>
                  <label><input type="checkbox" name="server" checked value="donothing" /> пох</label>
                  <label><input type="checkbox" name="server" value="toclient" /> &larr;</label>
                </td>
                <td>только на сервере</td>
              </tr>
            </table>

            Можно ещё добавить кнопки, который включают чекбоксы по столбцам:
            только левые - сделать как на клиенте, только правые - сделать как на сервере, только средние - ничего не делать.
            Ответить
            • Загружать список с сервера в список локальный не планируется вообще, поскольку это избыточно.
              Ответить
              • Тогда так:
                +-----------------------+-----------------------------------+
                |есть только на клиенте | [ ] отправить на сервер           |
                |есть и там, и там      | [ ] всё равно отправить на сервер |
                |есть только на сервере | [ ] удалить на сервере            |
                +-----------------------+-----------------------------------+
                [OK]


                <table>
                  <tr>
                    <th>есть только на клиенте</th>
                    <td>
                      <label><input type="checkbox" name="cpclient" /> отправить на сервер</label>
                    </td>
                  </tr>
                  <tr>
                    <th>есть и там, и там</th>
                    <td>
                      <label><input type="checkbox" name="cpboth" /> всё равно отправить на сервер</label>
                    </td>
                  </tr>
                  <tr>
                    <th>есть только на сервере</th>
                    <td>
                      <label><input type="checkbox" name="rmserver" /> удалить на сервере</label>
                    </td>
                  </tr>
                </table>
                Ответить
                • только первые td нужно заменить на th
                  Ответить
                • > есть и там, и там | [ ] всё равно отправить на сервер
                  Это не нужно, клиент при отправке вообще не знает, что там на сервере происходит.

                  Передали в инжерный отдел, когда там прекратят материться от стильных модных молодёжных современных веб-технологий — прикрутим.
                  Ответить
                  • Ну там уже можно скорректировать согласно купленным билетам.
                    Основной посыл - попытаться описать это дело в терминах, что копируется и что удаляется, а не в терминах "строгая синхронизация", "синхронизация Борманда", "синхронизация, одобренная союзом номерных" и может быть разложить на компоненты ("новое", "старое", может быть "и новое, и старое")
                    Ответить
                    • > описать это дело в терминах, что копируется и что удаляется
                      ( ) не синхронизировать
                      (●) отправлять действия на сервер
                      ( ) отправлять список на сервер
                      Ответить
                      • >( )
                        какой турбовижен ))
                        Ответить
                        • Я ещё [X] помню для чекбоксов. И [▾] для сворачивания-разворачивания (правда, там был не этот треугольник, а тот, у которого в ASCII код меньше пробела).
                          Ответить
                        • А у «Нортон Коммандера» был «графический режим», хотя на самом деле он оставался текстовым, просто «Нортон» загружал свой шрифт с нестандартными символами, которые больше похожи на графические радиобатоны и чекбоксы (а при запуске программ из него временно возвращал шрифт на стандартный, чтобы в программах ничего не распидорасило).
                          Ответить
                          • название шрифта?
                            Ответить
                            • А этот шрифт имел название? В ДОС любая программа могла грузить произвольные данные в оперативку, перекрывая шрифт BIOS'а.
                              Ответить
                              • любой шрифт имеет название. Инканус, ты-то точно должен знать со своим бекграундом!
                                Ответить
                              • Шрифты BIOSа видеоадаптера, если быть точным
                                Знакогенератор же из него вроде бы шрифты брал

                                В древних картах шрифт был зашит, и менялся программатром (или не менялся вовсе)

                                В более новых его можно было менять
                                Ответить
                          • а как с этим шрифтом было читать русские тексты по F3?
                            Ответить
                            • Там сделали аккуратно. Русские буквы он не портил. Он портил что-то из псевдографики, что не использовал Нортон (он некоторые виды пересечения рамок не использовал).
                              Ответить
                              • В смысле он азменял только символы до 128?
                                Ответить
                                • Нет, он после 128 тоже изменял, но вот русские буквы не поганил.

                                  Там кроме буков, палочек и уголочков были ещё символы.

                                  Проще будет добраться до «Нортона» и прислать скриншот открытого текстового файла в нём со всеми символами.
                                  Ответить
              • > избыточно

                А если несколько девайсов, то режим нестрогой синхронизации + подписка на самого себя?
                Ответить
                • интересно, а как решать конфликты
                  Ответить
                • Предполагается что да. Только надо как-то синхронизировать приватный ключ между девайсами (иначе блокировки с девайсов не отправятся на сервер), этот вопрос надо обдумать.
                  Ответить
                  • > как-то синхронизировать приватный ключ между девайсами

                    Скопипастить?
                    Ответить
            • P.S. Иньо не экранирует HTML entities в [code]? На ру ок, на хузе вместо larr/rarr вылезли стрелки. Какой багор )))
              Ответить
      • Ещё нужно заметить, что «модераторы» на данный момент добавляются вручную: необходимо отправить (можно в комментарии) мне сгенерированный публичный ключ и ID, а я их добавлю в базу.
        Ответить
      • ура, Полина вернулась
        Ответить
    • Добавили публичный список для тестирования:
      ID: public-test
      Приватный ключ:
      0431005f89e3642e09544528c11b35cb0acb6fc6c65705ce0013895059df32cde1f121a03ac6ce7a1bd7e0d49d7943dcf2ce9afb8f32b64dd2b14c86b93daa18

      Публичный ключ вводить не надо.

      Интерфейса для просмотра списка фильтруемых пользователей ещё нет, используйте API: https://gcode.space/api/bans/["github:gost-gk:gk-denylist", "public-test"] для просмотра конкретных списков, https://gcode.space/api/bans для всех.
      Ответить
    • Перекат!

      https://govnokod.ru/27625
      https://govnokod.xyz/_27625/
      Ответить
    • Как думаете, человек это всё прочел
      https://www.avito.ru/sankt-peterburg/knigi_i_zhurnaly/kompyuternaya_literatura_it_programmirov anie_bd_2205415659
      ?
      Ответить

    Добавить комментарий