1. JavaScript / Говнокод #27888

    −8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    interface ReturnVal {
        something(): void;
    }
    
    function run(options: { something?(): void }, val: ReturnVal) {
    
        const something = options.something ?? val.something;
        something();
        
    }
    
    function main()
    {
    	run ( { something() { print("something"); } }, null );
    }

    новая кул-фича... аналог ?. но для двух разных данных. если первое не null тогда бери его иначе второе.

    Запостил: ASD_77, 22 Декабря 2021

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

    • а дампик вот - https://pastebin.com/xfb0nA1p я специально компилю без оптимизации иначе там ваще никто ничего не поймет... хотя кому оно надо
      Ответить
    • и результат работы

      C:\temp>C:\dev\TypeScriptCompiler\__build\tsc\bin\tsc.exe --emit=jit --opt --shared-libs=C:\dev\TypeScriptCompiler\__build\tsc\bin\TypeScriptRuntime.dll C:\temp\1.ts 
      something
      Ответить
    • Какое уродливое говнище, а.
      В старом-добром JS десятилетиями существуют тернарник и оператор || без этих значков ??, ?. .?( интерфейсов, говнотипов.

      Для функций там вообще никаких проблем.
      function noop(){}
      function run(f1, f2){
          return (f1 || f2 || noop)();
      }
      
      console.log(run (null, ()=> "kakoi"))   // kakoi
      console.log(run (()=> "bagor"))        //bagor
      console.log(run ())                   // undefined
      Ответить
      • || отличается от ?? тем что || берет любое знаечение "true" это может быть что угодно... где ?? работает только с "nullable"
        Ответить
        • > Для функций там вообще никаких проблем.
          Ответить
          • если сделали - значит они знали что || проебывает там где надо ??
            Ответить
            • Очередной синтаксический подсластитель.

              Принципиально он ничего не меняет.

              95% его использования заменяется в любом языке простым isNull (a,b) или более общим coalesce (привет sql!)
              function coalesce(){
                  for (var i=0;i<arguments.length;++i){
                      if (null!=arguments[i]) return arguments[i];
                  }
              }
              Ответить
    • Ad hominem:
      1) Автор фигачит говнокоды стремительным домкратом. 260 с августа. Не уверен, что он вообще человек.
      2) В некоторых комментариях этих говнокодов есть слово llvm. Nuff said.
      3) Их темы абсолютно разные. Видимо автор гениален во всём сразу.
      Ответить
      • Ad hominem circumstantiatie:
        1) Регион автора славится своими низкоквалифицированными работниками во всех областях. На первый взгляд автор не выбивается из традиции.
        2) Это Govnokod. Если вам надо объяснять, чем он плох как форум то я сразу признаю своё бессилие.
        3) Это, уж простите за прямоту, программист с говнокода. Вы понимаете всю мощь такого комбо?
        Ответить
        • А ты вообще петух.
          Ответить
        • Это комменты с хабра?
          Ответить
        • Предположим, у меня есть Groovy udfs, и мне нужно вызвать их в моем сценарии pig.

          Там находятся /home/fs191/TraitementHadoopMDO/src/groovy/:

          Проблема в том, что когда я запускаю скрипт pig, я получаю следующее сообщение об ошибке:

          2019-10-17 17:49:32,257 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: could not instantiate com.test.commons.pig.udf.GroovyClosure with arguments [ChaineZero:chararray,/src/groovy/FormatageDonneeZero.groovy]

          В чем смысл этого, пожалуйста, спасибо
          Ответить
          • Это в Хрюкни
            Ответить
            • Скажи быстро-быстро

              I'm not the fig plucker, but the fig plucker's son.But I'll pluck figs, till the fig plucker comes.
              Ответить
    • А в твоем тупоскрипте можно написать xor linked list?
      Ответить
      • Можно.
        Взять массив (единственно полезная структура данных) и хранить xor-индексов prev/next.
        Ответить
        • Это анскильный оверхед. Надо чтоб напрямую.
          Ответить
          • Напрямую даст только DOS (и то в real mode).
            Ответить
            • Можно в модуле ядра Linux например. Или в контроллерах.
              Ответить
              • На ГК ходить тоже с контроллера?

                >в модуле ядра Linux
                Хуй-ня. Именно поэтому я за «TempleOs».
                Ответить
                • В модуле ядра Linux можно напрямую отобразить память, как в царской TempleOS https://govnokod.ru/27106#comment594307
                  Ответить
                  • Да можно и из обычной проги, если ядро не в самоизоляции...

                    З.Ы. Один хер на амд64 в 64-битном режиме пейджинг не отключается. Хоть 1:1 и большими страницами, но будет.
                    Ответить
                    • > на амд64 в 64-битном режиме пейджинг не отключается

                      Поэтому я за контроллеры. Там нет никакого "пейджинга"
                      Ответить
                      • Девочка-тинейджер,
                        Позвони на пейджер,
                        Позвони на пейджер
                        Сбоку на ремне.

                        Девочка-тинейджер,
                        Позвони на пейджер,
                        Позвони на пейджер,
                        Вспомни обо мне.
                        Ответить
                • > с контроллера

                  С циклоняшки вполне норм. Хотя она не контроллер, конечно.

                  Но память можно напрямую, на уровне сигналов SDRAM. Или это тоже лишняя абсракция и надо ещё прямее?
                  Ответить
                  • > Или это тоже лишняя абсракция и надо ещё прямее

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

                    Читал про суперкомпьютер (жаль сюда линк не кинул) в котором они выкинули виртуальную память и другую перепитушню, вносимую осями.

                    После чего добавилось несколько десятков процентов пирформанса.

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

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

                      На самом деле, кеши и префетч действительно решили большинство реальных проблем.
                      Ответить
                  • Вот как с памятью работают цари:

                    После подключения модуля ОЗУ к
                    микроЭВМ минимальной конфигурации
                    вначале отключают провод от вывода 8
                    микросхемы DD8, переводя тем самым
                    работу модуля ОЗУ только в режим
                    регенерации. Сначала осциллографом
                    проверяют на выводах микросхем ОЗУ
                    DD12-DD19 наличие адресов
                    регенерируемых строк, импульсы RAS.
                    Затем, используя простейшую
                    программу, записанную в области
                    статистического ОЗУ процессорного
                    модуля директивой «1» и запущенную
                    директивой «6», добиваются появления
                    на выходе логического элемента DD1
                    импульса обращения к ОЗУ, а на выводе
                    15 микросхем ОЗУ — сигнала CAS (табл.
                    20).
                    Ответить
                    • > Хостинг народ.ру
                      > Журнал 1989 года

                      Чувствуется лютая олдовость, да.
                      Ответить
                      • Полный текст на libgene есть, enjoy:
                        https://cloudflare-ipfs.com/ipfs/bafykbzaceafjrmxhg24buin4jz7d5x6pch27ymln2sxlh5olghzqgdekzzts4?filename=%28%D0%A1%D0%B4%D0%B5%D0%BB%D0%B0%D0%B9%20%D1%81%D0%B0%D0%BC%29%20%D0%91%D0%B0%D1%80%D1%82%D0%B5%D0%BD%D0%B5%D0%B2%20%D0%92.%D0%93.%2C%20%D0%90%D0%BB%D0%B3%D0%B8%D0%BD%D0%B8%D0%BD%20%D0%91.%D0%95.%20-%20%D0%9E%D1%82%20%D1%81%D0%B0%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%BE%D0%BA%20%D0%BD%D0%B0%20%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85%20%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%85%20%D0%B4%D0%BE%20%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%AD%D0%92%D0%9C-%D0%9F%D1%80%D0%BE%D1%81%D0%B2%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B5%20%281993%29.pdf
                        Ответить
                    • Именно поэтому j123123 за контроллеры. Там нет никаких "RAS" и "CAS".
                      Ответить
                      • Не нужны никакие контролеры. Апостол Павел с Петром на воротах чужих не пускают.
                        Ответить
          • The price for the decrease in memory usage is an increase in code complexity, making maintenance more expensive;
            Ответить
        • Анскильные говноязычки с GC или рефкаунтингом не позволяют нормально реализовать xor linked list. Поэтому я за Си
          Ответить
          • Позволяют. См. выше.
            Ответить
            • Нет, это хуйня, там ко-ко-косвенная адресация будет, а это оверхедно.
              Ответить
              • Везде ко-ко-косвенная.

                Царь предлагал виртуальную память выкинуть к ебеням, но анскильные выблядки навернули ещё 3 слоя абасракций.
                Ответить
                • В контроллерах не косвенная.
                  Ответить
                  • в 2021 веке воевать за сохранение 1 байта данных - это супер круто... а главное только сумасшедшие будут это делать :)
                    Ответить
                    • > а главное только сумасшедшие будут это делать :)

                      Воистину.
                      https://govnokod.ru/27882#comment750845
                      Ответить
                • > ещё 3 слоя абстракций

                  Кстати, видел сколько страничек читается при двойной трансляции адресов (EPT)?

                  Вот где косвенная адресация...
                  Ответить
                  • > видел сколько страничек читается при двойной трансляции адресов (EPT)?

                    Не, не в курсе. Там же вроде есть специализированные инструкции и какие-то hardware блоки?

                    В принципе это я имел ввиду: какая-то скриптуха или йажа (vm) внутри докера на виртуалке в облаке, и в ОС где у каждого процесса виртуальная память.
                    Ответить
                    • > hardware блоки

                      Да тот же TLB, насколько я понимаю. Просто при холодном TLB приходится делать N^2 обращений к памяти, а не 2*N как многие думают...
                      Ответить
                  • > Mode Based Execution Control (MBE) is an extension to x86 SLAT implementations first available in Intel Kaby Lake and AMD Zen 2 CPUs.
                    > The extension extends the execute bit in the extended page table (guest page table) into 2 bits - one for user execute, and one for supervisor execute.

                    > MBE was introduced to speed up guest usermode unsigned code execution with kernelmode code integrity enforcement.
                    > Under this configuration, unsigned code pages can be marked as execute under usermode, but must be marked as no-execute under kernelmode.

                    Забавно. Причём это совсем свежее (Kaby Lake and AMD Zen 2 CPUs)
                    Предлагаю для Йаж ещё третий NX-бит сделать, чтобы всякие log4j не исполняли шо попало.
                    Ответить
                    • Инструкцию CLJ чтобы сбросить флаг J и запретить исполнение джавы.
                      Ответить
          • у меня GC отключается через "-nogc". А теперь живи с этим :)
            Ответить

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