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

Цель PhotoSlider'а

Я читаю несколько фото-блогов, в которых иногда проскакивают «фото паки/сессии/репортажи». Плюс знакомые несут свои фото гигабайтами. Как только фотографий набирается довольно много (тысяч по 10-20) я их просматриваю оставляя себе на wallpaper'ы избранный 0,001% из них.
Фотоаппараты у всех всё лучше, фотографии весят всё больше, что не может сказаться на скорости их загрузки. Встала проблема с тем, как это всё эффективно разгребать. Почти все фотографии после разового просмотра удаляются, небольшое количество избранных перемещаются в папочку для wallpaper'ов.
Изначально пользовался либо Picasa, либо FSViewer. Но оба по некоторым причинам не устраивали.

  • Picasa не хочет показывать фото на весь экран, нельзя удалять нажатием одной кнопки (для каждой фотографии спрашивает подтверждение), переключение на следующую фото довольно медленное (в случае просмотра ~24 MP фото на ноуте весьма неприятно);
  • FSViewer тоже особой скоростью не отличался, с удалением получше, но всё равно медленно. К тому же он до сих пор не понимает unicode в именах файлов (давно уже просил разработчиков добавить поддержку).

Помучавшись немного начал писать свою утилиту, которая и стала PhotoSlider'ом.
Под катом подробности реализации и управления.
Читать полностью »

Есть много споров о плюсах и минусах ORM, попробуем сделать акцент на плюсах при его использовании в ERP приложениях.

Я 5 лет разрабатываю платформу для ERP, разработал три версии платформы. Всё начиналось с EAV, после была нормальная модель, хранимые процедуры, view-хи, и сейчас эволюционировало до использования ORM. Позвольте поделиться опытом, почему ORM — хорошо.

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

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

Многие разработчики языков программирования, библиотек, да и классов простых приложений стремятся к интуитивно понятному интерфейсу создаваемых классов. Скотт Мейерс еще полтора десятка лет назад сказал о том, чтобы мы стремились разрабатывать классы (библиотеки, языки), которые легко использовать правильно, и сложно использовать неправильно.

Если говорить о языке C#, то его разработчики подходят к вопросам «юзабилити» весьма основательно; они спокойно могут пожертвовать «объектной чистотой» в угоду здравому смыслу и удобству использования. Одним из немногих исключений из этого правила является замыкание на переменной цикла, той самой фичи, которая ведет себя не так, как считают многие разработчики. При этом количество недовольства и недопонимания настолько много, что в 5-й версии языка C# это поведение решили изменить.
Читать полностью »

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

Для кого эта статья: для людей, которые только начинают своё знакомство с технологиями использующими XAML. Чтобы не усложнять статью, я не касаюсь многих деталей вроде Markup Extensions, управления ресурсами и т.п. Прочитав данную статью, я надеюсь, вы сможете понять что происходит под капотом XAML парсера и более чётко представлять как из вашего текстового документа получается граф объектов в памяти, с различными свойствами.

XAML — это язык разметки, который появился вместе с первой версией WPF от Microsoft. Сейчас он также используется в Silverlight и Windows Phone 7 (сути тот же Silverlight). Таким образом, сейчас довольно много людей активно используют XAML. Однако для эффективной работы полезно будет понять концепции, которые стоят за я языком, чтобы отдельные конструкции не казались странными.
Читать полностью »

Сессии в ASP.NET или как создать собственный провайдер

ASP.NET предлагает множество вариантов для работы с сессиями из коробки:

  • Хранение информации о сессиях в памяти сервера, внутри процесса ASP.NET
  • Хранение информации о сессиях на сервере состояний
  • Хранение информации о сессиях в базе данных SQL Server в заранее предопределенной схеме

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

В качестве хранилища сессий будет выступать SQL Server. Работать с базой данных мы будем через EntityFramework.

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

Microsoft перевел в Open Source еще одну часть стека технологий ASP.NETПару дней назад Microsoft анонсировал что еще один компонент .Net Framework буден доступен для скачивания в исходных текстах. Таким образом, теперь весь ASP.NET стек распространяется в исходных текстах, включая Razor Engine, System.Json, Web API и Web Pages. Он доступен как для скачивания так и для просмотра истории изменения. С этим релизом вся группа проектов будет работать по правилам Open Source, делая возможным включения своего собственного функционала и исправления ошибок любым членом сообщества, при полной поддержке кода со стороны Microsoft.
Читать полностью »

Менеджмент памяти в .Net Framework от Redgate
Недавно с рассылкой от компании Red-Gate (это та компания, которая выпустила всем известные тулы .Net Reflector, SmartAssembly и прочие) получил бесплатную книгу «Under the Hood of .NET Memory Management». Пока что доступна только первая ее часть, но она довольно объемная и раскрывает многие аспекты менеджмента памяти. Самое вкусное обещают во второй части. Приятного скачивания (краткое содержание под катом):

Бонусом в том же архиве идет книга по ANTS Memory Profiler

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

На написание данной статьи-заметки меня сподвигла работа на формой обратной связи, в которой имелась возможность отправки файлов на сервер. Естественным образом захотелось ограничить размер загружаемых файлов со стороны сервера и выдавать пользователю соответствующее сообщение. Хорошая новость заключалась в том, что ASP.NET имеет встроенные средства для такого ограничения. Плохая – нет лёгких путей обработки данной ситуации.

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

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

Пример использования

HotKeysManager manager = new HotKeysManager();
manager.AddHotKey(new HotKeyCombination(() => { MessageBox.Show("Привет!"); }) { Keys.LControlKey, Keys.H });

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

manager.AddHotKey(new HotKeyCombination(HookManager.CurrentDownedKeys.ToArray(), () => { MessageBox.Show("Привет!"); }));

Теперь при нажатии комбинации LeftCtrl+H (или H+LeftControl), мы увидим приветственное сообщение.
Читать полностью »


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