Loading...
nakov avatar nakov SoftUni Team Trainer 5295 Точки

SPA with AngularJS: курсови проекти

Колеги, готови сме с условията на курсовите проекти за курса "SPA with AngularJS":

Както знаете, този курс ще се завършва с практически проект, който всеки си прави вкъщи. Ще има защита на живо и по Skype за онлайн курсистите.

Какво представлява AngularJS Ads проектът?

  • Дадено вие как изглеждат екраните от система за онлайн обяви (UI prototype)
  • Дадена е REST услуга, която пази данните и имплементира всички необходини действия
  • Посетителите на сайта без регистрация могат да разглеждат обявите, да се регистрират и логват
  • Логнатите потребители могат да си редактират обявите
  • Администраторът (поребител с по-високи права) може да редактира обяви, потребители, категории и градове - тази част е бонус, защото е по-трудна и по-оебмна за имплементация

За да ви помогнем по изграждането на практическия курсов проект добавяме още учебни занятия към курса:

  • 5 януари от 12 до 20 часа - колегата Владо ще пише проекта на живо пред всички, от нулата стъпка по стъпка. Ще запишем видео за онлайн курсистите. Няма да ви дадем сорс кода, за да си го напишете сами. Това е важно условие в заданието.
  • 6 януари - от 16 до 22 часа - ще правим Lab, отново работа по практическия проект.
  • 11 януари (неделя) - защита на проектите - ще направим записване и разпределение по часове.

В понеделник и вторник остават планираните учебни занятия:

  • Services, ruting, directives
  • Работа по практическия проект

Обръщам внимание че има важно изискане да работите с Git и да commit-вате редовно в GitHub. Ако не го правите, ще загубите половината от точките за проекта. Трябва да покажете, че сте работили здраво по този проект и не сте го преписали от ваш колега.

Проектите са индивидуални. Няма да има разпределение на отбори.

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

Започвайте работа! Имате право да обсъждате публично и да споделяте кой до къде е стигнал.

За REST услугите админската парола е admin / admin.

Препоръчам ви да си пуснете услугите локално (показано е във видеото как става с [Ctrl+F5] във Visual Studio).

19
JavaScript Applications 26/12/2014 22:39:07
ttitto avatar ttitto 1153 Точки

Нещо не ми излизат сметките - защита на 230 проекта за един ден?! По колко минути ще бъде защитата на един проект?

Ако работим с SVN Tortoise и комитваме към GitHub отново ли ще загубим точките?

1
Matrix avatar Matrix 1092 Точки

Ако предположим, че сме около 300 човека, но разпределени в отбори по 5 човека - си стават около 60 проекта за защита... Поне аз така си го представям... А, ако заработят и двете зали паралелно...

0
19/12/2014 15:59:44
RoYaL avatar RoYaL Trainer 6849 Точки

@Matrix, аз останах с впечатление, че проектите ще са индивидуални

4
externo avatar externo 119 Точки

Дано са поне 2 комисии: 1 за онсайт и 1 за онлайн курсистите, ако всичко е в 1 ден и дано не са отборни защото се губи смисъла от индивидуалния изпит, все пак си има отделни отборни проекти.

1
kigoto avatar kigoto 12 Точки

Може ли да използваме bootstrap ?

2
VGeorgiev avatar VGeorgiev 1384 Точки

Разрешено е използването на Bootstrap.

6
nakov avatar nakov SoftUni Team Trainer 5295 Точки

Качил съм ви видео с обяснения за Ads проекта: какво се очаква да се случи на всеки от екраните, как да си пуснем REST услугите локално, как да ползваме Ads REST услугите от Azure cloud, как да ползваме POSTMAN примерите за всяка една услуга и други разяснения.

16
orb_77 avatar orb_77 10 Точки

Мога ли сам да си напиша "back-enda" на "nodejs"  и да използвам "mongodb" база данни за проекта , че ми е интересно да ги разуча ?

2
nakov avatar nakov SoftUni Team Trainer 5295 Точки

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

1
Yulia avatar Yulia 1346 Точки

Колега, аз съм навита заедно да си напишем back-end-а на nodejs. Да стане MEAN app ^^ Писах такъв за TW-ка по JS Apps и се чудех за същото и сега - та би било добре ако можем да си разделим работата. Но разбира се - това на финален етап, СЛЕД като всеки си напише front-end-а с AngularJS.

0
25/12/2014 20:40:03
orb_77 avatar orb_77 10 Точки

