Konfiguracja aplikacji .net core

Konfiguracja aplikacji bez ifowania w kodzie? Tak, wszystko dzięki dobrym i mądrym „chłopakom” z Microsoftu. Czytam o dotnet core oraz o tym jak można dobrze ustawić konfiguracje aplikacji od środowiska na którym zostanie uruchomione i chce się z wami podzielić tą wiedzą, uważam że pomoże ona wam (mi też) w lepszym i czytelniejszym przygotowywaniu  konfigurowaniu.

Poniżej kilka przykładów na to jak do tego tematu podejść. Continue reading

Gdzie kupić hosting wordpress

„Darmowy” hosting wordpress

Gdy spotykam ludzi i rozmawiamy o różnych rzeczach, a potem coś tam o blogowaniu i samym blogu i czasami ktoś mówi: mam bloga. Postawiłem go sobie na „darmowym” hostingu wordpressa w ich domenie np. kingatest.wordpress.com to trochę się tym denerwuje. Darmowy jest może dla Was, ale ja muszę oglądać reklamy i to wciąż nie jest twój serwer.
Ale potem gdy ktoś mówi że wykupił bloga i hosting za jakieś 150 złotych to się martwię i mi smutno, że nie wiedziałem o tym wcześniej, bo mógłbym im pomóc. Jak? Continue reading

Singleton – wzorzec Schrödingera

Na dwoje babka wróżyła

Czarna owca wśród wzorców projektowych – singleton. Często nazywany antywzorcem – źle. Trochę źle. Singleton w zależności od tego jak będzie używany będzie wykazywać cechy wzorca lub antywzorca.

Antywzorzec

Singleton jako zmienna globalnie dostępna, każdy może do niego sięgnąć i korzystać. Inny, bardziej obiektowy sposób na statyczne/globalne zmienne.

Wzorzec

Continue reading

Co załadowane nie jest nie pisze się w rejestr

Mówili mi ludzie, czemu sam rejestrujesz zależności w autofacu, skoro można skorzystać z konwencji, sam wszystko rozpozna, wykryje co masz załadowane do pamięci i z tego rozkmini. Jak się domyślacie wpis ten wziął się stąd, że nie zawsze tak się dzieje.

Otóż tak stworzona rejestracja czasem powoduje problemy:

Problemy wygladają tak:

None of the constructors found with ‚Autofac.Core.Activators.Reflection.DefaultConstructorFinder’ on type ‚IsThereAnyNews.Mvc.Controllers.HomeController’ can be invoked with the available services and parameters: Cannot resolve parameter ‚IsThereAnyNews.DataAccess.IRssChannelsRepository rssRepository’ of constructor ‚Void .ctor(IsThereAnyNews.Services.IUserAuthentication, IsThereAnyNews.Services.ILoginService, IsThereAnyNews.Services.ISessionProvider, IsThereAnyNews.DataAccess.IRssChannelsRepository)’.

Brak zarejestrowanej implementacji klasy, ale jak to nie ma skoro napisałem wcześniej żeby się automagicznie samo się. Na szczęście na stackoverflow są mądrzy ludzi i w dziesięć minut mi to wytłumaczyli.

AppDomain.CurrentDomain.GetAssemblies() call. According to MSDN the method:
Gets the assemblies that have been loaded into the execution context of this application domain.

Czyli co jakiś czas (najczęściej po restarcie IIS), projekt z MVC się ładuje, ale nie załadował wszystkich referencji jeszcze, więc nie podczas rejestracji autofaca ten wykrył interfejsów oraz implementacji, przez to nie zrobił pełnej rejestracji.
I uwaga, po mojemu to tak, że jeśli nie ma interfejsów, to nie trzeba szukać do nich implementacji, a skoro ich (tych interfejsów) nie ma to nie ma też błędów czy ostrzeżeń. I dalej autofac się robił i rejestrował, teraz gdy generowane było żądanie http do kontrolera, ten przychodził do autofaca a ten naburmuszony mówił: „jaka implementacja? jaki interfejs? gdzie mi tu z łapami! dawaj domyślny konstruktor! Jak to? Nie masz?! Gleba i EXCEPTION!” – resztę historii już znacie, żółty ekran na prodzie – fak je.

Ale żeby nie płakać, to rozwiązanie jest takie proste:

Tutaj należy zwrócić uwagę na linię (@5) gdzie ładowane są referencje. Taki sposób pobierać ma listę wszystkich referencji, najwyraźniej nawet tych jeszcze nie załadowanych. A zatem, nawet jeśli moje *services czy *repositories nie będą załadowane, to będą widnieć na liście referencji, a ta zostanie przekazana do autofaca do skanowania i na pewno zostanie wczytana, co wreszcie spowoduje że nie będzie miauczeć że nie zna typa czy jego implementacji. Oddech i dziękuje.

Jak ja tych PMów

pm

Pamiętam gdy byłem młodszy, myślałem sobie że taki PM to co najmniej darmozjad. Siedzi na dupsku i czyta internet. Czasem zajrzy do pokoju gdzie krew, pot, łzy. Gdzie bohaterowie oddają swoje życie na froncie. Gdzie dzieje się prawdziwa praca, a komputery piszczą z rozkoszy kompilacji. I zamarudzi taki, czemu to jeszcze nie działa, a czemu wolno, a miało być, a jak tu kliknę to źle się dzieje, godzin nie zaraportowaliście, źle je zaraportowaliście i tak marudzi, a potem idzie z innymi sobie podobnymi na kawkę pośmiać się ze swoich sucharków. Continue reading