Софтуерно Инженерство
Loading...
+ Нов въпрос
jabalka avatar jabalka SoftUni Team 960 Точки

[Exam] JS Apps - Решения на задачите, впечатления от изпита и курса, предложения

Здравейте, колеги.

Днес и аз си минах реда на изпита по JS Apps.

Хубаво е да имаме тема, в която да споделим впечатленията си от изпита и от курса като цяло. Та, реших да "подложа крак", тъй да се каже.

Първо за изпита.

Много ми беше приятен този изпит - толкова удовлетворяващо, когато можеш да седнеш и да накодиш нещо от начало до край, завършено нещо. Колко много сме научили за по-малко от година :) (аз съм от тия, дето започнаха от нулата). Много ми е надъхващо как научаваме все повече и повече и е все по-интересно. Някой друг да се чувства така?

Разбира се не си мислете, че не съм копвала код, подготвен предварително. Вчера отделих деня, за да прекодя задачата за подготовка по решението на Владо Георгиев (много хубаво обяснява и ангажира студентите по време на лекции и знае какво прави - плюс едно от мен). Днес направо си копирах накоденото от вчера и започнах да променям според условието на задачата от изпита. Първо си налях темплейтите. После вързах login-a и register-a. На register-a излишно изгубих един (!) час, за да отворя welcome user екрана, обаче не можех да си взема username-a (към края на изпита се сетих как, защото ми потрябва и за другаде, но беше късно да се връщам). Освен това не беше задължително да препращам там и след регистрация на края вързах login екрана. Та така. Един час назад за глупости :)

После... Какво беше после... Листването на продуктите беше бързо и безболезнено. Вързах и delete-a, но без екрана за delete от темплейта - само те пита сигурен ли си, че искаш да изтриеши ако потвърдиш - трие. Имах проблем с вързването на edit-бутона. Не можех да си взема правилно id-то на продукта, който искам да трия и в крайна сметка адресирах първия листнат - иначе си пълнех формичката с неговите си value-та и като му дадеш edit си променя нещата в базата данни.

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

Logout-ът също стана бързо и безболезнено. Напудрих с малко noty и това беше.

Като цяло смятам, че изпитът беше на необходимото ниво спрямо курса. Домашните в курса бяха доста адекватни и ни подготвяха за изпита целенасочено. Супер, че имаше Lab - хем се научава и затвърждава и можехме да си помагаме (липсваха ми упражненията), хем си помогнахме за изпита. Като цяло от целия курс съм доста доволна - и от СофтУни и то мен :) Научих доста и съм благодарна (и на СофтУни и на мен - че седнах и учих).

Та така. Споделям ТУК кода от изпита - както го предадох. Ако е полезен за някого - чудесно.

Ако имате желание споделете как беше за вас изпита, курса? Как мина?

 

 

10
JavaScript Applications 14/12/2014 19:00:10
nickpanaiotov avatar nickpanaiotov 21 Точки

Ето и моето решение на Phonebook. Нямах възможност да остана на изпита, успях само да си направя раутинга. След това си я дописах на работа. В тази връзка някой има ли идея кога ще е поправителната сесия? 

p.s. На места е доста хакерско, просто и така не си изясних достатъчно сами и кю. 

p.s^2 Яна, може ли да качиш твоето решение някъде на хост?

0
14/12/2014 20:28:18
jabalka avatar jabalka SoftUni Team 960 Точки

Здрасти.

Жалко, че не си успял да останеш на изпита и да си завършиш.

За поправките:

"Ниво #2 (сезон Май 2014) – 19, 20, 21 и 22 януари (четири дати за четирите курса). Плащане на поправителен/повишителен – от 12 до 18 януари – 20 лева/изпит;"

Ето в ТАЗИ НОВИНА има повече за графика след Нова година.

2
Yulia avatar Yulia 1343 Точки

За съжаление, не споделям твоят оптимизъм и мотивация, Яна. Вярно, измервайки знанията и уменията ни спрямо март месец (когато не разбирах как работят повече от 2 вложени цикъла даже), сега напредъка е значителен. Но като цяло не съм доволна от качеството на преподаване и програма. И когато след ниво#1 се чудех дали да се запиша на ниво#2 онлайн, или да си остана в присъствена форма на обучение (дадох шанс все пак), сега чуденето ще е дали да запиша ниво#3 изобщо... но това е друга тема.

