Category Archives: Разработка на софтуер

Курс по основи в анализа на мобилни приложения – iOS и Android

Mobile App Analytics Fundamentals

Съвсем на скоро ми попадна връзка към курс по Google Analytics за мобилни устройства – Android и iOS и реших да сменя лекторското място с такова на ученическата скамейка. Това е първият курс на Google, който посещавам и съм доволен от приятната атмосфера и подход към обучението.

Видеото към всеки от уроците е доста кратко – 2 до 4 минути и са доста точни по темата. Всеки 4 урока завършват с кратък тест, който се оказа, че може да коригираш при попълване на грешни отговори. Засяга се не само Google Analytics, но и Google AdMob и Google AdWords, от което само мога да бъде още по-доволен.

Поглеждайки назад мисля, че приключих курса в порядъка на 2 часа, разделени в два или три дни, което е нищо в сравнение на времето, което съм прекарал в безцелното гледане на клипчета в Youtube или Facebook. “Изненадващо” за всички получих и сертификат от Google, който удостоверява, че съм завършил курса.

Certificate in Mobile App Analytics Fundamentals

Certificate in Mobile App Analytics Fundamentals

Курсът е отворен още една седмица и всеки може да се запише и научи няколко основни неща в Google Analytics за мобилните платформи.

https://analyticsacademy.withgoogle.com/course04

Ще се радвам да ми оставите коментар за курса – преди и/или след като го изкарате, за да споделите своето мнение!

Advertisements

Въвеждаща лекция в програмирането с iOS

След събитието, което организира през зимата – Курс по програмиране за iOS във Варна – Зима 2014, където за мое съжаление успях да постигна едва 1/3 от поставените си цели реших да организирам второ подобно събитие. Учейки се от предишния опит промених следните неща:

  • време на събитието – докато Курсът по програмиране беше шест дни и половината от участниците се отказаха, Лекцията ще бъде няколко часа. По този начин целя да я направя по-атрактивна за ангажираното ежедневие на всеки.
  • място на събитието – за Курса исках да организирам машини – Mac-ове, които хората да ползват, за да се запознаят с особеностите на XCode и iOS. Тогава не успях да намеря фирма, която да финансира подобно начинание и сега смених подходя – “Ако Мохамед не може да отиде при планината, планината ще отиде при Мохамед”. Свързах се с магазин ХОП.бг, които отвориха нов шоурум във Варна съвсем наскоро и ги помолих да споделят наличните си машини, които предлагат за продажба, за идеята. Въпреки различията, които имахме с тях в крайната цел на събитието те се съгласиха да участват – посетителите на Лекцията ще могат да ползват наличните за продажба Apple Macbook Pro докато аз правя демонстрация на Objective C и Swift код.

Програмата за Въвеждащата лекция по програмиране за iOS е:

  • Защо програмирането за iOS не струва (Why iOS Development Sucks) – ниво Начинаещ / Средно / Напреднал – ще разкажа за нещата, които не харесвам в програмирането за iOS и въпреки това продължавам да го правя и да го харесвам.
  • Здравей, Swift (Hello, Swift) – ниво Начинаещ – практически пример, създаване на малко приложение използвайки новия език на Apple – Swift, който беще представен през лятото на WWDC 2014
  • Практики в програмирането на iOS приложение – дисекция на реален мой проект – Ниво Средно / Напреднал ще покажа кода от приложението, което разработвам в момента и ще разкажа за проблемите, които съм или все още не съм решил.

Лекцията по програмиране за iOS ще се проведе на 02.11.2014 (неделя) на адрес: ул. Караагач №2, Варна

Входът е свободен!

Моля, заповядайте на Въвеждащата лекция в програмирането с iOS.

https://www.facebook.com/events/1518484625056661/

https://plus.google.com/u/0/events/ck7jhlthlrjmu45hch5q4f5evko

Курс по програмиране за iOS във Варна – Зима 2014

Идеята зад курса по програмиране за iOS във Варна

През есента на 2013 реших да организирам курс по програмиране за iOS във Варна – поводът беше разговор с мой приятел, ръководещ софтуерна фирма, в който той сподели, че клиентите му най-много търсят iOS приложения и програмисти. Към момента във Варна имаше сравнително малко хора с подобни умения, в сравнение с други технологии (PHP).

Курс по програмиране за iOS във Варна - основна страница

Курс по програмиране за iOS във Варна – основна страница

В търсене на спонсор за курса по програмиране за iOS във Варна

Първоначалната ми идея включваше осигуряване на компютър (Mac) за всеки участник, за да бъдат максимално улеснени участниците. Въпреки наличието на над 40 регистрации за курса, софтуерните фирми във Варна отказаха да спонсорират създаването на подобна среда, в която да се обучават и създават iOS програмисти.

Въпросът пред мен беше дали да се откажа от провеждането на събитието или да го направя без Mac-ове за участниците и без заплащане за мен. Вече знаете отговора – насрочих дата и организирах курса.

Провеждане на курса по програмиране за iOS

Първата среща беше насрочена за 28ми януари 2014 (28.01.2014) в 18:30, на нея присъстваха 6 човека. Групата беше доста разнородна – един от участниците за пръв път се сблъскваше с програмиране, а друг работи като iOS програмист в момента. За сметка на това ентусиазмът у учасниците беше на доста високо ниво – дори метеорологичните условия не ги отказаха (една от вечерите температурата навън беше -15 градуса)!

За шест събирания успяхме заедно да създадем малко мобилно приложение, което изпраща заявки към Google Places API и обработва резултатите от търсенето.

Част от участниците в курс по програмиране за iOS във Варна

Част от участниците в курс по програмиране за iOS във Варна

Изказвам благодарности към всички участници в курса по програмиране за iOS във Варна – без вас мечтата ми щеше да остане такава! Също така благодаря на VarnaLab, където се проведе самият курс!

За новини към курса по програмиране за iOS във Варна може да следите страницата във Facebook – Курс по програмиране за iOS във Варна – Facebook. Ако желаете да получавате известия по електронна поща може да се запишете на основната страница на курса – Основна страница за курс по програмиране за iOS във Варна

Enable iCloud for Your Simple Text Editor iOS Application

Developing for iOS Devices

For more than a week I’ve been following tutorials on iOS application development provided by Apple on their official website – developer.apple.com. It is no secret that they are handy and help a developer walk into the world of iOS development and have their own traps ready for you. Falling in one of those traps made me write this simple tip for those who start with the iOS development tutorials from the Apple website.

Your Third iOS Application – iCloud Simple Text Editor

Following the Getting Started tutorials I reached the iCloud application tutorial called “Simple Text Editor”. The tutorial begins with some instructions on how to provide your developer’s system with a provisioning profile that would allow you to test the iCloud application on your device. In the begining of the tutorial is explained that iCloud could only be used with a real device, not a simulator.

Configure Your Project’s iCloud Entitlements

This is the section where I faced my challange – the tutorial says:

3. Select the Enable Entitlements option.

Xcode adds an entitlements file to your project and automatically enters default values for accessing iCloud.

When I ran the application I got the This tutorial requires iCloud, but it is not available. instead of the iCloud is available. To fix this I had to manually do the following:

  • check the Enabled iCloud option
  • check the Use store with identifier
  • add the first of the Ubiquity Containers list

Entitlements for iCloud Application Building

Entitlements for iCloud Application Building


iCloud iOS application Summary Page

iCloud iOS application Summary Page

After doing these simple but important steps I mannaged to run the iCloud Simple Text Editor application.

Проектиране на софтуерно приложение в cloud среда – VChat

Подход при проектирането на cloud базирани софтуерни приложения

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

Информационната индурстрия разпознава четири основни подхода, които да превърнат едно съществуващо софтуерно приложение или прокта за такова в система използваща изчисления в облака:

  • преносимост – възможността да създадем копие на работеща система от фирманата машина и го пренесем директно без промени върху облака. Проблем при такъв подход може да се окаже обвързаността на системата със специфичен Linux driver, който е добавен на собствения сървър, но е несъвместим с наетата система или клиента няма достъп до използваната операционна сисмета от облака.
  • интернет мащаб – две от най-големите интернет компании, чиито продукти се използват от милиони потребители на ден са започнали като приложение, стартирано на един сървър в една точка на света – това са Facebook и Twitter. По времето на техния старт cloud парадигмата все още слабо развита и компаниите сами развиват свои изчислителни центрове, които да поддържат системите им в настоящето. При огромните темпове, с които са развиват двата гиганта те неведнъж се изправят пред сериозни проблеми свързани с първоначалния проект на техните бази от данни.
  • мигновени изчисления – силна практическа реализация постигат приложенията, които се нуждаят от значителна изчислителна мощ за сравнително кратко време. Поддръжката на подобна изчислителна мощност в “спящо” състояние би генерирало големи загуби, пример за подобен подход е онлайн системата Eventseer.net, която по график използва услугите на Amazon EC2, за да генерира резервно копие на своите 600 000 страници.
  • еластично хранилище – подобни системи се характеризират с възможността съхраняваната, под формата на различни файлове, информация да нараства експоненциолно. Въпреки, че хранилището в наши дни е относително евтина услуга поддръжката й изисква значителни ресурси, разпространението и съхранението на данните до различни точки на света генерира големи разходи.
Многослойна софтуерна система VChat

Многослойна софтуерна система VChat

Изисквания към разработката на софтуерно приложение VChat

Функционални изисквания към софтуерното приложение VChat

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

Същевременно е необходимо да се подходи с разбиране към потребителите, които често имат малки познания по същността на материята, която виждат. Често те са свикнали да работят с основни софтуерни продукти – MS Word, MS Excel, Skype – за тях е важно да намират нещо познато в новите системи, с които се запознават. Постигането на външен вид близък до описаните по-горе и добавяне на клавишни комбинации, които да подпомагат потребителя е важна стъпка към успешния старт и развитие на един софтуерен продукт.

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

Важна изискване е изработването на качествен дизайн на системата, който да отговаря на новостите в Интернет средите. Най-големите компании – Google и Facebook често започват да променят външния вид на своите най-печеливши продукти, като по този начин достигат до все по-голяма аудитория.

Изисквания към програмната реализация на софтуерното приложение VChat

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

Използването на най-новите технологии предполага дълъг живот на всеки продукт, който се създава. Разработката на софтуер в облачна среда и в частност използването на готова платформа за работа (PaaS) предполага, че за поддържането на основните технологии в крак с новостите е задача на доставчика на услуга, не толкова на разработчика. Необходимо е да подходи мъдро към помощните библиотеки, които използва, за да се избегне конфликт между избор на библиотека, която бързо се изчерпва от поддръжка и платформа, която често бива обновявана.

Всеки продукт се нуждае от модерна система за контрол на версиите, използването на подобна предоставя възможност за бързо и лесно възстановяване на проблем в нея, както и достъп до историческото й развитие. Голяма част от доставчиците на облачни услуги като платформа за разработка предоставят някоя от най-разпространените версии – SVN, Mercurial, Git.

Сигурността в облака (cloud)

Притеснения към сигурността в cloud

Най-голямото притеснение на компаниите, които не работят с облачни системи, при тяхното споменаване е свързан със защитата на интелуктуалната им собственост и клиентска информация в споделения и общодостъпен формат на облака. Тяхното притеснение е, че всеки може да си наеме облак в съседство с фирмения им и лесно да прескочи “оградата” между двата имагинерни имота, след което да открадне клиентската информация на хиляди (милиони) хора.

На картината е представена графика на тема “Най-големите притеснения на ИТ компаниите, свързани с облачните структури”, проведено през 2009г. от компанията IDC.

Липса на пълна защита за данните

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

Полза от съхранението на данни в cloud

Вторият аргумент в подкрепа на облака и тезата, че информацията там е по-добре защитена е свързан с факта, че компаниите доставчици – Google, Amazon, Yahoo! и др. отделят милиони годишно, за да създадат изключително добре обезопасени информационни центрове – както физически, така и информационно. Често в тайна остава самото местоположение на тези центрове, което спомага тяхното безпроблемно опериране. От другата страна, компаниите, които сами отговарят за съхранение на клиентската си информация наемат офис в центъра на града, в близоста с много сгради и добре обезпечени от инфраструктура, създават сървърно помещение, поставят видеонаблюдение за стотина евро на месец и алармена инсталация. Това ги кара да са спокойни за физическата обезпеченоста на техните машини, а всъщност се създава една доста благоприятна среда за евентуални посегателства.

Защита на данните в cloud

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

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

Сертификати за сигурност в cloud

Същевременно доставчиците на cloud computing услуги покриват критериите за издаване на сертификат за сигурност SAS 70 Type II (Statement on Auditing Standards No.70: Service Organizations, Type II), който гарантира, че получилият такъв сертификат отговаря на шест месечни изпитания, които имат за цел да покажат надежността от гледна точка на сигурност.