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

    0

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

    #123: https://govnokod.ru/27729 https://govnokod.xyz/_27729
    #124: https://govnokod.ru/27730 https://govnokod.xyz/_27730
    #125: https://govnokod.ru/27732 https://govnokod.xyz/_27732
    #126: https://govnokod.ru/27733 https://govnokod.xyz/_27733
    #127: https://govnokod.ru/27737 https://govnokod.xyz/_27737
    #128: https://govnokod.ru/27742 https://govnokod.xyz/_27742
    #129: https://govnokod.ru/27747 https://govnokod.xyz/_27747
    #130: https://govnokod.ru/27755 https://govnokod.xyz/_27755
    #131: https://govnokod.ru/27766 https://govnokod.xyz/_27766
    #132: https://govnokod.ru/27790 https://govnokod.xyz/_27790
    #133: https://govnokod.ru/27828 https://govnokod.xyz/_27828
    #134: https://govnokod.ru/27834 https://govnokod.xyz/_27834
    #135: https://govnokod.ru/27839 https://govnokod.xyz/_27839
    #136: https://govnokod.ru/27845 https://govnokod.xyz/_27845
    #137: https://govnokod.ru/27857 https://govnokod.xyz/_27857
    #138: https://govnokod.ru/27867 https://govnokod.xyz/_27867
    #139: https://govnokod.ru/27887 https://govnokod.xyz/_27887
    #140: https://govnokod.ru/27900 https://govnokod.xyz/_27900
    #141: https://govnokod.ru/27914 https://govnokod.xyz/_27914
    #142: https://govnokod.ru/27942 https://govnokod.xyz/_27942
    #143: https://govnokod.ru/27960 https://govnokod.xyz/_27960
    #144: https://govnokod.ru/27972 https://govnokod.xyz/_27972
    #145: https://govnokod.ru/27996 https://govnokod.xyz/_27996
    #146: https://govnokod.ru/28008 https://govnokod.xyz/_28008
    #147: https://govnokod.ru/28049 https://govnokod.xyz/_28049
    #148: https://govnokod.ru/28087 https://govnokod.xyz/_28087
    #149: https://govnokod.ru/28136 https://govnokod.xyz/_28136
    #150: https://govnokod.ru/28157 https://govnokod.xyz/_28157
    #151: https://govnokod.ru/28209 https://govnokod.xyz/_28209
    #152: https://govnokod.ru/28217 https://govnokod.xyz/_28217

    Запостил: nepeKamHblu_nemyx, 21 Июня 2022

    Комментарии (382) 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.
      Остерегайтесь подделок. Берегите себя и своих близких. Кок!
      Ответить
    • Допустим, есть зараженная флешка с BadUSB.
      Мне необходимо воткнуть ее в незараженный компьютер и скинуть оттуда файл.
      Какую ОС можно использовать, чтобы воткнуть ее и не заразить компьютер?
      *NIX, Windows не подойдут. Kolibri тоже, т.к.
      http://wiki.kolibrios.org/wiki/Shell/ru
      Все команды похожи на никсовые, а значит BadUSB может выполниться успешно, имитируя клавиатуру.
      Что посоветуете?
      Ответить
      • Возьми кокококонтроллер с юсб, залей прошивку для доступа к файловой системе, слей данные через UART.
        Ответить
      • Тебя наебали, рефит в BadUSB потратил функцию масс стораж.
        Ответить
        • Не обязательно. Можно притвориться хабом с воткнутой флешкой и HID-устройством, для незаметности.
          Ответить
          • Тогда логичнее было бы быть составным усройством.
            Ответить
            • В чем разница?
              Ответить
              • А сам как думаешь? Хочешь с нуля софтварный хаб писать?
                Ответить
                • В чем разница между хабом и составным устройством?
                  Ответить
                  • составное устройство поддерживает несколько классов одновременно

                    например hid и mass storage
                    или самотык и принтер

                    а хаб это хаб: через него подключаются другие устройства и он сам устройство тоже


                    надо вызвать броманда, он в спеке USB хорошо рубил, и даже пояснял мне за companion controllers, когда мне надо было устройство на хабе выключать
                    Ответить
                    • Жалко что ему это к зарплате ничег оне прибавило.
                      Ответить
                    • > усройство на хабе выключать
                      Ничего не получится, нужен хаб с per-port powers witching, а они очень редкие. Я, например, на авито брал царапанный для экспериментов.
                      Ответить
                      • У меня был root hub вроде.

                        Короче, мне надо было расширить ioctl интерфейс драйвера контроллера одной хорошей ос, чтобы с юзерспейса отключать устройство.



                        См пождробнее
                        https://govnokod.xyz/_24386/#comment-374071
                        Ответить
                        • > root hub
                          У этих ganged powers witching, ни разу не встречал per port.

                          > одной хорошей ос
                          Как не изъебывайся, всё равно прыщи.
                          Ответить
                          • не, у прыщец для этого есть API через sys
                            /sys/bus/usb/devices/ -> кудато-туды
                            Ответить
                            • > /sys/bus/usb/devices/
                              Жопа-сручка какая-то. Есть же приятная libusb как раз для всего этого.
                              Ответить
                              • так поди через туже дырку и работает?
                                /sys/ просто для шелла удобный

                                в обещм в той ОС нельзя было суспендить порт (а в прыщах можно было)

                                Моими стараньями стало и там можно, но потом оказалось, что это никому не надо
                                Ответить
                                • Я не знаю, как оно устроено внутри, но получилось приятно и даже до некоторой степени портабельно.
                                  Ответить
      • OpenVMS?
        Ответить
      • Что такое «заражённая флешка»? Что за эксплойт, что автоматом запускается при вставке?
        Ответить
        • ↑ не умеющий пользоваться гуглом.

          Это устройство, которое притворяется клавиатурой / другим устройством ввода.

          Оно может вызвать консоль и набрать пару команд от текущего юзера.
          Так, как HID подключается и устанавливается автоматически в большинстве систем, большинство систем уязвимы. Антивирусами определить невозможно, потому что внешне ничем не отличается от обычной клавиатуры.
          Ответить
          • На самом деле FUD абсолютно валидный, поскольку заражение BadUSB - это лол. А так-то крутой хаккирский дивайс, от которого все кипятком писаются и рассказывают байки - вещь весьма редкая, как и успешные взломы с его помощью.
            Ответить
            • Что за фуд?
              Ответить
              • Fast FUD.

                Кстати, если бы и существовали мистические флешки для взлома Петногона, то решение простое:
                Router>
                *Jun 21 19:52:10.950: %USB_HOST_STACK-5-USB_ENUM_UNSUPPORTED_DEVICE: Unsupported device inserted. Host id 1, Device Addr 18.
                Ответить
                • ena сделай, ну
                  Ответить
                  • ter mon достаточно для эверивана
                    Ответить
                    • это дебаг в терминал высрать?

                      Я проебал свой packet tracer, надо бы скачать, а то из живых сисек у меня тока 800е и какой-то древний каталистический свиЩ, да и те далеко
                      Ответить
                      • Да, логгирование.

                        > 800е
                        Понятие очень растяжимое,может быть 801 и может быть 891
                        Ответить
                        • Ну 800-е это сохо.

                          У меня есть прошловековая 802 кажется, там есть ком порт, я туда роботикс курьер вткал, и делал дайлап и дайлин, и тек.
                          Собссно, это первый раз был, когда я до сиськи дорвался двацать лет нозад.

                          Вторая -- 857w кажется. Я ее подюключал по ADSLю к Ростелекому (тогда у нас назывался Авангард).

                          Ради настройки этой шляпы я и разбирался как ADSL устроен: всякие ADSL2, ADSL+ и пр, поверх ATM с его PVC, поверх encapusaltion level, эмулящий ethernet, а поверх (уже в моем случае) PPPoE, а дальше уже Интрент (хотя PPP можно вроде и поверх ATM сразу запустить).

                          Пирдоль была адская, пришлось книжку про ATM читать.

                          Потом такая же пирдоль была с обратной стороны, где dot11, потому что я тогда wifi еще слабо понимал.
                          Это был еще G с скоростью 45 (а нетто реально 20 была).

                          Даже хотел статью нахабр написить, но забил
                          Ответить
                          • > 857w
                            Собери на ней нечто подобное pierdole pihole.

                            > PPP можно вроде и поверх ATM
                            This. LANE не нужен.
                            И вообще надо было FastStep поставить и заполнить подстановки в шаблоне.

                            > dot11
                            Во всех W они по умолчанию не хотят чтобы ты бриджил wired и wireless, и очень правильно делают.
                            Ответить
                            • LANE это вроде эмуляция именно бродкаста поверх P2P сетей ATM, там был спец bounce server или как-то так, а у Авангарда был Ethernet over ATM просто, без поддержки бродкаста.

                              но это всё часть AAL5.

                              Блядь как это было давно всё, всё уже забыл
                              Ответить
                            • >Во всех W они по умолчанию не хотят чтобы ты бриджил wired и wireless, и очень правильно делают.


                              Ну смотря для чего: дома у меня бридж конечно, потому что зачем мне маршрутизацию между ноутом и десктопом делать? Чтобы мультикасты не ходили?

                              А гости в отдельном мосту конечно, без доступа к локалке
                              Ответить
                              • > дома у меня
                                Как человек эпохи возрождения, спишь на втором этаже, а внизу держишь лавку branch office.
                                Ответить
          • А должен я гуглить любую хуйню, которую где-то вбросили?
            Ответить
          • Ебать говно.
            Ответить
          • ну тогда ты прав, надо сделать хаб, который не пропускает HID, а только лишь mass storage
            Ответить
    • Nee, je bent geen mens, je bent een varken
      Ответить
      • Men wordt niet als soldaat geboren, men wordt als soldaat gedood.
        Ответить
        • я знаю, я про это песню у Летова слушал. А кто такой "men"?
          Ответить
          • Безличное местоимение. Относится к «неопределённой группе лиц». Употребляется как квантор всеобщности, т. е. когда говорят об общеизвестном факте. По нелепой случайности глагол ставится в единственное число.

            В немецком оно звучит как «man». Мартин Хайдеггер ввёл «феномен das Man», добавив к этому местоимению артикль, как к существительному. Гугли Хайдеггера, найдёшь этот феномен.
            Ответить
            • То есть типа "people"?
              Я такого еще не проходил:) Я знаю только man/mannen и mens (в смысле человек)
              Ответить
              • Как будет по-нидерландски «можно» и «нужно»?

                По-немецки будет «man kann»/«man darf» и «man muß»/«man soll». Т. е. буквально «неопределённое лицо» может или должно.
                Ответить
                • P.S. Погуглил. Всё-таки нидерландцы чаще употребляют конкретные личные местоимения. «Men» берегут на случай правил и обобщений.

                  Да, похоже, что ещё употребляют, когда англичане говорят «people»:

                  https://context.reverso.net/перевод/голландский-русский/men
                  Ответить
              • Кстати, переведи предложение: «Говорят, что кур доят».
                Ответить
    • > 700 Million Users and Telegram Premium

      > Telegram now has over 700 million active users.

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

      > To celebrate, we're launching Telegram Premium.

      ебать у вас празднование конечно

      > Premium: Doubled Limits
      • Follow up to 1000 channels.
      • Organize your chats into 20 folders, holding 200 chats each.
      • Pin 10 chats in your main list.
      • Reserve up to 20 public t.me links.
      • Save 400 favorite GIFs and 10 favorite stickers.
      • Write a longer bio for your profile and include links.
      • Include longer captions for photos and videos.

      Спасибо, очень полезно
      Ответить
      • А помните чей-то лозунг «Это бесплатно и всегда будет бесплатно»?

        Паша повторяет Пыню во всём.
        Ответить
        • Откуда пошло слово «Пыня»?
          Ответить
          • Изначально так называли какого-то корейца. Имена у них такие.

            Кто первым додумался прилепить этот ярлык Путину, уже трудно установить, но произошло это примерно в 2017-м.
            Ответить
            • В результате пынических войн.

              https://cs8.pikabu.ru/post_img/2017/09/03/7/1504438092189013103.jpg
              Ответить
          • на lurkmore было вполне понятно написано
            Ответить
            • Нашёл зеркало, не впечатлило.

              А вот кого звали Пыней до 2017-го года:

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

              Пруфлинк:

              https://nitter.fdn.fr/search?q=пыня%20until%3A2017-01-01&f=live
              Ответить
              • Ты ниттером пользуешься чтобы блокировки обходить, или потому что он удобнее?
                Ответить
                • И для того, и для другого:
                  1. Материал увидят даже те, у кого Твиттор заблокирован.
                  2. У Ниттера нет такого обилия жопоскриптов, он не тормозит в браузерах.

                  У Снаута стоит какое-то расширение для параноиков типа Noscript, поэтому ему ссылки на оригинальный Твиттор не нравятся.
                  Ответить
                  • > У Снаута стоит какое-то расширение для параноиков
                    Кстати, где он?
                    Ответить
                  • > У Ниттера нет такого обилия жопоскриптов, он не тормозит в браузерах.
                    Подтверждаю.

                    > У Снаута стоит какое-то расширение для параноиков типа Noscript
                    #metoo
                    Да тут даже не паранойя, просто выполняется меньше ненужного говна.
                    Взять хотя бы ГК:
                    * google-anal
                    * twitter
                    * facebook
                    * reformal
                    Ответить
                    • У ниттера URL изоброжений совсем шакальные, даже шакальнее, чем у оригинала.
                      Ответить
                • Кстати, Инканус кажется когда-то делал объёмный пост, где дал отличную подборку сайтов вроде nitter, чтобы читать без регистраций всякие фейсбуки и прочие линкедины.

                  Ни у кого не осталось?
                  Ответить
                  • Для Линкедина не нашёл. Зато для Реддита аж два движка (Теддит и Либреддит). И для Ютуба два (на второй — Piped — ссылку кину позже).

                    https://govnokod.ru/27581#comment658023

                    (показать всё, что скрыто)
                    Ответить
                    • Ура!
                      В «Ютуб» я уже много лет не заходил.
                      Смотрю через mpv или newpipe на телефоне (отдельное спасибо за хинт).
                      mpv  --force-window  https://www.youtube.com/watch?v=kaKO1BaG0r --ytdl-format='bestaudio+video[height<=720]'
                      
                      # искать и слушать музыку так:
                      mpv --loop --no-video ytdl://ytsearch:"петухи запели" --ytdl-format='bestaudio'

                      Нужно всего-лишь:
                      pip3 install yt-dlp
                      Ответить
                      • Некоторые энтузиасты на своём сервере запустили сразу несколько сервисов.

                        Реальный пример:

                        https://mha.fi/services/
                        Ответить
        • Ну так оно и осталось бесплатным как есть. Платные только новые фичи.
          Ответить
          • смешнее всего, что пашка в СНГшке сделал свою проприетарную говну дефактой
            Прчем второй, сука, раз
            Ответить
            • Альфач
              Ответить
              • Паша гениальный манагер на самом деле.

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

                И хуяк -- Паша дал им ВК.

                В 2015-м все жутко боялись, что ФСБ и ЦРУ увидят их приватные нюд-фотки, и вжух -- Паша дал им "безопасный" "телеграм".

                Чел реально чует, чего хотят массы.
                Ответить
      • Ого, 449р в месяц. Ну ради премиум-иконки можно и заплатить
        Ответить
        • За 449 р. в месяц можно арендовать VPS и запустить свой Телеграм с подкидным дураком и куртизанками.
          Ответить
          • Ну Пашка так и сделает. Хорошо он придумал, да? Собрал лярд пользователей на бесплатном, а потом бахнул подписку и обезьянки по бежали покупать.
            Ответить
            • Вот прямо сейчас нашёл VPS за такую сумму: два ядра, два гига, десять гигов SSD.
              Ответить
              • Ну тут еще нада смотреть скока времени на тех двух ядрах, и сколько там реально IOPS получается, хотя у меня на свебе так примерно и есть
                Ответить
    • Институт ВЭБа предложил создать криптозолотой рубль

      https://www.rbc.ru/economics/22/06/2022/62b1c39f9a7947c1bf42981f

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

        Дальше эту подпись спиздили. Дальше что? Отозвать подпись и сжечь всестарые деньги? Подождать 5 минут, пока спиздивший подпись наэмитит 10000000000000 рублей, и один рубль начнет стоить четверть цента?
        Ответить
      • Ответить
      • А знаете что? Вот такие скаленные разговорчики про полновесный алтын - признак разворота. Уже такое бывало несколько раз, сейчас крипота - запоздалая дань моде.
        Ответить
    • ну всё, приехали
      мне придется учить Го
      Ответить
      • Радуйся что не OdinAss
        Ответить
        • А как 1Сники хранят код? Внутри базы и во внешних проводках?
          Типа VCS у вас там нету?
          Ответить
          • Внутри базы и VCS как ты описал.
            Ответить
            • Трагедия акксессников, кстати. Весь гитхаб завален зловонными попытками распатронить сторож базы на *.sql и *.bas
              Ответить
    • Пьер Нарцисс помер (камерунец).
      Юрий Шатунов сдох.
      Ответить
      • ого, комбо какое!


        Белые козы
        Белые козы
        Беззащитны рога
        Что с вами сделали
        Снег и морозы
        Лишив вас молока

        Юра срал в эфир еще в моем глубоком детстве песней про розы, потом ушел в закат лет на двадцать, и зачем-то снова всплыл, чтобы уже кончиться теперь окончательно
        Ответить
      • Скоро все сдохнем.
        Ответить
        • Здрасте. Приятно видеть сговорчивого гражданина. Мы ценим сотрудничество.
          Ответить
      • А кто такой первый? Его застрелили, кстати, нет?
        Ответить
    • Где в Москве можно купить клаву для ноута? Нужно сегодня
      Ответить
      • для какого именно ноута? на маркете искал?
        Ответить
        • Старый ноут Acer. На маркете есть, но доставка ближайшая на ВС. В идеале в какой-то офлайн магаз прийти, чтобы с большими шансами это было
          Ответить
          • оффлан магазинов нынче и нет почти(

            позвони вот этим питухам
            https://www.partsdirect.ru/notebooks

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

              Жаль, что проебали. Хорошие были времена.

              Только что нашёл питухов https://vnoutbuke.ru у которых есть на складе
              Ответить
              • Я и сам тоскую по временам, когда можно было зайти в компьютерную лавочку, и посмотреть на материнки...

                А у парцдирект нету?
                Ответить
                • Не звонил. Я увидел твоё сообщение после того, как выехал к этим
                  Ответить
                  • ну смотри сам) там есть поиск на сайте и магазы в городе
                    вдруг там дешевале
                    Ответить
                • Кстати, kcalbCube определяет цвет контроллера по цвету его платы
                  Ответить
                • Партдирект это же кусок говна, которые тупо возят с али без гарантии.
                  А лавочки и сейчас бывают, но редко, бывают крупные сетевые лавищи.
                  Ответить
      • А сколько ты готов переплатить?
        Ответить
      • Гипотетически можно на «компьютерных рынках» («Савёловский», «Будённовский», «Царицынский», может быть, ещё на «Митинском» или на «Горбушке»). Но с большой вероятностью именно сегодня именно в этой палатке этой детали не будет, а будет она на оптовом складе в Московской или вообще в соседней области, с которого эту деталь в палатку доставят не раньше, чем завтра. А если не повезёт, ждать придётся больше недели.
        Ответить
        • а неужели еще бывают радиорынки?

          В Питере был рынок Юнона (у метро Автово, на проспекте Маршала Казакова). Там прошла часть моего детства, в блуждании между ларьками с видеокартами и винчестерами

          обратите внимание на логотипы МТС и БИлайн
          https://cs14.pikabu.ru/post_img/big/2021/10/07/8/1633609659183417184.jpg
          Ответить
          • или вот
            https://wikiway.com/upload/resize_cache/iblock/eec/500_330_2/yarmarka-_yunona_.jpg

            там на материнке беленькие это PCI, а черненькие это ISA
            Квадратик это сокет 370.

            какой это год?
            Ответить
            • Уи-и-и!
              Ответить
            • А помнишь, SIMM 30 пин, SIMM 72 пина FPM, SIMM 72 пина EDO, несколько вариантов DIMM?

              А VLB (VESA local bus) помнишь?
              Ответить
              • Помню, конечно. SIMMы занимали половину канала (32 бита из 64 бит каналов к памяти у пня), и вставить их не поломав пины было практически нереально:)

                DIMM (именно dual -- потому что ужде 64) вставлялись много проще.

                FPM, EDO, BEDO и прочие сорта аснихронной памяти старались ускорить работу обычной оперативки засчет выдачи пачки данных без закрытия страницы (потому что скорее всего тебе захочется почитать еще дальше), но все это убил SDRAM, синхронизовавший читение памяти контроллером с тактами CPU.
                Стало просто настолько лучше, что все стали развивать его (DDR SDRAM, DDR2 и пр).

                VLB это была попытка вендоров видеокарт расширить ISA добавив туда прямой доступ к памяти (в ISA командовать шиной мог только процессор или специальный DMA петух, медленный очень). Все это убил PCI.
                Ответить
                • > вставить их не поломав пины было практически нереально
                  Кому-то надо покурить и успокоиться. Ничего же сложного в коннекторе нет. Прикладываешь вертикально и наклоняешь пока не защелкнется. Небось ключ не подходил у тебя.
                  Ответить
                  • Заебал ты, кися.
                    Ответить
                  • все у меня подходило, просто некловким движением я однажды погнул пин

                    а в димме погнуть пин нереально было

                    Впрочем, я вообще ловкий парень: Однажды я перебил кулером дорожку, идущую от dimm к северному мосту
                    Ответить
                    • Мой сокурсник защёлками от симмов резал пальцы в кровь, потому что у него лапки.
                      Ответить
                      • я себе резал пальцы корпусами из хуёвой жести времен очакова и покорения крыматретьих пней, тогда это было модно
                        Ответить
                    • А член сунуть туда слабо?
                      Ответить
                • Ты тоже.
                  Ответить
              • И ты.
                Ответить
          • Прямо вот таких уже нет, они трансформировались в ТЦ.
            Ответить
          • Нокиа нокиа - нокиа говнокиа
            Видео видео - видео говнидео
            Ответить
            • Айфон - хуефон
              Самсунг - хуйсунг
              Хуавей... А, это вы, Хуирлиц.
              Ответить
          • Недалеко от станции «Автово» можно найти артефакт ликвидированной в 1977-м году станции «Дачное» — единственной наземной станции Ленинградского метрополитена.

            https://vecherka.spb.ru/?p=28103
            Ответить
            • P.S. Глянул карту. Сейчас станция «Ленинский проспект» к этому артефакту ближе.
              Ответить
            • >единственной наземной станции
              ну нет

              Девяткино еще, рыбацкое.. Хотя на тот момент конечно была только она наземная
              Ответить
    • Ахаха, там джавашки новый велосипед изобрели.
      Вместо того чтобы взять нормальный RAII, опять лепят на свой велик какие-то кривые, нерасширябельные костыли.
      Response handle() throws ExecutionException, InterruptedException {
          try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
              Future<String>  user  = scope.fork(() -> findUser()); 
              Future<Integer> order = scope.fork(() -> fetchOrder());
      
              scope.join();          // Join both forks
              scope.throwIfFailed(); // ... and propagate errors
      
              // Here, both forks have succeeded, so compose their results
              return new Response(user.resultNow(), order.resultNow());
          }
      }


      In contrast to the original example, understanding the lifetimes of the threads involved is easy: under all conditions, the lifetimes are confined to a lexical scope: body of the try-with-resources. Furthermore, this code gets a number of desirable properties for free:

      Error handling with short-circuiting: If either findUser or fetchOrder fail, the other will be cancelled if it hasn't yet completed (this is managed by the cancellation policy implemented by ShutdownOnFailure; other policies are possible too).

      Cancellation Propagation: If the thread running handle is interrupted before or during the call to join, both forks will be automatically cancelled when the scope is exited.

      Clarity: The above code has a clear structure: set up the child subtasks, wait for them (either to complete or to be canceled), and then decide whether to succeed (and process the results of the child tasks, which are already finished) or fail (and the subtasks are already finished, so there's nothing more to clean up.)


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

      https://openjdk.org/jeps/428
      Ответить
      • походил по ссылкам, дошел до питона

        bpo-30038: This is a bug in the logic used to hand-off from the C-level signal handler to the Python-level signal handler: it turns out that the C-level signal handler pokes the main thread to wake it up before it sets the flag to tell it that there's a signal pending. So on Windows where the C-level handler runs in its own thread, then depending on how the kernel schedules things, sometimes the main thread gets woken up, checks for signals, sees that the flag is not set, goes back to sleep... and then the flag gets set, but it's already too late.
        Ответить
    • Ротоёб был прав.

      Чтобы в goвне высрать JSON, нужно описать структуру, высрать в неё, а потом позвать маршала Жукова. Пиздец, даже в крестах такого нету.
      Ответить
      • Вполне нормально. В цисгендерных средах типа WS ты бы и структуру сгенерировал по схеме, но поскольку миром правят копрофилы, ты напиши структуру руками, пожалуйста
        Ответить
      • А что не так? JSON нужно писать printf("\t\t\"name\": \"%s\"\n", pig.name)?

        (ох, извините, это ж кресты: strm << "\t\t\"name\":" << pig.name << "\"" << std::endl)
        Ответить
        • А есть какой-нибудь std::tab, std::dblquote или типа того, по аналогии со std::endl, чтобы выглядело совсем по-крестоблядски?
          Ответить
    • Ох представляю как горит у моих бывших коллег, которые получают ЗП в баксах в конверте. Как «дядька» их обналичивает - я вообще хз.
      Ответить
      • >которые получают ЗП в баксах в конверте
        Стесняюсь спросить, это в Москве такое еще бывает?? Или это в твоем родном городе?

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

            Разве что у него в конверте лям рублей в месяц приезжал?

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

              У нас годный синьор начинается от 6кк TC в год по моим предположениям. Хотя и наебать тоже могут.
              Ответить
              • А ты не застал падение бакса в 2006-2007 же?

                Тогда все, кто еще получал баксы, охуели от того, что из 31 он стал 23.
                https://ru.myfin.by/currency/cb-rf/usd/23-07-2007

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

                > 6кк TC в год
                6 000 000 в год, сиречь где-то пол ляма в мес?
                Ответить
                • > даже загранник может оказаться трудно получить

                  Загранник-то не особо и проблема. А вот с визой могут появиться сложности.
                  Ответить
                  • ну у меня спрашивали, де я работаю

                    Да, визу безработному хую могут и не дать, это правда.

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

                    Так что если ты получаешь ЗП в конверте, то ты и живи тогда с наличкой.

                    Впринципе, я не отказался бы получать в конверте в рублях чтобы не платить налог. В течение одного года мог бы и побыть безработным
                    Ответить
    • Некие коллеги взяли старый хуевый неподдерживаемый код (назовем его СХНК), и рядом написали новый хуевый неподдерживаемый код (НХНК)

      НХНК переодически работает поверх СХНК увеличивая количество абстракций. Все люди боятся трогать СХНК, а НХНК боятся трогать все, кроме его автора, но кажется автор тоже предпочитает без необходимости его не трогать.

      Как следствие, спайка НХНК и СХНК обрастает кучей ифов, которые можно филигранно ввинтить для твоего конкретного случая, не сломав при этом остальные двадцать восемь, на которые всё ранво нет тестов

      НХНК частично дублирует функционал СХНК, но реализует его не полностью, потому некоторые вещи можно сделать только по старому.

      Теоретически существует фича флаг, переключающий систему со СХНК на НХНК, но его нужно проверять в каждом месте. В некоторых местах это не сделано, и иногда часть системы работает с НХНК, а часть со СХНК. Как следствие, в рантайме можно словить в лучшем случае ``ClassCastException``, а в худшем просто неконсистентность.

      Что с этим делать?

      1. Смириться, и забить.

      2. Взять на себя роль Архитектура и Все Переписать

      3. Ваш вариант
      Ответить
      • уволиться
        Ответить
        • Не спортивно. Может быть лучше смотреть на ситуацию как на шанс прокачать скил Разгребания Говна?
          Ответить
          • очень полезный скилл
            Ответить
            • кажешь, не полезный? А чем тогда тимлиды занимаются?

              Или просто не надо брать луней на работу, а сразу надо брать тех, кто не пишет говна?
              Ответить
              • разгребание говна на уровне как скилл гораздо менее полезен чем разгребание говна на уровне сервисов/команд

                >А чем тогда тимлиды занимаются
                в фаанге тимлид занимается организацией беклога в спринты и проектированием новых фич/ревью дизайн-документов
                Ответить
                • а кто делает архитектуру?

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

      Тесты на CI занимают от двух до четырех часов, и 30% из них мигает. В среднем, каждый зеленый тест падает каждый пятый запуск.

      Буратино пытается прогнать тесты на CI перед пушем (это называется safe push). Push пройдет только если все тесты будут зелеными.

      Вопрос к математикам: сколько дней понадобится Буратине, чтобы запушить свой фикс из двух строчек?

      ------
      Я реально хочу написать что-то типа Задачника по математике Григория Остера, но про программистов
      Ответить
      • Это зависит от количества тестов, которое здесь не обозначено никак.
        Ответить
        • правильно))) ну допустим их 10К
          Ответить
          • Вероятность прохождения однократного прогона будет 0.8^3000, а вероятность прохождения, которую мы считаем приемлемой, тут тоже не указана, но там мы уже будем считать (1 - 0.8^3000)^n как вероятность провала n запусков.
            Ответить
    • cmake под Виндой не может ничего скачать с сервера www.openssl.org.

      Сервер www.openssl.org в настоящий момент для TLS1.2 поддерживает всего три шифра:
      • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH secp256r1 (eq. 3072 bits RSA) FS 256
      • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH secp256r1 (eq. 3072 bits RSA) FS 128
      • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA 256 (0xcca8) ECDH secp256r1 (eq. 3072 bits RSA) FS

      cmake под Виндой использует SCHANNEL — микрософтовский фреймворк для криптушни. SCHANNEL во всех версиях Windows < 10 не поддерживает ни один из трёх вышеперечисленных шифров.

      Можно ли заставить cmake под Виндой использовать openssl/gnutls вместо SCHANNEL или для этого его нужно перекомпилировать?
      Ответить
      • P.S. cmake, собранный под mingw, не использует SCHANNEL, в отличие от cmake, собранного под MSVC.

        Осталось придумать, как заставить систему сборки использовать мингэвэшный cmake вместо вижуалсёвого.
        Ответить
        • именно потому я за WSL
          Ответить
          • Сначала они вложили в десятку WSL.

            Потом некоторые микрософтовские сайты перестали работать в IE11. Настоятельно требуют поставить новый Edge (который на Хромиуме).

            В Visual Studio стали вкладывать Clang.

            MS шаг за шагом отказывается от собственных инструментов в пользу прыщеговна.

            Зачем? Зачем?
            Ответить
            • Потому что сначала была стратегия "наш манямирок совместим только с нами", но она обосралась, потому что на сцену вышел Интернет, а там на серверах совсем не виндуос был.

              Тогда они взяли стратегию Embrace, extend, and extinguish. Это случилось в районе W2K, когда они как-бы начали дрейф в сторону стаднатов Интернета, расширяя их.

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

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

              -

              Винда, кстати, превращается в кашу-из-топора потихоньку. Скоро станет не понятно зачем иметь дырявое платное говно, которому нужно делать sfc /scannow, если тебе все равно ничего не нужно кроме Chrome, а Chrome у тебя и на прыщах есть, и бесплатно.

              Это вот "у меня не работает Office 97, 1C 7.7 и любимая игрушка без винды" с каждым годом все менее актуально
              Ответить
              • А с драйверами как сейчас? Железки, для которых драйвера есть только под Винду, тоже всё реже встречаются?
                Ответить
                • конечно

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

                  Наконец, вендоры материнок могут более-ли-менее кросс-платформенно общаться с ОС благодаря ACPI (но все равно харкодят везде Windows2007 конечно)

                  Каноникал продает ноуты полностью оттестированные ими ими официально поддерживаемые, где все точно будет работать. А рэндомный самосбор может конечно и не завестись
                  Ответить
                  • ну вот я только сказал, и тут же коллега рассказал, как у него отваливалась сетевая (суперсвежая) пока он не отключил ей aspm
                    Ответить
                  • > софтварных недожелезок (типа винмодемов)
                    На прыщах любой вайфай тащит за собой """firmware""".
                    Ответить
                    • firmware и на винде тоже тащит, ось тут не причем

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

                      Однако фирмварь не равно софтварный момед или говно на AMR/ACR (ебать я старый, правда?), потому что мне похуй что там внутри устройства происходит, главное чтобы оно поддерживало нужные мне интерфейсы
                      Ответить
                      • > а в ядре бинарного блоба быть не может,
                        А static const char definitely_not_a_blob[] = { 0x66, 0x83, 0x00, ... }; ? Это же не программный код, исполняемый на машине, там архитектура известна заранее...
                        Ответить
                        • > Это же не программный код, исполняемый на машине
                          Тео Де-Раат, залогиньтесь:))

                          GPL кажется не позволяет никакой блоб, похуй где он выполняется, пусть даже это вооще PNG файл несвободный
                          Ответить
                          • A, это с лицензией связано.
                            Ответить
                          • #define BYTE_00 0x00
                            #define BYTE_01 0x01
                            #define BYTE_02 0x02
                            #define BYTE_03 0x03
                            // ...
                            #define BYTE_FF 0xFF
                            
                            static const char blob_source_code = {
                                BYTE_66,
                                BYTE_83,
                                BYTE_00,
                                // ...
                            };

                            > GPL кажется не позволяет никакой блоб, похуй где он выполняется, пусть даже это вооще PNG файл несвободный
                            Пусть докажут, что это блоб, а не исходный код на языке «BYTE_ASM».
                            Ответить
                            • Запихни туда какое-нибудь произведение принадлежащее Мыши, или Водопроводчику. Тебе сразу покажут мастер-класс по доказательствам.
                              Ответить
                            • Юристы FSF позвонят, и все тебе расскажут
                              Ответить
                      • В Шиндошс это часть пакета драйвера и без глупого названия. А прыщах надо помнить обновить это говно.
                        А так эта часть занимается ровно тем же, что и софтмодемный драйвер.
                        Ответить
                        • Я давно предрек обрущение Windows. Это закон природы, одна из основополагающих истин.
                          Ответить
                        • >А так эта часть занимается ровно тем же, что и софтмодемный драйвер.


                          гологуб, ну что ты говоришь?

                          Прошивка работает на процессоре девайса, а софтварный винмодем на твоем CPU
                          Ответить
                          • Не знаю, кот такой гуглогуб, но ты же повёлся на прыщеслово (тнеу/тнем). У энклюзивных ни таких как все пердоликов (тнеу/тнем) так называется... драйвер. В нормальных ОС еще бывает WLAN IHV service для вынесения кода о, например, EAP MGMT из курнул-мода. Впрочем, ты же понимаешь, что без WPA сопликанта ты не получишь даже физического уровня, нет?

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

                              у прыща есть НЕТЛИНК интерфейс по имени nl80211 к картам, и вроде через него супликанты и пиздят.
                              Ответить
                            • ps: у спермы тоже есть свой супликант

                              PS C:\> Get-WmiObject win32_service | where name -EQ wlansvc | fl description
                              
                              
                              description : The WLANSVC service provides the logic required to configure, discover, connect to, and disconnect from a wireless local area network (WLAN) as defined by IEEE 802.11 standards. It also contains the logic to turn your comp
                                            uter into a software access point so that other devices or computers can connect to your computer wirelessly using a WLAN adapter that can support this. Stopping or disabling the WLANSVC service will make all WLAN adapters
                                             on your computer inaccessible from the Windows networking UI. It is strongly recommended that you have the WLANSVC service running if your computer has a WLAN adapter.


                              Спрашиваете, почему WMI, а не gsv?
                              Да потому что в Get-Service нету Descirption. Сёма, твой PS соснул
                              Ответить
                              • Нет, почему не sc qdescription как нормальные люди делают.
                                Ответить
                                • :))уел

                                  Я когда-то пользовался sc чтобы включать/выключать сервисы и смотреть их зависимости, но с завозом PS прочно о нем забыл.

                                  Дзякую, что напомнил.

                                  Кстати, через sc можно еще и драйверы крутить (суть те же сервисы, або с другим тиком запуска) а через gsv -- нет
                                  Ответить
      • для начала надо перестать использовать Windows Vista, Инканус.

        тебе сюда
        https://github.com/Kitware/CMake/blob/ab1edff49268df77e1cdcf8074e24e64ef140370/Utilities/cmcurl/CMakeLists.txt#L14

        пересобирабля
        Ответить
        • В семёрке и в восьмёрке такое же говно... Ничем, завязанным на SCHANNEL, пользоваться теперь нельзя. Нужно менять ОС или портировать софт на собственную криптушню (openssl/gnutls).

          Да, надо попробовать пересобратьбля.
          Ответить
          • Ну чувак, ну у тебя TLS 2013-го года, а сейчас 2022-й.

            Ты реально ждешь там диффи-хельмана на эллиптических кривых?

            Ты еще скоро начнешь обламываться с отсутствием там корневых сервтов, познакомишься с замечательной оснасткой "Certificates" и утилитой cerutil.

            Винда это не прыщи, там много чего прибито гвоздем к ОС. У меня так IKE перестал работать, потому что какой-то RFC (про отказ от фрагментации пакетов вроде) в семерку не успели запихать

            На прыще я бы просто стронгсван обновил, а тут сосать

            Так же и с OpenSSL/SecureChannel
            Ответить
            • Есть эллиптические кривые, но другие:
              TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) WEAK 256
              TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) WEAK 128
              TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) WEAK 256
              TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) WEAK 128
              TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) Forward Secrecy 256
              TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) Forward Secrecy 128

              TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024) WEAK 256
              TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023) WEAK 128
              TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) WEAK 256
              TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) WEAK 128

              Жирным выделил самые сильные шифры. Но некоторые сайты их не хотят.
              Ответить
              • нихуясе
                это в семрке такое???
                Ответить
                • https://docs.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-7

                  Если, конечно, все апдейты поставил.
                  Ответить
                  • ну, круть! Вот бы они еще для IKE так шифры починили, а то вин7 у меня не могда в PFS, например.

                    Вообще у меня жопа горит от того, что криптоговна по сути три
                    * TLS
                    * SSH
                    * IPSec

                    И так в шифрах черт ногу сломит, а тут еще три сорта говна. Почему не сделать универсально?
                    Ответить
                    • Хочешь узнать ещё один прикол?

                      В центре обновления Windows изменили подпись всех пакетов с sha1 на sha256. И у пакета, который добавляет поддержку sha256 в старые системы, тоже.

                      Теперь, если у тебя старая Винда без обновления, то пакет поддержки sha256 устанавливается нетривиальным способом.

                      А про другого уробороса (чтобы с сайта openssl.org что-нибудь скачать, нужно уже располагать софтом, поддерживающим самые современные шифры, скачанным в другом месте) ты уже прочитал.
                      Ответить
                      • я лично вручную ставил поддержку ша 256 на в7 чтобы заработало обновление))
                        Ответить
                        • Windows Update — птица гордая. Не пнёшь — не полетит.
                          Ответить
                          • Windows Update — птица феникс. Прибьешь — а он через неделю все равно что-то шерудит.
                            Ответить
                            • Мне ещё служба BITS нравится, которая может забивать процессор на 100% и при этом ничего полезного не делать.
                              Ответить
                              • служба BTS
                                Ответить
                              • так она это делает в фоне, если процессор и так ничем не занят
                                нет?
                                Ответить
                                • Процессор не занят или сеть?
                                  Может, там где-нибудь
                                  while (GetLastMinuteNetworkUsageBytes() > 100)
                                    ; // Sleep(100);
                                  DownloadNextFile();
                                  Ответить
                                  • BITS is mindful of the current network cost and congestion so that a background job interferes as little as possible with the user's foreground experience

                                    Надо читать MSDN, там про БИТС много
                                    Я сним програмно не работал никада, только как пользователь, и видел, что она ест 100%, но как тока запускаешь другой процесс -- сдрискивает.

                                    Там вроде в API можно приоритеты задвать, с других компов качать (бранч кеш) еще какое-то такое же говно

                                    Короче, MS даже файл скачать не может без большого сложного фреймворка с кучей возможнгостей
                                    Ответить
                                    • Ну, может, когда у тебя 100 машин в локалке, а XXI век еще юн и свеж, трафик имеет значение...

                                      ...скачать Гигабайт... ну, теоретически можно...
                                      Ответить
                                      • Траффик имеет значение когда
                                        * У тебя 1000 машин решила обновитьcя, а WSUSа у тебя нет
                                        * Ты мелкий юрик, и у тебя 100 мегабитный канал (потому что 1 гигабитный стоит 251 000 рублей в месяц для юриков в твоем БЦ)
                                        * Твой склад в жопе за вооон тем пригорком, и там единственный провайдер на всю тайгу, и стоит миллион
                                        * Ты живешь в европке, и Интернет у тебя по ADSL
                                        * У тебя вообще нету кабеля, и ты антенну выставил , и fresnel zone у тебя над елками. Или вообще интернет через сотовую сеть с оплатой за мегабайт.
                                        Ответить
                                    • Некоторое прикладное ПО любит нагружать BITS идиотскими задачами. В частности, этим грешит Яндекс. Ну зачем BITS Пунто-свитчеру?

                                      А ещё бывает, что какой-нибудь компонент Windows поставил задачу BITS, а пока эта служба качала, на микрософтовских серверах в очередной раз структура URL поменялась, а редиректа со старых URL на новые нет, так что кругом 404.
                                      Ответить
                                      • Зачем тебе путо-свичер в 2022 году? Поставь лучше кейрус.
                                        Ответить
                                        • >кей
                                          ки!
                                          ки! кирус же!

                                          keyrus.com от Димы Гуртяка. Сейчас это оркостан, кстати
                                          Ответить
      • нельзя ей курлы-курлы подсунуть?
        Ответить
        • Оказывается, можно. Опция DOWNLOAD_COMMAND позволяет подсунуть хоть курлы-курлы, хоть вгет, хоть любую другую качалку.

          https://cmake.org/cmake/help/latest/module/ExternalProject.html#external-project-definition
          Ответить
          • ввоо
            я так как-то и чувствоваол

            собери курлы-курлы с опенссил теперь только
            Ответить
            • Курлы-курлы уже собранный давно есть.

              Да, через DOWNLOAD_COMMAND цепляется и работает.
              Ответить
    • Как же заебал этот go.
      Ощущаю себя хуже пхпшника.
      Ответить
      • Не в тот оффтоп, ну да ладно.
        Ответить
      • Сходи-поработай в вебстудию за еду в вонючем бизнес-центре класса "F" между офисами "гербалайф" и "дешевые билеты в абхазию", и чтобы летом плюс двадцать пять, и зарплата 20 тыщ рублей, и начальником твоим был SMMшник.

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

            да не пзиди

            не бывает чистого кода не пхп. Стопудово у тебя там в одном файле были mysql_real_escape, таг "<B>" и CSS

            не могло быть иначе просто
            Ответить
            • А в govne у меня
              if err != nil {
                  return nil, err
              }

              Чем это лучше?
              Ответить
              • Это просто популярный паттерн. У нас в джаве тоже принято писать много тупого одинакового кода, а в отдельных фреймворках .NET так и подавною.

                Если честно, то я считаю обработку ошибок в Go гомосячей. Менее гомосячей чем исключения например, но более гомосячей, чем монады.

                Но она хотябы есть

                В коко ее под час и вовсе нету
                Ответить
                • > гомосячей
                  > goмосячей
                  FTFY

                  > а в отдельных фреймворках .NET так и подавною
                  По крайней мере, когда определённый паттерн становится слишком популярен, шарпеи его поддержку на уровне языка встраивают.
                  Ответить
                  • Привет, я attached property в WPF
                    https://docs.microsoft.com/en-us/dotnet/desktop/wpf/properties/how-to-register-an-attached-property?view=netdesktop-6.0

                    public class Aquarium : UIElement
                    {
                        // Register an attached dependency property with the specified
                        // property name, property type, owner type, and property metadata.
                        public static readonly DependencyProperty HasFishProperty =
                            DependencyProperty.RegisterAttached(
                              "HasFish",
                              typeof(bool),
                              typeof(Aquarium),
                              new FrameworkPropertyMetadata(defaultValue: false,
                                  flags: FrameworkPropertyMetadataOptions.AffectsRender)
                            );
                    
                        // Declare a get accessor method.
                        public static bool GetHasFish(UIElement target) =>
                            (bool)target.GetValue(HasFishProperty);
                    
                        // Declare a set accessor method.
                        public static void SetHasFish(UIElement target, bool value) =>
                            target.SetValue(HasFishProperty, value);
                    }


                    Хотя безусловно в .NET есть сахар вроде евентов и обычных пропертей. Это конечно дает джаве пососольдо все таки, ну и public вроде не нана писать каждый раз
                    Ответить
            • https://govnokod.ru/27875#comment750326
              Ответить
              • инь, ну обработка ошибок это правда позор го, над ним токмо ленивый не ржет

                Если джаву тут у нас Снаут кажется сказал, что там надо тридцать раз написать "@Override public static void final", то в го надо написать "err != nil"
                Ответить
                • > @Override public static void final

                  <занудство>По идее не скомпилицо с таким набором мудификаторов.</занудство>
                  Ответить
                  • Это гипербола, как "100500".

                    Надо анпсать "public static void" просто
                    Ответить
      • го это пшп со смузи
        Ответить
      • > Ощущаю себя хуже пхпшника

        Думаю все себя ощущают хуже пхпшников.
        Просто не могут признаться в этом даже себе.

        Что пирдолик-крестушок чувствует себя счастливым, часами ожидая пока скомпилируется метушня?
        Или (типа)жопаскриптер, который пока настроит кучи своего говна?
        Ответить
        • Когда мне стукнуло 18 лет, я понял, что я ПХПшник.

          Все мои друзья писали кто на С++, кто на Pascal, а я хотел писать на PHP, и думал: что со мной не так?

          Я долго не мог сказать об этом родителям (отец у меня человек старой закалки, и точно бы не понял), потому я нашел группу анонимных ПХПников в интернете, и мне стало легче...
          Ответить
          • Всё что мог сказать по этой теме, уже сказал тут:

            https://govnokod.ru/26776#comment557862
            Ответить
    • купил себе еще один 3д принтор. На этот раз СЛА.
      Ответить
      • Фотополимерный? Т. е. со светоотверждаемым расходным материалом? И результат выглядит не так коряво, как на принтере с печкой? Но, поди, расходники дорогие?
        Ответить
        • Да, фотополимерник. Расходники по ценам приблизительно сравнялись смола конечно будет стоить дороже, но теперь не так критично, помню раньше за баночку приходилось отдавать около 3-5к рублями. Теперь же 1.5к-2.5к за литр. К примеру в рашке килограм PLA для FDM уже за 1.5к улетает в стратосферу.
          Но фотополимерник я купил ради того чтоб женские бюсты с сиськами печатать. FDM конечно тоже хорош, но очень мелкие детали ему уже физически не подсилам. Но он все так же будет лучше в плане печати технических деталей, так как и пластик гараздо по характеристикам лучше и быстрее.
          Ответить
        • Похрюкай со мной, кися. Хрук-хрук-хрук!
          Ответить
      • Нахуя?
        Ответить
    • Goвнари, поясните пожалуйста за ref и value типы (или за стек/кучу, если вам так удобнее)

      int однозначно value type, хранится на стеке в случае локальной пельменной, вот это все.
      Тогда что тут происходит
      func foo() *int {
      	a := 1
      	return &a
      }


      На последней строчке a отправился в кучу, и я вернул на него поинтер? А если бы не вернул, он в кучу бы не попал?

      Или я не должен об этом думать?

      Массивы где хранятся? Реально ли на стеке создать массив на 4 гига? Или опять таки не надо про это думать?

      Слайсы указывают на кусок массива, но если я делаю append, то они начинают на другой указывать, и underlaying array копируется?

      Если я напишу
      a := []int{1, 2, 3}

      то создам анонимный массив на куче, и буду с ним работать только через слайс?
      Или я снова не должен думать про массив тут, а должен видеть как-бы динамический массив (типа вектора) а что и как он там хранит -- пофиг?

      Гобляди сначала насрали термины reference и value type, а потом от них открестились?

      Блядь как все сложно, заберите меня обратно в няшную
      Ответить
      • Не знаю. Я просто прочитал первые главы «Go за 3 дня» (точное название не помню) и говнокожу. Иногда смотрю другие коды в репе и что-то оттуда полезное извлекаю.
        Ответить
        • То есть ты пишешь пол года на языке, и не знаешь как в нем памяь устроена?

          Теперь я верю, что Го это ПХП 2022
          Ответить
          • Поэтому я за ПХП
            Ответить
            • Вот уволюсь, встану на биржу труда, и государство меня бесплатно обучит писать на Go
              Ответить
      • > На последней строчке a отправился в кучу, и я вернул на него поинтер?
        Тут вопрос: нахуя развращать адреса ло-калок?

        But the Go compiler is very Intelligent!. It will not allocate the memory on the stack to the local variable of the function. It will allocate this variable on the heap. In the below program, variable lv will have the memory allocated on the heap as Go compiler will perform escape analysis to escape the variable from the local scope.

        Ахуеть, goворящая свинья.
        https://www.geeksforgeeks.org/returning-pointer-from-a-function-in-go/

        При том что они завезли new.
        > Another way to get a pointer is to use the built-in new function:
        > new takes a type as an argument, allocates enough memory to fit a value of that type and returns a pointer to it.
        Ответить
        • >Тут вопрос: нахуя развращать адреса ло-калок?
          не важно. Важно, что в няшке и крестах это убе, а в говне --- ни?

          >smart
          ну как я и думал, я не должен про это думать, и рассматривать "&" как new в ЯЖА
          Ответить
          • А в говне нi. Как я понял там escape анал-изатор понимает что ло-калка может покидать функцию, и потому аллоцирует её на куче.
            А если локалка не покидает скоуп, тогда стековая питушня.
            Но это ничем не лучше Йажи, где всё куча, но Hotspot умеет локалки оставлять на стеке.
            https://wiki.openjdk.org/display/HotSpot/EscapeAnalysis

            Doomаю механизм примерно одинаковый.

            Ну и сделали бы уже как в ЯЖА, без этих ебаных & *.

            Но хотели всех объебать. Чтобы сектанты могли заманивать: «йаже как Сишка».

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

            Указатели вроде есть, а арифметики нет.
            Ответить
            • ну с адресом все так есть разнитца в том, что можно передавать валуйный тип по указателю, тоесть это скорее как C# с его out, чем как йажка

              А разницы между & и new выходит нет?
              ---

              Напоминило историю из первой половины нудлевых, как в ObjC завезли лямбады (блоки кажется назывались) и там они по умолчаню создавались на стеке, и надо было их явно в кучу копировать. А потом не надо стало
              Ответить
              • > А разницы между & и new выходит нет?

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

                https://stackoverflow.com/questions/9320862/why-would-i-make-or-new

                new can be used to allocate values such as integers, &int is illegal:
                
                new(Point)
                &Point{}      // OK
                &Point{2, 3}  // Combines allocation and initialization
                
                new(int)
                &int          // Illegal
                
                // Works, but it is less convenient to write than new(int)
                var i int
                &i
                Ответить
                • The main difference between new(T) and &T{} is that the latter explicitly performs a heap allocation. However it should be noted that this is implementation dependent and thus may be subject to change.

                  Строго по Хармсу

                  Две дамы спят, а впрочем нет,
                  не спят они, а впрочем нет,
                  конечно спят
                  Ответить
                • Как известно, Go очень простой язык, его может освоить даже пыхарь.

                  Q: Is there a difference between new() and "regular" allocation?

                  Ответ 1 (48 баллов): No. What they return is the same,


                  Ответ 2 (22 балла): Yes, there is a fundamental difference between the two code fragments.

                  https://stackoverflow.com/questions/13244947/is-there-a-difference-between-new-and-regular-allocation

                  ---

                  Я бы конечно советовал сделать sfc /scannow
                  Ответить
                  • Блять, почему они ссылаются на code fragments (то есть эмпирическое наблюдение как работает код), а не на спеку языка и/или документацию?

                    Всё-таки крестухов можно ругать за многое, но у них хотя бы Стандарт ™ есть.
                    Ответить
                    • ну тут тоже что-то есть
                      https://go.dev/ref/spec
                      просто в это они не могут
                      Ответить
                      • Почитал. Там прямо указан пример когда они отличаются

                        Note that the zero value for a slice or map type is not the same as an initialized but empty value of the same type. Consequently, taking the address of an empty slice or map composite literal does not have the same effect as allocating a new slice or map value with new.

                        p1 := &[]int{} // p1 points to an initialized, empty slice with value []int{} and length 0
                        p2 := new([]int) // p2 points to an uninitialized slice with value nil and length 0
                        Ответить
                        • то есть в перввом случае мы создаем анонимный массив размером ноль, и берем на него указатель

                          во втором случае мы сразу создаем указатель на nil.

                          Ну вот скажи мне, это типа просто и понятно? Куда проще, чем в сложной сишке, да?
                          Ответить
                          • > Ну вот скажи мне, это типа просто и понятно?

                            Тут и сказать-то нечего, такой это неочевидный пиздец.

                            И говнюки-то сами сходу ответить не могут. Анскилябры, да.

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

                              C# еще забыл:) Там можно вызвать new у value type, и он (в отличие от крестов) совсем не на куче создастся:)

                              Веселее всего в доклассовом JS: там new просто вызывало функцию, передвая туда неявно новый пустой объект по именем this, и кажется прописывая ей прототайп в эту функцию.

                              А еще new бывает методом класса в ЯИБУ и ObjC (там он далеает alloc + init)

                              По степени всратости всех конечно уделал Perl с его bless, который просто привязывал пакет к хешу, но там функцию, коея это делает, тоже частоназывали "new"

                              PS: ну и конечно напомню, что в JAVA и C# на самом деле "new" -- лишнее слово (да и в современном JS малость тоже).

                              Хорошо, что в питухоне и коко его нет
                              Ответить
                              • > C# еще забыл:) Там можно вызвать new у value type, и он (в отличие от крестов) совсем не на куче создастся:)

                                В C# и PHP new по поведению очень похоже на жову. А она была первой.

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

                                > что в JAVA и C# на самом деле "new" -- лишнее слово (да и в современном JS малость тоже).
                                Ну а как создавать объекты? Рефлексией?

                                Вот в JS оно абсолютно лишнее. Объект из заданного прототипа можно сделать и через Object.create()
                                Ответить
                                • А в бейсике NEW вообще удаляет текущую программу из памяти.
                                  Ответить
                                  • Емнип NEW/OLD/RUN это были команды ОС.
                                    Они принимали имя программы или строку с которой нужно начинать выполнение.
                                    Ответить
                                    • Это были команды интерпретатора, которые можно было использовать в интерактивном режиме и нельзя было использовать в программе.

                                      Да, чисто визуально выглядит, как ОС над интерпретатором, но это не ОС, это сам интерпретатор.

                                      Интерпретатор Бейсика разрабатывали с учётом того, что на машине могло не быть текстового редактора. Именно поэтому была команда LIST и номера строк. Если строка, передаваемая интерактивному режиму, начиналась с номера строки, интерпретатор добавлял или заменял строку с таким номером в программе.
                                      Ответить
                                    • P.S. Имя программы принимали команды LOAD и SAVE. В ОЗУ можно было держать только одну программу.

                                      NEW тупо обнуляла программу, а RUN запускала.

                                      Кое-где можно было вызвать RUN с аргументом — с номером строки, на который сделать GOTO перед запуском.
                                      Ответить
                                      • Хрюкни, свинособака!
                                        Ответить
                                      • > Кое-где можно было вызвать RUN с аргументом — с номером строки, на который сделать GOTO перед запуском.

                                        В смысле? А разве где-то было нельзя??
                                        Ответить
                                    • ну не ОС, а монитора так сказать
                                      А там был бейсик

                                      У многих компов 80х (включая и классическеий ПиСи) в прошивке был бейсик
                                      Ответить
                                      • Так точно!

                                        Потом у IBM PC из прошивки «Бейсик» удалили. Если же по старой памяти его вызвать (через INT 25H или как-то так, уже точно не помню), выведется строка «ROM Basic not found».

                                        Бейсик был в прошивках бытовых компьютеров: БК-0010, Спектрума и т. п. У некоторых даже на клавиатуре были горячие клавиши для ввода команд Бейсика одним нажатием.

                                        А вот у «Агата-7» был монитор без Бейсика. Его монитор позволял вводить только машинные коды. Как сейчас помню: C300G означало перейти по адресу C300 (hex), по которому в прошивке лежит подпрограмма загрузки с первого дисковода.
                                        Ответить
                                        • Кися, признайся, дефекатэ плюс-плюс ведь твоя файка?

                                          Давай, повергни всех в шок своим признанием.
                                          Ответить
                                      • > У многих компов 80х (включая и классическеий ПиСи) в прошивке был бейсик

                                        В первых униксах для DEC-11 чуть-ли не единственным скриптовым языком был не какой-нибудь питон или awk, а именно бейсик.

                                        Правда его больше как куркулятор юзали.

                                        Впрочем сейчас питон так и используют.
                                        Ответить
                                      • На самом деле немногих. Я в бытность изучения трубоассеблера писал прожку, которая пробает йохохо страницу рома и если не заглушка, то джамп. Ни у кого не работало.
                                        Но конечно же это пристрастие к васику унаследовали от пэка на 8080.
                                        Ответить
                                  • Потом они спрашивают, почему я за «Бейсик». Да вот хотя бы поэтому.
                                    Ответить
                                • C# похож, но там есть value types.
                                  угадай, где создаста юзер
                                  struct User{}
                                  ///
                                  var user = new User();


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

                                  В крестах есть placement new, ты можешь объект хоть в memory mapped файле создать, вот тока зачем?


                                  >Ну а как создавать объекты? Рефлексией?
                                  Убрать слово new, и все: как в питоне и котлине.

                                  Почему не песать так
                                  var user = User();

                                  а еще лучше так
                                  User user{};
                                  Ответить
                                  • > Почему не песать так
                                    > var user = User();

                                    Потому что это вызов функции, а не конструкция объекта

                                    > а еще лучше так
                                    > User user{};

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


                                      Почему? Почему не может быть это созданием объекта?
                                      Почему Котлин и Питон обошлись без ненужного слова "new"?

                                      "new" имеет смысл только в С++. В остальных языках тупые обезъяны завезли ненужный хлам чтобы другие обезъяны потом его использовали.

                                      Это как писать "foo->bar()" вместо "foo.bar" в пыхе.

                                      сук, даже в С++ у референсов не надо эту хуйню писать
                                      Ответить
                                  • Йажисты шли по стопам крестов.
                                    Это легаси. А вот шарпеи (уворовавшие Йажу) и пхпшники могли бы уже и подумать.

                                    > Убрать слово new, и все: как в питоне и котлине.
                                    > Почему не песать так
                                    > var user = User();
                                    Неоднозначность. Сразу непонятно функция это или конь-структор.

                                    >а еще лучше так
                                    >User user{};
                                    Крестопидорство.

                                    Да я ж не против "заменить". Речь о том что в JS его вообще безболезненно можно убрать.

                                    Кстати, волшебная искра Сишки все-таки осталась в Йаже.
                                    int[] x = {1,2,3};

                                    Так тоже можно
                                    int[] x = new int[]{1,2,3};

                                    Но зачем?
                                    Ответить
                                    • >Неоднозначность. Сразу непонятно функция это или конь-структор.


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

                                      Альсо, в ЙАЖА обычно метолы камиль кейсовые же, это в шарпе они с большой буквы
                                      Ответить
                                      • Мне тоже new не нравится. Просто предлагаемая питушня не вписывается в общую тенденцию йажи.
                                        Так например они не додумались (не захотели) вызывать лямбды как func().

                                        На каждый интерфейс почему-то нужно писать func.call() / func.run() / func.execute() / func.accept(t) итд. По мне это уебанство, если мы заведомо знаем что у интерфейса один метод. Но решили вот так.

                                        Лучше бы метод был User.new()
                                        Ответить
                                        • > Лучше бы метод был User.new()

                                          Та это же дельфячьи конструкторы же!
                                          Ответить
                                          • У нас в Ruby это так и пишется

                                            petuh = Petuh.new
                                            Ответить
                                            • > У нас в Ruby это так и пишется
                                              > petuh = Petuh.new

                                              Так в Дельфях тоже можно было опускать скобки.
                                              Ответить
                                              • Откуда ты знаешь? Ты что, осетин? На дельфи прогают только аморалы.
                                                Ответить
                                                • > На дельфи прогают только аморалы.

                                                  «Вот и выросло поколение, не знающее Паскаля.»
                                                  Ответить
                                                  • Я видел на соседнем мониторе, как запускают лазарус. Но я же не ослоёб, я выбрал C++ + OpenGL.
                                                    Ответить
                                                    • трупо паскаль семь ноль -- священный язык моего децтва, попрошу не касаться его грязными осетинскими руками
                                                      Ответить
                                                  • Я тоже не понимаю нахрюков на «Дельфи».

                                                    Язык «Object Pascal» вполне годный. А то, что ламеры наформошлёпили говнософта с TForm1, так это не проблема языка, а его популярности. Сейчас то же самое с другими языками происходит.
                                                    Ответить
                                              • > в Дельфях
                                                В Паскакале, это Вирт придумал, чтобы скобки нужны были только когда есть аргументы. А позже какие-то дрочилы зачем-то учудили ставить пустые скобки в Functiya1Call()
                                                Ответить
                                                • В процедурном/визуальном бейсике тоже можно было Sub без аргументов писать без скобок.
                                                  Ответить
                                                  • А в «Фортране» так можно?
                                                    Ответить
                                                  • В бейсике Sub и с аргументами можно вызывать без скобок. Но в выражениях конечно нужны.
                                                    Ответить
                                                • > А позже какие-то дрочилы зачем-то учудили ставить пустые скобки в Functiya1Call()
                                                  ... придумали first-class functions и понадобилось отличать функцию от её вызова.
                                                  Ответить
                                                  • Не всё так просто

                                                    > придумали first-class functions
                                                    Всегда были.

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

                                                    В Бейсике (еще со времён Быстрого) M$ для этого предусмотрел ключевое слово Call.
                                                    Ответить
                                                    • У яибу был смешной бугор от этого.

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

                                                      А как передать туда метод?

                                                      Я не могу скзаать ``foo.bar``, потому что это вызов метода!

                                                      Для этого они пишут ``foo.method(:bar)``
                                                      https://docs.ruby-lang.org/en/2.4.0/Object.html#method-i-method
                                                      Ответить
                                                      • В компиляторе VB6 внутри ресурсов была мелодия в миди. Послушайте эту мелодию.
                                                        Ответить
                                                  • В диалектах Паскаля для этого используют оператор @ (у Фрипаскаля синтаксис чуть-чуть отличается от Дельфи и ТП, но суть та же).
                                                    Ответить
                                                    • @ пишут, чтобы ошибки не было

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

                                            Так точно! В них есть возможность произвольно выбирать название конструирующего метода.
                                            Ответить
                          • > во втором случае мы сразу создаем указатель на nil.

                            > Ну вот скажи мне, это типа просто и понятно? Куда проще, чем в сложной сишке, да?

                            Не знаю. Может паскалистам зайдёт.
                            Для них это более-менее привычный синтаксис.
                            new (type) — аллоцирует место под тип. Но в отличие от говна по указателю будет мусор.
                            Dispose(p) — освобождает.

                            А инициализация идёт отдельной процедурой.

                            Но опять же, зачем говнюки засрали логическое И?
                            Ответить
                • В общем я почитав.

                  Go делает статический escape analysis прямо по AST в момент компиляции, и если запустить его с -l (отключив инлайнинг) и -m, то можно увидеть, как он работает.


                  func foo() []int {
                  	a := []int{1, 2, 3} //онамный моссив и указатель на него
                  	return a // в этом месте все поехало в хип
                  }
                  
                  func main() {
                  	print(foo())
                  }


                  C:\temp\myGoPro>go build -gcflags="-m -l"  main.go
                  # command-line-arguments
                  .\main.go:4:12: []int{...} escapes to heap


                  А теперь давайте избавимся от хипа
                  package main
                  
                  func foo(a *[3]int) {
                  	a[0] = 1
                  	a[1] = 2
                  	a[2] = 3 //имеется ввиду (*a)[2], но он сам разысменует, а -> тут нет
                  
                  }
                  
                  func main() {
                  	a := [3]int{}
                  	foo(&a)
                  
                  	print(a[1])
                  }
                  # command-line-arguments
                  .\main.go:3:10: a does not escape


                  Отсюда вывод: хороший Goвнюк должет это понимать, и смотреть на свои программы с помощью "-m", иначе случайно насрет в кучу.
                  Вот вам и простой язык...
                  Ответить
                  • Интересно, что две следующие функции идентичны.
                    Она создает питуха, и его и возвращает
                    Другая как-бы создает его как-бы в где-то (как-бы в куче) и далее мы оперируем указателем на петуха, а в конце его разыменовываем.

                    Но анализ говорит
                    .\main.go:13:12: new(DeKip) does not escape

                    И код получется одинаковый
                    TEXT    "".kook(SB), NOSPLIT|ABIInternal, $0-0
                            FUNCDATA        $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
                            FUNCDATA        $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
                            XORL    AX, AX
                            RET
                    
                    // и вторая 
                            TEXT    "".koko2(SB), NOSPLIT|ABIInternal, $0-0
                            FUNCDATA        $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
                            FUNCDATA        $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
                            XORL    AX, AX
                            RET


                    Возможен и обратный случай (опять таки -- оба варианта идентчины)
                    func kook() *DeKip {
                    	kip := DeKip{}
                    	return &kip
                    }
                    
                    func koko2() *DeKip {
                    	kip := new(DeKip)
                    	return kip
                    }
                    .\main.go:8:2: moved to heap: kip
                    .\main.go:13:12: new(DeKip) escapes to heap


                    Забавно, что перекладывание локальной переменной на кучу он назвал "moved to хип", а отказ от перекладывания из кучи обратно так и назвал "escapes to heap" (бо она там изначально и была).

                    Так что можно похоже думать так: Я все создаю как в сишке, просто потом приходит злой дядя, и прекладывает что-то из стека в кучу или обратно в тайне не от меня
                    Ответить
                    • > .\main.go:13:12: new(DeKip) escapes to heap

                      Меня это тоже смутило. Я даже подвис на минуту.

                      Как new может совершать побег на кучу.

                      Из этого сообщения я понимаю, что goвно вообще срало на эти new.
                      Оно по возможности аллоцирует всё на стеке. А дальше как escape analisys решит.
                      Ответить
                      • Сначала приходит анализ, и решает что где аллоциорровать, а потом герерируется их говноасембелр

                        Код -> AST -> Анализ -> Асемблер

                        type DeKip struct {
                        	koko int
                        }
                        
                        func koko2() DeKip {
                        	kip := new(DeKip) // Я говорю: хочу кучу
                        	return *kip
                        }
                        func main() {
                        	println(koko2().koko)
                        }


                        Но мне говорят
                        .\main.go:8:12: new(DeKip) does not escape


                        и эффективно заменяют на
                        func koko2() DeKip {
                        	kip :=  DeKip{}
                        	return kip
                        }


                        При этом если питух достаточно жирен, то ситуация обратная
                        type DeKip struct {
                        	koko [4096 * 4096]int
                        }
                        
                        func koko2() DeKip {
                        	kip := new(DeKip)
                        	return *kip
                        }

                        .\main.go:8:12: new(DeKip) escapes to heap

                        И даже
                        func koko2() DeKip {
                        	kip := DeKip{}
                        	return kip
                        }

                        .\main.go:8:2: moved to heap: kip (и меня не спросил)

                        Короче, пиши как хочешь, твои желания компилятору насраны
                        Ответить
                      • Escape / не Escape говорят о том, что ты как-бы изначально попросил положить в кучу

                        moved о том, что ты как-бы попросил на стек положить, а его мувнули в кучу

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

                          > и там можно будет руками оптимизнуть

                          Не понял как. Он же игнорит все хинты.
                          Ответить
                  • Разврат массивов во всех ЯП реализуется трюками. Вернуть указатель на локалки мы не можем, потому что они разрушаются при выходе, а в мышиное слово (которое обычно используется для разврата) массив не влезает.

                    В Турбо Паскале сделали так: вызывающий блок резервирует место в стеке под возвращаемый массив и передаёт в функцию последним аргументом (который на уровне языка не видно) указатель на это место, чтобы функция знала, куда класть результат. Недостаток: нужно заранее знать размер массива.

                    function foo:array[0..2] of integer;

                    Тут вызываемый код перед передачей аргументов сделает sub sp, 3*sizeof(integer), потом передаст аргументы функции, потом запушит указатель на выделенный блок, и только потом сделает call.

                    В Go вот решили ничего заранее не аллоцировать и ничего лишнего не передавать, пусть аллоцирует функция и вернёт результат.

                    Какие ещё варианты? В стек внутри функции мы срать не можем, функция его должна вернуть в первозданном виде. Глобалки — не вариант.
                    Ответить
                    • Ты удивишься, но в регистр для возврата много чего не лезет.
                      Сишка не умеет вернуть массив per-se, но может вернуть структуру, которрая тоже в регистр не влазит.

                      И у нее сделано точно так же: вызывающая сторона создает место на стеке, и передает указатель в вызываемую функцию, дескать "срать ВОТ СЮДА".


                      В Go можно вернуть массив, а можно положить его в кучу, и вернуть указатель (ну как и в сишке).

                      func createArray() [2]int {
                      	return [...]int{1, 42}
                      }
                      func main() {
                      	ar := createArray()
                      	println(ar[0], ar[1])
                      }

                      тут все честно, вернули массив копированием.

                      А тут серанули его в кучу
                      func createArray() *[2]int {
                      	return &[...]int{1, 42} //думайте об этом как о smart pointerах, что ли
                      }
                      func main() {
                      	ar := createArray()
                      	println(ar[0], ar[1])
                      }

                      Разумеется, получили
                      .\main.go:4:9: &[2]int{...} escapes to heap


                      Более идеоматичный способ
                      func createArray() []int {
                      	return []int{1, 42}
                      }

                      .\main.go:4:14: []int{...} escapes to heap

                      скобочки-инт это слайс, указатель на массив. Тут мы создаем где-то-в-куче массив, и возвращаем на него указатель
                      Ответить
                      • А вот еще забавное
                        const size = 4096
                        
                        func createAndCopy() [size]int {
                        	arr := [size]int{}
                        	for i := range arr {
                        		arr[i] = 42
                        	}
                        	return arr
                        }
                        func main() {
                        	arr := createAndCopy()
                        	for i := range arr {
                        		println(i)
                        	}
                        }


                        мы честно вернули массив. Но если size у нас 4096 * 4096, то стек может и порваться на нацистский крест, и тогда...
                        .\main.go:6:2: moved to heap: arr
                        .\main.go:13:2: moved to heap: arr

                        воу

                        Так что можно типа даже и о перформансе как-бы не думать, оно само все сделает
                        Ответить
                    • Так увидит что escapes и тупо насрёт в кучу, gовно.
                      Ответить
                    • > Разврат массивов во всех ЯП реализуется трюками.
                      > Какие ещё варианты? В стек внутри функции мы срать не можем, функция его должна вернуть в первозданном виде.

                      Именно поэтому я за С++

                      #include <array>
                      #include <stdio.h>
                      
                      std::array<char, 4> retArray() 
                      {
                           return {11, 22, 33, 44}; 
                      }
                      
                      int main(void){
                          std::array<char, 4> x = retArray();
                          printf("%d",x[2]);
                      }
                      
                      retArray():
                              movl    $740365835, %eax
                              ret

                      https://godbolt.org/z/8E8q5h8vf

                      Массив побольше и тут С++ справился
                      https://godbolt.org/z/ffdEz66je
                      Ответить
                      • ну он повел себя ровно так, как повел бы себя для структуры

                        для мелкого array тупо пхнул его в регистр, для крупного -- вызывающая сторона подготовила место на стеке, а вызываемая туда пхнула массив

                        std:array приятная штука, лечит одну из травм няшной

                        А вот скажите, кроме Go и std::array где еще массив передается по значению? Сходу помню превращение перломассива в лист, но это не совсем то
                        Ответить
                        • Думаю rust какой-нибудь вполне может.

                          D наверное тоже. Там массивы очень приятные.


                          > std:array приятная штука, лечит одну из травм няшной

                          С этим она стала ещё приятней. Теперь не надо ручками размеры высчитывать.
                          https://en.cppreference.com/w/cpp/container/array/deduction_guides
                          Ответить
                    • > Разврат массивов во всех ЯП реализуется трюками.

                      Сишка.
                      #include <stdio.h>
                      typedef struct
                      {
                         int arr[16];
                      }  Arr;
                      Arr retArr(a,b,c){
                          return (Arr) {11, 22, 33, 44,55,66,77,88,1,1,1,1,1,a,b,c}; 
                      }
                      
                      int main(void) 
                      {
                          printf("%d\n", retArr(1,2,3).arr[4]);	
                          return 0;
                      }
                      
                      https://godbolt.org/z/3f5zbMT98


                      Видим что делает старый шланг на -O1
                      main:                                   # @main
                              sub     rsp, 72
                              lea     rdi, [rsp + 8]
                              mov     esi, 1
                              mov     edx, 2
                              mov     ecx, 3
                              call    retArr
                      Ответить
                      • sub rsp, 72 резервирует место под разврат.

                        lea rdi, ... — это как раз передача (n+1)-м аргументом указателя на выделенный кусок.
                        Ответить
              • > А разницы между & и new выходит нет?

                Ахаха, говнюки сами путаются. Как клоуны с РНР.RU, ей богу.
                https://stackoverflow.com/a/9321658

                Ну получается ГОндоны на ровном месте запарашили оператор логического И.
                Ответить
                • блядь как можно было так муторно и запутнно сделать такую базовую вещь?


                  Ей богу, мне С++ проще понять было
                  Ответить
                  • В эзотерическом ЯП «INTERCAL» есть ключевое слово «PLEASE», которое ничего не делает, но его необходимо вставлять через каждые несколько строк.

                    Если ты слово «PLEASE» употребляешь редко или вообще не употребляешь, транслятор падает с ошибкой E079 «Программист недостаточно вежлив». Если же наоборот, частишь, то транслятор упадёт с ошибкой E099 «Программист слишком вежлив».

                    «Правильная» частота слова «PLEASE», не документирована. Её нужно подобрать при отладке.

                    Вне зависимости от качества твоего кода компилятор может упасть с сообщением «Случайная ошибка компилятора», которая при следующем запуске не воспроизведётся.
                    Ответить
                    • Хороший язык.

                      > компилятор может упасть с сообщением «Случайная ошибка компилятора», которая при следующем запуске не воспроизведётся.

                      Гейзенбаги и в обычных язычках нередкое явление. Особенно с тех пор как все начали угорать по многопоточности.
                      Ответить
                    • В принципе PLEASE в многопитульных программах принято заменять на yield/sched_yield

                      Если ты слово «YIELD» употребляешь редко или вообще не употребляешь, процесс виснет с ошибкой «Uninterruptible Sleep State». Если же наоборот, частишь, то процесс тормозит .

                      «Правильная» частота слова «YIELD», не документирована. Её нужно подобрать при отладке.

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

                      “under a complex set of internal timing conditions and system events, software using the Intel TSX (Transactional Synchronization Extensions) instructions may result in unpredictable system behavior.”
                      Ответить
                      • Напоминает синхронизацию кода посредством Thread.sleep
                        Ответить
                        • Потому что это одна и та же техника.
                          Thread.sleep(0) зачастую эквивалентен Thread.yield()
                          OpenJDK source (Java SE 7) have the following implementation for Thread.sleep(0) in JVM_Sleep function of jvm.cpp:
                          
                            if (millis == 0) {
                              // When ConvertSleepToYield is on, this matches the classic VM implementation of
                              // JVM_Sleep. Critical for similar threading behaviour (Win32)
                              // It appears that in certain GUI contexts, it may be beneficial to do a short sleep
                              // for SOLARIS
                              if (ConvertSleepToYield) {
                                os::yield();
                              } else {
                                ThreadState old_state = thread->osthread()->get_state();
                                thread->osthread()->set_state(SLEEPING);
                                os::sleep(thread, MinSleepInterval, false);
                                thread->osthread()->set_state(old_state);
                              }
                            }
                          Ответить
                          • ну тут надо смотреть как шедулер осей смтоирт на сискол sleep, но скорее всего это такой способ сказать шедушелу "я кончил, давай следующево питуха запускай"
                            Ответить
    • https://twitter.com/Perpetualmaniac/status/1541315869820608512
      Ответить
      • Пиздец, даже создателей бивиса и баттхеда заебало левацкое говно
        Ответить
    • Доброго дня, хотите научиться зашибать деньгу деньги? Тогда моя
      методика для вас, вы будете в шоке, как все легко и просто. С
      уважением, Дина. Ваша ссылка:
      https://docs.google
      Ответить
    • Здравствуйте, приглашаем вас принять участие в конкурсе на вакансию:
      «Начальник отдела креативного планирования». Все что нужно заполнить
      типовое резюме. Менеджер по персоналу, Агата. Ваша ссылка:
      https://docs.goo
      Ответить
    • Здравствуйте, вам надоел постоянно пустой кошелек, тогда я помогу вам
      зашибать деньгу больше. Мой метод заработка прост, и с ним справится
      любой, просто следуйте инструкциям. С уважением, Марфа. Тут
      подробности: https://do
      Ответить
      • До-до-до-до, пчела летела,
        До-до-до-до, издалека,
        До-до-до-до, и долетела,
        До-до-до-до, до цветка.
        Ответить
    • Русский программист переехал в Нидерланды, языка не знает почти, говорит в баре:
      Ik wil beer alsjeblieft
      (шутка распостраняется по лицензии BSD)
      Ответить
      • Кажется, понял: beer — bier.
        В немецом похоже: Bär — Bier. А вот Beerе будет означать ягоду (не наркома, а фрукт).

        А если вспомнить, как эти три слова звучат и пишутся в английском, совсем запутаешься.
        Ответить
        • да) потому и программист русский

          >ягоду
          ну да, berry у англичан
          Ответить
          • Такая клюква получилась, нарочно не придумаешь.
            Ответить
          • https://store.steampowered.com/app/1129220/BEARS_VODKA_BALALAIKA/
            Ответить
            • https://www.youtube.com/watch?v=mgUdwsQyY_s
              Ответить
              • Одно время у нас в продаже были китайские хардварные тетрисы, которые играли «Ой, полным-полна моя коробушка, есть и ситец, и парча».
                Ответить
                • Я в 90-е тёк от Брикгейм, разумеестя
                  Их было так много, и в каждой 999999 игр (на самом деле две)

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

                    > на самом деле две
                    Четыре. На некоторых больше.
                    Ответить
            • Rabotiagi games
              Ответить
    • Го за последние пять лет стал чуть менее обосснаым
      * появилсь модули
      * появились генерики

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

      Бабла за него платят дохуя
      https://www.octoparse.com/blog/15-highest-paying-programming-languages-in-2017

      Пожалуй, стану Goвноедом. Один хуй мне в компании крестоблядствовать не дадут
      С поебенью с памятью я уже смирился

      На вкус примерно как смесь питона и пятой джавы, но с указателями
      Ответить
      • Кстати спасимбо Го за отсутствие пидорастическово термина "class".
        Ответить
      • > На вкус примерно как смесь питона и пятой джавы, но с указателями

        Хуже. В питоне и джаве хотя бы исключения были.

        Но это конечно отборное говноедство (во всех смыслах), хвастаться наличием женериков в 2к22

        15 March 2022

        Go 1.18 is a massive release that includes new features, performance improvements, and our biggest change ever to the language. It isn’t a stretch to say that the design for parts of Go 1.18 started over a decade ago when we first released Go.
        Generics

        In Go 1.18, we’re introducing new support for generic code using parameterized types.
        Ответить
    • Республика Бурятия, Баргузинский р-н, пос. городского типа Усть-Баргузин

      Разнорабочий без опыта на стройку вахтой
      60 000 — 90 000

      Приглашаем РАБОЧИХ СТРОИТЕЛЬНЫХ СПЕЦИАЛЬНОСТЕЙ на работу вахтовым методом на крупных промышленных стройках по всей территории РФ

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

      УСЛОВИЯ:
      • Белая заработная плата от 60 000 до 90 000 р./мес.;
      • Повышение ставки со второй вахты.
      • Срок вахты 60/80 смен. По желанию, вахту можно продлять.
      • Оформление по ТК РФ с 1-го дня работы;
      • Своевременные выплаты 2 раза в месяц, на карту банка;
      • Карьерный рост

      ПРЕДОСТАВЛЯЕМ:
      • Проживание;
      • Питание или суточные;
      • Спецодежду и инструмент;
      • Обучение и медицинскую комиссию;

      ТРЕБОВАНИЯ:
      • Желание работать и зарабатывать;
      • Отсутствие противопоказаний по здоровью

      ОБЯЗАННОСТИ:
      • Соблюдение трудового распорядка
      Ответить
    • Goвноеды, верно ли я понимаю, что в Го настолько ненавидят ООП, что оно там выглядит так
      package user
      
      type Id = int8
      
      var currentId Id
      
      type User interface {
      	Id() Id
      	Name() string
      }
      
      type user struct {
      	id   int8
      	name string
      }
      
      func (user user) Id() Id {
      	return user.id
      }
      func (user user) Name() string {
      	return user.name
      }
      
      func New(name string) User {
      	currentId++
      	return user{name: name, id: currentId}
      }

      ?

      Я так-то не против (пошло оно в пизду это ваше ООП) но как-то это необычно
      Ответить
      • Фу блять
        Ответить
        • Фу - ПО управления российскими фляжными беспилотниками - под винду. Вот что "фу". Кунг-фунг, былять.
          Ответить
    • https://vk.com/wall-154906069_1275028
      Ответить
    • https://habr.com/ru/post/656937/

      Ебать мой хуй.
      Вышла Java 18. Последний раз я видел новость «Вышла Java 7».
      Ответить
      • ну, пока айжей командовал sun, политика была такая: Выпускать новую версию языка не чаще, чем раз в десять лет, и в каждой новой версии добавлять не более ноля полезных фич.

        На фоне этого уныния и родился Коко

        А потом йажу купил Оракл, и всё заверте
        Ответить
        • > пока айжей командовал sun, политика была такая: Выпускать новую версию языка не чаще, чем раз в десять лет и...

          ... не ломать обратную совместимость.

          > А потом йажу купил Оракл, и...

          > The method covered in other answers that employs ((DirectBuffer) byteBuffer).cleaner().clean() doesn't work on JDK 9+ (even in reflective form) without displaying an An illegal reflective access operation has occurred warning.
          > This will stop working altogether in some future JDK version.
          https://govnokod.ru/28254#comment779032
          Ответить
          • >... не ломать обратную совместимость.

            именно по этому я за "Perl 5"
            Ответить
    • Почему нельзя сделать нормальный язык
      * без ГЦ
      * со строгой статической структурной типизацией из коробки
      * с нормальной модульной системой
      * с пакетным медженером
      * со строгим кодстайлом
      * со встроенным тест фреймворком
      * с API для профилировки и дебага
      * с хорошим интеропом с си
      * с хорошей поддержкой функционального программирования
      * с иммутабельностью всего по умолчанию
      * чтобы прикольная зверушка была на логотипе
      ?
      Ответить
      • Потому что
        Ответить
        • Потому что нельзя
          Потому что нельзя
          Потому что нельзя

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

        да ты накрепко охуел со своими запросами!

        в кристале кстати вроде можно без гц писать

        > со встроенным тест фреймворком

        а вот это сразу нахуй, что я должен делать, если он хуевый и меня не устраивает?
        Ответить
        • >, что я должен делать, если он хуевый и меня не устраивает?

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

          как руби, но стат типизацией

          а как там реализовано осовбождление памяти и рисурсов?
          Ответить
          • а хрен его знает, я так ни разу и не запустил (
            Ответить
            • поскольку руби это единственный непидорский скриптоязык (ну после перла конечно) то возможно и кристал неплох
              Ответить
              • > поскольку руби это единственный непидорский скриптоязык

                Забавный пример ложного утверждения.
                Ответить
                • ну я же поправил:
                  >после перла конечно
                  Ответить
      • И чтобы ГОМОИКОНЫ
        Ответить
      • Так это же почти по всем пунктам «Ржавый».
        Ответить
        • Не хватает зверушки
          Ответить
        • там говоря борроу чекер живет, и хвостик отгрызет

          или правда попроболвать?
          Ответить
          • В требованиях же не была указана "высокая скорость конпеляции".

            Так что попроболвать стоит.

            Чтобы уже обсирать рустню на ГК со знанием дела. А не анскильными набросами, как это делал я.
            Ответить
          • Бороду отгрызет.
            Ответить
        • Блин, а действительно так.
          Ответить

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