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

    0

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

    #45: https://govnokod.ru/26635 https://govnokod.xyz/_26635
    #46: (vanished) https://govnokod.xyz/_26646
    #46: (vanished) https://govnokod.xyz/_26654
    #47: https://govnokod.ru/26671 https://govnokod.xyz/_26671
    #48: https://govnokod.ru/26707 https://govnokod.xyz/_26707
    #49: https://govnokod.ru/26750 https://govnokod.xyz/_26750
    #49: https://govnokod.ru/26776 https://govnokod.xyz/_26776
    #50: https://govnokod.ru/26804 https://govnokod.xyz/_26804
    #51: https://govnokod.ru/26809 https://govnokod.xyz/_26809
    #52: https://govnokod.ru/26817 https://govnokod.xyz/_26817
    #53: https://govnokod.ru/26833 https://govnokod.xyz/_26833
    #54: https://govnokod.ru/26840 https://govnokod.xyz/_26840
    #55: https://govnokod.ru/26844 https://govnokod.xyz/_26844
    #56: https://govnokod.ru/26862 https://govnokod.xyz/_26862
    #57: https://govnokod.ru/26890 https://govnokod.xyz/_26890
    #58: https://govnokod.ru/26916 https://govnokod.xyz/_26916
    #59: https://govnokod.ru/26934 https://govnokod.xyz/_26934
    #60: https://govnokod.ru/26949 https://govnokod.xyz/_26949
    #61: https://govnokod.ru/26980 https://govnokod.xyz/_26980
    #62: https://govnokod.ru/26999 https://govnokod.xyz/_26999
    #63: https://govnokod.ru/27004 https://govnokod.xyz/_27004
    #64: https://govnokod.ru/27020 https://govnokod.xyz/_27020
    #65: https://govnokod.ru/27027 https://govnokod.xyz/_27027
    #66: https://govnokod.ru/27040 https://govnokod.xyz/_27040
    #67: https://govnokod.ru/27049 https://govnokod.xyz/_27049
    #68: https://govnokod.ru/27061 https://govnokod.xyz/_27061
    #69: https://govnokod.ru/27071 https://govnokod.xyz/_27071
    #70: https://govnokod.ru/27097 https://govnokod.xyz/_27097
    #71: https://govnokod.ru/27115 https://govnokod.xyz/_27115
    #72: https://govnokod.ru/27120 https://govnokod.xyz/_27120

    Запостил: nepeKamHblu_nemyx, 26 Ноября 2020

    Комментарии (443) 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 (резервный чат)
      Ответить
    • Можно ли преорразовать GPT диск в MBR не потеряв данные?
      Если диск на 6 тербайт, то что будет с "далекими" партициями?
      Ответить
      • > что будет

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

        > gpt в mbr

        Акронис вроде умел. Но зачем тебе MBR в 2020? Икспи не ставится?
        Ответить
        • в винде в дискменеджере есть такая кнопочка, и она же есть в diskpart, но пробовать стремно пока. Забекаплю, и попробую, ужму раздел только до нужных размеов. Акронис платный, вроде.

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

              ну посмотрим. Она же предупредит, я надеюсь?
              Ответить
          • > зачем тебе mbr в 2020

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

          Старый комп, 1тб хдд (H1) забит говном, стоит семерка, MBR.
          Хочу перенести его на ssd 256 (S1). Есть шеститерабайтник (H2) в качестве буфера.



          * сделал две партиции на H2 каждая по 1тб
          * перенес говно на первую, с H1
          * сделал фулбекап на вторую (без говна получилось 200 гигов)
          * хочу сделать с него беар метал рекавери на S1, а потом вернуть на H1 говно
          * втыкнул S1 вместо H1, гружусь с флешки, рекавери грит: не вижу бекапа

          и тут блядь я понимаю, что 6тб у меня GPT

          переделываю флешку в UEFI, она начинает видеть бекап, и грит: а я уефи, а у тебя бекап винды сделан с MBR, иди в пизду

          Хочу теперь ужать второй раздел на H2 где-то до размеров 500 метров, полчится диск на полтора гига, конвертнуть его в мбр и сделать фул метал рекавери.

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

              делаешь полный бекап (По сути там получается vhd, с копией поблоковй), затем меняеш диск и делаеш фул рекавери

              иногда оно тупит, тода надо руками через wbadmin восставливать диски. Может, так бы и сработало (разбить диск на партиции и каждую восстановить, их там две) но я не хочу, бо пирдолинг

              есть еше сторонние тулы, но я им не доверяю
              Ответить
              • Да миграция винды -- это пиздец полный.

                У меня и хдд и ссд по терабайту были, ничто не предвещало беды и я просто ддшнул прыщами. Но... Дров на нвме в списке бутовых не было и оно не загрузилось. Пришлось ставить дрова на старом диске и ещё раз ддшить. Передергивая кабели чтобы винда джва диска с одним айди не увидела и всё не наебнула, лол.
                Ответить
                • такая же хуня бывала с ahci / ide

                  ddушнуть можно тока оффлайново же, а бекапить винду можно онлайново, через shadow volume или как там оно.

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

                  а там еще можно наибаца с тем, что запись в bcd будет неверная, и нужно будет из рекавери фиксить

                  Все это дуибл, но много ебли.
                  Ответить
                  • > у ссд же другое выравнивание

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

                  Зачем поддержка материнки для nvme?
                  Чтобы прошивка умела с него грузица? А не проще ли впихнуть туда BIOS, чтобы эмулировать SATA для загрузки?
                  Ответить
                  • или там просто про наличие дырки M.2 речь?
                    Ответить
                    • Как мне кажется, "поддержка" -- это прежде всего тестирование. Т.е. что чуваки хотя бы одну карточку воткнули и попытались с неё загрузиться. А если "поддержка" не заявлена -- то даже сам производитель не знает чем это закончится.
                      Ответить
                      • ну мне было интересно что туда вкладывается в это опнятие.

                        Это как в памятью: формально ты должен пхать только память их HQL (или как там оно, что вендор тестировал). По факту же всем похуй
                        Ответить
                  • Да, вроде самые первые материнки с нвме не умели с него грузиться.

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

                      Как вообще это работает?
                      Должен ли биос материнки уметь прочитать список устройств в руткомплекса или хостбриджа и найти там IDE/SATA?

                      А в случае UEFI там тупо драйвер?

                      В моем детстве все было проще: там вроде бы прошивка материнки сканировала адресное пространство с каким-то шагом, и искала там AA55, и если находила -- передавала туда управление.

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

                      Так ведь не делают?
                      Ответить
                      • > Правда, это были серверные платы.

                        Именно! И их тестируют на работу с таким говном, в отличие от десктопных.

                        > сканировала адресное пространство

                        Сейчас в пси ищутся регионы опромов и парсятся. Либо как старый биосный "драйвер" либо как обычный уефишный бинарь. Ради видюх в основном.

                        > найти там IDE/SATA?

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

                          >Должен. Ищет.
                          ну это было к вопросу о "внешней карточке". Слава богу, что ищет.
                          Или это только у хороших плат?

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

                            Под секьюр бутом вся эта эмуляция, само собой, отключена. И будет читаться только уефишный драйвер.

                            > Или это только у хороших плат?

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

                              Но с uefi вроде как должно стать получше: там просто драйвер пишешь, а не подменяешь говнопрерывания в 16ти битном коде


                              >вангую, что много где не работает.
                              вообще я бы тоже не рискнул грузиться с рейда какого-нить на домашнм говне, угу
                              Ответить
                              • > какое нестабильное гвоно это ваше железо: костыль на костыле
                                Ну так с каждым повышением уровня обсракции количество сил, требуемых для исправления breaking change с нижнего, растёт в ге-о-мет-ри-чес-кой прогрессии. И если на очередную смену сигнатур в каком-нибудь «ЙАЖАСцрипт»-фреймворке всем похуй, то от любой потери совместимости между двумя ранее совместимыми железяками температура Земли повышается минимум на полградуса.
                                Ответить
                          • > эмульнуть можно хоть IDE

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

                              будет как раньше: питух с дуру поставил винду в эмуляции IDE, она драйвер и поставила, а потом нужно ебаца, чтобы переключить в AHCI
                              Ответить
                              • > питух с дуру поставил винду в эмуляции IDE, она драйвер и поставила, а потом нужно ебаца, чтобы переключить в AHCI
                                О, это я! Недавно проходил этот увлекательнейший квест, не понравилось.
                                Ответить
                                • Можно поставить оба драйвера, чтобы она запускалась в любом режиме.
                                  Ответить
                                  • Линукс так и делает... Винда же страдает микрооптимизациями зачем-то. Экономит миллисекунду на загрузке "лишнего" драйвера чтобы потом 30 минут ставить свои сраные апдейты.
                                    Ответить
                                    • она еще раньше умела ставить hal и ядро отдельно для SMP и одноядерной системы
                                      Ответить
                                    • Ну вот я в «Винде» поставил в автозапуск драйвера «pciide», «msahci», «intelide», «iastorv» и теку. Ненужный драйвер сам выгружается взад через миллисекунду после попытки загрузки, если не находит нужного девайса, а нужный драйвер остаётся в памяти. Теперь можно включать хоть «АПЧХИ», хоть «ИДЕ». Видимых тормозов при загрузке из-за этого не заметил.

                                      Почему в «MS» сразу не могли так сделать?
                                      Ответить
                                • Есть FixIt даже для семерки: же физически .dll есть, просто нужно указать нужную в драйвере/сервисе

                                  А вот в XP не было, там нужно было ставить, но всем было похуй, бо SSD почти что не было тогда, а старые HDD и в IDE норм работали
                                  Ответить
                                  • У меня не в драйверах было дело, у меня, ЕМНИП, почему-то от смены режима диска в биосе настройках «UEFI» на «АПЧХИ» слетели гуиды, и винда начала падать в «INACCESSIBLE BOOT DEVICE». Решилось путём загрузки в рекавери-мод (или как он там сейчас правильно называется) и ковырянием в «bcededit».
                                    Ответить
                                    • Какой багор )))
                                      Ответить
                                    • >«UEFI» на «АПЧХИ»
                                      ты может с GPT и MBR перехуячился?

                                      тогда понятно, что bcd нужно перестраивать
                                      Ответить
      • Ну как, преобразовал?
        Ответить
        • Угу.
          diskpart послал меня нахуй, я нагуглил AOMEI Partition Assistant 9.0 и серийник к нему (ну пушо он платный как и акронис и пр) и он преобразовал секунд за 30.

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

            Кста, производители ссд часто раздают какую-нибудь бесплатную тулу для миграции. Возможно даже акронис.
            Ответить
            • хз, мне с evo вроде ничего не дали, а может я криво смотрел

              вообще пидорство конечно

              я забыл кстати еще про пирдолинг рассказать: чтобы перенести диск 1ТБ на 256ГБ мало просто очистить место, надо же еще шринкануть партицию (копия ведь побайтовая), а для этого ее нужно дефрагментить, подогнав говно наверх и сделав внизу пустое место. Это еще развлекуха на три часа
              Ответить
              • > криво смотрел

                Для evo какую-то тулу на сайте предлагают скачать.

                > подогнав говно наверх и сделав внизу пустое место

                Наоборот же, к началу раздела всё согнать?
                Ответить
                • ку?
                  https://www.samsung.com/semiconductor/global.semi.static/Samsung_SSD_Data_Migration_User_Manual_( ENG)_v.3.1.pdf

                  я не пробовал, не оч уверен, что винда передет, а не тока данные

                  >Наоборот же, к началу раздела всё согнать?
                  а начало у раздела внизу или вверху?:)
                  Ответить
                  • > а начало у раздела внизу или вверху?:)

                    Бля, это как мне на собеседовании сказали, что я бинарное дерево необычно изобразил: вверх-ногами.

                    > а не тока данные

                    Х.з., для данных вряд ли бы стали делать тулу.
                    Ответить
                    • с корнем снизу?

                      ты может еще и стек рисуешь вниз, как он реально выглядит?

                      >Х.з., для данных вряд ли бы стали делать тулу.
                      ну MS же сделала говновизард для переноса документов, который не умеет переносить с русской на ангглийскую и с x86 на x64.
                      Удобно шопиздец блядь

                      След раз попробую, но надеюсь больше никогда не увидеть системы, установленной на HDD
                      Ответить
                      • > стек рисуешь вниз

                        Я память нулём вверх обычно рисую. Поэтому стек растёт снизу вверх.
                        Ответить
                        • У мну стек растет справа налево, снизу вверх.
                          Ответить
                          • Звучит как очередная порнуха на порнхабе.
                            Ответить
                          • У меня растет ай кью
                            Скоро восемнадцать
                            Ответить
                            • Главное не длина ай кью, а умение им пользоваться.
                              Ответить
        • винда это рак рак рак!

          пизда не осилила шринкнуть диск (инвалид хендл), пришлось шринкать AOMEI

          в начале диска винда делает 100мб партицию и срет туда загрузчик (зачем это в mbr?) и как только ты подключаешь ему букву -- винда создает там USN Change Jorunal, который сразу занимает 50 метров из 100, и потом Shadow Volume VSS не работает: пишет "освободите место".
          А бекап требует делаться и для этой партиции тоже, и не может

          так что если ты хоть раз ассайнул туда букву -- ты уже никогда не сможешь забекаить винду, пока не сделашеь
          fsutil usn deletejournal /D DiskLetter:


          блядь почему винда такой пирдолинг?
          Бедные аникеи блядь
          Ответить
          • рак продолжается
            автовосстановление обосралось с "параметр неверен", пришлось вручную через diskpart создать разделы (слава богу он создал их кратными 4096), и через wbadmin восстановить туда два диска из бекапа (100 мегабайтный и C:). Разумеется, я сначала забыл пометить первый как активный, а еще номера-то у партиций другие, и пришлось фиксить bcd. Зато теперь всё работает
            Ответить
            • По-моему уже проще было снуля переустановить.
              Ответить
              • да нет. Во-перрвых настроки жалко, во-вторых дело приниципа, в третьих я теперь буду знать, что эта дорожка долга и сложна
                Ответить
    • https://habr.com/ru/company/domclick/blog/529706/

      Смотрите какая лулзовая статья. Там в компании «domclick» не могут решить что делать с Царём, который, нет, ну вы представляете, «работает, чтобы жить, а не живёт, чтобы работать».

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

        А должен? Я вот тоже рабочий чатик только с утра открываю. Если пиздец-пиздец -- позвонят.
        Ответить
        • Если в команде достигнута такая атмосфера, что сотрудники относятся к продукту как к своему «шедевру» и готовы вкладывать даже личное время в продукт — почему бы это не поддержать? В данном случае один сотрудник к этому не готов, и эта позиция может привести к тому, что и остальные перестанут уделять проекту дополнительное время.

          Видимо, должен, а то другие начнут догадываться, что что-то не так и придётся оплачивать овертаймы.
          Ответить
          • Да тут даже не в овертайме дело...

            Я, как бы, не против по-быстрому ответить коллегам. Но с тривиальными вопросами все, слава богу, сами справляются. А на остальные ответить за 5 минут не получится, не хочется же отвечать хуйню на отъебись. Надо переключаться в рабочий контекст, перечитывать код, думать и т.п.
            Ответить
            • Вот-вот, так и получается, что в свободное время решил поработать один питуз, а думать приходится всей команде, именно поэтому я за работу на работе и отдых вне работы. Лучше уж заняться повышением квалификации в свободное время, если так сильно хочется попрограммировать, а не пердолиться с заедушными бизнес-задачами.
              Ответить
            • Какая фасилитация )))

              то ли дело ГК, на нем можно сидеть 20/24 часов и отвечать на любые вопросы сём и стерторов
              Ответить
              • ГК -- это святое.

                Да и от хуёвого и неправильного ответа тут никто не пострадает.
                Ответить
                • А что, если сьома по нашей наводке в какой-нибудь линолиумный вентилятор вставит электромоторчик от какого-нибудь вертолёта, и ему лопастями что-нибудь отрубит?
                  Ответить
                  • И в чём вред? Это называется "получить ценный жизненный урок".
                    Ответить
                    • Ну вот вы всё: "где сёма?" – "где сёма??", а он тут, только написать об этом нечем (((
                      Ответить
                      • >нечем
                        сема купил клавиатуру фирмы ноунем за $0.99 на алиэкспресс и окорпичил ее по советам прыщеблядей с 4pda?
                        Ответить
              • > и отвечать на любые вопросы сём и стерторов
                Ну, ГК прекрасен тем, что отвечать можно только на интересные вопросы и тогда, когда есть настроение. Мне вот нравится расширять и углублять кругозор, отвечая на что-то, о чём я знал только поверхностно. Да и вон тот же Стандарт куда интереснее рыть, когда есть реальный пример вопроса, требующего уточнения.
                Ответить
              • Какой фольклор )))
                Ответить
        • Я бы сказал, он не должен не делать этого только потому, что стрелки на часах образуют определённую комбинацию.
          Есть возможность и время - ответил. Нет - не ответил.

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

            Не хочет -- не отвечает, его свободное время.

            З.Ы. Вот если не отвечает в рабочее время или срывает сроки -- это повод для разговора.
            Ответить
            • Ну короче культура в разных конторах разная. Где-то принято зависать 24/7 в рабочей телеге и дёргать друг друга по каждой мелочи. Где-то наоборот все живут более-менее автономно и не зависят от мгновенной реакции коллег. И эти культуры не особо совместимы между собой.

              Чела, о котором идёт речь в статье, лучше просто переселить на поддержку старого заматеревшего проекта (т.е. уволить, видимо). А свежий стартап пусть пилят юноши с горящими глазами. И все будут довольны.
              Ответить
            • > отдохнуть от рабочих вопросов, посмотреть аниме, поиграть в факторию и попиздеть на ГК о трапах
              Это значит, что у него нет времени. Значит можно ответить перед сном, когда трапы на ГК перестали делиться опытом и пошли спать. Или в рабочее время, если был сложный день.
              Не надо заниматься формализаторством, иначе у других тоже найдутся формальные причины, чтобы сделать какую-то пакость. Все ж мы люди, братишка. Каждый случай рассматривается отдельно.
              Ответить
              • > Это значит, что у него нет времени.
                > Значит можно ответить перед сном

                А нахуя, собственно, если можно с утра на свежую голову и в рабочей обстановке? Вопрошающий по-любому уже спать ушёл или сам всё выяснил.
                Ответить
                • Всё зависит от ситуации и человека. Кто-то спать ушёл, кто-то не ушёл, кто-то уже не соображает, кто-то ещё может.
                  Ещё зависит от частоты таких ситуаций. Если из-за такого человек работает 20 часов в день каждый день - это одно, если спрашивают раз в год - другое. Если спрашивающий сам отвечает в нерабочее время и готов помочь - одно, если не отвечает, а только пользуется другими - другое.

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

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

                    Бля, невнимательно читаю. Ну да похуй.
                    Ответить
                  • > формализацию этой питушни

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

                    З.Ы. Овертайм или выход в выходные по производственной необходимости сюда не относится, это отдельный вопрос.
                    Ответить
                    • > либо ты зависишь от ответов своих коллег, либо ты от них не зависишь
                      Слишком грубо, чтобы использовать на практике. Максимум, для решения "покупать телефон" или "не покупать телефон".
                      Играет роль текущая задача, конкретные люди и т.д.

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

                        Или работать... в рабочее время, лол. Ну хотя бы часа на 4 пересекаться с коллегами.
                        Ответить
                        • Ай, тьфу. Забыл, что речь о нерабочем времени идёт.

                          Но всё равно может быть какой-то огонь, который надо поддерживать в топке. Запросы какие-нибудь в БД, рендеринг 3д питушень, вычисления моделирования. Если человек, от которого зависит питушня, не ответит в выходные, в понедельник не получится проанализировать ответ сервера, качество 3д объектов и здравомыслие моделирования. В понедельник только придётся запускать то, что могло бы покрутиться в выходные.
                          Ответить
                          • если у тебя проект зависит от одново питуха, то ты просрал бас тест. Не надо так
                            Ответить
          • Если бы сьома захотел поставить питон и позвонил/написал в чатик тебе после работы, когда ты уже домой пришел уставший и заёбанный, что он еще в офисе и у него питон не ставится, что бы ты сделал?

            Тикеты здесь сьоме особой пользы не принесут, потому что завтра он подойдет к тебе в офисе и спросит вживую. Или обидится, что ты ему вчера не ответил, и напишет статью на швабр )))
            Ответить
            • Зависит от уровня усталости и сложности вопроса. Делал бы посильное.

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

        1. Берём в команду новичка с похожими скилами и горящими глазами
        2. Ставим проблемника наставником новичка
        3. Даём новичку и проблемнику смежные или даже одинаковые задачи
        4. Новичок учится у проблемника и начинает выполнять его же работу лучше него самого
        5. Переводим все задачи на новичка и повышем его до инженера (пряник)
        6. Увольняем проблемника так как для него больше нет задач (кнут)
        7. Результат — мотивированный и обученый сотрудник в команде, плюс психологическая демонстрация всей группе — за что бывает поощрение, а за что — увольнение.


        Какой менталитет краба )))
        Ответить
        • ...
          9. Профит!
          Ответить
          • 8. ??????????
            Ответить
            • 10. undefined
              11. undefined
              12. undefined
              13. undefined
              14. undefined
              15. undefined
              16. undefined
              17. undefined
              18. undefined
              19. undefined
              20. undefined
              21. undefined
              22. undefined
              23. undefined
              24. undefined
              25. undefined
              26. undefined
              27. undefined
              28. undefined
              29. undefined
              30. undefined
              31. undefined
              32. undefined
              33. undefined
              34. undefined
              35. undefined
              36. undefined
              37. undefined
              38. undefined
              39. undefined
              40. undefined
              41. undefined
              42. undefined
              43. undefined
              44. undefined
              45. undefined
              46. undefined
              47. undefined
              48. undefined
              49. undefined
              50. undefined
              51. undefined
              52. undefined
              53. undefined
              54. undefined
              55. undefined
              56. undefined
              57. undefined
              58. undefined
              59. undefined
              60. undefined
              61. undefined
              62. undefined
              63. undefined
              64. undefined
              65. undefined
              66. undefined
              67. undefined
              68. undefined
              69. undefined
              70. undefined
              71. undefined
              72. undefined
              73. undefined
              74. undefined
              75. undefined
              76. undefined
              77. undefined
              78. undefined
              79. undefined
              80. undefined
              81. undefined
              82. undefined
              83. undefined
              84. undefined
              85. undefined
              86. undefined
              87. undefined
              88. undefined
              89. undefined
              90. undefined
              91. undefined
              92. undefined
              93. undefined
              94. undefined
              95. undefined
              96. undefined
              97. undefined
              98. undefined
              99. undefined
              100. undefined
              101. undefined
              102. undefined
              103. undefined
              104. undefined
              105. undefined
              106. undefined
              107. undefined
              108. undefined
              109. undefined
              110. undefined
              111. undefined
              112. undefined
              113. undefined
              114. undefined
              115. undefined
              116. undefined
              117. undefined
              118. undefined
              119. undefined
              120. undefined
              121. undefined
              122. undefined
              123. undefined
              124. undefined
              125. undefined
              126. undefined
              127. undefined
              128. undefined
              129. undefined
              130. undefined
              131. undefined
              132. undefined
              133. undefined
              134. undefined
              135. undefined
              136. undefined
              137. undefined
              138. undefined
              139. undefined
              140. undefined
              141. undefined
              142. undefined
              143. undefined
              144. undefined
              145. undefined
              146. undefined
              147. undefined
              148. undefined
              Ответить
        • >(пряник)
          >(кнут)

          Совковые тетеньки-кадровички проснулись в комментариях. Закрывайте хабр нахуй.
          Ответить
      • Кстати! Угадайте, какой вариант больше всего нравится автору статьи (из предложенных им же):

        Уволить проблемного инженера

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

        Оставить всё как есть

        По-честному, парень ничего такого не нарушил. Работает положенное время, какие-то задачи делает, а значит и пользу приносит. Пусть и медленнее других.
        Может, ему и не нужно повышение. Он сам же выразился, «работает, чтобы жить».

        Дать ему отдельный мини-проект (даже с вакансиями, чтобы набирал команду под себя)

        Возможность вырасти в плане менеджмента и архитектурного проектирования. Может, начнет по-другому относится к задачам?
        А как ему доверить проект? Он задачки-то не вовремя делает: чувства ответственности практически нет. Хотя, может, ответственность перед другими разработчиками (которых он же и набирал) заставит его по-другому относиться к работе?
        Не много ли чести делать столько приседаний ради одного проблемника? Каждому инженеру, по которому возникают вопросы, давать отдельный проект? Проще уволить.

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

        Отвлечение ваших ресурсов на одного разработчика. Будете проседать по другим задачам.
        И с чего бы это такое особое отношение? Другие инженеры сразу заметят такой жестокий микроконтроль, и как отреагируют — неизвестно.
        Возможно, через какое-то время у него выработается привычка и контроль можно будет ослабить.
        Ответить
        • Наверное, последний.
          https://ebanoe.it/2020/03/22/vironit-total-control/.
          Ответить
      • Проблема в том что он хуево работает и срется с коллегами в рабочее время а не в том что не работает в нерабочее

        Скорее всего поэтому его и захотелось выпереть, люди могут так сидеть годами на одной позиции и всем будет ок
        Ответить
      • ничего не понимаю

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

        а тот, кто из дома не работает -- тому более похуй

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

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

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

            А на вопрос "почему у нас тут шрифт кривой" я только в рабочее время отвечу, бо скучно.

            >которые его ебут за неверно названный метод, лол.
            ну кстати затыки бывают же

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

            Давеча вон не смог отстоять замену строки на класс с внятной семантикой, так строка и осталась, пушо все привыкли, и зачем нам лишняя сущность
            Ответить
    • Возник внезапно вопрос: может ли работодатель по итогу собеседования отказать кандидату в приёме на работу только на основании несовпадения зарплатных ожиданий? Ну то есть отказать по причине «баб не берём» нельзя, потому что тогда «баба» может пойти в суд и сделать бо-бо. А что если сказать, что зарплата у нас только МРОТ + 1 рублей, не нравится — до свидания?
      Ответить
      • если ты автобусный парк или завод, то у тебя штатное расписание на 1к+ рыл
        ты берешь человека на вакантную должность в этом штатном расписании, и никак иначе
        ты не согласовываешь индивидуальные условия, ты можешь пообещать лишь премиями что-либо

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

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

        но, если брать исходный вопрос, не так и проблемно законно отказать соискателю, ты же не уволить его собрался
        Ответить
        • Спасибо!

          > не так и проблемно законно отказать соискателю, ты же не уволить его собрался
          Ну это понятно, я ж чисто как юридический казус такую питушню рассматриваю.
          Ответить
    • Based on our algorithmic analysis, you could be a great remote software engineer at top U.S. software companies. That is why we would like to invite you to join our elite developers program.

      We are a free custom service of matching that connects developers worldwide to challenging, long-term projects in the United States (without a Visa).

      Какой тиндер для разрабов )))
      Ответить
      • Ну как, зарегистрировался?
        Ответить
      • А нигерийские стартапы там есть?
        Ответить
        • У нас в нигерийском стартапе умер супер-пупер синьор девелопер высшей квалификации, наш нигерийский алгоритмический анализ показал, что вы отлично подходите, но чтоб мы вас приняли на работу, оплатите релокейт в Нигерию.
          Ответить
      • «Топтал» штоле?
        https://ebanoe.it/2018/03/21/toptal-review/
        Ответить
        • Какое название )))

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

            Вот у Тьюринга будет багор )))
            Ответить
          • Зачем использовать реальное мыло в гите? Мелкомягкохаб же умеет в [email protected], чтобы твои коммиты опознавались как твои.
            Ответить
            • Да у меня оно там даже опубликовано, а не просто в коммитах. Зачем фейкомыло скрывать?
              Ответить
            • Нахуя Линукс придумал анальную привязку мыла в гите, чтобы его на фейковые меняли?
              Ответить
    • https://docs.microsoft.com/ru-ru/troubleshoot/windows-server/networking/direct-hosting-of-smb-over-tcpip

      > В протоколе NetBIOS через TCP обычно используются следующие порты:

      > нбнаме: 137/UDP
      > нбнаме: 137/TCP
      > нбдатаграм: 138/UDP
      > нбсессион: 139/TCP

      Какой перевод )))
      Ответить
      • Это ещё мягко. У них есть страницы с более хардкорным переводом.
        Ответить
        • Фаина фаина
          Итс э фаинал кантдаун

          Тутуту туууууу
          Тутуту ту туууу
          Тутуту туууууу
          Тутуту туту туту
          Ответить
          • Ай, даже счастье, словно талый снег,
            And maybe we'll come back to Earth, who can tell?
            Прячешь ты глаза от меня, и уже средь бела дня.
            Will things ever be the same again?

            We're leaving together but still it's farewell.
            Где же, Фаина, твой серебристый смех?
            I guess there is no one to blame we're leaving ground.
            Ты с другим целуешься при всех.
            Ответить
        • я тут форсил уже
          https://docs.microsoft.com/ru-ru/windows-server/administration/windows-commands/certutil

          сетаттрибутес
          сетекстенсион
          Ответить
      • >нбнаме
        это африканское имя
        Ответить
    • https://ic.pics.livejournal.com/re_animator/410215/359285/359285_original.jpg
      Ответить
    • https://pikabu.ru/story/nemnogo_pro_zhenshchinprogrammistov_5134 972
      Ответить
      • Сейчас программисток (так можно, да?) полным полно и этим мало кого удивишь, а вот где-то в начале 2000-ных было не так сказочно.

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


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

          А в программистках ли тут дело?
          Ответить
          • https://en.m.wikipedia.org/wiki/Feminization_(activity)#Forced_Feminizat ion_as_a_sexual_practice

            Смотря какие программистки )))
            Ответить
            • Хм, т.е. программируя на "ПХП" люди испытывают чувство вины. Но если их "заставил" работодатель -- то всё норм.
              Ответить
              • Всё именно так! Каждый программист подсознательно желает писать сайты на «PHP», но так можно навлечь на себя неодобрение общества, поэтому приходится делать так, чтобы инициатива исходила не от тебя, либо вообще стать жертвой. Так, «PHP» программист намеренно не учит структуры данных и алгоритмы, мало знает про устройство ЭВМ, не учит высшую математику, чтобы потом стать кем он хочет быть, и при этом жаловаться на работодателя, что приходится вручную записывать цены из таблицы экселя в шаблон интернет-магазина, при этом получая и сочувствие, и наслаждение от занятия чем-то запретным.
                Ответить
                • Математик и системный программист по ночам ходят в тайный клуб, где специальные люди в латексе и с плетками за деньги заставляют их писать гостевые книги на ПХП.

                  Это называется гилти плежа
                  Ответить
                  • А написание говностока на питоне - это сродни мазохизму?
                    Ответить
            • Sissy training можно трактовать либо как примеривания к мужику женской роли (фетишизм), либо как обучение программистки...
              Ответить
              • Так вот как расшифровывается СисАдмин. А я думал, что это про сестрёнок что-то.
                Ответить
              • Я сначала подумал, есть ли какая-нибудь методика обучения «PHP», наподобие «sissy hypnosis».

                Как оказалось, есть:

                --- + триггер лист:
                Мерзкие звуки и противное видео.
                --- +

                https://youtu.be/yTtKzmpO570
                Ответить
                • По-моему это должно быть в пиздец-оффтопе а не тут.
                  Ответить
                  • А я запутался для чего нужен пиздец-оффтоп и больше там не сижу...

                    «Два юриста – три мнения».
                    Ответить
        • У нас кстати лишь пара программисток - на дотнете и пхп (всего сотрудников около 70). Какого-то особого предубеждения против них ни у кого нет. Имхо образование сейчас одинаковое, все зависит от способностей.
          В основном девушки работают техподдержкой, вестальщицами, ПМками и на прочих конторских должностях.
          Ответить
          • Ну ещё QA и аналитики.
            Ответить
          • На моей прежней работе женщин было в команде 2, и одна из них была как бы главной после тимлида.
            Не знаю как такая должность называется.

            Другая же раньше ПО для матмоделирования писала. Диффуры и вся фигня.
            Ответить
            • Доброе утро, YpaHeLI_. Ну как, нашёл новую работу?
              Ответить
              • Доброе утро, BJlADuMuPCKuu_nemxy, нет.
                Пора смириться.
                Я троечник и троечником буду.
                Ответить
                • Ты дебил? Не надо мириться. Пошёл на hh, и чтобы в ПН записался на собес.
                  Ответить
                  • Я сейчас не в городе, на удаленке работаю.
                    Надо Кнута сначала хотя бы попрактиковать.
                    Ответить
                    • Иди на https://leetcode.com/ (сам не пробовал, но много о нем слышал от коллег) и задрачивай задачки.
                      Ответить
                      • Там действительно годные задачки?
                        Ответить
                        • Задачки то годные но если ты не собираешься в гугл или в олимпиадах участвовать то это в целом трата времени
                          Ответить
                    • Ну как, попрактиковал?
                      Ответить
                • Я — ничтожество, жалкий грешник, урод, всё во мне, что есть — это зло и грех, мне приготовлены вечные муки, страшный суд, ад, и погибель.
                  Ответить
            • > дифуры

              Ну вот, а говорите ма-те-ма-ти-ка не нужна.
              Ответить
          • А у нас доуях тян, кстати. Суппортеры и QA почти всегда тян, одна даже девопсерша, дизайнеры тоже, но и программерш хватает.

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

          Это как у Стеньи Разина, да?
          Ответить
      • Доброе утро, сестрёнка!
        Ответить
      • На Пикабу, оказывается, так интересно. Надо бы почаще заходить )))

        16:10 *я устал ждать, вышел в коридор, спросил у секретаря, будет ли вообще собеседование.

        Она сказала, что, конечно же, да. Через минуту появился какой-то мужик, кивнул мне и пошёл в переговорку. Секретарь сделала выразительные глаза. Я пошёл за ним*.



        *Садимся за стол*.

        Мужик: а почему вы в маске? Вы обо мне заботитесь, не хотите заразить? Не волнуйтесь, я в маски не верю, снимайте.

        Я: да нет, я забочусь только о себе.

        Мужик: но маски ведь не помогают.

        Я: мне помогают.

        Мужик: ну да, у каждого свои гуси в голове.

        Я: О_о *отличное начало собеседования, не извинился за опоздание (даже не попытался соврать что-нибудь), не представился, гусей моих оскорбляет...*

        Я: а как вас зовут?

        Мужик: я всё расскажу.

        *подходит к камере, стоящей на штативе в углу, и включает её*

        Я: а зачем вы включили камеру?

        Мужик: ЧИТАТЬ ДАЛЕЕ >>>


        ***
        https://pikabu.ru/story/sobesedovaniekombo_7856431
        Ответить
        • Чем закончилось то?
          Ответить
          • А там ссылка есть.

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

            Я бы, наверное, сразу пошел на аттракцион «полиграф» и потом домой, а то слушать заедушного деда весело только первые полчаса.
            Ответить
    • Мамикс снова делает какую-то дичь - 1000 наушников от одного телефона https://youtu.be/5DalH7xC6T4?t=559
      Ответить
      • Лучше бы вот так сделал:

        https://youtu.be/QCIqeYMFHY0

        — Добавим ещё 32 наушника )))
        — ...
        — Они начинают играть всё тише и тише (((

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

          И усилок, угу. Там транзисторы на такую нагрузку то не рассчитаны.
          Ответить
          • Он, кстати, там сейчас будет 1000 (тысячу) наушников развешивать. Ну точно безвузный, был бы вузным, знал бы хотя бы про индукцию.
            Ответить
        • >на что он рассчитывал

          На несколько миллионов просмотров от школьников.
          Ответить
          • и на 1 просмотр от меня. Топ 2 в трендах (утром было)
            Ответить
        • безшкольный же, вроде как закон Омомомомо и это блядь правило.. киргхоффа или как-то так.. приходят на физике в старшей школе, не?
          Ответить
          • Закон Ома и последовательное/параллельное подключение, ЕМНИП, классе в восьмом проходят.
            Ответить
      • Лучше посмотри вот это, моё любимое научное видео:

        https://youtu.be/TIb1TImL_RI

        «Сейчас мы находимся в гостях у Бороды, который собрал в обычной квартире сумасшедший трансформатор Теслы»
        Ответить
      • Кстати, кто им даёт деньги на всякую такую питушню?
        Тот же MrBeast может в видео пойти и 20k$ в урну кинуть и поджечь, либо сделать аналогичную питушню по пользе траты денег.
        Ответить
        • Зрители?
          Ответить
          • Среди каналов про тупую питушню больше тупых подписчиков, поэтому процент донатеров больше, и с деньгами они расстаются легче?
            Ответить
    • Как «htop», запущенный на удалённой впске, получает от локального «PuTTy» клики мышкой?
      Ответить
      • putty эмулирует xterm, там есть такие события, они приходят как esс последовательности:
        https://www.x.org/docs/xterm/ctlseqs.pdf

        Initiate hilite mouse tracking. Parameters are [func;startx;starty;firstrow;lastrow]. See
        the section Mouse Tracking.
        Ответить
        • До чего техника дошла! Спасибо.
          Ответить
          • возможно, вам будет интересно узнать как это описывается в terminfo, откуда про это узнает ncureses и прочие либы

            https://man7.org/linux/man-pages/man5/terminfo.5.html (kmous capability.)
            Ответить
    • Ко-кок! Перекат: http://govnokod.ru/27137
      Ответить
    • https://vk.com/@m.hacking-zabivaem-ozu-na-c
      > забиваем ОЗУ на C++

      > Мы будем использовать всё самое стандартное, поэтому кроме блокнота и компилятора нам ничего не понадобится.

      ...

      > Это наш код. Тут мы просто используем стандартную директиву препроцессора <iostream> и пространства имён std (стандартный поток), дабы вечно не писать std::.

      А нахуя тебе вообще <iostream> ? "<iostream>" это блядь не директива процессора, директива процессора это "#include"

      > На всякий случай ставим локаль (не очень хороший способ, зато простой. Русский текст будет нормально отображаться).

      Нахуя отображать русский текст? Там нет никакого отображения текста, это просто тупая выжиралка памяти.

      > Затем идёт бесконечный цикл в котором мы создаём целочисленный массив на 16 элементов.

      > NEW говорит, что нужно выделить память.

      > NOTHROW говорит о том, что исключения не выбрасывать.

      Именно поэтому я за malloc() - там никакого nothrow нахуй не надо.

      > А теперь самое главное, об этом я писал в прошлых статьях. Проект ставим 64 — битный!!! Иначе мы не сможем работать с объёмом памяти больше 2-ух Гб (примерно).

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

      > Запускаем и ждём. На моём ПК 8 Гб ОЗУ. Из диспетчера видно как растёт подкачка (если мы на Windows). Доросла аж до 25 Гб! После — машина встала намертво.

      Именно поэтому я против всяких свопов и подкачек. В винде наверняка есть свой аналог OOM killer-а, который эту хуйню должен прибить... или нет?

      > Ещё маленькое послесловие…

      > Если Вы хотите опробовать этот способ на пингвине (чёрт его знает, должен сработать), то можно использовать любой текстовый редактор на пару с компилятором g++.

      Неее, на линупсах ведь память бесконечная, как лента в машине Тьюринга, это любой лох знает.
      Ответить
      • > Доросла аж до 25 Гб! После — машина встала намертво.

        На линуксе 128 терабайт норм выделяется. Главное не трогать её.
        Ответить
      • > и пространства имён std (стандартный поток)

        А пространство имён boost это какой поток?
        Ответить
      • Какой анскилл )))

        > Ну под это можно воркераунд придумать, например можно просто несколько 32-битных процессов запускать, и тогда они суммарно выжрут нужное количество памяти.
        Можно просто перейти в нативный 64-битный режим и дёргать ntdll!NtAllocateVirtualMemory(), я тут в прошлом году даже приводил реальный пример того, как это делается.

        Доброе утро, j123123.
        Ответить
        • Тут только с иостримом и локалью разобрались, а ты ассемблерный хардкор предлагаешь...

          Доброе утро, gost.
          Ответить
    • Созвоны не решают никаких проблем. Они нужны только людям, которые не умеют писать код

      https://habr.com/ru/post/510014/
      Ответить
      • >>> fillpackart
        Очередная пафосная хуета для розжига.
        Ответить
      • Созвоны нужны, весь остальной игил - нет.
        Ответить
    • https://avatars.mds.yandex.net/get-mpic/1866031/img_id9101771237594986089.jpeg/orig
      Ответить
    • Палишся, кегдан
      Ответить
    • Смотрите, я реализовал свайп слева направо из игры 2048, воспользовавшись советом defecate-plus-plus!

      void Game::makeSwipe(SwipeDirection direction)
      {
          // For each column from right to left except for the last one.
          for (size_t j = order; j > 0; --j) {
              // For each row from top to bottom.
              for (size_t i = 0; i < order; i++) {
                  // For each column in current row from left to right.
                  for (size_t k = j - 1; k < order - 1; k++) {
                      if (matrix[i][k + 1] != 0) {
      
                          if (matrix[i][k + 1] != matrix[i][j - 1]) {
                              matrix[i][k] = matrix[i][j - 1];
                              matrix[i][j - 1] = 0;
      
                          } else {
                              matrix[i][k + 1] = matrix[i][k + 1] << 1;
                              matrix[i][j - 1] = 0;
                          }
      
                          break;
      
                      } else if (k < (order - 2)) {
                          continue;
                      }
      
                      matrix[i][k + 1] = matrix[i][j - 1];
                      matrix[i][j - 1] = 0;
                  }
              }
          }
      }


      Меня беспокоят две вещи:

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

      2. Не будет ли из-за вычитания единички из j проблем с перфомансом? Может быть, лучше пожертвовать памятью и завести {_j = j - 1}? Потянет ли WinXP такое расточительство?
      Ответить
      • Я бы одним блоком все 4 свайпа написал. Там вся разница в (dx, dy) же, даже свищи не понадобятся.
        Ответить
    • https://habr.com/post/530440
      > Опрос. Денормализация или нет?
      > Имеется склад, где хранятся разные материалы, имеются документы прихода и расхода материалов, в документах есть записи с информацией "материал, количество", связь один-ко-многим. В базе данных есть таблица с информацией о текущем наличии материалов на складе, есть таблица для документов и таблица для их позиций. Назовем их "current_stocks", "documents", "document_positions".
      > Считать ли таблицу "current_stocks" денормализацией данных?


      Именно поэтому я за «ВУЗ».
      Ответить
      • так Денормализация или нет?
        Ответить
        • Ну вообще да. По первичным документам всё можно восстановить если руками ничего не нахуевертили в денормализованной таблице.
          Ответить
        • Там внизу какая-то обезьяна привела реальный пример определения ДКНФ:
          >>> Domain-key normal form (DK/NF) is a normal form used in database normalization which requires that the database contains no constraints other than domain constraints and key constraints.
          Ответить
          • Что бы это ни значило.

            З.Ы. Ну так считаем базу денормализованной или нет? Или это зависит от настроения читателя (если у нас подразумевается констрейнт что документы и остатки сходятся -- значит денормализованная, если похуй -- значит нет)?
            Ответить
            • да это вообще хуйня какая-то

              разве в СУБД нет способа закешировать агрегирующй запрос до тех по пока состояние базы не изменится?
              Ответить
              • в СУБД есть, в майсиквелах нету
                Ответить
                • MySQL - это СУБД.
                  Ответить
                  • dict — это СУБД.
                    Ответить
                    • Массив - это СУБД. key-value хранилище, такому-то адресу получаем хранимую там хуйню.
                      Ответить
                      • Как все настоящие программисты знают, единственной полезной структурой данных является массив. Строки, списки, структуры и наборы - это все разновидности массивов и их можно рассматривать как массивы без усложнения вашего языка приграммирования.
                        Ответить
                        • Неясно, почему зелёным. В лишпе, насколько я понимаю, такая логика работает. Сработает и с сишкой, только надо void* писать везде в угоду питуизации. Ну и усложнить компилятор, чтобы он эту питушню сворачивал.
                          Ответить
                        • Профессор Фортран, перелогиньтесь.
                          Ответить
                  • пиздишь?
                    я всегда думал, что майскл - это строка реального побега
                    Ответить
                  • угу, а трап это женщина
                    Ответить
                • Какой багор )))

                  Почитаешь ГК - так все - суперпрограммисты из гуглов с серьёзными проектами с CI и сотнями разработчиков, хаскельная илитка, для которой HTML - не язык, PHP - плохой постыдный язык, MySQL - недостойная питушня для из терабайтов данных, а в твиттере только питухи сидят.

                  А что на самом деле? Скорее всего большинство самых громких хейтеров популярных зарекомендовавших себя инструментов их же и использует. Контроль версий - за счёт именования папок. Работа - какая-то мелкая питушня по настройке чайника шефа, закупкам мышек бухгалтеру и правке легаси питушни на PHP.
                  Ответить
                  • На говнокоде все посетители могут быть суперпрограммистами из гуглов с серьёзными проектами с CI и сотнями разработчиков

                    В жизни 99% могут на пхп писать

                    Не вижу как одно мешает другому
                    Ответить
                  • Это всё наглая ложь... Я безработный.
                    Ответить
                  • или вообще мамкины борщееды
                    Ответить
              • Materialized view?
                Ответить
            • > Что бы это ни значило.
              Ну давай проверим.

              «key constraints» — это ограничения ключей (FK, PK), тут всё понятно.
              Про «domain constraints» можно глянуть в российской «Википедии», https://ru.wikipedia.org/wiki/Домен_(базы_данных): «Домен в реляционной модели данных — тип данных, то есть множество допустимых значений».

              В таблице (если мы это делаем анскильной таблицей, конечно, а не всякими крутыми materialized views и прочими generated columns) «current_stocks» у нас должны храниться айдишники текущих товаров на складе. При этом поддерживать консистентное состояние этой таблицы мы должны либо ручками (тогда у нас не база, а говно, Страйко с фейковыми -999 подтвердит), либо ограничениями: например, специальнымы триггерами, которые будут по INSERT/UPDATE/DELETE в основную таблицу вычислять корректные значения текущих товаров. И вот это как раз и будет other than domain constraints and key constraints, потому что такие триггеры-ограничения будут задавать не множество допустимых значений, а какую-то другую, не относящуюся к доменам, логику. Так что в таком виде условиям ДКНФ БД не удовлетворяет.
              Ответить
        • Ты давно Денормализацию закончил?
          Ответить
      • Ты за какой ВУЗ?
        Ответить
    • питухи молчаливые седня чото
      Ответить
      • https://i.pinimg.com/564x/5b/20/d6/5b20d64f9f2830ffd7509e5ba6a78722.jpg

        https://i.pinimg.com/originals/1b/f8/23/1bf8238a4125be372dc3379d6f2d5433.jpg
        Ответить
    • Почему галера — это путь в никуда
      https://ebanoe.it/2020/11/27/galley-way-to-nowhere/


      Минуты считают дни, дни считают года.
      Ты стоишь на дороге, идти не зная куда.
      Будущее - туман, прошлое - обман.

      Расскажи, что тебе снится? Может, светлое завтра?
      Может, успехи в работе, иль радость семейной жизни?
      В радости ты или в горе, в мире ты или в ссоре?
      Что тебе снится, блуждающий биоробот?
      Ответить
      • Половина сегодняшних программистов, еще вчера развозивших пиццы (при этом путая заказы и адреса) сегодня научились только по-обезьяньи кнопкодавить на паре тупейших фреймворков, да копировать со стек оверфлоу. А тогдашний джун не просто писал код на работе, а знал, как все это работает на 3 уровня в глубину, мог сам спаять материнскую плату, а по ночам еще и поддерживал фидошную ноду.

        вот тут я кончил, конечно
        Ответить
      • программирование - путь в никуда
        до 25 будешь писать сайты на js а потом выйдет новый фреймворк и тебя отправят на пенсию
        Ответить
        • а что, у JSников действительно принято уметь ровно 1 фреймворк в жизни?
          Ответить
        • У меня в Си нет никаких "фреймворков", поэтому я за Си.
          Ответить
          • у тебя есть апи прыщей и либси
            Ответить
            • Разве это "фреймворк"? Чем именно какая-нибудь библиотека (допустим библиотека для какой-нибудь математической хуйни, перемножающая матрицы) отличается от "фреймворка"?
              Ответить
              • Сложный вопрос. Я не знаю определения фреймворка. Скорее всего, фреймворк диктует тебе архитектуру приложения, а библиотека -- нет.

                В таком случае Linux это всё таки фреймворк: он определяет, как ты будешь работать с сетью, с многопроцессностью итд
                Ответить
                • Т.е. выходит что API любой полноценной OS это фреймворк? Сишная обертка над записью/чтением хуйни в какие-то порты это тоже фреймворк?

                  Типичный "фреймворк" в моем понимании это какая-то охватывающая хуйпойми что ебучая ссанина, вроде Qt или wxWidgets, через которую можно со звуком, с сетью, с изображениями работать, а еще есть какие-то свои особые треды, мьютексы, хуютексы и прочее такое ебаное говно. Например в Qt есть QMutex, в wxWidgets есть wxMutex, и там и там какая-то своя поебень под треды и прочее такое говно.

                  Ну вообще на роль фреймворка для Си более-менее подойдет GLib/GTK+.
                  Ответить
                  • В таком случае какой-нить ReactJS это не фреймворк
                    Ответить
                    • Да, вот тут тоже так пишут
                      https://www.oreilly.com/library/view/what-react-is/9781491996744/ch01.html

                      > React Is a Library, Not a Framework

                      > One important distinction between libraries like React and frameworks like Ember.js and AngularJS is that React is concerned only with rendering the UI and leaves many things up to each project to put together.
                      Ответить
    • https://www.youtube.com/watch?v=_24J03_n_74
      Ко-ко-ко-кая милота!
      Ответить
      • человечский папаша тоже так примерно на дите смотрит
        Ответить
    • https://www.youtube.com/watch?v=8--5LwHRhjk Какой скилл )))
      Ответить
      • так вот для чего математика нужна
        Ответить
        • Попрошу заметить, школьная математика, а не вузная ма-те-ма-ти-ка.

          С другой стороны, «high school math» у нас обычно проходят, кажется, на первом курсе вуза, потому что американцы по 12 лет учатся в школах. Но я могу и напутать!
          Ответить
          • > My name is Inigo Quilez, I was born and grew up in San Sebastián (a.k.a. Donostia), a beautiful city in the Basque Country, northern Spain in Europe.
            Ответить
            • Ну всё, теперь я ещё больше уверен в отсутствии необходимости знать не только лишь школьную математику. Спасибо, CHayT!
              Ответить
              • не только лишь все
                Ответить
              • Ну, «Три семерки» выпил, блядь… Ну, бутылку… С одной лаборанткой… Ну, а потом взяли интеграл! Быстро так, мы десять минут всего брали-то… А у меня потом, блядь, лимит не сошелся… Разрыв второго рода, я, ну, не определил функцию в x=0…
                Ответить
            • А сколько учатся баски?
              Ответить
      • В игре Ecstatica была такая вот овальная хуйня вместо полигонов https://www.youtube.com/watch?v=4HpjmGSSm9I
        Еще был движок VirtualRay (сферический real-time ray tracer) но он вроде сдох.

        А вообще, необязательно ж всё из шароебин лепить, есть такая хуйня как n-ellipse (или multifocal ellipse)
        Ответить
    • https://ebanoe.it/2020/11/30/thanks-ebanoe/

      какой троллинг ))
      Ответить
    • Пиздец. А что так долго ни один оффтоп перекатить не можем?
      Ответить
      • Комменты равномерно распределеются по разным оффтопам, а ещё у нас самые длинные срачи не в оффтопах, а в обычных постах.
        Ответить
    • https://aliexpress.ru/item/32969415246.html
      Ответить
      • «Was a gift for my dad who is a programmer. It is functioning as a "enter" key, the only problem he said after some time the keyboard/mouse stop working and he doesnt know why»
        Ответить
      • какая ненужная мусорная хуйня ))
        Ответить
        • https://youtu.be/zXI5lZLSkrU
          Ответить
        • Угу, зачем нужна эта фигня, если есть стена:

          https://youtu.be/DIn4L7hUmUI?t=113

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

              На 1:55 клава оказалась крепче.
              Ответить
              • Так у него виста была, теперь понятно, почему он такой злой
                Ответить
          • вот тут мне смешнее было
            https://youtu.be/I5hpWOHCUSs?t=15
            Ответить
            • Типичный диалог из чатика osu:

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

                  Угу, чел тоже так думал.
                  Ответить
                  • Индюк тоже думал да в суп попал.
                    Ответить
                    • Мне почему-то показалось, что это ответ в треде о котлетах из комаров и червей.
                      Ответить
    • Почему до сих пор нету транспортного протокола, позволяющего двусторонние запросы?
      - Работающего поверх TCP/UDP
      - Содержащего в своих сообщениях записи NAT.

      То есть, сервер знает на какой порт NAT шлюза надо направить запрос, он туда и направляет, если таких шлюзов несколько, то это тоже не страшно.

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

            А о чём там задачки?
            Ответить
      • Форвардинг через сервер имеет свои плюсы.

        Особенно для мобильных клиентов, которые тупо по времени могут никогда не пересечься. А через сервер всё норм дойдёт.
        Ответить
      • Ну и шлюх придётся очень сильно переделывать под это. Никто на такое не пойдёт. Проще дождаться пока ипв6 придёт и забыть про нат.
        Ответить
      • Ничево себе! Да ты никак UDP hole punching изобрёл?
        Ответить
    • https://old.reddit.com/r/programming/comments/jo4c59/cobol_and_202020202/gb6gou0/

      >I’m a 23 year old COBOL programmer
      Ответить
      • Это он историю своей молодости рассказывает?
        Ответить
      • Ах, какой интересный мущина. Я хочу с ним познакомиться.
        Ответить
    • Есть ли в С++20 автоматический способ сконвертить enum в строку?

      enum Pethu {
         OCET = 0
      };
      to_string(Pethu::OCET) == "OCET"
      Ответить
      • Нет. Пока только с макрокостылями.
        Ответить
        • Ебаное говно. Ладно, я нахуевертил массив строк. Какой анскилл )))
          Ответить
          • Полностью согласен. И это говно претендует на звание современного языка с метушнёй. Лямбды туда засунули с замыканиями, многопердолочность, а хоть что-то более-менее простое и легко генерящееся(!) по сравнению с тем, что есть в стандарте - либо макросами, либо бойлерплейтом, либо такой питушнёй с шаблонами, которую никто без слёз не прочитает и исправить не сможет.
            Ответить
          • зачем тебе это? пахнет говном же
            Ответить
            • А как лучше сделать?
              Ответить
              • объясни задачу

                зачем строки?
                Ответить
                • https://govnokod.ru/27136#comment600275
                  Ответить
                  • зачем конвертить? для чего?
                    Ответить
                    • * Печать в лог
                      * Импорт/экспорт в конфегуреции
                      * Претти-принт пользователю "выбрана опция ''Общественный Советский Единый Треугольный"'
                      Ответить
                      • адада, я уже понял.

                        тащемто, я регулярно вижу "ошибка: 0x123412", особенно в пинде. Хорошо, что есть утилиты типа err и error lookup в студии.

                        По идее нужно делать perror, но всем похуй.
                        Ответить
                    • Чтобы вывести в сонсоль с помощью cout читаемый текст, а не число.
                      Ответить
                      • понял.

                        Есть три варианта:
                        * вручную замапить их на строки
                        * намкарбоёбить
                        * написать из через запятую, и питоновым скриптом сгенерить енум и мапинг.

                        Последний вартант вообще на коленке делается.

                        Ипользовать строки вместо ENUMов ради удобства печатанья кажется мне странным.

                        Строки придется хранить в памяти, и сравнивать указатели на них.


                        Алсо,
                        https://github.com/Neargye/magic_enum
                        Ответить
                        • Я сделал первый вариант, а не использовал строки.
                          Ответить
                          • Это хорошо, если их мало.
                            Если их 200, то я бы подумал про третий.

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

                          Да тоже норм, на самом деле. Почти как в джавке.

                          Если никуда потом не передается -- описать их как строковые константы да и всё. Ну или завернуть в свой класс чтобы типа безопасность. Тогда и фромстринг несложно поддержать.
                          Ответить
                          • ну да, атомы или как их там. Только сериализовать их плохо
                            Ответить
                            • Смотря во что сериализовать. В какой-нибудь жсон прям норм зайдут.
                              Ответить
                              • имелся ввиду инт конечно же
                                Ответить
                                • Ну если инстансами класса делать -- можно и инт прикрутить. И методы как в джавке.
                                  Ответить
                                  • эмулить енум синглтонами, угу.

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

                                        Хорошо сделаны sealed classes в коко.
                                        В жабе можно их эмулировать, но много буков писать нужно (приватные конструкторы, иннер классы итд)
                                        Ответить
                          • >> сравнивать указатели
                            > Да тоже норм, на самом деле. Почти как в джавке.
                            Главное - все константы будут разные, а не то что в C/C++, где одним и тем же числом разная питушня кодируется.
                            Разве что с таким подходом маски носить будет душно.
                            Ответить
          • А главное - что имена функций всё равно в код вкомпиливают, а енумы не могут.
            Ответить
        • А вот в Ди можна:
          enum Values: ubyte{ One = 1, Two = 2 }
          writeln( std.conv.to!string( Values.One ) );
          Ответить
          • если бы в ди не было гц, можно было бы о нем говорить
            Ответить
    • Я наконец-то дописал самую главную часть игры 2048, а именно перемещение тайлов в одном из четырёх направлений. И даже уместил все четыре свайпа в один блок кода!

      // Вспомогательная функция.
      size_t* Game::accessMatrix(size_t row, size_t column, bool transposed, bool reversed)
      {
          if (reversed) {
              column = (order - 1) - column;
          }
      
          if (transposed) {
              std::swap(row, column);
          }
      
          return &matrix[row][column];
      }
      
      // Само перемещение тайлов. 
      void Game::makeSwipe(SwipeDirection direction)
      {
          bool t = ((direction == SwipeDirection::TtB) || (direction == SwipeDirection::BtT)); // Transposed.
          bool r = ((direction == SwipeDirection::RtL) || (direction == SwipeDirection::BtT)); // Reversed.
      
          for (size_t j = order - 1; j > 0; --j) {
              for (size_t i = 0; i < order; i++) {
      
                  if (*accessMatrix(i, j - 1, t, r) == 0) {
                      continue;
                  }
      
                  for (size_t k = j; k < order; k++) {
                      if (*accessMatrix(i, k, t, r) != 0) {
                          if (*accessMatrix(i, k, t, r) == *accessMatrix(i, j - 1, t, r)) {
                              *accessMatrix(i, k, t, r) <<= 1;
                              *accessMatrix(i, j - 1, t, r) = 0;
                              break;
                          } else {
                              size_t temp = *accessMatrix(i, j - 1, t, r);
                              *accessMatrix(i, j - 1, t, r) = 0;
                              *accessMatrix(i, k - 1, t, r) = temp;
                              break;
                          }
                      } else if (k < (order - 1)) {
                          continue;
                      } else {
                          *accessMatrix(i, k, t, r) = *accessMatrix(i, j - 1, t, r);
                          *accessMatrix(i, j - 1, t, r) = 0;
                      }
                  }
              }
          }
      }
      Ответить
      • Судя по коду, accessMatrix можно было завернуть в блямбу внутри accessMatrix с t и r в замыкании, а также возвращать size_t& вместо size_t*.
        Тогда бы не было везде "t, r)", а также вместо питушения "size_t temp" со звёздами можно было бы использовать std::swap.
        Ответить
        • Там не свап, там перемещение. По сути первую и третью строчку можно в одну склеить как в последнем else.
          Ответить
          • А, точно. Не заметил. Эвристикой задетектил алгоритм обмена питухов, а у него был просто ОВЕРХЕД.
            Ответить
            • Каким надо быть конченым гурманом-мурманом, чтобы смешать вместе свинину и курятину и испечть из этого пирог? Ужас.
              Ответить
          • Я точно помню, что там у меня было что-то похожее на последний else, но (!) матрица портилась на каком-то граничном случае (кажется, если k и j индексы указывают на одно число), поэтому я обстоятельно подумал и сделал через темп, чтобы, даже если числа будут равны, зануление мне бы ничего не стёрло.

            Но если бы я использовал swap, проблема бы даже не возникла.
            Ответить
        • Про лямблию очень интересно звучит, но я никак не соображу, как это будет выглядеть.

          Синтаксис для замыканий будет примерно вот такой, если я правильно понимаю:

          [t, r](size_t i, size_t j) { ... код ... }


          Где t, r будут передаваться как бы по ссылке в лямбду, из того контекста, из которого мы эту лямбду запрашиваем... Получается, можно сделать некий accessMatrix:

          auto accessMatrix(bool t, bool r) {
              return [t, r](size_t i, size_t j) { ... код ... }
          }


          auto, кстати, на std::function лучше заменить для читаемости?

          И потом, уже в makeSwipe сделать что-то типа:

          bool t = true;
          bool r = false;
          auto accessMatrixLambda = accessMatrix(t, r);
          ...
          accessMatrixLambda(i, j - 1);


          Если я все правильно понял, то так действительно гораздо солиднее выглядит. Я сначала подумал каррировать функцию, потом захотел что-нибудь с шаблонами намутить (и в итоге получилось бы то же самое, что с лямбдой), но остановился на самом лёгком варианте.
          Ответить
          • Магия компилятора?
            Ответить
          • > [t, r]
            > Где t, r будут передаваться как бы по ссылке в лямбду, из того контекста, из которого мы эту лямбду запрашиваем...
            Без амперсанда - скопируются во внутреннее состояние лямбды. С амперсандами - [&t, &r] - по ссылке.

            > Получается, можно сделать некий accessMatrix:
            Не факт, t и r надо откуда-то брать.

            > auto accessMatrixLambda = accessMatrix(t, r);
            > ...
            > accessMatrixLambda(i, j - 1);
            auto accessMatrixLambda = [t, r](size_t i, size_t j) { ... код ... };
            ...
            accessMatrixLambda(i, j - 1);


            > auto, кстати, на std::function лучше заменить для читаемости?
            Подождём ответа Борманда. Хотя, внутри Game::makeSwipe и так будет понятно, что это лямбда.
            Главное - прописать, что питушня возвращает size_t&, чтобы случайно по значению не вылезло.
            Ответить
            • Всё, оказывается, так просто получается с лямбдами. И даже не надо целый метод заводить для питушни, которая в одном месте используется.
              Ответить
              • Будь мужыком, запили полноценный класс Matrix с шаблонами и метушнёй!

                Я недавно запиливал, понравилось, рекомендую.
                Ответить
    • Питузы, так нельзя что ли?

      class Ptitsa;
      class Pituh : Ptitsa;
      class Kurochka : Ptitsa;
      
      Pituh& pituh = FindPituh();
      Kurochka& kurochka = FindKurochka();
      
      void Snesti(Ptitsa& ptitsa) {
          ptitsa.snesti_jajichko();
      }
      
      Ptitsa* ptitsa;
      if (rand() % 2) {
          ptitsa = reinterpret_cast<Ptitsa*>(&pituh);
      } else {
          ptitsa = reinterpret_cast<Ptitsa*>(&kurochka);    
      }
      Snesti(*ptitsa);


      В дебаггере вижу, что получаю хуйню в результате reinterpret_cast.
      Ответить
      • а static работает?

        Как там по стандрту -- не знаю (нужно копать). Точно знаю, что если Pituh или Kurochka наследует еще кого-то, то почти наверняка остосешь. С единственным наследованием можеш и не отсосать (зависит от реализации), но чует мое сердце, что стандарт требует static, если у них есть виртуальные методы

        алсо: налседование публичное, я надеюсь???
        Ответить
        • У меня нет виртуальных методов.
          Ответить
          • так что static ? работает?

            ну давай подумаем.
            Допустим в птица у тебя поля
            int p1;
            int p2;
            затем идут поля курочки, получается

            int p1;
            int p2;
            int k1;
            int k2;

            Куда должен указывать указатель у инстанса курочки? а у птицы? А кто его подвинет?

            Ответить
            • Я просто написал ptitsa = &pituh, а "Clion" мне предложил так пофиксить.
              Я уже нахуевертил с костылями, лень проверять.
              Ответить
              • ну можно наверное и так, или статиском

                см мой пример с полями в комменте выше.

                Адрес курочки это адрес какого-то говна в памяти где есть И ее поля И поля птички

                А тот, кто ождиает птичку, хочет указатель сразу на поля птички.
                static_cast подвинет указатель, а reinterp разумеется нет

                Я так понимаю (интуитивно, без пруфоф) что проблема именно в этом.
                Ответить
                • Вроде пишут, что всё так:

                  «Unlike static_cast, but like const_cast, the reinterpret_cast expression does not compile to any CPU instructions (except when converting between integers and pointers or on obscure architectures where pointer representation depends on its type). It is purely a compile-time directive which instructs the compiler to treat expression as if it had the type new_type»

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

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

              Емнип, по стандарту мы не знаем. Раскладка явно задана только для POD'ов структур, удовлетворяющих требованиям standard layout.

              Но обычно такой объект начинается с указателя на таблицу виртуальных методов (если она есть) и полей птицы чтобы касты полегче были, без вычисления оффсетов.
              Ответить
              • > по стандарту мы не знаем.
                значит, реинтерпретер не валиден, верно? даже если там нет ни вротуальгности, но многожесвтенново наследовнаия?
                Ответить
                • Кстати, у тебя там в примере ПРИВАТНОЕ наследование что ли?! Тогда логично, что оно без хаков не кастует...
                  Ответить
                  • Ты опять меня с иню спутал? Это не мой пример.

                    Приватное вообще не сокмпилируется кмк, без реинтепретера
                    Ответить
      • Каст указателя или ссылки в сторону родителя автоматом должен работать, без всяких там реинтерпретов (т.е. ptitsa = &pituh).

        Приведи реальный пример, короче. Который можно скомпилировать и исполнить.
        Ответить
        • тк он же и написал, что убралд ненужный reinterpret_cast и всё заеблось
          Ответить
          • Возможно, что у него в птице нет виртуальных методов, а в петухе есть. Тогда оффсеты птицы в петухе не нулевой и реинтерпрет творит хуйню. Ну или множественное наследование, но там всё очевидно я думаю.
            Ответить
            • А если нигде нету вротуальных то и проблем нет, скажеш?
              то есть не так https://govnokod.ru/27136#comment601168 ?
              Ответить
              • Если верить моей практике -- проблем не должно быть. Но reinterpret тут вообще не к месту, конечно. Из-за него вполне могла сработать какая-нибудь UB'тимизация про алиасинг, к примеру.
                Ответить
                • ну вот мне интересно "не должно" это просто повезло, или по стандарту?

                  реинтерпретер точно не нужен, да. Уж лучше тогда статик, хотя и он не нужен если ты не в воид* кастиш и обратно
                  Ответить
                • Подведем итог.

                  Чтобы работать с указателем/ссылкой на ребенка как с указателем/ссылкой на родителя нужно её подвинуть. В случае если у тебя нет множественного наследования и виртуальных методов, то скорее всего можно не двигать. Но гарантий нет.
                  Потому всегда нужно двигать.

                  C++ сам умеет двигать:
                  Papka* p = &didjatko; 
                  //или
                  void foo(Papka& p);
                  foo(didjatko)


                  Но иногда ты кастуешь ссылку в void*, и тогда С++ конечно ничего не двигает.
                  Тогда нужно явно делать static. И тогда обратно можно делать reinterp.

                  Делать reinterpreter из ребенка в родителя не нужно. Такой каст вообще не нужен обычно, но если уж и нужен (см пример с void*) то нужно делать static.
                  Ответить
                  • На одну тайну в крестах стало меньше. Но какие ещё загадки подстерегают нас? Это мы узнаем в следующей серии.

                    == Конец эпизода #100500 ==
                    Ответить
                    • Насколько я понимаю, игры с наследованием это спички на фоне шаблонной магии
                      Ответить
                      • А что с шаблонной магией-то такого страшного? Ну метушня и метушня, которая в рантайм даже не просачивается (в c++11, по крайней мере, который я последний раз трогал давно).
                        Ответить
                        • У нее очень информативные ошибки. Ну и сфинаи всякие еще, и про инстанциацию нужно думать
                          Ответить
                          • У любой достаточно продвинутой метушни будут непонятные ошибки. Когда template haskell и эрланговские parse transform давятся AST'ом, их ошибки хоть и короткие, зато ёмкие.

                            Никогда не метушил в схемке, может там получше с этим.
                            Ответить
                            • Это правда.

                              Ну тут всегда трейдофф: либо писать много тупого одинкового кода (привет, джава и может быть го), либо упарываться митушнёй

                              >схемке
                              кажется, что метушить гомоиконку логично и правильно, не?
                              Ответить
                            • И тут же пример подъехал, лол
                              apps/anvl_core/src/anvl.erl:none: error in parse transform 'typerefl_trans': {{badkey,{package_id,0}},
                              [{maps,get,
                               [{package_id,0},
                                #{{app_id,0} =>
                                   {typedef,app_id,[],
                                    {type,16,atom,[]},
                                    16},
                              {log_level,0} =>
                                   {typedef,log_level,[],
                                    {type,28,union,
                                     [{atom,28,debug},
                                      {atom,28,info},
                                      {atom,28,notice},
                                      {atom,28,warning},
                                      {atom,28,error},
                                      {atom,28,critical},
                                      {atom,28,alert}]},
                                    28},
                                  {overrides,0} =>
                                   {typedef,overrides,[],
                                    {type,30,list,
                                     [{type,30,tuple,
                                       [{atom,30,add},
                                        {user_type,30,app_id,
                                         []},
                                        {user_type,30,props,
                                         []}]}]},
                                    30},
                                  {props,2} =>
                                   {typedef,props,
                                    ['K','V'],
                                    {type,20,union,
                                     [{type,20,list,
                                       [{type,20,tuple,
                                         [{var,20,'K'},
                                          {var,20,'V'}]}]},
                                      {type,20,map,
                                       [{type,20,
                                         map_field_assoc,
                                         [{var,20,'K'},
                                          {var,20,'V'}]}]}]},
                                    20}}],
                               []},
                              {typerefl_trans,refl_type,2,
                               [{file,
                                 "typerefl_trans.erl"},
                                {line,145}]},
                              {lists,foldl,3,
                               [{file,"lists.erl"},
                                {line,1263}]},
                              {typerefl_trans,parse_transform,
                               2,
                               [{file,
                                 "typerefl_trans.erl"},
                                {line,120}]},
                              {compile,
                               '-foldl_transform/3-anonymous-2-',
                               3,
                               [{file,"compile.erl"},
                                {line,1156}]},
                              {compile,foldl_transform,3,
                               [{file,"compile.erl"},
                                {line,1159}]},
                              {compile,
                               '-internal_comp/5-anonymous-1-',
                               3,
                               [{file,"compile.erl"},
                                {line,399}]},
                              {compile,fold_comp,4,
                               [{file,"compile.erl"},
                                {line,426}]}]}
                              Ответить
                  • > нужно её подвинуть

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

                    В void * и родителя ты можешь явные касты не писать, всё пройдёт само. В обратную сторону хватит стасика (или динамика, если от родителя к ребёнку и ты не уверен, что это именно тот ребёнок).

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

                      а разве тут я не сосну?
                      void* foo = &child;
                      Parent* p = static_cast<Parent*>(foo); //или не сокмпилируется вовсе, или могу соснуть
                      Ответить
                      • Соснёшь. Как и при бездумном статик касте из родителя в ребёнка (если это не тот ребёнок). Думать надо что кастуешь.
                        Ответить
                • > не к месту

                  Тогда соснули разработчики «CLion», которые посоветовали сделать так.
                  Ответить
                  • Кто на самом деле соснул, так это пользователи IDE.
                    Ответить
                  • Ну у тебя там реально приватное наследование было, как в примере который ты тут запостил?
                    Ответить
                    • У меня было struct без всякой виртуалтушни, оно публичное.
                      Ответить
                      • Со структом где всё публичное да невиртуальное оно 99.9% должно было получить стандартную расладку и кастоваться без проблем любыми кастами. Что-то ты недоговариваешь...
                        Ответить
                        • Ладно, похуй.
                          Ответить
                        • > 99.9%
                          То есть UB, но скорее всего прокатит, так что ли?
                          Хорошо, что нас гост не слышит:)


                          Серьезно: я не имею же права никогда кастовать указателя ребенка в родителя реинтерпретором, даже если это единственный ребенок со структурой?
                          Ответить
                          • Для standard layout, насколько я помню, ты такое право имеешь. В том числе и через memcpy, юнион и т.п.

                            Там просто ещё немного ебанутых правил есть помимо очевидных невиртуальности, публичности (точнее единого типа доступа, можно и всё private), standard layout у всех полей и не более одного непустого родителя. Из-за них те самые 0.1%, на которые ты на практике никогда не налетишь.
                            Ответить
                            • >не более одного
                              ну понятно

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

                              а если у кого-то два папы, то он уже и не стандартный


                              Как и большинство крестоплавил, это правило вполне логично и обосновано, если вдуматься
                              Ответить
                  • нормально, мне решарпер тоже как-то вредные советы давал
                    и идея тоже
                    Ответить
                    • А сишарпер только для visual studio ведь?
                      Ответить
                      • угу.

                        Для сишарпа есть Rider, для сишечки и крестов -- силайон. Оба на Intellij.
                        А R# (для C++ и C#) это плагин к VS
                        Ответить
          • Нет. Я переписал, чтобы ничего не нужно было кастить.
            Ответить
    • Перекат!

      https://govnokod.ru/27160
      https://govnokod.xyz/_27160/
      Ответить
    • Сегодня 136 лет со дня рождения Зинаиды Серебряковой, сообщил мне Гугл.
      Художница, автор известной картины "Спящая девочка на красном одеяле"
      Ответить
      • С днюхой!
        Ответить
        • Я не Зинаида.

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

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