ziroł.ziroł.siks czyli kolejny nowy Apinstall ;)

Wciagajce to jest, jak sie zacznie cos robic i z kazdym dniem sie to ulepsza, poprawia i dodaje nowe funkcjinalnosci.

W tej wersji nowych funkcjinalnosci nie ma :D Za to nie uswiadczycie meczacego spamu przez XmlHttpRequest przed i po wykonaniu skryptu.

Jako ze caly apinstall opiera sie na funckji setInterval(); (poki co) wiec innego rozwiazania nie ma :)

A oto caly jQuerowy javascript ktory odpowiada za dzialanie:

  1. function refresh(){
  2.                 $(‘#apisubmit’).fadeOut(’slow’);
  3.                 var intID = setInterval(function() {
  4.  
  5.                 $.ajax({
  6.                 type: ‘GET’,
  7.                 url: ‘cb41cdc0b660bf6d1a39d24d9a4c7f3ca9702db4.php’,
  8.                 cache: false,
  9.                 success: function(){
  10.  
  11.       $(‘#apinstall’).load(‘cb41cdc0b660bf6d1a39d24d9a4c7f3ca9702db4.php?randval=’+ Math.random());
  12.  
  13.                                                         },
  14.         error : function (xhr, d, e) {
  15.       if (xhr.status == 404) {
  16.         clearInterval(intID);
  17.                 $(‘#apinstall’).fadeOut(’slow’);
  18.       }
  19.     }
  20.  });
  21.  
  22.         }, 200);
  23.                 }
  24.                         $(document).ready(function() {
  25.   $(‘#apiform’).submit(function() {
  26.     refresh();
  27.   });
  28.  
  29. });

Zasada dzialania jest prosta jak budowa cepa, co 200 milisekund ajax wysyla zapytanie do tymczasowo stworzonego pliku php, jesli jest uruchamia funkcje ladowania zawartosci w div, jesli jednak otrzymuje 404 – czysci setInterval oraz usuwa div z prgoress barem.

To byloby na tyle, znow nowa instrukcja na stronie projektu i nowe demo jak zwykle dostepne:

TUTAJ

A ja zawijam wrotki i szykuje sie do wyjazdu na narty do Zielenca, trzeba jakos z tych ferii skorzystac.

VN:F [1.8.1_1037]
Rating: 6.7/10 (6 votes cast)

Apinstall – dostepne na Chrome, Safari oraz IE

Troche czasu mi zajelo szukanie dlaczego Apinstall nie wyswietla progress baru w przegladarkach opartych na Web Kit oraz na IE.

W tym wypadku google nie chcialo mi zbyt wiele pomoc, moze tylko ja mialem taki dziwny problem, chociaz watpie… W kazdym razie rozwiazanie problemu znalazlem w czyims kodzie javascript, byl to skrypt na upload plikow i na szczescie gosc zamiescil komentarz:

  1. <!– Ok, you so need this iframe for Safari and Chrome to work, the webkit engine doesnt allow ajax calls to be made after a form begins submission –>

Chwala mu za to, bo inaczej nadal przeszukiwalbym czelusci internetu w poszukiwaniu odpowiedzi.

A wiec zadzialawszy na Chrome i Safari sprobowalem rowniez na IE, jakie bylo moje zdziwienie ze i tu dziala – tego sie nie da opisac ;) Moze to zasluga wersji 8, a moze nie. W kazdym razie Apinstall sprawuje sie bardzo dobrze, gdyby nie jeden szczegol :)

Mianowicie po zakonczeniu wykonywania procesu, XHR nadal probuje ladowac plik z danymi, latwo to obejsc wpisujac header(‘Location:….’); po zakonczeniu procesu, ale to byloby za proste. Wiec bede musial przy kazdym wyslaniu load przez jQuery sprawdzic czy plik tymczasowy istnieje lub znalezc jakis inny sposob.

Nowe demo oraz nowa instrukcja (bardziej uproszczona) dostepna jest na stronie projektu: http://code.google.com/p/apinstall/.

Zapraszam do przetestowania. A juz niedlugo napisze jak za pomoca tej klasy zrobic innego niz wszedzie preloadera :)

VN:F [1.8.1_1037]
Rating: 4.0/10 (3 votes cast)

PHP + jQuery czyli Apinstall progress bar

Niewiele mialem dzis czasu dla siebie, ale w przerwach wpadl mi do glowy calkiem ciekawy pomysl…

Nie pamietam ile to razy jakis skrypt w php wyswietlal dla mnie biala strone, a ja czekalem az ukonczy swoje dzielo. Jesli to byl krotki skrypt to ok, ale jesli chodzilo o cos co zabiera mnostwo czasu aby to przemielic nigdy nie wiadomo kiedy zakonczy sie skrypt i co aktualnie sobie przelicza.

To dalo mi duzo do myslenia, a wynikiem tego jest klasa Apinstall, ktora przed chwila skonczylem w wersji 0.0.4

A wiec, co to takiego i co potrafi?

Ta klasa, wazaca niewiele ponad 3kb moze sluzyc jako skrypt do:

  • skryptu instalacyjnego
  • czasochlonnych skryptow PHP
  • zabawy w CSI super mega wypas loader ktory pokaze wszystko co zechcesz ;)

Tak to wyglada w praktyce:

Nie jestem zbyt zadowolony z samego progress baru, wiec pewnikiem zostanie zmieniony, w kazdym razie obecnie mozna konfigurowac kolor paska w klasie, oraz backgroundu w css.

Jak widac na screenie to nie tylko sam progress bar, pod nim wyswietlane sa aktualne czynnosci wykonywane przez skrypt, programista sam je definiuje a klasa poiera i wyswietla wraz z postepem.

A skoro sam definiuje, mzoe to byc np:

  1. Otwieranie puszki browara
  2. Chlanie do dna
  3. Glosne bekniecie
  4. Proba pozbycia sie czkawki
  5. Wyrzucenie puszki
  6. Proba pozbycia sie czkawki, podejscie drugie ;)

Wszystko zalezy wiec od Waszej inwencji.

Jak to sobie zainstalowac? Nic prostszego, najpierw sciagamy sobie klase:

http://code.google.com/p/apinstall/downloads/list

Nastepnie w <header> naszej strony includujemy klase i ja inicjujemy:

  1. require_once(‘class/class.install.php’); //inlude apinstall class
  2.  
  3. $install = new Installer(); //initialize it

Nastepnie zaciagamy CSS, ustalamy sciezke do tymczasowego pliku logowania, definiujemy ile krokow bedzie mial nasz proces, i inicjujemy funckje generowania + opcjonalnie wybieramy kolor naszego progress bara:

  1. $install->includeCSS(); //include CSS file
  2.  
  3. $install->setLogPath(‘/home/user/public_html/apinstall’); //path to logfile
  4. //no trailing slash!
  5.  
  6. $install->setSteps(3); //set how many steps there will be (3 in this example)
  7.  
  8. $install->generate(‘#84AEBE’); //generate temporary files and choose colour of your bar.

Kolejny krokiem jest umieszczenie diva, w miejscu gdzie chcemy aby nasz progress bar sie pojawil:

No i najwazniejsza czesc, czyli definiujemy kroki:

  1. #1 step
  2. $output = ‘Sending mails’; //title of this process
  3. $install->save($output);
  4. /*
  5. Process itself (f.e sending mails)
  6. */
  7.  
  8. #2 step
  9. $output = ‘Optimizing database’;
  10. $install->save($output);
  11. /*
  12. Optimizing database code
  13. */
  14.  
  15. //Inform user that script has finished
  16.  
  17. #3 step
  18. $output = ‘Completed’;
  19. $install->save($output);
  20. $install->delay(5); //make delay in seconds to show finished state longer.

Jak widac najpierw jest $output, czyli definiujemy co sie pojawi pod preress barem w tym kroku, nastepnie save, ktory wprowadza te dane do tymczasowego pliku, po tym nastepuje to co chcecie robic, moze byc to mailing, polacznie z baza, wgrywanie schematu SQL czy cokolwiek innego.

Opcjonalnie mozna dodac delay, czyli opoznienie w zakonczeniu procesu, to mimo wszystko dosc wazny punkt, bowiem niektore operacje php wykonuje tak szybko, ze skrypt nie zdarzy zareagowac, oczywiscie jesli zalezy Wam na szybkosci – nie ma sensu wrzucania delaya – ale jesli chcecie zobaczyc krok po kroku co sie dzieje ze skryptem, mozna dac mu niewielki czas na to aby nam pokazal aktualnie co robi.

Na przyklad taki oto kroczek:

  1. $output = ‘Wyswietlanie wartosci zmiennej’;
  2. $install->save($output);
  3. echo ‘$zmienna’;
  4. $install->delay(0.20); //0.2 sekundy na to zeby wyswietlic zmienna

Oczywiscie nie ma sensu robic tak z calym skryptem, bo czas wykonania wydluzyl by sie kilkukrotnie, ale przy wysylaniu mailingu, czy pobieraniu bardzo zagniezdzonych danych w olbrzymich plikach jest to bardzo dobre rozwiazanie.

W klasie ktora mozecie pobrac jest plik install.php jako przyklad, trzeba tylko ustalic w nim sciezke i mozna sobie sprobowac jak to dziala.

Pare linkow na koniec:

Demo

Google Projekt dla Apinstall

Milego testowania :)

