събота, 10 август 2013 г.

Calculating Workdays

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

5. Write a method that calculates the number of workdays between today and given date, passed as parameter. Consider that workdays are all days from Monday to Friday except a fixed list of public holidays specified preliminary as array.



Алгоритъмът е прост: В даден масив (лист) въвеждаме дните, които са почивни (както ни е зададено по условие). Направих този масив статичен, както и датата today, която е винаги днешната дата, така че да мога да ги използвам свободно в другите методи. Създадох друг метод, който връща булев резултат и в него правя проверка дали съответния ден присъства в листа с почивните дни. Методът ClaclulatingWorkDays е най-важният в програмата, защото там правя същинската проверка дали денят е почивен (събота, неделя, празник). В един while цикъл проверявам всеки ден от днешния до последния дали е различен от събота, от неделя и дали не присъства в листа с почивни дни. Едва когато отговаря на дадените условия, денят се счита за работен и увеличавам с 1 моят брояч за работните дни. След проверката добавям един ден към текущия, за да можем да обходим всички дни от сегашния до въведения от потребителя. Този метод е void, не връща резултат, затова директно в него отпечатвам съобщение, което показва колко са оставащите работни дни. Работата на Main метода е да подтикне потребителя да въведе дата, да я parse-не към подходящ формат и да извика метода ClaclulatingWorkDays. 



Let's Get Rocked!

Всеки фен на рок музиката неведнъж си е задавал въпроса къде да прекара поредната петък (а може и четвъртък, сряда, зависи от графика..) вечер. Често ставаме невинни жертви на обкръжаващата ни среда, която така силно крещи - БИАД, СИН СИТИ и други мръсни думи. Но за да не се повтаря това повече, предлагам някои изпитани заведения в София (за жалост само тук мога да дам мнение от първа ръка)


RockIT - бар в центъра на София, просторен, страхотен интериор, усмихнати сервитьорки, любезен персонал. Често организират тематични вечери, имат quiz-ове с награди, а за по-приключенски настроените имат и специални предложения (няма да подсказвам, сами ще видите на бара).


Rock'nRolla - още един прекрасен бар в сърцето на София. Изключетелно арт обзаведен, с приятна музика (което май не е нужно и да се споменава). Организират караоке вечери, всеки ден предлагат различни промоции на алкохол, общо взето - грижат се да има купон!



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


 
(за съжаление не намирам сайт)

Rock Bar Fans - предлага музика на живо, когато такава липсва посетителите се забавляват със записи на отминали концерти. Организират и частни партита.



Маската - със сигурност студентите, почитатели на по-тежката музика са посещавали това място. Купонът там е на 6, музиката често е на живо, а интериорът абсолютно си пасва с музиката, която се пуска. Организират и караоке вечери.

Ако сте посетили всичките, че и още, ако имате други любими рок барове - споделете ги в коментарите! 

събота, 27 юли 2013 г.

Using Dictionary

Условието на една от интересните задачи в домашното за методи е следното:

4. Write a method that counts how many times given number appears in given array.


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

Логиката е следната - създаваме си метод, който връща стойност Dictionary<int, int> (речник с key int и value също int). Въпросния метод приема за параметър съответния масив, с който ще "оперираме". Вътре в метода създаваме речник, в един foreach цикъл обхождаме целия масив, ако съществува елемента, до който сме стигнали, то увеличаваме неговия брояч (value), а ако не - записваме го със стойност 1 (среща се 1 път). В Main метода си правим нов речник, който присвоява стойностите на върнатия речник. Отново с foreach цикъл изписваме колко пъти всяко число се среща в речника (с помощта на key и value).


петък, 26 юли 2013 г.

Mind Map

Някога чували ли сте за тях? Правили ли сте? Има ли ефект? Какво всъщност са те? Ще ви кажа това, което знам и ще очаквам от вас да ме допълвате в коментарите!

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

По-конкретно Mind Map се прави за определено нещо – примерно тема в учебник, глава в книга, за представяне на човек, за изобразяване на идеи и т.н. Ето един пример:


* Разработена от Tony Buzan.

Така с помощта на малко думи се представя идея, изписването на която в страници би отнела повече място, повече време и не би била толкова ефективна за запомняне. Различните цветове на „клоновете” и природните им извивки са важна част от картината, както и малкото думи (по 1 на всеки главен клон). Използването на картинки също е препоръчително. Абсолютно задължително е забавлението по време на изготвянето на мисловната карта. Резултатът е, че след време асоциативно се сещаме за разположението, цвета и др. на нещо на картата и си спомняме повече информация за него. Пробвайте!

Разберете още за Mind Map от официалния сайт и от архива на курса "Споделяне на знания и работа в екип" Януари 2013 в академията на Телерик.

След регистрация в сайта можете да ползвате безплатно онлайн приложението, за да създавате свои карти. Предлага се и платено приложение за вашия компютър.

сряда, 24 юли 2013 г.

Interesting Facts

Често хората включват в блоговете си специална секция с интересни факти, но поради липса на време, интерес или някакви други външни фактори понякога занемаряват страничката и читателите остават разочаровани. За да не поемам такъв риск, синтезирах няколко страници в интернет, които се занимават само с това - намират интересни факти и радват последователите си. Ето част от тях: 

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

2.

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

3. 

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


вторник, 23 юли 2013 г.

String Sorting with LINQ

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

5. You are given an array of strings. Write a method that sorts the array by the length of its elements (the number of characters composing them).

Честно казано, тази задачка ме поизмъчи. Както всеки друг път бях измислила няколко алгоритъма, кой от кой по-сложен - първоначално бях решила да създавам jagged array, в който да има по един масив за всяка дължина на string-овете, която  щях да открия с .Length, после прецених, че с List би било по-уместно и така докато не изписах стотици редове код и нищо не се получи. Обърнах се към форума на академията за помощ, където още преди да си задам въпроса в съответната тема, видях десетки решения. Окото ми грабна решение на точно 2 реда. След някакво време, отделено в четене за това какво точно е LINQ и как да го използваме, се получи следното - линк.

First Blog Post

След дълга и упорита борба с вътрешното си аз за това дали трябва да имам блог или не, макар и подтикната от външни фактори, имам еднозначен отговор и той е ДА. Смятам тук да публикувам главно неща, свързани с обучението ми в софтуерната академия на Телерик, но и други, които ме вълнуват.