Search
Write a publication
Pull to refresh
2
0
Send message

Новые возможности интерфейсов в C# 8

Reading time3 min
Views15K


Для начала посмотрим на определение интерфейса у Эндрю Троелсена и Филиппа Джепикса: «Интерфейс представляет собой всего лишь именованный набор абстрактных членов. Абстрактные методы являются чистым протоколом, поскольку они не предоставляют свои стандартные реализации. Специфичные члены, определяемые интерфейсом, зависят от того, какое точно поведение он моделирует. Другими словами, интерфейс выражает поведение, которое заданный класс или структура может избрать для поддержки». И дальше по тексту: «Запомните, что при определении членов интерфейса область реализации для них не определяется. Интерфейсы — это чистый протокол и потому реализация для них никогда не предоставляется».

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

Ведение Telegram-канала с помощью GitHub Actions

Reading time11 min
Views14K


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


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


И вот, среди прочих родилась простая идея: "А почему бы не автоматизировать отслеживание новых выпусков ИТ-подкастов с помощью Telegram-бота и GitHub Actions? Чтобы просто подписаться на telegram-канал и получать актуальные выпуски подкастов по мере их выхода.


Конечно, можно скачать специализированные приложения, типа "Poket Casts", либо подписаться на RSS, но лично для меня использование Telegram-канала является самым удобным, простым и привычным.


Так был создан telegram-канал @awesome_russian_podcasts, куда в автоматическом режиме публикуются новые выпуски множества ИТ-подкастов, собранных в моём репозитории. Собственно, о процессе создания этого канала (его техническую часть) я и хочу рассказать далее.

Читать дальше →

Что такое VPS/VDS и как его купить. Максимально внятная инструкция

Reading time12 min
Views143K
Выбор VPS на современном рынке технологий напоминает выбор книг нон-фикшн в современном книжном: вроде и обложек интересных много, и цены на любой разбег кошелька, и имена каких-то авторов на слуху, но найти то, что действительно нужно и не является по сути бредом автора, крайне сложно. Точно так же провайдеры предлагают разные мощности, конфигурации и даже бесплатные VPS (хорошее предложение, но принимать его, конечно, опасно). Давайте определимся, на что же нужно обратить внимание при выборе провайдера.

Не гадайте на ромашке — читайте нашу инструкцию
Читать дальше →

Доступ к контенту iFrame с другого домена

Reading time9 min
Views118K
Сегодня я хочу рассказать о том, как мы в своем проекте indexisto.com сделали аналог инструмента Google Webmaster Marker. Напомню, что Marker это инструмент в кабинете Google Webmaster, который позволяет аннотировать ваши страницы Open Graph тегами. Для этого вы просто выделяете мышкой кусок текста на странице и указываете что это title, а это рейтинг. Ваша страница при этом грузится в Iframe в кабинете вебмастера.



Теперь Google, встретив подобную страницу на вашем сайте, уже знает, что за контент на ней опубликован, и как его красиво распарсить в сущность (статью, товар, видео..)

Нам был нужен подобный функционал. Задача казалась несложной и исключительно клиентсайд. Однако на практике решение лежит на стыке клиентсайда и серверсайда («чистые» JS программисты могу ничего не знать про различные прокси серверы и очень долго подходить к снаряду). При этом я не нашел в интернетах статью которая описывала бы всю технологию от начала до конца. Также хочется сказать спасибо пользователю BeLove и нашим безопасникам за помощь.

Читать дальше →

Протокол для общения между iframe и основным окном браузера

Reading time4 min
Views8.6K

Многим разработчикам периодически требуется наладить общение между несколькими вкладками браузера: возможность посылать сообщения из одной в другую и получать ответ. Такая задача встала и перед нами.


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


При ближайшем рассмотрении выяснилось, что две трети библиотеки при этом можно не менять, необходимо только немного порефакторить код. Библиотека представляет из себя скорей ПРОТОКОЛ общения, который может работать с текстовыми данными. Его можно применять во всех случаях, если есть возможность передавать текст (iframe, window.open, worker, вкладки браузера, WebSocket).


Как это работает


На данный момент в протоколе есть две функциональности: отправка сообщения и подписка на события. Любое сообщение в протоколе — это объект с данными. Главное поле этого объекта — поле type, которое говорит нам, что это за сообщение. Поле type — это enum со значениями:

Читать дальше →

Автоматизация HR процессов с использованием Microsoft Teams, PowerApps и Power Automate. Заявки на выход сотрудников

