Pull to refresh
-4
0
Амангелди Аннаклычев @Amangeldi

.NET разработчик

Send message

Мой велосипед Entity FrameWork, Auto Migration, With Save Data

Reading time3 min
Views3.4K
Люблю я велосипеды.

В процессе написания ПО с использование EF, часто меняется структура, что создает проблемы. До версии 4.3 — пересоздание БД с потерей данных и необходимостью наполнения тестовыми.
С версии 4.3. появилась Миграция.
Читать дальше →
Total votes 14: ↑10 and ↓4+6
Comments87

10 удивительно зрелищных простейших клеточных автоматов

Level of difficultyEasy
Reading time5 min
Views30K

Самое простое представление двумерного клеточного автомата основано на двух характеристиках: клетки имеют всего 2 состояния; правила изменения состояния зависят только от количества живых соседей из окрестности Мура первого порядка (8 окружающих).

Такая категория КА называется «Life-like», по названию самого известного автомата с такими характеристиками – «Conway's Game of Life». Игра «Жизнь» Конвея работает на правиле B3/S23, т.е. для рождения клетки требуется ровно 3 живых соседа, для выживания – 2 или 3. Во всех других случаях клетка умирает (или же остаётся пустой).

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

Сегодня взглянем на самых интересных представителей.

👾
Total votes 158: ↑158 and ↓0+158
Comments24

20 часов оптимизаций, вживую

Reading time6 min
Views10K

Всем привет.

Я пишу код, временами мне это нравится, а иногда даже получается. Пока по миру не шарахнул карантин я временами выступал на каком-нибудь офлайновом мероприятии, меня слушали, а мне это нравилось. Но вот уже два года как планета погрузилась в карантинный строй; я привык думать, что мои коллеги не люди, а кружочки вписанные в прямоугольник в окне одной из коммерческих звонилок. 

А славы и света софитов хочется-то! 

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

И я попробовал.

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

Под катом немного об идеях с которыми я делал видео и немного текста про каждую из тем.

Читать далее
Total votes 17: ↑16 and ↓1+15
Comments8

Как научиться работать в Blazor, делая что-то полезное. Часть II

Reading time7 min
Views6.1K


Как я сказал в первой части этой статьи, мы решили написать систему, которая преобразует команды для отправки многочисленных инструкций на различные IoT реле на Blazor. Где по-быстрому, практически на коленке собрали отличную систему работы с этими реле. Всё было просто замечательно и быстро! Но не всё было так просто, как обещали.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments3

Blazor WebAssembly: соединительные линии в SVG

Reading time4 min
Views3.9K

Demo | GitHub

В статье описан способ реализации соединительных линий между SVG объектами. Соединительные линии автоматически перестраиваются при изменении положения объектов. Попутно рассмотрен метод OnParametersSet.

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

Разбираемся с middleware в ASP.NET Core

Reading time6 min
Views66K

Этой статья раскрывает концепции Middleware в ASP.NET Core. К концу этой статьи вы получите четкое представление о следующих моментах:

- Что такое Middleware?

- Почему порядок расположения Middleware имеет значение?

- Методы Run, Use и Map.

- Как создать собственное Middleware?

- Как реализовать просмотр каталогов с помощью Middleware?

Приступить к прочтению!
Total votes 9: ↑8 and ↓1+7
Comments6

Попытки сделать изучение алгоритмов поиска пути проще

Reading time8 min
Views24K
Алгоритмы поиска пути — неотъемлемая часть разработки игр. А также различных систем навигации, ориентации и много чего ещё. Но мы сосредоточимся на именно игровой индустрии и алгоритмах, которые в ней применяются.

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

image
Читать дальше →
Total votes 46: ↑42 and ↓4+38
Comments18

Ищем простые числа до триллиона за тридцать минут

Reading time21 min
Views22K
image

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

Сегодня я хотел бы поделиться с вами различными вариантами реализации поиска простых чисел на языке C#, начиная с классических алгоритмов — решета Эратосфена, Сундарама и Аткина, и кончая различными оптимизациями (сегментация, факторизация). Особый упор я делал на простоту: самый быстрый из алгоритмов, который мне удалось получить, содержит 120 строк кода и ищет простые числа до триллиона меньше, чем за 30 минут, а до миллиарда — меньше, чем за секунду (это далеко от производительности лучших из существующих библиотек по поиску простых чисел, но эти библиотеки обычно содержат свыше 4000 строк кода).
В заключение мы применим самую быструю реализацию для поиска максимального расстояния между двумя соседними простыми числами до триллиона. Прежде чем заходить под кат, я предлагаю вам попытаться угадать ответ. Для сравнения, для простых чисел до 100 максимальное растояние равно 8 (между соседними простыми числами 89 и 97), а до тысячи — 20 (между 887 и 907).

