1. Си / Говнокод #26701

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // https://youtu.be/KdZ4HF1SrFs?t=4473
    // про питоновский for
    
    for x in 1, 5, 2, 4, 3
        print(x**2)
    
    
    //> написать это в две строки у вас не получится
    
    for(struct {size_t cnt; int arr[5];} i = {0, {1,5,2,4,3}}; i.cnt < sizeof(i.arr)/sizeof(i.arr[0]); ++i.cnt )
      printf("%d ", (int)(pow(i.arr[i.cnt], 2) + 0.5) );

    В Си я могу и в 1 строку эту хуйню написать.

    Запостил: j123123, 28 Мая 2020

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

    • Только вот бигинтов из коробки нет, и возведение в степень только плавучепитуховое
      Ответить
    • // именно поэтому я за с++
      for (auto x : {1, 5, 2, 4, 3})
          std::cout << (x * x) << std::endl;
      Ответить
      • Макрохуйня спешит на помощь
        #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; type arr[5];} i = {0, __VA_ARGS__}; i.cnt < sizeof(i.arr)/sizeof(type); ++i.cnt )
        
          FOR_RANGE(int, i, {1, 5, 2, 4, 3})
            printf("%d ", (int)(pow(i.arr[i.cnt], 2) + 0.5) );
        Ответить
        • Сделай себе прививку от вируса - помоги мне.
          Ответить
        • #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; type arr[  sizeof( (type[])__VA_ARGS__)/sizeof(type)  ];  } i = {0, __VA_ARGS__}; i.cnt < sizeof(i.arr)/sizeof(type); ++i.cnt )

          пофиксил
          Ответить
          • Блядь, до чего опустился говнокод. Обсуждают как в одну строку сделать foreach.
            Ответить
          • #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; typeof(type) arr[  sizeof( (typeof(type)[])__VA_ARGS__)/sizeof(type)  ];  } varname = {0, __VA_ARGS__}; varname.cnt < sizeof(varname.arr)/sizeof(type); ++varname.cnt )


            Еще немного пофиксил. Теперь должно быть норм
            Ответить
            • Не работает. Пишет:
              <source>(7): warning C4116: unnamed type definition in parentheses
              <source>(7): error C2061: syntax error: identifier 'typeof'
              <source>(7): error C2078: too many initializers
              <source>(7): error C2143: syntax error: missing '{' before '.'
              <source>(7): error C2059: syntax error: '.'
              <source>(7): error C2059: syntax error: '++'
              <source>(7): error C2059: syntax error: ')'
              <source>(10): error C2059: syntax error: '}'
              Ответить
              • #include <stdio.h>
                #include <stdlib.h>
                #include <stddef.h>
                #include <math.h>
                #include <type_traits>
                
                #define krestogovnotypeof(a) std::remove_reference<decltype((a){})>::type
                
                #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; krestogovnotypeof(type) arr[  sizeof( (krestogovnotypeof(type)[])__VA_ARGS__)/sizeof(type)  ];  } varname = {0, __VA_ARGS__}; varname.cnt < sizeof(varname.arr)/sizeof(type); ++varname.cnt )
                
                int main(void)
                {
                  FOR_RANGE(int, k, {1,2,3,4,5,6,7})
                    printf("%d ", (int)(pow(k.arr[k.cnt], 2) + 0.5) );
                  return EXIT_SUCCESS;
                }
                Ответить
                • https://wandbox.org/permlink/p0DnxIxiVmK3C1XC

                  Что-то долговато компилируется эта крестопараша, в отличии от сишки. Поэтому я за Си
                  Ответить
                  • https://stackoverflow.com/questions/6707148/foreach-macro-on-macros-arguments
                    Тут посоны писали for~each для препроцессора.

                    Там один интереснейший трюк показан.
                    Ответить
                    • если у тебя будет в эту __VA_ARGS__ хуиту передаваться дрисня типа {a, b}, {c, d}, {e, f}
                      то она разберется на аргументы не как '{a, b}', '{c, d}', '{e, f}'
                      а как '{a', 'b}', '{c', 'd}', '{e', 'f}'
                      Там эта проблема решается?
                      Ответить
                      • Сколько умных слов... Жаль, без практического применения.
                        Ответить
                  • Кстати, я так и не понял, что там по поводу компиляции в C++?
                    - JS был настолько нестерпим, что для него это дело уже наладили (CoffeeScript, TypeScript, ECMAScript2016,17,18,..., тонны питушни).
                    - C тоже был нестерпим, в какую-то сиштушню компилируют Haskell.

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

                    Кроме ASD77 кто-нибудь сделал что-то полезное для C++?
                    Ответить
                    • Так сводят же к промышленно полезному минимуму.
                      js — сишка вёба.

                      К тому же их дополнительно урезают. С до С--.
                      js до asm.js
                      Ответить
              • А это ж сраная говновижуальная студия...
                https://godbolt.org/z/ht_3qm вот я вроде уже почти портировал. Надо реализовать хуйню, которая б считала аргументы

                Скажем, если будет фигня типа
                {123, "ffft"}, {123}, 4, 666
                то надо чтоб было 4 аргумента.

                Можно реализовать это на крестопарашных констэкспрах, распарсивая стрингифицированные аргументы.
                Собственно, вот почти корректная реализация: https://govnokod.ru/26703
                Ответить
            • Па начам в тишы я пишу стехи,
              В каждай строчке толка точки после буквы Ы
              Ответить
    • Перевёл на J:
      echo @ *: 1 5 2 4 3
      Ответить
    • На шпиль собора Святого Иакова в Риге вернули петуха

      На шпиль кафедрального собора Святого Иакова в Риге вернулась отреставрированная
      фигура петуха, сообщает Rus.delfi.lv.
      
      Внутрь фигуры поместили послание потомкам от церкви, правительства и реставраторов.
      Архиепископ-митрополит Латвийской римско-католической церкви Збигнев Станкевич
      в своем послании акцентировал внимание на молитве за Латвию и Европу.
      
      Петух был снят со шпиля собора 3 апреля. Мастера отремонтировали фигуру и заново
      покрыли золотом. В предыдущий раз петуха снимали со шпиля 38 лет назад.
      Ответить
    • #define FOR_RANGE(type, var, ...) for (type arr_[] = __VA_ARGS__, *end_ = arr_ + sizeof(arr_) / sizeof(arr_[0]), *var##_ = arr_, var = 0; var##_ != end_ && (var = *var##_); ++var##_)
      
      FOR_RANGE(int, i, {1, 5, 2, 4, 3})
          printf("%d\n", i * i);
      Ответить
    • Более того, в C++ или С оно может быть записано в одну строчку.
      Ответить
    • for (int *it=(int[]){1, 5, 2, 4, 3, 0}; *it;*it++)
              printf("%d\n", *it);

      Мне даже мрак-осы не нужны. Zero-terminated — Тайная сила Сишки.
      Ответить
    • зеабали писать нипанятный код, нада так
      package main
      
      import (
      	"fmt"
      	"math"
      )
      
      func main() {
      	for i := range []int{1, 3, 5, 10} {
      		fmt.Println(math.Pow(float64(i), 2))
      	}
      }
      Ответить
      • Заебал форсить goвняный код.
        Надо так:
        #include <stdio.h>
        #include <stdlib.h>
        #include <math.h>
        
        #define NUMARGS(...)  (sizeof((int[]){0, ##__VA_ARGS__})/sizeof(int)-1)
        #define xARR(type) jArr_ ## type
        #define xDEF(type) typedef struct {size_t size; const type* arr;  }  xARR(type)
        #define xINIT(v, type, ...) xARR(type) v = {NUMARGS(__VA_ARGS__), (type[]){__VA_ARGS__}}; 
        
        #define xFOR(type, item, array) type item=array.arr[0]; for(size_t I = 0; I < array.size; item=array.arr[++I] )
        
        typedef struct {
            char *name;
            int     id;
        } Entry;
        
        xDEF(Entry);
        xDEF(int);
        
        void printEntry(xARR(Entry) entries)
        {
            xFOR(Entry, e, entries){
                printf("%s %d \n", e.name, e.id);
            }
        }
        
        void printSquares(xARR(int) ints)
        {
            xFOR(int, v, ints){
                printf("%d²=%d\n", v,(int) pow(v,2.));
            }
        }
        
        int main(void)
        {
            xINIT(e, Entry, {"one",1}, {"two",2}, {"three",3})
            printEntry(e);
            
            puts("_______________________________________");
            
            xINIT(ints, int, 3, 7, 5, 4)
            printSquares(ints);
        }

        Чтобы for each в Сишечке работал и массив мог аргументом передаваться как std::array.

        https://godbolt.org/z/oT394dvPW
        Ответить
      • Автовывод типов подъехал для for each
        void printEntry(xARR(Entry) entries)
        {
            xFOR(Entry, e, entries)
                printf("%s %d \n", e.name, e.id);
            
            FOR(e1, entries)
                printf("%s %d \n", e1.name, e1.id);
        }
        
        void printSquares(xARR(int) ints)
        {
            FOR(v, ints)
                printf("%d²=%d\n", v,(int) pow(v,2.));
        }

        https://godbolt.org/z/PczaE5PvM
        Сишка — возможности безграничны.
        Ответить
    • Смотрите, как я могу:
      #include <math.h>
      #include <stdint.h>
      #include <stdio.h>
      #define IV (coshl(1) * 1e11 - 0.00007)
      int main(int i) {
          for (long double x = IV; i = (int64_t)floor(x) % 10; x *= 10) printf("%d ", i);
      }


      Последовательность нашёл тут:
      https://oeis.org/A073743

      1, 5, 2, 4, 3 — это несколько десятичных цифр ch(1) = (e + 1/e)/2.

      0.00007 вычел для остановки цикла, потому что дальше следует семёрка.
      Ответить
      • Это достаточно упорото.

        Даже залип на пару минут в непонимании что это за хуйня.
        Ответить
        • Я нашёл несколько последовательностей:
          https://oeis.org/search?q=1,5,2,4,3

          Но их вычислять труднее, чем гиперболический косинус.
          Ответить
          • char a[15]={1,2,4,};
                for (int i=3;i<12;++i) {a[i]=abs(a[i-1]-a[i-2]-a[i-3]); if (i>6) printf("\n%d ",a[i]);}


            https://oeis.org/A077623

            Всё-равно недостаточно упорото
            Ответить
            • Да, с алгебраическими функциями получается стиль Настеньки.
              Ответить
        • Вот эта мне ещё понравилась:

          https://oeis.org/A077623
          Ответить
        • А вот ещё реальные примеры десятичных дробей:

          https://oeis.org/A021660
          https://oeis.org/A121224
          https://oeis.org/A171819
          Ответить
    • Ну и анскилл у вас тут!
      Глядите, как это будет элегантно и красиво на нормальном функциональном языке:
      main :: IO ()
      main = putStrLn "1\n25\n4\n16\n9"
      Ответить
    • Postscript:
      [1 5 2 4 3] {dup mul =string cvs print ( ) print} forall
      Ответить
    • Free Pascal (в TP не было for...in):
      var i: Integer;
      begin for i in [1, 5, 2, 4, 3] do Write(sqr(i), ' ') end.
      Ответить
    • D:

      import std.stdio;
      void main() {foreach (int i, int x; [1, 5, 2, 4, 3]) writef("%d ", x*x);}
      Ответить
    • Тьфу, перепутал всё.
      for (int i=3;i-->0;)
              printf(i?"%f %f ":"%f", pow(3-i,2), pow(3+i,2));

      https://ideone.com/5D8fmk
      Ответить
      • "Ideone" сейчас вообще работает?
        Ответить
        • В Рашке - нет.
          Ответить
          • Похоже, что блокировка не на российской стороне, а на их.

            «Нельзяграм» и «Мордокнига» у меня через «goodbyeDPI» работают.
            Ответить
            • Проверил через «пинг-админ». Помимо РФ как минимум в РБ, в Австрии и в Израиле тоже не работает, в других странах доступен.

              А я думал, что его вообще закрыли...
              Ответить
          • Погуглил — в «Ответах Mail.ru» нашёл очередную замену:

            https://www.onlinegdb.com/
            Ответить
          • Проверяем, что сейчас работает:

            + https://www.codechef.com/ide
            + http://codepad.org/
            + https://coliru.stacked-crooked.com/
            + https://cppinsights.io/
            + https://godbolt.org/
            + https://rextester.com/
            + https://tio.run/
            + https://www.tutorialspoint.com/codingground.htm
            + https://wandbox.org/

            Условно работающие:
            ~ http://ideone.com/ — блокировка по IP (трассировка обрывается где-то в Европе).

            Дохлые ссылки:
            - https://www.compileonline.com/ — сменилось назначение
            - https://code.hackerearth.com/ — сменилось назначение
            - liveworkspace.org — домен разделегирован

            Кстати, «tio.run» блокировали в РФ, когда воевали с «Телегой». Сейчас этот сервис доступен.
            Ответить
            • Тио, кстати, годный. Там тебе и апинсорс, и флаги компилятору можно педерать и свои компиляторы добавлять, и ограничений меньше чем на идеоне.

              И чОрная темя, я от него теук
              Ответить
              • Открыл список языков и потёк...
                Ответить
              • А мапу можно? АТО знаем мы эти эггспойлеры, где даже нельзя узнать адрес символа.
                Ответить
          • Трассировка маршрута к Ideone прерывается в Польше.

            Смотрим хостера... AS42503 Oktawave S. A., Польша. Сайт https://oktawave.com/ в РФ недоступен.
            Ответить
            • Смотрим SPF для Ideone:

              v=spf1 a/28 ptr:okta.ideone.com ip4:176.119.34.219 ip4:195.149.198.213 ip4:176.119.32.229 ip4:176.119.32.41 ip4:213.192.104.210 include:mailgun.org ~all

              Все перечисленные айпишники, кроме последнего, принадлежат Oktawave. Последний — Technical University of Gdansk, Academic Computer Center TASK.
              Ответить
            • Про злоебучий Oktawave (хай им сто чертей в жопу) гость уже писал:

              https://www.govnokod.ru/28087#comment768280
              Ответить
    • Как я попал в этот тред?
      Ответить
    • СЛАБАКИ!
      «Я в одну строчку, я в джве строчки».

      А у серьёзных парней десятки строк!
      https://ideone.com/BDy6be
      public static void main (String[] args) throws java.lang.Exception
      	{
      
              PredicateFactory predicateFactory = new PredicateFactoryImpl();
              FilterFactory    filterFactory    = new FilterFactoryImpl();
              StreamFactory    streamFactory    = new StreamFactoryImpl();
      
              streamFactory.create()
              .stream()
              .map(filterFactory.create())        
              .filter(predicateFactory.create())
              .collect(Collectors.toList())
              .forEach(System.out::println);
              ;
      	}
      
          
          interface PredicateFactory{
              Predicate<Integer> create();
          }
          static class PredicateFactoryImpl implements PredicateFactory{
              @Override
              public Predicate<Integer> create() {
                  return new Predicate<Integer>() {
                      @Override
                      public boolean test(Integer x) {
                          return x > 0 && x < 6;
                      }
                  };
              }
          }
      
          interface FilterFactory{
              Function<Integer,Integer>  create();
          }
          static class FilterFactoryImpl implements FilterFactory{
              @Override
              public Function<Integer,Integer>  create() {
                  return new Function<Integer,Integer> (){
                      @Override
                      public Integer apply(Integer x) {
                          return x%10;
                      }
                  };
              }
          }
      
          interface StreamFactory{
              List<Integer>  create();
          }
          static class StreamFactoryImpl implements StreamFactory{
              @Override
              public List<Integer> create() {
                  return Arrays.asList(0, 1, -2, -3, -4, 5,-6, -7 , -8, -9, 10, -11, 12, 14, 13);
              }
          }
      Ответить
      • А где builder?
        Ответить
        • Не влез в 100 строк.

          Как и фабрика для фабрик.

          За отдельную плату наша команда готова их реализовать.
          Ответить
      • детская лаба какая-то: ни DI, ни J2EE, ни XML, ни даже String

        И потом, данные надо хранить в Oracle, работать с ним через Hibernate, а само приложение должно иметь манифест для разворота на IBM WebSphere

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

      Или вы любите нахуевертить всё, сохранить у себя в голове, а другие потом пусть по коду посмотрят?
      Ответить
      • Я люблю писать
        Ответить
        • где вас таких берут то?

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

              Потому сама мысль что-то внятно описать вызывает у них бугурт: у них малость каша в голове, и мозг сопротивляется
              Ответить
              • Я пишу комменты к комитам:
                "fix"
                "."
                "/"
                Ответить
                • У меня правило: каждый вечер коммитить всё, что сделал за день: не меньше, и не больше.

                  Иногда в один коммит влазит пять-шесть небольших issue, и тогда я пишу "fixing bugs".

                  Иногда только кусочек одной, большой задачи, и тогда я пишу "work in progress".

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

                  Ревью я тоже делаю из таких коммитов. Пускай питух получит ревью с меседжем "bug fixed", и сам разбирается. Я не обязан ему помогать
                  Ответить
                  • Нахуй нужно ревью? Я коммичу без ревью.
                    Ответить
                    • Нахуй вообще коммитить? От гита реально один гемор, я один раз себе чуть весь проект не запорол.

                      У меня есть папочка на сетевой шаре, я туда код переписываю по сети, и теку.

                      Конфликтов не бывает, потому что мы с коллегами разные части системы правим обычно

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

                          Именно потому я за "rotoeb.php".

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

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

                              Конечно, автор кода должен делать тест
                              нехуй коммитить код без тестов.

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

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

                                  Вдруг ты сделал её неконсистентной?

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

                                  Или ты понимаешь, но в код не вникал?
                                  Ответить
                                  • Я добавил параметр «количество сосков» и никто кроме меня этим параметром не пользуется. То есть у всех остальных пользователей количество сосков не поменялось.
                                    Ответить
                                    • Да, но ты мог сделать сигнатуру функции неконсистентной

                                      А завтра я захочу продать молочных поросят, и добавлю параметр специфичный для молочного поросенка. Знаешь, как Дядя Фёдор, Матроскин и Шарик письмо писали?

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

                                      А то будет дизайн комитетом
                                      Ответить
                                  • Вот вам кстати багор.

                                    Если вы добавили в шарповый метод параметр со значением по умолчанию, то по факту вы проебали ABI:

                                    void Oink();
                                    void Oink(int nipples = 0);


                                    У этих двух методов разная сигнатура (void Oink(), void Oink(int)), поэтому если вы запушите такое только с апдейтом минорной версии, то скомпилированное под предыдущую версию сломается к хуям: если вы сделали такое в библиотеке А, от которой зависит библиотека Б, которую потребляет проект В, то нугет подтянет свежую версию А и уже не совместимую с ней Б. При том что с точки зрения семантики и в ситуации, когда нет промежуточных зависимостей, не поменялось ничего.
                                    Ответить
                                    • А знаешь что будет, если в жабьем методе параметр поменять на vararg?

                                      У тебя будет сырцовая ковместимость, но не бинарная

                                      Иными словами, API не поменяется, а ABI -- да

                                      >Oink
                                      oh hi kuya!
                                      Ответить
                                      • Потому что под капотом «public static foo.bar.Govno foo()» будет «()Lfoo/bar/Govno;», а «public static foo.bar.Govno foo(Mocha... kapelki)» превратится во что-то вроде «(Ljava/util/List;)Lfoo/bar/Govno;»?
                                        Ответить
                                        • Только не List, а массив всё таки

                                          а так да
                                          Ответить
                • > Я пишу комменты к комитам:
                  > "."
                  > "fix"
                  Всегда так делаю. Потом правда их squashy и пишу понятный текст.
                  Ответить
                  • >сквашу

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

                      Хотя обманывать не буду. Парочку комитов вроде "fix" у меня по неосторожности попадали в общую репу за последние пару лет.
                      Ответить
                    • Сквашенная капуста?
                      Ответить
              • Не хватает времени и ресурсов. И так заебываешься, пока эту хуйню выловишь, а потом ещё писать это всё. А потом окажется что текст длинный и непонятный. А потом сократил и потерял важное. А потом ещё вспомнил что дописать надо. А потом оказалось что для тулзы билда конечной документации въебал опцию в конфигурационном файле.
                Ответить
          • > Почему я постоянно вижу наплевательное отношение к докам со стороны больлшинства питузов?

            Я тоже. Поскольку обычно документацию и комментарии никто не читает.

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

            Это сильно демотивирует чтобы писать длинные описания.
            Ответить
            • А это проблема современных IDE и высокоуровневых, статичкски типизированных языков.

              Если ты пишешь на перле в vim или на сишке в borland C++ 3.1 IDE, то у тебя просто выбора нет, кроме как документацию почитать.

              А если ты C#/ЙАЖА питушок, то ты к сожалению нажал точечку в IDE, и выбрал один из подходящих методов.

              Иногда до смешного доходит
              --Я использовал $FOO
              --А ты знаешь про $SOME_BASIC_KNOWLEDGE_ABOUT_FOO
              --Не, я тупо скопировал пример, и у меня заработало
              Ответить
      • Люблю писать мануалы. Было б ещё время на работе писать доки — вообще заебись бы было!
        Ну или хотя бы тесты…
        Ответить
    • Я изобрел универсальный подход к чему угодно, он называется "The Universal Bullshit Framework", сокращенно TUBF 1.12 (более ранние версии я не публиковал)

      Полное описание занимает четыре тома, но основные принципы таковы:
      * Делайте хорошо
      * Ориентируйтесь на потребности бизнеса
      * Используйте фидбек пользователей
      * Автоматизируйте
      * Работайте итеративно

      Думаю, организовать курсы, и разобгатеть

      Если вы не используете TUBF 1.12 в своей работе, то вы теряете деньги!
      Ответить
    • Заебали люди, не могущие в нормальный коммит
      Написано же как делать
      https://www.kernel.org/doc/html/v4.10/process/submitting-patches.html#describe-your-changes

      Е
      Ответить
      • Ваще очень печально, что сборище каких-то пердоликов неопределенного пола и подвида стали авторитетом в этом вопросе.
        Ответить
    • «Колонии вполне могут занять и место IKEA. Если сравнивать мебель — у нас и качество лучше, и цены ниже. Мы не коммерсанты», — подчеркнул начальник отдела трудовой адаптации осужденных ГУФСИН России по Свердловской области Иван Шарков.
      https://www.moscowtimes.ru/2022/07/26/vmesto-ikea-rossiyanam-predlozhat-mebel-iz-kolonii-a22642

      Коллеги пишут, что будет представлено две модели стульев
      Ответить

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