Search
Write a publication
Pull to refresh
-2
0
Алексей Дебелов @AlienJust

Разработчик ПО

Send message

Сериал «Чернобыль»: смотреть и думать

Reading time9 min
Views200K
Горький опыт сериалов, которые хорошо начинаются и разочаровывающе заканчиваются, удерживал меня от написания восторженного обзора на сериал «Чернобыль» до этой недели. И сейчас, когда вышла последняя, пятая серия, к сожалению, я вынужден сказать, что это отличный сериал, это прекрасный повод узнать больше о чернобыльской катастрофе, его обязательно стоит посмотреть, если вы еще не, но, если первые три серии, на мой взгляд, поднимаются до уровня моего самого любимого фильма «Аполлон-13», то две последние, опять же, по моему мнению, оказываются заметно похуже.


Кадр из сериала

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

Настройка связки php-fpm + nginx под WSL

Reading time2 min
Views14K
Я — виндузятник и всячески увиливаю от окончательного перехода на Linux на своём PC не смотря на все его преимущества. Поэтому последние пару лет для создания локальных площадок под проекты использовал Docker for Windows. Не сказать что штука сверхстабильная, но существенных проблем не вызывала, пока на одном проекте на Laravel площадка не стала вести себя странно: часть запросов (и всегда разная часть) возвращались с ошибкой. Скрипт не мог открыть файл кэша.

Бесполезно потратив изрядное количество времени на поиск причины решил в данном случае отказаться от Docker и развернуть площадку под WSL в ручном режиме.
Читать дальше →

Решение японских кроссвордов c P̶y̶t̶h̶o̶̶n̶ Rust и WebAssembly

Reading time20 min
Views16K

Rust logo as nonogram


Как сделать решатель (солвер) нонограмм на Python, переписать его на Rust, чтобы запускать прямо в браузере через WebAssembly.


TL;DR

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

Где хранятся ваши константы на микроконтроллере CortexM (на примере С++ IAR компилятора)

Reading time18 min
Views24K
Я обучаю своих студентов работе с микроконтроллером STM32F411RE, на борту которого имеется аж целых 512 кБайт ROM и 128 кБайт ОЗУ
Обычно на этом микроконтроллере в ROM память записывается программа, а в RAM изменяемые данные и очень часто нужно сделать так, чтобы константы лежали в ROM.
В микроконтроллере STM32F411RE, ROM память расположена по адресам с 0x08000000...0x0807FFFF, а RAM с 0x20000000...0x2001FFFF.

И если все настройки линкера правильные, студент рассчитывает, что вот в таком незамысловатом коде его константа лежит в ROM:

class WantToBeInROM
{
private:
  int i;
public:
  WantToBeInROM(int value): i(value) {}
  int Get() const
  {
    return i;
  }
};

const WantToBeInROM myConstInROM(10);

int main()
{  
  std::cout << &myConstInROM << std::endl ;
}

Вы тоже можете пробовать ответить на вопрос: где лежит константа myConstInROM в ROM или в RAM?

Если вы ответили на этот вопрос, что в ROM, поздравляю вас, на самом деле скорее всего вы не правы, константа в общем случае будет лежать в RAM и чтобы разобраться, как правильно и законно расположить ваши константы в ROM — добро пожаловать под кат.
Читать дальше →

Аппаратный bit banding CortexM3/M4(ARM), архитектура ядра, ассемблер, С/C++14 и капля метапрограммирования

Reading time9 min
Views25K

Введение


Внимание, это не очередная «Hello world»статья о том как помигать светодиодом или попасть в свое первое прерывание на STM32. Однако, я постарался дать исчерпывающие объяснения по всем затрагиваемым вопросам, поэтому статья будет полезна не только многим профессиональным и мечтающим стать таковыми разработчикам (как я надеюсь), но и начинающим программистам микроконтроллеров, так как тема эта почему-то обходится стороной на бесчисленных сайтах/блогах «учителей программирования МК».

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

Самая красивая теорема математики: тождество Эйлера

Reading time11 min
Views143K
Посмотрев лекцию профессора Робина Уилсона о тождестве Эйлера, я наконец смог понять, почему тождество Эйлера является самым красивым уравнением. Чтобы поделиться моим восхищением это темой и укрепить собственные знания, я изложу заметки, сделанные во время лекции. А здесь вы можете купить его прекрасную книгу.

Что может быть более загадочным, чем взаимодействие мнимых чисел с вещественными, в результате дающее ничто? Такой вопрос задал читатель журнала Physics World в 2004 году, чтобы подчеркнуть красоту уравнения Эйлера «e в степени i, умноженного на пи равно минус единице».


Рисунок 1.0: тождество Эйлера — e в степени i, умноженного на пи, плюс единица равно нулю.

Ещё раньше, в 1988 году, математик Дэвид Уэллс, писавший статьи для американского математического журнала The Mathematical Intelligencer, составил список из 24 теорем математики и провёл опрос, попросив читателей своей статьи выбрать самую красивую теорему. И после того, как с большим отрывом в нём выиграло уравнение Эйлера, оно получило званием «самого красивого уравнения в математике».
Читать дальше →

