Рубрика «.net» - 199

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

SmtpClient и MailNotify

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

  • Класс, который будет рассылать письма
  • Конфигурация smtp берется из IConfig
  • Ошибки отправки письма протоколируются
  • Наличие параметра, выключающего работу почты, дабы при работе с боевой базой клиентов не разослать какой-то треш.

Читать полностью »

Цель урока. Научиться работать с форматом json. Инструменты по работе с json. Написание сторонних запросов, авторизация через получение данных от facebook и vkontakte. Ajax в работе с json (авторизацию переписать). API сайта.

Json и Json.net

Json – это текстовый формат данных, основанный на Javascript.
Пример данных в Json:

{
            "firstName": "Иван",
            "lastName": "Иванов",
            "address": {
                "streetAddress": "Московское ш., 101, кв.101",
                "city": "Ленинград",
                "postalCode": 101101
            },
   "phoneNumbers": [
       "812 123-1234",
       "916 123-4567"
   	]
  }

Читать полностью »

Цель урока. Научиться создавать многоязычные сайты. Структура БД. Ресурсы сайта. Определение языка. Переключение между языками. Работа в админке.

Проблемы многоязычного сайта

Итак, заказчик просит сделать сайт многоязычным, т.е. чтобы и по-русски, и по-французки, и по-английски. Это может быть как просто многоязычный блог, так и гостиничный сайт, сайт по работе с недвижимостью и многое другое.
Для начала определим, что же мы будем переводить:

  • Написание дат, сумм в зависимости от выбранной локализации. С этим справляется класс System.Globalization
  • Встроенные ресурсы сайта — выдача ошибки («Поле не может быть пустым», «The field is required») и другие сообщения.
  • Не встроенные ресурсы, как то логотипы, изображения, js-локализация элементов управления. Для переключения между ними необходимо знать текущее значение языка на странице.
  • Пользовательские значения.

Читать полностью »

Цель урока. Научиться использовать Scaffolding для создания прототипа проекта. Определяем и фиксируем структуру репозитория. Простая и языковая версия класса. Тестируем использование Scaffolder-а, используем «направляющие» атрибуты. Параметры для Scaffolder-а. Создание управляющих атрибутов. Полный цикл создания и управления объекта в админке.

Scaffolding. Начало.

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

  • создать в БД новую таблицу
  • прокинуть ее в класс DbContext
  • добавить объявление в интерфейс репозитария
  • добавить реализацию в SqlRepository
  • добавить partial-часть класса в папке Proxy
  • добавить модель данных
  • объявить mapping
  • создать контроллер в админке
  • сделать типичные view для просмотра и редактирования

Читать полностью »

Цель урока. Научиться создавать тесты для кода. NUnit. Принцип применения TDD. Mock. Юнит-тесты. Интегрированное тестирование. Генерация данных.

Тестирование, принцип TDD, юнит-тестирование и прочее.

Тестирование для меня лично – это тема многих размышлений. Нужны или не нужны тесты? Но никто не будет спорить, что для написания тестов нужны ресурсы.
Рассмотрим два случая:

  1. Мы делаем сайт, показываем заказчику, он высылает список неточностей и дополнительных пожеланий, мы их бодро правим и сайт отдаем заказчику, т.е. выкладываем на его сервер. На его сервер никто не ходит, заказчик понимает, что чуда не произошло и перестает платить за хостинг/домен. Сайт умирает. Нужны ли там тесты?
  2. Мы делаем сайт, показываем заказчику, он высылает список правок, мы их бодро правим, запускаем сайт. Через полгода на сайте 300 уников в день и эта цифра растет изо дня в день. Заказчик постоянно просит новые фичи, старый код начинает разрастаться, и со временем его всё сложнее поддерживать.

Читать полностью »

Цель урока: финальный урок по созданию приложения. Написание технического задания. Создание БД. Переименование webTemplate. Применение скаффолдинга. Админка. Основной сайт. Тесты.

О главном

Это финальный урок, и тут я немного отойду от конкретного программирования и поразмышляю о работе.
Программирование – это работа, это профессия, это творчество. Когда я учился в университете и с кем-то шел по дороге домой, мы часто спорили, что лучше Windows или Linux, Delphi или C++. Тогда мы могли не спать ночами, чтобы красиво переписать построение семантического дерева для компилятора. Мы изучали пролог, лисп, конечные автоматы, структуры данных. Мы учились видеть красоту быстрой сортировки Хоара реализованную на лиспе. ВО!:

(defun quicksort (lis) (if (null lis) nil
  (let* ((x (car lis)) (r (cdr lis)) (fn (lambda (a) (< a x))))
    (append (quicksort (remove-if-not fn r)) (list x)
      (quicksort (remove-if fn r))))))

Но теперь я рассматриваю программирование как услугу. Как что-то, за что мне платят деньги. Я занимаюсь фрилансом уже три года. В начале работы фрилансером я программировал не только веб и не только на asp.net mvc. Был и php на ZendFramework, и написание модулей для расчета стратегий для торговли на РТС на Quirk.

Читать полностью »

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

Итак, начнем с представления строк в памяти

В.NET строки располагаются согласно правилу BSTR (Basic string or binary string). Данный способ представления строковых данных используется в COM (слово basic от языка программирования VisualBasic, в котором он первоначально использовался). Как известно в C/C++ для представления строк используется PWSZ, что расшифровывается как Pointer to Wide-character String, Zero-terminated. При таком расположении в памяти в конце строки находится null-терминированный символ, по которому мы можем определить конец строки. Длина строки в PWSZ ограничена лишь объемом свободной памяти. Читать полностью »

Те, кто интересуется highload-системами, читали про архитектуры Twitter, Facebook и прочие другие. Но никогда еще не было публикаций о системах такого класса, как Диадок. В отличие от Twitter, эта система не является бесплатной и доступной всем и содержит довольно большой слой бизнес-логики, предназначенной для решения задач из конкретной предметной области.

Пару слов вкратце о системе: для чего она предназначена. Чтобы было сразу понятно, что это такое, представьте web-интерфейс для почты, но это не совсем почта, точнее, совсем не почта. Данная система предназначена для обмена документами. Основные документы – это счета-фактуры и накладные. При этом электронные документы являются юридически значимыми, имеют такую же силу, как и бумажные документы с печатями и подписями.

Читать полностью »

image

Введение

Dojo Toolkit это модульная JavaScript библиотека с открытым исходным кодом, предназначенная для облегчения быстрой разработки кросс-платформенных JavaScript/Ajax-ориентированных приложений и веб-сайтов, которая предоставляет некоторые действительно мощные возможности для пользовательского интерфейса. Компонент Dojo Tree обеспечивает полное, привычное, интуитивно понятное, развертываемое представление иерархических данных. Этот компонент поддерживает отложенную загрузку веток, что делает его хорошо масштабируемым для больших объемов данных. Dojo Tree отличный виджет для представления данных с отношениями «предок-потомок».

Эта статья показывает процесс создания дерева, поддерживающего «CRUD операции», «drag and drop (DnD)» и «отложенную загрузку». Чтобы создать такое дерево мы будем использовать Dojo Tree, Entity Framework, SQL Server и Asp .Net MVC.
Читать полностью »

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

Все же мысли о сохранении информации о положении авто у меня крутились в голове, да и хотелось просто найти интересное занять на досуг. НА этих мыслях я решился на покупку т. н. персонального GPS — трекера. Особо к моделям не присматривался, у все примерно одно и тоже, но очень важной особенностью такой как настройка на собственный сервер обладали не многии из перебранных кандидатов. В итоге мой выбор пал на персональный GPS трекер китайской компании Xexun — Xexun TK102-2. После еще нескольких часов выискивания как все настраивается и кучи различных мануалов я решил, что нужно уже купить и посмотреть что это такое. Кому интересна информация о трекере и о написании собственного «сервера» для трекера, прошу подкат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js