Результати пошуку
ITVDN: курси програмування
Відеокурси з
програмування

Замовити дзвінок

Вибери свою IT спеціальність

Підписка

Замовити дзвінок

+38 099 757 27 82
Результати пошуку за запитом: видеокурс c*
Запуск ASP.NET 5 на Linux

Автор: Редакция ITVDN

Введение Данная статья содержит подсказки и советы, как правильно запустить ASP.NET vNext на Linux.  Если Вы используете метод чистой установки, вам следует установить Mono 3.4.1 или более позднюю версию. Вы можете сделать это путем составления источников. Также установка Mono возможна с помощью менеджера пакетов.  1. Доступ к Ubuntu с помощью удаленного рабочего стола Если Ubuntu работает на облаке Windows Azure, а показать его нужно на Surface RТ, необходимо получить доступ к Ubuntu с помощью удалённого рабочего стола. Вот замечательное руководство по работе с удалённым рабочим столом с Ubuntu: Как установить xrdp в Ubuntu 14.04 Если Вам не нужно запускать браузер, то удалённый рабочий стол Вам не понадобится. Чтобы увидеть веб-приложения, работающие на Linux, Вам нужно открыть некоторые порты или использовать туннель для Linux. 2. Установка K Runtime Выполните следующие команды в терминале: curl https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh Это позволит установить K Runtime Manager (KVM), K Runtime (Kre) и K Package Manager (KPM), также следует запустить приложения ASP.NET vNext. 3. Установите последнею версию KRE Теперь давайте установим последнею версию KRE. Выполните такую команду в терминале:  kvm upgrade Эта команда вызывает KVM для загрузки и установки последней версии KRE. 4. Натройка NuGet.config Вполне возможно, что NuGet не имеет никакого представления об источнике пакета ASP.NET vNext. Вы можете найти NuGet.config в: /home//.config/NuGet Если он имеет только пустые и закрытые теги конфигурации, то для изменения содержимого выполняйте: xml version="1.0" encoding="utf-8"?> <configuration>   <packageSources>     <clear />     <add key="AspNetVNext" value=https://www.myget.org/F/aspnetmaster/ />     <add key="NuGet.org" value="https://nuget.org/api/v2/" />   packageSources> configuration> 5. Получите Ваше приложение из Git Затем нужно получить источник ASP.NET vNext приложения для Вашей машины. Возможно, Вы используете Git. Чтобы скачать примеры приложений ASP.NET vNext, Вам нужно выполнить команду: git clone https://github.com/aspnet/Home.git 6. Восстановление пакетов Отправляйтесь к корневой папке вашего приложения ASP.NET vNext и, чтобы восстановить пакеты, используйте для запуска: kpm restore Теперь KPM восстанавливает все пакеты, необходимые для запуска приложения. Эта информация считывается из project.json файлов в приложениях корневых папок. 7. Запустите приложение Пришло время для запуска приложения: k kestrel Эта команда вызывает KRE и использует Kestrel как веб-сервер. Источник: http://gunnarpeipman.com/2014/10/running-asp-net-5-on-linux/
Угода при розробці AngularJS програми

Автор: Антон Гончаров

Введение Давайте рассмотрим практику написания AngularJS приложения. Приведенные ниже примеры помогут вам писать приложение правильно, чисто и более обдуманно. С помощью применения данной практики вы разработаете приложение, которое будет разделено на блоки, что в конечном итоге поможет строить правильную архитектуру приложения. Итак, начнем. 1) Создавая новое приложение, старайтесь разделять модуль, контроллер, фабрику, вынося их в отдельные файлы. Этот прием имеет ряд приимуществ: улучшается читаемость приложения улучшается рефакторинг приложения легче производить дебаггинг приложения //плохая практика angular        .module('app', ['ngRoute'])        .controller('myController', myController)        .factory('myFactory', myFactory); function myController() { }; function myFactory() { }; //рекомендуется //myapp.module.js – файл модуля angular        .module('app', ['ngRoute']); //mycontroller.js – файл контроллера angular .module('app') .controller('myController', myController); function myController() { }; //myfactory.js – файл фабрики angular        .module('app')        .factory('myFactory', myFactory); function myFactory() { }; 2) Старайтесь оборачивать код в самовызывающиеся функции. Это позволяет : сохранить переменные от глобального объекта scope предотвратить перетирание глобальных переменных (т.к. они локальны) при минификации кода помогает избежать путаницы переменных //плохая практика angular        .module('app')        .factory('myfactory', myfactory); function myfactory() { }; //рекомендуется (function () {     'use strict';     angular         .module('app')         .factory('myfactory', myfactory);     function myfactory() { }; })(); 3) Старайтесь придерживаться иерархии именования. Это поможет правильно структурировать приложение, что в итоге приведет к правильной архитектуре программы. Избегайте создания модуля через переменную и используйте цепочный синтаксис (в виде цепочки) //плохая практика var app = angular.module('app', [        'ngAnimate',        'ngCookies',        'firebase' ]); //рекомендуется angular        .module('app', [        'ngAnimate',        'ngCookies',        'firebase' ]); 4) Используйте именованные функции. Код становится более читабельным и куда лучше тестируется.  //плохая практика angular        .module('app')        .controller('mycontroller', function () { }); //рекомендуется (обратите внимание на контроллер он вынесен в отдельный файл //от модуля) //myapp.module.js – файл модуля angular        .module('app', ['ngRoute']); //mycontroller.js – файл контроллера angular .module('app') .controller('myController', myController); function myController() { }; 5) Используйте controller as нотацию вместо просто controller. Она более читабельна, помогает не запутаться в коде      //плохая практика     <div ng-controller=”myController”>{{title}}div>     //используем     <div ng-controller=”myController as mycontroller”>{{mycontroller.name}}div> 6) Используйте слово vm(ViewModel) внутри контроллера вместо ключевого слова this. Это поможет избежать подмены контекста внутри функции.  //антипаттерн function mycontroller () {        this.name = {};        this.deleteSome = function () {}; }; //паттерн function mycontroller () {        var vm =  this;        vm.name = {};        vm.deleteSome = function () {}; }; Это лишь базовые приемы, которые вы можете использовать в своей практике. Они помогут вам избежать некоторых проблем в вашей роботе и сделать код вашего приложения чище и понятнее. Желаю вам хорошего кода и светлых идей.
Огляд елементів у HTML5

