Pull to refresh
10
0
Михаил Королёв @RoboNET

C# developer

Send message

Букварь по F# для любопытствующих C#-разработчиков

Reading time 13 min
Views 9.7K

Предисловие


Мой переход на F# в качестве излюбленного языка был слегка усеян препятствиями. Примерно через десять лет почти постоянного использования C# у меня пробудилось любопытство, когда я услышал об этом другом #-языке. Моя первая реакция была той, которую с тех пор видел у других C#-разработчиков — отрицание, — C# является хорошим языком, и мне с ним комфортно, так зачем тратить силы на изучение другого? Но любопытство осталось — и, по крайней мере, несколько раз выделил вечер, чтобы прочитать базовый вводный пост и попытаться написать каких-нибудь ката на F#. Это не прижилось, потому что я просто чувствовал себя потерянным и не мог воплотить свой опыт использования C# в ощущение даже отдаленного комфорта с F#. Достаточно легко опустить фигурные скобки, немного замяться, чтобы не забыть let вместо var — но как сделать то, что я хотел?


Тогда я этого не осознавал, но, на мой взгляд, наблюдал потенциальный недостаток в том, как F#-разработчики говорят, описывают и представляют свой язык внешнему миру. Существует обширная база материалов обо всех возможностях и функциональности F#: Algebraic Data Types, Exhaustive Matching, Type Inference и т.д. Есть много статей, посвященных тому, как решать широкий спектр задач с помощью F#. Но, как мне кажется, не хватает чего-то вроде следующего: некоторых указаний о том, как взять то, что вам уже удобно в C#, и перевести их на F#. Так что мне интересно, можем ли мы как-то закрыть этот недостаток.

Читать дальше →
Total votes 33: ↑32 and ↓1 +31
Comments 13

Имплементация OpenId Connect в ASP.NET Core при помощи IdentityServer4 и oidc-client

Reading time 21 min
Views 59K


Недавно мне потребовалось разобраться, как делается аутентификация на OpenId Connect на ASP.NET Core. Начал с примеров, быстро стало понятно, что чтения спецификации не избежать, затем пришлось уже перейти к чтению исходников и статей разработчиков. В результате возникло желание собрать в одном месте всё, что необходимо для того, чтобы понять, как сделать рабочую реализацию OpenId Connect Implicit Flow на платформе ASP.NET Core, при этом понимая, что Вы делаете.

Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 39

Особенности разработки под Xamarin.Forms

Reading time 9 min
Views 24K
Около года назад появился кросс-платформенный фреймворк под названием Xamarin.Forms. Он позволяет создавать мобильные приложения под разные платформы, используя C# и .NET. По сути он является надстройкой над уже существовавшими до него Xamarin.iOS, Xamarin.Android и Xamarin.WinPhone. И, в отличие от них, он позволяет создавать лишь один проект, в котором можно описать всю логику работы приложения и его UI. А затем просто компилить его под разные платформы. В итоге, все это сильно экономит время.

Мы считаем, что эта платформа имеет свои перспективы и, потому не смогли пройти мимо нее. По традиции, мы начали с разработки Data Grid контрола. За время работы над ним у нас накопился интересный опыт разработки под Xamarin.Forms, и мы хотим с вами им поделиться.
Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Comments 6

Создание The Blacksmith: концепт и художественное оформление

Reading time 5 min
Views 25K
В рамках официального сотрудничества с компанией Unity мы будем публиковать переводы статей о создании проектов на Unity 5.
В этот раз речь пойдет об источниках вдохновения для создания ролика The Blacksmith (Кузнец), мы покажем примеры концепт-арта и поделимся интересными наблюдениями и советами.



Подробнее
Total votes 22: ↑21 and ↓1 +20
Comments 4

Начало работы с ASP.NET Identity

