Pull to refresh
87
0

Open source contributor

Про импортозамещение

Reading time 15 min
Views 249K

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

Читать далее
Total votes 595: ↑577 and ↓18 +559
Comments 1187

48 полноценных бесплатных книг для программистов (happy developer's day)

Reading time 2 min
Views 105K

Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.

Дисклеймер. Все эти книги взяты с одного ресурса, который существует за счет донейшенов. Получить книги можно без осуществления донейшенов, ресурс полностью бесплатный, пожертвования опциональны. Все книги написаны на основе контента со StackOverflow и являются код-ориентированными. Книги со временем обновляются. По ссылкам -- книги, актуальные на 15.09.2021.

Читать далее
Total votes 100: ↑99 and ↓1 +98
Comments 55

WPF, UWP, WinUI, MAUI, Windows App SDK

Reading time 6 min
Views 24K

Человека далёкого от клиентской разработки на Windows все эти термины определённо путают. И даже среди MS-сообщества регулярно возникают споры жив UWP или мёртв. Причем главный вопрос в этом споре - а что же такое UWP?

Вот уже года 3 Microsoft проводит "рефакторинг" в своём "королевстве".  Несколько устав видеть одни и те же споры в твиттере, и оставлять одни и те же комментарии на хабре, я решил расписать как же многочисленные UI-фреймворки MS соотносятся между собой. Кто из них больше мёртв. Возможно, кому-то это поможет в выборе технологии для будущего проекта.

Читать далее
Total votes 32: ↑31 and ↓1 +30
Comments 40

Королевские рефакторинги с Roslyn

Reading time 11 min
Views 10K

Всем привет! Давно хотел написать эту статью, но материал всё никак не собирался: всё-таки рефакторинг - не на каждый день развлечение. Особенно если крупный. Речь пойдёт о том, как можно использовать Roslyn для лечения разной боли в шарповом коде. Если по центру вашего проекта возвышается огромная куча неудобного легаси и вам страшно на неё смотреть - добро пожаловать под кат. Возможно, мой материал позволит взглянуть на проблему с другого ракурса и понять, что не всё так печально. По идее сам подход может быть применим к любому языку, экосистема которого включает в себя тулинг для компилятора. Но это не точно. Однако, я расскажу всё, что знаю на двух примерах из реальной жизни.

Под кат
Total votes 30: ↑29 and ↓1 +28
Comments 5

Создание пакета NuGet для библиотеки с платформозависимым API

Level of difficulty Medium
Reading time 13 min
Views 6.8K

Когда речь заходит о создании .NET библиотеки, части API которой являются платформозависимыми, приходится думать, как всё это оформить в NuGet пакет, да так, чтобы установленная из пакета библиотека работала в разных сценариях (.NET Framework, .NET Core, self-contained app и т.д.). К сожалению, в сети сложно найти инструкцию, которая бы шаг за шагом показывала, как выполнить эту задачу. Данная статья призвана быть такой инструкцией.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Comments 15

Как уменьшить размер приложения на C#, которое независимо от среды?

Reading time 2 min
Views 13K

В этой статье поделюсь опытом, как уменьшить размер приложения, написанное на C# и независящее от сборки, в 2 – 4 раза.

Читать далее
Total votes 20: ↑18 and ↓2 +16
Comments 26

Студенты, лабы и python: обработка данных

Reading time 4 min
Views 4.7K

В своей предыдущей заметке на тему обработки данных лабораторных работ я написал об использовании пакета gnuplot – простого и мощного инструмента для решения подобных задач и графического представления результатов. Однако довольно распространённым является мнение, что студенты, которым я советовал использовать gnuplot, вероятно, изучают программирование и способы визуализации данных, и что для них более естественным и полезным будет практическое применение уже полученных навыков в этой сфере. В этом коротком тексте мы рассмотрим применение python с использованием библиотек scipy для обработки данных и matplotlib для представления результатов.

Читать далее
Total votes 3: ↑3 and ↓0 +3
Comments 2

Посмотрим на девочек? Или ml.net в работе

Reading time 9 min
Views 65K

К сожалению, мир машинного обучения принадлежит python.

Он давно закрепился, как рабочий язык для Data Silence, с чем Microsoft решила поспорить. Так появился ML.NET, кросс-платформенная и открытая система машинного обучения для разработчиков .NET.

В данной статье, я хочу показать, что использовать ml.net - не сложнее, чем остальные варианты, которые есть, на реально работающем примере, ссылку на который оставлю внизу. Это канал в телеграмме, который в автоматическом режиме забирает данные, классифицирует их(это и будем рассматривать) и постит. Кому интересно, добро пожаловать.

Ознакомиться
Total votes 39: ↑35 and ↓4 +31
Comments 62

Делаем вечную лампочку

Reading time 3 min
Views 296K
На упаковках светодиодных ламп указывают срок службы 30, 40 или 50 тысяч часов, но многие лампочки не живут и года.

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

Читать дальше →
Total votes 243: ↑238 and ↓5 +233
Comments 361

Сижу за решеткой в темнице сырой

Reading time 7 min
Views 6.5K
image

Ребят, не ждите тут каких-то выдающихся математических красот или полезных в жизни алгоритмов. Пишу просто из чистого спортивного интереса. Меня заинтересовала задачка опубликованная вот здесь, с которой американские зэки коротают свои огромные срока. Судя по комментариям к статье, она уже вызвала определённый интерес и у сообщества. Понимаю что поступаю не очень хорошо, надо было дать время народу ещё подумать самостоятельно. Однако каюсь, грешен, не могу удержаться. И выкладываю сюда своё решение. Кому интересно, добро пожаловать под кат. Если хотите ещё немного подумать самостоятельно, лучше пока не читайте.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 11

Книга «Паттерны проектирования для C# и платформы .NET Core»

Reading time 11 min
Views 16K
image Привет, Хаброжители! Паттерны проектирования — удобный прием программирования для решения рутинных задач разработки ПО. Грамотное использование паттернов позволяет добиться соответствия любым требованиям и снизить расходы. В этой книге описаны эффективные способы применения паттернов проектирования с учётом специфики языка C# и платформы .NET Core.

Кроме знакомых паттернов проектирования из книги «Банды четырех» вы изучите основы объектно-ориентированного программирования и принципов SOLID. Затем узнаете о функциональных, реактивных и конкурентных паттернах, с помощью которых будете работать с потоками и корутинами. Заключительная часть содержит паттерны для работы с микросервисными, бессерверными и облачно-ориентированными приложениями. Вы также узнаете, как сделать выбор архитектуры, например микросервисной или MVC.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Comments 5

Реализация локализации при помощи Source code generators

Reading time 4 min
Views 2.4K

Недавно я столкнулся с проблемой локализации своего приложения и задумался над её решением.

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

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 5

Blazor: Server и WebAssembly одновременно в одном приложении

Reading time 8 min
Views 17K


ASP.NET Core Blazor — это разработанная Microsoft веб-платформа, предназначенная для запуска на стороне клиента в браузере на основе WebAssembly (Blazor WebAssembly) или на стороне сервера в ASP.NET Core (Blazor Server), но две эти модели нельзя использовать одновременно. Подробнее о моделях размещения написано в документации.


В статье я расскажу о том, как


  • запустить Server и WebAssembly одновременно в одном приложении,
  • переключаться с Server на WebAssembly без перезагрузки приложения,
  • реализовать универсальный механизм аутентификации,
  • синхронизировать состояние Server и WebAssembly с помощью gRPC.

TL;DR:


Gif с демонстрацией полученного результата


Пример доступен на github.

Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 9

Стероидный велосипед: векторная алгебра, на ассемблере, в Delphi

Reading time 30 min
Views 7K

Некоторое время назад понадобилось мне в одной Delphi-шной программе много посчитать, но расчеты шли как-то подозрительно долго. Переписывать около 100 kLOC не хотелось- особенно из-за наличия большого количества форм, но предыдущий мой опыт показывал, что если код расчетов перекомпилировать в Lazarus'е (с FPC3.0.4)- то скорость счета возрастает до 2-х раз, и поэтому было очевидно, что конкретно в данном случае компилятор Embarcadero (разных версий) сильно несилен, и надо его менять. С другой стороны, IDE от Embarcadero для рисования GUI- вне конкуренции, а их компилятор на редкость быстрый (оно и понятно- быстро+плохо, или медленно+хорошо). Но ведь вкус кактуса неимоверно притягателен. Профайлинг подручными средствами (tinyprofiler) во всех случаях показывал, что основное время (90%) занимают операции векторной алгебры над большими массивами чисел, а быстрый тест производительности этих процедур показал, что на операциях с этой алгеброй общая "пропускная способность" имевшегося математического ядра составляет для операций типа умножения векторов и скалярных произведений- ~4 ГБ/с, для умножения вектора на матрицу- 1,5-2 ГБ/с, а вот для операций обращения матрицы- проседает до 360 МБ/с (на Core I5 4460 и на Xeon 2660V2, DDR3-1866). Внутре рядом с неонкой используются только 3-х и 4-х мерные вектора и матрицы. В голову пришла мысль, что 4х4 матрица- должна целиком влезать в SSE-регистры процессора и для нее SIMD- очень желательны, а в компилятор Delphi SIMD не завезли, кажется не завезут, и вообще- дальше нижней половины XMM0 не используют. В итоге нарисовалась очень простая задача- реализовать быструю векторную алгебру в минимальном объеме для 3D/4D векторов своими руками- то есть, соорудить стероидный велосипед, о котором в заголовке написано.

И вот здесь мой навык гуглинга дал сбой- мне предлагали купить проприетарные библиотеки, в которых все уже есть, или примеры векторных операций с FP32 на SSE, но нужного FP64 - нету! Под катом- как на SSE руками сделать операцию с вектором для расчетов какой-нибудь физики и вывернуть матрицу наизнанку.

Поиграемся с XMM-регистрами?...
Total votes 26: ↑25 and ↓1 +24
Comments 44

Многопоточность на низком уровне

Reading time 14 min
Views 37K

Очень часто при обсуждении многопоточности на платформе .NET говорят о таких вещах, как детали реализации механизма async/await, Task Asynchronous Pattern, deadlock, а также разбирают System.Threading. Все эти вещи можно назвать высокоуровневыми (относительно темы хабрапоста). Но что же происходит на уровне железа и ядра системы (в нашем случае — Windows Kernel)?


На конференции DotNext 2016 Moscow Гаэл Фретёр, основатель и главный инженер компании PostSharp, рассказал о том, как в .NET реализована многопоточность на уровне железа и взаимодействия с ядром операционной системы. Несмотря на то, что прошло уже пять лет, мы считаем, что никогда не поздно поделиться хардкорным докладом. Гаэл представил нам хорошую базу по работе процессора и атомнарным примитивам.



Вот репозиторий с примерами из доклада. А под катом — перевод доклада и видео. Далее повествование будет от лица спикера.

Total votes 42: ↑41 and ↓1 +40
Comments 16

Модели памяти C++ и CLR

Reading time 16 min
Views 36K

Это расшифровка-перевод доклада Саши Гольдштейна, признанного лучшим на конференции DotNext 2016 Piter. С годами этот доклад стал лишь актуальнее прежнего: появление Mac на ARM-процессорах — еще один пример, почему разработчикам сегодня нужно думать не только о x86-архитектуре.



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


То, что подходит процессорам Intel на архитектурах x86 и x86-64, может не подойти другой архитектуре. Как только вы перенесете свой код на другой процессор, например, на ARM для iPhone и Android, есть вероятность, что он перестанет работать как надо. Проблемы могут быть как очевидными (воспроизводиться с первого-второго раза), так и не очень (возникать только раз в миллион итераций). Вполне вероятно, что такие баги могут добраться до продакшна. Сегодня .NET и, конечно, C++ можно использовать не только на Windows и Intel, но и на других платформах, так что доклад будет полезен многим разработчикам.


Дисклеймер: статья предназначена для продвинутых читателей. Смотрите на свой страх и риск. За частое упоминание барьеров памяти и изменения порядка исполнения инструкций она получила возрастное ограничение 18+.
Читать дальше →
Total votes 72: ↑71 and ↓1 +70
Comments 4

Решение уравнения тетраэдра доказано спустя десятки лет после компьютерного поиска

Reading time 8 min
Views 9.3K
Как четыре математика решили вопрос о базовых геометрических фигурах, создав полный список тетраэдров с рациональными углами при помощи методов теории чисел.

Все 59 тетраэдров с рациональными двугранными углами можно рассмотреть с разных сторон по ссылке.

Тетраэдр — это простейшая трехмерная фигура с плоскими сторонами. Его основные свойства озадачивали пытливые умы еще во времена Платона и Аристотеля. А в ноябре 2020 было опубликовано окончательное доказательство, в котором достоверно идентифицированы все существующие особые тетраэдры. В этой работе математики отвечают на вопрос о древней фигуре благодаря передовым технологиям, которые дают возможность использовать новый метод поиска решений определенных уравнений.
Читать дальше →
Total votes 23: ↑18 and ↓5 +13
Comments 14

У кого трава зеленее и код лучше? Сравнение жизни программистов из Японии с их собратьями из Германии и Америки

Reading time 7 min
Views 17K
Я проработал в сфере IT около 25 лет, из которых 12 лет был в Японии, 5 лет в США и около 8 лет в Германии, где и тружусь на данный момент в качестве System Operations Engineer. Поскольку все это у меня прошло в рамках одной компании, я не могу сравнить свой опыт с работой в других корпорациях или сферах разработки, но попробую рассказать о разнице в работе в разных странах. Думаю, эта информация будет полезна для тех, кто собирается стать разработчиком либо искать работу в другой стране. Дисклеймер: вся информация строго субъективна, просьба близко к сердцу не воспринимать.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 20

Простейший голосовой помощник на Python

Reading time 4 min
Views 12K


Для создания голосового помощника не нужно обладать большими знаниями в программировании, главное понимать каким функционалом он должен владеть. Многие компании создают их на первой линии связи с клиентом для удобства, оптимизации рабочих процессов и наилучшей классификации звонков. В данной статье представлена программа, которая может стать основой для Вашего собственного чат-бота, а если точнее – голосового помощника для распознавания голоса и последующего выполнения команд. С ее помощью мы сможем понять принцип работы наиболее часто встречаемых голосовых помощников.
Читать дальше →
Total votes 22: ↑19 and ↓3 +16
Comments 9

История и анализ одной из причин кризиса современной физики

Reading time 13 min
Views 8.8K

1. Введение


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

Скажите, пожалуйста:

  1. Кризис в современной физике продолжается? Он имеет место даже сейчас или же он уже был давно и успешно преодолен, а ученые продвигаются вперед к новым знаниям?
  2. Имеет ли место сегодня «правильный» путь развития науки (без кризиса) или же современная теоретическая физика это не наука, а иллюзия по справедливому замечанию Маху (фантастика или лженаука)?
  3. Чтобы устранить кризис необходимо выполнить следующие условия:

    • Во-первых, необходимо выяснить подлинные причины, которые привели к кризису.
    • Во-вторых, нужно не только устранить причины, нужно исправить ошибки, спровоцированные кризисом.

В современных научных критических публикациях нет убедительного описания основных причин кризиса. Некоторые ученые пишут, например, об ограниченности классических теорий, поскольку они, опираясь на классические теории, не смогли дать объяснение новым экспериментальным открытиям. Высказывается мысль о слабом владении философией (теорией познания научной истины).
Читать дальше →
Total votes 44: ↑8 and ↓36 -28
Comments 59

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity