ЯЗС - Ячейка Звукового Синтеза - дополнительная плата расширения для компьютера "Агат", нечто вроде примитивной звуковой карты, имеющая пять тональных и два ударных канала. Подробнее про нее можно почитать здесь: http://agatcomp.ru/agat/Hardware/SoundNCL/jzs52.shtml. Когда-то давно мне очень понравилась видео-демонстрация работы ЯЗС, и особенно понравился звук, издаваемый этим устройством. Так, как ПЭВМ Агат у меня нет, и никогда не было, а побаловаться с извлечением звуков и таймером КР580ВИ53 хотелось, появилась мысль повторить устройство, только на более доступную для меня (да наверное, и не только для меня) шину ISA-8 от компьютеров IBM PC - благо на барахолках купить любую плату с ISA шиной пока еще представляется возможным.
Программист
Базовые концепции аллокаторов
Находясь в поисках какой-то агрегированной информации о стандартных приёмах, используемых при проектировании кастомных аллокаторов, я обнаружил, что существует достаточное количество статей о том, как аллокаторы работают в C++, каких-то базовых вариантах или наоборот очень специфических версиях, но ничего достаточно общего. Попался только замечательный доклад замечательного Андрея Александреску про неправильную архитектуру std::allocator
и собственно базовые концепции построения своего нового самого крутого в мире аллокатора. Эта статья является довольно вольным переводом второй части его выступления с моими небольшими дополнениями. Конечно же, категорически рекомендую посмотреть оригинальный доклад, но, если вы любитель текстовых версий, прошу под кат.
Польша: гайд для интересующихся
Здравствуйте, дорогие хабровчане! Недавно я прочитал исчерпывающий гайд по Германии, и захотел написать что-то подобное для Польши. В статье я постараюсь описать плюсы и минусы переезда (по крайней мере для айтишника), примерную стоимость жизнь и что стоит сделать в первую очередь после переезда. Конечно подобных статей уже написано немало, но большинство либо написаны агентствами по эмиграции и не отличаются объективностью, либо просто описывают историю успешного успеха и им не хватает цифр. Разумеется, и эта статья тоже не может быть максимально объективной, но я все же попробую.
Как я портировал DOS игру
Решил портировать одну старую давно забытую игрушку с DOS на современную платформу. Эта игра, в своё время, привлекала ураганным геймплеем, неплохой разрушаемостью, возможностью включить всё оружие одновременно и устроить настоящий бедлам. В 2021 году играть в такое всё ещё интересно, но делать это в родном разрешении 640х480, как-то не очень. Поэтому решил портировать игру и накатить хай-рез патч. Получилось!
Создаем новое ключевое слово в C++
C++ - один из языков, который можно назвать "легендарным". Его история насчитывает несколько десятилетий, принципы программирования на нем революционным образом менялись не раз, а черновик стандарта уже разросся до 1800+ страниц мелкого шрифта.
На C++ есть много хороших библиотек. Но нередко изменения в самом языке делали неактуальными большие куски кода, потому что они становились менее надёжными и быстрыми по сравнению с функционалом в самом языке. Правки в стандарт имеют несоизмеримо более сильное влияние, чем любая библиотека.
В этой статье мы в учебных целях напишем для C++ поддержку нового ключевого слова defer
, которое будет работать во многом аналогично такому в языках Go и Swift. Это будет сделано через правку исходного кода Clang.
Почему твоя мама всё ещё не прогает?
Случай с бомжом
Однажды в конце декабря, когда воздух пахнет сгорающими над городом фейерверками, а улицы полны паникующих из-за цен на горошек, я решил научить программированию бомжа. Он сидел у стены в подземном переходе; мужчина средних лет с разумными глазами, не пьющий и не деградировавший, в опрятной, но очень поношенной одежде. Совершенно очевидно, что он переживал одиночество и отчаяние.
Обычно вместо денег я даю попрошайкам-мужчинам телефон отдела кадров одной курьерской компании, которая постоянно нуждается в сотрудниках. Но у него не было ног… Тогда я подумал: «Чувак, у тебя полным полно времени. Работа за компом — лучшее, что может случиться в твоей жизни. Купон со скидкой на курс по PHP — вот, что должны были положить тебе на койку туда, где раньше были ноги, когда ты очнулся после ампутации».
Я решил предложить ему изучить программирование. В его положении он должен был быть чертовски мотивирован. Но получится ли у него?
Гексагональные тайловые миры
Тайловость в играх – очень распространенное явление, особенно в играх инди сегмента. Чаще всего используют квадратные тайлы – в них проще всего задать необходимые данные, будь то карта уровня или инвентарь. Однако на квадратных и прямоугольных формах возможности подобной системы не ограничиваются.
В топовых играх конца девяностых - начала нулевых часто можно увидеть шестиугольную сетку заместо квадратной – в то время это смотрелось очень интересно, в особенности в сочетании с изометрией. Именно о работе с такими сетками и пойдет речь.
Решаем, нужен ли вам личный почтовый сервер
Большинство из нас бесит то, что владелец сервера читает нашу почту. Конечно, делают это алгоритмы, а не живые люди, но от этого не легче: мутная контекстная реклама, собранная из обрывков фраз, недостаточная безопасность, да и просто осознание того, что твою переписку может просматривать условный товарищ майор — бесят. Кого-то бесят в большей, кого-то в меньшей степени.
Еще у части специалистов есть пунктик на тему красоты почты. Хочется красивый, короткий, запоминающийся адрес, который бы показывал, что вы
У многих IT-специалистов существует запрос, который публичный почтовый сервис удовлетворить не способен. Вот только не все отдают себе отчет, чего им это будет стоить. Так что давайте разберемся, на самом ли деле вам нужен почтовый сервер или стоит приложить свою энергию в каком-то более перспективном направлении.
Как демо Memories умещается в 256 байт
Введение
Привет! Меня зовут «HellMood», а эта статья посвящена небольшой программе для MS DOS под названием «Memories». Эта программа имеет размер 256 байт, она выиграла в категории «PC 256 byte» соревнований демосцены «Revision» 2020 года, а также получила приз зрительских симпатий. Видео вывода программы можно посмотреть здесь, а видео с реакцией онлайн-аудитории и модераторов — здесь. Скачать релиз и оставить комментарии можно здесь. В этой статье будет представлен глубокий анализ программы, рассказано об исторических отсылках и этапах разработки. Статья выложена в sizecoding wiki. Она не только позволит вам понять внутреннее устройство «Memories», но и поможет самим создать нечто похожее. Изучите её! Если вы новичок в sizecoding-е (написании программ в рамках нужного размера) или в ассемблере x86, то рекомендуется начинать с основ этой wiki. Принципы понять легко, но с подробностями реализации разобраться бывает не так просто.
Краткий обзор
В этой статье мы будем говорить об отправленной на конкурс версии для DosBox (256 байт). В архиве также содержатся версии для FreeDos и Windows XP DOS, которые на момент написания поста работали не на всех компьютерах. Эти альтернативные версии были включены в архив как proof of concept, чтобы показать, что программа не только работает в эмуляторе. В категории «PC 256 bytes» соревнований «Revision» 2020 года можно было указать в качестве платформы «FreeDos» или «DosBox» (последняя в конкретной конфигурации). Как доказывают альтернативные версии, на самом деле можно модифицировать версию для DosBox так, чтобы она работала во FreeDos, MS DOS, WinXP и Win98, но статья будет не об этом.
Не морочьте мне голову со своим функциональным программированием
С другой стороны, элементы функционального стиля программирования уже проникли в промышленные языки программирования, такие как Swift и Kotlin. Разработчики этих языков прекрасно знакомы с функциональным программированием, поэтому смогли применить его «в малом», предусмотрев многие, хотя и не все, необходимые компоненты. Чем дальше — тем больше части ФП внедряются в промышленные ЯП, и тем качественнее и полнее реализуется поддержка.
Уметь программировать в функциональном стиле полезно, чтобы упрощать себе работу, и сейчас мы посмотрим, как этим воспользоваться!
Виталий Брагилевский — преподаватель ФП, теории алгоритмов и вычислений, автор книги «Haskell in Depth» и участник комитетов Haskell 2020 и наблюдательного комитета компилятора GHC.
«Современный» C++: сеанс плача с причитаниями
Здесь будет длиннющая стена текста, с типа случайными мыслями. Основные идеи:
- В C++ очень важно время компиляции,
- Производительность сборки без оптимизаций тоже важна,
- Когнитивная нагрузка ещё важней. Вот по этому пункту особо распространяться не буду, но если язык программирования заставляет меня чувствовать себя тупым, вряд ли я его буду использовать или тем более — любить. C++ делает это со мной постоянно.
Блогпост «Standard Ranges» Эрика Ниблера, посвященный ренжам в C++20, недавно облетел всю твиттерную вселенную, сопровождаясь кучей не очень лестных комментариев (это ещё мягко сказано!) о состоянии современного C++.
Даже я внёс свою лепту (ссылка):
Этот пример пифагоровых троек на ренжах C++20, по моему, выглядит чудовищно. И да, я понимаю, что ренжи могут быть полезны, проекции могут быть полезны и так далее. Тем не менее, пример жуткий. Зачем кому-то может понадобиться такое?
Давайте подробно разберём всё это под катом.
Туннели и VPN, устойчивые к DPI
Но нет, эта статья не об обществе, а о технологиях.
SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443
SSH/HTTPS/OpenVPN/Telegram и всё на одном порту?! Что?!
— Да!
- Хотите скрыть наличее у вас некоторых сервисов?
- В публичной wi-fi сети блокируется всё кроме 443 (https) порта?
- Настроили Telegram Proxy/OpenVPN и не хотите его «светить» ?
- SSH подключение к своему серверу из стран с цензурой?
На все эти вопросы ответ один — Мультиплексирование SSL/TLS соединений, или SSLH.
В посте мы рассмотрим как в 1 команду спрятать кучу сервисов за 1 портом.
Укрощаем мультимедиа с помощью ffmpeg
Внезапно ваш диск под завязку забит фотографиями и видео, а впереди новые поездки. Что делать, покупать новый, арендовать дисковое пространство на облаке, или может лучше сжать видео файлы через ffmpeg?
Впрочем зачем себя ограничивать экономией дискового пространства? Предлагаю узнать удивительные возможности обработки фотографий, аудио и видео данных, утилитами командной строки.
Приведение типов
Умный обход блокировок в Украине
В статье описывается настройка бесплатного сервиса Zaborona.Help для обхода блокировок сайтов в Украине.
Особенность конфигурации в том, что через VPN маршрутизируется трафик только к заблокированным сетям, остальные сайты работают напрямую. Работает на всех основных платформах: Windows, Linux, iOS, MacOS, Android.
VPN не влияет на скорость интернета, не подменяет IP для остальных сайтов и не мешает работе онлайн-игр, голосового трафика и т.д.
Проблемы популярных средств обхода блокировок
- Браузерные плагины — не работают для мобильных приложений, проксируют через свои сервера весь трафик. Имеют доступ к содержимому страницы и угрожают безопасности.
- Обычные VPN — маршрутизируют через свои сервера весь трафик. Влияет на скорость интернета, увеличивают задержки, подменяет IP для всех сайтов.
- Браузеры с прокси — не позволяют обойти блокировку мобильных приложений.
Процесс настройки описан на примере OpenVPN и может быть легко повторен за несколько минут.
Настройки на стороне клиента выполняются с помощью одного файла конфигурации и не требуют ручного ввода адресов и паролей.
Синхронизация состояний в многопользовательских играх
Проблема многопользовательских игр
Одна из самых сложных задач многопользовательских игр заключается в синхронизации состояний всех игроков с состоянием сервера. В Интернете есть хорошие статьи по этой теме. Однако в них не достаёт кое-каких подробностей, что может сбивать с толку новичков в программировании игр. Надеюсь, что у меня получится объяснить всё в этой статье.
Я обозначу несколько техник, обычно используемых для решения таких задач. Прежде чем переходить к проблеме, давайте вкратце рассмотрим принцип работы многопользовательских игр.
Обычно программа игры должна симулировать следующее:
изменения в окружении с учётом времени и вводимых игроками данных.
Игра — это программа, хранящая состояние, поэтому она зависит от времени (реального или логического). Например, PACMAN симулирует окружение, в котором постоянно перемещаются призраки.
Многопользовательская игра не является исключением, однако из-за взаимодействия игроков её сложность намного выше.
Корректирующие коды «на пальцах»
Корректирующие (или помехоустойчивые) коды — это коды, которые могут обнаружить и, если повезёт, исправить ошибки, возникшие при передаче данных. Даже если вы ничего не слышали о них, то наверняка встречали аббревиатуру CRC в списке файлов в ZIP-архиве или даже надпись ECC на планке памяти. А кто-то, может быть, задумывался, как так получается, что если поцарапать DVD-диск, то данные всё равно считываются без ошибок. Конечно, если царапина не в сантиметр толщиной и не разрезала диск пополам.
Как нетрудно догадаться, ко всему этому причастны корректирующие коды. Собственно, ECC так и расшифровывается — «error-correcting code», то есть «код, исправляющий ошибки». А CRC — это один из алгоритмов, обнаруживающих ошибки в данных. Исправить он их не может, но часто это и не требуется.
Давайте же разберёмся, что это такое.
Для понимания статьи не нужны никакие специальные знания. Достаточно лишь понимать, что такое вектор и матрица, как они перемножаются и как с их помощью записать систему линейных уравнений.
Внимание! Много текста и мало картинок. Я постарался всё объяснить, но без карандаша и бумаги текст может показаться немного запутанным.
Information
- Rating
- Does not participate
- Location
- Украина
- Date of birth
- Registered
- Activity