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

300+ курсів за популярними IT-напрямками

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

Підписка
Підписка

300+ курсів за популярними IT-напрямками

Результати пошуку за запитом: видеокурс c*
Факторизація цілих чисел

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

Введение Факторизация целых чисел позволяет раскладывать на множители (факторинг) большие числа (Int64) и проверять простоту целых чисел [1,2]. Приведем пример больших (14 ... 18-ти значных) простых чисел, которые можно использовать для тестирования или оценки. biggest 18-digit primes 999999999999999989 999999999999999967 999999999999999877 biggest 17-digit primes  99999999999999997 99999999999999977 99999999999999961 biggest 16-digit primes 9999999999999937 9999999999999917 9999999999999887 biggest 15-digit primes 999999999999989 999999999999947 999999999999883 biggest 14-digit primes 99999999999973 99999999999971 99999999999959 Кодовый модуль демонстрирует практическое использование алгоритма, написанного в C# (4.0). using System; using System.Collections.Generic; namespace Infosoft.MathShared {        /// Integers: Properties and Operations        public  static partial class Integers        { #region Prime Numbers <100              private static readonly int[] Primes =              new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23,              29, 31, 37, 41, 43, 47, 53, 59,              61, 67, 71, 73, 79, 83, 89, 97 }; #endregion              // starting number for iterative factorization              private const int _startNum = 101; #region IsPrime : primality Check              ///              /// Check if the number is Prime              ///              /// Int64              /// bool              public static bool IsPrime(Int64 Num){                     int j;                     bool ret;                     Int64 _upMargin = (Int64)Math.Sqrt(Num) + 1;;                     // Check if number is in Prime Array                     for (int i = 0; i < Primes.Length; i++){                            if (Num == Primes[i]) { return true; }                     }                     // Check divisibility w/Prime Array                     for (int i = 0; i < Primes.Length; i++) {                            if (Num % Primes[i] == 0) return false;                     }                     // Main iteration for Primality check                     _upMargin = (Int64)Math.Sqrt(Num) + 1;                     j = _startNum;                     ret = true;                     while (j <= _upMargin)                     {                            if (Num % j == 0) { ret = false; break; }                            else { j = j + 2; }                     }                     return ret;              }              ///              /// Check if number-string is Prime              ///              /// string              /// bool              public static bool IsPrime(string StringNum) {                     return IsPrime(Int64.Parse(StringNum));              } #endregion #region Fast Factorization              ///              /// Factorize string converted to long integers              ///              /// string              /// Int64[]              public static Int64[] FactorizeFast(string StringNum) {                     return FactorizeFast(Int64.Parse(StringNum));              }              ///              /// Factorize long integers: speed optimized              ///              /// Int64              /// Int64[]              public static Int64[] FactorizeFast(Int64 Num)              { #region vars                     // list of Factors                     List _arrFactors = new List();                     // temp variable                     Int64 _num = Num; #endregion #region Check if the number is Prime(<100)                     for (int k = 0; k < Primes.Length; k++)                     {                            if (_num == Primes[k])                            {                                   _arrFactors.Add(Primes[k]);                                   return _arrFactors.ToArray();                            }                     } #endregion #region Try to factorize using Primes Array                     for (int k = 0; k < Primes.Length; k++)                     {                            int m = Primes[k];                            if (_num < m) break;                            while (_num % m == 0)                            {                                   _arrFactors.Add(m);                                   _num = (Int64)_num / m;                            }                     }                     if (_num < _startNum)                     {                            _arrFactors.Sort();                            return _arrFactors.ToArray();                     } #endregion #region Main Factorization Algorithm                     Int64 _upMargin = (Int64)Math.Sqrt(_num) + 1;                     Int64 i = _startNum;                     while (i <= _upMargin)                     {                            if (_num % i == 0)                            {                                   _arrFactors.Add(i);                                   _num = _num / i;                                   _upMargin = (Int64)Math.Sqrt(_num) + 1;                                   i = _startNum;                            }                            else { i = i + 2; }                     }                     _arrFactors.Add(_num);                     _arrFactors.Sort();                     return _arrFactors.ToArray(); #endregion              } #endregion        } } Точки обзора Тест на проверку простоты 18-ти значного числа (999999999999999989), т.е. процедура, которая определяет, являются ли целые числа простыми, это лучший способ проверки факторинга программного обеспечения. Если вычисления занимают слишком много времени (например, когда используется мобильная платформа с низким уровнем обработки большого количества численных данных), возьмите меньшее число, но тоже 18-ти значное: 324632623645234523. Чтобы получить не такую тривиальную запись, как i = i + 2, или i + = 2, необходимо исходный код увеличить в два раза. i ++; i ++; Даный фрагмент кода был использован для сравнения производительности трех методов возрастания целых чисел:  using System; using System.Diagnostics; namespace IncrementEfficiencyTest {        class Program        {              private const Int64 _max = 1000000000; // 1 billion              private const int _cycles = 5;              static void Main(string[] args)              {                     Stopwatch sw = new Stopwatch();                     Console.Write("{0} on {1}", "i++;i++:", String.Concat(_cycles, " cycles with ", _max, " max: "));                     sw.Restart();                     for (int count = 0; count < _cycles; count++)                     {                            Int64 i = 0;                            while (i < _max) { i++; i++; }                     }                     sw.Stop();                     Console.WriteLine("{0} elapsed.", sw.Elapsed);                     Console.Write("{0} on {1}", "i=i+2", String.Concat(_cycles, " cycles with ", _max, " max: "));                     sw.Restart();                     for (int count = 0; count < _cycles; count++)                     {                            Int64 i = 0;                            while (i < _max) { i = i + 2; }                     }                     sw.Stop();                     Console.WriteLine("{0} elapsed.", sw.Elapsed);                     Console.Write("{0} on {1}", "i+=2", String.Concat(_cycles, " cycles with ", _max, " max: "));                     sw.Restart();                     for (int count = 0; count < _cycles; count++)                     {                            Int64 i = 0;                            while (i < _max)  { i += 2; }                     }                     sw.Stop();                     Console.WriteLine("{0} elapsed.", sw.Elapsed);                     Console.ReadKey();              }        } Чтобы минимизировать потенциальные побочные эффекты теста, следует работать в нескольких циклах (5 циклов) с последующей апроксимацией нескольких результатов тестирования и не нужно реализовывать вызовы функций , потому что оценка синхронизации может искажаться. Основываясь на статистических данных, самый быстрый способ увеличения числа Int64 в 2 раза можно достичь через составленное уравнение: i = i + 2 (5,589 сек для всей процедуры тестирования), вместе с i + = 2 (5,625 сек) и удвоением и ++; i ++;  "leading from behind" с оценкой производительности в 11,907 сек. Соответствующая поправка была сделана в факторизации первичных чисел (теперь выводится i = i + 2). Параллельный алгоритм для факторинг-теста При использовании параллельных алгоритмов факторизации можно значительно увеличить производительность теста. Параллельне алгоритмы факторизации region GetFirstFactorParallel(Int64 Num) algorithm internal static Int64 GetFirstFactorParallel(Int64 Num) {        // use concurrent stack to store non-trivial factor if found        ConcurrentStack _stack = new ConcurrentStack();        // object to specify degrees of parallelism        ParallelOptions _po = new ParallelOptions();        try        {              // return value initially set to 1              Int64 _ret = 1;              // step 1: try to factor on base 2, return if OK              if (Num % 2 == 0) return 2;              // step 2: try to factor on base 3, return if OK              if (Num % 3 == 0) return 3; #region parallel algo to find first non - trivial factor if exists              // set upper limit              Int64 _upMargin = (Int64)Math.Sqrt(Num) + 1;              // number of CPU cores              int _countCPU = System.Environment.ProcessorCount;              // max degree of parallelism set equal to _cpuCount              _po.MaxDegreeOfParallelism = _countCPU;              Parallel.For(0, 2, _po, (i, _plState) = >              {                     // starting number for inner loops (5 and 7)                     int _seed = 5 + 2 * i;                     // inner loops running in parallel;                     // notice that because input Num was already tested for factors 2 and 3,                     // then increment of 6 is used to speed up the processing,                     // thus in dual core CPU it looks like:                     // 5, 11, 17, 23, 29, etc. in first thread                     // 7, 13, 19, 25, 31, etc, in second thread                     for (Int64 j = _seed; j < _upMargin; j += 6)                     {                            // exit loop if stack contains value                            if (_stack.Count != 0) { break; }                            // check divisibility                            if (Num % j == 0)                            {                                   // push non-trivial factor to ConcurrentStack and exit loop                                   if (_stack.Count == 0) { _stack.Push(j); }                                   break;                            }                     }              }); #endregion              // return the value in ConcurrentStack if exists, or 1              return (_stack.TryPop(out _ret)) ? _ret : 1;        }        catch { throw; }        finally { _po = null; _stack = null; } } #endregion Источник: http://www.codeproject.com/Tips/155308/Fast-Prime-Factoring-Algorithm
Хто такий Type Script?

