Quantcast
Channel: образование – Svetlin Nakov – Official Web Site and Blog
Viewing all 101 articles
Browse latest View live

Представяне на СофтУни във Велико Търново пред състезатели по програмиране

$
0
0

Светлин Наков разказа концепцията на Софтуерния университет във Велико Търново пред състезатели по програмиране, които се състезаваха в Зимните математически състезания по информатика. Събитието се проведе на 1 март 2014 г. в ПМГ Васил Друмев, Велико Търново. Той обясни по какъв начин СофтУни предоставя качествено образование, професия и работа на хиляди млади хора в една от най-търсените професии в света – “софтуерен инженер”, както и възможността за придобиване на държавно-призната диплома за висше образование.

Светлин Наков разказва за СофтУни

Видео за СофтУни от представянето във Велико Търново

2 стипендии за безплатно обучение в СофтУни

Двама шампиони от А група от Зимните състезания по програмиране във Велико Търново получават наградата на СофтУни: прием без изпит в СофтУни + стипендия за безплатно обучение. Печелившите трябва да се свържат с нас: https://softuni.bg/contacts

Презентация за СофтУни от представянето във Велико Търново

Снимки за СофтУни от представянето във Велико Търново

Разгледайте снимки от събитието в Google+.


СофтУни Конф –Боровец, 16-18 май 2014 г.

$
0
0

SoftUniConfMay2014-Logo

Приятели, изключително ми е драго да поканя феновете на програмирането и софтуерните технологии на конференцията на Софтуерния университет:

СофтУни Конф май 2014

Събитието ще се проведе на 16-18 май 2014 г. в Боровец. Може да се запише всеки, който се интересува от програмиране, софтуерни технологии, разработка на софтуер, бази данни, уеб програмиране, мобилни приложения и вградени системи. Събитието е ориентирано към начинаещи. Постарахме се да докараме студентски цени: 99 лв. за 2 дни all inclusive (2 нощувки, 2 закуски, 2 вечери, 2 конферентни дни, кафета, дори бира и вино).

Програмата включва практически обучения и демонстрации на разнообразни теми:

  • Photoshop
  • WordPress
  • SEO
  • Social skills
  • Cloud
  • MySQL
  • Entity Framework
  • ASP.NET MVC
  • pCloud
  • GitHub
  • Linux
  • Android
  • Node.js
  • Arduino
  • Game development
  • Спорт за IT специалисти

Лектори на събитието са опитни софтуерни инженери от индустрията и трейнъри от СофтУни.

Спонсори на конференцията са водещи български ИТ фирми: Komfo, XS Software, Суперхостинг.бг, Информационно обслужване, СофтКонсултГруп и pCloud.

Запишете се участие до 30 април! Можете да доведете и свои приятели на студентската цена.

Научете повече от сайта на SoftUni Conf May 2014: https://softuni.bg/SoftUniConf.

Софтуерният университет набира скорост: 550 души преминаха приемните изпити и се записаха за студенти

$
0
0

Софтуерен университет (СофтУни)

Софтуерният университет (СофтУни) от една дръзка мечта се превърна в реалност. Той стартира официално като проект на 5.11.2013 г. когато Светлин Наков и Христо Тенчев обявиха, че обединяват усилия, за да изградят първия в България университет за софтуерни инженери, където младите хора получават качествено образование, професия и работа в софтуерната индустрия. Приемът за подготвителното ниво #0 започна на 21.01.2014 г. В началото на март 2014 г. отвори врати учебният център на СофтУни в кв. Хаджи Димитър в София (учебна зала за 220 души) и стартираха практическите присъствени обучения по основи на програмирането (ниво #0). Сега (май 2014 г.) в СофтУни вече учат (по стипендия или след заплатена такса за обучение) около 550 студента.

Обученията в СофтУни – март-април 2014 г.

За старта на първите практически курсове по основи на програмирането през март 2014 СофтУни събра около 2700 кандидата. От тях в безплатния курс “C# Basics” (ниво #0) се обучаваха 914 души присъствено в учебната зала в София и още близо 1700 души онлайн. Както се очакваше, не всички бяха достатъчно мотивирани или осъзнаха, че програмирането не е за тях, и за практическия изпит по програмиране в края на курса (който е едновременно и приемен изпит за СофтУни) се записаха около 1200 души. От тях около 895 се появиха на изпита. Това налага от следващия път да въведем такса за явяване на изпит, защото направихме 9 комплекта по 5 задачи с условия, тестове, решения и разпечатка на хартия и 9 изпита по 80-100 души, а реално имаше нужда само от 5 изпита по 180-200 души. От явилите се на приемния изпит за СофтУни ненулев резултат изкараха 743 души. От тях изпита преминаха успешно (с оценка 3.00 или по-висока) около 690 души. На първо класиране балът беше около 4.00, а на второ падна до 3.50 (за присъствено обучение). За онлайн обучение приехме всички, преминали изпита. От всички приети на първо и второ класиране за студенти в следващото ниво #1 се записаха около 550 души: около 250 присъствено и около 300 онлайн. За безплатно обучение по стипендия от СофтУни приехме около 25 студента с топ резултати.

За приемните изпити в СофтУни – април 2014 г.

През април 2014 г. направихме 9 приемни изпита по практическо програмиране за СофтУни. На всеки изпит имаше по 5 задачи, които трябваше да се решат за 6 часа. Оценяването беше с нашата автоматизирана система за проверка в реално време (вж. http://judge.softuni.bg).

Приемен изпит по програмиране в СофтУни - април 2014 Приемен изпит по програмиране в СофтУни - април 2014

Условията на задачите, решенията и тестовете от 9-те приемни изпита за СофтУни, както и линк към judge системата за тренировка, са качени на сайта на курса “C# Basics”.

Започва ниво #1 в СофтУни: курсо по Java, HTML & CSS, JavaScript и PHP

Както може да се очаква, следваме си предварително обявения учебен план:

В ниво #1 от 7 май продължаваме с курса “Java Basics”, където ще изучаваме програмиране на Java в Linux среда. Следват курсове по HTML и CSS, JavaScript основи, PHP основи и работа в екип. Ниво #1 подготвя бъдещия софтуерен инженер за професията, като му предоставя солидна основа от базови знания и умения от сферата на програмирането и уеб технологиите. По време на ниво #1 студентите ще изучават 5 учени предмета и ще имат практически изпити всеки месец. Освен изпитите всички участници в обученията на ниво #1 в СофтУни ще участват и в практически екипни проекти, с които да развият уменията си за работа с хора, да натрупат опит при работата в екип и да разширят техническите си компетенции.

Паралелно с курсовете в СофтУни студентите имат възможност да се запишат в университет-партньор, за да изкарат и диплома за висше образование. Към май 2014 г. СофтУни има съвместни баалавърски програми с Колежа по маркетинг, търговия и мениджмънт (МТМ колеж) и с Варненски свободен университет (ВСУ). Партньорските програма дават възможност да учите 2 години в СофтУни + още 1 година във ВУЗ-партньор и той ви издава държавно-призната диплома за висше образование. В крайна сметка получавате професия, работа и бакалавърска диплома, без да учите диференциални уравнения, материалознание и други излишни за софтуерния инженер дисциплини.

Нов прием в СофтУни – започва отново ниво #0 за напълно начинаещи

Студенти в СофтУниСледващият випуск в СофтУни е планирано да започне през септември 2014 г. когато ще се присъединят стотиците завършващи ученици, които искат да се занимават сериозно с програмиране и софтуерни технологии. По-будните от тях ще изберат съвсем естествено СофтУни, а голяма част от останалите, ще  първо ще се запишат в друг университет и след като се разочароват от него, ще се прехвърлят в СофтУни. При всички положения приемният изпит в СофтУни остава и той е по практическо програмиране. Тъй като програмирането не се изучава сериозно в средното образование, Софтуерният университет предлага безплатни курсове по основи на програмирането.

Нов безплатен курс по програмиране за начинаещи от 24 май 2014 г.

От 24 май 2014 г. започва нов безплатен курс по основи на програмирането (C# Basics) – ниво #0, в който всеки може да пробва дали програмирането е за него – дали му се отдава, дали му е интересно, дали му харесва да се занимава с това, да усети колко бързо учи, да провери дали може да отдели достатъчно време – с две думи пълнофункционална пробна версия (trial version) на СофтУни. Курсът по основи на програмирането продължава 2 месеца и е подходящ за напълно начинаещи. Курсът завършва практически изпит по програмиране, който е приемен изпит за СофтУни за випуска, който започва през септември 2014 г. Тъй като при първото издание на курса C# Basics прекалено много хора злоупотребиха с безплатното, въвеждане такса за приемен изпит в СофтУни в размер на 50 лв. Заплащането на таксата не е задължително, ако нямате намерение да кандидатствате в СофтУни, но се заплаща след първия месец. При успешен прием в СофтУни таксата за изпит се приспада от първата такса за обучение и така курсът C# Basics и изпитът след него остават безплатни.

Как да кандидатствам за СофтУни?

За да кандидатствате за СофтУни, трябва да попълните регистрационната форма: https://softuni.bg/apply. Изискват се автобиография (CV) и мотивационно писмо на английски език. Срок за кандидатстване за този прием: до 20 май 2014 г.

image

Опитайте програмирането безплатно със СофтУни! Ако имате силна мотивация да станете софтуерни инженери и отделите достатъчно време (поне 1 година здраво писане на код), ще ви направим кадърни софтуерни инженери и ще започнете работа по придобитата професия. За момента 95% от завършилите започват работа в софтуерната индустрия (останалите не са започнали, защото не търсят работа). Разбира се, не всички завършват. Не е лесно и затова има хиляди незапълнени позиции за програмисти и софтуерни специалисти на пазара на труда. Опитайте програмирането безплатно и сами преценете дали ви харесва тази професия и дали ви стиска да я научите и работите!

Курс по PHP и MySQL за начинаещи в СофтУни –от юни 2014

$
0
0

Започваме ново професионално обучение по уеб разработка за начинаещи с PHP и MySQL за начинаещи. Научете се да пишете на PHP, да разработвате уеб приложения с бази данни, да разработвате динамични уеб страници и сайтове с най-използваната технология за уеб разработка – PHP.

PHP & MySQL уроци

Курсът по PHP и MySQL уеб разработка започва от 7 юни 2014 г. в Софтуерния университет и е с продължителност 3 месеца. Ще се провежда всяка събота от 14 часа. Можете да се запишете за присъствено и за онлайн обучение. Курсът включва богат набор лекции, демонстрационни примери на живо, практически упражнения, домашни, практически проекти и изпит за сертифициране на придобитите умения.

Учебна програма на PHP & MySQL курса в СофтУни

PHP & MySQL курс в СофтУниУчебната програма разглежда в дълбочина езика и платформата PHP, синтаксисът на PHP и неговите програмни конструкции, работа с масиви, стрингове, класове и обекти. Изучава се природата на уеб програмирането: HTTP, работа с форми, сесии, cookies и изграждане на динамично уеб съдържание с комбиниране на HTML, CSS и PHP. Курсът включва кратко въведение в базите данни и MySQL, разглежда основните SQL команди и работа с phpMyAdmin и дава практически умения за използване на MySQL бази данни от PHP. Изучават се на начално ниво и MVC frameworks за PHP и по-конкретно нашумелия напоследък Laravel, който предоставя изключително богата функционалност при изграждане на сериозни уеб приложения: ORM framework (code first), MVC модел, контролери, рутинг, auto binding, декларативна валидация, улеснен AJAX, templating engine и други. Ето ги и изучаваните теми в PHP курса:

  1. PHP Course Introduction
  2. XAMPP and LAMP Introduction
  3. PHP Introduction
  4. PHP Flow Control
  5. Arrays in PHP
  6. Strings in PHP
  7. Working with User Input
  8. Object-Oriented Programming in PHP
  9. MySQL and phpMyAdmin
  10. Using MySQL from PHP
  11. Web Technologies and PHP
  12. Working with Forms in PHP
  13. Exception Handling in PHP
  14. Composer Packages
  15. Configuring PHP Apache and MySQL
  16. Working with Files and Processes
  17. Best Practices for PHP Development
  18. Useful PHP Classes
  19. Sessions and Cookies
  20. Workshop PHP and MySQL
  21. Laravel Framework
  22. Workshop Laravel

Лектор по PHP и MySQL е Марио Пешев

imageКурсът ще се води от световно-признат експерт по PHP и WordPress и open-source проповедник – Марио Пешев.

Марио е топ преподавател, който освен дълбоки експертни познания и дългогодишен опит с PHP разработката, има и вдъхновяващо присъствие в клас, преподава пламенно и с много енергия и желание.

Може да разгледате негови обучения в YouTube: https://www.youtube.com/results?search_query=Mario+Peshev.Курсове по програмиране и уеб в СофтУни

 

Запишете се до 4 юни за PHP курса в СофтУни с 10% отстъпка

Ако сте прочели тази блог статия и тя ви мотивира да се захванете с PHP програмиране, може да се възползвате от код за отстъпка “NAKOV2905”, валиден само на място в офиса на Софтуерния университет до 4 юни 2014 г.

HTML & CSS курс за начинаещи –от 7 юни 2014 в СофтУни

$
0
0

Запишете се накурс по HTML, CSS и web front-end технологии в СофтУни, за да научите как се правят уеб страници и уеб сайтове, за да изучите в дълбочина езика за описание на уеб съдържание HTML и езика за стилизиране на уеб съдържание CSS. В курса по HTML и CSS ще научите езика HTML и неговите основни тагове, как да създавате уеб страници, как да работите с препратки, списъци, таблици, формуляри и други UI елементи, след което ще овладеете основните техник за стилизиране със CSS: работа със селектори, стилове и класове, правила за визуална презентация (шрифтове, цветове, размери, рамки и др.), правила за позициониране и изглед и техники и инструменти за изграждане на адаптивен дизайн за различни устройства (responsive design). Курсът включва начално ниво на работа с Photoshop за уеб и системи за управление на съдържание като WordPress.

HTML & CSS курс в СофтУни

HTML и CSS курсът е подходящ за напълно начинаещи без опит с уеб технологиите. Курсът започва от 7 юни 2014 г. и ще продължи 3 месеца. Може да се обучавате присъствено в учебните зали на Софтуерния университет или онлайн по видео материалите, които ще публикуваме след всяка тема. Курсът включа разработка на практически проект (изграждане на съвременен уеб сайт) и завършва с практически изпит за сертификация по изучавания материал. Курсът е отличен старт за придобиване на начално ниво в професията front-end developer.

HTML & CSS курс в СофтУниУчебна програма за HTML курса

  • Introduction to the HTML & CSS Course
  • Web Concepts and Tools: HTTP, Web, Web sites and Web applications, browsers, servers, client-server architecture, SOA, Web development tools
  • HTML Fundamentals: HTML, Web pages, Doctype, basic HTML tags, lists, hyperlinks, images, DIVs, SPANs, paragraphs, attributes, HTML 5
  • HTML Forms: the <form> tag, inputs, text boxes, sliders, ranges, color pickers, validation, action
  • HTML Tables: tables, rows, rowspan, cellpadding, colspan, cellspacing
  • Other HTML Tags: all not mentioned tags + deprecated ones, building well structured HTML
  • CSS Basics: CSS overview, CSS styles, inline CSS, embedded and external styles, CSS selectors
  • CSS Presentation: text styles, borders, backgrounds, colors, opacity
  • CSS Layout: display, visibility, widths, heights, floating elements
  • CSS preprocessors & boilerplates: SASS, LESS, Stylus, Bootstrap, Skeleton, etc.
  • Photoshop: Photoshop for Web front-end developers
  • WordPress: WordPress basics, creating WP sites, posts, pages, media, themes, plugins
  • Responsive design: responsive design techniques and CSS media queries, frameworks
  • Advanced Topics: slice and dice, HTML5 shims, recommended HTML5 practices
  • Workshop: creating and styling 5-6 pages (HTML + CSS)
  • Practical Exam

Лектор на HTML & CSS курса е Константин Данков (Коко)

Константин Данков (Коко)Константин Данков (Коко) е уеб front-end разработчик и уеб дизайнер. Занимава се с изграждане на модерни уеб сайтове от доста години насам и има собствена фирма за уеб дизайн и уеб разработка. Коко е силен лектор, който успява да вдъхнови със своето присъствие и експертни познания, обяснява на разбираем език, за да предаде на курсистите своите умения. Научете повече за лектора от неговия уеб сайт: http://dankov.name.

Запишете се до 4 юни за HTML & CSS курса в СофтУни с 10% отстъпка

Ако сте прочели тази блог статия и тя ви мотивира да се захванете с HTML, CSS и front-end разработка, може да се възползвате от код за отстъпка “NAKOV3005”, валиден само на място в офиса на Софтуерния университет до 4 юни 2014 г.

Запишете се за SUPER лятната академия – 8 дни в Родопите обучения и практика по програмиране, дизайн, фронтенд, фотография, видео и екипна работа

$
0
0

практическо обучение по екипна разработка на уеб проекти SUPER лятна академия 2014

От 29 август до 5 септември предстои третото издание на уникалното практическо обучение по екипна разработка на уеб проекти SUPER лятна академия 2014. Инициативата ще се проведе в гр. Девин и е предназначена за ученици и учители с интереси към разработката на уеб проекти. Това включва не само програмиране, но и front-end, дизайн, системна администрация, видео, фотография, маркетинг, управление на проекти, бизнес развитие и др. Учениците работят в екипи под менторството на именити специалисти от ИТ индустрията и създават реален уеб проект, който е изпипан откъм дизайн, програмиране, съдържание, маркетинг и т.н. Най-добрите проекти ще бъдат наградени. Събитието е част от Националната академия по информационни технологии, информатика и визуални изкуства “Аз мога-тук и сега!“, която провежда състезания и обучения за ученици в областта на информационните технологии.

Могат да участват студенти от СофтУни

СофтУни има договорка с организаторите на Супер лятната академия в инициативата да могат да участват студенти от СофтУни (по принцип академията е за ученици). Условията за студентите от СофтУни са същите, като за всички останали.

Програма на Супер лятната академия

Програмата на Супер лятната академия ще включва два етапа:

  • Обучителни семинари и лекции (от 29 август до 1 септември), които целят да разширят познанията на участниците по маркетинг и бизнес развитие, бизнес моделиране, креативност и дигитални технологии
  • Обучения по направления и практическа работа по проекти (от 1 до 5 септември) – участниците ще получат обучение по направления (програмиране, дизайн, front-end, фотография и видео продукция) от водещи експерти от практиката + проектно-базираното обучение (ще се работи по реален интердисциплинарен практически проект в екип)

Къде? Кога? Колко? Как да се запиша?

SUPER лятната академия ще се проведе вкомплекс “Исмена” в гр. Девин в периода 29 август – 5 септември 2014. Таксата за участие е като за ученици – 350 лв. за 7 нощувки + храна за 8 дни в 4-звездния комплект “Исмена” + обучения + игри и групови занимания + спа + разходки и природа + практическа работа по проекти + работа с ментори.

Регистрацията за участие се заявява от сайта на организаторите до 30 юли 2014:

SQL Saturday – 11 октомври –София –безплатна конференция за бази данни

$
0
0

SQL Saturday #311 - BulgariaКолеги организират SQL Saturdayбезплатна конференция за бази данни. Подходяща и е за начинаещи и за напреднали.

Програма

Ще има 5 паралелни трака:

  • Dev – за разработчици
  • DBA – за администратори на бази данни
  • BI – за бизнес аналитици и специалисти по анализ на данни
  • Azure – за cloud специалисти
  • Open Source Systems – за open source проекти и разработки

Вижте цялата програма тук: http://www.sqlsaturday.com/311/schedule.aspx.

Лектори

Лекторите са предимно от чужбина: от САЩ, Изпания, Израел, Украйна, Унгария, Германия, Словения, Македония, Сърбия, Полша, може би и от UK, Холандия и Дания.

Кога? Къде? Как да се запиша?

Датата е 11 октомври 2014 (събота).

Мястото е срещу Фантастикото на Симеоновско шосе (до Студентски град) – София.

За записване ползвайте този лик: http://www.sqlsaturday.com/311/.

SoftUni Conf – 10-12 октомври 2014, Боровец –конференция за софтуерни инженери

$
0
0

SoftUni-Conf-Oct-2014-LogoСофтуерният университет организира второ издание на СофтУни конф: https://softuni.bg/SoftUniConf. Това е технологично събитие за начинаещи програмисти и ИТ специалисти, студенти от университета, любители и ентусиасти. Ще се проведе на 11-12 октомври 2014 в Боровец (уикендът след изборите). Може да участва всеки (включително ако не учи в СофтУни).

Първото издание на СофтУни конференцията през май 2014 беше доста силно, 180 участници, 18 сесии и много позитивен feedback.

Къде, кога, колко?

Сега се събираме за втори път на СофтУни конференцията, за да се запознаем, да научим стотици полезни неща за професията “софтуерен инженер” и много да се забавляваме. Конференцията ще се проведе в периода 10-12 октомври 2014 г. в Боровец, х-л “Рила”. Участието е на студентска цена: 110 лв. за 3 дни all inclusive: с включена храна, 2 нощувки и участие във всички семинари и обучения.

Програма на СофтУни конференцията

Програмата на СофтУни конф октомври2014 включва над 15 семинара на всякакви теми: от уеб програмиране до вградени системи и микроконтролери. Ето и някои от темите на СофтУни конференцията:

  • Писане на WordPress добавки
  • Уеб приложения с Python и Django
  • Криптография за програмисти
  • Разпознаване на говор: алгоритми и имплементация
  • Разработка на iOS приложения със Swift
  • Системи за управление на пакети. PHP Composer
  • Вградени системи и OLinuXino
  • MVC технологични рамки (frameworks) за уеб приложения
  • Как да си напишем собствена операционна система?
  • Как работи микропроцесорът?
  • Работа, учене, инструменти и автоматизация
  • Java 8 и скритите моменти в нея
  • Разработка на Android приложения
  • и други

Как да се запиша за СофтУни конф октомври 2014?

Запишете се за СофтУни конференцията (10-12 октомври 2014) от нейния официален сайт: https://softuni.bg/SoftUniConf. Ползвате отстъпка до края на септември.


Безплатен Unity 3D курс @ СофтУни: научете се да пишете игри!

$
0
0

unity-fast-trackСофтуерният университет организира безплатен курс по разработка на компютърни игри с платформата Unity от 18 октомври 2014. Курсът обхваща работа с компютърна графика, физика, използване на Unity API, разработка на игри, деплоймънт на различни устройства, работа с координати, вектори, материали, камери, шейдъри, GameObject, ресурси, материали, писане на скриптове и програмна логика, работа с вход и изход (мишка, клавиатура, touch), трансформации, откриване на колизии, симулация на физика с Rigidbody, работа с GUI форми и диалогови прозорци, работа със сцени и 2D обекти, спрайтове и слоеве, използване на анимация, вмъкване на аудио и други.

Учебна програма на Unity курса

  1. Unity – основи
  2. Работа с GameObject
  3. Колизии и физика
  4. Работа с GUI и форми
  5. 2D графика, физика и работа с частици
  6. Анимации и аудио
  7. По-сложни скриптове и производителност
  8. Практически проект

Курсът за компютърна графика и писане на игри с Unity 3D започва на 18 октомври 2014 г. и продължава около 2 месеца. Изискват се начални умения по програмиране.

Unity 3D безплатен курс @ СофтУниКак да се запиша за Unity курса?

Курсът за гейм разработка с Unity е безплатен. Можете да се запишете от сайта на Софтуерния университет (СофтУни): https://softuni.bg/trainings/fasttracks/details/1059. По желание можете да разработите практически проект и да се явите на изпит в края на курса, за да се борите за сертификат. СофтУни издава сертификати за професионална квалификация само при доказани практически умения, заради което се изискват добро владеене на изучавания материал, доказани умения по програмиране и успешно полагане на изпит. Научете повече от сайта на курса.

Курсът ще се провежда всяка събота от 10:00 часа в учебната зала на Софтуерния университет (СофтУни). Unity курсът може да се посещава присъствено или онлайн.

Какво е Unity?

Unity е платформа за разработка на видео игри (game engine), приложения с компютърна графика, физични симулации и анимация. Веднъж програмирани на C# или JavaScript игрите могат да работят върху различни устройства и операционни системи: Windows, Linux, Mac OS X, iOS, Android, Playstation, Flash.

Безплатен курс по Linux системна администрация –от 9 октомври в СофтУни

$
0
0

От 9 октомври 2014 стартира безплатен курс за Linux и системна администрация. Курсът е насочен към стартиращи в професията “системен администратор” и обръща внимание на операционните системи и Linux, неговата архитектура, ядро, процеси, обвивка, файлова система, работа с потребители, групи и права за достъп, процесът на първоначално зареждане (boot), използване на команден интерпретатор (bash), инсталация на софтуер и пакетни системи (package managers), конфигуриране на базови системни услуги (syslogd, crond/atd, logrotate, inetd/xinetd, telnet/ssh), настройка и прекомпилация на ядрото, както и управление на поправки (patch management). Linux курсът подготвя на начално ниво ИТ специалисти за работа като системни администратори като им дава солидни познания и практически опит. Курсът завършва с практически изпит.

image

Как да се запиша за Linux курса в СофтУни?

Курсът “Linux System Administration” е безплатен и започва от 9 октомври 2014 г. Ще се провежда всеки четвъртък от 19:00 часа в учебната зала на Софтуерния университет (СофтУни). Linux курсът може да се посещава присъствено или онлайн. Можете да се запишете от сайта на Софтуерния университет (СофтУни): https://softuni.bg/trainings/fasttracks/details/1060. По желание можете да се явите на изпит в края на курса, за да се борите за сертификат. СофтУни издава сертификати за професионална квалификация само при доказани практически умения, заради което се изискват добро владеене на изучавания материал, доказани умения по програмиране и успешно полагане на изпит. Научете повече от сайта на курса.

Преподавателски състав за Linux курса

Курсът по Linux системна администрация ще се води от системни администратори с дългогодишен опит: Мариян Маринов и Стоян Стоянов.

Мариян Маринов е системен администратор по душа, но в последните години се занимава с архитектура на софтуер. Той е управител на 1H Ltd., GetClouder.com и системен архитект на Siteground.com. Води курсове в Софтуерният Университет, ФМИ на Софийски Университет. Мариян е много голям фен на свободният софтуер и помага за случването на най-голямата Българска конференция за свободен софтуер – OpenFest. Когато има време, Мариян води лекции по много конференции в страната и чужбина.

Стоян Стоянов е технически директор в XS Software, където обезпечава безпроблемната работа на 35 000 000 потребителя, които ежедневно играят игрите на XS Software. Занимава се със системна администрация от повече от 10 години насам.

СофтУни се разраства: мести се в нови учебни зали от януари 2015 –повече обучения за повече софтуерни инженери

$
0
0

От 5 януари Софтуерният университет (СофтУни) се мести в нови учебни зали до Интерпред, в близост до Студентски град и на 5 минутки от софийското метро, на ул. Тинтява 15-17.

СофтУни - учебен център на ул. Тинтява 15-17

От януари SoftUni ще оперира с 2 учебни зали, където ще водим двойно повече обучения:

През първата за СофтУни 2014 г. в Софтуерния университет учиха програмиране около 5500 души (записани в ниво #0 в 8 подготвителни курса), от които само 1400 преминаха приемния си изпит и станаха СофтУни студенти в ниво #1. Беше успешна година, макар и изпълнена с много трудности и предизвикателства. Беше вдъхновяваща година, беше силен старт.

През 2015 г. си поставяме още по-амбициозни цели: още по-масово, още по-качествено, още по-достъпно, още по-практическо и още по-резултатно за започване на работа в ИТ индустрията образование за всички с интереси към програмирането и технологиите. Ще продължаваме да даваме качествено образование, професия и работа за хиляди млади хора + бакалавърска диплома (от нашите партньори). Ще подобрим още съществуващите курсове и обучителна методика, ще включим още повече практически занимания, ще направим курсове  още градове извън София, ще дадем повече стипендии и стажове по фирмите и ще изградим още по-силна общност от вдъхновени да учат програмиране млади хора около екосистемата на СофтУни.

Весела Коледа и благодатна Нова година на всички!

Безплатен курс по уеб дизайн с HTML и CSS в СофтУни –от 9 февруари

$
0
0

HTML & CSS курс в СофтУниВ СофтУни стартираме нов безплатен курс по front-end разработка с HTML и CSS от 9 февруари 2015 г. Курсът обхваща основите на HTML и CSS и техники за изграждане на съвременни уеб сайтове. В курса по HTML и CSS ще научите езика HTML и неговите основни тагове, как да създавате уеб страници, как да работите с препратки, списъци, таблици, формуляри и други UI елементи, след което ще овладеете основните техники за стилизиране със CSS: работа със селектори, стилове и класове, правила за визуална презентация (шрифтове, цветове, размери, рамки и др.), правила за позициониране и изглед и техники и инструменти за изграждане на адаптивен дизайн за различни устройства (responsive design), работа с Bootstrap.

Учебна програма на HTML & CSS курса

# Topic Date Hour
1 Web Technologies 09-Feb 18:00-22:00
2 Web Development Tools 09-Feb 18:00-22:00
3 HTML Overview 11-Feb 18:00-22:00
4 HTML Tables 11-Feb 18:00-22:00
5 CSS Overview 12-Feb 14:00-18:00
6 Semantic HTML. Frames. Other Tags 16-Feb 18:00-22:00
7 CSS Presentation 18-Feb 18:00-22:00
8 HTML Forms 19-Feb 14:00-18:00
9 Lab 20-Feb 16:00-22:00
10 CSS Layout & Positioning 23-Feb 18:00-22:00
11 Workshop 25-Feb 18:00-22:00
12 Responsive Design. Bootstrap 26-Feb 14:00-18:00
13 SASS. CSS Transformations 27-Feb 18:00-22:00
14 Exam Preparation 02-Mar 18:00-22:00
15 Exam Preparation 04-Mar 18:00-22:00
16 Teamwork Projects Defense 05-Mar 10:00-18:00
17 Practical Exam 08-Mar 10:00-16:00

Front-end курсът е безплатен!

Можете да участвате в HTML & CSS курса безплатно в онлайн форма. Който желае може да се яви на сертификационен практически изпит в края на курса (срещу заплащане) и ако го издържи успешно, да получи сертификат. Участието в присъствена форма за заплаща. За повече детайли разгледайте сайта на курса по уеб фронт-енд разработка с HTML5: https://softuni.bg/trainings/1085/web-fundamentals-feb-2015-specialized.

Кога и къде се провежда HTML / CSS курсът?

Курсът се провежда в Софтуерния университет (СофтУни) от 9 февруари до 8 март 2015 г. (вж. разписанието по-горе).

Как да се запиша за курса по уеб дизайн с HTML & CSS?

За записване посетете сайта на курса по HTML & CSS: https://softuni.bg/trainings/1085/web-fundamentals-feb-2015-specialized.

СофтУни конф – 20-22 март 2015 –Пампорово

$
0
0

SoftUni-Conf-March-2015-LogoЗа трети пореден път организираме СофтУни конференция за начинаещи в програмирането и софтуерните технологии и фенове на софтуерния университет, този път на Пампорово в периода 20-22 март 2015: https://softuni.bg/SoftUniConf. Очаквайте 15-16 практически сесии с демонстрации на живо, свързани с програмирането и разработката на софтуер – уеб технологии, програмиране, мобилни технологии, хардуер, бази данни, както и нетехнически лекции за софтуерни инженери.

Събитието е доста силно. Очакваме 150-200 участника, начинаещи в професията “софтуерен инженер”. Докарали сме студентска цена (120 лв. за 2 дни с 2 нощувки, храна, конференция, all-inclusive).

Ето малко снимки от минали издания на конфа, за да добиете представа: май 2014, октомври 2014.

Елате да си освежим технологичните знания и да се забавляваме здраво на Пампорово!

Програма на СофтУни конференцията (март 2015)

  • Бърза разработка на уеб приложения с Java, Spring MVC, JPA, Hibernate и MySQL
  • Разработка на сайтове с ASP.NET MVC, C# и Visual Studio – уеб разработка за начинаещи
  • PHP уеб разработка с Laravel5 – сериозна MVC платформа за сериозни уеб проекти
  • Мобилни приложения с Xamarin.Forms и C# за iPhone, Android и Windows Phone
  • SPA приложения с Angular 2.0 и ECMAScript 6 – бъдещето на клиентските уеб приложения
  • 3D графика с HTML5 Canvas и JavaScript – как да си направим browser базирана 3D игра?
  • Структуриране на JavaScript проект – утвърдени практики за JS разработчици
  • Lightning Talks: участниците стават лектори – кратки презентации по 10 минути
  • Управление на паметта – как работят memory managers и garbage collectors?
  • Работа извън офис – freelance работа и как да работим отдалечено?
  • Функционално програмиране, lambda изрази и потоци в Java
  • Функционално програмиране с Haskell – един чисто функционален език
  • MS SQL Server 2014 в действие – нови тенденции в базите данни
  • Internet of Things – как да си направим умни устройства и да ги управляваме от телефон?
  • Програмиране в екип – сорс контрол, документация, конвенции, тестване и други техники
  • Здраве за софтуерни инженери – здравословен живот без болки в кръста и в гърба

Лектори на SoftUni Conf March 2015

  • Светлин Наков – вдъхновител на хиляди млади хора да се захванат с технологии и програмиране, вдъхновител на СофтУни
  • Найден Гочев – Java разработчик и лектор с над 10 години опит в IT сферата, ИТ предприемач
  • Борис Христов – SQL Server MVP, автор на курсове за Pluralsight и SQL Server Consultant в BULPROS
  • Ради Атанасов – софтуерен архитект и разработчик, експерт по Microsoft SharePoint на световно ниво, Microsoft Certified Master
  • Иван Ванков (Gatakka) – професионален лектор и консултант по PHP, Python, бази данни, Web сигурност и оптимизации
  • Мартин Кулов – председател на Асоциацията на софтуерните инженери (ASE), Microsoft MVP, Microsoft Regional Director за България.
  • Марио Пешев – WordPress консултант и технически ръководител в DevriX, commiter в ядрото на WordPress, преподавател в СофтУни.
  • Мариян Маринов – системен администратор и разработчик с 15-годишен опит, проповедник на отворения софтуер, организатор на OpenFest, СофтУни преподавател
  • Павел Колев – JavaScript разработчик в Телерик и технологичен трейнър
  • Михаил Стойнов – експерт по информационна сигурност, софтуерен консултант, лектор и автор
  • Владимир Георгиев – софтуерен инженер и лектор в СофтУни
  • Радослав Георгиев – софтуерен инженер, лектор и предприемач, основател на Хак България
  • Димитър Иванов – софтуерен и хардуерен разработчик в SION, технологичен трейнър
  • Стефан Чеканов – софтуерен инженер и ръководител на проекти с повече от 20 години опит
  • Лазар Радков – експерт по фитнес, треньор, лектор и автор на здравна и спортна тематика, съосновател на BB-Team

Как да се запиша за СофтУни конференцията?

Научете повече за СофтУни конференцията, пакетите и възможностите за участие от нейния сайт: https://softuni.bg/SoftUniConf.

Безплатен курс по дигитален маркетинг и оптимизация за търсещи машини (SEO курс)

$
0
0

Курс по дигитален маркетинг & SEO @ СофтУниЗа всички фенове на дигиталния маркетинг и изграждането и промотирането на уеб сайтове и уеб съдържание в СофтУни започваме нов безплатен курс “Дигитален маркетинг и SEO (оптимизация за търсещите машини)”. Курсът е подходящ за ентусиасти с интереси към уеб маркетинг, реклама и връзките с обществеността (PR), уеб специалисти и разработчици, копирайтъри, блогъри, маркетолози и фенове на Интернет медиите.

Какво ще научите безплатно от SEO курса?

От курса ще научите как работят търсещите машини и търсачката Google, как да изграждате SEO-friendly уеб сайтове, как да оптимизирате вътрешно сайта за търсещите машини (вътрешно SEO), как да изградите оптимизиран за търсачките сайт с WordPress и други CMS системи, как да пишете добри авторски статии и публикации (копирайтинг), къде да ги публикувате, за да създавате външни линкове към вашия сайт. Ще се научите и как да генерирате съдържание, как да го форматирате и оптимизирате за търсене в уеб, как да построявате външни препратки (link building), видовете линкове и тяхната тежест, какво е ранк на уеб сайт и как да го измерваме и наблюдаване, как да промотираме сайтовете си в социалните мрежи (Facebook, Twitter, Google+, LinkedIn и други), как да постваме в блогове, форуми и социални мрежи, как да бъдем харесвани в социалните мрежи, за да имаме авторитет, как да управляваме онлайн репутацията на нашите сайтове, блогове, форуми и страници в социални мрежи (ORM), как да се справим с негативните коментари и мнения, как да поддържаме онлайн репутацията позитивна. Ще се запознаете с какви инструменти можем да използваме в нашата SEO работа и какво ни помагат Google Analytics, Google Webmaster Tools, rank checkers, keyword analyses, content checkers, link analyzers и как да правим мониторинг и анализ на резултатите от търсене в световните търсачки. Ще научите и повече за видео маркетинга и имейл маркетинга и как можем да ги използваме в наша услуга. Курсът завършва с практически курсов проект, в който всеки участник създава един или няколко сайта и ги оптимизира за SEO и промотира според добрите практики в SEO индустрията.

Учебен план на безплатния SEO курс

  • Въведение в курса
  • Въведение в дигиталния маркетинг и SEO
  • Вътрешна оптимизация на уеб сайт (On-page Optimization)
  • Качествено съдържание и копирайтинг (Copywriting)
  • Изграждане на линкове (Link Building & Off-page Optimization)
  • Brand & Trust сигнали за търсачките
  • SEO инструменти (SEO Tools)
  • Маркетинг в социалните мрежи (Social Media Marketing)
  • Платена Интернет реклама (Pay Per Click)
  • Маркетинг по имейл (Email Marketing)
  • Видео маркетинг (Video Marketing)
  • Управление на онлайн репутацията (ORM)
  • Консултации по проектите
  • Защита на практическия проект

Изисквания

В курса могат да участват ученици, студенти, работещи и безработни с интереси към уеб технологиите и Интернет маркетинга. Препоръчително е да имате добра компютърна и езикова грамотност и да бъдат сериозни и мотивирани. Курсът включва сериозни домашни и проекти, за които трябва да разполагате с достатъчно свободно време.

Преподавателски състав

В лекторския състав участват известни български SEO специалисти с опит в организирането на обучения в областта на информационните технологии: Огнян Младенов, Геннадий Воробьов, Калин Каракехайов, Константин Бъчваров, Едуард Димитров и други.

Къде и кога ще се проведе SEO курса?

Безплатният SEO курс стартира на на 28.03.2015 от 10:00 часа в учебна зала Inspiration в СофтУни (ул. Тинтява 15-17, ет. 2). Курсът ще се проведе в рамките на 3 месеца и ще включва лекции, упражнения, домашни задания и финален проект.

Предлагаме онлайн и присъствено обучение

Курсът по SEO е безплатен и можете да участвате присъствено или онлайн. Присъственото участие изисква да посещавате курса в София учебна зала Inspiration и да работите върху упражненията, домашните и проектите в клас и вкъщи. Онлайн обучението изисква да гледате видеозаписите от учебните занятия, които ще се публикуват за свободно гледане на сайта на курса, да работите в къщи по домашните и по курсовия си проект и ако имате желание да защитите проекта си на живо в София или онлайн чрез Skype видео разговор, за да получите сертификат. Защитата на проекта и издаването на сертификат при покрити изисквания струва 200 лв. Можете да се възползвате от промоционална цена от 100 лв. за защита на проект и издаване на сертификат, ако заплатите до 6 април.

Сертификати

Участниците в курса, които са предали всички домашни в срок и са разработили и защитили с отличие курсовите си проекти, ще получат сертификат за успешно завършен курс по “Дигитален маркетинг и SEO”. Сертификатът се издава в уверение на това, че сте усвоили в детайли и с необходимото разбиране и практика учебния материал. Сертификати за участие (без постигнати резултати) не се издават.

Как да се включим?

За да се включите в курса, е необходимо да се регистрирате безплатно на неговия уеб сайт. Местата в присъствена форма на обучение са ограничени.

Регулярни изрази (regex) –Наков @ QA Challenge Accepted

$
0
0

Пускам слайдове и видео от моята лекция на тема “Регулярни изрази” от QA Challenge Accepted конференцията (март 2015).

Видео – регулярни изрази за QA инженери

Слайдове – регулярни изрази за QA инженери

Снимки от QA Challenge Accepted конфа

https://plus.google.com/photos/+SvetlinNakov/albums/6126046249812502465/

Демо примери от лекцията за регулярни изрази

————————————————————

Test RegEx at: http://www.regexr.com

————————————————————

[0-9]+
[A-Z][a-z]*
\s+
\S+
\w+
\W+

————————————————————

\+\d{1,3}([ -]*[0-9]){6,}
+1-800-555-2468 - matched
+359 2 834-2334 - matched
+359888123456 - matched
(052) 343-434 - not matched

————————————————————

^\+\d{1,3}([ -]*[0-9]){6,}$
+359 2 123-456 is a match
+359 (888) 123-456 is a NOT match

————————————————————

Simplified Email Extraction Pattern:
/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,20}/gi

————————————————————

Regex for Validation (JavaScript code)

var emailPattern = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,20}$/i;
console.log(emailPattern.test("test@abv.bg")); // true
console.log(emailPattern.test("a.hills@gtx.de")); // true
console.log(emailPattern.test("invalid@@mail")); // false
console.log(emailPattern.test("err test@abv.bg")); // false

————————————————————

Regex for Splitting (JavaScript code)

var towns = "Sofia, Varna,Pleven, Veliko Tarnovo; Paris – London––Viena\n\n Пловдив|Каспичан";
console.log(towns.split(/\W+/)); // incorrect
console.log(towns.split(/\s*[.,|;\n\t–]+\s*/)); // correct

————————————————————

Regex for Data Extraction (JavaScript code)

var text = "I was born at 14-Jun-1980. Today is 14-Mar-2015. Next year starts at 1-Jan-2016 and ends at 31-Dec-2016.";
var dateRegex = /\d{1,2}-\w{3}-\d{4}/gm;
console.log(text.match(dateRegex));

————————————————————

RFC-822 Email Validation Regex Pattern

/^(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*))*)?;\s*)$/i