Изпита - 14.12.2014 - Products: Успах се за изпита, но спрямо пълната липса на практика, съм доволна от представянето си, защото единствето времето се оказа проблем. И сложността на изпита си беше окей. Не направих само редактирането на даден запис, филтрирането и shiny-те нотификации (направих ги с обикновен alert) - задълбах се прекалено много в изпипване на детайли и кпк. Това, което ми помогна най много е добре развитото ми умение за ориентация в чужд код (естествено, че не съм писала от нулата - преизползвах кода от подготовките) и цялостният комфорт в JavaScript - нямам wtf моменти, в които да не разбирам какво се случва. И почти не ми се налагаше да ровя в нета за "How to". И въпреки факта, че последните 2 месеца писах главно back-end JavaScript, днес ми беше приятно да ръчкам задачата. Но не за визията де - колкото и да е елементарен noty или sweet alert, толкова и не ми беше интересно да се занимавам с тях. Ще е тъпо ако се отнемат много точки за това, че навсякъде в условието се споменават xD

Започнах много добре - за първият половин-един час вече имах работещи view-та, регистрация, login и logout. Авторизация. Даже продуктите се листнаха без да правя нищо друго, освен да replace-на "Bookmarks" с "Products". Но после се заиграх да направя нещата "много правилно", с отделен модул за user-ите, ала-бала... и когато изведнъж стана 14:00, си казах "f*ck this shit, отдавна трябваше да си готова с изпита". Върнах всичко назад без да експериментирам повече и написах набързо супер basic проверки, валидации и нотификации. Challenge беше да направя редактирането и триенето, защото не беше просто работа с DOM - да се вземе id-то от parent-а и да се изтрие - като на Bookmarks. Не. Трябваше да се помисли малко или много :)

И какво беше моето решение: products list-а нали ми е темплейт (темплейтите ги учех още по време на html/css курса с Jade и Handlebars. Мustache ползвах за първи път днес, но не намерих никаква разлика). Съответно в този темплейт имам цялата ми нужна data. Дори и тя да не се визуализира никъде. И към всеки бутон за edit/delete - добавих objectId към самият линк (#/products/edit/{{objectId}}). А в sammy се представя като параметър (#/products/edit/:id), което подава на controller-а id-то (this.params['id']) при зареждането на дадено view. Така бутонът edit/delete в самото view вече знае с кой обект да работи. И не само това, ами и така с getById директно се рендерира template-а със запълнени полета ^^ Беше ми много приятно, че го направих. Вярно, за edit-а не остана време, но начина на изпълнение е абсолютно същият. 

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

Това е. За AngularJS нямам нито капка мотивация. Ще бъде тежко.

 

2
15/12/2014 00:41:53
RoYaL avatar RoYaL SoftUni Team Trainer 6845 Точки

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

От към код явно е била цаката, въпреки че бонуса за код е изключително малък. Като ви гледам кода, бая сте се постарали. Аз го направих Nakov style :D Не е за мен да пиша jquery с добрите практики на JS. Библиотеки за пудрене като Сами и прочие не съм ползвал. Ще рутираме на енгюлъра :)

Явно поради този факт приключих доста бързо, може би още на 3тия час. Даже се чудя дали не изпускам нещо. Ама ще разберем при проверката :)

https://github.com/RoYaLBG/SoftUni_JS_Apps_Exam

 

P.S.: Какъв е правилният начин да атачнеш различни  onclick евенти на елементи от един и същ клас? Изпитах изключителна трудност (разбирайте 10 минути :D) да накарам Едит бутоните да едитват съответния запис, а не последния от итерацията. Накрая напълних елементите с един JSON с данните като data атрибут и почнах да ги взимам от там.

6
14/12/2014 22:04:46
zontak avatar zontak 457 Точки

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

За изпита.. и той беше супер. Не съм пипал да се подготвям и на изпита за първи път използвах sammy, mustache, q ,noty и някакви прототипи и се получи повече от перфектно.. От домашните съм написал само тази с pars.com за уточнение ;)

Ванка.. атачваш евент към парент класа и проверяваш дали е кликнато детето.. ( това е оптимизация ако евентуално имаш таблица с 5000 тд-та вътре и за да не закачаш евент на всяко тд правиш $(parent).on('click', 'children', function() {}) i si ti..

От обучението в софтуни съм доволен но.. има неща които не съм сигурен как трябва да се дооправят.. Съквартиранта ми на парс ми обясни 3 неща и си минах изпита без да пипам нищо повече следващите 2 седмици(писах си бекенд за екипния проект с асп.нет).. Може би трябва да са по-подробни лекциите и да не се пренабрегват малките неща, защото като пропуснеш 2 малки неща и се чудиш кое от къде идва след това.. Хев фън ;)