Автор: Віталій Толмачев

Введение Сегодня уже никого не удивишь выходом очередной новой технологии. Уж у нее точно будет та самая кнопка «Сделать все красиво за меня» и уж точно она будет работать как следует. Пользователи уже сравнительно спокойно относятся к выходу новых фреймворков и их освоению. Более того, даже с некоторой осторожностью. Где гарантия, что новенький всеумеющий фреймворк в обычный вторник через год не перестанут поддерживать, так как он не нашел своей широкой реализации и нужного комьюнити? Если объективно оценивать ситуацию, то Java Script победил. На сегодняшний день это самый кроссплатформенный язык. Его можно спокойно разместить как внутри страницы     <script type="application/javascript">         alert('Hello, World!');     script> Так и внутри тега     <a href="delete.php" onclick="return confirm('Вы уверены?');">         Удалить     a>Более  Более того, можно вынести в отдельный файл <head>     <script type="application/javascript" src="http://Путь_к_файлу_со_скриптом">     script> head> Он отлично себя чувствует как на стороне клиента (браузер), так и на стороне сервера. И все равно, какую платформу использует клиент. Что уже говорить о браузерных операционных системах. В IndraDesktop WebOS программный код на 75 % состоит из JavaScript, IntOS — на 70 %, eyeOS — 5 %, но в eyeOS JavaScript участвует в визуализации на клиенте, что очень важно для отлаженной работы между клиентом и сервером. Все Вы слышали о языке Java Script, а кто-то из Ваших друзей может внятно объяснить, что за ЯП такой Type Script? Кто создатель языка, какие особенности языка? Все очень просто. Человек, имея опыт создания Turbo Pascal, Delphi и даже С#, решил создать что-то еще лучше. Имя ему Андерс Хейлсберг. TypeScript представлен миру в 2012 году компанией Microsoft и был призван расширить возможности JavaScript. Код компилятора TypeScript распространяется лицензией Apache и на данный момент разработка данного языка ведётся в открытом репозитории GitHub. Имея опыт разработки в строго типизированных языках, многим программистам поведение под кодом JS не всегда является очевидным. А что, если дать языку JS поддержку полноценных классов, статическую типизацию, поддержку подключения модулей? Станет ли код очевидным, облегчит ли это рефакторинг, поиск ошибок еще на этапе разработки? Наверно, с такими мыслями проснулся однажды Хейлсберг. Все это ему удалось реализовать в TypeScript. Видимо, ни для кого уже не секрет, что на выходе из компилятора TypeScript мы получим JS код. Но идея была настолько популярна и востребована, что ИТ сообщество моментом подхватило такую инициативу. Доказательством этого может послужить наличие дополнений для TS в Vim, Emacs и даже в Visual Studio. Более того, вместе с выходом спецификации TS файлы, которые бы помогли понимать статическую типизацию, уже были среди JS-библиотек, среди которых оказался даже jQuery. Как же быть? TS неявно типизирован и в то же время поддерживает статическую типизацию. Если тип возвращаемого значения не указан, компилятор выберет type inference для вывода типа. Например, если в функцию сложения двух чисел мы передадим 2 типа numbers , то очевидно что возвращаемое значение будет также number.  function add(left: number, right: number): number {     return left + right; } Но как раз прописывание возвращаемого значения позволяет компилятору проверить правильность. В случае, если тип не может быть выведен из-за отсутствия объявления типа, тогда по умолчанию будет динамический тип any. Так же используя компилятор для TypeScript, Вам будет доступна опция создания отдельного файла декларации (тайпинга). Он будет иметь расширение .d.ts. В данном файле останутся только сигнатуры методов. Это напоминает заголовочный файл header в С/С++ declare module arithmetics {     add(left: number, right: number): number;     subtract(left: number, right: number): number;     multiply(left: number, right: number): number;     divide(left: number, right: number): number; } Такие файлы уже написаны за нас как для библиотек JS (таких как jQuery, AngularJS), так и для Node.js, забрать их можно на GITHUB Резюмируя все вышесказанное, можно сделать вывод, что язык TypeScript будет интересен, понятен и очевиден разработчикам, которые знакомы с объектно-ориентированными подходами, привыкшие к четкому пониманию, какой тип будет ожидаемым на определённом этапе выполнения инструкций. Тем, кто привык рефакторить свой код перед публикацией, а не собирать отзывы от клиента. У этого языка уж точно есть будущее!
Вступ до NUnit

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

