Как стать автором
Поиск
Написать публикацию
Обновить
1165.74

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Топ 20 ошибок при работе с многопоточностью на С++ и способы избежать их

Время на прочтение21 мин
Количество просмотров82K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи «Top 20 C++ multithreading mistakes and how to avoid them» автора Deb Haldar.


Сцена из фильма «Петля времени» (2012)

Многопоточность— одна из наиболее сложных областей в программировании, особенно в C++. За годы разработки я совершил множество ошибок. К счастью, большинство из них были выявлены на код ревью и тестировании. Тем не менее, некоторые каким-то образом проскакивали на продуктив, и нам приходилось править эксплуатируемые системы, что всегда дорого.

В этой статье я попытался категоризировать все известные мне ошибки с возможными решениями. Если вам известны еще какие-то подводные камни, либо имеете предложения по решению описанных ошибок– пожалуйста, оставляйте свои комментарии под статьей.
Читать дальше →

Python & Arduino. Просто, быстро и красиво

Время на прочтение4 мин
Количество просмотров158K
Очень часто, у начинающих и не только разработчиков возникают вопросы. Как управлять с Arduino с компьютера? А если компьютер — не Raspberry Pi, а обычный домашний компьютер? А если не хочется мучится с ESP8266 и управлять через веб интерфейс? Неужели надо каждый раз открывать Arduino IDE и отправлять команды через Монитор порта? Именно о том, как создать своё собственное приложение с графическим интерфейсом для управления Arduino я сейчас и расскажу.
Читать дальше →

Дзен Эрланга [и Эликсира — прим. переводчика]

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

Введение от переводчика


В данной статье речь идёт об Erlang, но всё сказанное в равной степени применимо и к Elixir — функциональному языку, работающему поверх той же виртуальной машины BEAM. Он появился в 2012 году и сейчас активно развивается. Elixir получил более привычный большинству синтаксис плюс обширные возможности метапрограммирования, сохранив преимущества Erlang.


Ещё от переводчика

Статья от 2016 года, но речь в ней идёт о базовых концепциях, которые не устаревают.


Ссылки на понятия и комментарии от меня (переводчика) расположены в квадратных скобках [] и снабжены указателем "прим. переводчика".


Если вы найдёте какие-то части перевода недостаточно корректными, особенно в плане терминов, или столкнётесь с любыми другими ошибками — дайте мне, пожалуйста, знать, с удовольствием исправлю.


Отдельное спасибо Яну Гравшину за помощь в вычитке и редактуре текста.


Это свободная расшифровка (или долгий парафраз?) моей презентации на организованной Genetec конференции ConnectDev'16.


001


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

Читать дальше →

Обновить панель управления для CPaaS: заново придумать UI/UX и внедрить IDE нормального человека

Время на прочтение3 мин
Количество просмотров3.2K
Возможно, вы уже успели попробовать новую панель, пока она была в открытой бете: в старой панели была специальная кнопка для переключения. Как бы то ни было, теперь новая панель доступна всем.

И это не просто релиз, а настоящее переосмысление UI/UX управления аккаунтами Voximplant. Приглашаю всех под кат – вас ждет обзор самых существенных нововведений.
На всякий случай: скриншоты кликабельны.

Читать дальше →

Подсветка клавиатуры DasKeyboard в зависимости от уровня глюкозы в крови при помощи REST API

Время на прочтение4 мин
Количество просмотров3.9K
Из блога Скотта Хансельмана, преподавателя, программиста и лектора.

Я давно уже пишу в своём блоге статьи на темы, находящиеся на пересечении диабета и технологий. В 2012 году состояние технологий, связанных с диабетом, было плачевным, но сейчас они испытывают многообещающий подъём.

Если у вас диабет I типа и вы используете аппарат для непрерывного измерения уровня глюкозы (continuous glucose meter, CGM), вам понадобится настроить сервис Nightscout, и у вас появится REST API для доступа к данным по уровню глюкозы в крови. CGM проверяет уровень глюкозы в моей крови каждые 5 минут, по каналу Bluetooth с низким энергопотреблением данные поступают в мой телефон, а оттуда – в облако. Но вам нужно хранить данные по глюкозе в облаке, находящемся под вашим контролем. Производители CGM предлагают собственные облака, но мы можем легко наладить экспорт оттуда в базу данных MongoDB.

Coroutines :: опыт практического применения

Время на прочтение9 мин
Количество просмотров35K
В этой статье расскажу о том, как работают корутины и как их создать. Рассмотрим применение при последовательном, параллельном выполнении. Поговорим об обработке ошибок, отладке и способах тестирования корутин. В конце я подведу итог и расскажу о впечатлениях, которые остались после применения данного подхода.