0
14/12/2014 23:01:50
tosilv avatar tosilv 69 Точки

И на мен изпита ми се строи лесен. Ако е правил човек всичко от домашните до решава без проблеми. Аз лично нямах време да решавам подготовката, но видях че има много общо с нея също.

Реших да не копирам много код, за да не се омотая в стари работи, само работата с парс и сами темплейт си бях подготвил и ги позлвах. Направих го със сами и мустаче и нямах почти никакви проблеми, но все пак успях да забравя някой друг нотификейшън и таквиа дреболии. филтрирането беше елементарно с ъндърскор. Само имах проблем с въвеждането на АЦЛ-ите и за да не губя време ги направих малко тъпо. После на път за вкъщи се сетих какво съм объркал, но пък работи така че не е фатално.

Много съм доволен от обучението тоя курс, както и миналия. Нямам никакъв опит с джаваскрипт освен научения тук и нямам време даже да гледам повечето лекции, но с малко гледане и решаване на домашно или подготовка + малко гугъл всичко ок за изпита. 

Решението определено не е красиво, но ако някой е заинтересуван: цък

2
14/12/2014 23:26:47
dani_ddd avatar dani_ddd 82 Точки

Аз лично останах приятно изиненадан от себе си. Единственият код, който взаимствах беше ajaxRequester-a от подготовката за изпита. За 6 часа успях да си напиша от нулата собствен модул за нотификации и да си направя SPA приложение само използвайки jQuery. И това при положение, че за този курс нямах никакво време и не успях да направя дори и една домашна... само с видеото от подготовката на Наков. Беше ми изключително приятно, когато след 3-4 часа работа по архитектурата, прилагайки всичко, което успях да се сетя, започнах да виждам ползата от целия труд и парченцата от пъзела започнаха да се нареждат laughing Да имаше още два часа, щях са направя и филтрацията! 

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

 

П. П.

Ето и решението ми в github - LINK

2
14/12/2014 23:28:36
gngeorgiev avatar gngeorgiev 90 Точки

Аз си ползвах заготовката, която пуснах вчера. Като цяло дори се изкефих по едно време да пиша jQuery, защото всичко се правеше по човешки начин - контролери, модели и темплейти. Всичките неща, който формират framework-a са в /core папката. Client-side нещата са в parent папката - /scripts. Кода е тук: https://github.com/gngeorgiev/JsAppsMold

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

Мисля, че малко или много трябва да се променят нещата, че да мислим повече, а не само да копираме стар код и да сменяме Bookmarks със Products.

0
alexxdim94 avatar alexxdim94 41 Точки

Честно казано, това май е първият изпит, на който можеш да решиш задачата с малко повече копи-пейст от домашни/подготовки. На предните винаги имаше изненади и неща, които ги е нямало на подготовките (което не е лошо).

2
RoYaL avatar RoYaL SoftUni Team Trainer 6845 Точки

Аз смятам, че изпитът не е мястото и времето, когато трябва да се учиш :)

10
gngeorgiev avatar gngeorgiev 90 Точки

Но е мястото и времето където трябва да покажеш дали можеш да мислиш. И не говоря за скрити условия като на предния изпит.

2
ZvetanIG avatar ZvetanIG 917 Точки

Здравейте колеги,

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

Друго от което се впечатлих, беше атмосферата след изпита. Имаше еуфория, настроение, като в ерата от първите изпите laughing. Това беше много хубаво, всеки се радваше, че нещо е заработило, че нещо е направил, че е имал успех.  А това е важно. Успехът поддържа мотивацията. Малкият успех е опорна точка, стъпалце към следващия успех.  На последната лекция по КПК Наков, каза че се програмирало на малки стъпки. Ами същото е и в живота. Човек успява стъпка по стъпка.  Големият успех не идва изведнъж.

На колегите, които са започнали да губят мотивация, вместо да хейтите, огледайте себе си. Ако сте изкарали 20 точки кажете си СУПЕР и следващия път изкарайте 40, СУПЕР - 80 и т.н.   И запомнете не си поставяйте граници...laughing

УСПЕХ!  Надявам се на следващия изпит да ви видя пак - засмяни и щастливи.

 

P.S.   Ето го и моето решение.

16
15/12/2014 09:56:23
milen8204 avatar milen8204 296 Точки

Поздравления на всички доволни от представянето си на изпита.

Моето мнение е, че без предварително "сготвен", код няма да може да се представиш добре. Просто това може би е лека подготовка за изпита за AngularJS където всичко ще се пише предварително :). 

