Меня всегда раздражало, что я не могу запустить 64-битную игру на C# под MS-DOS. Сегодня я это исправил.
Рубрика «ненормальное программирование» - 22
Запускаем игру на C# в MS-DOS
2020-01-21 в 13:24, admin, рубрики: .net, C#, безопасники плачут, ненормальное программирование, Программирование, прямой доступ к памятиПочему быстрая сортировка на самом деле медленная? Новый метод сортировки массива
2020-01-21 в 8:37, admin, рубрики: c++, merge sort, mergesort, newgenerationsort, O(n), quick sort, quicksort, Алгоритмы, алгоритмы сортировки, быстрая сортировка, ненормальное программирование, Программирование, сортировка вставками, сортировка выбором, сортировка нового поколения, сортировка слияниемМногие программисты думают, что Quick Sort — самый быстрый алгоритм из всех существующих. Отчасти это так. Но работает она действительно хорошо только если правильно выбран опорный элемент (тогда сложность составляет O (n log n)). В противном же случае асимптотика будет примерно такой же как и в пузырика (то-есть O (n2)).
При этом, если массив уже отсортирован, то алгоритм всё-равно будет работать не быстрее, чем за O (n log n)
Исходя из этого, я решил написать свой алгоритм для сортировки массива, который работал бы лучше за quick_sort. И если массив уже отсортирован, то не прогонять его кучу раз, как это бывает у многих алгоритмов.
«Дело было вечером, делать было нечего», — Сергей Михалков.
Требования:
- Лучший случай O (n)
- Средний случай O (n log n)
- Худший случай O (n log n)
- В среднем быстрее быстрой сортировки
А теперь давайте обо всём по порядку
Чтобы наш алгоритм всегда работал быстро, нужно чтобы в среднем случае асимптотика была хотя бы O (n log n), а в лучшем — O (n). Все мы прекрасно знаем, что в лучшем случае сортировка вставками работает за один проход. Но в худшем ей придётся гонять по массиву столько раз, сколько в нём элементов.
Максимальное количество значений в enum Часть I
2020-01-10 в 0:14, admin, рубрики: enum, java, ненормальное программирование, никто не читает тегиЧасть первая, теоретическая | Часть вторая, практическая
По мотивам твита от Evgeny Mandrikov aka godin:
В нём он задаётся вопросом, какое максимальное количество значений может быть определено в перечислении (enum
) в Java. После ряда экспериментов и применения чёрной магии ConstantDynamic (JEP 309) автор вопроса приходит к числу 8191.
В серии из двух статей поищем теоретические пределы числа элементов в перечислении, попробуем к ним приблизиться на практике и попутно выясним, чем может помочь JEP 309.
Терминальные забавы: 10 классических консольных приколов
2020-01-07 в 8:30, admin, рубрики: linux, Блог компании RUVDS.com, ненормальное программирование, Программирование, Разработка под LinuxПоловина длинных новогодних каникул уже позади и сейчас самое время вспомнить бородатые шутки юниксовых админов.
Текстовые оболочки в UNIX-подобных ОС пригодны не только для выполнения внутренних команд, запуска различных утилит и написания скриптов. Результаты работы некоторых программ могут позабавить забредших на огонек гостей. Редакция блога RUVDS поздравляет читателей с Рождеством и предлагает вспомнить классические консольные шутки, радующие уже многие поколения системных администраторов.Читать полностью »
Неразгаданная загадка
2020-01-04 в 5:25, admin, рубрики: ASCII, SSTV, загадка, ненормальное программированиеПриветствую тебя дорогой читатель!
В этой статье я расскажу о своем опыте сделать «крутой квест» и как все накрылось медным тазом что у меня получилось. На момент публикации статьи до конца не дошел ни один из участников, поэтому если тебе интересно попробовать и, возможно, получить приз, то ниже тебя ждет QR код. Разгадав кодовую фразу, отправляй её на следующую почту: mysterious_2020@mail.ru
Если же тебе просто интересно почитать чего я там наворотил, то просто продолжай читать.
Читать полностью »
Рисуем морозные узоры на SQL
2019-12-30 в 8:43, admin, рубрики: dba, postgresql, sql, sql tips and tricks, Алгоритмы, базы данных, визуализация данных, математика, ненормальное программирование, рекурсияНемного SQL-магии под катом: математика, рекурсия, псевдографика.
Вспоминаем под Новый год формулу угла между векторами:
Читать полностью »
ELFийские трюки в Go
2019-12-29 в 15:56, admin, рубрики: asm, debug, disasm, elf, Go, golang, x86, zydis, Компиляторы, ненормальное программирование, системное программированиеВ этой заметке мы научимся получать машинный код Go функции прямо в рантайме, распечатаем его с помощью дизассемблера и по пути узнаем несколько фокусов вроде получения адреса функции без её вызова.
Предупреждение: ничему полезному эта мини-статья вас не научит.
Реактивное программирование, стоит ли бросать все и нестись навстречу мечте
2019-12-24 в 8:02, admin, рубрики: java, reactive programming, sarcasm, высокая производительность, ненормальное программирование, Программирование, функциональное программированиеЕще одна статья про реактивное программирование. И только не надо на этой строчке закатывать глаза и томным голосом говорить вслух — "Ну что еще ты можешь мне рассказать про реактивное программирование… а?". Она немного отличается от кучи других, написаных словно под копирку, поэтому некоторые вещи в ней могут показаться… странными или даже совершенно неуместными, как сортирный юмор.
Совершенно не важно, знаешь ли ты наизусть reactive manifesto, присутствует ли в твоем утреннем кофе бекпрешур, трогаешь ли ты вот этими вот своими ручками всякие паблишеры и сабскрайберы или пишешь старый добрый синхронный, блокирующийся код. А может быть только недавно, кто-то своим откровенно рекламным докладом про светлое будущее и потоковый оргазм (ну или струйный, тут тонкости перевода решают все), от использования одной из реактивных библиотек конечно-же, зажег в твоих глазах интерес к новой технологии.
Будет интересно.
В поисках LD_PRELOAD
2019-12-19 в 20:19, admin, рубрики: C, ld_preload, libc, linux, ptrace, информационная безопасность, ненормальное программирование, системное администрированиеЭта заметка была написана в 2014-м году, но я как раз попал под репрессии на хабре и она не увидела свет. За время бана я про неё забыл, а сейчас нашёл в черновиках. Думал было удалить, но авось кому пригодится.
В общем, небольшое пятничное админское чтиво на тему поиска «включенного» LD_PRELOAD.
Читать полностью »
Транскомпилируемые языки: проекты конвертации код-в-код
2019-12-17 в 12:03, admin, рубрики: Блог компании Mail.Ru Group, ненормальное программирование, ооп, Программирование, транскомпиляторы, транспиляторы, языки, языки программирования
Источник: Ward Cunningham
Транспиляция — это конвертация кода одного языка в другой. С помощью специального транспилера (транскомпилятора) один язык программирования общего назначения можно перенести на любой другой язык программирования общего назначения.
Если необходимо переключиться на другой язык, транспилеры помогут разработчикам сохранить бóльшую часть существующего кода, не переписывая весь код вручную. Например, при преобразовании программ из Python 2 в Python 3, или при переносе софта от старого API в новый.
Термины «транспилер» и «транскомпилятор» часто взаимозаменяемы, но все же считается, что различия есть. Например, для преобразования кода C++ в C потребуется транспилер, а для конвертации Python-Ruby — транскомпилятор. Babel для JavaScript — это транспилер, а TypeScript — транскомпилирумый язык.
Иногда после конвертации транспилером для правильной работы кода требуется ручная настройка, в то время как в транскомпилируемых языках код должен работать без изменений. Сегодня поговорим о тех и о других, но главное — расскажем о популярных транс-проектах, которые разработчики могут использовать в повседневной работе.
Читать полностью »