Безплатен курс по бази данни в СофтУни –от юни 2015

$
0
0

Курс бази данни @ СофтУниСофтуерният университет стартира безплатен курс по бази данни от 16 юни 2015.  Ще учим бази данни сериозно: и релационни и нерелационни. Започваме с фундаментални концепции, RDBMS системи, езикът SQL в дълбочина (справки, съединения, групиране), работа с SQL Server и MySQL, DB дизайн и E/R диаграми. Навлизаме и в дълбочина: съхранени процедури, транзакции, производителност, NoSQL бази, MongoDB и Redis и заявки върху тях. Курсът завършва с практически изпит по бази данни.

Курс по бази данни (БД): кога и къде?

Курсът по бази данни ще се проведе в софтуерния университет.

Ако съм начинаещ?

Курсът по бази от данни е подходящ за напълно начинаещи!

Учебна програма по бази данни

  • Course Introduction: Course scope, program, exams, trainers, etc.
  • Introduction to Databases: Databases, RDBMS, Tables, Relationships, Normalization, SQL, Triggers, Views…
  • Introduction to MS SQL Server: Introduction, Services, Database Types, Authentication, Permissions, SSMS
  • Introduction to MySQL: Intro, Services, Authentication, Console client, workbench, phpMyAdmin
  • Data Modeling and E/R Diagrams: Principles, Data Types, Creating Databases and Tables, Creating relationships, …
  • SQL Basics: SQL/T-SQL, selecting, inserting, updating, deleting data, joins
  • Advanced SQL: Nested Selects, Agregating Data, DDL, Naming Conventions
  • T-SQL and Stored Procedures: T-SQL, Stored Procedures, Triggers, User-Defined Functions, DB Cursors
  • SQL Performance: SQL Profilers, N+1 Query Problem, Incorrect use of SELECT *, faster deleting objects
  • Transactions: Overview, ACID, Managing Transactions, Concurrency Problems, Isolation Levels
  • NoSQL Databases: Overview, Data Models, Relational vs NoSQL Databases
  • MongoDb: Overview, Installation, drivers, structure, documents, DB Viewers, using with JS and C#
  • Redis: Overview, Installation, clients, using with JS and C#
  • Lab: Live work in class – SQL, Advanced SQL, Stored Procedures, Triggers, Views, …
  • Exam Preparation: Solve the sample DB exam live in class
  • Practical Exam: Automated exam in the judge system

Изпити и сертификат за DB

Курсът по бази данни е безплатен. Ако искате да се явите на изпит по бази данни и да получите сертификат (ако преминете изпита), това е допълнителна платена услуга. Ако искате само да научите да работите със съвременни бази данни (без сертификат), можете да се запишете безплатно за онлайн обучение. Научете повече от сайта на DB курса: https://softuni.bg/trainings/1140/Databases-Jun-2015.

Онлайн и присъствено обучение по Databases

Курсът по бази данни е безплатен при онлайн форма на обучение. Присъствието на учебните занятия, където ще получите персонално внимание и консултации на живо, се заплаща допълнително. Научете повече от сайта на нашия DB курс: https://softuni.bg/trainings/1140/Databases-Jun-2015.

Как да се запиша за БД курса?

Запишете се безплатно за курса по база данни в СофтУни или заявете допълнително изпити, сертификати или присъствено обучение от сайта на курса: https://softuni.bg/trainings/1140/Databases-Jun-2015.

Президентски награди “Джон Атанасов”за постижения в компютърните науки за 2015 г.

$
0
0

От Президентството обявиха конкурса Президентски награди “Джон Атанасов”за Наградата „Джон Атанасов“ на Президента на Републиката за 2015 година.

Наградата „Джон Атанасов“ на Президента на Република България се връчва от 2003 г. насам на изявили се млади български изследователи в областта на компютърните науки в световен мащаб.

