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

    0

    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
    Promise.resolve().then(async () => {
        await f();
    }).catch(e => console.log('Popalsa pidrila!'));
    
    async function f(){
        await n();
    }
    
    function n() {
        Promise.reject('pidrila');
    }
    
    process.on('unhandledRejection', error => {
        console.log('oxyel!', error);
      });

    Запостил: mazhuravlev, 16 Февраля 2018

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

    • Осинк на овейте промисом хуёмиса погоняет, блядь!
      Ответить
    • async / await must die
      Ответить
    • es2015?
      Что бы вы все делали если бы не babel:)
      Ответить
      • es2017, зачем babel, все и так работает
        Ответить
        • Нода?
          Ответить
          • ну понятно что нода, чтож еще)

            Кстати, я недавно узнал что для node юзает либу libuv. Она умеет платформенное IO : на линуксе унас epoll, на маке kqueue а на винде completion ports.

            так что пока всякие питоны и руби сосут наколенную эмуляцию posix в винде, нода юзает настоящщые виндовые API. И кажется даже умеет console api, так что любимый Семой доеб "прышебляди не умеют юникод в виндовой консоли" дляноды не актуален

            Теперь не могу jS, но должен скзать что нода -- единственная КРОССПЛАТФОРМЕННАЯ платформа
            Ответить
            • Что за IO?

              > всякие питоны и руби сосут наколенную эмуляцию posix в винде
              Общеизвестный факт, но IO там вроде нормальное жи. Вывод цветного текста в колораме работает так: она выводит анси последовательности, а на винде стоит дополнительный костыль, которых их превращает в вызовы api.

              > И кажется даже умеет console api, так что любимый Семой доеб "прышебляди не умеют юникод в виндовой консоли" дляноды не актуален
              СУКА ПИЗДЕЦ, ОНО МОЖЕТ!

              >node -e "console.log('äääыыы')"
              äääыыы
              Ответить
              • >>Что за IO?
                Асинхронное IO. Чтобы обслуживать сразу много сокетов или каких-то других потоков.
                У каждой платформы есть для этого свой "уникальынй" инструмент. У винды, общепризнанно, это completion ports (ну почитай в msdn). Ну вот нода их умее.

                >а на винде стоит дополнительный костыль, которых их превращает в вызовы api.
                Разумеется. Потому что виндовая консоль не умеет в esc последовательности (все другие умеют). Винда тоже когда-то умела (ansi.sys), но это было в 9x. В NT не умела
                Где-то пролетал какой-то слух что хотели научить ansi colors, но вроде забили.

                ну вот нода умеет и цвета и кодировку (ну то-есть вместо printf она юзает Writeconsole и срет туда честным юникодом. Остальные прыщеговны сосут буй

                >ruby.exe -e "p 'абырвалг Straße'"
                "\xD0\xB0\xD0\xB1\xD1\x8B\xD1\x80\xD0\xB2\xD0\xB0\xD0\xBB\xD0\xB3 Stra\xC3\x9Fe"
                
                >python.exe -c "print('абырвалг Straße')"
                рс√Ётрыу Stra?e
                
                
                >node -e "console.log('абырвалг Straße')"
                абырвалг Straße
                Ответить
                • Ты питон двойку запустил с байтовым литералом. С юникодом эта хуйня падает сразу же.

                  А как делать цвета в ноде?
                  Ответить
                  • ну вот тебе юникодный литерал, он правда попытался рекоднуть в однобайтовую и лососнул тунца

                    python.exe -c "print(u'абырвалг Straße')"
                    Traceback (most recent call last):
                    File "<string>", line 1, in <module>
                    File "c:\[.....]\lib\encodings\cp866.py", line 12, in encode
                    return codecs.charmap_encode(input,errors,encod ing_map)
                    UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-7: character maps to <undefined>


                    В тройке может и сработает, там в какой-то момент вроде это лечили
                    вот пеп, приземлился в 3.6: https://www.python.org/dev/peps/pep-0528/

                    ура! питон больше не прыщиговно?

                    >>А как делать цвета в ноде?
                    я на под ноду не пишу особо, но npm и yarn же как-то делают. или думаешь там тоже костыль?

                    зы: ну вот есть пакетики, правда они могут конечно иметь нативный код и дергать console api
                    https://github.com/Marak/colors.js
                    Ответить
                    • Не знаю, у меня 3.4.

                      > они могут конечно иметь нативный код и дергать console api
                      Что они дергают мне в принципе похуй, лишь бы работало.
                      Ответить
                      • у меня лапки

                        пока бы обновляться
                        Ответить
                        • Для этого надо XP обновить, а на нем слишком дохуя софта
                          Ответить
                          • ахахаха, ты в соседней ветке говорил что PS надо было ставить чуть-ли не 10 лет назад, а сам сидишь на XP
                            Ответить
                            • ебливый пасс в москве угостит анусом, армяне чечены даги азеры - велкам! встреча на любой территории, бдсм амуницию ношу с собой, любые желания за твои деньги! пиши прямо сейчас [email protected] антон ЖДУ
                              Ответить
                            • ебливый пасс в москве угостит анусом, армяне чечены даги азеры - велкам! встреча на любой территории, бдсм амуницию ношу с собой, любые желания за твои деньги! пиши прямо сейчас [email protected] антон ЖДУ
                              Ответить
                            • Ну сегодня-то ясно, что шкриптинг на винде - это ps. Тогда хз как это было. Но cmd точно говно.
                              Ответить
                              • тогда был js/vbs, windows script host и WMI
                                Ответить
                                • Таки когда ps у админов взлетел? Мне казалось, что давно.
                                  Ответить
                      • у меня лапки

                        пока бы обновляться
                        Ответить
                • API вызовы IO это низкоуровневая хуйня. В питоне пару лет как уже есть кроссплатформенное асинхронное IO. Вот только кому оно надо?
                  Ответить
                  • ты про asyncio?
                    Я не уверен что оно юзает completion ports под капотом

                    >>Вот только кому оно надо?
                    ну вдруг ты захочешь 20 000 человек обслужить одним скриптом?
                    Ответить
                    • Наверно asyncio.

                      Проблема с асинхронным апи в том что оно другое. Синхронное используется в 100500 модулях под капотом. Будешь каждый модуль патчить?
                      Ответить
                      • напишу красивую обертку или заманкипатчу все синхронные вызоы
                        Ответить
                        • Ну есть у тебя модуль mod1, дергающий mod2, который дергает синхронное IO. Дерзай.
                          Ответить
                          • да говно, говно, не спорю

                            надо патчить на уровне платформы чтобы все синхронные вызовы стали асинхронными не изменив при этом семантики!)

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

                                Видимо потому что у питона нет apicа с таймером
                                Ответить
                                • Пример как это сделать можно?

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

                                  > apicа с таймером
                                  Что это?
                                  Ответить
                                  • ну вот gevent пытался манкипатчить блокирующие функции
                                    https://github.com/gevent/gevent/issues/1070

                                    >>синхронизации
                                    это кстати именно та причина, по которой Гвидо не хочет отказываться от GIL в CPython: потому что тогда придется думать про синхронизацию и все станет медленее))

                                    >>Что это?
                                    Внутри процов начиная с P6 (PPro наверное) есть местный контроллер прерываний и в нем есть таймер.
                                    Тащемто таймер и раньше был, просто снаружи от проца.

                                    ОСь программирует таймер, таймер поджигается через одинаковое количество времени (или не одинаковое, см tickless kernel) и вызывает прерывание. Проц бросает всё, что он делал, и обсулижвает прерывание. Обработчик прерывания (установленный осью) запускает шедулер, который выбирает нужный процесс и загружает его. Так что даже если ты все нафиг заблочил, то тебя все равно прервут.
                                    Так работает вытесняющая многозадачность.

                                    Ну а во всяких asyncio программа явно должна отдать управление (вызвав асинхронную функцию), так что если один из потоков сделает блокирующий вызов то весь asyncio пойдет по пизде. Ну вот я и сказал что у процесса-то нет таймера нет
                                    Ответить
                                    • > пытался манкипатчить
                                      И как, получилось? А сокеты патчить? А всякие там вызовы pycurl?

                                      О синхронизации и сейчас надо думать, правда, меньше.

                                      Блин, ты все в кучу намешал - аппаратную реализацию таймера и питон.
                                      > Ну а во всяких asyncio программа явно должна отдать управление (вызвав асинхронную функцию), так что если один из потоков сделает блокирующий вызов то весь asyncio пойдет по пизде.
                                      Ну да, и? Че сказать хотел?
                                      Ответить
                                      • ебливый пасс в москве угостит анусом, армяне чечены даги азеры - велкам! встреча на любой территории, бдсм амуницию ношу с собой, любые желания за твои деньги! пиши прямо сейчас [email protected] антон ЖДУ
                                        Ответить
            • > Теперь не могу jS, но должен скзать что нода -- единственная КРОССПЛАТФОРМЕННАЯ платформа
              Все так. Приятно видеть первоклассную поддержку, а не "у нас вроде работает, а дальше сам ебись."
              Ответить
              • Дальше сам ебись.
                Ответить
                • Ты видимо тоже не понимаешь что за хуйню несут эти люди?
                  Ответить
                  • Вообще даже пример не понимаю о чем тут базарят, лол. Это не вореции? Выписал список незнакомых аббревиатур с первой страницы говностока: ISE, RIA, cmdlet, WMF, RPCoverHTTPS, winrm, soap, M$, MAPI.
                    Ответить
            • > --
              Ты опять выходишь на связь?
              Ответить
            • > я недавно узнал

              Поздравляю. libuv в принципе изначально разработали для ноды. Это уже потом libuv во многие другие среды просочился.

              > нода юзает настоящщые виндовые API

              Счастье-то какое, а то ведь очередь уже выстроилась из тех, кто хочет жс-серера на винде запускать.
              Ответить
              • парень в сексуальном кружавчике обслужит парня или группу парней предпочтение кавказцам все позы секс-практики и секс-игрушки, любые желания за твои деньги, презы с меня! пиши прямо сейчас [email protected] антон ЖДУ
                Ответить
              • >>Поздравляю
                Я старался JS за семь верст обходить, так что не знал.

                >>а то ведь очередь уже выстроилась из тех
                Как ни странно такие бывают. JSер вполне может сидеть на винде и хотеть девелопить (и даже хостить, лол) там что-то бекендное
                Ответить
            • Есть еще жавка
              Ответить
        • особенно в вебе;)

          зы: мир JS меняется каждый день. наши фронтэндеры недавно рассказали мне что npm уже не рулит и пересадили на yarn. Сразу всплыли все неявные peer dependecies в package.json и все сломалось
          Ответить
          • npm с какой-то версии резко стал очень даже ничего, наверное с пятой
            Ответить
            • ну да, с тех пор как lock стали уметь (хотя shrinkwrap и раньше был)
              но yarn все равно умеет ставить параллельно, и потому быстрее.
              Ответить
              • быстрее, иногда в 10 раз бывает разница
                Ответить
                • Это как если сравнивать частоту фрикций у черепахи и у кролика?
                  Ответить
                  • у блядской черепахи и блядского кролика
                    Ответить
                  • Блин, а черепахи опасны: самец черепахи в брачный период может принять пловца за самку, схватить его ластами и утопить.
                    Ответить
              • А в каких ситуациях нужна быстрая замена npm? Насколько я понимаю, это же разовая операция - установил пакеты и запускай сервер. А обновления можно и ночью ставить.
                Или в мире JS уже модно ставить нужные пакеты на лету во время обработки запроса?
                Ответить
                • >> Насколько я понимаю, это же разовая операция - установил пакеты и запускай сервер
                  ну вот я сделал ``git pull`` и наверное надо заинсталлить те 150 пакетов которые там появились в package.json, и я не хочу ждать.

                  А еще install --production случается во время билда проекта на CI. Там тоже время лучше не тратить
                  Ответить
                • Автоматическое тестирование, например.
                  Ответить
                  • ебливый пасс в москве угостит анусом, армяне чечены даги азеры - велкам! встреча на любой территории, бдсм амуницию ношу с собой, любые желания за твои деньги, презы с меня! пиши прямо сейчас [email protected] антон ЖДУ
                    Ответить
                  • Чем тестируете? мочой?
                    Какой CI сервер?
                    Ответить
      • Ах ты ж бабелина!!!
        Ответить

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