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

Заказать звонок

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

Подписка

Заказать звонок

+38 099 757 27 82
Результаты поиска по запросу: design pattern
Бесплатный онлайн курс IT English для украинцев

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

Друзья, всем привет! Приглашаем на новый бесплатный онлайн курс «IT English» для украинцев от наших партнеров CyberBionic Systematics и Englishdom! Английский язык играет весомую роль для каждого IT-специалиста, поэтому инвестиции времени в его изучение никогда не будут напрасными. И у вас есть отличная возможность его усовершенствовать! Начало курса и продолжительность Курс стартует 7 февраля в 18:00. Занятия будут проходить по вторникам и четвергам в это же время – всего десять занятий продолжительностью 1 час. Программа курса: Effective Teams – 7 февраля Software Life Cycle – 9 февраля Deadlines and Project plans – 14 февраля Requirements – 16 февраля Design concepts – 21 февраля Development – 23 февраля Testing – 28 февраля Mobile app – 2 марта Gamification – 7 марта Data storage – 9 марта Что вы получите на курсе? Вы овладеете базовой деловой лексикой, грамматикой, устоявшимися конструкциями и выражениями из сферы информационных технологий. Курс позволит улучшить свои знания английского и получить сертификат после успешной сдачи финального теста. Ментор – Анастасия Шамрай, преподаватель с 5-летним опытом, окончила Brooklyn College NY (USA) и получила высшее образование в педагогическом университете (Винницкий государственный педагогический университет им. М. Коцюбинского). Для кого этот курс? Курс подойдет в первую очередь тестировщикам и разработчикам, но также будет полезен другим IT-специалистам – Product и Project менеджерам, бизнес-аналитикам и т. д. Уровень английского, который следует иметь для комфортного прохождения курса – B1 (Intermediate). Как будет проходить обучение Занятия будут проходить в формате живых вебинаров (дважды в неделю продолжительностью 1 час), на которых вы сможете задавать вопросы спикеру и получать на них ответы. Курс объединяет теорию и практику, будут домашние задания для закрепления изученного материала, а также общение в телеграме с одногруппниками. Подарки! Тех, кто лучше всех себя проявит во время прохождения курса, ждут специальные подарки! Подробности – по ссылке в конце. Условия участия Бесплатно, по предварительной регистрации. Организаторы курса: Englishdom – онлайн-школа для изучения английского с персональным преподавателем на интерактивной онлайн-платформе. Englishdom входит в ТОП лидеров рынка edtech в Европе. CyberBionic Systematics – сертифицированный учебный центр, партнер Microsoft, авторизованный центр международной сертификации VUE Pearson. С 2007 года CyberBionic Systematics предоставляет услуги по профессиональной подготовке и повышению квалификации IT-специалистов, а также on-line обучение для начинающих по направлениям FrontEnd, Java, .NET и Python. Подробности на сайте CyberBionic Systematics
Lviv IT Arena 2016

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

Lviv IT Arena 2016 соберет во Львове более 2500 ІТ специалистов из  Украины и Европы. В 2015 году Lviv IT Arena назвали лучшим IТ-событием года. В этом году организаторы решили замахнуться не на украинский, а уже на европейский масштаб. Они планируют объединить более 2500 IТ-экспертов, на стадионе Арена Львов с 30 сентября по 2 октября. Как и в прошлом году, событие будет иметь не только традиционные три потока Business, Product и Technology, но и тех-експо, и соревнования стартапов за право питчить свой проект перед международными инвесторами. А еще Lviv IT Arena 2016 будет полностью англоязычной, ведь, как отмечают организаторы, 40% участников конференции будут из других стран. На конференции уже выступали спикеры из таких компаний как Facebook, IBM Design, Amazon, Petcube, HP, Epson, SAP и Microsoft. В этом году организаторы события обещают не менее звездный состав. Участников ждут спикеры со всего мира, которые будут говорить о трендах и текущих разработках. Среди них – Алехандро Данилишин с крупнейшей в мире компании профессиональных услуг Deloitte, дизайнеры Ирен Перейра и Антон Репоннен, которые работали с Nickelodeon, BBC и National Geographic, Aaron Erickson с Thought Works и Сэми Энергин, который работает над HoloLens в Microsoft. Кроме докладов, событие готовит масштабное тех-экспо с новыми разработками и продуктами. Основные тренды, которые покажут – дроны, работы, дополненная реальность, wearables, умные дома и города, а также 3D-принтеры и IТ-решения. Формат конференции Lviv IT Arena делает ее интересной не только для разработчиков и тестеров. Событие объединит бизнес аналитиков, PMив, UI / UX дизайнеров, предпринимателей и стартеров. Организаторы уверены, что именно это гарантирует качественный нетворикинг, каждый сможет найти не только единомышленника, но и делового партнера или инвестора на событии. «Lviv IT Arena выходит на новый уровень. Мы хотим быть не только лучшим IТ-событием страны, но одним из крупнейших в Восточной Европе. Поэтому в этом году Lviv IT Arena выходит на новый международный формат, чтобы создать достаточно пространства для бизнеса и нетворкинга. В этом году мы приглашаем не только иностранных спикеров, но и 2500 участников из всего мира.» - делится планами соорганизатор события Степан Веселовский, CEO Lviv IT Cluster. Организаторы: Lviv IT Cluster, Eleks, LITS, Startup Depot, GDG, Больше о конференции, спикерах, а также расписание события – на официальном сайте. Регистрируйтесь на сайте с промо-кодом Arena4ITVDN и получите скидку 10%.  Дата: 30.09. – 02.10. Место: стадион Арена Львов, ул. Стрийская, 199 Контакты: info@itarena.lviv.ua, 067-340-09-66
Что нового в Angular 4?

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

