Професионална програма
Loading...
+ Нов въпрос
EBojilova avatar EBojilova 330 Точки

[Exam] KPK C# 23 August 2015

Явно аз съм най-нетърпеливата винаги и пускам тема след всеки изпит. Решението, което съм приложила минава нулеви тестове, но не е проверено още в judge. 

Много ме затрудни този изпит- с рифлекшън нямам почти никакъв опит и от там ми дойде голямото замотаване и не успях да изчистя всички бъгове.

Първо във Views си бях сложила всички видове View в една папка и докато открия грешката голям зор видях. Изтрих част от съставянето на fullPath и стана.(до голяма степен е свързано с това, че не съм вникнала в условито).

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

Имам въпрос- гледам много хора са с 16 точки. Имахте ли опит с рифлекшън? Или аз съм пропуснала някъде това обучение или просто вие сте чели допълнително. Единствено в една от изпитните задачи по OOP го бях срещала(май беше ConsoleForum).

Не съм доволна от представянето си и ако имам време ще отида на поправката(дано да е скоро).

Bottleneck не мога да открия- дадох Course да имплементира IComparable. Предполагам ми гърми откъм време CoursesController.All.

Писах набързо някаква документация и единствените тестове които успях да генерирам са с Intellitest.

Ето го и решението ми. Добре дошли са коментарите на всеки, който има време да го погледне.

https://github.com/EBojilova/CSharpHQC/tree/master/Exam/230815/MySolution

Тагове:
4
C# OOP Advanced 23/08/2015 21:56:24
aanguelov avatar aanguelov 219 Точки

Задачата си беше бая трудна с този рефлекшън и мене първата ми мисъл след изпита беше да недоволствам, обаче после се сетих как преди 15 години в икономическия малката секира пускаше по макс 10% от 300 човека на изпит и никой не смееше гък да каже.

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

С една дума - не съм доволен, ама хич! 

Изпита вероятно съм го взел, обаче ще се ходи на повишителен, че не ми се минава с 3.50 :-)

Ето го моето решение - https://github.com/aanguelov/HQC_ExamPraparation/tree/master/BangaloreUniversityLearningSystem

ПС - Данчо искаше някакъв фиидбек за курса по КПК, аз имам много какво да кажа, ако не ми е минало до утре сутринта ще отворя нарочна тема по въпроса, че сега ми се спи smiley

ПС2 - Ели да ти отговоря на въпроса за рефлекшъна. Никой от нашето ниво не го е ползвал досега, Нямаше отделно обучение за него. В началото на изпита когато Фил представяше задачата попита някой дали има опит с рефлекшън и MVC и познайте само кой се обади - Спас (kamigawa)! Думите на Фил бяха дословно цитирам: Е нищо то сега ако го разберете, няма да имате проблем по-нататък! На най-тежкия изпит за цялото ниво!!! Не случайно курса дава 10 кредита.

5
23/08/2015 22:50:11
DiyanTonchev92 avatar DiyanTonchev92 231 Точки

И аз бая хейт насъбрах за курса, ама се опитвам да го спестя... За сега...smiley

1
DiyanTonchev92 avatar DiyanTonchev92 231 Точки

Аз реших, че All, Create, Details и т.н. не са добри имена за клас и ги преименувах...  Докато съм прехвърлял въпросните класове в отделни файлове, съм забърсал и namespace-ите им... След няколко часа дебъгване осъзнах какво съм си причинил... О, и то остал 1 час до края... Теглих една и ще се видим на поправка. :) 

1
27/08/2015 09:51:21
vladimirov avatar vladimirov -6 Точки

Мислех си по едно време защо ли станах за изпит, а не се наспах. :) 

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

7
DiyanTonchev92 avatar DiyanTonchev92 231 Точки

Tи пък, защо да се демонстрира по-задълбочено как се правят юнит тестове... По-важно е 3-4 часа да ти обясняват колко е важен курсът и колко е кофти променливата да ти е долна черта, 

3
23/08/2015 23:32:02
RoYaL avatar RoYaL Trainer 6847 Точки

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

0
DiyanTonchev92 avatar DiyanTonchev92 231 Точки

