Pull to refresh
183
0
Send message
Такое сравнение некорректно, вывод будет идентичен: шелл подставляет переменные окружения ещё до запуска команды, реально выполняться будут echo /usr/local/bin:… и sudo echo /usr/local/bin:…
Для корректного сравнения вторая команда должна быть, например, sudo bash -c 'echo $PATH' с одинарными кавычками.
Win2k и XP их использовали для пользовательских заметок о файлах, вкладка «Сводка» в explorer'овских свойствах файла. Потом убрали, потому что так их слишком легко убить: blogs.msdn.com/b/oldnewthing/archive/2012/05/01/10299322.aspx. BeOS не интересует возможность бэкапа, к примеру, на CD?
«Windows 7 64-бит»? Возможно, он хочет компилятор, способный генерировать 64-битные бинарники? В Express Edition такой просто отсутствует, а в других редакциях, возможно, по умолчанию не поставился. Тут — wiki.cython.org/64BitCythonExtensionsOnWindows — рекомендуют ставить SDK и указывать специальной переменной окружения, чтобы distutils использовал прописанные в PATH бинарники, а не лез в реестр за папками студии.
в нём есть встроенная поддержка проверки границ массивов для отладочной версии программы, которая отключается при компилировании оптимизированной версии

Что толку от проверки, которая включена только в отладочном режиме? Ошибки в безопасности, как правило, при нормальной работе не проявляются, нужно скормить программе специально подобранные данные. Злобные хакеры-то будут смотреть на конечный продукт, в котором компилятор заботливо отключил проверки.
он полностью совместим с кодом C/C++ на уровне объектных файлов, что позволяет получить прямой доступ к функциям и классам, написанным на C/C++ и наоборот

Даже сам C++ несовместим с кодом C++ на уровне объектных файлов. Нестандартизированного манглинга имён уже достаточно, чтобы объектные файлы от разных компиляторов были несовместимы, а уж когда появляются исключения — а они всегда появляются, мало кто использует new(nothrow) — то на переносимости можно смело ставить крест.
bib.tiera.ru/b/46520 — прямая ссылка на .djvu, например. Вообще поиск по названию статьи «Modular elliptic curves and Fermat's last theorem».
Есть утверждения, эквивалентные гипотезе Римана, но не задействующие ни комплексных чисел, ни бесконечных рядов. Простейшее в формулировке: сумма значений функции Мёбиуса по числам от 1 до N есть O(N^{1/2+epsilon}) для любого epsilon>0. Без ограничения общности epsilon можно считать рациональным и даже просто 1/2m, тогда утверждение эквивалентно (\sum_{n=1}^N \mu(n))^{2m} = O(N^{m+1}) для любого натурального m, тогда для формулировки даже не нужно уметь извлекать корни, только возведение в натуральноую степень.
Здесь есть целая коллекция маленьких программ, включая 62-байтный HelloWorld и маленькие аналоги стандартных утилит типа base64 (256 байт), hexdump (202 байта), ls (1017 байт) и даже компилятор BrainF*ck в 166 байт, создающий столь же маленькие программы: http://www.muppetlabs.com/~breadbox/software/tiny/.
Рядом лежат несколько утилит для работы с ELF: http://www.muppetlabs.com/~breadbox/software/elfkickers.html.
Ради доступа к gs: не нужно играть с ассемблером, он для более серьёзных вещей нужен. Для доступа к gs: есть intrinsic-псевдофункции __readgs{byte,word,dword,qword} и __writegs{byte,word,dword,qword}.
Рантайм не следит за PEB, так что подмена PEB не заставляет кэш обновляться. Наблюдаемый эффект объясняется следующим образом: на момент первого вызова _wdupenv_s unicode-кэша просто нет, потому что до этого никакие unicode-функции работы с окружением не вызывались. Следовательно, первый вызов _wdupenv_s лезет в текущее окружение — в котором NewVar есть — кэширует его и возвращает информацию из текущего окружения. Следующий вызов возвращает кэшированную информацию, поэтому не видит, что PEB изменён.

Пример программы нетипичен. С одной стороны, используется функция main, а не wmain, так что компоновщик выбирает startup-код в ANSI-версии, который заполняет кэш _environ, но не _wenviron. С другой стороны, сама функция main вызывает w-функции. Если заменить main на wmain — дописать одну букву в коде, ага, — эффект исчезнет.
Far умеет обе сортировки, Ctrl+F12 -> флажок «Использовать числовую сортировку». Настройка для панелей независимая.
Та же статья упоминает ещё bat-ники, для которых нет понятия перекомпиляции, и конфиги — которые, например, могут адресовать иконки из системных DLL. Кроме того, в случае больших программ вместо «перед компиляцией правим две цифры в путях» вполне может оказаться «перекомпилируем под x64, программа перестаёт работать в том числе из-за этого, непонятные возникшие баги прослеживаем до модуля, который был написан уволившимся пять лет назад человеком, проклинаем Microsoft и отказываемся от поддержки x64».
P.S. Если что, я не защищаю и не обвиняю MS, я привожу ссылки на информацию. Но, по крайней мере, есть определённый смысл в этом безумии.
Raymond Chen объясняет: technet.microsoft.com/en-us/magazine/ff955767.aspx + поправка в blogs.msdn.com/b/oldnewthing/archive/2010/12/31/10110525.aspx. Если вкратце — в мире оказалось слишком много программ с захардкоженным именем папки System32, и чтобы их не сломать, оказалось проще ввести перенаправление на уровне файловой системы.
Плюс ещё время должно быть однородным. Обычно это подразумевается, но лучше уточнить. Если вероятности переходов зависят от номера шага, то легко построить контрпример, где вероятность остаться в игре убывает как угодно.
Вероятность не закончить её за n ходов.
Либо да, либо существует ненулевая вероятность бесконечно долгой игры.
Ячейка жордановой нормальной формы из одного числа (x) после возведения в степень N становится равной (x^N); поскольку |x|<1, то это экспоненциальное убывание. Ячейка 2*2, то есть (x 1 // 0 x), после возведения в степень N становится равной (x^N Nx^{N-1} // 0 x^N), то есть опять же экспоненциальное убывание. Для больших размеров аналогично — когда матрица фиксирована, при возведении в растущую степень появляются вещи типа C N^k x^N, где C, k, x фиксированы и |x|<1, и при больших N это даёт экспоненциальное убывание.

В общем случае жордановых ячеек много, но они ведут себя независимо, давая в результате что-нибудь типа (x1^N 0 0 0 // 0 x2^N Nx2^{N-1} 0 // 0 0 x2^N 0 // 0 0 0 x3^N).

Замена базиса при приведении к нормальной форме просто перетасовывает эти убывающие элементы с фиксированными коэффициентами.
Есть довольно общее рассуждение.

Число состояний игры заведомо конечно, пусть оно n. Из каждого состояния с какими-то вероятностями можно завершить игру и перейти в другие состояния. Вероятности перехода сведём в матрицу M размера n*n. Рассмотрим для каждого N вектор из n чисел, i-е из которых есть вероятность того, что игра за N ходов не закончилась и находится в состоянии i. Делаем очередной ход, пусть игра не закончилась. Вероятность оказаться после этого хода в фиксированном состоянии рассчитывается по формуле полной вероятности как сумма произведений. На языке матриц это соответствует умножению вектора на M. Таким образом, после N шагов рассматриваемый вектор есть просто N-я степень матрицы M, умноженная на начальное состояние.

Рассмотрим матрицу, транспонированную к M. Сумма в i-й строке в этой матрице есть вероятность перехода из состояния i куда-нибудь; это заведомо число от 0 до 1, причём строго меньшее 1, если из состояния можно закончить игру. Легко видеть, что собственные значения у такой матрицы обязаны быть по модулю нестрого меньше единицы, причём собственное значение, равное по модулю единице, возможно только в случае наличия группы состояний, из которой нет выхода. При наличии оговорки «если удачные перестановки вообще существуют» — которая представляется выполненной — все собственные значения матрицы, транспонированной к M, по модулю строго меньше 1. Соответственно, собственные значения M тоже по модулю строго меньше 1.

Меняя базис, приводим M к нормальной форме; тогда на главной диагонали стоят числа, по модулю меньшие единицы. Возможно, на единицу вправо есть ещё что-то ненулевое, но оно не оказывает влияния на происходящее. Все остальные элементы равны нулю. При возведении в степень N все элементы матрицы экспоненциально убывают по N, так что и итоговый вектор, будучи их фиксированной линейной комбинацией, тоже экспоненциально убывает по N.
Случайную перестановку лучше генерировать «по Кнуту», второй том. Онлайн, например, здесь: http://neerc.ifmo.ru/mediawiki/index.php/Метод_генерации_случайной_перестановки,_алгоритм_Фишера-Йетса. При вашем подходе не будет равновероятности всех перестановок — хотя бы потому, что 36^(2*1000) не делится на 36!..
На 18! можно было бы делить, если бы порядок был неважен. Поскольку порядок важен, то просто 36! с поправкой на неразличимость мастей.
Во-первых, 36! / (4! ^ 9) ~ 1.4e29. Во-вторых, это только число вариантов для начального расклада, а там дальше ещё вносится случайность «Важно чтобы карты со стола… при этом также перетасовывались (чтобы исключить возможность циклов)», так что перебор существенно больше. Между прочим, похоже, что возможна сколь угодно длинная партия — если всё время будет случаться неудачная перетасовка — но вероятность партии длины >=N экспоненциально убывает по N — если удачные перестановки вообще существуют, — так что матожидание числа ходов конечно.
Очевидно, имеется в виду Windows Research Kernel aka WRK — несколько урезанные исходники ядра, без HAL и драйверов. Но с ними просто так не ознакомиться — нужно убедить Microsoft, что это нужно, чтобы студентов учить принципам, лежащим в основе ОС.

Information

Rating
Does not participate
Registered
Activity