3. 03.

Kto tak twierdzi? Sam Invision:

Hello,

We have looked over software and we can tell that this is not our software, it does look as if some parts may have been inspired by our software but, ultimately all the code looks original.

If you have any other questions, please ask. Have a great day!

Nakisha Thomas
Invision Power Services
Director of Customer Satisfaction


27. 02.

Jeśli kogoś interesuje, jak rok temu wyglądało Callisto, oto screen z 26 lutego 2008:

http://rpiton.com/_work/old/Callisto/dark.jpg

Dla zainteresowanych powiem że na dzień dzisiejszy uniBoard generuje to samo + listę for ;)


14. 01.

Witajcie!

Dziś ponownie o uniBoard. Tym razem napiszę o parserze wiadomości, którego używam w uniBoard. Ale na początek…

Czym jest parser wiadomości w skrypcie forum?

Jestem pewien że każdy z was używa w swoich postach bbtagów. Są to tagi, które przy wyświetleniu wiadomości zostają zamienione (przeparsowane) na kod html, np:

[b]The quick brown fox jumps over the lazy dog[/b]

Zostanie wyświetlone jako:

<b>The quick brown fox jumps over the lazy dog</b>

Tym właśnie zajmują się parsery. Obrabiają surowy tekst, zamieniając określone ciągi znaków na określony html.

Typy parserów

Parsery można podzielić na dwie główne grupy: te które zastąpują określonymi formułkami inne, oraz te, które analizują strukturę tekstu. Te pierwsze są proste w konstrukcji i działaniu. Podstawowy parser tego typu można upchać w jednej funkcji:

function parse( $text){

	//break lines
	$text = nl2br( $text);

	//parse
	$text = preg_replace("#\[b\](.*?)\[/b\]#si",'\\1', $text);
	$text = preg_replace("#\[i\](.*?)\[/i\]#si",'\\1', $text);
	$text = preg_replace("#\[u\](.*?)\[/u\]#si",'\\1', $text);
	$text = preg_replace("#\[url\](.*?)\[/url\]#si",'\\1', $text);

	//return ready text
	return $text;

}

Rozwiązanie to jest proste, ale ma parę wad. Pierwszą jest brak świadomości lokalizacji tekstu, co znaczy że parser nie ma pojęcia, gdzie aktualnie w tekstcie się znajduje. Drugą jest zerowy wpływ na samą zawartość tegoż. Parser nie analizuje tagów, tylko odrazu zamienia je na ich HTML. W przypadku prostych narzędzi formatowania tekstu, nie jest to problemem, jednak gdy trzeba np. przeparsować link, który zawiera inne tagi, parser ten uczyni go niedziałającym (co dzieje się swoją drogą w Callisto):

[url]http://link.pl/][/url]

Zostanie wielokrotnie przeparsowane:

<a href="http<img src="HTML EMOTKI" />/link.pl/">...

Tutaj swą siłę pokazuje inny typ parserów, który zamiast bezmózgiego przelecenia przez tekst, będzie analizował jego strukturę. Taki parser napisałem specjalnie dla uniBoard. Jego kod jest zbyt rozbudowany, aby tutaj go umieścić, dlatego ograniczę się do zasady działania, dla przykładowego postu:

[b]The quick brown fox jumps over the lazy dog[/b]

Oto, jak tekstem zajmie się uniBoard:

1. Rozpoznanie pierwszego tagu (”[b]“)
2. Dodanie “<br/>” od poprzedniej pozycji kursora do pozycji tagu.
3. Przesunięcie kursora do tagu.
4. Rozpoznanie tagu (czy jest to tag samodzielny, czy wymagający zamknięcia).
5. Dodanie tagu do stosu.
6. Przesunięcie kursora za tag.
7. Rozpoznanie tagu “[/b]“.
8. Kontrola poprzedniego tagu.
9. Kontrola blokady parsowania.
10. Odczytanie tekstu między tagami.
11. Umieszczenie tekstu w html tagu (”<b>{content}</b>”).
12. Zastąpienie znaków od początku pierwszego tagu do końca drugiego gotowym html.
13. Przesunięcie wskaznika do następnego tagu.
14. “Złamanie linii” od ostatniego tagu, do końca tekstu.

