Результаты поиска по запросу: видеокурс c*
Три изменения в 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/
Метрики программного обеспечения в Visual Studio
Автор: Артем Верещака
Введение
Метрика программного обеспечения (англ. Software metric) – это некая мера определенного свойства программного обеспечения или же его спецификаций. Как известно, мера – это средство измерения. Важно понять, что мера - это числовое значение. Таким образом, метрика программного обеспечения будет показывать некое числовое значение определенного свойства ПО.
Мы не будем углубляться в теорию, так как ее можно найти в свободном доступе довольно легко. Мы займемся практической частью данного вопроса. А именно: как нам использовать метрики для улучшения кода?
Метрики в Visual Studio
Стоит заметить сразу, что метрики подвергаются критике. Это, как минимум, поверхностно и неточно. Мы вернемся к этому после того, как поймем о чем речь. Рассматривать мы будет все на примере Visual Studio 2015 RC. Сперва, откроем проект для изучения.
Далее, мы можем видеть вкладку Analyze
В этой вкладке мы видим Calculate Code Metrics for ...
Это нам и нужно. Разница лишь в том, что будет анализироваться. Или же выбранные проекты в Solution Explorer, или же сразу весь Solution. После нажатия придется немного подождать. Время зависит от конфигурации Вашего компьютера. Когда анализ будет завершен, Вы увидите внизу окно
Здесь будет видна иерархия всего Solution. В моем случае это отдельная dll библиотека и проект. Когда развернем библиотеку, мы увидим следующий уровень иерархии, и так далее
Теперь давайте разберемся со столбцами дальше.
1. Maintainability Index – это комплексный показатель качества кода. Эта метрика рассчитывается по следующей формуле:
MI = MAX(0, (171 — 5.2 * ln(HV) — 0.23 * CC — 16.2 * ln(LoC)) * 100 / 171)
HV – Halstead Volume, вычислительная сложность. Чем больше операторов, тем больше значение этой метрики;
CC – Cyclomatic Complexity (Эта метрика описана ниже);
LoC – количество строк кода (Эта метрика описана ниже).
2. Cyclomatic Complexity – показывает структурную сложность кода. Иными словами, количество различных ветвей кода. Считается на основе операторов в Вашем коде, строя графы переходов от одного оператора к другому. К примеру, оператор if-else увеличит эту метрику, потому что здесь будут разные ветви выполнения.
3. Depth of Inheritance – глубина наследования. Для каждого класса эта метрика показывает, насколько глубоко он в цепочке наследования.
4. Class Coupling – указывает на зависимость классов друг от друга. Проект с множеством зависимостей очень трудно и дорого поддерживать.
5. Lines of Code – количество строк кода. Напрямую используется редко. В наши дни, с множеством разнообразных как подходов к программированию, так и языков, эта метрика дает нам мало полезной информации. Если брать во внимание отдельный метод, то можно разбить его на несколько методов поменьше.
Использования метрик
Изначально стоит обращать внимание на Maintainability Index. Старайтесь придерживать его около 70-90. Это значительно облегчит сопровождения кода как Вами, так и другими программистами. Иногда стоит оставить его на уровне 50-60, так как переписать некоторые участки кода бывает очень затратным. Оценивайте здраво как код, так и Ваши возможности с затратами.
Стоит также уделить много внимания Class Coupling. Эта метрика должна быть как можно меньшей. Ведь она так же способствует поддержке кода. Для оптимизации возможно придется пересматривать дизайн проекта и некоторые архитектурные решения.
Теперь стоит уделить внимание Cyclomatic Complexity. Эта метрика показывает сложность кода, а это так же влияет на поддержку кода в будущем. Иногда приходится переписывать куски кода, которые писали до Вас другие люди, так как Вы просто не можете понять, что, как и зачем в этом методе. Конечно, этому еще способствует стиль кода и идея, но не забывайте о Cyclomatic Complexity при рефакторинге.
Критика
А теперь вернемся к критике. Вы, наверняка, заметили, что мы использовали на практике не все метрики, но они могут быть частью остальных, как в случае с Maintainability Index. Но стоит понимать, что оценивать качество работы программиста, исходя из метрик, нельзя. Это очень неточно и поверхностно. Иногда просто нет другого способа решения задачи, а иногда это бывает затратным. Также есть человеческий фактор, о котором не стоит забывать. Метрики бывают искаженными, ведь программист может стремится написать не эффективное и правильно решение, а оптимизировать показатели этих же метрик.
Вывод
С таким инструментом в руках Вы можете быстро и относительно легко сделать review проекта и найти его уязвимые места. Также можно постоянно мониторить метрики и делать даже некие выводы об усталости работника или его отношении к работе. Более того, можно увидеть динамику роста качества кода каждого программиста. Но здесь стоит отчетливо понимать все детали так, как мы говорили об этом в критике.
Ну и одно из самых важных, следить за недопустимыми значениями, при которых хорошо было бы провести рефакторинг кода.
Популярные теги в теме письма для групповой рассылки
Автор: Infopulse
Введение
На сегодняшний день внутренние письменные коммуникации – неотъемлемая часть повседневной работы в любой компании. Каждый день ваш почтовый ящик будет пополняться разного рода информационными сообщениями от ваших коллег и, разумеется, от административного аппарата вашей компании или компании заказчика.
Нередко вы сами будете становиться автором рассылок с полезной информацией или будете вынуждены попросить помощи у вашего коллектива. Именно поэтому мы разберемся с вами с самыми простыми правилами ведения корпоративной переписки.
Стоит помнить, что информация, рассылаемая на всех специалистов команды/отдела/компании, должна быть тщательно продуманна и проверена, а сама рассылка должна быть обоснованной.
Зачастую в компаниях принято организовывать несколько почтовых групп, таких как All-Corporate – которая используется в тех случаях, когда необходимо уведомить всех сотрудников об изменениях бизнес-процессов компании, разного рода общекорпоративных событиях, или по поводу вопросов, которые являются значимыми для всех специалистов без исключений. Будучи получателем такой рассылки стоит помнить об особенности ответов на подобные письма. Если у вас возникла потребность уточнить что-либо у специалиста, отправившего вопрос или сообщение на группу All-Corporate, это делается через индивидуальное письмо, т.е. через нажатие кнопки Reply, использование Reply to All должен иметь весомые обоснования и не применяется без особой на то необходимости.
Более популярная рассылка имеет название Informal, она используется в том случае, когда необходима помощь от сотрудников в решении каких-либо узкоспециализированных рабочих вопросов и зачастую для решения срочных, очень важных нерабочих (личных) вопросов.
Ниже приведем краткий список тегов, которыми помечают тему письма для упрощения фильтрации подобных писем адресатами.
[HELP]
Сообщения с просьбой о помощи, в любых жизненных ситуациях: поиск детского врача для ребенка, аренды жилья, поиск доноров или волонтеров.
[SKILLS]
Сообщения о поиске специалистов внутри компании, которые могут провести консультацию и поделиться своей экспертизой в определенной сфере или специализации.
[FAREWELL]
Сообщения от сотрудников, которые покидают компанию. Зачастую принято оставлять свои личные контакты для поддержания отношений.
[ALERT]
Сообщения, которые уведомляют о вопросах личной безопасности сотрудников (личной и имущества)
[GREETINGS]
Поздравление сотрудников с праздниками: дни рождения, рождение ребенка, свадьбой и т.д.
[SPORT]
Сообщения с приглашениями на спортивные события, информация о деятельности корпоративных спортивных команд и т.д.
[LOST&FOUND]
Сообщения о потерянном или найденном имуществе на территории офиса или во время общекорпоративных мероприятий.
[SPAM] [SALE]
Сообщения о продаже и покупке
[SPAM] [RENT]
Сообщения о найме, аренде квартир.
[SPAM] [LEISURE]
Сообщения о поиске компании для проведения совместного отдыха (поход в горы, поход в кафе, хобби и т.д.).
[SPAM] [PETS]
Сообщения о покупке, продаже, раздаче домашних животных.
Если у вас возникли трудности с определением, в какую группу или с какими тегами писать то или иное письмо – вы всегда можете обратиться за советом в ваш HR-департамент.
Помните, что ваше электронное письмо зачастую является первым шагом в построении отношений с заказчиками и партнерами. К его созданию стоит относиться с особым вниманием, соблюдая не только правила грамматики речи и пунктуации, но и помня о неписанных правилах построения партнерских отношений, этики и корпоративной культуры. На сегодняшний день ваша переписка – это костюм, по которому вас встречают как старые знакомые, так и рекомендуют новым, следите за опрятностью и собственным стилем.
Элементарные и ссылочные типы
Автор: Александр Марченко
Введение
Элементарные и ссылочные типы, или элементарно-ссылочный дуализм на примере строк в JavaScipt.
Одно из ключевых правил языка JavaScript состоит в особенностях выполнения операций над элементарными типами данных и ссылочными типами. Так, числа и логические величины являются элементарными типами данных, операции над ними выполняются по значению, они состоят из относительно небольшого и заранее определенного числа байт, поэтому операции над ними легко выполняются даже низкоуровневым интерпретатором JavaScript.
Примером ссылочных типов являются объекты. Что касается массивов и функций – они являются специализированными типами объектов, поэтому также представляют собой ссылочный тип данных. Эти типы данных характеризуются произвольным количеством свойств и элементов, поэтому операции над ними выполняются намного сложнее. В случае массивов и объектов больших размеров, операции по значению могут привести к избыточному копированию и сравнению огромных объемов памяти, что легко может поставить под сомнение оптимальность использования клиентских ресурсов.
Примером работы с элементарными типами послужит следующая пара инструкций:
var a = 5; // переменная с именем a хранит значение 5
var b = a; // производится операция копирования, исключительно по значению: переменная с именем b хранит другое значение 5 (его дубликат)
другим примером может послужить изменение значения внутренней копии переменной:
var a = a + 5; // эта строка изменяет только внутреннюю копию переменной с именем a, перезаписывая в нее значение 10
Что касается работы со ссылочными типами, простейшим примером послужит набор операций над двумя массивами:
var myArray = [10, 20, 30, 40]; // создаем переменную ссылочного типа, а именно массив с именем myArray состоящий из четырех элементов
var otherArray = myArray; // присваиваем новой переменной с именем otherArray первую перменную, при этом, копирование значений из переменной с именем myArray не производится, мы разрешаем новой переменной работать со значениями из первой.
otherArray[0] = 110; // так изменив якобы значения ново-созданной второй переменной, на самом деле мы производим операцию перезаписи значений из первой переменной.
alert(myArray); // отобразим значение 110,20,30,40
Стоит отметить, что строки, которые, на первый взгляд, могут восприняться в качестве ссылочного типа в силу неограниченности своей длины, что касается JavaScript, то строки зачастую рассматриваются с позиции элементарного типа из-за того, что не являются сущностью с природой объекта. Что же касается реальных случаев, то строки не могут вписываться в двойственный элементарно-ссылочный тип.
Строки нельзя представить объектами, поэтому можно предположить, что их можно отнести к элементарному типу, но такого рода ситуация может привести к непроизвольному расходованию системных ресурсов, в случае произведения операций по значению, в силу возможности задания произвольной длины строки. Поэтому в JavaScript нельзя изменить содержимое строки, пусть даже существует специальный метод charAt(), который после вызова вернет символ из заданной строки, но не существует метода setChartAt(), который мог бы ввести на это место другой символ. Строки в JavaScript преднамеренно созданы как неизменяемые сущности, в нем отсутствуют элементы языка, предполагающие возможность изменения символов в строке.
Несмотря на то, что невозможно определить, каким образом производится копирование строк, есть возможность определить, как производится сравнение строк – по ссылке или же по их значению.
<script>
var row1 = "hello world";
var row2 = "hello " + "world";
if (row1 == row2) {
alert("строки сравниваются по значению")
}
script>
Поскольку мы сравниваем абсолютно разные строки, состоящие из одинаковых последовательностей символов, но они интерпретируются как эквивалентные, следовательно, увидим соответствующую надпись.
Важно помнить, что сравнение строк выполняется строго посимвольно и производится для числовых значений отдельного символа из общепринятой кодировки Unicode последовательно. Кроме того, сравнение символов происходит с учетом регистра, т.е. все прописные буквы будут иметь «вес» меньший, чем соответствующие строчные буквы.
var word1 = "hello";
var word2 = "Hello";
var rez = word1 < word2;
document.write(rez); // false
Также стоит помнить, что сравнение происходит от первого определения разных символов, при этом длина строки не учитывается
var word1 = "hello w";
var word2 = "hello World";
var rez = word1 > word2;
document.write(rez); // true
Порой получая знания от пользователя в виде строк, к примеру, используя prompt, возвращается строка, введенная пользователем. В таком случае нельзя сравнивать числа, полученные от пользователя, поскольку результат будет не верен.
var a = "5";
var b = "10";
var rez = a > b;
document.write(rez); // true
Посимвольное сравнение дает результат: символ ‘5’ больше, чем ‘1’.
Стоит помнить о явном преобразовании полученных значений к числовым. Использую унарный знак плюс «+»
var a = "5";
var b = "10";
var rez = +a > +b;
document.write(rez); // false
Как видим, язык JavaScript имеет много тонкостей, о которых стоит помнить при написании своих сценариев и программ. В дальнейшем вы сможете самостоятельно обнаруживать подобные особенности и грамотно ими пользоваться.
Взгляд в HTML6
Автор: Редакция ITVDN
Введение
HTML – простой язык веб-разработки, продолжающий развиваться и обновляться. Сейчас идет работа над шестой версией языка. HTML5, текущая версия HTML, считается одним из самых популярных релизов по сравнению с предыдущими версиями HTML.
Обзор HTML5
В HTML5 появились очень интересные функции, например, поддержка аудио и видео, а также возможность создания оптимизированных для смартфонов сайтов. Кроме того, он освободил разработчиков от использования атрибута type в тегах
и. Он позволил систематизировать контент, используя новые метки
,,и т. д. Однако, HTML5 все еще находится на стадии развития и не является законченным продуктом.
Понимание концепции HTML6
Представьте себе использование тега для присвоения логотипа веб-странице или тега . Было бы удобно, если бы Вы могли использовать тег
без использования нескольких идентификаторов, а сразу использовать или напрямую. Проще говоря, вместо использования
Вы можете просто использовать .
HTML6 – шестой релиз HTML с такой же структурой пространств имен, как у XML. Пространства имен XML помогут Вам использовать тот же тег, не конфликтуя с любым другим тегом. Например, тег, используемый в XHTML DOCTYPE:
xmlns:xhtml="http://www.w3.org/1999/xhtml"
В HTML6 можно будет отходить от определенных спецификаций тегов и использовать теги более понятные и удобные для разработчика.
Пример HTML6
<!DOCTYPE html>
<html:html>
<html:head>
<html:title>Взгляд в HTML6html:title>
<html:meta type="title" value="Заголовок страници">
<html:meta type="description" value="Пример заголовка">
<html:link src="css/mainfile.css" title="Styles" type="text/css">
<html:link src="js/mainfile.js" title="Script" type="text/javascript">
html:head>
<html:body>
<header>
<logo>
<html:media type="image" src="images/xyz.png">
logo>
<nav>
<html:a href="/img1">
a>
<html:a href="/img2">
a>
nav>
header>
<content>
<article>
<h1>Заголовокh1>
<h2>Подзаголовкиh2>
<p>[...]p>
<p>[...]p>
article>
<article>
<h1>Концепт HTML6h1>
<h2>Понимание основh2>
<p>[...]p>
article>
content>
<footer>
<copyright>© 2014copyright>
footer>
html:body>
html:html>
В примере кода HTML6 Вы видите теги . Эти новые элементы с двоеточиями принадлежат к спецификации W3C и HTML6. Например, элемент будет изменять заголовок в браузере, а покажет определенное изображение на экране. Все эти элементы определяются специально для пользователей и не имеют ничего общего с браузером. Они не более чем крюки для JavaScript и таблицы стилей. Они помогут сделать Ваш код более семантичным и правильным.
HTML6 APIs
В HTML6 теги будут содержать двоеточия, например, или и т.д. Давайте посмотрим на каждый тег, использованный в примере выше.
1.
<!DOCTYPE html>
<html:html>
// этот тег эквивалентен тегу
<html>
в предыдущих версиях
HTML документа -->
html:html>
2.
Этот тег – эквивалент тегу . Его цель – получение данных и скриптов, управляющих отображением контента в теге .
<!DOCTYPE html>
<html:html>
<html:head>
<html:title> -->
html:head>
html:html>
3.
Этот тег изменяет заголовок документа HTML в браузере. Он похож на тег