Весь исходный код можно найти на гитхабе.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments14

OpenID Connect 1.0 На Пальцах

Reading time7 min
Views67K

У OpenID Connect есть спецификация, есть туториалы, статьи на хабре и не на хабре. Довольно бессмысленно лепить очередную пошаговую инструкцию, ведущую от глубокого недоумения к работающей сквозной авторизации и аутентификации. Задача текста ниже иная, описать лежащие в основе спецификаций идеи (их больше одной).


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


Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments13

ConfigureAwait: часто задаваемые вопросы

Reading time20 min
Views131K
Привет, Хабр! Представляю вашему вниманию перевод статьи «ConfigureAwait FAQ» автора Стивен Тауб.

image

Async/await добавили в .NET более семи лет назад. Это решение оказало существенное влияние не только на экосистему .NET — оно также находит отражение во многих других языках и фреймворках. На данный момент реализовано множество усовершенствований в .NET с точки зрения дополнительных языковых конструкций, использующих асинхронность, реализованы API-интерфейсы с поддержкой асинхронности, произошли фундаментальные улучшения в инфраструктуре, благодаря которым async/await работает как часы (в особенности, улучшены возможности производительности и диагностики в .NET Core).

ConfigureAwait — один из аспектов async/await, который продолжает вызывать вопросы. Надеюсь, у меня получится ответить на многие из них. Я постараюсь сделать эту статью читаемой от начала до конца, и вместе с тем выполнить ее в стиле ответов на часто задаваемые вопросы (FAQ), чтобы на нее можно было ссылаться в последующем.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments18

Как нас начали гнобить конкуренты с более слабым набором фич

Reading time11 min
Views12K
image

Нет, занимаясь разработкой CRM, я, конечно, подозревал, что важны не только фичи, но и то как мы всё это продаём. Но совершенной неожиданностью оказалось то, что всем тем, кто обращался к нам, конкурент рассылает листок со сравнением, где поливает нас грязью. Листок сделан замечательно: там есть три легко проверяемых утверждения и много с трудом проверяемых. То есть если вы не залезете «под капот» ПО, то всё это легко может показаться правдой.

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

«Количество действующих клиентов — это показатель доверия». Да, это показатель доверия, но только не в конкурентной среде ПО. Условно, наш основной конкурент относится ко второму поколению медицинских CRM, мы к третьему. На рынок они вышли в 2017 году с большими инвестициями и переманили часть клиентов Инфодента (аж 2000 года рождения), разных версий 1С и Dental4Windows. Кто помнит, это было время очень агрессивных холодных звонков. Как это ни странно, три перечисленные платформы первого поколения вместе имеют клиентов в шесть раз больше, чем доля нашего конкурента. Соответственно, наш конкурент имеет на текущий момент (с учётом, что мы полгода как начали продавать) тоже примерно на столько же больше нас. Но довод звучит логично. Так что если вы в него верите — видимо, надо срочно делать даунгрейд до софта нулевых.

Следующей нашей ошибкой был перфекционизм. Надо было входить на рынок с сырым продуктом и доделывать его, а мы вышли со стабильным релизом.
Читать дальше →
Total votes 40: ↑26 and ↓14+12
Comments18

Творческое использование методов расширения в C#

Reading time5 min
Views13K
Привет, Хабр!

Продолжая исследование темы C#, мы перевели для вас следующую небольшую статью, касающуюся оригинального использования extension methods. Рекомендуем обратить особое внимание на последний раздел, касающийся интерфейсов, а также на профиль автора.


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

Удалёнка за доллары: а меня возьмут?

Reading time6 min
Views68K

Удалёнка за доллары: а меня возьмут?


Удалёнка в хорошей зарубежной компании — крутая штука. Сидя даже где-то далеко в провинции, можно зарабатывать большие деньги: от $3,000 в месяц на средненькой позиции в неизвестной компании до $186,000 в год на позиции senior programmer в Basecamp.


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


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


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

Читать дальше →
Total votes 52: ↑46 and ↓6+40
Comments80

Магические сигнатуры методов в C#

Reading time9 min
Views30K

Представляю вашему вниманию перевод статьи The Magical Methods in C# автора CEZARY PIĄTEK.


Есть определенный набор сигнатур методов в C#, имеющих поддержку на уровне языка. Методы с такими сигнатурами позволяют использовать специальный синтаксис со всеми его преимуществами. Например, с их помощью можно упростить наш код или создать DSL для того, чтобы выразить решение проблемы более красивым образом. Я встречаюсь с такими методами повсеместно, так что я решил написать пост и обобщить все мои находки по этой теме, а именно:


  • Синтаксис инициализации коллекций
  • Синтаксис инициализации словарей
  • Деконструкторы
  • Пользовательские awaitable типы
  • Паттерн query expression
Читать дальше →
Total votes 82: ↑81 and ↓1+80
Comments70

A* pathfinding на C#: двоичные кучи и борьба с аллокациями

Reading time20 min
Views15K
Сегодня мы разбираем один из популярнейших алгоритмов поиска пути. Работать будем с двумерным массивом целочисленных координат.

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

Я был изумлен, когда поверхностный поиск не выдал мне ни одной качественной реализации алгоритма A* на C# без использования сторонних библиотек (это не значит, что их нет). А значит самое время размять пальцы!

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

Приступим!
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments15

Почему стоит нанимать джуниоров

Reading time10 min
Views42K
image

Когда я начинал как разработчик на Rails, я постоянно ковырялся с фреймворками все свое свободное время, которого, однако, у меня было достаточно. Я не был женат, работал в Coles и подрабатывал на фрилансе, выполняя заказы на PHP и Rails.

Как-то я услышал о проводимом в городе Аделаида Ruby Meetup. Сразу после работы я рванул на поезд и отправился на это мероприятие. Когда я туда попал, несколько человек спросили меня, чем я занимаюсь. Я рассказал о работе в Coles, о PHP и Rails, на что мне ответили «ты не должен больше работать в Coles» и трое из них протянули мне свои визитные карточки, сказав, чтобы я подал им резюме. Я отправил заявку в Sealink и меня взяли.

В Sealink я попал в подмастерья команды Rails-разработчиков, которые имели кучу терпения для того, чтобы мириться с моими 19-летними выходками. Я очень благодарен им за то время, что они потратили на мое обучение и, как я считаю, именно их наставничество заложило основу моей карьеры и всего того, что я делал следующие десять лет.

В Мельбурне есть много джуниоров, посещающих Ruby Meetup'ы. Я знаю это наверняка, так как помогал организовывать ночные хакатоны, на которые они тоже ходят. И вот представьте, если бы какой-нибудь новичок на митапе сказал бы вам, что он активно ищет работу, вы бы его наняли? Возможно, нет. Создается впечатление, что на таких мероприятиях царит атмосфера отвращения к найму джуниоров, ведь потому, что они, джуниоры, отнимают столь драгоценное время команды, которое могло быть потрачено на разработку, на их обучение.
Читать дальше →
Total votes 48: ↑41 and ↓7+34
Comments64

Xamarin.Forms. Личный опыт использования

Reading time10 min
Views18K
В статье речь пойдет о Xamarin.Forms на примере живого проекта. Кратко поговорим о том, что такое Xamarin.Forms, сравним с похожей технологией WPF, увидим, как достигается кроссплатформенность. Также разберём узкие места, с которыми мы столкнулись в процессе разработки, и добавим немного реактивного программирования с ReactiveUI.

image
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments9

Построение цифровой модели удачной стратегии торговли ценными бумагами. Описание. Доказательство

Reading time5 min
Views4.9K
Как вы догадались по заголовку, мое хобби — алготрейдинг. Решил поделится результатами, чтобы продемонстрировать Вам как многокритериальный анализ и подбор коэффициентов (продажи, покупки) индивидуально для каждого инструмента (акции) может отражаться на результате. Для того, чтобы поразить Ваше воображение, продемонстрирую пример с 500% годовых (на самом деле нет). Анализ на исторических данных я буду проводить с помощью торгового терминала «Альфа-директ», но представленный здесь опыт особо не ограничивает Вас в выборе инструмента.


Читать дальше →
Total votes 9: ↑5 and ↓4+1
Comments21

Information

Rating
Does not participate
Location
Ашхабад, Ашхабадская обл., Туркменистан
Date of birth
Registered
Activity