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.

MobsControl - okiełznaj endermany, creepery i zombie w Minecraftcie

Dzisiaj chciałbym Wam zaprezentować kolejną moją "produkcję", która znalazła się na stronie w dziale portfolio.

MobsControl jest bardzo prostą wtyczką przeznaczoną dla serwera Bukkit, który umożliwia grę multiplayer w Minecrafta. Wtyczka blokuje kilka z zachowań mobów (potworów), są to:

  • Creepery eksplodują zadając normalne obrażenia, ale nie niszczą żadnych bloków. W ten sposób unikniesz strat na mapie w ich wyniku.
  • Endermany nie mogą podnosić żadnych bloków. Skutecznie blokuje dewastację mapy, endermany będą nadal występować i atakować gracza, po prostu nie będą nic podnosić.
  • Zombie nie mogą wyłamywać drzwi. Uwaga: zombie będą nadal podążać w kierunku drzwi i uderzać w nie. Plugin blokuje jedynie możliwość ich wyłamania. Wynika to z faktu, że w obecnej wersji API nie ma możliwości wyłączenia ataków na drzwi, wymaga to przekompilowania Bukkita.

Ostatnia wersja na jakiej testowałem wtyczkę, to Bukkit 1.2.5, jednak powinna spokojnie działać z nowszymi :) Wtyczki można bezproblemowo używać na serwerach Tekkit.

Więcej informacji i download wtyczki tutaj.

WordPress Cleaner - kilka słów o skrypcie

Na bloga powrócił skrypt WordPress Cleaner. Część z Was może go jeszcze pamiętać ze starej wersji bloga. Po ostatnich zmianach postanowiłem go nie wrzucać, do momentu napisania lepszej wersji. I oto jest!

Skrypt służy do usuwania rewizji wpisów z bazy danych WordPressa. Rewizje to kopie zapisywane automatycznie przez edytor wpisów, są tworzone co jakiś czas, głównie po to, aby nie utracić wpisu po nieoczekiwanym zamknięciu strony edycji (np. poprzez brak zasilania i wyłączenie komputera lub po prostu przypadkowe wyłączenie przeglądarki).

W nowszej wersji uprościłem skrypt (wydaje mi się, że tak bardzo jak to możliwe) i poprawiłem kilka rzeczy.

Więcej informacji tutaj.

Sobak.pl - nowy szablon

Jedną ze zmian dokonanych przy ostatniej migracji, którą z pewnością moi stali czytelnicy (kilku takich jest :P) zauważyli od razu, jest zmiana szablonu na na moim blogu. Nadal jest to Mystique, jednak wersja, z której korzystałem tak długo pochodziła sprzed ponad dwóch lat (pobierałem ją dziesiątego maja 2010, w momencie zakładania bloga). Teraz, po tak długim czasie zdecydowałem się jednak na pobranie najnowszej wersji. Nie było to łatwe, bo w mojej poprzedniej wersji wprowadziłem ogromną ilość modyfikacji.

Przy tej okazji udało mi się jednak przełamać i zachęcony nowym wyglądem (i częściowo nowymi możliwościami) postanowiłem dokonać aktualizacji i ponownie poprawić co nieco w szablonie. Największą robotą było przetłumaczenie całego szablonu na polski (jeśli gdzieś znaleźliście błędy w tłumaczeniu to proszę serdecznie o kontakt).

Poza tym (tak samo jak w poprzedniej wersji szablonu z której korzystałem) starałem się lekko poprawić wynikowy kod HTML. Niestety, Wordpress zbudowany jest w ten sposób, że pewne fragmenty kodu narzuca odgórnie, więc żeby je zmodyfikować musiałbym albo napisać własne wersje masy funkcji z Wordpressa albo modyfikować jego rdzeń, wykraczając z modyfikacjami poza pliki szablonu, co oznaczało by odcięcie się od aktualizacji oprogramowania, bo przy każdej z nich Wordpress nadpisywałby moje zmiany.

Jedną z wprowadzonych zmian jest przeniesienie favicon.ico z katalogu theme'u do głównego katalogu strony (root). Dlaczego? Część przeglądarek wczytując stronę za każdym razem robi dodatkowego requesta pod /favicon.ico w poszukiwaniu favicony. Dopiero gdy jej tam nie znajdzie, to podąża do lokalizacji podanej w znaczniku meta. Efekt jest prosty, mając favicon.ico w innej lokalizacji od części przeglądarek dostawałem o jedne request więcej przy każdym wywołaniu strony. Drobna poprawka, ale skoro coś może być lepsze tak małym nakładem czasu, do dlaczego tego nie zmienić?

Zrobiłem też trochę porządków w sekcji head dokumentu. Usunąłem linki do RSD, WLW, wersję Wordpressa (meta generator) i jeszcze kilka zbędnych rzeczy. Tutaj na szczęście Wordpress pozwala na modyfikację za pomocą systemu akcji (add_action(), remove_action()).

Chciałem też zmniejszyć ilość dołączanych plików CSS i JS, połączyć je w kilka więszych (bo strona generuje spore ilości requestów), ale żeby to osiągnąć musiałbym przerobić używane przez siebie pluginy oraz szablon, a nie mam ochoty tracić pracy przy każdej aktualizacji wtyczki lub co gorsza rezygnować z aktualizacji.