Введение Статья рассказывает об NUnit – открытой среде юнит-тестирования приложений для .NET. В данной статье мы рассмотрим, что такое NUnit, как его загрузить и установить, создание классов тестов , а также запуск теста. NUnit - открытая среда юнит-тестирования приложений для .NET, которая позволяет создавать автоматические тесты. Даный вид тестов обладает рядом преимуществ: Высокое качество программы; Снижение стоимости; Безопасность регрессии сети Чем выше качество программы, тем меньше средств затрачивается на устранение недостатков проекта. То есть, если найти недостатки в проекте на раннем этапе, решить их будет дешевле. Загрузка и установка NUnit Вы можете скачать NUnit с сайта http://www.nunit.org/ После завершения загрузки, разархивируйте файл и запустите программу. Создание проекта библиотечного класса Теперь создадим простой класс теста, используя C#, который добавляет два показателя, и протестируем его. Чтобы создать тест класса в Visual Studio, используя С#, выполните следующие шаги: Шаг 1: Создание проекта библиотечного класса Откройте Visual Studio. Для создания проекта библиотечного класса сначала нажмите File -> New -> Project, выберите Visual C # в установленном шаблоне, выберите Class Library. Введите подходящее название (мы используем IntroNUnitTest), нажмите "OK". После того, как Вы кликнули кнопку "OK", Вы увидите Ваш проект в Solution Explorer (в правом верхнем углу Visual Studio). Шаг 2: Добавьте ссылки к Вашему проекту. Чтобы добавить ссылку NUnit к Вашему проекту, кликните правой кнопкой мыши на ссылку, выберите Add reference-> Browse, затем nunit.framework.dll и «OK». Шаг 3: Создание тестового класса. Кликните правой кнопкой мыши на Вашем проекте, выберите Add -> Class, введите имя (используем MyNUnitTestClass) и далее "Add". После того, как Вы кликнули на кнопку Add, Вы увидите класс. После того, как Вы создали класс, добавьте using NUnit.Framework. Следует соблюдать некоторые условия и понятия: Каждый класс должен содержать атрибут [TestFixure] и должен быть общедоступен. В каждом методе должен присутствовать атрибут [Test]. Оператор подтверждения об отсутствии ошибок: Булевские значения, описывающие, что должно быть ключевым словом, когда выполняется действие. Ожидаемое исключение: один из типов исключения, который мы ожидаем во время выполнения тест-метода. Установка: программа, которая запускается перед выполнением каждого тест-метода (например, регистрация в системе конкретного пользователя или инициализация одноэлементных классов). Демонтаж: программа запускается после окончания каждого тест-метода (например, удаление строк из таблицы, которые были вставлены во время теста). На примере мы постараемся сравнить две переменные х и у. Каждой переменной присвоили значение 20. В общей сложности написали 4 теста (PositiveTest, NegativeTest, ExpectedExceptionTest и NotImplementedException). Запуск тестов После написания всех тестов в тестовом классе необходимо запустить тесты, чтобы проверить, проходят ли они успешно. Для запуска тестов перейдите в папку NUnit, выберите NUnit Application (.exe) и дважды кликнике по ней, выберите команду File-> Open Project, выберите проект (в нашем случае это IntroNUnitTest.dll), затем кликаем Run. Далее Вы увидите количество тестов, которые не сработали, и количество невыполненных тестов. Если Вы хотите запустить какой-то определенный тест, кликните правой кнопкой мыши в тесте, который Вы хотите запустить, и выберите Run test(s). Другие настройки Вы также можете использовать другие настройки для запуска тестов: Testdriven.net ReSharper Jetbrains  Источник: http://www.c-sharpcorner.com/UploadFile/18fc30/introduction-to-nunit-test-driven-development-using-nunit-a/
Гібридні мобільні програми - міф чи реальність? Частина друга 2