VN:F [1.8.1_1037]
Rating: 5.0/10 (2 votes cast)

Weryfikacja kapcia i Lista Otsoft.pl nowe wieści

Kapec, kapcia, kapcza, capcza, captcha. Glupie slowo, ale za to ma dosc ciekawe tlumaczenie: Completely Automated Public Turing test to tell Computers and Humans Apart.

W wolnym tlumaczeniu – Automatyczny test Turinga aby oddzielic ludzi od robotow. Wszystko ladnie pieknie, tyle ze jakies afganskie mendy sobie polamaly kapcze o kant dupy i kilkoma algorytmami sobie ja lamia prawie z 100% skutecznoscia.

Dzisiaj zakonczylem zabawe z rejestracja uzytkownika na liscie otsoft.

Mały screen z formularza:

form

Moze i ten ludzik nie bardzo pasuje do klimatu, ale puste miejsce bardziej wali w oczy :) W kazdym razie iconspedia sluzy wysmienicie :)

Nie uzylem reCaptcha znanej chociazby z otservlist.org z kilku powodow:

  • jest zbyt popularna
  • uzywa slownikowych wyrazow
  • i jest ZBYT popularna :)

Zbyt popularna = zbyt duzo ludzi chce ja zlamac. Wybralem za to bardzo fajna klase phpcaptcha, ktora potrafi na prawde wiele, a i mozliwosci jej konfiguracji to czysta poezja. Jednak nie chcac wkurzac uzytkownikow, wybralem opcje posrednia, tak zeby nie trzeba bylo odgadywac czy to I czy l, czy 0 czy O, albo czy to rm czy m.

W kazdym razie otsoft.pl nie jest jeszcze na tyle popularny, zeby ktos na sile chcial zapelnic baze userami, chociaz boty spamiace coraz czesciej nas odwiedzaja i daja znak chociazby na forum.

Tak czy siak, kazde kapcie sa do zlamania, nawet te nieczytelne dla czlowieka. Zreszta zobaczymy jak ten kapec spelni swoje zadanie na liscie.

A jesli ktos popelni blad w formularzu i wpisze zly mail, niepoprawnie powtorzy haslo, albo zle odczyta kapcia, skrypt wysunie mu wszystkie bledy jakie popelnil:

error

Tym razem 3 bledy, ale mozna zrobic ich maksymalnie 5, co powinno byc nagradzane jakims oskarem dla najwiekszego kretyna :) Zrezygnowalem z ajaxa, chociaz zamierzam go dodac do formularza, bo w koncu to wygodniejsze. Ale jak narazie polecimy na samym php, w niektorych momentach uzyje sie z koniecznosci javascriptu.

A wracajac jeszcze do kapczy, sorry niewidomym i wszystkim slabo widzacym ;) ale nie chcialo mi sie dodawac odsluchiwania kapci, imo jesli ktos nie widzi, albo widzi za malo to raczej nie beda go interesowaly rpgi stworzone ze spritow, jesli sie myle to dajcie znac w komentarzach ;)