Tym razem zmian ściśle pod maską szablonu nie było wiele, w zasadzie tylko powyższe drobnostki i dopisanie jednego własnego widgetu.

Mam nadzieję, że szablon Wam się podoba, jeśli macie jakieś uwagi, komentujcie :)

Sobak.pl - kolejna przeprowadzka i duże zmiany

No cóż, nadszedł czas na kolejny taki wpis. Była już przeprowadzka z boo.pl na 1&1. Skorzystałem wtedy z oferowanego przez nich darmowego pakietu na dwa lata (jak się okazało pakiet faktycznie był darmowy, niepotrzebna była tak duża ilość krzyku…) Jednak mimo tego, że na jakość 1and1 naprawdę nie mogę narzekać, to ceny były jak dla mnie trochę za wysokie. Właśnie z tego powodu postanowiłem dokonać migracji strony na serwery linuxpl.com. Domena została przetransferowana do hekko.pl

Przebieg migracji
Standardowo, pobrałem wszystkie pliki i całą zawartość bazy danych z poprzedniego hostingu. Potem skorzystałem z okazji i zrobiłem w nich naprawdę duże porządki, ale o tym niżej ;) Jeśli chodzi o samą właściwą migrację, to wszystko poszło aż zaskakująco dobrze. Po wgraniu plików na nowy serwer zostało mi tylko pozmieniać pliki konfiguracyjne i zmienić dwie opcje w bazie danych Wordpressa - blog działał bez zarzutu :)

Porządki, porządki i jeszcze raz porządki…
Od poprzedniej akcji czyszczenia serwera minął już prawie rok. Jestem zdumiony jak dużo śmieci udało mi się nagromadzić od tamtego czasu, mimo tego, że nie zostawiałem każdego wrzuconego na serwer pliku…

Z najciekawszych rzeczy trzeba wspomnieć, że w momencie kiedy przenosiłem się z boo.pl na 1&1, to działała jeszcze moja stara strona domowa - napisana bez użycia żadnego CMS-a, po prostu zlepek mojego PHP i HTML z kilkoma darmowymi skryptami i pomocą kolegów :) Niedługo po przenosinach do 1&1 postanowiłem skończyć działalność tamtej strony i zastąpić ją blogiem. Jak się okazało, w swojej genialności zostawiłem wszystkie pliki tej strony. Jedyny, którego brakowało na FTP to index.php, podmieniłem go na tego z Wordpressa. Tak czy siak - jeden konkretny śmieć wyleciał z serwera. W Google do dziś bez problemu można znaleźć linki do tamtych podstron mimo, że nie były aktualizowane i używane od prawie dwóch lat.

Krótkie podsumowanie innych rzeczy jakie wyleciały z FTP: jedna z nieskończonych gier mojego projektu i związane z nią forum (skrypt Simple Machines Forum), inne prywatne forum (MyBB), ale przede wszystkim niezliczona ilość wszelakich śmieci - łącznie z FTP ubyło ponad 80MB plików, pozostało poniżej 50MB. Jeśli chodzi o ilości, to z ponad 5.200 plików zrobiło się około 1600.

Porządki w bazie danych
Przed migracją w bazie danych znajdowało się 169 tabel, a jej eksport z phpMyAdmina do formatu SQL zajmował 3,6MB. Po dokładnej analizie i podjęciu kilku decyzji ilość tabel w bazie zmniejszyła się do 13… Rozmiar eksportu natomiast wynosi około 2MB (mniejsza różnica w rozmiarze niż w ilości tabel wynika oczywiście z tego, że większość bazy zajmują tabele związane z tym blogiem). Porządki w bazie danych mogę uznać za bardzo udane, zostawiłem tylko to co niezbędne :)

Zmiana szablonu
Zmianą, która z pewnością będzie zauważana na pierwszy rzut oka jest zmiana szablonu na na moim blogu. Nadal jest to Mystique, jednak wersja, z której korzystałem tak długo pochodziła sprzed ponad dwóch lat (pobierałem ją dziesiątego maja 2010, w momencie zakładania bloga). Teraz, po tak długim czasie zdecydowałem się jednak na pobranie najnowszej wersji. Nie było to łatwe, bo w mojej poprzedniej wersji wprowadziłem ogromną ilość modyfikacji. Jako, że zmiana szablonu pociąga za sobą szereg mniejszych zmian, zapraszam do osobnego wpisu opisującego tę kwestię.

Zmiany na blogu czas zacząć
Migracja na inny hosting była idealną okazją do "podłubania" przy blogu i ogólnie całej stronie. Najpierw na spokojnie zajmowałem się stroną na subdomenie otrzymanej od linuxpl, dopiero po zakończeniu prac podpiąłem stronę pod domenę sobak.pl

Jedną z wielu zmian wykonanych na blogu jest wykonanie aktualizacji zarówno samego Wordpressa jak i używanych wtyczek. Być może zastanawiacie się: co takiego strasznego jest w aktualizacji WP?  No cóż, w teorii nic, a w praktyce miałem już kilka niespodzianek.

