Я работаю с командой над несколькими ASP.NET MVC проектами с октября 2009. Хотя прошло не так уж и много времени, и я еще не эксперт, я хочу описать ряд правил, которые мы выработали для того, чтобы сделать код немножко лучше. ASP.NET MVC, как и любая новая технология, может быть использована не удачно, а имея неудачные примеры, мы всегда пытаемся сделать код лучше, выбирая оптимальные варианты реализации задач.
Артем @woworks
Пользователь
+173
+2
Внутренний мир Razor. Часть 1–Рекурсивный пинг-понг
3 min
1.8KTranslation
Это первая статья о новом ASP.NET парсере – Razor. Над которым мы работали достаточно долго, и я хотел бы рассказать читателям, как же он работает.
Razor-парсер сильно отличается от существующего ASPX-парсера. Фактически ASPX-парсер, почти полностью, построен на регулярных выражениях, потому что синтаксис достаточно простой для разбора. Razor-парсер же разделен на три компонента:
Когда я говорю “базовое представление” я подразумеваю именно основы, мы не говорим о полностью самостоятельном C# и HTML парсере. У себя в команде мы шутим, называя их “Опознователь разметки” и “Осмыслитель кода” :)
Razor-парсер сильно отличается от существующего ASPX-парсера. Фактически ASPX-парсер, почти полностью, построен на регулярных выражениях, потому что синтаксис достаточно простой для разбора. Razor-парсер же разделен на три компонента:
- Парсер разметки, который имеет базовое представление о HTML-синтаксисе.
- Парсер кода, который имеет базовое представление C# или VB.
- И главный “дирижер”, которые знает, как соединить два парсера вместе.
Когда я говорю “базовое представление” я подразумеваю именно основы, мы не говорим о полностью самостоятельном C# и HTML парсере. У себя в команде мы шутим, называя их “Опознователь разметки” и “Осмыслитель кода” :)
+18
C#: Этюды от Эрика Липперта
1 min
1.5KВозможно, вам нравятся головоломки и C#, и, может быть, вы даже решали некоторые из них в моем блоге здесь, на Хабре.
Теперь у вас есть возможность попробовать свои силы в решении головоломок более высокого уровня.
Если вы не слышали о парне по имени Эрик Липперт, то очень советую почитать его блог. Эрик — один из разработчиков компилятора C# и часто пишет о разных необычностях и странностях в работе компилятора и среды исполнения .NET, а главное, объясняет причины такого поведения. Он пишет настолько интересно и увлекательно, что у его блога даже есть перевод на русский.
В своей записи от 8 июля Эрик дает ссылку на видео, в котором он и Neal Gafter (который также является одним из разработчиков платформы .NET) рассматривают несколько головоломок на языке C#. Пока я успел посмотреть только три из них, но мне уже нравится их уровень. (Внимание: за каждой головоломкой идет ответ, если хотите подумать самостоятельно, не забывайте нажимать на паузу)
Рекомендую всем, кто хочет расширить свой познания в C#/.NET.
UPD: поскольку с отображением видео есть определенные проблемы, можно скачать видео напрямую. Для этого идем сюда, вводим в строке поиска puzzlers и выбираем справа Download
UPD2: проблемы с воспроизведением видео на исходном сайте скорее правило, чем исключение, поэтому я залил файл на файлообменник: depositfiles.com/files/7ej8pu7zt
Теперь у вас есть возможность попробовать свои силы в решении головоломок более высокого уровня.
Если вы не слышали о парне по имени Эрик Липперт, то очень советую почитать его блог. Эрик — один из разработчиков компилятора C# и часто пишет о разных необычностях и странностях в работе компилятора и среды исполнения .NET, а главное, объясняет причины такого поведения. Он пишет настолько интересно и увлекательно, что у его блога даже есть перевод на русский.
В своей записи от 8 июля Эрик дает ссылку на видео, в котором он и Neal Gafter (который также является одним из разработчиков платформы .NET) рассматривают несколько головоломок на языке C#. Пока я успел посмотреть только три из них, но мне уже нравится их уровень. (Внимание: за каждой головоломкой идет ответ, если хотите подумать самостоятельно, не забывайте нажимать на паузу)
Рекомендую всем, кто хочет расширить свой познания в C#/.NET.
UPD: поскольку с отображением видео есть определенные проблемы, можно скачать видео напрямую. Для этого идем сюда, вводим в строке поиска puzzlers и выбираем справа Download
UPD2: проблемы с воспроизведением видео на исходном сайте скорее правило, чем исключение, поэтому я залил файл на файлообменник: depositfiles.com/files/7ej8pu7zt
+17
+4
Улучшаем админку
6 min
79KОдно из слабых мест джанго-админки — главная страница. Идея авто-группировки моделей по приложениям и вывод столбиком в одну колонку работает только на начальных этапах, дальше это становится просто неудобно — куча лишней информации и довольно сложные пути для того, чтобы добавить полезную. Ну, например, чтобы названия приложений писались русскими буквами — полностью перекрывать шаблон.
И тут на помощь приходит django-admin-tools. С этим приложением минут за 20 можно получить «приборную панель» с произвольной группировкой приложений/моделей, вкладками, любым числом колонок, различными блоками, которые каждый пользователь сможет расставить, как ему удобнее, скрывать и сворачивать по желанию, закладками, настраиваемым меню и удобным способом добавления во все это хозяйство всего, чего только можно придумать.
Вот так, например, сейчас выглядит админка к сайту НадоВместе:
(это только часть, вот скриншот целиком)
Разберемся поподробнее.
И тут на помощь приходит django-admin-tools. С этим приложением минут за 20 можно получить «приборную панель» с произвольной группировкой приложений/моделей, вкладками, любым числом колонок, различными блоками, которые каждый пользователь сможет расставить, как ему удобнее, скрывать и сворачивать по желанию, закладками, настраиваемым меню и удобным способом добавления во все это хозяйство всего, чего только можно придумать.
Вот так, например, сейчас выглядит админка к сайту НадоВместе:
(это только часть, вот скриншот целиком)
Разберемся поподробнее.
+95
Знакомимся с DynamicObject
7 min
14KКаждый раз, когда у вас появляется новая интересная фича в языке, всегда появляются люди которые начинают выжимать из фичи максимум.
DynamicObject
– это как раз такая фича, которая кажется простой и понятной, но в шаловливых ручках становится более опасной затеей.+46
ASP.NET, HTTP 404 и SEO
2 min
10KНедавно, мой SEO оптимизатор сказал мне, что недоволен тем как ASP.NET возвращает HTTP ответ в случае ситуации 404, то есть страница не найдена. Я начал ковыряться и обнаружил пару интересных моментов, которые возможно кому-то пригодятся.
+16
4й подкаст Петербургской группы ALT.NET
1 min
320Draft
Всё, что вы хотели узнать о ASP.NET
Участники: dnesteruk & butajiЧто нового в ASP.NET MVC2.
- Асинхронные контроллеры
- Зоны (areas)
- Валидация через data annotation
- Строго-типизированные хелперы
- Хелпер-темплейты, параметры по-умолчанию
+3
Изменения в валидации финальной версии ASP.NET MVC 2
5 min
1.1Kи несколько вопросов безопасности, на которые стоит обратить внимание
Брэд Уилсон (Brad Wilson), один из разработчиков в группе ASP.NET MVC, сообщил в своем блоге о грядущих концептуальных изменениях, которые будут произведены в финальной версии ASP.NET MVC 2.
Речь идет о смене одной концепции валидации, отталкивающейся от полей формы, на другую – концепцию, в основе которой лежит модель данных. В этой статье я хотел бы рассказать, почему были внесены эти изменения и что они означают для разработчика.
Брэд Уилсон (Brad Wilson), один из разработчиков в группе ASP.NET MVC, сообщил в своем блоге о грядущих концептуальных изменениях, которые будут произведены в финальной версии ASP.NET MVC 2.
Речь идет о смене одной концепции валидации, отталкивающейся от полей формы, на другую – концепцию, в основе которой лежит модель данных. В этой статье я хотел бы рассказать, почему были внесены эти изменения и что они означают для разработчика.
+8
Работа с формами в Django
Medium
4 min
39KTutorial
Translation
Формы являются одной из самых вкусных вещей в Django (после моделей, админки, url-маршрутизации и т.д.). Перед вами небольшое, но ёмкое руководство по их использованию, представляющее собой разбор 8 часто встречающихся ситуаций при программировании форм.
+34
Простой консольный прогрессбар на питоне
3 min
31KВ связи с некоторыми вычислениями на питоне (например, подсчётом коэффициента симметрии карты реликтового излучения) мне захотелось сделать процесс более наглядным. Ну хотя бы добавить прогресс-бар. Скучно, знаете ли, сидеть перед пустой консолью и втыкать на запущенную команду. То ли работает, то ли висит… с ходу не понять. А делать какой-нибудь лог исполнения не хочется, так как потом в полученом хаосе глаз теряется.
+59
+15
ASP.NET 4.0: руководство для разработчиков
3 min
4.4KДобрый день!
Общими усилиями DioNNiS, ohoncharuk и немножко меня была создана брошюра «ASP.NET 4.0: руководство для разработчиков». Это руководство на 64 страницах содержит краткое описание нововведений новой версии популярной технологии ASP.NET.
Общими усилиями DioNNiS, ohoncharuk и немножко меня была создана брошюра «ASP.NET 4.0: руководство для разработчиков». Это руководство на 64 страницах содержит краткое описание нововведений новой версии популярной технологии ASP.NET.
+36
DTemplate — шаблон django проекта для ускорения разработки
3 min
5.1KДоброго времени суток, уважаемый All!
Хочу представить на суд хабрасообщества проект, над которым я работал последнее время. Очень хочу получить конструктивную критику и предложения по его улучшению.
DTemplate — проект с открытым исходным кодом, который дает возможность пользователям django иметь многочисленные инструменты упрощающие работу при создании нового django проекта без необходимости настраивать их каждый раз.
DTemplate создавался для собственных целей из уже существующих приложений с открытым кодом. Публикуя данный проект я хотел бы выразить огромную благодарность людям, которые предоставили возможность доступа к своим интеллектуальным трудам.
Хочу представить на суд хабрасообщества проект, над которым я работал последнее время. Очень хочу получить конструктивную критику и предложения по его улучшению.
Описание проекта
DTemplate — проект с открытым исходным кодом, который дает возможность пользователям django иметь многочисленные инструменты упрощающие работу при создании нового django проекта без необходимости настраивать их каждый раз.
DTemplate создавался для собственных целей из уже существующих приложений с открытым кодом. Публикуя данный проект я хотел бы выразить огромную благодарность людям, которые предоставили возможность доступа к своим интеллектуальным трудам.
+39
Создание локальной копии документации Django
1 min
1.2KДа-да, это снова я и снова о документации Django :) На этот раз не будет длинных переводов, просто небольшая заметка.
Итак, если вы хотите всегда иметь доступ к документации по любимому средству разработки, этот топик для вас.
+18
Перевод Django Documentation: Models. Part 4 (Last)
10 min
7.2KДоброго времени суток!
Это последняя часть серии моих переводов раздела о моделях из документации Django.
Перевод Django Documentation: Models. Part 1
Перевод Django Documentation: Models. Part 2
Перевод Django Documentation: Models. Part 3
_____Многотабличное наследование
_______Класс Meta и многотабличное наследование
_______Наследование и обратные отношения
_______Создание поля с parent_link
_____Прокси-модели
_______Запросы возвращают объекты модели, к которой адресованы
_______Ограничения для базовых классов
_______Менеджеры прокси-модели
_______Различия между прокси-моделями и unmanaged-моделями
_____Множественное наследование
_____Переопределение имен полей запрещено
+18
Django 1.2 alpha 1 released!
1 min
602Состоялся выход версии фрейворка для постороения веб приложений Django 1.2 alpha.
+28
DjangoCMS2.0 — быстрее, больше, эффективней
5 min
68KDjango — очаровательный в своей простоте и гибкости фреймворк. Однако, для быстрого построения большого числа несложных сайтов требуется поставить разработку сайтов на поток. Разрабатывать систему управления сайтом каждый раз утомляет и грозит потерями времени. Именно поэтому программисты часто обращаются к готовым CMS.
Почти все знают о гигантах конвеерного веб-программирования, основанных на php — Drupal, Joomla!, Wordpress и прочих, но не все знают, что в мире Python существуют не менее мощные и даже гораздо более зрелые инструменты.
Почти все знают о гигантах конвеерного веб-программирования, основанных на php — Drupal, Joomla!, Wordpress и прочих, но не все знают, что в мире Python существуют не менее мощные и даже гораздо более зрелые инструменты.
+69
Information
- Rating
- Does not participate
- Location
- Кишинев, Молдова, Молдова
- Date of birth
- Registered
- Activity