На злобу дня: кроссплатформенный клиент для Telegram на .NET Core и Avalonia

Reading time9 min
Views22K

В этой статье я расскажу, как реализовать кроссплатформенное приложение на .NET Core и Avalonia. Тема Телеграма очень популярна в последнее время — тем интереснее будет сделать клиентское приложение для него.


Egram


Статья затрагивает достаточно базовые концепции разработки на Avalonia. Тем не менее, мы не будем писать "Hello, World". Вместо этого предлагается рассмотреть реальное приложение. Изучим как общую архитектуру приложения, так и отдельные компоненты.


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


Текст статьи носит обучающий характер, но сам проект вполне реальный. Целью проекта является создание клиента, рассчитанного на использование в качестве рабочего инструмента. Множество идей позаимствовано из других мессенджеров и переложено на модель Telegram.

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

Что не нужно делать, если у вас украли телефон

Reading time7 min
Views236K
Ранее каждый раз, когда я видел сообщения о том, что у человека украли телефон, то всегда задавался вопросом: а зачем? Ну, серьезно, зачем воруют смартфоны если:

  • его можно отследить по IMEI, а смена IMEI явно не бесплатна;
  • на телефоне могут быть установлены блокировки, снять которые так же не бесплатно;
  • есть приложения с режимом «Антивор», которые передают фото, видео и аудио;
  • даже встроенные возможности Android (и, полагаю, iOS) имеют функцию геолокации пропавшего устройства;
  • устройство может иметь особые приметы, которые довольно сложно устранить «бесплатно»;
  • наверняка где-то рядом есть камеры видеонаблюдения, свидетели и т.п.;
  • при продаже краденного за него сложно будет выручить большую сумму денег.

Осознавая все это, я действительно не понимал, для чего же воруют телефоны, если, по сути, их легко найти, а денег на этом не заработать? Не понимал до 8 февраля 2019 года, пока у меня у самого не украли телефон.
Читать дальше →

DynamicData: Dynamic Collections, the MVVM Architecture, and Reactive Extensions

Reading time10 min
Views18K


February 2019 marked the release of ReactiveUI 9 — the cross-platform framework for building GUI applications on the Microsoft .NET platform. ReactiveUI is a tool for tight integration of reactive extensions with the MVVM design pattern. You could familiarize yourself with the framework via a series of videos or the welcome page of the documentation. The ReactiveUI 9 update includes numerous fixes and improvements, but probably the most crucial and interesting one is integration with the DynamicData framework, allowing you to work with dynamic collections in Reactive fashion. Let’s find out what we can use DynamicData for and how this powerful reactive framework works under the hood!

Read more →

Шины и протоколы в промышленной автоматике: как всё это работает

Reading time9 min
Views49K


Наверняка многие и вас знают или даже видели, каким образом управляются большие автоматизированные объекты, например, атомная станция или завод со множеством технологических линий: основное действо часто происходит в большой комнате, с кучей экранов, лампочек и пультов. Это комплекс управления обычно называется ГЩУ — главный щит управления для контроля за производственным объектом.

Наверняка вам было интересно, как всё это работает с точки зрения аппаратной и программной части, и какие там используются протоколы передачи данных. В этой статье мы разберемся, как различные данные попадают на ГЩУ, как подаются команды на оборудование, и что вообще нужно, чтобы управлять компрессорной станцией, установкой производства пропана, линией сборки автомобиля или даже канализационно-насосной установкой.
Читать дальше →

Документация по API Xamarin теперь в открытом доступе

Reading time2 min
Views4.5K
Мы рады объявить о выпуске всей документации по API Xamarin в формате Open-Source! Документация по API помогает улучшить взаимодействие с IntelliSense и является одним из лучших способов помочь разработчикам достичь своих целей.

Документация по API Xamarin


Кроме того, мы также перенесли хостинг с сайта Xamarin на docs.microsoft.com:

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

Книга «Конкурентность и параллелизм на платформе .NET. Паттерны эффективного проектирования»

Reading time8 min
Views11K
image Привет, Хаброжители! Книга Рикардо Террелли (Riccardo Terrell) дает представление о рекомендуемых методах создания конкурентных и масштабируемых программ в .NET, освещая преимущества функциональной парадигмы и предоставляя соответствующие инструменты и принципы, позволяющие легко и правильно поддерживать конкурентность. В итоге, вооружившись новыми навыками, вы получите знания, необходимые для того, чтобы стать экспертом в предоставлении успешных высокопроизводительных решений.

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

Как работает конфигурация в .NET Core

Reading time9 min
Views73K

Давайте отложим разговоры о DDD и рефлексии на время. Предлагаю поговорить о простом, об организации настроек приложения.


После того как мы с коллегами решили перейти на .NET Core, возник вопрос, как организовать файлы конфигурации, как выполнять трансформации и пр. в новой среде. Во многих примерах встречается следующий код, и многие его успешно используют.


public IConfiguration Configuration { get; set; }
public IHostingEnvironment Environment { get; set; }

public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
   Environment = environment;
   Configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{Environment.EnvironmentName}.json")
            .Build();
}