Ten parser sprawdza każdy tag indywidualnie. Dzięki temu można uniknąć wieloktrotnego parsowania tego samego tekstu, oraz dokładniej budować sam kod. Przykładem tego mogą być tagi img, które analizują rozmiar obrazka, i w razie potrzeby doklejają js, obsługujący powiększenie grafiki po kliknięciu na nią.


6. 12.

Tak, po długiej przerwie poświęciłem chwilkę i wydałem Callisto 1.1.5!

Ściągnąć ją można z tąd:
http://unisolutions.pl/index.php?act=topic&topic=297


8. 10.

Słyszeliscie może o “Rafale Ruli“? To nie jest ważne, bo być może za jakiś czas usłyszycie. Kim takim jest ten człowiek? Idac za jego blogiem, jest web-developerem, pracującym nad Write2R, “polską alternatywą dla komercyjnych skryptów forum”.

Brzmi znajomo?

To co powiecie na teksty w stylu:

Ale przed paroma tygodniami podjąłem decyzję o rozpoczęciu pisania podstaw dla następnej generacji skryptów mojego wykonania. W założeniu skrypt miał pierw napędzać Write2R 2.0, jednak parę dni temu uznałem, że zamiast ryzykować, wolę rozwinąć coś, co dysponuje dużo większym potencjałem i ma większe szanse na sukces. Mój wybór padł na Write2R.

Pare wpisow niżej znajdziecie identyczny tekst, tyle że o… uniBoard. Zbieg okoliczności? Załóżmy że mam porażenie mózgowe, i w to uwierzę, wiec jedźmy dalej:

Następczyni Write2R do dziś był tajnym projektem RARx2, lecz jest to tylko nazwa kodowa dla konkretnej linii. Od wersji 2.0, nazwenictwo tego skryptu zmieni się. Skrypty forum od Rula.pl będą miały jedną nazwę: 2rBoard.

I co teraz? Nawet ostatni idiota wie, że ten cytat to klasyczne kopiuj-wklej z mojego bloga, tyle że nazwy skryptów zostały pozmieniane.

Ale co ten gość ma z tym wspolnego?

Wyobraźcie sobie że ten “web-developer” poprostu wzioł mój skrypt, Callisto, pozmieniał w nim nazwisko “Pitoń” na “Rula”, wywalil wszystkie “by Unisolutions”, a żeby bajka sie kleiła, to przerobił też jego historię, na bajeczke o CMS jakimś-tam, poczym zmienił licencję na komercyjną i zaśpiewał… 300zł. Brawo, ale wiesz co? Ten skrypt jest już rozpoznawalny w necie. Nie jest to może rozpoznawalność na poziomie IP.B czy phpbb3, ale jest wystarczajaca, aby kilkadziesiat osob mogło z ciebie drzeć łacha przy każdej okazji, kiedy spróbujesz pochwalić się “swym dziełem”.

Podziwiam też twoją głupotę. Dlaczego? Naprawdę trzeba mieć 9-calowy gwóźdź w bity w skroń, aby aby być tak głupim, by skopiować słowo w słowo mój blog.

Następny kwiatek

Na wstępie chciałbym zaznaczyć, że jestem autorem skryptu Write2R, nikt mi nie pomagał i nie gadał mi że tutaj jest “a” zamiast “ą” co mi się bardzo spodobało, że nie nikt mi nie marudzi, a ja sam stworzyłem wszystko tak dokładnie że jeszcze trochę to się nie połapię w tym wszystkim (z uśmiechem).