Категории за наградата “Джон Атанасов” на Президента

Награда „Джон Атанасов“ за изявили се млади български изследователи в областта на компютърните науки. Връчва се с цел насърчаване развитието на младите български таланти в световен мащаб на млади учени до 35 г. със значими научни постижения.

Грамоти „Джон Атанасов – ученици и техните преподаватели“, за ученици, постигнали най-високи резултати в международни ученически състезания по информатика и информационни технологии и техните преподаватели.

Грамоти „Първи стъпки в компютърните науки“, насочени към ученици и студенти във възрастовата група 12-22 г., постигнали високи резултати с авторските си проекти в национални и международни научни конкурси.

Грамоти „Джон Атанасов – за проекти с голям обществен принос“, които отличават индивидуални и екипни проекти, чиито създатели са под 35-годишна възраст, и които адресират въпроси с обществена значимост посредством компютърните технологии. Последната е отворена към стартиращи компании и самостоятелни проекти в частния, неправителствения и академичния сектор.

Кандидатстване

Крайният срок за кандидатстване за отличията е 20 август 2015 година. Правилата за всяка от категориите и необходимите документи за участие в конкурса са публикувани на интернет страницата на Наградата http://president.bg/cat37/Za-nagradata-John-Atanasov/.

ASP.NET MVC Practical Hands-On Lab Tutorial (Free from the Software University)