Kolejnym posunięciem było usunięcie wszelkiej integracji bloga z Twitterem. Samo konto w serwisie także skasowałem. Nie miałem ochoty na zajmowanie się nim (co doskonale widać było po ilości popełnionych na nim notek - ostatnia była z grudnia 2011 roku… Spójrzmy na to pozytywnie - zawsze to jeden request mniej :)

Być może pamiętacie domenę cms.sobak.pl przeznaczoną na rzeczy związane z IronCMS-em. Ona także zniknęła, linki prowadzące do downloadu skryptu zostały zaktualizowane.

Na blogu został także zmieniony sposób linkowania do wpisów -  z URL-i zniknęły ID. Ponadto w wyniku ogólnych porządków, wiele dotychczasowych adresów mogło się zmienić lub przestać istnieć. Starałem się posprzątać po tym wszystkim, jednak nie mogę być pewien że niczego nie przeoczyłem, dlatego jeśli jakiś link nie działa, będę wdzięczny za zgłoszenie.

Kolejną zmianą wprowadzoną na blogu jest możliwość subskrypcji komentarzy do dowolnego wpisu poprzez email (i RSS).

Przeniesienie projektów na bloga
No cóż, zdaję sobie sprawę, że część z Was pamięta pewnie jeszcze jak hucznie zapowiadałem nowe DevCenter. Okazało się że funkcjonowało troszkę ponad rok. Po tym czasie postanowiłem powrócić do koncepcji trzymania projektów przez Wordpressa. Dlaczego? Otóż uważam że zarządzanie jak największą ilością elementów z jednego miejsca jest po prostu wygodniejsze. Do tego dochodzą takie drobne umilacze jak np. wtyczka Akismet do Wordpressa, która bardzo skutecznie chroni przed spamem. Dopiero przy powiadomieniach mailowych dotyczących każdego komentarza w DevCenter zdałem sobie sprawę jak wiele spamu zalewa moją stronę (liczniki Akismeta nie pokazują tego tak dobitnie).

W najbliższym czasie zawartość zakładki projekty zostanie zaktualizowana o nowe pozycje jak i uaktualnienia istniejących skryptów, poinformuję o tym osobnym wpisem.

Aktualizacja części treści na blogu
Małych aktualizacji doczekały się podstrony Informacje i Kontakt. Na pierwszej dodałem trochę więcej informacji o samym sobie, a także krótko opisałem wszystkie poprzednie wersje mojej strony. Odnośnie kontaktu - muszę przyznać, że od długiego czasu, na wskutek błędnego działania przekierowywania maili na 1&1, na moją skrzynkę nie trafiały żadne emaile wysłane na adres podany do kontaktu. Niestety to prawda, przepraszam za utrudnienia i informuję, że teraz wszystko działa poprawnie, a kontakt jest teraz obsługiwany przez wygodny formularz.

Subkiektywne porównanie hostingów
Przy okazji nowego hostingu nie mogło zabraknąć kilku opinii o obu z nich. Zacznijmy od 1&1. Świadczyli naprawdę dobrą jakość usług. Miły, szybko reagujący support (także telefoniczny), to trzeba im przyznać. Możliwości w darmowym pakiecie na 2 lata też były ładne :) Między innymi takie rzeczy jak 1GB pojemności (z darmową możliwością rozszerzenia do 10GB - nie skorzystałem), nielimitowany transfer, 1000 subdomen, możliwość uruchamiania skryptów Perl i Python, umieszczania własnych plików php.ini - naprawdę przyjemnie.

Jeśli chodzi o LinuxPL, to jakby nie patrzeć, jestem tutaj dopiero trzeci dzień. Możliwości uzyskania wsparcia wydają się naprawdę szerokie: email, numery GG do 13 administratorów (plus pokazywanie ich statusu), pomoc telefoniczna, helpdesk, forum. Na temat tego jak support wygląda w praktyce słyszałem najróżniejsze opinie: od tego że reagują bardzo szybko, do tego, że olewają klienta. Mam nadzieję, że potrzebę przekonania się o tym będę miał jak najpóźniej.

Na nowym hostingu pozytywnie zaskoczyły mnie udostępnione panele. Dosyć wygodny Direct Admin, ich własny Panel Klienta i nowy phpMyAdmin. Akurat jeśli chodzi o panele, to mogę się z czystym sumieniem przyczepić do 1and1. Nie spotkałem jeszcze skryptu z którego korzystają - bardzo możliwe, że to jakieś autorskie rozwiązanie. Totalnie przepakowany JavaScriptem i to do zadań do których nie widziałem potrzeby jego użycia. Ilość JS potrafiła spowodować naprawdę niezłe przycięcie się starszych wersji Opery (fakt, że ta nigdy najlepiej sobie nie radziła z JavaScriptem ;)). Było też kilka denerwujących szczegółów jak np. to że z listy baz danych/kont ftp nie mogłem skopiować żadnych danych (nazwy użytkownika itd), musiałem wejść w edycję poszczególnych elementów, aby móc użyć ctrl+c.

Znacznie wygodniejsze są też nazwy użytkowników FTP, MySQL i baz danych. W 1&1 były to losowo (kolejno?) przydzielane ciągi cyfr w stylu u54543545 czy db34543534. Na LinuxPL bazy i użytkowników tworzy się na zasadzie nazwakonta_nazwabazy/nazwausera czyli w moim przypadku sobak_nazwabazy.

