Куча говна / Говнокод #27526 Ссылка на оригинал

0

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

#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
#88: https://govnokod.ru/27432 https://govnokod.xyz/_27432
#89: https://govnokod.ru/27435 https://govnokod.xyz/_27435
#90: https://govnokod.ru/27439 https://govnokod.xyz/_27439
#91: https://govnokod.ru/27449 https://govnokod.xyz/_27449
#92: https://govnokod.ru/27460 https://govnokod.xyz/_27460
#93: https://govnokod.ru/27463 https://govnokod.xyz/_27463
#94: https://govnokod.ru/27466 https://govnokod.xyz/_27466
#95: https://govnokod.ru/27473 https://govnokod.xyz/_27473
#96: https://govnokod.ru/27478 https://govnokod.xyz/_27478
#97: https://govnokod.ru/27484 https://govnokod.xyz/_27484
#98: https://govnokod.ru/27495 https://govnokod.xyz/_27495
#99: https://govnokod.ru/27504 https://govnokod.xyz/_27504
#100: https://govnokod.ru/27508 https://govnokod.xyz/_27508
#101: https://govnokod.ru/27511 https://govnokod.xyz/_27511
#102: https://govnokod.ru/27518 https://govnokod.xyz/_27518

Запостил: nepeKamHblu_nemyx nepeKamHblu_nemyx, (Updated )

