Month: May 2016

AngularJS – Problem z cachowaniem templatów *.html

Posted on Updated on

Problem nie rozwiązany, ale czasem wraca więc go opiszę.

Opis problemu

Pracuję na Visual Studio 2015. Mam angularową dyrektywę (directive), która posiada kod JS oraz plik powiedzmy “/app/directive.html”. Dyrektywa ta jest używana na moim głównym widoku (Index.cshtml, dla głównego kontrollera)
* uruchamiam aplikację i idę do adresu ‘/’ to widzę aktualne dane
* podmieniam coś w pliku “/app/directive.html”
* odświeżam ‘/’, nie widzę zmian w dyrektywie 😦
* wchodzę przeglądarką na adres “/app/directive.html”, widzę nową wersję
* odświeżam ‘/’, widzę zmiany w dyrektywie

NOTE: pisząć odświeżam myślę o twardym reload, Ctrl+R

A gdy problem nie występuję

Jest też sytuacja gdy od razu po zmianach pliku “/app/directive.html”, widzę zmiany po odświeżeniu ‘/’. Nie wiem jeszcze jak nie wiem dlaczego.

Możliwe rozwiązanie

Ma to “jakiś” związek z cachowanie plików html przez przeglądarkę i jeszcze dodatkowo przez silnik angulara. Nie reprodukuje mi się teraz problem ale następnym razem spróbuję skorzystać z ng-template https://docs.angularjs.org/api/ng/directive/script. i wrzucać moje derektywy w pliki *.cshtml. Nie testowane jeszcze – może nawet tak się nie da.

Lepsze możliwe rozwiązanie

Użyję tego: https://www.npmjs.com/package/gulp-angular-templatecache

Implementowanie CQRS

Posted on Updated on

http://weblogs.asp.net/shijuvarghese/cqrs-commands-command-handlers-and-command-dispatcher
– jak w praktyce zrobic prosty Dispatcher, Command, CommandHanler.
– jedynie powienienem nazwać CommandDispatcher zamiast CommandBus.

http://stackoverflow.com/questions/8184490/confusion-about-message-bus-command-dispatcher-patterns

– slajdy z prezentacji, które wiele mi dały, akurat też było w kontekście Ninject’a

nice AOP around CommandHandler
nice AOP around CommandHandler

– i już wiem gdzie dać logowanie błędów.

z prezentacji: https://www.youtube.com/watch?v=itQOsr9pmsg

Nazewnictwo plural czy singular

Posted on Updated on

UserList, a nie UsersList

DesignRepository zamiast DesignsRepository

Przykład nazw kontrollerów w Angularze:
UserCtrl,
UserListCtrl,
ewentualnie NewUserCtrl

JSFiddle na problemy z JavaScriptem, Angularem, TypeScriptem

Posted on Updated on

https://jsfiddle.net (i także wiele podobnych tooli/serwisów) jest edytorem w przeglądarce który pozwala odpalić nasz kod napisany w JavaScripcie. Takich tooli jest o wiele więcej dla różnych języków itp, ja skupie się na tym jednym i go opiszę, może są nawet lepsze alternatywy – nie wiem, widzę jednak, że jest najbardziej popularny na StackOverflow.

Składa się z 3 okienek gdzie wpisujemy nasz kod (html, JavaScript, css) oraz czwartego (output) w którym się uruchomi nasz kod:
jsfiddle example panes

Obecnie pozwala wybrać z kilku języków: JavaScript, CoffeeScript, JavaScript 1.7, Babel, TypeScript. Do tego kilkadziesiąt frameworków JS, z tego te bardziej popularne w kilku wersjach, np Angular jest w 4, a jQuery w ok. 20. To jest tylko takie ułatwienie, a nie ograniczenie. Dowolną bibliotekę można też dociągnąć tak jak includujemy każdy nowy scrypt w markupie html.

Debugowanie

Przyda się gdy coś “nie działa”

Najpierw samemu trzeba wyczerpać możliwości, bo często problem leży gdzieś u nas i widząć czysty kod, który działa w JSFiddle mamy pewność że to podejście działa tylko u nas czegoś jeszcze brakuje (gryzą sie zależności, czegoś brakuje, itp, itd). Jeśli już uruchomiliśmy w JSFiddle i nie działa tak jak powinno to wtedy mamy gotowy materiał na pytanie na StackOverflow. Nie możemy oczekiwać że obcy ludzie będą nam pomagać jeśli najpierw sami sobie nie pomogliśmy. Jeśli wrzucimy linka z kodem do uruchomienia na JSFiddle to każdy może na własne oczy zobaczyć co jest grane. I na przykład odpowiedzieć nam poprawioną wersją kodu.

Historia zmian

Nasz kod możemy wersjonować lub forkować, nawet bez zalogowania się.

Jaki jest dobry Folder dla trzymania Enum’ów?

Posted on

Shared

Chyba, że naturalnie wynika coś lepszego, czyli np mamy folder Orders gdzie są wszyskie encje i tam też jest enum OrderyState. Jeśli jednak nasze klasy (encje, modele, dto, …) siedzą w folderach Models, Dto itp to może Shared dla enumów będzie dobrą opcją.