Рубрика «ненормальное программирование» - 31

Магические трансформации типов данных в Rust: Интринсика mem::transmute<T, U> - 1

Введение

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

Одной из них является наш сегодняшний экземпляр — интринсика mem::transmute<T, U>, предназначенная для того и другого понемногу, пригождаясь в крайне необычных ситтуациях.

Читать полностью »

Восхождение на Эльбрус — Разведка боем. Техническая Часть 1. Регистры, стеки и другие технические детали - 1Как и обещали, продолжаем рассказывать про освоение процессоров Эльбрус. Данная статья является технической. Информация, приведенная в статье, не является официальной документацией, ведь получена она при исследовании Эльбруса во многом как черного ящика. Но будет безусловно интересна для лучшего понимания архитектуры Эльбруса, ведь хотя у нас и была официальная документация, многие детали стали понятны только после длительных экспериментов, когда Embox все-таки заработал.

Напомним, что в предыдущей статье мы рассказали про базовую загрузку системы и драйвер последовательного порта. Embox запустился, но для дальнейшего продвижения были нужны прерывания, системный таймер и, конечно, хотелось бы включить какой-то набор unit-тестов, а для этого нам нужен setjmp. В этой статье речь пойдет о регистрах, стеках, и других технических деталях, необходимых для реализации всех этих вещей.
Читать полностью »

Хотелось бы рассказать один интересный механизм работы с конфигурацией распределённой системы. Конфигурация представлена напрямую в компилируемом языке (Scala) с использованием безопасных типов. В этом посте разобран пример такой конфигурации и рассмотрены различные аспекты внедрения компилируемой конфигурации в общий процесс разработки.

Жизненный цикл конфигурации

(english)

Читать полностью »

PHP. Фееричная расстановка точек над кавычками - 1
По поводу микрооптимизаций PHP путем замены двойных кавычек на одинарные сломано столько копий, что внести свежую струю довольно проблематично. Но я попробую.

В данной статье будет всего один бенчмарк, куда же без него, а основной упор сделан на разбор того, как же оно устроено внутри.
Читать полностью »

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

image

О решении, позволившем моей девушке возвращаться домой вовремя, можно прочитать под катом.
Читать полностью »

Ужать аналог Space Invaders в 1 килобайт (оригинал 1978 года занимает 8) - 1

Эта игра, в значительной мере вдохновлённая Space Invaders, написана с нуля для ATtiny2313 и отправлена на недавно прошедший конкурс 1-килобайтных программ на Hackaday.

Непросто поместить такую игру в 1024 байта. Но автор решил получить в результате полнофункциональную игру с подсчётом очков, звуком и VGA-видеовыходом с разрешением в 640х480 и частотой в 60 Гц.

Разумеется, весь код полностью написан на ассемблере, причём для генерации звука и видео запрограммировано получение точных временных интервалов.

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

Строчная частота в 31,5 кГц берётся в той же процедуре за основу при получении звуков.

Процедура обработки прерывания отнимает 90% машинного времени, поэтому вся логика игры просчитывается во время обратного хода луча. Несколько конечных автоматов управляют перемещением персонажей, определением положения ракет, и т.п.Читать полностью »

Прим. пер.: Встретил сегодня в твиттере очень забавный, на первый взгляд, тред. А потом пригляделся и понял, что он не только забавный, но и занятный. А раз уж так сложилось, что сегодня пятница, то решил, что стоит поделиться обнаруженным и с товарищами:)

image

Сохраните следующую программу в /tmp/quine.pl

Illegal division by zero at /tmp/quine.pl line 1.

Запустите её командой

perl /tmp/quine.pl

и она выведет свой собственный код.

«Квайны-обманки» довольно просто сочинять на многих языках программирования, где ошибка синтаксиса в исходнике провоцирует парсер на вывод ошибки, которая бы совпадала с исходным текстом программы. Я опубликовал несколько подобных «обманок» у себя в Twitter, включая следующую:

  File "quine.py", line 1
    File "quine.py", line 1
   ^
IndentationError: unexpected indent

Но перловый квайн в начале этой заметки — это обманка совершенно другого рода — программа разбирается корректно.Читать полностью »

Сегодня — 4 апреля — в 13 часов по Москве начнется финал Международной студенческой олимпиады по программированию (ICPC), в котором примут участие 10 российских команд. Их представляют университеты из пяти городов: Москвы, Санкт-Петербурга, Екатеринбурга, Саратова и Архангельска. Сильнейшие зарубежные соперники — Стэнфорд, Шанхайский транспортный университет и MIT.

Финал ICPC 2019

Последние семь лет кубок мира ICPC передавали друг другу команды российских университетов. Удастся ли россиянам завоевать золото в восьмой раз, можно будет наблюдать в прямом эфире. Читать полностью »

SlowPochta — мессенджер негарантированной доставки сообщений с неопределенным временем пересылки - 1

Проблема избыточной скорости работы

Несмотря на статьи о том, что всё плохо и не оптимизировано, наверное вы могли заметить, что всё вокруг стало как-то быстро, даже слишком. Куда делись те душевные деньки, когда между загрузками страниц мы могли позволить себе заварить чашечку чая? Скоро во время очередного приступа прокрастинации не получится оправдаться тем, что что-то компилируется или рендерится! Все станет очень быстрым.

О проблеме избыточной скорости работы приложений, а конкретно мессенджеров и пойдет речь в текущей статье.
Читать полностью »

Триллион маленьких шинглов - 1

Источник изображения:www.nikonsmallworld.com

Антиплагиат – это специализированный поисковик, о чем уже писали ранее. А любому поисковику, как ни крути, чтобы работать быстро, нужен свой индекс, который учитывает все особенности области поиска. В своей первой статье на Хабре я расскажу о текущей реализации нашего поискового индекса, истории его развития и причинах выбора того или иного решения. Эффективные алгоритмы на .NET — это не миф, а жесткая и продуктивная реальность. Мы погрузимся в мир хеширования, побитового сжатия и многоуровневых кешей с приоритетами. Что делать, если нужен поиск быстрее, чем за O(1)?

Если кто-то еще не знает, где на этой картинке шинглы, добро пожаловать…

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js