Статья подготовлена по материалам моего доклада на MBLT DEV 2018, в конце поста — линк на видеозапись.

Последовательный стиль


Dart 2. Асинхронное программирование: потоки данных

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

Асинхронное программирование: потоки данных


Содержание



Что важно:


  • Потоки обеспечивают асинхронную последовательность данных.
  • Последовательности данных содержат пользовательские события и данные, считываемые из файлов.
  • Поток можно обработать с помощью await for или listen() из Stream API.
  • Потоки предоставляют способ реагирования на ошибки.
  • Существует два типа потоков: потоки-подписки (single subscription) и широковещательные (broadcast).
Читать дальше →

Dart 2. Асинхронное программирование: futures

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

Асинхронное программирование: futures


Содержание



Что важно:


  • Код в Dart работает в одном треде (прим. thread — поток) выполнения.
  • Из-за кода, который долго занимает (блокирует) тред выполнения, программа может зависнуть.
  • Объекты Future (futures) представляют результаты асинхронных операций — обработки или ввода-вывода, которые будут завершены позже.
  • Чтобы приостановить выполнение до завершения в будущем, используйте await в асинхронной функции (или then() при использовании Future API).
  • Чтобы поймать ошибки, используйте в асинхронной функции конструкцию try-catch (или catchError() при использовании Future API).
  • Для одновременной обработки создайте изолят (или worker для веб-приложения).
Читать дальше →

Школа программирования 42 school в США — американская мечта, доступная каждому

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

Инновационная школа программирования 42 school даёт бесплатное обучение и проживание в Кремниевой долине даже для тех, кто ничего не смыслит в коде.




Эту планету уже не остановить: мир помешался на программировании и люди готовы войти в айти после тридцати пяти и даже сорока. Разумеется, такой спрос не мог не породить предложение — появилась лавина школ, курсов, онлайн-форматов и чего угодно. 21 день — и ты бог С++, гуру JavaScript, джедай Python. Только плати, а там как карта ляжет. Между тем, эффективное обучение — это прежде всего практика, мотивация и опыт преподавателей. Есть такая школа, которая объединяет всё перечисленное и почти полностью исключает страх. Думаем, вы не раз слышали о 42 school, но не вдавались в подробности. Мы вам расскажем, так как прошли ее бассейн (Piscine) на собственном опыте.
Читать дальше →

Чистая архитектура. Часть I — Введение

Время на прочтение4 мин
Количество просмотров33K
Это вольный и очень краткий пересказ новой книги Роберта Мартина (Дяди Боба) «Чистая Архитектура», выпущенной в 2018 году.
Читать дальше →

Виртуальная машина своими руками

Время на прочтение4 мин
Количество просмотров20K
Иногда в голову приходит какая-то мысль избавиться от которой очень сложно. Такое произошло и со мной.

Я решил создать виртуальную машину (VM), учитывая то, что на тот момент у меня не было идей, мне показалось, что это прекрасная мысль. Если вы заинтересовались, то вперёд под кат!
Читать дальше →

Функциональное мышление. Часть 10

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

Вы представляете, это уже десятая часть цикла! И хотя до этого повествование было сфокусировано на чисто функциональном стиле, иногда удобно переключиться на объектно-ориентированный стиль. А одними из ключевых особенностей объектно-ориентированного стиля являются возможность прикреплять функции к классу и обращение к классу через точку для получения желаемого поведения.



Читать дальше →

7 шагов к использованию Room. Пошаговое руководство по миграции приложения на Room

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

7 шагов к использованию Room. Пошаговое руководство по миграции приложения на Room


Room — это библиотека, которая является частью архитектурных компонентов Android. Она облегчает работу с объектами SQLiteDatabase в приложении, уменьшая объём стандартного кода и проверяя SQL-запросы во время компиляции.


У вас уже есть Android-проект, который использует SQLite для хранения данных? Если это так, то вы можете мигрировать его на Room. Давайте посмотрим, как взять уже существующий проект и отрефакторить его для использования Room за 7 простых шагов.


TL;DR: обновите зависимости gradle, создайте свои сущности, DAO и базу данных, замените вызовы SQLiteDatabase вызовами методов DAO, протестируйте всё, что вы создали или изменили, и удалите неиспользуемые классы. Вот и всё!
Читать дальше →

Ближайшие события

Языки программирования: PowerShell захватывает всё больше разработчиков под Linux, macOS и Windows

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


Публикация компанией Microsoft исходников скриптового языка PowerShell вызывает отклик у всё большего числа разработчиков. По-видимому, это недавнее решение Microsoft начинает окупаться. В индексе TIOBE (The Importance Of Being Earnest) он появился в топ-50 самых популярных языков программирования.

