Pull to refresh
22
0
Дмитрий @xEpozZ

Готовлю кофе в аэропрессе, а php в докере.

Send message

Как я написал свой язык и онлайн IDE

Reading time7 min
Views11K

Здесь онлайн интерпретатор, здесь документация.

В сентябре 2020 года я учился на 2 курсе. В том же месяце я впервые написал программу, которая мне понравилась. Она создаёт svg изображения растений, здесь её можно потрогать.

Чуть позже я выяснил, что такие программы называют процедурными генераторами. Я увлекся этим, сделал ещё парочку (1, 2).

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

Читать далее
Total votes 57: ↑56 and ↓1+55
Comments16

TinyML — машинное обучение на микроконтроллерах

Reading time9 min
Views12K


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

Тем не менее подобные интеллектуальные решения всё сильнее входят в жизнь и начинают захватывать всё новые и новые сферы.

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

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments11

Теперь Dockerfiles поддерживает Multiple Build Contexts

Reading time8 min
Views9.3K

Новые релизы Dockerfile 1.4 и Buildx v0.8+ дают возможность определения нескольких контекстов сборки. Теперь в качестве сборки вы можете использовать файлы из разных локальных директорий. Давайте посмотрим, какая от этого польза и как это внедрить в ваши процессы.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments3

Нейродайджест: главное из области машинного обучения за декабрь 2021

Reading time4 min
Views4.6K

Генерация 3D-моделей из текстового описания и видеозаписей, сделанных на обыкновенный смартфон, конкурент DALL-E, ускоренная GAN-инверсия и многое другое в подборке материалов за декабрь, а также небольшие новости о будущем дайджеста.

Перейти к обзору
Total votes 12: ↑12 and ↓0+12
Comments7

Типовые ошибки при подготовке презентации

Reading time6 min
Views6.7K

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

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments10

Написание парсера DBML на PHP

Reading time11 min
Views4.3K

Иногда возникает задача парсинга произвольного DSL для дальнейшей работы с ним на уровне PHP кода. И я хочу поделиться опытом решения этой приблемы с помощью регулярок с примерами.

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

Управляя Github-ом: через Terraform к самописному решению на Ansible

Reading time5 min
Views4.9K

У нас 350+ человек и 400+ репозиториев на Github-е. В каждой репе может быть несколько админов, и они творят, что считают нужным, — естественно, случается так, что один человек не знает, что делает другой. Когда нам в инфре надоело смотреть на мучения других и добавлять/удалять людей вручную, мы решили, что перейдем централизованное управление, Infrastructure as Code.


image


И в качестве платформы выбрали Terraform.


«У меня есть кубики с буквами О, П, А…»

Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments14

Книга «Эффективный TypeScript: 62 способа улучшить код»

Reading time8 min
Views12K
imageПривет, Хаброжители! Книга Дэна Вандеркама окажется максимально полезена тем, кто уже имеет опыт работы с JavaScript и TypeScript. Цель этой книги — не обучать читателей пользоваться инструментами, а помочь им повысить свой профессиональный уровень. Прочитав ее, вы сформируете лучшее представление о работе компонентов TypeScript, сможете избежать многих ловушек и ошибок и развить свои навыки. В то время как справочное руководство покажет пять разных путей применения языка для реализации одной задачи, «эффективная» книга объяснит, какой из этих путей лучше и почему.
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments5

Пишем и тестируем миграции БД с Alembic. Доклад Яндекса

Reading time20 min
Views74K
Приложения на бэкенде могут работать с самыми разными базами данных: PostgreSQL, SQLite, MariaDB и другими. Перед разработчиками встает задача реализовать возможность легко и безопасно изменять состояние БД. Менять нужно как структуру базы, так и сами данные от одной версии приложения к другой.


В докладе я поделился опытом использования Alembic — хорошо себя зарекомендовавшего инструмента для управления миграциями. Почему стоит выбрать именно Alembic, как с его помощью подготовить миграции, как их запускать (автоматически или вручную), как решить проблемы необратимых изменений, зачем тестировать миграции, какие проблемы могут выявить тесты и как их реализовать — на все эти вопросы я постарался ответить. Заодно поделился несколькими лайфхаками, которые сделают работу с миграциями в Alembic легкой и приятной.
Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments14

POST запрос, составное содержимое (multipart/form-data)

Reading time5 min
Views150K
POST multipart/form-data

Передача составных данных методом POST


В жизни любого программиста попадаются задачки, которые человека цепляют. Вот не нравится стандартный метод решения и все! А порой бывает, что стандартные решения не подходят по какой-то причине. Некоторые люди обходят такие задачи стороной, другие же любят решать их. Можно даже сказать сами их находят. Одна из таких задач отсылка файла или несколько файлов методом POST.

Некоторые наверное скажут, эта задача совсем не задача. Ведь есть замечательная библиотека CURL, которая довольно простая и решает эту задачу легко! Но не спешите. Да, CURL мощная библиотека, да она загружает файлы, но… Как Вы знаете у нее есть маленькая особенность — файл должен быть размещен на жестком диске!
подробнее
Total votes 18: ↑14 and ↓4+10
Comments4

Как я писал кодогенератор на PHP и что из этого получилось

Reading time11 min
Views5.3K

Причины и проблемы, которые нужно было решить


В этой статье я вам расскажу о том как я писал кодогенератор на php. Расскажу о пути, который он прошел от генерации простых таблиц, до довольно полноценного генератора html и css кода. Приведу примеры его использования и покажу уже сделанные проекты.


В этом семестре на одном из предметов можно было использовать только PHP.


После бесконеного ренейма проекта Проект получил имя MelonPHP. Чтобы люди думали о еде когда произносили его имя? Но у нас тут статья не о генерации бреда, поэтому давайте я вам расскажу о причине его создания.


Написать надо было много, но это не проблема. Основная проблема заключалась в выводе HTML кода через PHP. Я постараюсь объяснить проблему ниже.

Читать дальше →
Total votes 22: ↑11 and ↓110
Comments44

readable — еще один линтер для PHP

Reading time2 min
Views3.5K

Хочу представить линтер для PHP readable. Сейчас в нем 16 правил, которые должны улучшить читабельность кода. К основным преимуществам можно отнести:


  • скорость — меньше секунды на 1000 файлов
  • настройка baseline — можно не исправлять все ошибки в проекте сразу, а создать конфигурацию с текущими ошибками. И игнорировать их, но реагировать на новые.
  • правила писать проще чем в аналогах (субъективно)


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


  1. Я основной контрибьютор, поэтому могу быть субъективным. Изначально, readable написан для бельгийской компании officient. Они уже некоторое время его используют у себя внутри, и решили сделать readable открытым проектом.
  2. Он написан на JS.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments15

Inertia.js – современный монолит

Reading time4 min
Views22K

Inertia – современный монолит


Вы знаете, как пишутся SPA на Laravel? Если коротко, не очень удобно. Конечно, можно использовать любой фронтенд-фреймворк. Традиционно принято работать со связкой Laravel + Vue.js.


Мы пишем весь фронтенд на Vue.js в resources/js, а Laravel используем как API.


Примерно вот так:


Vue.js


// resources/js/pages/Users.vue
<template>
    <div v-for="user in users" :key="user.id">
        <a :href="`/users/${user.id}`">
          {{ user.name }}
        </a>
        <div>{{ user.email }}</div>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                users: []
            }
        },
        methods: {
            async loadUsers() {
                const { data } = await this.$axios.get('/api/users');.
                this.users = data;
            }
        },
        async beforeMount() {
            await this.loadUsers();
        }
    }
</script>

Laravel


// routes/api.php
Route::get('/users', function index(User $user) {
    return $user->all();
});

То есть сначала мы создаем на бэкенде эндпоинт, а затем на фронте получаем с него данные через AJAX-запрос.


Удобно ли это? Смотря для кого. Фронтендерам не привыкать. AJAX на сегодня – самый классический способ получения данных с сервера. Но, если вы до этого много работали с Blade, вы понимаете, насколько это больше телодвижений.

Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments12

Наилучшие практики создания REST API

Reading time13 min
Views47K
Всем привет!

Предлагаемая вашему вниманию статья, несмотря на невинное название, спровоцировала на сайте Stackoverflow столь многословную дискуссию, что мы не смогли пройти мимо нее. Попытка объять необъятное — внятно рассказать о грамотном проектировании REST API — по-видимому, удалась автору во многом, но не вполне. В любом случае, надеемся потягаться с оригиналом в градусе обсуждения, а также на то, что пополним армию поклонников Express.

Приятного чтения!
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments54

Как банки берут друг у друга в долг. Плавающие ставки, процентные свопы. Ликбез для гика, ч. 4

Reading time9 min
Views19K
Привет! Меня зовут Дмитрий Янтер. Сегодня вы узнаете о том, что такое плавающие процентные ставки, что такое процентные свопы и какое они имеют отношение к ванили.


Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments4

Как быть, когда все советуют растащить проект на микросервисы. А ты не готов

Reading time6 min
Views13K
Монолит часто обсуждают в негативном ключе. Но сразу перейти на микросервисы получится не у всех — и вот уже не первая команда и компания делятся опытом построения «переходного звена»: модульной архитектуры. Давайте в деталях посмотрим, как делаются такие проекты.


Total votes 24: ↑22 and ↓2+20
Comments77

А вы можете решить эти три (обманчиво) простые задачи на Python?

Reading time4 min
Views29K
С самого начала своего пути как разработчика программного обеспечения я очень любил копаться во внутренностях языков программирования. Мне всегда было интересно, как устроена та или иная конструкция, как работает та или иная команда, что под капотом у синтаксического сахара и т.п. Недавно мне на глаза попалась интересная статья с примерами того, как не всегда очевидно работают mutable- и immutable-объекты в Python. На мой взгляд, ключевое — это то, как меняется поведение кода в зависимости от используемого типа данных, при сохранении идентичной семантики и используемых языковых конструкциях. Это отличный пример того, что думать надо не только при написании, но и при использовании. Предлагаю всем желающим ознакомиться с переводом.



Попробуйте решить эти три задачи, а потом сверьтесь с ответами в конце статьи.

Совет: у задач есть кое-что общее, поэтому освежите в памяти решение первой задачи, когда перейдёте ко второй или третьей, так вам будет проще.
Читать дальше →
Total votes 43: ↑31 and ↓12+19
Comments32

«ТехноТекст». Эпизод 3. Шедевры не стареют, рукописи не горят, IТ-статьи не {404}

Reading time9 min
Views5.9K


За время, прошедшее с прошлого конкурса, все сильно изменилось — и мир вокруг, и каждый из нас. Хабр вообще пережил редизайн и переименование; у нас прибавилось сотни аккаунтов и компаний, тысячи постов и комментариев. Сообщество и наши авторы тоже пережили трансформацию, и теперь они другие — еще умнее, профессиональнее, сильнее, раскрепощеннее. Поэтому на «ТехноТексте-2020» мы ждем много новых крутых текстов и талантливых участников. Тем более что в этом году у нас в два раза больше номинаций. А у вас — в 3 раза больше времени, чтобы подготовить свою звездную статью.
Читать дальше →
Total votes 67: ↑65 and ↓2+63
Comments40

Прокладываем L2 туннели в OpenVPN

Reading time4 min
Views22K

Недавно меня попросили разобраться в настройке L2 туннеля для моста между двумя удалёнными локальными сетями, и я был поражён, насколько мало удобных решений мне удалось найти. Раньше я не интересовался этой темой и наивно полагал, что любой адекватный VPN-протокол умеет ловить широковещательные пакеты и пересылать их по обычному L3 туннелю. К сожалению, доступных «из коробки» универсальных решений нет. Есть несколько протоколов и инструментов для них, большинство из которых работает в очень ограниченных условиях или вовсе объявлено deprecated. Самым приятным вариантом я поделюсь дальше.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments17

Жизненный цикл: как Apple отказалась от PowerPC в пользу Intel

Reading time13 min
Views24K
image

Вероятно, долгожданный момент, о котором я сегодня буду говорить, был в каком-то смысле неизбежным. Годами ходили слухи о том, что Apple воспользуется накопленными знаниями об архитектуре процессоров ARM и перенесёт её в настольные компьютеры и ноутбуки. На недавней виртуальной конференции Worldwide Developers Conference производитель iPhone выступил именно с таким заявлением. Разумеется, многих заинтересовали дальнейшие действия Intel — отвергнутого партнёра, отношения с которыми привели к решению Apple о вертикальной интеграции. Но мне больше любопытно проследить за угасанием платформы, которую Intel победила, чтобы добиться расположения Apple, а также увидеть параллели, постепенно возникшие между PowerPC и Intel. Сегодня мы расскажем о длинном списке производителей процессоров, к которым охладела Apple, на примере перехода с PowerPC на Intel. Если вы разочаруете Apple, вам не поздоровится.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments49

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Software Architect
Lead
From 500,000 ₽
PHP
PostgreSQL
Python
Docker
Symfony
React
JavaScript
TypeScript
Designing application architecture
Monitoring