Reading time3 min
Views6.8K
Добрый день всем! Сегодня я бы хотел поделиться небольшим примером автоматизации процесса создания заявок на выход новых сотрудников с использованием продуктов Microsoft SharePoint, PowerApps, Power Automate и Teams. При реализации данного процесса не потребуется покупка отдельных пользовательских планов PowerApps и Power Automate, достаточно будет подписки Office365 E1/E3/E5. На сайте SharePoint создадим списки и столбцы, PowerApps поможет сделать форму, а Power Automate предоставит возможности для настройки логики бизнес-процессов. Итоговый процесс подключим к команде MS Teams. Давайте не будем терять время и посмотрим, что из этого выйдет.


Читать дальше →

Использование алгоритмов ML для классификации многостраничных документов: опыт ВТБ

Reading time10 min
Views7.7K
В рамках кредитных конвейеров юридических лиц банки запрашивают у компаний оригиналы различных документов. Зачастую сканы этих документов поступают в виде единого многостраничного файла – «потока». Для удобства использования потоки нужно сегментировать на отдельные документы (одностраничные или многостраничные) и классифицировать их. Под катом мы расскажем о применении алгоритмов машинного обучения в классификации уже сегментированных документов.


Читать дальше →

Разработка простого приложения непростым способом

Reading time27 min
Views7.3K

Всем привет!


Относительно давно мне прилетела задача по учебе написание курсовой, и я её наконец-то написал. Чтобы добро не пропадало, я решил оформить её (курсовую) в виде статьи. Надеюсь, статья будет полезна не только для тех, кто хочет погрузиться в мир Web разработки, но и так же для тех, кто считает, что современный веб не так уж и сложен, чтобы платить высокую ЗП.


Итак, тема курсовой:


Разработать программу «Поиск». Программа должна осуществлять поиск заданных слов в текстовом файле. Слова последовательно вводятся с клавиатуры. Для каждого слова должно определяться количество вхождений и номера строк текста. Если указанное слово в файле отсутствует, то программа должна выводить соответствующее сообщение.

Разработкой всяких SPA и PWA я занимаюсь очень давно, но вот как-то не было случая пощупать Electron. Не спеша закрывая MS Visual Studio, подумал, почему бы нет...


И, пожалуй, начнём с инструментов разработчика.

Читать дальше →

Книга «Конкурентность в C#. Асинхронное, параллельное и многопоточное программирование. 2-е межд. изд.»

Reading time6 min
Views17K
imageПривет, Хаброжители! Если вы побаиваетесь конкурентного и многопоточного программирования, эта книга написана для вас. Стивен Клири предоставляет в ваше распоряжение 85 рецептов работы с .NET и C# 8.0, необходимых для параллельной обработки и асинхронного программирования. Конкурентность уже стала общепринятым методом разработки хорошо масштабируемых приложений, но параллельное программирование остается непростой задачей. Подробные примеры и комментарии к коду позволят разобраться в том, как современные инструменты повышают уровень абстракции и упрощают конкурентное программирование. Вы научитесь использовать async и await для асинхронных операций, расширять возможности кода за счет использования асинхронных потоков, исследовать потенциал параллельного программирования с библиотекой TPL Dataflow, создавать конвейеры потоков данных с библиотекой TPL Dataflow, задействовать функциональность System.Reactive на базе LINQ, использовать потоково-безопасные и неизменяемые коллекции, проводить модульное тестирование конкурентного кода, брать под контроль пул потоков, реализовывать корректную кооперативную отмену, анализировать сценарии на предмет объединения конкурентных методов, пользоваться всеми возможностями асинхронно-совместимого объектно-ориентированного программирования, распознавать и создавать адаптеры для кода, в котором используются старые стили асинхронного программирования.
Читать дальше →

Chrome Remote Desktop. Удаленная поддержка

Reading time2 min
Views65K
Великолепное бесплатное ПО Chrome Remote Desktop, которым пользуюсь более 3 лет, вырос в моих глазах! (полноценный отдельный инструмент для удаленной поддержки).
Всем, кому интересен аналог «Великому ПО» прошу под кат.

«Вот так, ко времени и к месту» Большой Лебовски.


Читать дальше →

Как регистратор проверяет доступность доменного имени на примере REG.RU

Reading time3 min
Views4.9K
image

Данная статься не является ни рекламой ни антирекламой как сервиса REG.RU, так и упомянутых ниже других компаний. Я не являюсь сотрудником REG.RU или заинтересованной стороной, суть написанного несет исключительно развлекательно-ознакомительный характер.

Итак, поехали!
Читать дальше →

X.509 своми силами в .Net Core

Reading time6 min
Views20K

image


Некоторое время назад я задался вопросом, можно ли наладить фабрику сертификатов, не прибегая к утилите openssl. Как подвести «под кнопку» весь процесс от генерации ключей до проверки подлинности. Забегая вперед, скажу, что пространство System.Security.Cryptography в этом плане является вполне самодостаточным. В статье я рассмотрю этапы создания сертификатов, экспорт в форматы pem и pkcs12, хранение сертификатов в файловой системе, а также проверку подлинности, используя только классы из System.Security.Cryptography.