Jednym z parametrów, który był lepszy w promocji na 1&1 był transfer. Tam był nielimitowany, tutaj 20GB/m-c plus 3zł za każdy przekroczony gigabajt. Jednak w moim przypadku będzie on starczał jeszcze na długo, przez dwa lata na 1&1 nie miałem miesiąca, w którym wykorzystałbym więcej niż 2GB transferu.

Kolejna rzecz za którą muszę pochwalić LinuxPL to ilość dostępnych wersji PHP: od 4.4,9 do 5.4.4. Chciałem przeskoczyć na najnowszą wersję, jednak okazało się, że Wordpress nie działa na niej poprawnie (nie widzi z jakiegoś powodu pliku konfigracyjnego), tak więc poprzestałem na wersji 5.3.x

Kończymy I to już chyba będzie na tyle. Wynikiem ponad 1300 słów uzyskujemy najdłuższy do tej pory wpis na moim blogu :) Mam nadzieję, że choć część z Was przeczytała go do końca bez zaśnięcia. Starałem się aby podczas opisywanych zmian poprawić wszelkie zauważone błędy jak i unikać nowych, jednak ze względu na ilość rzeczy jaką zmieniałem, błędy mogą wystąpić. Będę bardzo wdzięczny za ich zgłaszanie w komentarzach do tego wpisu lub poprzez kontakt.

Dziękuję za uwagę.

[SQL] Wordpress - statystyka komentarzy, najczęściej komentujący

Wpis opisuje akcję dosłownie sprzed chwili. Napisał do mnie m4tx z prośbą o napisanie zapytania SQL, które pobierało by komentarze z Wordpressa, każdemu użytkownikowi przypisując ilość napisanych przez niego komentarzy. Jestem zdziwiony, gdyż udało mi się to zrobić za pierwszym razem (potem musiałem jedynie dodać DISTINCT-a, o którym zapomniałem).

Jak pewnie wie, każdy kto programuje, w tej dziedzinie mało co wychodzi za pierwszym razem :D Tak czy siak postanowiłem podzielić się swoim dziełem:

SELECT DISTINCT comment_author AS author, (SELECT COUNT(comment_ID) FROM wp_comments WHERE comment_author = author) AS amount FROM wp_comments WHERE comment_approved = 1 ORDER BY amount DESC

Takie oto zagnieżdżone zapytanie doskonale rozwiązuje nasz problem :) Poniżej demonstruję wynik działania zapytania na danych z mojego bloga (to nie jest pełny wynik rzecz jasna :) nie ma sensu wkładać do screena całych danych)

Wynik zapytania

Minecraft TechnicPack (i API)

W dzisiejszym wpisie chciałbym opisać swoje wrażenia i przemyślenia na temat TechnicPacka, czyli zbioru modyfikacji do gry Minecraft. Zacznijmy od tego, czym dokładnie jest ten cały TechnicPack: otóż jest to program który za pomocą swojego launchera potrafi w banalny sposób zainstalować nam Minecrafta z ogromną ilością powiązanych tematycznie modyfikacji.

Po pobraniu TechnicLaunchera na swój komputer (o dziwo nie działa mi wersja *.exe na Windowsa, więc korzystam z wersji *.jar na wszystkie systemy) możemy zainstalować jedną z pięciu paczek modyfikacji:

  • Technic – na tej paczce skupię się w tym wpisie
  • Tekkit – wersja multiplayer dla Technica (nazwa nawiązuje rzecz jasna do „Technicznego Bukkita”)
  • YogBox
  • VoxelModPack
  • Hack Slash Mine

Instalacja moda jest prosta aż do bólu. Po prostu wybieramy jednego z nich, wpisujemy dane swojego konta Minecraft i klikamy przycisk „Login”. W tym momencie rozpocznie się pobieranie wszystkich modyfikacji potrzebnych do skompletowania danej paczki. W przypadku Technica jest to około 100MB, więc sami musicie ocenić, ile zajmie to waszemu połączeniu internetowemu.

Przed rozpoczęciem opisywania samego Tekkita chcę zwrócić uwagę na dwie rzeczy: po pierwsze, TechnicLauncher wymaga podania danych do konta Minecraft, więc jest tylko dla Premium. Oczywiście w Internecie są jego scrackowane kopie :P

Po drugie: dowolne zainstalowane modpacki z TechnicPacka są niezależne od siebie samych jak i od zwykłego Minecrafta. Każdy z nich ma własny folder a więc i foldery takie jak saves, texturepacks, bin itd.

Jak już powiedziałem ja skupię się na krótkim opisaniu Technica. Jest to bardzo rozbudowana paczka modyfikacji, tak więc podstawą było znalezienie sobie jakiegoś źródła informacji. Oczywiście masa jest wszelakich poradników na YouTubie. Jednak, jako że preferuję tekst, bo mam dosyć wolne łącze i po prostu szybko czytam, to chciałem sobie znaleźć coś pisanego. Mogę polecić TechnicPack Wiki, która zawiera sporo rozbudowanych artykułów w języku angielskim.