Автор: Дмитро Івченко

Структура Ionic проекта Когда вы начинаете свой проект на Ionic, вы найдете множество файлов, которые могут ввести вас в непонимание происходящего. Давайте взглянем на конфигурационные части проекта: package.json пакеты для подгрузки NodeJS модулей bower.json пакеты для подгрузки Bower модулей config.xml все свойство для создания проекта Сordova gulpfile.js  описание для сборки проекта на GulpJS Эти файлы являются основой для вашего Ionic проекта. Они не очень отличаются от любого другого AngularJS приложения. Также у вас есть несколько папок: hooks/ не очень важна в начале разработки, тут будут находиться специфические скрипты plugins/ сюда будут установлены плагины cordova www/ именно здесь будет происходить магия Большую часть времени вы будете просто работать в WWW/ папке, поскольку код вашего приложения там. Почти всегда вы начнете с index.html и app.js внутри этой папки, которые выступают в роли позвоночника вашего приложения. Базовая разметка Когда вы работаете с Ionic, вся разметка будет в HTML файлах, что дает возможность создавать адаптивную верстку, это означает, что ваше приложение само подстроится под расширение экрана пользователя. Базовая разметка выглядит следующим образом: <body ng-app="myApp">     <ion-content>         <ion-nav-view>ion-nav-view>     ion-content> body> Этот код не очень отличается от HTML, но  вам, возможно, потребуется время, чтобы привыкнуть к некоторым пользовательским тегам Ionic и AngularJS, которые упростят разработку. Кроме  HTML, у вас также есть некоторые файлы JavaScript, которые контролируют ваше приложение и могут изменить views. В Ionic легко иметь дело с различными размерами экрана. Разрабатывая это, вы удивитесь, как легко ваше приложение работает на всех видах устройств. Навигация по вашему приложению Давайте посмотрим, как все происходит в действии с Ionic. Эта секция имеет за цель показать вам основные точки в разработке. Маршрутизация по приложению Маршрутизация страниц происходит через states, которые сконфигурированы для URL-адресов. Это означает, что вы можете указать различные состояния: дочерние, абстрактные и так далее в ваших app.js, которые будут загружаться на ваш index.html внутри ionic-view: $stateProvider             .state('tab', {             url: "/tab",             abstract: true,             templateUrl: "templates/tabs.html"             })             .state('tab.dash', {             url: '/dash',             views: {             'tab-dash': {             templateUrl: 'templates/tab-dash.html',             controller: 'DashCtrl'             }             }             })  Дополнительно можно установить файл шаблона, который принадлежит контроллеру. Эту концепцию иногда сложно понять, но это, безусловно, очень хороший обзор  всех возможных состояний вашего приложения. Панель вкладок Панель вкладок хорошо известна каждому разработчику и с states и Ionic это не трудно сделать: <ion-tabs class="tabs-positive">     <ion-tab title="Home" icon-on="ion-ios-filing" icon-off="ion-ios-filing-outline">             ion-tab>     <ion-tab title="About" icon-on="ion-ios-clock" icon-off="ion-ios-clock-outline">             ion-tab>     <ion-tab title="Settings" icon-on="ion-ios-gear" icon-off="ion-ios-gear-outline">             ion-tab> ion-tabs> Запустив этот код на эмуляторе в браузере либо на телефоне, вы увидите то, что представлено на картинке выше. Также можно заметить, что картинки на нижней панели вкладок загружены тоже с помощью атрибута icon-on. Ionic уже имеет встроенную коллекцию картинок, ваша задача заключается только в выборе подходящей. Боковое меню Боковое меню, которое вы можете вытащить, сделав привычное для вас движение, и без которого нельзя обойтись в многофункциональном приложении, создается с помощью указания, с какой стороны вы хотите спрятать данное меню. Так будет  выглядеть его общий  код: <ion-side-menus>         <ion-side-menu-content ng-controller="ContentController">     ion-side-menu-content>         <ion-side-menu side="left">     ion-side-menu>     <ion-side-menu-content>             ion-side-menu-content> ion-side-menus> function ContentController($scope, $ionicSideMenuDelegate) {   $scope.toggleLeft = function() {     $ionicSideMenuDelegate.toggleLeft();   }; }   Вот так выглядит боковое меню на одном из приложений. Довольно красиво, не правда ли? А ведь для создания такого меню вам потребуется написать не более 30 строчек кода. Styling/CSS Одним из главных преимуществ является то, как в считанные секунды вы можете присваивать вашим элементам на странице CSS классы, и это не вспоминая основ каскадных таблиц стиля. Перейдем к примерам: Bar-positive создаст на странице заголовок синего цвета. Для этого всего-то нужно дописать в div класс “bar bar-header bar-positive”. Зарезервированные слова для цвета и сам цвет были выбраны создателями, исходя из самых распространенных и приятных для глаза расцветок. Но если вам понадобится изменить его на какой- то другой, то это также легко сделать. Выводы Как видим, у разработчиков Ionic получилось довольно хорошо реализовать приятную среду для создания кросплатформенных мобильных приложений. Все, что вам нужно - это установить эти фрейворки себе на ноутбук и создать базовый проект. Запустить его на каком-либо устройстве. А потом собрать это под необходимые платформы. Результаты поразительны, когда у  вас есть  то же самое приложение на Android и IOS устройствах.
Три зміни у Visual Studio 2015, які роблять простіше розробку

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

