Search
Write a publication
Pull to refresh
5
0
Михаил @mlurker

User

Send message

Профессиональный курс по ASP.NET MVC 3 бесплатно до 18 марта!

Reading time1 min
Views3.7K
image 

Компания Pluralsight, при поддержке Microsoft, делает прекрасное предложение для веб-разработчиков и предлагает бесплатный доступ к своему профессиональному видео-курсу обучения технологии ASP.NET MVC 3. Предложение ограничено по времени, курс будет свободно доступен только до 18 марта. Курс подготовлен на английском языке.

image

Курс состоит из следующих частей:
  • введение: новый проект, шаблон MVC, маршрутизация, контроллеры, представления, создание действия;
  • движок представлений Razor: преимущества Razor, создание простого представления, смешивание кода и разметки, модели и ViewData, HTML-хелперы, частичные представления, модель компоновки представления, код для автоматического запуска, конфигурация;
  • контроллеры: глобальные фильтры действий, кэширование результатов вложенных действий, ViewBag, новые результаты действий, валидация запросов;
  • модели: валидация в MVC3, аннотация данных, пользовательские атрибуты валидации, модели с поддержкой валидации, клиентская валидация, пользовательская клиентская валидация, удаленная валидация;
  • NuGet: средство управления пакетами, зависимости пакетов, использование PowerShell, пользовательские пакеты;
  • Dependency Injection: инъекции зависимостей, использование IDependencyResolver, инъекция в контроллерах, инъекция в представлениях, активаторы, расширяемость фильтров, расширяемость моделей.
Pluralsight делает весьма и весьма качественные видео-курсы, поэтому рекомендую всем не упустить возможность и ознакомиться с этим бесплатным предложением. Очень хороший шанс начать изучать ASP.NET MVC или узнать что нового было представлено в MVC3.

Транзакции и многопоточный доступ к базе данных

Reading time5 min
Views31K
Недавно мне понадобилось выполнить следующий код (представлен в максимально упрощенном виде):

public void Start()
{
    using (var transactionScope = new TransactionScope())
    {
        ...
        GetOrCreateCompany(someValue);
        ...
        transactionScope.Complete();
    }
}

private Company GetOrCreateCompany(string companyName)
{
    var company = _companiesRepository.GetCompany(companyName); //простая выборка из таблицы по названию; если компания не найдена - возвращается null
    if (company == null)
        company = _companiesRepository.Add(companyName);
    return company;
}


Код этот выполнялся в многопоточной среде, где каждый поток на вход получал метод Start (а значит у каждого потока была своя транзакция).

У этого, казалось бы, простого кода есть несколько нюансов, о которых и пойдет речь под катом.

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

Задача RMQ — 1. Static RMQ

Reading time4 min
Views67K

Введение



Задача RMQ весьма часто встречается в спортивном и прикладном программировании. Удивительно, что на Хабре ещё никто не упомянул эту интересную тему. Попробую восполнить пробел.

Аббревиатура RMQ расшифровывается как Range Minimum (Maximum) Query – запрос минимума (максимума) на отрезке в массиве. Для определённости мы будем рассматривать операцию взятия минимума.

Пусть дан массив A[1..n]. Нам необходимо уметь отвечать на запрос вида «найти минимум на отрезке с i-ого элемента по j-ый».



Рассмотрим в качестве примера массив A = {3, 8, 6, 4, 2, 5, 9, 0, 7, 1}.
Например, минимум на отрезке со второго элемента по седьмой равен двум, то есть RMQ(2, 7) = 2.

В голову приходит очевидное решение: ответ на каждый запрос будем находить, просто пробегаясь по всем элементам массива, лежащим на нужном нам отрезке. Такое решение, однако, не является самым эффективным. Ведь в худшем случае нам придётся пробежаться по O(n) элементам, т.е. временная сложность этого алгоритма – O(n) на один запрос. Однако, задачу можно решить эффективнее.

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

Выполнение javascript в программе на C#

Reading time4 min
Views57K


На днях просматривал популярные библиотеки на codeplex и увидел там пару библиотек для работы с javascript. Сразу вспомнился случай, когда мне нужно было написать небольшую программку для взаимодействия с личным кабинетом на одном сайте. Поэтому без раздумий решил попробовать, как бы они справились с той задачей.

Под катом я расскажу о нерядовом взаимодействии с сайтом, каким образом я решил задачу на тот момент и смогли ли обе библиотеки справиться с той же задачей. Сразу скажу, что речь пойдёт о следующих библиотеках: jint и javascriptdotnet.
Читать дальше →

Делаем поздравительную открытку к 8 марта на HTML5 и EaselJS

Reading time12 min
Views26K


(картинка кликабельна и поздравительна)

Общая идея: летающие бабочки на фоне красивой картинки и под весеннюю музыку. (Сразу признаюсь, у меня также была Silverlight-версия открытки, которую я делал год назад. Урок анимации бабочек в Silverlight.)

Для отрисовки открытки, помимо стандартных средств CSS, будем использовать HTML5 Canvas и библиотеку анимации EaselJS.
Под катом пошаговая инструкция по разработке

Android Development Tutorial. Часть 1/?

Reading time6 min
Views121K
Ларс Вогель — евангелист Eclipse.
Под катом Вы обнаружите перевод его статьи, которая описывает процесс создания Android-приложений с помощью Eclipse. Используется Eclipse 3.6, Java 1.6 и Android 2.3 (Gingerbread).
Часть 2
Читать дальше →

Как вернуть качественный звук в Windows 7, 10, 11 — побитовый вывод, аппаратные эффекты (EAX и пр.)

Reading time5 min
Views276K
Хочу поділитися досвідом по темі звуку в Windows 7.
Насправді все не так погано, як спочатку здається, і я вам зараз це продемонструю.
Читать дальше →

AA-Tree или простое бинарное дерево

Reading time6 min
Views19K
Тема бинарных деревьев уже обсуждалась на хабре (здесь и здесь).

Про AA-дерево было сказано, что «из-за дополнительного ограничения операции реализуются проще чем у красно-черного дерева (за счет уменьшения количества разбираемых случаев)».

Мне, однако, кажется, что AA-дерево заслуживает отдельной статьи.

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

Как легально получать деньги из-за пределов России

Reading time5 min
Views202K
Дано: заказчик за рубежом, желающий работать с Вами и платить вам евро или доллары.
Найти: оптимальный способ организовать работу с ним, чтобы платить налоги и спать спокойно.

Сразу скажу, что получение денег на пластиковую карту без уплаты налогов может вылиться в серьезные проблемы (про ответственность написано в конце топика). Объяснения, что деньги «от бабушки внучку на мороженное» при суммах больше 10К$ в год уже не прокатывают, особенно если в реквизитах «бабушки» будет стоять что-то вроде «GMBH Star Development» Вероятность того, что возьмут за задницу достаточно высокая и поэтому лучше не рисковать и делать все по Закону, тем более, что ничего сложного в этом нет
Читать дальше →

Примеры xpath-запросов к html

Reading time4 min
Views532K
Xpath — это язык запросов к элементам xml или xhtml документа. Также как SQL, xpath является декларативным языком запросов. Чтобы получить интересующие данные, необходимо всего лишь создать запрос, описывающий эти данные. Всю «черную» работу за вас выполнит интерпретатор языка xpath.
Очень удобно, не правда ли? Давайте посмотри какие возможности предлагает xpath для доступа к узлам веб-страниц.
Читать дальше →

Использование мьютексов для обнаружения активного заражения

Reading time2 min
Views2K
При выполнении заражения системы перед вирмейкером всегда стоит задача определения, а не является ли данная система уже заражённой. В противном случае, выполнение повторных механизмов инфицирования в ряде случаев может привести к нарушению работы троянца либо дестабилизацией всей системы. И то и другое — нежелательно.

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

Простое использование AsyncTask и ProgressDialog в Android

Reading time5 min
Views30K
image

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

Android содержит массу способов для организации данного подхода, но одним из самых удобных можно признать использование AsyncTask и ProgressDialog.

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

Backdoor в Active Directory

Reading time4 min
Views10K
В свое время, менее года назад, на хабре мелькала публикация с аналогичным заголовком [1]. В ней автор предлагал способ по сокрытию привилегий администратора домена путем использования в качестве контейнера, для размещения «скрытой» учетной записи, служебное хранилище «Program data», в совокупностью с агрессивным разграничением прав с целью предотвращения доступа к «спрятанной» учетной записи. Однако, несмотря на заверения автора, обнаружение «скрытой» учетной записи и ее последующее удаление можно было выполнить всего в несколько кликов.
Читать дальше →

iText: пишем в PDF по-русски

Reading time5 min
Views25K
Задача: создавать PDF-документ с использованием библиотеки iText. При этом пользователь должен сам задавать используемые шрифты, из установленных в системе. Шрифты как TrueType так и Type1.
В iText есть статический класс предоставляющий доступ к системным шрифтам FontFactory. При получении шрифта нужно правильно указать его кодировку. Тут и возникли проблемы. Для ТТ и Т1 кодировки разные, и в .NET нет штатных средств позволяющих отличить ТТ-шрифт от Т1.
Решение проблемы

