Pull to refresh
4
0
Дмитрий Бойко @DmitryNBoyko

Full Stack Developer

Send message

Конвертация скрипта Bash в код С# для отправки СМС через usb модем HUAWEI E3372

Reading time6 min
Views30K
Несколько моих проектов отправляют СМС и в последнее время после обновлений сервера, а может и ряда других причин, отправка СМС стала почти невозможной.

Старенький USB модем HUAWEI (марку не буду разглашать) перестал стабильно висеть на одном COM порту и временами переподключался на другие порты, совсем отключался и терял антенну.

Да и ситуация с библиотекой GSMComm была непонятной и болезненной.
GSMComm — это пакет для телефонов GSM, в основном для выполнения задач, связанных с SMS.
www.nuget.org/packages/GSMComm последня версия 1.21.1 от 10.10.2015 года.
Поиск по интерент показал, что есть возможность использовать встроенный функционал WEB API новых модемов HUAWEI, более эффективно, чем старый подход с AT командами реализованный в GSMComm.

Выяснилось, что есть прекрасный usb модем HUAWEI E3372, который почти хакерским способом способен отправлять СМС как из скрипта (Curl + Bash), так и из кода (Python, Perl), и, как я предположил, из C#.

Самое печальное, что компания HUAWEI не предоставляет никакой документации как это сделать и все найденные методы имели экспериментальный харктер и зависели от семейства устройств.

В общем, опираясь на найденный материал, не гарантирующий работу кода с момедом, был приобретен HUAWEI E3372.
Читать дальше →
Total votes 3: ↑1 and ↓2-1
Comments8

Распределенные транзакции для разнородных баз данных в MS .NET

Reading time6 min
Views17K
Недавно, на одном интервью меня спросили, а работал ли я с распределенными транзакциями, в том смысле, что нужно было делать вставку/обновление таких записей при условии:

  1. Одной транзакции.
  2. Это могут быть несколько разнообразных баз данных таких как Oracle, MS SQL Server и PostgreSQL.
  3. Отклик на CRUD операцию может быть значительным.
  4. Последовательность вставки не важна.

Чего коллеги добивались задавая этот вопрос? Проверить мой опыт или получить готовое решение? На самом деле для меня не важно, но вот что важно — задача в теории вопроса показалась мне интересной и, я решил написать статью о том, как можно было бы решить эту задачу.
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments9

Самые популярные структуры данных

Reading time9 min
Views22K
Что такое структура данных?
Проще говоря, структура данных — это контейнер, в котором хранятся данные в определенной компоновке (формате, или способе организации их в памяти). Эта «компоновка» позволяет структуре данных быть эффективной в одних операциях и неэффективной в других. Ваша цель — понять структуры данных, чтобы вы могли выбрать структуру данных, наиболее оптимальную для рассматриваемой проблемы.

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

Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments8

Практическое использование шаблона Стратегия

Reading time7 min
Views19K
Применение шаблонов (или паттернов) в объектно-ориентированном программировании проистекает из желания делать код проще, надежнее и не изобретать велосипед, а также позволить эффективно организовать совместную работу программистов с разным уровнем подготовки давая им единую основу для понимания исходного кода в концептуальных рамках бизнес-логики приложения. Это означает, что изучение шаблонов проектирования является ключевым этапом в профессиональном росте программиста.

Как же правильно изучать шаблоны проектирования? Есть два подхода: скучный и доходчивый (Нравится моя классификация?). Скучный подход подразумевает академическое изучение списка паттернов с использованием абстрактных примеров. Лично я предпочитаю, противоположный – доходчивый подход, когда постановка задачи на относительно высоком уровне формулировки позволяет выбрать шаблоны проектирования. Хотя вы можете комбинировать оба подхода.

Итак, поехали?
Читать дальше →
Total votes 8: ↑5 and ↓3+2
Comments8

Ускоряемся в Entity Framework Core

Reading time15 min
Views65K

Не будь жадиной!


При выборке данных выбирать нужно ровно столько сколько нужно за один раз. Никогда не извлекайте все данные из таблицы!

Неправильно:

using var ctx = new EFCoreTestContext(optionsBuilder.Options);                
// Мы возвращаем колонку ID с сервера, но никогда не используем и это неправильно!
ctx.FederalDistricts.Select(x=> new { x.ID, x.Name, x.ShortName }).ToList();

Правильно:

using var ctx = new EFCoreTestContext(optionsBuilder.Options);  
// Мы не возвращаем колонку ID с сервера и это правильно!
ctx.FederalDistricts.Select(x=> new { x.Name, x.ShortName }).ToList();
ctx.FederalDistricts.Select(x => new MyClass { Name = x.Name, ShortName = x.ShortName }).ToList();

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

Information

Rating
Does not participate
Location
Белово, Кемеровская обл., Россия
Date of birth
Registered
Activity