Как стать автором
Обновить
mxc @mxcread⁠-⁠only

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

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

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

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

Взлом программ для чайников

Время на прочтение5 мин
Количество просмотров492K
Disclaimer: всё ниженаписанное написано исключительно с просветительскими и исследовательскими целями, а также понимания механизмов защиты от взлома. Автор ни в коем случае не рекомендует использовать данную информацию для взлома программ.

В данной статье я хочу рассказать про три с половиной основных способа взлома программ на .NET, цель, которую я преследую — помочь разработчикам лучше понять механизмы защиты своих программ, т.е. выяснить наиболее очевидные угрозы и предпринять соответствующие меры (или не принимать).

Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным будет Reflector, декомпилятор программ под .NET

В качестве подопытного кролика я выбрал Expresso — анализатор регулярных выражений. Данная программа бесплатная, в лицензии вроде бы ничего не указано про взлом, но при этом без регистрации она будет работать всего 60 дней. Другими словами, вред от взлома данной программы минимальный, к тому же внутреннее её устройство очень уж хорошо подходит для тренировки. Буду надеяться, что автор данной программы не обидится на меня.
Читать дальше →

IEnumerable<T> и IQueryable<T>, в чем разница?

Время на прочтение2 мин
Количество просмотров48K
Уважаемые Хабровчане, решил поделиться одним не очевидным моментом использования LinqToSql, с которым столкнулся некоторое время назад. А именно, про особенности использования каскадных Linq запросов:

Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.

Что имеем (упрощенный вариант модели):


class User {
  public long Id { get; set; }
  public string Name { get; set; }
  public IEnumerable<Parameter> Parameters { get; set; }
}

class Parameter {
  public long UserId { get; set; }
  public string Name { get; set; }
  public string Value { get; set; }
}

Для получения данных написан класс UserRepository:

class UserRepository: MyProjectDataContext {
  public IEnumerable GetUsers() {
    return this.Users.ToModelUsers();
  }
}

static class RepositoryHelper {
  public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
    return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
  }

  public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
    return parameters.Select(u => new Model.Parameter {… });
  }
}

пишем
var users = userRepository.GetUsers().ToList();

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

Большие потоки трафика и управление прерываниями в Windows

Время на прочтение3 мин
Количество просмотров23K
Мне очень понравился топик про распределение нагрузки от прерываний сетевого адаптера по процессорам, поэтому я решил описать как это делается в Windows.

Disclaimer: судя по некоторым комментариям в предыдущих постах, мне стоит повторить то, с чего я начал первый пост: я не даю (и не могу давать) общеприменимых рецептов. Особенно это касается производительности, где мельчайшая неучтенная деталь может катастрофически повлиять на результат. Вернее рекомендацию то я даю: ТЕСТИРОВАНИЕ И АНАЛИЗ. Смысл моей писанины в том, чтобы дать людям как можно больше информации для анализа, ведь, чем больше понимаешь в том, как что либо работает, тем легче находить пути устранения боттлнеков.

Итак, масштабируемость пропускной способности сети. Потребуется Windows Server 2003 SP2+. Сетевая карта, поддерживающая Receive Side Scaling (можно с достаточной долей уверенности сказать, что подойдет любая серверная сетевая карта, выпущенная в последние 5 лет или любая вообще 1Gb+ NIC, хотя частенько можно увидеть RSS и на 100Mb). Устанавливаем Windows Server и драйвера на карту…

Настройка...

WPF — использование навигации по страницам, добавление контролов в NavigationWindow

Время на прочтение6 мин
Количество просмотров25K
В WPF существует возможность создавать приложения с возможность навигации, то есть с использованием Navigation объектов, таких как Page, NavigationService и NavigationWindow. Большинство примеров на MSDN отображает, как использовать такие объекты в XBAP приложениях, но никто не запрещает нам и создавать клиентские приложения с использованием навигации по страницам.
Итак, постараемся создать такое приложение. Создаем новый WPF Application проект, оттуда удаляем созданное Window1.xaml, добавляем две страницы FirstPage.xaml и SecondPage.xaml, а так же прописываем в App.xaml файл страницу, с которой наше приложение будет стартовать:
StartupUri="FirstPage.xaml" После запуска мы должны увидеть окно нашего приложения, содержащее навигационную панель с кнопками перехода вперед и назад. Дальше, нам необходимо создать ссылки, которые помогали бы переходить с одной страницы на другую. Это можно сделать разными способами.
Читать дальше →

Простой способ добавить поддержку файлов лицензий в Ваше приложение .Net

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

