Sobakowy Blog 2018

Witaj, 2018 roku!

Nie planowałem co prawda rozpoczynać sezonu blogowego w połowie sierpnia, ale szczęśliwie mogę tym razem odezwać się z czymś więcej niż zwyczajowym "No hej, nie było mnie rok, teraz chyba będę, wpisy nadchodzą — kiedyś…". Udało mi się nareszcie skończyć punkt pierwszy, sam szczyt moich list todo od niemal roku. Z lekką dumą informuję, że znajdujesz się teraz na nowej, odświeżonej wersji mojej strony.

Prawdopodobnie… nie zauważyłeś różnicy. I nie są to problemy z cache przeglądarki, a zupełnie zamierzony zabieg. Uznałem, że obecna, czteroletnia forma strony jest w dalszym ciągu adekwatna i (szczególnie przy moich marnych umiejętnościach graficznych) nie ma się co silić na rewolucję. Zrobiłem więc ewolucję, która na drugi rzut oka manifestuje się w najróżniejsze sposoby.

Żegnaj, WordPressie!

Po pierwsze, po ponad ośmiu latach i po raz pierwszy od tchnięcia życia w sobak.pl pożegnałem się z WordPressem. Wspaniałe to było osiem lat, nie zapomnę ich nigdy. Poważnie mówiąc, nie było źle. Nie potrafię wskazać jednego momentu przełomowego, przelania się czary goryczy, które spowodowałoby że rozżalony powiedziałbym dość. Co więc zadecydowało? Suma trzech czynników:

  • Dawka zdrowej ambicji. Nie wypada szewcowi chodzić w najtańśzych butach z sieciówki i nie wypada programiście technologii webowych tworzyć swojej wizytówki na pierwszym lepszym darmowym systemie.

  • Obawy odnośnie bezpieczeństwa. Nie zamierzam tu powielać szeroko rozpowszechnionych mitów. Rdzeń WordPressa jest bezpieczny, pomimo kilku istotnych wtop z zakresu procedowania luk bezpieczeństwa, WordPress w swojej bazowej formie skutechnie opiera się większości ataków.

    To, co można powiedzieć o samym gołym produkcie, nie do końca jest jednak prawdą w wypadku niezliczonych wtyczek. Tak więc w obliczu migracji na VPS-a (o której słów kika za chwilę) poszukiwałem czegoś, co nie wprowadzi mnie na pole minowe.

  • Potrzeba customizacji. Raz jeszcze przyznać trzeba, że WordPress generalnie rozszerzalny jest. Twierdzenie inaczej byłoby zanegowaniem faktu istnienia tak wielu wtyczek i motywów do niego.

    Nie oznacza to jednak, że owe rozszerzanie należy w roku 2018 do przyjemnych. Mimo, że sam jestem autorem kilku z funkcjonalności integrujących się dosyć mocno w poprzednią wersję witryny, to tworzenie tychże można porównać do szambonurkowania. Wraz z rosnącą ilością zmian, które chciałem i chciałbym wreszcie wprowadzić na swojej stronie potrzebowałem czegoś, w czym czułbym się absolutnie swobodnie.

Dlatego też zdecydowałem się na stworzenie własnego backendu w oparciu o framework Laravel, roboczo określonego nazwą kodową Perception (podziękowania dla winka, jak zawsze niezastąpionego w spontanicznym wymyślaniu nazw). Teoretycznie jest to prosta aplikacja CRUD-owa, więc nie będę za wiele rozpisywał się na temat szczegółów implementacyjnych. Chcę jedynie wspomnieć o jednej ważnej decyzji powiązanej ze wspomnianym wyżej poszukiwaniem bezpieczeństwa. Z tego powodu, a także chęci uproszczenia sobie życia — zarówno w momencie developowania jak i korzystania z platformy — zdecydowałem się na zupełny brak panelu administracyjnego.

Obecna implementacja czerpie mocno z konceptu generatorów stron statycznych. Źródłem jej danych są bowiem statyczne pliki tekstowe. W przeciwieństwie jednak do wcześniej wymienionych generatorów nie są z nich tworzone gotowe pliki HTML, a jedynie przejściowa, tymczasowa baza danych, która pozwala na wprowadzenie dowolnej ilości dynamiki i w zasadzie klayczny rozwój aplikacji WWW. Jak wspomniałem jest to też wygodniejsze dla mnie jako użytkownika, bo oznacza że nie muszę walczyć z dowolnym skryptem, próbując do niego dodać wsparcie Markdowna czy używać desktopowego edytora tylko po to, aby później wkleić wynik swojej pracy do formularza na stronie.

