Как стать автором
Обновить
164
0.3

Человек

Отправить сообщение

Из пушек по воробьям. Генерация и решение лабиринта не самым обычным способом

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров4.9K

На уходящей неделе мне попалась симпатичная, хоть и не новая мини‑серия статей на Дзен‑канале @zdgzdgzdg про процедурную генерацию лабиринта методом «коллапса волновой функции». Пока я читал эти статьи и знакомился с кодом, меня осенило: ведь это же вычисления в комонаде, погружённые в монаду! Я не издеваюсь, действительно, речь идёт о композиции двух паттернов функционального программирования: комонады Zipper, превращающей локальные правила в глобальное состояние, и монады Random, позволяющей генерировать случайные объекты.

И вот, в качестве баловства на выходных, я решил реализовать этот «квантовый» алгоритм генерации лабиринтов на Haskell, используя и комонады и монады, и вообще, ни в чëм себе не отказывая. И хотя язык программирования Haskell нужен не только для извращений, но именно для них он подходит идеально!

Читать далее
Всего голосов 38: ↑38 и ↓0+38
Комментарии7

Стиль написания кода на Wolfram Language

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров3.3K

Я как большой фанат Wolfram Language (WL) очень часто изучаю открытые репозитории с кодом на этом языке. Изучив достаточно много кода я заметил, что стиль написания этого кода очень сильно разнится от проекта к проекту. Но так же я изучил много встроенных пакетов в Mathematica/Wolfram Language, которые были написаны разработчиками из Wolfram Research. В большинстве случаев они были написаны еще хуже (т.е. более неструктурированно и без единого стиля) чем пакеты такого же объема и сложности в открытом доступе. Но и среди проектов на GitHub и среди пакетов в языке мне попадались те, которые действительно хорошо написаны. Постепенно у меня сформировалось понимание того стиля, который будет наиболее прост и понятен большинству пользователей WL. В этой статье я хочу поделиться своим мнением и задокументировать тот стиль и ту конвенцию, которую я постепенно выработал для себя. Возможно, это станет еще кому-то полезно и изучив от корки до корки эту статью, а лучше вызубрив, чтобы от зубов отскакивало, вы станете так быстро решать уравнения и строить графики, что...

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии28

Как советские научные книги стали артефактом у физиков и инженеров в Индии

Время на прочтение8 мин
Количество просмотров80K


В 2012 году на северо-востоке Москвы случился пожар. Загорелось старое здание с деревянными перекрытиями, огонь быстро перекинулся на соседние дома. Пожарные расчеты не могли подобраться к месту — все парковки вокруг были заставлены машинами. Огонь охватил полторы тысячи квадратных метров. Подобраться к гидранту тоже не удавалось, поэтому спасатели использовали пожарный поезд и даже два вертолета. Один сотрудник МЧС погиб в огне.

Как выяснилось позже, пожар начался в доме издательства «Мир».

Вряд ли это название что-то говорит большинству людей. Издательство и издательство, очередное привидение из советских времен, которое уже лет тридцать ничего не выпускало, но почему-то продолжало существовать. В конце нулевых оно было на грани банкротства, но каким-то образом возвращало долги, кому бы и что оно там ни было должно. Вся его современная история — это пара строк в Википедии о чехарде между всякими государственными МГУП ШМУП ФМУП, которые пылятся в папочках Ростеха (если верить Википедии, опять же).

Но за бюрократическими строчками нет ни слова о том, какое огромное наследие «Мир» оставил в Индии и как повлиял на жизнь нескольких поколений.
Читать дальше →
Всего голосов 242: ↑239 и ↓3+236
Комментарии182

Собираем автономную игру на C# в 2 килобайтах

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров20K

Моё детство пришлось на эпоху 1,44-мегабайтных дискет и 56-килобитных модемов, поэтому я всегда любил маленькие программы. Раньше можно было записать на дискету кучу мелких игр и таскать её с собой. Если программа не помещалась на дискету, я задумывался, почему — в ней много графики? Есть музыка? Возможно, она выполняет много сложных операций? Или она просто раздута?

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Всего голосов 98: ↑97 и ↓1+126
Комментарии34