@Yulia Еми добре колежке, ако искаш мога да направя една организация в "github" и там да си пишем само "back-enda". Аз съм направил до някаде скелета на сървара. Ако искаш ме добави в "Skype" да си разпределиме работата.

Skype: orb_77

0
kaizer avatar kaizer 35 Точки

Колеги, Весела Коледа!

Може да почивате, ама почвам с въпросите за проекта :)

Кой би трябвало да ми е baseUrl при локалната база

http://localhost:1337/api

или

http://localhost:1337

и в крайна сметка примерно при визуализацията на регистрация на user, url-а как се имплементира, как би следвало да изглежда?

http://localhost:1337/api/index.html#/register - нещо такова или греша.

 

0
borislavml avatar borislavml 368 Точки

root url-a ти е  http://localhost:1337

От там нататък екраните ти са http://localhost:1337/login  http://localhost:1337/register и т.н според останлите ти view-ta. Това се конфгурира с помоща на $routeProvider:

$routeProvider.
when('/login', {
templateUrl: 'templates/login.html',
controller: 'loginController'
}).

Казваш на angular при какви url пътища кои partial html- да ти зарежда, а линковете към тези partial-и си ги задаваш в index.html(или според случая) така <a href="#/login">Login</a>.

http://localhost:1337/api/index.html#/register - сървърите са достатъчно умни да зареждат индекс.хтмл файла при лоуд на странцата и тоиз index.html не би следвало да се вижда никъде. А url с /api/user /api/ads и т. н са тези, към котио си правиш заявките в логиката на приложението и също нямат нищо общо с раутинга и пътищата на твоето приложение.

Дано съм бил полезен smile

 

ЕДИТ: Извинявай, че те подведох. http://localhost:1337 е root url на сървъра от който си взимаме данните. Твоето приложение докато го рънваш локално( предполагам през node.js съврвър) root url-a му ще е http://localhost:1234( на този порт слша сървъра от angular seed) и екраните ти ще са  http://localhost:1234/#/login http://localhost:1234/#/register и т.н 

2
26/12/2014 12:55:52
kaizer avatar kaizer 35 Точки

Това означава ли, че и двата трябва да са пуснати? Веднъж node.js и веднъж за базата даден ни от г-н Наков на VS.

0
borislavml avatar borislavml 368 Точки

Ами да. Аз лично така го правя. Рънвам два сървъра локално. Друг начин да си подкарам angular приложението без node.js сървър не знам. Ако има такъв някой колега да сподели smile

1
cherokee avatar cherokee 146 Точки

А разрешено ли е използеането на third-parties AngularJS  модули, по конкретно става въпрос за UI Router вместо вграденият ngRoute, който дава възможност за нестнати view-та? Това доста би помогнало при преизползване на различни темплейти в екраните.

0
nakov avatar nakov SoftUni Team Trainer 5295 Точки

Да, разрешено е ползвате каквите външни библиотеки и модули ви вършат работа.

0
nakov avatar nakov SoftUni Team Trainer 5295 Точки

Колеги, качени са REST услугите и за администраторската част на Ads проекта по AngularJS: http://softuni-ads.azurewebsites.net.

Някой започна ли да пише проекта?

0
28/12/2014 16:22:50
presian avatar presian 223 Точки

Има започнали вечеsmile

 

При мен има някакъв проблем с базата, липсващ файл или нещо такова:

FileNotFoundException: Could not find file 'D:\MyGit\SPA-with-AngularJS\Ads-REST-Services\Ads.Web\bin\Ads.Web.XML'.]
   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +10842978
   System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +1305
   System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize) +63
   System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy) +73
   System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) +69
   System.Xml.XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver) +73
   System.Threading.CompressedStack.runTryCode(Object userData) +70
   System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) +0
   System.Threading.CompressedStack.Run(CompressedStack compressedStack, ContextCallback callback, Object state) +92
   System.Xml.XmlTextReaderImpl.OpenUrl() +128
   System.Xml.XmlTextReaderImpl.Read() +308
   System.Xml.XPath.XPathDocument.LoadFromReader(XmlReader reader, XmlSpace space) +278
   System.Xml.XPath.XPathDocument..ctor(String uri, XmlSpace space) +110
   System.Xml.XPath.XPathDocument..ctor(String uri) +6
   Ads.Web.Areas.HelpPage.XmlDocumentationProvider..ctor(String documentPath) in d:\MyGit\SPA-with-AngularJS\Ads-REST-Services\Ads.Web\Areas\HelpPage\XmlDocumentationProvider.cs:38
   Ads.Web.Areas.HelpPage.HelpPageConfig.Register(HttpConfiguration config) in d:\MyGit\SPA-with-AngularJS\Ads-REST-Services\Ads.Web\Areas\HelpPage\App_Start\HelpPageConfig.cs:26
   Ads.Web.Areas.HelpPage.HelpPageAreaRegistration.RegisterArea(AreaRegistrationContext context) in d:\MyGit\SPA-with-AngularJS\Ads-REST-Services\Ads.Web\Areas\HelpPage\HelpPageAreaRegistration.cs:23
   System.Web.Mvc.AreaRegistration.CreateContextAndRegister(RouteCollection routes, Object state) +104
   System.Web.Mvc.AreaRegistration.RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, Object state) +190
   System.Web.Mvc.AreaRegistration.RegisterAllAreas(Object state) +34
   System.Web.Mvc.AreaRegistration.RegisterAllAreas() +7
   Ads.Web.WebApiApplication.Application_Start() in d:\MyGit\SPA-with-AngularJS\Ads-REST-Services\Ads.Web\Global.asax.cs:19

