1. Python / Говнокод #26837

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    from numba import jit
    
    
    def mults_no_jit(start, end, step):
        min_i = min(start, end)
        for i in range(start, end, step):
            if i < min_i:
                return
            for j in range(i, end, step):
                x = i * j
                x_orig = x
                x_reverse = 0
                while x > 0:
                    x_reverse *= 10
                    x_reverse += x % 10
                    x //= 10
                if x_orig == x_reverse:
                    min_i = max(min_i, j)
                    yield x_orig
                    break
                    
    
    @jit(nopython=True)
    def mults_jit(start, end, step):
        min_i = min(start, end)
        for i in range(start, end, step):
            if i < min_i:
                return
            for j in range(i, end, step):
                x = i * j
                x_orig = x
                x_reverse = 0
                while x > 0:
                    x_reverse *= 10
                    x_reverse += x % 10
                    x //= 10
                if x_orig == x_reverse:
                    min_i = max(min_i, j)
                    yield x_orig
                    break
    
    
    print(timeit.timeit('max(mults_no_jit(999, 99, -1))', globals=globals(), number=100))
    # 4.2907474 секунды
    
    print(timeit.timeit('max(mults_jit(999, 99, -1))', globals=globals(), number=100))
    # 0.1662201 секунд первый запуск, 0.0333973 последующие

    Теперь я за «Numba».

    Запостил: gost, 02 Августа 2020

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

    • Ускорилось в 128.5 раз.

      Давайте течь от «Numba»!
      Ответить
      • Кстати, а эта нумба-юмба только помеченные функции джитит или можно на всю прогу как в джаве?
        Ответить
        • Только помеченные, и ещё можно весь мудуль заджитить, если в конце добавить «jit_module(nopython=True)».
          Ответить
      • > parallel=True

        О, даже AssParallel подвезли.
        Ответить
        • > AssParallel

          Если к жопе приспособить
          Сопроцессор фирмы Cray,
          Можно срать в два унитаза,
          В сорок тысяч раз быстрей!
          Ответить
    • А на сишке сколько?
      Ответить
      • Сейчас проверим.
        Ответить
      • Максимально заинлайненная версия на крестах («MSVC», Release x64) — 25.891 миллисекунд против 33.3973 миллисекунд у ЖИТуха и 80.52 миллисекунд у ЙАЖАСцрипт. Время, разумеется, на 100 операций. UPD: спать пора, время не нормированное, а просто на 100 операций.
        #include <algorithm>
        #include <chrono>
        #include <iostream>
        #include <vector>
        
        long getMaxPalindrome(long start, long end)
        {
            long maxPalindrome = 0;
            long maxI = std::min(start, end);
        
            for (long i = start; i > end; i--) {
                if (i < maxI) {
                    return maxPalindrome;
                }
        
                for (long j = i; j > end; j--) {
                    long x = i * j;
                    long xOrig = x;
                    long xReverse = 0;
        
                    while (x > 0) {
                        xReverse *= 10;
                        xReverse += x % 10;
                        x /= 10;
                    }
        
                    if (xOrig == xReverse) {
                        maxI = std::max(maxI, j);
                        maxPalindrome = std::max(maxPalindrome, xOrig);
                        break;
                    }
                }
            }
        
            return maxPalindrome;
        }
        
        int main()
        {
            using Clock = std::chrono::high_resolution_clock;
            std::vector<Clock::duration> results = {};
        
            for (size_t i = 0; i < 20; i++) {
                auto start = Clock::now();
                for (size_t j = 0; j < 100; j++) {
                    volatile long x = getMaxPalindrome(999, 99);
                }
                results.push_back(Clock::now() - start);
            }
        
            Clock::duration bestTime = results.front();
            std::cout << "Milliseconds per 100 ops:";
            for (auto && x : results) {
                std::cout << " " << std::chrono::duration_cast<std::chrono::microseconds>(x).count() / 1000.0f;
                bestTime = std::min(bestTime, x);
            }
            std::cout << std::endl;
            std::cout << "Best milliseconds per 100 ops: " << std::chrono::duration_cast<std::chrono::microseconds>(bestTime).count() / 1000.0f;
        
            return EXIT_SUCCESS;
        }
        Ответить
        • ЙАЖАСцрипт:
          function* mults(start, end) {
              let min_i = end;
              for (let i = start; i > end; i--) {
                  if (i < min_i) {
                      return;
                  }
                  for (let j = i; j > end; j--) {
                      let x = i * j;
                      let x_orig = x;
                      let x_reverse = 0;
                      while (x > 0) {
                          x_reverse *= 10;
                          x_reverse += x % 10;
                          x =~~ (x / 10);
                      }
                      if (x_orig == x_reverse) {
                          min_i = Math.max(min_i, j);
                          yield x_orig;
                          break;
                      }
                  }
              }
          }
          
          function get_palindrom(start, end) {
              let max_x = 0;
              for (const x of mults(start, end)) {
                  max_x = Math.max(max_x, x);
              }
              return max_x;
          }
          
          console.time('get_palindrom');
          for (let i = 0; i < 100; i++) {
              get_palindrom(999, 99);
          }
          console.timeEnd('get_palindrom');  // get_palindrom: 80.52001953125ms

          На генераторах, как и в ЖИТухе.
          Ответить
        • Как из описания функции понять, что start должен быть больше end?
          Ответить
          • А х.з., походу он уже засыпал на ходу пока этот код писал. Так то ничто не мешало сделать for (long i = end; i > start; i--) и юзать привычный порядок аргументов.

            З.Ы. А, понял, в оригинале ещё step был.
            Ответить
            • > он уже засыпал на ходу пока этот код писал
              Подтверждаю. В оригинале сигнатура копировала range(), потом мне надоело писать «, -1».
              Ответить
      • Спокойной ночи.
        Ответить
    • @jit(nopython=True)

      Мне уже нравится.
      Ответить
      • A common pattern is to decorate functions with @jit as this is the most flexible decorator offered by Numba. 
        
        @jit essentially encompasses two modes of compilation, first it will try and compile the decorated function in no Python mode, if this fails it will try again to compile the function using object mode. 
        
        Whilst the use of looplifting in object mode can enable some performance increase, getting functions to compile under no python mode is really the key to good performance. 
        
        To make it such that only no python mode is used and if compilation fails an exception is raised the decorators @njit and @jit(nopython=True) can be used (the first is an alias of the second for convenience).


        Именно поэтому за «no python mode».

        >runtime using the industry-standard LLVM compiler library
        Интересно, скоро там протечёт абстракция выявят какую-нибудь machine specific UB-питушню со сдвигами или флоатами?
        Ответить
    • показать все, что скрытоvanished
      Ответить
      • Ну что-то туповат он. Кресты бы вообще этот код нахуй выкинули т.к. он не имеет смысла. Сделай хотя бы n += x * i и верни результат.

        Или 0.9 это просто время на запуск питона и джит?
        Ответить
        • показать все, что скрытоvanished
          Ответить
        • показать все, что скрытоvanished
          Ответить
          • nopython же. Пиши как на сишке ;)
            Ответить
            • показать все, что скрытоvanished
              Ответить
              • Подтверждаю. Это что-то типа «Цайтон»-а, только неявного. Ей можно даже бинарные мудули конпелировать, которые не будут требовать «Нумбу» для запуска (пример из доки):
                from numba.pycc import CC
                
                cc = CC('my_module')
                # Uncomment the following line to print out the compilation steps
                #cc.verbose = True
                
                @cc.export('multf', 'f8(f8, f8)')
                @cc.export('multi', 'i4(i4, i4)')
                def mult(a, b):
                    return a * b
                
                @cc.export('square', 'f8(f8)')
                def square(a):
                    return a ** 2
                
                if __name__ == "__main__":
                    cc.compile()
                
                # If you run this Python script, it will generate an extension module
                named my_module. Depending on your platform, the actual filename
                may be my_module.so, my_module.pyd, my_module.cpython-34m.so, etc.

                https://numba.pydata.org/numba-doc/latest/user/pycc.html
                Ответить
            • >Пиши как на сишке ;)

              Зачем тогда нужен Питух? Я и на Сишке могу писать «как на сишке».
              Ответить
              • Напомнило мне, как когда-то давно я сдавал лабу на питоне. Сначала программа выполнялась за секунд 50. Потом я переписал её с псевдосишного стиля на питонячий, она стала выполняться за 3 секунды. Я очень расстроился, потому что мне нужно было, чтобы выполнение шло подольше :)
                Ответить
                • Всегда можно добавить sleep.
                  Ответить
                  • sleep в листинге всё же мог насторожить препода. Хотя мой одногруппник сдавал ему отчёты со скриншотами CPU-Z и норм
                    Ответить
                  • > Всегда можно добавить sleep.
                    // OpenClipboard may fail if another application has opened the clipboard.
                    // Try up to 8 times, with an initial delay of 1 ms and an exponential back off
                    // for a maximum total delay of 127 ms (1+2+4+8+16+32+64).
                    bool OpenClipboardRetry(HWND hwnd) noexcept {
                    	for (int attempt=0; attempt<8; attempt++) {
                    		if (attempt > 0) {
                    			::Sleep(1 << (attempt-1));
                    		}
                    		if (::OpenClipboard(hwnd)) {
                    			return true;
                    		}
                    	}
                    	return false;
                    }
                    // ...
                    HWND hNotepad_plus = ::FindWindow(Notepad_plus_Window::getClassName(), NULL);
                    for (int i = 0 ;!hNotepad_plus && i < 5 ; ++i)
                    {
                        Sleep(100);
                        hNotepad_plus = ::FindWindow(Notepad_plus_Window::getClassName(), NULL);
                    }

                    https://github.com/notepad-plus-plus/notepad-plus-plus/blob/d55350b4b5db71889d0a92aabe5ae10d41c92507/scintilla/win32/ScintillaWin.cxx#L2251
                    https://github.com/notepad-plus-plus/notepad-plus-plus/blob/3de506bf48c53c424ef1e52d623f1d949465102b/PowerEditor/src/winmain.cpp#L480

                    Какой sleep )))
                    Ответить
                    • А как это выглядит для пользовтеля?
                      "Подождите, пытаемся открыть клипборд"?
                      Ответить
                      • Хм, т.е. если прога откроет клипборд и повиснет, то во всей системе больше ничего не скопипастить?

                        Какая архитектура )))
                        Ответить
                        • Opens the clipboard for examination and prevents other applications from modifying the clipboard content., лал


                          Добирусь до винды, и попробую
                          Ответить
                          • Там не только modifying, там даже простая вставка не работает, лол.
                            Ответить
                        • Подтверждаю.
                          #include <iostream>
                          #include <windows.h>
                          
                          int main()
                          {
                              std::cout << "OpenClipboard(): " << OpenClipboard(NULL) << std::endl;
                              Sleep(5000);
                              std::cout << "CloseClipboard(): " << CloseClipboard() << std::endl;
                          
                              return 0;
                          }

                          — после запуска программы в течение пяти секунд «Ctrl+V» в принципе не работает. Какой багорище )))
                          Ответить
                          • А через 5 секунд ось таки отбирает его у проги? А тьфу, ты сам закрыл.
                            Ответить
                            • Неа, не отбирает. Запустил слип побольше, уже около минуты буфер обмена выключен.
                              Ответить
                              • Ваш буфер обмена заблокирован для предотвращения незаконного копирования информации. Чтобы разблокировать его отправьте смс...
                                Ответить
                          • какой багор)

                            А как понять, кто держит клипборд? Это же просто объект в object manager? Можно найти через procexp процесс, открывшый хендл клипборда?
                            Ответить
                            • TerminateProcess(GetProcessHandleFromHwnd(GetOpenClipboardWindow()))!
                              Ответить
                            • Не знаю, там нахуеверчено сложностей. Хэндлов никаких не открывается. Сейчас попробую код глянуть.
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                              • > Сейчас попробую код глянуть.
                                Не, нихуя, там внутри просто дёргается системный вызов ntdll!NtUserOpenClipboard. Какой багор )))
                                Ответить
                                • Мьютекс внутри что ли?)
                                  Ответить
                                  • Не знаю, я в код ядра сейчас не могу залезть.
                                    Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                  • > Почему там не может братся синглтон обък, и записываться в таблицу хендлов процесса?
                                    Потому что все хэндлы процесса я проверил, и новых там не появляется.
                                    Впрочем, у этой задачи есть более конвенционный метод решения:
                                    std::cout << "OpenClipboard(): " << OpenClipboard(NULL) << std::endl;
                                    HWND wnd = GetClipboardOwner();
                                    std::cout << "ClipboardOwner: " << wnd << std::endl;
                                    DWORD procId = 0;
                                    std::cout << "GetWindowThreadProcessId(): " << GetWindowThreadProcessId(wnd, &procId) << std::endl;
                                    std::cout << "PID: " << procId << std::endl;
                                    std::cout << "CloseClipboard(): " << CloseClipboard() << std::endl;
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                    • В общем я подумал, как на X11 портировать, и кажется, что никак: слишком там всё асинхронно.

                                      Есть два режима копирования:
                                      * Cut buffers
                                      * Selection

                                      Cut buffers используется только xterm (из изветных мне прог), и просто означает, что программа кладет строку в проперти корневого окна. Имя проперти CUT_BUFFER[0-9].

                                      Покладка происходит через XChangeProperty, и завесть что-то этой операцией сложно.

                                      В Selection программа сообщает иксам, что у нее есть selection (SetSelectionOwner) и имя селекшена. Оно может быть любым, но обычно оно или CLIPBOARD или PRIMARY.
                                      Принято выделение автоматом считать PRIMARY, а результат ctrl-c / "+y /M-w -- CLIPBOARDом.

                                      Потом другая прога говорит иксам XConvertSelection, сообщая имя проперти окна, в которое она просит положить селекшен.

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

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

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

                                      Тогда прога получит уведомление SelectionClear.

                                      Использованная макулитература
                                      https://tronche.com/gui/x/icccm/sec-2.html
                                      https://tronche.com/gui/x/icccm/sec-3.html
                                      Ответить
                                      • while (1) SetSelectionOwner();
                                        Ответить
                                        • показать все, что скрытоvanished
                                          Ответить
                                        • показать все, что скрытоvanished
                                          Ответить
                                          • Ну это, конечно, уже специальная атака. А на винде и случайно может отвалиться если ошибку какую-нибудь криво обработали.
                                            Ответить
                                            • показать все, что скрытоvanished
                                              Ответить
                                              • > данные сохраняются даже после закрытия программы

                                                А вот не все, кстати. Помнишь как ворд спрашивает про большие куски текста?
                                                Ответить
                                                • показать все, что скрытоvanished
                                                  Ответить
                                                  • Ну он пишет что-то в духе "у вас в буфере большой текст, оставить его?" То ли просто память экономит то ли реально лимит есть на хранение без самой проги.
                                                    Ответить
                                                    • В Ворде ж вроде какой-то свой хитрый буфер?

                                                      https://support.microsoft.com/en-us/office/use-the-office-clipboard-028903c7-66ea-4eb0-b0a1-bacdb952e3a1
                                                      Ответить
                                                      • показать все, что скрытоvanished
                                                        Ответить
                                                        • Послушайте, как они на наш буфер обмена говорят! Клипбоааард. Тьфу!
                                                          Ответить
                                                          • показать все, что скрытоvanished
                                                            Ответить
                                                            • А как надо?
                                                              Ответить
                                                              • Что именно?
                                                                Ответить
                                                                • Как надо было перевести?
                                                                  Ответить
                                                                  • Брандмауэр не надо было переводить вовсе. Файрвол ничем не хуже брандмауэра.

                                                                    Вебузел это вебсайт

                                                                    Обозреватель мог быть просмотрщиком

                                                                    Клипборд я бы назвал доской, он же и есть доска по сути
                                                                    Ответить
                                                                    • Пюпитр!
                                                                      Ответить
                                                                      • ну не пюпитр же, скорее такая хуня
                                                                        https://chrissainty.com/content/images/2020/04/copy-to-clipboard-in-blazor.jpg
                                                                        Ответить
                                                                        • > copy-to-clipboard-in-blazor

                                                                          первое что подумал: ёба, а как же они это на сервере обрабатывают?*

                                                                          *https://en.wikipedia.org/wiki/Blazor
                                                                          Ответить
                                                                    • > Файрвол ничем не хуже брандмауэра.
                                                                      Подтверждаю. Это даже переводом назвать сложно: просто взяли и вместо кальки с английского сделали дословную кальку с немецкого. Какой анскилл )))

                                                                      > Обозреватель мог быть просмотрщиком
                                                                      Браузер же, не?

                                                                      > Клипборд я бы назвал доской, он же и есть доска по сути
                                                                      Тут, ИМХО, нормально сделали. Буфер обмена — достаточно интуитивный перевод. А вот что делает доска — хрен поймёшь.
                                                                      Ответить
                                                                      • показать все, что скрытоvanished
                                                                        Ответить
                                                                        • Был плакат по технике безопасности: «Берегись буферов».
                                                                          Ответить
                                                                        • Неважно, кто его знает, кроме пожарных.

                                                                          Слово бы прижилось, если бы:
                                                                          1) не звучало как название главы Некрономикона
                                                                          2) не было созвучно с браузером, который совсем про другое
                                                                          3) у обычного юзера не вызывало бы лёгкую дрожь, ибо требовался ин-же-нер


                                                                          Давай ещё доебёмся до директорий/папок/каталогов
                                                                          Ответить
                                                                          • Зачем придумывать слово, которое никому не известно? Чем оно хуже файрвола?

                                                                            Папка, кмк, удачный перевод, и интуитивный
                                                                            Ответить
                                                                          • Директории/каталоги и папки кстати и на инглише разные названия имеют. Директории это больше о сосноли и файлухе, а папки - это то, что ты в проводнике видишь.
                                                                            Ответить
                                                                            • показать все, что скрытоvanished
                                                                              Ответить
                                                                              • Джанни Сосноли и Клаудиа Терминале.
                                                                                Ответить
                                                                              • > а фолдер это выдумка МС

                                                                                Ну дык так и есть. Папки бывают виртуальные, никак не связанные с каталогом на файлухе. Тот же список принтеров или сетевое окружение.
                                                                                Ответить
                                                                              • А была ещё «Макось» классическая, в которой файлы назывались «вилками», потому что состояли из нескольких «зубцов»: данных и ресурсов. А в некоторых системах файлы с точки зрения API являются «потоками». А ещё они могут быть «объектами».
                                                                                Ответить
                                                                                • показать все, что скрытоvanished
                                                                                  Ответить
                                                                                  • Кстати, бывает fiber и thread. Если thread — это нить, то fiber — это волокно?
                                                                                    Ответить
                                                                                  • > Почему тред это поток, а не нить (Кстати, MS так именно и переводила)?
                                                                                    Потому что «thread» и «fiber» — это разные вещи.
                                                                                    Ответить
                                                                                    • показать все, что скрытоvanished
                                                                                      Ответить
                                                                                      • И «fiber» — тоже нить.
                                                                                        Ответить
                                                                                        • показать все, что скрытоvanished
                                                                                          Ответить
                                                                                          • Ну а волокно — это вообще какая-то питушня. «Поток исполнения», «поток команд» — простые и интуитивно-понятные термины, в отличие от этой швейной питушни.

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


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

                                                                                                > они называются корутинами
                                                                                                Это похожие понятия, основное различие же в том, что корутины — это коньструкции языка (путухона, метатаблы, etc.), а фиберы — системный объект. В «Винде», например: https://docs.microsoft.com/en-us/windows/win32/procthread/fibers.
                                                                                                Ответить
                                                                                                • А потоки это типа термин из компьютер сайнс? "поток исполнения", и потому треды стали потоками?
                                                                                                  Ответить
                                                                                                  • > А потоки это типа термин из компьютер сайнс?
                                                                                                    Да. https://ru.bmstu.wiki/Поток_выполнения, например.

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

                                                                                                        В данном центральном ~~вычислительном~~ узле обработки используется технология гипер-нитности
                                                                                                        Ответить
                                                                                                        • > Многонитность
                                                                                                          Однонитная система, тканевая система, технология гипер-ткани. Охуенно!
                                                                                                          Ответить
                                                                                                        • > обработки

                                                                                                          Обработки информации?
                                                                                                          Ответить
                                                                                                        • показать все, что скрытоvanished
                                                                                                          Ответить
                                                                                                          • НЖМД всё ещё можно встретить и в 2020 году в официальной документации

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

                                                                                                                Так-то много ярдов въебали в автоматизацию ФНС, чтобы потом обнаружить, что бля как так, она же вся сделана на дотнете и микросовте, пришлось потратить ещё пару сотен на анализ, как же им бедолагам теперь перейти на импортозамещение (потратили, выяснили, что никак). ФНС такие пидарасы, что юрлицо с ЭЦП может с ними только через винду или макос взаимодействовать, причем проверка осуществляется прежде всего по юзер-агенту - если в прыщах оставить как есть, тогда "ваш компьютер неверно настроен, иди нахуй", если сменить на фейковый, мол, винда, тогда "о, ищем плагин ваш для ГОСТа, ой, у вас его походу нет".

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

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

                                                                                                                  А в некоторых банках вообще ЭЦП физлица удобно совмещён с ключом самого банка.

                                                                                                                  Везде прогресс, короче.
                                                                                                                  Ответить
                                                                                                                  • Мой банк был вынужден всех нуждающихся перевести на карты с дисплеем, чтобы мочь подписывать. До этого единственный способ был - "токен" на обычной флешке, на котором лежал серт, который через жава аплет в интернет-банке цеплялся и работал. Жава аплеты выпиздили из более чем любого браузера, даже фаерфокс лтс (ESR что-ли) пал год+ назад
                                                                                                                    Ответить
                                                                                                                    • > карты с дисплеем
                                                                                                                      - это чо за зверь такой?
                                                                                                                      Ответить
                                                                                                                      • https://newsroom.mastercard.com/press-releases/mastercard-introduces-next-generation-display-card-technology-a-first-for-singapore/
                                                                                                                        Ответить
                                                                                                                        • Если такая карта только для одноразового пароля, то что мешало банкам изначально выдавать брелки-токены?

                                                                                                                          P.S. To tweet this news, copy and paste http://bit.ly/TI3a90 to your Twitter handle with the hashtags #MasterCard, #DisplayCard

                                                                                                                          Какой нигерийский твиттер )))
                                                                                                                          Ответить
                                                                                                                          • какие брелки токены изначально?
                                                                                                                            Ответить
                                                                                                                            • Типа такие

                                                                                                                              https://www.microcosm.com/images/products/h3-c100.jpg
                                                                                                                              Ответить
                                                                                                                              • ну пока жаба работала, и старого говна хватало
                                                                                                                                там была флешка на 256МБ с фирменным корпусом и говёным ушком, которая просто как диск определялась в системе

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

                                                                                                                                  А так это дело привычки, конечно.

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

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

                                                                                                                                      А на такой карте на кнопках остаются следы или царапины? Не сможет ли потом плохой дядя, глянув на карту, примерно понять, на какие кнопки чаще всего нажимали?

                                                                                                                                      А то просто вспомнился "опыт" хабрабляди с графическим паролем на телефоне
                                                                                                                                      Ответить
                                                                                                                • показать все, что скрытоvanished
                                                                                                                  Ответить
                                                                                                                  • Система «Налог-3» написана на .NET.
                                                                                                                    @
                                                                                                                    объявляешь конкурс за 150млн, чтобы выявить, что Система «Налог-3» несовместима с Альт Линукс
                                                                                                                    @
                                                                                                                    просишь 3.3 ярда
                                                                                                                    @
                                                                                                                    дают 15
                                                                                                                    @
                                                                                                                    посылаешь нахуй юрлицо, которое посмело попытаться зайти на сайт не через ынтернет эксплорр

                                                                                                                    https://www.cnews.ru/news/top/2020-04-08_v_perspektive_10_let_fns_smozhet


                                                                                                                    Читайте другие новости по теме: Ишак или падишах?
                                                                                                                    Ответить
                                                                                        • Ну thread (нить) скручен из fiber'ов (волокна? х.з. как они правильно). Всё логично как бы.
                                                                                          Ответить
                                                                            • Plan 9 не соглашается.
                                                                              Ответить
                                                                    • Доска это Машка из параллельной группы, при чём тут клипборд?)

                                                                      Могу согласиться разве что с тем, что брандмауэр уже можно было переименовать в межсетевой экран (принимая во внимание, что такое слово в русском языке было, а вот файрвол вроде как нет), а остальное вкусовщина.

                                                                      "Обозреватель" банально проще произносить, чем "просмортртрсчик".
                                                                      Ответить
                                              • Ну и кстати с теми же кедами вроде ставился менеджер клипборда, с которым ничего не терялось.
                                                Ответить
                          • XGrabServer(XOpenDisplay(0));
                            Ответить
                          • Какой багор )))
                            Ответить
                          • показать все, что скрытоvanished
                            Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • #include <windows.h>
                              
                              int main() {
                                  OpenClipboard(NULL);
                                  Sleep(INFINITE);
                                  return 0;
                              }
                              Ответить
                              • Так не интересно. Нужно чтобы через раз работало.
                                Ответить
                                • Какое злодейство )))
                                  Ответить
                                  • У одного моего знакомого что-то произошло с «Шиндошз», в результате после копирования любого фрагмента текста в буфер (даже из одного символа) стало вываливаться окно то ли о нехватке памяти, то ли о недопустимой операции. Хорошо хоть, не синий экран. Починить смогли только переустановкой системы. Какой анскилл )))
                                    Ответить
                                    • Надо было через точку восстановления
                                      Ответить
                                      • Кстати, почему зелёным? Есть реальные примеры, когда точка восстановления таки нашлась и после «восстановления» стало ещё хуже?
                                        Ответить
                                        • Ну, на самом деле, просто потому, что я не уверен, что это всегда поможет.

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

                                              Экзешники и дллки пропадают, к примеру. Виндовые чекпоинты - странная штука. Такое ощущение, что у них *.exe на системном диске в чекпоинт входит.
                                              Ответить
                                              • Так вроде программы, установленные позже ТВ, и должны "пропадать" или о чём речь?
                                                Ответить
                                                • Дык не установленные, просто скачанные или скомпиленные. Валялись, никого не трогали и вдруг пропали на откате.
                                                  Ответить
                                              • показать все, что скрытоvanished
                                                Ответить
                                                • Ну у меня с рабочего стола пропадали на тестовой тачке. Я их туда сам положил, наебнул тачку, откатил чекпоинт и они пропали. А остальные файлы в каталоге с ними остались.

                                                  Хотя может у меня и глюки, конечно. На своей тачке я никогда не занимался такой хуйнёй, поэтому работу чекпоинтов я видел всего пару-тройку раз.
                                                  Ответить
                                              • > Такое ощущение, что у них *.exe на системном диске в чекпоинт входит.

                                                - я бы не удивился, в принципе.

                                                Макось вон все скачанные app-файлы заботливо себе помечает, чтобы потом можно было вывести попап про неизвестного издателя.
                                                Ответить
                                                • «Windows» тоже помечает. Точнее не сама «Windows», а все популярные веб-браузеры: если скачанный экзешник сохранить в файловой системе «NTFS», то к нему прилепится альтернативный поток с именем :Zone.Identifier, в котором лежит цифровой код (типа номера зоны безопасности, список зон есть в реестре). При попытке запуска такого экзешника вывалится окно с предупреждением в зависимости от настроек в реестре указанного номера зоны.
                                                  Ответить
                                                • > Макось вон все скачанные app-файлы заботливо себе помечает, чтобы потом можно было вывести попап про неизвестного издателя.
                                                  Все современные браузеры заботливо добавляют ко всем скачанным файликам NTFS-поток «Zone.Identifier», чтобы винда могла заботливо вывести окошко о страшной опасности, таящейся в файлах из интернета. Некоторые время назад «Chrome» записывал туда ещё и ссылку, с которой файл был скачан, но из-за небольшого бурления эту фичу выпилили.
                                                  Ответить
                                                  • Подозреваю, что в Макоси тоже браузеры участвуют в процессе.

                                                    Потому что она орёт и на проекты XCode, скачанные в интернете (даже с сайта эппла, лол), но при этом спокойно относится к проектам, стянутым по git'у
                                                    Ответить
                                                  • > но из-за небольшого бурления эту фичу выпилили
                                                    Проверил, не выпилили. Причём записывается не только прямая ссылка на скачивание, но и referer, откуда этот файл скачали. Какая приватность )))
                                                    Ответить
                                                  • «Орега» на «Presto» вроде не добавляла такой поток. Другие примеры исключений вспомнить не могу.

                                                    Надо разметить раздел с системой «FAT32», чтобы на нём сохранять все скачанные файлы. Тогда они будут запускаться без предупреждения.
                                                    Ответить
                                                    • Можно на флешку сохранять
                                                      Ответить
                                                      • показать все, что скрытоvanished
                                                        Ответить
                                                        • А флешку можно отформатировать в ntfs?

                                                          Или это я с дискетами перепутал?)
                                                          Ответить
                                                          • Можно. Но в «NTFS» обычно форматируют разделы, которые больше 32 гигов, а флешки обычно не больше.
                                                            Ответить
                                                            • А разве exFat не может >32?

                                                              в NTFS обычно форматируют флешки, чтобы сделать их бутявыми для bios или его эмуляции
                                                              Ответить
                                                              • exFAT может. Но вопрос был про то, где можно встретить NTFS.

                                                                Хотя в NTFS флешки форматируют всё же целенаправленно, когда на них нужны символические и жёсткие ссылки, альтернативные потоки, ACL — вот это всё, в частности, для запуска с них Винды.
                                                                Ответить
                                                                • для запуска с них винды нужен $Boot, а он бывает тока на NTFS.

                                                                  Собственно, бывает два стула:
                                                                  * Флешка в exFAT, но тогда тебе нужен UEFI, который найдет там boot.efi (или как там его) и запустит винду
                                                                  * Флешка с NTFS, и тогда можно эмуляицю BIOS / Legacy, которая найдет MBR, оттуда скакнет в $Boot и грузанёт винду.
                                                                  Ответить
                                                    • А отключать эту «фичу» вот так: https://devblogs.microsoft.com/oldnewthing/20140311-00/?p=1543.
                                                      My Little Program about manipulating the zone identifier for downloaded files
                                                      appears to have struck a nerve with commenter Tess, who launched into some sort
                                                      of diatribe about how Microsoft should stop being a busybody and warning users
                                                      about opening files that they downloaded. You are welcome to disable the feature
                                                      if it offends you so. In the Group Policy editor, go to
                                                      User Configuration, Administrative Templates, Windows Components, Attachment Manager,
                                                      and enable Do not preserve zone information in file attachments. For bonus points,
                                                      you can set a bunch of other policies to make your computer even more dangerous.
                                                      Here’s a list of them. For example, if your goal is to create the most insecure
                                                      deployment of Internet Explorer, you can set Inclusion list for moderate risk file
                                                      types and Inclusion list for low risk file types both to *.*, and then on top of
                                                      that, set Launching applications and unsafe files to Enabled (not secure) so that
                                                      Internet Explorer never warns you about running anything.
                                                      
                                                      Welcome to 1995. Enjoy your stay.
                                                      Ответить
                                                      • показать все, что скрытоvanished
                                                        Ответить
                                                        • «Групповую политику» можно добавить одной строчкой в реестре, если знаешь имя ключа.

                                                          Кстати, эта политика вроде запрещает создавать «Zone.Identifier» только «Интернет Эксплореру». Вроде ещё «Хром» использует групповые политики, но он, кажется, использует свои ключи групповых политик, а политику для «Интернет Эксплорера» может проигнорировать. С другими браузерами хуже: они вообще не знают про групповые политики.
                                                          Ответить
                                                          • Пусть в реесте может быть не документирован. Если так, то лучше наверное напямую его не трогать
                                                            Ответить
                                                            • Помнишь, мы обсуждали какой-то говнофреймворк, который депрекейтят и заменяют другим чуть ли не в каждой версии «Windows»? То у них «user shell folders», то «библиотеки», то ещё какое-то говно?

                                                              Фрагмент реестра «Висты»:
                                                              [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
                                                              "!Do not use this registry key"="Use the SHGetFolderPath or SHGetKnownFolderPath function instead"

                                                              Да, прямо ключ с таким названием и с таким значением. А ниже идут ключи для совместимости со старыми программами, которые ещё не перешли на принципиально новый фреймворк:
                                                              "Local AppData"="C:\\Users\\user\\AppData\\Local"
                                                              "My Video"="C:\\Users\\user\\Videos"
                                                              "AppData"="C:\\Users\\user\\AppData\\Roaming"
                                                              "My Pictures"="C:\\Users\\user\\Pictures"
                                                              И так далее.
                                                              Ответить
                                                              • P.S. Нашёл это говно:
                                                                https://govnokod.ru/24872#comment434927
                                                                https://govnokod.xyz/_24872/#comment-396017
                                                                Ответить
                                                          • Проверил, «Vivaldi» и «Firefox» политике подчиняются.
                                                            Ответить
                                                            • там не может быть какой-нито метод в WinHTTP/WinInet, который они все юзают, и он обеит полиси?
                                                              Ответить
                                                              • Вряд ли, скорее всего просто вручную чекают флаг.
                                                                Ответить
                                                              • WinInet используется только движком «Trident». Остальные браузеры инициируют tcp-соединения напрямую.

                                                                Голосую за гипотезу gost'а: они просто подглядывают флажки.
                                                                Ответить
                                                                • показать все, что скрытоvanished
                                                                  Ответить
                                                                  • Вот это говно: https://github.com/chromium/chromium/blob/master/components/services/quarantine/quarantine_win.cc#L79.
                                                                    QuarantineFile() вызывает либо SetInternetZoneIdentifierDirectly(), добавляющую поток напрямую (в случае пустых файлов и если второй способ не сработал), либо вызывает InvokeAttachmentServices(), которая дёргает функции из виндового IAttachmentExecute (в частности, IAttachmentExecute::Save()), которые централизованно обрабатывают загруженный файл в соответствии с локальными политиками: могут, например, уведомить антивирус или удалить файл, если он запрещён.
                                                                    Ответить
                                                                    • HRESULT hr = ::CoCreateInstance(CLSID_AttachmentServices, nullptr, CLSCTX_ALL, IID_PPV_ARGS(&attachment_services));

                                                                      Нахрюк и кукарек в одной строчке.
                                                                      Ответить
                                                                      • показать все, что скрытоvanished
                                                                        Ответить
                                                                        • «punk» — это указатель на «unknown» (в статью не заглядывал)?
                                                                          Ответить
                                                                          • показать все, что скрытоvanished
                                                                            Ответить
                                                                            • Офтопик.

                                                                              Панки́ — остановочный пункт Рязанского направления Московской железной дороги в городе Люберцы Московской области. Находится в границах станции Люберцы I.

                                                                              Бывшая узловая станция. Назван в 1929 году по деревне Панки.

                                                                              ...

                                                                              Деревня Панки упомянута в документах как минимум XVIII века, когда в 1771 году чума выкосила половину населения Люберец и Панков.

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

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

                                                          Я ещё напоминаю, что «редактор групповых политик» («gpedit») в редакции «Старпёр», «Хоум» и подобные не вкладывают. Нужно приобретать лицензию «Ынтырпрайз», «Ультимейт» или подобные. Ну или установить «gpedit» вручную, спиздив нужные файлы из максимальной редакции «Windows» (это вроде считается нарушением лицензии).
                                                          Ответить
                                                          • я, кстати, так и не понял как в шиндошс x64 ставить неподписанные дрова, кроме как загружать её в «Тестовый режим»
                                                            даже групповые политики не дохуя помогли
                                                            Ответить
                                                            • > тестовый режим

                                                              Ты же про testsigning в bcdedit? Только так и ставить, насколько я знаю. Это проверки на уровне ядра/загрузчика, им насрать на все эти ваши политики.
                                                              Ответить
                                                              • именно в нем
                                                                Ответить
                                                                • В десятке предполагается, что все дрова подписаны в MS. Кроме тех, что ты разрабатываешь сам и запускаешь на тестовой тачке.

                                                                  И если вендор железки не дал тебе подписанные дрова - то он ленивый пидор.
                                                                  Ответить
                                                                  • А можно в локальное хранилище сертификатов добавить собственный корневой сертификат и подписать драйвера им?
                                                                    Ответить
                                                                    • Нет. Если я не туплю, там в само ядро зашит намертво корневой серт майкрософта. А если включен secure boot, то оно и опции в bcdedit игнорит.

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

                                                                      З.Ы. И в общем-то оно и правильно. Если доверять какой-то рандомной хуйне на диске аля "локальному хранилищу сертов", то в чём вообще защита?
                                                                      Ответить
                                                                  • ну тут не вендор ленивый пидор, а все по списку, включая меня
                                                                    https://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
                                                                    мне поебать, что там в углу будет написано в виртуалке, в целом, работает и ладно

                                                                    федоробляди так-то выпускают бандл с сетап.ехе (возможно, в нём будут подписанные РХ дрова, я хз), но они с какого-то хера решили, что теперь только для шиндошс 10 надо делать (ваша виртуальная шиндошс нами уже не поддерживается, иди нахуй) - это же вполне так обыденно выделить 30+ лишних виртуальных гигов на системные папки современной винды, чтобы более лучше тормозило и побольше бекдор говносервисов запускалось, пока тебе от системы нужен только офис открыть и распечатать
                                                                    Ответить
                                                                    • Какой багор )))
                                                                      Ответить
                                                                    • > kvm

                                                                      У него, если я не туплю, есть hyper-v интерфейс для винды. Как раз чтобы дрова не ставить. Можно в эту сторону копнуть. Х.з. конечно насколько это всё рабочее.
                                                                      Ответить
                                                                    • > с какого-то хера решили

                                                                      Дык а что сейчас есть кроме десятой винды? Семёрка всё. А 8.1 вряд ли кто-то юзает.

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

                                                                          Там же гемор... Надо сначала тесты прогнать и логи майкам отправить. На тачке с каждой версией операционки, да. Возможно, что они эту тачку уже ёбнули на радостях.
                                                                          Ответить
                                                                        • А, лол. У них нету подписи от майков, только своя с кроссом (под secure boot не взлетит, в остальных случаях сойдёт). Ну значит ленивые пидоры. Свою то подпись поставить дело пары минут.
                                                                          Ответить
                                                                          • Кстати, зачем вообще нужен этот «secure boot», под которым половина всего не работает?
                                                                            Ответить
                                                                            • Чтобы злая уборщица тебе не присунула чего-нибудь на ноут. В общем-то больше ни для чего.
                                                                              Ответить
                                                                            • Ну и от буткитов наверное. Но это сейчас не актуально, имхо. Сейчас в моде банальное вымогательство, а там и юзерских прав хватает.
                                                                              Ответить
                                                                        • > но спермёрку-то за що?..
                                                                          Extended support ended on January 14, 2020
                                                                          Ответить
                                                      • Когда только вышла Win8, помню, там был багор, когда SmartScreen блокировала экзешники и никак это было не отключить
                                                        Ответить
                                                  • Почитал, на Маке примерно то же самое, что и в Винде.

                                                    Upon download of an application, a particular extended file attribute ("quarantine flag") can be added to the downloaded file.[10] This attribute is added by the application that downloads the file, such as a web browser or email client, but is not usually added by common BitTorrent client software, such as Transmission, and application developers will need to implement this feature into their applications and is not implemented by the system. The system can also force this behavior upon individual applications using a signature-based system named Xprotect.[11]
                                                    Ответить
                      • Просто не работает.
                        Ответить
        • показать все, что скрытоvanished
          Ответить
        • показать все, что скрытоvanished
          Ответить

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