Читать дальше →

Установка и правильная настройка Docker на Windows Subsystem Linux (WSL)

Reading time5 min
Views50K

Предварительные требования


Прежде чем начать, убедитесь, что ваша система имеет примерно следующую конфигурацию:

  • Windows 10 Version 1803 Build 1734 и выше
  • Ubuntu for WSL 16.0.4 LTS или что-то в этом роде (ваша версия может немного отличаться)

Важно, чтобы версия и сборка Windows были не ниже того, что здесь указано. Дело в том, что, начиная с этих цифр, в ядро Windows ​​WSL были внесены принципиальные изменения, которые позволяют использовать cgroups (control groups — в 2008 году добавлены в ядро Linux). А они необходимы Docker’у для управления ресурсами вашей системы в контейнерах.


Читать дальше →

Асинхронный код в Startup ASP.NET Core: 4 способа обхода GetAwaiter().GetResult()

Reading time8 min
Views22K
С тех пор, как в C# 5.0 завезли механизм async/await, нас постоянно во всех статьях и доках учат, что использовать асинхронный код в синхронном очень плохо. И призывают бояться как огня конструкции GetAwaiter().GetResult(). Однако есть один случай, когда сами программисты Microsoft не гнушаются этой конструкцией.


Читать дальше →

10 интересных репозиториев на GitHub, полезных любому разработчику

Reading time4 min
Views84K
Представляем вам перевод статьи Simon Holdorf, опубликованной на сайте medium.com. В ней вы найдете ссылки на полезные репозитории, с помощью которых можно прокачать навык разработки ПО.


Фото с ресурса Unsplash. Автор: Vishnu R Nair

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

Каждый из них имеет множество звезд на GitHub, что только подтверждает их популярность, актуальность и полезность. Одни репозитории научат вас чему-то новому, благодаря другим вы сможете создать какие-то классные штуки. В целом, используя их, можно основательно прокачать навык разработки программного обеспечения.
Читать дальше →

Blazor Client Side Интернет Магазин: Часть 6 — Создание заказа и работа с компенсирующими действиями

Reading time6 min
Views2.9K


Привет, Хабр! Продолжаю делать интернет магазин и изучать Blazor. В этой части расскажу о том как добавил в него возможность создания заказа, просмотра заказов и работу с последовательностью действий одно из которых может завершиться ошибкой. За подробностями добро пожаловать под кат.
Читать дальше →

Blazor Client Side Интернет Магазин: Часть 5 — Просмотр корзины и работа с Stateful

Reading time4 min
Views3.2K


Привет, Хабр! Продолжаю делать интернет магазин на Blazor. В этой части расскажу о том как добавил в него возможность просмотра корзины товаров и организовал работу с состоянием. За подробностями добро пожаловать под кат.
Читать дальше →

(Не)очевидный OSINT в Twitter

Reading time7 min
Views8.3K


Twitter — достаточно старый, но при этом все еще популярный у широкой аудитории сервис микроблогов, которым активно пользуются как рядовые пользователи, так и публичные личности. Лучший пример — официальные Twitter-аккаунты политиков, писателей, музыкантов, актеров. Конечно, зачастую такие учетные записи ведутся «специально обученными людьми», но если речь идет об OSINT в производственной сфере, то наблюдение за аккаунтами рядовых инженеров или менеджеров может дать великолепные результаты.

Немаловажно и то, что для эффективной работы с массивом данных из Twitter не обязательно обрабатывать каждый твит вручную, либо же бросаться в другую крайность — подключаться к API и самому писать софт. Хотя стандартный интерфейс сервиса не дает нам почти ничего в плане поисковых инструментов или инструментов фильтрации, при этом Twitter поддерживает огромное множество поисковых запросов и правил, о которых нигде толком в стандартном веб-интерфейсе или приложении не упоминается. Именно с использования этих запросов и стоит начать.
Читать дальше →

Вечный сервер — как избавиться от ежемесячных платежей за хостинг

Reading time8 min
Views82K


— На вашем счету недостаточно средств для продления услуги. Вся ваша работа за 10 лет будет уничтожена в течение 2 рабочих дней.


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

В статье мы расскажем как избавиться от регулярных платежей на содержание хостинга, доменных имен, SSL-сертификатов. И как сделать максимально автономный сервер, который переживет зомби-апокалипсис.
Читать дальше →

Blazor Client Side Интернет Магазин: Часть 3 — Витрина товаров

Reading time9 min
Views3.2K


Привет, Хабр! Продолжаю делать интернет магазин на Blazor. В этой части расскажу о том как добавил в него витрину товаров и сделал свои компоненты. За подробностями добро пожаловать под кат.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity