Проектирование БД рекомендательной системы по подходу DB-first
В данной статье мы рассмотрим проектирование системы по подходу DB-first и то, какие проблемы он помогает не просто решить, а устранить как явление.

Чистый функциональный язык программирования
В данной статье мы рассмотрим проектирование системы по подходу DB-first и то, какие проблемы он помогает не просто решить, а устранить как явление.

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

Эта статья первая из цикла, в котором мы будем создавать crackme для linux amd64. В crackme будут реализованы шифрование каждой функции отдельным ключём и наномиты для противодействия отладке. В данной статье мы рассмотрим алгоритм встраивания ключа шифрования в код для усложнения расшифровки функций пользователем. Если стало интересно, прошу под кат.
Интеграция с БД - привычно сложная и хрупкая часть большинства кодобаз, постоянно отвлекающая внимание разработчиков и раздувающая сроки. Какой бы хайпующий фреймворк вы ни пробовали, вы неизбежно обнаруживаете себя борющимся с одними и теми же симптомами, но ощущение того, что проблема могла бы решаться проще не покидает вас. Знакомо?
Оказывается, так вовсе не должно быть. В данном посте мы разберёмся в причинах и сформулируем подход, который оставляет большинство привычных проблем просто несуществующими.
Brainfuck — очень глупый язык. Там есть лента из 30к ячеек, по байту каждая. Команды bfc это:
< и >)+ и -). и ,)[ и ] это начало и конец цикла соответственноПрограммировать на bfc сложно. Но, как известно, любую проблему можно решить добавлением слоя абстракции (кроме проблемы большого количества абстракций).

Если вы когда-нибудь читали агитации, призывающие к изучению Haskell, наверняка вас убеждали, что в нём ну очень удобно обрабатывать ошибки, ведь там есть Монада Either.
Но это неправда. В хаскельных школах не рассказывают, как удобно(?) обрабатывать ошибки. А я расскажу.

Обсуждая IT-образование, представители компаний часто жалуются на отсутствие у вчерашних студентов навыков работы в команде и понимания, как в принципе функционирует бизнес в этой сфере. Но мы уверены ― многое зависит как от самого студента, так и среды, в которой он проводит время, учится. На некоторых факультетах ИТМО стажировка в магистратуре обязательна. После нее на рынок труда выходит готовый джун или мидл, зачастую с предложением о работе в той самой компании, где он стажировался.
В этой статье мы покажем, как стажировка проходит на практике и что она приносит самим IT-компаниям. В фокусе истории двух магистрантов института прикладных компьютерных наук ИТМО ― Федора Золотухина и Андрея Стояна.
Мне встречалась фраза: "для многих знакомство с Haskell заканчивается на монадах". Монады действительно сложны для понимания, а самая непонятная, лично для меня, была монада State.
На простом примере, я хочу показать всю полезность монады State и еще большую полезность трансформера StateT.

«Хтоническая логика Haskell, тяжеловесная мощь «плюсов» и грязная гибкость скриптовых языков наталкивают человека на экзистенциальный поиск. Если апатия приводит в Python, то конструктивный поиск в итоге ведёт к Rust или Go», — считает Игорь Нетай, специалист отдела перспективных исследований компании «Криптонит».

Обновление Vasil значительно улучшит производительность и возможности Cardano. За последние пару лет в сети наблюдались некоторые нововведения – запуск NFT, появление multi-asset и возможностей смарт-контрактов в 2021 году – но Vasil - это самое значительное обновление сети с момента запуска стейкинга в эре Shelley.

Cardano (ADA) входит в топ-10 криптовалют по рыночной капитализации. Cardano — много больше чем криптовалюта: это масштабируемая и экологически устойчивая блокчейн-платформа для запуска смарт-контрактов, которая работает на основе протокола консенсуса с механизмом Proof of Stake Ouroboros и разрабатывается академическим сообществом экспертов и учёных-программистов на базе исследований, основанных на фактических данных. Цель Cardano — создание полностью децентрализованного блокчейн-проекта, управляемого и финансируемого системой голосования пользователей.
Несмотря на очевидные преимущества, Cardano часто критикуют за медленный прогресс в разработке. В 2021 году Cardano запустили несколько обновлений, представив наконец платформу Plutus для написания смарт-контрактов, и анонсировав возможность совместимости со смарт-контрактами на основе Ethereum. Что представляют собой эти обновления, с какими проблемами мы с командой столкнулись, работая на Cardano и что предстоит предпринять, чтобы их решить — расскажу в этом материале.

Cardano и Ethereum — блокчейны, у которых схожие возможности и они неизбежно подвергаются сравнению друг с другом. Постепенно расстановка сил меняется, и о Cardano всё чаще говорят как об «убийце Ethereum». Разбираемся в особенностях технологии Cardano, смотрим, есть ли основания для слухов и рассказываем, почему Cardano может стать мощнее, быстрее и доступнее, чем Ethereum или Bitcoin.

Привет, Хабр! Состояние сервера необходимо постоянно мониторить, чтобы в случае ошибки быстро ее исправить. Удобнее всего отслеживать работоспособность с помощью смартфона, а именно Telegram-бота, он позволяет осуществлять проверку на ходу. Реализуем Telegram-бот на функциональном языке Haskell, заодно разберемся в его преимуществах.

В июне 2022 года меня пригласили выступить с докладом о Cardano на криптовалютной конференции UTXO в Праге. Я думал о том, что буду рассказывать людям, и выбрал историю проекта и его миссию.
В 2014 году Чарльз Хоскинсон покинул Ethereum и совместно с Джереми Вудом учредил проект Cardano. Тогда же были созданы три независимые организации: Input Output Hong Kong (позже Input Output Global), Cardano Foundation и Emurgo.
Сообщество проекта выросло в период медвежьего рынка и сегодня его можно назвать одним из самых больших и здоровых в криптовалютном пространстве.

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

Как-то раз решил поиграть в игру Dwarf Fortress, показалось очень интересно. Это несмотя на неудобное управление, которое возможно будет переделано в новой реинкарнации игры. Но речь о другом: взаимодействие с игроком сильно опирается на сообщения, которые появляются на отдельном экране и приходится постоянно делать переключения на него и обратно в игру.
В результате, решил сделать свой вариант вьювера сообщений. Так как основным языком программирования сейчас для меня является Haskell, то стал искать возможности сделать утилиту именно на нем.

В предыдущей статье (Заберите свои скобки), мы попытались избавиться от скобочек с помощью нового оператора для передачи аргументов. На основе своего опыта пользования оператором, можно конечно подобрать нужный приоритет, но он все равно будет конфликтовать в случаях, которые мы не предусмотрели. Что же делать? У меня есть идея, но она вам может не понравится.

Эта часть продолжает неформальный рассказ о p-адических числах и она посвящена практическим аспектам работы с этой числовой системой и, в частности, некоторым деталям реализации p-адической алгебры на языке Haskell. О том, что это за система и зачем она может понадобиться, читайте в предыдущей части.
Мы поговорим об эффективном внутреннем представлении p-адических чисел, о базовых алгоритмах и методах работы с ними, а также о двух классных инструментах в системе типов языка Haskell: о типах-литералах (type literals) и семействах типов (type families).

Работа с файлами формата ELF -- популярная тема на Хабре. ("Введение в ELF-файлы в Linux: понимание и анализ", "Минимизация файла ELF – попробуем в 2021?" и т. д.)
Существуют библиотеки для Хаскела для работы с этими файлами: elf
(Hackage) и data-elf (Hackage). Эти библиотеки работают только с заголовками и элементами таблиц и не дают возможности сгенерировать объектный файл.
Библиотека melf (GitHub, Hackage) даёт возможность полностью разобрать файл ELF и сгенерировать такой файл по несложной структуре данных. Ниже даются примеры её использования.