$
0
0

As part of the ASP.NET MVC Web Development course at the Software University I developed a practical MVC hand-on lab (tutorial) that gives rich experience in building data-driven Web applications with ASP.NET MVC, ASP.NET MVC 5, SQL Server, C#, Visual Studio, Entity Framework (code first), AJAX, jQuery, Bootstrap and other modern technologies and tools. In this lab you will create a web based event management sytem, from zero to fully working web application. Enjoy this free practical ASP.NET MVC tutorial for beginners. The source code is intentionally given as images to avoid copy-pasting.

ASP.NET MVC Lab (May 2015) – Web Based Events Management System

The goal of this lab is to learn how to develop ASP.NET MVC data-driven Web applications. You will create MVC application to list / create / edit / delete events. The recommended development IDE to use for this Lab is Visual Studio 2013 with the latest available updates + SQL Server 2012. Let’s start building the event management system in ASP.NET MVC step by step.

Project Assignment

Design and implement a Web based event management system.

· Events have title, start date and optionally start time. Events may have also (optionally) durationdescription, location and author. Events can be public (visible by everyone) and private (visible to their owner author only). Events may have comments. Comments belong to certain event and have content (text), date and optional author (owner).

·  Anonymous users (without login) can view all public events. The home page displays all public events, in two groups: upcoming and passed. Events are shown in short form (title, date, duration, author and location) and have a [View Details] button, which loads dynamically (by AJAX) their description, comments and [Edit] / [Delete] buttons.

· Anonymous users can register in the system and login / logout. Users should have mandatory email, password and full name. User’s email should be unique. User’s password should be non-empty but can be just one character.

· Logged-in users should be able to view their own events, to create new events, edit their own events and delete their own events. Deleting events requires a confirmation. Implement client-side and sever-sidevalidation data validation.

· A special user “admin@admin.com” should have the role “Administrator” and should have full permissions to edit / delete events and comments.

Step 1.  Empty Visual Studio Solution

Create a new empty Visual Studio Solution named “Events-Lab“:

image001

This VS solution will hold your projects: data layer project and ASP.NET Web application project.

Step 2.  Empty MVC Project with User Accounts

Create and empty ASP.NET MVC project by the default Visual Studio template with built-in user accounts and authentication. First, click on the solution, choose [Add] à [New Project…]:

image002

