Как стать автором
Обновить
0
Антон @tsundeereread⁠-⁠only

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

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

Скриптинг в C# или динамическое выполнение в runtime

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

умаю, не многие знают, что в C# есть штука на подобии eval из других языков. Благодаря Rosyln API, можно во время выполнения скомпилировать и выполнить C# код. Пример использования можете посмотреть в моей реализации REPL-а для C#.

Впервые с такой штукой, как REPL, я познакомился когда теребил питона. В мире .NET есть похожая вещь под названием C# Interactive (CSI). Довольно удобная штука, но у нее есть один большой минус — она входит в состав инструментов Visual Studio, так что без установки VS, не получится ее использовать, а чтобы запускать ее без запуска VS, вообще надо лезть в ее недра (а точнее, через консоль запустить C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat), что так себе.

Есть еще такие проекты, как dotnet-script и cs-script (они работают через Microsoft.CodeAnalysis.CSharp.Scripting), но у них есть фатальный недостаток — они написаны не мной. Вот и появилась мысль, написать свой корявый велосипед, но со своими фичами! (которые тоже коряво работают). После недолгих поисков, мой взор упал на сие чудо: Microsoft.CodeAnalysis.CSharp.Scripting. Из плюсов — удобный API, возможность выполнять код без классов и namespace-ов.

Для начала...

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

Сильные стороны функционального программирования

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

Привет! Меня зовут Катерина, и я испытываю самые тёплые чувства к функциональному программированию, использую функциональный язык на постоянной основе и даже немного преподаю.

Основной язык разработки у нас в Typeable — Haskell, и, пока все спорили о том, готов ли Haskell для продакшена, мы просто его использовали и считали конкурентным преимуществом. Нам хотелось бы поделиться своим мнением, основанным на этом опыте.
Читать дальше →
Всего голосов 26: ↑20 и ↓6+22
Комментарии62

Vue.js для начинающих, урок 11: вкладки, глобальная шина событий

Время на прочтение13 мин
Количество просмотров15K
Сегодня, в 11 уроке, который завершает этот учебный курс по основам Vue, мы поговорим о том, как организовать содержимое страницы приложения с помощью вкладок. Здесь же мы обсудим глобальную шину событий — простой механизм по передаче данных внутри приложения.

Читать дальше →
Всего голосов 17: ↑16 и ↓1+24
Комментарии2

Что лучше: подтверждение действия или возможность его отмены?

Время на прочтение6 мин
Количество просмотров19K
В ходе разработки программного обеспечения наступает момент, когда нужно проектировать механизмы выполнения потенциально опасных действий. Пара случайных кликов — и пользователь поставит себя в неловкое положение перед начальством или безвозвратно уничтожит несколько часов работы. Как проектировать программы так, чтобы защитить их пользователей от подобных происшествий?

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



Несмотря на популярность вышеописанного механизма, использование диалогового окна подтверждения действия — это, в 90% случаев, неправильно. Поговорим о том, почему это так.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+46
Комментарии72

Стоит ли идти в Data Science?

Время на прочтение6 мин
Количество просмотров28K
Совет, который я даю всегда, когда кто-то спрашивает меня, с чего начать, чтобы заняться наукой о данных. Лучше станьте инженером-программистом.



Это моё личное и ни для кого необязательное мнение. Контраргументы в комментариях приветствуются.

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

Часто получаю сообщения от выпускников ВУЗ-ов и просто людей, меняющих профессию, спрашивающих о том, как войти в науку о данных. Вместо этого я советую им просто войти в айти.

Имея опыт в обеих сферах, постараюсь убедить вас сделать правильный выбор.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+15
Комментарии19

Кривая Эббингауза: как хакнуть свою память и запоминать до 95% информации

Время на прочтение6 мин
Количество просмотров102K
Уже через час вы забудете до 60% любой полученной только что информации. А через неделю в памяти останется не более 10%. Как ни прискорбно, но это правда.

Человеческая память подчиняется определенным паттернам, которые в конце XIX века вывел ученый Эббингауз. А если знать механизмы, по которым работает память, то можно ее хакнуть и запоминать до 95% всей информации, которая проходит через вас.

Как это сделать? Рассмотрим в этой статье на примере изучения английского языка.


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

Корректный ASP.NET Core

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

Корректный ASP.NET Core


Специально для любителей книг из серии "С++ за 24 часа" решил написать статью про ASP.NET Core.


Если вы раньше не разрабатывали под .NET или под какую-то аналогичную платформу, то смысла заходить под кат для вас нет. А вот если вам интересно узнать что такое IoC, DI, DIP, Interseptors, Middleware, Filters (то есть все то, чем отличается Core от классического .NET), то вам определенно есть смысл нажать на "Читать дальше", так как заниматься разработкой без понимания всего этого явно не корректно.

Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии10

Небольшой обзор SIMD в .NET/C#

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

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

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

Проектирование типами: Как сделать некорректные состояния невыразимыми на C#

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

Как правило статьи, рассказывающие о проектировании типами, содержат примеры на функциональных языках — Haskell, F# и других. Может показаться, что эта концепция неприменима к объектно-ориентированным языкам, но это не так.


В этой статье я переведу примеры из статьи Скотта Власчина Проектирование типами: Как сделать некорректные состояния невыразимыми на идиоматический C#. Также я постараюсь показать, что этот подход применим не только в качестве эксперимента, но и в рабочем коде.

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

Запланированные новые возможности C# 8.0

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


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


Этот подход был преднамеренным, и он остается в силе.


Более серьезные изменения, которые требуют большей работы на всех этапах разработки (проектировании, внедрении и тестировании), по-прежнему будут выпускаться только с основными релизами языка. И хотя окончательная минорная версия C# 7 еще не выпущена, команда уже активно работает над следующей основной версией языка: C# 8.0.


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

Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии187

Наша книжная полка С#-программиста. А что у вас?

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

Будущие студенты Veeam Academy часто спрашивают нас о книгах, которые были бы полезны при подготовке к поступлению на наш курс по программированию на С#. Обычно мы рекомендуем несколько источников, сопровождая их своими комментариями, почему именно они будут полезны.

Однако большинство книг по программированию – это 1К+ страниц, и для их прочтения «от корки до корки» понадобится не один месяц и, возможно, даже не один год! Поэтому все наши рекомендации для абитуриентов Академии Veeam служат лишь ориентиром, а не обязательным требованием.

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

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

Валидация электронных подписей на C# с использованием КРИПТО ПРО

Время на прочтение5 мин
Количество просмотров19K
Продолжая разговор на тему электронных подписей (далее ЭП), надо сказать о проверке. В предыдущей стать я разбирал более сложную часть задачи — создание подписи. В этой статье всё несколько проще. Большая часть кода это адаптация примеров из КРИПТО ПРО .NET SDK. Проверять будем в первую очередь подписи по ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012, для этого нам и нужен КРИПТО ПРО.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии15

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

Время на прочтение4 мин
Количество просмотров13K
Всем привет. Хотелось бы поделиться примером использования StructLayout для чего-то более интересного, чем примеры с байтами, интами и прочими цифрами, в которых все происходит чуть более, чем ожидаемо.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии15

От var b до собеседования

Время на прочтение4 мин
Количество просмотров12K
Вы почти закончили универ или колледж? Вас пригласили на собеседования, но вы идете туда без подготовки? У вас нет образования (высшего), но хотите работать программистом или в сфере IT? Речь пойдёт по большей степени о поиске работы, я буду говорить лишь за свой город (Челябинск) т.к. искал работу именно здесь.


Читать дальше →
Всего голосов 28: ↑18 и ↓10+8
Комментарии18

Один Вк бот, один С# и апельсин

Время на прочтение3 мин
Количество просмотров12K
Продолжая свои эксперименты с “умным” домом, ради забавы я решил добавить группу в Вк для управления некоторыми его характеристиками. Для данной статьи конкретизируем задачу: попробуем написать на языке с# простого бота, который будет отвечать от имени сообщества в вк, и рассмотрим, как быстро его запустить на arm32 (в моем случае на orange pi zero).


Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии9

Тетрис на C# в 100 строк

Время на прочтение5 мин
Количество просмотров90K
UPD. Ссылка на github.
Недавно мне в голову пришла идея — написать простенькую игру в минимальное количество строк. Мой выбор пал на тетрис. В этой статье я опишу свой код.

Для начала стоит отметить, что в свою реализацию я включил только базовые возможности:

  • движение фигурок влево/вправо;
  • падение фигурок;
  • поворот фигурок;
  • удаление заполненных фигурок;
  • окончание игры.

Итак, сперва добавим на форму PictureBox и создадим таймер.
Читать дальше →
Всего голосов 37: ↑31 и ↓6+25
Комментарии36

Стоит ли сохранять длину массива в локальную переменную в C#

Время на прочтение6 мин
Количество просмотров45K
Очень часто замечаю, что люди пишут вот так:

var length = array.Length;
for (int i = 0; i < length; i++) {
    //do smth
}

Пишут они это в надежде ускорить цикл, думая что создавая локальную переменную избавляют CLR от необходимости вызывать каждый раз геттер для Array.Length. Я решил раз и навсегда для себя понять стоит так делать или можно сэкономить своё время и написать без временной переменной.
Читать дальше →
Всего голосов 84: ↑83 и ↓1+82
Комментарии163

Чат-бот обретает слух, или страдания дилетанта

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


Не так давно я презентовал синтаксического чат-бота по имени Ваня Разумный («Создание ИИ методом «глокой куздры». Интеллектуальная одиссея»). Последующий очевидный этап, который, подобно другим создателям искусственного разума, захотелось пройти – даровать детищу голос. Казалось бы, чего проще?

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

Но обо всем по порядку.

(Пишу в надежде, что мои страдания на ниве озвучки помогут кому-нибудь из подобных мне любителей. Айтишным зубрам данный пост ни к чему).
Всего голосов 11: ↑10 и ↓1+9
Комментарии5

Быстрый старт с WPF. Часть 1. Привязка, INotifyPropertyChanged и MVVM

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

Всем привет!


По разным причинам большинство из нас использует десктопные приложения, как минимум, браузер :) А у некоторых из нас возникает необходимость в написании своих. В этой статье я хочу пробежаться по процессу разработки несложного десктопного приложения с использованием технологии Windows Presentation Foundation (WPF) и применением паттерна MVVM. Желающих продолжить чтение прошу под кат.

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии45

Ключевое слово this в JavaScript для начинающих

Время на прочтение7 мин
Количество просмотров153K
Автор материала, перевод которого мы сегодня публикуем, говорит, что когда она работала в сфере бухучёта, там применялись понятные термины, значения которых легко найти в словаре. А вот занявшись программированием, и, в частности, JavaScript, она начала сталкиваться с такими понятиями, определения которых в словарях уже не найти. Например, это касается ключевого слова this. Она вспоминает то время, когда познакомилась с JS-объектами и функциями-конструкторами, в которых использовалось это ключевое слово, но добраться до его точного смысла оказалось не так уж и просто. Она полагает, что подобные проблемы встают и перед другими новичками, особенно перед теми, кто раньше программированием не занимался. Тем, кто хочет изучить JavaScript, в любом случае придётся разобраться с this. Этот материал направлен на то, чтобы всем желающим в этом помочь.


Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии5

Информация

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