Coz jeszcze o samej rejestracji…Ano niestety bedzie weryfikacja adresu mailowego, inaczej sie nie da, musze dbac o to zebyscie nie podrzucali adresow innych. A aktywny mail przyda sie podczas dodawania serwera, lub innych czynnosci :)

Oczywiscie zadbalem o tych ktorzy maja prehistoryczna poczte, ktora nie rozumie htmla (istnieje jeszcze taka?), wiec wysylany nie tylko bedzie link aktywacyjny ale i kod, ktorym samemu bedziecie mogli sobie aktywowac konto.

Dzisiaj tez dodalem magiczna tabele banned, do bazy :) Wiec pomalu zbieram sie z pisaniem pod to kodu, mimo wszystko bedzie musialo minac wiele tygodni zycia listy, aby kod banowania nie ranil biedych zuczkow, ktorzy dodali serwer i zlapali na dzien dobry banika.

Dobra, tyle na dzis. Nastepnym razem postaram sie o cos ciekawszego. Adios.

VN:F [1.8.1_1037]
Rating: 10.0/10 (5 votes cast)

SimpleDB 0.1.4

Wszyscy, którzy używają SimpleDB 0.1.3 (czyli ja i ja ;) ) proszeni są o zaaktualizowanie do wersji 0.1.4, która została wydana przed chwilą :)

W końcu poprawiłem męczący mnie kawałek kodu w metodzie optymalizacji bazy… i pare innych pierdów. Jakoś w domu lepiej mi się myśli niż w tym zasyfiałym akademiku błueeeh :/

Downoad: SimpleDB 0.1.4

VN:F [1.8.1_1037]
Rating: 0.0/10 (0 votes cast)

SimpleDB – prosta klasa do połączeń z MySQL

Patrze na zegarek w pokoju – 6:45, czas na dedyku 00:56, czas na kompie 01:57 i badz tu madry xD.

Ale nie o tym chciałem, leń mnie dopadł i jak to zwykle bywa robie wszystkie rzeczy dookoła byleby tylko nie robić tego co kazano, albo tego co trzeba ;] Dość popularne zjawisko u mnie ostatnio – trzeba się uczyć – sprzątam w szufladach, segrguje płyty i robie porządki na dysku :) Nie inaczej było dzisiaj. Fakt wziąłem się do roboty po południu, ale leń mnie przechytrzył i szybko wróciłem do zajęć które bardziej mnie interesują.

Zawsze myślałem o napisaniu dobrej klasy do połączeń z MySQL, dzisiaj zabrałem się do pisania i w 2 godziny wyszło coś, co nazwałem SimpleDB – no bo jak można inaczej nazwać klasę, która nic nowego nie wprowadza, zwykłe query, fetche i inne pierdy w bardzo prostej formie. Mimo wszystko ta klasa zawiera to co ma zawierać, raczej niczego w niej nie brakuje a na pewno jest wystarczająca dla początkującego programisty.

W wolnym czasie chętnie ją rozbuduję, chociaż i tak pewnie nikt nie będzie jej używał oprócz mnie ;)

W razie jakby ktoś jednak chciał potestować to tutaj jest LINK całe 2,6 KB :)

Przykład wykorzystania included.

VN:F [1.8.1_1037]
Rating: 0.0/10 (0 votes cast)

Otsoft.pl (1.4) i PVP Challange

Otsoft.pl po raz kolejny został updatowany. Wersja 1.4 nie jest przełomowa, ale wprowadza dodatkowe opcje serwisu oraz usprawnia pracę redaktorów i moją :)

Główne zmiany:

Status Checker – to już tradycja, że serwisy o Open Tibia dodają go do swojego contentu, nie inaczej jest na Otsofcie, pozwoliłem sobie jednak na dodanie przedrostka “Advanced” przed nazwą tego tworu, dlaczego? Ano dlatego że zwykły Status Checker sprawdzał tylko czy serwer jest online czy offline, nasz sprawdza:

  • liczbę graczy
  • nazwę serwera
  • lokalizację
  • uptime
  • założyciela serwera
  • URL serwera
  • liczbę mobów
  • MOTD