Что нового в Angular 4? Наконец, когда обновленная технология предстала перед нами, мы можем приступить к ее изучению! То, что новый представитель семейства Angular приобрел новый номер, свидетельствует об инновационных изменениях. Но все же встает вопрос: почему Angular 4, а не 3? Все достаточно просто: так как пакет маршрутизатора был уже представлен в версии 3.x, вместо того, чтобы вносить все нововведения в версию 3.0, а маршрутизатор перенести в 4.0, разработчик решил объединить все в версии 4.0. Не стоит волноваться касательно обновления Ваших приложений к новой версии Angular: так как тех самых инновационных изменений в принципе оказалось не слишком много, процесс установки не занял больше нескольких минут. Ничего особо страшного. Среди дополнительных требований стоит упомянуть версию TypeScript 2.1 или выше (раньше требовалась только 1.8+). К тому же некоторые элементы интерфейса были изменены или вовсе упрощены (редко используемые OpaqueTolen или SimpleChange). Плюс, TypeScript 2.1 и 2.2 приобрел целый ряд прекрасных особенностей, которые теперь поддерживаются в Angular 4. К примеру, в скором времени Вы сможете использовать TypeScript-опцию stringNullChecks. Итак, что именно позволяет нам новая версия Angular? Давайте углубимся!   Ahead of Time (AoT) компиляция: обновленный движок представлений Пожалуй, это наиболее значимое изменение, пусть даже Вы, как разработчик, не ощутите разницы. Как Вы, наверно, знаете, в режиме AoT Angular компилирует Ваши шаблоны во время сборки, после чего генерирует JavaScript код (в отличие от режима Just in Time, когда компиляция происходит во время выполнения приложения). Режим AoT обладает целым рядом преимуществ, например, в случае неправильного построения шаблона ошибка возникнет во время сборки, а не во время работы приложения, как раньше. Эта методика позволяет ускорить запуск приложения, так как генерация JS-кода уже произведена. Также Вам не нужно отправлять Angular-компиляторы пользователям, что в теории должно уменьшить размер пакетов. Почему в теории? Потому что, как правило, обратная сторона медали в том, что сгенерированный JavaScript-код обычно больше, чем нескомпилированные HTML-шаблоны. Таким образом, в большинстве приложений с использованием AoT размер пакета де-факто увеличивается. Разработчики Angular хорошо поработали над новым движком представлений, что позволило производить меньше кода при использовании Ahead of Time компиляции. Эффект на больших приложениях не заставил себя ждать. Без падений производительности. Ежели говорить в цифрах, размер пакета стал: С 499 КБ до 187 КБ (или с 68 КБ до 34 КБ после gzip) С 192 КБ до 82 КБ (или с 27 КБ до 16 КБ после gzip) Достаточно большая разница! Интересно отметить, что в своих дизайн-документах команда Angular сравнивает производительность (как в контексте времени выполнения, так и в контексте нагрузки на память) с базовой имплементацией (лучшим «дефолтным» кодом JS, который они только могут написать) Angular 2.x и InfernoJS (быстрая React-подобная имплементация). Универсальность Масса работы была проделана над универсальным проектом, позволяющим производить серверный рендеринг. Когда раньше этот тип проекта поддерживался в основном силами сообщества, теперь, начиная с Angular 4, поддержка приобрела официальный характер. Анимации Анимации теперь обзавелись собственным пакетом @angular/platform-browser/animations (одна из вещей, которая может быть изменена в процессе обновления). Что это значит? Это значит, что Вам больше не нужно нагружать пакеты ненужным кодом, если вы не используете анимации. Шаблоны ng-template вместо template Тэг template устарел. Вместо него используйте ng-template. Хотя и первый вариант все еще работает. Вообще, было немного странно использовать template, так как это реально существующий HTML-тэг. Теперь же Angular обзавелась собственным ng-template. В случае, если вы используете устаревший template, будет выдано соответствующее предупреждение: это в значительной мере упростит обнаружение подобного кода в проектах. Else С новой версией Angular 4 появилась возможность использовать оператор else: <div *ngIf="races.length > 0; else empty"><h2>Races</h2></div> <ng-template #empty><h2>No races.</h2></ng-template> As Еще одно синтаксическое нововведение. Ключевое слово as позволяет упростить синтаксис let. As позволяет хранить результат переменной шаблона для дальнейшего использование в элементе. К примеру, сия особенность может быть достаточно полезной для хранения коллекции: <div *ngFor="let pony of ponies | slice:0:2 as total; index as i">   {{i+1}}/{{total.length}}: {{pony.name}} </div> Или даже более полезной, если один раз использовать pipe с async. Вместо плохого и некрасивого: <div>   <h2>{{ (race | async)?.name }}</h2>   <small>{{ (race | async)?.date }}</small> </div> Вы можете использовать: <div *ngIf="race | async as raceModel">   <h2>{{ raceModel.name }}</h2>   <small>{{ raceModel.date }}</small> </div> Различные виды pipe Titlecase Angular 4 презентует новый pipe: titlecase. Он позволяет переводить первую букву каждого слова в верхний регистр: <p>{{ 'ninja squad' | titlecase }}</p> <!-- will display 'Ninja Squad' --> Http Задание параметров поиска Http-запроса было упрощено: http.get(`${baseUrl}/api/races`, { params: { sort: 'ascending' } }); Раньше вам необходимо было произвести следующее: const params= new URLSearchParams(); params.append('sort', 'ascending'); http.get(`${baseUrl}/api/races`, { search: params }); Test Переопределение шаблона во время теста также было упрощено: TestBed.overrideTemplate(RaceComponent, '<h2>{{race.name}}</h2>'); До этого мы обычно писали так: TestBed.overrideComponent(RaceComponent, {   set: { template: '<h2>{{race.name}}</h2>' } }); Сервисы Meta Для получения содержимого или обновления meta-тэгов был введен новый сервис: @Component({   selector: 'ponyracer-app',   template: `<h1>PonyRacer</h1>` }) export class PonyRacerAppComponent { constructor(meta: Meta) {     meta.addTag({ name: 'author', content: 'Ninja Squad' });   } } Формы Валидаторы Новый валидатор позволит объединить существующие required, minLength, maxLength, и pattern. email позволит провести валидацию e-mail адреса (если Вы планируете просто обойтись подходящими регулярными выражениями – удачи в поисках). Сравнение выбранных опций Для сравнения выбранных опций была добавлена новая директива: compareWith: <select [compareWith]="byId" [(ngModel)]="selectedPony">    <option *ngFor="let pony of race.ponies" [ngValue]="pony">{{pony.name}}</option> </select> byId(p1: PonyModel, p2: PonyModel) {    return p1.id === p2.id; } Маршрутизатор ParamMap Для представления параметров URL был введен новый интерфейс: ParamMap. Вместо использования params или queryParams, отныне Вам стоит использовать paramMap или queryParamMap, так как они позволяют выбрать между get() для получения значения или getAll() для получения всех значений (так как параметры запросов могут иметь несколько значений, к примеру). const id = this.route.snapshot.paramMap.get('ponyId'); this.ponyService.get(id).subscribe(pony => this.pony = pony); Или как здесь:   .map((params: ParamMap) => params.get('ponyId'))   .switchMap(id => this.ponyService.get(id))   .subscribe(pony => this.pony = pony); CanDeactivate Интерфейс CanDeactivate теперь обзавелся дополнительным опциональным параметром, содержащим следующее состояние (то, куда Вы собираетесь перейти). Теперь можно реализовать «умную логику», когда пользователь может покинуть текущий компонент в зависимости от того, куда он или она направляется. I18n Интернационализация также медленно, но верно улучшается. К примеру, ngPlural теперь упрощен: <div [ngPlural]="value">   <ng-template ngPluralCase="0">there is nothing</ng-template>   <ng-template ngPluralCase="1">there is one</ng-template> </div> А теперь давайте сравним с тем, что было раньше: <div [ngPlural]="value">   <ng-template ngPluralCase="=0">there is nothing</ng-template>   <ng-template ngPluralCase="=1">there is one</ng-template> </div> Только что мы добавили целую главу к нашей электронной книге, включая несколько юз-кейсов и прочее! Подведем итоги Релиз Angular 4 привносит множество улучшений и действительно востребованных инноваций в сферы размера генерируемого кода, сохраняя в целом концепцию предыдущей версии Angular. Благодаря этому обновление технологии не должно вызвать затруднений. Автор перевода: Евгений Лукашук Оригинал статьи
C# против Java: какой язык программирования общего назначения выбрать?

Автор: Yoshitaka Shiotsu

