Как стать автором
Обновить
4
0

Пользователь

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

Как реализовывается WebAssembly в Rust: кратко

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

Привет, Хабр!

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

з.ы: предполагается, что читатель знает основы webassembly и про что-то из rust

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 1

Ржавое наследование 2. Славянский проброс Get/Set

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

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

Продать душу дьяволу
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 4

Compile Time Dependency Injection в С++: как обуздать зависимости не прибегая к позднему связыванию

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

Начав свою карьеру в качестве C# разработчика, я постоянно сталкивался с использованием техники внедрения зависимостей (Dependency Injection). За то время, что я работаю с C++, я не заметил здесь такого же широкого распространения этой идеи.

В то же время мне показалась весьма интересной такая возможность C++, как написание кода, который частично либо полностью может быть выполнен на этапе компиляции.

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

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

Премия Жуазеля по оригами в 2023 году

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

Что должен рисовать художник? Чувство. Вечность. Шизофрению. Художественное искусство на заре цивилизации прожевало и выплюнуло попытки отражать реальность. Однако, когда художник садится создавать анимационную картину, то становится заложником геометрии. Искра, буря, безумие - должны состоять из кубов, точек и орезков. Дождь, пыль и блики - узлы математических блоков. Выйти за пределы геометрии можно совместив двухмерную и трехмерную графику в одном кадре. Сейчас это золотой стандарт анимации. А вот в оригами выйти за рамки геометрии невозможно. Парадоксальный сюжет необходимо воплотить своими руками в углах и биссектрисах универсального рабочего тела - квадрата. Думаю, что именно поэтому художники в технике оригами - представители конструктивного мышления - математики, физики, преподаватели технических вузов.

Читать далее
Всего голосов 50: ↑49 и ↓1 +48
Комментарии 12

Как работать в кайф. How to от тестировщицы, которая вынесла уроки после выгорания

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

Думаю, многие помнят чувство первой влюбленности. Ты ни на шаг не можешь отойти от предмета своего обожания, постоянно хочется «больше» и кажется, что это навсегда. Оказывается, влюбиться можно не только в человека, но и в работу. Сначала ты будешь тонуть в его/её  ̶г̶л̶а̶з̶а̶х̶  Jira-бордах, а закончится всё тем, что ты (вдруг) сгорел. Для полных ощущений мне захотелось пройти ещё и медные трубы, поэтому делюсь своей историей с вами. 

Привет! Меня зовут Татьяна Дерягина, я Mobile QA в СберМаркете. Эта история про то, как мне понадобилось выгореть до углей, чтобы понять, что ворк-лайф бэланс необходим. Причём не только, чтобы не остаться совсем без лайф, но и чтобы делать свою любимую ворк хорошо и с удовольствием.

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

Читать далее
Всего голосов 35: ↑29 и ↓6 +23
Комментарии 19

Теория типов

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

Мы так привыкли к типам, что редко задаёмся вопросом, что же они такое на самом деле? А главное - почему возникла необходимость в их использовании? Этот поверхностный обзор сделан для того, чтобы продемонстрировать, как типы и другие связанные абстракции являются следствием из обобщения условий различных задач.

Что можно узнать из этой статьи?
Всего голосов 75: ↑75 и ↓0 +75
Комментарии 70

Реализация ссылочной модели в языке программирования Аргентум

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

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

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

Верификация рекурсивных функций в Coq. Проблема остановки. Горючее

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

Статья предполагает, что читатель имеет опыт работы с интерактивным программным средством доказательства теорем — Coq.

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

В данной статье мы рассмотрим прием, который используется для работы с рекурсивными функциями, которые не проходят проверку завершаемости (тотальности) в Coq. Под «горючим» мы будем понимать натуральное число, которое вводится как дополнительный параметр в тело функции, чтобы обозначить верхнюю границу числа итераций, которые функция может совершить. Таким образом функция трансформируется в завершаемую, удобную для работы, и радушно принимаемую компилятором Coq. В литературе термин встречается под названиями: petrol, fuel, gas и т.д.