Да, дали са ни, факт, зависи си от нас - факт, но след като ще има по 3-4 часа лекции, не е ли по-добре да има повече демонстрации на юнит тестове и т.н., отколкото убеждения защо е важен курсът?

1
24/08/2015 11:03:15
PsychoSphere avatar PsychoSphere 12 Точки

Не се ядосвайте. Вярно е, че оценките и сертификатите са важни до някаква степен, но в крайна сметка знанието и опита са по-важни. Аз лично се радвам, че се сблъсках с рефлекшън, пък било то и по този начин. Реално изпита не беше много труден, просто времето не беше достатъчно. И не говоря така защото съм го взел, и аз фейлнах, ама в крайна сметка нищо фатално. Така че теглете му едно p.Name и ще се видим на поправката :)

П.П. Данчо, ще решиш ли и hqc-challenge? :)

 

2
malkstor avatar malkstor 348 Точки

И аз съм много недоволен от представянето си точно заради рефлекшъна. Направо ми изяде главата, първия час и половина си оправях форматирането, разделих интерфейсите и направих още толкова, подредих си View-тата в една папка, промених няколко имена на класове за да е по-ясно какво правят, както е редно, и следващите 4 часа псувах рефлекшъна защото всичко спря да работи. В крайна сметка успях да стигна до що-годе работеща като за 6 точки в джъдж-а версия, но до там. За оставащия половин час имах време точно да нулирам стайл коп-а и да изтръгна колзолата от енджина. Не остана време нито за документация, нито за unit testing, а и двете не са трудни. 

В крайна сметка има и добра страна - ще науча какво е рефлекшън, както каза aanguelov че е споменал Фил. 

Разочарован съм. 

2
Kamigawa avatar Kamigawa 750 Точки

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

Що се отнася до рефлекшъна - не мога да кажа, че съм правил нещо подобно. Забелязах в условието обяснението за нейсмпейсовете и се постарах да внимавам като вадя view-тата по класове да спазя „конвенцията“. С малко дебъгване и copy-paste driven devepment нагодих нещата. Доста се измъчих на All актиона и и той взе, че стана - кой да знае, че трябва името на параметъра в метода да е courseId, вместо Id ...

Доста се наиграх с MVC-то, понеже го бях писал на Laravel (фреймуърк за PHP), който е доста чувствителен от към конвенции и там всяко view се казва примерно LoginView, RegisteView. Тук това не трябваше да е така (подочух от Данчо, че в ASP такава била конвенцията - да няма View в името, живот и здраве след няколко месеца като почне курса по ASP ще разбера). Отново след малко дебъгване открих, че търси Login, не LoginView и се наложи да си губя времето да преименувам за втори пък view-тата :).

Имаше доста малки неща, които ако не се мине през кода с дебъгер може да не се видят - crate вместо create, липсващи или излични ʼ!ʼ.

Агрегираните ексепшъни ми се сториха overkill. Понеже карам и Cloud and Web Serveses в момета (където правим абсолютно същото, което беше този изпит само без извращенията - истинска база, вързана с фреймуърк, истински сървъси, не тия рефлекшън конзолни работи), та, Наско ни показа как да обработваме агрегирани експешъни преди няколко лекции и имах добра идея как да хвана и обработя тези.

Документацията и юнит тестовете май не сами от най-добрите възможни, ама каквото - такова.

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

3
moholovka avatar moholovka 169 Точки

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

4
EBojilova avatar EBojilova 330 Точки

Maлко офтопик за разсейване :))) Ще ме извините за рИфлекшъна, ама понеже ползвам тази дума многократно повече на англйски и това наименование ми се е набило в главата. 

Относно поправката- наистина апелирам да е скоро. Започваме Java и не знам как ще е, но като ни се смесят и двата езика в главата, по-голяма бързина от сегашната надали ще постигнем на изпита. Виждала съм дори някои от лекторите на Basics да се бъркат докато показават и да се се извиянват, че пишaт на Java. Което си е и напълно разбираемо.

В този изпит основното е бързината. Почти няма нещо, което да изисква особенно голяма логика. На всички други изпити времето ми беше предостатъчно и имах време да си дебъгвам на воля и да оптимизирам кода на макс, докато на тоя имам недостиг около 3 часа поне за този обем на задачата, за да докарам нещата в приличен вид и да си напиша като хората юнит тестовете. 