Что такое C#? Что такое Java? C# vs. Java: основные сходства. C# vs. Java: основные различия. Когда стоит использовать C# или Java? C# vs Java – какой из общецелевых, объектно-ориентированных языков программирования лучше всего подойдет вам для работы? Они оба имеют обширные библиотеки, которые можно использовать для создания приложений для ПК, веб, мобильных устройств и других платформ. У обоих есть большие сообщества восторженных поклонников и много онлайн-поддержки. Имея так много общего, выбор правильного языка требует более тонкого, тщательного подхода. Давайте подробнее рассмотрим сходства и различия между C# и Java. Что такое C#?   C# – это язык программирования общего назначения, который впервые появился в 2000 году в рамках инициативы Microsoft .NET. Он был разработан для общей языковой инфраструктуры (CLI) – открытой спецификации, разработанной Microsoft и стандартизированной ISO и ECMA. Приложения C# скомпилированы в байт-код, который может запускаться при реализации CLI.   Что такое JAVA?   Java, первоначально выпущенный Sun Microsystems в 1995 году, является языком программирования общего назначения, который был разработан с конкретной целью, позволяющей разработчикам “write once, run anywhere”, то есть написать код единожды и запускать в любом месте. Java-приложения скомпилированы в байт-код, который может запускаться при реализации виртуальной машины Java (JVM). Подобно CLI, JVM помогает преодолеть разрыв между исходным кодом и 1 и 0, которые понимает компьютер. C# VS. JAVA: ОСНОВНЫЕ СХОДСТВА  Появление как Java, так и C#, тесно связано с переходом от низкоуровневых языков программирования, таких как языки программирования C++, к языкам более высокого уровня, которые компилируются в байт-код. Байт-код можно запустить на виртуальной машине. С этим связан ряд преимуществ, в первую очередь, возможность написания кода, который будет понятен человеку и будет работать на любой аппаратной архитектуре, на которой установлена виртуальная машина. Если отбросить синтаксические причуды в сторону, то неудивительно, что эти два подобные между собой языка так популярны для разработчиков приложений. Вот несколько основных сходств между C# и Java: Безопасность типов. Ошибка типа возникает, когда тип данных одного объекта ошибочно назначается другому объекту, создавая непреднамеренные побочные эффекты. И C#, и Java работают на то, чтобы гарантировать выявление таких типов незаконных приведений во время компиляции. Если приведение не может быть применено к новому типу, тогда во время выполнения такие исключения будут удалены. Сборка мусора: На языках более низкого уровня управление памятью может быть утомительным, ведь нужно помнить о том, что необходимо правильно удалить новые объекты, чтобы освободить ресурсы. На С# и Java есть встроенная сборка мусора, которая помогает предотвратить утечку памяти путем удаления объектов, которые больше не используются приложением. Утечки памяти все еще могут возникать, но благодаря основам управления памятью -  это уже не ваша проблема. Одиночное наследование. Оба языка поддерживают одиночное наследование – это означает, что существует только один путь из любого базового класса в любой из его производных классов. Это ограничивает непреднамеренные побочные эффекты, которые могут возникать при наличии нескольких путей между несколькими базовыми классами и производными классами. Diamond pattern – книжный пример этой проблемы. Интерфейсы. Интерфейс представляет собой абстрактный класс, где все методы абстрактны. Абстрактным методом является тот метод, который объявлен, но не содержит подробностей его реализации. Код, определяющий любые методы или свойства, определенные интерфейсом, должен предоставляться классом, который его реализует. Это помогает избежать двусмысленности паттерна diamond, поскольку всегда ясно, какой базовый класс реализует данный производный класс во время выполнения. Результатом является чистая иерархия линейных классов одиночного наследования в сочетании с некоторой универсальностью множественного наследования. Фактически использование абстрактных классов является одним из способов множественного наследования языков, которые могут преодолеть проблему паттерна diamond. C# VS. JAVA: ОСНОВНЫЕ РАЗЛИЧИЯ Важно помнить, что C# берет свое начало в желании Microsoft иметь собственный «Java-подобный» язык для платформы .NET. Поскольку C# не создавался в вакууме, новые функции были добавлены и настроены для решения проблем, с которыми сталкивались разработчики Microsoft, когда они изначально пытались создать свою платформу на Visual J++. В то же время сообщество Java с открытым исходным кодом продолжало расти и между этими двумя языками развивалась гонка технических вооружений. Вот некоторые из основных различий между C# и Java. Windows vs open-source. Хотя существуют реализации с открытым исходным кодом, C# в основном используется в разработке для платформ Microsoft – .NET Framework CLR и является наиболее широко используемой реализацией CLI. На другом конце спектра Java имеет огромную экосистему с открытым исходным кодом и у него открылось второе дыхание отчасти благодаря тому, что Google использует JVM для Android. Поддержка обобщений (Generics): Generics улучшает проверку типов с помощью компилятора, в основном удаляя приведения из исходного кода. В Java средства обобщений реализуются с использованием стираний. Параметры общего типа «стираются», а при компиляции в байт-код добавляются приведения. C# также использует обобщения, интегрируя его в CLI и предоставляя информацию о типе во время выполнения, что дает небольшое увеличение производительности. Поддержка делегатов (указателей): В C# есть делегаты, которые по существу служат в качестве методов, которые могут быть вызваны без знания целевого объекта. Для достижения такой же функциональности в Java вам необходимо использовать интерфейс с одним методом или другим способом обхода, который может потребовать нетривиального количества дополнительного кода, в зависимости от приложения. Проверяемые исключения: Java различает два типа исключений – проверяемые и непроверяемые. C# выбрал более минималистский подход, имея только один тип исключения. Хотя способность ловить исключения может быть полезна, она также может отрицательно влиять на масштабируемость и контроль версий. Полиморфизм: C# и Java используют очень разные подходы к полиморфизму. Java допускает полиморфизм по умолчанию, C# же должен вызывать ключевое слово «virtual» в базовом классе и ключевое слово «override» в производном классе. Перечисления (Enums): в C# перечисления представляют собой простые списки именованных констант, где базовый тип должен быть целым. Java представляет перечисления более глубоко, рассматривая его как именованный экземпляр типа, что упрощает добавление пользовательского поведения к отдельным перечислениям. Когда стоит использовать C# или Java? Язык, который вы в конечном итоге решите использовать, будет во многом зависеть от платформы, которую вы выбрали для своего проекта. Сегодня C# используется в основном для реализации CLI на .NET Framework, Mono и Portable.NET. Если ваше программное обеспечение или веб-приложение создаются для Windows, C# будет работать лучше всего с набором технологий .NET. Тем не менее, если вы хотите разрабатывать для Unix, Linux или других платформ за пределами платформы Microsoft, экосистема с открытым исходным кодом – Java – лучший выбор. Сообщество постоянно создает новые библиотеки и инструменты. Появились новые мощные языки, такие как Scala, Clojure и Groovy, и они все тоже основаны на JVM. К тому же это неплохо, что большинство реализаций JVM являются общедоступными и бесплатными. Java – основной язык разработки, который использует Google для Android – самой большой мобильной операционной системы в мире в настоящее время. Имейте в виду, что перечисленные выше преимущества незначительны, и ни один из языков не исчезнет в ближайшее время. Оба языка существуют достаточно долго и, на самом деле, вы не сможете ничего такого построить на одном языке, чего бы  не смогли построить на другом. Итог: выберите язык, который лучше всего подходит для платформы вашего проекта. Источник: https://www.upwork.com/hiring/development/c-vs-java/
Сервис поиска работы в IT для Junior специалистов на ITVDN

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

Главная задача образовательной платформы ITVDN – дать нашим студентам те знания и навыки по выбранной IT-специальности, которые будут достаточными для успешного начала карьеры. Однако овладение профессией – только первая ступень. Не меньшим испытанием является поиск работы и прохождение собеседований. Мы же не останавливаемся на обучении и хотим помочь тем, кто уже его завершил и готов сделать следующий шаг. Поэтому мы с радостью представляем наш новый раздел на сайте ITVDN – "Вакансии". Давайте мы познакомим вас с ним подробнее! Для чего мы создали этот раздел Главная цель – помочь новичкам начать свою карьеру в IT-индустрии, а именно – упростить процесс поиска первой работы/стажировки и увеличить шансы на успешный старт. На данный момент это очень актуально, поскольку рынок IT имеет сильную конкуренцию среди новичков. Ситуация еще больше усугубилась вследствие коронавирусных ограничений и полномасштабной войны. Благодаря разделу “Вакансии” ITVDN становится не только платформой для обучения, но и надежным помощником в развитии успешной карьеры в высокодинамической сфере IT. Для кого это полезно? Раздел "Вакансии" – это классная возможность для поиска первой работы тем, кто: Уже закончил обучение по специальности и находится в активном поиске своей первой работы или стажировки в IT. Находится в процессе обучения и хочет параллельно мониторить IT-рынок, чтобы поддерживать мотивацию и быть в курсе текущих требований к начинающим. Мы публикуем вакансии уровней Intern, Trainee и Junior от наших партнеров, чей стек технологий достаточно приближен к тому, которым вы можете овладеть у нас. Это позволяет новичкам быстрее находить первую айтишную гавань, а работодателям – набирать в команду нужных кандидатов, из которых можно вырастить квалифицированных IT-специалистов. Вакансии могут охватывать широкий спектр специальностей: от разработки на популярных языках JavaScript, Python, C# и Java до дизайна, тестирования, создания игр и разработки мобильных приложений под Android и iOS. Функционал страницы вакансий на ITVDN На главной странице перечень доступных вакансий, но при нажатии на кнопку "Все вакансии" вы попадаете на страницу с различными фильтрами. Пользуясь ими, вы можете отобрать интересующие вас предложения. Среди доступных фильтров: специальность, тип работы, вид занятости, уровень. Выбрав конкретную специальность, вы можете ознакомиться с деталями и откликнуться на неё, указав необходимые данные: имя и фамилию, имейл, номер телефона, удобный для общения мессенджер, и оставив собственный комментарий (по желанию). Также есть возможность загрузить резюме. Ниже на странице "Вакансии" вы найдете перечень важных и полезных вебинаров, которые помогут составить резюме, подготовиться к собеседованию, хорошо проявить себя в новой компании, успешно пройти стажировку и т. д. Приглашаем к сотрудничеству IT-компании Приглашаем представителей IT-компаний к сотрудничеству на взаимовыгодных условиях! Мы готовы оказать помощь в поиске кандидатов на позиции Intern / Trainee / Junior, которые отвечают вашим требованиям, размещая информацию о вашей компании и вакансии на сайте ITVDN в разделе "Вакансии". Размещение вакансий является бесплатным. Кроме того, мы индивидуально информируем потенциальных кандидатов об открытии новых возможностей. Больше всего у нас начинающих, прошедших обучение по следующим направлениям: FrontEnd; Python (BackEnd); C#/.NET (BackEnd); Java (BackEnd); Node.js. Отдельной популярностью пользуются направления C++, QA, Android, iOS, PHP, Ruby, Databases, UI/UX Design. Наша компания также предоставляет сервис онлайн тестирования, который поможет проверить уровень знаний кандидатов по различным технологиям и направлениям. Это позволит выявить лучших претендентов, отвечающих вашим требованиям. Также мы будем рады пригласить вас проводить онлайн встречи с нашими выпускниками, чтобы вы могли рассказать больше о вашей компании и о предложениях нашим студентам. Объединив наши усилия, мы сможем подготовить будущих IT-специалистов, которые станут ценными членами вашей компании. Давайте развивать украинское IТ вместе! Чтобы связаться с нами, перейдите на страницу "Вакансии", нажмите кнопку "Напишите нам" ниже и заполните небольшую форму. Дополнительно оставим контакты нашего HR-специалиста, который с радостью ответит на все интересующие вас вопросы по данной теме. Контакты для связи: Виктория Чабан Email: hr@cbsystematics.com Telegram: https://t.me/hr_cbs Skype: Viktoriia Chaban (+380937595777)
Devoxx Ukraine 2019

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

Devoxx Ukraine 2019 – международная Java конференция, представленная в Украине компанией EPAM и Java User Group of Ukraine. Когда: 1-2 ноября, 2019 Где: «M82», ул. Межигорская 82. Киев, Украина Devoxx Ukraine является частью семьи Devoxx, а также одной из крупнейших международных технологических конференций в Украине: Более чем 60 международных спикеров – только признанные профессионалы в мире Java и не только; Участники со всего мира; Передовые технологии и тренды:  Общение с лучшими экспертами и многое другое! Среди представленных на Devoxx Ukraine треков каждый участник конференции, независимо от специализации, сможет найти для себя нужное направление: Java Language (Java Language, Java SE, JDK, Graal VM, Corretto VM, performance tuning, concurrency, etc.)  Methodology and Culture (Software development methodologies, developer culture and related subjects) Cloud, Containers & Infrastructure (Cloud-native, Service mesh, Quarkus IO, Kubernetes, Docker, Istio, PaaS and serverless. Building anything and deploying it anywhere. SRE/DevOps/Chaos engineering as a culture) Server Side Java (Frameworks and libraries which are mainly used on the server-side: Spring, Jakarta EE, Reactive frameworks, ORM, Messaging, Databases. Microservices frameworks)  Architecture (Share howtos, experience, best-practices to build a system and do it right. Microservices, Distributed systems or Monolithic design. Blockchain. Also, something which can be explained without dive into the code)  Modern Web (Frontend technologies, languages and tooling to build modern browser and mobile apps (JS/Node/TypeScript/React/Kotlin JS. Thick-clients working via Web) Big Data & AI (Big Data, Fast Data, Stream processing, NoSQL, Machine learning, Deep Learning, Neural Networks, TensorFlow, etc) Programming Languages (Other languages running on the JVM, functional, mobile and emerging languages. The tools, libraries and best practices) Security (Encryption, defensive practices, tools and technologies to be secure, security testing) Выступления будут проходить в различных форматах, а именно: Birds of a feather (BOF) – неофициальные, вечерние одночасовые дискуссии в небольших группах; Keynote – 45-минутный доклад; Regular talk – 45/60-минутная презентация; Deep-dive / HOL – 3-часовая презентация; Small Talk – 25-минутный доклад в неформальной обстановке. В прошлом году конференция побила рекорды за все время проведения в Украине по количеству поданных докладов, а также по количеству участников (1300) и мы продолжим работать над тем, чтобы в этом году вы имели возможность услышать лучших экспертов и получить уникальный опыт общения с коллегами и единомышленниками.   Официальный сайт: devoxx.org.ua. Как это было в 2018 году: видео и фото. Используйте промо-код itvdn5 чтобы купить билет со скидкой 5%. По любым вопросам пишите нам: contact@devoxx.org.ua.
Конференция Lviv IT Arena: новейшие технологии, современные тренды, бизнес и будущее ІТ индустрии!

Автор: Ирина Музыка

2-4 октября на стадионе «Арена Львов» состоится самое ожидаемое ІТ событие года – конференция Lviv IT Arena. Мероприятие станет самым крупным в истории подобных конференций событием Западной Украины. Lviv IT Arena фокусируется на основных IT трендах развития индустрии в Украине и мире. Концепция охватывает полный цикл разработки ПО. Также конференция охватывает этапы развития ІТ компании – от стартапа до системной компании, а секции конференции сформированы таким образом, что она будет интересна для всех ІТ специалистов, руководителей компаний, проектных менеджеров, тестировщиков, HR специалистов, а также тех, кто только планирует создать собственную компанию. Участников ждет множество сюрпризов – тест-драйв и фотоссесия с Tesla, Google Glass, вечеринки и развлечения. Посетив конференцию, участники из разных уголков Украины, Европы и мира смогут услышать около 100 спикеров международного уровня, которые выступят в 11 секциях Lviv IT Arena. Программа и билеты на конференцию доступны на сайте. Startup (Workshop Day – работа с идеями, советы специалистов и раскрытие основных инструментов для создания успешного стартапа - Lean Startup, Business Model Canvas, Financial Model, Presentation и Startup Stars Day, во время которого выступят самые крутые основатели украинских технологических стартапов – Петр Бондаревский (Internet Investments Group), Андрей Колодюк (Aventures Capital), Алексей Орап (YouScan), Дмитрий Бариский (Smart Atoms) и Максим Ищенко (Dou.ua). В конце дня состоится питчинг перед бизнес-ангелами среди избранных стартапов со всей Украины, Молдовы, Белоруси. Зарегистрировать свой стартап можно тут. Скидка на 2 билета для зарегистрированного стартапа – 50%. Mobile (доклады и дискуссии о будущем мобильных телефонов и перспективы развития - personalization, context analysis, wearables, IoT, M2M, а также возможности мобайла сегодня - NFC, face & object recognition, augmented reality. Среди спикеров секции - Myriam Joire (Pebble), Cyril Lashkevich (Viber), Markiyan Matsekh (Eleks) и др. UI/UX (кейсы, доклады, обмен опытом, интерактив в воркшопах от специалистов, работающих в ведущих дизайн-бюро и на всемирно известные бренды. Узнайте все о сути хорошего дизайна – как начать работу, откуда брать идеи и вдохновение, как правильно заниматься саморазвитием и организовать синергию дизайнера с клиентом. О минимализме, функциональном дизайне, User Experience Design в докладах Максима Ткачука (Trendkill designers), Павла Колодяжного (Design bureau “make”), Юрия Бабича (COXO) и др. Google Development (перспективы роста бизнеса с платформой Google+, воркшопы по созданию приложений на платформе Google App Engine от Google Developer Expert'a, cloud технологии, привлечение дополнительной аудитории с Google+ и все о wearables – как о реальности, а не туманной перспективе в докладах лучших специалистов - Javier Ramirez (Google Developer Expert on the Cloud Platform, founder at teowaki), Panayiotis Lipiridis (Startup), Gerwin Sturm (Owner & Developer at FoldedSoft e.U.), Julianna Göbölös-Szabó (Prezi) и др. QA (автоматизация тестирования, современные тренды направления – автоматизация тестирования игр и больших объемов данных, тестирование ПО для медицинских устройств и краудсорсинговое тестирование. Обо всем этом – в докладах Андрея Дзыни (Spotify), Святослава Рымара (SoftServe), Дмитрия Миндры (Unity Technologies) и др. Data Science (о технологиях Яндекс, искусственном интеллекте в создании беспилотников, технологии Apache Hadoop и Amazon Redshift на примере выполнения ETL процесса для обработки медицинских данных, о мировом сообществе Data Science - Kaggle и многом другом в выступлениях Григория Бакунова (Yandex ), Дмитрия Новицкого (Rybka Project), Александра Шкопа (Envion Software) и др. Value Management and Business Analysis (обмен реальным практическим опытом работы бизнес аналитика на IT проектах разного рода. Как эффективнее описывать требования к системе? Ответ на вопрос: какие методы выявления скрытых требований к продукту могут быть? Как создавать действительно ценные продукты с точки зрения бизнеса? Самое важное о новых тенденциях с сфере БА и ВМ от специалистов из Украины, России, Молдовы, Эстонии, Белоруси – Ольги Павловой (SobakaPavlova), Артема Сердюка (EffectCup, ScrumGuides), Александра Белина (EPAM Systems), Юрия Веденина (ITMINE) и др. IT Outsourcing (об ІТ индустрии во Львове, как приоритете стратегического развития, актуальном состоянии и перспективах развития индустрии во Львове и Украине, влиянии перемен в стране на развитие индустрии информационных технологий, взаимодействии и сотрудничестве аутсорсинговых компаний со стартап-проектами и многом другом расскажут Андрей Садовый (Lviv City Council), Андрей Ганкевич (Lviv IT-BPO Cluster), Тарас Кицмей (SoftServe), Андрей Павлив (N-iX), Theo Schnitfink (Symphony Solutions), Alan Harlan (SoftServe), Алексей Скрыпник (Eleks), Степан Веселовский (Lviv IT-BPO Cluster) и др. Information Security (вопрос информационной безопасности на государственном уровне, практические аспекты информационной безопасности, безопасность электронной почты и многое другое в докладах Николая Коваля (CERT-UA), Евгения Преображенского (URAN), Павла Хромчака (WISC UA community) Management as fun (о TBD и темной стороне ІТ менеджмента в теоретическом и практическом аспекте, геймификации в пост-тренингах, коучинг подходе и другом в докладах  Анны Подгорной, Наталии Шпот (Lviv PM school), Андрея Яворского (GlobalLogic), Софии Опацкой (LvBS ) и др. Game Development (в потоке GameDev - почему Unity скоро захватит мир, о проблемах, которые возникают при разработке больших игровых проектов, о лучших практиках построения интерфейсов и успешной истории проекта Nravo Kids расскажут эксперты – Сергей Гринец (Nravo), Ростислав Каминский (Nravo), Тарас Леськив (Nravo), Андрей Вышковский (Nravo) и другие) Главный организатор конференции — Львівський кластер інформаційних технологій та бізнес-послуг. Соорганизаторы – компания Eleks, Львівська спільнота тестувальників, Львівська бізнес-школа, Спільнота розробників Google (GDG), Бізнес-інкубатор Startup Depot, Спільнота спеціалістів у сфері інформаційної безпеки (WISC), Школа проектного менеджменту і Львівська міська рада (ЛМР). Генеральный партнер – SoftServe, Turkish Airlines, Tesla Золотые партнеры – Samsung Electronics Ukraine Company, ПАТ «Укртелеком», Data Art, Оптима Плаза, Noosphere Серебряные партнеры – Qubstudio, GlobalLogic, DalivSoft Inc, Квитковий сервіс Gastroli.UA, Місцевий економічний розвиток, ELMOB.CO, Інтергал-Буд, NATEK Poland Гостеприимные партнеры – Leopolis, Citadell Inn, Nota Bene, Панська гора Генеральный медиапартнер –  DOU Эксклюзивный медиапартнер – Радіо 24 та Телеканал новин 24 Главный деловой медиапартнер – Delo.ua Медиапартнеры: IT Expert, INVenture, Brainberry Global, dev.by, it.rabota.ua, Betaplace, GTF, Geeks Lab, Highload Dev Conf, AgileBaseCamp, IT Ukraine, WannaBiz, Bitcoin Conference Kiev, Brain Basket Foundation, ITVDN, ITEM, PM Forum, Spider Ukraine, IT Rally, IT Weekend, Львівська газета, Postpaper, Электронный документооборот и ИТ для бизнеса, Lviv Online, ERVE.ua, Сайт міста Рівне 0362, Career4it.
Как создать веб-сайт с помощью AJAX

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

Создания простого чата Для начала создадим простой чат с помощью HTML&CSS и PHP&MySQL Проектирование Базы Данных Переходим к phpMyAdmin. Создаем новую базу данных, называем “chatdb”. Создаем новую таблицу, называя “Posts”, включая в себя 4 столбца: “id” тип колонки INT, автоматическое увеличение на 1 (задаем A_I в ячейку с флажком) основной ключ (index); “nick” тип колонки VARCHAR и длина 100; “post_text” тип колонки TEXT; “post_dt” тип колонки DATETIME по умолчанию является CURRENT_TIMESTAMP. Создание веб-сайта. Во-первых, создадим главную страницу. Список комментариев и отправка формы, используя кнопку. Всё будет находится в файле “index.php” .  Давайте создадим этот файл и напишем что-то вроде этого:  <html> <head> head> <body> php $mysqli = new mysqli("127.0.0.1", "root", "", "chatdb"); /* "127.0.0.1" is MySQL host name. In local servers (XAMPP, Ampps, etc.) it is 127.0.0.1. If you using a dedicated hosting, see it in admin panel. */ /* "root" and "" is login and password for DB's user. In local servers usually default DB user is "root" with empty password. */ /* "chatdb" is DB's name. */ /* Warning: in XAMPP you should manually run MySQL server (from xampp-control.exe) to get it work. */ $result = $mysqli->query("SELECT * FROM posts;"); ?> <style> /* All CSS is very simplified. I provide it for example and no more.  * In Chrome it works tolerably, but in IE and Firefox it works very poorly.  */ .content {   display: table;   width: 50%;   min-width: 400px;   height: 80%;   /* Center horizontally and vertically */   position: absolute;   left: 0; right: 0;   top: 0; bottom: 0;   margin: auto;   /* Design */   border: 1px solid;   background-color: silver;   padding: 5px; } /* For mobile devices */ @media (max-width: 400px) {   .content {     width: 100%;     min-width: 0;     padding: 0px;   } } style> <div class="content"> <div id="comments" style="overflow-y: scroll; height: 100%;"> php if ($result) {   while ($post = $result->fetch_object()){     $nick = $post->nick;     $post_dt = $post->post_dt;     $post_text = $post->post_text;         echo "<b>$nickb> ($post_dt):<br>";     echo "$post_text<br>";     echo "<br>";   }   $result->close(); } ?> div> php $mysqli->close(); ?> <form action="post.php" method="post" style="height: 0; display: table-row;">   Nick:<br>   <input type="text" name="nick" style="width: 100%;">input><br>   <br>   Text:<br>   <textarea name="text" style="width: 100%;">textarea><br>   <br>   <input type="submit">input> form> div> <script type="text/javascript">     var divComments = document.getElementById('comments');     divComments.scrollTop = divComments.scrollHeight; script> body> html> 2. Дальше давайте создадим “post.php” файл и напишем такое:  php $nick = $_POST['nick']; $post_text = $_POST['text']; $mysqli = new mysqli("127.0.0.1", "root", "", "chatdb"); $nick = $mysqli->real_escape_string($nick); $nick = htmlspecialchars($nick); $post_text = $mysqli->real_escape_string($post_text); $post_text = htmlspecialchars($post_text); $mysqli->query("INSERT INTO posts (nick, post_text) VALUES ('$nick', '$post_text');"); $mysqli->close(); /* Redirect To Main Page */ header('Location: ' . $_SERVER['HTTP_REFERER']); ?> 3. Откроем ваш чат в любом продвинутом браузере. Вся работа:  4. Напишите ник и текст, а потом нажмите на кнопку отправки.  Когда отправили форму, сразу же происходит перенаправление формы главной страницы в “post.php”. “Post.php” моментально наполняет данными таблицу и перенаправляет на главную страницу. Также “post.php” содержит начальный XSS и SQL защищенный вход. Для упрощения не отправляем клиентам время с JS на “post_dt” на внесения данных, а указываем значение по умолчанию – CURRENT_TIMESTAMP, который предоставляет нынешнюю дату и время на сервер. Когда количество комментариев больше, чем экран может вместить, то комментарии   переполнены в div, используется вертикальный скроллбар. Во время загрузки страницы JS автоматически опускает скроллбар вниз к недавнему комментарию. Что тут не так? Проблема номер 1. Новый непрочитанный комментарий от пользователя не загружается в базу данных автоматически, без ручной перезагрузки страницы. Это очень, очень серьезная проблема для любого чата. Как это исправить? Очевидно, один из путей сделать это - использовать HTTP-запрос к фоновой работе автоматически (с помощью JS) и асинхронно, то есть это один из способов обеспечить выполнение AJAX в любой form. Проблема номер 2. Также неправильно то, что кнопка отправки перезагружает страницу (перенаправляет на вторую страницу и следующим шагом возвращает назад). При перезагрузке страницы сбрасывает “Nick” в  поле (также, как любые другие изменения, те, что сделали с пользователем) Как это исправить? Конечно, можно обеспечить выполнение обхода для сохранения изменений и перезагрузки на перезагружаемой странице. Но не эффективнее ли устранить причину, чем последствие? Можно только убрать перезагружаемую страницу и эта проблема будет решена автоматически. Проблема номер 2.1. Видите ли что-то необычное тут? Это слишком быстро? Дело с чатом очень простое – загружаем только два маленьких текстовых параметра. Что делать, если нужно улучшить чат с помощью добавления присоединения, а конкретно - изображений и видео? Видео может иметь объем в размере нескольких мегабайт, что тогда в этом случае? Давайте попробуем.  Давайте немного изменим “post.php”, после $mysql->query() добавив это:  for ($i = 0; $i < 1000000000; $i++) { } Старайтесь размещать какие-либо комментарии. Что мы видим? Нет, UI не остановилось (заморозилось), но браузер ждет до того, как закончится подключение:   Да, если “post.php” вызывает какую-то необработанную ошибку, то чат исчезает, и пользователь видит пустое окно с сообщением о непонятной ошибке. Чтобы вернуться к чату, пользователю стоит нажать кнопку “Back” в браузере. И это проблема номер 2.2. Давайте уберем петлю с “post.php” и исправим эти проблемы. Реализация легкого AJAX в простой чат Автоматическое обновление комментариев Эта веб-страница без AJAX? Это веб-страница, которая полностью перезагружается. Эта веб-страница c AJAX? Это веб-страница, что перезагружается частично. Где же взять части этих страниц? Стоит разделить нашу страницу на части, в этом случае сервер генерирует страницу частично. Страница будет состоять из двух частей – блок комментариев и другой контент страницы. Комментарии будут загружаться и перезагружаться отдельно от другой страницы. Давайте сделаем первую часть, то есть блок комментариев. Для начала создадим пустой файл, назовем “getcomment.php”. Дальше переходим в “index.php” для того, чтобы вырезать комментарии и далее отделить его. 1. Вырезаем инициализированный блок MySQL с “index.php"  php $mysqli = new mysqli("127.0.0.1", "root", "", "chatdb"); /* "127.0.0.1" is MySQL host name. In local servers (XAMPP, Ampps, etc.) it is 127.0.0.1. If you using a dedicated hosting, see it in admin panel. */ /* "root" and "" is login and password for DB's user. In local servers usually default DB user is "root" with empty password. */ /* "chatdb" is DB's name. */ /* Warning: in XAMPP you should manually run MySQL server (from xampp-control.exe) to get it work. */ $result = $mysqli->query("SELECT * FROM posts;"); ?> вставляем в “getcomments.php”. 2. Следующее, вырежем контент div c комментариями с “index.php”: php if ($result) {   while ($post = $result->fetch_object()){     $nick = $post->nick;     $post_dt = $post->post_dt;     $post_text = $post->post_text;         echo "<b>$nickb> ($post_dt):<br>";     echo "$post_text<br>";     echo "<br>";   }   $result->close(); } ?> И вставим (добавим) в “getcomments.php” после инициализации MySQL. 3. Дальше, вырежем недалекий блок MySQL с “index.php”: php $mysqli->close(); ?> Вставим его в конец файла “getcomments.php”. 4. Наконец-то, убираем JS-скрипт, который опускает скролл в самый низ. <script type="text/javascript"> var comments = document.getElementById('comments'); comments.scrollTop = comments.scrollHeight; script> Не переживай, это только временно. 5. Сделано. Теперь имеем что-то наподобие этого:  <html> <head> head> <body> <style> /* All CSS is very simplified. I provide it for example and no more.  * In Chrome it works tolerably, but in IE and Firefox it works very poorly.  */ .content {   display: table;   width: 50%;   min-width: 400px;   height: 80%;   /* Center horizontally and vertically */   position: absolute;   left: 0; right: 0;   top: 0; bottom: 0;   margin: auto;   /* Design */   border: 1px solid;   background-color: silver;   padding: 5px; } /* For mobile devices */ @media (max-width: 400px) {   .content {     width: 100%;     min-width: 0;     padding: 0px;   } } style> <div class="content"> <div id="comments" style="overflow-y: scroll; height: 100%;"> div> <form action="post.php" method="post" style="height: 0; display: table-row;">   Nick:<br>   <input type="text" name="nick" style="width: 100%;">input><br>   <br>   Text:<br>   <textarea name="text" style="width: 100%;">textarea><br>   <br>   <input value="Submit" type="submit">input> form> div> body> html> getcomments.php:  php $mysqli = new mysqli("127.0.0.1", "root", "", "chatdb"); /* "127.0.0.1" is MySQL host name. In local servers (XAMPP, Ampps, etc.) it is 127.0.0.1. If you using a dedicated hosting, see it in admin panel. */ /* "root" and "" is login and password for DB's user. In local servers usually default DB user is "root" with empty password. */ /* "chatdb" is DB's name. */ /* Warning: in XAMPP you should manually run MySQL server (from xampp-control.exe) to get it work. */ $result = $mysqli->query("SELECT * FROM posts;"); ?> Вероятно, теперь наша страница разделена. Давайте проверим её. Переходим http (точнее ССЫЛКА для локального сервера). Дальше, переходим на главную страницу, http:///index.php Это удивительно! Всё удачно получилось, разделив страницу на части за пару минут! Не останавливаемся на этом. Теперь “glue” эти части с помощью AJAX. Как это сделать? 1. Для начала стоит создать пустой JS-скрипт на главной странице: <script type="text/javascript"> alert('Test'); script> Добавив это после тега div, перед закрывающимся тегом . 2. Сделаем HTTP GET запрос от JS к “getcommet.php” Для этого используем XMLHtttpRequest (XHR) класс: <script type="text/javascript"> var xhr = new XMLHttpRequest(); xhr.open('GET', '/getcomments.php', false); xhr.send(null); if (xhr.status == 200) {   alert(xhr.responseText); } script> Это работает, но не читает старые версии IE те, что не поддерживают такую инициализацию. Для получения более кросс-браузерного пути переходим в и добавляем это: <script type="text/javascript"> function getXmlHttp(){   var xmlhttp;   try {     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");   } catch (e) {     try {       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");     } catch (E) {       xmlhttp = false;     }   }   if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {     xmlhttp = new XMLHttpRequest();   }   return xmlhttp; }; script> И главный скрипт (в конце) <script type="text/javascript"> var xhr = getXmlHttp(); xhr.open('GET', '/getcomments.php', false); xhr.send(null); if (xhr.status == 200) {   alert(xhr.responseText); } script> Как видно, теперь JS получает контент со страницы “getcomments.php” и показывает это в предупреждении.   2.1. Вопрос: «Это на самом деле AJAX (Asynchronous Javascript And Xml)?» Это AJAX, потому что запрос сервера отформатирован в HTML (который основан на XML). Но действительно ли это AJAX, это асинхронно? Проверим. Добавим эти уже знакомые строки в любое место между в “getcomments.php”: for ($i = 0; $i < 1000000000; $i++) { } Что теперь видно на загружаемой странице? Вначале страница зависает, его замораживает UI (становится не реагирующим на нажатие левой/правой кнопки мыши): Дальше Chrome показывает навязчивое всплывающие окно, сообщающее об удалении страницы: Это не AJAX! Это JAX! Как его сделать асинхронным? К счастью, ХHR также поддерживает асинхронный режим: <script type="text/javascript"> var xhr = getXmlHttp(); xhr.open('GET', '/getcomments.php', true); /* true for asynchronous */ xhr.onreadystatechange = function() {   if (xhr.readyState == 4) {     if(xhr.status == 200) {       alert(xhr.responseText);     }   } }; xhr.send(null); script> В этом случае браузер не ждет ответа с главного потока пользовательского интерфейса, он запускает в другом (асинхронно) и вызываемым событием “onreadystatechange” в главном контексте UI.  Теперь всё в порядке, страница полностью доступна, пока запрос запущен, и после ответа получит предупреждение. for ($i = 0; $i < 1000000000; $i++) { } И продолжаем работу. 3. Добавляем этот контент в div  вместо предупреждения. Заменить это: alert(xhr.responseText);  C этим: var divComments = document.getElementById('comments'); divComments.innerHTML = xhr.responseText; Возвращаем назад, клиент видит “glued” страницу с блоком комментариев. 4. Дальше следует установить интервал для автоматической проверки новых комментариев время от времени… и также восстановить удаленный сценарий автоматической прокрутки.  <html> <head> <script type="text/javascript">     function getXmlHttp() {         var xmlhttp;         try {             xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");         } catch (e) {             try {                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");             } catch (E) {                 xmlhttp = false;             }         }         if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {             xmlhttp = new XMLHttpRequest();         }         return xmlhttp;     }; script> head> <body> <style> /* All CSS is very simplified. I provide it for example and no more.  * In Chrome it works tolerably, but in IE and Firefox it works very poorly.  */ .content {   display: table;   width: 50%;   min-width: 400px;   height: 80%;   /* Center horizontally and vertically */   position: absolute;   left: 0; right: 0;   top: 0; bottom: 0;   margin: auto;   /* Design */   border: 1px solid;   background-color: silver;   padding: 5px; } /* For mobile devices */ @media (max-width: 400px) {   .content {     width: 100%;     min-width: 0;     padding: 0px;   } } style> <div class="content"> <div id="comments" style="overflow-y: scroll; height: 100%;"> div> <form action="post.php" method="post" style="height: 0; display: table-row;">   Nick:<br>   <input type="text" name="nick" style="width: 100%;">input><br>   <br>   Text:<br>   <textarea name="text" style="width: 100%;">textarea><br>   <br>   <input value="Submit" type="submit">input> form> div> <script type="text/javascript">     var divComments = document.getElementById('comments');     function loadComments() {         var xhr = getXmlHttp();         xhr.open('GET', '/getcomments.php', true);         xhr.onreadystatechange = function () {             if (xhr.readyState == 4) {                 if (xhr.status == 200) {                     if (xhr.responseText !== divComments.innerHTML) {                         divComments.innerHTML = xhr.responseText;                         divComments.scrollTop = divComments.scrollHeight;                     }                 }             }         };         xhr.send(null);     };     loadComments();     setInterval(loadComments, 1000) script> body> html> Теперь проблема исправить это. Новые комментарии с другого пользовательского чата (другие вкладки браузеров, окон и экземпляров) получают каждые 1000 миллисекунды (1 секунду) автоматически. Но отправка комментариев уже вызывает перезагрузку нашей страницы. Отправка комментариев без перезагрузки Как написано выше, XHR помогает отправлять HTTP GET-запросы без перезагрузки страницы и GUI заморозки (асинхронно). Теперь отправляем HTTP-запрос асинхронно, но на этот раз POST запрос, а не GET. И, естественно, XHR позволяет это. Используем метод send(). Для GET указываем null. Для POST устанавливаем запрос “body”.Также нужно добавить “Content-Type:application/x-www-from-urlencoded” в header  для того, чтобы разрешить серверу знать, какой формат использовать для отправки данных. Заметка: если не знаете, что отправлять, то можно захватить регулярный запрос с помощью “Fiddler” или же любой другой HTTP-перехватчик и только просимулировать запрос. HTTP-перехватчик — это незаменимый инструмент для работы с HTTP/HTTPS. Это позволяет увидеть все headers и bodies по всем HTTP(S)-запросам, что отправляются в систему. Лучше использовать “Fiddler”, это бесплатное, современное и очень простое приложение, что может поддерживать HTTP/HTTPS и оба Win x86/x64. 1. Для начала создадим пустой JS скрипт в HTML. Разместить до самого тега, потому что этот скрипт будет использован для отправки формы комментария (форма будет вызывать этот скрипт при отправке).2. В этом скрипте, реализуем функцию, что будет отправлять ник и комментарии в “post.php”  <script type="text/javascript"> function postComment(nick, text) {   var xhr = getXmlHttp();   xhr.open('POST', '/post.php', true);   xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');   xhr.onreadystatechange = function() {     if (xhr.readyState == 4) {       if (xhr.status == 200) {         /* it isn't required to add comment to DOM manually, it will done automatically on next refresh via AJAX */       }     }   };   xhr.send('nick=' + nick + '&text=' + text); /* joining the data in format simulates form */ }; script> 3. Следующие, перезагружая страницу при отправке:  ... onsubmit="return false;"> Также добавим вызов “postComment’s”: action="post.php" method="post" style="height: 0; display: table-row;" onsubmit="postComment(this.nick.value, this.text.value); return false;"> 4. Наконец, необязательно, но можно убрать “action” и “method” с формы:  <form style="height: 0; display: table-row;" onsubmit="postComment(this.nick.value, this.text.value); return false;"> 5. Результат: <html> <head> <script type="text/javascript">     function getXmlHttp() {         var xmlhttp;         try {             xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");         } catch (e) {             try {                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");             } catch (E) {                 xmlhttp = false;             }         }         if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {             xmlhttp = new XMLHttpRequest();         }         return xmlhttp;     }; script> head> <body> <style> /* All CSS is very simplified. I provide it for example and no more.  * In Chrome it works tolerably, but in IE and Firefox it works very poorly.  */ .content {   display: table;   width: 50%;   min-width: 400px;   height: 80%;   /* Center horizontally and vertically */   position: absolute;   left: 0; right: 0;   top: 0; bottom: 0;   margin: auto;   /* Design */   border: 1px solid;   background-color: silver;   padding: 5px; } /* For mobile devices */ @media (max-width: 400px) {   .content {     width: 100%;     min-width: 0;     padding: 0px;   } } style> <div class="content"> <div id="comments" style="overflow-y: scroll; height: 100%;"> div> <script type="text/javascript">     function postComment(nick, text) {         var xhr = getXmlHttp();         xhr.open('POST', '/post.php', true);         xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');         xhr.onreadystatechange = function () {             if (xhr.readyState == 4) {                 if (xhr.status == 200) {                     /* it isn't required to add comment to DOM manually, it will done automatically on next refresh via AJAX */                 }             }         };         xhr.send('nick=' + nick + '&text=' + text);     }; script> <form style="height: 0; display: table-row;" onsubmit="postComment(this.nick.value, this.text.value); return false;">   Nick:<br>   <input type="text" name="nick" style="width: 100%;">input><br>   <br>   Text:<br>   <textarea name="text" style="width: 100%;">textarea><br>   <br>   <input value="Submit" type="submit">input> form> div> <script type="text/javascript">     var divComments = document.getElementById('comments');     function loadComments() {         var xhr = getXmlHttp();         xhr.open('GET', '/getcomments.php', true);         xhr.onreadystatechange = function () {             if (xhr.readyState == 4) {                 if (xhr.status == 200) {                     if (xhr.responseText !== divComments.innerHTML) {                         divComments.innerHTML = xhr.responseText;                         divComments.scrollTop = divComments.scrollHeight;                     }                 }             }         };         xhr.send(null);     };     loadComments();     setInterval(loadComments, 1000) script> body> html>  Теперь простая реализация AJAX подошла к концу. Это ещё не конец, это только начало. Есть ещё достаточно всего для изучения и улучшения.
Международный фестиваль инновационных проектов Pioneers Kyiv!

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

ITVDN выступает региональным спонсором фестиваля инновационных проектов Pioneers Kyiv! Международный фестиваль инновационных проектов Pioneers в этом году впервые пройдет а Украине. Организатором мероприятия PioneersKyiv стала компания Eltrino.С 2012 года Pioneers Festival собирает вместе в Вене лучшие стартапы и инвесторов, которые хотят внести свой вклад в развитие будущих технологий и прорывных идей. Все это происходит при поддержке значительного количества медиа ресурсов, которые имеют прекрасную возможность первыми узнать и осветить в своих изданиях проекты новейших технологий или просто интересные стартапы, которые могут в корне изменить наш мир уже завтра. Ежегодно более 1600 стартапов с более чем 90 стран мира могут встретиться в Вене с 400 инвесторами. Количество посетителей ограничивается 2500 участниками, поэтому регистрация желающих происходит заблаговременно. Сама компания Pioneers основана в 2010 году. В своем арсенале имеют ряд проектов, которые способствуют развитию и росту инновационных проектов, и созданию целостной функциональной экосистемы вокруг стартапов по всему миру, а именно: Pioneers Festival. Global Pioneers - это более 30 ивентов сообщества в разных уголках мира (Токио, Париж, Будапешт, Турин, Амстердам, Сингапур и др. В этом году к перечню присоединяется еще и Киев). Площадка, где предприниматели могут найти новые полезные знакомства, показать свои проекты широкой общественности, помочь росту своего бизнеса. Происходит дважды в год в каждом регионе. Global Pioneers объединяет местные предпринимательские организации в единое глобальное сообщество. PioneersKyiv является частью экосистемы для стартапов. Pioneers Discover - консультационная поддержка стартапов и компаний. Pioneers Ventures - инвестиционное подразделение, которое помогает привлечь инвестиции на этапах early stage и pre-seed. Pioneers Challenge - соревнования стартап проектов. Так что, теперь в украинских проектов появилась еще одна возможность для привлечения инвестиций, получения эффективных советов и рекомендаций, как сделать свой стартап действительно успешным, заявить о себе широкой общественности, найти потенциальных клиентов и новые полезные контакты. Главная цель PioneersKyiv - найти новые инновационные проекты, помочь им привлечь инвесторов. В рамках ивента состоится конкурс для стартапов, победитель, которого получает билет на следующий фестиваль Pioneers в Вене. Желающим принять участие в конкурсе необходимо: подать заявку через регистрационную форму на сайте до 5 июня включительно, с 5 по 12 июня среди представленных стартапов будет избран 8 лучших, 12 июня до 20.00 стартапы получают уведомления о результатах отбора, отобранные стартапы готовятся к выступлению, финальная версия презентации должно быть подано до 26 июня, 27 июня с 10.00 до 13.30 - репетиция питчей в М17 27 июня отобранные стартапы выходят на питч (3 минутный доклад) на PioneersKyiv, их презентации оценивают судьи. счастливый победитель получает билет на Pioneers Festival в Вене. Судейская коллегия PioneersKyiv: Наталья Березовская - председатель совета правления UAngel, генеральный директор и управляющий партнер Detonate Ventures. Михаил Рябоконь - главный управляющий директор Noosphere Ventures Андрей Колодюк - управляющий партнер AVentures Capital, автор и основатель Divan.tv Вадим Т. Роговский - член совета правления UAngel, генеральный директор WannaBiz, соучредитель маркетингового агентства Face2Face Media Игорь Шойфот - член совета правления Happy Farm, предприниматель, инвестор, основатель Fotki.com Андрей Криворчук - управляющий партнер и исполнительный директор Chernovetskyi Investment Group Наши спикеры вдохновляют. 27-го июня участники и гости PioneersKyiv имеют возможность услышать полезные практические доклады: Марк Туррел - основатель и управляющий директор Orcasci, основатель “AIA” Conference, номинант Pioneer Technology на Всемирном экономическом форуме в 2008 году и Young Global Leader в 2010, автор “Scaling: Small Smart Moves For Outsized Results”. Тема доклада "50 Shades of Scaling: What tech companies can learn from the fastest selling book on the planet" (50 оттенков измерений: Какой опыт могут извлечь технологические компании из успеха самой продаваемой книги на планете). Михаил Рябоконь - главный управляющий директор Noosphere Ventures. Расскажет об инвестиционной политике Noosphere и даст рекомендации как заручиться поддержкой Noosphere Ventures. Наталья Березовская - председатель совета правления UAngel, генеральный директор и управляющий партнер Detonate Ventures. Расскажет об увеличении возможностей и снижения рисков для стартапов благодаря нетворку бизнес ангелов UAngel. Дмитрий Гадомский - партнер адвокатского объединения "Юскутум" Юрист-ботан, партнер юридической фирмы Юскутум. Раскроет секрет как узнать, что вы нарушаете закон. Кирилл Соляр - генеральный директор Sponge Digital & design, продакт менеджер в looks.fm. Эксперт по диджитал маркетингу, управления стартапами в ИТ. Все проекты, которые не пройдут отбор, имеют возможность принять участие в двухчасовом шоукейсе, где могут рассказать о своем проекте инвесторам и другим стартапам, услышать советы, рекомендации. С нетерпением ждем 27-го июня, чтобы показать замечательные проекты, услышать интересные доклады и получить море вдохновения. Начало регистрации в 14.00 в Центре современного искусства "M17" (ул. Антоновича, 102-104). Спешите приобрести билеты со скидкой 10%!  P.S. Секретная информация - только у ITVDN есть специальные скидочные коды на билеты на PioneersKyiv, обращайтесь.
Когда стоит переходить на ASP.NET Core?

Автор: Steven Smith

Прошло много времени с момента релиза ASP.NET Core 1.0. Затем появились версии 1.1, 2.0… В общем и целом серверные компоненты и технология оказались достаточно качественными, в них было замечено всего лишь несколько багов. Кроме того, начиная с вышеупомянутой версии 1.1, было добавлено бессчётное множество различных полезных примочек к Entity Framework Core и самой ASP.NET Core. Помимо прочего, стоит также отметить радикальные отличия в структуре проектов, которые могут показаться слегка непривычными, но являются жизненно необходимыми для взаимодействия проектов .Net Core с другими типами проектов. Но ожиданиям качественного инструмента пришел конец. Произошел релиз Visual Studio 2017, и она успела зарекомендовать себя как достаточно стабильная версия. К тому же я без проблем сумел перенести мои проекты на базе project.json в новый формат файлов MSBuild без всяких проблем. Помимо прочего, стоит также отметить целую серию приятных улучшений стандартной среды языка .NET. Мы долго ждали и дождались – наконец-то стандарт .NET Core (вместе с технологией ASP.NET Core) успешно захватывает IT-рынок и обладает целым рядом полезных инструментов для разработки. Если вы из компании, которая от стольких лет ожидания успела натереть себе мозоль – определенно, вам есть чему радоваться. Итак, ASP.NET Core сейчас уже на полках. Так в каких случаях нам стоит забыть про старый добрый ASP.NET и опробовать его кроссплатформенную версию? Позволю себе поделиться мнением. Новые проекты Если вы начинаете разработку нового проекта с использованием MVC-подхода и/или Web API, вам определенно нужно обратить свое внимание на ASP.NET Core. Технология содержит в себе целую серию значительных улучшений, которые заметно отличают ее от предшественницы. Помимо прочего, она также может похвастаться первоклассной системой внедрения зависимостей. ASP.NET Core также обладает специальными tag-helper`ами. Используя сервис TestServer, вы запросто сумеете производить локальные тесты прямо на свое ПК (забудьте про падения через неверную конфигурация фаервола). Web API теперь внедрены в ASP.NET Core MVC, потому теперь нет никакой необходимости использовать сторонние библиотеки с кучей дублирующих компонентов. Также скорость работы значительно выше, плюс, помимо прочего, арсенал может похвастаться значительно большим количеством опций, нежели MVC5/WebAPI2, который в значительной мере привязан к IIS. Но что, если проект имеет среди зависимостей сторонние библиотеки (собственные или чьи-то еще), которые требуют полноценной среды .NET Framework, не включенной в .NET Core? Нет никаких проблем. При желании в ASP.NET Core можно включить полноценный .NET Framework. Желаете использовать ваш Entity Framework 6 или NHibernate для работы с данными? Да ради Бога. Все прекрасно будет работать и в ASP.NET Core. Единственное, что вы от этого утратите – это кроссплатформенность, ибо эти сервисы могут быть запущены только в рамках Windows-сервера. У меня нет времени переучивать команду на ASP.NET Core! На счастье, переход на новую платформу не займет много времени, если ваша команда уже знакома с ASP.NET MVC и/или Web API. Концепция Core – использовать все, что было раньше, но значительно лучше. Контроллеры и представления никуда не делись. Представления все еще используют Razor. Маршрутизация по сути своей осталась прежней – она даже стала немного проще. Фильтры также особо не изменились, а Web API добавили своего удобства в использовании (так как они были интегрированы в MVC). Конечно, отличия все же есть, но это не критично. Несколько новых вещей, вроде того, как запускается приложение или как работает middleware, выучить придется, но в целом опыт работы на предыдущей ASP.NET Core MVC тут будет решать очень многое. Я хочу поместить приложение в контейнер на Linux! Тогда вы можете желать только ASP.NET Core. Вы не сможете использовать библиотеки из среды .NET Framework, но что касательно стандартных компонентов .NET Core – полный вперед. И да, вы также можете помещать свои приложения под Azure на Linux. Судьба приложений на ASP.NET MVC 5 и/или Web API 2 Предугадать тут что-либо конкретное будет несколько затруднительно. Если эти приложения работают и запускаются без проблем, не думаю, что необходимость переходить под ASP.NET Core такая уж  срочная. Однако, несколько причин, по которым  стоит интегрировать подобные программы под ASP.NET Core, все же есть: Сама поддержка. Если вы бы хотели деплоить приложение и его сервер вместе, без привязки к IIS – Core, – это однозначно ваш выбор. Поддержка различных платформ. Порой использование Windows-ориентированных серверов может быть дороже прочих других. Возможно, вы могли слышать об поддержке контейнеров, Докера и так далее. Core все это поддерживает – причем на очень даже приличном уровне. Множественные приложения. Приходилось ли вам запускать несколько экземпляров приложения на одной и той же машине? ASP.NET Core позволит это делать значительно удобнее и эффективнее, нежели традиционный ASP.NET. Тестирование и Domain-Driven Design (DDD). Если ваша команда следует этому подходу, пишет тестируемое программное обеспечение, то ASP.NET Core (и Entity Framework Core) привнесёт целый ряд полезных фич, которые значительно могут упростить жизнь. Программы Web Forms         Если ваше приложение базируется на веб-формах, возможно, вам лучше всего будет оставаться на ASP.NET. Microsoft активно инвестирует в эту технологию. Существует множество способов улучшить качество кода, используя внедрение зависимостей и прочее. Но смена платформы на ASP.NET Core MVC будет такой же «болезненной», как и переход на ASP.NET MVC 5,4,3,2,1. Что хуже, используя MVC 5, вы можете запускать страницы отдельно друг от друга, но проделать подобное с ASP.NET Core не представляется возможным. Лично я могу посоветовать оставаться на веб-формах до тех пор, пока приложение не потребует полноценной замены. В плане нагрузки на данные, потребовалось бы применить стиль SPA-приложений со значительно большим количеством клиентского кода и фрейморков типа Angular 2, или React. Другие размышления Хотя Visual Studio – прекрасный инструмент для разработки приложений, эта среда не бесплатная (за исключением комьнити-версии). Помимо прочего, она Windows-ориентированная (да, есть VS для MacOS, но это совершенно другое приложение). Если же студия для вас по причине цены или размеров неприемлема, .NET Core будет воистину полезным приобретением. Вы можете на MacOS, Linux (и, разумеется, под Windows) работать в Visual Studio Code! Подобным образом, если ваши приложения больше ориентированы на клиентскую часть, ASP.NET Core порадует более облегченными размерами. В то время, как фронтендеры превозносят NodeJS как быструю технологию (и ее возможность исполнять js-код на сервере), ASP.NET Core может также исполнять Node.JS на сервере (и вы также можете работать под JS на сервере, если вам захочется). Используя TechEmpower, ASP.NET Core, развернутый с использованием Kestrel, может обрабатывать до 1 миллиона запросов за секунду на том же ПК и в рамках того же приложения, в то время, как NodeJS обрабатывает всего около 175 тысяч в секунду. Подведем итоги Безусловно, ваш опыт и ваше мнение может сильно отличаться от моего, потому вопрос о том, стоит ли переходить на ASP.NET Core для некоторых может остаться открытым. И, конечно, ASP.NET Core далеко не единственная технология, используя которую вы будете создавать свое следующее веб-приложение. Однако, тема этой статьи как раз-таки ASP.NET Core, с которым мне приходилось долго проработать. К тому же, написано очень много официальной документации на официальном сайте Microsoft. Я не советую переходить на ASP.NET Core лишь потому, что он такой новый и весь из себя красивый. Решение перейти должно быть тщательно взвешенным и подкрепленным весомыми аргументами, которые я постарался привести в своей статье. Что дальше? Разработка ASP.NET Core продолжается. Уверен, версия 2.0 – далеко не последняя! Было бы неплохо взглянуть на обновленный SignalR и новую функциональность разор-страниц. Автор перевода: Евгений Лукашук Оригинал статьи
Notification success