[HttpException (0x80004005): Could not find file 'D:\MyGit\SPA-with-AngularJS\Ads-REST-Services\Ads.Web\bin\Ads.Web.XML'.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9905705
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): Could not find file 'D:\MyGit\SPA-with-AngularJS\Ads-REST-Services\Ads.Web\bin\Ads.Web.XML'.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9885060
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254


Преди това да се появи не виждах базата през SQL-а, но иначе заявките си работеха. След като даде тази грешка, базата се показа, но спря да работи локалхоста:1337
0
27/12/2014 02:32:08
frisky avatar frisky 16 Точки

@presian имах същия проблем, изтегли този файл и го сложи в Ads-REST-Services -> Ads.Web -> bin и би трябвало да заработи

1
presian avatar presian 223 Точки

@frisky направо, като закъснял дядо Коледа се провяви. Спаси ми кожата. Какво ли не направих не пожела да проработи. Благодаря ти от все сърце, жалко само че толкова късно го видях, утрепах цял ден в напъни да го оправя!

 

Наистина много съм ти благодарен!

0
orb_77 avatar orb_77 10 Точки

Здравейте колеги, понеже се хванах сам да си пиша "back-enda" ,та сега се изправих пред въпроса каде да съхранявам "access token"-ните. В масив на сървара или по някакъв друг начин ?

0
nakov avatar nakov SoftUni Team Trainer 5295 Точки

По принцип ще имаме отделен курс за писане на RESTfule back-end. препоръчвам ти да се хванеш с AngularJS клиента първо и само ако остане време, да си пишеш back-end.

Иначе access_tokens би трябвало да ги пазиш в базата -> по най-много един за всеки user.

Подценяваш работата. Този back-end съдържа над 30 REST услуги. Аз лично го написах за 3 дни здраво писане, при положение, че знам какво правя, знам REST, Web API, бази данни, EF и имам предишен опит с подобни проекти. Ако не бях запецнал на простотията с "auto login after register", щеше да ми отнеме 2 дни по 10-12 часа. Прави си сметката дали имаш толкова време (може и да си по-бърз от мен, но все пак е мноооого време).

0
orb_77 avatar orb_77 10 Точки

@nakov Ок мерси за отговора. Мисля да те послушам и да си напиша първо "front-end"-да.

0
Matrix avatar Matrix 1092 Точки

"Някой започна ли да пише проекта?"

Започнах и се хващам за главата колко много неща има за правене :D

Можем ли да променяме дизайна? Можем ли да си редим бутоните от менютата както си искаме или трябва да се спазва този лейаут?

0
presian avatar presian 223 Точки

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

2
nakov avatar nakov SoftUni Team Trainer 5295 Точки

Дизайнът не е важен, важно е да реализираш функционалностите, поне първите 5-6 страници.

0
milen_vm avatar milen_vm 68 Точки

Клауд сървара не отговаря:

This site is currently not available... Please try again later

Вчера успях да листна обявите и сега гледам - няма никойyell. Не се отваря и хелп пейджа на сървисите. Само при мен ли е така? Някой друг ползва ли клауда? Предпочитам го защото съм на Linux.

EDIT: Работи вече.

1
28/12/2014 15:45:20
P.Kostadinov avatar P.Kostadinov 41 Точки

И при мен същата работа ;/ 

1
nakov avatar nakov SoftUni Team Trainer 5295 Точки

Понякога се чупи докато deploy-вам нова версия. Обикновено се оправя до 20-30 секунди.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.