Введение В данной статье будут рассмотрены новые функции Visual Studio 2015, упрощающие разработку, а также, как использовать эти новшества. Самые важные изменения контекстного меню программы, с помощью которых можно очень легко разрабатывать приложения: Quick Action Rename Peek definition Новое контекстное меню VS 2015 в файле кода ".cs". Давайте рассмотрим, как ими пользоваться. Зайдите в VS 2015 и создайте новый проект для их тестирования. Quick Action (Light bulb) Quick Action – новое понятие в VS 2015, предоставляющее новые атрибуты рефлектора и окно предварительного просмотра. Посмотрим, как это использовать с новым проектом в VS 2015. Запустите VS 2015 и выберите "File" -> "New" -> "Project...". Только что мы создали новый проект и открыли код файла "program.cs". Если кликнуть на используемый в текущий момент оператор, появиться лампочка – иконка Quick Action. Если кликнуть на лампочку, появится опция удаления ненужных операторов в окне предварительного просмотра. Когда Вы кликаете на ссылку Preview Changes, открывается окно предварительного просмотра изменений и выводится новый код результата после применения изменений. Давайте рассмотрим новый пример Quick Action. Если Вы пропишете следующий оператор для создания объекта класса «employee», у Вас нет класса «employee» в текущем проекте или решении, компьютер выдаст ошибку. static void Main(string[] args) {        Employee obj = new Employee()        {              Id = 101,              Name = ”Nitin”,              Salary = 12345        }; } Ошибка будет: "Employee" не может быть найден. Но в том же операторе есть ссылка быстрого действия. Если кликнуть на нее,  нам будет показано множество вариантов удаления ошибок вместе с кнопкой показа окна предварительных изменений. Если Вы выберите любую из показанных выше опций и щелкните по кнопке показа предварительных изменений, Вы снова увидите файл кода, который может послужить решением Вашей проблемы. Rename Rename… -  новая функция контекстных меню в VS 2015. Она очень полезна для переименования класса, функции, кострукции, свойства и многого другого. В VS 2015 мы можем вызвать Rename нажатием клавиш Ctrl+r. В новой версии VS 2015 также можно изменить любой текст в строке или строке комментария. Это не было возможно в предыдущих версиях, поэтому давайте рассмотрим, как этим пользовтаься. Создайте класс, а затем переименуйте его. internal class Employeee {        public Employee()        {        }        public int Id{ get; set; }        public string Name{ get; set; }        public int Salary{ get; set; } } У Вас есть класс «Employee», он должен быть переименован с «Employee» на «Emp». Нажмите правой кнопкой мыши на слово, которое нужно переименовать, и Вы увидите новую опцию Rename в контекстном меню. При нажатии на опцию Rename откроется новое окно, выберите те функции, которые Вы хотите применить. Нажмите Apply, чтобы применить изменения в Вашем коде. Peek definition В предыдущих версиях VS для того, чтобы получить определение типа, функции или определения класса в DLL-файле, нужно было нажать клавишу F12 или кликнуть правой кнопкой мыши по "Go To Definition", но это покажет код в новой вкладке и вынудит постоянно переключаться между двумя классами, что очень неудобно. Сейчас в новой версии VS есть новый параметр Peek Definition для показа определения любого класса, типа или функции в том же самом файле кода, и теперь нет никакой необходимости куда-либо перемещаться от одного файла к другому. Кликните правой кнопкой мыши по классу или функции и Вы увидите в окне предварительного просмотра его определение. После клика на Peek Definition Вы сможете увидеть определение конкретного типа или функции в том же файле кода. Это очень полезная опция для всех разработчиков, использующих функцию Go to Definition. Также появились изменения в режиме отладки в VS 2015. Источник: http://www.c-sharpcorner.com/UploadFile/8ef97c/3-incredible-changes-in-visual-studio-2015-makes-development/
Замикання у JavaScript

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