Po zainstalowaniu Technica i zalogowaniu się, ukaże się niezmienione, znane wszystkim menu główne Minecrafta. Zdziwić może jeden fakt, Technic jest oparty na Minecrafcie 1.1 (podczas pisania tego artykułu najnowszą wersją stabilną jest 1.2.5).

Ja z powodu chęci przyspieszenia gry usunąłem mody Milenaire i Not Enough Items (jakby ktoś nie wiedział – coś podobnego do TooManyItems –mod do cheatowania). Ustawiłem także grafikę na tryb fast i render distance na normal (nie wiedzieć czemu domyślnie był ustawiony na far, mimo tego, że nawet nie mam 64-bitowej Javy). Po tych zabiegach gra zabiera mi około 1.2GB RAM-u (tak tak, witamy w świecie zasobożernych modyfikacji ;)), a ilość FPS-ów wystarcza do wygodnej gry.

Pierwsze kroki z Techniciem zapewne będą dla Was trudne. Z pozoru normalny Minecraft, jednak co chwilę możemy natknąć się na masę materiałów niewiadomego zastosowania, takich jak miedź, srebro, szafiry, rubiny, cynk itd. Tutaj z pomocą przychodzi zalinkowana powyżej wiki.

Na Technica składa się ponad 30 modyfikacji jednak dosyć łatwo można wyodrębnić te, które najbardziej zmieniają rozgrywkę:

  • Industrial Craft – kolosalna modyfikacja. Umożliwia tworzenie rozmaitych maszyn, generatorów, dzięki niej możemy nawet zbudować reaktor jądrowy (nie radzę stawiać zbyt blisko domu, jeśli nie chcecie mieć krateru przez niedopatrzenie :P). Zbudowanie niektórych maszyn wymaga tak dużo zasobów i przetwarzania ich w różnych innych maszynach, że nie zdziwcie się jeśli do uzyskania jednego bloku będziecie potrzebować i 10 minut (zwłaszcza jeśli w międzyczasie będziecie musieli dobierać surowce, bo łatwo o czymś zapomnieć).
  • Buildcraft– bardzo rozbudowana modyfikacja umożliwiająca m.in. tworzenie automatycznie pracujących kamieniołomów, automatycznych stołów craftingowych, dostarczająca ogromną ilość rozmaitych pomp, silników i rur – zastosowań jest masa – wystarczy poszukać dobrze w sieci.
  • RedPower – modyfikacja dla wszystkich „elektryków” redstone. Jednym może popsuć całą zabawę z niedogodnościami w Minecrafcie (na przykład przekazywanie sygnału do góry), innym może tylko zdjąć z głowy niepotrzebne utrudnienia i pozwolić zająć się faktycznym działaniem, gdyż pozwala m.in. na kładzenie kabli w pionie. Przy okazji warto też wspomnieć o innej modyfikacji zawartej w Technicu, czyli o Wireless Redstone. Nazwa chyba mówi wszystko, ale jeśli nie, to powiem tylko krótko że jest to bezprzewodowy redstone. Stawiamy nadajnik, stawiamy odbiornik i mamy z głowy ciągnięcie kabli przez niewygodne miejsca.
  • Equivalent Exchange – modyfikacja pozwalająca na wymianę jednych przedmiotów na inne (każdemu przedmiotowi jest przyznawana jakaś wartość i na tej zasadzie się to odbywa) oraz udostępniająca nam specjalną skrzynię "klonującą" itemy, która jest zasilana wyłącznie światłem. Oczywiście mod umożliwia o wiele więcej, jednak to są najważniejsze funkcje.
  • Mo' Creatures - masa nowych mobów - szczury, myszy, kozy, konie, ogry, wilki, wilkołaki, tygrysy, nowe szkielety, skorpiony itd itd. Jest tego pewnie z kilkadziesiąt sztuk.

Poza tym znajdziecie ogrom innych modyfikacji np. dodających różne nowe rodzaje broni – od noży, przez halabardy i młoty bojowe, aż po muszkiety z bagnetami i armaty.

Na mapie możemy odnaleźć wiele ruin czegoś w rodzaju świątyń (zasługa moda CARuins). Warto się rozejrzeć, bo prawie w każdej znajdziemy jakąś skrzynkę (i mob spawner :D)

Technic diametralnie odmienia rozgrywkę w Minecrafta i niektórym może być ciężko, zwłaszcza na początku, jednak uważam, że wszyscy, którzy lubią się bawić w różne automatyzacje czynności albo po prostu mają dosyć zwykłego Minecrafta spędzą z tą modyfikacją trochę czasu.

Wiążę też lekkie nadzieje w związku z zapowiadanym na wersję 1.3 API dla modyfikacji. Fakt, że jak na razie mamy już chyba 12 snapshotów i po API ani śladu, ale zakładam optymistycznie, że po prostu się nim nie chwalą. Jestem bardzo ciekaw zmian w wydajności, rozmiarze i szybkości przygotowywania Technica. W końcu to bardzo duża paczka modyfikacji i w takiej skali będzie łatwiej zauważyć zmiany.

Nie wiem czy ktoś z Was interesował się tym jak tworzy się modyfikacje dla klienta Minecrafta, więc krótko opiszę. Minecraft Coder Pack (polecany na forum MC) zawiera… dekompilator jego kodu źródłowego :D Tak więc instrukcja instalowania modyfikacji, to: otwórz minecraft.jar, usuń META-INF i podmień jakieś pliki *.class. No fajnie, przy jednym modzie proste aż do bólu, ale co jeśli kilka modów chce wprowadzić zmiany w tym samym pliku? Już mamy kiszkę.

Dlatego właśnie powstały tzw. mod loadery, np. ModLoader (bardzo oryginalna nazwa, nie ma co). Zapobiegają one występowaniu kolizji między modami i ułatwiają ich modyfikację (nie ruszamy minecraft.jar, po prostu w folderze MC pojawia się nam podfolder mods/, do którego wrzucamy modyfikacje w formacie *.jar). Już jest lepiej, prawda? Jednak tu pozostają dwie zasadnicze kwestie. Wydajność takiego rozwiązania i to, że takich modloaderów jest kilka (sam Tekkit zawiera trzy, bo różne mody zostały dostosowane do rożnych loaderów). Dlatego też z niecierpliwością czekam na oficjalne API modyfikacji dla Minecrafta. Czy wydadzą je w wersji 1.3? Mam nadzieję, że dowiemy się już niedługo :)

Kilka słów o dzisiejszych grach komputerowych

Czasem lubię pograć w jakieś stare gry, klasyki – na przykład Settlers II, Heroes III of Might and Magic, Gothic I i II itp. Jeśli chodzi o nowe gry, to gram w nie raczej niewiele. Obserwując z boku to, jak zmienia się rynek gier i jak wyglądają dzisiejsze produkcje muszę przyznać, że zmiany przyjmują kierunek coraz bardziej niekorzystny dla gracza.

Pierwszą sprawą na którą chcę zwrócić uwagę są wszechobecne zabezpieczenia antypirackie. Połowę instalacji stanową bzdurne kody zabezpieczeń, klucze seryjne, aktywacja przez Internet itd. Miałem kiedyś taką sytuację, że nie mogłem uruchomić gry – jak najbardziej oryginalnej. Po bardzo długich próbach z mojej strony pomógł mi kolega, okazało się, że system zabezpieczeń stosowany przez grę doczekał się nowej wersji – o ile pamiętam to trzeba było podmienić jakiś DLL.

Drugim przykładem na to, jak przez zabezpieczenia antypirackie cierpią legalni gracze jest niedawna sytuacja firmy Ubisoft (dystrybutor m.in. wspomnianych Heroes III, zobaczcie ile się zmieniło przez te lata). Otóż firma ta przenosiła serwerownię (wraz z serwerami, które sprawdzały legalność), w związku z czym nabywcy ich gier przez około tydzień nie mieli możliwości grania. A piraci? A piraci grają :) I jak tu być dobrym?

Kolejny mój zarzut wobec dzisiejszych gier będzie powiązany z pierwszym. Posłużę się kolejnym porównaniem do Heroes III, korzystając z okazji, że obok mnie leży pudełko z oryginalnymi Heroes VI. Już na przodzie pudełka widnieje napis „Wymagane jest jednorazowe połączenie z Internetem celem uruchomienia gry”. Totalny bezsens – po co marnować łącze, po co marnować czas? Pomijam już oczywistą wadę, osoby pozbawione internetu nie zagrają nawet w single player…. Gdzie tu logika?

Trzecia sprawa – otwieramy wyżej wspomniane pudełko. Kiedyś ujrzałbym tam instrukcję - grubą bądź nie, ale zawierającą najważniejsze informacje, takie do jakich warto sięgnąć podczas gry. Co widzę teraz? Zobaczmy po kolei:

  1. Płyta, w zasadzie jedyny element w tym pudełku z listy oczekiwanych.
  2. Ulotka formatu A5, to samo w sześciu języków. Na samej górze rzuca się w oczy angielski nagłówek „Online manual”. Znajdziemy tam instrukcję otwarcia PDF-a z instrukcją, znajdującego się na płycie. Cięcia kosztów zabijają klimat, ponownie. Witamy w świecie konsumpcjonizmu i gównianej jakości :)
  3. Kolejna ulotka, tym razem od wydawcy gry – Ubisoft. Pozwolę sobie zacytować kilka zdań. „Zbieraj Punkty grając w gry firmy Ubisoft” – no dobra, to jeszcze można olać. „Odblokuj dodatkową zawartość gier”, „Pobierz zawartość dodatkową” – kolejny znak dzisiejszych gier, dodatkowa pobierana zawartość (downloadable content, DLC), rzecz jasna płatna i wymagająca internetu.
  4. Ulotka trzecia, komputer z procesorem Intela, dedykowany pod tę grę (sic!)
  5. I oto przed nami kolejna ulotka. Reklama dodatku „Might & Magic: Clash of Heroes”. Idealny przykład wyżej wspomnianego DLC.
  6. Reklama czegoś co się zowie „Ubicollectibles” – w skrócie, chodzi o to, że możemy sobie zamówić jakąś tam figurkę czegoś tam. Doprawdy pasjonujące…

I co? To cała zawartość pudełka. Zero przydatnych rzeczy. Ach nie, przepraszam! Ubisoft w cenie gry sprzedał nam parę gram opału. Doprawdy, nieoceniona pomoc!

Kolejny zarzut wobec dzisiejszych gier. To w zasadzie może być połączeniem obu powyższych spraw. Tym razem konkretnym przykładem będzie gra GTA IV. Więc tak: instaluję sobie tę genialną grę, 16GB. Zastanawiam się ile GB mógłbym zaoszczędzić nie dostając chociażby hiszpańskiej wersji językowej w pakiecie ;)

Odpalamy grę. Tutaj się zaczyna długa droga :) Najpierw jedno logo, potem odpala się aplikacja Rockstar Games Social Club, możemy się tam zalogować, ale mam to głęboko w dupie, zbywam pierwszy przeszkadzacz przyciskiem „Skip login”. Potem zaczyna się odpalać sama gra. Oczywiście, coprygihty muszą być. Gratis do nich dostajemy cudowną możliwość zalogowania się do Windows Live, który towarzyszy nam przez całą grę, możemy go wywołać klawiszem HOME. No tak, właśnie o tym marzyłem uruchamiając GTA… Potem już tylko przebrnąć przez logo Rockstar Games, Rockstar Games North i mamy ekran startowy gry. 2/3 tego ekranu stanowią informacje od wydawcy pobierane z internetu. Rozumiem potrzebę marketingu, ale to kolejny syf przedłużający oczekiwanie na grę. Mam ochotę nauczyć się assemblera i okroić tę aplikację…

Sprawa chyba ostatnia. Totalny przerost formy nad treścią. Cukierkowa grafika plus totalny brak gry walności, zero oryginalności – bardzo częsta przypadłość w tych czasach. Minecraft się broni :D Przez tą ilość wodotrysków i wyżej wspomnianych pierdół, gry są bardziej zasobożerne. Odnoszę wrażenie, że nikomu już nie chce się optymalizować aplikacji.

Nie oczekuję czegoś ogromnego od gier. Chcę odpalić grę i pograć… Chcę zapłacić za produkt, nie za stos spamu w pudełku. Chcę dostać jakiś poziom grywalności a nie tylko cudną grafikę. Czy to naprawdę tak duże wymagania?

A Wy co sądzicie o dzisiejszych grach? Mam rację, czy po prostu zatrzymałem się w rozwoju i jestem niedzisiejszy? :D

HTML fail TVN24

Dziś na szybko. Prosta pomyłka TVN24 uchwycona wczoraj rano. Wybaczcie genialną jakość zdjęcia, nie miałem żadnej możliwości, aby zrobić lepsze, byłem chwilę przed wyjściem z domu :P

Fail TVN24

Może jeszcze animacja przesuwania się paska jest zrobiona w marquee? :D

Test gimnazjalny - raport

Dziś bardzo ważny dzień dla wszystkich gimnazjastów gimnazjalistów - test gimnazjalny. Ich mała matura, ich wstęp do dorosłości… ok, wystarczy pierdzielenia :D Powiedzmy po prostu, że wieki nie pisałem na blogu nic o szkole i nagle poczułem wenę. To będzie krótkie (krótkie w założeniu - dop. po skończeniu pisania) sprawozdanie z tegorocznego egzaminu, przeplatane moim bezcelowym komentarzem. Zapraszam :)

Strach przed tym konkretnym egzaminem był bardzo duży. Wiadomo było, że szykuje się nowa formuła, a już zeszłoroczny test nie należał do najłatwiejszych. Dużo osób obstawiało dwie możliwości: albo tegoroczny test będzie łatwy, a dopiero późniejsze roczniki dostaną trudniejsze, albo my dostaniemy bardzo trudny test i gdy wyniki będą naprawdę słabe, to kolejny rocznik dostanie prostszy.

Jednak zaobserwowałem (nie tylko po sobie), że im bliżej testu (mowa o jakimś ostatnim tygodniu), tym mniejszy był stres. Ludzie, przynajmniej z mojego otoczenia, starali się podejść do niego w miarę na luzie, nie robić sobie zbędnego stresu. Czas przejść do konkretów, czyli opisu dnia dzisiejszego:

Mimo, że test miał się zacząć o godzinie dziewiątej, do szkoły mieliśmy przyjechać już o 8:15. Wiadomo, szkolna organizacja… Pół godziny na wpuszczenie 130 osób na salę, to raczej optymistyczny termin :D

Przyjechałem chwilę przed czasem. W zasadzie większość przyjechała przed czasem, po czasie byli nieliczni… między innymi nasza wychowawczyni, a wraz z nią klucz od sali :P

Do tego momentu miałem odebrane już kilka SMS-ów i jeden telefon z życzeniami powodzenia. Oczywiście nie wiadomo jak odpowiedzieć, nie? Wiadomo, nie dziękuje się, żeby nie zapeszyć. Tak więc wszystkie te życzenia kończyłem politycznie poprawnymi stwierdzeniami w stosunku do sił wyższych, takimi jak "przyda się" albo po prostu "tobie też". Mój tyłek został obdarowany około 5 kopniakami. Cel szczytny - pięcioro więcej szczęśliwych ludzi na tym padole. Po spędzeniu 15 minut w sali, podczas której ludzie pocieszali tudzież dołowali się nawzajem, przyszedł czas na wchodzenie na rzeź salę gimnastyczną.

