Prettybox JQuery Plugin

Важную роль в интерфейсе сайта ПоискБисера.РФ занимают multiselect'ы выбора тегов. Дефолтный селект выглядит довольно убого, потому я решил сделать свой JQuery-плагин.

Демка и немного документации здесь.

Данный плагин использует JQuery.Tmpl для генерации HTML. Таким образом если хочется кастомизировать HTML, то для этого достаточно указать плагину имя скомпилинного кастомного шаблона.

Плагин использует стили из тем JQuery-UI, что позволяет легко менять внешний вид "коробочек" в соответствии с общим дизайном.

Страница проекта на Google Code.

Реальное использование на ПоискБисера.РФ

Оставить комментарий
* * *

SOLID: "S" - Single responsibility principle

SOLID — это аббревиатура составленная из английских названий пяти основных принципов ООП.

В данной статье я постарался изложить своё видение первого принципа SOLID: Single responsibility principle.

Оставить комментарий
* * *

Пример локализации строк и ресурсов в Windows Phone 7 приложении

Как театр начинается с вешалки, так для меня мобильное приложение начинается с ресурсов: локализованных строк, стилей, кистей. Ресурсы используются в большинстве HelloWorld'ов для Android, однако если посмотреть на примеры WP7-приложений к книгам и на программы с codeplex, вроде Twitt, то там всё пихают в App.xaml и возникает такой ощущение, что никто не хочет писать красивый код и локализованные программы.

Это мой вариант, как можно отделить мух от котлет:

Проект выглядит следующим образом:

А так выглядит приложение с локализованной строкой "Application Name" и применённым стилем:

2 коментариев | Оставить комментарий
* * *

The cellpadding attribute on the table element is obsolete. Use CSS instead.

Правильный ответ:

table
{
    border-collapse:collapse;
    padding:0px;
}
Оставить комментарий
* * *

Javascript: multiline strings

Когда хочется использовать $.tmpl в своём jquery-плагине, то встаёт вопрос где же хранить эти самые шаблоны.

Думаю, что проще всего хранить их в самом js-файле jquery-плагина. Но только раньше, я не знал, что в JS можно задавать строковые переменные в несколько строк и я писал что-то вроде:

var prettyBoxMarkup = '<div id="${parent_id}_prettybox">text</div>\' +
'bbubububu';
// Compile the markup as a named template
$.template("prettyBoxTemplate", prettyBoxMarkup);

Плюсы и одинарные кавычки накапливались и всё выглядело страшно. Однако теперь я узнал решение:

multiline strings

Как видно, символ \ повлиял на символ перевода строки в исходном файле и перевод строки стал частью Javascript-строки.

Кстати, Visual Studio нормально отнеслась к такому хаку. Для проверки ителлисенса добавим пробел после косой черты:

всё плохо

Используя данный хак, в JS можно делать многострочные строки, как в нормальных языках программирования. Как-то так:

результат

Оставить комментарий
* * *

Как пустить через VPN только локальный трафик (запретить интернет через VPN)

Постоянно забываю, как пустить через VPN только локальный трафик исключая интернет-трафик.

На самом деле нужно просто запретить Default gateway в настройках VPN:

VPN только локальный трафик

Тогда будет использован ваш Default gateway, а не тот, который находится в удалённой сети.

Оставить комментарий
* * *

ASP.NET MVC3: Управляем пробелами и переводами строк в Razor

Razor движок — довольно мощное средство. Часто с помощью Razor приходится генерировать текст, чувствительный к пробелами и переводам строк, например JavaScript-код.

Контролировать вывод пробельных символов можно двумя способами:

  1. Формировать строки в C# коде.
  2. Использовать переключение контекста между C# кодом и текстом шаблона.

Формировать строки средствами C# умеют все, а я поделюсь своим опытом применения второго метода.

Оставить комментарий
* * *

Umbraco 5 alpha ctp 1: первый взгляд

Наконец-то это свершилось: создатели Umbraco, наконец-то выпустили alpha-версию Umbraco 5.

Оставить комментарий
* * *

Ubuntu Nautilus: адреc папки в виде текста

Можно настроить Ubuntu, чтобы она всегда показывал путь, как строку:

В последних версиях Ubunut

  • Установить dconf-tools: sudo apt-get install dconf-tools
  • Запустить DConf Editor
  • Выставить галку по пути: org → gnome → nautilus → preferences → always-use-location-entry

В Ubuntu младше 11

  • Нажмите ALT+F2 (это аналог Win+R), и наберите там gconf-editor.
  • Настройки Nautilus находятся по пути: /apps/nautilus/preferences/.
  • Параметр который определяет вид адреса называется: always_use_location_entry, зачекиваем там галочку и наслаждаемся возможностью скопировать путь до папки в буфер обмена.

Думаю, что необходимость писать и читать вот такие посты и есть то, почему Ubuntu проигрывает Win7 в юзабилити.

Оставить комментарий
* * *

Umbraco CMS: полезные советы

Поработав с Umbraco CMS пришёл к тому, что есть некоторые рекомендации, которым мне полезно было следовать.

Учимся работать с Umbraco на моих ошибках.

Оставить комментарий
* * *

Hello world: Entity Framework 4 + MVC3

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

Я решил использовать Entity Framework 4, поскольку с NHibernate 3 я дело имел, а вот что такое EF представлял слабо.

В итоге получился следующий Hello World:

Данный пример иллюстрирует следующее:

  • Использование Entity Framework 4 в ASP.NET MVC3.
  • Использование POCO Entity Generator.
  • Использование самописного Membership Provider'a на базе EF Membership.
  • Использование хранимых процедур с Entity Framework 4 не только для CRUD, но и для выборки данных.
Оставить комментарий
* * *

Введение в Umbraco CMS: основные понятия

При изучении Umbraco CMS мне очень сильно не хватало небольшого введения, где были бы изложены основные её идеи и понятия, после которого можно смотреть видео с Umbraco.com. После достаточно плотной работы с Umbraco появилась эта статья.

Содержание

1 комментарий | Оставить комментарий
* * *

AddSite: утилита для быстрого создания сайтов в IIS

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

Репозиторий на github: https://github.com/musukvl/AddSite

Она выполняет следующие операции:

  1. Создаёт сайт в IIS.
  2. Выставляет у сайта правильный Application pool.
  3. Добавляет host header в файл hosts.
  4. Привязывает host header к сайту.

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

D:\umbraco\starter5>addsite starter10.dev /pool:"ASP.NET v4.0"
Site was created.
Hosts file was recored appended.
Done.
Оставить комментарий
* * *

Umbraco: &mdash; в TinyMCE

Очень удивился тому, что в Umbraco 4.6.1 в TinyMCE3 нельзя ввести HTML-сущность &mdash; при сохранении Umbraco заменяет эту сущность на один символ.

Проблему лечит следующий модуль для Umbraco:

http://our.umbraco.org/projects/developer-tools/nd-replacement-tidynet

Оставить комментарий
* * *

XSLT: плюшки и грабли

Уже более трёх лет я являюсь разработчиком CMS, использующей XSLT в качестве шаблонизатора.

XSLT — это мощная технология, и существует она довольно давно. Её польза для трансформции одного XML документа в другой очевидна. Однако, использование XSLT в качестве шаблонизатора CMS оказалось спорным вопросом: есть и против, и за.

Ниже я изложил своё мнение того, где в XSLT грабли, а где плюшки.

1 комментарий | Оставить комментарий
* * *