Съешь еще этого вкусного сочного CPU (решение проблемы с загрузкой процессора)

Время на прочтение1 мин
Количество просмотров1.4K
Во время перекомпиляции или рестарта ASP.NET-приложения я регулярно наблюдал картину, когда процесс firefox использовал процессор не меньше, а то и больше, чем aspnet_wp. С какой, спрашивается, радости он это делает, если он просто ждет ответа от сервера? На что тратится ресурс процессора?

Ответ на этот вопрос был заметен, оказывается, невооруженным взглядом, но он настолько дурацкий, что подумать его было сложно. Процессор кушает… анимация (APNG) крутящегося индикатора загрузки! Достаточно заменить его статическим png (или анимированным gif), чтобы проблема ушла.

Злополучный файл называется loading_16.png. Я нашел его здесь: Mozilla Firefox\chrome\classic.jar\skin\classic\global\icons\, — и заменил на статическую картинку. Также он лежит в skin\classic\aero\global\icons\loading_16.png, но это, видимо, для Висты, а у меня XP. Там я его оставил.

Ура, теперь не надо обдумывать переход на другой браузер! :) Надеюсь, в 3.5 это все-таки исправят, как-то неохота повторять операцию после апдейта.

Другой вариант решения — скопировать вот это в userChrome.css (не пробовал, это информация с баг-трекера Мозиллы).

Ссылки с подробностями:
https://bugzilla.mozilla.org/show_bug.cgi?id=437829
forum.mozilla-russia.org/viewtopic.php?pid=315838#p315838

jQuery Tools v1.0.1

Время на прочтение1 мин
Количество просмотров3.9K
jQuery Tools Logo
jQuery Tools v1.0.1 — это инструмент/библиотека представляет собой файл весом в 5,8 кб включающий в себя наиболее важные компоненты для вебдванольных сайтов, а именно: табы, всплывающие подсказки, плавные переходы, прокрутки, всплывающие окна и т.д.

Не буду тянуть резину, лучше, как говориться, один раз увидеть, чем сто раз услышать!
Переходим по ссылке и смотрим более 50 (!) демок:

Несколько понравившихся мне демонстраций. Очень рекомендую!
Маскируем фоновое изображение;
AJAX-табы с поддержкой истории переходов;
Неколько всплывающих окошек на одной странице.

Microsoft .NET Architecture Day: Разработка пользовательского интерфейса

Время на прочтение1 мин
Количество просмотров5.3K
2 июня 2009 года группа Microsoft по работе c компаниями-разработчиками провела семинар для архитекторов и старших разработчиков: .NET Architecture Day «Разработка пользовательского интерфейса — современные подходы».

Я (Дмитрий Сатин) и Андрей Сикорский провели на семинаре 3-часовую лекцию, посвященную стандарту «Human-centered design for interactive systems» (ISO 9241-210).



Получить презентацию, использованную на лекции, можно по запросу на адрес hcd@usabilitylab.net

Фотографии

О бедном Dispose замолвите слово

Время на прочтение3 мин
Количество просмотров3.5K
Немного про освобождение ресурсов в .Net.

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

Что делать, когда хочется освободить unmanaged ресурсы в .Net? Можно поместить код освобождения ресурсов в секцию finally и это будет самый простой способ. Не очень изящный, но зато гарантированно сработает и без всяких подводных камней:
DBConnection conn = new DBConnection();
try
{
 conn.Open();
 //...
}
finally
{
 conn.Close();
}


* This source code was highlighted with Source Code Highlighter.

Усложним задачу. Мы написали библиотечный класс, который работает с unmanaged ресурсами. По закону подлости (или больших чисел — как вам удобнее), пользоваться им, кроме гуру, будут еще и говнокодеры. Которые спокойно забудут вызвать метод для освобождения unmanaged ресурсов. А потом будут плеваться на криво написанную ВАМИ библиотеку.

А значит хочется написать свой класс таким образом, чтобы метод, освобождающий ресурсы (уже не важно — managed они или unmanaged) был вызван сборщиком мусора автоматически в том случае, если пользователь забыл вызвать его сам.

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

Всплывающие модальные окна на jQuery в ASP.NET

Время на прочтение6 мин
Количество просмотров13K
В данной статье я расскажу о своём опыте реализации всплывающего модального окна с некой формой и submit-кнопкой на ASP.NET + jQuery и с теми ошибками, с которыми я столкнулся.

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

Использование SQLite в .NET приложениях

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


В некоторых проектах достаточно часто возникает необходимость в хранении данных, объем которых уже нельзя назвать маленьким, но в тоже время использовать какую-либо СУБД слишком накладно из-за сложности развертывания приложения. И тут на помощь приходит такая прекрасная вещь как SQLite – компактная встраиваемая база данных.