Ustawiliśmy się w dłuuugą kolejkę - jak za PRL-u, tylko takiej radości z dostania się do końca nie było. Praktycznie nikt nie robił sobie nic z tego, że mieliśmy stać alfabetycznie. Znany wielu osobom Misiek vel. Łukasz K. jak go ostatnio nazwano, z wesołą miną stał na końcu kolejki, przez co skutecznie opóźnił wejście o kolejne minuty. Bóg chaosu został nasycony - sukces :)

Kolejnym elementem, który spowodował zamieszanie przy wchodzeniu było pojawienie się dwóch panów z kamerą. Nikt nie miał ochoty wcielić się w rolę szkolnego celebryty, tak więc panowie nie zostali przyjęci szczególnie ciepło. Kwintesencją naszego podejścia było świecenie kamerzyście laserem po oczach i okrzyk "Spierdzielać! Nie życzę sobie by mnie kamerować!". Wtedy poczułem się jak na pegieerze, a nie w gimnazjum. Takie ludowe klimaty ;)

W końcu, po jakichś dwudziestu minutach, wszyscy uczniowie znaleźli się na sali. Powiem szczerze, że takiego rozprężenia nie widziałem na żadnym z trzech testów próbnych: każdy znalazł sobie temat, byle jak najbardziej odległy od egzaminu. Panowie z telewizji wyłapywali kolejne ofiary, tym razem niezdolne do ucieczki bo uziemione przy stolikach. Zaczęły się m.in. rozważania z jakiej to telewizji mogli przyjść. Z najciekawszych typów warto wymienić: Al Jazeerę, Telewizję Szatana czy Russia Today.

W końcu dwaj uczniowie w asyście nauczyciela (nauczyciel w asyście dwóch uczniów?) przynieśli zaplombowane testy. Każdy otrzymał dwie naklejki z kodem i zaklejony test. Padło polecenie aby przed rozcięciem sklejeń na teście, zapoznać się z instrukcją. Szkoda tylko, że jej pierwszym punktem było sprawdzenie ilości stron w teście :D Ponadto zdarcie tych plomb bez nożyczek nie było łatwe, dopiero potem ktoś odważył się spróbować przerwać je jednym pociągnięciem i upewnić się, że nie rozedrze tym arkusza na pół.

Tutaj wszystko poszło dość sprawnie i już osiem minut po dziewiątej rozpoczęliśmy pisanie - godzina na WOS i Historię. Na szczęście ktoś na zewnątrz sali postanowił nam umilić pisanie testu starym klasykiem: Wilki - Bohema (szerzej znane jako "Lecę bo chcę") - bardzo fajnie z jego strony, tylko troszkę głośno jak na moment, w którym wymaga się pełnego skupienia.

Jeśli chodzi o materiał, to powiem, że okazał się łatwiejszy niż przypuszczałem. Najwidoczniej rząd postanowił pokazać, że ich reforma przyniosła efekty - "patrzcie! napisali test lepiej niż poprzedni rocznik, czyli nie spieprzyliśmy. Ave my!".

Można było wyjść wcześniej, ale czas na pisanie tej części testu skończył się o 10:08 (godzina zegarowa). Potem było przewidziane około 45 minut przerwy, tak aby o 10:45 rozdać arkusze z języka polskiego.

Jeśli chodzi o język polski, to było naprawdę wiele typów odnośnie tematu. Niektórzy przewidywali Szymborską, a przynajmniej fragmenty z Nią związane, jeśli komisja zdążyła przygotować zadania. Okazało się jednak, że motywem przewodnim uczyniono Zemstę Aleksandra Fredry. Nie pamiętam ile jeszcze było wierszy, ale jednym z nich (o ile nie jedynym) była któraś z bajek Krasickiego.

Zadania zamknięte z polskiego okazały się bardzo proste. Zajęły mi koło 12 minut, tak jak większości osób. W całym teście z polskiego było tylko jedno zadanie typowo gramatyczne - w wersie "Gniewał się wędrujący i przeklinał bogi" znaleźć podmiot (zadanie zamknięte), czyli materiał bodajże z czwartej klasy podstawówki, nie pamiętam dokładnie.

W całej części humanistycznej umieszczono jedynie dwa zadania otwarte: pytanie do fragmentu książki Jana Miodka (jego teksty bardzo często pojawiają się na testach, także próbnych) i dłuższą formę wypowiedzi, którą okazała się… rozprawka - a to zaskoczenie :D Byłbym naprawdę zdziwiony, gdybyśmy nie dostali rozprawki.

Temat rozprawki był raczej nieskomplikowany "Literatura pozwala lepiej poznać i zrozumieć minione wieki. Rozważ słuszność tego stwierdzenia w rozprawce. Zilustruj swoje argumenty przykładami literackimi".

Do końca egzaminów pozostały jednak jeszcze dwa dni - część matematyczno-przyrodnicza i język. Być może podzielę się jakimś krótkim (krótszym niż to) sprawozdaniem z kolejnych dni.

Gratuluję tym co dotrwali do końca, nieświadomie spłodziłem jeden z najdłuższych wpisów na swoim blogu.