Choose [Visual C#] à [Web] à [ASP.NET Web Application]. Name the application “Events.Web“. It will hold your ASP.NET MVC Web application (controllers, views, view models, etc). The data access layer (entity classes + Entity Framework data context) will be separated in another application.

image003

Next, choose the “MVC” project template + “Individual User Accounts” as authentication type.

image004

Visual Studio will generate an ASP.NET MVC application by template, which will serve as start (skeleton) for your Events management system. The application uses a typical Web development stack for .NET developers:ASP.NET MVC 5 as core Web development framework, Bootstrap as front-end UI framework, Entity Framework as data layer framework, ASP.NET Identity system as user management framework, and SQL Server as database.

Step 3.   Customize the MVC Application

The project generated by the Visual Studio template needs many adjustments. Let’s customize the generated code for your Events management system.

1.       Edit the connection string in the Web.config file to match your database server settings. In our case, we will use a database “Events” in MS SQL Server 2014 Local DB: (LocalDb)\MSSQLLocalDB:

image005

2.       Delete some unneeded files:

o   AssemblyInfo.cs – holds application metadata (not needed at this time)

o   App_Data folder – holds the application database (not needed, we will use SQL Server Local DB)

o   favico.ico – holds the Web application icon used in the browser location bar. We will not use it. We can add it later.

o   Project_Readme.html – holds instructions how to start out MVC project

image006

3.       Build and run the application to check whether it works, e.g. by clicking [Ctrl + F5]:

image007

4.       Test the user registration functionality. You should have out-of-the-box user registration, login and logout:

image008

You have a problem. By default, the MVC application is configured to use too complex passwords. This will make hard the testing during the development.

5.       Let’s change the password validation policy:

·         Modify the PasswordValidator in the file App_Start\IdentityConfig.cs:

image009

·         Modify the password minimum length in the class RegisterViewModel. It is located in the file  Models\AccountViewModels.cs:

image010

·         Modify the password minimum length in the SetPasswordViewModel and ChangePasswordViewModel classes, located in the file  Models\ManageViewModels.cs:

image011

6.       Recompile and run the application again. Test the user registration, login and logout again. E.g. try to register user “test@test.com” with password “1“:

image012

After a bit of waiting, Entity Framework will create the database schema in SQL Server and the MVC application will register the user in the database and will login as the new user:

image013

7.       Open the database to ensure it works as expected. You should have a database “Events” in the MS SQL Server Local DB, holding the AspNetUsers table, which should hold your registered user account:

image014

8.       Now let’s edit the application layout view. Edit the file \Views\Shared\_Layout.cshtml.

·         Change the application’s title:

image015

·         Change the navigation menus. Change the home page link. Replace the “About” and “Contact” links with the code shown below. The goal is to put “My Events” and “Create Event” links for logged-in users only. Anonymous site visitors will have only “Events” link to the home page, while logged in users will be able to see their events and create new events:

image016

·         Change the application footer text as well:

image017

·         Remove the junk code from the home controller’s default view \Views\Home\Index.cshtml:

image018

·         Remove the unneeded HomeController‘s actions “About” and “Contacts“:

image019

·         Delete the unneeded Home controller’s views About.cshtml and Contact.cshtml:

image020

9.       Now run the application to test it again. It should look like this for anonymous users:

image021

After login, the application should display the user’s navigation menus. It should look like this:

image022

Now you are ready for the real development on the Events management system. Let’s go.

Step 4.  Separate the EF Data Model from the MVC Application

The application structure is not very good. It mixes the entity data models with the Entity Framework data context and the MVC view models for the views and MVC input models for mapping the forms. Let’s restructure this.

1.       Create a new Class Library project “Events.Data” in your solution in Visual Studio:

image023

2.       Delete the unneeded files from the Events.Data project:

image024

3.       Move the file Events.Web\Models\IdentityModels.cs to the new project Events.Data. You can use [Edit] à [Cut] à [Paste].

image025

4.       Now the Visual Studio Solution will not compile. Many errors will be shown if we rebuild with [F6]:

image026

We need to fix some issues: class names, file names, library references, project references, etc.

5.       Extract the class ApplicationUser into a file named “ApplicationUser.cs“. Change its namespace to “Events.Data“. Your code should look like this:

image027

6.       Rename the IdentityModel.cs file to ApplicationDbContext.cs. This file will hold your Entity Framework database context – the class ApplicationDbContext. Change its namespace to Events.Data. Your code should look like this:

image028

7.       Your code will still not compile. Now you should add NuGet references to the missing libraries: Entity Framework, Microsoft.AspNet.Identity.Core and Microsoft.AspNet.Identity.EntityFramework:

image029

image030

It is enough to reference the package “Microsoft.AspNet.Identity.EntityFramework“. The others depend on it and will be installed by dependency.

8.       Fix the missing using …” in the code. The project Events.Data should compile without errors.

9.       The project Events.Web will not compile due to missing classes: ApplicationUser and ApplicationDbContext. Let’s fix this.

10.   Add project reference from Events.Web project to Events.Data project:

image031

11.   Fix the missing using Events.Data;” statements in the Events.Web project.

Now the project should compile correctly. If not, check your library and project references and “using” statements.

12.   Test the MVC application. It should work correctly. Test the Home Page, Register, Login and Logout:

image032

Step 5. Define the Data Model

Now you are ready to define the data model for the Events management system: entity classes + Entity Framework database context + data migration classes. Let’s define the entity classes:

1.       First, add a full name in the ApplicationUser class. It will hold the name of the event’s author:

image033

2.       Next, create your Event class. It will hold the events and their properties:

image034

image035

Compile your code. It should compile without errors.

3.       Create your Comment class. It will hold the comments for each event:

image036

Compile your code. It should compile without errors.

4.       Add comments to the Event class:

image037

image038

Compile again your code. It should compile without errors.

5.       Modify the ApplicationDbContext class to include the events and comments as IDbSet<T>:

image039

Compile again your code. It should compile without errors.

6.       Run the MVC application. It will fail at the Login action. Think why!

image040

You need a migration strategy for the database, right? How shall changes in the DB schema be handled?

Step 6.   Configure Database Migrations

Now you will configure automatic migration strategy for the database to simplify changes in the database schema during the project development.

1.       First, enable the database migrations from the Package Manager console for the Events.Data project:

image041

The command “Enable-Migrations” will generate a file Migrations\Configuration.cs in the Events.Data project:

image042

2.       The generated DB migration class has non-informative name. It is a good practice to rename it: Configuration à DbMigrationsConfig. Rename the file that holds this class as well: Configuration.cs àDbMigrationsConfig.cs.

image043

3.       Edit the DB migration configuration: make the class public (it will be used by the MVC project); enable automatic migrations; enable data loss migrations:

image044

4.       Set the database migration configuration in the database initializer in your Global.asax file in your MVC Web application:

image045

5.       Now run the MVC application to test the new database migration strategy. Rebuild the application and run it. The application will fail!

image046

Seems like the database migration has not been executed, right? You could also check the database:

image047

The new tables (Events and Comments) are missing.

6.       Let’s fix this problem. The easiest way is just to drop the database:

image048

7.       Let’s run the MVC Web application again and try to login. It will say “Invalid login“:

image049

This is quite normal: we dropped the entire database, right? Let’s see what the database holds now:

image050

8.       Let’s register a new account. The application will fail with “Entity Validation Errors“:

image051

The problem comes from the field “FullName” in the ApplicationUser class. It is required but is left empty.

9.       We need to change the RegisterViewModel, the Register.cshtml view and the Register action in the AccountController to add the FullName property:

image052

image053

image054

10.   Now run the application and try to register a new user account. It should work correctly:

image055     image056

Step 7.  Fill Sample Data in the DB (Seed the Database)

You are ready to fill the database with sample data. Sample data will help during the development to simplify testing. Now let’s fill some data: create admin account and a few events with few comments. The easiest way to do this is to create a Seed() method in the database migration strategy.

1.       In the Seed() method check whether the database is empty. If it is empty, fill sample data. The Seed() method will run every time when the application starts, after a database schema change. You can use sample code like this:

image057

In this example, the default administrator user will be “admin@admin.com” with the same password. This will simplify testing, because some actions require administrator privileges in the system.

2.       Now, let’s create the admin user and the administrator role and assign administrator role to the admin user:

image058

image059

3.       Next, create some events with comments:

image060

4.       Add some code to create a few more events:

·         Few upcoming events

·         Few passed events

·         Few anonymous events (no author)

·         Events with / without comments

5.       Drop the database and restart the Web application to re-create the DB.

If you get “Cannot open database” error, stop the IIS Server, rebuild and run the MVC application again:

image061

Stopping the IIS Express web server (Internet Information Services):

image062

6.       Check the data in the Events database. It should hold few records in the Events, Comments, AspNetUsers, AspNetRoles and AspNetUserRoles:

image063

Now you have sample data in the Events database and you are ready to continue working on the Events management MVC Web application.

Step 8.  List All Public Events at the Home Page

Listing all public events at the home page passes through several steps:

·         Create EventViewModel to hold event data for displaying on the home page.

·         Create UpcomingPassedEventsViewModel to hold lists of upcoming and passed events.

·         Write the logic to load the upcoming and passed events in the default action of the HomeController.

·         Write a view to display the events at the home page.

1.       Create a class Models\EventViewModel.cs to hold event data for displaying on the home page:

image064

2.       Create a class Models\UpcomingPassedEventsViewModel.cs to hold lists of upcoming and passed events:

image065

3.       Create a class Controllers\BaseController.cs to hold the Entity Framework data context. It will be used as base (parent) class for all controllers in the MVC application:

image066

4.       First extend the BaseController from the HomeController to inherit the DB context:

image067

5.       Now write the code in the default action Index() of the HomeController to load all public events:

image068

The idea of the above code is to select all public events, ordered by start date, then transform them from entity class Event to view model class EventViewModel and split them into two collections: upcoming and passed events.

6.       Finally, create the view to display the events at the home page – \Views\Home\Index.cshtml:

image069

7.       The above code shows the upcoming events only. Add similar code to list the passed events as well.

8.       You need to define a display template for the EventViewModel class. It will be used when the Razor engine renders this code: @Html.DisplayFor(x => x.UpcomingEvents). Create the display template in the file\Views\Shared\DisplayTemplates\EventViewModel.cshtml:

image070

9.       Build and run the project to test whether it works correctly. If you have a luck, the code will be correct at your first attempt. The expected result may look like this:

image071

10.   Now let’s add some CSS styles to make the UI look better. Append the following CSS style definitions at the end of the file \Content\Site.css:

image072

11.   Refresh the application home page to see the styled events:

image073

12.   Good job! Events are displayed at the home page. Now let’s optimize a bit the HomeController. It holds a code that loads an Event object into a new EventViewModel object:

image074

This code can be moved to the EventViewModel class to make the HomeController cleaner:

image075

Looks complex, but it is not really. This static property is used in .Select(…) queries to transform Event into EventViewModel. Such transformations are boring and work better encapsulated in the view model class. Now the HomeController can use this static property as follows:

image076

13.   Build and test the project again to ensure it woks correctly after the refactoring.

Step 9.  List Events Details with AJAX

The next step in the development of the Events management application is to display event details dynamically with AJAX. The goal is to achieve the following functionality:

image077

1.       First, let’s define the EventDetailsViewModel class that will hold the event details:

image078

It will internally refer the CommentViewModel class:

image079

2.       Next, let’s write the AJAX controller action, that will return the event details when users click the [View Details] button:

image080

The above logic is not quite straightforward, because event details should be shown only when the user has permissions to access them:

·         The event author can view and edit its own events (even private).

·         System administrators can view and edit all events (even private).

·         Public events are visible by everyone, but not editable by everyone.

3.       It is quite good idea to extract the check whether the current user is administrator in the BaseController:

image081

4.       Next, let’s create the partial view that will be returned when the AJAX request for event detail is made. The partial view for the above AJAX action should stay in \Views\Home\_EventDetails.cshtml.

First, display the event description:

image082

Next, list the event comments:

image083

Finally, show [Edit] and [Delete] buttons when the user has edit permissions:

image084

5.       Now, let’s edit the events display template \Views\Shared\DisplayTemplates\EventViewModel.cshtml and add the AJAX call in it:

image085

6.       Let’s test the new functionality. Everything works fine, except that the AJAX action link is executed as normal link without AJAX:

image086

7.       What is missing? The script that handle the AJAX calls are not loaded in the page. Let’s add it.

·         First, install the NuGet package Microsoft.jQuery.Unobtrusive.Ajax in the project Events.Web:

image087

·         Register the Unobtrusive AJAX script in the bundles configuration file App_Start\BundleConfig.cs, just after the jQuery bundle registration:

image088

·         Include the unobtrusive AJAX script in the view which needs AJAX: \Views\Home\Index.cshtml

image089

This code will render the “~/bundles/ajax” bundle in the section “scripts” in the site layout:

image090

8.       Now the AJAX functionality should work as expected:

image091

The network requests in the Web browser developer tools shows that the AJAX call was successfully executed:

image092

Step 10.   Create New Event

The next feature to be implemented in the Events management system is “Create New Event“. This will require creating a “New Event” form (Razor view) + input model for the form + controller action to handle the submitted form data.

1.       First, let’s define the input model for the create or edit event form. It will hold all event properties that the user will fill when creating or editing an event. Let’s create the class Models\EventInputModel.cs:

image093

It is a good idea to attach validation annotations like [Required] and [MaxLength] for each property to simplify the validation of the form.

2.       Next, let’s create the “New Event form. The easiest way to start is by using the Razor view generator in Visual Studio. Create a folder “\Views\Events“. Right click on the “Events” folder and choose [Add] à [View…]:

image094

Enter a view name Create“. Select template Create“. Select the model class EventInputModel (Events.Web.Models)“. Click [Add] to generate the view:

image095

Visual Studio will generate the “Create Event” form:

image096

3.       Now customize the generated form. Change several things:

·         Change the Title à “Create Event”

image097

·         Remove the “Back to List” link:

image098

·         Add [Cancel] link to “My Events”, just after the [Create] button:

image099

4.       Create EventsController to handle the actions related to events: create / edit / delete / list events.

image100

image101

image102

5.       Add the “Create” action (HTTP GET) to display the “New Event” form:

image103

6.       Build the project, run it and test the new functionality (login and click [Create Event]). The “New Event” form should be rendered in the Web browser:

image104

Create New Event Logic

After the “Create New Event” form is ready, it is time to write the logic behind it. It should create a new event and save it in the database. The correct way to handle form submissions in ASP.NET MVC is by HTTP POST action in the controller behind the form. Let’s write the “Create New Event” logic.

1.       First, extend the BaseController to inherit the database context:

image105

2.       Next, write the action to handle POST \Events\Create:

image106

3.       Run and test the code. Now creating events almost works:

image107

When the form is submitted, the result will be like this:

image108

This is quite normal. The “My” action in the EventsController is not missing.

4.       Let’s define the action “My” and the view behind it in the EventsContoller:

image109

Create an empty view \Views\Events\My.cshtml (it will be implemented later):

image110

5.       Now run and test the application again:

image111 àimage112

Check the database to see whether the new event is created:

image113

6.       At the home page the new event is not listed. Why? The event is not public. Let’s make the “Is Public?” check box in the “New Event” form checked by default:

image114

Step 11. Notification System (Info / Error Messages)

The next big step will be to add a notification system to display informational and error messages like these:

image115

Typically, MVC controller actions that modify DB objects (e.g. EventsController.Create) work as follows:

·         Check the model state. If the validation fails, the model state will be invalid and the controller will re-render the form. The form will show the errors for each incorrect field.

·         If the model state is correct, create / edit the database object behind the form.

·         Add a notification message to be shown at the top of the next page shown in the Web application.

·         Redirect to another page that lists the created / modified DB object.

As the “Post-Redirect-Get” pattern says, in Web applications it is highly recommended to redirect to another page after executing an action that changes something at the server side:http://en.wikipedia.org/wiki/Post/Redirect/Get.

The missing part in ASP.NET MVC is the notification system, so developers should either create it, or use some NuGet package that provides notification messages in ASP.NET MVC. Let’s install and use the NuGet packageBootstrapNotifications:

1.       From the package management console in Visual Studio install the NuGet package BootstrapNotifications in the Events.Web project:

image116

NuGet will add the class Extensions\NotificationExtensions.cs:

image117

NuGet will also add a partial view \Views\Shared\_Notifications.cshtml:

image118

2.       To display the notification messages (when available) at the top of each page in the MVC project, render the _Notifications partial view in the site layout, just before the @RenderBody():

image119

3.       Put notifications in the controller actions after successful database change.

Use NotificationType.INFO for information messages (success) and NotificationType.ERROR for error messages. Not that these notifications will render after the first redirect to another page, because the implementation relies on the TempData dictionary in ASP.NET MVC.

Add notification messages after db.SaveChanges() in the actions that change the database, followed by RedirectToAction(…):

image120

4.       Run and test the application. Create an event to see the “Event created.” notification message:

image121

This looks a bit ugly, so add a fix in the \Content\Site.css:

image122

5.       Save the changes, refresh the site with [Ctrl + F5] and create a new event to test the changes:

image123

Step 12.  Date / Time / Duration UI Controls

The “New Event” form displays fields for entering date + time and duration. Currently the editor for these fields is not user-friendly. The date format is unclear and there is not calendar control. Let’s fix this. Let’s add “date-time picker” for the date and duration fields:

1.       Install the NuGet package “Bootstrap.v3.Datetimepicker.CSS“:

image124

It will add the following files to your MVC project:

·         \Scripts\bootstrap-datetimepicker.js

·         \Scripts\moment.js

·         \Content\bootstrap-datetimepicker.css

These files should be includes in all pages that use the date-time picker.

2.       Create CSS and JavaScript bundles for the date-time picker:

image125

3.       Create a placeholder for the CSS bundles in the _Layout.cshtml:

image126

It will be used later to inject the date-time picker’s CSS from the events editor form.

4.       Add the date-time picker’s scripts and CSS files in the “New Event” form, in \Views\Create.cshtml:

image127

This code will inject the specified CSS from the bundles in the page header:

image128

It will also inject the specified JavaScript from the bundles at the end of the page:

image129

5.       Now the site is ready to add the date-time picker in the “New Event” form. Let’s try to attach the date-time picker for the field “StartDateTime” in \Views\Events\Create.cshtml:

image130

6.       Now rebuild the project and run the code to test the new functionality. It does not work due to JavaScript error:

image131

7.       Seems like jQuery is not loaded. This is because the script for attaching the datetimepicker for the StartDateTime field uses jQuery, but the jQuery library loads later, at the end of the HTML document. This is easy to fix, just move the jQuery reference at the start of the HTML code in _Layout.cshtml:

image132

8.       Now rebuild the project and run the code to test again the new functionality. It should now work correctly:

image133

9.       In similar way, add a time picker for the “Duration” field:

image134

10.   Test the new duration picker by starting the Web application:

image135

Step 13.   Client-Side Unobtrusive Validation

Now the “New Event” form works as expected. There is a small UI problem: when invalid data is entered, the form validation is executed at the server side and the user sees the validation errors after post-back, with a small delay.

Let’s try to add client-side form validation. This is really easy, just insert the Microsoft jQuery Unobtrusive validation JavaScript bundle at the page holding the form:

image136

Test the “New Event” form to ensure the validation is now client side.

Step 14.         List My Events

Now let’s list current user’s events at its personal events page: \Events\My.

1.       First, add [Authorize] attribute in the EventsController:

image137

The [Authorize] attribute will redirect the anonymous users to the login form. It says that all controller actions of the EventsController can be accessed by logged-in users only.

2.       Next, add the HTTP GET controller action “My” in EventsController that will display current user’s events:

image138

3.       Finally, create the view My.cshtml behind the above action. It is essentially the same like the Index.cshtml view of the HomeController, right? Duplicating code is very bad practice, so let’s reuse the code. First, extract a partial view \Views\Shared\_Events.cshtml, then reference it from \Views\Events\My.cshtml and again from \Views\Home\Index.cshtml:

image139

image140

image141

4.       Test the new functionality “My Events“, as well as the old functionality “Home Page“:

image142

image143

5.       Try also to access “My Events” for anonymous user. The application should redirect you to the login page:

image144

Step 15. Edit Existing Event Form

The “Edit Event” functionality is very similar to “Create Event“. It uses the same input model Events.Web.Models.UpcomingPassedEventsViewModel. Create a view \Views\Events\Edit.cshtml and reuse the logic from \Views\Events\Create.cshtml by extracting a partial view \Views\Events\_EventEditorForm.

Step 16.  Edit Existing Event Logic

Write the controller action for editing events in the EventsController.

1.       Write a HTTP GET action “Edit” to prepare the form for editing event. In case of invalid event ID, show an error message and redirect to My Events“:

image145

2.       The logic in LoadEvent(id) method loads an existing event in case the user has permissions to edit it:

image146

3.       Write a HTTP POST action “Edit” to save the changes after submitting the event editing form. It should first check the event ID and show an error of case of non-existing event or missing permissions. Then it checks for validation errors. In case of validation errors, the same form is rendered again (it will show the validation errors). Finally, the Edit method modifies the database and redirects to “My Events“:

image147

4.       Run and test the new functionality “Edit Event” by opening \Events\Edit\3.

Step 17.   Handling HTML Special Characters

Try to create an event named “<New Event>“:

image148

It will fail, because by default ASP.NET MVC does not allow forms to send HTML tags in the fields values. This is to help protecting from Cross-Site Scripting (XSS) attacks. You will see an ugly error page:

image149

This is very easy to fix, just add [ValidateInput(false)] attribute in the BaseController:

image150

Step 18.   Delete Existing Event Form

Create a form and controller action, similar to “Edit Event”. The form should load the event data in read-only mode with [Confirm] and [Cancel] buttons.

Step 19.   Delete Existing Event Logic

The logic behind the “Delete Event” from is similar to “Edit Event”. Try to implement is yourself.

Step 20.   Add Comments with AJAX

For each comment implement [Add Comment] button that shows (with AJAX) a new comment form. After the form is submitted, it creates a comment and appends it after the other comments for the current event. Comments can be added by the currently logged-in user and anonymously (without login).

Step 21.  Delete Comments

Comments can be deleted only by their author (owner) and by administrators. Display [Delete] button right after each comment in the events (if deleting is allowed). Clicking [Delete] should delete the comment after modal popup confirmation.

Step 22.    Add Paging

Implement paging for the events. Display 15 events per page. At each page display the pager holding the number of pages as well as [Next Page] / [Previous Page] links.

Step 23.   Upload and Display Event Image

Modify the “Create Event” form to upload an image for the event (optionally). The image should be at most 100 KB, max width 400, max height 400, min width 100 and min height 100 pixels. Images should be gif, png orjpeg files, stored in the file system, in files named like this: event-185.png. Hold the images in a directory “~/Images“. Protect the directory to disable direct HTTP access to it.

Create an action /event/image/{id} to download and display an event image. It should read the image from the file system and display it if the user is allowed to view it (owner or administrator or public event).

Modify the event listing views to display the image for each event (when available). Use max-width and max-height attributes to ensure the image will resize correctly for different sizes of its container.

The Full Source Code of the Events MVC Application

Download the fully-functional application source code here: https://softuni.bg/trainings/24/ASP-NET-MVC-May-2015 (see section “Lab”).

Първи стъпки в ORM технологиите с Entity Framework (Наков @ БСУ хакатон 2015)

$
0
0

Бази данни - безплатен курс в СофтУниДнес бях лектор в Бургас на хакатона на Бургаския свободен университет. Направих чудеса от храброст да обясня като за абсолютно начинаещи само за час и половина какво е база релационна данни и как работи, какво са обектите в ООП и как мапваме C# класове и обекти към таблици и редове от базата данни чрез ORM framework и да демонстрирам как се използва Entity Framework (EF) – водещата ORM технология от .NET света за достъп до данни. Показах инсталиране на EF, генериране на EF DbContext по съществуваща база данни (database first with EF) и как да генерираме база данни по съществуващи C# класове с връзки между тях (EF code first). Демонстрирах заявки върху данните с LINQ, работа с АPI-то на EF, извличане на данни, добавяне, промяна и изтриване (CRUD). Показах и автоматичните миграции на DB схемата при промяна на модела на данните при code first подхода в Entity Framework.

Както винаги, записах видео и го споделям заедно със слайдовете за всички с интереси към програмирането и базите данни.

Видео за ORM и Entity Framework – как да работим с бази данни от C#?

Слайдове – Entity Framework ORM – първи стъпки

Ако сте се запалили по темата, можете да гледате безплатно курсовете по бази данни и ORM технологии в СофтУни:

Безплатен курс за QA инженери в СофтУни

$
0
0

imageВ Софтуерния университет стартираме безплатен курс за QA инженери от 13 юли 2015 г., който дава базови умения за осигуряване на качеството на софтуера: софтуерно тестване (ръчно и автоматизирано), откриване, описание и проследяване на бъгове в системи за бъг тракинг, работа с QA инструменти и поглед върху цялостния development и QA процес.

Курсът QA Fundamentals ще ви запознае с основните концепции на осигуряването на качеството на софтуера (software quality assurance / QA). Ще овладеете най-използваните техники и инструменти за софтуерно тестване и средства за проследяване на проблеми в съвременната софтуерна разработка. Ще се научите как да комуникирате в екип чрез системи за проследяване на проблеми (issue trackers) и системи за управление на задачи (JIRA, GitHub Issues). Ще разберете как проблемът да стигне до правилния човек, без той да има последващи въпроси. Щe научите как да търсите дефекти чрез въвеждане на подходящи входни данни и как да тествате потребителското изживяване. Ще се научите да работите със спецификации на софтуерните изисквания (SRS). Освен ръчното тестване и описване на дефектите, ще се разгледа и тест автоматизацията. Ще се научите да работите с най-използваните в QA бранша инструменти за автоматизирано тестване като Selenium.

QA курсът е безплатен в онлайн и присъствена форма. По желание можете да заплатите за явяване на изпит накрая и сертификат (при успешно полагане на изпита).

Viewing all 101 articles
Browse latest View live