Pull to refresh
12
0
Юлия Горшкова @Yuuri

Люблю котиков, языки, ФП и биоинформатику

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

Level of difficulty Medium
Reading time 19 min
Views 4.3K

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

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

Читать далее
Total votes 38: ↑38 and ↓0 +38
Comments 7

Процедурная генерация уровней для двумерного платформера

Level of difficulty Easy
Reading time 8 min
Views 1.8K

Привет, Хабр. Меня зовут Кирилл. Я увлекаюсь геймдевом в свободное от работы время. В этой статье я поделюсь опытом разработки процедурного генератора миров для своей инди-игры Unsigned Character. Игра представляет собой платформер с бесконечным процедурным миром, который достраивается по мере продвижения игрока. Я попытался реализовать процедурную генерацию, которая выдаёт интересный и разнообразный результат. И во многом это удалось.

Читать далее
Total votes 18: ↑18 and ↓0 +18
Comments 11

Назад в будущее? Квантовый ластик с отложенным выбором

Reading time 8 min
Views 34K
На Хабре периодически появляются статьи и комментарии о чудесах квантовой физики: квантовом ластике и слабых измерениях. К сожалению, слишком часто о них говорят как о загадочных и непонятных явлениях, позволяющих творить чуть ли не магию, хотя на самом деле нет в них ровным счетом ничего удивительного. В этом посте я перевожу статью Шона Кэрролла о квантовом ластике с отложенным выбором. Пусть он будет отправной точкой для обсуждения в комментариях всяких хитростей квантовой механики.

Total votes 39: ↑38 and ↓1 +37
Comments 129

Внутренний Я(ндекс)

Level of difficulty Easy
Reading time 8 min
Views 78K

В этой статье я хочу описать (часть) моего опыта взаимодействия со структурой, именуемой в дальнейшем «яндекс», с точки зрения работника. Опишу собеседования и этап «входа».

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

Читать далее
Total votes 469: ↑463 and ↓6 +457
Comments 287

Взлом YouTube для быстрого скачивания видео

Reading time 9 min
Views 63K
Мы неоднократно рассказывали о специальном софте, который позволяет скачивать видео с YouTube. Это в первую очередь youtube-dl (yt-dl) и его клоны, такие как yt-dlp и yt-dlc. С ними воюют могучие копирасты, пытаются удалить их из поисковой выдачи, с хостингов, с Github и так далее, по известной схеме «тотальная война».

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

Сами программки — просто технические инструменты для скачивания общедоступного контента, они ничего не воруют и не пиратят. Просто доступ происходит нестандартным способом, который не предусмотрен официально. Посмотрим, как это делается.
Читать дальше →
Total votes 168: ↑158 and ↓10 +148
Comments 420

SectorC: компилятор Си в пределах 512 байт

Level of difficulty Medium
Reading time 9 min
Views 20K

SectorC (github) – это компилятор Си, написанный на ассемблере x86-16 и умещающийся в загрузочный сектор 512 байт машины x86. Он поддерживает достаточно обширную функциональность Си для создания реальных и интересных программ, являясь при этом, пожалуй, самым миниатюрным компилятором Си из когда-либо написанных.
Читать дальше →
Total votes 152: ↑150 and ↓2 +148
Comments 45

Higher-Kinded Data, или ещё один способ работать с сущностями базы данных (и не только)

Reading time 16 min
Views 4.5K

image


Важный дисклеймер


Перед началом хочу позволить себе небольшой, но важный дисклеймер.


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


«Не думайте, что я сейчас буду развивать эту концепцию, а затем разочаруюсь в ней. Такой драматургии не будет. Я изначально уже в ней разочарован.»
Роман Михайлов

Ещё хочется заметить, что далее все примеры кода будут приводиться на Haskell. Но в конце я покажу, как можно некоторые из них повторить на Scala.


Что такое HKD


Конечно, прежде, чем писать этот раздел, я полез в интернет, чтобы посмотреть, как этот термин определяют другие люди. Чёткого определения я не нашёл.
Грубо говоря, HKD — это то, что предоставляет возможность держать в одном типе данных сразу несколько представлений. Давайте посмотрим на примеры.

Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 3

Вы в Самом Деле Хотите Стать Программистом Микроконтроллеров?

Level of difficulty Easy
Reading time 47 min
Views 64K

В этом тексте я напишу о буднях программиста МК в РФ.

Что вообще пишут программисты МК и на чем?

Основной язык программирования это С. Языку С уже более 50лет. Кроме микроконтроллеров С уже практические никому не нужен. Навыки программирования на С очень слабо конвертируются. В свое время, видимо на С написали компилятор для С++ и нужда в С для desktop как таковая отпала. A сам С остался для сборки артефактов для микроконтроллеров с экстремально малыми ресурсами. Хотя и сейчас большинство компаний в ЕС уже микроконтроллерные сборки собирают на С++ 17. 

