Łukasz "Zonix" Bulicki

Programowanie (Java, PHP), OpenSurce, Muzyka, Gry

Grudzień 3rd, 2011

Surf bez przerywania

No Comments, WebMastering, by Łukasz Bulicki.

Miałem okazję przetestować trzy serwisy:
plusix.pl
surfik.net
msurf.eu

W wszystkie serwisy posiadają funkcję pozwalające automatycznie wymieniać (jak kto chętny kupować) ruch na stronach internetowych. Co ma dać np. zwiększenie dochodów z reklam.
Niestety niektóre serwisy przerywają działanie skryptu np przez kod JavaScript wywołujący przekierowanie z ramki, co w rezultacie wymaga ponownego uruchomienia Surfingu.

Pierwszym i wystarczająco skutecznym (właściwie drugim, bo pierwsze było blokowanie przez przeglądarkę. ale nie zdało egzaminu) sposobem na który wpadłem jest zablokowanie niechcianych stron w pliku hosts. Znajduje się on w systemach Windows w katalogu:
More

Czerwiec 15th, 2011

Przyjazne linki w PHP z wykorzystaniem modułu mod rewrite

No Comments, PHP, WebMastering, by Łukasz Bulicki.

Prawdopodobnie każdy zauważył że już od dawna wszyscy starają się wykorzystywać przyjazne linki, czyli np. http://strona.net/post/tytul zamiast starego http://strona.net/index.php?post=1

Nie ma z tym wiele pracy, no może jak się dopiero zaczyna tworzyć serwis. W innym wypadku trzeba będzie trochę popoprawiać. Więc najlepiej ich używać od samego początku.

Poniżej przykład jak obsłużyć linka w postaci:
http://strona.net/tytul,i15.html
i zamienić go na:
http://strona.net/index.php?post=15

Dlaczego nie wcześniej wspominany http://strona.net/post/tytul ? Ponieważ potrzebne nam będzie ID postu. Oczywiście nic nie stoi na przeszkodzie by zrobić to według tego schematu, ale wtedy konieczne będzie trzymanie w bazie relacji ID postu -> link.
More

Maj 22nd, 2011

Dodawanie wzorów (MathML) na stronę

No Comments, Java, WebMastering, by Łukasz Bulicki.

Czasem zdarza się że potrzebujemy dodać na stronkę wzór. I nie chcemy go rysować w jakimś programie graficznym, ponieważ chcielibyśmy by wyglądało to profesjonalnie.
W tym celu został wymyślony język MathML. O języku można poczytać na Wikipedii, więc nie będę się rozpisywał na jego temat.
Klikając na link można zobaczyć przykład wygenerowanych wzorów. Niestety prawidłowo wyświetlają się tylko w FF, reszta producentów przeglądarek musi nadgonić jeszcze w tym temacie. Ale czytałem że już za to się zabierają.
Poniżej sposób jak szybko wygenerować wzory.
1) Wchodzimy na stronę: http://www.mathtoweb.com/cgi-bin/mathtoweb_online.pl
Znajduję się tam aplet Java który pomoże nam w generowaniu wzorów.
2) Niestety aby móc stworzyć bardziej skomplikowany wzór musimy znać składnie podobną do LaTeX. Pod następnym linkiem znajduję się instrukcja jak tworzyć wzory: http://www.mathtoweb.com/cgi-bin/mathtoweb_users_guide.pl

Poniżej kod wzorów z przykładu:
More

Kwiecień 19th, 2011

JavaScript sortowanie tabeli

No Comments, JavaScript/AJAX, Programowanie, WebMastering, by Łukasz Bulicki.

Bardzo często w pracy zdarza mi się generowanie tabelek. Niby nic nadzwyczajnego. Ale sama tabela czasem nie wystarcza, przydała by się jeszcze funkcjonalność sortowania. Poniżej przykład sortowania prostej HTMLowej tabeli w JavaScript. Link do działającego pliku HTML.
Kod tabeli [HTML]:

Down Nazwisko Up Down Ocena Up
Kowalski 4.5
Nowak 4.0

Tworzenie tablicy z obiektami odpowiadającymi rzędom tabeli [JavaScript]:

var uczniowie = new Array();
function uczen(Name, Ocena) {
this.Nazwisko= Name;
this.Ocena = parseFloat(Ocena);
}

Funkcja dodająca obiekt do tabeli [JavaScript]

function addToArray(Nazwisko, Ocena) {
uczniowie[uczniowie.length++] = new uczen(Nazwisko, Ocena);
}

Tworzenie obiektów odpowiadających rzędom tabel [JavaScript]:

addToArray('Kowalski', 4.5);
addToArray('Nowak', 4.0);

Funkcje sortujące [JavaScript]

function sortByUczenNazwisko(a, b) {
var x = a.Nazwisko.toLowerCase();
var y = b.Nazwisko.toLowerCase();
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
function sortByUczenNazwiskoUp(a, b) {
var y = a.Nazwisko.toLowerCase();
var x = b.Nazwisko.toLowerCase();
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
function sortByUczenOcena(a, b) {
var x = a.Ocena;
var y = b.Ocena;
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
function sortByUczenOcenaUp(a, b) {
var y = a.Ocena;
var x = b.Ocena;
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

Rysowanie kolumn [JavaScript]:

function drawTable() {
for (i = 0; i < uczniowie.length; i++) {
document.getElementById('nazwisko[' + i + ']').innerHTML = uczniowie[i].Nazwisko;
document.getElementById('ocena[' + i + ']').innerHTML = uczniowie[i].Ocena;
}
}

Funkcja wywołująca odpowiednie sortowanie i rysowanie tabeli [JavaScript]

function sortArray(column) {
switch (column) {
case 1 :
uczniowie.sort(sortByNazwisko);
break;
case 2 :
uczniowie.sort(sortByNazwiskoUp);
break;
case 3 :
uczniowie.sort(sortByUczenOcena);
break;
case 4 :
instytucje.sort(sortByUczenOcenaUp);
break;
}
drawTable();
}

Marzec 3rd, 2011

Aplikacja do wystawiania Noty Odsetkowej

No Comments, JavaScript/AJAX, PHP, by Łukasz Bulicki.

Kalkulator Odsetek UstawowychPoniżej opis aplikacji „Kalkulator odsetek ustawowych”, to banalny programik z całą logiką w 30 linijkach JavaScript :)
Ponadto jest możliwość wygenerowania Noty Odsetkowej w pliku PDF. Program jak zwykle nie testowany więc proszę o zwrócenie uwagi na to czy wszystko dobrze się liczy :)

Co to są Odsetki Ustawowe można przeczytać na Wikipedii, co ciekawe nigdzie nie jest napisane że może ją wystawiać tylko firma.

Link do programu: klik.

More

Luty 13th, 2011

PHPMailer, jQuery UI i projekt mojego Systemu Mailingowego

1 Comment, JavaScript/AJAX, PHP, Programowanie, by Łukasz Bulicki.

Dwa tygodnie temu udało mi się napisać pierwszą wersję systemu do rozsyłania mailingów. Założenia były proste, czyli możliwość konfiguracji protokołu SMTP, podział adresatów na grupy plus skórka jQuery UI i TinyMCE. Podstawą do wyjścia jest biblioteka PHPMailer.

Efekt można zobaczyć na filmiku:




More

Grudzień 27th, 2010

Gdy utf8_encode() i htmlspecialchars() nie może

No Comments, JavaScript/AJAX, PHP, by Łukasz Bulicki.

Podczas przekazywania arabskich lub chińskich ciągów znaków do JavaScript dostawałem w konsoli błędów w FF komunikat:

Błąd: unterminated string literal
Plik źródłowy: https://mojastrona.com/plik.php
Wiersz: 1, Kolumna: 8
Kod źródłowy:
MojaFunkcja('ارمغان دانش

Pierwszym pomysłem było zastosowanie funkcji htmlspecialchars() potem utf8_encode() następnie próbowałem z bibliotekami typu ArCharsetC, niestety to też nie pomogło.

Przeglądając posty na forach trafiłem na funkcję urlencode(), dopiero ona zamieniła String PHP na akceptowany przez JavaScript.
Poniżej przykład działania funkcji:

$str = urlencode("ارمغان دانش فصلنامه علمي پژ‍وهشي دانشگاه علوم پزشكي ياسوج");
echo $str;
//wynik:
//%D8%A7%D8%B1%D9%85%D8%BA%D8%A7%D9%86+%D8%AF%D8%A7%D9%86%D8%B4%0D%0A%D9%81%D8%B5%D9%84%D9%86%D8%A7%D9%85%D9%87+%D8%B9%D9%84%D9%85%D9%8A+%D9%BE%DA%98%E2%80%8D%D9%88%D9%87%D8%B4%D9%8A+%D8%AF%D8%A7%D9%86%D8%B4%DA%AF%D8%A7%D9%87+%D8%B9%D9%84%D9%88%D9%85+%D9%BE%D8%B2%D8%B4%D9%83%D9%8A+%D9%8A%D8%A7%D8%B3%D9%88%D8%AC

Podany wynik już bez problemu można przekazać do funkcji JavaScript.
Ale by go wyświetlić musimy go odkodować.

function MojaFunkcja(zmienna) {
document.getElementById('pole').innerHTML = decodeURIComponent(zmienna).replace(/\+/g, ' ');
}

Do odkodowania służy funkcja decodeURIComponent(), musimy zamienić jeszcze wszystkie znaki + na spacje w tym celu umieściłem replace(/\+/g, ‘ ‘)