Но давайте разберемся, как работает конфигурация, и в каких случаях использовать данный подход, а в каких довериться разработчикам .NET Core. Прошу под кат.

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

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1

Reading time18 min
Views78K
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.
Вторая часть доступна здесь

Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
Читать дальше →

Популярные заблуждения про радиационную стойкость микросхем

Reading time31 min
Views113K
Примерно в каждой второй теме на Хабре, касающейся космонавтики или электроники, всплывает тема радиационной стойкости. Через новости об отечественной космонавтике красной нитью проходит тематика импортозамещения радстойкой элементной базы, но в то же самое время Элон Маск использует дешевые обычные чипы и гордится этим. А изральтяне в «Берешите» использовали радстойкий процессор и тоже гордятся этим. Да и в принципе микроэлектронная отрасль в России живет по большей части за счет госзаказа с соответствующими требованиями. Наблюдение за регулярными спорами насчет того, как надо правильно строить спутники, показывает, что подготовка участников обычно невысока, а их аргументация отягощена стереотипами, случайно услышанными вырванными из контекста фактами и знаниями, устаревшими много лет назад. Я подумал, что читать это больше нет сил, поэтому, дорогие аналитики, устраивайтесь поудобнее на своих диванах, и я начну небольшой (на самом деле большой) рассказ о самых популярных заблуждениях на тему того, что такое радиационная стойкость интегральных микросхем.


Рисунок 1. Непременная красивая картинка про космическое излучение и хрупкую Землю.
Читать дальше →

Разбираем змею

Reading time6 min
Views90K

Принципиальная схема змеи, рисовала прекрасная Ш.А.Г. с моих слов

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

Ну и вокруг них много недопонимания.

Начнём с того, что змеи приятные на ощупь. Они никакие не слизкие, а сухие и чаще всего тёплые (в большинстве мест, где вы их можете найти в природе, потому что они вообще-то не теплокровные). Но пока мы не зашли дальше, давайте сразу договоримся, что после прочтения поста вы не кинетесь обниматься со всеми встречными змеями. Среди них много ядовитых, а среди ядовитых много таких, которые убивают человека за раз. И многие движутся при этом быстрее вашей реакции.

Есть змеи, которые умеют плеваться ядом вам в глаза. Есть змеи, которые офигенно плавают. Есть змеи, которые могут двигаться под песком как маленькие версии червя из Дюны.

Но начнём с разбора змеи. С корпуса.
Читать дальше →

Опусы про Его Величество Клей. Часть вторая — Viva, цианоакрилат! Viva, суперклей

Reading time19 min
Views117K

Как я и обещал в пилотной "клейкой" статье — рассматривать клеи будем постепенно. Чтобы не откладывать дело в долгий ящик, я решил вдогонку представить вашему вниманию некоторые факты связанные с любимым, не побоюсь этого слова, народным клеем — с цианоакрилатным "суперклеем". Кроме того, в меру своих сил я попытался в рамках темы статьи осветить все вопросы, которые читатели задали в предыдущей части. Так что, если вы активный пользователь суперклея — не пропустите. Самая актуальная информация про "сода+суперклей", про то почему суперклей нужно хранить в холодильнике и можно ли зажечь вату суперклеем, чем смывать?, что клеит? — все под катом!


Приклеиться к полному тексту статьи!

Оптимизация сборки мусора в высоконагруженном .NET сервисе

Reading time16 min
Views33K
Ежедневно в сервисе Pyrus работают десятки тысяч сотрудников из нескольких тысяч организаций по всему миру. Отзывчивость сервиса (скорость обработки запросов) мы считаем важным конкурентным преимуществом, так как она напрямую влияет на впечатление пользователей. Ключевой метрикой для нас является «процент медленных запросов». Изучая ее поведение, мы заметили, что раз в минуту на серверах приложений возникают паузы длиной около 1000 мс. В эти промежутки сервер не отвечает и возникает очередь из нескольких десятков запросов. О поиске причин и устранении узких мест, вызванных сборкой мусора в приложении, пойдет речь в этой статье.


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

Современные возможности C++, о которых надо знать всем программистам

Reading time9 min
Views42K
Автор материала, перевод которого мы сегодня публикуем, говорит, что C++, в его современном виде, если сравнивать его с тем, чем был этот язык несколько лет назад, значительно изменился в лучшую сторону. Конечно, эти изменения произошли далеко не сразу. Например, в былые времена C++ не хватало динамичности. Непросто было найти человека, который мог бы сказать, что он питает к этому языку нежные чувства. Всё изменилось тогда, когда те, кто отвечает за стандартизацию языка, решили дать ход новшествам. В 2011 году C++ стал динамическим языком, языком, который постоянно развивается и вызывает у программистов куда больше положительных эмоций.

Не стоит думать, что язык стал проще. Его всё ещё можно назвать одним из самых сложных широко используемых языков программирования, если не самым сложным. Но современный C++ стал гораздо дружелюбнее, чем раньше.



Сегодня мы поговорим о некоторых новых возможностях языка (начиная с C++ 11, которому, кстати, уже 8 лет), знать о которых будет полезно любому программисту.
Читать дальше →

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity