• Береги зрение, используй f.lux

      Почти четыре года прошло с момента упоминания на Хабре программы f.lux, настоящего лекарства для тех, у кого устают глаза из-за монитора.



      Программа изменяет цветовой профиль монитора, в зависимости от времени суток. Ночью глаза меньше устают от тёплых цветовых тонов (3400 K), днём — от холодных (6500 K), которые больше соответствуют дневному свету.
      Читать дальше →
    • Очень быстрый и эффективный способ расслабления глаз

        Предисловие


        imageНе знаю, все ли программисты всесторонне любознательные люди, но я всегда пытаюсь получить фундаментальные знания во всех областях, которые могут быть практически полезны. В то время, когда мне в голову пришла эта идея я изучал анатомию и физиологию по журналам «Тело человека. Снаружи и внутри», ну а по работе я занимался стерео-варио фотографиями (для тех кто не знает — были такие советские календарики с ребристой поверхностью, где картинка либо казалась объемной, либо менялась). Так вот, в один из вечеров мне пришла в голову замечательная идея, которую я на протяжении уже 4х лет использую для поддержания своего зрения.
        Обещаю, что эффект почувствуете сразу!
        Читать дальше →
      • Continuous Integration для самых маленьких

        • Tutorial

        Вы все еще публикуете проект вручную? Тогда мы идем к вам


        Под катом гайдлайн по внедрению CI для .NET проектов «с нуля», включающий:
        1. Автоматические ежедневные сборки
        2. Уведомления о проблемах
        3. Интеграцию с баг-трекером и системой контроля версий
        4. Версионирование продукта
        5. Версионирование базы данных
        6. Автоматизированные выкладки и бекапы

        Читать дальше →
      • Необыкновенный способ генерации лабиринтов

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

        Вас ждет много анализа и немного частных производных. Код прилагается.
        Прошу под кат!

        Читать дальше →
      • Автоматизированное тестирование веб-приложения (MS Unit Testing Framework + Selenium WebDriver C#). Часть 2.1: Selenium API wrapper — Browser

        • Tutorial
        Selenium + C#
        Введение

        Снова здравствуйте! Представляю вам вторую часть статьи на тему автоматизированного тестирования веб-приложения на Selenium и C#. И если первая часть была из разряда «капитан очевидность», что вызвало негодование у читателей, то в этой части будет много кода. И так, зачем же писать обертку (wrapper) над Selenium API? На мой взгляд, пользователи могут столкнуться со следующими проблемами:
        • Интерфейс IWebDriver предоставляет довольно скудную функциональность в плане управления браузером. Поэтому все, что нам понадобится, придется писать самим
        • Описание элемента происходит одновременно с его поиском, т.е. на момент определения элемента он должен существовать в браузере. Очень часто решается путем написания getter для каждого элемента. Это накладно и плохо с точки зрения производительности
        • ISearchContext.FindElements принимает только один параметр типа OpenQA.Selenium.By, т.е. мы не можем искать сразу по нескольким свойствам. Обычно элемент ищется по первому критерию, а затем начинается отсеивание по остальным
        • Отсутствие многих, казалось бы, очевидных методов и свойств. Например: Exist, SetText, Select, SetCheck, InnerHtml и т.д. Вместо этого мы вынуждены довольствоваться Click, SendKeys и Text
        • Множество проблем на различных браузерах, например на Firefox и Chrome элемент кликается, а на IE — нет. Приходится писать special cases, «костыли»
        • Производительность. Да, драйвера работают не быстро. Впереди планеты всей как обычно IE — поиск может занимать секунды, иногда и десятки секунд

        Ну что ж, много проблем — много решений. Я не хочу и не смогу изложить все и сразу в этой части. Длинный пост будет неинтересен, да и во время его написания энтузиазм резко падает) Поэтому эта часть имеет номер 2.1, в ней я покажу свой wrapper над браузером.
        Читать дальше →
        • +15
        • 47.3k
        • 3
      • Автоматизация тестирования Web-приложений

        • Tutorial


        Автоматизация тестирования – место встречи двух дисциплин: разработки и тестирования. Наверное поэтому, я отношу эту практику к сложным, но интересным.

        Путем проб и ошибок мы пришли к следующему технологическому стеку:
        1. SpecFlow (опционально): DSL
        2. NUnit: тестовый фреймворк
        3. PageObject + PageElements: UI-абстракиця
        4. Контекст тестирования (информация о целевом окружении, пользователях системы)
        5. Selenium.WebDriver

        Для запуска тестов по расписанию мы используем TFS 2012 и TeamCity.
        В статье я опишу, как мы к этому пришли, типовые ошибки и пути их решения.
        Читать дальше →
      • Компания UDOO запустила кампанию на Kickstarter.com.Убийца Raspberry Pi


          Компания UDOO запустила кампанию на Kickstarter.com по сбору средств на одноименную процессорную плату. При размере сходном с Raspberry Pi плата укомплектова двумя процессорами: четырёхядерным CPU Freescale i.MX6 1GHz на базе ARM Cortex A9 и Atmel ARM SAM3X. Указанная особенность делает UDOO гибридом Raspberry Pi и Arduino, позволяющим с одной стороны выполнять полноценные ОС на базе Linux и Android, а с другой стороны обеспечить совместимость на уровне приложений, аналоговых и цифровых портов ввода/вывода с платой Arduino DUE, что позволяет использовать UDOO в системах автоматизации и управления, рассчитанных на работу с Arduino.
          Читать дальше →
        • ASP.NET MVC Урок C. Многоязычный сайт

          • Tutorial
          Цель урока. Научиться создавать многоязычные сайты. Структура БД. Ресурсы сайта. Определение языка. Переключение между языками. Работа в админке.

          Проблемы многоязычного сайта

          Итак, заказчик просит сделать сайт многоязычным, т.е. чтобы и по-русски, и по-французки, и по-английски. Это может быть как просто многоязычный блог, так и гостиничный сайт, сайт по работе с недвижимостью и многое другое.
          Для начала определим, что же мы будем переводить:
          • Написание дат, сумм в зависимости от выбранной локализации. С этим справляется класс System.Globalization
          • Встроенные ресурсы сайта — выдача ошибки («Поле не может быть пустым», «The field is required») и другие сообщения.
          • Не встроенные ресурсы, как то логотипы, изображения, js-локализация элементов управления. Для переключения между ними необходимо знать текущее значение языка на странице.
          • Пользовательские значения.


          Читать дальше →
          • +45
          • 55.2k
          • 2
        • ASP.NET MVC Урок A. Уведомление и рассылка

          • Tutorial
          Цель урока Разобраться в отправлении писем и подтверждающих смс. MailNotify, использование конфигурационного файла. Рассылка через создание отдельного потока.

          SmtpClient и MailNotify

          При разработке сайта мы рано или поздно сталкиваемся с взаимодействием с электронной почтой, будь то активация пользователя, напоминание или сброс пароль, или создание рассылки.
          Определимся, что нам для этого нужно:
          • Класс, который будет рассылать письма
          • Конфигурация smtp берется из IConfig
          • Ошибки отправки письма протоколируются
          • Наличие параметра, выключающего работу почты, дабы при работе с боевой базой клиентов не разослать какой-то треш.


          Читать дальше →
          • +45
          • 36.7k
          • 3
        • ASP.NET MVC Урок 9. Configuration и загрузка файлов

          • Tutorial
          Цель урока. Научиться использовать файл конфигурации Web.config. Application section, создание своих ConfigSection и IConfig. Научиться загружать файлы, использование file-uploader для загрузки файла, последующая обработка файла.

          В этом уроке мы рассмотрим работу с конфигурационным файлом Web.config. Это xml-файл и в нем хранятся настройки программы.

          Рассмотрим подробнее, из чего состоит этот файл:
          • configSection. Это секция отвечает за то, какие классы будут обрабатывать далее объявленные секции. Состоит из атрибута name — это тег, далее объявленной секции, и type – к какому классу относится.
          • connectionStrings. Это секция отвечает за работу с указанием строк инициализаций соединений с базами данных.
          • appSettings. Секция параметров типа key/value.
          • system.web, system.webServer. Секции параметров для работы веб-приложения.
          • runtime. Секция по настройке в режиме выполнения. Определение зависимостей между dll.
          • Остальные секции. Другие секции с параметрами, объявленными в configSection.


          Читать дальше →
          • +43
          • 46.8k
          • 1
        • ASP.NET MVC Урок 8. View, Razor, страница ошибки

          • Tutorial
          Цель урока. Научиться делать вывод данных в html, использование Razor. Helperы. PageableData. Динамические формы. RedirectToLogin, RedirectToNotFoundPage. Страница ошибки. RssActionResult.

          Основа

          Итак, рассмотрим как устроена часть View.
          В контроллере все action-методы возвращают тип ActionResult. И для вывода результата мы используем:
          return View(modelData);

          Читать дальше →
          • +48
          • 70.2k
          • 1
        • ASP.NET MVC Урок 7. Bootstrap, jQuery, Ajax

          • Tutorial
          Цель урока: Определить правила работы с html, js и css файлами. Bootstrap и дополнительный css. Структура js-файлов. Использование jQuery, основные моменты, изучение селекторов, событий и др. addClass, removeClass, attr, data, динамическое создание dom-объекта, ajax.

          Наконец мы приступаем к более детальному изучению клиентской части, которая уже в меньшей степени связана с asp.net mvc, но всё равно важна для веб-разработки.

          Читать дальше →
          • +37
          • 122k
          • 2
        • ASP.NET MVC Урок 6. Авторизация

          • Tutorial
          Цель урока: Изучить способ авторизации через Cookie, использование стандартных атрибутов доступа к контроллеру и методу контроллера. Использование IPrincipal. Создание собственного модуля (IHttpModule) и собственного фильтра IActionFilter.

          Небольшое отступление: На самом деле в asp.net mvc все учебники рекомендуют пользоваться уже придуманной системой авторизации, которая называется AspNetMembershipProvider, она была описана в статье http://habrahabr.ru/post/142711/ (сейчас доступ уже закрыт), но обьяснено это с точки зрения «нажимай и не понимай, что там внутри». При первом знакомстве с asp.net mvc меня это смутило. Далее, в этой статье http://habrahabr.ru/post/143024/ — сказано, что пользоваться этим провайдером – нельзя. И я согласен с этим. Здесь же, мы достаточно глубоко изучаем всякие хитрые asp.net mvc стандартные приемы, так что это один из основных уроков.

          Читать дальше →
          • +42
          • 145k
          • 9
        • ASP.NET MVC Урок 5. Создание записи в БД

          • Tutorial
          Цель урока. Отследить весь путь создания записи в БД и вывода его. Вывод ошибок. Валидация. Мапперы. Написание атрибута валидации. Капча. Создание данных в БД.

          Введение

          Наконец, переходим к одному из самых важных уроков, в котором будет рассказано про создание записей. Любое действие на сайте, от сложных, когда мы заполняем регистрационную анкету, до простых, когда ставим лайк, – происходит следующим образом:
          • Post\get запрос на сайт
          • Авторизация и аутентификация
          • Проверка введенных данных (валидация) на правильность
          • Если проверка введенных данных показала, что введенные данные неверны, то в заполняемую форму выводится предупреждение.
          • Если проверка введенных данных показала, что эти данные верны, то они сохраняются в БД и выводится страница с подтверждением.

          Поехали...
          • +38
          • 77.3k
          • 8
        • ASP.NET MVC Урок 4. Routing

          • Tutorial
          Цель урока: Изучить инициализацию маршрутизации. Деление на Areas в приложении. Принципы создания маршрутизации.

          Controller и Action.

          Веб-сайт состоит из страниц. Вообще, веб-сайт состоит не из страниц, а из ответов на запросы, но какую-то определенную структуру мы хотим иметь.

          Собственно, у нас есть маршрутизатор, который должен определить, какой метод у какого контроллера вызвать. Поэтому, два основных параметра, которые обязательно должны быть это controller и action. Рассмотрим как задается шаблон маршрутов в App_Start/RouteConfig.cs:
          routes.MapRoute(
                          name: "Default",
                          url: "{controller}/{action}/{id}",
                          defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                      );
          

          Таким образом....
          • +43
          • 134k
          • 3
        • ASP NET.MVC Урок 3. Работа с БД

          • Tutorial
          Цель урока: Изучить основные принципы работы с базой данных. Краткое описание реляционной модели баз данных. Работа с базой данных (создание таблиц, связей в VS 2012). Команды INSERT, UPDATE, DELETE, SELECT. Использование LinqToSql и Linq. Создание репозитария, IRepository, SqlRepository.

          Что такое БД

          Реляционная база данных — база данных, основанная на реляционной модели данных. Реляционность – это отношения (связи) от англ. relation.
          Таблицы...
        • ASP.NET MVC Урок 2. Dependency Injection

          • Tutorial
          Цель урока: Изучение DI (Dependency Injection). Пример на Ninject, Unity, Autofac и Winsor.

          Во многих случаях, один и тот же экземпляр класса используется в вашем приложении в разных модулях. Простым способом реализации является применение шаблона Одиночка (Singleton).

          Но рассмотрим эту ситуацию с другой стороны. Так как данный объект создается при первом обращении к нему, мы не можем контролировать его время жизни. При модульном тестировании (unit-test) нет необходимости использовать этот объект (или это может быть невозможно). Чтобы избежать этого, мы не напрямую вызываем объект, а через интерфейс. И реальный экземпляр класса, и экземпляр-заглушка для тестирования будут реализовывать этот интерфейс. А логику создания мы поручаем DI-контейнеру.

          Читать дальше →
        • ASP.NET MVC Урок 1. Начало

          • Tutorial
          Цель урока: Изучить Global.asax и поведение запуска веб-приложения, обработки веб-запроса. Изучение Nuget и Подключение протоколирования.

          Начало

          Создадим приложение ASP.NET MVC 4 Web Application «Lesson1» (рис 1.):



          Читать дальше →
        • ASP.NET MVC. Урок 0. Вступление

          • Tutorial
          Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

          Почему именно asp.net mvc

          ASP.NET MVC я люблю потому что:
          • Это .net. Я знаю .net и С#.
          • Это компилируемый код.
          • Это не ASP.NET WebForms, я работаю с html-кодом.
          • Используется MVC-паттерн.
          • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
          • Отличные инструменты отладки.


          Читать дальше →
        • ASP.NET MVC Урок E. Тестирование

          • Tutorial
          Цель урока. Научиться создавать тесты для кода. NUnit. Принцип применения TDD. Mock. Юнит-тесты. Интегрированное тестирование. Генерация данных.

          Тестирование, принцип TDD, юнит-тестирование и прочее.

          Тестирование для меня лично – это тема многих размышлений. Нужны или не нужны тесты? Но никто не будет спорить, что для написания тестов нужны ресурсы.
          Рассмотрим два случая:
          1. Мы делаем сайт, показываем заказчику, он высылает список неточностей и дополнительных пожеланий, мы их бодро правим и сайт отдаем заказчику, т.е. выкладываем на его сервер. На его сервер никто не ходит, заказчик понимает, что чуда не произошло и перестает платить за хостинг/домен. Сайт умирает. Нужны ли там тесты?
          2. Мы делаем сайт, показываем заказчику, он высылает список правок, мы их бодро правим, запускаем сайт. Через полгода на сайте 300 уников в день и эта цифра растет изо дня в день. Заказчик постоянно просит новые фичи, старый код начинает разрастаться, и со временем его всё сложнее поддерживать.


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