Harder, Better, Faster, Stronger

Dużo uwagi poświęciłem poprawie wydajności działania strony. Począwszy od przeniesienia się na szybszy serwer, przez optymalizację backendu, aż po upewnienie się, że wynik jego pracy może zostać szybko pobrany i obsłużony przez przeglądarkę. Zacząłem od podstaw, czyli zmniejszenia ilości i rozmiaru tekstu wysyłanego do klienta, wagi obrazków, zapytań do innych zasobów et ceterra. Wynik całej tej operacji przedstawia skrótowo poniższa galeria.

Pimp my website

Mimo iż nie zdecydowałem się na całościową wymianę szablonu strony, znalazłem dziesiątki, jeśli nie setki pomniejszych rzeczy zasługujących na poprawę w obecnym. Poczynając od rzeczy ogólnych jak zwiększenie kontrastu tekstu, o które prosiliście niedługo po premierze poprzedniej wersji (4 lata, polecam się), przez poprawę typografii, marginesów, kolorów, spójności i podrasowanie pojedynczych podstron, jak portfolio. Więcej szczegółów we wmiaręwykazie zmian na dole wpisu.

Content is an old, impotent king

Wydaje mi się, że blog z założenia jest formą treści, która po czasie zaczyna stanowić pewną historię, więc nie ingerowałem za bardzo w samo sedno byłych wpisów. Nie da się jednak ukryć że przez ponad osiem lat wiele z nich zaczęło odstawać od reszty strony, nie tylko stylistycznie lecz nawet w tak jaskrawe sposoby jak użycie już dawno nieużywanej wtyczki do podświetlania kodu. Poprawiłem też mnóstwo znalezionych po drodze literówek, niedziałających już dawno linków, a czasem nawet skrajnie nieaktualnych lub błędnych informacji (to ostatnie jednak robiłem w drodze wyjątku).

W kontekście treści warto też wspomnieć o porzuceniu możliwości komentowania na mojej stronie. Nad trudnościami technicznymi przeważyły problemy z moderowaniem takiej ilości tekstu i późniejszym utrzymaniu go w ryzach. Wierzę że komentujący mi wybaczą i z formularza na dole wpisów zapraszam do kontaktu w dowolnym miejscu wykazanym w zielonym menu (ikona serduszka na prawo od nagłówka).

Projekty stare i nowe

Sporo aktualizacji otrzymało portfolio. Poza poprawkami stylów, drobnymi korektami wielu z miniaturek, skupiłem się także na aktualizacji zawartej tam treści. Rozbudowałem opisy wielu z projetków, te które doczekały się nowych wersji zyskały często osobne podstrony w portfolio, aby oddzielić je od historycznych już tworów. Wreszcie, opisałem także kilka nowych dzieł.

Pastebin, czyli nowe miejsce do dzielenia się fragmentami kodu źródłowego, które w obecnej formie powstało kilka nocy temu.

Blackoutopus magnum spierdolenia szczyt projektów bezsensownych, nieuzasadnionych i z góry skazanych na porażkę, czyli moje starcie z opisywaną już bestią, bossem projektów legacy — xNovą.

Codice, które od ostatniej aktualizacji pozycji w portfolio stało się zupełnie nowym, otwartoźródłowym projektem. Dawniejsza wersja i delikatny rys historyczny poprzednich podejść został przeniesiony na osobną podstronę.

I wreszcie zupełnie nowa odsłona sobak.pl w portfolio. Podobnie jak wyżej, dawna treść została zachowana w osobnym, podlinkowanym miejscu.

Co dalej?

W chwili gdy to piszę, z mojego osobistego todo znika najbardziej rozbudowany i pożądany punkt od niemal roku. Mogąc się teraz zabrać za inne rzeczy, bez jednoczesnego wywoływania wyrzutów sumienia, planuję okazać trochę miłości starym, zakurzonym projektom, jak i zająć się rozwojem kilku nowszych. Stay tuned!

…ach, nie spodziewajcie się jednak w najbliższym czasie nowych tworów wielkoformatowych pokroju Codice czy codziennych aktualizacji o postępie prac. Stety-niestety gimnazjum mam już za sobą, a programowanie zawodowe skutecznie ogranicza ilość sił i zwyczajną ochotę na dalsze zagłębianie się w kod w czasie wolnym. Postaram się jednak aby każdy miesiąc przyniósł jakąś nową informację o mnie i tym nad czym pracuję.

W-miarę-wykaz zmian

  • znacząco poprawiłem czas ładowania strony (porównanie wyżej)
  • wdrożyłem certyfikat SSL dla sobak.pl i wszystkich subdomen
  • gorsza wiadomość: ze względu na ograniczony czas wycofałem możliwość komentowania wpisów
  • oparłem podświetlanie bloków kodu źródłowego o Keylightera
  • przerobiłem podgląd wpisów z Twittera, które teraz w większości wypadków ładują się natychmiastowo
  • zamieniłem strzałki do paginacji miejscami (następna strona po prawej)
  • zmodyfikowałem listę linków w sidebarze tak aby ich kolejność była losowa
  • poprawiłem wyszukiwarkę tak aby poprawnie obsługiwała przycisk Czytaj dalej dla wpisów, które go posiadają
  • poprawiłem wyszukiwarkę tak aby pokazywała także normalną paginację, a nie tylko strzałki po bokach ekranu
  • dodałem link do profilu na LinkedIn do menu serwisów społecznościowych
  • otwarcie menu wyszukiwania ustawia teraz kursor w polu formularza
  • poprawiłem podświetlanie aktywnego elementu menu na wielu podstronach
  • formularz kontaktowych korzysta teraz z ReCAPTCHA
  • przywróciłem do życia overdocs.net
  • zmiany wizualne:
    • zwiększyłem kontrast tekstu
    • poprawiłem style portfolio (w tym responsywność)
    • poprawiłem style formularza kontaktowego
    • poprawiłem wyświetlanie menu na urządzeniach mobilnych
    • poprawiłem typografię tekstu
    • poprawiłem style nagłówków
    • poprawiłem style cytatów
    • poprawiłem style dla wielu wariantów wyświetlania list
    • poprawiłem wyświetlanie miniaturek w portfolio
    • dodałem style dla boxów z informacją/ostrzeżeniem
    • zmniejszyłem wagę fonta dla pogrubionego tekstu
    • zmniejszyłem delikatnie marginesy dla akapitów
    • dodałem zawijanie bloków kodu po 450px wysokości na urządzeniach mobilnych
    • wiele mniejszych lub zapomnianych poprawek
  • zmiany w treści (lista niepełna):
    • poprawiłem kilkadziesiąt literówek i miejsc z błędnym formatowaniem tekstu
    • poprawiłem wiele niedziałąjacych i przestarzałych linków
    • zoptymalizowałem wagę niemal wszystkich obrazków wyświetlanych na stronie
    • połączyłem podobne tagi dla wpisów
    • portfolio
      • dodałem opis projektu Pastebin
      • dodałem opis projektu Blackout
      • zaktualizowałem opis projektu Codice (opis starej wersji został wydzielony do osobnej podstrony)
      • zaktualizowałem opis projektu dla sobak.pl (opis starych wersji, opartych o WordPressa został wydzielony do osobnej podstrony)
      • zaktualizowałem opis projektu WordPress Cleaner
    • wiele pomniejszych poprawek
  • stats.sobak.pl
    • dodałem podstawowe statystyki z GitHuba
    • kliknięcie w nazwę serwisu kieruje teraz bezpośrednio do mojego profilu

Daj Się Poznać 2017: wyjaśnienie

W związku z ostatnią ciszą na blogu, szczególnie w kontekście zapowiadanego udziału w konkursie DSP 2017, czuję się zobowiązany do przedstawienia małych wyjaśnień. Choć blog wskazuje dosyć jasno, że mój udział w zabawie nie dobiegł do szczęśliwego końca, chciałem o tym z tego miejsca poinformować oficjalnie. Niestety - sprawy prywatne, a przede wszystkim nieszczególnie rozsądna organizacja czasu, nie pozwoliły mi na dokończenie wymaganej ilości wpisów i tym samym zrealizowania moich (początkowo całkiem ambitnych planów).

Zawiedzonych przepraszam, trzymającym kciuki dziękuję, a niepocieszonych pocieszam: brak udziału w konkursie Maćka Aniserowicza absolutnie nie oznacza końca aktywności na blogu. Mimo, że sam nie jestem zadowolony z tego potknięcia, wiem że niekiedy się one zdarzają i zazwyczaj nie przekreślają dalszych przedsięwzięć. Po udziale w DSP pozostało wszkaże sporo dobrej energii, parę niezłych szkiców, a nade wszystko lista pomysłów na wpisy, która w dalszym ciągu będzie sukcesywnie aktualizowana.

Do przeczytania wkrótce!

"Daj Się Poznać"? Czemu nie?

W ostatnich dniach dwójka znajomych, Comandeer i Soanvig, namówiła mnie do czegoś, od czego uparcie stroniłem przez ostatnie lata. Być może nie brzmi to zbyt przełomowo, ale postanowiłem wziąć udział w konkursie programistycznym.

"Daj Się Poznać" to konkurs organizowany przez Macieja Aniserowicza z blogu devstyle.pl. Popularny, a przy tym bardzo prosty w założeniach - przez 10 tygodni rozwijamy projekt i piszemy o nim na blogu. Na tyle proste, konkretne i sensowne, że przekonało mnie do małego otwarcia się na świat. Dlaczego?

Uwaga. Ostrzegam uczciwie, że co bardziej wyczuleni mogą zwęszyć znamiona wpisu sponsorowanego. Nieszczególnie mi to przeszkadza, bo przeświadczonych o tym fakcie i tak już pewnie nie przekonam. Mogę tylko poinformować że z typowego wpisu sponsorowanego brakuje elementu sponsorstwa. Jest natomiast sporo zadowolenia, z tego jak organizator podszedł do pewnych kwestii.

Po pierwsze, duża dowolność. Brak narzuconej tematyki oraz technologii. Co jeszcze fajniejsze, w konkursie mogą brać udział projekty rozwijane już wcześniej, nie muszą powstawać od początku na jego potrzeby. Nie mamy tu więc do czynienia z żadnym hackathonem, gdzie głównym elementem jest wyścig z czasem, a zwyczajnym konkursem na projekty programistyczne. Widać skupienie się na samym programowaniu (i pisaniu o tym), co mi osobiście bardzo odpowiada.

Kolejna rzecz, nie mam pewności czy zamierzona, ale bardzo udana w efektach. Ze względu na swoje założenia, konkurs jest atrakcyjny także dla tych, którzy nie osiągną w nim wysokich miejsc. Ja sam podchodzę do tego bardziej jak do zewnętrznego motywatora z nutką dobrej zabawy. Może nie wypada pisać takich rzeczy na samym początku, ale prawdę mówiąc nie liczę na zdobycie którejś z nagród. Widząc na liście nazwiska moich starszych (przynajmniej doświadczeniem) kolegów, czy osób takich jak Piotr Nalepa (którego przerobiony skrypt dumnie nazywałem lata temu swoim pierwszym "projektem w PHP") nie łudzę się odniesieniem sukcesu. I szczerze? Absolutnie mi to nie przeszkadza! Rzucenie wyzwania swojej prokrastynacji jest dla mnie wystarczająco atrakcyjnym celem.

Trzecia rzecz, na którą zwróciłem uwagę to regulamin. Moją uwagę opis konkursu przykuł bardzo szybko, do ostatniej chwili odkładałem jednak zajrzenie na podstronę z zasadami. Byłem mentalnie przygotowany na zderzenie z długą listą reguł, wymogów i analizowanie czy na pewno spełnię wszystkie z nich i czy gdzieś nie czyhają kruczki, którymi wolałbym się nie wiązać. Nie ma co się rozwodzić, zainteresowanych odsyłam tutaj. Krótko i na temat!

Tyle słowem wstępu. Przedstawienie projektu, którym będę zajmował się do 31 maja, już jutro.

Liczby nie kłamią

Od samego początku miałem założenie, że strona sobak.pl ma być moją wizytówką w sieci - całkiem logiczne i szczwane, nieprawdaż? ;) Aby jednak tak się stało, przydało by się prezentowała ona trochę danych o mojej osobie i była punktem wyjścia do dalszej eksploracji. Dlatego w dniu wczorajszym do Sobakowego Bloga dołączyła strona stats.sobak.pl. Jest to agregator kilku mniej lub bardziej interesujących statystyk związanych z moją działalnością w sieci. W chwili pisania tego skryptu pobiera i prezentuje w jednolity sposób dane pochodzące z tego bloga, a także serwisów Forumweb.pl, Wikipedia, PHP.net i Twitter.

Skrypt ma budowę modułową, aby w przyszłości łatwo móc rozszerzać go o integrację z większą ilością witryn. Cały kod źródłowy jest dostępny publicznie na Githubie. Sugestie poprawek lub pull requesty są mile widziane.

Co do samej treści serwisu - statystyki może niezbyt piękne, w paru miejscach wręcz żenujące (ah, ta aktywność na Twitterze), jednak jednemu zaprzeczyć się nie da… liczby nie kłamią ;)

Wpis w portfolio dla tego projektu znajduje się w tym miejscu.

Sobak's Blog 2014

Drodzy czytelnicy!

Witam Was serdecznie w roku 2014. To pierwszy wpis, ale jak widzą moi stali odwiedzający, nie tylko to się zmieniło. Po ponad 4 latach praktycznie niezmiennego wyglądu bloga doczekał się on porządnej renowacji. Co ciekawe, po ponad roku niezliczonych podejść do "super-nowej-strony", zmianach planów i akcji nudnej jak w operze mydlanej, całą przebudowę zrealizowałem w ciągu jednego dnia. Z drugiej strony zajęło mi to 18 godzin praktycznie ciągłej pracy.

Rzeczy, które zmieniłem jest tak wiele, że nawet nie będę starał się wymienić wszystkich. Na pierwszy rzut oka widać, że zmienił się wygląd strony. Jest to motyw Sorbet od firmy Automattic i mam nadzieję, że przystaje on bardziej do roku 2014 niż dobry, ale wysłużony Mystique. Motyw przerabiałem i tłumaczyłem samodzielnie, dlatego proszę o wybaczenie ewentualnych usterek i zgłoszenie ich do mnie, będę poprawiać.

Dodany został dział portfolio, który odświeża poprzednio znane projekty. Skrypty o zerowym poziomie zostały wyrzucone raz na zawsze, a te, które nadal planuję rozwijać zostały zmigrowane na GitHuba. Wtyczka do portfolio również została spolonizowana przeze mnie, poprawiłem również generowany kod HTML i dostosowałem ją do reszty bloga (m.in. walcząc z przyjaznymi adresami URL).

Jak widać został dodany widget do Twittera (tak, jego też tłumaczyłem). Zdecydowałem się mocno postawić na tę społecznościówkę, gdyż od pewnego czasu szukałem metody tworzenia krótkich wiadomości na blogu, czego oznaką były między innymi wpisy tagowane jako "mini". Dzięki Twitterowi będę mógł wrzucać mniej istotne informacje na bieżąco bez obawy o zapchanie Wam czytników RSS. Jeżeli ktoś z Was używa Twittera, to zapraszam do śledzenia mnie. Poruszane' tematy będą w większości pokrywać się z tym, o czym pisuję na blogu. Można również polubić nowopowstały fanpage na Facebooku. Wszystkie odnośniki do społecznościówek można znaleźć po kliknięciu na zieloną ikonę z sercem na górze strony.

Ponownie namieszałem też z adresami URL, mam nadzieję, że teraz zostawię je w spokoju na długo, bo solidnie to przemyślałem. Według mojej wiedzy 100% poprzednich adresów posiada stosowne przekierowania, tak więc żaden link nie powinien ucierpieć, ale wiadomo, jak to wygląda w praktyce, tak więc jeżeli coś nie działa, bardzo proszę o kontakt.

Mam nadzieję, że wprowadzone zmiany przypadną Wam do gustu i spowodują, że będziecie odwiedzać moją stronę z przyjemnością. Planuję teraz zdecydowanie bardziej skupić się na treści i nie kombinować co miesiąc z technicznymi poprawkami na blogu. Content is a king, jak mawiali średniowieczni SEO-wcy. Niezależnie od tego czy chcecie wyrazić swoje zadowolenie, czy wygłosić krytykę, bardzo proszę o komentowanie. Wszelki feedback pozwala mi zorientować się w kierunku oczekiwanych zmian i daje motywację do pracy :)

[Mini] Kolejna reorganizacja na blogu

Będzie tym razem krótko, bo i tak już połowa tego bloga to pisanie o nim samym (metablogowanie?). Sprawa pierwsza: kategorie "Komputery" i "Internet" zostały zamienione na jedną kategorię o nazwie "Technologia", bo moim zdaniem poprzedni podział był sztuczny i niewygodny dla mnie. Oczywiście nadal zostają kategorie takie jak PHP/SQL/HTML&CSS - kategoria "Technologia" to po prostu miejsce na inne techniczne rzeczy.

Sprawa druga: w związku z małą ilością treści na blogu, zmieniam troszkę podejście. Będzie pojawiać się więcej wpisów krótkich, dotyczących prostych porad lub pojedynczych wizji w mojej chorej głowie. Będą one poprzedzone prefixem [Mini] tak jak ten.

Pozdrawiam.

It's alive!

Tak tak, nadal żyję, choć patrząc na to jak długo się tutaj nic nie działo, można było pomyśleć inaczej. Niestety, tak łatwo się świat Sobaka nie pozbędzie, więc po prawie czterech miesiącach (sic!) bez wpisu, czas na mały-wielki powrót. Zdaję sobie sprawę, że pewnie część z Was wyrzuciła mnie już z czytników RSS (o ile kiedyś w jakimś byłem :D), ale mam nadzieję, że mimo tego wszystkiego ktoś będzie chciał czytać moje wypociny.

Jak widać, każdemu, nawet mi, może znudzić się nic nie robienie. W związku z tym doszedłem do wniosku, że czas trochę odkurzyć na moim blogu. Standardowo, przy takim „powrocie” (wolę nie liczyć ile ich już było) poprawiłem kilka zalegających rzeczy.

Zabrałem się za poprawienie różnych rzeczy powiązanych z theme strony. Zależało mi głównie na poprawie generowanego kodu HTML i to się częściowo udało. Nie jest jeszcze dobrze, bo pewne rzeczy są trudne w modyfikacji ze względu na to jak generuje je WordPress, na kilka innych nie miałem pomysłu lub wiedzy jak je rozwiązać (bardzo możliwe, że dało by się to zrobić optymalniej i np. pozbyć się jeszcze kilku divów). Mimo wszystko udało się pozbyć naprawdę sporej części zbędnego kodu HTML i CSS (rozmiar tego [wliczając minifikację] zmniejszył się o połowę) oraz poprawić semantykę. Użycie HTML5 zostało rozszerzone poza samo doctype, które było w theme od początku (między innymi poprzez użycie atrybutu placeholder zamiast JS-owych zamienników).

Przy okazji poprawiania wyżej wspomnianych rzeczy okazało się jednak, że kod PHP szablonu dał mi okazję do poprawienia wielu rzeczy. Theme Mystique został oparty na frameworku przeznaczonym do tworzenia właśnie szablonów pod WordPressa - Atom. Jedną rzecz mogę o tym skrypcie powiedzieć na pewno - niesamowita kobyła. Okazało się, że sama konstrukcja wspomnianego frameworka miała duży wpływ na wydajność strony. Wystarczy chyba wspomnieć, że po w miarę drobnych modyfikacjach, w niektórych miejscach udało mi się zmniejszyć ilość zapytań SQL o 50%. Świadomie pozbyłem się bardzo wielu możliwości theme, z których nie planuję korzystać, tak aby poprawić katastrofalną (serio katastrofalną) wydajność mojej instalacji WordPressa.

Przy okazji pozbyłem się też nieużywanej już wtyczki do śledzenia błędów 404. Wtyczka nie widziała problemu w zostawieniu swoich tabel w bazie po odinstalowaniu. W jednej leżało 14 tysięcy rekordów, w drugiej 9 tysięcy – i kto to teraz posprząta? Doliczmy do tego 23 tysiące rekordów od kolejnej wtyczki, która zapomniała zabrać swoje zabawki z piaskownicy przy odinstalowywaniu i mamy już całkiem pokaźną (oczywiście jak na moją skalę) część bazy danych.

Może jest to mało zauważalne, ale istotnego odświeżenia doczekała się organizacja treści na blogu. Ponownie otagowałem i skategoryzowałem wszystkie wpisy. Kategorie nie powinny być już aż tak ogólne, z kolei ilość tagów została ograniczona ponad dwukrotnie, tak, aby faktycznie grupowały one podobne treści (zmiany widać zresztą nawet wizualnie na samej chmurze tagów).

W związku z przeprowadzonymi sporymi porządkami zwracam się z prośbą do czytelników mojego bloga (o ile jeszcze ktoś taki pozostał po tej czteromiesięcznej niezapowiedzianej przerwie). Jeżeli ktoś z Was widzi coś, co powinno zostać poprawione, to będę wdzięczny za zgłoszenie, czy to w komentarzu do tego wpisu, czy też przez kontakt. Starałem się poprawić to, o czym przypominaliście mi od dawna, ale mam świadomość, że mogłem o czymś zapomnieć.

Przepraszam za tak długą nieplanowaną przerwę i liczę na to, że ktoś jeszcze zamierza czytać przyszłe wpisy :)

Informacja - status projektów

W związku z kolejną długą przerwą od wpisów, myślę, że tym z Was, którzy czytują mnie jakoś w miarę regularnie (są tacy? :P) należy się kilka wyjaśnień. Przyczyn takiego stanu rzeczy jest kilka, jedną na pewno jest fakt, że ostatnio ciężej jest mi się zmotywować i opisać jakiś temat na blogu - tak zwana prokrastynacja. Ponadto od kilku tygodni pracuję z kolegą nad kolejnym projektem - mam nadzieję pochwalić się nim już niedługo.

Chciałem jednak jednoznacznie przedstawić, jak wygląda sprawa kilku moich wcześniejszych "projektów", ponieważ już kilka osób się mnie o to pytało.

Sobak's Blog
Blog jak najbardziej jest kontynuowany. Nie planuję go zamykać czy coś w tym stylu. Obecny deficyt nowych wpisów, mam nadzieję, będzie tymczasowy. Co więcej, z blogiem (a raczej ogólnie stroną) łącze pewne przyszłe plany, które siłą rzeczy wiążą się z kolejnym projektem…

IronCMS 2
Przestój prac rzeczywiście występuje, publiczne informacje o postępie zatrzymały się na drugiej becie. Mimo tego, jest on dla mnie ważnym projektem i cały czas planuję go dokończyć. Aktualnie po prostu wskoczył na drugie miejsce w kolejce - za projekt, o którym wspomniałem na początku notki.

BrzydkiKod
Planowałem większą rewolucję wraz z uruchomieniem nowej wersji strony, ale ostatnio natknąłem się na projekt nospora - pr0.nospor.pl, który całkowicie wyczerpuje formułę pomysłu, który zacząłem realizować. W związku z tym, myślę że nie ma obecnie szans na kontynuację tej inicjatywy - jeśli już, to po prostu podeślę ze zbiorów coś do "konkurencji".

XNova/Blackout
Ktoś to jeszcze pamięta? ;) Ja praktycznie zapomniałem, ale pewna osoba mi przypomniała, więc warto rzecz wyjaśnić. Sprawa obecnie wygląda tak: projekt tego typu może zostać zrealizowany, jednak nie będzie to na pewno przeróbka XNovy, tylko coś pisanego od zera (bardzo możliwe, że z wykorzystaniem części rozwiązań z dostępnych silników). Trzeba jednak pamiętać że to co mam w kolejce spokojnie wystarczy mi na długi czas.

Zakładka projekty
Projekty jako zbiór doczekały się już kilku przeprowadzek. Swego czasu istniał dla nich osobny skrypt, potem zostały zwykłymi podstronami w WordPressie. Na nowej stronie moduł projektów będzie integralną częścią systemu, jednak będzie cechował się specyficznymi możliwościami, innymi od zwykłych podstron i dostosowanymi do wymagań. Krótko mówiąc: staram się połączyć zalety obu rozwiązań.

Jeśli chodzi o zawartość zakładki to część ze skryptów zostanie zakończona na obecnym etapie. Inne natomiast (główne klasy PHP) będą stale aktualizowane, bo zdaję sobie sprawę, że kurz już na nich osiadł no i jakość kodu nie jest najlepsza, dużo się w nim od tamtego czasu pozmieniało.

Jeśli ktoś z Was chce, abym wyjaśnił jeszcze jakąś kwestię o której zapomniałem to piszcie w komentarzach :)

Brzydki kod efektem chwili

Być może część z Was zauważyła już, że w górnym (a w zasadzie aktualnie jedynym) menu strony pojawiła się nowa zakładka. Jej nazwa, to nic nikomu niemówiący BrzydkiKod. Cóż to znowu za poroniony pomysł zrodził się w Sobaczym umyśle?

Otóż, przeglądając ForumWeb natknąłem się na post osoby, która szukała pomocy z niedziałającym kodem. Sytuacja stara jak świat, kod też nie należy wcale do najgorszych jakie widziałem. Tym razem jednak wpadłem na pomysł. Postanowiłem zachować sobie ten kod na pamiątkę (na zasadzie: "Nie, Sobak, tak tego nie rób"). Jednak stwierdziłem, że skoro już i tak zachowuję kod na pamiątkę, to czemu nie podzielić się nią z innymi?

Właśnie w ten sposób powstała ta podstrona. Jako składnica kodów, które w jakiś sposób mnie zaintrygowały i w pewnym sensie nauczka dla potencjalnych następców. Zaznaczam też, że nie zamierzam tam publikować ocen większych skryptów, to ma być coś na wzór spinnetów… tylko, że zrobionych nie tak jak trzeba.

Jeszcze krótki disclaimer: strona nie powstała, aby ośmieszyć lub oczernić kogokolwiek. Bazuje ona na materiałach, do których uzyskałem legalny dostęp. Żeby nie było, że zamierzam się dowartościowywać czyimiś błędami, to na wspomnianej liście znajdą się także moje genialne wymysły ;)

Amen.

Walka z falą błędów 404

Witajcie,

jak może część z Was pamięta, przy ostatniej migracji zmieniłem lekko format linków prowadzących do wpisów. Uważałem, że pozbycie się ID notek z adresów będzie dobrym posunięciem, bo wtedy linki staną się zwyczajnie prostsze. Założenie dobre, a wyszło… jak zwykle ;)

Można mi się dziwić czemu nie zadbałem o przekierowania ze starych adresów na nowe - po prostu sądziłem, że Google znacznie szybciej zreindeksuje strony. Tak czy siak problem narastał, zainstalowałem wtyczkę 404 redirected by Weberz. Za jej pomocą ustawiłem kilkadziesiąt ręcznych przekierowań 301 na nowe adresy, sama wtyczka utworzyła ich ponad 800. Mimo wszystko Centrum dla Webmasterów od Google nadal informowało o rosnącej liczbie błędów 404 na mojej stronie. Czymś co najbardziej mnie martwiło, jest to, że liczba błędów 404 wykazywanych przez Google z każdym dniem rośnie (aktualnie koło 480).

W pewnym momencie nowe przekierowania dodawane w wyżej wspomnianej wtyczce po prostu przestały mi działać. Dlatego poszukałem innych rozwiązań - dodatkowo doinstalowałem  (starej nie usuwałem, ze względu na te ponad 800 już ustawionych redirectów)  wtyczkę Redirection.

W końcu stwierdziłem, że ręczne dodawanie kolejnych przekierowań mija się z celem i postanowiłem zautomatyzować proces. Napisałem na tą okoliczność mały skrypcik, który przedstawiam poniżej.

<?php
$mysqli = new mysqli('serwer', 'user', 'haselko', 'baza');

$result = $mysqli -> query("SELECT ID, post_name FROM wp_posts WHERE post_status = 'publish' AND post_type = 'post'");

$i = 1;
while ($row = $result -> fetch_array()) {
	$mysqli -> query("INSERT INTO wp_redirection_items SET url = '/".$row['ID']."/".$row['post_name']."/', action_data = '/".$row['post_name']."/', regex = 0, position = $i, group_id = 1, status = 'enabled', action_type = 'url', action_code = 301, match_type = 'url';");
	$mysqli -> query("INSERT INTO wp_redirection_items SET url = '/".$row['ID']."/".$row['post_name']."', action_data = '/".$row['post_name']."/', regex = 0, position = $i, group_id = 1, status = 'enabled', action_type = 'url', action_code = 301, match_type = 'url';");
	$mysqli -> query("INSERT INTO wp_redirection_items SET url = '/".$row['ID']."/', action_data = '/".$row['post_name']."/', regex = 0, position = $i, group_id = 1, status = 'enabled', action_type = 'url', action_code = 301, match_type = 'url';");
	$mysqli -> query("INSERT INTO wp_redirection_items SET url = '/".$row['ID']."', action_data = '/".$row['post_name']."/', regex = 0, position = $i, group_id = 1, status = 'enabled', action_type = 'url', action_code = 301, match_type = 'url';");
	++$i;
}

Skrypt dodaje rekordy do tabeli wyżej wspomnianego pluginu - we wszystkich formatach, w jakich mogą być spotykane w na moim blogu lub indeksach Google. W ten sposób z automatu dodałem 456 przekierowań (liczba wpisów * 4 możliwe warianty).

Mam nadzieję, że to rozwiąże problem i liczba stron z błędami 404 zacznie spadać. W najbliższym czasie podzielę się wynikami.

« 1 2 3 4 Następna »