weboholic.de

random rant-o-rama

Archive for the ‘размисли и страсти’ tag

Twitter

with 2 comments

От няколко седмици ползвам по-скоро активно Twitter. Горе в дясно синьото птиченце линква към моя профил. Следя няколко души, няколко ме следят мен. Все още обаче не мога да разбера, какъв е смисълът на тази услуга. Микроблогинг? Така е описана в свободната енциклопедия. Но това не е така. Според мен. Над 80% от трафика е безсмислен: “спи ми се”, “днес е гаден ден”, “отивам в тоалетната”, “карам колело”. Wtf? Даже и за хората, които са ми най-близо до сърцето ми, или вътре в него, не ме интересува, кога отиват до тоалетната. Това си е чист интернет ексхибиционизъм.

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

Друго добро приложение на услугата е разпространяването на новини. Ето за утре вторник, 14.02.2009 14.01.2009, е плануван протестът срещу правителството. Присъстващите бих могли в рамките на секунди да информират интернет общността за развитието на шествието, за отрицателни или положителни впечатления. За разлика от протестите срещу предишното правителство на БСП преди десет години, аз този път няма да имам възможност да съм на барикадите, поради простата причина, че съм в Германия. Но със сигурност ще са ми страшно интересни новини от първа ръка от мястото на събитието. А това ще бъде Twitter, няма да са блоговете, те ще предоставят информация, чак на другия ден.

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

Written by Никола

January 13th, 2009 at 4:06 pm

Какво е да си Web Developer?

with 2 comments

Искам да споделя моето мнение по въпроса, какво значи да си Web Developer. И по-важното - какво значи да си добър Web Developer. Ще се опитам също, да развенчая няколко мита и легенди за уеб програмирането.

HTML е език за програмиране

HTML не е език за програмиране, ами е език за описване на данни. Самата абревиатура казва точно и ясно за какво служи езикът - Hypertext Markup Language. XML (Extensible Markup Language), от своя страна бидейки extensible, е език за програмиране, който предоставя transformations, namespaces и други чудесии. И тук се крие коренът на проблема: грешно е схващането, че HTML е диалект, под-клас, сложи тук любимото ти определение, на XML. HTML и XML са братя или братовчеди, защото двата езика са под-спецификации на SGML.

Уеб разработчикът се занимава с правене на уеб страници.

Искам да одебеля на думата страница и да я разгранича от уеб апликацията. А какво точно е уеб апликация? Ще дам едно много просто определение: уеб апликацията е апликация, която мигрира десктоп програми и функции към уеб платформата и ги прави достъпни онлайн. Уеб страниците от своя страна нямат десктоп еквивалент, защото те са уеб страници. Поради тази причина не смятам, че блоговете са уеб апликации. Но софтуерът, който задвижва един блог или сайт, със сигурност е апликация. Но той е апликация, чийто стандартен изход е уеб.
Уеб разработчикът се занимава с уеб апликации или с апликации, чиито стандартен изход е уеб. Уеб страниците са за любители и те не изискват дори и средни познания.
Искам да отбележа, че напоследък се развива и нов отрасъл в уеб разработването: уеб апликации предназначени да работят в десктоп среда. Но това е друга тема на размисъл.

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

Когато една страница не работи или не изглежда правилно, то браузърът е виновен.

Windows, Linux Kernel и Mac OS са различни операционни системи, но имат сходна функция (централното управление на компютъра на ниско ниво), която те извършват по различен начин. Microsoft Office, OpenOffice и iWork са различни офис пакети, но имат сходна функция (офис програми), която те извършват по различен начин. Съвместимостта между различните системи и програми е всичко друго, но не и перфектна, защото това за различни решения на един и същ проблем. Когато една програма не работи в дадена среда, виновен е разработчикът на програмата, а не средата.

По същия начин стоят нещата и при браузърите. IE, Firefox, Safari, Chrome и Opera са различни браузъри, но имат сходна функция, която те извършват по различен начин. Когато една страница не работи в даден браузър, виновен е разработчикът на страницата, а не браузърът.

Уеб програмирането е грозно и е като манджа с грозде.

Да, грозно бе. Вече не е. Преди години всичко беше пълна бъркотия и абсолютен миш-маш. Това се отнася както за технологичния стак на клиента, така и за този на сървъра. Но от няколко години се прилагат и все повече се налагат модерни софтуерни архитектури и design patterns (как ли е това на български?), които вдигат качеството, повишават гъвкавостта, и които изискват по-задълбочени познания на материята.

Уеб разработчикът го мързи да учи “по-висши” езици.

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

Какво е да си Уеб Разработчик?

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

Какво е сървър?

Сървърът е така наречения backend. Това е архитектурата на отделните демони (proxying и load balancing, httpd) и тяхната скалируемост от една страна. Но също така е и архитектурата на базите данни (replication и clustering) и тяхната скалируемост от друга. Чувам, че това е работа на системния администратор. Съгласен съм. Но за да може уеб разработчикът да си свърши по-бързо и по-качествено работата, то той трябва да е наясно с различните възможности, техните плюсове и минуси и за ефекта, който архитектурата би имала върху съответната апликация. Уеб разработчикът трябва да умее да комуникира и да работи със системния администратор на напреднало ниво, а не да го прекъсва на всяка втора дума питайки за обяснение на терминологията.
Основната част обаче пада върху програмирането на бизнес логиката и моделирането на базата данни. А както е известно, има много инструменти (PHP, Python, Ruby, MySQL, Postgre, etc.) и винаги трябва да бъде използван правилният инструмент за съответната задача. Уеб разротчикът трябва да знае, кой инструмент в коя ситуация е правилен.

Какво е клиент и мрежа?

Това вече е най-голямата лудница :).

Най-лесно е страницата да бъде реализирана на Flash, на Silverlight или на JavaFX, които биват изпълнявани в собствен пясъчник, който няма разлики между отделните браузъри и операционни системи. Проблемът обаче е, че (а) това са приставки, за които никой не може да е сигурен, че са инсталирани на клиентската машина; че (б) не са напълно мулти-платформени и имплементациите за различните операционни системи се различават, ако въобще има билдове за всички; и че (в) не са достъпни и използваеми от хора, които ползват screen readers или работят без мишка и клавиатура.

Другата алтернатива е триото (X)HTML/CSS/JavaScript. При тях проблемът е, че различните браузъри интерпретират по различен начин CSS (външния вид на страницата) и JavaScript (функционалността на страницата, основен компонент за ARIA). Или с други думи: когато апликацията (или отделен компонент) е готова за един браузър, се започва с тестване и програмиране за следващия браузър в списъка. И така няколко пъти. И на края на проекта, кодът е силно бренчнат, а уеб разработчикът обикновено е плешив, защото си е оскубал косите …

А мрежата са различните методи на транспорт - TCP/IP vs. WebSockets, HTTP vs. SNMP. Уеб разработчикът трябва да знае за разликите и за техните плюсове и минуси. Хайде сега, да си признаят хората, които не са чували или не знаят, какво е long-lived connection или chunk-encoding.

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

А сигурността?

Сигурността се явява като под-компонент на всеки един от другите два компонента. И ако системният администратор е отговорен за сигурността на отделните сървъри, то уеб разработчикът е отговорен за всичко останало: SQL injection, Session fixation, XSS, CSRF, Clickjacking и т.н. И понеже тази област е силно динамична и всеки ден излизат нови неща, то уеб разработчикът трябва постоянно да се информира за последните иновации и открития.

Какво е да си добър Уеб Разработчик?

Това е уеб разработчикът, който има от добри да напреднали познания във всеки един от горе-изброените компоненти на играта. Тези хора са the real deal. Така че хайде стига сте ни омаловажавали, защото нашата област е доста по-динамична и по-hostile от спокойствието на C++ в Windows среда, примерно.

Written by Никола

November 7th, 2008 at 2:30 pm

Clicky Web Analytics