Ищем быстро, еще быстрее

Reading time3 min
Views22K
Натолкнулся в разделе QA на интересный вопрос. Ответ на него заставил написать эту статью как бОлее полный ответ на вопрос «как организовать поиск по множеству параметров, как в Яндекс-маркете, например».

Я знаю, что на Хабре, да и вообще есть много сторонников noSQL решений (сам не без греха), но все же я сторонник сначала подумать, а уже потом выбирать решение.

Итак, что имеем в «ДАНО»
  • Имеем 120 чекбоксов — вариант 1/0
  • Имеем 30 «радио» с выбором «да/нет/не важно»
  • Имеем 2-3 слайдера для указания диапазона цен/размера чего нить
  • Имеем самое главное: 12 млн записей в БД.
  • Имеем Select * From tovar Where (wifi=true) and (led=false) and (type=3) and ….остальные параметры …; со временем выполнения близкому к истерике клиента.

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

DOM Storage window broadcast

Reading time2 min
Views8K
В статье речь пойдет об интересном DOM Storage эвенте, который позволяет выполнять броадкаст общение между окнами обраузера одного домена не подозревающих об существовании друг друга.

image

DOM Storage (localStorage sessionStorage) кроме потрясающей возможности хранения информации на клиенте имеет ещё одну документированную, но малоизвестную возможность — уведомление об изменении/удалении элемента DOM Storage для всех окон открытых из текущего домена.
Читать дальше →

Домены по 1.18$ от GoDaddy

Reading time1 min
Views7.3K
Крупнейший регистратор GoDaddy в очередной раз порадовал нас огромной акцией — регистрация и трансфер домена всего за 1.18$.

Промокод: PRESIDENT

По акции можно зарегистрировать/сделать трансфер в следующих зонах:
.COM, .US, .MOBI, .BIZ, .NET, .ORG, .CA, .CO.UK, .IN

Акция действует до тех пор, пока не раскупят 10000 доменов. (либо до 20 марта)
По акции с одного аккаунта можно зарегистрировать только 1 домен.
Оплатить можно исключительно картой.
Читать дальше →

ASP.NET MVC: Привязка данных модели, которые содержат изображения

Reading time5 min
Views9.2K
Привязка данных(binding) является достаточно удобным средством ASP.NET MVC. Удобно оно в первую очередь тем, что позволяет скрыть реализацию преобразования данных между данными из модели и данными HTTP запроса.
В своих проектах я часто сталкиваюсь с необходимостью сохранять различные данные типа blob и image. В этой статье я бы хотел показать, как можно легко организовать и использовать привязку данных из модели, которые содержат различные изображения. Для примера я взял учебный проект MVC Music Store и решил его подправить — добавить возможность изменять изображение обложки музыкального альбома. При написании данной статьи, я использовал версию APS.NET MVC 3 и Razor.
Читать дальше →

Юнит-тесты: Как протестировать то, что не тестируется

Reading time3 min
Views20K
Есть один замечательный вопрос, который возникает в любой дискуссии связанной с юнит-тестированием. «Надо ли создавать тесты для юнит тестов». Ответом на этот вопрос, как правило, служит технология Code Coverage. Действительно, если вы хотите убедиться в том, что юнит тест подготовлен правильно, вам нужно только проверить вызываются ли все ветвления в коде. Достигается это простым методом – надо подать на вход проверяемой функции все комбинации данных, которые позволят обойти эти ветвления. И академические примеры из документации это показывают.

Но подвох в том, что реальный мир сложнее. Функции приложения могут учитывать условия не только подаваемые на вход. Как быть в этом случае?
Читать дальше →

Индексирование и поиск с помощью Xapian в .NET

Reading time3 min
Views4.3K
Если слово Xapian вам незнакомо, рекомендую ознакомиться с небольшой статьей.
Вкратце же, Xapian — представляет собой написанный на с++ набор инструментов для индексирования текстовой информации, с возможностью поиска по базе индексированной информации. Для работы не требует установленного сервера, достаточно наличия его библиотек. Может обрабатывать огромные массивы информации(проверено до 1.5Тб), измеряемой миллионами документов. Является конкурирующим продуктом Sphinx и Apache Lucene.
Мной он был выбран из этих трех продуктов за возможность использования из .Net.

Пробуем

Information

Rating
Does not participate
Location
Philadelphia, Pennsylvania, США
Registered
Activity