Продолжение статьи о создании языкового плагина для IDEA на примере учебного языка Monkey. Приведены примеры из других плагинов. Пишем на Java и Kotlin. Начало
Готовлю кофе в аэропрессе, а php в докере.
Как мы добавили поддержку языка Frege в IDEA. Часть 2
Привет! Это вторая часть рассказа о том, как мы поддерживали язык Frege в IntelliJ IDEA. Первую часть читайте здесь. Сейчас мы поделимся, как сделали автодополнение, систему сборки, интерпретатор и систему типов. И как все это тестировали.
Как я написал свой язык и онлайн IDE
Здесь онлайн интерпретатор, здесь документация.
В сентябре 2020 года я учился на 2 курсе. В том же месяце я впервые написал программу, которая мне понравилась. Она создаёт svg изображения растений, здесь её можно потрогать.
Чуть позже я выяснил, что такие программы называют процедурными генераторами. Я увлекся этим, сделал ещё парочку (1, 2).
Вот только на них я потратил куда больше времени. Долго работать над одной вещью мне не понравилось, особенно когда идея реализации уже придумана, остаётся лишь написать код. Следовательно, нужно ускорить создание процедурных генераторов.
TinyML — машинное обучение на микроконтроллерах
В настоящее время мы все, так или иначе, пользуемся последними достижениями в сфере так называемого «искусственного интеллекта», который на самом деле представляет собой зачастую просто интеллектуальные алгоритмы на базе нейросетей.
Тем не менее подобные интеллектуальные решения всё сильнее входят в жизнь и начинают захватывать всё новые и новые сферы.
Одним из достаточно жарких направлений в современной микроэлектронике и интеллектуальных системах является тема встраивания подобных алгоритмов в маленькие неэнергозатратные системы (потребление которых при работе этих алгоритмов измеряется милливаттами). Подобный подход называется TinyML — алгоритмы машинного обучения на микроконтроллерах. Об этом и поговорим в статье ниже.
Теперь Dockerfiles поддерживает Multiple Build Contexts
Новые релизы Dockerfile 1.4 и Buildx v0.8+ дают возможность определения нескольких контекстов сборки. Теперь в качестве сборки вы можете использовать файлы из разных локальных директорий. Давайте посмотрим, какая от этого польза и как это внедрить в ваши процессы.
Нейродайджест: главное из области машинного обучения за декабрь 2021
Генерация 3D-моделей из текстового описания и видеозаписей, сделанных на обыкновенный смартфон, конкурент DALL-E, ускоренная GAN-инверсия и многое другое в подборке материалов за декабрь, а также небольшие новости о будущем дайджеста.
Типовые ошибки при подготовке презентации
Привет! Представляю продолжение статьи о типовых ошибках, которые допускают инженеры при подготовке публичных выступлений. Сегодня поговорим о подготовке презентаций.
Написание парсера DBML на PHP
Иногда возникает задача парсинга произвольного DSL для дальнейшей работы с ним на уровне PHP кода. И я хочу поделиться опытом решения этой приблемы с помощью регулярок с примерами.
Управляя Github-ом: через Terraform к самописному решению на Ansible
У нас 350+ человек и 400+ репозиториев на Github-е. В каждой репе может быть несколько админов, и они творят, что считают нужным, — естественно, случается так, что один человек не знает, что делает другой. Когда нам в инфре надоело смотреть на мучения других и добавлять/удалять людей вручную, мы решили, что перейдем централизованное управление, Infrastructure as Code.
И в качестве платформы выбрали Terraform.
«У меня есть кубики с буквами О, П, А…»
Книга «Эффективный TypeScript: 62 способа улучшить код»
Пишем и тестируем миграции БД с Alembic. Доклад Яндекса
В докладе я поделился опытом использования Alembic — хорошо себя зарекомендовавшего инструмента для управления миграциями. Почему стоит выбрать именно Alembic, как с его помощью подготовить миграции, как их запускать (автоматически или вручную), как решить проблемы необратимых изменений, зачем тестировать миграции, какие проблемы могут выявить тесты и как их реализовать — на все эти вопросы я постарался ответить. Заодно поделился несколькими лайфхаками, которые сделают работу с миграциями в Alembic легкой и приятной.
POST запрос, составное содержимое (multipart/form-data)
Передача составных данных методом POST
В жизни любого программиста попадаются задачки, которые человека цепляют. Вот не нравится стандартный метод решения и все! А порой бывает, что стандартные решения не подходят по какой-то причине. Некоторые люди обходят такие задачи стороной, другие же любят решать их. Можно даже сказать сами их находят. Одна из таких задач отсылка файла или несколько файлов методом POST.
Некоторые наверное скажут, эта задача совсем не задача. Ведь есть замечательная библиотека CURL, которая довольно простая и решает эту задачу легко! Но не спешите. Да, CURL мощная библиотека, да она загружает файлы, но… Как Вы знаете у нее есть маленькая особенность — файл должен быть размещен на жестком диске!
Как я писал кодогенератор на PHP и что из этого получилось
Причины и проблемы, которые нужно было решить
В этой статье я вам расскажу о том как я писал кодогенератор на php. Расскажу о пути, который он прошел от генерации простых таблиц, до довольно полноценного генератора html и css кода. Приведу примеры его использования и покажу уже сделанные проекты.
В этом семестре на одном из предметов можно было использовать только PHP.
После бесконеного ренейма проекта Проект получил имя MelonPHP. Чтобы люди думали о еде когда произносили его имя? Но у нас тут статья не о генерации бреда, поэтому давайте я вам расскажу о причине его создания.
Написать надо было много, но это не проблема. Основная проблема заключалась в выводе HTML кода через PHP. Я постараюсь объяснить проблему ниже.
readable — еще один линтер для PHP
Хочу представить линтер для PHP readable. Сейчас в нем 16 правил, которые должны улучшить читабельность кода. К основным преимуществам можно отнести:
- скорость — меньше секунды на 1000 файлов
- настройка baseline — можно не исправлять все ошибки в проекте сразу, а создать конфигурацию с текущими ошибками. И игнорировать их, но реагировать на новые.
- правила писать проще чем в аналогах (субъективно)
Важные два дисклаймера:
- Я основной контрибьютор, поэтому могу быть субъективным. Изначально, readable написан для бельгийской компании officient. Они уже некоторое время его используют у себя внутри, и решили сделать readable открытым проектом.
- Он написан на JS.
Inertia.js – современный монолит
Вы знаете, как пишутся 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, вы понимаете, насколько это больше телодвижений.
Наилучшие практики создания REST API
Предлагаемая вашему вниманию статья, несмотря на невинное название, спровоцировала на сайте Stackoverflow столь многословную дискуссию, что мы не смогли пройти мимо нее. Попытка объять необъятное — внятно рассказать о грамотном проектировании REST API — по-видимому, удалась автору во многом, но не вполне. В любом случае, надеемся потягаться с оригиналом в градусе обсуждения, а также на то, что пополним армию поклонников Express.
Приятного чтения!
Как банки берут друг у друга в долг. Плавающие ставки, процентные свопы. Ликбез для гика, ч. 4
Как быть, когда все советуют растащить проект на микросервисы. А ты не готов
А вы можете решить эти три (обманчиво) простые задачи на Python?
Попробуйте решить эти три задачи, а потом сверьтесь с ответами в конце статьи.
Совет: у задач есть кое-что общее, поэтому освежите в памяти решение первой задачи, когда перейдёте ко второй или третьей, так вам будет проще.
«ТехноТекст». Эпизод 3. Шедевры не стареют, рукописи не горят, IТ-статьи не {404}
За время, прошедшее с прошлого конкурса, все сильно изменилось — и мир вокруг, и каждый из нас. Хабр вообще пережил редизайн и переименование; у нас прибавилось сотни аккаунтов и компаний, тысячи постов и комментариев. Сообщество и наши авторы тоже пережили трансформацию, и теперь они другие — еще умнее, профессиональнее, сильнее, раскрепощеннее. Поэтому на «ТехноТексте-2020» мы ждем много новых крутых текстов и талантливых участников. Тем более что в этом году у нас в два раза больше номинаций. А у вас — в 3 раза больше времени, чтобы подготовить свою звездную статью.
Информация
- В рейтинге
- 5 992-й
- Откуда
- Воронеж, Воронежская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность