MiniBlogCześć. Przyszła kolejna zmiana na blogu. Tym razem bardzo duża.
Zdecydowałem się zrezygnować z silnika blogowego jakim jest BlogEngine .NET na rzecz silnika MiniBlog.
Wielu z was poprzez email albo w komentarzu pytało czy coś się stało, że na blogu jest cisza. Zupełnie tak, jak przed migracją z Bloggera do BlogEnginie.
BlogEngine zaczął coraz bardziej mnie ograniczać. Miałem też z nim ostatnio dziwne problemy. Po ostatniej aktualizacji pole administratora zostało uszkodzone do tego stopnia, że straciłem możliwość dodawania i edytowania wpisów na blogu z poziomu panelu. Całe szczęście mogłem to robić przy użyciu Windows Live Writer-a, ale zaczęło mi to coraz bardziej przeszkadzać. Zdarzały się sytuacje, w których chciałem szybko zedytować literówkę na blogu i mogłem często to zrobić dopiero wieczorem przy swoim laptopie. Zdarzało mi się też zapominać, wiec błędy pozostawały.
Wkurzyłem się. Wiele lat temu postanowiłem stworzyć tego bloga i postanowiłem się nim opiekować, aż do śmierci. Musiałem więc coś z tym bałaganem zrobić.
Zacząłem też myśleć na poważnie o kolejnym blogu. Nie miałem ochoty tworzyć go jako osobnej strony. BlogEnginie nawet mi blokował taką opcję przez swoje dziwne filtry HTTP.
Brakowało mi też na moim blogu strony tytułowej, niezależnej od tego, co tutaj piszę. Jak więc to wszytko mam zrobić.
BlogEngine jest dobry to prostych zastosowań, ale od kiedy uciekłem od Bloggera chciałem mieć władzę na wszystkim, co się dzieję w silniku. Takiej władzy nie miałem.
Kocham platformę .NET więc skorzystanie z WordPressa nie przychodziło mi do głowy.
Jest więc alternatywa .NET jeśli chodzi o silniki blogowe.
Co więcej jak przeprowadzić kolejną migrację. Bo migracja z Bloggera do BlogEngine i mojego serwera była bardzo bolesna, jeśli chodzi o SEO.
Tym razem potrzebowałem czegoś mocnego. Czegoś, co będę mógł mieć przez następne 10-20 lat.
MiniBlog
ASP.NET RAZOR Web Page są stronami ASP.NET bez modeli, widoków, kontrolerów. Niektórzy mówią, a to jak klasyczne ASP lub PHP, czyż nie.
Niezupełnie. Masz przecież do dyspozycji pełną prędkość .NET CLR oraz składnie C# z LINQ i wyrażeniami dynamics na czele.
ASP.NET Razor Web Pages są więc doskonałym narzędziem do pisania prostych stron.
Na tym frameworku działa właśnie alternatywny silnik MiniBlog. Ironicznie MiniBlog został stworzony przez tą samą osobę, co BlogEngine.
https://github.com/madskristensen/miniblog
Cechuje go jedno słowo. Minimalizm.
BlogEngine ma dużo kodu i niepotrzebnych funkcjonalności. A MiniBlog pokazał mi, że do działania bloga wystarczy tylko 8 klas napisanych w C#. Nie mówiąc o tym, że jest to wspaniały powiew świeżości. BlogEngine to w końcu klasyczny ASP.NET Web Form, który osobiście mi zbrzydł.
To co jednak mi się najbardziej spodobało w MiniBlogu to fakt, że skoro jest on taki mały i tak łatwo napisany, to łatwo do niego dopisać swoje funkcjonalności. Co też zrobiłem.
Co musiałem dopisać
Nie było tego dużo. Brakowało mi możliwości wyszukiwania wpisów oraz strony archiwum, wiec napisałem je od zera. MiniBlog też nie miał kodu potrzebnego do stworzenia strony kontaktowej. Wysyłka email.
Aby ułatwić sobie sprawę pewne fragmenty kodu ściągnąłem z BlogEngine. Śmieszyło mnie jedynie to, że wysłanie wiadomości email w BlogEnginie sprowadza się do użycia 4 klas. Ja uprościłem kod do jednej metody. Nie ma co się oszukiwać, ale BlogEnginie nie jest symbolem pięknego i krótkiego kodu..
Podsumowując co musiałem dopisać:
- Wysyłkę Email
- Generator strony archiwum
- Wyszukiwanie po wpisach
- Możliwość dodania klików blogu pod adresem /blog/
MiniBlog ma moc
Rozbudowywanie MiniBlog sprawiło mi wielką frajdę. Skorzystałem np. z gotowego mechanizmu pisania postów na poziomie swojego własnego bloga, a nie w jakimś edytorze. Jest on tak dobry, że gdyby nie fakt, że na tym blogu czasami wstawiam coś więcej niż tekst, to używałbym go domyślnie.
Korzystam z niego pisząc wpisy o przemawianiu.
Problem związany z brakiem możliwości edytowania wpisów znikł w bardzo przyjemny sposób.
Do każdego wpisu dodałem też specjalne zmienne, które są zaszyte w HTML. Odczytuję je po stronie serwera i modyfikuję odpowiednio wpis. Przykładowo pewna zmienna decyduje o kolorze belki z tytułem wpisu.
Teraz blog jest bardziej kolorowy.
Najwięcej pracy zajęło mi dopisanie specjalnych opcji do MiniBloga, które by umożliwiły tworzeniu wielu blogów równocześnie.
Napisałem więc ten mechanizm blogowy. Mając to stworzyłem drugiego bloga i nową skórkę do niego. Potem napisałem skórkę do stron głównych.
Każda skórka miała też przepięknie wyglądać na komórkach.
Zajmowało mi to dużo czasu ponieważ brakowało mi inspiracji. A chciałem aby blog programistyczny i blog o przemawianiu różniły się od siebie jak dzień i noc. To samo dotyczyło stron głównych.
Udało się.
Pozostała jeszcze inna poważna kwestia.
Przekierowania 301
Po niezbyt miłych przygodach z Bloggerem i brakiem możliwości przekierowań tym razem chciałem zrobić to dobrze.
<rule name="BlogEngine44" stopProcessing="true">
<match url="^post/([0-9]+)/([0-9]+)/([0-9]+)/([_0-9a-z-]+).aspx" ignoreCase="true"/>
<action type="Redirect" redirectType="Permanent" url="/blog/programing/post/{R:4}"/>
</rule>
Na szczęście to przeszłość. Skoro wszystko teraz stoi na moim serwerze znaczy to, że mogę takie przekierowanie 301 stworzyć.
Siedziałem na tą zasadą pół godziny, ale ważne, że działa. Stare ścieżki do wpisów “/post/rok/miesiac/dzien/[cos].aspx” teraz będą przekierowywane na nowy adres zaczynający się od/blog/programing/[cos].
Istnieje też kwestia komentarzy. Są one na serwisie Disqus. Jeśli przekierowania 301 będą działały poprawnie, to komentarze ze starych adresów przeniosą się na nowe.
Import wpisów
Import wpisów nie był do końca bezbolesny, ale był i tak bardzo przyjemny. Korzystając z pomocy tego wpisu. Napisałem maszynkę, która przetłumaczyła moje wpisy z BlogEnginie na lepszy format XML.
https://github.com/madskristensen/MiniBlogFormatter
BlogEnginie i MiniBlog w kwestii wpisów przechowywanych do XML są prawie jak bracia, więc nie dziwi mnie to, że ten niby wielki problem był dosyć łatwo rozwiązany.
Dla przypomnienia w trakcie migracji z Bloggera musiałem ręcznie przepisać 140 wpisów. Co było dużą katorgą ze względu na dziwne formatowania wpisów w Blogerze.
Jestem zadowolony z mojej decyzji MiniBlog
Gdy podjąłem decyzję o zmianie silnika blogowego. Miałem mieszane uczucia. Gdy jednak zobaczyłem, jak w prosty sposób mogę napisać przekierowania 301 jak i inne rzeczy mój nastrój się zmienił.
To była trudna decyzja. To była ciężka praca.
Mam to jednak już za sobą. A teraz Ty czytelniku możesz cieszyć się tymi zmianami.