Иначе на мен не мисе стори лесен, но беше тривиален. Моята подготовка за изпита беше да открадна кода на Владо от подготовката, да гледам 2-3 пъти лекцията и да разбера всичко как работи. Лично на мен ми помогна доста ползването на Sammy.js за така дадения index.html. Бутоните бяха поместени в ликове и само трябваше да се промени атрибута 'href' на съответния линк да зарежда в url указателя към съответния темплейт. Примерно:  <a htef='#/products'> и наче трябва да прихващаш кликовете по различните бутони до сутринта ;), а и сто процента щях да "засера" някои.

1
Matrix avatar Matrix 1087 Точки

Така е, без предварително подготвен код този изпит е абсурд за 6 часа, за човек който от месец се занимава с тази материя. Не мога да си представя дори, какъв къртовски труд би било целия тоя HTML, ако трябва да се генерира без темплейти, а само с апендване с jQuery-то. За такава малък проект, "Наков начина" за решаването на задачата е поносим, макар че и тогава кода става тегав за менежиране и се губи много ценно време на изпита... За по-голям проект от това обаче, ако не се ползва "Владо начина" на решаване на задачата, си е вече некякъв мазохизъм...

2
15/12/2014 11:44:12
Matrix avatar Matrix 1087 Точки

"Това е. За AngularJS нямам нито капка мотивация. Ще бъде тежко."

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

Моята скромна преценка е, че JS курса, JS OOP курса, JS Apps курса и най-вече този следващия за фреймуърците, който ще следва са сред най-важните в цялото ни следване и от личен опит дори мога да потвърдя, че са сред най-търсените неща на пазара, що се отнася до Фронт енд часта. При това положение по-логично е мотивацията да се покачва, отколкото да спада, но всеки човек си е индивидуален по свое му, пък и не на всеки му се разправя с фронт енд. Който обаче натам се е насочил - всеки работодател в бранша ги изисква като мининум тези курсове. Не му трябва просто някой, за да пише елегатно алгоритми и JS for цикли  - той иска от теб OOP JS код. Не му трябваш просто за да стилизираш някакви дивчета - той иска от теб да ги стилизираш динамично с JS и да гетваш данните от сървър. Освен това изисква да знаеш и база данни и работа с фреймуърци, или ако не ги знаеш на момента, то по най-бързия начин човек да влезе в час, а не да седиш и да питаш "ко е туй" и човек да заявява, че това не е неговата част от работа. Като не е - свободен е да потърси някъде, където да е.

Аз лично също споделям ентусиазма на колегите, които след този курс са видяли, че вече нещата се доближават до самата реалност, а не просто някакво абстрактно писане на сухарски задачки и качването им в Джъджа с надеждата да не си изпуснал някой интервал някъде. Макар че и те не бяха напразни. Работа с JSON обекти ли беше напразна? Работата със стрингове ли? Че дори и работата с регулярни изрази, за които съм чувал толкова много хора да псуват?! Ми, така се прави валидация бе! Вчера ако ни бяха друснали да направим валидация на мейл, какво, без регулярни ли някой щеше да се мъчи? Ша каже някой, че немал мотивация да ги научи лятото и му дремело за няква задача за изпит. Ми че то към настоящия момент имаме познанията да си вдигнем собствен, наш си апликейшън бе, и ще трябва да му направим валидациите във формата за регистрация, така че да нямаме мейл от рода на "1+1=#". Както и да е - пак се отплеснах.

Мойте опасения за AngularJS курса са по-скоро факта, че в момента Гугъл работят над версия 2.0, която щяла да бъде EC6 базирана и съответно нямала да има никаква съвместимост със старата версия. В резултата на което всички седят и чакат и никой не започва нови проекти на старите Angular, за да не се види после в приключения... Единствено от тази гледна точка, се чудя защо ще изучаваме Angular, макар че какво ли ми и дреме всъщност - то ми стига някой да общата идея и схема по-която се случват нещата, пък аз вече ще си науча квото ми трябва.

Две думи все пак и за JS Apps курса - след CSS, това ми беше най-лесния изпит, като отново единствения ми проблем, както и при CSS изпита, беше това че просто много се тутках и не ми стигна времето да си направя абсолютно всичко. Даже се чудя, дали не ми беше и най-лесния изпит евър, тъй като този път не ми се наложи да сърчвам в гугъл малоумни пропъртита и как засукано се стайлват разни дивове. Радвам се, че останах в страни от безмислената масова истерия, която се разрази преди изпита за или против ползването на Парс. Макар че не крия, че и аз имах свойте притеснения за подводните камъни, които СофтУни евентуално могат да ни измайсторят на втората група и да ги вържат именно с Парс.ком. Радвам, се и им благодаря, че в последствие не се престараха излишно в това отношение, и изпитът беше в рамките на това, което беше показвано на подготовките.