Myślę że już się nie łapiesz. Trudno się czyta cudzy kod, no nie? (Zwłaszcza przy twoim poziomie znajomości php, który jest na poziomie poradników z webtips.pl).

Parę screenów

http://blog.rula.pl/wp-content/uploads/2008/09/screenshot006.jpg
http://blog.rula.pl/wp-content/uploads/2008/09/screenshot007.jpg
http://blog.rula.pl/wp-content/uploads/2008/09/write4r-nowe-forum.jpg
http://blog.rula.pl/wp-content/uploads/2008/09/screenshot012.jpg

Podziwiam też twój talent do wymyślania opisów i analiz wszystkich funkcji, oraz przedstawianie tego jako “twórczość własna”.

Pewnie padną pytania co to jest GraphicsDraw to też miałbym od razu odpowiedź że jest to pewna fajna biblioteka, zaś użycie jej ma dwa powody: ułatwienie jak i pewna pozycja projektu pod względem CorelDraw.

Niestety tego nie wiesz, wiec ci wyjaśnie: GraphicsDraw z Corelem łączy wyraz “Draw” w nazwie, oraz fakt że i to, i to obrabia grafikę, tyle że inaczej. Niestety nigdzie na blogu jeszcze nie pisałem, że planowałem użyć ImageMagick, ale ma ją mniej servow, wiec twoja bajeczka straciła ciekawy “epizod”.

Następna wersja

Obawiam się że twoi fani, oczekujący już na “2rBoard” zawiodą się, bo nie będziesz mógł go “napisać”, czy też raczej skopiować.  Engine uniBoard będzie zakodowany Zend Guard, wiec niestety nie bedziesz miał możliwości przemianować go na “2rBoard” i uderzyć nim rynku. Wszystkich innych uspokoję: uniBoard będzie nieziemsko modowalny, a ludzie którym ufam zawsze mogą liczyć na podesłanie niezakodowanej kopii.

Coś jeszcze

Na tej stronie po kliknięciu na “show + / - hide” możemy zobaczyć coś takiego:

http://rpiton.com/lame_copy/callisto_code.jpg

W tle znajduje się kod php… z pliku kernel.php Callisto (okolice linijki 1510).

Do Idiotów

Ten akapit dedykuję wszystkim, którzy będą na tyle głupi, aby zakwestionować moją rację. A więc po kolei: Skoro on zrobił ten skrypt od zera, dlaczego na jego screenach, przedstawiających bętę jest podana wersja “1.1.4″? Czy nie powinno tam pisać 0.9, czy też 1.0 Beta? Jeśli ktoś nie rozumi, to na Unisolutions.pl może sobie pobrać każą wersję Callisto, z pominięciem pierwszej bety, i zobaczyc jak ten skrypt się zmieniał i rozwijał. Może też spytać ludzi, którzy od paru miechow maja swoje fora na Callisto, skąd je wzieli, i kiedy. Dodatkowo znudzeni mogą poszukać Callisto na Source-Forge i sprawdzić sobie datę założenia projektu. Pozatym tematy o Callisto można znaleść na paru forach webmasterskich, z wcześniej wspomnianym Webtips włącznie.

Źródło

Wszyscy którzy chcą poczytać ten tekst w orginale, mogą to znaleść tutaj:
http://blog.rula.pl/czesc-write2r-to-jest-internet
A na wypadek, gdyby gościu usunoł wpis, zrobiłem jego kopię dla potomnych:
http://rpiton.com/lame_copy/
(zwróćcie uwagę na moje dwa komentarze pod tekstem, prawdopodobnie w orginale zostały już usunięte).

Ostatni przytyk

Śmiejecie się ze mnie, bo jestem inny. Ja się śmieję z was, bo wszyscy jesteście tacy sami.

Pudło “mistrzu”! Śmiejemy się z ciebie, ponieważ jesteś lamą która wykreca numery na poziomie 6-latków, chociaż 99% ludzi z tej grupy wiekowej zrobiło by to lepiej.