SoftUni Конференция – март 2015

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

SoftUni-LogoУниверситета беше създаден преди около година и половина, и следя развитието му с интерес. Радвам се, на успехите и конференциите, които организират. Студентите и младите ИТ специалисти, имат нужда от събития, на които да обменят знания и опит с по-старшите си колеги.

В СофтУни Конф ще се включат доста опитни и известни лектори от ИТ сферата. Ще има много и интересни теми свързани с разработването на софтуер. Някои от темите са чисто технически, като например: уеб разработка, мобилни приложения, бази данни, 3D графика. Други от темите са нетехнически, но обхващат важни аспекти от професията “софтуерен инженер”: здраве, спорт и социални умения. А аз ще имам привилегията да говоря за една тема, която е свързващото звено между техническите и нетехническите – “Програмиране в екип”.

Повече информация и записване на страницата на конференцията: https://softuni.bg/SoftUniConf

Ще се видим там. Ще бъде весело и полезно 🙂

HTML5 Android Cordova

Преди няколко седмици се включих в курс по програмиране на HTML5 за Android, който се води от моя приятел Леон Анави.

В курса се запознаваме с технология, за която бях чувал, но не бях пробвал – хибридни приложения за мобилни устройства.

Хибридни приложения

Хибридните приложения са уеб приложения, написани на HTML, CSS, JavaScript, които се изпълняват на мобилно устройство. Мобилните платформи не позволяват директно използване на HTML, CSS, JavaScript за да си направите приложение. Затова се прави следния трик:

  1. Пишете си приложението на HTML, CSS, JavaScript, така, както бихте го писали да се изпълнява в web browser – Google Chrome, FireFox, Internet Explorer.
  2. Когато дойде време да качите приложението на мобилно устройство, то се пакетира с Web Browser control. Реално, мобилното ви приложение е един Web Browser, като този browser изпълнява вашия HTML, CSS, JavaScript код, които са включени в пакета на приложението.
  3. Потребителя на приложението не забелязва, че това е уеб приложение. За него то изглежда като нормално приложение за мобилното устройство.

Архитектурно така изглеждат нещата:
cordova-phonegap-encryption

Предимства

Идеята е добра и има следните предимства (нa теория):

  • Пишете кода веднъж, ползвате го на много мобилни платформи
  • Лесно за разработване – използват се масовите технологии HTML, CSS, JavaScript
  • Следствие от горното е, че има много уеб програмисти, които няма нужда да се квалифицират за всяка отделна платформа.

Недостатъци

  • Светът на мобилните устройства е доста разнообразен. Оказва се, че Web Browser Control-а, който се използва на всяка платформа, се доставя от самата платформа. А всяка платформа реализира по различен начин HTML5 стандарта.
  • JavaScript, който изпълнявате в Web Browser Control-а има ограничен достъп до устройството. За достъп до неща като: камера, GSP, Accelerometer се използват специални плъгини. Не е сигурно дали тези плъгини работят еднакво на всички платформи.
  • Следствие от горното е, че ако искате приложението да върви на много устройства, все пак ще трябва да се съобразите с различните особености и да напишете съответния код.
  • Езикът за програмиране е JavaScript. Това не е език, на който можете лесно да напишете сложно приложение. За малки и сравнително прости проекти – върши перфектна работа. Но ако искате нещо по-сложно е трудно проекта да се направи и след това поддържа.
  • Следствие от горното е, че приложението може да работи много бавно и да консумира много ресурси на устройството.

Знаех за горните предимства и недостатъци и принципно как работи идеята. Но не знаех на практика как се случват нещата.

Разглеждаме платформата Apache Cordova, като се фокусираме на приложения за Android.

Първи впечатления

  1. Сравнително лесно за инсталиране на платформата за разработване
  2. Широка поддръжка на платформи на които да разработвате приложенията – Windows, Mac, Linux
  3. Широка поддръжка на платформи за които да правите приложения – Android, iOS, Windows Phone, Windows desktop, Ubuntu, Mac OS X, Balckberry и други
  4. Добра документация
  5. Сравнително лесно се пише приложение

Освен това открих, че има много приложения направени на Apache Cordova (PhoneGap е комерсиалната версия на Apache Cordova), което показва, че платформата е популярна.

Инсталиране на Apache Cordova

Оказа се, че хората са се потрудили и инсталацията на Apache Cordova е лесна. Много бързо, без особени затруднения се стига до създаването на “Hello World” проект, който после лесно се модифицира според вашите нужди.

В Интернет е пълно с ръководства, как да се инсталира, но ще го напиша тук за да ми напомня на мен как се прави 🙂

Инсталирате:

  1. Android Studio – няма да го използвате да пишете кода, но то ще инсталира Android SDK, което ви трябва за да правите приложение на Cordova за Android
  2. Node.js – с него се инсталират следващите компоненти
  3. Cordova

    npm install -g cordova

  4. Ripple – емулатор с който можете да пускате приложенията в web browser. Така лесно се дебъгват и тестват.

    npm install -g ripple-emulator

  5. Създаване на Cordova проект

    cordova create project-folder com.yourname.project-name Project-Name

  6. Добавяне на Android като платформа към проекта

    cd project-folder
    cordova platform add android

Това е. Сега взимате любимия си текстов редактор и започвате работа.

 

ПС: Леоне, благодаря за курса 🙂

Програмиране в екип

На 18 октомври за втора поредна година се проведе конференцията PlovDev. Целта е да се укрепи ИТ общността. Бях един от лекторите, като моята презентация беше на тема “Програмиране в екип”.

Програмирането е екипна работа. Добрите резултати се постигат с добър екип. А за да е добър екипа, трябва всичките му членове да знаят как се програмира в екип.

В лекцията разгледах няколко основни правила при работа в екип:

1. Код конвенция

2. Коментари в кода

3. Тестване на кода

4. Работа със системи за Source Control

5. Работна етика

Ето самата презентация в PDF формат.

 

Конференцията беше много интересна с теми, които засягаха различни области от програмирането. Запознах се с хора от различни градове на страната, обменихме идеи или просто общувахме.

Благодаря на организаторите за перфектната организация и се надявам скоро да има нови издания, които да популяризират добрите практики в програмирането.

Ето снимки от конференцията

Мобилни приложения, които комуникират

Тукс – символът на безплатния софтуер с отворен код

Знате ли кой е Тукс (Tux) ? Това е пингвинът, който е официален символ на Линукс – безплатната операционна система, която е и с отворен код. Пингвинът се е превърнал в символ на всички безплатни и с отворен код софтуерни приложения.

Тази събота и неделя имахме конференция TuxCon посветена на безплатния и с отворен код софтуер за мобилни, вградени и устройства за обличане. Лектори, специалисти в различни области споделиха опит и визия отностно технологиите.

Една от лекциите я водих аз, като темата беше “Мобилни приложения, които комуникират”. Споделих опита, който натрупахме при прехода ни от дестоп приложения, към мобилни. Основният ни продукт Бросикс, започна като комуникационно приложение за Windows, после добавихме Mac и Linux – все десктоп операционни системи. Когато решихме да добавим мобилните Android и iOS, срещнахме нов свят, където старите принципи и начини на работа не работят така, както очакваме. По-късно направихме друго мобилно приложение, което комуникира – GuestVista. В тридесетте минути, които ми бяха дадени, се опитах да споделя целия ни опит и да дам насоки в които колегите да работят, когато проектират и изграждат своите мобилни приложения, които комуникират.

Това е видео-запис на презентацията, а тук можете да видите всички презентации от конференцията.

Ето самата презентация в PDF формат.

 

Конференцията беше много интересна с теми, които засягат важни области от света на мобилните и вградените устройства. Запознах се с хора от различни градове на страната, Гърция и Турция, обменихме идеи или просто общувахме. В неделя имахме практическа част, в която участниците имаха възможност да се докоснат до света на вградените устройства. Беше ден посветен на хардуер.

Благодаря на организаторите за перфектната организация и се надявам скоро да има нови издания, които да популяризират добрите практики в разработването на приложения за мобилни устройства, вградени устройства и новите, набиращи популярност устройства за обличане.

Ето снимки от конференцията

Ако програмистите строяха къщи

Този текст ми попада на няколко пъти из мрежата. Не знам кой е автора, но донякъде отразява как се работи в някои проекти. Подчертавам някои, защото много екипи работят качествено, в срок и бюджет и задоволяват напълно изискванията на клиента.

Ако си програмист и си попадал в подобна ситуация, забавлявай се 🙂


Ако програмистите строяха къщи.

1.03. Ура! Предложиха ни огромен договор за построяването на 12 етажен жилищен блок. У всички има бурен ентусиазъм. Изпихме от радост 2 каси бира.

2.03. На възложителя не му се харесва израза, “когато стане, тогава”. Иска да кажем, конкретни срокове. Идиотът нищо не разбира от високи технологии.

3.03. Обсъждахме сроковете. Изпихме 3 каси бира. Петров казва, че ще стане за 4 месеца. Значи за 8 месеца. В договора записахме 12 месеца, но едва ли ще се оправим за по-малко от 16.

6.03. Петров отиде да върне бутилките.

8.03. Празнуваме 8 март. Във фирмата няма жени, така че никой не ни пречи на празника.

2.04. Петров казва, че трябва да започнем работа. Какво му стана на този човек. Изчистихме строителната площадка и закачихме красиви плакати “Строежът се изпълнява от компания “Allstroy” (www.allstroy.bg)”. С чувство на изпълнен дълг играем “Quake”.

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

21.04. Обсъждахме проекта. Сидеров предлага панелна архитетура. Петров настоява, че всичко трябва да се строи по стария начин от тухли, а не по ламерски. Най-радикалния проект предложи Алекс. Предлага да построим няколко десетки дървени бараки и да ги съединим с подземни тунели. На Запад било модно. Напомнихме му, че все пак клиента иска 12 етажен блок. Опитахме се да решим въпроса, чрез дуели на Quake. Алекс с неговите дървени бараки, бързо отпадна, но резултата между Сидеров и Петров излезе равен. Решихме всеки да строи по свой план и след това да ги съединим, за да не падне.

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

10.05. Петров изтрезня първи и дълго псува. Мислехме, че Алекс е изпил всичката бира. Оказа се по лошо. Забравили сме за основите. В проекта са описани, но документацията я четат само идиоти.

11.05. Разрушихме първия етаж. Обидно е.

11.07. Работим. Петров довършва втория етаж, Сидеров – петия. Алекс е направил асансьорната шахта до деветия етаж, но при силен вятър се клати подозрително. Засега сме я подпрели с дървено скеле.

17.07. Алекс прави терасите и покрива. На земята. После ще ги вдигнем с кран.

13.08. На Сидеров не му се засрещат панелите. Дупката е почти метър. Сидеров помоли Петров, но той каза,че има достатъчно работа и изобщо без знание на вътрешната архитектура на панелите нищо не може да се направи.

14.08. Разбихме няколко панела за да може Петров да изучи вътрешната архитектура. Петров псува и казва, че проектантите на панелите са пълни идиоти.

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

1.09. Строителният комбинат пусна нова версия панели, с повишена устойчивост и здравина, с вградени стенни шкафчета. Истината е, по форма и размер не са съвместими със старите и са три пъти по тежки. На каква архитектура разчитат в строителния комбинат?

16.09. Дойде Алекс, пълен с идеи. Предлага да направим всички прозорци в блока със различни размери. Възложителят щял да ги хареса. Казахме му да не се ебава.

2.10. Петров стигна до 5 етаж. Горд е от себе си. Обърнахме му внимание, че стените са под ъгъл 40 градуса. Той псува, вика, каза че сме идиоти и нищо не разбираме. После обеща да помисли.

3.10. Дойде възложителят. Пита защо стената е наклонена под ъгъл 40 градуса. Обяснихме му за кориолисовата сила. Той ни изслуша, после каза, че той от строителство не разбира, но до неговата къща има точно такъв блок и всички стени са прави. После този идиот Алекс се лепна за него и му разказа за изменените прозорци. Възложителят естесвено ги хареса. Мамка му.

4.10. Питаме Алекс, дали ще се наложи да разбием всичко заради неговите прозорци. Уверява ни, че няма нужда – в стандартните панели има недокументирана функция.

5.10. Петров призна, че със стената има проблем. Казва че неправилно сложил, някаква тухла. Но за да разбере коя, трябва да ги провери всички. По-лесно е да направи всичко наново.

6.10. Убеждаваме Петров, че да построи всичко наново няма да му стигне времето. Демострираме му изчисления с калкулатор. Петров псува, вика, каза че калкулатора са го измислили идиоти. После се съгласи, да правим всичко от панели и с мъка отиде да се напие.

8.10. Разбихме тухлената част. Повредихме и част от панелната. Цялата сграда скърца и се клати заплашително. Укрепихме я с дървени подпори и отидохме да играем Quаkе.

17.10. Петров се върна от запоя. Работим.

7.11. Празнуваме 7 ноември – или както се нарича сега? Комунисти във фирмата няма, затова никой не разваля празника.

15.11. Спомнихме си, че крана стига само до 8 етаж. Пратихме Сидеров за нов кран. Играем Quаkе. Алекс победи Петров. Расте нова смяна.

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

25.11. Направихме мозъчна атака за крана. На последната бутилка бира намерихме решение. Зарязваме основното строителство. Ще строим 4 етажен блок. После ще сложим крана на покрива му.

25.12. Празнуваме католическото Рождество. Католици във фирмата няма, затова никой не разваля празника.

14.01. Нищо не помня. Главата ме боли. Коя година сме?

2.02. Най после сме готови със 12-я етаж. Утре ще сложим покрива, който направи Алекс.

3.02. Алекс е идиот. Покрива пада редовно. Засега сме го подпрели с крана. Ще мислим, какво да правим по нататък.

4.02. Алекс казва, че не виновен. Просто 12 етаж на Сидеров е пет метра по-широк и четири метра по-висок от 12 етаж на Петров. Става ясно, че са строили от различни панели. Но Алекс все пак е идиот, защото неговия покрив не става и за двата варианта. Асансьорната шахта също.

5.02. Лепихме, закрепвахме покрива. Петров казва, че ще издържи ако не завали сняг.

7.02. Заваля сняг…

10.02. Направихме покрива от щпертплат и тенекия и боядисахме всичко. Да се надяваме, възложителят няма да забележи.

11.02. Тествахме ансансьора. Спира между етажите, но може да се излезе от кабината. На четните етажи с пълзене, на нечетните с подскачане. Да не забравя да го опиша в документацията.

12.02. И изобщо ансансьора работи много бавно. Петров псува всички идиоти. Казва, че ще започне да го оптимизира.

13.02. Петров оптимизира ансансьора. Той се засили, проби покрива и отлетя в неизвестна посока. Добре, че покривът е от щпертплат и се оправя лесно. Падна и асансьорната шахта. Спомнихме си, че така и сменихме дървените подпори с нещо по-надежно. Нищо. Да се ходи пеша е полезно.

15.02. Започнахме довършителните работи. Някъде постояно изчезват бояджии. Обадихме се да пратят още.

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

20.02. Алекс най накрая направи изменящите се прозорци. Тествахме. Изясни се, че при промяна на размера са разбиват стъклата. Освен това се наблюдават и някои странични ефекти. Например от гостната на един апартамент може да се влезе в банята и тоалетната на друг. Освен това постоянно изчезват вратите и падат балконите. Да се жалваме в строителния комбинат е безполезно – ще кажат, че не дават гаранция за недокументирани функции.

21.02. Дойде възложителят. Пита може ли да направим незначителни промени в проекта. И по точно, вместо 12 етажен блок, да построим няколко десетки дървени бараки и да ги съединим с подземни тунели. Чел, че така било модно на Запад. Неутрализирахме Алекс, още преди да си отвори устата и вежливо и твърдо обяснихме на възложителя, че не е прав.

22.02. Балконите продължават да падат, макар че не пипаме прозорците. Явно е независим бъг. Какъв е късно да търсим, така че махнахме и останалите. Ще опитаме да обясним на възложителя, че сме го направили за оптимизация

23.02. Празнуваме 23 февруари. Военни във фирмата няма, затова никой не ни пречи на празника. Жени също няма затова никой не раздаде подаръци. Обидно е.

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

27.02. Спомнихме си, че сме забравили да направим входа. Мислим няма ли да падне блока, ако го пробием сега. Сидеров казва – по-добре да не рискуваме. Петров, го нарече идиот и се съгласи. Да не забравя да опиша в документацията, че влизането през прозореца е особеност на дизайна.

1.03. Как така първи март ?! Откъде?! Вчера беше… Мамка му! Кой да знае, че този смотан февруари е 28 дни. Излиза, че трябва да сме готови вдруги ден, а не след седмица.

2.03. На работа. Работим 24 в денонощие, непробудно.

3.03. Убедихме възложителя, че ни е нужен още един ден за финално тестване. Мдаа, добре поработихме вчера… В крайна сметка не е толкова страшно.Голяма работа, че някои врати са на пода, други на тавана или от 10 етаж водят направо на улицата, че някои апартамените е невъзможно да се достигнат, в други тоалетната е заедно с кухнята, че в половината няма вода, а в останалата ток, че канализацията се излива на шестия етаж и се наложи да направим стълбите между осмия и деветия етаж въжени? НО главното е да – покажем блока на възложителя по правилния маршрут. А да – и да сложим снимки на мястото на изчезналите прозорци…

4.03. Yes! Yes! Направихме го! Отбелязваме предаването на обекта. Пия малко, трябва да успея да изчезна, преди всичко това си е-о майката.


Моята любимата част е

“21.02. Дойде възложителят. Пита може ли да направим незначителни промени в проекта. И по точно, вместо 12 етажен блок, да построим няколко десетки дървени бараки и да ги съединим с подземни тунели. Чел, че така било модно на Запад.”

Обърнете внимание на “незначителни промени” 🙂 🙂 🙂