4
24/08/2015 11:38:54
malkstor avatar malkstor 348 Точки

Подкрепям идеята с две ръце - колкото по-скоро има поправка - толкова по-добре.

1
DiyanTonchev92 avatar DiyanTonchev92 231 Точки

+1. Даже, като гледам feedback-a, мисля, че ще е добре да има "извънредна" поправка, както беше при Advanced C#, без да ставаме нагли smiley

3
Stanislav.Georgieff avatar Stanislav.Georgieff 4 Точки

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

Абе, просто няма какво да говорим, Изпит с рефлекшън, който са ни споменавали, че  асемблито си бърка във вътрешностите само и това е. И на всичкото от горе е забранен в програмирането, и ни го дават по КПК. 
И този  MVC Model View Controller, и той докато го схвана, но за него няма да мрънкам! Да кажем, че той е бил трудността на теста.
Та докато схвана всичко това, и оправих бъговете, написах документацията. И субмитнах в последния момент, и системата се затвори, и си изгорях като първия пич. Както и да е, де! Ще си взема поуки за поправката.
 

П.П. Та за рецензията към Данчо. За воденето на курса НЯМАМ НИКАКВИ ЗАБЕЛЕЖКИ, дори напротив.
За самия изпит. ТАКА НЕ СЕ ПРАВИ. Ние сме програмисти, кажи речи на 4 месеца, че да ни казват "Абе има ботълнек някъде при рефлекшъна, ама вие ще го видите.". Фил поне да беше казал, да внимаваме с рефактурирането защото това ще сбърка рефлекшъна. Щеше да ми спести 2 часа работа.

УСПЕХ НА ПОПРАВКАТА.ЩЕ СЕ ВИДИМ ТАМ!

3
24/08/2015 10:00:41
zdravko7 avatar zdravko7 63 Точки
Някой успя ли да разгадае шифъра на Леоданчо :D
1
EBojilova avatar EBojilova 330 Точки

Дай линка, че изобщо нямах време да го запиша. Съмнявам се някой да е имал време изобщо на изпита :) Може да се пробвам днес вечерта, че оше не е активен judge за тестване.

0
a.angelov avatar a.angelov 1316 Точки

За информация само - поправка по всички изпити има в края на всяко ниво /обикновено последната седмица/.

0
LoKSET avatar LoKSET 160 Точки

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

Рифлекшъна след доста блъскане разбрах по някое време какво прави и как да заобиколя някои проблеми, но непознаването на MVC модела ми попречи доста - ръчно дебъгване беше доста трудоемко - мини през парсера, влез сега в тоя контролер, пък той в онова view и така още веднъж - доста се забърках. ООП-то не го направих както трябва, реших да наследявам User с Лектор и Студент, но до последно не можех да реша дали Гостите са истински юзъри (защото в документацията пише че са) и в главата ми стана пълна каша.

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

Нищо - ще се поучи още и след някой и друг месец пак.

2
EBojilova avatar EBojilova 330 Точки

Изпита като цяло не беше труден.

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

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

2
24/08/2015 11:17:29
LoKSET avatar LoKSET 160 Точки

Е и аз първо преименовах - но не прекалено - примерно на Create му добавих нещо отзад и нещата веднага се омазаха (компилирах след почти всяка стъпка, именно защото ме беше страх да не счупя нещо, което после ще отнеме маса време за оправяне/дебъгване), та все пак горе-долу бързо се усетих да не пипам чак толкова по имената. Но и целия рифлекшън не знаех дали е добра практика - чудех се по едно време дали всичко не трябва да се напише наново по друг начин, но нито имаше времето, нито пък съм сигурен дали има такъв начин изобщо. Аз като цяло забелязвам, че имам проблем с такъв тип изпити - ако задачата е - изкарай резултата както си искаш (както беше на Основи и Advanced, слава богу, че и Джавата ще е така) или имаш тук едни неща, тях не ги пипай се справям горе-долу добре, но като ми кажат - ето ти го условието и полу-работещо нещо, прави каквото си искаш с него и не знам откъде да почна. Но това се "лекува" само с практика сигурно, така че няма какво да се оплаквам :)

1
24/08/2015 11:30:58