Введение Из этой статьи Вы узнаете о замыкании в JavaScript. JavaScript работает в лексической области видимости. Рассмотрим следующий пример кода, чтобы понять данное утверждение. function myapp() {     var name = "foo";     function greet() {         console.log("hello " + name);     }     greet(); } myapp(); Как видите, «greet» – внутренняя функция функции «myapp», имеющая доступ к локальной переменной внешней функции. При запуске кода, рассмотренного выше, строка «hello foo» будет отображена в консоли из-за лексической области видимости функции. В JavaScript область действия переменной либо глобальная, либо в рамках функции, в которой она объявлена. Каждая переменная поднимается наверх. Давайте рассмотрим другой код, слегка измененную версию предыдущего примера. Здесь мы возвращаем функцию «greet» из функции «myapp». Только запомните, что функция «greet» – внутренняя функция, тогда как «myapp» – внешняя. function myapp() {     var name = "foo";     function greet() {         console.log("hello " + name);     }     return greet; } var result = myapp(); result();   В результате выполнения данного кода строка «hello foo» будет также напечатана в консоли. Давайте рассмотрим, почему так происходит. Может показаться, что когда выполняется функция myapp(), локальная переменная внутри функции «myapp» не должна быть доступна для использования. Таким образом, ожидаемый результат – строка «hello undefined». Однако, мы все ещё можем использовать локальную переменную в функции, возвращаемой из функции, в которой локальная переменная была определена. Это явление называется «замыкание». Предыдущий код – фрагмент результата замыкания в JavaScript. В предыдущем примере кода присутствовало замыкание, имеющее информацию о функции и ее среде, где оно было создано. В этом случае окружение – локальная переменная. Таким образом, рассмотренное замыкание имело информацию о функции «greet» и об имени переменной. Давайте рассмотрим ещё один пример для лучшего понимания замыкания. function app(name) {     function greet(message) {         return message + " " + name;     }     return greet; } var a = app("dj"); var result1 = a("hello"); console.log(result1); var b = app("mahesh"); var result2 = b("whats'up"); console.log(result2); В данном примере кода a и b – замыкания в JavaScript. У них есть информация о функции «greet», окружении названия и сообщении переменной. Как результат, Вы увидите строку «hello dj» и «whats’p mahesh». Источник: http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/what-is-closure-in-javascript/
WebForms чи MVC?

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

Введение Когда в 2008 году компания Microsoft придумала ASP.NET MVC, у многих возник вопрос: «Зачем нужна ещё одна технология ASP.NET?». Многие считают, что ASP.NET MVC не обязательно использовать, заменив на Web Forms ASP.NET. Однако, это неправда. Оба имеют свои плюсы и минусы. В статье мы рассмотрим преимущества этих двух технологий – и каждый сможет определиться, какая из них ему ближе. Мы также объясним понятия ASP.NET, ASP.NET Web Forms, MVC, ASP.NET MVC. Опытным разработчикам в ASP.NET MVC данная статья поможет переосмыслить свои концепции. Web-технологии Когда речь идёт о web-технологиях, на ум приходит классический ASP, PHP, JSP, ROR, ASP.NET Web Forms, ASP.NET MVC и другое. Классический ASP - web-технология, созданная корпорацией Microsoft. У классического ASP было два недостатка: слишком большой, неудобный исходный код и ненадёжность. К примеру, у Вас есть текстовые поля и кнопка. Нажав на кнопку, можно проверить данные, хранящиеся на сервере. Успешная проверка означает, что данные хранятся в базе, а в обратном случае выведется определённое сообщение об ошибке. В чём проблема такого сценария? Вам нужно совершить много действий. Приложение ASP.NET ASP.NET – приложение Microsoft, его структура построена на всеязыковой среде выполнения для построения динамических веб-сайтов – для создания можно использовать такие языки: C#, VB.NET и другие. ASP.NET поддерживает две модели: Web Forms и ASP.NET MVC. ASP.NET Web Forms Корпорация Microsoft первой вывела ASP.NET Web Forms из ASP, таким образом они решили множество проблем путём создания высокого уровня абстрагирования. Web Forms включает в себя postback (постит данные на заданную страницу) и ViewState. И самое интересное в том, что для ASP.NET Web Forms не требуется написания вручную ни единой строчки кода. ASP.NET 4.0 В ASP.NET 4.0 придумали, как преодолеть некоторые трудности: появилась возможность отключать и контролировать размер ViewState; с URL routing можно предоставить собственный URL вместо физического пути; в ASP.NET 4.0 мы имеем лучший контроль над ID элементов и, таким образом, интеграция с платформой JavaScript стала проще. Шаблон MVC MVC – архитектурный шаблон. Многие используют его с Java-технологией. MVC – не новое понятие, созданное Microsoft. Однако, в MVC ASP.NET нужно разобраться. До этого стоит уточнить для себя некоторые определения – в том числе, что такое MVC. Архитектурный шаблон – то, что решает наш вопрос на суб-системном уровне или на коротком уровне модуля. Речь идет о проблеме, связанной с архитектурой проекта. Это говорит о том, как можно разделить системы, а в частности - почему. Создаются библиотеки классов, компоненты, веб-сервисы, чтобы решить данный вопрос. MVC – архитектурный шаблон, позволяющий уловить тонкую связь между input-логикой, бизнес-логикой и UI-логикой. Платформа ASP.NET MVC ASP.NET MVC – еще одна платформа web-приложений от Microsoft. В ней устранены недостатки, имеющие место в предыдущих, подобного типа платформах. Эта платформа построена на всеязыковой среде выполнения (CLR) и полностью основана на MVC-архитектуре. Источник: http://www.codeproject.com/Articles/528117/WebForms-vs-MVC#Visual_in_Web
Як розпочати навчання веб-розробці

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