Иногда программистам MК приходится обсчитывать аналоговые цепи и вычислять какие-то сложные 8-этажные формулы и строить графики. Для этого практикуют бесплатный интерпретатор Python.

Главным образом программисты МК составляют Board Support Package, пишут драйверы для новых умных периферийных чипов, пишут загрузчики, портируют RTOS(ы) на разные процессорные ядра, пишут код-генераторы, скрипты сборки, составляют модульные тесты, изредка производят рефакторинг, часто чинят ошибки в Legacy коде, изредка что-то изменяют в коде Assembler(а), который запускается до вызова функции main().

Иногда программист МК даже ничего не пишет сам вообще. Важно уже не сколько уметь программировать сколько уметь тестировать и собирать, улучшать из готового кода из интернета. Какие-то исходники можно взять из github или ядра Linux. Там есть код на многие темы. Драйверы для множества чипов.  Важно уметь верифицировать найденные сорцы и аккуратно подключить их к нужной сборке.

Читать далее
Total votes 172: ↑147 and ↓25 +122
Comments 368

Ректальное программирование: основы для практикующих 1С-программистов

Reading time 9 min
Views 52K

Примечание: хотя статья адресована прежде всего одинэсникам, труЪ-программисты также могут узнать многие используемые методики или взять что-то на вооружение.

Одной из самых популярных и зарекомендовавших себя методологий программирования в 1С является так называемое ректальное программирование. Редкий проект внедрения и сопровождения учётных систем на платформе 1С обходится без его использования. Зачастую без знания данной методологии программистам даже бывает сложно найти работу в сфере 1С, потому что работодатели, особенно фирмы-франчайзи, в основном отдают предпочтение классическим, зарекомендовавшим себя методикам, а не новомодным заграничным веяниям.

Читать далее
Total votes 98: ↑90 and ↓8 +82
Comments 135

Как мы делали Warface для Денди

Reading time 31 min
Views 43K
В октябре 2020 мне написал мой друг Андрей Скочок, работающий в Mail.ru, и предложил сделать для них необычную промоакцию.

Суть в том, что в ноябре для их игры Warface выходило обновление, и Андрею пришла в голову идея разослать различным видеоблогерам картриджи для Денди, которые будут в качестве тизера демонстрировать несколько картинок из вселенной игры, а в конце показывать промокод.



Читать дальше →
Total votes 246: ↑246 and ↓0 +246
Comments 40

Антибиотикорезистентность: ура, мы дождались! Считайте, что вышел анонс следующей пандемии

Reading time 12 min
Views 87K

Колония бактерий и кружки с антибиотиками: три из семи работают, и это хорошо.

Биологи давно мечтали о сценариях конца света с участием суперинфекции, резистентной ко всему тому, что есть у нас в арсенале антибиотиков. Когда медицина бессильна против инфекции, как в 1353 году, может умереть от 30 до 60 % охваченной болезнью популяции.

За последние два года поменялось то, что COVID-19 так напугал людей, что они стали есть антибиотики в нереальных по былым меркам количествах.

Вышел прекрасный отчёт в «Ланцете» про то, что если в 2019 году из-за AMR (резистентности бактериальных инфекций к антибиотикам) умерло около 1,2 миллиона человек (и ещё около 4,95 миллиона по связанным с такими инфекциями причинам), то с тех пор человечество сделало большой шаг вперёд.

То же потребление азитромицина в России, по данным доклада от 4 июня 2021 г. «Антибиотикорезистентность как угроза национальной безопасности России», выросло больше чем в два раза. Возможно, это связано с тем, что он входил в протоколы лечения COVID.

Давайте ещё раз поговорим про то, что не так с антибиотиками.
Читать дальше →
Total votes 307: ↑294 and ↓13 +281
Comments 669

История славянских шипящих: почему мы пишем жи-ши через И?

Reading time 7 min
Views 43K
tl;dr: потому что перед Ы не могли возникнуть ни Ж, ни Ш.

Орфография многих живых языков отражает давно исчезнувшие вещи: например, написание английского слова knight указывает на то, что когда-то в 14 в. оно произносилось «книхт». В русской орфографии тоже полно «доисторических окаменелостей»; и для того, чтобы не зубрить, а понимать орфографические правила — нужно разбираться, откуда эти правила взялись. Готового обзора истории шипящих я не нашёл, так что взялся составить его сам. Особенно интригует природа буквы Щ — самой необычной в нашем алфавите.

Читать дальше →
Total votes 114: ↑109 and ↓5 +104
Comments 235

Мой компьютер на логических микросхемах

Reading time 6 min
Views 54K

Привет, Хабр. Два года назад, как раз перед началом пандемии, я затеял большой проект: построить компьютер, используя только простые логические микросхемы 74 серии и микросхемы памяти. В этой статье я бы хотел кратко рассказать о том, что получилось, и более подробно об основной части – процессоре.

Читать далее
Total votes 306: ↑305 and ↓1 +304
Comments 73

Мимо наборной кассы: феерическая профанация шрифтового дела от компании «Паратайп»

Reading time 11 min
Views 26K

Это история о том, как я разочаровался в компании «Паратайп» и шрифтах, которые она производит.

Я делал PDF⁠-⁠презентацию, чтобы показать европейским иностранцам. И что⁠-⁠то меня пробило на гиперкачественную вёрстку с образцовым типографингом. Пускай, думаю, у иностранцев сорвёт шаблон: они⁠-⁠то привыкли, что все русские верстают по⁠-⁠колхозному, особенно если думают, что нет.

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

Я выбрал PT Sans, потому что графика этого шрифта — вполне на мировом уровне. Однако…

Читать далее
Total votes 262: ↑248 and ↓14 +234
Comments 129

Идеальная светодиодная лампа за 21 рубль

Reading time 3 min
Views 79K
Удивительно осознавать, что достаточно сложное электронное устройство, которым является светодиодная лампочка, может стоить 21 рубль.

Ещё сложнее поверить, что эта лампочка безукоризненна по всем параметрам.

Читать дальше →
Total votes 227: ↑225 and ↓2 +223
Comments 204

Создаем новое ключевое слово в C++

Reading time 27 min
Views 23K

C++ - один из языков, который можно назвать "легендарным". Его история насчитывает несколько десятилетий, принципы программирования на нем революционным образом менялись не раз, а черновик стандарта уже разросся до 1800+ страниц мелкого шрифта.

На C++ есть много хороших библиотек. Но нередко изменения в самом языке делали неактуальными большие куски кода, потому что они становились менее надёжными и быстрыми по сравнению с функционалом в самом языке. Правки в стандарт имеют несоизмеримо более сильное влияние, чем любая библиотека.

В этой статье мы в учебных целях напишем для C++ поддержку нового ключевого слова defer, которое будет работать во многом аналогично такому в языках Go и Swift. Это будет сделано через правку исходного кода Clang.

Создать!
Total votes 91: ↑89 and ↓2 +87
Comments 43

О выгорании в СССР из книжки 1973 года

Reading time 8 min
Views 75K

Досталась мне от бати книжка издания 1973 года, отпечатанная на ротапринте. Наткнулся в ней на вещи, которые бы мы сейчас назвали проблемой "выгорания". Термина в то время еще не было, но проблема была. Я выписал кое-какие вещи чисто для себя, но потом решил все же опубликовать, может кому пригодится...

Читать далее
Total votes 120: ↑118 and ↓2 +116
Comments 99

Почему тысячу лет назад вам было бы легче учить английский

Reading time 8 min
Views 39K

Автор: Виолетта Хайдарова

Те из нас, кому в детстве читали народные сказки, могли встретить там много странного. На фоне медведей-зомби, девочек со светящимися черепами и прочих милых эпизодов как-то терялись фразы, звучащие ну… немного странно. Например, «единым махом семерых побивахом». Что ещё за «побивахом» такое? Взяли и просто извратили слово ради рифмы? Оказывается, нет.

Ну то есть то, что ради рифмы – это понятно. Но только не извратили, а использовали в самой что ни на есть правильной форме. Знакомьтесь –система времён древнерусского языка. Одно настоящее время, три будущих и четыре прошедших: простое прошедшее, продолженное, завершённое и давнопрошедшее. Вот это «побивахом» относится к прошедшему простому, то есть аористу. А может и имперфекту, там как раз формы совпали. Немножко сложно? Давайте подробнее.

Читать далее
Total votes 159: ↑153 and ↓6 +147
Comments 95

Проблемы научных публикаций

Reading time 16 min
Views 43K
Для людей, не знакомых близко с научным процессом, может быть не очень понятна важность научных статей. Публикация — это не только распространение информации, но и верификация результатов исследований, а еще самая главная мера эффективности научной работы.

Важность публикаций для ученых описывается выражением «Publish or perish» — «Публикуйся или сдохни». Именно всевозможные библиометрические показатели являются основой для получения грантов, подъема по карьерной лестнице и, в конечном итоге, научного успеха. И поэтому проблемы научных публикаций негативно влияют на всю науку в целом.


Читать дальше →
Total votes 118: ↑118 and ↓0 +118
Comments 309

C++17. Функция стандартной библиотеки std::launder и задача девиртуализации

Reading time 34 min
Views 26K

В этой статье мы попробуем разобраться с одним из самых неоднозначных и непонятных нововведений стандарта C++17 — функцией стандартной библиотеки std::launder. Мы посмотрим на std::launder с другой стороны, посмотрим на источник. Разберем что лежит в основе функции на примере решения задачи девиртуализации и реализации виртуальных указателей в LLVM.


Читать дальше →
Total votes 70: ↑70 and ↓0 +70
Comments 72

Information

Rating
5,176-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity