Как стать автором
Обновить
22
12
Дмитрий @xEpozZ

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 57: ↑56 и ↓1 +55
Комментарии 16

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

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


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

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

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

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

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

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

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

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

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

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

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

Перейти к обзору
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 7

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

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

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

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

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

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

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

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

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

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

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


image


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


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

Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 14

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

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

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

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


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

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

Время на прочтение 5 мин
Количество просмотров 147K
POST multipart/form-data

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


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

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

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

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

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


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


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


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


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

Читать дальше →
Всего голосов 22: ↑11 и ↓11 0
Комментарии 44

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

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

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


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


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


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

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

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

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, вы понимаете, насколько это больше телодвижений.

Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 12

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

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

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

Приятного чтения!
Читать дальше →
Всего голосов 30: ↑27 и ↓3 +24
Комментарии 54

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

Время на прочтение 9 мин
Количество просмотров 19K
Привет! Меня зовут Дмитрий Янтер. Сегодня вы узнаете о том, что такое плавающие процентные ставки, что такое процентные свопы и какое они имеют отношение к ванили.


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

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

Время на прочтение 6 мин
Количество просмотров 13K
Монолит часто обсуждают в негативном ключе. Но сразу перейти на микросервисы получится не у всех — и вот уже не первая команда и компания делятся опытом построения «переходного звена»: модульной архитектуры. Давайте в деталях посмотрим, как делаются такие проекты.


Всего голосов 24: ↑22 и ↓2 +20
Комментарии 77

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

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



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

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

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

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


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

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

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

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

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

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

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

Информация

В рейтинге
442-й
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

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