Положим, перед нами стоит задача: необходимо верифицировать функцию, написанную на каком-либо языке программирования. Мы разбираемся в том, что делает эта функция, уже прикидываем, какие леммы сформулируем, чтобы доказать, что она ведет себя именно так как ожидается. Переводим функцию на Coq (вручную, или с помощью автоматических переводчиков, если только таковые имеются для требуемого языка), и видим, что проверка Coq на завершаемость нашей функции (termination check) провалилась.

Это значит Coq не может определить какой аргумент на каждом шаге итерации будет уменьшаться. Можно попробовать явно указать Coq на аргумент, который, мы точно знаем будет уменьшаться на каждом шаге {struct уменьшаемый_аргумент}:

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

Вычислительная сложность некоторых игр и головоломок (часть 1)

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

Есть несколько причин смотреть на игры как на нечто большее, чем просто на развлечения. Как станет яснее по ходу дела, многие игры основаны на сложных вычислительных задачах, хотя зачастую и с более низким «входным барьером», поскольку они редко требуют наличия формального образования.

Дальше-больше..
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 17

Alpha Go && Alpha Go Zero

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

Today I would like to discuss the games Chess and Go, the world's champions, algorithms and Al.

In 1997, a computer program developed by IBM Deep Blue defeated the world Chess champion Garry Kasparov. Go remained the last board game in which humans were still better than machines.

Why is that?

Chess is primarily distinguished from Go by the number of variations for each move. Chess, the game is more predictable with more structured rules: we have value for each figure (e.g bishop = 3 pawns, rook = 5 pawns -> rook > bishop), some kind of openings and strategies. Go, in turn, has incredibly simple rules, which creates the complexity of the game for the machine. Go is one of the oldest board games. Until recently, it was assumed that a machine was not capable of playing on an equal footing with a professional player due to the high level of abstraction and the inability to sort through all possible scenarios - exactly as many valid combinations in a game on a standard 19×19 go-ban are 10180 (greater than the number of atoms in the visible universe).

However, almost 20 years later, in 2015, there was a breakthrough. Google's Deep Mind company enhanced AlphaGo, which was the last step for the computer to defeat the world champions in board games. The AlphaGo program defeated the European champion and then, in March 2016 demonstrated a high level of play by defeating Lee Sedol, one of the strongest go players in the world, with a score of 4:1 in favour of the machine. A year later, Google introduced to the world a new version of AlphaGo - AlphaGoZero.

Read more
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 1

Диаграммы без боли и страданий: PlantUML

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

Системный аналитик всегда и везде сталкивается с бесконечным количеством диаграмм разного вида, с нотациями (правилами), чтобы нарисовать данные диаграммы и с бесконечным количеством инструментов для их описания. Но мало кто говорит о таком инструменте, как PlantUML. 

Лично мне завесу тайны приоткрыл Альфа-Банк, здесь документация ведется рядом с кодом, и схемы логичнее описывать тоже кодом. Но это не так страшно и не так сложно (почти) как кажется. Давайте я приоткрою ящик Пандоры и сниму кармическое проклятье с  этого инструмента. 

Читать далее
Всего голосов 76: ↑75 и ↓1 +74
Комментарии 35

Как написать первую статью на Хабр: полный чек-лист

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

Первая статья на Хабре, будь она от компании или пользователя, — фактически визитная карточка, которая либо даст хороший старт и мотивирует писать больше и интереснее, либо отобьёт руки. Опыт показывает, что авторы в своих первых публикациях совершают одни и те же ошибки, которые смазывают впечатление и сказываются на отношении аудитории. Известно, что лучше предотвратить ошибку, чем исправлять её после совершения, поэтому решено: в этой статье разберём все типичные ошибки и будем давать на неё ссылку новичкам.

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

Новый тип публикаций на Хабре

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

Привет, друзья! Открываем новую главу в истории Хабра и представляем новый тип публикаций: посты.

Читать далее
Всего голосов 170: ↑153 и ↓17 +136
Комментарии 186

Используем модель нейросети на C++

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

Большинство туториалов по созданию и использованию моделей нейросетей написаны на Python. Однако для какого-нибудь проекта рано или поздно может понадобится использовать более быстрый и надежный язык для этих задач, например, C++. Эта статья о том, как на C++ можно использовать модель нейросети на примере модели YOLOv8 для детектирования лиц и библиотеки PyTorch.

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

Создание DSL на Python с библиотекой textx

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

Для описания объектов и процессов в терминах бизнес-логики, конфигурирования и определения структуры и логики в сложных системах популярным подходом является использование предметно-специфических языков (Domain Specific Language - DSL), которые реализуются либо через синтаксические особенности языка программирования (например, с использованием средств метапрограммирования, аннотаций/декораторов, переопределения операторов и создания инфиксных операторов, как например в Kotlin DSL) или с помощью применения специализированных инструментов разработки и компиляторов (например, Jetbrains MPS или парсеров общего назначения, таких как ANTLR или Bison). Но существует также подход реализации DSL, основанный на синтаксическом разборе и одновременной кодогенерации для создания исполняемого кода по описанию и в этой статье мы рассмотрим некоторые примеры использования библиотеки textx для создания DSL на Python.

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

Математическая продлёнка. Из чего сделаны Пифагоровы штаны

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

Поводом для написания этой заметки послужила новость, облетевшая мир 18 марта этого года: две школьницы из Нового Орлеана, Кальцея Джонсон и Не`Кия Джексон «впервые доказали теорему Пифагора», опираясь на теорему синусов. В России эту новость встретили с иронией и стёбом, но не бывает плохих поводов поговорить о хороших теоремах.

Одним из ключевых результатов теории категорий является осознание, что знания о каком-то объекте даёт не его «внутреняя» структура, а структура его отношений и связей с другими объектами в его категории.

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

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

Инструменты анализа эффективности работы приложения. PerfView

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

Иногда приходится разбираться, почему .NET приложение работает "плохо". Не так, как мы ожидали. Тупит, медленно работает, зависает, запросы «не исполняются», утекает память или потребляется слишком много CPU.

Есть множество способов, как разбираться в таких ситуациях. Сегодня мы немного обсудим, что это за способы. Когда и какой способ нужно использовать. И более детально рассмотрим один из инструментов: PerfView.

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

Теория вероятностей в машинном обучении. Часть 1: модель регрессии

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

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

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

Данная серия статей не является введением в машинное обучение и предполагает знакомство читателя с основными понятиями. Задача статей - рассмотреть машинное обучение с точки зрения теории вероятностей, что позволит по новому взглянуть на проблему, понять связь машинного обучения со статистикой и лучше понимать формулы из научных статей. Также на описанном материале строятся более сложные темы, такие как вариационные автокодировщики (Kingma and Welling, 2013), нейробайесовские методы (Müller et al., 2021) и даже некоторые теории сознания (Friston et al., 2022).

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

Ура, Сенет: история настольных игр

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

В январе 2022 года археологи обнаружили в долине Кумайра (Оман) каменную настольную игру, возраст которой составляет около 4 тыс. лет. На игровое поле нанесена разметка в виде сетки и в нём проделаны отверстия для фигурок. Вероятно, находка археологов является предшественницей древней ближневосточной игры, известной как «Царская игра Ура».

Читать далее
Всего голосов 35: ↑34 и ↓1 +33
Комментарии 4

Вычисление значения частоты любой ноты и интересное звучание «псевдонатурального» строя

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

Какие у нот частоты? Почему они такие? Как рассчитать частоту любой ноты в любом аккорде? Как добиться необычного звучания? Когда новый релиз у Моцарта?

Узнать о нотах больше
Всего голосов 23: ↑19 и ↓4 +15
Комментарии 36

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность