Куча говна / Говнокод #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 nepeKamHblu_nemyx, (Updated )

Комментарии (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.
    Остерегайтесь подделок. Берегите себя и своих близких. Кок!
    Ответить
    • Не, у них всегда есть кому высказаться... Иначе по 3 часа бы не сидели.
      Ответить
      • на фразу "у меня ничего" тратится секунды три. то есть за минуту могут таким образом высказаться 20 человек, за час 1200, за три часа 3600. большая у Макаки команда
        Ответить
        • Ещё и дойти до митинга нужно.
          Ответить
            • У нас, например, минут 5 тратится на то, чтобы подождать опоздавших.
              // не макака
              Ответить
                • По разному. Иногда его ждут, иногда он.
                  Ответить
              • Лайфхак: если приходить последним, то тебе не придётся терять время на ожидание опоздавших.
                Ответить
            • Кстати, в копрорациях любят всякую геймификацию и тимбилдинг. Можно митинги проводить в формате "7 минут в раю"
              Ответить
  • > а другому пользователю с этого ip достанется хуй

    Кстати, вот интересно, мобильный NAT понимает клиентские RST пакеты? Или если сервер сойдёт с ума и отправит в ответ пару гигабайт, то весь трафик засчитается клиенту, даже если он пытается от него отказаться?
    Ответить
    • Для этого ему придется пробить tcp window, клиент-то аки обратно слать не будет
      Ответить
      • Для простоты предположим, что клиент серверу очень не понравился и он решил ему отправить ответ через raw сокет, забив на размер окна и прочие мелочи.
        Ответить
          • что мешает эмулировать TCP по RAW сокету?
            Ответить
        • Ты еще спроси засчитывается ли паразитный траффик
          Ответить
    • какой скучный язык
      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».
        Ответить
          • Я анскильный, поэтому ещё не написал.

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

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

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


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

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

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

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

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

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

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

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

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

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

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

            В целом это полезная идея, чтоб 20 раз одно и тоже не писать
            Ответить
            • кстати, а есть вроде аналоги аннотаций и в нящной, но компайл ер специфик
              Ответить
          • 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+ ']' ']'

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

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


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

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

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

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

          нужно писать код отдельно и кокогенерировать
          Ответить
  • 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.
                  Ответить
                  • > малинки

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

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

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

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

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

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

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


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

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

                Как рабочие вокруг ямы: один копает, пятнадцать курят.
                Ответить
                • Скорее как в армии: как выкопать пять ям ротой в 100 человек? Копают все 100, но вот лопаты дают только пятерым.
                  Ответить
    • С расширениями 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-принтере?

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

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

        Сетевуха не умеет конечно, так что пока будет 1 гигабит, но рано или поздно я обновлю хозяйство
        Ответить
            • А, у тебя без фольги? А зачем такой кат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
    Ответить
    • иными словами, дома на кухне подвергали сомнению решения руководства
      Ответить
        • Да просто смешно

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

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

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

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


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

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

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

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

    што такое 258EAFA5-E914-47DA- 95CA-C5AB0DC85B11
    Ответить
    • GUID?

      Может ещё ключ для Старфорса времён третьего Дума
      Ответить
          • В 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
    Ответить
    • Волкодав - да это не теория, а вполне себе практика 😀
      Большие конторы типа того же Гугла и даже Яндекса дают разрабам очень хорошие железяки. И тестировщикам тоже дают только железяки, которые официально поддерживаются (может, ещё минус пара версий и всё). Ну и вот и здрасьте. Потому что если любого Гео поддерживать до морковкина заговенья, никаких ресурсов не хватит.


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


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

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

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

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

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

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

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

                      Они же уже настройки дисков сломали. Админам приходится больше пердолиться, когда очередной толерастный луникс в новой версии не хочет нормально конфигурироваться, и потом восклицать "вот же б-ди", когда осенит, почему не работает.
                      Ответить
                  • Всем переменным давайте имена ваших знакомых, любимых блюд, эстрадных ансамблей, сигарет, напитков и т. д. Легко видеть, что фрагменты типа:
                    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
                    Ответить
                    • > Всем переменным давайте имена ваших знакомых, любимых блюд, эстрадных ансамблей, сигарет, напитков и т. д.

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

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

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

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

      – щас бы на гейдевок-истеричек обращать усиленное внимание
      Ответить
  • Свежая загадка про сокеты:

    Зачем петух вызвал ``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
                  можно срать в два унитаза
                  в сорок тысяч раз быстрей
                  Ответить
    • > 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» пишет себя самого, составляясь из кобенантных цепей ворециев, пока сишники думают в какие скобки лучше обернуть тело мокроса, чтобы весь код не распидорасило.
            Ответить
              • Да. Я уже написал одну программу на «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.
              Ответить
                • Вот да, в D можно RTTI нахуй вырубить.

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

                    gc там отключается.
                    Ответить
                      • > --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 нахуй вырубить

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

                        Именно поэтому я против выстраивания иерархии с корнем в 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 в контексте объявления новых типов. На форумах мне быстро пояснили что я петух анскильный, и что объект — это экземпляр класса. Почему в Дельфт есть два ключевых слова мне не пояснили, но рассказали что пользоваться нужно одним, а что использования другого — признак анскиллябры заедушной. Почему-то на разных форумах анскиллябры пользовались разными ключевыми словами. В общем, ничего полезного я тогда не узнал.

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

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