Reading time 4 min
Views 97K
Многие из вас должны знать, что выход ASP.NET MVC 5 ознаменовался переходом на новую систему авторизации под названием ASP.NET Identity. Разработчики фреймворка настоятельно рекомендуют переходить на новую систему, называя основными ее преимуществами возможность внедрения в абсолютно любой проект (ASP.NET MVC, Web Forms, Web Pages, Web API и SignalR), простую социальную интеграцию, работу на OWIN, установку и обновление посредством NuGet и другие. Присмотревшись внимательнее к ASP.NET Identity, можно без зазрения совести сказать, что это — следующий этап в развитии веб-программирования на ASP.NET. В данном посте я размещу простой туториал для начала работы с ASP.NET Identity.
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Comments 18

7 правил создания красивых интерфейсов

Reading time 8 min
Views 180K


Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Именно поэтому мы решили её перевести. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

Вступление


Сначала о главном. Это руководство не для всех. Это руководство прежде всего для:
  • разработчиков, которые хотят уметь делать хорошие интерфейсы для себя, если вдруг прижмёт;
  • UX-дизайнеров, которые знают, что хороший UX-дизайн продаётся лучше в красивой UI-упаковке.

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

А пока давайте я расскажу, что вы найдёте в этой статье.

Читать дальше →
Total votes 86: ↑81 and ↓5 +76
Comments 34

(Перевод) Введение в разработку C++ в UE4 Часть 2

Reading time 10 min
Views 72K
Часть 1. Введение. Создание класса и добавление свойств. Расширение класса С++ с помощью Blueprint.
Часть 2. Классы геймплея. Структуры. Отражение (reflection) в Unreal. Object/Actor итераторы. Менеджер памяти и сборщик мусора.
Часть 3. Префиксы в именах классов. Целочисленные типы. Типы контейнеров. Итераторы контейнеров. Цикл For-each, хеш-функции.
Часть 4. Unreal Engine 4 для Unity разработчиков.
Часть 5.…

image

От Автора: Начало лето выдалось жарким на проекты, поэтому оформление перевода долго откладывал, дальше будет быстрее.

Эта статья является продолжением перевода части документации по UE4. Оригинальную статью вы можете найти пройдя по это ссылке.
Далее
Total votes 32: ↑30 and ↓2 +28
Comments 1

Детектор блокировок UI в WPF c нотификацией

Reading time 3 min
Views 14K


Приветствую!

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

Подробности под катом.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 29

Нативная реализация OmniDirectional теней в DirectX11

Reading time 13 min
Views 24K
image

Привет. Продолжая рассказывать про различные технологии из графического геймдева — хотел бы рассказать о том, как в DirectX 11 удобно работать с тенями. Расскажу о создании Point-источника света с полным использованием инструментов GAPI DirectX11, затрону такие понятия, как: Hardware Depth Bias, GS Cubemap Render, Native Shadow Map Depth, Hardware PCF.
Исходя из легкого серфинга по интернету – я пришел к выводу, что большинство статей о тенях в DX11 неверны, реализованы не совсем красиво или с использованием устаревших подходов. В статье постараюсь сравнить реализацию теней в DirectX 9 и DirectX 11. Все ниже описанное так же справедливо и для OpenGL.

Читать дальше →
Total votes 51: ↑49 and ↓2 +47
Comments 3

Way of Tanks. Путь от идеи к игре

Reading time 9 min
Views 39K


Я всегда затрудняюсь ответить на вопрос: откуда берутся идеи для игр? Но в этот раз, я более-менее точно могу сказать, что эта идея родилась у меня когда я увидел баннер «World of Tanks» на каком-то из сайтов. Знаете, бывают такие баннеры, которые привлекают внимание пользователя микро-играми, прежде чем перенаправить его на сайт рекламодателя? Так вот, на этом баннере был танк, который по клику мог проезжать то или иное расстояние, зачем-то пробивая при этом кирпичные стены. Вот именно с этого момента я стал размышлять, по дороге на работу, о раннере с танковой тематикой. Тут же родилась и отсылка к нашумевшему хиту от Wargaming в названии. Она показалась мне забавной, учитывая, что суть моей игры — это движение по некой дороге, пути, с целью пройти максимальное расстояние. Под хабракатом вас ждет рассказ об игре, разработке, технические детали и все-все-все, что должно быть в классической «gamedev story».
Читать дальше →
Total votes 62: ↑55 and ↓7 +48
Comments 43

