Pull to refresh
0
0
Андрей @AnarchyMob

User

Send message

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

Level of difficultyHard
Reading time12 min
Views2.6K

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

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

Читать далее
Total votes 31: ↑34 and ↓-3+37
Comments23

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

Level of difficultyEasy
Reading time18 min
Views11K

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

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

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

Читать далее
Total votes 23: ↑24.5 and ↓-1.5+26
Comments82

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

Level of difficultyEasy
Reading time5 min
Views6.2K

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

Узнать как
Total votes 14: ↑12.5 and ↓1.5+11
Comments21

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

Level of difficultyHard
Reading time6 min
Views879

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

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

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

Level of difficultyEasy
Reading time6 min
Views18K

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

Читать далее
Total votes 32: ↑33 and ↓-1+34
Comments34

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

Level of difficultyEasy
Reading time18 min
Views1.3K

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

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

Читать далее
Total votes 9: ↑9.5 and ↓-0.5+10
Comments0

Arduino времен СССР

Level of difficultyEasy
Reading time5 min
Views25K

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

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

Погрузится в пучину
Total votes 55: ↑54 and ↓1+53
Comments69

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

Level of difficultyMedium
Reading time4 min
Views32K

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

Распаковать
Total votes 120: ↑113 and ↓7+106
Comments78

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

Level of difficultyEasy
Reading time3 min
Views12K

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

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

Читать далее
Total votes 31: ↑28 and ↓3+25
Comments16

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

Level of difficultyMedium
Reading time53 min
Views26K

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

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

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

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

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

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

Читать далее
Total votes 170: ↑169 and ↓1+168
Comments23

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

Reading time5 min
Views5.8K

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

Читать далее
Total votes 15: ↑12 and ↓3+9
Comments2

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

Level of difficultyMedium
Reading time5 min
Views1.6K

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

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments8

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

Level of difficultyHard
Reading time11 min
Views8.4K
Приветствую всех!

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



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

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

Level of difficultyHard
Reading time20 min
Views11K

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

Читать далее
Total votes 45: ↑44 and ↓1+43
Comments47

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

Level of difficultyEasy
Reading time2 min
Views1.6K

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

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

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments0

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

Level of difficultyEasy
Reading time14 min
Views1.9K

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

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

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

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

Читать далее
Total votes 7: ↑5 and ↓2+3
Comments3

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

Reading time11 min
Views22K

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

Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments14

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

Level of difficultyEasy
Reading time5 min
Views28K

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

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

Читать далее
Total votes 75: ↑73 and ↓2+71
Comments29

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

Level of difficultyMedium
Reading time45 min
Views134K

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

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

Читать далее
Total votes 506: ↑498 and ↓8+490
Comments351
1
23 ...

Information

Rating
Does not participate
Location
Новомосковск, Тульская обл., Россия
Date of birth
Registered
Activity