Microsoft опубликовала исходники своего 12-летнего скриптового языка три года назад как часть своего подхода к совместимости операционных систем.

Дебют PowerShell на Linux и macOS в 2016-м году состоялся после того, как генеральный директор Microsoft Сатья Наделла (Satya Nadella) сказал, что «Microsoft любит Linux», а его предшественник Стив Балмер (Steve Ballmer), что вообще-то Linux — это не злокачественная опухоль.

Читать дальше →

Уволен через автоматизацию

Время на прочтение16 мин
Количество просмотров21K
Вспомним, что такое автоматизация. Возьмем, например, определение из Википедии.

Автоматизация — одно из направлений научно-технического прогресса, использующее саморегулирующие технические средства и математические методы с целью освобождения человека от участия в процессах получения, преобразования, передачи и использования энергии, материалов, изделий или информации, либо существенного уменьшения степени этого участия или трудоёмкости выполняемых операций.

Ключевую фразу я выделил жирным шрифтом. Проще говоря, автоматизация нужна для того, чтобы освободить человека от каких-то обязанностей. Что это такое – освобождение человека от обязанностей? Вы ведь слышали фразу «освобожден от исполнения обязанностей»? Это – увольнение.

Если вы занимаетесь автоматизацией, то скажите честно – много ли людей были освобождены от обязанностей благодаря вашей работе? Только здесь важны факты, а не домыслы.
Читать дальше →

Пишем гибкий код, используя SOLID

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


От переводчика: опубликовали для вас статью Северина Переса об использовании принципов SOLID в программировании. Информация из статьи будет полезна как новичкам, так и программистам с опытом.

Если вы занимаетесь разработкой, то, скорее всего, слышали о принципах SOLID. Они дают возможность программисту писать чистый, хорошо структурированный и легко обслуживаемый код. Стоит отметить, что в программировании есть несколько подходов к тому, как правильно выполнять ту либо иную работу. У разных специалистов — разные идеи и понимание «правильного пути», все зависит от опыта каждого. Тем не менее, идеи, провозглашенные в SOLID, принимаются практически всеми представителями ИТ-сообщества. Они стали отправной точкой для появления и развития множества хороших методов управления разработкой.

Давайте разберемся с тем, что такое принципы SOLID и как они помогают нам.
Читать дальше →

Предварительная программа DUMP-2019 готова. Выступят докладчики из Evil Martians, Tinkoff.ru, HTML Academy, SkyEng, 2ГИС

Время на прочтение10 мин
Количество просмотров2K
Привет, Хабр!

19 апреля в Екатеринбурге в девятый раз пройдёт конференция разработчиков DUMP. Доклады будут идти в 8 секциях: Backend, Frontend, Mobile, Тестирование и QA, Devops, Design, Science и Management. Плюс мастер-классы, выделенные зоны для общения, активности от спонсоров и афтепати.

В предварительной программе 52 спикера, среди которых: Николай Сверчков (Evil Martians), Вадим Макеев (HTML Academy), Артемий Рябинков (Avito), Александр Коротаев (Tinkoff.ru), Александр Хлебников (2ГИС), Александр Денисов (EPAM), Павел Стрельченко (HeadHunter), Алексей Катаев (SkyEng), Алексей Жуков (Контур), Григорий Савенок (МегаФон), Сергей Кривой (SEMrush), Александра Руденко (Бюро сервисного дизайна). Итоговая программа будет готова к 20 марта. Под катом — подробности программы.


Если вы не знаете, что такое DUMP, вот маленький ролик о том, как прошла прошлогодняя конференция
Читать дальше →

VS Code — сниппеты Puppeteer

Время на прочтение2 мин
Количество просмотров3.8K
Это расширение Visual Studio Code добавляет предопределенные полезные фрагменты кода для Puppeteer. Проверьте API для получения дополнительной информации о доступных возможностях.

Читать дальше →

Backend United 3: Холодец

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

Привет! Мы продолжаем Backend United, серию митапов для разработчиков серверной части. Третья встреча называется «Холодец», и посвящена она будет микросервисной архитектуре. Вместе с коллегами из Booking.com, Dodo Pizza и Авито поговорим о монолитах, распилах и обратной стороне сервис-ориентированной архитектуры.


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


Читать дальше →

Что почитать в марте: 22 книжные новинки для маркетологов, управленцев, разработчиков и дизайнеров

Время на прочтение6 мин
Количество просмотров8.6K
Собрали и кратко описали 22 книжные новинки, которые вышли в ведущих книжных издательствах России.


Разработчикам и аналитикам


Читать дальше →

Вклад авторов