Комментарии (403) 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.
    Остерегайтесь подделок. Берегите себя и своих близких. Кок!
    Ответить
    • Вообще-то 11:52 - это ещё утро.
      Ответить
      • Вот они, комментаторы на хабре -- замшелые и озлобленные.
        Ответить
  • Булзай хардфризнулся
    Поздравляю всех с этим событием!
    Ответить
            • Колошадь это комплементарная лошадь самой себе, состоящая из базовых миноров самой себя и единичной лошади.
              Ответить
            • А помните мультик «Лошарик»?

              Зумеры смеются над этим названием. Они его почему-то ассоциируют не с лошадью и не с шариком, а с лохом.
              Ответить
              • Надо сказать, что мы и в 90-е уже над этим названием смеялись, хотя и не зумеры совсм
                Ответить
                  • Это что-то японское?

                    В моем детстве из "аниме" были только вольтрон, трансформеры и "супер книга"
                    Еще был Босоногий Гэн, но я не смотрел
                    Ответить
                    • Надо смотреть новое аниме и играть в новые игры, чтобы получать удовольствие.

                      > кто поет песню итальянскую, "лошара ми кантаре",и как она пишется в нормальном переводе???
                      Ответить
              • Я зумер, получается? Огурцы, кстати, большие называют «лошаками».
                Ответить
                • Угу

                  А я поколение X-Y
                  Понимайте, как хотите

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

                  Нет смысла пытаться объединять поколения из США, России и Бурунди
                  Ответить
                    • >XX

                      Вот кстати трапизм ваш действительно зумерам совйственен (см "поколение снежинок")
                      Ответить
                      • Как выучить и запомнить всех этих зумеров-хуюмеров?
                        Ответить
                        • А надо? Просто тех, кто старше, обзывай бумерами, а тех, кто моложе, обзывай зумерами. Не ошибёшься.
                          Ответить
                        • Попробуй удалить папки со стандартом из мозга, чтобы зумеры-хуюмеры влезли. Сможешь как вистефан уметь поддержать беседу с 14-ти летними анимешницами.
                          Ответить
                            • Кстати, у них темы периодически меняются. Например, года три назад было модно форсить 1D, 5SOS, 30STM, MCR. Можно было даже не знать, что это такое, но если употреблять эти заклинания, то на тебя подписывались.
                              Ответить
                        • Ну а как ты стандарт крестов учил?


                          https://i.pinimg.com/736x/6a/61/b7/6a61b74be4d8819b94e1835a6663e532.jpg


                          Есть еще потерянное поколение есть и тихое поколение, но это скорее американские реалии


                          Кстати, почитай "Теория поколений" в вики, там показана цикличность этих самых поколений
                          Ответить
                          • > стандарт крестов

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

                        The 48th chapter of the Rule of St. Benedict states "for then are they monks in truth, if they live by the work of their hands".[16] Following this rule, most Trappist monasteries produce goods that are sold to provide income for the monastery.

                        The goods produced range from cheeses, bread and other foodstuffs to clothing and coffins. Their most famous products are Trappist beers.[17] These are a unique category within the beer world,[18] and are lauded for their high quality and flavour.[19] These monasteries brew beer both for the monks themselves and for sale to the general public. Trappist beers contain residual sugars and living yeast, and, unlike conventional beers, will improve with age.[20]
                        Ответить
                                • Санкт-Петербург, Малый просп. П.С., 48
                                  Брассерия "Крик"

                                  а что?
                                  Ответить
                                    • Это по прямой? Подожду ещё два таких комментария и можно будет приступать к трилатерации.
                                      Ответить
                                      • Нет, по яндекс картам. Это без учета остановок на сон и еду.
                                        Ответить
                                              • Как ты по трем расстояниям до разных питухов что-то восстановишь?
                                                Ответить
                                                • Я вообще-то хочу от тебя ещё два коммента. Но уже не хочу, потому что Яндекс карты не могут проложить оптимальный маршрут.
                                                  Ответить
                                                  • Какие ещё 2 коммента ты хотел от меня и какие данные хотел восстановить?
                                                    Ответить
                                                • На карте циркулем проведёт окружности. Гипотетически достаточно двух питухов, но у двух окружностей могут быть две точки пересечения. Чтобы отсечь неправильный вариант, нужно третье расстояние.

                                                  Возможно, у него ничего не получится, если между измерениями ты будешь перемещаться.
                                                  Ответить
                                                  • Вы хотите восстановить точку, которая и так известна? )
                                                    Ответить
                                                      • Санкт-Петербург, Малый просп. П.С., 48

                                                        Или ты хочешь ещё 2 бара скинуть и чтобы я ответил на них?
                                                        Ответить
                                                        • > Или ты хочешь ещё 2 бара скинуть и чтобы я ответил на них?

                                                          Да )))
                                                          Ответить
    • > хардфризнулся

      Я обычно в винде диспетчер задач открываю, когда такое происходит. Ну или делаю hard-reset кнопкой на корпусе.
      Ответить
  • Да, а в Теслах из-за «экологичности» используют проводку из сои, которая, внезапно, понравилась грызунам, из-за чего покупатели попадают на дорогие ремонты.

    Наверное, все же, надо в первую очередь прикладывать мозг и думать о потребительских свойствах товаров, чтобы из-за реверанса «экологичности» у потребителя не возникало проблем при эксплуатации. А то, в результате, получается, как с облезающими эпловскими шнурками или электроникой на бессвинцовых припоях: продукт долго не работает, и затем отправляется на свалку / в дорогостоящий ремонт, и затем уже точно — на свалку.

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

    Забота об экологичности — это, кмк, очень-очень часто шиза, нежели что-то реально стоящее.


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


      Just as planned.
      Ответить
  • Шпионская программа Pegasus от израильской компании NSO Group эксплуатирует 0day-уязвимости на iOS и Android для скрытой установки на смартфоны и дистанционного съёма информации. Например, на iOS 14.6 её можно удалённо установить через сообщение iMessage без перехода по ссылке (zero-click attack).

    Pegasus официально лицензируется для правоохранительных органов с целью отслеживания преступников и террористов. Но оказывается, что власти Азербайджана, Казахстана, Венгрии и нескольких других стран используют Pegasus для прослушки членов гражданского общества — журналистов и активистов из общественных организаций.
    Ответить
  • недавно вот обсуждали type unions. а в чём прикол?

    вот есть у меня 30 типов элементов, которые умеют отрисовываться. в мейнстриме они просто реализуют какой-нибудь интерфейс IDrawable

    а с тайп юнионами мне придётся делать 30 отдельных функций + 1 общую, которая принимает такой юнион на 30 типов и внутри if/case/cond'ом выбирает нужную реализацию?
    Ответить
        • Да, извини, нечаянно вытянул не ту карточку из методички фанатика «Nim». Попробую ещё раз.

          Как хорошо, что в «Nim» нет type unions...
          Ответить
    • Ты можешь разместить логику в самом элементе (тогда будет IDrawable) а можешь в том месте, куда ты его передаешь.

      Конкретно для рисующих элементов логично разместить её внутри элемента, и толку от unions конкретно тут для тебя нет.

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

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

      В статически типизированных языках придется делать либо визитор, либо серию "if instanceof", а с юнионом это удобнее
      Ответить
      • Именно поэтому я за статически типизированные языки, где логику не надо пихать в "сами элементы".

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

          >Паттерн-матчинг всё-таки для такой полиморфной хуйни никто не юзает.

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

            Х.з., это к тебе вопрос:

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

              Если я размещаю логику не в самом элементе (то есть не пользуюсь полиморфизмом), то у меня есть указатель на родительский интерфейс, и по нему нужно узнать тип, и что-то сделать. По сути нужен паттерн матчинг. Но если его в языке нет, то нужны или цепочки instanceof, или визитор. С юнион тайпами это проще, получается почти что паттрен матчинг

              Выбор места для логики от языка не зависит
              Ответить
              • А я пишу о языках, где полиморфизм есть, но при этом логику не надо пихать ни в сами элементы (как в сраном ООП) ни сваливать в одну кучу (как с паттерн-матчингом).
                Ответить
                • Приведи пример размещения логики НЕ в элементе, но при этом чтобы был полиморфизм (только чур визитора не предлагать)
                  Ответить
                    • show me the code

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

                      но мы про статпитушню
                      Ответить
                        • Type classes are defined by specifying a set of function or constant names, together with their respective types, that must exist for every type that belongs to the class. In Haskell, types can be parameterized; a type class Eq intended to contain types that admit equality would be declared in the following way:

                          class Eq a where
                            (==) :: a -> a -> Bool
                            (/=) :: a -> a -> Bool

                          where a is one instance of the type class Eq, and a defines the function signatures for 2 functions (the equality and inequality functions), which each take 2 arguments of type a and return a boolean.


                          Это типичные интерфейсы, я ведь прав?
                          Ответить
                          • > типичные интерфейсы

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

                              -– о, в Свифте тоже
                              Ответить
                            • Капец, а в «Nim» нет ни абстрактных классов, ни интерфейсов...
                              Ответить
                      • https://ideone.com/PDirxX
                        {-# LANGUAGE ExistentialQuantification #-}
                        {-# LANGUAGE FlexibleInstances #-}
                        
                        data Circle = Circle Int deriving Show
                        data Square = Square Int deriving Show
                        
                        class Drawable a where
                          draw :: a -> IO ()
                        
                        instance Drawable Circle where
                          draw (Circle x) = print $ ("I'm circle " ++ show x)
                        
                        instance Drawable Square where
                          draw (Square x) = print $ ("I'm square " ++ show x)
                        
                        data Proxy = forall a. Drawable a => Proxy a
                        instance Drawable Proxy where
                          draw (Proxy a) = draw a
                        
                        instance Drawable [Proxy] where
                          draw = mapM_ draw
                        
                        main = do
                          draw [Proxy $ Circle 42, Proxy $ Square 100500]
                        Ответить
                        • data Proxy = forall a. Drawable a => Proxy a
                          instance Drawable Proxy where
                            draw (Proxy a) = draw a


                          это что такое?
                          Ответить
                            • Кстати, а что у него внутри? Что-то в духе таблички виртуальных методов + конструктор на каждый тип, который попал под forall? Или просто айдишник, а обращения к нему превращаются в свичи?

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

                            Читай как "для всех типов А, которые можно нарисовать, существует прокси, которую тоже можно нарисовать".
                            Ответить
                            • А вот в JavaScript в один список можня засунуть всё что угодня! ☆*:.。.o(≧▽≦)o.。.:*☆
                              Ответить
                                • Именно поэтому я за PHP. А то эти ваши хаскели вынуждают гомогейные контейнеры юзать.
                                  Ответить
                                  • а почему он не может сделать контейнер с Drawable? потому что это не конкретный тип?
                                    Ответить
                                    • > потому что это не конкретный тип

                                      Да, именно так. Это вообще не тип, а класс типов.

                                      Так то вроде мне никто не мешает сделать контейнер, который будет хранить "forall a. Drawable a". Может быть такой даже есть где-то в либах. Просто изкоробочный список хочет что-то конкретное.
                                      Ответить
                              • > А вот в JavaScript в один список можня засунуть всё что угодня!

                                Засунуть то и в хаскеле можно...
                                data Any = forall a . () => Any a
                                
                                anys = [Any $ 42, Any $ Circle 42, Any $ Nothing]
                                Вопрос в том, как обратно достать.
                                Ответить
                                • А нельзя матчнуть как-то по типу потом?

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

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

                                    Но можно forall a . Typeable a хранить, тогда можно будет раскастовать в исходный тип с проверкой в рантайме.
                                    Ответить
                                      • > какая вариантность ))

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

                                        А потом пхпшники разрабов покусали и они стали генерить инстансы Typeable для всего подряд по-умолчанию. И теперь можно сделать из хаски пхп.
                                        Ответить
                          • З.Ы. В крестах тоже бывает такой переход от статического полиморфизма к динамическому, когда ты пишешь шаблон, который реализует интерфейс.
                            Ответить
                        • на самом деле это напоминает Go, по крайней мере, чисто визуально
                          Ответить
                        • Спасибо, это действительно годно.

                          А можно же вынести реализацию в другую единицу компиляции, и подгружать динамически, в рантйме?
                          Ответить
                            • Если погружать в рантайме нельзя, то это же просто сахар для выноса кода в более удобное место, почти как парчал классы в решеточке, или как добавление всяких операторов в крестах
                              Ответить
                              • Нет, это никакой не сахар, а механизм полиморфизм done right.
                                Ответить
                                • Чем это отличается от шарпа
                                  // Foo.cs
                                   partial class Foo
                                      {
                                  
                                      }
                                  
                                  // IBar.cs
                                      interface IBar
                                      {
                                          void DoAll();
                                      }
                                  
                                  // SomeOtherFile.cs
                                      partial class Foo: IBar
                                      {
                                          public void DoAll()
                                          {
                                              throw new NotImplementedException();
                                          }
                                      }
                                  Ответить
                                      • Кстати, есть еще царский паттерн-матчинг для любителей няшной.

                                        Пример из xlib
                                        // 
                                            Display *pDisplay = XOpenDisplay(NULL);
                                            int screen = DefaultScreen(pDisplay);
                                            int root = RootWindow(pDisplay, screen);
                                            Window win = XCreateSimpleWindow(pDisplay, root, 10, 10, 100, 100, 1, 1, 1);
                                            XMapWindow(pDisplay, win);
                                            XFlush(pDisplay);
                                        
                                            XSelectInput(pDisplay, win, ButtonPress); //будем ловить такое событие
                                            while (1) {
                                                XEvent event;
                                                XNextEvent(pDisplay, &event);
                                                if (event.type == ButtonPress) { //если это button, то 
                                                    printf("Click %d\n", event.xbutton.button); //можно обращаться к event.xbutton
                                                    XDestroyWindow(pDisplay, win);
                                                    return 0;
                                                }
                                            }


                                        Малость вручную
                                        Ответить
                                        • Я конечно мог бы ответить «Какой багор )))», но не тот случай.
                                          Ответить
                                          • Нормальный код для 1988-го года на самом деле, тем более что руками xlib никто не трогает
                                            Ответить
                        • #include <iostream>
                          #include <vector>
                          
                          struct Circle {
                              Circle(int x = 16) : val(x) {}
                              int val;
                          };
                          
                          struct Square {
                              Square(float x = 40.2f) : val(x) {}
                              float val;
                          };
                          
                          struct IDrawable {
                              virtual ~IDrawable() = default;
                              virtual void draw() const = 0;
                          };
                          
                          template<typename T>
                          struct DrawableFigure : public IDrawable {
                              DrawableFigure(const T & fig) noexcept : fig(fig) {}
                          protected:
                              const T & fig;
                          };
                          
                          template<typename T>
                          struct Drawable;
                          
                          template<>
                          struct Drawable<Circle> : public DrawableFigure<Circle> {
                              using DrawableFigure<Circle>::DrawableFigure;
                              virtual void draw() const override
                              {
                                  std::cout << "Circle(" << fig.val << ")" << std::endl;
                              }
                          };
                          
                          template<>
                          struct Drawable<Square> : public DrawableFigure<Square> {
                              using DrawableFigure<Square>::DrawableFigure;
                              virtual void draw() const override
                              {
                                  std::cout << "Square(" << fig.val << ")" << std::endl;
                              }
                          };
                          
                          template<typename T>
                          Drawable(const T &) -> Drawable<T>;
                          
                          int main()
                          {
                              Circle circle1{};
                              Circle circle2{ 34 };
                              Square square1{};
                              Square square2{ 17.7f };
                          
                              Drawable d1(circle1);
                              Drawable d2(circle2);
                              Drawable d3(square1);
                              Drawable d4(square2);
                          
                              std::vector<IDrawable *> drawables{ &d1, &d2, &d3, &d4 };
                          
                              for (const auto & drawable : drawables) {
                                  drawable->draw();
                              }
                          }

                          https://wandbox.org/permlink/T5Rrhf8Nw4UM8qPO
                          ☆*:.。.o(≧▽≦)o.。.:*☆
                          Ответить
                          • >virtual void draw()
                            Эх, как вспомню эти учебники про С++... не "для чайников", а старые, переводные...
                            Ответить
      • в свифте кстати можно сделать на энамах, хотя на сложных наборах данных будет некрасиво

        я вот смотрю сюда

        https://docs.racket-lang.org/ts-guide/occurrence-typing.html


        вижу пример
        (: flexible-length (-> (U String (Listof Any)) Integer))
        (define (flexible-length str-or-lst)
          (if (string? str-or-lst)
              (string-length str-or-lst)
              (length str-or-lst)))


        а в ООП-муйне строка была бы наследником/имплементацией коллекции и уже имела бы некий length/count...
        Ответить
  • «Идейная антипрививочница» умерла от коронавируса на Ставрополье
    В Ставропольском крае от коронавирусной инфекции COVID-19 скончалась женщина, которая была принципиальной противницей вакцинации. Об этом случае рассказал губернатор региона Владимир Владимиров.

    «К сожалению, не так давно идейная антипрививочница, у которой был подтвержден коронавирус, умерла в Невинномысске. Вспоминаю об этом каждый раз, когда читаю в социальных сетях посты про вред прививок. Вот такие рассуждения намного вреднее, потому что губят людей», — написал Владимиров в Instagram.
    Ответить
    • Это пиздец. Скорее бы меня поймали американцы на улице и чипировали своими наноботами. Лишь бы только не русскими!
      Ответить
    • Неделю назад стали вбрасывать сообщения, составленные по двум шаблонам.

      Шаблон № 1. «Непривитый умер от коронавируса. Сколько ещё должны умереть, чтобы вы привились?».
      Шаблон № 2. «Знакомый умер на следующий день после прививки».

      https://youtu.be/giC3-LnnV4c

      Мне кажется, кто-то тупо майнит бигдату: считает репосты и лайки, чтобы узнать, как народ реагирует на такие новости.
      Ответить
    • > ДФ логать не будет

      Будет.

      > 3.7 ГГц

      Это много.

      > 12 ядер

      Это много.
      Ответить
      • Черт. Как вспомню игры которые скорость на фпсах и если её разлокнуть то пизда.
        Ответить
      • Ну ты же купил VR шлем с рекламой и анальным контроллером.

        Норм ли R9 5900x? Норм, даже больше чем норм. Норм ли R9 5900x за свои деньги? Спорный вопрос.

        Про ДФ я уже ответил: будет логать, т.к. он однопоточный, ему похуй, что проц может 12 ядер нагрузить.
        Ответить
        • В вр не проиграешь в дф. А R9 5900 как я по бенчах посмотрел - почти самая лучшая однопоточка по производительности
          Ответить
  • В криптографическом протоколе телеграма нашли четыре уязвимости.
    Ответить
    • Исследователи пояснили, что непосредственный риск невелик, но эти уязвимости демонстрируют главное — проприетарная криптосистема Telegram не соответствует гарантиям безопасности, предоставляемым стандартными и широко распространёнными криптографическими протоколами. Они отмечают, что указанные задачи «могли бы быть решены лучше, более безопасно и более надёжно при стандартном подходе к криптографии». Например, при использовании стандартного протокола Transport Layer Security (TLS).

      https://stihi.ru/pics/2013/05/26/5342.jpg
      Ответить
      • Ну TLS тоже не конфетка, кучу архитектурных косяков уже фиксили...

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

        * Я не про мамкиных хакеров, само собой, а про Шнайера и прочих.
        Ответить
      • Пашка уже пофиксил, но не беспокойся: вместе с фиксами он наверняка добавил ещё парочку бекдоров для товарища майора.
        Ответить
          • Tux. Ещё, наверное, какие-нибудь мессенджеры для IRC и Matrix.
            Ответить
              • А что такого?

                Если у меня свой сервер и я шлю тебе письмо на твой сервер подписывая его свои ключом (через DKIM) и шифруя твоим публичным ключом, то кто и что спиздит?
                Ответить
                • Так если у тебя будет свой сервер Телеграмма, у тебя тоже никто ничего не спиздит
                  Ответить
                  • А так можно, кстати?
                    Я не очень копенгаген в этих вопросах
                    Ответить
                    • Нет

                      А сколько петухов в мире поднимают свой собственный почтовый сервер?
                      Ответить
                      • Но если ты пиздец поехавший на безопасности параноик, то можешь и поднять.. Или можете собраться группой, нанять админку (которому доверяете) и пускай он подымет
                        Ответить
                        • А чем это отличается от того, чтобы шифровать сообщения ключами и пересылать в той же телеге?
                          Ответить
                          • Я не знаю, что делает тела: вдруг она их сохраняет у себя где-то, и потом будет расшифровывать?
                            Ответить
                              • ФСБ/ЦРУ потом заберет мой комп, найдет ключи, позвонит своему агенту Паше, он выдаст всю мою шифрованную переписку, и оно вскроет его ключами)


                                Хотя на самом деле конечно нужно ``perfect forward security`` делать: из долговременных ключей вырабатывать быстроживущие, и шифровать ими, и часто их менять.

                                Интересно, как это реализовать порвех электронной почты))
                                Ответить
                                • > как это реализовать порвех электронной почты

                                  В каждом письме присылать новый эфемерный public key, подписанный главным. Отвечать тебе будут уже на него, а старые можно удалить.
                                  Ответить
                                  • Ну по хорошему менять его нужно по времени, то есть письма ключом можно слать Out-of-band, нужно только как-то синхронизировать их.

                                    Кстати, а ключ обязательно подписывать асинхронным или можно тупо шифровать его предыдущим ключом?
                                    Ответить
                                    • уверен, что уже есть израильская компания, которая руками программистов из Винницы уже запилила такое решение для El Presidente
                                      Ответить
                                    • > предыдущим

                                      Тут есть риск проебать письмо и цепочка порвётся. Лучше уж одним главным. Один фиг perfect forward secrecy сохранится если ты вовремя удаляешь старые ключи.

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

                                      Ты берешь мой публичный ключ (PUB_MASTER) из DNS, например.

                                      Я геренирую пару PUB_SESSION/PRIV_SESSION, подписываю PUB_SESSION ключом от PUB_MASTER и шлю тебе.

                                      Ты проверяешь что он подписан мною, и шифруешь данные PUB_SESSIONом, и шлешь мне

                                      Я их читаю, бо у меня есть PRIV_SESSION
                                      Ответить
                                      • > подписываю PUB_SESSION ключом от PUB_MASTER

                                        – я не въезжаю, что такое "подписываю" .__.
                                        Ответить
                                        • Signate = SomeFunction(PrivateKey, DocumentData)


                                          Когда у тебя есть ``DocumentData`` и ``PublicKey`` ты можешь сделать
                                          IsValidDocument(DocumentData, Signature, PublicKey)


                                          https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C#%D0%90%D1%81%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0

                                          во
                                          Ответить
                                            • Шифрованием обычно называют процесс, при котором шифрованные данные можно восстановить в plain text

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

                                              Потом ты берешь хеш от документа, "расшифровываешь" подпись, и сравниваешь хеш
                                              Ответить
                                              • > "расшифровываешь" подпись

                                                Это только в RSA так. В остальных алгоритмах подпись совершенно по-другому работает и можно только signature = Sign(data, private) и Verify(data, signature, public).

                                                З.Ы. И это серьёзный недостаток RSA из-за которого очень легко смешать ключи с разным предназачением и отстрелить себе ногу.
                                                Ответить
                                                • В смысле случайно шифровать все сообщения своим приватным ключом пока его не спиздят?

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

                                              Шифрование: я не могу читать твои сообщения.
                                              Подпись: я не могу выдавать свои сообщения за твои.
                                              Ответить
                                              • Confidentiality vs Integrity+Authenticity, да.

                                                Причем иногда может быть нужно только Integrity+Authenticity (подпись) без Confidentiality.

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

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

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

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

              Пашка хитрый, он прекрасно это понимал.

              З.Ы. А теперь он скажет "ну вот, за 10 лет только какую-то теоретическую хуйню нашли, что доказывает секьюрность телеги".
              Ответить
          • а чем так смешон срок в год? брутфорс не успеет отработать?)
            Ответить
            • Тем, что банально руки у многих не дойдут за год до этой темы. См. мой коммент выше.

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

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

    Создать пользователя, накидать ему в /home/petooh всякой питушни, потом от рута всё настроить и сделать chown petooh -R ~/petooh?
    Ответить
    • Ну по-хорошему докер и вся хуйня. Но для статики и твой вариант сойдёт.
      Ответить
      • Сейчас вроде «докер» - уже не новомодная хипстерская хуйня.
        Ответить
        • А что сейчас в моде вместо него? Ну чтобы новомодно и по-хипстерски.
          Ответить
              • Сначала хомячков убедили, что свои сервера надо развёртывать с помощью программы, у которой есть проприетарная платная версия. Программа написана на «Go».

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

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

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

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

          Тоже так думаю. SSH и всё нормально)
          Ответить
        • > А если тебе нужно на своей VPSке свой сайт поднять, то зачем докеры

          Да ну как сказать...

          Если по опыту ngk посмотреть, я немного даже пожалела, что с докером не стала заморачиваться. Питонье виртуальное окружение апгрейд хостовой оси не пережило. А там у меня xml парсер был запатченный, которому для пересборки дохрена оперативки надо. В докере это всё просто работало бы дальше, независимо от хостовой оси.

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

            Если ты хочешь что-то собирать сам, то конечно нужен докер. Если же лолечка хочет просто сайт поднять, то ему достаточно одной команды
            $ sudo apt install nginx

            Всё.
            Ответить
            • > хочешь что-то собирать сам

              Да и виртуальное окружение питона -- не самая приятная вещь. В докере можно было бы просто ставить пакеты "в систему".

              И типичное юниксовое рассеивание файлов по /etc, /var, /home и т.п. тоже добавляет проблем. Банально второй инстанс для экспериментов поднять -- уже заморочка.

              Короче фиг знает, походу докер реально проще.
              Ответить
              • Пакеты для питона обычно ставятся через ``pip`` в ``virtualenv``, это не вызывает никаких проблем, если есть gcc.

                Второе окружение действительно не поднять, но на продакшен сервере оно не всегда нужно.

                Если ты хочешь иметь стейджинг и прод или гриблю, то докер конечно намного лучше:)


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

                Реши мне докером без говна (есть несколько решений, все пидорские)
                Ответить
                • > не вызывает никаких проблем

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

                  А раз и там и там хуйня, почему бы не выбрать докер? 🙂
                  Ответить
                  • Зачем чрутится? Достаточно сделать sourcе чтобы исправить переменные окружения.

                    Я не понимаю как это можно сранивать с докером, где тебе нужно
                    * Написать Dockerfile
                    * В нем скопировать в нужные места твои файлы или прикрутить volume
                    * Собрать билд
                    * Настроить логинг
                    * Настроить сеть
                    * Запустить контейнер
                    * Убедиться еще что он после перезагрузки поднимется

                    Удачи тебе еще в докере без половины утилит (ты же не будешь туда какой-нить ``nc`` или ``wget`` ставить?)

                    Я не говорю, что докер плохо, просто он тоже не бесплатен с точки зрения разворачивания
                    Ответить
                    • > Достаточно сделать sourcе

                      Ну в "кавычках" же написано...

                      > он тоже не бесплатен

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

                  У меня это решалось в том же конфиге uwsgi, через который и сам сайт работал. Просто демон, который живёт вечно и сам спит по 5 минут. Из плюсов по сравнению с кроном -- можно адаптивный интервал сделать, а не фиксированный.
                  Ответить
                  • Он запускал отдельный скрипт, или это просто был поток в том же адресном пространстве?

                    И кстати не все сервера приложений так умеют)
                    Ответить
                    • Отдельный процесс. С потоками и третьим питоном, насколько помню, в те годы всё плохо было.
                      Ответить
                      • эмм.. А что будет, если ювизги породит процесс "A", а тот еще один процесс "B", а потом "A" помрёт?

                        Будет же зомби? Или он умеет репарентить процессы как init?
                        Ответить
              • Контейнерный мир победил, девопс оказался сильней
                Последний чрутик остыл, последний админчик устал.
                Ответить
                • хой ))

                  В общем я не уверен, что позиция "давайте всегда для всего использовать докер" так уж безупречна
                  Ответить
    • поставь nginx или апач из своего пакетного манеджера, он сам сделает папку для корня


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

        > не надо руками ничо чмодить

        Ну, чмодить/човнять я буду, когда буду всякие файлы копировать из своей директории в директорию пользователя «webserver».
        Ответить
        • Запускается сервер от рута (иначе не забайндишься в 80-му порту без ебли с CAP) но сразу же понижает свои права через ``setuid(2)``.

          Ты можешь внести вебпользователя (nginx,www) в группу ``JloJle4Ka``, и поставить такой umask, чтобы у группы было право на чтение.

          Тогда веб сервер сможет читать файлы, которые ты ему скопируешь в его папку.


          Есть еще ``mod_userdir`` у apache (или примерно такойже хак у nginx*), позволяющий тебе просто накидать файлы в домашнюю папку, показывать их по http.


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

          Вообще если ты арчист, то советую сначала прочитать

          https://wiki.archlinux.org/title/Nginx

          Возможно, часть вопросов исчезнет




          * https://websiteforstudents.com/configure-nginx-userdir-feature-on-ubuntu-16-04-lts-servers/
          Ответить
          • > mod_userdir

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

              А что в нём стремного?

              Главное помнить, что там будет одинаковый домен, и потому куки общие и JSы чужие дергать можно
              Ответить
              • > куки общие

                А откуда там куки? Статика же... CGI этот модуль вроде не предоставляет.
                Ответить
                • Куку можно поставить и джаваскриптом

                  ``mod_cgi``, ``mod_php`` и прочие модули же тут ортогональны. Ты можешь их включить, а можешь не включать.

                  ``mod_cgi`` раньше частенько включали. Помнишь папку ``cgi-bin``?
                  Вот для неё и включали. Нужно было ``chmod +x foo.cgi``, и он работал


                  <Directory "/home/*/public_html/cgi-bin/">
                      Options ExecCGI
                      SetHandler cgi-script
                  </Directory>

                  http://example.com/~bormand/cgi-bin/example.cgi

                  (пример из доки)
                  https://httpd.apache.org/docs/2.4/howto/public_html.html
                  Ответить
                  • Взбудоражился, и решил посмотреть как оно сейчас там.

                    Apache2 на Debian из коробки идет с ``mod_cgi`` и ``mod_userdir``, но их нужно включать: в ``/etc/apache2/mods-enabled/`` нужно сделать ссылку для ``userdir.{load,conf}`` и ``cgi.load`` из ``../mods-available``.

                    Такая теперь мода, конфиги раскусывать на файлики.

                    Но по умолчанию ``cgi-bin`` включен только системный. Для домашней его пришлось явно включить.

                    Заработало
                    $ cat ~/public_html/cgi-bin/1.cgi
                    #!/usr/bin/perl -w
                    use strict;
                    use warnings;
                    
                    use CGI qw/:standard/;
                    use POSIX qw/uname/;
                    
                    print header();
                    print join ' ',  uname();
                    $ curl http://127.0.0.1/~$USER/cgi-bin/1.cgi
                    Linux makaka-debian 5.10.0-7-amd64 #1 SMP Debian 5.10.40-1 (2021-05-28) x86_64$


                    какой 2001-й ))
                    Ответить
  • Час коллеги обсуждают нужен ли дежурный билд-инженер из числа девелоперов или выделенный, и обязан ли программист знать как собирается говно на CI
    Ответить
    • > дежурный билд-инженер

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

        Если вдруг найтли перестали собираться, или например завтра EAP/релиз, а билд не билдится, то кто должен фиксить?
        Ответить
          • ну вообще смысл CI в том, чтобы гарантировать, что всё компилируется:) У нас во всяк случае

            Кроме того в найтли пофикшены какие-то баги, и QA туда смотрит.
            Ответить
              • Да.

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

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

                        Только юные пхпшники, выкладывающие ``funcii.php`` тоталкомандером по FTP на шаред хостинг верят, что у них всё хорошо и правильно сделано.

                        Чем ты старше -- тем больше говна замечаешь

                        Или нет?

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

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

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

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

                        "Зависимости" в контроллерах это тупо какие-то .c и .h файлики, которые откуда-то с гитхаба можно скриптом скачивать автоматически из мастера, и потом это тупо статически билдится со всей остальной хуйней.
                        Ответить
      • Hot-fix какой-нибудь без CI протаскивать некузяво.
        Ответить
      • Ну кто именно должен фиксить? Один из питухов должен бросить свои задачи и фиксить.
        Ответить
        • Есть мысль делать дежурного петуха на каждый "спринт" в качестве общественной нагрузки

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

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

      Передай им

      P.S. ты прямо на митинге сидишь на ГК?!
      Ответить
      • Ну вот есть мнение, что это оверкил. Мы же не виндуос выпускаем...

        У меня гуглмит, я его слушаю в фоне
        Ответить
      • > ты прямо на митинге сидишь на ГК

        Он открыл ГК на проекторе чтобы обсудить проблему с экспертами.
        Ответить
        • * g o a t s e x * g o a t s e x * g o a t s e x *
          g                                               g
          o /     \             \            /    \       o
          a|       |             \          |      |      a
          t|       `.             |         |       :     t
          s`        |             |        \|       |     s
          e \       | /       /  \\\   --__ \\       :    e
          x  \      \/   _--~~          ~--__| \     |    x
          *   \      \_-~                    ~-_\    |    *
          g    \_     \        _.--------.______\|   |    g
          o      \     \______// _ ___ _ (_(__>  \   |    o
          a       \   .  C ___)  ______ (_(____>  |  /    a
          t       /\ |   C ____)/      \ (_____>  |_/     t
          s      / /\|   C_____)       |  (___>   /  \    s
          e     |   (   _C_____)\______/  // _/ /     \   e
          x     |    \  |__   \\_________// (__/       |  x
          *    | \    \____)   `----   --'             |  *
          g    |  \_          ___\       /_          _/ | g
          o   |              /    |     |  \            | o
          a   |             |    /       \  \           | a
          t   |          / /    |         |  \           |t
          s   |         / /      \__/\___/    |          |s
          e  |           /        |    |       |         |e
          x  |          |         |    |       |         |x
          * g o a t s e x * g o a t s e x * g o a t s e x *
          Ответить
    • Отвечай, что нужен, программист не обязан.
      Ответить
    • Поэтому я за то, чтобы кто-то наоверинжинирил CI так, чтобы только он мог его потом чинить. Problem solved.
      Ответить
      • CI из самописных скриптов на перле и шеле, со щепоткой крона, да. Видел такое
        Ответить
        • Я видела примерно такой рецепт усреднённый: jenkins+groovy+yaml+bash+ansible+python+ docker. Уххх, бля. Если бы в офисе были обои, они бы отклеились.
          Ответить
          • > они бы отклеились

            Их бы удержал корпоративный дух.
            Ответить
            • Там чудеса, там скрамом пахнет!
              Аджайл на ветвях сидит

              И на неведомых продуктах
              Следы неведомой UIни
              Ответить
  • https://www.linux.org.ru/news/proprietary/16426330?cid=16426416

    Процесс уже давно идет полным ходом.

    «РЖДстрой», дочерняя структура «РЖД», специализирующаяся на строительных работах, в последние несколько месяцев начала осуществлять проекты по переносу своих ИТ-систем с зарубежного ПО на российские платформы.

    В частности, организация намерена в своей автоматизированной системе управления предприятием (АСУП) отказаться от СУБД Microsoft SQL Server в пользу решения PostgreSQL
    Ответить
        • <Error>
          <Code>NoSuchKey</Code>
          <Message>The specified key does not exist.</Message>
          <Key>i/10/26/55/4/1026554/image_main/8610d020c28724ec00ea3330dc336c6b-quality_70Xresize_1Xallow_enlarge_0Xw_83 5Xh_0.jpg</Key>
          <RequestId>4SASA59AKFYS461S</RequestId>
          <HostId>bnlhTllBIG55YSBueWFhYX5+IG55YSBtZW93IDozIDozIGthd2FpaX5+IG55YQ==</HostId>
          </Error>
          Ответить
            • пидорсракерпидорсракерпидорсракерпидорср акерпидорсракерпидорсракерпидорсракерпид орсракерпидорсракерпидорсракерпидорсраке рпидорсракерпидорсракерпидорсракерпидорс ракерпидорсракерпидорсракерпидорсракерпи дорсракерпидорсракерпидорсракерпидорсрак ерпидорсракерпидорсракерпидорсракерпидор сракерпидорсракерпидорсракерпидорсракерп идорсракерпидорсракерпидорсракерпидорсра керпидорсракерпидорсракерпидорсракерпидо рсракерпидорсракерпидорсракерпидорсракер пидорсракерпидорсракерпидорсракерпидорср акерпидорсракерпидорсракерпидорсракерпид орсракерпидорсракерпидорсракерпидорсраке рпидорсракерпидорсракерпидорсракерпидорс ракерпидорсракерпидорсракерпидорсракерпи дорсракерпидорсракерпидорсракерпидорсрак ерпидорсракерпидорсракерпидорсракерпидор сракерпидорсракерпидорсракерпидорсракерп идорсракерпидорсракерпидорсракерпидорсра керпидорсракерпидорсракерпидорсракерпидо рсракерпидорсракерпидорсракерпидорсракер пидорсракерпидорсракерпидорсракерпидорср акерпидорсракерпидорсракерпидорсракерпид орсракерпидорсракерпидорсракерпидорсраке рпидорсракерпидорсракерпидорсракерпидорс ракерпидорсракерпидорсракерпидорсракерпи дорсракерпидорсракерпидорсракерпидорсрак ерпидорсракерпидорсракерпидорсракерпидор сракерпидорсракерпидорсракерпидорсракерп идорсракерпидорсракерпидорсракерпидорсра керпидорсракерпидорсракерпидорсракерпидо рсракерпидорсракерпидорсракерпидорсракер пидорсракерпидорсракерпидорсракерпидорср акерпидорсракерпидорсракерпидорсракерпид орсракерпидорсракерпидорсракерпидорсраке рпидорсракерпидорсракерпидорсракерпидорс ракерпидорсракерпидорсракерпидорсракерпи дорсракерпидорсракерпидорсракерпидорсрак ерпидорсракерпидорсракерпидорсракерпидор сракерпидорсракерпидорсракерпидорсракерп идорсракерпидорсракерпидорсракерпидорсра керпидорсракерпидорсракерпидорсракерпидо рсракерпидорсракерпидорсракерпидорсракер пидорсракерпидорсракерпидорсракерпидорср акерпидорсракерпидорсракерпидорсракерпид орсракерпидорсракерпидорсракерпидорсраке рпидорсракерпидорсракер
              Ответить
      • https://www.postgrespro.ru/img/v3/PostgresPro_logo.svg

        is this a bait? оч похоже на перевернутый крючок

        «РФЯЦ-ВНИИЭФ»

        вангую, что какая нибудь катерина тихонова сказала – моё! и теперь посгря рюзкая, а весть остальной SQL – просто игристый язык запоросов
        Ответить
          • недавно видел название конторы, которое состояло из трёх аббревиатур общей длиной в 10 или 11 букв
            Ответить
            • Мы каждый день такие видим. Новая фишка: сначала форма собственности (нахрена мне эта информация?), потом предназначение, а только потом название. Иногда ещё бывает цепочка ведомств, которым эта организация подчинена, начиная с министерства.

              Если бы школа имени Достоевского существовала сейчас, она бы называлась ГБУ НПО ШКиД или типа того.
              Ответить
              • > сначала форма собственности, потом предназначение, а только потом название.
                Венгерская нотация
                Ответить
                • ГБУЗ ДЗМ «МНПЦДиК» = государственное бюджетное учреждение здравоохранения Департамента здравоохранения Москвы «Московский научно-практический центр дерматовенерологии и косметологии».
                  Ответить
                  • НИИОМТПЛАБОПАРМБЕТЖЕЛБЕТРАБСБОРМОНИМОНКО НОТДТЕХСТРОМОНТ
                    Ответить
                        • Государственное казённое учреждение центр занятости населения центрального административного округа. «Биржа труда» в просторечии. Что такое «ИКО», я так и не понял.

                          В КВН была даже шутка: Москва поделена между китайскими династиями САО, СВАО, ВАО, ЮВАО, ЮАО, ЮЗАО, ЗАО, СЗАО и ЦАО.
                          Ответить
                          • Информационно-консультационный отдел. Ориентируйся на англоязычные надписи на табличках, они полезнее.
                            Ответить
                          • Кстати, в перфектуры есть только в Москве и в Японии с Китаем
                            Ответить
                      • лол, а ведь ДС действительно весь утыкан такой БНОПНЁЙ
                        Ответить
                        • Ладно, когда в документах, а указатели как читать (особенно когда они для водителей и гуглить особо возможности нет)?
                          Ответить
    • Видимо, для кого-то отечество по ту сторону океана.

      Про «Линтер» и про «Кронос Плюс» они не слышали.
      Ответить
    • вот-вот импортозаместят! вот уже! вот сейчас!
      Ответить
  • Три новости пришло к нам из мира космонавтики в понедельник 19 июля — хорошая, плохая и инфернальная на само деле охуенная. Начнем с хорошей, невзирая на фольклорное обыкновение.

    Генеральный директор НПП «Звезда» Сергей Поздняков сообщил «РИА Новости»: в новом варианте скафандра «Сокол-М» предусмотрена ширинка (в предыдущей модели отсутствовала), теперь космонавты могут пописать на колесо автобуса перед стартом. Эта традиция заложена в нашей пилотируемой космонавтике Юрием Гагариным. Более того, конструкция теперь и женщинам позволяет поддержать эту традицию. Учитывая скорый старт экспедиции по съемкам на МКС фильма «Вызов» с Юлией Перемогдт в главной роли, весть хороша со всех сторон.
    Ответить
      • > полный пиздец

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

        Федеральная служба безопасности России предложила утвердить перечень сведений, которые не составляют государственную тайну, но при передаче иностранному государству, гражданину или компании «могут быть использованы против безопасности Российской Федерации». Такими сведениями, в частности, ФСБ считает почти все данные о «Роскосмосе». Лица, занимающиеся сбором таких данных, могут быть признаны иноагентами. Документ опубликован на официальном портале проектов правовых актов.

        Всего в предлагаемом для утверждения «запретном списке» ФСБ более 60 пунктов. Речь идет о данных в военной и военно-технических областях, которые «при их получении иностранным государством, его государственными органами, международной или иностранной организацией, иностранными гражданами или лицами без гражданства могут быть использованы против безопасности» России.

        Кроме того, потенциально «опасной» предлагается считать информацию о деятельности «Роскосмоса». Так, ФСБ хочет ввести запрет на передачу сведений о проблемах, «сдерживающих развитие госкорпорации», и сведения о развитии космической ядерной энергетики. В перечень также попали: сведения о целевых программах «Роскосмоса», их финансовом, материально-техническом обеспечении; данные о реструктуризации организаций, входящих в госкорпорацию, их финансово-экономической деятельности; общая информация о мощностях и планах учреждений, входящих в «Роскосмос»; данные о техническом состоянии, готовности космодромов и других наземных объектов космической инфраструктуры.


        свершилось, твой пак, которым ты дразнишь /wатных mартых/ в /spc/ уже является основанием на политическое убежище, анон
        Ответить
        • Т. е. все СМИ, которые хоть что-то публиковали о «Роскосмосе», уже можно считать иноагентами?
          Ответить
          • зависит от того, имеет ли этот конкретный рашкозакон обратную силу или нет
            а если имеет, то терешкова может объявить несчитовыми предыдущие публикации
            Ответить
            • Вообще, в стране, в которой законы имеют обратную силу, могут жить только бесправные создания.
              Ответить
    • Так вот почему они их так долго не могли запилить...
      Ответить
    • Сделай соцсеть для полоскателей.
      Ответить
        • Гриндр? В Америке какого-то видного попа отстранили от церкви, потому что у него взломали телефон и оказалось, что он ходит по гей-барам и сидит в гриндере.
          Ответить
          • Что это за гомофобство?

            Вообще Иисус был толерантен к ЛГБТ: с женщинами не спал, тусил с мужиками, мужики его целовали
            Ответить
            • > с женщинами не спал, тусил с мужиками, мужики его целовали

              Как Горбачев?
              Ответить
              • Как Брежнев скорее

                Брежнев приехал на фабрику, там его ударница целует, и чудится ему, что это не ударница никакая, а генеральный секретарь ЦК КПЧ товарищ Густав Гусак
                Ответить
        • Пусть сделает ещё одну. Можно будет «читать мысли» тяночек, и выбирать нужных.
          Ответить
          • > Можно будет «читать мысли» тяночек

            – "а Ирка сука..."
            "пожрать бы шавермы..."
            "бля, прокладку надо поменять"
            Ответить
      • Слишком сложно. Я хочу сделать что-то простое, интересное и при этом вселенской важности. Типа утилиты «cp».
        Ответить
          • На «Nim», конечно же.

            Хотя развернуть веб-сервер и сделать себе хомяка на питоне было бы тоже интересно...
            Ответить
            • Сделай hello world на Flask. Шаблонизатор возьми Jinja.

              Освой gunicorn или uwsgi
              (https://flask.palletsprojects.com/en/2.0.x/deploying/wsgi-standalone/)

              Разверни nginx пакетным своим менеджером на на машине, убедись что ты умеешь статику им отдавать.

              Запусти gunicorn или wsgi (первый будет http, второй fastcgi скорее всего) и подключи его к nginx (в первом случае тебе нужен ``ngx_http_proxy_module``, во втором ``ngx_http_fastcgi_module``). В Интернете полно инструкций, и мануалы есть. Особый шик, если свяжешь их через unix domain socket, а не tcp (придеца поебаца с пермишеном), но это не обязательно (главное не слушать 0.0.0.0).

              Поставить их можешь своим пакетным менеджером или через pip в virtualenv, и оттуда прямо запустить (например написав systemd unit, это не сложно)

              Либо возьми docker и docker-compose, и запусти два готовых контейнера и настрой между ними сеть (по докеру есть книжки и дока)

              Когда всё заработает, прикрути базу (SQL Alchemy + PostgreSQL) (опять же либо пакетным менеджером либо через докер)

              А там уже можешь и джангу какую-нить попробовать

              Когда всё локально заработает, возьми VPSку на любом хостинге самую дешевую, и разверни всё это там таким же образом, как ты локально делал
              Ответить
                • Ну я просто про Nim ничего не могу сказать, а других вариантов он не предложил
                  Ответить
                  • Смотри, что на «Nim» можно наплямкать:

                    import asynchttpserver, asyncdispatch
                    
                    proc main {.async.} =
                      var server = newAsyncHttpServer()
                      proc cb(req: Request) {.async.} =
                        let headers = {"Date": "Tue, 29 Apr 2014 23:40:08 GMT",
                            "Content-type": "text/plain; charset=utf-8"}
                        await req.respond(Http200, "Hello World", headers.newHttpHeaders())
                      
                      server.listen Port(8080)
                      while true:
                        if server.shouldAcceptRequest():
                          await server.acceptRequest(cb)
                        else:
                          poll()
                    
                    asyncCheck main()
                    runForever()
                    Ответить
                    • Симпатично, похоже на ноду. Это всё асинхронищина в одном процессе, верно?
                      То есть если ты там задачу комивояжера будешь решать, то все соснут?

                      А есть высокоуровневые фреймворки, штоб хедеры руками не срать?
                      Ответить
                      • > Это всё асинхронищина в одном процессе, верно?

                        Не понямаю. Ты имеешь в виду, что оно не плодит потоки, когда обрабатывает запросы, а просто умеет их одновременно исполнять, типа как GIL в «Python»? Вполне возможно... Но там, правда, написано, что это «high performance» серчач. Хотя я не знаю как посмотреть.
                        Ответить
                        • Скорее как async await в питоне.

                          Судя по этому вот ``await`` это корутина (юзермодный "поток"): с точки зрения ОС поток у тебя один, просто чтение/запись в сокет не блокирует его.

                          Это действительно хай перформанс если тебе нужно просто отдавать данные, но что будет, если для значения заголовка "Date" ты запустишь тяжелые вычисления на CPU?

                          Всё же воткнет, и остальные клиенты будут ждать?
                          Или нет?

                          или оно создает несколько потоков?
                          Ответить
                          • > Всё же воткнет, и остальные клиенты будут ждать?
                            Или нет?

                            > или оно создает несколько потоков?

                            Я не знаю и даже не знаю как это узнать...

                            Но мне кажется, что ты прав. Нигде асинки-эвейты не плодят потоки: этот «асинхронный» подход – противоположность «многопоточного» подхода.

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

                            Я думаю, асинхронная питушня должна только для ввода-вывода использоваться на сайтике, а тяжёлое вычисление можно вручную завернуть в другой поток какой-нибудь другой либой с потоками.
                            Ответить
                        • Напиши библиотеку asyncinho для Nim.
                          Ответить
                      • Q: ... How can I run this behind an Apache server?

                        A: After you compiled (with nim c -r cgi.nim) you should have an executable called cgi. You have to launch this on the background, maybe using something like supervisor.

                        Then you configure Apache to ReverseProxy towards your cgi nim program, that is listening at http://127.0.0.1:5000 by default.

                        Here you have a complete tutorial using systemd+watchdog instead of supervisor, and nginx instead of Apache: https://github.com/nim-lang/Nim/wiki/Tutorial:-Creating-a-(micro)-service
                        Ответить
                        • а, так он сам работает, и слушает 5000 и дает HTTP?

                          Тогда напиши просто systemd unit для него или Dockerfile, и запускай

                          А спереди поставь nginx с ngx_http_proxy_module (апаче тяжеловат)
                          Ответить
                          • > а, так он сам работает, и слушает 5000 и дает HTTP?

                            А это значит, что если сервер упадёт, то будет пезец? Ну, докер вроде бы может сам перезапускать серв, а с юнитом как быть? Писать ещё один юнит, чтобы он перещапускал сервер, когда он падает?
                            Ответить
                    • сервак в общем можно практически на любом языке накалякать, в чём тут уникальность?
                      Ответить
  • Если чел два пробела после запятой ставит, то это что?
    Ответить
  • https://m.habr.com/ru/company/hsespb/blog/569070/

    Привет, Хабр! Мы — Тимофей Василевский, Сергей Дымашевский и Максим Чайка — только что окончили первый курс бакалавриата «Прикладная математика и информатика» в Питерской Вышке. В качестве семестрового проекта по C++ мы написали симулятор всем известной настольной игры Ticket to ride. Что у нас получилось, а что нет, читайте под катом.
    Ответить
    • struct Turn {
      public:

      хм

      explicit DrawCardFromDeck();

      хм
      (Turn *t)

      не &?

      std::vector<Path> TTRController::get_paths() {

      std::vector<Path&> .. const?

      QTimer *timer = new QTimer();

      хм


      >сервер не умеет просто сигнализировать всем клиентам, что произошли изменения
      хм..
      Ответить
        • Для первого курса получилось очень заебись кмк, просто я наискосок глянул (я на митинге, как вы понимаете) и глаз зацепился

          Но я не плюсовик
          Нужна Полина
          Ответить
          • struct Turn


            struct DrawCardFromDeck final : virtual Turn


            говнецо какое-то
            Ответить
            • Меня больше пугает, что у Turn нет ни одного виртуального метода кроме деструктора
              нахуй он нужен?

              И зачем Turn кастят к DrawCardFromActive ?
              Ответить
    • if (request->type() == "build station") {
              controller->build_station(request->station_to_build_id(), request->id().id());
              controller->build_path_initialize(request->path_to_build_id(),request->id().id());
          }
          if(request->type() == "take routes"){
              controller->get_routes(request->id().id());
          }


      PHP какой-то
      Ответить
    • какой полиморфизм ))
      void Game::make_move(Turn *t) {
          std::cout << "players move" << std::endl;
          bool flag = true;
          if (auto *p = dynamic_cast<DrawCardFromDeck *>(t); p) {
              std::cout << "draw card from deck" << std::endl;
              if (!get_wagon_card_from_deck()) {
                  flag = false;
              }
          }  // OK
          if (auto *p = dynamic_cast<DrawCardFromActive *>(t); p) {
              std::cout << "draw card from active" << std::endl;
              if (!get_wagon_card_from_active_cards(p->number)) {
                  flag = false;
                  std::cout << "no active cards" << std::endl;
              }
          }  // OK
          if (auto *p = dynamic_cast<TakeRoutes *>(t); p) {
              std::cout << "draw routes" << std::endl;
              move_get_new_roots();
          }  // OK
          if (auto *p = dynamic_cast<BuildStation *>(t); p) {
              std::cout << "build station" << std::endl;
              if (!move_build_station(p->get_city(), p->get_path_pos())) {
                  flag = false;
              }
          }
          if (auto *p = dynamic_cast<BuildPath *>(t); p) {
              std::cout << "build path" << std::endl;
              if (!move_build_path(p->get_pos(), p->getWagons())) {
                  flag = false;
              }
          }  // OK
      Ответить
        • вариант тут тоже не нужен, просто метод у наследников прости господи Turn, который принимает игровой контекст и что-то там им манипулирует
          Ответить
          • Это был бы классический полиморфизм, угу

            Но они так не сделали, а сделали цепочку "instance of"
            Ответить
        • Такое чувство, что жабаёб туда пробрался, и отложил им личинку в голову
          Ответить
    • Привет, Говнякод! Мы — Полина Аксёнова, Полина Аксёнова и Полина Аксёнова — только что окончили первый курс бакалавриата «Автоматизированное проектирование киберфизических систем». В качестве семестрового проекта по C++ мы няписали симулятор някания. Что у няс получилось, а что нет, читайте под катом.
      Ответить
    • "Без статической типизации и IDE не нужна", -- сказал [object Object], и засмеялся.

      И давно уже
      var кукарек = new Кукарек<кококок>();

      Остальное правда
      Ответить
    • Мне стало немного грустно, т.к. я заебался, но потом я увидел эту смешную картинку и мне стало весело. Как же хорошо жить!
      Ответить
  • * DuckDuckGo is launching Email Protection into beta, a new feature in our apps that will protect your email privacy without switching email services. Join the private waitlist!
    * Get a free, personal @duck.com email address. Emails sent to it will forward to your regular inbox, with creepy email trackers removed.
    * Generate unique private email addresses in the DuckDuckGo app and extension so you can’t be tracked by your email address.
    * DuckDuckGo never saves your email.
    Ответить
  • говорят, соснули больше чем с fastly

    A major internet outage knocked tens of thousands of websites and other platforms offline or made them difficult to access on Thursday, including Airbnb, TikTok, the Playstation Network, Steam, Southwest Airlines, Delta Airlines, Ally Bank, and Fidelity.

    The problem reportedly originated with Akamai, a leading cloud computing platform used by many large companies around the world to provide DNS and other services.

    Via Engadget:

    Based on Twitter reports, the source of the problem is Akamai, one of the largest content delivery networks in the world. “We are aware of an emerging issue with the Edge DNS service,” the company said in an update it posted on its website at 12:09PM ET. “We are actively investigating the issue.” As of the writing of this article, Akamai has not said what’s causing the issue.
    Ответить