Для тех, кто пишет с использованием платформы .NET приятным моментом станет наличие
Читать далее...

Видеоподкастерам на заметку: создавайте FLV самостоятельно

Время на прочтение1 мин
Количество просмотров927
Я давно заметил (впрочем, вон там есть и свежий пример того), что некоторые видеоподкастеры предпочитают не заливать своё видео на некоторые популярные видеохостинги (такие, как YouTube или Google Video), заранее зная, что эти видеохостинги если и принимают видеозаписи любого формата, то у себя преобразуют их (со значительным сжатием) в формат FLV, после чего мелкие детали подкаста расплываются во Flash-видеопроигрывателе.

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

При помощи программы Any Video Converter Free Version (или других аналогичных простых бесплатных средств) можно заранее изготовить FLV-видеоролик необходимой длины и качества, чтобы затем закачать его на RuTube.

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

Кросс-платформенная разработка — Windows Mobile и Windows (.NET Compact Framework, C#)

Время на прочтение8 мин
Количество просмотров3.3K
Не так много разработчиков осознают, что разрабатывая приложения для платформы Windows Mobile с использованием Compact Framework, у них существуют шансы собрать это же приложение под десктоп версию Windows! Я и сам об этом долгое время только задумывался, предполагая, что подобная возможность есть, но не рассматривал её как нечто, хоть сколько-нибудь реальное.

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

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

В Петербурге разрабатывают туристический ВКонтакте

Время на прочтение2 мин
Количество просмотров609
Компания PDG запускает первую социальную сеть для путешественников TourOut.ru. Проект пока находится в альфа версии – полный функционал будет готов только к середине апреля 2009 года. Общие инвестиции в проект составят 2,5 млн. рублей.

Проект предназначен для активно путешествующих и интересующихся туризмом людей.
Сейчас на рынке Рунета нет полноценных социальных сетей по туризму. Настоящий проект имеет все шансы стать первой социальной сетью для путешественников.

«К началу лета посещаемость портала планируется вывести на отметку в 5-6 тыс. человек в сутки, — комментирует руководитель проекта Андрей Добрый, — к началу августа же мы рассчитываем на посещаемость в 10 тыс. человек».
Стандартный функционал социальной сети будет реализован на высоком уровне. Публикация отзывов, фотографий, рассказов, общение с друзьями, поиск информации о планируемом месте отдыха — все это будет в распоряжении путешественника. Также турист сможем вести свою собственную карту путешествий. По функционалу проект будет несколько походить на «Вконтакте», однако пользователей ждет несколько сюрпризов.
Инновацией проекта станет сотрудничество с туристическими компаниями или отелями. Пользователь сможет не только общаться с другими путешественниками и планировать поездки, но и подобрать путевку, забронировать отель или купить билет.
Читать дальше →

Закрепляем jQuery — 25 отличных советов

Время на прочтение19 мин
Количество просмотров168K
Перевод отличной статейки. Думаю, будет полезна как новичкам, которые только приступили к использованию jQuery, так и тем, кто уже какое-то время с ним работает. А кого-то, возможно, заставит глянуть эту чудесную библиотечку. Многие советы имеют отношение не только к jQuery, но и к JavaScript в целом. Лично для меня была весьма и весьма познавательной, посему и захотелось донести это «до масс». Перевод не дословный, но передающий смысл и максимально адаптированный к русскому языку.

Далее все написано от имени автора оригинальной статьи.

Введение


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

Я не эксперт в jQuery. И даже не претендую, поэтому, если встретите ошибки, смело поправляйте меня и вносите предложения по улучшению (поправлять и присылать поправки нужно автору статьи, а не перевода — зам. пер.).

Я называю себя «среднестатистическим» пользователем jQuery и я думаю, что всем остальным будет интересно почитать и что-нибудь почерпнуть из «фишек», «трюков» и техник, которые я освоил за последний год. Статья получилась куда длиннее, чем я предполагал изначально, так что в самом начале я привел «содержание» для более удобной навигации и возможности при желании пропустить не интересующие моменты.

Содержание


  1. Загружайте фреймворк с Google Code
  2. Используйте «шпаргалку» (cheat sheet)
  3. Соединяйте все ваши скрипты и уменьшайте размер файла
  4. Используйте возможности Firebug для ведения логов
  5. Минимизируйте операции выборки в пользу кэширования
  6. Сводите манипуляции с DOM-деревом к минимуму
  7. Оборачивайте все в единый элемент, когда речь идет о любой вставке в DOM
  8. Используйте «id» вместо классов, где это возможно
  9. Задайте контекст своим селекторам
  10. Используйте последовательности вызовов методов с умом
  11. Научитесь правильно использовать анимацию
  12. Научитесь назначать и делегировать события
  13. Используйте классы для сохранения состояния
  14. Еще лучше — используйте встроенный в jQuery метод data() для сохранения состояния
  15. Пишите собственные селекторы
  16. Подготавливайте HTML и модифицируйте его, когда страница загружена
  17. Используйте «отложенную загрузку» (lazy loading) для определенного контента для выигрыша в общей скорости и преимуществ для SEO
  18. Используйте служебные функции jQuery
  19. Используйте «noconflict» для переименования глобального объекта «jquery», когда используете его с другими фреймворками
  20. Как узнать что картинки загружены?
  21. Всегда используйте последнюю версию
  22. Как проверить, что элемент существует?
  23. Добавляйте класс «JS» в элемент «html»
  24. Возвращайте «false» для отмены поведения по-умолчанию
  25. Короткая запись для события готовности документа


Rock'n'Roll!

LINQ to SQL: паттерн Repository

Время на прочтение10 мин
Количество просмотров55K
Бар LINQВ этой статье будет рассмотрен один из вариантов реализации паттерна репозиторий на базе LINQ to SQL.

Сегодня LINQ to SQL – это одна из технологий Microsoft, предназначенная для решения проблемы объектно-реляционного отображения (object-relational mapping). Альтернативная технология Entity Framework является более мощным инструментом, однако у LINQ to SQL есть свои преимущества – относительная простота и низкоуровневость.

Данная статья — это попытка продемонстрировать сильные стороны LINQ to SQL. Паттерн репозиторий отлично ложится на парадигму LINQ to SQL.
Читать дальше →

SharePoint – отличная платформа для веб-сайтов. Разве нет?

Время на прочтение13 мин
Количество просмотров34K
В России интернет сайтов на SharePoint пока немного (за рубежом их значительно больше), между тем эта платформа, широко используемая в интранет, выглядит очень привлекательной и в интернет/экстранет сценариях для заказчиков и для веб-разработчиков. Многие вообще не знают, что на SharePoint можно делать веб-сайты. А между тем, функционал платформы позволяет очень быстро создавать эффективные с точки зрения бизнеса веб-сайты, притом, что базовые Windows Sharepoint доступны бесплатно.

Давайте разберем довольно типовой сценарий и вы скажете — стоит ли использовать Sharepoint для веб, а если не стоит, то прошу прокомментировать — почему? Здесь еще дело в том, что в рамках семинаров TechDays я выступаю с демонстрацией создания такого сценария и вы можете скачать и презентацию и пошаговую инструкцию как ее сделать – можете попробовать и вы на своем компьютере. По этой причине, мне тем более интересны комментарии и отзывы.

Ситуация


Есть небольшая компания, пусть будет “Рога и копыта”, которой нужно сделать сайт для работы с поставщиками и партнерами.

short-horns-and-hooves
Сценарий, который требуется отработать:
Читать дальше →

Лямбды

Время на прочтение2 мин
Количество просмотров3.2K
Некоторое время назад я узнал о лямбдах, но не совсем понимал принципов построения выражений с лямбдой. Но сегодня наткнулся на пост Charlie Calvert'а и всё для себя прояснил.
я тоже хочу прояснить для себя лямбды

.NET Interop на примере работы с сокетами

Время на прочтение8 мин
Количество просмотров9.8K
Хватит мне уже гнать про теорию, вы мне практику давайте, практику!


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

Споры насчёт того, какой же подход лучше, утихают редко. Сейчас я покажу, как можно скрестить ежа с ужом. У нас есть .NET, которым можно быстро делать и есть Native, который может быстро делать.

В образовательных целях мы будем скрещивать эти два направления. У статьи есть ещё одна цель. В её основе лежит написанная мною и Arwyl'ом программа под названием DuSter. Эта программа представляет собой сервер-пустышку, который позволяет тестировать сетевые программы. Сервер очень прост в использовании, достаточно гибко настраивается, поддерживает файлы описания протоколов, которые позволяют более-менее автоматизировать тестирования работы любых протоколов. Я занимался разработкой сетевого уровня, мой друг — бизнес-логикой и парсингом протоколов. Получилось что-то неимоверно хорошо вылизанное и приятное. Мы гордимся своей программой, и хотим предоставить её сорцы миру, для некоммерческого использования.
И так, приступаем

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность