May 14 2011

Learn to love Javascript

Category: Dev,WebLucho @ 13:43

Дойде това време от годината, когато човек може да се наслади на изобилие от качествени презентации, благодарение на Google IO. Първото видео, което изгледах беше от Alex Russell, който говори за бъдещия стандарт на Javascript – Harmony. Harmony ще направи опит да очовечи езика, чрез оператори и похвати, които са дефакто-стандарт на повечето функционалните скриптови езици. Все пак не става дума за кардинална промяна, а за “захаросване” на синтаксиса, така че кодът написан за предни версии на езика да си е напълно валиден.

Както и да е, това не е най-интересното от презентацията. Най-интересното от нея е едно изречение, което характеризира перфектно Javascript и очертава основното различие между този език и останалите скриптови езици:

You don’t create classes that are state with behaivour attached,
you create behaivour that holds the state that it needs.

Enjoy 🙂

Tags: ,


May 11 2011

Django за ненормални хора

Category: Dev,WebLucho @ 23:07

Говорим за Python 2.5+ и Django 1.2+

Какво ще направите ако ви трябва динамично създаден модел?

Първосигналното решение е да създадете класа на модела и под него да добавяте полетата. Това е погрешно поради ред причини, но най-основната е, че базовия клас на моделите (models.Model) се създава посредством метаклас (models.base.ModelBase), който е отговорен за магиите под капака и веднъж щом е създаден класа няма как да добавяте нови атрибути и магиите да сработят с тях.

Второсигналното решение е да създадете наследник на метакласа, който да е отговорен за динамичното създаване на желания модел. Това е доста по-елегантно и в стила на Python, а и ще можете да използвате метакласове най-накрая и да се похвалите на приятелите си :D.


class MetaDynamicData(models.base.ModelBase):

 def __new__(cls, name, bases, attrs):

   newattrs = {'__module__': 'myapp.models'}

   # Да речем, че искате да добавите динамично по един атрибут за всеки месец
   months = [datetime.datetime(2000, x, 1).strftime('%b').lower() for x in range(1, 13)]
   for m in months:
     newattrs[m] = models.IntegerField()

   return super(MetaDynamicData, cls).__new__(cls, name, (models.Model,), newattrs)

class DynamicData(models.Model):
 """
 Dynamic data is cool!
 """
 __metaclass__ = MetaDynamicData

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

Дотук добре, но какво става ако използвате Sphinx, за да си генерирате автоматично документация за кода?!
Рано или късно ще забележите, че документацията за DynamicData липсва. Липсва, защото Python държи описанието на всеки обект (за по-просто docstring) в магическия атрибут __doc__, а класът DynamicData се генерира динамично от метаклас. За това е нужно да създадем docstring-a в __new__ на метакласа.


class MetaDynamicData(models.base.ModelBase):

 def __new__(cls, name, bases, attrs):

   newattrs = {'__module__': 'myapp.models'}

   newattrs['__doc__'] = "Dynamic data is cool!"

   # Да речем, че искате да добавите динамично по един атрибут за всеки месец
   months = [datetime.datetime(2000, x, 1).strftime('%b').lower() for x in range(1, 13)]
   for m in months:
     newattrs[m] = models.IntegerField()

   return super(MetaDynamicData, cls).__new__(cls, name, (models.Model,), newattrs)

class DynamicData(models.Model):

 __metaclass__ = MetaDynamicData

Сега вече всичко ще е наред и ще може да се похвалите на приятелите си, че знаете какво е __doc__, което ви отрежда място в челната петица на най-образованите Python програмисти и завинаги ви прави по-skilled, от който и да е PHP програмист (самият факт, че пишете на Python стига, май).

За съжаление Джанго не е кръстен на този филм, но пък е горе-долу толкова силен…

Tags: , ,


May 11 2011

Икономика?

Category: Нонсенс,СоциалниLucho @ 14:13

Tags: ,


Apr 09 2011

Дълго въведение в транспортната схема на Щутгарт

Седнах да я пиша тази статия и се оказа, че не е толкова просто…

Градският транспорт във всеки по-голям немски град включва 3 неща – S-Bahn, U-Bahn и Автобуси. Две от тези неща са влакове… познайте кои?! 😀

За 5 години в Немската гимназия не успях да доловя дебелата разлика между двата вида железопътен транспорт – S-Bahn и U-Bahn, но ето какво научих тук за 2 месеца.

S-Bahn

S-Bahn представляват дълги композиции, които транспортират голяма част от населението от покрайнините към центъра и обратно. Те минават по-рядко и обслужват много по-дълъг маршрут отколкото U-Bahn. Дистанцията между спирките им е съизмерима с тази на Софийското метро и понякога в пъти повече. В Щутгарт има поне 6-7 такива линии, като се оперират от DB (немските железници). В центъра на града минават под земята, а в покрайнините са наземни. За сега не съм видял да минава контрола вътре :D. Понякога има свирещо-просещи улични музиканти. Работи до около 12 часа през нощта.

U-Bahn

Отново железница, но за разлика от S-Bahn, тази се движи предимно в централните части на града. За разлика от S-Bahn, влакчетата от U-Bahn са по-къси (2-4 мотриси) и минават по-често (на 10, 15, 20 минути в зависимост от натовареността). Целта им е да обслужват по-централните райони от града. Някои твърдят, че това е немският вариант на метрото и донякъде са прави. В Щутгарт обаче не е точно така, защото тези влакчета се движат както под земята така и на повърхността и освен това дистанцията между спирките (особено в центъра) е едва няколко стотин метра. Оперират се от локални транспортни компания – в Щутгарт тя е SSB. Има около 15 различни линии, кръстосващи първа и втора зона на града. Във вагоните има монтирани камери, контрольори минават по-често (2 пъти месечно :D) и няма музиканти. Работи до около 1 часа през нощта.

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

Транспортният възел

Сърцето на транспортния център в Щутгарт е централната гара. Тя е на 3 нива – наземно са обикновените пътнически влакове, които пътуват до други градове и т.н., първото подземно ниво обслужва 8 от 15-те U-Bahn влакчета на 4 перона (два перона за 3 от линиите и 2 перона за останалите 5) и следващото подземно ниво е за 6 от 7-те линии на S-Bahn. Та, сумарно това са една купчина влакове, с които може да отидете навсякъде.

В пиковите часове влакчетата се движат буквално едно след друго, като част от маршрутите им са удължени, за да се постигне максимален ефект.

Автобуси

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

Съществуват и нощни автобуси, които се движат през уйкенда с единствената цел да приберат пияните шваби обратно по домовете 🙂

Тук видях и първия автобус с хибриден двигател. Мисля, че беше с горивни клетки (и по-дълъг от тези на картинката).

Зониране

За разлика от София (който е два пъти по-голям град), Щутгарт е разделен на транспортни зони, които представляват концентрични окръжности, започващи от центъра на града и продължаващи навън. Първа зона е центърът на града, втора зона са по-близките предградия… нататък не знам какво следва, но вероятно са някакви прилежащи селца.  Съответно цената на билета, който ще ползвате зависи от това колко зони преминавате. Освен това билетът за еднократно пътуване важи за пътуване в една посока в рамките на 2 часа. Т.е. ако сте тръгнали за някъде и трябва да смените 3 превозни средства не ви трябват 3 билета, а само един, който да е валиден за броя на зоните, които преминавате. И в Берлин беше така… сигурно и в София някой ден ще стане така.

Заключение

Градският транспорт е приятен и удобен за пътуване и като цяло е бърз… освен когато някой от синдикатите на DB не реши да стачкува и S-Bahn спре да работи за няколко часа. Сравнително по-чист е от софийския, но и тук спирките са пълни с фасове. Всъщност най-готиното нещо е, че във влаковете и автобусите има табла, които показват кои са предстоящите спирки и на какъв друг транспорт може да се прекачиш на тях. Това е добра идея.

За 5 години в Немската гимназия не успях да доловя дебелата разлика между тези 2 вида железопътен транспорт – S-Bahn и U-Bahn, но ето какво научих тук за 2 месеца.

S-Bahn представляват дълги композиции, които транспортират голяма част от населението от покрайнините към центъра и обратно. Те минават по-рядко и обслужват много по-дълъг маршрут отколкото U-Bahn. Дистанцията между спирките им е съизмерима с тази на Софийското метро или повече. За сега не съм видял да минава контрола вътре :D. Понякога има свирещо-просещи улични музиканти.

Tags: ,


Mar 14 2011

Берлин

Category: НеБългарияLucho @ 20:06


Да си призная очаквах да видя голям и лъскав град (все пак говорим за столицата на Германия), но вместо това видях мърсотия, турци и просяци. В общи линии с тези 3 думи може да се опише Берлин и статията може да приключи тук, но ще попиша още малко.