Введение В этой статье мы рассмотрим некоторые инструменты, книги и ресурсы о том, как начать обучение веб-разработке. Эта статья направлена на тех, кто уже работал с HTML, CSS и JavaScript. Зачем учиться веб-разработке? Одно из главных преимуществ обучения веб-разработке – Вы получите навыки работы с большим количеством клиентов, проектов, а также научитесь контролировать собственный рабочий процесс. С чего начать? Ниже мы рассмотрим четыре языка программирования, которые стоит рассматривать прежде всего. HTML5 HTML5 – последняя спецификация HTML. Он идет рука об руку с CSS3, новейшим образцом CSS. Новая спецификация HTML позволяет создавать приложения для браузера и мобильного устройства. CSS3 С помощью CSS3 Вы сможете сделать разметку более стильной и профессиональной. Если Вы чувствуете себя достаточно опытным в CSS3, Вам стоит прочитать SVG книги. LESS LESS – это надстройка CSS, она расширяет язык CSS, добавляет в него динамику. Он вводит переменные, операции, function-like элементы. Возможность писать таблицы стилей упростит и улучшит написание кода. Less работает в браузере, в Node и Rhino. SASS Таблицы стилей становятся больше и сложнее. В работе с ними может помочь препроцессор. Sass позволяет использовать функции, не существующие в CSS, например, переменные, возможность наследования и многое другое. Составители для LESS и SASS LESS и SASS - надстройки, поэтому Вам понадобится компилятор для преобразования результата. CodeKit CodeKit – одно из лучших приложений для разработчиков и дизайнеров, работающих на Mac. CodeKit следит за всем, что Вы создаете. Приложение может исправлять ошибки и составлять код самостоятельно. Prepros Prepros – GUI-компилятор, предназначенный для предварительной обработки таких языков: Compass, LESS, Sass, Jade, Stylus, Slim, Markdown, CoffeeScript и Haml. Prepros также может обновить браузер, когда Вы меняете свой код в редакторе. С Prepros можно работать и тем, у кого система Windows. Текстовые редакторы для веб-разработчиков Sublime Text Sublime Text – текстовый редактор для кода разметки. В нем легкий пользовательский интерфейс, он удобен в эксплуатации. Atom Этот современный текстовый редактор начал пользоваться успехом совсем недавно, и этот проект пока не идеален. Он был создан веб-сервисом GitHub. Atom состоит из 50 модулей вокруг небольшого ядра с открытым кодом. Его цель - глубоко расширяемая система, стирающая различие между пользователем и разработчиком. Обучение веб-разработке с помощью книг Book Apart управляют люди, знающие веб лучше, чем 99% пользователей. Содержание этих книг всегда наивысшего качества, их легко читать, и они обеспечивают понимание процесса создания веб-сайтов. HTML5 для веб-дизайнеров Спецификация HTML5 состоит из 900 страниц, достаточно трудных для понимания. HTML5 для веб-дизайнеров - 85 интересных страниц. Когда Вы закончите ее читать, Вы не будете задавать себе вопрос, что такое HTML5, как он работает, или что нужно делать, чтобы стать лучшим веб-разработчиком. Эта небольшая книга рассказывает про все в легкой и сжатой форме. CSS3 для веб-разработчиков Если Вы не знаете, с чего начинать обучение CSS3, купите книгу Дэна Седерхольма (Dan Cederholm) (соучредитель Dribbble). Она содержит информацию о расширенных функциях, селекторах, а также о CSS3-анимации. Sass для веб-дизайнеров Sass может помочь создать интерактивные элементы. Дэн Седерхольм (Dan Cederholm) выпустил книгу, рассказывающую о Sass — процессоре предварительной обработки CSS. Это поможет нам взглянуть на CSS с другой стороны. Адаптивный веб-дизайн Чем больше предприятий создают страницы в интернете, тем больше спрос на разработчиков, способных написать код на современных языках программирования. Автор книги по адаптивному веб-дизайну - Итан Маркотт (Ethan Marcotte). Источник: http://codecondo.com/web-designers-want-become-web-developers/
Гібридні мобільні програми - міф чи реальність? Частина 1

Автор: Дмитро Івченко

