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

Комментарии (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 на 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к. Видимо никто уже на цилиндры не равняет. Один хер они фейковые.
                  Ответить
                  • >фейковые
                    лет двадцать пять уж как, угу
                    chs уже хз кому нужно
                    Ответить
              • Кстати, все хотел спросить

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

                      Это как в памятью: формально ты должен пхать только память их 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 какую-то тулу на сайте предлагают скачать.

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

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

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

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

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

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

                    >Х.з., для данных вряд ли бы стали делать тулу.
                    ну 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. Результат — мотивированный и обученый сотрудник в команде, плюс психологическая демонстрация всей группе — за что бывает поощрение, а за что — увольнение.


      Какой менталитет краба )))
      Ответить
          • 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
            Ответить
      • >(пряник)
        >(кнут)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Давеча вон не смог отстоять замену строки на класс с внятной семантикой, так строка и осталась, пушо все привыкли, и зачем нам лишняя сущность
          Ответить
  • Возник внезапно вопрос: может ли работодатель по итогу собеседования отказать кандидату в приёме на работу только на основании несовпадения зарплатных ожиданий? Ну то есть отказать по причине «баб не берём» нельзя, потому что тогда «баба» может пойти в суд и сделать бо-бо. А что если сказать, что зарплата у нас только МРОТ + 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).

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

          Вот у Тьюринга будет багор )))
          Ответить
          • Да у меня оно там даже опубликовано, а не просто в коммитах. Зачем фейкомыло скрывать?
            Ответить
          • Нахуя Линукс придумал анальную привязку мыла в гите, чтобы его на фейковые меняли?
            Ответить
      • Фаина фаина
        Итс э фаинал кантдаун

        Тутуту туууууу
        Тутуту ту туууу
        Тутуту туууууу
        Тутуту туту туту
        Ответить
        • Ай, даже счастье, словно талый снег,
          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.
          Ты с другим целуешься при всех.
          Ответить
    • Сейчас программисток (так можно, да?) полным полно и этим мало кого удивишь, а вот где-то в начале 2000-ных было не так сказочно.

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


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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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


      ***
      https://pikabu.ru/story/sobesedovaniekombo_7856431
      Ответить
        • А там ссылка есть.

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

          Я бы, наверное, сразу пошел на аттракцион «полиграф» и потом домой, а то слушать заедушного деда весело только первые полчаса.
          Ответить
    • Лучше бы вот так сделал:

      https://youtu.be/QCIqeYMFHY0

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

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

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

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

            по умному это называеца Теория электрических цепей вроде
            Ответить
    • Лучше посмотри вот это, моё любимое научное видео:

      https://youtu.be/TIb1TImL_RI

      «Сейчас мы находимся в гостях у Бороды, который собрал в обычной квартире сумасшедший трансформатор Теслы»
      Ответить
    • Кстати, кто им даёт деньги на всякую такую питушню?
      Тот же MrBeast может в видео пойти и 20k$ в урну кинуть и поджечь, либо сделать аналогичную питушню по пользе траты денег.
      Ответить
        • Среди каналов про тупую питушню больше тупых подписчиков, поэтому процент донатеров больше, и с деньгами они расстаются легче?
          Ответить
  • Как «htop», запущенный на удалённой впске, получает от локального «PuTTy» клики мышкой?
    Ответить
  • 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.
        Ответить
    • >>> fillpackart
      Очередная пафосная хуета для розжига.
      Ответить
    • Созвоны нужны, весь остальной игил - нет.
      Ответить
  • Смотрите, я реализовал свайп слева направо из игры 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.
        Ответить
        • Что бы это ни значило.

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

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

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

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

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

                  Не вижу как одно мешает другому
                  Ответить
          • > Что бы это ни значило.
            Ну давай проверим.

            «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://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+.
                Ответить
    • человечский папаша тоже так примерно на дите смотрит
      Ответить
  • Пиздец. А что так долго ни один оффтоп перекатить не можем?
    Ответить
    • Комменты равномерно распределеются по разным оффтопам, а ещё у нас самые длинные срачи не в оффтопах, а в обычных постах.
      Ответить
  • Почему до сих пор нету транспортного протокола, позволяющего двусторонние запросы?
    - Работающего поверх TCP/UDP
    - Содержащего в своих сообщениях записи NAT.

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

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

      Особенно для мобильных клиентов, которые тупо по времени могут никогда не пересечься. А через сервер всё норм дойдёт.
      Ответить
    • Ну и шлюх придётся очень сильно переделывать под это. Никто на такое не пойдёт. Проще дождаться пока ипв6 придёт и забыть про нат.
      Ответить
    • Ах, какой интересный мущина. Я хочу с ним познакомиться.
      Ответить
  • Есть ли в С++20 автоматический способ сконвертить enum в строку?

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

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

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

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

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


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

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

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

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

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

                                      Хорошо сделаны sealed classes в коко.
                                      В жабе можно их эмулировать, но много буков писать нужно (приватные конструкторы, иннер классы итд)
                                      Ответить
                        • >> сравнивать указатели
                          > Да тоже норм, на самом деле. Почти как в джавке.
                          Главное - все константы будут разные, а не то что в C/C++, где одним и тем же числом разная питушня кодируется.
                          Разве что с таким подходом маски носить будет душно.
                          Ответить
                  • * Печать в лог
                    * Импорт/экспорт в конфегуреции
                    * Претти-принт пользователю "выбрана опция ''Общественный Советский Единый Треугольный"'
                    Ответить
                    • адада, я уже понял.

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

                      По идее нужно делать perror, но всем похуй.
                      Ответить
        • А главное - что имена функций всё равно в код вкомпиливают, а енумы не могут.
          Ответить
      • А вот в Ди можна:
        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" мне предложил так пофиксить.
            Я уже нахуевертил с костылями, лень проверять.
            Ответить