czwartek, 1 czerwca 2017

Wersja testowa WebDotNet

Wersja testowa WebDotNet

Witam!
Z przyjemnością zapodaję linka do testowej wersji nowej platformy J


Jak sama nazwa wskazuje, nie jest to jeszcze finalna wersja, ale chcę pokazać, co udało mi się zrealizować przez ten czas. Stworzyłem także readonly konto w umbraco BackOffice, jeśli chciałbyś zobaczyć jak wygląda struktura umbraco. Link do umbraco to http://www.webdotnet.eu/umbraco  a dane do logowania to:

Login: „Test”
Pass: „qwerty123”

Boleć może zwłaszcza brak przystosowania do urządzeń mobilnych, ze względu na strukturę w jakim buduję strony, nie działa też podgląd na małych sekcjach. Nie mniej jednak zapraszam do oglądania i testowania!

Pozdrawiam, Kamil 

niedziela, 28 maja 2017

Koniec DajSięPoznać 2017, co dalej z blogiem?

Koniec DajSięPoznać 2017, co dalej z blogiem?




Drugi post będzie krótki, ale czuję, że jest potrzebny. Co dalej będzie się działo z blogiem http://www.webdotnet.pl. Pierwsza i najważniejsza zmiana to przejście na cykl jednego posta w tygodniu zamiast dwóch. Dwa posty to dość sporo biorąc pod uwagę resztę obowiązków, które mam na głowie. Nie było łatwo wytrwać z dwoma postami w tygodniu, zwłaszcza chcąc utrzymać ich sensowność. Wiem, że czasem dało się odczuć, że tak naprawdę te dwa posty można było napisać w jednym, jednak bywały ciężkie tygodnie i właściwie tak właśnie było (podzieliłem post na pół i zamieściłem, jako dwa). Takie rzeczy już nie będą się działy J.

Kolejną rzeczą, którą chcę poruszyć to tematy, które będą obecne na tym blogu. Przez najbliższy czas z pewnością nadal będzie to tematyka Umbraco, .NET i frontendu. Chciałbym także poruszyć nieco tematów mniej technicznych. Np. tego jak rozwijała się moja kariera jako programisty (nie mam typowo informatycznego wykształcenia).



Python będzie kolejnym językiem, którego chcę się nauczyć (głównie ze względu na jego popularność w machine learning i automatyzacji). Możesz oczekiwać postów o tej tematyce w niedalekiej przyszłości. Myślałem nad nauką PowerShell-a, ale spróbuję przeprowadzić tego typu automatyzację za pomocą Pythona.

Postaram się także by posty były nieco dłuższe, chyba ze krótki wyczerpie temat (jak moje posty na temat implementacji Disqus i Addthis). Nie widzę powodu by niepotrzebnie je przedłużać.
Na ten moment to tyle updatu, pozdrawiam serdecznie, Kamil.


Koniec DajSięPoznać 2017, co z projektem?

Koniec DajSięPoznać 2017, co z projektem?



Konkurs Daj się poznać dobiega końca, ten post będzie o tym, co udało mi się zrealizować w projekcie do tej pory.

Jestem już bardzo blisko wypuszczenia nowej wersji bloga. Myślę, że stanie się to w drugim tygodniu czerwca.

Właściwie brakuje mi jedynie lekkiego dopasowania stylów na stronie i dodania Google analyst i tag manager do strony.

Posty zostały już przepisane do nowej platformy i tak wygląda przegląd postów na stronie głównej:



Robots.txt jak i sitemap-a zostały zrobione.



Stworzyłem także widok wszystkich postów, które zostały napisane, pogrupowane po miesiącach. Zastanawiam się czy nie lepiej by było zrobić odwrotnego sortowania, czyli od najnowszych do najstarszych. Jest to jednak prosta poprawka.



Co dalej?
Jak już wspomniałem, muszę nico popracować nad stylami. Kolejnym krokiem będzie postawienie wersji testowej, by sprawdzić poprawność wszystkich elementów „third-party”, dopełnienie contentu i… puszczenie wszystkiego „live” z podmianką przekierowania na domenę J

Sam projekt będzie oczywiście nadal rozwijany i rozszerzany o nowe funkcjonalności w miarę potrzeb bieżących.  Jednak już teraz mogę powiedzieć, że kolejnym dużym krokiem będzie wersja angielska.


Pozdrawiam Kamil.

niedziela, 21 maja 2017

Plany

Plany




Zbliża się już koniec miesiąca, ten post będzie krótką listą rzeczy, które chciałbym zrealizować zanim maj się skończy. Kłopoty zdrowotne niestety trochę psują mi mój plan, mam spore problemy z skupieniem się, na czymkolwiek przez grypę. Jeżeli jednak wszystko pójdzie po mojej myśli to powinno się udać zrobić deployment nowej wersji mojego bloga.
Aby blog mógł ujrzeć światło dzienne muszę jeszcze zrobić:
  • Widok wszystkich postów na blogu
  • Sitemape
  • SEO optymalizacje
  • Możliwość subskrypcji po RSS
  • Wypełnić stronę główną i „O mnie” właściwą treścią
  •  Przepisać wszystkie posty z starego bloga na nowego.

Jeśli powyższa lista zostanie zrealizowana, będę mógł przenieść się już na nową platformę. Mam nadzieję, że się uda J

Pozdrawiam serdecznie, Kamil.

301 URL tracker Umbraco

Dziś będzie o bardzo przydatnej paczce do umbraco, więc jeśli potrzebujesz łatwego zarządzania przekierowaniami linków to powinieneś zainteresować się URL trackerem.




Post będzie krótki, ale mam nadzieję, że przydatny J Url Tracker to rozszerzenie do Back Office umbraco, które pozwala na łatwe zarządzanie linkami wewnątrz aplikacji, gdy np. chcemy stworzyć przekierowania na stronę jakiegoś konkursu, albo po prostu mamy starą strukturę strony i chcemy przekierować na nowe linki.

Po wejściu na zakładkę Content, mamy do dyspozycji dodatkowy Tab, „Url Tracker”



Po kliknięciu przycisku „Create”, możemy stworzyć nowe przekierowanie. Najpierw zajmijmy się sekcją Requred:



Z pomocą kombinacji RootNode oraz Old URL decydujemy, jaki link ma być przekierowany na inny za pomocą tego narzędzia. Opcjonalnie, możemy również dodać wymagane parametry w linku. Możemy także skorzystać z wyrażeń regularnych i w takim przypadku wszystkie linki spełniające to wyrażenie regularne zostaną przekierowane.

Następnie w Redirect Node możemy wybrać noda, do którego użytkownik ma zostać przekierowany (link zostanie pobrany z właściwości tego noda) lub wpisać samodzielnie URL.

W sekcji Optional, należy zdecydować czy redirect jest permanentny (301) czy tymczasowy (302). Jeżeli przeglądarka, jako zwrot otrzyma 302 będzie sprawdzać czy przekierowanie nadal jest, natomiast przy 301 przeglądarka zapamiętuje to i przy kolejnej próbie wejścia na link, który zwrócił 301, automatycznie jesteśmy przekierowani na odpowiednią stronę bez pytania serwera.



Po stworzeniu linka, możemy zobaczyć go w overview wszystkich naszych redirectów.



Jeszcze jedną bardzo przydatną funkcjonalnością jest „404 Not found view” dostępny po naciśnięciu guzika z takim napisem w zakładce trackera. Zawiera listę wszystkich requestów, które zwróciły 404, wiec możemy sprawdzić gdzie użytkownik próbował się dostać. Z poziomu tego widoku możemy od razu stworzyć redirect do linka, który np. bardzo często się powtarza, a domyślamy się gdzie użytkownik próbował się dostać.




Pozdrawiam, Kamil.

niedziela, 14 maja 2017

Pobieranie Contentu z Umbraco część 1

Pobieranie Contentu z Umbraco część 1



Ten post będzie pierwszym postem z cyklu jak pobierać content, który dodaliśmy w Back Office w naszym kodzie C#. Dziś opiszę jak znaleźć interesujący nas node w contencie umbraco.
Jedną z opcji, którą bardzo często wykorzystuję, jest pobieranie contentu za pomocą Controllerów. Całą operację przedstawię za pomocą podstrony, która wyświetla wszystkie posty otagowane danym tekstem. Aby móc skorzystać z tej metody, musimy stworzyć dowolny Document Type i zapamiętać jego alias.



Teraz przechodzimy do kodu i tworzymy Controller dziedziczący po RenderMvcController i nazywamy go [Nasz alias doc typu]Controller i overridujemy metodę Index

    
    public class TagController : RenderMvcController
    {
        public override ActionResult Index(RenderModel model)
        {
            var content = model.Content;
        }
    }

W parametrze metody, możemy sięgnąć po IPublishedContent poprzez property o nazwie Content. Z kolei z niego, możemy wyciągnąć wszelkie inne teksty, bądź dzieci w drzewku contentu, więcej o tym będzie w części drugiej.
Innym sposobem na dojście do interesującego nas noda w drzewku, jest pobranie jego rodziców, którzy znajdują się w „korzeniu” i znalezienie interesujących nas rzeczy np. poprzez Linq. Ja w ten sposób pobieram wszystkie posty. Przejdźmy więc do kodu. W projekcie umbraco, mamy możliwość skorzystania z UmbracoHelper-a, który zawiera mnóstwo przydatnych rzeczy, a także zcachowaną zawartość naszego contentu.  Myślę, że dobrym pomysłem będzie stworzenie klasy, która zawiera statyczną property pobierającą ten Helper z kontekstu umbraco. To przykład mojej klasy:

    
    public class NodeHelper
    {
        private static UmbracoHelper _umbracoHelper;

        public static UmbracoHelper Umbraco => _umbracoHelper ?? (_umbracoHelper = new UmbracoHelper(UmbracoContext.Current));       
    }

Po stworzeniu takiej klasy, możemy pobrać Root Node naszego contentu.

    
       var rootNodes = NodeHelper.Umbraco.TypedContentAtRoot();

Korzystając z metody TypedContentAtRoot, otrzymujemy listę wszystkich „korzeni” w naszej aplikacji.



Struktura postów w moim projekcie wygląda następująco: Posty -> Kategoria -> Post



Aby pobrać wszystkie nody zawierające posty, muszę najpierw w Roocie wybrać te Posty, a z nich wziąć wszystkie dzieci ich dzieci. Spłaszczymy tym nieco strukturę, pomijając kategorie, a wybierając same artykuły. W kodzie można to załatwić następująco:

    
      var articlesRootNode = rootNodes.First(x => x.DocumentTypeAlias == "articlesRoot");
      var allArticles = articlesRootNode.Children.SelectMany(x => x.Children).ToList();


W zmiennej allArticles, mam listę typu IPublishedContent, z której mogę wyciągnąć interesujące mnie dane na temat postów. Do pobierania contenu możemy także wykorzystać ContentService. Nie jest to jednak zalecane, jeśli chcemy jedynie czytać dane, ponieważ ContentService odpytuje bezpośrednio bazę danych, a UmbracoHelper, jak już wspomniałem na początku, nie.

To już koniec części pierwszej. W kolejnej opiszę, w jaki sposób możemy wyciągać teksty i inne properties, które mamy w umbraco, a możemy je dodać do Document typ-ów.

404 w umbraco

404 w umbraco


Każda witryna powinna mieć swoją wersję strony 404. Wyświetla się ona, gdy użytkownik jest na właściwej domenie, jednak próbuje wyświetlić nieistniejącą podstronę. W tym poście opiszę, jak taką stronę utworzyć w umbraco.

Na początek zalogujmy się do Back Office umbraco i stwórzmy nową stronę. Zadbajmy także o to, aby mogła ona być poprawnie wygenerowana przez umbraco. W moim przypadku wiązało się to z dodaniem nowego contentu typu „Page” i dodanie do niego sekcji, które mają zostać wyświetlone na tej stronie.

Po utworzeniu i sprawdzeniu czy działa, przejdźmy do zakładki właściwości i skopiujmy sobie ID naszego Noda.



Przechodzimy teraz do naszego projektu umbraco i wyszukujemy plik, umbracoSettings.config w XML-u musimy zmienić zawartość error404 na ID, które skopiowaliśmy z Back Office.



Po przebudowaniu projektu, strona 404 powinna się już poprawnie wyświetlać na lokalnym serwerze. Żeby zadziałała także na hostowanym, musiałem dodać w głównym WebConfigu tę linijkę:

<httpErrors existingResponse="PassThrough" />

Należy to wkleić w sekcji <system.webServer>
Po tej operacji wszystko powinno już śmigać, a po wpisaniu błędnego linka, naszym oczom powinna ukazać się strona 404.


To by było na tyle, dodawanie strony 404 w umbraco jest dość proste.
Pozdrawiam, Kamil.