Как стать автором
Обновить
0
0
Андрей @AnarchyMob

Пользователь

Отправить сообщение

Медленная сборка кода с .NET Roslyn: как найти и устранить причину

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров3.6K

.NET разработчики знают, что такое ждать сборки кода. Работать при этом невозможно: пока не увидишь, как обновится приложение, — не перейдешь к следующему шагу. А переключиться на другую задачу за это время не успеешь. Получается, если в день переписать код 5 раз, можно потерять полчаса при сборке, а то и больше.

Теперь на примере платформы автоматизации маркетинга Mindbox. Основное программное решение — это монолит на C#: несколько миллионов строк, 50 проектов, над которыми одновременно работают десятки команд. Даже сэкономленная при сборке минута выливается в кучу продуктивных человеко-часов. Поэтому, когда речь зашла о переходе всей компании на MacBook в будущем, мы решили выяснить, как это отразится на производительности.

Читать далее
Всего голосов 36: ↑39.5 и ↓-3.5+43
Комментарии25

Пишем калькулятор на Rust с GUI

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров12K

Зачем еще один калькулятор? Да незачем, просто как тестовый проект для рассмотрения GUI-библиотеки.

Изначально я хотел попробовать такие крейты, как GPUI, Floem и Xilem, но первая, кажется, пока работает только под MacOS и Linux, вторая не позволяет установить иконку окну и кушает оперативы побольше Webview в Tauri, а до третьей я так и не добрался, узнав об Slint.

Об Slint есть всего несколько новостных постов на Хабре, поэтому, возможно, вам будет интересно посмотреть, что это такое.

Читать далее
Всего голосов 23: ↑24.5 и ↓-1.5+26
Комментарии84

Ускоряем Dictionary в C# при помощи структур и CollectionsMarshal

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров6.6K

Если вы C# разработчик, то наверняка вам знаком класс Dictionary. В качестве значений вы, скорее всего, использовали классы. Но что если я скажу, что в Dictionary можно использовать структуры? Не стоит бояться того, что структуры копируются при передаче в метод или возврате из него. Есть способ этого избежать, и это работает быстро.

Узнать как
Всего голосов 14: ↑12.5 и ↓1.5+11
Комментарии21

Вычислительные выражения: Введение в 'Bind'

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров986

Третья статья из цикла про вычислительные выражения в F#. Продолжаем разбираться с функциями-продолжениями и исследуем метод "Bind".

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

От «здравствуйте» до こんにちは: языки программирования не на английском языке

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров18K

Существует огромное количество самых разных языков программирования, их насчитывается несколько тысяч. Какие‑то — идеальны для работы, другие же созданы just for fun. К слову, есть ЯП, представленные программистами из неанглоязычных стран, в них операторы, функции и т. п. — все на родном для автора языке. Кроме того, некоторые страны стремятся развивать свои собственные IT‑индустрии, и использование местного языка в программировании может быть способом поддержать эту инициативу. Мы выбрали самые интересные на наш взгляд non‑English языки программирования.

Читать далее
Всего голосов 34: ↑37 и ↓-3+40
Комментарии34

An incursion under C#. Протаскиваем F# в Godot

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров1.4K

Godot — игровой движок, который имеет нативную поддержку dotnet. К сожалению, эта поддержка до такой степени заточена под C#, что F# она выходит боком. Почти все проблемы разрешимы, но при недостатке опыта они скатываются в большой пластилиново-волосатый валик у самого входа в подземелье, который иногда приводит к преждевременной и бессмысленной гибели. Чтобы избежать этого в данной статье я дам программу-минимум, которая позволит выжить в Godot, но не выжать из него максимум.

Это не значит, что у сочетания F# + Godot нет своих плюшек. Просто мне хотелось съесть вначале сосредоточить всех мух в одном месте, а котлетами заняться потом и в более свободной манере. Также я предполагаю, что на данную статью будут натыкаться как новички в F#, так и новички в Godot, поэтому местами я буду дублировать базовые руководства.

Читать далее
Всего голосов 9: ↑9.5 и ↓-0.5+10
Комментарии0

Arduino времен СССР

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров25K

Рано или поздно работая с электроникой, когда ты переходишь с уровня простых мигалок и программаторов для радиостанций, сначала на ардуино, потом опускаешься ниже до уровня чистого камня, ты начинаешь интересоваться смежной темой - микропроцессоры. Думаю что многим электронщикам-самодельщикам знакома такая тема, когда ты поглощаешь кучу обучающего материала в книгах, то в SO, то на ютубе, то на форумах, а потом внезапно обнаруживаешь себя смотрящего шикарный цикл видео от Бена Итера про постройку 6502 компьютера. Настоящего компьютера. И вот ты уже заглядываешь в сторону программирования под денди/nes, или, в 21м веке, хочешь купить себе спектрум, что-то на 6502 или даже чистый 8086, чтобы оказаться в еще более сильных рамках, ощутить себя именно тем программистом который выжмет все соки, считать каждый такт процессора...

Лично со мной так было. Углубляя свои познания в atmega328pb, я ушел чуток ниже и залез на территорию создания игр под денди (через 6502), территорию низкоуровневого программирования и всех сложностей связанных с этим делом. И вот я понял что я хочу купить себе в железе NES, залез на авито... потом потемнение в глазах и я прихожу в себя уже на странице поиска микроконтроллеров времен СССР. Просто праздный интерес, ничего более, ведь я никогда не был спектрумистом, да и СССР застал в коляске. И вот передо мной объявление с текстом: KPI8I6BE51 КУЛИК, компьютер, СССР. С ценой 550р. Раздумывал я не долго.

Погрузится в пучину
Всего голосов 55: ↑54 и ↓1+53
Комментарии69

Супер-эффективная архивация — сжимаем все что угодно до 32 байт

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров33K

Будем разрабатывать архиватор, который может сжимать данные любого размера и типа до 32 (38 с метаданными) байт. Рассмотрим достоинства и недостатки данного алгоритма, возможные способы улучшения его работы.

Распаковать
Всего голосов 121: ↑114 и ↓7+107
Комментарии79

[1 апреля] Масштабные изменения в C# 14.x и дальнейшие планы развития .NET

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K

Масштабные изменения в C# 14.x и дальнейшие планы развития .NET

Пока разработка .NET 9 идет полным ходом, Microsoft приоткрыла нам завесу дальнейших будущих масштабных изменений в экосистеме .NET. Компания поделилась своим видением развития новой версии платформы .NET и C# в частности, которые мы обсудим в данной статье.

Читать далее
Всего голосов 31: ↑28 и ↓3+25
Комментарии16

А в чем проблема работать с файлами?

Уровень сложностиСредний
Время на прочтение53 мин
Количество просмотров27K

Данные - это важный компонент системы. Приложение может хранить их где угодно, но в результате все сводится к файлам. Файлы - это хорошая абстракция, но она протекает: если не знать того, как работают ОС или гарантии файловой системы, то легко выстрелить себе в ногу.

Меня увлекла тема отказоустойчивости, а конкретно - отказоустойчивой работы с файлами. В этой статье я попытался соединить все полученные знания:

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее
Всего голосов 170: ↑169 и ↓1+168
Комментарии23

Как правильно замерить скорость работы кода в .NET

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

Поговорим о бенчмаркинге кода: о том, что это такое и для чего нужно. А также покажем, как на основе результатов бенчмаркинга оценить производительность кода в проекте, написанном на C#.

Читать далее
Всего голосов 16: ↑13 и ↓3+10
Комментарии2

Малоизвестные детали реализации Math.Round() в .Net

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.6K

Недавно довелось разбирать багрепорт одного клиента на нашу программу, где клиент указал на ошибку в отчете в одну копейку.Казалось бы, сложно себе представить программиста или вообще IT-шника, который не знает как работает функция округления. Тем не менее, почти двадцатилетний опыт разработки в данном случае не панацея. Разобравшись с корнями проблемы, я поискал материалы в русскоязычном и англоязычном интернете, и если на английском ещё есть тематические подборки материалов, но на русском и тем более на Хабре я этого не нашёл.Поэтому спешу поделиться с читателями Хабра собранным и систематизированным материалом.

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии8

Уходящий в историю стандарт. Запускаем базовую станцию 3G (UMTS)

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров8.6K
Приветствую всех!

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



Итак, в сегодняшней статье разберёмся с тем, как собрать и заставить работать софт для поднятия сотовой сети типа UMTS. Узнаем, как устроены и работают такие сети. Традиционно будет много интересного.
Читать дальше →
Всего голосов 62: ↑62 и ↓0+62
Комментарии46

Блеск и нищета паттерна «Спецификация» в С#. Оцениваем планы запросов

Уровень сложностиСложный
Время на прочтение20 мин
Количество просмотров11K

О паттерне «Спецификация», который позволяет улучшить структуру приложения, и, следовательно, увеличить гибкость, уменьшив при этом объем кода, а значит — сократить количество ошибок, но это не точно. Почему? - читаем ниже. 

Читать далее
Всего голосов 45: ↑44 и ↓1+43
Комментарии47

Изменение формата отображения столбца какой-либо таблицы в программе DB Browser for SQLite

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.6K

В этой статье хотелось бы рассказать, как менять формат отображения столбца какой-либо таблицы в программе DB Browser for SQLite , и расскажу, для чего я это использую.

В программе DB Browser for SQLite мне часто приходится редактировать вручную какие-то значение таблицы, но проблема в том, что некоторые поля таблицы - это ссылки на поле ID другой таблицы. В таком случае тяжело понять к чему относится редактируемое значение.

Объясню на примере.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

SwiftUI уроки (часть 4)

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

Понимание ScrollView и создание UI карусели

ссылка на 3ю часть

В этом уроке мы разберемся с таким элементом как ScrollView для создания длинных прокручивающихся полотен.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии0

История, создание и применение штриховых кодов

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров1.9K

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

Штриховой код — это графическая информация, относящаяся только к одному товару, источнику, информационному ресурсу, определённой услуге и др.

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

Штриховые коды генерируются по определённым алгоритмам, разработанным уже достаточно давно, но актуальным в наше время, ведь вектор развития штриховых кодов почти не изменялся. Но различной информации, которую можно изобразить в виде штрихового кода, стало несравнимо больше, что стало причиной возникновения особой проблемы: необходимо разработать особый вид штриховых кодов, которые будут отвечать всем современным стандартам. Так, в 2000-х годах стали разрабатывать так называемые QR-коды, тем самым, уже в то время, было положено начало почти всем штриховым кодам, что окружают нас.

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Комментарии3

Перегрузка в C++. Часть III. Перегрузка операторов new/delete

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

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов new/delete. Это третья статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь, вторая, посвященная перегрузке операторов, находится здесь. Статья завершает цикл из трех статей, посвященный перегрузке в C++.

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии14

Современные команды и фичи Git, которыми стоит пользоваться

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров28K

Мы, разработчики ПО, пользуемся git каждый день, однако большинство из нас применяет только самые основные команды, например, addcommitpush и pull, как будто на дворе по-прежнему 2005 год.

С тех пор в Git появилось множество фич, пользование которыми может сильно упросить вашу жизнь. Так давайте исследуем некоторые из недавно добавленных современных команд git, о которых вам стоит знать.

Читать далее
Всего голосов 75: ↑73 и ↓2+71
Комментарии29

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Уровень сложностиСредний
Время на прочтение45 мин
Количество просмотров136K

Поскольку блокировки интернета в РФ в последние недели и месяцы многократно активизировались, а маразм все крепчает и крепчает, стоит еще раз поднять тему обхода этих самых блокировок (и делаем ставки, через сколько дней на эту статью доброжелатели напишут донос в РКН чтобы ограничить к ней доступ на территории страны).

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Всего голосов 506: ↑498 и ↓8+490
Комментарии351
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Новомосковск, Тульская обл., Россия
Дата рождения
Зарегистрирован
Активность