Как рисовать мозаики типа «эйнштейн»

Уровень сложностиСредний
Время на прочтение39 мин
Количество просмотров2.6K

На немецком «эйнштейн» звучит как «один камень». Один - «ein», камень - «Stain». Всем известно, что под этой фамилией жил один замечательный человек, и звали его ... Но в статье речь не о нём. Речь о математической задаче по поиску одной плитки, такой чтобы составленная из неё мозаика была непериодической. «Один камень» - это про плитку. В мозаике Пенроуза таких плиток две, а хотелось бы возможности использовать только одну. Не вдаваясь в детали можно сказать, что задача одной плитки в этом году (2023) решена. Получены интересные красивые мозаики.

Сначала была найдена «шляпа эйнштейна» - плитка, похожая на шляпу. Или, по моему скромному мнению, на рубашку. Из неё можно сделать отличную непериодическую мозаику. Только, для построения используются как сами шляпы, так и их зеркальные отражения. Считать ли это одной плиткой? Можно и не считать.

Дальше была найдена плитка «черепаха». Из неё тоже можно сложить непериодическую мозаику, по тем же самым правилам. Эти два вида плиток могут, плавно меняя форму, переходить друг в друга, меняя размер граней и при этом не меняя их направление. Ещё можно сложить непериодическую мозаику одновременно из этих двух плиток. Дальше больше. У такого плавного преобразования существует средний вариант, в котором длина граней одинакова.

Оказалось, такая мозаика, в которой есть одновременно и шляпы и черепахи, при обмене формой в момент, в котором длина граней становится одинаковой, составлена из плиток полностью одинаковой формы. То есть, существует ещё одна непериодическая мозаика, в которой плитка используется уже без своего зеркального отражения. Плитка, у которой грани модифицированы так, что она позволяет только непереодическое сложение названа «Spectre» (призрак). Задача решена, теперь уже точно.

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии1

Свободная музыка со словами, созданная нейронными сетями в «Бесконечном нейронном радио»

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров7.5K

Привет, поклонники музыки! Думали ли вы о том, что наступит день, когда нейронные сети начнут генерировать музыкальные композиции в различных жанрах, начиная от Heavy Metal и заканчивая 80-ми? Недавно я выпустил большой апдейт для своего проекта с открытым исходным кодом «Нейронное радио», где музыка и подкасты созданы нейронными сетями. Однако в первых релизах музыка была без слов, и, мягко говоря, слабая. Но сегодня все изменилось. Качество музыки улучшилось, и появилась музыка со словами и голосами под жанры.

Послушать подробнее
Всего голосов 22: ↑21 и ↓1+23
Комментарии22

MIDI → Метр → MIDI

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров2.4K

Статья поведёт нас через границу, где сходятся MIDI и метрическое время. В этом путешествии мы откроем брошюру по Международной системе единиц СИ, повстречаем файлы с более чем 6000 изменений темпа, столкнёмся с ошибками округления и напишем немного кода. Звучит заманчиво? Тогда добро пожаловать!

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии1

Вся мощь паттернов в Wolfram Language

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров4.1K

Редкая птица долетит до середины Днепра, не каждый разработчик осилит все паттерны в WL. Нет ему равных языков в паттерн-матчинге. Чуден и необычен язык этот. Изобилует он точками, подчеркиваниями, да запятыми так, что в глазах рябит, да разум мутнеет.

В этой статье я постараюсь сделать как можно более подробный обзор на механизм сопоставления с образцом в Wolfram Language (WL) и покажу реальные примеры, где я сам и мои товарищи его активно используют. А также я поделюсь всеми неочевидными тонкостями работы с шаблонами, с которыми лично я столкнулся в процессе написания кода на WL. По возможности я буду приводить примеры на других языках программирования - на Python и C#. Это позволит всем, кто не знаком с WL лучше понять код и сравнить синтаксис.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии12

Прорывная концепция ракетного двигателя

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров86K

Быстрое освоение космического пространства столкнулось с проблемой, связанной с недостаточной эффективностью современных ракетный двигателей.

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

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

Читать далее
Всего голосов 240: ↑233 и ↓7+285
Комментарии491

Как я пишу на C по состоянию на конец 2023 года

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров28K
Этот год выдался переломным для моих навыков по программированию на C. Можно сказать, что я пережил слом парадигмы, что побудило меня пересмотреть привычки и весь стиль программирования. Это была крупнейшая метаморфоза моего личного профессионального стиля за долгие годы, так что я решил написать этот пост в качестве «мгновенного снимка» моих нынешних суждений и профессионального существования. Эти перемены во многом пошли на пользу моей продуктивности и организованности, поэтому, при всей субъективности того, что я скажу, в посте наверняка будут описаны и вполне объективные вещи. Я не утверждаю, что на С нужно писать именно так, как рассказано ниже, а я сам, выступая контрибьютором некоторого проекта, придерживаюсь того стиля, который там заведен. Но описанные ниже приёмы, как оказалось, очень пригодились мне при работе.
Читать дальше →
Всего голосов 38: ↑26 и ↓12+24
Комментарии91

Что вы знаете о символьном программировании?

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров17K

Кликбейтный заголовок, риторический вопрос и обещание раскрыть тайну! Не самый лучший набор, но нормального названия для статьи мне в голову не пришло. Что же здесь все таки будет? Речь пойдет о реализации символьного программирования в Wolfram Language (WL). Я не буду рассказывать про отличия от других парадигм. А также здесь точно не будет общих определений. Вместо этого я попытаюсь ответить на несколько вопросов исходя из своего личного опыта и наблюдений.

Внимание! Я не математик и не знаю haskell и lisp! И буду рад если меня поправят настоящие математики, которые с ними знакомы.

Читать далее
Всего голосов 40: ↑40 и ↓0+40
Комментарии98

Тест самых выгодных батареек AA и AAA

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров61K
Цена батареек AA/AAA на кассах супермаркетов уже достигла 300 рублей за 4 штуки, но конечно же покупать их там не стоит. Гораздо выгоднее покупать батарейки на маркетплейсах, причём если брать упаковки по 40 штук, цена будет гораздо ниже.

Чтобы провести этот эксперимент, мне пришлось купить 400 батареек: я купил и протестировал по пять видов щелочных (alkaline) батареек AA и AAA в такой упаковке, при этом цена за штуку составила от 11 до 16 рублей. Оказалось, что батарейки с близкой ценой очень сильно отличаются.



Читать дальше →
Всего голосов 121: ↑121 и ↓0+121
Комментарии76

Open-source блокнот Wolfram Language или как воссоздать минимальное ядро Mathematica на Javascript и не только

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров7.8K

На Хабре уже проскакивали упоминания о совместимых или систем-копиях Wolfram Mathematica, но реализованных на других языках, скажем, Mathics. В качестве расширения этой ниши я представляю молодую систему, которая не только воспроизводит многие ключевые функции блокнота Mathematica с нуля, но и расширяет функционал гораздо дальше, чем там, где очертил его границы Стивен Вольфрам, создав эту потрясающую систему более 30-ти лет назад.

Читать далее
Всего голосов 24: ↑23 и ↓1+36
Комментарии5

Как вырастить солёную пирамидку

Время на прочтение11 мин
Количество просмотров45K

Да кому нужна эта обычная скучная соль? Превращаем мелкие белые крупинки в потрясающие пирамидальные кристаллы в домашних условиях.

Читать далее
Всего голосов 185: ↑182 и ↓3+226
Комментарии72

Актуальный гайд по написанию простого Windows-драйвера

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров36K

В рамках данной статьи я постарался написать полноценное руководство по разработке простого драйвера под операционную систему Windows 10. Всем новичкам, заинтересованным в системном программировании рекомендую ознакомиться. Это поможет вам сделать первые шаги в разработке драйверов.

Читать далее
Всего голосов 60: ↑60 и ↓0+58
Комментарии40

Windows — причина медленного интернета

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров105K

Если вы столкнулись с «особой» проблемой медленного интернета и никакие танцы с бубном вам не помогают, то это статья для вас.

Провайдер, роутер, интернет-кабели, rg-45, обжимка, cat5e, порты, драйвера, программы уменьшающие скорость, утилиты, вирусы, настройки сетевого адаптера — это не какие-то страшные слова, на самом деле это всё не причина замедления интернета. В случае, если вы прошли всю эту цепочку и ничего не изменилось, тогда читайте дальше.

В этой статье я поделюсь своим «интересным» опытом, как я искал решение проблемы и о том, что Windows можно починить и не переустанавливать.

Читать далее
Всего голосов 138: ↑132 и ↓6+155
Комментарии316

Запуск приложений на .NET в качестве службы на Linux-системе с systemd

Уровень сложностиСложный
Время на прочтение7 мин
Количество просмотров11K
image

В этом материале будет рассмотрено, как запускать приложение .NET Core / .NET 5 в качестве сервиса под Linux. Мы воспользуемся Systemd, чтобы интегрировать наше приложение с операционной системой, научимся запускать и останавливать наш сервис, а также получать от него логи.

Чтобы организовать атаку на цепочку поставок при помощи .NET, мне потребовалось настроить DNS-сервер, который перехватывал бы те хост-имена, которые ко мне направляются. Давайте возьмём этот кейс для примера.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+40
Комментарии18

Как скачать весь интернет? Становимся датахордерами. Начинаем с SingleFileZ и yt-dlp

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров15K

У тебя часто было такое, что хочешь посмотреть какой-нибудь старый контент, но не можешь вспомнить где он находится или не можешь его найти? Возможно, автор просто удалил контент или его заставили удалить неугодное.

Со времен появления Интернета уже потеряно более 75% информации, то есть современный интернет представляет собой то ещё дырявое ведро, коллапса спасает эмиссия тиктоков.

На самом деле, большинство потерянного контента представляло интерес в основном только для нетсталкеров. Однако нельзя угадать какая информация станет критически важна ретроспективно.

Во времена цензуры и самоцензуры, а также постоянных кибератак мы начинаем наш путь добычи и защиты чужой информации.

Сохраниться
Всего голосов 31: ↑31 и ↓0+31
Комментарии26

«Пиратим» Google Chrome для Microsoft Windows 7

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров53K

Привет, Хабр!
Возможно, здесь стоило написать какое-то длинное лирическое вступление или порассуждать о морально-этической части «пиратства» продукции крупнейших корпораций, ну или хотя бы просто сказать что это моя первая статья в Вашем сообществе. Но, к сожалению, даже не задумывался над всем этим и поэтому переедем сразу к делу и по существу.

На абордаж!

Читать далее
Всего голосов 107: ↑95 и ↓12+107
Комментарии123

Язык программирования Zig

Время на прочтение14 мин
Количество просмотров41K

Первым комментарием к замечательной статье Субъективное видение идеального языка программирования оказалась ссылка на язык программирования Zig. Естественно, стало интересно, что же это такое за язык, который претендует на нишу C++, D и Rust. Посмотрел — язык показался симпатичным и в чем-то интересным. Приятный си-подобный синтаксис, оригинальный подход к обработке ошибок, встроенные сопрограммы. Данная статья является кратким обзором официальной документации с вкраплениями собственных мыслей и впечатлений от запуска примеров кода.
Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии44

Информация

В рейтинге
2 154-й
Откуда
Россия
Работает в
Зарегистрирован
Активность