Автор: Редакция ITVDN

Введение HTML5 – последняя версия языка разметки. У HTML5 есть семантическая структура. В пятой версии языка ввели определенные средства для управления – они дают возможность сэкономить Ваше время при разработке веб-сайтов. В этой статье мы рассмотрим упомянутые средства управления, а также функции в HTML5. Прежде чем начать, необходимо установить Visual Studio. Мы можем включить опцию HTML в целевом разделе: Tools -> Options -> Text Editor -> HTML. Разметка HTML5          Объявление DOCTYPE: <!DOCTYPE html> Объявление кодировки символов: <meta charset="utf-8" /> <!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>Sibeesh Passion wish you a happy new yeartitle> head> <body> Welcome to Sibeesh Passion body> html> Структура HTML5 Как уже говорилось, у HTML5 есть семантическая структура. Это уменьшает усилия UI-разработчика. На изображении объясняется эта структура. До применения HTML5: После: Исходя из рисунка, понятно, что в HTML5 доступны такие элементы: Header Nav Section Aside Article Footer Добавление собственных элементов Вы можете создать собственный элемент, используя стили. Разметка должна выглядеть таким образом: <!DOCTYPE html> <html> <head>     <title>Your own element title>     <script>document.createElement("yourelement")script>     <style>         yourelement {             display: block;         }     style> head> <body>     <div>         Normal element     div>     <yourelement>My elementyourelement> body> html> Вы создали новый элемент «yourelement». Новый синтаксис Атрибута В HTML5 введен новый синтаксис атрибута: Empty Unquoted Double Quoted Single Quoted Можно присвоить текстовое значение тега input type таким образом:   <input type="text" value="Sibeesh" disabled>     <input type="text" value=Sibeesh>     <input type="text" value="Sibeesh">     <input type="text" value=’Sibeesh’> Примените CSS Так же, как  к обычным элементам HTML, так и к новым семантическим элементам можно применять стили. footer{border:1px solid;} Предыдущий стиль будет применен ко всем footer, доступным на странице. Не рекомендуется использовать верхний регистр (Footer, FOOTER) в названии элементов. Обзор элемента Canvas Если Вы хотите создать определённый графический контент, элемент Canvas,  то Вам нужно: Объявление Canvas     <canvas id="canvasExample" width="200" height="100"             style="border:1px solid #ccc;">         Bad Luck, It seems your browser won't support :(     canvas> Реализация Canvas var c = document.getElementById("canvasExample"); //Get the element var ctx = c.getContext("2d"); // Get the context for the element var grd = ctx.createLinearGradient(0, 0, 200, 0); //Create the line grd.addColorStop(0, "blue"); // Apply the colors grd.addColorStop(1, "white"); // Apply the colors ctx.fillStyle = grd; //apply the style ctx.fillRect(10, 10, 150, 80); // Fill Здесь мы применили градиент к canvasExample. Введение в SVG Масштабируемая векторная графика (Scalable Vector Graphics) – графика для web типа canvas. Одно из различий между canvas и SVG  то, что SVG поддерживает обработчик событий, а элементы canvas – нет. Объявление SVG     <canvas id="canvasExample" width="200" height="100"             style="border:1px solid #ccc;">         Bad Luck, It seems your browser won't support :(     canvas> Полный вариант HTML-документа: <!DOCTYPE html> <html> <body>     <table style="border:1px solid #ccc;">         <tr style="border:1px solid #ccc;">             <td style="border:1px solid #ccc;">                 <h2 style="text-align:center;">Canvash2>                 <canvas id="canvasExample" width="200" height="100"                         style="border:1px solid #ccc;">                     Bad Luck, It seems your browser won't support :(                 canvas>             td>             <td style="border:1px solid #ccc;">                 <h2 style="text-align:center;">SVGh2>                 <svg width="200" height="200">                     <circle cx="100" cy="100" r="50"                             stroke="green" stroke-width="4" fill="yellow" />                     Bad Luck, It seems your browser won't support :(                 svg>             td>         tr>     table>     <script>         var c = document.getElementById("canvasExample"); //Get the element         var cctx = c.getContext("2d"); // Get the context for the element         var grd = ctx.createLinearGradient(0, 0, 200, 0); //Create the line         grd.addColorStop(0, "blue"); // Apply the colors         grd.addColorStop(1, "white"); // Apply the colors         ctx.fillStyle = grd; //apply the style         ctx.fillRect(10, 10, 150, 80); // Fill     script> body> html> Источник: http://www.c-sharpcorner.com/UploadFile/65794e/html-5-elements-in-a-look-part-1/         http://www.c-sharpcorner.com/UploadFile/65794e/html-5-elements-in-a-look-part-2/
Правила комунікацій у компанії

Автор: Infopulse

Введение Когда сотрудник становится частью нового коллектива, стоит внимательно отнестись к правилам коммуникаций и субординации, принятым в компании. Так, все коммуникации, как внутри компании, так и с заказчиками, должны происходить в соответствии с нормами делового поведения и общепринятыми стандартами общения. Корпоративным стандартом являются такие качества, как приветливость, вежливость и безоговорочная готовность помочь в решении тех вопросов, по которым к вам обратились как внешние заказчики, так и внутренние, т.е. ваши коллеги. При этом, каждый специалист компании должен действовать в пределах своей компетентности в вопросе, послужившем поводом для коммуникации, и принимать решения он имеет право лишь в рамках своих полномочий, при необходимости согласовав их со своим непосредственным руководством. Важно помнить, что при необходимости незамедлительно принять решение, выходящее за рамки ваших полномочий или компетентности, вам необходимо узнать решение вашего непосредственного руководителя. Получив такое подтверждение, можете смело продолжать рабочие процессы, как и собственно процесс коммуникации. В случае, когда вы должны сообщить решение заказчику в отсутствие непосредственного руководителя, стоит уведомить руководителя более высокого уровня. В данной статье мы познакомимся с наиболее распространенными правилами деловой переписки, которые общеприняты в большинстве компаний. Средствами электронной коммуникации с клиентом являются: электронная почта, разные мессенджеры, скайп, телефон. Ответ на любой запрос, поступивший от Заказчика, переданный по какому-либо каналу электронной коммуникации, по возможности, должен быть дан в кратчайшие сроки. Если такой возможности не представляется по объективным причинам, необходимо сообщить об этом Заказчику, указав дату, когда требуемая информация будет предоставлена. Для всех случаев отсутствия специалиста на рабочем месте (болезнь, непредвиденные семейные обстоятельства, внешний тренинг, заранее запланированная командировка или плановый отпуск) стоит уведомить Заказчика. Ответственность за своевременное уведомление несет руководитель соответствующего отдела или проекта. В случае внезапного отсутствия сотрудника на рабочем месте, ответственность за уведомление Заказчика несет непосредственный руководитель специалиста. В уведомлении должна быть указана предположительная дата возвращения специалиста на работу, а также контакты другого специалиста, уполномоченного работать с Заказчиком в рамках текущего проекта. Все коммуникации с Заказчиком должны происходить в соответствии с нормами делового общения, далее приведены основные из них: Точность формулировок письма, исключающая возможность двойного истолкования, прозрачность изложения. Лаконичность – изложение только необходимой адресату информации. В то же время, необходимо отвечать на все поставленные вопросы, если они были заданы, либо уведомить о невозможности предоставления ответа по каким-либо пунктам. Строго запрещается оставлять вопросы заказчиков без ответов, даже если на первый взгляд они кажутся несущественными. Достоверность информации – ссылки должны вести только на проверенные факты, заботьтесь о логичности и грамотности, обеспечивайте четкую структурированность вашего сообщения. Соблюдайте элементарные нормы вежливости и выдвигайте только конструктивные пожелания во всех письмах. Избегайте большого количества шрифтов и стилей, запутанной манеры изложения, не используйте несвойственные деловой переписке лирические вставки, неформальности. По возможности, используйте одну гарнитуру и размер шрифта, для выделения используйте не больше двух цветов. Поле обязательно к заполнению, сформулировав тему письма кратко и емко, вы позволите адресату структурировать переписку и ,в случае необходимости, воспользоваться быстрым поиском. Отметку высокого приоритета для письма () стоит использовать в исключительных случаях, когда письма требует особенного внимания. Не следует злоупотреблять запросом на подтверждение адресатом того, что ваше письмо было прочитано (Delivery request). Отвечая на письма, всегда сохраняйте предыдущую историю переписки, не изменяйте текущее – это позволит адресату  при первой необходимости узнать все детали переписки. Отдельное внимание стоит уделить тому, в каком поле находитесь вы как адресат в переписке. Так, многие компании приняли за правило следующие условия: если вы указаны в качестве одного из адресатов письма (ваш email находится в поле To: ), то вы должны предпринять действия, которые подразумеваются по сути письма и сообщить об этом; если вы указаны в копии письма (в поле Cc: ), то вам следует ознакомиться с телом письма, принять во внимание полученную информацию на случай того, что описанные действия или условия могут прямо или косвенно повлиять на ваши повседневные обязанности и рабочие процессы. Настоятельно рекомендуется сохранять такие письма и ,по возможности, сообщить в коротком ответе, что информация, изложенная в письме, была вами получена и принята к сведению (подобный ответ не является обязательным). В следующих статьях вы узнаете о других правилах ведения корпоративной переписки и построения деловых отношений с коллегами и стороной Заказчика. Также будут опубликованы шаблоны корпоративных подписей для писем и стандартные заготовки для служебных писем, которые вам придется составлять в вашей повседневной работе.
Як використовувати Git у Microsoft Visual Studio Enterprise 2015 RC

Автор: Костянтин Чорний

Введение На заре компьютерной эры, когда программисты были подобно волшебникам, которые заставляли компьютеры творить чудеса, производить вычисления и выдавать какие-то незамысловатые изображения на экран, их было мало и, зачастую, они писали свои программы в одиночку. Но создавать крупные проекты так, практически, невозможно, потому что это занимает слишком много времени. Тогда стало понятно, что один программист не сможет сделать ничего крупномасштабного, и возникла потребность как-то объединить их усилия и превратить процедуру создания программ в промышленный процесс. Для этого нужно было создать систему, которая бы синхронизировала работу нескольких десятков, а то и сотен программистов над одним исходным кодом. С этой же проблемой столкнулся известный на данное время программист Линус Торвальдс, который создал наиболее популярную сегодня систему управления версиями Git. Итак, давайте рассмотрим, как можно создавать любимые приложения на платформе .NET, используя Visual Studio, вместе со своими друзьями. Хочу заметить, что Visual Studio поддерживает Git с коробки, а в версии Visual Studio 2015 можно выбрать установку расширения для работы с GitHub. Мы рассмотрим оба варианта. Для начала запустим Visual Studio и в меню View выберем пункт Team Explorer. Получим вот такое окошко: Сначала попробуем добавить существующий репозиторий. Чтобы это сделать, нужно взять ссылочку на него из GitHub, например, и скопировать ее в поле, когда выберем пункт Clone: Нажимаем на кнопку Clone и готово. Двойной клик по проекту, и получаем окно управления: Теперь давайте посмотрим, как добавить новый проект. Сначала создаем новое решение. Необходимо отметить галочкой пункт Add To Source Control, чтобы заставить Visual Studio создать необходимые файлы для работы с системой контроля версий. Выбираем нужную нам систему: Готово! Проект появился в списке. Теперь надо его опубликовать. Выбираем проект и заходим в пункт Sync: Для того, чтобы поместить на сервер наши исходники, необходимо сначала создать новый репозиторий. Берем ссылку на пустой репозиторий и вставляем ее в Visual Studio. Потом кликаем на кнопку Publish. Вводим логин и пароль для GitHub, если понадобится Дальше выполняем Commit проекта и синхронизируемся Готово: Теперь давайте воспользуемся расширением для работы с GitHub, которое поставляется в комплекте Visual Studio Enterprise 2015. Для этого в Team Explorer логинимся на GitHub. Клонируем репозиторий. Готово. Теперь попробуем создать новый. Вот теперь мы окончательно разобрались, как подключить Git к Visual Studio. Сама процедура использования этой технологии несложна и позволяет объединить усилия в разработке крупных приложений. Наслаждайтесь командной разработкой. Спасибо за внимание.
Оновлення Git-клієнта для усунення вразливості

Автор: Редакция ITVDN

Введение Уязвимость очень тривиальна – злоумышленник создает Git-дерево, что приводит к тому, что Git перезаписывает свой собственный .git/config файл при клонировании или проверке репозитория. Затем вызывается config файл, чтобы выполнить любой вредоносный код. Конфигурационный файл может содержать измененные названия кода для команд Git и, следовательно, вредоносный файл конфигурации может повторно активировать команды Git для любых функций. Злоумышленник может выполнить, практически, любой код, который он хочет. Причина проблемы заключается в том, что считается нормальным использовать вид записи .Git/config или любой другой, отличный от стандартного. Он рассматривается как стандартная папка, которая отличается от .git/config, находящейся за пределами репозитория. Однако, OSX и Windows используют «case insensitive file systems» и, в результате, .Git/config приравнивается к .git/config и, скопировав его, перезаписывается исходный .git/config. Если вы работаете с Linux или Unix, то Git работает корректно без вмешательства. В целом, риск не так уж велик, потому что любой, кто хочет воспользоваться дефектом, должен иметь права для создания репозиториев и уязвимость появляется при работе в публичном репрозитории. Решением проблемы является установка последних версий Git-клиента. Существует также проблема с остальными производителями программного обеспечения, которые используют библиотеки libgit2 и JGit. GitHub также советуют устанавливать последнюю версию клиента. Источник: http://www.i-programmer.info/news/149-security/8101-upgrade-git-client-to-avoid-vulnerability.html
Безкоштовні онлайн інструменти для дизайнерів

Автор: Редакция ITVDN

Введение В  статье мы рассмотрим бесплатные инструменты для редактирования изображений, выбора цветов и шрифтов, работы с CSS, FTP и другие полезные сервисы. Благодаря их использованию дизайн Вашего веб-ресурса станет интереснее и привлекательнее. Pixlr Pixlr – мощное приложение для онлайн редактирования изображений. Оно проигрывает в функциональности Photoshop-у, но некоторые функции Pixlr впечатляют. Typetester Typetester – интерактивный сервис сравнения шрифтов. Он значительно облегчает подбор шрифтов веб-дизайнеру.  CSS Type Set CSS Type Set дает Вам возможность работать с текстом в интерактивном режиме и превращать его в CSS. net2ftp net2ftp – полнофункциональный FTP-клиент в браузере. Подходит также для iPhone. WhatTheFont WhatTheFont определяет шрифт по картинке или URL. Color Scheme Designer Color Scheme Designer недавно был обновлен. Разработан новый дизайн и система определения цветовой схемы. Fontstruct С FontStruct можно создавать уникальные шрифты из геометрических форм, расположенных в сетке. Kuler Kuler позволяет просматривать цветовые палитры, созданные другими пользователями. Можно также создать свою собственную палитру, используя цветовое колесо и цветовые ползунки. W3C Markup Validation Service The Markup Validator – бесплатный сервис по W3C. С его помощью можно проверить XHTML и CSS валидность веб-документов. ViewLikeUs ViewLikeUs позволяет проверить, как Ваш сайт выглядит в распространенных форматах разрешения.  ColoRotate Веселый сервис выбора цвета. Pingdom Tools Инструменты PingDom позволяют запускать тесты времени загрузки на веб-страницах. Они имитируют загрузку страницы в веб-браузере. Визуально показано время загрузки каждого объекта. Список объектов можно просмотреть или в порядке загрузки, или в виде визуальной иерархии. Источник: http://webdesignledger.com/tools/15-free-online-tools-for-web-designers-on-a-budget
Логування проекту за допомогою NLog Framework

Автор: Богдан Ромашко

Введение Многие начинающие разработчики при создании своих проектов не задумываются о такой вещи, как создание журнала события. Мол, проект у меня нормальный, и так сойдет. Но не забываем, что наше приложение мы пишем не для себя самих, а для клиента. Всем нужна статистика и слежение за проектами. Итак, что же насчет логирования, так это процесс записи всех сведений о проекте, а именно: информации о работе тех или иных элементах приложения, предупреждение о критической нагрузке, всяческие ошибки и т.д. Для .NET приложений был разработан очень удобный фреймворк под название NLog, с его помощью можно вести учет о состоянии всего приложения. Есть поддержка записи в файл, в базу данных. Настройка данной платформы очень удобна и легка, есть два способа: через конфигурационный файл; через конфигурационный объект LoggingConfiguration; Первый способ самый простой, так как зондирование проекта уже встроено в саму библиотеку NLog. Вся работа основа на объекте Logger – парне, который занимается ведением учета состояния нашего проекта. Для того чтобы продемонстрировать работу NLog, создадим проект по шаблону консольного приложения и назовем его NLogUnderstanding. Изначально наш проект выглядит следующим образом: using System; namespace NLogUnderstanding {     class Program     {         static void Main(string[] args)         {                          }     } } Чтобы начать работу данного фреймворка в нашем проекте, нужно установить следующие библиотеки через Package Manager Console (или же через сам менеджер расширений):  После установки NLog выбираем подход, по которому будем строить процесс слежения за состоянием приложение.  Настройка через конфигурационный файл: Первое, что нужно сделать- это установить данный пакет: После это у нас в проекте появится указанный файлик NLog.config: Начальное содержимое файла выглядеть будет примерно так: xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">   <targets>     targets>   <rules>     rules> nlog> Все, после того как мы подготовили данную библиотеку, начинаем настройку объекта Logger. Первое, что мы должны сделать, это указать ему, куда мы будем писать те или иные сообщения. Все эти файлы указываются в разделе <targets>. Первое, что мы добавим, так это все возможные записи, которые мы сможем проводить:   <targets>     <target xsi:type="File" name="file" fileName="${basedir}/logs/${shortdate}.log"             layout="${longdate} | ${uppercase:${level}} | ${logger} | ${message}" />   targets> Шесть возможных вариантов ведения учета: Информация о состоянии элементов; Информация, запущенная в режиме debug для отладки проекта (можно применять в тестах); Всяческие предупреждения (например, связанные с нагрузкой); Информация об исключениях; Информация об ошибках, которые привели к критическому завершению приложения. Для каждого сообщения присутствует свой метод все в том же объекте Logger, который мы чуть позже будем разбирать. Основные атрибуты, которые нужно заполнить, это: name – название файла, нам оно понадобиться для организации правил, по которым мы будем писать именно в этот файл; fileName – указываем файл и путь к файлу, в который будем писать наши логи; layout – шаблон, по которому будет заполнятся наш файл. Как Вы уже заметили,  заполнение значений атрибутов ведется в характерной манере регулярных выражений. То есть, мы используем заранее подготовленные в библиотеке маркеры подстановки для ведения учета наших сообщений в разные файлы. Основные, которые мы использовали, это: ${basedir} – вернет базовую директорию вашего приложения. При компиляции этот маркер вернет изначальный путь (папку bin); ${shortdate} / ${longdate} – маркеры подстановки устанавливают текущую дату и время в зависимости от маркера (полную дату и время или же только дату); ${uppercase:${level}} – интересное использование вложения маркеров. Как Вы поняли, маркер ${level} будет указываться уровень сообщения (мы их перечислили ранее), приводим в верхний регистр; ${message} – под данный маркер подставляется сообщение, указанное в аргументных скобках методов (об этом далее); ${logger} – название класса, от которого поступило сообщение. После настройки целей для записи наших сообщений мы приступаем к организации правил, по которым будем заполнять наши файлы:   <rules>     <logger name="*" minlevel="Trace" writeTo="file" />   rules> Тут все намного проще, единственное, что нужно заполнить - это основные атрибуты, т.к. minlevel (минимальный уровень заполнения файла, имя которого указанного в атрибуте writeTo). После того как настроили конфигурационный файл, приступаем к работе с проектом и нашим Logger. Первое, что нужно - это создать экземпляр Logger. Это можно сделать двумя способами: Создать через первый фабричный метод LogManager.GetLogger("Example"), в аргументах указываем название логгера, менее эффективный способ, т.к. всегда нужно указывать название класса, в котором происходит запись в журнал; Создание через второй фабричный метод LogManager.GetCurrentClassLogger(), пользуясь данным методом, мы предоставляем возможность экземпляру логгера самому узнать полное квалификационное название класса, в котором произошла запись в журнал. Теперь привнесем изменения в наш созданный проект: using System; using NLog; namespace NLogUnderstanding {     class Program     {         static void Main()         {             Logger logger = LogManager.GetCurrentClassLogger();               log.Trace("trace message");             log.Debug("debug message");             log.Info("info message");             log.Warn("warn message");             log.Error("error message");             log.Fatal("fatal message");         }     } } После компиляции проекта у нас создается файл с текущей датой и в него внесутся следующий записи: 2015-05-06 14:33:46.0911 | TRACE | NLogUnderstanding.Program | trace message 2015-05-06 14:33:46.1380 | DEBUG | NLogUnderstanding.Program | debug message 2015-05-06 14:33:46.1380 | INFO | NLogUnderstanding.Program | info message 2015-05-06 14:33:46.1536 | WARN | NLogUnderstanding.Program | warn message 2015-05-06 14:33:46.1536 | ERROR | NLogUnderstanding.Program | error message 2015-05-06 14:33:46.1693 | FATAL | NLogUnderstanding.Program | fatal message Теперь можно приступать к внедрению NLog в Ваш проект, и отслеживать состояние ваших объектов. P.S. Если вы планируете применять слежение за состоянием вашего проекта, то экземпляр логгера нужно будет создавать в нужных для отладки классах. В следующей части я опишу, как применять логгирование в веб проектах на основе ASP.NET MVC.
Мобільне тестування

Автор: Редакция ITVDN

Введение В первые годы после появления мобильных устройств их отладка была настоящей проблемой. Несомненно, Вы можете взять устройство и выполнить визуальную оценку его работы, но что Вы сделаете после обнаружения ошибки? Из-за отсутствия средств отладки разработчикам приходилось использовать разные виды хаков и взломов. В целом, эти взломы были попыткой воссоздать определенную проблему в настольном браузере и затем отладить с Chrome Developer Tools или подобными настольными инструментами. Разработчик, таким образом, получает возможность уменьшить окно браузера компьютера для тестирования, быстро реагирующего веб-сайта или изменения «Пользовательского агента» (User Agent), чтобы имитировать определенное мобильное устройство. Но эти взломы не работают. Воссоздание проблемы на рабочем столе не гарантирует корректную работу всех ваших исправлений. Более того, Вам придется постоянно перемещаться между браузером компьютера и мобильным устройством. Эмуляторы и средства моделирования Конечно, тестирование на реальных устройствах удобное и надежное. Но также необходимо проводить тест на эмуляторах и симуляторах. Такое тестирование позволяет расширить набор устройств, на которых Вы можете провести испытание, а также быстро и легко проверить работу программы после внесения небольших изменений. СРЕДСТВО МОДЕЛИРОВАНИЯ IOS Существует много способов тестирования устройств на iOS (iPhone или iPad). Из них основной – Apple iOS Simulator (официальный). Как часть XCode, это средство моделирования позволяет Вам провести тест с помощью комбинаций программного аппаратного обеспечения, но исключительно на Mac.   Сначала установите и откройте Xcode. После щелкните правой кнопкой и нажмите “Show Package Contents”. Перейдите к “Contents” → “Applications” → “iPhone Simulator”. Средство моделирования iOS сложно найти, но оно простое в использовании. Откройте Safari в средстве моделирования и протестируйте свой веб-сайт. Вы можете переключиться между разными iPhone и iPad устройствами, повернуть область просмотра, изменить версию iOS.. Примечание: тем, кто не использует Mac в работе, лучше найти другую опцию. Вы можете обратиться к iPadian, симулятору iPad на базе Windows. Кроме того, существует ряд других средств моделирования, например, определенные веб-предложения. Но все они не очень перспективны. ЭМУЛЯТОР ANDROID Существует также эмулятор Android. Он кроссплатформенный. Но, к сожалению, установка его достаточно непростая. Сначала загрузите пакет, включающий Android Development Tools (ADT) для Eclipse и Android software development kit (SDK). После следуйте инструкциям Google, чтобы установить пакеты SDK, проверьте и установите настройки по умолчанию, а потом установите “Intel x86 Emulator Accelerator (HAXM installer)”. Вам нужно будет также установить HAXM (IntelHaxm.dmg на Mac и IntelHaxm.exe на PC). Создайте Android virtual device (AVD) для устройства, которое тестируете. Если Вы откроете менеджер AVD, увидите список предварительно установленных устройств в “Device Definitions”. Выберите одну из этих предварительных установок и кликните по “Create AVD” для того, чтобы начать. Установите любой CPU и установите “No skin“ и “Use host GPU”. Далее, у Вас есть возможность запустить виртуальное устройство, а также использовать браузер Android для испытания веб-сайта. Наконец, Вы, вероятно, захотите узнать некоторые команды клавиатуры, чтобы облегчить работу с эмулятором. Примечание: Manymo – альтернативный эмулятор Android в браузере. Вы можете встроить Manymo в веб-страницу. ДРУГИЕ СРЕДСТВА МОДЕЛИРОВАНИЯ И ЭМУЛЯТОРЫ: Средства моделирования BlackBerry Эмулятор Windows Phone для Windows 8 Эмулятор Opera Mini УДАЛЕННОЕ ТЕСТИРОВАНИЕ Невозможно быть уверенными в точности теста, если Вы используете только эмуляторы и симуляторы. Всегда тестируйте на как можно большем количестве реальных устройств. Конечно, Вы не должны покупать огромное количество телефонов и планшетов. Вы можете использовать удаленные ресурсы тестирования, обеспечивающие веб-интерфейс, чтобы взаимодействовать с реальными устройствами. Вы сможете работать с телефоном удаленно, наблюдая любые изменения на экране. Если Вы хотите протестировать устройство Samsung, например, Galaxy S5, советуем воспользоваться бесплатно Samsung Remote Test Lab. Так Вы получите возможность протестировать Ваш продукт на устройствах Samsung. Кроме того, советуем Вам использовать Keynote Mobile Testing. Данные ресурсы предоставляют возможность испытать продукт на большем числе устройств. Они недешевые, но доступ к ряду устройств бесплатный. Примечание: если Вы надеетесь доставать реальные устройства, Open Device Lab может указать для Вас список ближайших лабораторий для тестирования. Удаленная отладка Удаленная отладка сталкивается с множеством проблем, связанных с мобильной отладкой. Как Вы сможете получить значимую отладочную информацию от маленького и относительно недостаточно мощного устройства? Удаленные средства отладки обеспечивают соединение настольного компьютера с мобильным устройством. Так Вы можете отладить мобильное устройство, используя средства разработки на настольной машине, которая, несомненно, более мощная. IOS С выпуском iOS 6.0 Вы получили доступ к инструменту, позволяющему использовать Safari Web Inspector, чтобы отладить устройства на iOS. Включите на своем устройстве на iOS удаленную отладку: зайдите в “Параметры настройки” → “Safari” → “Advanced” и включите “Web Inspector”. Теперь Вы готовы начать работу. Затем физически присоедините свое устройство к ПК, используя USB-кабель. Откройте Safari (версия 6.0 или выше) и в “Preferences” → “Advanced” выберите “Show Develop menu in menu bar”. В меню “Develop” Вы должны видеть свое iOS устройство вместе со страницами, открытыми в мобильном Safari. Выберите одну из этих страниц и у Вас под рукой будет широкий диапазон инструментов разработчика. Например, испытайте DOM Inspector, позволяющий Вам коснуться элементов DOM на своем мобильном устройстве и видеть отладочную информацию на рабочем столе. DOM Inspector - только начало, инструменты разработчика iOS обеспечивают тонну функций, таких как: временная шкала, чтобы отследить сетевые запросы, расположение и задачи рендеринга и JavaScript; отладчик, позволяющий установить контрольные точки и профилировать JavaScript; консоль JavaScript. Прочитайте “Safari Web Inspector Guide” и Вы узнаете, что еще можно сделать, используя этот инструмент. Примечание: Как и с симулятором iOS, Вы можете сделать удаленную отладку для iOS только на Mac OS X. ANDROID Как и у iOS, у Android есть удаленное решение для отладки. Инструменты в нем позволяют Вам отладить устройство на базе Android от настольной машины, используя Chrome’s Developer Tools. Удаленная отладка Android – кроссплатформенная. Сначала перейдите к “Settings” → “About Phone” на Вашем Android 4.4 + телефон (или “Settings” → “About Tablet”). Потом семь раз коснитесь “Build Number”. Вы увидете сообщение о том, что стали разработчиком. Вернитесь к основным параметрам настройки и в “Developer Options”. Включите “USB debugging”. Войдите в свой настольный браузер Chrome и введите about:inspect в строке поиска. Включите “Discover USB devices”, тогда Ваше устройство появится в меню. Вы должны также увидеть открытые в мобильном браузере вкладки. Выберите любую вкладку, которую Вы хотите отладить, и получите доступ к таким инструментам: DOM Inspector; Панель исходного кода, чтобы наблюдать за JavaScript и установить контрольные точки остановки; Сетевая панель внешних ресурсов; Консоль JavaScript. Примечание: Вы можете также удаленно отладить с эмулятором Android. WEINRE Вы узнали, как можно отладить разные устройства удаленно. Но в том случае, если Вам нужно отладить iOS на Windows или на Linux или отладить такие устройства, как Windows Phone или BlackBerry, воспользуйтесь Weinre, работающим с абсолютно любым устройством. Установка Weinre сложна, потому что его необходимо установить как на сервере, так и на странице. Чтобы начать, установите Node, потом установите модуль Weinre со следующей командой: npm install –g weinre После запустите сервер отладки, используя ваш IP-адрес: weinre --boundHost 10.0.0.1 Примечание: Удостоверьтесь, что Вы прописали свой IP в команду. Вы найдете IP на Mac, используя команду ipconfig getifaddr en0, и на Windows, используя ipconfig. Затем перейдите к серверу разработки, который выведен Weinre в консоли (localhost:8080). Здесь смотрите на раздел “Target Script” и копируйте тег . Его нужно вставить на страницу, требующую отладки. Наконец, нажмите на ссылку наверху этой страницы для пользовательского интерфейса и для отладки клиентов (http://localhost:8080/client/#anonymous). Как только Вы открываете страницу в своем устройстве, Вы увидете его в списке целей. Примечание: Если соединение устройства с localhost вызывает затруднения, рассмотрите установку общедоступного туннеля с ngrok. Вы можете использовать удобные инструменты, например Инспектор DOM: После окончания начальной установки Weinre поможет Вам отладить любое устройство в любой сети. Хотя, собственные решения для iOS и Android мощнее, чем Weinre. Например, в нем невозможно использовать панель “Sources”, чтобы отладить JavaScript. Примечание: Ghostlab - другая удаленная опция тестирования, которая поддерживает многочисленные платформы. Заключение Мы узнали, как установить лабораторию тестирования, используя эмуляторы, симуляторы, удаленные инструменты тестирования, также и физические устройства. Вы теперь можете протестировать мобильное приложение или веб-сайт через разнообразные устройства и платформы. Также советуем Вам использовать удаленные средства отладки, предоставляющие полезную информацию непосредственно от мобильного устройства. Источник: http://www.smashingmagazine.com/2014/09/03/testing-mobile-emulators-simulators-remote-debugging/
Базові шаблони JavaScript

Автор: Антон Гончаров

Прежде всего стоит освежить память и немного повторить основы. JavaScript – объектно-ориентированный язык программирования. Чаще всего в сценариях JS вы будете встречать объекты. Элементарные типы данных JS: числа строки булевые(true/false) null undefined Объект в JS – это коллекция пар ключ/значение. Если же свойством объекта выступает функция, это свойство называют – методом. Разновидности объектов в JS : Собственные объекты: встроенные (Array, Date) пользовательские (var b = {};)      2. Объекты окружения: window объекты DOM Прототип: Для использования наследования обычно применяют прототип. Что такое прототип – это объект. Каждая создаваемая функция получает свойство prototype, который ссылается на новый пустой объект. Что такое Шаблон : это повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования у часто возникающего контекста. решение типичной задачи(эффективный прием). Что делают шаблоны: помогают писать более еффективный программный код, используя наработанные приемы. помогают абстрактно мыслить программисту, не погружаясь в детали, пока этого не требует ситуация. упрощает общение разработчиков, упоминание какого-либо приема сразу вносит ясность. Типы шаблонов: шаблоны проектирования шаблоны кодирования антишаблоны Рассмотрим основные приемы написания качественного кода на JS. Правила написания качественного кода: удобочитаемость (вы или человек, который будет после вас читать код, должен легко и быстро его понимать) документация (опять же, для понимания написаного вами кода) предсказуемость (опять же, вытекает из первого) непротиворечивость (отдельные составляющие программы не должны противоречить друг другу) Первый прием(шаблон) на пути написания качественного кода  – сведение к минимуму количества глобальных переменных. Стараемся объявлять переменные в теле функций(так как мы помним, что функция есть локальной областью видимости). Любая переменная, объявляемая не в теле другой функции, является свойством глобального объекта window. Почемy же нам стоит избегать глобальных переменных ? Они доступны всему приложению, соответсвенно, могут конфликтовать/перезаписываться. Решение – использование слова var при объявлении переменных.  function mult(x, y) {     //антишаблон - глобальная переменная     res = x * y;     return res; }; function mult(x, y) {     //локальная переменная     var res = x * y;     return res; }; function antiPat() {     // антишаблон - использование нескольких операций присваивания     // переменная res - локальна, переменная glob - глобальна     // потому как присваивание выполняется справа налево     // glob = 5 - в данном случае необъявленная переменная     // операция эквивалентна var res = ( glob = 5 );     var res = glob = 5; }; function antiPat() {     //решение : зарание объявить переменные;     var res, glob;     res = glob = 5; }; Также переменные, объявленные с помощью слова var, не могут быть удалены, используя оператор delete. var global0 = 5; global1 = 10;                            // антишаблон (function () { global_inFunc = 15 }());         // антишаблон //пытаемся удалить delete global0;                                 // false delete global1;                                 // true delete global_inFunc;                           // true //проверяем typeof global0                                  // 'number' typeof global1                                  // 'undefined' typeof global_inFunc                     // 'undefined' В строгом режиме ('use strict';) присвоение значения необъявленной переменной вызовет ошибку. Глобальный объект var global = (function () { return this }()); Получаем доступ к глобальному объекту, потому как ссылка this указывает на глобальный объект. Единственная инструкция var function func () {     var x = 5, y = 10, mult = x * y, someObj = {}, k, l, m;     return … }; У такого приема есть ряд приимуществ: легко найти переменную(они все в одном месте) уменьшает количество логических ошибок уменьшает количество глобальных переменных(так как мы их объявили локально уже) повышает удобочитаемость кода Подъем //антишаблон some = 'global';                  //глобальная переменная function example() {     alert(some);           //undefined     var some = 'local';     alert(some);           //'local' }; example(); Почему так происходит? Потому что в JS интерпретатор проходит по областям видимости на первом этапе обработки кода и собирает объявление переменных фунций и формальных параметров. В локальной области видимости переменная some неопределена (undefined). Она существует как глобальная переменная и как локальная. Такое поведение именуется подъем (hoisting). Второй этап выполнения кода интерпретатором – создание функций-выражений и необъявленных переменных. Циклы for function func (){     var i,  max, sampleArray;     for ( i = 0; max = sampleArray.length; i < max; i++ ) {         //    произвести действия над sampleArray[i]     } }; Используя такой шаблон, значение свойства length будет извлекаться единожды, что увеличит драгоценную скорость работы. var i, sampleArray = []; for (i = sampleArray.length; i--;) {     //    произвести действия над sampleArray[i] }; Считаем итерации обратно от максимального значения к нулю, потому как сравнение с 0 эффективнее, чем сравнение с длиной массива. var sampleArray = [],i = sampleArray.length; while(i--){ //    произвести действия над sampleArray[i]}; Такие изменения будут ощутимы на участках приложения, где необходима максимальная производительность. Циклы for-in Циклы for-in используются для обхода объектов (не массивов – это возможно, но не рекоменуется). var car = {     doors: 4,     wheels: 4,     engine: 1 }; // расширяем функционал // добавляем ко всем объектам метод ride if (typeof Object.prototype.ride === 'undefined') {     Object.prototype.ride = function () { }; }; // Теперь все объекты через прототип имеют доступ к методу ride() // чтобы отбросить метод при перечислении свойств необходим // метод hasOwnProperty() для того, чтобы отфильтровать свойства прототипа var i, hasOwn = Object.prototype.hasOwnProperty; for (i in car) if (hasOwn.call(car, i)) {     console.log(i, ' : ', car[i]); }; Для каждого собственного свойства объекта выполнить кусок кода в фигурных скобках. Расширение prototype Данный шаблон следует использовать очень аккуратно. Даже если вы предупреждаете свою команду в докумментации (что является более предпочтительным и для новой комманды) или устно (недопустимо). If ( typeof Object.prototype.someMethod !== 'function' ) {     Object.prototype.someMethod = function () {         //do something...     }; }; Приведение типов // шаблон var number = 0; if (number === false) {     // не выполнится потому как number это 0, а не false }; // антишаблон if (number == false){ // инструкция выполнится }; Во избежание двузначности старайтесь использовать однозначную трактовку кода. Шаблоны eval(), setInterval(), setTimeout() Старайтесь не использовать в своих сценариях eval(). Функция принимает строку и выполняет её как програмный код. А это уже ставит под удар безопасность приложение, так как eval() выполнит код хакера. Возможно, эта функция понадобится вам во время динамической генерации кода, тогда лучше заменить eval(), как пок­азано ниже: // антишаблон var property = 'name'; alert(eval('obj.' + property)); // лучше заменить на var property = 'name'; alert(obj[property]); Функциям setInterval(), setTimeout() и конструктору  Function() старайтесь не передавать в качестве аргумента строки. По тем же причинам , что и функция eval(). // антишаблон setTimeout( 'someFunc()', 5000); setTimeout( 'someFunc(1, 2, 3)', 5000); // заменить на setTimeout( someFunc(), 5000 ); setTimeout( function(){ someFunc(1, 2, 3); }, 5000); Если по каким-либо причинам вам все-таки приходится применять функцию eval(), оберните её в самовызывающуюся функцию, этот шаблон поможет вам создать локальную область видимости, предотвратит перетирание переменных и предотвратит создание глобальных переменных. Также конструктор Function() отличается от  eval() тем, что ему доступна лишь глобальная область видимости. (function () {     var local = 1;     eval('local = 3; console.log(local)');      // результат 3     console.log(local);                         // результат 3 }()); (function () {     var local = 1;     Function('console.log(typeof local);')();// результат undefined }()); Применяйте приведенные в этой статье шаблоны, эксперементируйте. Старайтесь создавать код, понятный и другим разработчикам. Одно из самых главных приоритетов при написании кода- это простота. Как говорится в знаменитой пословице: “Все гениальное просто.” На этом пока все. Желаю всем красивого кода. Всем спасибо!
Notification success