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

    0

    1. 1
    IT Оффтоп #105

    #75: https://govnokod.ru/27166 https://govnokod.xyz/_27166
    #76: https://govnokod.ru/27168 https://govnokod.xyz/_27168
    #77: https://govnokod.ru/27186 https://govnokod.xyz/_27186
    #78: https://govnokod.ru/27219 https://govnokod.xyz/_27219
    #79: https://govnokod.ru/27254 https://govnokod.xyz/_27254
    #80: https://govnokod.ru/27270 https://govnokod.xyz/_27270
    #81: https://govnokod.ru/27280 https://govnokod.xyz/_27280
    #82: https://govnokod.ru/27284 https://govnokod.xyz/_27284
    #83: https://govnokod.ru/27296 https://govnokod.xyz/_27296
    #84: https://govnokod.ru/27336 https://govnokod.xyz/_27336
    #85: https://govnokod.ru/27381 https://govnokod.xyz/_27381
    #86: https://govnokod.ru/27405 https://govnokod.xyz/_27405
    #87: https://govnokod.ru/27429 https://govnokod.xyz/_27429
    #88: https://govnokod.ru/27432 https://govnokod.xyz/_27432
    #89: https://govnokod.ru/27435 https://govnokod.xyz/_27435
    #90: https://govnokod.ru/27439 https://govnokod.xyz/_27439
    #91: https://govnokod.ru/27449 https://govnokod.xyz/_27449
    #92: https://govnokod.ru/27460 https://govnokod.xyz/_27460
    #93: https://govnokod.ru/27463 https://govnokod.xyz/_27463
    #94: https://govnokod.ru/27466 https://govnokod.xyz/_27466
    #95: https://govnokod.ru/27473 https://govnokod.xyz/_27473
    #96: https://govnokod.ru/27478 https://govnokod.xyz/_27478
    #97: https://govnokod.ru/27484 https://govnokod.xyz/_27484
    #98: https://govnokod.ru/27495 https://govnokod.xyz/_27495
    #99: https://govnokod.ru/27504 https://govnokod.xyz/_27504
    #100: https://govnokod.ru/27508 https://govnokod.xyz/_27508
    #101: https://govnokod.ru/27511 https://govnokod.xyz/_27511
    #102: https://govnokod.ru/27518 https://govnokod.xyz/_27518
    #103: https://govnokod.ru/27526 https://govnokod.xyz/_27526
    #104: https://govnokod.ru/27534 https://govnokod.xyz/_27534

    Запостил: nepeKamHblu_nemyx, 01 Августа 2021

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

    • Добрый день.

      Этот оффтоп сгенерирован автоматически.

      Индекс оффтопов: https://index.gcode.space/.
      Зеркала Говнокода и полезные ресурсы:
      * https://govnokod.xyz/ (альтернативный Говнокод)
      * https://gcode.space/ (read-only зеркало Говнокода)
      * https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
      * https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
      * https://vorec.space/ (глоссарий Говнокода)
      * https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)

      Примечание: автоматические перекаты в настоящее время осуществляются только с аккаунта nepeKamHblu_nemyx.
      Остерегайтесь подделок. Берегите себя и своих близких. Кок!
      Ответить
    • MAKAKA, это для тебя

      https://www.youtube.com/watch?v=NlXOY6J4nrI
      Ответить
      • Не, у них всегда есть кому высказаться... Иначе по 3 часа бы не сидели.
        Ответить
        • на фразу "у меня ничего" тратится секунды три. то есть за минуту могут таким образом высказаться 20 человек, за час 1200, за три часа 3600. большая у Макаки команда
          Ответить
          • Ещё и дойти до митинга нужно.
            Ответить
            • Они по-очереди друг друга вызывают туда?
              Ответить
              • по селектору
                Ответить
              • У нас, например, минут 5 тратится на то, чтобы подождать опоздавших.
                // не макака
                Ответить
                • а тимлид обычно на сколько задерживается?
                  Ответить
                  • По разному. Иногда его ждут, иногда он.
                    Ответить
                • Лайфхак: если приходить последним, то тебе не придётся терять время на ожидание опоздавших.
                  Ответить
              • Кстати, в копрорациях любят всякую геймификацию и тимбилдинг. Можно митинги проводить в формате "7 минут в раю"
                Ответить
                • геефикация

                  "найти банку сгущёнки за 7 минут"
                  Ответить
                  • Найти и перепрятать?
                    Ответить
                    • Найти и делегировать.

                      Говорим правильно!
                      Ответить
                      • Чемодан фасилитатора давно приобрёл?
                        Ответить
                        • У меня целый чемодан фасилитаторов, а что? Вот есть красненький
                          Ответить
                          • Чёрный и белый забирайте, а огнетушитель я вам не отдам.
                            Ответить
          • Паузы между репликами не учёл.
            Ответить
    • > а другому пользователю с этого ip достанется хуй

      Кстати, вот интересно, мобильный NAT понимает клиентские RST пакеты? Или если сервер сойдёт с ума и отправит в ответ пару гигабайт, то весь трафик засчитается клиенту, даже если он пытается от него отказаться?
      Ответить
      • Для этого ему придется пробить tcp window, клиент-то аки обратно слать не будет
        Ответить
        • Для простоты предположим, что клиент серверу очень не понравился и он решил ему отправить ответ через raw сокет, забив на размер окна и прочие мелочи.
          Ответить
          • Вы определитесь, либо RST, либо raw socket.
            Ответить
            • что мешает эмулировать TCP по RAW сокету?
              Ответить
              • Сам топи урановые ломы в мобильном нате
                Ответить
          • Ты еще спроси засчитывается ли паразитный траффик
            Ответить
    • https://github.com/loic-sharma/BaGet

      какой багет )))
      Ответить
      • какой скучный язык
        public class S3StorageOptions
            {
                [RequiredIf(nameof(SecretKey), null, IsInverted = true)]
                public string AccessKey { get; set; }
        
                [RequiredIf(nameof(AccessKey), null, IsInverted = true)]
                public string SecretKey { get; set; }
        
                [Required]
                public string Region { get; set; }
        
                [Required]
                public string Bucket { get; set; }
        
                public string Prefix { get; set; }
        
                public bool UseInstanceProfile { get; set; }
        
                public string AssumeRoleArn { get; set; }
            }


        В сишке такая структура занимает в 3 раза меньше места
        Ответить
        • За счет того что не хранит длины строк?
          Ответить
        • На «Nim» можно написать свой DSL, и этот язык отсосёт у «Nim» его «rod».
          Ответить
          • Ну как, написал?
            Ответить
            • Нет, я не умею программировать, а уж тем более – программировать на «Nim»...
              Ответить
          • Давно DSL написал?
            Ответить
            • Я анскильный, поэтому ещё не написал.

              Зато смотри какой DSL написал этот программис!

              https://vitreo12.github.io/omni/

              Торту, наверное, понравится, больше не будет на гитаре лабать музыку, будет её ПРОГРАММИРОВАТЬ. Кстати, а куда делся торт? Что, никто не знает? Ап!
              Ответить
              • sample:
                    freq_incr = in1 / samplerate
                    out1 = sin(phase * TWOPI)
                    phase = (phase + freq_incr) % 1


                Т. е. можно создавать новые инструменты с помощью FM-синтеза?

                Я когда-то писал подобную питушню, высирающую WAV-файл.
                Ответить
        • И сколько в сижке займёт аналог [Required]?
          Ответить
          • А что он делает?

            Иф да возврат ошибки в set_Region() если нулл подсунули? Не так уж и страшно это выглядит в няшной, примерно как в джаве.

            З.Ы. Ты же был за явность и вербозность, кстати.
            Ответить
            • Указывает, что поле обязательное при сериализации или в БД

              А ты про nullable тип говоришь

              Я за читаемость и понятность. Вроде в этом коде всё понятно
              Ответить
              • > Вроде в этом коде всё понятно

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

                Хотя эскобар.чпег, конечно. Эти свойства друг из друга следуют.
                Ответить
                • так эти заморочки вроде как независимы от языка
                  Ответить
            • Хотя ты наверное тоже про required всё же. Ну допустим ты обернул эти set_Region в мокросы и руками написал сеттеры.

              И где здесь в три раза меньше строк?
              Можно пример?
              Ответить
            • >А что он делает?

              Он сообщает читающей стороне, что поле не опционально.

              По такому классу можно:
              * Сгеренировать схему СУБД
              * Сгенерировать формочку для заполнения СУБД с валидацией
              * Отвалидировать пришедшие по RESTу данные

              В целом это полезная идея, чтоб 20 раз одно и тоже не писать
              Ответить
          • https://en.cppreference.com/w/cpp/language/attributes ?
            Ответить
            • Какая сишка )))
              Ответить
              • кстати, а есть вроде аналоги аннотаций и в нящной, но компайл ер специфик
                Ответить
            • Two consecutive left square bracket tokens ([[) may only appear when introducing an attribute-specifier or inside an attribute argument.
              y[[] { return 0; }()] = 1;  // error

              Я теперь ещё должен следить, чтобы в коде две квадратные скобки подряд случайно не встретились?
              Ответить
              • Какой багор )))

                На какой метод парсинга они там рассчитывают, что так ограничивают? Вроде же есть различие, которое можно и в грамматике описать
                [[]питушня]
                [[питушня]]
                
                first  := '[' '[' ']' PITUX+ ']'
                second := '[' '[' LETTER+ PITUX+ ']' ']'

                Математически тут уже на третьем символе понятно, что это не атрибут, даже не надо парсить всю питушню.
                Ответить
                • int nodiscard = 0;
                  y[[nodiscard] { return 0; }()] = 1;

                  Здравствуйте.
                  Ответить
                  • Ладно, придётся распарсить до первого не альфанумерик символа внутри двух скобок или до любой нескобки после первой закрывающейся скобки.

                    Но это всё ещё различимая питушня с точки зрения грамматики!
                    [[питушня]питушня]
                    [[питушня]]


                    Даже если просто регулярками вида /\[\[([^\]]|\][^\]])+?\]\]/ искать питушню в двойных скобках, например
                    x[[pitux] { return y[z[10]]; }] = 1

                    то мы либо найдём либо атрибут, либо питушню pitux] { return y[z[10, которая содержит непарные скобки.

                    Нельзя просто так и записать две скобки подряд два раза (две открытых, две открытых), чтобы не получилась либо питушня, либо атрибут.
                    1. у лямбды будет справа питушня, которая не даст скобкам сомкнуться
                    2. у индекса будет слева питушня
                    3. у питуиндекса ([0]a), если он есть в C++, будет справа питушня
                    4. у кобенации "лямбда+индекс" будет питушня из символов внутри, например, непарные скобки и т.п.
                    Ответить
                    • Да пофиксят, я думаю...

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

            нужно писать код отдельно и кокогенерировать
            Ответить
          • https://www.researchgate.net/publication/265296536_A_Lesson_on_Runtime_Assertion_ Checking_with_Frama-C
            Ответить
            • а попроще ничего нет? а то тут блядь какая-то цифровая блеватека просто
              Ответить
    • https://toilet-guru.com/pictures/nature-biomedical-02.png
      Ответить
    • https://support.skype.com/en/faq/FA273/what-number-will-the-person-i-am-calling-see-if-i-call-from-skype

      как блядь задать самим себе вопрос и не ответить на него
      Ответить
    • node заебал падать с ООМом

      0казывается, если попросить ``--v8-options``, то можно узнать как установить ему макс размер хипа.
      Нахуя это сразу не показывать?
      Ответить
      • У джавы тоже не все опции движка показаны в хелпе?
        Ответить
        • Вродь да, но зачем же повторять за педерастами?
          Ответить
        • Это секретные опции пасхалки, ты просто не понимаешь это программисты шутят!!!1!
          Ответить
          • Программисты оптимизируют код, пока он не начнёт влезать в ту память, которая есть.
            И переписывают всё на сишку, как только начнёт тормозить.
            Ответить
    • QR коды надо называть «кур-коды» или «курокоды».
      Ответить
    • Драйвер якобы для PCI от AMD блокирует какие-то багованные фичи процессора, если в списке процессов видит название каких-то игрушек.

      https://hothardware.com/news/questionable-amd-pci-driver-may-improve-game-stability-could-be-a-security-headache

      > The initial findings from this reverse engineering, of which he reported on Twitter, explained that the «AMD PCI Driver» registers a process creation notify routine that, in short, «checks all process names against a list of 19 hashed names.» If a match is found against that list, which turns out to be a list of game executables, the driver sets a bit to disable certain hardware optimizations. Disabling these optimizations, like the instruction cache, which could cause instability under load, could improve game stability. As Ionescu then explained to us, «it doesn't disable them merely for the running game — it disables them for the entire machine.»
      Ответить
      • Какой костыль )))

        З.Ы. Вроде было уже?

        > it disables them for the entire machine

        Может оно и к лучшему... Хотя потом будут советы запустить игру чтобы браузер не падал.
        Ответить
        • Может и было, но я не слежу за всеми обсуждениями на говнокоде
          Ответить
        • Надо наверное принципиально менять архитектуру. Например, будет один маломощный процессор без мелтдаунов, спектрумов и прочего такого помойного говна, на которой будет крутиться ОС и прочий такой системный софт. И будет особый быстрый говнопроцессор для игрушек, в котором как на голом железе эти самые игрушки будут запускаться без всякой ОС и через memory-mapped I/O будут срать всякими запросами в видеокарту, звуковуху и получать сетевые пакеты, ввод-вывод от мышки
          Ответить
          • Да, годная идея. Можно ещё дополнить её доверенным вводом-выводом: пусть у слабого проца тоже будет своя простейшая интеграшка, тогда видеопоток от мощной видюхи можно пропустить через эту интеграшку, чтобы она могла какие-то системные оверлеи дорисовать поверх. Ну и мышку с клавой тоже через слабый проц пропустить. А сеть, наверное, сделать как 2 сетевухи с коммутатором.
            Ответить
          • Есть идея получше: надо эти процессоры и видюхи ещё air gap'нуть друг от друга. И чтобы все цепи были независимы для исключения side channel атак.
            Ответить
            • Самое главное — цепи питания. И для них ещё свою инфраструктуру сделать, и игры выпускать эксклюзивно для них. И конечно, делать в отдельном корпусе. И продавать отдельно.
              Ответить
              • Игры для цепей питания? Чтобы они там не скучали?
                Ответить
          • Почему не запускать прямо на GPU игру?
            Ответить
            • Потому что GPU плохо умеет в ветвления например. А еще потому, что плохо умеет в непараллелящийся код.
              Ответить
              • Почему бы не добавить в GPU десяток-другой ядер, которые умеют в последовательный код?
                Ответить
                • выполняйте
                  Ответить
                • CPU с интегрированным GPU уже и так есть. Можно их назвать "GPU с интегрированным CPU" и проблема решена.
                  Ответить
                  • У малинки забавная фича с этим связана. Там GPU стартовал первым, читал с флешки загрузочный сектор для ARM'овского ядра и пихал ему в кеш. Так что это, видимо, то самое GPU с интегрированным CPU.
                    Ответить
                    • > малинки

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

                                Прикинь, мне говно приходило по сети, и обрабатывалось колбеком. Колбек вызывался на фоновом треде. Из него вылетал эксепшен, и его никто не ловил, и не логировал.

                                И вот сообщение выходило с одной стороны, а до брекпоинта моего в обработчике не доходило. Я пол дня пирдолился, пока нашел:(
                                Ответить
                            • I wixie-fixied an oopsie.
                              Ответить
                          • Мне можно, я из себя брутального мужика не изображаю.
                            Ответить
                          • Не, это другое.

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

                            Начинающий изучает язык программирования си.
                            Эксперт шарит в сишке.

                            Начинающий для внезапного выхода из цикла ставит брейк.
                            Эксперт впердоливает бряк.

                            Мамаши с тугосерями едят малиночку в огородике.
                            Эксперт юзает малинку с соснолькой.
                            Ответить
                            • >Эксперт юзает малинку с соснолькой.


                              Сеньйор ардуино девелопер.

                              Но вообще согласен: ламер ищет в яндексе "как узнать текущее время в джаве", а серьезный разработчик набирает в гуголе "get date java"
                              Ответить
                      • кто сказал что мы не любим блевать?
                        Ответить
                        • А "молоко" -- собачий кал
                          Я никогда так не блевал
                          Но если честно вам сказать
                          Под "молоком" ништяк блевать
                          Ответить
              • Он вообще в него умеет? как выглядят условные переходы на simd?
                Ответить
                • > как выглядят условные переходы на simd

                  Как рабочие вокруг ямы: один копает, пятнадцать курят.
                  Ответить
                  • Скорее как в армии: как выкопать пять ям ротой в 100 человек? Копают все 100, но вот лопаты дают только пятерым.
                    Ответить
          • big.little?
            Ответить
    • > чистый Си

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

          Кстати, кристал это язык такой
          https://crystal-lang.org/

          Статически типизированный руби, забавный
          Ответить
          • Туда кстати настоящий мультитрединг сейчас вроде как завозят. Я хуй знает что там с memory model, но вся GIL-братва мощно соснет. Нет, самими по себе тредами никого не удивишь, просто вся эта интерпретируемая плеяда объединилась в кластер по целому ряду признаков, и обычно когда видишь околорубёво-питонячий синтаксис, то это автоматом подразумевает еще и что у тебя приложение всегда в один тред херачит, crystal в этом плане может снискать большую симпатию зрителей.

            Другое дело что кому нужен компилируемый руби, кроме нас на этом сайте? Я там читаю что рубистам с event machine-то сложнаааа, а тут еще какие-то типы, канпеляция.
            Ответить
            • В MRI руби 3.0 завезли джит, кстати.

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

              >сложно
              ооох, рубистам ничего не сложно)))
              https://github.com/state-machines/state_machines
              Ответить
              • Кстати в тройку вроде тоже завезли какой-то тайп-чекинг, но я все еще не добрался.

                > state machines

                Зачем мне государственные станки?
                Ответить
                • >какой-то тайп-чекинг,
                  фу, это предстельство идеалов руби: не нужно превращаться в php

                  хочешь тайпчекнинг -- иди на кристал


                  Забавно, что руби хуисосили за скорость (она сливала сипайтону). Теперь у нас JIT, может она теперь его поровёт?
                  Ответить
                  • Я пробовал ставить тройку для MinGW. Там что-то сломали, и она постоянно срёт в консоль ANSI-кодами. Двойка раскрашивала вывод, только если её запускать из Баша.
                    Ответить
    • Такая есть мысль: в будущем люди научатся печатать азики на 3Д принтерах, и тяжелый софт будет печататься и работать хардварно
      Ответить
      • зачем мне печатать азербайджанцев на 3d-принтере?

        > тяжелый софт

        какой хардсофт
        Ответить
    • https://pbs.twimg.com/media/E73k81CXIAEk8Lp.jpg
      Ответить
    • http://zaloopa.slonique.net/FAIL/post-3-12795265526044.jpg
      Ответить
    • Исторические анекдоты и useless facts про беркли сокеты.

      1. Структура ``in_addr`` имеет внутри 4х байтный адрес (IPv4). Почему структура, а не просто число?
      Потому что когда-то там был юнион из числа и char[4] чтобы обращаться к конкретному байту. Во времена классовой адресации это было важно. С 1993-го года действует CIDR, и конкретный байт никого не ебет, но исторически осталось.

      2. ``inet_network`` умеет превращать "1.2.3.4" в 4х байтный адрес в network byte order, в случае ошибки возвращает "-1", чему соответствутет адрес из всех единиц, то есть 255.255.255.255, вполне валидный бродксат на всех членов бродкаст домена. Новые функции таким не страдают.

      3. Размер структуры ``sockaddr`` (и её "наследников") изначально передавался через "int" (это было еще до ANSI C). Позикс поменял его на ``size_t`` и сломал всё к хуям на 64 битах. Одумался, и ввел тип ``socklen_t`` который теперь всегда равен ``int`` для обратной совместимости (Линус срёт кирпичом
      https://yarchive.net/comp/linux/socklen_t.html)

      4. На SysV изначально не было никаких сисколов для berkely sockets (они только на BSD были). На SysV API назывался STREAMS, а беркли сокеты были сделаны поверх него, на уровне библиотеки.
      STREAMS были мощнее, но и сложнее. Теперь их нет.
      Ответить
      • А ещё все эти структуры за каким-то хером в network endian. Как-будто ядру самому тяжело было перевести, всё равно же в пакеты будет копировать.
        Ответить
        • Угу. кто не отсасывал забыв сделать htons для порта, например?


          Кстати, использование "short" как "2 байта" а "long" как "4 байта" это тоже наследие доансишных времён
          Ответить
          • > кто не отсасывал забыв сделать htons для порта

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

        Они вообще что-нибудь запускали, когда внедряли туда size_t? Там же указатели на размер в половине функций (accept, recvfrom), при первом же запуске на 64-битной платформе всё навернётся.
        Ответить
        • Ну степень разрушения наверное зависит от кол-новенции, а 64х битных были тогда только спарки вроде с соляркой и tru64 на alpha

          В общем Торвальдс и его друзья накрутили им уши раньше, чем это стало стандартом (к моменту релиза стандарта исправили как я понял)
          Ответить
          • С другой стороны нормальный конпелятор не даст передать int* в uint64_t*. Все бы поправили исходники и было бы счастье. А теперь эта срань с интом увековечена.

            ABI ведь на прыщах в основном проприетарщикам нужно, а проприетарное говно и так только на конкретных сборках работает.
            Ответить
            • >uint64_t
              позырь ссылку жы)
              >Date: 9 Jun 1998 20:10:34 GMT

              Речь там вообще не о прыщах, а о позиксе. Было бы очень плохо, если бы вдруг куча софта перестала собираца
              Ответить
              • > Было бы очень плохо, если бы вдруг куча софта перестала собираца

                Вот так и живём в 2021 году с ограничением длины путей на 265 символов да переименованным интом...
                Ответить
                • Да в сокетах вообще такие копролиты...

                  Например там не было void*, потому бывает указатель на "родительску" структуру, к которому нужно кастить явно, а в районе DNS там и вовсе char* бывает
                  Ответить
                  • Касты указателей на структуры это жесть, конечно.
                    Ответить
        • 64битные платформы? Это та медленная хуета, с которой играются небородатые неофитные подростки? Пф, да эта хуйня умрет через пару лет, не понимают ничего.
          Ответить
          • Кажется что нет как раз: 1997-й год на дворе, SPARC64 за охулион долларов с соляркой обслуживает всякие банки. Это писи с прыщами игрушка хакеров и серьёзным дядям не нужна
            Ответить
            • чего же вы серьезные такие
              я даже не думал на конкретную дату глядеть и рассчитывать как оно там было
              Ответить
    • Время от времени отваливался wifi на линукс-рутере. Написал watchdog скрипт, который передергивал wifi если пропадали пинги. Убил часа полтора. Как запустил - так сразу всё перестало отваливаться. Может, проще было руками передергивать каждый раз? Не всегда программирование - лучшее решение.
      Ответить
    • {"data":{"error":"Imgur is temporarily over capacity. Please try again later."},"success":false,"status":403}

      https://imgur.com/?desktop=1

      Только у меня так?
      Ответить
      • Да.
        Ответить
        • Меня забанили. С другого айпишника заработало.
          Ответить
          • Какой багор )))

            За что забанили? Как сменил айпишник?
            Ответить
            • За что не знаю. Отключил ви-фи и попробовал с мобильной сети.
              Ответить
              • У меня обычно наоборот, на мобильной сети вечно попадаются зашкваренные айпишки, с которых надо светофоры да гидранты искать.
                Ответить
                • Пуфыстика просят искать светофоры и на такой сети, и на сякой. Пуфыстику везёт.
                  Ответить
    • Кстати, протяну себе шестую категорию. Будет 10Гб до 50 метров.
      Есть еще седьмая, но она не совместима, там даже RJ45 нет
      Ответить
      • У тебя в роутере есть коннекторы для кат6 и сетевуха умеет в 10 гигабит?
        Ответить
        • Cat6 это обычный RJ45, так что коннекторы есть.

          Сетевуха не умеет конечно, так что пока будет 1 гигабит, но рано или поздно я обновлю хозяйство
          Ответить
          • Обычный, но там ведь нужна экранировка.
            Ответить
            • Чево? Шестерка бывает и UTP и FTP. Дома зачем мне экран?
              Разве не

              https://www.xcom-shop.ru/cabeus_utp-4p-cat6-solid-lszh_520529.html
              Ответить
              • А, у тебя без фольги? А зачем такой кат6 нужен? Просто понты?
                Ответить
                • Потому что он не сильно дороже пятрки, но на нём можно будет запускать 10гб потом, чтоб не перекладывать
                  Ответить
                  • Десятку без экранов? Отстала я от жизни.
                    Ответить
                    • 10GBASE-T, or IEEE 802.3an-2006, is a standard released in 2006 to provide 10 Gbit/s connections over unshielded or shielded twisted pair cables, over distances up to 100 metres (330 ft).

                      Category 6A is required to reach the full distance and category 6 may reach up to 55 metres (180 ft) depending on the quality of installation.

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


                      PS: аааа, я понял, про что ты

                      Ты про Cat6a наверное?
                      Она не FTP, но там каждый питух в фольге
                      Ответить
                      • Ну с другой стороны он у тебя там один, а не пучок параллельных.
                        Ответить
                        • Ну да, я же не магистраль:)
                          Ответить
                          • У тебя всё равно пойдут штуки три в одном канале от точки коснолидации. А если PoE используешь то раза в полтора больше.
                            Ответить
                        • А чего путчок-то? Они для этого и витая пара чтобы не путчило.
                          Ответить
                          • Ну она же не идеально завита, поля не совсем аннигилируют.
                            Ответить
          • Кстати, как надо правильно организовывать эту питушню?
            Ну то есть с обычными проводами примерно понятно было в 1950-2030, поскольку особых изменений не было, чтобы можно было качественные провода взять и внезапно поменять из-за нового обогревателя.
            А как оптимально организовать сетюшню? Впердолил в стены, а тут раз и новый стандарт вышел, голографический тикток на лоховском волокне меньше терабита тормозит.
            Или вовсе с этим не возиться? Купить патч-питузы да кинуть от роутера где-нибудь за диваном?
            Ответить
      • Привет, Сёма!
        Ответить
    • https://twitter.com/kuzya_epta/status/1422668783743864838

      4 августа в социальных сетях появился скриншот письма основателя Xsolla Александра Агапитова сотрудникам. Собеседник Forbes подтвердил подлинность обращения. В нем Агапитов заявил, что решение об увольнении было принято после того, как «команда big data проанализировала активности» в рабочих сервисах, почте, чатах, документах и отметила его как «невовлеченного и малоэффективного» работника. «Иными словами, вы не всегда присутствовали на рабочем месте тогда, когда работали удаленно», — говорится в письме

      КАКОЙ БАГОР )))

      https://www.rbc.ru/rbcfreenews/610a89509a7947d4ea957efc
      Ответить
      • иными словами, дома на кухне подвергали сомнению решения руководства
        Ответить
      • --Иван, что имееть ввиду русски, когда говорить "лесть в салупа"?
        --А вот https://twitter.com/agapitovs/status/1422987608229961730?s=21
        Ответить
        • Нафига вы пиарите какого-то уёбка?
          Ответить
          • Да просто смешно

            Петух обосрался, и вместо того, чтобы вытереть жопу, стал своим говном черкаши везде делать.
            Ответить
            • А как делают у вас дома?
              Ответить
              • У нас увольняют лично, а не публично. И наш главный не пишет "уёбывайте"
                Ответить
                • Этого уёбка ещё засудят. Он уволил незаконно 150 человек.
                  Ответить
                  • Я бы на месте остальных чуваков тоже свалила оттуда. Зачем работать на мудака?
                    Ответить
                    • А есть реальные примеры уволившихся? Может он пиарится, а на самом деле ничего не было?
                      Ответить
                      • > на самом деле ничего не было

                        Тем более надо или свергать этого мудака или валить оттуда...

                        Ну, я думаю акционеры уже приготовили тему для следующего собрания.

                        З.Ы. Хуй с ним, что сократил. Шит хеппенс, у многих случается во время кризиса. Но манера общения просто топ.
                        Ответить
                        • > акционеры
                          Хотел посмотреть акции этого говна, но не нашел. Никто не знает?
                          Ответить
                      • Какой-то странный способ пиарица


                        Привет, я руководитель софтварной компании. Каждое утро я ссу в ебало своим программистам.

                        Ха-ха-ха, я пошутил
                        Ответить
                        • Гребите дальше, я пошутил.
                          Ответить
                        • Ну можно уволить этого ебанавта, на его место назначить другого. Пиар останется.
                          Ответить
                          • Уволить кого? Создателя компании?

                            Как Джобса?
                            Ответить
                            • Вай нот? Или у него контрольный пакет и вертел он всех на хую?
                              Ответить
                              • Я понятия не имею какая структура у этой компании.

                                Но чел её создал и он там CEO. Скорее всего у него подстелена соломка
                                Ответить
        • Системное администрирование Управление компанией под баклофеном
          для чайников
          Ответить
      • Интересно, а результат работы они проверяли?

        Или это не так круто для бигдатеров? Проверка напрямую - питушня прошлого века, надо только по косвенным смотреть?
        Ответить
        • Видимо, результаты работы начальника не интересовали. Его интересовала только имитация бурной деятельности.
          Ответить
    • зогадка

      што такое 258EAFA5-E914-47DA- 95CA-C5AB0DC85B11
      Ответить
      • Соль для апгрейда протокола на вебсокет.
        Ответить
      • Похоже на GPG или PGP ключ.
        Ответить
      • GUID?

        Может ещё ключ для Старфорса времён третьего Дума
        Ответить
        • гуид) но нет, не ключ

          он велл ноун
          Ответить
          • А, так Снаут уже правильно ответил
            Ответить
          • Да после спойлера Снаута гадать бессмысленно.

            https://datatracker.ietf.org/doc/html/rfc6455

            Впервые вижу GUID, захардкоженный в RFC.
            Ответить
          • P.S. А ещё какие-нибудь гуиды в RFC есть?
            Ответить
            • В MSDN и технете их дофига
              Может быть в спецификации уефи тожечто-то есть
              Ответить
              • А зачем такая питушня? Это же локальный идентификатор в MS, даже локальный идентификатор в узком подмножестве софта MS.

                Зачем обзывать гуидами то, что не является сгенерированными на куче компов автоматическими ворециями? У них там настолько много сотрудников и кода, что даже жабоподход вида com.pituxnet.code.ivanov.winda.ixprorir: mainswitch10 не подойдёт?
                Ответить
                • Ты о чем говоришь?

                  гуиды у винды есть в BCD и CLSID COM. И то, и другое может сгенерироваться на множестве компов.
                  Ответить
                  • О том, что гуидами хорошо идентифицировать коммит в гитах, где неизвестно, кто что где когда накоммитил. Или нумеровать сообщение на форуме, куда все питухи пишут в десять потоков. То есть неконтролируемую фигню, которая генерируется на неподконтрольном MS множестве компов неизвестного размера.

                    А называть гуидами какую-то питушню, которую придумал MS, и она на всех компах идёт ровно с таким идентификатором - как-то странно.
                    Ответить
                    • Смотри: Есть записи в базе BCD на любой винде. Одна запись -- одна операционка (виндов может быть несколько)
                      У этой записи есть GUID.

                      Ты добавляешь запись с помощью bcdedit, и у нее появляется GUID

                      Но есть несколько "особенных" записей, которые есть у всех.
                      Их гуиды и well-known.


                      Есть интерфейс COM объекта. Каждый разраб может зарегистрировать свой интерфейс сгенерировав для него GUID.
                      Я сделаю один COM объект, ты другой, потом мы оба установим его на комп пользователю, нужно чтобы гуиды не совпали

                      Но есть гуиды для COM объектов от Microsoft, которыми все пользуются
                      Они прописаны в MSDN
                      Ответить
                    • Для проприетарности же. По иерархическим айдишникам сразу понятно что это и чьё оно. А по гуиду хуй что нагуглишь если он не well known.

                      Ну и сравниваются они быстрее.
                      Ответить
          • > велл ноун

            Всегда умиляла эта фраза. Каждый уважающий себя программист помнит.
            Ответить
    • даже блядь на кмп

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

      ...


      > Цитата: Утка-маляр от 20 апреля 2020, 20:35:38

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

      А что нужно? Разрекламированный Си-Шарп? Хаскель? Может быть очень востребованный бейсик из 1С?


      На всякий оставил вам свою сессию в урле.

      http://newforum.killpls.me/index.php/topic,108638.msg4632163.html?PHPSESSID=s m7kn522m3tmnmivd2uohdltt1#msg4632163
      Ответить
      • Волкодав - да это не теория, а вполне себе практика :D
        Большие конторы типа того же Гугла и даже Яндекса дают разрабам очень хорошие железяки. И тестировщикам тоже дают только железяки, которые официально поддерживаются (может, ещё минус пара версий и всё). Ну и вот и здрасьте. Потому что если любого Гео поддерживать до морковкина заговенья, никаких ресурсов не хватит.


        Именно поэтому я против «поддерживать Гео»
        Ответить
      • Заходил и смотрел, пока можно было смотреть. Как смотреть стало затруднительно, больше не захожу. Вместо этого (если не лень) я захожу на savefrom.net, вставляю там присланную мне ссылку и скачиваю видео, которое потом и просматриваю без тормозов и рекламы в Media Player Classic.
        А что там делается на ютубе, я знаю только с ваших слов.


        Аудиовизуальный Царь
        Ответить
        • да это ж rms
          Ответить
        • Всегда так делаю. Только смотрю в «VLC».
          Ответить
          • >захожу на savefrom.net
            >вставляю там присланную мне ссылку и скачиваю видео
            >которое потом и просматриваю без тормозов и рекламы в Media Player Classic.

            Какой пердолинг )))
            mpv https://www.youtube.com...

            Опционально можно регулировать качество или оставить только аудио
            mpv --ytdl-format='bestaudio+video[height<=720]' https://www.youtub
            Ответить
            • Это для прыщей?
              Ответить
            • > www

              Поясните зачем в 2021 нужен этот префикс?
              Ответить
              • Чтобы веб мастер заебался делать постоянные редиректы
                Ответить
                • > веб мастер

                  Опять расизм пропагандируете?
                  Ответить
                  • еще и postmaster есть

                    ужасно
                    Ответить
                  • Мне вообще похуй. Буду специально в коде пельменнные называть «nigger», «TrapGovno», «Slave». Кто мне что скажет, если это кодстайлу не противоречит?
                    Ответить
                    • Название переменных должно соответствовать их содержанию или назначению. Так что это в основном противоречит кодстайлу. Разве что если код ищет негров в списке лиц.
                      Ответить
                      • Это бесспорно. Но, к примеру, я могу демонстрировать работу алгоритма поиска медианы двух отсортированных массивов за log(n), а массивы эти - массив трапов и массив пидоров, а метрика - длина хуя.
                        Ответить
                    • > кодстайлу

                      У нас во время пулл-реквеста робот проверяет и предлагает поюзать что-то более нейтральное ;(
                      Ответить
                      • Слово робот, кстати, происходит от слова "рабский труд" на чешском. Так что вы ещё те угнетатели.
                        Ответить
                        • > угнетатели

                          Да у нас и ветка master и старый код переделывать пока не требуют... Так что угнетения на каждом шагу, просто новые добавлять не рекомендуется.
                          Ответить
                      • А есть специальный комментарий типа
                        int nigger; // gv-lint-ignore: racism

                        ?
                        Ответить
                      • Зачем? Зачем? Не проще ли оставить Кесарю кесарево, а поехавитам - поехавитовское?

                        Они же уже настройки дисков сломали. Админам приходится больше пердолиться, когда очередной толерастный луникс в новой версии не хочет нормально конфигурироваться, и потом восклицать "вот же б-ди", когда осенит, почему не работает.
                        Ответить
                    • Переходи на Erlang: http://erlang.org/doc/man/slave.html
                      Ответить
                    • Всем переменным давайте имена ваших знакомых, любимых блюд, эстрадных ансамблей, сигарет, напитков и т. д. Легко видеть, что фрагменты типа:
                      IF КАТJА >= 18  ТНЕN DО;
                      САLL GАSТRОNОМ;
                      САLL ТАХI;
                      GОТО ХАТА; ЕND;
                      ЕLSЕ GОТО VЕRА;

                      GLОРING  СSЕСТ
                                ...
                       МАRINА   ЕQU   DURА
                                ...
                                L     АН,МАRUSJА
                                SТ    UН,АNJUТА
                                ВХLЕ  LЕТS,IRINА,DRINК(АGDАМ)
                                   /* АSSЕМВLЕR */

                      поражают изяществом, остроумием и тонким вкусом.


                      Программирование снизу вверх наискосок:
                      https://zxpress.ru/article.php?id=7478&lng=rus

                      Programming upwards diagonally:
                      https://zxpress.ru/article.php?id=7478&lng=eng
                      Ответить
                      • > Всем переменным давайте имена ваших знакомых, любимых блюд, эстрадных ансамблей, сигарет, напитков и т. д.

                        Кое-кто собрал список почт, а теперь даёт полезные советы для кодинга.

                        Почему это мне напоминает список секретных вопросов? Хм.
                        Ответить
                        • Чорт! Надо было шифроваться. С другой учётки эту цитату кидать, чтобы не догадались.
                          Ответить
                          • - Я так раньше никогда не делала. Мне понравилось. А тебее? - сказала она после того, как я влил в неё свой заряд и, уставший, уселся прямо на ковролин на полу кабинета.
                            Ответить
      • > Эффективный код я встречаю, наверное, только в стартапах: ребята еще не урвали свой кусок пирога, поэтому их программы удобные и эффективно работающие.
        Ответить
        • У стартапов как раз часто код это "хуяк хуяк и в продакшен". Эффективный код встречается у тех, кто пишет всякую числодробительную хер-ню, которую надо сильно оптимизировать. Или те же прошивки под контроллеры, где надо в такты укладываться потому что риалтайм
          Ответить
        • После "интерактивного помошника настройки приложения", написанного на Юнити, я никаким творениям "ребят, не урвавших свой кусок пирога" не удивляюсь.
          Ответить
      • Последнее предложение наглядно показывает, что вы ни ухом ни рылом в теме, а потому рожей не вышли гугл поучать.
        Ответить
        • Ваши способы - незаконное неудобное говно, ваша мотивация - ваши кривые руки, ваши знания в лучшем случае поверхностны, а потому суждения в вопросе напоминают суждения пьяного подростка, который, разумеется, знает как надо всё переделать в мире, чтобы всем стало хорошо. Поэтому на вас и набросились. Вы, вместо того чтобы лечить чирей на сраке предлагаете оным наслаждаться. Подобное по вкусу далеко не всем.
          Ответить
        • https://i.postimg.cc/1R0fpQL8/image.png

          вычеркнул строчку в «бинго»
          Ответить
    • https://tproger.ru/s3/uploads/2021/08/pismo-autoconverted.jpeg
      Ответить
      • сегодня день сурка что ли??

        нахуя вы все несёте какого-то барана-ноунейма? вам больше подрочить не на что?

        > Xsolla занимается платёжными услугами и маркетингом для игровых студий.

        – щас бы на гейдевок-истеричек обращать усиленное внимание
        Ответить
        • нихуя ты токсик
          Ответить
          • сорян, макбук тротлится просто, нервничаю
            Ответить
            • А ты его в холодильник периодически клади.
              Ответить
              • да можно, как пацаны, мороженые мидии подкладывать
                Ответить
                • Есть вот такая фигня, аккумулятором холода называется:
                  https://general-family.ru/netcat_files/multifile/18135/64332/1228467_2.jpg

                  Пластиковый пузырь, заполненный жидкостью с высокой теплоёмкостью. В медицине используют для транспортировки вакцин и лекарств. Замораживается в морозилке, потом в течение нескольких часов способен отбирать тепло.
                  Ответить
                  • ну да, такой же используется в любой сумке-холодильнике
                    Ответить
                  • Сегодня день перекличек какой-то. Только вот читал.

                    https://www.nature.com/articles/d41586-019-03911-8
                    Ответить
                  • General Family Name
                    Ответить
        • Что-то тебя бомбануло с этого уебка
          Ответить
          • В соседнем треде его халдеев в прогармисты произвели
            Ответить
        • >сегодня день сурка что ли??


          Кстати сурка можно держать в качестве домашнего животного: Он легко приручается.
          Но каждую зиму его нужно укладывать спать
          Ответить
    • Свежая загадка про сокеты:

      Зачем петух вызвал ``connect()`` для UDP сокета.
      Чур не гуглить
      Ответить
      • Может быть, вызов заполняет какие-то поля структуры?
        Ответить
      • Потому что он прыщеблядь?
        Ответить
      • Дай подсказку. Он это специально сделал?
        Ответить
        • Специально, хотел лучше обрабатывать кое-какие ситуации
          Ответить
      • Ладно, разрешаю гуглить
        Ответить
        • Оказывается, есть функции send/recv и write/read с глобальным контекстом.

          Плюс connect вроде ещё проверяет доступность узла и сразу возвращает ошибку, если узел заведомо недоступен.
          Ответить
          • Да, именно ради проверки недоступности.

            Когда тебе приходит ICMP сообщение о недоступности узла (либо ядро сразу говорит, что не может зароутить сообщение) то UDP такое сообщение проебет, если не вызвать connect
            Ответить
            • Вот тут очень интересны критерии, по которым connect отсеивает «заведомо недоступные» узлы.
              Ответить
              • ну вероятно ядро не знает как замаршрутизировать туда пакет

                отключи шлюз по умолчанию и пингани 8.8.8.8, увидишь ошибку
                Ответить
            • А что насчёт потоконебезопасных send/recv? Так сейчас делают? Или всё-таки используют sendto/recvfrom с явным указанием адресов?
              Ответить
              • > потоконебезопасных send/recv?
                дай ссылк?

                AFAIK все функции в позиксе потокобезопасны. Есть конечно errno, но оно небось pthread-специфично

                А вот можно ли срать одновременно с двух потоков в один сокет я не знаю.
                Ответить
                • > можно ли срать одновременно с двух потоков в один сокет я не знаю

                  Мможожноное,с, елисосли тоостооррожножно.
                  Ответить
                  • Это ожидаемо. Куда хуже, если

                    срастьр мжон
                    core dumped

                    Кстати,

                    если приспособить к жопе
                    сопроцессор фирмы Cray
                    можно срать в два унитаза
                    в сорок тысяч раз быстрей
                    Ответить
                    • ни дня без баяна

                      а я тебе ещё плюсос влепил
                      Ответить
                      • А я специально задним числом набаянил
                        Ответить
          • Почему-то читаю твой ник как Элитный_nemyx
            Ответить
    • Microcontrollers

      MSP430f5510 (6kB): https://gitlab.com/jalexander8717/msp430f5510-nim

      STM32F3 (16 kB): https://github.com/mwbrown/nim_stm32f3

      Arduino + Mediatek LinkIt ONE SDK: https://github.com/gokr/ardunimo

      Arduino ESP8266 + Flashing Nim into Arduino: https://gitlab.com/NetaLabTek/Arduimesp


      j123123, когда на «Nim» пересядешь?
      Ответить
      • > j123123, когда на «Nim» пересядешь?

        Думаю что никогда.

        Nim generates unreadable C code with lots of extra bloat. For example:
        
        var users = [
            User(name: "Carl", last_name: "Black", age: 22),
            User(name: "Sam", last_name: "Johnson", age: 23)
        ]
        
        If we build this with nim c -d:release test.nim, we get
        
        STRING_LITERAL(TM_R8RUzYq41iOx0I9bZH5Nyrw_5, "Carl", 4);
        STRING_LITERAL(TM_R8RUzYq41iOx0I9bZH5Nyrw_6, "Black", 5);
        STRING_LITERAL(TM_R8RUzYq41iOx0I9bZH5Nyrw_7, "Sam", 3);
        STRING_LITERAL(TM_R8RUzYq41iOx0I9bZH5Nyrw_8, "Johnson", 7);
        NIM_CONST tyArray_m9aGbgPB3gZgFcKcDkjg9a8g TM_R8RUzYq41iOx0I9bZH5Nyrw_4 = { { ((NimStringDesc*) &TM_R8RUzYq41iOx0I9bZH5Nyrw_5), ((NimStringDesc*) &TM_R8RUzY
        q41iOx0I9bZH5Nyrw_6), ((NI) 22)},
        
        {((NimStringDesc*) &TM_R8RUzYq41iOx0I9bZH5Nyrw_7), ((NimStringDesc*) &TM_R8RUzYq41iOx0I9bZH5Nyrw_8), ((NI) 23)}}
        ;
        
        N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
        {
                TFrame FR_; FR_.len = 0;
        }
        nimRegisterGlobalMarker(TM_R8RUzYq41iOx0I9bZH5Nyrw_3);
                genericAssign((void*)users_oOczRkVOc3qtKT8rsAJzaw, (void*)TM_R8RUzYq41iOx0I9bZH5Nyrw_4, (&NTI_m9aGbgPB3gZgFcKcDkjg9a8g_));
        }
        
        N_LIB_PRIVATE N_NIMCALL(void, aDatInit000)(void) {
        static TNimNode* TM_R8RUzYq41iOx0I9bZH5Nyrw_2[3];
        static TNimNode TM_R8RUzYq41iOx0I9bZH5Nyrw_0[4];
        NTI_Qp0mfNOzxWdmSSWLHA9cnZQ_.size = sizeof(tyObject_User_Qp0mfNOzxWdmSSWLHA9cnZQ);
        NTI_Qp0mfNOzxWdmSSWLHA9cnZQ_.kind = 18;
        NTI_Qp0mfNOzxWdmSSWLHA9cnZQ_.base = 0;
        NTI_Qp0mfNOzxWdmSSWLHA9cnZQ_.flags = 2;
        TM_R8RUzYq41iOx0I9bZH5Nyrw_2[0] = &TM_R8RUzYq41iOx0I9bZH5Nyrw_0[1];
        TM_R8RUzYq41iOx0I9bZH5Nyrw_0[1].kind = 1;
        TM_R8RUzYq41iOx0I9bZH5Nyrw_0[1].offset = offsetof(tyObject_User_Qp0mfNOzxWdmSSWLHA9cnZQ, name);
        TM_R8RUzYq41iOx0I9bZH5Nyrw_0[1].typ = (&NTI_77mFvmsOLKik79ci2hXkHEg_);
        TM_R8RUzYq41iOx0I9bZH5Nyrw_0[1].name = "name";
        TM_R8RUzYq41iOx0I9bZH5Nyrw_2[1] = &TM_R8RUzYq41iOx0I9bZH5Nyrw_0[2];
        TM_R8RUzYq41iOx0I9bZH5Nyrw_0[2].kind = 1;
        Ответить
        • Какой malbodge )))

          Он хоть инфу о строчках в исходном коде оставляет чтобы это можно было дебажить? Хотя, судя по этому фрагменту, не оставляет.
          Ответить
          • Ну хз. nim c -d:release
            Ответить
          • >
            -d:release


            есть подозрение, что и не должен
            Ответить
          • Они потом это говно в репу гита комитят:
            https://raw.githubusercontent.com/nim-lang/csources/master/c_code/2_10/cgen.nim.c
            Таких файлов несколько десятков.

            Какое ворсионирование )))
            https://github.com/nim-lang/csources/tree/master/c_code
            Ответить
            • Ты просто завидуешь, что «Nim» пишет себя самого, составляясь из кобенантных цепей ворециев, пока сишники думают в какие скобки лучше обернуть тело мокроса, чтобы весь код не распидорасило.
              Ответить
              • а ты реально пишешь на ниме или?
                Ответить
                • Да. Я уже написал одну программу на «Nim»... И мне понравилось ;)
                  Ответить
                  • пора бы уже и вторую написать
                    Ответить
                    • Если уже есть одна, то зачем еще?
                      Ответить
                      • ну да

                        "это уже моя третья книга. вторую я решил не писать"
                        Ответить
                      • но вообще, если первая программа не емакс, то вопрос спорный!
                        Ответить
                    • Вторая будет маленьким сайтиком в I2P. Планирую начать когда-нибудь потом, благо на «Nim» что писать контроллер, что сайтик – сплошное удовольствие!
                      Ответить
              • Я не завидую.

                А холодно анализирую технологию, которую тут назойливо кое-кто форсит.

                Пока что: Much better than rust
                Ответить
            • > Они потом это говно в репу гита комитят

              Нахуя?

              Поди для бутстрапа через няшную их хранят, чтобы как растишкам не собирать 30 версий по цепочке?
              Ответить
              • > Поди для бутстрапа через няшную их хранят, чтобы как растишкам не собирать 30 версий по цепочке?
                Бинго!

                /* Generated by Nim Compiler v0.20.0 */
                То есть версии с 1.0 по 11.12 можно собрать очень старым v0.20.0


                Именно поэтому: «Much better than rust».
                Но вообще там многое лучше чем дrustне. Хотя и багры есть: https://govnokod.ru/27544#comment657505
                Ответить
        • Попробуй отключить «GC», может блоата станет поменьше.

          А вообще, сравнение некоректное: нужно сравнивать ASM-выхлоп (и не на хелоувордах).

          Вот ещё такой нахрюк:

          C generates unreadable ASM code with lots of extra bloat. For example: ...

          И что, не писать теперь на сишке? «Nim» – продвинутый и богат на фичи, в этом его сила. И компилируется он в ненамного более медленные программы чем сишка.
          Ответить
          • > компилируется он в ненамного более медленные программы чем сишка.

            Там походу ещё какая-то rtti-перепитушня с инфой о типе.

            struct TNimNode {
                tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
                NI offset;
                TNimType* typ;
                NCSTRING name;
                NI len;
                TNimNode** sons;
            };



            То есть zero-cost структур данных нету.
            j123123 должен оценить говняшку )))
            Ответить
            • эм

              ну без информации о типах и т.п. это будет та же уныленькая няшная, только в профиль

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

                Не совсем. Во-первых, синтаксис лучше. Во-вторых, вменяемая система пакетов.

                К тому же они хвалятся AST-макросами и гомоиконами.

                >какой в этом смысел?
                Заманить j123123.
                Ответить
                • j123123 уже попал в потные лапки Александреску(
                  Ответить
                  • Какой honeytrap )))
                    Ответить
                  • Вот да, в D можно RTTI нахуй вырубить.

                    Но D это разумеется не идеал, т.к. нет гомоиконности (mixin-ы из D это не гомоиконность).
                    Ответить
                    • Может и в nimе можно, ещё не до конца разобрался.

                      gc там отключается.
                      Ответить
                      • > Может и в nimе можно, ещё не до конца разобрался.

                        Ну попробуй найти соответствующий флаг в документации https://nim-lang.github.io/Nim/nimc.html
                        Ответить
                        • > --exceptions:setjmp|cpp|goto|quirky
                          > select the exception handling implementation

                          Т.е. вообще нахуй вырубить исключения нельзя? Какой анскилл )))
                          Ответить
                          • Меня тоже это озадачило. Но я решил посмотреть что значит goto и quirky

                            И вроде что-то есть:

                            https://nim-lang.org/araq/quirky_exceptions.html
                            "Quirky exceptions" attack all of these problems and are almost as convenient to use as traditional exceptions. Like before, we map a throw operation to setting an error indicator. And like before, we map a catch to a test of this error indicator. Unlike before, we map a function call f() to a a function call f(). Wait, what?!

                            This means after an error the program continues like nothing happened if you do not query the error indicator. In order to make debugging easier new errors do not overwrite the existing error variable.


                            Quirky Exceptions "propagate" naturally up the call stack. currentException contains the error for as long as the error wasn't handled.

                            Function composition is not obfuscated with Either and Optionals.

                            Conscious tradeoffs between the application's "error polling frequency" and the produced code sizes are made possible. Seems quite a fit for a "systems programming language".

                            Quirky Exceptions require no complex runtime mechanisms like C++'s table based exception handling. You can get easy interoperability with C and thus with all the other languages that rely on the C ABI for interoperability.


                            Звучит неплохо.
                            Ответить
                            • > This means after an error the program continues like nothing happened

                              Какой "On Error Resume Next" )))
                              Ответить
                            • Т.е. throw это «взять ручку, записать исключение в журнал и спать дальше, старший прийдёт, разберётся»?
                              Ответить
                          • Ну и где здесь анскилл, j123123? Там есть опция, чтобы передавать опции в сишный кококонпелятор, просто передай туда -f-no-exception или что-то типа того.

                            RTTI тоже можно подобным образом питушить, наверное. Это очень скилльный и модульный подход.
                            Ответить
                            • В gcc никаких эксепшенов не было (setjmp это не эксепшены). Хотя какие-то эксепшены были в сишном говнокомпиляторе мелкомягких вроде (вряд ли Nim эту хуйню умеет задействовать).

                              А про сишный компилятор с RTTI я вообще никогда не слышал.
                              Ответить
                              • Эксепшоны были в «MSVC», в «Watcom C» и ещё в нескольких компиляторах, но работали только на «Винде», потому что реализация была гвоздями прибита к SEH.
                                Ответить
                    • > RTTI нахуй вырубить

                      Да в общем-то лишь бы в объекты ничего по-умолчанию не сували. А лишнюю инфу о типах линкер уберёт, если ты её не юзаешь.
                      Ответить
                      • Не знаю, а как тогда будут работать is и of?
                        Ответить
                        • Ну как в крестах, например. Инфа добавляется только в объекты с виртуальной хуйнёй, там где она реально может пригодиться. А у остальных она лежит снаружи и линкуется только если ты её поюзал.

                          Именно поэтому я против выстраивания иерархии с корнем в Object.
                          Ответить
                          • В «Nim» есть выбор, наследоваться ли от Object. Как в питухоне когда-то давно.
                            Ответить
                            • В третьем питухоне ты просто неявно наследуешься от обжетка , и всё
                              Ответить
                          • А как же патерн матчинг?
                            Ответить
                            • А зачем тебе матчиться по рандомной хуйне?

                              По хорошему ты матчишь только ветки конкретного ADT (aka std::variant).

                              Если же у тебя полиморфный объект -- используй полиморфизм, раз уж заплатил за него. Матчинг тут не нужен.
                              Ответить
                              • Возможно, вам понравятся "kotlin sealed classed":)

                                Вообще я согласен, что принимать Object, и проверять его тип, это говнокод
                                Ответить
                                • > принимать Object, и проверять его тип, это говнокод

                                  Само собой. Если мы обрабатываем конкретные варианты, то конпелятор нам может помочь и напомнить, что мы что-то забыли обработать. Если мы обрабатываем потомков Object, то конпелятор тут бессилен. Ошибка будет только в рантайме.
                                  Ответить
                                  • Без sealed classes или их аналогов один хуй компилятор не поможет, увы. Отсюда и вырос паттерн "визитор"
                                    Ответить
                                    • > компилятор не поможет

                                      Тот самый момент, когда джава отсосала у сишки... В сишке то конпелятор ругается, если ты у енума не все ветки обработал.
                                      Ответить
                                      • вроде всего лишь ворнинг
                                        Ответить
                                        • > всего лишь ворнинг

                                          Как-будто кто-то без -Werror собирает сишный код. Но в джаве и ворнинга нету, если что.
                                          Ответить
                                      • В джаве тоже IDE может ругнуться, но к енуму не прицепишь данных в отличие от sealed класса

                                        Я помоему его уже пиарил тут? Его коко из функционалочки и подрезали
                                        Ответить
                                        • > к енуму не прицепишь данных

                                          Эм. Прицепишь. Просто набор полей будет одинаковый для всех вариантов, что весьма уныло.
                                          Ответить
                                          • Я тебя не понял. Приведи пример.

                                            Есть енум ЖЫВОТНОЕ. Есть значения КОТИК и СОБАЧКА.
                                            И поле "размер хвоста"

                                            Хочу вернуть КОТИК(42)


                                            Или ты про кортеж (ЖИВОТНОЕ, РАЗМЕР ХВАСТА)?
                                            Ответить
                                            • А ну да, поля в енуме это статика. Tagged union из него не слепить.
                                              Ответить
                                              • Ну вот в силд классах в коко можно привязать говно и потребовать перебрать все варианты вроде
                                                Ответить
                          • >> Именно поэтому я против выстраивания иерархии с корнем в Object.

                            Вспомнил, чем ещё отличались «class» и «object» в «Object Pascal».

                            «class» всегда наследовался от TObject и тащил с собой кучу RTTI. А «object» можно было объявлять с чистого листа, ни от чего не наследуя.
                            Ответить
                            • > «class» всегда наследовался от TObject
                              Думаю все кто хоть раз видел в жизни багланд быдлер и делфи помнят все эти TPituh.

                              > А «object» можно было объявлять с чистого листа, ни от чего не наследуя.
                              В жс та же фигня с прототипами у {}.
                              Вот именно поэтому я за «Object.create(null)».
                              Ответить
                              • Даже в обычном BC и TP/BP были эти "T".
                                Я смутно помню, что и турбовижен был ими обвешан.

                                Как виндоблять пишет CClass : IInterface, так борландблядь пишет TType
                                Ответить
                                • Всё так и было. «T» от «type», чтобы имена типов отличать от имён переменных, функций и других идентификаторов.

                                  Кто только придумал их всех в один неймспейс запихнуть?

                                  То ли дело «PL/1», в котором пельменным можно было давать любые имена, не парясь:
                                  IF IF = THEN THEN THEN = ELSE;
                                               ELSE ELSE = IF;
                                  Ответить
                            • Когда-то давно, когда англицкого ещё не знал, а Дельфи было будущим программирования, захотелось мне таки узнать, чем отличаются слова class и object в контексте объявления новых типов. На форумах мне быстро пояснили что я петух анскильный, и что объект — это экземпляр класса. Почему в Дельфт есть два ключевых слова мне не пояснили, но рассказали что пользоваться нужно одним, а что использования другого — признак анскиллябры заедушной. Почему-то на разных форумах анскиллябры пользовались разными ключевыми словами. В общем, ничего полезного я тогда не узнал.

                              Через несколько лет я увидел подстроечный резистор и захотел узнать, зачем у него три ноги. В большинстве случаев получал ответ «среднюю ногу нужно соединить с любой крайней, не спрашивай, почему, просто сделай». В одном случае, правда, нашёлся человек, который заявил, что нужно использовать только одну из крайних ног, а вторую можно просто оставить висеть. Тут же набежали гуру, которые пояснили ему, что если припаять только две ноги из трёх, то держаться будет непрочно, поэтому ногу нужно распаять хотя-бы для устойчивости. А раз она всё равно припаяна, то можно и соединить её со средней, потому что так надо. И только на одном форуме был человек, который изрёк, что это сделано для удобства использования подстроечника в качестве делителя напряжения, и испарился. Правда о том, что такое делитель напряжения, и как подстроечыник в этом поможет — не сказал. Но в это время я уже знал англицкий на достойном уровне, поэтому меня спас буржуйский интернет, в котором и наглядно изобразили принцип работы, и нарисовали электрическую схему происходящего внутри, и объяснили, зачем ноги соединять и что такое делитель напряжения...

                              В общем, с тех пор у меня подозрительность к рускоязычным форумам и качеству подаваемой там информации.
                              Ответить
                              • Это нормально. Мне на мои вопросы тоже редко когда отвечают, и в основном на говнокоде.

                                99% людей на форумах на самом деле знает только азы, которые наверняка ты тоже знаешь. А ответить-то им хочется, вот и отвечают как попугаи.
                                Ответить
                                • В «Ответах@Mail.ru» отвечают на те вопросы, в которых некомпетентны, чтобы тупо количеством ответов набить следующий уровень. А уровень нужно повышать, чтобы поднять лимиты на вопросы.
                                  Ответить
                                  • P.S. Самый пиздец в мейлрушных «Ответах» (по крайней мере, раньше так было, я несколько лет туда не заходил) — это то, что «ученику» (участнику без репутации) не давали писать латиницей (видимо, так боролись со спамерскими ссылками). Для того, чтобы получить право использовать латиницу, ученики надрачивали следующий уровень, отвечая невпопад.
                                    Ответить
                              • зы, напомнило:

                                Году в 2004-м я имел беседу с маководом. Тогда еще были маки на PPC.

                                Я спросил про resource fork, и почему при копировании по SMB файл ломается. А resource fork это в HFS (ябло фс) как-бы отдельный файл, в котором хранятся ресурсы (что-то типа NTFS стримов), и многие утилиты (втч позиксовые) могли отсосать, и не скопировать его.

                                Эту проблему починили в 10.4 (Tiger) в 2005-м году.

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

                                Так я ничего и не добился.
                                Ответить
                                • Читал я про эти вилки... А в «OS/2» тогда были «EA» = «extended attributes». Тоже что-то похожее на ресурсную вилку и на альтернативные стримы.
                                  Ответить
                                • тот, у кого кусок с номером получит стору блей
                                  Ответить
                                • > я имел беседу с маководом
                                  > Я спросил про resource fork, и почему при копировании по SMB файл ломается.

                                  И сразу фейл.
                                  Человек купил мак, чтобы ни о чём не думать.
                                  А к нему доебались с вопросом «как пропатчить KDE2 под OSX, при копировании SMB».
                                  Ответить
                                  • Это был макоёб-программист. Он чото там в code warriorе ваял.

                                    В ту пору у простых смертных в России маков не было практически.
                                    Ответить
                                    • > макоёб-программист

                                      Макакоёб-программист.
                                      Ответить
                                      • https://cs4.pikabu.ru/images/previews_comm/2014-09_6/14119699131669.jpg
                                        Ответить
                                  • Надо было выбирать «запустить фотонные торпеды»:
                                    https://s00.yaplakal.com/pics/pics_preview/7/7/6/10373677.jpg
                                    Ответить
                                    • Над этими ошибками смеялся автор книги "The old new thing".


                                      "Вы действительно хотите заменить файл windox.dll версии 1.3241 на файл версии 1.3242?
                                      Некоторые программы могут работать неправильно"

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

                                        Боже, храни «Compaq»:
                                        http://books.mcwees.spb.ru/?compaq.html
                                        Ответить
                              • > зачем ноги соединять

                                Чтобы при дребезге ползунка цепь не рвалась, а всё-таки шла через резистор?
                                Ответить
                                • У меня, кстати, такая же мысль была. Сопротивление при дребезге подскочит, но всё-таки не до гигаомов, а до ожидаемого значения.
                                  Ответить
                • > К тому же они хвалятся AST-макросами и гомоиконами.

                  Грамматика "Nim" явно свидетельствует о том, что гомоикон там нет. См. https://nim-lang.org/docs/manual.html#syntax-grammar
                  Ответить
                  • Да, но есть спец. питухи для работы с AST.

                    Там одно и то же выражение можно записать N способами.

                    Nim all of these are valid: foo.barBaz(), foo.bar_baz(), bar_baz(foo), barBaz(foo), barbaz(foo) etc. 
                    
                    each of these lines does the same call, just with different syntax:
                    
                    echo "hello world"
                    echo("hello world")
                    "hello world".echo()
                    "hello world".echo
                    "hello".echo(" world")
                    "hello".echo " world"

                    Выглядит пиздецово конечно.

                    Полный case insensitive и опциональные скобочки при вывозе ф-ции напоминают «Бейсик».
                    Но даже «Бейсик» не выпиливал _ из идентификаторов.
                    Ответить
                    • Мы стали забывать «D» с его «униформ кал синтакс»:
                      https://dlang.org/spec/function.html#pseudo-member
                      Ответить
                  • Зачем нужны гомоиконы, если ты уже можешь как угодно манипулировать AST в компайл-тайме?
                    Ответить
                    • А нахуя мне какой-то встроенный синтаксис? Дайте мне питушню, которой я могу делать свой синтаксис для своей DSL-хуйни, и я буду делать свой синтаксис поверх гомоикон, а дефолтный говносинтаксис с кучей хуйни мне нахуй не нужен, можете его как синтаксиальную библиотеку сделать, но встраивать - нет уж!
                      Ответить
                      • Дистрами прыщей ты тоже не пользуешься, а сам себе собираешь новый дистр под задачу?
                        Ответить
                        • в контроллерах никаких дистров прыщей нет...
                          Ответить
                          • Ну вообще говоря под некоторые контроллеры таки можно собрать какой-то дистр прыщей https://elinux.org/STM32#Linux_Kernel

                            только это под мои задачи нахуй не надо.
                            Ответить
                        • Какой rump kernel ))
                          Ответить
                          • Ты специально из шаблона выбиваешься?
                            Ответить
            • Пишут, что «We already know the type information as a graph in the compiler. Thus we need to serialize this graph as RTTI for C code generation. Look at the file lib/system/hti.nim for more information», так что не всё так плохо, там перфомансный, скилльный RTTI. Его даже сериализовали!
              Ответить
    • Задачка для прыщеблядей.
      Есть 3 сервера: в США, Германии и Новосибирске.
      Как сделать, чтобы запрос питуха, зашедшего на pethu.ru, попал на ближайший сервер?
      Ответить
      • Сервер в Германии найден на помойке?
        Ответить
        • В США и Новосибе тоже сервера с Германии.
          Ответить
        • На германской, два других - на американской и расиянской соответственно.
          Ответить
      • DNS, выдающий тебе IP ближайшего сервера. Например AWS Route53.
        Наверняка фронты типа Cloudflare тоже так работают.

        Инстансы корневых серверов умеют еще Anycast, когда один и тот же IP анонсируется разными AS, и BGP выбирает близжайшую, но простым смертным так не разрешают
        Ответить
        • Если нужно срочно вывести сервак из-под трафика (сломался), что делать?
          Ответить
          • Выкинуть его из DNS, но TTL придется поставить поменьше, чтобы старый кеш отвалился.


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

            Но лучше взять облачного провайдера: он это будет уметь из коробки (включая и переброску адресов)
            Ответить
            • > Выкинуть его из DNS, но TTL придется поставить поменьше, чтобы старый кеш отвалился.

              То есть решение не годится. Согласен?
              Ответить
              • Я же не знаю какие у тебя требования.

                Облачные провайдеры обычно дают IP не самого сервера, а фронта, на котором ничего нету: он просто перебрасывает HTTP запросы.

                Фронт обычно не ломается. А если ломается, то включают другой такой фронт, и отдают ему этот IP.

                А AWS можно купить статический IP, и самому прикрутить его к другому серверу.
                ------

                Если бы мне надо было такое для работы, я бы взял AWS. Дороговато конечно, но там это из коробки
                Ответить
                • Допустим нет никаких облаков и AWS. Я хочу понять как это работает. Мне не нужно это в реале делать.
                  Ответить
                  • Ну обычно с помощью DNSа возвращают айпишник в твоем регионе.

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

                    Есть даже протоколы CARP/HSRP/VRRP, позволяющие серверу узнать (по канальному уровню) что другой сервер недоступен, и забрать его IP.

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

              То есть IP Германии теперь будет указывать на сервер в России? Звучит как пиздежь.
              Ответить
              • Ты считаешь, что в IP захардкожена страна?

                В какой стране 173.194.220.138?
                Ответить
                • А нет? Обычно по IP (в какомнить iplocation.com) можно посмотреть в каком датацентре находится сервер. Может напиздеть?
                  Ответить
                  • Эта информация берется из whois, и обычно отражает страну, в которой находится компания (или её подразделение).

                    IP в моем примере это гугл, у него страна как-бы США, но судя по пингу в ``5ms`` он находится где-то в Европе, и уж точно не в Лос Анжелесе.

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

                    Как устроена маршрутизация внутри их автономных систем знают только они.

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

                    А если ты берешь IP гугла, и там написано США, то совершенно не факт, что этот сервер физически в штатах (скорее всего у него зеркало в Европе)
                    Ответить
                    • Понятно. Ты ответил на мой вопрос: если датацентр в Америке сгорел, Гугл своими силами перекидывает айпишники на сервера в Европе. Так?
                      Ответить
                      • Примерно.

                        Их пограничные маршрутизаторы начинают говорить, что адрес 173.194.220.138 теперь доступен не через шлюз 1.2.3.4 (америка) а через шлюз 4.3.2.1 (Европа).

                        Траффик начинает идти туда.
                        Ответить
                        • Хорошо. Если я не Гугл, у меня 3 сервера с помойки, как мне сделать, чтобы иметь возможность переключать IP на другой сервер? Напомню, что никаких облаков не существует.
                          Ответить
                          • Передать IP серверу в другой стране у тебя вряд-ли получится, если у тебя нет автономной системы, хотя если ты клиент крупного провайдера, который есть в разных странах, (и который тебе этот адрес предоставил) то провайдер может тебе такое позволить.

                            Но это надо быть очень богатым.

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

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

                            Запасной сервер может сам увидеть, что главный сдох (перестал отвечать на канальном уровне), и взять его IP, и начать по arp говорить, что теперь это он [твой-нский-ip], и тогда траффик пойдет на него.

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

                            Еще тебе нужно подумать о репликации, чтобы твой stand by сервер (запасной) имел точную копию сервера с продакшена
                            Ответить
                            • > Запасной сервер может сам увидеть, что главный сдох (перестал отвечать на канальном уровне), и взять его IP, и начать по arp говорить, что теперь это он [твой-нский-ip], и тогда траффик пойдет на него.

                              Для него оба серванта должны быть в одном DC, так что если медным тазом накроется весь DC, ты в пролёте опять. Кроме как через DNS, простой смертный вряд ли сумеет сделать DFC failover.
                              Ответить
                              • Да бгп просто хакнуть, у нас в стране так уже делали
                                Ответить
                                • Ключевое слово: простому смертному. А так да.
                                  Ответить
                                  • Простой смертный с экскаватором может управлять сетью как ему захочется
                                    Ответить
                                • bgpmon для этого есть)

                                  Про хаки BGP есть много багров
                                  https://nag.ru/material/21599
                                  Ответить
                              • Ну они должны быть в одной сети канального уровня, да.

                                Теоретически можно покрыть ею и несколько DC (запустив Level2 VPN, наверное MPLS же как-то делают), но это какое-то кривое решение ради фейл-овера, да и для этого нужно либо provider independent адреса иметь, либо чтобы оба ДЦ обслуживал один провайдер. Какой-то гемор, короче.

                                Лучше такое облакам делегировать.


                                С DNS вот есть проблема, что клиент закеширует адрес, а у него ёбнется весь ДЦ или весь провайдер, и всё.

                                Вообще будем честны: если у тебя нет автономной системы, то твой IP зависит от здоровья провайдера.

                                Ёбнулся провайдер -- ёбнулся твой сайт
                                Ответить
                                • Пиздец!!!!! И где теперь хостить вордпресс?!?!?!?
                                  Ответить
                                  • В фейсбуке

                                    Просто заведи свой кулинарный блог в фейсбуке, а не на вордпрессе

                                    Поверь, твой шаред хостер скорее сломается, чем фейсбук
                                    Ответить
                                    • Въебал минус за пропаганду проприетарщины.
                                      Ответить
                                      • Я за принцип "best tool".
                                        Если тебе нужен блог на вордпресс, то ты домохозяйка.
                                        Если ты домохозяйка, то зачем тебе ебаться с вордпрессом и хостингом?
                                        Ответить
                                        • Но я хочу новую тему из магазина!!!!
                                          Ответить
                                          • есть такой движок из начала нулевых -- miva merchant

                                            Там свой язык. Компилятор продается за $599.
                                            Люди покупают, пишут плагины типа "загрузить кастомный логотип на сайт", и продают по 10-20 баксов
                                            Ответить
                                        • > Я за принцип "best tool".

                                          Я тоже. Объективно лучшим решением всегда является СПО, и децентрализованные self-hosted решения (☆ω☆)
                                          Ответить
                                    • Но у них же там свой собственный пхп, вордпресс точно заведется?
                                      Ответить
                            • > Еще тебе нужно подумать о репликации, чтобы твой stand by сервер (запасной) имел точную копию сервера с продакшена

                              Поэтому я за кастомную БД, где можно мешать синхронные и асинхронные реплики, и уметь в cross-DC failover, не жертвуя хуйлоадом.
                              Ответить
                              • Синхронных реплик не существует. Прекратите использовать этот мерзотный термин -_-
                                Ответить
                                • Что это? Какой-нибудь 2PC вполне себе синхронный алгоритм.
                                  Ответить
                                  • Потому что не существует понятия атомарного коммита, и ты делаешь коммит сначала либо на мастере, либо на реплике, и расхождение историй неизбежно.
                                    Ответить
                                    • Ох, ну сейчас начнут говорить сначала про 2PC, потом про Paxos и Raft... Узнаю родной говнокод
                                      Ответить
                                    • wiki://two-face-commit
                                      wiki://raft
                                      Ответить
                                      • И ни один из них не предоставляет атомарного коммита.
                                        Только рафт предоставляет гарантию что сохранив мажорити закоммиченное будет гарантированно видно впоследствии. Но и это не атомарный коммит, сначала фолловеры коммитят, потом лидер об этом узнает.
                                        А в целом атомарный коммит невозможен из-за проблемы двух генералов.
                                        Поэтому ни о каких синхронных репликах мы говорить не можем, кто-то всегда будет впереди или позади.
                                        Синхронные и асинхронные процессы - это другой термин, но впрочем асинхронные нам не нужны из-за теоремы FLP.
                                        Ответить
                                        • Именно из за проблемы ромейских генералов и придумали все эти паксосы. Если трое считают, что всё заебись, а один что нет, значит один пидор
                                          Ответить
                                        • а про Бен-Ора тоже знаешь?
                                          Ответить
                                        • Ты "синхронную репликацию" (a.k.a. мастер в том или ином виде ждёт аков от реплик) подменил "атомарным коммитом" и, похоже, сам неправильно этот термин используешь:

                                          > гарантию что ... закоммиченное будет гарантированно видно впоследствии

                                          Про гарантированную видимость сайд-эффектов транзакции непосредственно после коммита говорит свойство linearazability, которого, к слову, тоже можно достичь.
                                          Ответить
                                          • linearizability это про один регистр, а не про транзакцию (которая может затрагивать много регистров), сорян

                                            я ничего не подменил. слово "синхронная" подразумевает что данные обновляются синхронно. это не так, они в любом случае обновляются асинхронно - да, из-за того что атомарный коммит невозможен. в любом случае возможен сценарий, при котором r1 увидит w2, но r2 увидит w1.
                                            Ответить
                                            • > из-за того что атомарный коммит невозможен.

                                              Ложная предпосылка. Докажи невозможность.
                                              В моём мире "атомарный коммит" значит следующее: либо все write операции транзакции применяются ко всем репликам, либо ни одна операция ни к одной реплике. Заметь, ни про какие чтения речь не идёт, поэтому следующий наброс мимо:

                                              > в любом случае возможен сценарий, при котором r1 увидит w2, но r2 увидит w1.

                                              Докажи, что в любом.

                                              > слово "синхронная" подразумевает что данные обновляются синхронно

                                              Я выше дал определение (ненаучное), которым пользуюсь.
                                              Ответить
                                              • > Докажи невозможность.

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

                                                > В моём мире "атомарный коммит" значит следующее: либо все write операции транзакции применяются ко всем репликам, либо ни одна операция ни к одной реплике.

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

                                                > Докажи, что в любом.

                                                Replica follows master: master:w1, replica:w1, master:w2, master:r1 = w2, replica:r2 = w1, replica:w2
                                                Master follows replica: replica:w1, master:w1, replica:w2, replica:r1 = w2, master:r2 = w1, master:w2

                                                > Я выше дал определение (ненаучное), которым пользуюсь.

                                                Именно поэтому и прекращайте учить детей сраму.
                                                Ответить
                                                • > Это проблема двух генералов.

                                                  При достаточно малом уровне анскилльности можно сделать так, что проблема двух генералов угрожает только liveness, но не safety.

                                                  > Один из них обязан закоммититься первым, зная, что второй не закоммитился точно, иначе никогда не закоммитится никто

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

                                                  > master:w1, replica:w1, master:w2, master:r1 = w2, replica:r2 = w1, replica:w2

                                                  Баты зожатия вореций какие-то. Ты же вообще перед этим не описал систему никак. В ней есть лочки, например? Если есть, как они устроены? В какой момент они отпускаются? Кто вообще сказал, что на реплике можно делать чтения?

                                                  > Именно поэтому и прекращайте учить детей сраму.

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

                                                    Чтения то делать можно, наверное? Если не делать каких-то поспешных выводов по одной реплике.
                                                    Ответить
                                                    • > Чтения то делать можно, наверное?

                                                      В не-анскилльной системе можно. Но я тут к тому, что файк бросается квантором forall направо и налево, а я в качестве контрпримера его утверждений предлагаю гипотетический протокол, где все операции, включая чтения, идут через мастера, и тогда файковский сценарий в принципе невозможен by construction.
                                                      Ответить
                                                      • Если все операции идут через мастера, то у тебя в систем нет реплик для клиента.
                                                        Это значит что нет никакой репликации, ни такой, ни сякой (но при переключении мастера всё равно возможен вышеописанный сценарий). Нахуя тебе реплики?
                                                        Ответить
                                                        • > Нахуя тебе реплики?

                                                          Чтобы система работала дальше если что-то упало.
                                                          Ответить
                                                  • > В реальном мире есть такая хрень как время.

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

                                                    > Если один из участников получает таймаут в состоянии

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

                                                    > где другие пиры могли уже что-то закоммитить, он просто убивает себя, рестартует, скачивает лог транзакций, подтверждённый majority,

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

                                                    > Баты зожатия вореций какие-то. Ты же вообще перед этим не описал систему никак. В ней есть лочки, например? Если есть, как они устроены? В какой момент они отпускаются?

                                                    Строго говоря, это ты пытаешься запинать меня баззвордами.

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

                                                    Но смысл в том что никакие локи никак не влияют вообще. Я описал тебе примитивнейший сценарий как и куда идут записи и чтения, совсем как у афира или в critique of ansi sql, где нужна ровно ОДНА нода, чтобы словить феномен. Какие там локи на отдельных нодах - неважно; какие локи между нодами - тоже, потому что из-за отсутствия атомарного коммита это всё равно сведется к "кто-то закоммитил, кто-то нет", как ты ими не обмажься.

                                                    > Кто вообще сказал, что на реплике можно делать чтения?

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

                                                      Коллега, откройте the Raft paper и пересчитайте, сколько раз там используются ключевые слова timer или timeout. То, что ты описываешь, называется timeless модели, и в них мало чего полезного можно доказать.
                                                      В реальности все сетевые протоколы используют время через таймауты, хартбиты и всё это. Поэтому в практических формальных моделях распределённых систем время обычно есть, с оговоркой, что оно задаёт частичный порядок, а не общий. Т.е. для одного актора может пройти ровно 0 миллисекунд, в то время как для другого пройдёт час, и так во всех кобенациях (поэтому данные модели имеют свойство экспоненциально расти).

                                                      > То мы попадаем в теорему CAP, это не таймаут, это то самое состояние неизвестности, с большой вероятностью вызванное тем что сетка недоступна и никакое мажорити не опросить.

                                                      Отлично. Не давай другим транзакциям видеть возможно незакоммиченные данные до того, как установишь связь с majority, жертвуя A в CAP.

                                                      > Строго говоря, это ты пытаешься запинать меня баззвордами.
                                                      Нет ты.

                                                      > Я описал тебе примитивнейший сценарий

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

                                                      > Нахуя тебе распределенное хранилище, на котором на реплике нельзя делать чтения?

                                                      Чтобы ты перестал ставить квантор forall. Система с числом нод == 1 — это частный случай распределённой системы.
                                                      Ответить
                                                      • > Т.е. для одного актора может пройти ровно 0 миллисекунд, в то время как для другого пройдёт час, и так во всех кобенациях

                                                        Кстати, если сделать ноды на RTOS на микроконтроллерах, и слать данные между ними по TDMA circuit switched сетке, то всё это становится ненужным. Шах и мат, ма-те-матики!
                                                        Ответить
                                                      • > Система с числом нод == 1 — это частный случай распределённой системы.

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

                                                      Ты смешиваешь liveness и safety. Я в течении всего этого треда говорила только про safety.
                                                      Создать key-value storage, который обладает обеими свойствами одновременно и правда нельзя по CAP (если не брать в расчёт экзотические определения ``C'').
                                                      Ответить
                                                      • Затем жертве говорят, что, если будет задумываться над сотворением всего существующего, изначальным и происхождением человека, то умрет, совершит самоубийство.

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

                                                        Затем заставляют представить самого себя со стороны safety.

                                                        Затем заставляют представить liveness.

                                                        Затем заставляют смешать образы safety и liveness.
                                                        Ответить
                                                        • Qwant на эту пасту первым результатом выдаёт говнокодик.
                                                          Возможно потому, что я единственный русскоязычный пользователь этого поисковика (перешла на него full time года три назад).
                                                          Ответить
                                                          • Поисковая система, которая уважает вашу конфиденциальность

                                                            Thanks for your visit

                                                            Unfortunately we are not yet available in your country.



                                                            Ж))))))))))))
                                                            Ответить
                                                            • Какой багор ))) Но рунет он при этом индексирует.
                                                              Ответить
                                                            • Как это «yet»? Раньше же работал.

                                                              Кстати, если зайти старой версией какого-нибудь браузера, то выводит: «You've been redirected automatically to Qwant Lite because the Qwant.com website is not compatible with your browser. To take advantage of the full Qwant.com website, we recommend that you update your browser».

                                                              Редиректит на https://lite.qwant.com/ , а там всё работает.
                                                              Ответить
                                                            • На глагне 12 элементов блокировано. В писковых подсказках цензурят «nigger». Ну нах.

                                                              Зато находит 2020 truly is the best year of all of the years, ever.

                                                              Following the announcement of Kobe Bryant’s death last night, MSNBC host Allison Morris said that Kobe was “just the kind of athlete, the kind of star, that was perfectly cast on the Los Angeles Niggers. Los Angeles Lakers.”

                                                              This is the funniest 9-second clip I’ve heard in months.
                                                              Ответить
                                                          • Мелкософтовский «Бинг» тоже первым результатом выдаёт говнокодик. А вот следующие результаты различаются.

                                                            P.S. Причём «Бинг» выдаёт ссылку не на HTML-страницу, а на RSS говнокода.
                                                            Ответить
                                                            • Qwant тоже выдаёт RSS, что характерно. Возможно они крадут результаты у Bing, хотя утверждают, что у них свой индекс.
                                                              Ответить
                                                              • Они в этом сами сознаются: «Our crawlers relentlessly visit the global Web to refine our results. Nevertheless, this requires both a lot of resources and time: some parts of the Web are not yet perfectly indexed. In the meantime, our agreement with Microsoft Bing allows us to complement our own results with those of Microsoft Bing to offer the best possible results from all around the Web.»

                                                                https://help.qwant.com/help/overview/how-does-qwant-index-the-web/
                                                                Ответить
                                                        • Дядя Пи вернулся через три дня после того, как на Говнякоде запостили зомбирующие вореции. Совпадение?
                                                          Ответить
                                                    • > Никаких локов в распределенных системах не существует. Максимум - резервации на оптимистичном "в ближайшее время никто кроме меня эту запись трогать не будет".

                                                      Никаких локов нет, максимум локи.
                                                      Ответить
                                                      • http://static.googleusercontent.com/media/research.google.com/en//archive/chubby-osdi06.pdf

                                                        > The Chubby lock service for loosely-coupled distributed systems

                                                        Лол, вот жеж анскиллябры из гугла.
                                                        Ответить
                                                        • > анскиллябры из гугла

                                                          Да ещё и время зачем-то притащили в распределённую систему, с атомными часами какими-то возятся...
                                                          Ответить
                                                        • У-у-у, анскильные еретики, формально верифицируют лок-сервер!

                                                          http://verdi.uwplse.org/verdi.pdf
                                                          Ответить
                                                          • Даже отче наш Лампорт обосрался: http://lamport.azurewebsites.net/pubs/time-clocks.pdf Придумал какие-то часы имени себя, и алгоритм синхронизации физических часов на основе них. Если бы он занимался распределёнными системами, он бы знал, что времени в них нет!
                                                            Ответить
                                                            • Это тот Лэсли, который придумал «LaTeX»?
                                                              Ответить
                                                            • Ну он даёт: http://lamport.azurewebsites.net/pubs/pubs.html#clocks

                                                              > Synchronizing Clocks in the Presence of Faults

                                                              Синхронизация часов. Синхронизация часов, Карл!

                                                              P.S. Если что, ITT я глумлюсь не над Файком (да хранит бог его кочан в Амстердаме), а над его преподами.
                                                              Ответить
                                                          • (* 1 - node identifiers *)
                                                            Name := Server | Agent(int)
                                                            
                                                            (* 2 - API, also known as external IO *)
                                                            Inp := Lock | Unlock
                                                            Out := Grant
                                                            (* 2 - network messages *)
                                                            Msg := LockMsg | UnlockMsg | GrantMsg
                                                            
                                                            (* 3 - state *)
                                                            State (n: Name) :=
                                                              match n with
                                                                | Server => list Name (* head = agent holding lock *)
                                                                                      (* tail = agents waiting for lock *)
                                                                | Agent n => bool     (* true iff this agent holds lock *)
                                                            
                                                            InitState (n: Name) : State n :=
                                                              match n with
                                                                | Server => []
                                                                | Agent n => false
                                                            
                                                            (* 4 - handler for external input *)
                                                            HandleInp (n: Name) (s: State n) (inp: Inp) :=
                                                              match n with
                                                                | Server => nop (* server performs no external IO *)
                                                                | Agent n =>
                                                                  match inp with
                                                                    | Lock =>                     (* client requests lock *)
                                                                      send (Server, LockMsg)      (* forward to Server *)
                                                                    | Unlock =>                   (* client requests unlock *)
                                                                      if s == true then (         (* if lock held *)
                                                                        s := false;;              (* update state *)
                                                                        send (Server, UnlockMsg)) (* tell Server lock freed *)
                                                            
                                                            (* 4 - handler for network messages *)
                                                            HandleMsg (n: Name) (s: State n) (src: Name) (msg: Msg) :=
                                                              match n with
                                                                | Server =>
                                                                  match msg with
                                                                    | LockMsg =>
                                                                      (* if lock not held, immediately grant *)
                                                                      if s == [] then send (src, GrantMsg);;
                                                                      (* add requestor to end of queue *)
                                                                      s := s ++ [src]
                                                                    | UnlockMsg =>
                                                                      (* head of queue no longer holds lock *)
                                                                      s := tail s;;
                                                                      (* grant lock to next waiting agent, if any *)
                                                                      if s != [] then send (head s, GrantMsg)
                                                                    | _ => nop (* never happens *)
                                                                | Agent n =>
                                                                  match msg with
                                                                    | GrantMsg =>  (* lock acquired *)
                                                                      s := true;;  (* update state *)
                                                                      output Grant (* notify listeners *)
                                                                    | _ => nop     (* never happens *)


                                                            Что за язык?
                                                            Ответить
                                                            • > Что за язык?
                                                              Coq.

                                                              Это ещё по-нятный код, от той же research группы есть separation logic фреймворк ``disel'', вот там кромешный пиздец-говнокод на Coq.
                                                              Ответить
                                                              • Lemma getInvSendTrans st z to msg s1 h :
                                                                  st \In (snd_trans ProtocolWithIndInv) ->
                                                                  forall (S : send_safe st z to (getStatelet s1 (plab p)) msg),
                                                                  Some h = send_step S ->
                                                                  exists st', [/\ st' \In get_st (mkWorld p) (plab p),
                                                                     t_snd st' = t_snd st,
                                                                     all_hooks_fire (mkWorld p) (plab p) (t_snd st') s1 z msg to &          
                                                                     exists S': (send_safe st' z to (getStatelet s1 (plab p)) msg),
                                                                       Some h = send_step S'].
                                                                Proof.
                                                                simpl; case: ii=>sts rts HS HR/=; rewrite /stsI.
                                                                case/Mem_map_inv; case=>st' stI/= [->]H1; case=>S Is E.
                                                                rewrite /get_st/InMem!prEq; exists st'. split=>//.
                                                                - by rewrite -HS/=; apply: (Mem_map ProtocolWithInvariant.st H1).
                                                                rewrite/send_step/=/Transitions.send_step/=/send_stepI in E.
                                                                - move=>??? F.
                                                                  apply sym_eq in F.
                                                                  move: F.
                                                                  by move/find_some; rewrite dom0.
                                                                by exists (proj1 (conj S Is)).
                                                                Qed.
                                                                Ответить
                                                              • > Это ещё по-нятный код

                                                                Кокококонкретно этот пример похож на типичный код на языке «OCaml».
                                                                Ответить
                                                                • Хорошее наблюдение, т.к. Ocaml запилил Xavier Leroy для того, чтобы написать на нём Coq.
                                                                  Ответить
                                            • > linearizability это про один регистр, а не про транзакцию (которая может затрагивать много регистров), сорян

                                              Да. И уже на уровне чтений/записей одного регистра открывается огромная банка червей.
                                              Поэтому я предлагаю вообще не тащить никакие чтения в определения атомарности транзакции.
                                              Ответить
                                              • Лол, а нахуя нам транзакции без чтений?
                                                Ответить
                                                • .
                                                  Ответить
                                                • > Лол, а нахуя нам транзакции без чтений?

                                                  >> Поэтому я предлагаю вообще не тащить никакие чтения в определение атомарности транзакции.
                                                  Ответить
                                                  • А через что её еще определять, как не "все чтения R после завершения (получения подтверждения коммита) записи W видят значение, установленное W или более поздней записью?"
                                                    Ответить
                              • Для большинства _простых_ задач хватит стримовой репликации как в постгре.

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

                                Там реплика асинхронная (как я понимаю), то есть главный сервер его не ждет
                                Ответить
      • Distributed Director
        Ответить
      • >> Как сделать, чтобы запрос питуха, зашедшего на pethu.ru, попал на ближайший сервер?

        Стал популярным, уже не справляется с нагрузкой?
        Ответить
    • https://habr.com/ru/post/571418/
      Ответить
      • 9050%
        нормы
        даёт
        Иван Гудов

        Охуенно
        Ответить
      • [quote]
        Проект, в котором я участвовал в качестве разработчика в банке, презентовали Президенту РФ, и это таки показали по телевизору. Соответственно, многим, и мне в том числе, вручили благодарности, и премии (хотя, конечно, и не из рук Президента).
        [/quote]

        хи-хи-хи
        Ответить
        • > презентовали Президенту РФ

          President Vladimir Putin's spokesman denied that the leader kept a Super Bowl ring that New England Patriots' owner Robert Kraft wanted back.
          Both sides agree that the ring, with its 124 diamonds, changed hands during Kraft's visit to St. Petersburg, Russia, in 2005.
          The New York Post reported on remarks made by Kraft, 72, at a New York awards gala Thursday.
          "I took out the ring and showed it to (Putin). And he put it on and he goes, 'I can kill someone with this ring,'" Kraft said, according to the New York Post. "I put my hand out and he put it in his pocket, and three KGB guys got around him and walked out."
          Ответить
      • Кстати, удаленка существенно повышает риск именно такого выбора. Один коллега задолго до ковида попал на удаленку, и стал "фоном" смотреть Дом 2. Мало того, что есть исследования о падении производительности при любых посторонних звуках (даже звуках природы), с этим еще ладно. Но он действительно стал сопереживать героям, погружаться в их жизнь - и при случае, заводил с коллегами обсуждения Дома 2, встречая полное непонимание.

        блядь, опять меня в интернете запалили
        Ответить
        • А другой коллега стал смотреть "Кривое Зеркало", и остроумно шутить
          А третий стал читать "политика@mail.ru" и бурно обсуждать в курилке
          Ответить
    • Как бы вы реализовывали бронирование билетов?
      Питух заходит и лочит на какое-то время все билеты до покупки. Другой питух их купить не может. Первый питух ничего не покупает.
      Я бы наверное не делел бы лочку вообще.
      Ответить
      • Бронить на время процесса покупки. Во-первых таймаут 5 мин, во-вторых держать вебсокет открытый. Отвалился/закрыл браузер -- всё. За пять не успел -- тоже не всё.

        Если вообще не бронить, то один билет купят одновременно
        Ответить
        • Как защищаться от
          1) один питух залочил все билеты одной покупкой
          2) один питух открыл 100 сокетов и залочил по паре билетов за сокет
          ?
          Ответить
          • 1) Ограничение на количество билетов за одну сессию. Скажем, вряд ли будут покупать более 6 билетов за раз. Если это экскурсия или какое массовое мероприятие, то это не через интернет делается.
            2) Регистрация, ограничения по одновременному логину, shadowban за постоянные отказы от покупки.
            Ответить
          • запрещай более 10 коннектов с одного IP, не давай лочить более одного билета

            g: оптимистичная блокировка, песимистичная блокировка
            Ответить
      • Если возможности выбора мест нет — можно не лочить, в худшем случае кому-то выдасться сообщение "пока вы тут тормозили, всё уже раскупили"
        Если есть возможность выбирать места (как в кинотеатре, скажем) — нужно лочить. Иначе петушня начнётся — все начнут пытаться покупать билеты на лучшие места, получать хуй, пытаться купить вторые лучшие места, получать хуй и срать негативными отзывами.
        Чтобы минимизировать первого питуха, нужно введение долговводимых данных (паспорт, завещание, фотографию с флажком) сделать до выбора мест и лочки. Также страница может постоянно слать keepalive сообщения на сервер. 30 секунд нет сообщений от сессии Х? Разлочиваем всё. Юзер 3 минуты не проявляет активности на странице? Высвечиваем табличку, что в целях заботы о вашей безопасности и сохранности ваших денег мы вас вылогинили, и тоже разлочиваем.
        Ответить
    • Где-то видела, кстати, как печатают на лазерной клавиатуре, размещённой у кота на пузе. Жаль моя мне скорее руку откусит, чем позволит такое сделать.
      Ответить
    • OCR словаря русского языка:
      https://archive.org/stream/XIXVII.7VII/СЛОВАРЬ%20РУССКОГО%20ЯЗЫКА%20XI~XVII%20ВВ.%20ВЫПУСК%207%20(К-Крагуярь)_djvu.txt


      BanycK 7 CjiOBapH pyccKoro H3HKa XI— XVII bb. (K — KPATy HPh)
      noflroTOBJieH Ha MaTepnajiax KapTOTenn PC HHCTHTyra pyccKoro H3HKa
      AH GCCP. B BHnycKe b enje 6ojibmeM ob'beMe, neM b npeAHAynjnx, hchojib-
      30BajiHCL Heony6jiHKOBaHHHe MaTepnajiu H3 apxHBoxpaHHJiHin, Mockbli, Jle-
      HHHrpa^a, ApxaHrejibCKa, BopoHejKa, CMOjieHCKa, IlepMH, HepAHHH h ap*
      IIpHBjieHeHBi 6hjih h HOBtie, He^aBHO BHmeflmHe H3AaHHn na mhthhk o b nncbMeH-
      HOCTH, HBJIHIOn^HXCH HCTOHHHKaMH CjiOBapH, TBKHe KBK: IIOBeCTB O IleTpe H
      OeBpOHHH. IIojlirOT. TeKCTOB H HCCJie^OBaHHe P. n. flMHTpneBOH. JI., 1979
      (coKpam;eHHe — IIob. II. h OeBpoHHH (Rm.); flpeBHepyccKHe KHHjKecKne ycTaBti
      XI— XV bb. H3fl. no^roT. H. H. EJaiiOB. M., 1976 (Khhjk. ycTaBH); IIojioqKHe
      rpaMOTH XIII— Hanajia XVI bb. Goct. A. JI. XoponmeBHH. M., 1977 (IIojioij.
      rp.); ^peBHepyccKHH jiene6HHK. Ilep. c hojibck. XV b., cn. XVII b. HoArOT.
      k nenaTH 3. H. EoHKapeBon. — B kh.: PeAKne hctohhhkh ho hctophh Pocchh,
      bhh. 1. M., 1977 (Jlen. IV); KHnra o chbhjijihx, Kojnraa 6brma h khhmh hmhhli
      h o npeApeneHHH hx. — B kh.: Hunojiau Cna&apuu. DcTeTHHecKHe ipaKTaTH.
      IIoAroT. TeKCTOB h BCTynHTejiBHan ctbtbh 0. A. EejioftpoBOH. JI., 1978 (Cna<j)a-
      pnn. 0 CHBHjuiax x ); oHepeAHOH BtinycK H3AaHHH 6epecTHHHx rpaMOT — Ap-
      ipixoecKuu A. B., Hhuh B. JI. HoBropoACKne rpaMOTti Ha 6epecie (h3 paCKOHOK
      1962—1976 it.). M., 1978 (BepecT. rp. VII) h ap*, a TaKjKe BHineAnme paHee
      ny6jiHKai];HH, nonojiHHBmHe b nocjieAHee BpeMH Kpyr hctohhhkob CjiOBapH.
      Ответить
    • Перекат!

      https://govnokod.ru/27552
      https://govnokod.xyz/_27552/
      Ответить
    • pyhobljady ne noozhny
      https://habr.com/en/post/573376/
      Ответить
      • Imenno poetomu ya za “Pee-Ache-Pee”.
        Ответить
        • вот еще
          https://habr.com/en/post/569474/

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

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

        Но как? Потому что англичане никогда не говорят «formulation of the task», они говорят «problem statement»?
        Ответить
        • Да там везде русский порядок слов

          Sometimes, if you get an error, check your file php.ini.

          Open in your favorite editor the file pathBeforeYourXAMPP\xampp\php\php.ini
          Ответить
        • - Хотел посмотреть, что возвращает функция putchar
          - Кликаю первую ссылку в поисковой выдаче
          - Parameters: character - Symbol for zapisi.Simvol passed as a value type int.

          (а возвращает значение напечатанного символа либо EOF в случае ошибки)
          Ответить
      • Автоматически редиректнули на https://habr.com/ru/post/573376/, а статья всё ещё на официальном языке Нигерии и Бурунди.
        Ответить
        • «Installing XDEBUG for XAMPP with PHP in Windows», Ahmed Thaajwer, 2019.

          а придумал вот это всё чувак с хорошим католическим именем и вот до чего докатились
          Ответить
        • Было бы хуже, если бы автоматически перевели, как в «Алиэкспрессе» или как в неофициальных клонах «Stackoverlow».
          Ответить
      • Полез по ссылкам. Резануло глаз «Speed Dating with the CodeIgniter 4 on GitHub». Это о чём?
        Ответить
        • Спидовые встречи с каким-то кодом на пхп?
          Ответить
        • > Это о чём?

          Чувак на кодигнайтере (это фреймворк какой-то?) пишет сервис для быстрых встреч?
          Ответить
          • Сам фреймворк довольно известен среди пэхапэшников:
            https://ru.wikipedia.org/wiki/CodeIgniter

            Его ценят за то, что к нему 100500 плагинов на все случаи жизни, как у популярных CMS.
            Ответить
    • нгк поплохело?

      Possibly unhandled rejection
      Ответить

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