• Несколько интересностей и полезностей для веб-разработчика (выпуск 5)

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

      Stackedit



      Шедевр среди Open Source редакторов! Основан на библиотеке разметки (Markdown) PageDown, которая используется в StackOverflow и других проектах StackExchange. Stackedit синхронизируется с Dropbox и Google Drive, а также сохраняет все документы в local storage, благодаря чему редактирование возможно и в онлайне и в оффлайне. Возможность импорта/экспорта/конвертация Markdown и HTML. Публикация в WordPress, Tubmlr, Blogger, Github, Gist и на любой SHH сервер. Статистика, работа в режиме realtime, поддержка различных синтаксисов (Prettify/Highlight.js), LaTeX, темы… Это просто великолепный продукт.


      App.io позволяет запускать iOS приложения в браузере. Это уже тема мобильной разработки, но недавно я читал статью про Sprinty Driver и обратил внимание на то, что BeetlePlay разрабатывают демо-версии на Flash. Решил поделиться. Также советую фреймворк для создания анимаций в UIKit от IFTTT.

      Читать дальше →
    • [Опрос] Спасение зрения от компьютера

        кот

        Доброго времени суток, господа!

        Многие люди не представляют своей жизни без холодного света пикселей монитора. Это прекрасное времяпровождение таит в себе немало опасностей, из которых основная — потеря зрения. Многие из вас столкнулись и продолжают сталкиваться с этой проблемой ежедневно.
        Читать дальше →
      • Я обожаю программирование графики

          cover

          Я обожаю программирование графики! Мы все совершаем ошибки в процессе проектирования и написания кода. Иногда это ошибки логики (когда алгоритм продуман неточно или не до конца), иногда ошибки, возникающие по невнимательности, и ещё много-много вариантов. И что происходит в обычном рабочем процессе? — В списках нет необходимых записей, какие-то числа считаются неверно, вываливаются сообщения об ошибках и прочее. В программировании графики всё немного веселее, ведь часто мы получаем результат, который просто не соответствует ожидаемому. В своём небольшом проекте я решил сохранять такие “результаты” на протяжении всего процесса разработки и хотел бы поделиться ими с Вами.

          Всех, кто не любит Android, Live Wallpaper, Minecraft, велосипеды, поток сознания, который слабо привязан к теме и всё около того, хочу сразу предупредить, что их может огорчить содержание этого поста, поэтому продолжайте чтение на свой страх и риск. Оставлю тут также и предупреждение для пользователей мобильного или просто небезлимитного интернета: дальше последует довольно много картинок.
          Читать дальше →
        • Основы архитектуры IIS, или запросопровод для ASP.NET

          • Tutorial



          В прошлом году мне пришлось отсобеседовать около 10-15 кандидатов на должность веб-программиста на ASP.NET средней квалификации. В качестве вопросов «на засыпку», или «со звёздочкой», я просил рассказать, что происходит с HTTP-запросом от момента его поступления на 80-й порт сервера до передачи управления коду aspx-страницы. Статистика была удручающей: ни один из кандидатов не смог выдать хоть что-нибудь внятное. И этому есть своё объяснение: ни в MSDN с technet, ни на специализированном ресурсе iis.net, ни в книгах a-la «ASP.NET для профессионалов», ни в блогах данной теме не уделяется должного внимания – информацию приходится собирать чуть ли не по крупицам. Я даже знаю людей, которые решили написать свой собственный веб-сервер (Игорь, Георгий, привет!), чтобы не разбираться в работе IIS. Единственная толковая статья – «Introduction to IIS Architectures» Риган Темплин (Reagan Templin). Но и она остаётся на периферии интересов аспнетчиков.

          Хотя мне лично уже не так интересны чисто технические вопросы, я решил собрать в кучу свой накопленный опыт, раскопать на просторах Сети любопытные детали и передать сие сакральное знание массам, пока оно ещё не устарело. Сразу оговорюсь, что статья ориентирована в большей степени на IIS 7.x, иногда будут ответвления про 6-ку. С 8-й версией в работе не сталкивался, поэтому решил обойти её в этой статье стороной. Но, уверен, читатель без труда разберётся с восьмёркой, освоив изложенный ниже материал.
          Познать...
          • +47
          • 154k
          • 9
        • DryadLINQ. Распределенный LINQ от Microsoft Research

            Предметом внимания вчерашнего поста на Хабре стал фреймворк распределенных вычислений от Microsoft Research — Dryad.

            В основе фреймворка лежит представление задания, как направленного ациклического графа, где вершины графа представляют собой программы, а ребраканалы, по которым данные передаются. Также обзорно была рассмотрена экосистема фреймворка Dryad и сделан подробный обзор архитектуры одного из центральных компонентов экосистемы фреймворка – среды исполнения распределенных приложений Dryad.

            В этой статье обсудим компонент верхнего уровня программного стэка фреймворка Dryad – язык запросов к распределенному хранилищу DryadLINQ.


            Читать дальше →
          • Система управления данными на базе ASP.NET Dynamic Data


              Концепция


              Я работаю с ASP.NET достаточно давно. При разработке многих проектов я часто сталкивался с тем, что однотипные операции по управлению данными занимают слишком много времени. Естественно для сайтов существуют CMS системы, а для более сложных систем различные генераторы шаблонных страниц, которые создают заготовки для форм редактирования и просмотра информации. Но мне хотелось получить более универсальный инструмент, который в тоже время не накладывал бы ограничений на процесс построения архитектуры приложения.
              Заинтересовавшиеся могут узнать об инструменте и поучаствовать в его разработке
              • +16
              • 15.2k
              • 6
            • Понимание Html-кода, сгенерированного ненавязчивой валидацией в ASP.Net MVC

                Это 2 часть серии «Понимание ненавязчивой валидации в ASP.Net MVC»

                1. Работа плагина jQuery validate изнутри
                2. Понимание Html-кода, сгенерированного ненавязчивой валидацией в ASP.Net MVC
                3. Внутренняя работа плагина unobtrusive jQuery validate в ASP.Net MVC.

                О чем мы поговорим в этой статье:

                • Идея ненавязчивого JavaScript
                • Разница между нормальной и ненавязчивой валидацией
                • Понимание ненавязчивой валидации:
                  • Элементы «input», правила их валидации и как они работают
                  • Сообщения валидации и как они работают в ненавязчивой валидации.


                Основная идея ненавязчивого JavaScript



                Microsoft представил первый модуль валидации в первой верисии MVC. Модуль совершенствовался с каждой версией, и превратился в ненавязчивую валидацию в ASP.Net MVC 3.
                Если коротко, даже в современном JavaScript, который мы пишем в основном в отдельном js файле, мы нуждаемся иногда в данных, связанных с Html, и поэтому записываем метаданные объектов JavaScript внутри страницы Html. Мы вызываем функцию из файла js, которой передаем метаданные объекта на странице.

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

                Разница между нормальной и ненавязчивой валидацией.



                Ниже представлен код модели и Html разметки, сгенерированной используя валидацию MVC 2 и ненавязчивую валидацию MVC 3.
                Читать дальше →
              • Внутренняя работа плагина unobtrusive jQuery validate в ASP.Net MVC

                  Это 3 часть серии «Понимание ненавязчивой валидации в ASP.Net MVC».

                  1. Работа плагина jQuery validate изнутри
                  2. Понимание Html-кода, сгенерированного ненавязчивой валидацией в ASP.Net MVC
                  3. Внутренняя работа плагина unobtrusive jQuery validate в ASP.Net MVC.

                  О чем мы поговорим в этой статье:
                  • Метод «parse»
                    • секция «parceElement»
                      • объяснение параметра «skipAttach»
                      • объяснение функции «parceElement»

                    • секция «validateInfo»
                      • объяснение функции «validateInfo»
                      • объяснение объекта «return»


                  • Адаптеры


                  Метод «parse»


                  Мы объясним цикл ненавязчивой валидации, который происходит, когда документ загружается, и поймем роль каждого компонента.
                  Если мы посмотрим в конец jquery.validate.unobtrusive.js мы найдем

                  $(function () {
                    $jQval.unobtrusive.parse(document);
                  });
                  

                  Итак, мы вызываем метод «parse()» и передаем ему «document»
                  Что представляет собой метод «parse()»?
                  Читать дальше →
                • Обзор Windows Workflow Foundation на примере построения системы электронного документооборота [Часть 1]

                    Что такое WF


                    Windows Workflow Foundation (WF) — уже не новая технология компании Microsoft, разработанная для создания и выполнения потоков работ (Workflow). Однако на данный момент она используется не очень активно, а многие разработчики вообще не слышали про нее. И мое знакомство с ней произошло относительно недавно. Тогда как применение WF при реализации некоторых категорий задач может быть более чем оправданным. В связи с этим хочу рассказать о самой технологии, области ее применения и рассмотреть пример ее использования при реализации конкретного проекта.


                    Читать дальше →
                    • +4
                    • 25.1k
                    • 7
                  • Логинимся на сайт под чужим аккаунтом не имея пароля



                    День добрый, сегодня я расскажу про довольно полезный прием при поддержке крупных сайтов-сервисов. А именно, возможность зайти на ваш сайт под обычным пользователем, не имея пароля (вы же не храните пароли в БД открытым текстом верно?).
                    Читать дальше →
                  • Технологический институт Джорджии будет давать степень магистра компьютерных наук онлайн за 7000$

                      Во вторник, 14 мая, произошло знаковое событие в мире онлайн-образования. Технологический институт Джорджии, который по данным многих рейтингов входит в сотню лучших университетов мира, причём по техническим специальностям часто попадает в первую десятку, официально объявил о том, что вскоре степень магистра компьютерных наук можно будет получить онлайн меньше чем за 7000$. Обучение будет длиться три года. Абитуриенты должны иметь степень бакалавра в области компьютерных наук или в смежных областях и сдать вступительный экзамен. Приём документов начнётся осенью 2014 года. Программа рассчитана на 10 000 участников.

                      Партнёрами Georgia Tech стали Udacity и AT&T. Udacity предоставит не только технологическую платформу для онлайн-курсов, но и услуги «менторов», которые будут курировать процесс и отвечать на вопросы студентов. Благодаря этому Georgia Tech придётся расширить свой штат преподавателей всего на восемь человек. Udacity получит 40% от платы за обучение, остальные деньги достанутся институту. AT&T выступает спонсором проекта. Все материалы курса будут доступны бесплатно на сайте Udacity.
                      Читать дальше →
                    • Database Mail: Почтовые рассылки прямо из Microsoft SQL Server

                      Многие знают, что начиная с версии 2005 в SQL Server существует встроенная возможность посылать электронные письма, которую администраторы баз данных часто используют для отправки срочных оповещений, например, при сбое задач, выполняемых по расписанию. Однако лишь немногим известно, что посылать письма в SQL Server можно прямо из SQL-запросов, функций и хранимых процедур. И если вы один раз уже настроили почту в SQL Server, то на отправку письма у вас уйдет всего минута, а целую рассылку можно организовать за 15-20 минут. Называется эта система Database Mail (DBMail), и сегодня я хотел бы поделиться опытом ее использования.
                      Читать дальше →
                    • Tree View с «CRUD операциями», «drag and drop (DnD)» и «отложенной загрузкой» с использованием Dojo Tree, Entity Framework, SQL Server и ASP.NET MVC

                      • Translation
                      • Tutorial
                      image

                      Введение

                      Dojo Toolkit это модульная JavaScript библиотека с открытым исходным кодом, предназначенная для облегчения быстрой разработки кросс-платформенных JavaScript/Ajax-ориентированных приложений и веб-сайтов, которая предоставляет некоторые действительно мощные возможности для пользовательского интерфейса. Компонент Dojo Tree обеспечивает полное, привычное, интуитивно понятное, развертываемое представление иерархических данных. Этот компонент поддерживает отложенную загрузку веток, что делает его хорошо масштабируемым для больших объемов данных. Dojo Tree отличный виджет для представления данных с отношениями «предок-потомок».

                      Эта статья показывает процесс создания дерева, поддерживающего «CRUD операции», «drag and drop (DnD)» и «отложенную загрузку». Чтобы создать такое дерево мы будем использовать Dojo Tree, Entity Framework, SQL Server и Asp .Net MVC.
                      Читать дальше →
                      • +4
                      • 10.6k
                      • 3
                    • Реализация пула объектов на языке C#

                      Доброго времени суток!
                      В этой статье я расскажу, как повысить производительность многопоточного (и не только) C#-приложения, в котором часто создаются объекты для «одноразовой» работы.
                      Немного про многопоточность, неблокирующую синхронизацию, использование встроенного в VS2012 профилировщика и небольшой бенчмарк.
                      Читать дальше →
                    • Использование Razor отдельно от ASP.NET MVC

                      • Tutorial
                      По роду деятельности студентом мне часто приходится писать различные лабораторные и курсовые работы. Неотъемлемая часть этих работ(как и в 80% задач бизнес-программирования) — код составления отчета о найденных элементах в базе данных или выполненной длительной и сложной операции. В десктопном программировании в рамках .NET Framework есть различные способы решения подобных проблем:
                      • Старая школа: формат RTF никто не отменял, однако вручную составить что-либо сложнее цветного текста со шрифтами разного цвета и ссылками лично у меня не получалось. Способ действенный, но стандарт не самый легкий для понимания, на последнюю версию даже смотреть страшно
                      • Для Silverlight/WPF — формирование FlowDocument своими руками. Объектная модель однозначно удобнее формирования старого формата вручную, но вариант тоже только для смелых
                      • Сторонние решения вроде Crystal Reports, возможно и очень мощный инструмент для создания отчетов, но не всегда в этом есть необходимость, к тому же не всегда есть возможность тянуть пару-тройку дополнительных программных продуктов1
                      • Использование Microsoft Office Interop. Нет, это издевательство. Ручная работа с памятью в управляемой среде вызывает лишь бурю радости. Начинающий программист выпьет не одну упаковку кофе, прежде чем смирится с подобным принципом работы.
                      • Формирование HTML. На нашу радость, стандарт позволяет создать документы средней степени форматированности, с помощью CSS можно довести до ума. Минусы — оформить документ по всем требованиям крайне затруднительно. Но это если в этом есть необходимость. Плюсы: простота стандарта и всеобщий переход «в облака и браузеры» стимулирует развитие HTML.

                      О последнем я и буду вести речь.
                      Читать дальше →
                      • +20
                      • 9.9k
                      • 9
                    • Варим MVVM для Windows Store-приложений

                        Когда мы начали работать над приложениями под Windows 8, мы искали библиотеку поддержки шаблона Model-View-ViewModel (MVVM) для этой платформы. Некоторое время провели в интернете в поиске таковой, но в итоге приняли факт, что таких библиотек в природе пока не существует (возможно, мы плохо искали, но теперь это уже не так важно). Ответ на вопрос «что делать?» напрашивался сам…



                        В недрах нашей компании EastBanc Technologies была создана специальная библиотека (кодовое название EBT.Mvvm). Цель создания — экономия времени в будущем при разработке сложных приложений для Windows 8. В библиотеку вошли как наши собственные наработки, так и некоторые идеи и примеры, которые встречались нам во время наших поисков.

                        Итак, что мы имеем: все помнят, что основная идея шаблона — это ослабление связи между ViewModel (будем называть вью-модель) и непосредственно View (представление). Идеальное состояние — это когда code-behind представления содержит только конструктор с InitializeComponent и, возможно, код поддержки визуального поведения, которое нельзя определить через XAML. Таким образом, разработчик отдает представление дизайнеру, а сам сосредотачивается на работе и тестировании логики приложения.

                        Данная статья ориентирована на разработчиков, уже знакомых с программированием на C# и XAML под Windows 8. Ниже мы приводим описания основных фич нашей библиотеки в виде примеров кода их использования и комментариев. Итак, поехали:

                        Читать дальше →
                      • Разработка механизма извлечения DTO из БД с помощью LINQ

                        Постановка задачи

                        В этой статье я опишу механизм создания DTO, реализованный в одном из проектов нашей компании. Проект состоит из серверной части и нескольких клиентов (Silverlight, Outlook, iPad). Сервер представляет собой ряд сервисов, реализованных на WCF. Раз есть сервисы, то надо обмениваться с ними какими-то данными. Вариант, когда клиенты знают о сущностях доменной области и получают их с сервера, отпал сразу по ряду причин:

                        1. Не все клиенты реализованы на .NET
                        2. Возможные проблемы сериализации сложных графов объектов
                        3. Избыточность передаваемых данных

                        В принципе, все эти недостатки давно известны и для их устранения умные люди придумали паттерн Data Transfer Object (DTO). То есть, классы сущностей доменной области известны только серверу, клиенты же оперируют классами DTO и экземплярами этих же классов обмениваются с сервисами. В теории все прекрасно, на практике же среди прочих возникают вопросы создания DTO и записи в них данных из сущностей. В небольших проектах с этой работой отлично справится оператор "=". Но, когда размер проекта начинает расти и повышаются требования к производительности и сопровождаемости кода, возникает необходимость в более гибком решении. Ниже я опишу эволюцию механизма, который мы используем для создания и заполнения DTO.
                        Читать дальше →
                      • Pilot: многофункциональный JavaScript роутер

                          С каждым днем сайты становятся все сложнее и динамичнее. Уже недостаточно просто «оживить» интерфейс — все чаще требуется создать полноценное одностраничное приложение. Ярким примером такого приложения является любая web-почта (например, Mail.Ru), где переходы по ссылкам приводят не к перезагрузке страницы, а только к смене представления. А это значит, что задача получения данных и их отображения в зависимости от маршрута, которая всегда была прерогативой сервера, ложится на клиент. Обычно эту проблему решают с помощью простенького роутера, на основе регулярных выражений, и дальше не развивают, в то время как на back-end этой теме уделяют гораздо больше внимания. В этой статье я постараюсь восполнить этот пробел.

                          Читать дальше →
                        • C# консоль для выполнения простых «скриптов»

                          Вы когда нибудь выполняли массовое переименовывание файлов, или какую-нибудь другую, кажущуюся банально лёгкой, но рутинную задачу? Ни разу не создавали bat'ники, но знаете C#?

                          Находясь в похожей ситуации, в течение 15 минут было создано довольно простое приложение которое похоже на консоль, но которое понимает C#.

                          image

                          Читать дальше →
                        • Простой путь создания сложных ASP.NET MVC контролов

                            Наверняка все создавали свои asp.net mvc контролы (речь, конечно, про asp.net mvc кодеров). Вам должен быть знаком метод создания контролов, используя TagBuilder? Пробовали писать реально сложные контролы (например с большим количеством javascript-та или разметки, которая зависит от опций)? Тогда наверняка вам знаком адЪ экранирования кавычек, конкатенации строк (или вызова .Format() функции) и т.п. «неудобства». Я предлагаю взглянуть на достаточно простую методику, которая позволит избежать подобных вещей и в тоже время сосредоточиться на функциональной стороне контролов, а не на программировании шелухи.
                            Читать дальше →
                            • +12
                            • 22.1k
                            • 8