Введение Мои коллеги часто задаются вопросом: ”Сколько мы еще будем писать под разные платформы отдельно?”. Им конечно нравится разрабатывать под iOS на  Obj-C или на Java под андроид, но снова и снова возникает вопрос о необходимости иметь в своей команде специалиста в обоих направлениях. Иначе вы не сможете дать доступ к сервисам всем вашим потенциальным клиентам. Если вы хотите достичь большей аудитории, потому что ваши заказчики просят об этом или вы не хотите пропустить доход от миллионов возможных пользователей, вам нужно будет сделать ваше приложение доступным (по крайней мере на двух платформах). Начните разрабатывать гибридные приложения, которые облегчат сложность разработки для нескольких платформ одновременно. Гибридное направление предполагает разработку приложений как веб-приложений, которые работают в браузере, а затем обертывание их таким образом, что они работают как родные приложения на мобильных операционных системах, таких как IOS, Android  или Windows Phone. В дополнение к одной основной полученной кодовой базе, которая значительно упрощает управление жизненным циклом вашего приложения, гибридизованные версии веб-приложения могут быть зарегистрированы с App Store компании Apple или Play Store компании Google. Эта статья призвана показать вам, как и почему вы должны придерживаться гибридного подхода в своем следующем проекте мобильных приложений. 1.2 Наступило время фреймворков Разработка начинается с выбора фреймворка, но иногда это нелегкая задача. Они вырастают, как грибы, и может быть трудно выбрать правильный. Вы можете прочитать огромное количество статей, анализировать ваши языки программирования  или рассчитать затраты и стоимость каждой из них. А можете просто открыть глаза и подумать, что на данный момент  может быть наиболее стабильным, перспективным и бесплатным веб-фреймфорком. Ответ - AngularJS. Какие есть гибридные бесплатные фреймворки, которые предоставляют разработчикам неограниченные возможности? Ответ - Cordova Давайте объединим эти два удивительных механизма, и мы получим - Ionic Framework. 1.3 Почему именно Ionic Ionic сочетает AngularJS (JavaScript) с HTML5 + CSS и использует Cordova, чтобы получить доступ к  родным  функциям устройства. Кроме того, он бесплатный, количество разработчиков и их поддержка растет с каждым днем. Так что в целом, Ionic предлагает большие возможности для создания гибридных приложений, которые не только удивительно выглядят, но также ведут себя так естественно, как родные приложения и разработаны всего на одной общей базе кода. В следующей части этой статьи будет рассмотрено как Ionic приложения могут заменить большинство из того, что вы ежедневно используете. Мы расскажем вам, как легко заменить хорошо известные компоненты из родного IOS или Android с помощью HTML5 и JavaScript, какая у них  общая  структура и как выглядит то, что вы можете достичь с гибридным подходом разработки.
Класи JavaScript

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

Введение Несмотря на то, что в JavaScript нет классов, этот язык представляет концепции объектно-ориентированного программирования. JavaScript содержит функции первого класса, это означает, что мы можем расценивать функции как объекты, то есть мы получаем возможность возвращать или передавать их в другие функции. Это позволяет нам создавать классоподобную семантику в функциях. В этой статье мы сосредоточимся на таких особенностях JavaScript: Объекты класса; Конструктор; Закрытые члены; Открытые/ общедоступные члены; Статические члены; Наследование. В этой статье термины «класс» и «функция» взаимозаменяются. Хотя это различные понятия, они используются аналогично в контексте данной статьи. Объекты класса var Person = function () { }; var person1 = new Person(); var person2 = new Person(); console.log(person1 instanceof Person);  // true console.log(person2 instanceof Person); // true Представьте себе класс Person,созданный с помощью выражения функции. Мы можем добавлять объекты этого класса, используя ключевое слово new.Каждый объект занимает отдельное место в памяти, но имеет тип Person. Конструктор var Person = function (firstName) {     this.firstName = firstName;     console.log('Instance created'); }; var person1 = new Person("Foo"); // logs "Instance created" var person2 = new Person("Bar"); // logs "Instance created" console.log('person1 is ' + person1.firstName); // logs "Foo" console.log('person2 is ' + person2.firstName); // logs "Bar" Определение функции действуют как конструктор класса Person. Аргумент функции – это параметр, переданный конструктору при создании объекта. Используя ключевое слово this, мы можем инициализировать атрибуты класса, например firstName. Закрытые члены var Person = function (firstName) {     var firstName = firstName; }; var person1 = new Person("Foo"); var person2 = new Person("Bar"); person1.firstName; // undefined person1.firstName; // undefined Область видимости firstName, находясь внутри функции Person, ограничена. Идеальный способ доступа и управление закрытыми членами класса реализуется с помощью функции accessor, похожей на setter() и getter() в Java.  var Person = function (firstName) {     var firstName; }; Person.prototype.setFirstName = function (firstName) {     this.firstName = firstName; } Person.prototype.getFirstName = function () {     return this.firstName; } var person1 = new Person(); var person2 = new Person(); person1.setFirstName('Foo'); person2.setFirstName('Bar'); person1.getFirstName(); // Foo person2.getFirstName(); // Bar Публичные члены  var Person = function (firstName) {     this.firstName = firstName; }; Person.prototype.sayHello = function () {     console.log(this.firstName + ' says Hello!'); } var person1 = new Person("Foo"); var person2 = new Person("Bar"); person1.sayHello(); // logs "Foo says Hello!" person2.sayHello(); // logs "Bar says Hello!" firstName и sayHello  – публичные члены класса Person. Они доступны и могут быть использованы вне определения функции.  Статические члены var Person = function () { } Person.firstName = "First Name"; var person1 = new Person(); console.log(person1.firstName); //logs undefined console.log(Person.firstName); //logs "First Name" Статические члены класса доступны с className, на них невозможно воздействовать объектами класса. Наследование var Person = function (firstName) {     this.firstName = firstName; }; Person.prototype.sayHello = function () {     console.log("Hello, I'm " + this.firstName); }; var Student = function (firstName, subject) {     Person.call(this, firstName);     this.subject = subject; }; Student.prototype = Object.create(Person.prototype); Student.prototype.constructor = Student; var student1 = new Student('Foo', 'Math'); student1.sayHello();   // "Hello, I'm Foo" console.log(student1 instanceof Person);  // true console.log(student1 instanceof Student); // true Student – дочерний класс класса Parent, он автоматически наследует все члены родительского класса. Мы делаем определенный вызов конструктору родительского класса, используя Person.call и убеждаемся, что прототип наследуется от Person. Этот тип наследования называется прототипным. Использование данных элементов в модуле JavaScript улучшит Ваш код и сделает его модульным. Источник : http://pankajparashar.com/posts/javascript-classes/
Notification success