Как стать автором
Обновить

Компания Дневник.ру временно не ведёт блог на Хабре

Сначала показывать

Прочесть большую статью — сложно… Тестировать сложный продукт – легко

Время на прочтение10 мин
Количество просмотров31K
В современной IT индустрии многие до сих пор удивляются: «зачем вообще нужен отдельный тестовый отдел?».
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии3

Развиваем фронтенд Дневник.ру. Часть первая. Сборка и проверка JavaScript кода

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

Вступление


За время существования Дневник.ру (а это более 4-х лет) скопился огромный объем JavaScript кода: часть находилась в отдельном проекте в виде подключаемых файлов, часть определялась прямо на разметке контролов, а часть собиралась прямо в code-behind при помощи StringBuilder. К этому прибавлялись:
  • растущее количество HTTP запросов для получения статичного контента – так, например, на всех страницах только в теге <head> загружалось 11 JavaScript файлов;
  • глобальные переменные, которые иногда перекрывали друг друга;

Решив, что с этим пора что-то делать, мы поставили себе первоочередную задачу: вынести все подключаемые по отдельности файлы из тега <head> в один минифицированный пакет. При этом код делился на сторонний и «наш», который планировалось проверять каким-то синтаксическим анализатором.

В этой статье мы расскажем вам о том, как решили эту задачу.
Читать дальше →
Всего голосов 28: ↑22 и ↓6+16
Комментарии19

Рефакторинг с бубном, или как мы Халка усмиряли

Время на прочтение6 мин
Количество просмотров12K
Думаю, все согласятся, что большинство стартапов изначально сделаны на коленке. Только потом, в случае удачного выстреливания, при грамотном руководстве и понимании стратегических целей владельцы ресурса могут принять решение о рефакторинге существующего продукта. Хорошо, если это произошло раньше превращения Брюса Баннера в Халка. Но что делать, если такой момент был благополучно пропущен, и ресурс представляет собой огромного зеленого плохо-контролируемого гиганта? Как поступить в такой ситуации?
Читать дальше →
Всего голосов 22: ↑12 и ↓10+2
Комментарии16

Как я перестал волноваться и стал отдавать метаданные restful API

Время на прочтение5 мин
Количество просмотров18K
Если вы делаете публичный API, то скорее всего сталкивались с проблемой его документации. Большие компании делают специальные порталы для разработчиков, где можно почитать и обсудить документацию, или скачать библиотеку-клиент для вашего любимого языка программирования.

Поддержка такого ресурса (особенно в условиях, когда API активно развивается) — достаточно трудозатратное дело. При изменениях, приходится синхронизировать документацию с фактической реализацией и это напрягает. Синхронизация состоит из:
  • Проверки, что вся существующая функциональность описана в документации
  • Проверки, что всё описанное работает как заявлено в документации
Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии20

Continuous Integration в Дневник.ру

Время на прочтение8 мин
Количество просмотров17K
В этой статье мы решили немного рассказать о средствах continuous integration (CI), которые используем в компании Дневник.ру, и поделиться небольшими наработками в этом направлении. Большая часть материала может показаться банальной рекламой выбранного движка CI или попыткой вызвать holy war (причем не один), но подобного не было в целях. Статья также не является путеводителем или описанием каких-либо фитч и может быть расценена как статья от кэпа – главное, чтобы она была интересна и вызвала дискуссию.
Читать дальше →
Всего голосов 29: ↑22 и ↓7+15
Комментарии39

SignalR в помощь, или как оживить web

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

Введение


Во многих web проектах присутствуют элементы, значение которых необходимо часто менять. Это могут быть счётчики, индикаторы, уведомления и подобные элементы. Показывать ли актуальные значения после обновления страницы или же можно реализовать автообновление всех этих данных? Для нас ответ очевиден: если есть возможность динамически менять элементы, то для обновления страниц не остается места.
Читать дальше →
Всего голосов 44: ↑33 и ↓11+22
Комментарии26

ASP.NET MVC 4 Mobile Features устарели быстрее чем появились

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

Что такое Mobile Features в ASP.NET MVC 4


ASP.NET MVC 4 вышел с очень ожидаемой и долгожданной новой возможностью — то, что по английски называют Mobile Features — поддержкой мобильных устройств. По большому счету, название сразу удивило, так как немного расходится с техническим описанием нововведения. Но промоушен — есть промоушен. Все упоминания про шаблоны страниц (layout) с поддержкой HTML 5, указание viewport, CSS media — все это к MVC фреймворку непосредственно отношения не имеет.

К новой возможности самого фреймворка можно отнести только два пункта:
  • создание View и шаблонов специфичных для мобильных браузеров
  • возможность на лету изменять то, какое View будет рендерится пользователю — а именно переключаться в рантайме между различными View

И здесь сразу стоит заметить, что слово «мобильный» упоминается исключительно в рекламных целях. MVC 4 позволяет создавать несколько View для каждой из требуемых страниц и определять для какого браузера каждая из них должна показываться. То есть, возможности ни коем образом не ограничиваются именно мобильными браузерами.

Все гениальное просто — «hook» во ViewEngine


Реализация данной возможности очень проста. Это просто «hook» во ViewEngine.

Вы делаете разные страницы (Views) для разных устройств или браузеров. Именуете файлы добавляя ключевое слово:
  • Catalog.cshtml
  • Catalog.iPhone.cshtml

Задаете критерий по которому будет выбираться нужная View — пользуясь DisplayModeProvider задаете нужные DefaultDisplayMode с нужным именем.

DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
         ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

В рантайме, когда отработает метод контроллера, подготовленный ViewResult передается во View Engine, проверяются условия DisplayModeProvider-a, он изменяет имя файла View, которое нужно загрузить.

Можем ли мы этим реально пользоваться?

Читать дальше →
Всего голосов 17: ↑11 и ↓6+5
Комментарии18

Несколько дней из жизни школы с Дневник.ру

Время на прочтение6 мин
Количество просмотров38K
Мы решили, что лучшим способом рассказать о Дневник.ру будет не просто описать набор функций (о них можно прочитать у нас на сайте), а показать на примере того, как используется система в одной из школ – назовем ее «Гимназия №0».

Все события и персонажи вымышлены, любые совпадения случайны.

В Гимназии №0, в 6-ом классе за одной партой сидят двое одноклассников и друзей:



Читать дальше →
Всего голосов 16: ↑9 и ↓7+2
Комментарии52

Дневник.ру теперь и на Хабрахабр

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

Добрый день, Хабрапользователи!




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

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

С помощью нашего блога мы постараемся внести свой вклад в копилку знаний Хабрахабра и сможем ответить на многие вопросы.
Читать дальше →
Всего голосов 23: ↑14 и ↓9+5
Комментарии9