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

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

Send message

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

Level of difficultyMedium
Reading time9 min
Reach and readers23K

SectorC (github) – это компилятор Си, написанный на ассемблере x86-16 и умещающийся в загрузочный сектор 512 байт машины x86. Он поддерживает достаточно обширную функциональность Си для создания реальных и интересных программ, являясь при этом, пожалуй, самым миниатюрным компилятором Си из когда-либо написанных.
Читать дальше →

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

Reading time16 min
Reach and readers5.1K

image


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


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


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


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

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


Что такое HKD


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

Читать дальше →

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

Level of difficultyEasy
Reading time97 min
Reach and readers110K

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

Вы сможете прикинуть нужна ли Вам эта профессия.

Особенности российского-национального программирования микроконтроллеров.

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

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

Читать далее

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

Reading time9 min
Reach and readers54K

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

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

Читать далее

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

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

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



Читать дальше →

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

Reading time12 min
Reach and readers89K

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

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

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

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

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

Давайте ещё раз поговорим про то, что не так с антибиотиками.
Читать дальше →

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

Reading time7 min
Reach and readers47K
tl;dr: потому что перед Ы не могли возникнуть ни Ж, ни Ш.

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

Читать дальше →

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

Reading time6 min
Reach and readers62K

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

Читать далее

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

Reading time11 min
Reach and readers28K

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

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

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

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

Читать далее

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

Reading time3 min
Reach and readers80K
Удивительно осознавать, что достаточно сложное электронное устройство, которым является светодиодная лампочка, может стоить 21 рубль.

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

Читать дальше →

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

Reading time27 min
Reach and readers26K

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

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

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

Создать!

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

Reading time8 min
Reach and readers78K

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

Читать далее

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

Reading time8 min
Reach and readers40K

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

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

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

Читать далее

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

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

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


Читать дальше →

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

Reading time34 min
Reach and readers37K

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


Читать дальше →

Как меня чуть не уволили из-за токсичного поведения и что было дальше

Reading time4 min
Reach and readers110K

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

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

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

Читать далее

FizzBuzz по-сениорски

Reading time7 min
Reach and readers122K

- Добрый день, я на интервью на позицию старшего разработчика.

- Здравствуйте, давайте начнем с небольшого теста, пока я ваше CV смотрю. Напишите программу, которая выводила бы числа от 1 до, скажем, миллиарда, притом если число кратно трем, то вместо числа выводится Fizz, если кратно пяти, то Buzz, а если и трем, и пяти, то FizzBuzz.

Серьезно, FizzBuzz? Задачка для начальной школы, на сениорскую позицию? Ну ладно.

Читать далее

«Группа смерти» изнутри: люди, которые играют в опасные игры

Reading time40 min
Reach and readers157K


Помните, сколько было разговоров о подростковых суицидальных группах типа «синий кит»? Широкая огласка и моральная паника способствовали тому, что на ВКонтакте и ряде других площадок такие группы научились оперативно находить и блокировать. Но чем активнее родители и педагоги вели «профилактическую работу», предупреждая об игре и выясняя, не участвуют ли в ней дети, тем больше детей узнавало, что есть такая запретная, таинственная, опасная игра. Последствия этого были вполне естественны — дальнейшее распространение игры уже не требовало участия взрослых. «Синий кит» занял особое место в подростковой культуре, где-то рядом с зацепингом и играми с перебеганием перед движущимся транспортом. Как в Мафии, здесь есть разные роли. Кто-то выбирает для себя роль игрока, кто-то — куратора, кто-то — спасателя, волонтера.

Сегодня мы попробуем увидеть происходящее глазами рядовых участников — не тех, для кого в конечном итоге все кончилось плохо, а того подавляющего большинства, которое играло, а потом продолжило жить.
Читать дальше →

Коллапс волновой функции: алгоритм, вдохновлённый квантовой механикой

Reading time11 min
Reach and readers36K
image

Алгоритм Wave Function Collapse генерирует битовые изображения, локально подобные входному битовому изображению.

Локальное подобие означает, что

  • (C1) Каждый паттерн NxN пикселей в выходных данных должен хотя бы раз встречаться во входных данных.
  • (Слабое условие C2) Распределение паттернов NxN во входных данных должно быть подобным распределению паттернов NxN в значительно большом количестве наборов выходных данных. Другими словами, вероятность встречи определённого паттерна в выходных данных должна быть близка к плотности таких паттернов во входных данных.
Читать дальше →

Information

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

Specialization

Десктоп разработчик
Старший
From 1,234,567 ₽
C++
Haskell
Функциональное программирование
Компиляторы