Змея / Говнокод #26837 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 gost, (Updated )

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

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

    Давайте течь от «Numba»!
    Ответить
    • Кстати, а эта нумба-юмба только помеченные функции джитит или можно на всю прогу как в джаве?
      Ответить
      • Только помеченные, и ещё можно весь мудуль заджитить, если в конце добавить «jit_module(nopython=True)».
        Ответить
      • > 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».
            Ответить
    • 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-питушню со сдвигами или флоатами?
      Ответить
  • охуенно, например
    def slow():
        for i in range(20000):
            for x in range(i):
                n = x * i
    
    
    slow()


    Было
    real    0m22.132s
    user    0m22.197s
    sys     0m0.197s


    После добавления
    @jit(nopython=True)
    def slow():


    стало
    real    0m0.872s
    user    0m0.950s
    sys     0m0.243s
    Ответить
    • Ну что-то туповат он. Кресты бы вообще этот код нахуй выкинули т.к. он не имеет смысла. Сделай хотя бы n += x * i и верни результат.

      Или 0.9 это просто время на запуск питона и джит?
      Ответить
      • ща вставлю туда писание в /dev/null и првр 🙂

        Все равно же круто, не?
        Ответить
      • лол, нумба не умеет виз

        numba.core.errors.NotDefinedError: Variable '$12setup_with.1' is not defined.
        Ответить
          • да, нумба для "чистых" функций, лол)
            Ответить
            • Подтверждаю. Это что-то типа «Цайтон»-а, только неявного. Ей можно даже бинарные мудули конпелировать, которые не будут требовать «Нумбу» для запуска (пример из доки):
              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 в листинге всё же мог насторожить препода. Хотя мой одногруппник сдавал ему отчёты со скриншотами 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 процесс, открывшый хендл клипборда?
                          Ответить
                          • Не знаю, там нахуеверчено сложностей. Хэндлов никаких не открывается. Сейчас попробую код глянуть.
                            Ответить
                              • Хм, а как они его по юзерам разводят если объект один? Или он не один?
                                Ответить
                                • Клипборд скорее всего связан с workstation

                                  Помнишь говноиерархию винды: сесстия, workstation, desktop?


                                  ps: угадал
                                  https://docs.microsoft.com/en-us/windows/win32/winstation/window-stations

                                  A window station contains a clipboard, an atom table, and one or more desktop objects. Each window station object is a securable object. When a window station is created, it is associated with the calling process and assigned to the current session.


                                  Скорее всего не угадал, а у Руссиновича читал и вспомнил
                                  Ответить
                            • > Сейчас попробую код глянуть.
                              Не, нихуя, там внутри просто дёргается системный вызов ntdll!NtUserOpenClipboard. Какой багор )))
                              Ответить
                                • Не знаю, я в код ядра сейчас не могу залезть.
                                  Ответить
                              • а так внутрях что? Почему там не может братся синглтон обък, и записываться в таблицу хендлов процесса?
                                Впрочем, я не знаю, конечно. Просто обычно виндуос так работает
                                Ответить
                                • > Почему там не может братся синглтон обък, и записываться в таблицу хендлов процесса?
                                  Потому что все хэндлы процесса я проверил, и новых там не появляется.
                                  Впрочем, у этой задачи есть более конвенционный метод решения:
                                  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;
                                  Ответить
                                  • Понятно. Стало быть, во внутренних структурах ядра храница знание о засранце, и найти его можно через ClipboardOwner
                                    Ответить
                                    • А давай портируем на прыщи?

                                      При использовании PRIMARY данные копируются прямо из программы в программу, но всегда можно выделить в другой программе, если source зависнет.

                                      А как работает CLIPBOARD (который по ctrl-c) я не знаю, надо читать.
                                      Кажеися, он хранит говно в clipboard manager
                                      Ответить
                                  • В общем я подумал, как на 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
                                    Ответить
                                      • А у Xorg нету троттлинга?)

                                        Алсо, такого питуха легко найти по высокому CPU в top.

                                        Впрочем, если вставить туда sleep(500), то ситуация может измениться
                                        Ответить
                                      • #include <X11/Xlib.h>
                                        
                                        int main() {
                                        		Display *display = XOpenDisplay(NULL);
                                        		Atom selections[2] = {XInternAtom(display, "CLIPBOARD", 0), XInternAtom(display, "PRIMARY", 0)};
                                        
                                        		while (1) {
                                        			for(int i = 0; i < 2; i++) {
                                        				XSetSelectionOwner(display, selections[i], None, 0);
                                        			}
                                        		}
                                        }


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

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

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

                                                      Кто вообще придумал называть клипборд буфером?

                                                      Это вчесть буферов?
                                                      Ответить
                                                      • Послушайте, как они на наш буфер обмена говорят! Клипбоааард. Тьфу!
                                                        Ответить
                                                        • вообще русификация МС это лул

                                                          Брандмауэр
                                                          Веб-узел
                                                          Все эти бесконечные диспетчеры, менеджеры, обозреватели всемирных паутин, ужас
                                                          Ответить
                                                                • Брандмауэр не надо было переводить вовсе. Файрвол ничем не хуже брандмауэра.

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

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

                                                                  Клипборд я бы назвал доской, он же и есть доска по сути
                                                                  Ответить
                                                                  • > Файрвол ничем не хуже брандмауэра.
                                                                    Подтверждаю. Это даже переводом назвать сложно: просто взяли и вместо кальки с английского сделали дословную кальку с немецкого. Какой анскилл )))

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

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

                                                                      >браузер
                                                                      Ну теперь-то уже да, но в w95 мог бы быть и просмотрщик

                                                                      Буфер обмена -- интуитивный? Что такое буфер для обычного человека?
                                                                      Ответить
                                                                      • Был плакат по технике безопасности: «Берегись буферов».
                                                                        Ответить
                                                                      • Неважно, кто его знает, кроме пожарных.

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


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

                                                                          Папка, кмк, удачный перевод, и интуитивный
                                                                          Ответить
                                                                          • Предлагаю термин «підрозділ». Так хотя бы звучит смешнее.
                                                                            Ответить
                                                                            • Есть локализованная на украинский винда? Я бы поставил
                                                                              Ответить
                                                                                • ну слов десять-пятнадцать знаю, и правила чтения знаю
                                                                                  Ответить
                                                                            • >«підрозділ»
                                                                              Тут хотя бы интуитивно догадываешься что оно значит.

                                                                              До непревзойденного чемпиона: «підрахуй» ему далеко.

                                                                              Отдельного упоминания заслуживает фразочка: «из гімном на вустах».
                                                                              Ответить
                                                                            • Никому. Так зачем менять шило на мыло, еще и усложняя жизнь тем, кто будет вынужден знать оба термина?
                                                                              Ответить
                                                                              • Хотели использовать существующие в словаре слова. Возможно, пример профдеформации переводчиков.

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

                                                                                      До этого в винде была возможность фильтровать траффик, но ручная и сложная

                                                                                      Норрмальный файр завели в XP SP2.

                                                                                      Выставленная в Интернет w2k жила минут тридцать, потом становилась рассадником червей, и еще минут через пять падала в синий экран

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

                                                                            Это дайректори, блядь, а фолдер это выдумка МС.

                                                                            >сосноли
                                                                            терминале!!11111
                                                                            Ответить
                                                                            • > а фолдер это выдумка МС

                                                                              Ну дык так и есть. Папки бывают виртуальные, никак не связанные с каталогом на файлухе. Тот же список принтеров или сетевое окружение.
                                                                              Ответить
                                                                            • А была ещё «Макось» классическая, в которой файлы назывались «вилками», потому что состояли из нескольких «зубцов»: данных и ресурсов. А в некоторых системах файлы с точки зрения API являются «потоками». А ещё они могут быть «объектами».
                                                                              Ответить
                                                                              • Вопрос к почтеннной публике

                                                                                Почему тред это поток, а не нить (Кстати, MS так именно и переводила)?

                                                                                Почему поток? Чтобы со стримом путать?
                                                                                Ответить
                                                                                • Кстати, бывает fiber и thread. Если thread — это нить, то fiber — это волокно?
                                                                                  Ответить
                                                                                  • именно волокно, это легкий тред
                                                                                    Ответить
                                                                                • > Почему тред это поток, а не нить (Кстати, MS так именно и переводила)?
                                                                                  Потому что «thread» и «fiber» — это разные вещи.
                                                                                  Ответить
                                                                                  • причем тут файбер вообще?
                                                                                    thread это нить по английски

                                                                                    зы: файбер можно перевести как волокно
                                                                                    Ответить
                                                                                      • волокно же

                                                                                        optical fiber: оптоволокно

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

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


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

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

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

                                                                                                    Вопрос в том, был ли термин "поток выпонения" в 80-е

                                                                                                    Если был, то тогда всё понятно
                                                                                                    Ответить
                                                                                                    • Многонитность

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

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

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

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

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

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

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

                                                                                                                Везде прогресс, короче.
                                                                                                                Ответить
                                                                                                                • Мой банк был вынужден всех нуждающихся перевести на карты с дисплеем, чтобы мочь подписывать. До этого единственный способ был - "токен" на обычной флешке, на котором лежал серт, который через жава аплет в интернет-банке цеплялся и работал. Жава аплеты выпиздили из более чем любого браузера, даже фаерфокс лтс (ESR что-ли) пал год+ назад
                                                                                                                  Ответить
                                                                                                                      • Если такая карта только для одноразового пароля, то что мешало банкам изначально выдавать брелки-токены?

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

                                                                                                                        Какой нигерийский твиттер )))
                                                                                                                        Ответить
                                                                                                                            • ну пока жаба работала, и старого говна хватало
                                                                                                                              там была флешка на 256МБ с фирменным корпусом и говёным ушком, которая просто как диск определялась в системе

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

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

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

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

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

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

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


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

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

                                                                    "Обозреватель" банально проще произносить, чем "просмортртрсчик".
                                                                    Ответить
                                                                    • Ну если доска это Машка, но буфера это то, что есть у Ирки. При чём тут клипборд?)

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

                                                А иначе или катбуферы, или хуй

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

        io не джитится, нельзя в нулл писать, надо возвращать значение
        Ответить
      • @jit(nopython=True)
        def slow():
            p = 0
            for i in range(20000):
                for x in range(i):
                    p += x * i
            return p
        
        print(slow())

        теперь честно?

        19996666816665000
        
        real    0m0.880s
        user    0m0.943s
        sys     0m0.197s
        Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8