П.П. Абе пак стана някакъв пост ферман бе, как все такива се получават, сори за което, не е нарочно :D

3
15/12/2014 11:19:24
RoYaL avatar RoYaL SoftUni Team Trainer 6845 Точки

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

0
Matrix avatar Matrix 1087 Точки

Мисълта ми беше, че поне вече си говорим за Ангулар, MVC и т.н. неща. Защото до преди година тва за мен просто бяха непонятни думички, с които работодателите бяха напълнили обявите си. И сега разбирам защо.

Иначе за старата версия на Ангулар - естествено, маса апликейшъни ще продължат да си рънват именно на тях, няма да мигрират веднага.

1
15/12/2014 11:17:32
Yulia avatar Yulia 1343 Точки

Колега, мотивацията ми за AngularJS е такава, защото споделям същите опасения. Колкото и конференции да посетих - не срещнах нито един вдъхновен програмист, който да го ползва в работата си и да му се кефи така, че да предаде енергията и на другите. Много се говори за Angular,  но... за новият AngularJS. И как сегашните знания ще отидат на боклука. Имаше един developer, койте беше наистина запален! За... AngularDART :D И накрая пак се стигна до факта, че всичко това е много далеч в бъдещето. 

Мотивацията не e изцяло личен проблем - тя зависи от средата, от очакванията и резултатите. От хората наоколо. И от начина, по който говорят за дадена технология. Именно хейтването към преподаваният материал ме отдръпна от лекциите в СофтУни. Дори и след като си взеха забележка и го оправиха. 

 ZvetanIG, ако имаш впредвид мен в отговора си за хейтенето - то не е от резултатите ми. Даже напротив - смея да твърдя, че най-големите ми неуспехи са ме мотивирали най-много. Демотивира ме програмата и липсата на развитиe. Смятам, че хората, които ни преподават трябва да са пример за нас - да виждаме как и те продължават да се учат и развиват.

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

Да се върна на AngularJS - то само по себе си е страхотна технология. Но не е фундаментално знание, което трябва да учим всички /особено след като го изхвърлим след година-две/. В обявите за работа се среща много, но същото важи и за backbone.js, knockout.js, ember.js - по избор. За работодателите е важно да знаеш как се работи с framework, MVC, MVVM, MV*whatever... защото така лесно ще влезеш в техен проект, независимо каква технология използват. А Angular изглежда доста различнен от останалите фреймуърци. Трябва да се учи спецефично неговият "жаргон". Няма я свободата в JavaScript - да правиш каквото си искаш. И тавя е плюс за хората, които не магат да разберат и контролират хаоса, който създава тази свобода :D  Дано курса все пак бъде по-фундаментален и всеобхватен - да се обяснят именно тези разлики мужду фреймуърците, как работят, какво е two-way binding и one-way binding, да се направи по едно overview на backbone и ember - да е способен човек да избира. Да надзърнат и какво се случва като back-end - да не се надяват само на магическата същност на Angular. Тези знания и умения се търсят. И в крайна сметка, курса е SPA, а не AngularJS, нали? : )

Започнах да гледам лекциите в pluralsight, но много ще се чете тези дни - не обичам да уча нещо на сляпо, без да знам мястото му. В нета има много много статии както "за", така и "против". Мисля, че ще е полезно да се прочетат, да се погледне от няколко гледни точки. Премери:

It is too soon to panic on AngularJS 2.0

Should You Wait Until Angular 2.0 is released before learning AngularJS?

10 Reasons why developers should learn AngularJS (статията е от миналата година)

BackboneJS vs AngularJS : Demystifying the myths

AngularJS vs. BackboneJS vs. EmberJS - тук има доста коментари под статията

Why we left AngularJS (hackernews) - голяма дискусия

"Screw you, Angular"

1
15/12/2014 14:28:53
presian avatar presian 223 Точки

Някой може ли да сподели условието на задачата от неделя, че искам да я реша!

0
presian avatar presian 223 Точки

Много благодаря!laughing

 

ето малко мои умотворения от сряда -> CODE ,

доста каруцарската се получи, в един файл, но поне работи (с изключение на раутинга)!

 

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

0
16/12/2014 17:46:13