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

    0

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

    #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
    #73: https://govnokod.ru/27136 https://govnokod.xyz/_27136
    #74: https://govnokod.ru/27160 https://govnokod.xyz/_27160
    #75: https://govnokod.ru/27166 https://govnokod.xyz/_27166
    #76: https://govnokod.ru/27168 https://govnokod.xyz/_27168
    #77: https://govnokod.ru/27186 https://govnokod.xyz/_27186
    #78: https://govnokod.ru/27219 https://govnokod.xyz/_27219
    #79: https://govnokod.ru/27254 https://govnokod.xyz/_27254
    #80: https://govnokod.ru/27270 https://govnokod.xyz/_27270
    #81: https://govnokod.ru/27280 https://govnokod.xyz/_27280
    #82: https://govnokod.ru/27284 https://govnokod.xyz/_27284
    #83: https://govnokod.ru/27296 https://govnokod.xyz/_27296
    #84: https://govnokod.ru/27336 https://govnokod.xyz/_27336
    #85: https://govnokod.ru/27381 https://govnokod.xyz/_27381
    #86: https://govnokod.ru/27405 https://govnokod.xyz/_27405
    #87: https://govnokod.ru/27429 https://govnokod.xyz/_27429

    Запостил: nepeKamHblu_nemyx, 18 Мая 2021

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

    • Добрый вечер.

      Этот оффтоп сгенерирован автоматически.

      Индекс оффтопов: https://index.gcode.space/.
      Зеркала Говнокода и полезные ресурсы:
      * https://govnokod.xyz/ (альтернативный Говнокод)
      * https://gcode.space/ (read-only зеркало Говнокода)
      * https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
      * https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
      * https://vorec.space/ (глоссарий Говнокода)
      * https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)

      Примечание: автоматические перекаты в настоящее время осуществляются только с аккаунта nepeKamHblu_nemyx.
      Остерегайтесь подделок. Берегите себя и своих близких. Кок!
      Ответить
    • Капец, так быстро предыдущий оффтоп перекатился! Интересно, как так получилось?
      Ответить
      • Обезьяны наспамили.
        Ответить
        • Осторожно. Не кормите обезьян! Спам!
          Ответить
          • https://www.youtube.com/watch?v=iBS63txsYyU
            Ответить
            • Почему видео приказывает мне смотреть его до конца? Чо охуело?
              Ответить
              • Надавай ему пизды
                Ответить
                • Въебал дизлайк и даже не стал смотреть. Так его я уделал
                  Ответить
                  • ну и зря

                    видео называется
                    ТОП 5 Обезьяны кидаются какашками в людей в зоопарке, 1 МЕСТО ЖЕСТЬ))) СМОТРЕТЬ ДО КОНЦА!)
                    Ответить
                    • Въебал минус, за то что попытался пристыдить мои героический поступок. А мне и не стыдно.
                      Ответить
                    • максимально раковое видево, досмотрев до конца ты какбы говоришь тытрубу дайте мне еще самых раковых в рекомендуемые

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

                      https://www.youtube.com/watch?v=e3pZorRdHA8
                      Ответить
            • Александр Лебедев

              так и надо поступать с шароварниками
              Ответить
          • Гы-гы.
            Ответить
      • До НГ потому что нужно сотый перекатить.
        Ответить
    • охуясе стабильненько как в дебиане
      https://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no&bug=988722

      чел проапгрейтил постгрю и она похерила postgis
      Ответить
      • У меня в mnesia нет никакого `postgis', поэтому я за `mnesia'.
        Ответить
      • Ну лучше ли использовать базу данных в оьлаке? Нахуя что-то самому админить?
        Ответить
        • Дороговасто будет для всяких петпроджектов, например.
          И проблематично для внутресетевых сервисов.

          Для боль-мень серьзеных вещей наверное и правда лучше взять RDS например, только деньги правильно посчитать
          Ответить
          • вы так договоритесь до того, что и компы не нужны, можно просто у абмазона время купить

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

              В AWS я поставил галочку, и база автоматически разлилась на другие авэлебилити зоны (в другие дата центры)
              Кнопочку нажал, и она обновлиась.
              Другую нажал, и туда добавилось 64 гига памяти или еще 8 ядер.

              А про железо и операционку пусть питухи думают.

              Это всё не работает конечно, если ты гугл. А если ты небольшой интерпрайз на 300 питухов, то это рабоатет заебись.

              Но правда каждая такая кнопочка и галочка может сразу добавлять $150 к месячному счету, и можно легко нащелкать себе на пять штук баксов в месяц, так что нужно аккуратнее счёлкать
              Ответить
              • azure nosql хранилища до какого-то порога дает бесплатно, потом довольно дешево

                ms-sql тоже от 10$/mo но там вроде еще за сервер и лицензию платить надо

                так что клауд для пет-проекта тоже заебсиь
                Ответить
                • >10$/mo

                  у меня в два раза дешевле стоит VPSка на которой я могу захостить хоть десять проектов, лол
                  Ответить
                  • какие у нее спеки?
                    Ответить
                    • 2 ГБ RAM
                      20 ГБ NVMe
                      2 виртуальных CPU

                      За 13 долларов в мес можно взять
                      4 ГБ RAM
                      40 ГБ NVMe
                      4 виртуальных CPU

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

                        И я не иканус тебе.
                        Ответить
                        • Ура, Сёма вернулся!

                          > Нахуй нужен пет-проджект, если он не приносит и не будет приносить ни цента прибыли?

                          Петпроект нужен, чтобы засунуть его в CV, и тем самым увеличить шанс устроиться в неротоёбскую контору с неротоёбскими зарплатами.
                          Ответить
                          • Если не принесло денег, то должно хотя бы пользу. Что полезного сделал, например, ты?
                            Ответить
                          • А у меня куча всего есть, что в CV я никогда не суну.
                            Это либо не доделано (разумеется, начать новый петпроект интереснее, чем доделать старый) либо не имеет прямого отношения к моей деятельности (ну это как если бы ты игрушку под андроид написал)

                            Это плохо?
                            Ответить
                        • >Нахуй нужен пет-проджект
                          фофан
                          Ответить
                • > базу данных
                  > nosql
                  это несерьезно
                  Ответить
                  • Кстати, вопрос к знатокам: насколько вообще хорошо nosql базу сделать основным источником информации?
                    Как у нее с репликацией и бекапом?
                    Ответить
                    • помнишь как просто было загружать из foxpro на chat.ru?
                      с nosql стало еще удобнее

                      ну ладно, не foxpro, а paradox
                      Ответить
                      • я помню, что на чат ру не было чатов, и это меня печалило
                        приходилось ходить на zerkalo.com
                        Ответить
                      • > foxpro

                        А ведь лиса и была nosql базой... Можно было бегать по табличкам, явно юзать индексы.
                        Ответить
                        • ки-валуе базы вообще были популярны одно время: dbf в 1С (и вроде и лиса в него могла), все эти слиппи кэт берклидб и прочие хеш базы
                          Ответить
                    • мне говорили что лучше всегда использовать sql если можно

                      а если нельзя то есть куча разных nosql которые решают разные проблемы и надо решать в зависимости от того что именно не вывозит sql
                      Ответить
                      • Ну потому что ты один фиг криво-косо переизобретёшь обычную СУБД когда захочется джойнов и транзакций...
                        Ответить
                        • А как у Nosql с хранением деревьев?

                          У реляционки так се
                          Ответить
                          • Х.з., мне вообще не нравится термин NoSQL.

                            Фича же не в том, что там SQL нету (заебись, учить не надо!), а скорее в нереляционности.
                            Ответить
                            • А в чём плюсы-то?

                              В реляционках могут отпугивать две вещи:
                              * нужно делать схему
                              * трудно хранить деревья
                              (второй пункт вытекает из первого видимо)

                              Вообще таблица далеко не всегда лучший способ представления данных.

                              Именно потому появились все эти NoSQL?

                              (Мнезия Снаута это отдельная история, там СУБД, как я понял, практически интегрирована с языком, и это круто)
                              Ответить
                              • Ну да, основные фичи традиционной РСУБД - схема, ACID и реляционность.

                                Если ты уверен что тебе что-то из этого нинужно и оно только портит пирфоманс - добро пожаловать в мир NoSQL.
                                Ответить
                                • Ну ACID мне наверное нужен, если это не ридонли копия для построения отчётов (тут я, конечно, за кубы, или за всякие клабхаусы как минимум)

                                  Если мне ничего этого не нужно, то может мне проще в памяти построить граф объектов, сделать всякие коллекции с указателями на них, и пусть всё так работает?

                                  Ну сериализнуть его как-то на диск, и вот
                                  Ответить
                                  • > наверное нужен

                                    Ну не всегда... Никого же не напрягает, что на ютубе счётчик просмотров неконсистентен с остальными полями. А пирфоманса это прилично экономит.
                                    Ответить
                                    • а он эвенчуали консистентен хоть?
                                      Ответить
                                    • Да заебись вообще. Не нужно делать фуллскан для того, чтобы посчитать лярд просмотров XcQ
                                      Ответить
                                  • > SQL портит перфоманс
                                    https://www.youtube.com/watch?v=b2F-DItXtZs
                                    Ответить
                            • порок вхождения же! это был ответ для зрз-приматов на сложный и юзаемый не по назначению mysql

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

                              да, и дерево - это таблица с ухом
                              Ответить
                              • mysql вроде бы умеют даже самые примитивные формы жизни типа phpидоров

                                Причем суют они её везде, начиная от хранения там конфигов и до картинок

                                вот пример сущенго пидорства и праздник пыхоблядства
                                http://api.docs.umi-cms.ru/spravochnik_po_klassam_yadra_umicms/baza_dannyh/

                                >ухо
                                pardon me?

                                Я знаю только один способ хранения деревяшки в SQL без N+1 запросов на выбор поддерева: Это хранение через LEFT+RIGHT (nested set model или как оно по уму) но там двигать его ОЧЕ тяжело
                                Ответить
                                • https://i.stack.imgur.com/Bb5ft.png

                                  развернутое конечно
                                  Ответить
                                  • ну выбери мне одним запросом всех потомков узла

                                    можно наверное через WITH/CTE изъебнуца, нобудет некрасиво
                                    Ответить
                          • Приведи реальный пример деревьев, которые нужно хранить.
                            Ответить
                            • Что, никто не знает?
                              Ответить
                            • Каталог товаров в магазине
                              Ответить
                            • Комментарии ня Говнокоде.
                              Ответить
                              • Кто в зрдавом уме будет хранить комментарии в базе как-то иначе, чем (comment_id, parent_id)?
                                Ответить
                                • > (comment_id, parent_id)
                                  Выбери все комментарии к посту, которые ня находятся в ветках, начатых пользователем с user_id = 67780.
                                  Ответить
                                  • А нахуя такое может понадобится?
                                    Ответить
                                    • OwO
                                      ... UwU
                                      ... ... OwO
                                      Ответить
                                    • Чтобы скрыть как сами комментарии спамеров, так и ответы ня них. Предполагается, что в ветке, нячатой спамером, ничего продуктивняго ня будет.
                                      Ответить
                                      • В каком смысле скрыть? Когда отрисовываешь дерево, проверяешь, что комментарий не находится в черном списке. Если находится - нахуй всю ветку.
                                        Черный список берешь отдельным селектом, если он не большой (а он не большой).
                                        Ответить
                                        • есть комментарий 282

                                          выведи мне все комментарии, не являющиеся его потомками
                                          Ответить
                                          • Все комментарии, не являющиеся его потомками - это почти все комменты в базе. Уточни задачу.
                                            Ответить
                                            • уф блин

                                              вот есть пост номер 1. Выведи мне все его комменты деревом кроме коммента 282 и его потомков
                                              Ответить
                                        • Поздравляю, всю логику ты выняс в приложение.

                                          Следующее: в стоке есть отдельный комментарий (commanet_id, parent_id, user_id). Нядо определить, няходится ли он в ветке, нячатой пользователей с id = 67780.
                                          Ответить
                                          • > Поздравляю, всю логику ты выняс в приложение.
                                            Я настоящий ротоёб, да?

                                            > Следующее: в стоке есть отдельный комментарий (commanet_id, parent_id, user_id). Нядо определить, няходится ли он в ветке, нячатой пользователей с id = 67780

                                            Задача сложная. И вообще, заключене «ответил в ветке уёбка = надо скрыть» - такое себе. А ты как решать будешь?
                                            Ответить
                                            • Есть способ хранения дерева в РСУБД который называется Nested set model.

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

                                              Слева от корня у тебя 1 (потому что ты с него начал) и справа -- самое большое число (потому что ты туда пришел в самом конце).

                                              Вот так

                                              https://docs.mongodb.com/manual/images/data-model-example-nested-set.bakedsvg.svg

                                              Это позволяет одним запросом получить всех потмков какого-то узла, и одним же запросом проверить, является ли узел N потомком узла M.

                                              Все, у кого левое число БОЛЬШЕ твоего левого числа, а правое МЕНЬШЕ твоего правого числа есть твои потомки (дети, внуки, правнуки итд). Одно простое условие.

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

                                              Проблема в том, что обновлять такую структуру трудно.

                                              Добавление узла может потребовать пересчета всего дерева.

                                              Иногда можно хранить данные с parent_id, а по ним строить рид-онли базу с nested set model, чтобы ускорять поиск например
                                              Ответить
                                              • Реальный пример задачи так никто и не привел, только надуманные со скрытием «отвечающих отвечающим уёбкам».
                                                Ответить
                                                • Я тебе привел пример с магазином.
                                                  Найти все товары в определенной категории. Это реальный пример.
                                                  Ответить
                                                  • Давай разберем на примере.
                                                    Есть товар «резиновый хуй». Какие у него категории?
                                                    Игрушки для взрослых -> фаллоимитаторы
                                                    Храним связи в отдельной таблице «резиновый хуй» <-> «фаллоимитаторы», «резиновый хуй» <-> «Игрушки для взрослых».
                                                    Не исключаю, что товар может быть листом нескольких веток категорий.
                                                    Также могут быть теги: «Товары для женщин». Тоже храним такую связь.

                                                    Или это опять по ротоёбски?
                                                    Ответить
                                                    • А само дерево категорий как хранить будешь? Юзер ведь может захотеть по верхнему уровню поискать, без подробностей.

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

                                                        А какая мне разница верхний или не верхний уровень категории?
                                                        У меня же есть связь «резиновый хуй» <-> «Игрушки для взрослых».
                                                        Ответить
                                                    • То есть если у тебя есть дерево глубиной
                                                      3, то ты будешь хранить 3 записи для каждого узла, а как ты будешь хранить само дерево, чтобы не получилась денормализованная хрень?
                                                      Ответить
                                                      • А ты предлагаешь хранить только категорию-лист?
                                                        Ответить
                                                        • В nested set model ты одинаково хранишь и узлы и ветви. Тебе не нужно вообще эти понятия разделять
                                                          Ответить
                                                • Реальный пример: нарисовать дерево комментов произвольной вложенности если известно что они подаются пагинацией и один запрос на пост не отдаст все комменты. Разумеется без n+1 заппосов
                                                  Ответить
                                      • > Предполагается, что в ветке, нячатой спамером, ничего продуктивняго ня будет
                                        Это говнокод, тут спокойно бывает так:
                                        — Спам — "Уёбок" — "Не отвечай уёбку" — "Да он сам уёбок, поэтому и отвечает" — Дискуссия о том, позволительно ли одному уёбку отвечать другому — предположение о том, что это один и тот же уёбок — дискуссия о позволительности ответа самому себу — приход к конценсусу, что уёбку позволительно отвечать уёбкам, не являющимися им самим — спор об идентификации уёбков, переходящий в спор об понятии личности и самоосознании — обсуждение трансгуманизма, последствиях возможности копирования сознания и моральных и этических проблемах врзникающих при обнаружении серьёзных психических отклонении у одной из копий — предположения о возможном механизме автоматических бекапов сознания и откатов с сохранением памяти.
                                        Ответить
                                        • Совершенно верно. А после этого что-нибудь про Coq и C++ может появиться.
                                          Ответить
                                        • волноваться о том, что в инторнете кто-то отвечает ротоёбку - нарушает как минимум 2 нормальные формы и является типичным Thinking in PHP, что соответствует ведению грязным пальцем по @ROWID в Server Manager'е с целью отыскать нужную яичейку и поправить там значение
                                          как раз для такого придумали spreadshit-образные nosql хренилища без струткурирования строк
                                          Ответить
                                • 1. найди мне все комменты со словом "жопа" в одной ветке
                                  2. скрой ветку целиком
                                  Ответить
                        • Обычно выбирают nosql когда уже не хочется джойнов
                          Ответить
                    • Слишком общий вопрос. NoSQL баз под тридцатник, и у всех них кардинально разные фичи.
                      Ответить
                      • Я не по наслышке знаю один финтеховский юникорн, где использовалась угадайте что. С репликацией и бекапом там всё было прекрасно (вывод мастер-ноды на мейнтенанс делался (при желании) бесцеремонным kill -9), но репликация была чисто кастомная, лол.
                        Ответить
                        • P.P.S. Профит от этой фигни был в следующем:
                          1) Чтобы Снаут мог вдоволь наиграться с рафтушнёй
                          2) Бизнес-логика и язык запросов на одном языке программирования
                          3) Крайне низкая latency, т.к. бизнес код крайне близок к данным, можно сказать дышит на них

                          Но под NoSQL сейчас обычно понимают питушню типа MongoDB (которая web scale), и ни одного пункта из списка она не выполняет. Соответственно, и особого профита от них нет, проще взять постгрю и не мучиться.
                          Ответить
                          • а что за бд была?
                            Ответить
                            • https://govnokod.ru/27432#comment628437 , но сильно переработанная.
                              Ответить
                              • Я правильно понял что в ерланге есть ets и dets которые просто nosql бд а mnesia и эта переработанная штука это обертка?
                                Ответить
                                • С сильной натяжкой — да. Обе эти штуки могут использоваться как storage backend (хотя dets использовать не стоит — отвалится жопа).
                                  Ответить
                                  • mnesia используется где-то кроме ерланга?
                                    Ответить
                                    • > mnesia используется где-то кроме ерланга

                                      А как? :)
                                      Ответить
                                      • Я хочу узнать, есть ли у нее какие-то фичи кроме эрланга из-за которых ее юзают
                                        Ответить
                                    • > mnesia используется где-то кроме ерланга?

                                      Конечно. Elixir ещё ^___~
                                      Ответить
                                • > просто nosql бд

                                  Да уж, вот и пришли времена, когда просто хеш-табличку и дисковую хеш-табличку стали называть Базой Данных...
                                  Ответить
                                • > есть ets и dets которые просто nosql бд

                                  Пропустил эту часть. Как Борманд отметила, это тупые хэш-таблички, а не БД. Мнезия поверх них (и не только их, она поддерживает кастомные бэкенды) накручивает ACID, репликацию, снепшоты, ивенты, и т.д.
                                  Ответить
                  • и как там в 2005?
                    Ответить
                • > nosql
                  > ms-sql

                  Возможно, вы имели в виду MySQL?
                  Ответить
                  • в ажуре помимо ms-sql еще дают table storage, cosmos db которые являются nosql
                    Ответить
    • SMART overall-health self-assesment test result: FAILED!
      Drive failure expected in less than 24 hours. SAVE ALL DATA.

      Вот и пришла пизда HDD'шнику из прошлого десятилетия...
      Ответить
      • Ну хоть честно предупредил
        А какие параметры упали? Это электроника дохнет, или сервометки стёрлись?)
        Ответить
        • > Ну хоть честно предупредил

          Ну да, линуха прям даже сообщение в гуйне показала.

          Reallocated sector count кончился, ничего криминального.
          Ответить
          • Это какая-то обвязочка гуйная вокруг smartmontools?
            Кстати бесит, что в пинде этого из коробки до сих пор нету
            Ответить
        • 60кб всего не прочиталось из терабайта. Неплохо.
          Ответить
          • 120 блоков?:)
            Ответить
            • сеткоров
              Ответить
            • Сам диск говорит, что где-то 300 unrecoverable read errors. Но, видимо, это старые бэды и он их уже куда-то ремапнул.

              З.Ы. Пофиг, сделаю из него светодиодные часы какие-нибудь.
              Ответить
    • Хакеры, которые атаковали американскую компанию Colonial Pipeline, могли получить от своих жертв за последнее время почти 90 млн. долларов выкупа. Как утверждают эксперты по кибербезопасности компании Elliptic, деньги обычно перечислялись в криптовалюте. Средний размер выкупа составил почти $2 млн. Выкуп Colonial Pipeline — 75 биткойнов, что по курсу 8 мая равнялось около $5 млн

      Вот что бывает, когда сэкономил на нормальных админах
      Ответить
      • > сэкономил на нормальных админах

        Причём там хакеры извинились за атаку, типа они просто заработать хотели а не оставить америку без топлива.
        Ответить
        • А написано как они поломали?

          Не удивлюсь, если там какой-нить роутер наружу торчал админским портом с известной уязвимостью, как это обычно бывает
          Ответить
    • А куда пропал 3.14159265?
      Ответить
    • — Не помню, чтобы утечка памяти входила в класс ошибок, которые Rust обещал отлавливать.
      — Эмм, а владение в Rust'е разве не об этом?
      — Нет. Была даже эпичная история с утечкой, вызванной библиотечным кодом, не помеченным unsafe, вследствие чего комитет сделал вывод, что утечка не является критичным с точки зрения безопасности состоянием, и даже убрал ансейф с метода явной утечки mem::forget.


      Как после такого вообще можно рассматривать «Ржавчину» как серьёзный язык? :/
      Ответить
      • Владение и боров-чекер решают ещё несколько более опасных проблем -- use after free, протухшие итераторы, частично гонки между тредами. Утечка на их фоне действительно смотрится белой и пушистой.

        Но да, почему они за меня решают что мне критично с точки зрения безопасности, а что нет? Утечка -- это потенциальный denial of service, всё-таки.
        Ответить
    • https://vk.com/wall-39243732_1864590

      Куда расти сисадминам?
      Ответить
      • Вширь
        Ответить
      • > Я конечно понимаю, что интересно свою сборку арча собирать, а потом сюда выкладывать скрины, ну а толку то по факту ?

        Ого, а я и не знал, что я – админ!
        Ответить
        • >> собрать Арч
          >> Я - Одмен
          Это как играть в конструктор Лего и считать себя высококлассным инженером.
          Ответить
          • Согласен. Или как архитектором. «Arch» от слова «Architecture» же.
            Ответить
        • > сборку арча

          Но... он же бинарный. Это как сборкой убунты хвастаться, имхо.

          Ладно бы там LFS какой-нибудь.
          Ответить
          • Нужно уметь диски размечать, монтировать и форматировать, это то ещё админство!
            Ответить
            • Чувакам было лень написать нормальный инсталлятор и они объявили это дистрибом для илитки?

              > уметь

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

                Нормальный – это как в бубунту?

                > Вбить заклинания из хендбука много ума не надо

                Нужно ещё понимать чем GPT от MBR отличаются. Ещё понимать какие штучки вынести на отдельные партиции, в какую файловую систему что отформатировать... Но если всё делать по вики, думать действительно не надо. Почти.
                Ответить
                • > чем GPT от MBR отличаются

                  И чем GPT от MBR отличается? ;)

                  > какие штучки вынести на отдельные партиции

                  LVM уже научился поднимать или по-прежнему кипятишь?
                  Ответить
                  • > И чем GPT от MBR отличается

                    Один старый, другой новый, и какой-то из них уже не нужен. Что-то мне подсказывает, что не нужный – MBR. А ещё это какой-то Master Boot, т.е. хозяйский сапог. Очень по-расистски!

                    > LVM

                    Для этого нужно генту устанавливать.
                    Ответить
                    • > генту

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

                      Другой занимает несколько блоков, в первом там заглушка MBR, в остальных таблица разделов. Каждый с GUID, таким образом их может быть сколько угодно, и адреса у них более длинные, потому можно разместить партицию дальше двух терабайт (а в MBR вроде нельзя)

                      Алсо, в GPT в жопе диска копия GPT на случай пиздеца.

                      >LVM

                      Ващет в убунту и центоси/федоре их предлагают по умолчанию
                      Ответить
                      • > убунту

                        Убунта вроде только на зашифрованном диске LVM предлагает по-умолчанию, потому что иначе придётся к каждому тому пароль вбивать... А так они все в одной коробке.

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

                          https://ubuntucommunity.s3.dualstack.us-east-2.amazonaws.com/original/2X/7/744833c87593ff7edc192e2929e465f915f7c07b.png

                          видишь LVM?
                          Ответить
                          • Ну на серваке логично.... Меньше ёбли когда добавляешь ещё дисков, да и софтовый RAID может захотеться собрать.
                            Ответить
                            • Ну да, даже MS советует "динамические диски" юзать, чтобы их потом расширять.

                              А про софтварный рейд есть разные мнения. Кто-то считает, что лучше купить нормальный хардварный (не интеловское rapid storage, который на самом деле софтварный) а нормальную карту со встроенным процом и кешем, и не упираться потом с CPU.

                              Но могут возникнуть отсосы при переносе на другой контроллер.
                              Формально в конце диска должна содержаться конфигурация рейда, к которому он принадлежит (стандарт называется "SNIA Common RAID Disk Data Format Specification"), но на деле не редки случаи отсоса при переносе на контроллер другого производителя


                              Кстати, говноксрпит установки убунты называется Ubiquity

                              Что за дебилньная привычка переиспользовать имена?
                              У RH он anaconda (как питоновский дистр) у Ubuntu он Ubiquity как бюджетные wifi решения с софтварным контролёром
                              Ответить
                              • > не интеловское rapid storage

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

                                > не упираться потом с CPU

                                А в чём там упирание то, просто вдвое больше трафика до дисков (если запись на зеркало)... Ты же не собираешься строить RAID-5, я надеюсь?

                                От железного RAID'а, имхо, только гемор. Ну если это не какая-нибудь автономная полка.
                                Ответить
                                • >А в чём там упирание то
                                  В зеркале-единичке -- ни в чем

                                  В нолике нужно разбивать данные на страйпы, хотя это и не трудно.

                                  Пятёрка в чистом виде идет нахуй, но вот 50 встречается в реальности вполне себе часто. А где число "5" -- там чексумма, а значит CPU.

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

                                  Вот и изъебываются.

                                  Алсо, у контроллеров может быть свой кеш (как память, так и и ssd кеш -- неплохо ускоряет hddшки), к кешу идет своя батарейка (получается "write back"), контроллеры в фоновом режиме умеют проверять здоровье дисков (считывая блоки) итд.

                                  Но у меня нет strong opinion на счет этого всего.

                                  > автономная полка.
                                  В полке ОБЫЧНО нет контроллера рейда. Там SAS контроллер и может быть экспандер. Она по SAS подключается к контроллеру.

                                  Но наверное есть и полки со встроенным контроллером
                                  Ответить
                • > какие штучки вынести на отдельные партиции

                  Х.з., я вообще не разбиваю... У меня только минимальный набор из root, swap и esp. Это ж не сервак какой-нибудь, чтобы на годы вперёд обдумывать куда логи срать, а куда базы положить.
                  Ответить
        • вообще-то про это целый сайт есть!
          там не гнушаются выкладывать скрины не только своей сборки, но и дефолта с дефолтнейшими обоями, и ничо
          Ответить
          • Какие админы, такие и зарплаты )))
            Ответить
          • > гну-шаются

            Вот, хоть кто-то не забывает добавить gnu когда пишет о linux!
            Ответить
            • Сёма: Линукс говно
              Столлман: тебе не стыдно?
              Сёма: извини пожалуйста. GNU/Linux -- говно
              Ответить
      • >Куда расти сисадминам?


        Либо в глубокую экспертизу (например в "DBA -- бог Оракла" или "JNCIE -- бог Юнипера") или в руководство (например в "Офисный админ СанСаныч -- коммандир сорока девяти эникеев в семнадцати бранчах компании по всей России")

        Можно еще стать девопсом, но там свои тонкости
        Ответить
    • Почему getch возвращает int, а не char? Чтобы иметь местечко для EOF?
      Ответить
      • Так точно.
        Ответить
        • какой костыль ))
          Ответить
          • Ну дык maybe или optional не завезли.
            Ответить
            • > optional
              struct {enum variant; union {/*...*/} value;};
              же!
              Ответить
            • feof(FILE* stream) же есть, но она работает уже ПОСЛЕ читения вроде (когда состояние стрима уже плохое после чтения конца)

              а должна бы ДО
              Ответить
              • Когда убьют – тогда и приходите.
                Ответить
                • Крестостремы тоже это наследовали
                  https://www.cplusplus.com/reference/ios/ios/good/

                  На самом деле я понимаю почему так

                  Ты не можешь знать кончился ли стрим, пока ты из него не прочитаешь
                  Размер файла ты еще можеш знать, а размер пайпа? А сокета?
                  Ответить
                  • Звучит логично и правильно в контексте стримов!
                    Ответить
              • В общем случае ты не узнаешь состояние стрима не запросив следующий символ. Просто представь, что это ввод с клавиатуры — кто знает, когда пользователь нажмёт ctrl+D?
                Ответить
                • да) я уже допедрил
                  https://govnokod.ru/27432#comment628639
                  Ответить
    • Если спрос на видеокарты такой неебический, то почему производители не увеличат производство?
      Ответить
      • https://vk.com/wall-37633522_608037
        Ответить
        • > Александр, были бы у них видеокарты не писали бы тут :D а так больше делать нечего вот и следят смартфонов когда видеокарты перестанут майнить

          Да, всё так, подтверждаю.
          Ответить
      • это не так работает
        если ты услышишь из телевизора блеющий голосок хуйла велящий есть в 2 раза больше говядины, то на твоей лопате добавка появится только через 4 года
        развертывание дополнительного производства готовых к работе плат с АЗИКами займет не меньше 2-3 лет
        Ответить
      • Потому что чипы для видеокарт производит ровно одня компания, и она чисто физически ня может производить больше чипов.

        https://habr.com/ru/company/selectel/blog/544044/
        Ответить
    • https://pbs.twimg.com/media/E1xeRoPXIAAa8MS?format=jpg&name=900x900
      Ответить
      • Какой хардкор )))
        Ответить
      • по рашкованским понятиям вол - государственный, суровые спермяки могут найти двушечку
        Ответить
    • https://www.newsvl.ru/society/2021/05/20/199567/
      А вы сколько раз вуз окончили?
      Ответить
      • Да давно уже понятно, что государство – это как 25-ти летний старикан-извращенец, который подходит к 18-ти летним молодым девушкам со словами: «Йо, скинь мне аську на пейджер, потусим на дискаче в клубешнике под тектоник, йоу сэкси бейби!» — в надежде на женское внимание, которое ему, конечно же, не светит.

        Именно так и выглядят все эти заигрывания правительственного динозавтра с молодыми вещами типа компьютеров, программ, криптографических деняг и тому подобного.
        Ответить
        • Динозавра, диновчера, диносегодня
          Ответить
        • >двадцати пяти
          > старикан
          :)
          Ответить
          • да, захотелось от таких формулировок уебать
            Ответить
          • Думаю что от айтишного образа жизни можно развалиться не 25 так точно в 30
            Ответить
            • Современные айтишнки бывают иногда крепкие: ЗОЖ, бег, йога, вот это всё.

              Это не обязательно такой компьютерщик из 90-х в свитере и толстых очках, который 18 часов курит за компьютером
              Ответить
              • Сейчас некогда курить, потому что ебешься а то что успел - это сходить за кофе
                Ответить
              • лол

                и как же зож, бег и ха-ха-ха ЙОБА помогут в достижении крепости?))
                Ответить
                • ну чтобы стать некрепким, нужно неправильно питаца и мало двигаться, не?

                  А бегуны обычно боль-мень стройные, и не курят
                  Ответить
                  • > бегуны
                    > не курят

                    - ну, во-первых, это не 100%, во-вторых, многие бегуны любят бегать вдоль загазованных проспектов, так шо лучше бы они курили

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

                    > компьютерщик из 90-х в свитере и толстых очках, который 18 часов курит за компьютером
                    - это типичная одминка, а не погромист
                    Ответить
                    • >ну, во-первых, это не 100%
                      ну чаще всего так. Всё таки дыхалка не резиновая

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

                      >с убитыми к тридцати годам коленями
                      это правда! Но сейчас есть спец школы бега, где учат бегать правильно, правильно выбирать обувь, итд.
                      И вроде бы нельзя бегать, если ты оче жирный (точно убьешь колени)

                      >- это типичная одминка, а не погромист
                      в 90-е грань между ними была тоньше
                      Ответить
                      • > нельзя бегать, если ты оче жирный (точно убьешь колени)
                        курилка 22: чтобы не быть жырным надо бегать
                        Ответить
                    • >> компьютерщик из 90-х в свитере и толстых очках, который 18 часов курит за компьютером
                      Типичные программисты выглядят как бомжи, ой хипсторы.
                      Ответить
      • Один
        Ответить
      • > златохуйский геральд
        доставь лучше хайрез кавая, символизирующего отключение коммиблока от инфраструктуры
        https://static.vl.ru/news/1620876329399_default
        Ответить
    • https://habr.com/ru/company/mailru/news/t/558260/
      > Исследование: треть рекрутеров мечтает о «переводчике» для общения с ИТ-специалистами

      > Каких инструментов не хватает рекрутерам для качественного и быстрого подбора IT-специалистов
      > 39% Автоматизированный инструмент для оценки навыков кандидатов

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

        Оценить айтишника может другой айтишник. Зачем требовать это от рекрутера?

        Это как требовать от тетеньки в регистратуре поликлиники чтобы она поставила диагноз, или от приемщика техники в сервис-центре чтобы он сказал какой чип у ноутбука поменять нужно
        Ответить
        • А зачем тогда 44% рекрутеров хотят инструмент "для проверки hard skills кандидатов в онлайн-режиме"?
          Ответить
          • Всмыле формочка с вопросами "в какой строчке тут UB"?
            Отличная идея же)
            Ответить
          • Потому что, скорее всего, у рекрутёров в KPI "процент принятых на работу из всех предложеных".
            Ответить
            • Но это же ня нормальня. Если рекрутер — это тётенька в регистратуре, то такой KPI — это "процент вылеченных от зарегистрированных ня приём".
              Ответить
              • Это как раз нормально. KPI не для менеджеров обычно устанавливают люди, не знакомые со спецификой работы, для которой устанавливают показатели, не способные к критическому мышлению и не одарённые интеллектом.

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

                  В физматшколах обычно нету тех, кто не трезвел весь год
                  Ответить
                  • У нас были. Чел умудрялся совмещать бухло и математику, на олимпиады даже катался... Х.з. правда чем это потом закончилось.
                    Ответить
                    • ничоси) Я думал только в кино показывают гениальных хакеров, которые ломают любую сеть за 3 минуты, при этом курят траву, перемещаются по городу на мотоцикле, стреляют из всех видов оружия и спят со всеми встречными тян
                      Ответить
                  • > ей похуй же.
                    От этого зависит бюджет, закупка нового оборудования, зарплаты и возможность повышения квалификации. Отказать госучреждение не может, так как у каждого уёбка есть право на образование.

                    В итоге школа в неблагополучном районе получает хуй вместо финансирования → посидев пару лет на голом окладе без квалификационной категории хорошие педагоги уходят работать менеджерами по продажам, разочаровавшись в обучении (потому что места в элитных школах заняты _отличными_ педагогами) → их места занимают алкаши/троечники из педвузов, которых выгнали из менеджеров → школа скатывается ещё сильнее → вместо образования получается хуй → дети, которым было не похуй на школу, но не было возможности посещать другую, понимают, что им нихуя не светит → всё пошло по кругу.
                    Ответить
                    • Именно поэтому я за домашнее образование и против «школ»!
                      Ответить
                      • Ты давно дом окончил?
                        Ответить
                        • Shadow DOM
                          Ответить
                          • Ты давно DOOM окончил?
                            Ответить
                            • Очень давно, еще в детстве
                              Ответить
                              • А я тут doom итёрнал прохожу на максимальной сложности
                                Ответить
                                • Я на высокой сложности не проходил.. Я вообще не очень спец в стрелялках
                                  Ответить
                                • > doom итёрнал

                                  Мне он на середине надоел что-то...

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

                                    у вас есть нормальные гей-мерские компы

                                    а я даже в киберпук не смогу поиграть на своей старой плойке нормально
                                    Ответить
                                    • Возьми да купи карточку: https://www.citilink.ru/product/videokarta-msi-pci-e-4-0-rtx-3080-gaming-x-trio-10g-nv-geforce-rtx-308-1417009/

                                      Всего 300000 рублей!
                                      Ответить
            • Вроде просто есть план по наймам который надо выполнить
              Ответить
              • а у програамиста план по кол-ву строчек в год?
                Ответить
                • А у программиста спринт который если не сдашь выебут
                  Ответить
                  • > А у программиста спринт который если не сдашь выебут

                    А если сдашь -- то поднимут планку и выебут в следующем спринте.
                    Ответить
                  • Хорошо, что у нас нет никаких спринтов.
                    Ответить
                    • а у нас есть, но на самом деле это не спринты никакие, а просто отрезки между релизами

                      зачем-то надергали некоторое количество случайных терминов из скрама, и используем их не по назначению
                      Ответить
    • [quote]
      PHP с каждой версией все больше усложняется.
      В своё время многие начинали осваивать разработку с него из-за низкого порога входа. Написал echo 123 и вот результат твоих трудов в интернете.

      Я думаю Go занял это место.
      [/quote]
      https://habr.com/ru/company/mailru/blog/551240/ (хуёвые вербзоные корутины завезли в пых)
      Ответить
      • "Они исполняются параллельно, но обрабатываются исключительно самой runtime-средой, а передаются напрямую в процессор"

        ЯНИХУЯНЕПОНЯЛ.жпг

        Они хотя бы читали свои высеры. Тут по-моему даже ворд пожалуется, что предложение не согласовано.
        Ответить
        • там НЕ пропущено

          в оригинале

          These seem to run in parallel but are ultimately handled by the runtime itself rather than by pushing it directly to the CPU

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

            Т.е. шедулятся эти корутины в самом рантайме PHP, а не в ядре ОС.
            Ответить
            • ну да, люди выдумали кооперативную многозадачность целиком в юзерспейсе, и радуются:)

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

          хотя врядли они используют ворд, прошли добрые времена когда врод со всеми фичами встраивался в прямо в почтовый клиент
          Ответить
    • АСТАНАВИТЕСЬ
      https://micro-frontends.org/
      Ответить
    • Питухи, которые пиздят в данный момент на говнокоде, вы пинаете хуи на работе?
      Ответить
      • Конпелируем.
        Ответить
        • А как лучше конпелировать?
          Ответить
          • Отключить PCH и заинклудить побольше бустятинки.
            Ответить
            • Если конпеляция кончается раньше конца рабочего дня, можно заодно поставить пересобираться сам буст.
              Ответить
              • Лучше ноду жс пересобрать, а то буст может успеть собраться...
                Ответить
                • Советую собрать хромиум или OpenJDK.
                  Лучше делать это под винду, тогда четыре часа компиляции покажутся совсем небольшим отрезком по сравнению со временем, которое вы потратите на настройку окружения
                  Ответить
        • Тс в джс
          Ответить
      • https://youtu.be/541xsLHWmPs
        В школе учусь на уроке сижу.
        Ответить
        • КАКОЙ БАГОР )))
          Ответить
        • После прихода инспектора хуета явная началась. Раньше эти видосы хоть как-то были похожи на реальные.
          Ответить
        • --Алло, это SMM студия "зе сошиал нетворк промоушен диджитал солюшенс"?
          --Да
          --А почему шепотом?!
          --Я на алгебре
          Ответить
      • Индексируем проект в intellij )
        Ответить
        • Ждём, пока JVM после запуска перестанет лагать.

          Кстати, я видел ноут у человека, у которого куча всяких приложений в автозапуске, преимущественно связанных с ЙАЖОЙ. У него ноут несколько минут загружался )))
          Ответить
          • Это нормально.

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

            Если ноут грузится менее пяти минут, то это не ноут
            Ответить
            • > Если ноут грузится менее пяти минут, то это не ноут...

              ... а ультрабук.
              Ответить
      • Concuerror гоняю.
        Ответить
      • Rimworld гоняю на сборке hsk
        Ответить
    • техписателям платят постранично

      This page intentionally left blank
      Ответить
    • Давайте ругать пхп-моего-админа.
      Ответить
    • А ваш "Coq" умеет доказывать, что ∫u dv = uv - ∫v du?
      Ответить
      • Тебе лучше знать.
        Ответить
      • Djvu?
        Ответить
      • ∫ 1/x dx = 1/x * x - ∫ -1/x^2 * x dx = 1 + ∫ 1/x dx
        => 0 = 1
        Ответить
        • Полина доказывает, а потом и наказывает математику своим массивным Coq, у математики аж палки погнулись и покосились от такого жёсткого вывода!

          #shemale #lolicon #anime #genderintrigue #reality #coq #massivecoq
          Ответить
          • >shemale

            бялдь, откуда вы это говно тянете-то? Неужели вы на это смотрите?
            Ответить
            • А ещё я знаю «бимбо-унитаз». Не лично, просто читал.
              Ответить
            • Совсем не обязательно писать на пхп, чтобы знать про real_escape_string...
              Ответить
            • Этот тег отлично описывает реальный мир. Испытываешь надежду, куда-то стремишься, добиваешься, а потом раз — а там хуй.
              Ответить
              • Какая метафора )))
                Ответить
              • А реально можно не понять по внешности, поведению, голосу, что там хуй?
                Ответить
                • Не думаю. Если всё норм с внешностью и поведением, то там, скорее всего, уже нихуя.

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

              но в чём говно? просто потому что?

              и в жопу тоже нельзя ебаццо, МАКАКА запретил?
              Ответить
              • >и в жопу тоже нельзя ебаццо, МАКАКА запретил?

                Ладно, тебе разрешаю
                Ответить
                • когда ты разрешил, то уже и не хочется
                  Ответить
                  • Это вроде всегда так работает. Если что-то разрешили, то оно уже не так интересно, как запрещённое.
                    Ответить
        • Ты хоть зняешь что такое Якобиан?
          Ответить
      • >А ваш "Coq" умеет доказывать, что ∫u dv = uv - ∫v du?
        А на вашем "Coq" можно сделать веб-сайт? А телеграм бота?
        Нет?
        А нахуй он тогда нужен?
        Ответить
        • > веб сайт

          Ну вообще можно... Можно потом даже формально доказать, что в твоём фреймворке нет ошибок экранирования, XSS и прочего.
          Ответить
    • https://m.habr.com/ru/post/537600/

      Job — шаблон проектирования для новичков и опытных Go программистов

      Я начал программировать на Go после достаточно продолжительного периода программирования на PHP. Полагаю судя по последним тенденциям мой случай далеко не единичный. Go в целом набирает популярность среди Web разработчиков.


      Многообещающее начало, не так ли? )))
      Ответить
      • Коммент порадовал:

        Все вот эти вот ваши паттерны проектирования оставьте там, откуда вы пришли в Go, они тут не нужны.
        Ответить
      • Паттерн джоб это корутина?


        Го всегда идет по ручку с ПХП
        Как чип и дейл

        >Это не си, без понимания SOLID

        Люди, никогда не писавшие на си, почему-то думают, что там говнокод.
        Особенно смешно слышать это от ПХПшников
        Ответить
        • Многие сишники вполне следуют духу SOLID... ООП для этого нинужно.
          Ответить
          • Верно

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

            Пыхер, никогда в жизни в глаза сишки не видавший, почему-то уверен, что там нет SOLID

            Причем ООП в ПХП тоже своеобразное, как мы помним
            Ответить
            • какой может быть SOLID в языке без интерфейсов и наследования?
              Ответить
              • Лол, да это же просто общие принципы хорошего проектирования...

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

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

                  "можно обобщить" это типа "натянуть сову на глобус"? ну ок
                  Ответить
                  • Что такое "ООП"?
                    Ответить
                  • > о каком SOLIDе в сишке речь

                    Ну вот смотри...

                    S -- функция или хедер должны отвечать за что-то одно, не вали всё в одну кучу.
                    O -- для новых фич добавь новую функцию или хедер, не ломай существующие.
                    L -- соблюдай контракты.
                    I -- лучше сделать несколько простых функций/хедеров, разбитых по юзкейсам, чем один навороченный для всех кейсов одновременно.
                    D -- не завязывайся на конкретные библиотеки, завязывайся на их хедера.

                    Натянуто на глобус, да? Эмуляция ООП, да?
                    Ответить
                    • да, натянуто на глобус

                      вообще-то должен был навести на мысль тот факт, что изначально SOLID, как ты правильно заметил, сформулирован в терминах ООП, а не в терминах сишки

                      > L -- соблюдай контракты.
                      - орлы? Лисков не про контракты

                      > D -- не завязывайся на конкретные библиотеки, завязывайся на их хедера.
                      - хедера, которые могут меняться от версии к версии?

                      Тут, в общем, надо определиться: или солид в сишке это фантазия, или он настолько очевиден без специальной формулировки, что непонятно, зачем его придумали отдельно

                      Что тебе больше нравится?
                      Ответить
                      • > Лисков не про контракты
                        А про что же тогда принцип, постулирующий няобходимость дочерним объектам соблюдать контракт родительского?

                        > хедера, которые могут меняться от версии к версии?
                        А интерфейсы в Java от версии к версии някогда ня меняются?
                        Буквально няделю нязад я писала нябольшую программу, использующую библиотеку Pcap. Ня винде есть две основных её реализации: WinPcap (устаревшая) и npcap, ня GNU/Linux — стандартная libpcap. При этом в коде я просто сделала "#include <pcap/pcap.h>" и спокойно нячала использовать определённые в нём методы функции:
                        struct pcap_t *handle = pcap_create(ifaceName, errbuf);
                        pcap_set_timeout(handle, ...);
                        pcap_activate(handle);
                        pcap_loop(handle, ...);

                        И мне совершенно ня важно, какая имення реализация pcap реализует pcap.h, код прекрасня работает ня любой системе. Это — в чистейшем виде dependency inversion.

                        > или он настолько очевиден без специальной формулировки, что непонятно, зачем его придумали отдельно
                        Имення так. Большинство принципов и прочих паттернов становятся весьма очевидны после того, как их прочитать. Задним умом все крепки.
                        Ответить
                      • > Лисков не про контракты

                        Орли? ;)

                        Объект-потомок обязан выполнить все контракты, заданные объектом-предком. А использующий их код обязан вызывать только то, что описано в контракте объекта-предка. Иначе подстановка не сработает, увы.

                        Именно поэтому я всегда читаю этот принцип как "соблюдай контракты, сука".

                        > хедера, которые могут меняться от версии к версии

                        Ну уж постабильнее, чем в этих ваших питонах... Сишники букву O неплохо соблюдают, сломать существующий код -- это табу для большинства.

                        > фантазия

                        Х.з., мне довелось поработать сишным проектом, где юзалось DI во время сборки. Да, там "интерфейсы" и "реализации" лежали в отдельных папочках. И по конфигу подключались в зависимости от платформы и т.п. И тестировать удобно и пирфоманс норм.

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

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

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

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

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

                            Внезапно, но да. Нельзя взять и запилить потомка, не читая документацию на предка. Получится хуйня, которая нарушает LSP. Это же не coq чтобы все контракты формально описаны были и конпелятором проверялись.

                            > в рантайме это не сработает

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

                              > всегда меняют реализации прямо в рантайме
                              - кроме варианта "менять" есть ещё "иметь несколько одновременно"
                              Ответить
                              • > контракты, за несоблюдение которых компилятор не убивает твою собаку, не стоят бумаги, на которой они написаны
                                Я, конячно, тоже за принцип "скомпилировалось — знячит, корректно", но заэнфорсить в компайл-тайме LSP нявозможня.
                                interface Animal {
                                    fun make_sound()
                                    fun fly()
                                }
                                
                                class Sparrow : Animal {
                                    override fun make_sound() = println("Чык-чырык!")
                                    override fun fly() = println("Воробей полетел!")
                                }
                                
                                class Cat : Animal {
                                    override fun make_sound() = println("Ня-я-я~")
                                    override fun fly() = throw NotImplementedError("Ня умею летать... (╥﹏╥)")
                                }

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

                                    Присоединяяйтесь к Axis Order Coq (╯✧▽✧)╯
                                    Ответить
                                    • ой, это сложна-а, боюсь, я не осилю
                                      Ответить
                                    • https://i.imgur.com/TgILJUf.jpg
                                      Ответить
                                      • spend for the axis or save for taxes, hmm?..

                                        https://www.youtube.com/watch?v=JUNb6qUXYPA&t=134s

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

                                      задача в данном случае не реализуемая, я согласен. но дела для меня это не меняет

                                      именно поэтому собственно давно разочаровался в динамушне
                                      Ответить
                                      • Так ведь единственная часть контракта, которую энфорсят компиляторы мейнстримных язычков — это нязвания и типы методов. На поведение этих методов компиляторам глубоко плевать. Если у ме-ня класс-потомок из переопределённого метода кидает NotSupported/NotImplemented — это грубое нярушение LSP, одняко никакой компилятор проверить это ня в состоянии.
                                        Ответить
                                        • > никакой компилятор проверить это ня в состоянии

                                          А как же noexcept(true)?!

                                          З.Ы. Хотя там тогда просто молча выйдут.
                                          Ответить
                                          • Да, в язычках с checked exceptions можня что-то придумать (и то потомок-нярушитель может просто в лог ворнинг няписать).

                                            А крестовый компилятор да, noexcept ня энфорсит. Получила исключение в noexcept-методе — сама дура.
                                            Ответить
                                        • я не очень понимаю, с каким моим утверждением ты споришь

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

                                          соответствие поведения с документацией нельзя, с этим никто не спорит

                                          но языки, в которых реализован хотя бы первый пункт, лучше тех, в которых не реализовано вообще ничего

                                          > NotSupported/NotImplemented — это грубое нярушение LSP
                                          - наличие в стандартной библиотеке NotSupported/NotImplemented это нарушение чего?
                                          Ответить
                                          • Я утверждаю, что компилятор ня может полноценно энфорсить LSP. В лучшем случае он может только проверить сигнятуры, но это даже ня половина LSP.

                                            > наличие в стандартной библиотеке NotSupported/NotImplemented это нарушение чего?
                                            Няличие переопределённых методов, которые безусловно бросают NotSupported — это практически стопроцентное нярушение LSP.
                                            Ответить
                                            • > компилятор не может полноценно энфорсить LSP
                                              - с этим кто-то спорил?

                                              > Наличие переопределённых методов, которые безусловно бросают NotSupported — это практически стопроцентное нярушение LSP
                                              - даже если это написано в документации?

                                              А где ещё может использоваться NotImplemented? Зачем авторы языков его переизобретают?

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

                                                > - даже если это написано в документации?
                                                В документации дочернего класса? Конячно.
                                                По определеняю, класс-няследник должен уметь всё, что умеет класс-предок, и, возможня, нямножко больше. Если класс-предок умеет fly(), а класс-няследник fly() ня умеет (выкидывает NotSupported) — это грубое нярушение LSP.

                                                > А где ещё может использоваться NotImplemented? Зачем авторы языков его переизобретают?
                                                NotImplemented — чтобы выкидывать из методов, которые ещё не разработаны (но будут в будущем). А NotSupported — чтобы использовать в случаях, когда программисту лень нятягивать базовый ООП ня сову. В Kotlin, кстати, нят никакого NotSupported, и это правильня.
                                                Ответить
                                                • > твоё утверждение
                                                  - я не считаю документацию контрактом, вот и всё. (это не значит, что я против документации)

                                                  > NotImplemented — чтобы выкидывать из методов, которые ещё не разработаны (но будут в будущем)
                                                  - выглядит, как костыль. я за пределами оверрайдов NotImplemented никогда и не встречал, наверное
                                                  Ответить
                                                  • Тогда что такое контракт в твоём пони-мании?

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

                                                      например, MAKAKA does not implement GOST: bormand.cs: 114

                                                      ну или хотя бы рантаймовые контракты, как в D или в Рэкете
                                                      Ответить
                                                      • [1/2]
                                                        Тогда из твоего пони-мания контракта полностью исключается поведение.
                                                        Возьмём нядавний пример:
                                                        open class Rectangle(var h: Double, var w: Double) {
                                                            fun area() = h * w
                                                        
                                                            open fun stretchH(factor: Double) {
                                                                this.h *= factor
                                                            }
                                                        
                                                            open fun stretchW(factor: Double) {
                                                                this.w *= factor
                                                            }
                                                        }

                                                        Далее от класса Rectangle я няследую, няпример, классы "Текстура" и класс "Окно".

                                                        Пусть теперь я хочу няписать функцию, которая будет растягивать исходную текстуру так, чтобы она целиком помещалась в окно. При этом завязываться ня конкретные Texture и Window я ня буду (буковка D). Пишем:
                                                        fun stretchToFit(source: Rectangle, dest: Rectangle) {
                                                            val hFactor = dest.h / source.h
                                                            val wFactor = dest.w / source.w
                                                        
                                                            source.stretchH(hFactor)
                                                            source.stretchW(wFactor)
                                                        }


                                                        Получилась хорошая, обобщённая функция, при помощи которой я могу и текстуру под окно растянуть, и окно под текстуру, и хоть чёрта лысого (если он прямоугольный).
                                                        Ответить
                                                      • [2/2]
                                                        Одняко работа этой функции целиком зависит от LSP. Что произойдёт, если класс текстуры будет уметь растягиваться только по степеням двойки?
                                                        fun nearestPowerOfTwo(x: Double): Double =
                                                            if (x >= 1.0) {
                                                                2.0.pow(floor(log2(x)) + 1)
                                                            } else {
                                                                1.0 / nearestPowerOfTwo(1.0 / x)
                                                            }
                                                        
                                                        class Texture(h: Double, w: Double) : Rectangle(h, w) {
                                                            override fun stretchH(factor: Double) {
                                                                super.stretchH(nearestPowerOfTwo(factor))
                                                            }
                                                        
                                                            override fun stretchW(factor: Double) {
                                                                super.stretchW(nearestPowerOfTwo(factor))
                                                            }
                                                        }

                                                        Правильня: если такой объект попадёт в функцию stretchToFit() — она выдаст совершенно ня то, на что рассчитывал программист.
                                                        Произошло это из-за того, что автор функции stretchToFit() воспользовался неявным контрактом: он посчитал, что метод Rectangle.stretchH(x) обязан растянуть прямоугольник ровно в x раз.
                                                        В зависимости от того, что имели в виду авторы этих сущностей (Rectangle, Texture, stretchToFit()), нярушение LSP может быть в разных местах:
                                                        1) Если по замыслу автора Rectangle stretchH()/stretchW() обязаны растягивать прямоугольник точня, то LSP нярушил автор Texture.
                                                        2) Если по замыслу автора Rectangle stretchH()/stretchW() обязаны растягивать прямоугольник так, как посчитает нужным потомок (няпример, по степеням двойки), то LSP нярушил автор stretchToFit(): он создал функцию, которая ня может корректня работать со всеми потомками Rectangle.
                                                        3) Возможня и такое, что LSP нарушил пользователь функции stretchToFit(), а сама она обязывается растянуть source всего лишь в няиболее близкий к dest прямоугольник.

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

                                  есть нарушение принципа буквы I
                                  Ответить
                                • > Здесь ня лицо классическое нярушение LSP.

                                  В первую очередь, здесь ня лицо классическое нярушение "I" из SOLID -- попытка впихнуть невпихуемое в один интерфейс Animal. Отсюда и все грабли.
                                  Ответить
                                  • Если оригинально Animal — класс, разработанный для симуляции какого-нибудь авиария, где в принципе всё летает, то с интерфейсом всё нормально, непонятно, кто решил его переиспользовать не по назначению.
                                    Ответить
                                    • Поэтому я за ECS (Entity Component System).
                                      P.S. Эта парадигма на самом деле показывает, насколько ООП ущербен. Казалось бы, уж где, а в гейдеве наследовать танчики от машинок точно было бы идеально.
                                      Но нет, оказалось, что и здесь проще его выкинуть.
                                      Ответить
                                      • запахло дождём юнити

                                        > в гейдеве наследовать танчики от машинок точно было бы идеально
                                        - в гейдеве вон даже две формы одного юнита это разные энтити (привет, старкрафт)
                                        Ответить
                                      • ECS взлетел, потому что с одним и тем же танчиком может происходить слишком много всего.

                                        По нему ползёт букашка, а сам танчик ползёт на врага.

                                        Пихать все эти знания в танчик тупо. В результате получается, что у таничика есть просто ID, какие-то метаданны, и с ним работает две независимые системы -- танчик и букашка.

                                        Я даже видел CMS с такой идеологией (еще за долго до того, как появился этот термин): там из коробки было понятие "страница", а каждый плагин привязывал к ней свою метадату и как-то обрабатывал.

                                        Зато для мелких игр (где танчик сам себя умеет и рисовать, и стрелять) ООП в самыйраз
                                        Ответить
                                        • Он взлетел ещё и потому, что он тупо быстрее. И данные локальнее лежат, и один и тот же код для них выполняется.
                                          Ответить
                                          • Ну про быстрее это скорее к Data-Oriented:

                                            https://gamesfromwithin.com/data-oriented-design

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

                                            а ООП предлагает распологать данные совсем не так)
                                            Ответить
                                            • поясните для колхозников, по ссылке мне ходить лень

                                              что такое удобно располагать данные и почему ООП их так не располагает?
                                              Ответить
                                              • Попробую на пальцах (но лучше почитать, конечно)

                                                У танчика есть координаты на экране, модель, повреждение, скорость, еще 100500 параметров.

                                                ООП предлагает сделать тебе класс, и всех их сложить туда.

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

                                                В Data-Driven подходе у тебя будет структура, в которой будут массивы моделей, массивы повреждений итд.

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

                                                Это позволит тебе не прыгать через лишние данные, а значит не забивать кеш процессора говном, не обманывать префетчер итд.

                                                Иными словами ООП это массивы структур
                                                А DOD это структура массивов.

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

                                                Данные должны лежать в царском массиве, потому что последовательный доступ к памяти — круто.

                                                > и почему ООП их так не располагает?

                                                Потому что инстансы класса нельзя скласть в царский массив, коду приходится ходить по ссылкам, и это не ня.
                                                Ответить
                                            • О том и речь. ECS (у него много ипостасей, юнитивская не всеми считается каноном) по совместительству является data oriented, ну или его проще сделать таковым, в то время как OOP — невозможно.
                                              Ответить
                                      • 99% примеров наследования "на пальцах" — примеры, где наследование нахуй не нужно. Вообще, глубокая иерархия — частый признак того, что в коде говно. Достаточно посмотреть на iostreams.
                                        В гейдеве для достаточно какой-нибудь Entity для рендеринга, от него Doodad для всяких кусков ландшафта и Unit для интерактивных объектов, всё остальное достигается настройкой соответствующих объектов.
                                        Ответить
                                        • >обще, глубокая иерархия — частый признак того, что в коде говно

                                          наследование вообще очень опасная штука. Наследовать интерфесы (pure virtual классы) хорошо и правильно.

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

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

                                              -- Как называется жительница Алабамы, которая бегает быстрее брата и отца?
                                              --Девственница
                                              Ответить
                                  • Согласня, ня очень няглядный пример. Можня привести классический ООП-похоронный:
                                    open class Rectangle(private var h: Double, private var w: Double) {
                                        fun area() = h * w
                                    
                                        open fun stretchH(factor: Double) {
                                            this.h *= factor
                                        }
                                    
                                        open fun stretchW(factor: Double) {
                                            this.w *= factor
                                        }
                                    }
                                    
                                    class Square(side: Double) : Rectangle(side, side) {
                                        override fun stretchH(factor: Double) {
                                            throw NotImplementedError()
                                        }
                                    
                                        override fun stretchW(factor: Double) {
                                            throw NotImplementedError()
                                        }
                                    }

                                    https://en.wikipedia.org/wiki/Circle–ellipse_problem
                                    Ответить
                              • > иметь несколько одновременно

                                Одновременно уже только через эмуляцию ООП рантайм полиморфизм, да.
                                Ответить
              • S: Single responsibility principle. Один модуль отвечает за одну задачу. Драйвер видеокарты не шлёт емейлов.

                O: Open/Closed: Я могу добавлять новые файловые системы в Linux описывая их на "си", ничего внутри ядра не трогая

                L: LSP: Я могу передать в функцию, ожидающую указатель на callback, любой подходящий callback, функция ничего не заметит

                I: ISP: У меня много хедеровских файлов, каждый для своей задачи.

                D: DIP: Разумеется, хороший код зависит от контрактов, а не от конкретных реализаций. Могу собраться с libc, а могу с мюслями
                Ответить
      • [quote]
        Фиксированное число горутин обработчиков, читаюших канал задач, будут качественно лучше и быстрее, чем одна задача — одна горутина.
        [/quote]

        2022: рекомендуется использовать пул горутин
        2023: рекомендуется не споздавать горутины врручную, а пользоваться экзекутором, котоый управляет пулом
        2024: кокорутины это как корутины, но более легкие.
        Ответить
        • То ли дело эрланг. Там как сделали изначально 1 задача = 1 "процесс", так и живут. Никто не изобретает новые корутины, пулы и экзекуторы насколько я понимаю.
          Ответить
          • Пулы таки изобретают, чтобы системные ресурсы или какие-нибудь соединения с постгрёй экономнее использовать. Но бизнес логика строго разбита на отдельные процессы, как правило, да.
            Ответить
          • Любители корутин уже потихоньку тяготеют к акторам

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

            Это называется channel в котлине, например

            Так что скоро они изобретут эрланг
            Ответить
        • На говнокоде нет тега [quote]
          Ответить
      • какой хенджоб )))
        Ответить
    • https://m.habr.com/ru/company/funcorp/blog/558412/

      TL;TR: джава копирует то, что делает котлин, и скоро будет уметь тоже самое, и котлин станет примерно также нужен, как CoffeeScript.

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

      Или что Rust заменит.

      Или что питон.
      Ответить
      • У го и раста самые токсичные комьюнити, имхо... Даже браться за эти языки не хочется, хоть в целом они и неплохи.
        Ответить
        • если браться за язык не хочется из-за коммьюнити, то, значит, нахер он тебе и не всрался

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

            Делаешь ты такой охуенный веб-сервер на расте, а потом на тебя налетает толпа и заёбывает выпиливанием unsafe.

            Будет ли желание писать и делиться кодом в таких условиях?

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

              всё ещё используешь слово master? -> готовься зашивать сраку
              мало негров в команде? -> готовься зашивать сраку
              табы вместо пробелов? -> готовься зашивать сраку
              нескучные обои? -> готовься зашивать сраку

              хомячьё ринулось на гитхаб ради звёздочек и лишней строчке в своём резумэ, но какое отношение это имеет к тому, "что на языке можно сделать"?
              Ответить
              • > мало негров в команде?
                У меня всё с этим нормально — негров целая плантация.
                Ответить
            • я к тому, что "писать на языке" != "делиться кодом"

              откуда вообще такие заключения
              Ответить
              • Что значит "делиться"? Фейсбук имеет отделы людей которые фуллтайм лабают опенсорс, даже в проприетарным говне в том что ты напишешь люди будут годами копаться
                Ответить
                • для социализации и удовлетворения потребности sharing is caring есть способ гораздо проще, это - варезная сцена
                  Ответить
              • Ну не всю же жизнь проприетарщину ебашить, боясь выйти из шкафа?
                Ответить
                • с точки зрения продукта - какая разница? если отставить в сторону идеологию
                  Ответить
                  • Если мы говорим о коммерческом продукте с открытым кодом:

                    1) Публичное ревью полезно для кода. Если ты не исповедуешь security by obscurity, конечно.
                    2) Можно заработать доверие юзеров, все карты открыты.
                    Ответить
                    • кто будет делать публичное ревью проекта с 100000+ LoC? у кого, кроме непосредственных авторов, есть такая возможность?

                      > доверие юзеров
                      - доверие юзеров не подорвали даже анб-шные закладки и rm -rf / лол
                      Ответить
                      • не думаю, что у авторов есть такая возможность
                        чукча как бы не читатель
                        Ответить
                • ебашить проприетарщину примерно на порядок производительнее, чем делать вид что шкодишь пока босс комиссар делает вид, что платит морально вознаграждает за это

                  в конце концов можно же завещать вывалить содержимое твоего сорссейфа на ничего не подозревающую публику

                  а так надо ходить на партсобрания, волноваться за ленчуемых негров и краммить цє таты маркса
                  Ответить
              • К сожалению, no man is an island. Ты будешь общаться с людьми, которые пишут на том же языке. На работе, на конференции, пытаясь зарепортить проблему в опенсорс либу, которой пользуешься.
                И выбор ЯП реально влияет на твоё окружение.
                Я работал с функциональщиками (очевидно), сишничками-драйвовичками и джава мэнами.

                Функциональщики как правило заинтересованы в программировании и технологиях, т.к. нормальному человеку нецелесообразно учить эти ваши хаскели. С ф-анальщиками можно перетереть про кучу интересных технических вещей, у большинства есть какое-то интересное хобби, будь то майнинг на FPGA, до того, как это стало мейнстримом, эмуляция PDP-10, и т.д.

                Джава мэны, напротив, ничем кроме илитных сортов пива и вина, плохого оранжевого человека и нового стула на дачу не интересуются. Потому что они тупо прочитали, что джава — это бохато, а программирование им побоку.

                А теперь представь, что будет, если работать в одной команде с растовщиками.
                Ответить
                • > Функциональщики как правило заинтересованы в программировании и технологиях
                  - какой нахрюк ))) илитка!

                  вы тут мыслите категориями деталей реализации (не только в этой ветке, а на ГК глобально и ежедневно), а я уже не в первый раз предлагаю мыслить категориями продукта

                  если бы у Борманда была идея продукта и раст или го под неё очешуенно подходили бы, то было бы Борманду дело до пачки мудаков из какого-то там коммунити?

                  если у Борманда нет идеи продукта, а хочется просто пописать на новом йезычке, то зачем это сразу кому-то показывать?

                  это вообще основная проблема современности: сразу бежать что-то показывать, даже когда ещё ничего нету

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

            Подправил тебя немного.

            > потому что главное это то, что на языке можно сделать

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

            > а не мнение каких-то левых людей

            Как раз-таки к их мнению ты будешь прислушиваться, ведь этих левых людей, пришедших в «Go» по причине того, что на «Go» сможет писать даже обезьянка с интеллектом Индуса, мейнтейнерам языка будет слышно гораздо лучше тебя, т.к. их больше. Потом не удивляйся, если ты больше не сможешь поддерживать свой «продукт», из-за того, что в новой версии стандарта вместо условных генериков добавят оператор «=(?!)=» для удобного высирания HTML прямо в окно броузера.

            Можешь, конечно, привести какую-нибудь аналогию про забивание гвоздей микроскопом, но реальность зачастую такова, что есть несколько молотков. Одним, под названием «Ru-PHGo-st», ты управишься на пару минут быстрее, но отобьёшь себе все пальцы, а в самом конце железная балда вообще отлетит тебе в лоб. А другой молоток, с красивым названием «CNim++skellq», во всём лучше, просто немного тяжелее и не всякая обезьяна сможет им пользоваться, что безусловно ему в плюс, ведь не придется работать с обезьянами.
            Ответить
        • > го и раст
          > в целом они и неплохи

          Ах, если бы они ещё и были неплохи!

          «Go» – слегка улучшенная версия «РНР», в которой все друг другу вешают лапшу на уши. «Rust» – просто секта. При этом вся хвалёная безопасность ржавчины больше похожа на решето, в котором заделали половину дырок. Нуу, если ввести принудительный RAII, принудительный static_cast для арифметики и принудительные умные принтеры, то и «С++» будет безопасным супер языком, на который нужно срочно всё переписать. При этом кодить сможет даже обезьянка, т.к. ОГРАНИЧЕНИЯ.
          Ответить
          • > кодить сможет даже обезьянка

            Если сможет побороть боров-чекер и не зашквариться об unsafe...
            Ответить
        • У го тупое коммюнити, потому что состоит их пыхобыдла
          А я про раст я ничево не знаю
          Ответить
          • > У го тупое коммюнити, потому что состоит их пыхобыдла

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

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

              Пыхеры еще иногда любят писать статьи типа: "Сейчас я научу вас основам грамотного использования ООП"
              class MySQL {
               function mysql_real_escape($query) {
                  return mysql_real_escape($query);
                }
                function error($error) {
                 echo "<b>$error</b>";
                }
              }
              
              $mysql = new MySQL();
              $mysql->mysql_real_escape("SELECT * FROM Users where user_id=".$_GET['user_id']);


              В других языках так не принято.

              Впрочем, гошники, как я понял, любят делать руками то, что нужно бы автоматизировать, и гордятся этим: чем больше ручной работы -- тем понятнее код
              Ответить
              • Явное лучше неявного. Дженерики были добавлены специально, чтобы проверить, насколько сильна наша воля и стремление к явности.
                Ответить
      • Питон сам себя-то с трудом (почти) заместил.
        Ответить
      • > Со временем Kotlin превратится в ужасную разбухшую помойку формата «куча-способов-сделать-одно-и-то-же».

        Прямо как <<C++> > ?
        Ответить
        • На любом тьюринг-полном языке можно написать интерпретатор языка, в котором одно и то же можно будет сделать множеством способов, поэтому ни в одном тьюринг-полном языке нельзя делать всё лишь одним способом.
          Ответить
        • Скорее как питон

          В С++ всё таки есть правило "не плати за то, что не юзаешь"
          А в JVM платишь за всё и всегда
          Ответить
          • > В С++ всё таки есть правило "не плати за то, что не юзаешь"

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

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

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

                Хмм, а это случайно не "ужасная разбухшая помойка формата «куча-способов-сделать-одно-и-то-же»." ? Возвращаясь к пункту https://govnokod.ru/27432#comment629148
                Ответить
                • Это всё таки не совсем одно и тоже, это разные уровни абстракции, и более того: совсем уж старое ненужное говно вроде auto_ptr пытаются депрекейтить и выпиливать.

                  Хотя некоторые вещи в крестах имеют сишные аналоги (FILE* и iostream какой нить) и это мерзко, конечно

                  Алсо, крестовик обычно знает "как правильно": к примеру он точно знает, что make_юник/шарик лучше ручного new.

                  В питоне же некоторые вещи (тупла и неймдтупла к примеру или itertools и list comprehension) просто тупо продублированы
                  Ответить
                  • > он точно знает, что make_юник/шарик лучше ручного new
                    Хи-хи.
                    Ответить
                    • Разве не вы тут рассказывали, что код с "new" всегда выглядит подозрительно, примерно как reinterpreter_cast ?

                      Или ты о том, что бывают спешл кейсы типа плейсмент нью, когда ты там свои арены пишешь?
                      Ответить
                      • В современных крестах создавать умные указатели через make_* ня имеет особого смысла, кроме стилевого. Одняко у make_shared есть глубокие и няочевидные грабли, о которых я нядавня тут уже писала: https://habr.com/ru/post/509004/. Вкратце, shared_ptr, созданный через make_shared, ня освободит память, выделенную под сам объект, пока ня будет удалена последняя слабая ссылка, в отличие от shared_ptr, созданного через вызов конструктора.
                        Ответить
                        • Как же ты создаешгь указатели? Явно вызывая конструктор, и передавая объект в конструктор укзаателя, и умный компилятор его не копирует?
                          Ответить
                          • Передавая указатель на созданный объект в конструктор shared_ptr. Или всё же используя make_shared, если тебе это поведение ДЕЙСТВИТЕЛЬНО нужно.

                            Кстати, неплохо было бы иметь возможность создать новый объект через протухший weak_ptr на месте старого, с оживлением всех остальных weak_ptr.
                            Ответить
                            • >Передавая указатель
                              а указатель вы как получаете?
                              Ответить
                              • auto xPtr = std::shared_ptr(new X(arg1, arg2, arg3));
                                Ответить
                                • а чем это лучше емплейснутого создания объектов?

                                  Я думал, что вы так делали до C++17, когда емплейса не было (пушо не было форвад или чего там не было, не помню)

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

                                    1. Проблема со слабыми ссылками.
                                    2. Проблема с нявозможностью предоставить собственный удалитель deleter.
                                    3. Проблема с нявызовом перегруженного new (make_shared в няго ня умеет).
                                    4. Проблема с нявозможностью вызова приватного/защищённого конструктора (няиболее актуальня в случае всяких factory method).
                                    Ответить
                              • Из фабрики указателей на объекты, очевидно же!

                                --------
                                В комментариях к статье вообще вакханалия творится, половина по диагонали прочитала, и понятия не имеет, о чём там говорится.
                                > ситуация 2: я шарю вектор на 10к элементов и обращаюсь к нему редко. Здесь верно все то, о чем в статье написано
                                > std::make_shared лучше подходит для малых объектов(до 64 — sizeof(control_block)) и частых обращений

                                Размер вектора обычно 24 байта или около того. Размер контрольного блока — где-то столько же. Сам себе противоречит...
                                Ответить
                                • Мне кажется, что если накладные расходы на контрол блок для тебя важны, то значит ты уже в таком лоулевеле, что тебе может быть вообще не нужна ни куча, ни сложные объекты.
                                  Ответить
                      • > Разве не вы тут рассказывали, что код с "new" всегда выглядит подозрительно, примерно как reinterpreter_cast ?

                        Как тогда выглядит код с "malloc"?
                        Ответить
                        • Как код на С.
                          Ответить
                          • В этом и заключается умение писать на "C/C++".
                            Ответить
                          • Я у себя в контроллерах вполне без "malloc" умею обходиться. Именно поэтому я за контроллеры.
                            Ответить
                            • Ты там небось единственный процесс?
                              Ответить
                              • У меня нет никаких "процессов". Есть "треды", но там никаких "malloc" не требуется, потому что заранее известно и понятно, какие треды сколько памяти юзают.
                                Ответить
                        • код на плюсах с малоками выглядит ОЧЕ подозрительно
                          Ответить
          • > В С++ всё таки есть правило "не плати за то, что не юзаешь"

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

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

                  Вроде есть bytearray для этово
                  Ответить
                  • > иначе бы как они сделали гетерогенные листы

                    В PHP "значение" вроде бы юнион. Так что на числа, булы и литералы он память вроде не аллоцирует. Х.з. как в питоне.
                    Ответить
                    • То есть какая-то хрень размером, например, 4 байта, из которых 1 бит показывает является ли это адресом или собссно значением?
                      Ответить
                      • > 1 бит

                        Больше... Там как бы не по 16 байт они.
                        Ответить
    • Ладно, вот вам клип про куриц
      https://youtu.be/mxzgwJ8tSE0
      Ответить
      • Ты давно вуз окончил?
        Ответить
      • Спасибо большое, что поднял мне настроение этим чудесным клипом, МАКАКА! («uwu» писать не буду, чтобы не начался спам).

        https://youtu.be/yzC4hFK5P3g
        Ответить
        • Тогда я и "owo" не буду писать, чтобы не продолжать спам.
          Ответить
        • kpop еще хуже чем uhu

          https://www.youtube.com/watch?v=dBMr02_5ohU
          Ответить
          • Это такое ТОПТ слушает. И, возможно, играет на своей гитаре.
            Ответить
            • чота сомневаюсь что такое слушает
              https://www.youtube.com/watch?v=MFGwCy7ojY4
              Ответить
      • https://www.youtube.com/watch?v=EhMFBLDXgaY
        Ответить
        • https://m.vk.com/video228419838_166947942

          В деревне своя атмосфера | Мужик трахает велосипед | Harlem Shake Деревня Дураков | +100500 Кувалда | Петушиные пляски
          Ответить
        • gaY
          Ответить
          • алсо это же новомодный рикролл когда жертву приглашают плясать под это, а сами съебывают из кадра и угорают над ним
            Ответить
    • Перекат!

      https://govnokod.ru/27435
      https://govnokod.xyz/_27435/
      Ответить
    • https://ic.pics.livejournal.com/zheniac/84387287/480828/480828_900.jpg
      Ответить
      • Перекат!

        https://govnokod.ru/27435
        https://govnokod.xyz/_27435/
        Ответить
        • остерегаюсь подделок.
          Ответить
          • берегите себя и своих близких
            Ответить
            • Хватит флудить и троллить в этот тред, некропостинг запрещен правилом 1828 раздела 972, подпунктом "ф" пункта "ц"! Пока выношу вам предупреждение. Ещё три предупреждения – и бан на 15 минут. Вы мешаете корректной работы форума!!
              Ответить
              • Хрюкни
                Ответить
                • Вынес тебе предупреждение, проверяй.
                  Ответить
                  • Как он проверит, ты же вынес. Вноси обратно.
                    Ответить
                    • И тебе тоже вынес предурпеждение за некропостинг в закрытой теме и троллинг модератора флеймом! Теперь у вас по одному предурпеждению. Ещё два – и я отправлю электронную почту администратору форума, чтобы он вынес бан по причине флуд.

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

                          Бан за оскорбление модератора.
                          Ответить
                          • > Бан за оскорбление модератора.

                            Модераку на гиляку!
                            Ответить
                          • бля реально не могу писать больше
                            Ответить
                            • Можешь писать с моего акка
                              Ответить
                            • мочи нет?
                              Ответить
                              • В мерседес въехал "Запорожец".Из мерса выходят четыре лысых бородатых
                                мужика и говорят деду сидящему в запорожце,ну что дед попал,плоти 5000$,
                                дед им говорит не связывайтесь с мной мужики я колдун,а те ему какой
                                колдун плоти бабки,тот из бордочка дастает деьги протягивает им
                                и говорит нате обосритесь.Неделю срут,две недели срут.Приезжают они
                                обратно к деду,дают обратно 5000$ и плюс еще 5000$,и говорят на дед,
                                но сделай чтоб мы не срали,тот взял деньги и говорит ладно мужики
                                не срите.Неделю не срут,две недели не срут.Пришли к бабке знахарке
                                и говорят,слушай бабка сними заговор колдуна.Бабка им говорит этот
                                колдун очень сильный,так что снятие заговора будет стоить порядком
                                денег,те мол плотим бабка.Та ворожила-ворожила и говорит все сняла.
                                Мужики ее спрашивают точно бабка,бабка им говорит =НЕ ССЫТЕ МУЖИКИ=.!!!
                                Ответить
                                • Этому анекдоту лет на 10 больше, чем тебе
                                  Ответить
                                  • А на сколько ему больше чем мне?
                                    Ответить
                                    • В 90-е были такие брошюрки "шесть соток смеха": там были сканворды и анекдоты такие вот
                                      Ответить
                                      • Ну я знаю такие. на даче до сих пор существует отрывной календарь с анегдотами...
                                        Ответить
                                        • угу, в электричке на дачу его продают вместе с пивом, стельками, и мороженным
                                          Ответить
                                          • раньше было лучше

                                            можно было купить в переходе где-нибудь между Садовой и Сенной сканворды и панораму и заодно третий дум не бит не крашен
                                            Ответить
                                      • https://i.postimg.cc/nz5Hgt5r/90-gvn.jpg
                                        Ответить
                                  • любому анекдоту на 10 лет больше, чем ему

                                    это апория Лолечки
                                    Ответить
                      • uwu
                        Ответить
                        • Нарываешься?
                          Ответить
                        • PolinaAksenova назначена модератором темы. Комментарий модератора: owo
                          Ответить
                        • Нужно срочно засыпать тред соединениями борманда, чтобы предотвратить цепную реакцию!
                          Ответить
                          • В старый оффтоп скучно увукать и овокать. Гораздо интереснее увукать и овокать в свежий, целомудренный оффтоп. Он ещё потом так смешно перекатывается! =^^=
                            Ответить

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