No dobra przesadziłem troche z tym advanced ;) Nic szczególnego w sumie, ale dobre podwaliny na liste są ;)

Hall Of Fame – pomysł ciekawy i warty rozwinięcia, na tą chwilę po prostu dane wyciągnięte z bazy, np liczba nieprzeczytanych pmek, albo czas spędzony na forum :) Czasami z nudów – można przejrzeć.

OTW - komentować raczej nie trzeba (?)

Raporty downloadu – do tej pory baardzo niużyteczne narzędzie, a to dlatego że wystarczyło kliknąć, żeby informacja o raporcie dostała się do bazy i tym sposobem boty od Googla, Yahoo czy nawet spam boty znajodowały sobie pole do popisu. A sprawdzanie tych raportów w panelu mijało się z celem.

Pewnie się spytacie czemu nie zastosowałem filtrowania ip botów, bo przecież są wszystkim znane, albo nawet prostszego zabiegu: <a rel=”no follow” .  Pierwszy sposób byłby dobry, ale nie zatrzymałby spam-botów, drugi natomiast sprawdzał się tylko dla botów Googla, reszta pustych robocików nie robiła sobie z tego wpisu nic, dziwne ale sprawdzone.

Najłatwiejsze rozwiązanie – dodać pole tekstowe w którym użytkownik będzie musiał wpisać uzasadnienie raportu a przy okazji można będzie się dowiedzieć w panelu, dlaczego jegomość kliknął: Raportuj. Boty indeksujące nie mają mozliwośći wypełniania form, natomiast spam boty tak :) Ale dodatkowe filtrowanie mam nadzieje nie przepuści już żadnego, albo chociaż większej ich ilości – jakoś nie mam zamiaru co chwila wrzucać captche i inny gówna nad którymi przeciętny internuta spędza mnóstwo czasu…

Parę słówn na temat PVP Challange, otóż nigdy w życiu nie miałem podobnej sytuacji, nie wychodziło mi dosłownie nic co chciałem zrobić – kompilacja serwera (umierała na ./configure), połączenie z bazą (z niewiadomych powodów nie dochodziło do sukcesu).

Co się okazało, jeśli chodzi o kompilację zawiniły biblioteki, a wspomogliśmy sobie updatem Debiana z Etch na Lenny, dodatkowo zaciągneliśmy libasio-dev i poszło.

Z połączeniem z bazą – brakowało extension PDO dla MySQL – dobrze że wrzasq ładnie komentuje swojego pota, bo ciężko byłoby dojść po samym kodzie do tego. A i phpinfo(); zyskało w moich oczach niezmiernie :) Po instalacji PDO, wsio zaczęło działać, no może niekoniecznie od razu, ale działa :>

ALE

Na Lenny nie chciał się kompilować Akademicki :D Na szczęście rozwiązanie wpadło mi szybko do głowy i w kilkanaście minut serwer pod 7.6 kompilował się jak dawniej. Wystarczyło użyc starszej wersji gcc do kompilacji, a mianowicie 4.1.

Wpis do Makefile: (dla potomnych ;D)

export CC=/usr/bin/gcc-4.1

Do usłyszenia.

VN:F [1.8.1_1037]
Rating: 0.0/10 (0 votes cast)

Otsoft 1.3

Ok, jednak zabrałem się do roboty, ale niestety nie udało mi się osiągnąć tego co zamierzałem, a to z powodu innych mniejszych niedoróbek, które pozostawiłem sobie podczas pisania panelu i kilku innych skryptów.

Więc w wersji 1.3 nie zauważycie żadnych większych zmian, większość z nich to optymalizacja i porządkowanie kodu + zautomatyzowanie niektórych akcji na stronie i w panelu, między innymi włączanie i wyłączanie strony z panelu.

Nadchodzą święta, więc do końca tego roku raczej żadnych aktualizacji nie będzie, szczególnie, że Akademicki też potrzebuje trochę pracy :)

Yup, to tyle – baj.

VN:F [1.8.1_1037]
Rating: 0.0/10 (0 votes cast)

Następna strona »