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

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    // And then I replaced the idiomatic Rust code for working with block like
    
        for (dline, (sline0, sline1)) in dst.chunks_mut(dstride).zip(tmp.chunks(TMP_BUF_STRIDE).zip(tmp2.chunks(TMP_BUF_STRIDE))).take(h) {
            for (pix, (&a, &b)) in dline.iter_mut().zip(sline0.iter().zip(sline1.iter())).take(w) {
                *pix = ((u16::from(a) + u16::from(b) + 1) >> 1) as u8;
            }
        }
    
    // with raw pointers:
    
        unsafe {
            let mut src1 = tmp.as_ptr();
            let mut src2 = tmp2.as_ptr();
            let mut dst = dst.as_mut_ptr();
            for _ in 0..h {
                for x in 0..w {
                    let a = *src1.add(x);
                    let b = *src2.add(x);
                    *dst.add(x) = ((u16::from(a) + u16::from(b) + 1) >> 1) as u8;
                }
                dst = dst.add(dstride);
                src1 = src1.add(TMP_BUF_STRIDE);
                src2 = src2.add(TMP_BUF_STRIDE);
            }
        }

    What do you know, the total decoding time for the test clip I used shrank from 6.6 seconds to 4.9 seconds. That’s just three quarters of the original time!

    And here is the problem. In theory if Rust compiler knew that the input satisfies certain parameters i.e. that there’s always enough data
    to perform full block operation in this case, it would be able to optimise code as good as the one I wrote using pointers or even better.
    But unfortunately there is no way to tell the compiler that input slices are large enough to perform the operation required amount of times.
    Even if I added mathematically correct check in the beginning it would not eliminate most of the checks.

    https://codecs.multimedia.cx/2021/05/missing-optimisation-opportunity-in-rust/

    Запостил: 3.14159265, 17 Августа 2021

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

    • Начнём с того «идиоматический код» выглядит как дrustня, пахнет как дrustня и работает дrustня.

      А второй кусок и читается гораздо приятнее, и работает куда быстрее.

      > total decoding time for the test clip I used shrank from 6.6 seconds to 4.9 seconds
      Замена одного небольшого цикла ускорила ВЕСЬ декодер на 35%.

      Именно поэтому рассказы что у нас компиляция тупит из-за «навороченного супероптимизирующего конпелятора» — тупая пропаганда для подростков.
      Ответить
    • Overall, there are a few features and design decisions that limit Rust compilation speed:
      
          Macros: Code generation with macros can be quite expensive.
          Type checking
          LLVM: that's the default compiler backend for Rust, where a lot of the heavy-lifting (like code-optimizations) takes place. LLVM is notorious for being slow.


      Постоянно проигрываю с этого сектанткого аргумента «LLVM is notorious for being slow».

      Напоминает плохого танцора, которому то мешали туфли, то некоторые части тела.

      Коли не нравится LLVM, зачем было его воровать? Напишите себе быстрый компилятор на божественном Ruste, а мы посмеёмся.

      При том что сам аргумент о тормознутости шланга абсолютно лживый. Обычно компилю clang/llvm поскольку собирает он быстрее чем gcc.
      Ответить
      • > clang

        Шланг и гцц компилят изменившиеся файлы. А растишки вроде как весь проект целиком скармливают в LLVM. Вместе с зависимостями.
        Ответить
        • Для глобальной пессимизации, или иначе какие-нибудь генерики не взлетят?
          Ответить
      • 2018 год: Historically, the compiler has compiled your entire project, no matter how little you've changed the code. The idea with incremental compilation is that you only need to compile the code you've actually changed, which means that that second build is faster.

        2021 год: Incremental compilation is off by default for release builds, so few production builds should be affected. Miscompilations that can arise from the bugs in incremental compilation generate incorrect code in final artifacts, essentially producing malformed binaries, which means that in theory any behavior is possible. In practice we are currently only aware of one particular known miscompilation, but bugs due to incremental are notoriously hard to track down: users frequently simply rebuild after some light editing if they see unexpected results from their binaries, and this often causes sufficient recompilation to fix the bug(s).
        Ответить
        • Какой инкремент )))

          > unexpected results from their binaries
          Воть вить как. А я то думал там мате-ма-ти-че-ски доказанная кукарректность.

          У дrustунов сложность разбора чуть ли не O(N²). Но во всём виноват понятно дело llvm.
          Ответить
        • > users frequently simply rebuild after some light editing

          Кстати, это вполне распространённая практика на FPGA, когда пытаешься впихнуть невпихуемое да ещё чтобы на высокой частоте работало... У альтеры даже тула для брутфорса seed'а прилагается и кнопочка "мне повезёт".
          Ответить
          • У нас в одном проекте на джава это тоже распостраннная практика. Пока там депенденсы какие-то посчитаются, проще фул ребилд сделать
            Ответить
            • > депенденсы

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

                типа не надо было пересобирать, а пересобрали и получили багор?
                Ответить
                • Когда какая-нибудь хуй-ня в глубине проекта не собирается при быстрой (инкрементальной) сборке и потом всё глючит и пидорасит. Обычно лечится полным ребилдом.
                  Ответить
                  • Это обычно анскильный autotools делает полный ребилд при реконфигурации .

                    Cmake в этом плане гораздо лучше.

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

                    Меня успокаивает только одно: Still better than rust.
                    Ответить
                    • Да хуй с ним, полный ребилд не так страшен, как некорректная сборка...

                      Проблема в том, что есть ситуации, когда зависимость от какого-то файла или таргета указать забыли, но так вышло, что она удовлетворена. В итоге меняешь файл, а система сборки какой-то кусок проекта не пересобирает. На выходе получается UB.
                      Ответить
              • Nix отчасти. Но лучше себе палец отпилить тупой пилой, чем им пользоваться.
                Ответить
                • Тебе же вроде нравился никс?
                  Ответить
                  • Ты путаешь с Романом.
                    Ответить
                    • В смысле тебе нравится Роман, а не nix?
                      Ответить
                    • Вы же оба ёбнутые на функциональщине
                      Ответить
                      • А бывают ёбнутые на императивщине?
                        Чем больше явных циклов -- тем лучше.

                        Аа!! Четвёртая джава! Я отеку от того, что для преобразования листа Integer в массив интов нужно явно писать цикл!

                        Есть такие?
                        Ответить
                        • ... раздался пронзительный голос из-за парты.

                          Но пацаны, как всегда, не обратили внимания на это хаскель-отребье. Пусть беснуется, что с него взять?
                          >>джава
                          >> листа Integer в массив интов
                          Выбрось каку. Это кака, выбрось! Фу!
                          Ответить
                          • А я люблю обмазываться не свежим программным обеспечением, и дрочить. Каждый день я хожу по земле с черным мешком для мусора и собераю в него все List<Integer> которое вижу.
                            Ответить
                            • Ну серьёзно. Привёл пример убогости Жабы (кстати скоро там напилят primitive value-types)?

                              Причём список ну и ладно. А тут же массив интов (!) явно для экономии памяти и байтоёбства.
                              И в том же предложении писать про тяжеловесные лямбды, которые в несколько раз медленее цикла.
                              Ответить
                              • Я привел пример языка без зайчаток функциональщины просто.

                                Ну хочешь на QBasic поменяю? Или на BP
                                Ответить
                              • > тяжеловесные лямбды

                                Жид не справится с инлайном?
                                Ответить
                                • Ну раньше не справлялся. Хз как сейчас.

                                  Но по свежим бенчам на phoronix 8я ява держится бодрячком и бегает быстрее всех.
                                  Так что сомневаюсь что стало лучше.
                                  Ответить
                                • Опять мы приходим к тому о чём я уже говорил.

                                  https://www.overops.com/wp-content/uploads/2020/09/functional.benchmark.png

                                  Как мы видим функциональная мразь опять обосралась, но с неё так никто за это и не спросил.
                                  Ответить
                                • https://yomama.simtech-ag.ch/blog/java/streamsvsfor/measurevalues-1-100.png

                                  https://yomama.simtech-ag.ch/blog/java/streamsvsfor


                                  https://image.slidesharecdn.com/javanturav4-javaandlambdasandstreams-aretheybetterthanforloops-aleksanderradovanbrankomihaljevi-170217080007/95/javantura-v4-java-and-lambdas-and-streams-are-they-better-than-for-loops-aleksander-radovan-branko-mihaljevi-22-638.jpg


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

                                    Куда лучше, чем с 100500 императивных строк
                                    Ответить
                        • > А бывают ёбнутые на императивщине?

                          Царь.
                          Ответить
                      • define `ёбнутый'
                        Я признаю, что в некоторых задачах (BLAS и подобное) функциональщина нецелесообразна.
                        Вот у ООП задач нет, тут всё ясно.
                        Ответить
                        • > у ООП задач нет

                          А как же написание статей о костылях, которые нельзя выразить средствами языка паттернах?
                          Ответить
                        • >Вот у ООП задач нет, тут всё ясно.
                          Гуи всякие, не?

                          Checkbox extends Button extends Widget, не?
                          Ответить
                          • Вот только гуйню последнее время шатает в сторону реактивки, а это уже фп...
                            Ответить
                            • Они умудряются это мешать между собой. Там есть и ООП, и реактивность
                              Ответить
                              • > Там есть и ООП

                                Привычка.
                                Ответить
                                • Хм. Никогда не думал что говноедство может войти у людей в привычку.
                                  Ответить
                                  • > говноедство

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


                                      Я за Вирта

                                      Вообще я мог бы сыграть за ООПидоров малость, но мне стыдно:-/
                                      Ответить
                                      • и какие новые модные «объектно-ориентированные» средства были включены в языки программирования за последние лет двадцать?
                                        Ответить
                                      • > Вообще я мог бы сыграть за ООПидоров малость, но мне стыдно:-/

                                        Мне даже в полит-тредах не было стыдно за всяких питухов заходить. Но чтобы за ООП... Нет.
                                        Ответить
                                        • > Мне даже в полит-тредах не было стыдно за всяких питухов заходить
                                          ++

                                          Вот кстати у wvxvw это очень недурно получалось.

                                          Он заходил с того что в C++/Java/C# неправильное, убогое ООП. А нормальное например в CL, где есть мультиметоды.

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

                                          Виртуоз.
                                          Ответить
                                          • wvxvw сливал в хламину «MVC», потому что у ма-те-ма-ти-ков нет никаких «view» и «controller».
                                            Ответить
                                            • > wvxvw сливал в хламину «MVC»

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

                                              Жаль что хаброскоты это не читали.
                                              Ответить
                                              • Нашёл начало:
                                                https://govnokod.ru/16298#comment239203

                                                «А MVC это что-то хорошее? Сплошное недопонимание и суеверия. За MVC не стоит никакой теории, если сравнивать, даже у криптозоологии есть больший научный базис, чем у этой дурацкой затеи.»
                                                Ответить
                                                • он там двумя комментариями ниже практически топит за ООП между прочим
                                                  Ответить
                                            • `MVC` устарел же
                                              Ответить
                                              • Что вместо него?
                                                Ответить
                                                • Сначала был MVP, потом MVVM. Есть еще MVI.

                                                  Вот тебе бристольская шкала паттернов
                                                  https://habr.com/ru/post/344184/
                                                  Ответить
                                                  • «MVCS» и «LDVCS» не хотите?

                                                    https://glossar.hs-augsburg.de/Model-View-Controller-Service-Paradigma
                                                    https://glossar.hs-augsburg.de/Logic-Data-View-Controller-Service-Paradigma

                                                    А «Джагу-джагу» с её «TVM»?

                                                    А «HMVC» (hierarchical model-view-controller)?

                                                    https://en.wikipedia.org/wiki/HMVC
                                                    Ответить
                                                    • ООПидары напоминают мне ранних христиан.
                                                      Те тоже могли столетиями обсуждать триедин ли бог

                                                      зы: у джаги MTV
                                                      Ответить
                                                      • > ООПидары напоминают мне ранних христиан.
                                                        > Те тоже могли столетиями обсуждать триедин ли бог

                                                        https://i.imgur.com/lq2LSAA.png
                                                        https://twitter.com/grady_booch/status/1028020194227060738
                                                        Ответить
                                                      • > Те тоже могли столетиями обсуждать триедин ли бог

                                                        В итоге дешёвки слились, и легли под всяких монофизитов, напустив к себе исламистов.
                                                        Ответить
                                                    • > Logic-Data-View-Controller-Service-Paradigma

                                                      В ООП архитектур интерактивного приложения n интерпретируется как количество нагромождений (наслоений) множества из n питулей. Например, для множества {Model, View, Controller, Service, Paradigma}:

                                                      MVVCP MVCSP MPCSP MCCSP
                                                      CVVCP CVCSP CPCSP SCCSP
                                                      MVMCP MVPSP MPPVP CCVSP

                                                      Мне ясно как спроектировать вариации естественно шанс есть чем надем на 4 и чем 64, но хотелось улучшить еще шанс потому:
                                                      мы возьмем рахитектуру 4 разположение 8, унас получается 8!/4!=MVCCS
                                                      1234 5678
                                                      мне пожалуста 1680 вариаций данной архитектуры.
                                                      Ответить
                                                      • > MVMCP MVPSP MPPVP CCVSP

                                                        D:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC ;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CC DCLCSWRPWPDTLOCRSDRCWDWO;;;BA)

                                                        g: "Windows SDDL"
                                                        Ответить
                                                        • Мне эта хуйня однажды приснилась... после того, как я пытался выяснить, почему служба не стартует.
                                                          Ответить
                                                          • К Рамануджану во сне приходила богиня Кали, а инканусу — богиня кала.
                                                            Ответить
                                            • > wvxvw
                                              > у ма-те-ма-ти-ков

                                              ХАХАХАХАХА

                                              при всём уважении к израильтянину, но как-то экшонстриптиз слабо вяжется с ма-те-ма-ти-кой
                                              Ответить
                                              • Так этож ``wvxvw``, он поехавший странный
                                                http://www.flasher.ru/forum/member.php?u=37925
                                                Ответить
                                                • я знаю, кто это


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


                                                  многообещающее начало
                                                  Ответить
                                                  • нашел и скопировал его вместе с номерами строк
                                                    Ответить
                                      • > Вирт считает, что ООП — не более чем тривиальная надстройка над структурным программированием

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

                                        Вечно завидовал более успешным языкам: гнал на Сишку, гнал на C++, гнал на Бейсик.
                                        При этом самый жопулярный язык, с синтаксисом унаследованным от Вирта ­— это Delphi...

                                        Когда его предложение Ады слили на конкурсе, они с Хоаром страшно бомбили по этому поводу.

                                        Ни один из его языков не стал мейнстримом.
                                        Ответить
                                        • Паскаль был очень даже мейнстримом в мире мака в 80-е и в ПК в 90-е
                                          Ответить
                                          • > Как Вы относитесь к языку Object Pascal, который лег в основу Delphi и какое участие Вы в нем принимали, если принимали его вообще

                                            >>Вирт: Когда вы программируете на Delphi, вы программируете на Паскале. Здесь ничего фундаментально нового нет. Но это была достаточно успешная разработка и во многих случаях помогала продвигать Паскаль. Я никак не участвовал в этой разработке

                                            «Это ООП, у кого надо ООП.»

                                            «ООП конечно хуйня, но ООП в моём Паскале — успех»

                                            Двуличная мразь.
                                            Ответить
                                            • А там вроде не было пидорских слов типа "class"?
                                              Ответить
                                              • > class

                                                В object pascal'е, насколько помню, был object. В делфи object остался как value type, а class как ссылочная хуй-ня на куче.
                                                Ответить
                                                • как struct и class в C#?

                                                  ну и говно
                                                  Ответить
                                                • Всё так.

                                                  В «Standard Pascal» не было ни class, ни object.

                                                  Object появился в «Turbo Pascal 4.0», оттуда его подхватили все реализации «Object Pascal». Его можно было создавать и на стеке, и в сегменте данных, и на куче.

                                                  Class появился в «Delphi», оттуда тоже был заимствован более новыми реализациями «Object Pascal». Добавили новую фигню вроде свойств с геттерами-сеттерами, но запретили создавать в сегменте данных и на стеке, прибили гвоздями аллокатор в куче, чтобы классами смогли пользоваться питухи анскильные. И обсыпали сахарком, чтобы не надо было писать оператор разыменования, тоже для питухов анскильных.

                                                  У Вирта ООП было только в «Модуле-3».
                                                  Ответить
                                                  • >> «Turbo Pascal 4.0»

                                                    Вру, «object» появился только в 5.0 или в 5.5, нужно уточнить.
                                                    Ответить
                                                • К слову, был проект «KOL», поддерживаемый одним энтузиастом, — замена бормандовского «VCL»:
                                                  https://ru.wikipedia.org/wiki/KOL

                                                  Владимир Кладов решил, что «VCL» тормозит, потому что в бормандовской реализации «class» много оверхеда (обязательная аллокация в куче там, где она не нужна и т. п.), поэтому переписал все компоненты на «object». Естественно, от синтаксиального сахара вроде пропертис пришлось отказаться, заменив их явными вызовами методов.
                                                  Ответить
                                            • > «Это ООП, у кого надо ООП.»

                                              > «ООП конечно хуйня, но ООП в моём Паскале — успех»

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

                                            пасцаль, ранние кресты, достаточно старая сишка и обкектив в качестве bleeding edge

                                            гвозди бы делать из этих людей
                                            Ответить
                                            • И всё это в редакторе, по мощности напоминающим notepad, на экране шириной 80 символов и высотой 40, без SO и онлайн-документации
                                              Ответить
                                              • > по мощности напоминающим notepad

                                                Автоиндент вроде уже был. И подсветка. И отладчик. Турбо-ИДЕ очень няшные же были.
                                                Ответить
                                                • подсветка из двух цветов

                                                  но подсветка до сих пор сосёт. где мой semantic highlighting в каждом редакторе?
                                                  Ответить
                                                • >80-е
                                                  TP с этим IDE вышел в самом начале 90-х, не?
                                                  Ответить
                                                  • Угу, оказывается, IDE на «Turbo Vision» вышла только вместе с «TP6» в 1990-м году. До этого там была IDE, похожая на «Кубасик», только ещё примитивнее.
                                                    Ответить
                                                    • Ну вот виите)

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

                                                      Для начала 90-х просто пиздец как круто для писюка-то

                                                      Не удивлюсь правда, если это всё в емаксе тоже уже было.


                                                      Кстати, а вот что было у яблока
                                                      https://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop

                                                      https://en.wikipedia.org/wiki/MacsBug
                                                      Ответить
                                                      • уже тогда был емакс
                                                        уже тогда был лишп

                                                        но пришли "у нас в контроллерах нет нихуя" и начались тёмные века
                                                        Ответить
                                              • Обычным разрешением было 80×25.

                                                80×50 — это был режим с анскильным шрифтом 8×8 пикселей, от которого резало глаза.

                                                Это уже в 90-е на «SVGA» появились разрешения 132 на что-то.
                                                Ответить
                                                • Как там SVGA в досовой консоли?
                                                  Ответить
                                                  • Я пользовался, брат жив. А что?

                                                    Да, по умолчанию запускалась в 80×25, надо было переключать самому в нужный режим. «Дос Навигатор» в этом режиме работал.

                                                    Насчёт борландовской IDE не помню. Вроде она хотела старые режимы с шириной 80.
                                                    Ответить
                                                    • > Да, по умолчанию запускалась в 80×25, надо было переключать самому в нужный режим

                                                      В смысле приложение переключало? Это не считается, потому что нужно все приложения патчить
                                                      Ответить
                                                      • Можно было ещё через MODE CON переключить или через сторонний софт, но приложения обычно переключали режим обратно, потому что были прибиты гвоздями к фиксированному разрешению.
                                                        Ответить
                                                        • Так то-то и оно. Приложения работали через API, предполагающий текстовый режим. Можно было вероятно заместить досвое прерывание и поддержать SVGA сосноль, но они соснули бы по причине незнания размеров экрана.

                                                          А уж если срали в память напрямую, то и вовсе пиши пропало.


                                                          Вот в прыщах и FreeBSD есть графическая консоль (в прыщах вообще издревле был fbcon).

                                                          Там приложение и не знает, на чём оно работает. Размеры может взять у структуры, связанной с терминалом через какие-то ioctl или терминальный API
                                                          Ответить
                                                          • «Турбо Вижн» срало в видеопамять, поэтому оно предварительно включало видеорежим, в котором умеет срать.

                                                            В «Дос Навигаторе» был пропатченный «Турбовижн». Он знал про «VBE» («VESA BIOS Extensions»).

                                                            А уж графических функций в «DOS» вообще не было, поэтому графические программы срали и в порты, и в память.
                                                            Ответить
                                        • Вирт не любил язык «Ада». Он считал, что её спецификация перегружена, поэтому назло создателям языка «Ада» Вирт создал «Оберон», в котором почти ничего нет.
                                          Ответить
                                          • Oberon это не только язык, но и ось, и хардварь (свой RISC проц). Вирт запилил свою TempleOS до того, как это стало мейнстримом.
                                            Ответить
                                    • Поддерживаю. Но трудно защищать позицию в которую не очень веришь.

                                      Вот с дискурсом Царя как-то проще. У него есть рациональное зёрнышко Фофмана.

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

                                          Какой прогресс )))
                                          Ответить
                                          • Однажды в сообществе .net Майки распиарили метод установки софта простым копированием (т.н "xcopy method") без троганья реестра и установщиков.

                                            Это преподносилось как новый, крутой способ
                                            Ответить
                                            • Нашу питушню можно запускать без докера!
                                              Ответить
                                              • У меня в контроллерах никакого "докера" нет вообще, просто заливаешь прошивку через программатор и всё работает, ПРЕДСТАВЛЯЕТЕ?
                                                Ответить
                                                • > У меня в контроллерах никакого "докера" нет вообще

                                                  Можешь билдить прошивку в докере чтобы не надо было ничего настраивать и ставить на хосте.
                                                  Ответить
                                                  • >Можешь билдить прошивку в докере чтобы не надо было ничего настраивать и ставить на хосте.

                                                    Но в контроллере никакого докера от этого магическим образом не появится.

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

                                                        https://github.com/Fmstrat/samba-domain
                                                        Ответить
                                                        • Я бы не стал поднимать контроллер AD на Линуксе.

                                                          Потом будешь читать ошибки ``INVALID_HANDLE`` в логах винды, делать ``sfc /scannow`` и обращаться к системному администратору )

                                                          Алсо,
                                                          https://wiki.samba.org/index.php/Windows_2012_Server_compatibility#Other_ missing_features


                                                          AD и так таит в себе много сюрпризов (кто видал USN roll-back, тот на фильмах ужасов не боится) а еще и с линуксом его мешать
                                                          Ответить
                                                          • Расскажи про usn roll-back, хочу испугаться
                                                            Ответить
                                                            • Что-то о военно-морских силах США.
                                                              Ответить
                                                            • https://mvvrus.wordpress.com/2015/03/26/usn-rollback-great-and-powerful/

                                                              https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd363553(v=ws.10)#usn-and-usn-rollback

                                                              В AD каждый объект имеет монотонно возврастающий номер версии (USN), и информацию о том, какую версию на какой соседний контролер послали.

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

                                                              Вот ты восстанавливаешь контроллер из бекапа, и у него оказывается более древняя версия какого-то объекта.

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


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

                                                              Получается split brain.

                                                              Вот как про это написино в логах:
                                                              https://mvvrus.files.wordpress.com/2015/03/event2095.png

                                                              Поскольку в мире AD без AD не работает примерно всё, то баги начинаются феерические
                                                              Ответить
                                                              • Заебатый багор
                                                                Ответить
                                                              • > split brain

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


                                                                  DC1: "У меня новая версия петуха, а у DC2 старая. Я ему сообщу, когда он будет онлайн"

                                                                  DC2: "У меня новая версия курочки, а у DC1 старая. Я ему сообщу, когда он будет онлайн"

                                                                  А вот если оба одновременно поменяют данные, то наверное победит тот, у кого более свежая версия.

                                                                  Жопа с роллбеком именно в том, что DC1 уверен, что он уже передавал данные DC2.

                                                                  А у DC2 их нет
                                                                  Ответить
                                                              • Какой анскилл ))) Поэтому я за log-based replication.
                                                                Ответить
                        • > Я признаю, что в некоторых задачах (BLAS и подобное) функциональщина нецелесообразна.

                          Функциональщина может быть целесообразной на задачах типа "BLAS" если архитектура вычислителей хорошо ложится на ФП. Например, есть такие штуки, называются "systolic array"

                          Например вот https://cplu.medium.com/should-we-all-embrace-systolic-array-df3830f193dc - там в гугловых TPU по-сути массив вычислительной хуйни, по которой прокачиваются какие-то байтики. Чем вам это не ФП?

                          Или "ФП" в массовом сознании айтишников ассоциируется с каким-то типодрочерством, зависимыми типами там всякими, Хиндли-Милнером? Так вот, это не "ФП", это "программирование на типах". В кобенандном SKI исчислении никаких "типов" нет.
                          Ответить
                          • > Или "ФП" в массовом сознании айтишников ассоциируется с каким-то типодрочерством,

                            ..с отображением одной последовательности на другую, иными словами с методом "map" у класса с коллекцией
                            Ответить
                            • https://wandbox.org/permlink/7muASNHNGX30N8kB - вот эта хуйня это ФП или не ФП?
                              Ответить
                              • Что, никто не знает?
                                Ответить
                              • Косплей на ФП.

                                В труъ ФП, к примеру, было бы идиоматичнее заюзать композицию вместо массива.
                                Ответить
                              • Ну т.е. в твоём примере не ощущается, что функция -- это first-class object.
                                -- композим функцию из кусочков
                                f = mul2 . add2 . add2
                                -- теперь лифтим её, получая функцию, которая обрабатывает списки
                                m = map f
                                -- и можем процессить её сколько угодно списков
                                r = m a
                                Ответить
                                • Ну такое я тоже могу сделать, только это надо будет что-то типа интерпретатора запиливать, ну сделать REPL еще можно. Только лениво как-то...
                                  Ответить
                                  • Да понятно, что конпелятор и рантайм любого* языка можно написать на сишке...

                                    * кроме всяких VHDL пожалуй
                                    Ответить
                                    • Да и VHDL тоже можно. Пишешь эмулятор некоторой FPGA - вот тебе и рантайм.

                                      Ну и вот кстати есть: http://ghdl.free.fr/
                                      Ответить
                                      • Да, но это ведь просто симуляция, ощущения совсем не те.

                                        А рантайм питона на няшной вполне практичен.
                                        Ответить
                                        • > Да, но это ведь просто симуляция, ощущения совсем не те.

                                          > А рантайм питона на няшной вполне практичен.

                                          А может и от питона тоже "ощущения не те", и надо делать специальную питон-машину(по аналогии с лисп-машиной), чтобы питон давал нужные ощущения?
                                          Ответить
                                  • > только это надо будет что-то типа интерпретатора запиливать <...> Только лениво как-то...

                                    Вот видишь, дяденька Пи, ленивые вычисления даже в няшную сишку на микроконтроллеры завезли.
                                    Ответить
                                    • > ленивые вычисления

                                      Это скорее "ленивое программирование".

                                      https://lurkmore.to/Копипаста:Программирование#.D0.9B.D0.B5.D0.BD.D0.B8.D0.B2.D0.BE.D0.B5_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5
                                      Ответить
    • Rust это полная хуйня и говно, я ненавижу и презираю rusters, они днища, не намного лучше пхпидоров.

      Кстати, а есть файка PHPidor?
      Ответить
    • У жeны oкaзaлся любoвник, и я уeхaл, брoсив всё, в дaльнee Пoдмoскoвьe, гдe у мeня былa oднoкoмнaтнaя квaртирa
      Ответить
    • Я стал ласкать их. У них, был свой вкус. Не такой, как у Наташкиных, и не такой, как у других женщин, а особый, только ей принадлежащий, волшебный вкус.
      Ответить
    • Эта история произошла со мной, когда мне едва исполнилось 18 лет. Я рос без отца, наверное, поэтому мне не хватало твердости в характере. Я был очень податливым и легко поддавался чужому влиянию.
      Ответить

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