Берлин има сърцераздирателна история, която трябва да бъде разказвана в съпровод от тъжносвирещ цигулар, но миналото си е минало и няма голямо значение в настоящето. Та, ако се абстрахираме от това в момента Берлин има 3.4 млн. души население, 1млн. от които турци и повече от 14% безработица. Или казано още по-накратко съмнителните мургави типове преобладават по улицата, а в метрото е пълно с бездомници. Мърсотията по улиците на някои места задминава тази в София и средностатистическия софиянец вероятно би се чувствал като удома си.

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

От разговорите ми с берлинчани разбрах, че Берлин е град за артисти и за да го харесаш трябва да си с артистична душа. Трябва да обичаш да слушаш улични музиканти в метрото, трбява да не ти прави впечатление как някой турчин си хвърля фаса на спирката на метрото преди да влезе във вагона, трябва да си падаш по ъндърграунд места и култура, унд зовайта унд зофорт. Може би това е и причината аз да не го харесвам. Просто не се вписва в представата ми за Германия.

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

Tags: ,


Feb 27 2011

Хранителновкусовата промишленост

Category: НеБългарияLucho @ 15:30

Малко съм натоварен тая седмица, та нямам интересна тема за писане… следната статия ще е основно за бира и кисело мляко 😀

Живея до магазин от веригата Кауфланд и интересното при него е че 50% от първия етаж на магазина е за напитки – безалкохолни и алкохолни. Безалкохолните ги оставяме настрана, при алкохолните едната половина са вина, а другата половина бира. Оставяме вината на страна – те не са интересни, от бирата има един куп марки и видове и повечето от тях още не съм опитал, но за момента безспорен победител е високоалкохолният вид бира Hefeweizen. От всички хефевайцени, които съм имал привилегията да опитам най-добрата е тази:

А наливна е даже още по-пивка. Принципно не пия бира често, но тук бирата е на next level в еволюцията на бирите и ми харесва доста. Може би една от причините за това е, че Хефевайцените са с 5%+ алкохол, та крайният ефект е горе-долу все едно да пиеш бира с водка 😀 (преувеличавам малко).

Цената на бутилка нормална бира 0.5л е между 0.35 и 0.69 евро. Двулитрови пластмасови бутилки с бира тук не се продават.

Да се спрем сега на по-интересната тема – киселото мляко 😛

Киселото мляко тук наистина е кисело, или поне е по-кисело от млеката в българските магазини (даже и от тези по БДС). За сметка на това не е гъсто като нашето и има вкус и консистенция като на някакъв странен крем. Слаба работа като цяло, освен когато не е смесено с плодове – тогава става за ядене (плодово мляко като на данон примерно, нищо особено). Цената на чист йогурт 500гр. е ~1 евро, което несъмнено е по-скъпо от БГ. Цената на прясно мляко 3.5%, 1л. е 0.56-0,9 евро, което пък е по-евтино от БГ. Странно.

За финал искам да кажа и 2-3 думи за Пепси, което специално си купих, за да проверя дали има по-хубав вкус от българския вариант. Не – няма, същата боза си е и на същата цена като в БГ.

Следващата седмица ще измисля нещо по-интересно – обещавам 🙂

Tags: , ,


Feb 19 2011

Stuttgart 21

Category: НеБългарияLucho @ 21:45

Нещото, което най-много ме изненада като пристигнах в Щутгарт бе един протест… доста дълъг и случващ се всеки понеделник.

Хората недоволстват от плановете за построяване на нова гара – Stuttgart 21. Малко е дълго и сложно да обяснявам, защо и какво не им харесва (а и аз не съм много наясно), но самата идея че хиляди хора излизат на улицата за да протестират всеки понеделник е доста сюреалистична… поне за мен.

Горе долу се оказва, че колкото пъти сляза до центъра на Щутгарт, толкова пъти има протести. Доста шантави, но и доста ефективни след като на брошура прокламираща проекта за новата гара пише – “Вярно е, че много граждани против Stuttgart 21 излязоха на улицата…”.

За проекта се е заговорило още през 1994, но според мен тази гара никога няма да бъде построенна. Не и след такъв яростен отпор от жителите на Щутгарт.

Жалко, защото според писанията на защитниците на проекта, новата гара би намалила времето за пътуване между Щутгарт и други градове на половина.

Tags: ,


« Previous PageNext Page »