Некоторое время назад мой коллега опубликовал статью про обработку ошибок в Java/Kotlin. И мне стало интересно, а какие вообще в программировании существуют способы передачи ошибок. Если вам тоже интересно, то под катом результат изысканий. Скорее всего, какие-то экзотические методы пропущены, но тут одна надежда на комментарии, которые на Хабре порою бывают интереснее и полезнее самой статьи. :)
Читать полностью »
Рубрика «Программирование» - 197
Где ошибка, Билли? Нам нужна ошибка…
2019-10-22 в 8:21, admin, рубрики: funcorp, Блог компании FunCorp, обработка ошибок, ПрограммированиеТридцать докладов DevOops 2019: Tim Lister, Hadi Hariri, Роман Шапошник и другие звёзды международного DevOps
2019-10-22 в 8:20, admin, рубрики: devoops2019, devops, конференции, Программирование, системное администрирование29-30 октября в Санкт-Петербурге состоится DevOops 2019 — конференция, посвященная инженерным DevOps-решениям. Основные темы — это облака вообще и Cloud Native в частности, observability, мониторинг и аудит, CI/CD, безопасность и так далее — в общем, всё, что вы можете ожидать от конференции, посвященной именно девопсу.
Этот хабрапост — обзор программы DevOops, который мы написали вместе с программным комитетом конференции.
Если вкратце:
- Антон Вайс расскажет про сервис-меши;
- Burr Sutter и Олег Ненашев — про CI/CD;
- Дмитрий Столяров и Сергей Фёдоров — про мониторинг;
- Про облака и Kubernetes есть огромная секция: Mete Atamel, Jessica Deen, Виктор Гамов, Иван Глушков…
Программа большая, в сумме 30 докладов.
Кейноуты ведут: Тим Листер (соавтор «Peopleware»), Hadi Hariri (руководитель Developer Advocacy в JetBrains) и Роман Шапошник (член совета директоров Apache Software Foundation и Linux Foundation LF Edge).
Под катом мы поговорим о том, что вообще происходит в мире девопса, разобьём события по группам и посмотрим, как это всё ложится на программу из 30 докладов.
Интерактивное веб-приложение без программирования? Легко! Mavo вам в руки
2019-10-22 в 8:03, admin, рубрики: css, html, mavo, Блог компании ГК ЛАНИТ, Ланит, Программирование, Разработка веб-сайтовВы владеете HTML и CSS и умеете создавать простые (и не очень) статические веб-страницы, а хотели бы вдохнуть в них больше «жизни» и интерактивности? У вас есть работы (картины, фотографии, стихи, коллекция марок и т. п.), которыми вам хотелось бы поделиться с миром, но создание сайта-портфолио или блога, куда можно их разместить и без лишних усилий обновлять, вам не под силу? Или мечтаете вести дневник путешественника, или собирать необычные кулинарные рецепты, или отслеживать свою фитнес-активность и делать всё это онлайн на собственном сайте? Возможно, у вас есть любимый питомец, уход за которым требует особых процедур, и их обязательно нужно отслеживать и оперативно фиксировать?
Но от упоминания JavaScript вас бросает в лёгкую (а иногда и не очень) дрожь, а количество технологий и концепций, которыми нужно овладеть, чтобы реализовать ваши задумки, приводит вас в замешательство и отчаяние? В итоге вы задаётесь вопросами: «Почему веб-программирование должно быть таким трудным? Неужели нельзя что-то придумать, чтобы сделать его проще?».
Тогда вы пришли точно по адресу. Прочитав статью, вы получите в руки инструмент, с помощью которого, я уверен, сможете воплотить в жизнь, если не все, то многие свои идеи, аналогичные перечисленным выше.
Автор оригинальных картинок: Mart Virkus (toggl.com)
Маститые и умудрённые опытом фронтенд-разработчики, не спешите закрывать статью с криками, что сейчас тут будут что-то «втирать» новичкам и вам здесь делать нечего. Я уверен, вы тоже сможете почерпнуть для себя что-то полезное. Главное, помните: если что-то станет простым для новичков, это автоматически станет простым для всех! А значит, в какой-то мере упростит жизнь и вам. Это неплохо, согласитесь?
Читать полностью »
Python 3.8: Что нового и как этим пользоваться?
2019-10-21 в 15:46, admin, рубрики: python, python 3.8, Блог компании OTUS. Онлайн-образование, Программирование, технологииСледующий перевод подготовлен специально для «питонистов», которым интересно наверняка интересно почитать о новых функциях Python 3.8. В преддверии запуска нового потока по курсу «Разработчик Python» мы не смогли пройти мимо этой темы.
В этой статье мы поговорим про новые функциональные возможности, которые были введены в Python 3.8.
Моржовый оператор (Оператор присваивания)
Мы знаем, что вы этого ждали. Это ожидание восходит еще к тем временам, когда в Python намеренно запретили использовать «=» в качестве оператора сравнения. Некоторым людям это понравилось, поскольку они больше не путали = и == в присваивании и сравнении. Другие сочли неудобной необходимость повторять оператор, либо присваивать его переменной. Давайте перейдем к примеру.
Читать полностью »
ZIO & Cats Effect: удачный союз
2019-10-21 в 12:41, admin, рубрики: cats, cats io, functional programming, monix, scala, scalaz, zio, Блог компании Конференции Олега Бунина (Онтико), Программирование, функциональное программированиеCats Effect стал своего рода «Reactive Streams» для функционального Scala-мира, позволив объединить всю разнообразную экосистему библиотек вместе.
Многие отличные библиотеки: http4s, fs2, doobie — реализуются только на базе тайп классов из Cats Effect. А библиотеки типа ZIO и Monix, уже в свою очередь, предоставляют инстансы этих тайп классов для своих типов эффектов. Несмотря на некоторые проблемы, которые будут исправлены в версии 3.0, Cats Effect помогает многим опенсорс контрибьюторам органично поддерживать всю функциональную экосистему языка Scala. Разработчики, которые используют Cats Effect, сталкиваются с трудным выбором: какую реализацию эффектов использовать для своих приложений.
На сегодня есть три альтернативы:
- Cats IO, ссылочная реализация;
- Monix, тип данных Task и связанная с ним реактивность в коде;
- ZIO, тип данных ZIO и его прицел на многопоточность.
В этом посте я постараюсь доказать вам, что для создания своего приложения с использованием Cats Effect, ZIO — хороший выбор с дизайн решениями и возможностями, довольно сильно отличающимися от ссылочной реализации в Cats IO.
Читать полностью »
Data-Oriented Design (или почему, используя ООП, вы, возможно, стреляете себе в ногу)
2019-10-21 в 4:23, admin, рубрики: data-oriented design, Клиентская оптимизация, методика разработки, ооп, ПрограммированиеПредставьте себе такую картину: близится конец цикла разработки, ваша игра едва ползает, но в профайлере вы не можете найти очевидных проблемных мест. Кто же виноват? Паттерны произвольного доступа к памяти и постоянные промахи кеша. Пытаясь повысить производительность, вы пробуете распараллелить части кода, но это стоит героических усилий, и в конечном итоге из-за всей синхронизации, которую пришлось добавить, ускорение едва заметно. К тому же код настолько сложен, что исправление багов вызывает ещё больше проблем, и мысль о добавлении новых возможностей сразу отбрасывается. Звучит знакомо?
Такое развитие событий довольно точно описывает почти каждую игру, в разработке которой я участвовал на протяжении последних десяти лет. Причины заключаются не в языках программирования и не в инструментах разработки, и даже не в отсутствии дисциплины. По моему опыту, в большой степени в этом стоит винить объектно-ориентированное программирование (ООП) и окружающую его культуру. ООП может не помогать, а мешать вашим проектам!
Читать полностью »
Задача определения наличия ладони на сканере вен
2019-10-20 в 16:30, admin, рубрики: c++, qt, QtCreator, анализ изображений, биометрические сканеры, биометрия, обработка изображений, ПрограммированиеКак-то мне в руки попало тестовое задание. Академический интерес взял верх и я решил посидеть над этой задачкой. Мое решение не претендует на оптимальность и правильность. Мне просто интересно было ее решить.
Мы ускорили планировщик Tokio в десять раз
2019-10-20 в 13:59, admin, рубрики: crossbeam, Hyper, loom, mpmc, Rust, TechEmpower, Tonic, Алгоритмы, высокая производительность, двусторонняя очередь, захват работы, комбинаторный взрыв, пермутационное тестирование, планировщик задач, Программирование, система задач, Тестирование IT-систем, шедулерМы в поте лица готовим очередную мажорную версию Tokio, асинхронной среды выполнения для Rust. 13 октября для слияния в ветку оформлен пул-реквест с полностью переписанным планировщиком задач. Результатом станет огромное улучшение производительности и уменьшение задержки. В некоторых тестах зафиксировано десятикратное ускорение! Как обычно, синтетические тесты не отражают фактическую выгоду в реальности. Поэтому мы также проверили, как изменения в планировщике повлияли на настоящие задачи, такие как Hyper и Tonic (спойлер: результат замечательный).
Готовясь к работе над новым планировщиком, я потратил время на поиск тематических ресурсов. Кроме фактических реализаций, особо ничего не нашлось. Я также обнаружил, что в исходниках существующих реализаций трудно ориентироваться. Чтобы исправить это, мы постарались написать шедулер Tokio как можно более чисто. Надеюсь, эта подробная статья о реализации планировщика поможет тем, кто находится в том же положении и безуспешно ищет информацию на эту тему.
Статья начинается с высокоуровневого обзора дизайна, в том числе политик захвата работы. Затем погрузимся в детали конкретных оптимизаций в новом планировщике Tokio.
Читать полностью »
Реализация PEG парсера
2019-10-19 в 19:08, admin, рубрики: packrat parsers, peg, pgen, python, алгоритм, Алгоритмы, ПрограммированиеВдохновленный лишь частичным пониманием PEG, я решил попробовать его реализовать. Результат может получиться и не самым лучшим среди парсеров PEG общего назначения — их уже много (например, TatSu написан на Python и генерирует код Python) — но это хороший способ разобраться в PEG. В дальнейшем я хочу заменить им текущую реализацию парсера в CPython.
- PEG парсеры
- Реализация PEG парсера
- Генерация PEG парсера
- Визуализация работы PEG парсера
- Леворекурсивные PEG грамматики
- Добавление экшенов в грамматику PEG
- Реализация остальных возможностей PEG
- PEG на Core Developer Sprint
В этом разделе я закладываю основы для понимания работы парсера, на примере простой самописной реализации игрушечной грамматики из прошлой статьи.
Занимательная практика для разработчика
2019-10-19 в 15:38, admin, рубрики: Блог компании Edison, задачки, Программирование, Учебный процесс в ITЧеловек остается начинающим в течение 1000 дней. Он находит истину после 10000 дней практики.
Это цитата Оямы Масутацу, которая довольно хорошо излагает суть статьи. Если вы хотите быть классным разработчиком — приложите усилия. В этом весь секрет. Проводите много часов за клавиатурой и не бойтесь практиковаться. Тогда вы вырастите как разработчик.
Вот 7 проектов, которые могут помочь вам в развитии. Не стесняйтесь выбирать свой стек технологий — используйте все, что вашей душе угодно.
(предыдущие списки заданий для тренировки: 1) 8 учебных проектов 2) Еще список проектов, на чем потренироваться)
Проект 1: Pacman
Создайте свою версию Pacman. Это отличный способ получить представление о том, как разрабатываются игры, понять основы. Используйте JavaScript-фреймворк, React или Vue.
Вы узнаете:
- Как передвигаются элементы
- Как определить какие клавиши нажимать
- Как определить момент столкновения
- Вы можете не останавливаться на достигнутом и добавить управление движением призраков
Пример этого проекта вы найдете в репозитории GitHub
«Мастер совершает больше ошибок, чем новичок — попыток»