Моделирование методом молекулярной динамики в пакете Gromacs

Reading time 14 min
Views 28K
Иногда хочется занять свой ноутбук чем-нибудь полезным, да и так чтобы с работой помогало. Несколько лет назад, в университете сталкивался бегло с моделирование методом молекулярной динамики в gromacs, это хоть и не совсем то, но уже можно было притянуть за уши к моей работе. Русскоязычной информации по запуску моделирования в gromacs удалось найти крайне мало, примерно столько же и в глобальном масштабе, все в основном обсуждают уж очень глубокие/тонкие моменты. В итоге решил разобраться в нем, а заодно и написать краткое руководство, по использованию gromacs.

Преследуемая цель статьи — популяризировать Gromacs в широких кругах. Цели сделать полный охват метода и возможностей пакета нету, потому это будет краткий экскурс плохая методичка, с установками и запуском.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 33

Blowfish на страже ivi

Reading time 15 min
Views 13K
Между разработчиками и продуктовиками нередко возникают противоречия. Первые ближе к железу и отвечают за него, вторые — за пользовательский интерфейс. Backend-разработчикам не хочется лишний раз грузить систему, хранить заведомо ложные непроверенные данные, тратить процессорное время и дисковое пространство. В их мировоззрении априори все запросы, все пользователи это злоумышленники, которые только и хотят, что забить всю память и вывести систему из строя. Если не ради вандализма, то ради конкурентов похожих сервисов.


Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Comments 11

Skyforge: технологии рендеринга

Reading time 16 min
Views 103K


Всем привет! Меня зовут Сергей Макеев, и я технический директор в проекте Skyforge в команде Allods Team, игровой студии Mail.Ru Group. Мне хотелось бы рассказать про технологии рендеринга, которые мы используем для создания графики в Skyforge. Расскажу немного о задачах, которые стояли перед нами при разработке Skyforge с точки зрения программиста. У нас свой собственный движок. Разрабатывать свою технологию дорого и сложно, но дело в том, что на момент запуска игры (три года назад) не было технологии, которая могла бы удовлетворить всем нашим запросам. И нам пришлось самим создать движок с нуля.
Читать дальше →
Total votes 139: ↑132 and ↓7 +125
Comments 51

Как я покупал 3D-принтер

Reading time 16 min
Views 873K

Данный пост является своеобразным предостережением тем, кто задумал купить 3D-принтер. Этот, казалось бы, простой процесс для цивилизованных стран, может вдребезги разлететься о суровые Российские реалии. Я, сам того не ожидая, сумел пройтись по всем возможным граблям, и на собственной шкуре убедился, как же в действительности обстоят дела по «ту сторону экрана». Итак, приглашаю Вас поучиться на чужих ошибках.
Читать дальше →
Total votes 350: ↑342 and ↓8 +334
Comments 487

Как сохранить и как задействовать деньги?

Reading time 9 min
Views 43K
Рано или поздно к каждому из нас приходит понимание необходимости в денежном «буфере» про запас. На чёрный день, так сказать. Кто-то может насобирать скромную сумму, ежемесячно откладывая по чуть-чуть с зарплаты, кому-то достался приличный «буфер» от дядюшки… Как бы то ни было, встаёт вопрос хранения имеющихся средств, а ещё лучше — их задействования! Совсем не хочется, чтобы имеющиеся деньги просто таяли вместе с инфляцией.
Не так давно я проводил опрос, с надеждой открыть что-то новое для себя и с целью узнать где хранят деньги уважаемые хабражители, пускают ли их «в дело». И, из результатов опроса и комментариев к нему, понял, что мне есть что рассказать по этому поводу.
Под катом небольшой обзор самых популярных инструментов для самых начинающих от инвестора-любителя :) Я вкратце расскажу о банковских вкладах, индексируемых депозитах, ПИФах, ПАММ и ТМА-счетах.
Вопросы мотивации на накопление средств и вопросы выбора валюты в данном посте не рассматриваются.
Читать дальше →
Total votes 66: ↑57 and ↓9 +48
Comments 79

Используем Google Voice Search в своем приложении .NET

Reading time 3 min
Views 130K


Функция распознавания речи с некоторого времени доступна в браузере Google Chrome. Посмотреть как это выглядит можно, например, здесь.

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

Как это часто бывает, все уже сделано за нас в этой статье. Все оказывается очень просто, необходимо сделать POST запрос на адрес www.google.com/speech-api/v1/recognize со звуковыми данными в формате FLAC или Speex. Реализуем демонстрацию распознавания WAVE-файлов с помощью C#.

Читать далее
Total votes 80: ↑72 and ↓8 +64
Comments 25

Сетевые игры — «Ты помнишь, как всё начиналось?...»

Reading time 8 min
Views 10K
image
Под катом — перевод первой части статьи What every programmer needs to know about game networking, об истории становления и принципах устройства мультиплеерных сетевых игр. Автор Glenn Fiedler.
Читать дальше →
Total votes 121: ↑119 and ↓2 +117
Comments 57

Исследуем Google Reader API

Reading time 6 min
Views 2.2K
Возникла необходимость сделать интерфейс к гуглоридеру, отличный от стандартного. Использование стандартного ajax reader api не удовлетворило из-за коммерческих ограничений. API, описанное во множестве импортных блогов отказывалось нормально работать, поэтому на вооружение было взято расширение firebug всеми любимого браузера. В результате получилась небольшая подборка полезных для работы с ридером URLов, которыми хочу поделиться с общественностью.

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

Для реализации взаимодействия клиентского ajax-интерфейса с google.com/reader/ будем использовать посредника на php+curl.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Comments 10

Добавляем собственные команды в контекстное меню Проводника

Reading time 5 min
Views 189K
Однажды я уже рассказывал на Хабре, как можно добавить собственную команду в контекстное меню браузера Internet Explorer (Удобное дополнение к IE при написании обзоров / Internet Explorer / Хабрахабр). Сейчас я расскажу, как добавить свою команду в контекстное меню Проводника. Поехали.

Читать дальше →
Total votes 71: ↑53 and ↓18 +35
Comments 43

Улучшаем производительность: boxing в .NET, которого можно избежать

Reading time 5 min
Views 24K
Мы в своем проекте занимаемся разработкой сервера на C#. Этот сервер должен выдерживать очень высокие нагрузки, по этой причине мы стараемся написать код как можно оптимальней. C# редко ассоциируют с высокой производительностью, но если с умом подходить к разработке, то можно достичь очень даже неплохого уровня.

Одним из недешевых процессов с точки зрения производительности является boxing и unboxing. Напоминалку о том, что это такое, можно найти тут. Недавно я решил посмотреть весь IL код наших проектов и поискать инструкции box и unbox. Нашлось достаточно много участков, boxing'а в которых можно избежать легким движением руки. Все случаи, приводящие к ненужному boxing'у, очевидны, и допускаются по невнимательности в моменты концентрации на функциональности, а не на оптимизации. Я решил выписать наиболее часто встречающиеся случаи, чтобы не забывать о них, а затем автоматизировать их исправление. В данной статье и перечислены эти случаи.
Читать дальше →
Total votes 39: ↑37 and ↓2 +35
Comments 35

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity