Serdecznie zapraszam na kolejną odsłonę mojego bloga na http://blog.tastycode.pl/
Niedługo przeniosę tam wszystkie dotychczasowe wpisy.
Przenosiny
29 11 2009Komentarze : Zostaw Komentarz »
Kategorie : Uncategorized
Automatyczne dodawanie punktów do WebCron’a.
21 02 2009Pewnie wiele osób tworzących gry internetowe korzysta z WebCrona, przy wykonywaniu automatycznych “resetów”. Ja też ![]()
Pewnego dnia, gdy moja gra dostała 1 dzień w łeb, z powodu mojego zapominalstwa (nie kliknąłem na Dodaj Punkty…) postanowiłem napisać prosty skrypt PHP w oparciu bibliotekę Curl który automatycznie dodawałby punkty do mojego konta na WebCronie.
Kod
<? /* * Informatic's WebCronDodajPunkty Script * Visit http://infdevblog.wordpress.com/ if you like it*/ $Username = 'nazwaUżytkownika'; $Password = 'twojeHasło'; function curl_post(&$c,$url,$data) { //funkcja wysyłająca $data POST'em na dany $url. // Nasze pudełko z ciachami :] curl_setopt($c, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt'); curl_setopt($c, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt'); curl_setopt($c, CURLOPT_URL, $url); curl_setopt($c, CURLOPT_POST, 1); //przesyłamy metodą post curl_setopt($c, CURLOPT_POSTFIELDS, $data); return curl_exec($c); } $c = curl_init(); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); //logujemy się. $login = curl_post($c,'http://webcron.pl/index.html','login_send=true&username='.$Username.'&password='.$Password); //dodajemy punkty. $dodaj = curl_post($c,'http://webcron.pl/konto.html','add_points=true'); curl_close($c); //i ładne info
echo 'Punkty do WebCrona dodane!'; //usuwamy plik z ciachami. unlink(dirname(__FILE__) . '/cookies.txt'); ?>
Kod jest ściśle tworzony pod serwis webcron.pl – na innych serwisach będzie wymagać dostosowania.
Sposób użycia
1. Kopiujesz plik na serwer.
2. W linijkach:
$Username = 'nazwaUżytkownika'; $Password = 'twojeHasło';
Wpisujesz swoje dane logowania do Webcrona.
3. Wpisujesz w oknie przeglądarki adres do skryptu i cieszysz się 50 punktami
I możesz to jeszcze bardziej sautomatyzować, np. przez dodanie na końcu pliku “admin.php” linijki:
if($_GET['view'] == '') include("webcronDodajPunkty.php");
(skrypt musi nazywać się “webcronDodajPunkty.php”!)
Jak się uprzesz, to też możesz dodawać punkty przy resecie, ale nie wiem czy to zadziała – Webcron może blokować konto podczas wykonywania Twojego żądania
Zabezpieczenia.
Skrypt ten używałem w Vallheru Santic przez automatyczne “includowanie” go w panelu admina.
Dodatkowo dodałem też takie zabezpieczenie na początku naszego skryptu:
$ok_mails = array('mojMeilik@rushh.pl','asdf@corporation.com');
if(!in_array($_SESSION['email'],$ok_mails)) die('You f*** haxxor!');
^^
A regulamin?
Regulamin webcrona nie zabrania takich skryptów, więc na dzień dzisiejszy możesz z niego korzystać bez żadnych obaw
I nowy theme do tego – zomg!
Komentarze : Komentarzy: 3 »
Tagi: cron, Curl, PHP, php curl, skrypt, webcron
Kategorie : Curl, PHP
Centrowanie tekstu w PHP GD
9 02 2009Ostatnio pracowałem z PHP GD. Zacząłem się zastanawiać, jak wycentrować tekst względem obrazka. Chciałem Wam dzisiaj przedstawić moje wnioski
Plan:
– Dzielimy szerokość obrazka na 2
– Obliczamy szerokość tekstu.
– Również dzielimy go na 2.
– Od podzielonej szerokości obrazka odejmujemy “połówkę” szerokości tekstu.
– Cieszymy się pozycją X tekstu ![]()
– Z Y podchodzimy podobnie:
– Do połowy wysokości obrazka dodajemy “połówkę” wysokości tekstu. (A dlaczego? Bo Y podawane do imagettftext to “baseline”, czyli dolna linia!)
Kod:
Skorzystamy z funkcji “imagettfbbox” aby obliczyć szerokość tekstu.
Funkcję, która będzie zwracać tablicę z pozycją [XY], w której powinniśmy wyświetlić tekst będzie się roboczo nazywać textCenter.
W parametrach będzie kolejno przyjmować:
$img – uchwyt naszego obrazka (stworzony np. funkcją imagecreate() )
$text – tekst, który chcemy wycentrować.
$size – wielkość czcionki.
$font – ścieżka do pliku z czcionką.
<?
function textCenter($img, $text, $size, $font) {
$t = imagettfbbox($size, 0, $font, $text);
$x = (imagesx($img)/2) - (($t[4] - $t[6])/2);
$y = (imagesy($img)/2) + (($t[1] - $t[7])/2);
return array("x" => round($x), "y" => round($y));
}
?>
Przykład użycia:
<?
/* Ustawiamy katalog czcionek na katalog skryptu.*/
putenv('GDFONTPATH=' . realpath('.'));
$img = imagecreatetruecolor(200,50);
/* Nasz tekst ;] */
$n = "Welcome!";
/* tu możesz podać nazwę jakiejkolwiek czcionki,
która jest w katalog skryptu*/
$font = "MyUnderwood.ttf";
/* Wielkość czcionki */
$fontsize = 20;
/* Kolorek rushoFFy
(zerżnięty z php.net:
http://pl.php.net/imagecreatetruecolor) ;] */
$text_color = imagecolorallocate($img, 233, 14, 91);
/* Nasza funkcja */
function textCenter($img, $text, $size, $font) {
$t = imagettfbbox($size, 0, $font, $text);
$x = (imagesx($img)/2) - (($t[4] - $t[6])/2);
$y = (imagesy($img)/2) + (($t[1] - $t[7])/2);
return array("x" => round($x), "y" => round($y));
}
$t = textCenter($img, $n, $fontsize, $font);
imagettftext($img, $fontsize, 0, $t['x'], $t['y'], $text_color, $font, $n);
/* Wyświetlamy obrazek */
header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);
?>
Update 1: Dodane round przy zwracaniu wyniku w textCenter ![]()
Update 2: Dopiero przed chwilą zauważyłem że oblicanie Y było zwalone
Komentarze : 1 komentarz »
Kategorie : GD, PHP
[JavaScript][Idea] Dziedziczenie w JS? (“Extends”)
2 02 2009Notatka: Można też inaczej: http://kurs.browsehappy.pl/JavaScript/Dziedziczenie
Ostatnio mam takie ciekawy pomysły
Co by było, jakby tak zrobić dziedziczenie w JS?
Myślałem… Myślałem…
…i wymyślałem. ![]()
W głowie ułożyłem sobie ot mniej więcej tak:
function object1() {
this.test1 = "asdf";
}
function object2() {
this = new object1();
this.test2 = "asdf2.0";
}
var test = new object2();
console.info(test);
No niby powinno działać, ale nie działa – invalid assignment left-hand side.
No i czemu tu się dziwić, rzeczywiście – this się nie da przypisać. Czyli na pewno nie będziemy korzystać z this, tylko zmienimy sobie na…. th?
Więc dalej zacząłem pisać i wyszło mi coś takiego:
function object1() {
//Pierwszy obiekt - dziedziczymy po Object..
//..dlatego można również:
//th = new Object();
th = {};
//jednak tak jest krócej ;]
//kilka zmiennych testowych
th.lastObjectName = 'object1';
th.object1 = 'yes';
return th;
}
function object2() {
// Tym razem dziedziczymy po object1.
th = new object1();
// i znowu testy.
th.lastObjectName = 'object2';
th.object2 = 'yes';
return th;
}
function object3() {
// Dziedziczymy po object2 (zaraz koniec czytelniku :p)
th = new object2();
th.lastObjectName = 'object3';
th.object3 = 'yes';
return th;
}
var t = new object3();
alert("lastObjectName: "+t.lastObjectName+
"\ntypeOf: "+typeof(t)+
"\nobject1: "+t.object1+
"\nobject2: "+t.object2+
"\nobject3: "+t.object3);
//lub, jeżeli masz FireBug'a
//console.info(t);
I, o dziwo, działa ![]()
Jestem ciekawy co wy o tym myślicie?
Wypowiedzcie się
Komentarze : Komentarzy: 6 »
Tagi: dziedziczenie, idea, JavaScript, obiekty, object
Kategorie : JavaScript
[jQuery UI] Zamykanie okienka przy dialog(“destroy”)
2 02 2009Ostatnio bawiąc się jQuery UI korzystałem duużo z ui.dialog
W moim dorastającym projekcie (może kiedyś więcej opowiem – to nie EL, Glassy Orange Board, ani Celestes
) generuję okienka dynamicznie, czyli np:
$("<div/>").html("Hello world.").dialog({
title: "Hello!"
});
I tak mogę sobie bez nie potrzebnego “appendowania” wyświetlić UI.Dialog
Tak stworzone okienka zamykałem brutalnie: remove(), ponieważ dialog(“destroy”), jak i dialog(“close”) zostawiał śmiecie. Chciałem jednak, aby zamykanie okienka było animowane (parametry show i hide w funkcji dialog).
Postanowiłem więc napisać stworzyć prostą modyfikację funkcji destroy. Niestety nie udało mi się tak jej napisać, aby można było z niej korzystać bez podmieniania linijek w ui.dialog.js.
Tak więc oto zmodyfikowane “destroy”, które trzeba zamienić w linijkach ~150 – 165:
/*
* jQuery UI Dialog "destroy" function modification.
* Author: Informatic <infdevblog.wordpress.com>
* Lines: ~150 - 165
* ---
* Now dialog("destroy") animates the "hide effect"
of the dialog, and doesn't appends original element to body.
Useable while generating dialogs dynamicaly.
* ---
* Do with it what you want... But when you use it,
tell me about that if you can :]
*/
destroy: function() {
var th = this;
(th.overlay && th.overlay.destroy());
this.uiDialog.hide(this.options.hide, {}, "slow", function() {
th.uiDialog.remove();
});
}
Regards.
Inf.
Komentarze : Zostaw Komentarz »
Tagi: dialog, jQuery, jQuery UI
Kategorie : JavaScript, jQuery, jQuery UI
[jQuery] Nie do końca “onload”
27 01 2009Przed chwilę zauważyłem rzecz, która może się przydać innym.
Gdy wykonujemy w jQuery kod typu:
$(function() {
[..]
});
Kod “[..]” jest wykonany po załadowaniu DOM’u (nie dziwne
). A obrazki? Obrazki mogą się ładować. DOM jest załadowany i już. Obrazki nie należą do DOM’u, więc event DOMReady jest wykonywany przed załadowaniem obrazków…
…więc jeżeli chcesz wykonać jakiś kod po 100% załadowaniu strony (włącznie z obrazkami, iframe’ami, itp.), skorzystaj z:
$(window).load(function() {
[...]
});
Wtedy kod “[...]” zostaje wykonany po załadowaniu całego dokumentu, nie tylko DOM’u
@edit: Tak.. Wiem.. Dopiero niedawno zauważyłem, że to samo jest napisane w dokumentacji jQuery
Komentarze : 1 komentarz »
Tagi: dom, event, JavaScript, jQuery, onload
Kategorie : JavaScript, jQuery
[jQuery] JSON przez POST.
14 01 2009Oficjalnie oznajmiam – nadal żyję
Tak więc witam po przerwie. Była ona spowodowana oczywiście szkołą. Musiałem się zacząć trochę częściej uczyć
Podczas tej przerwy, trochę się działo.. na przykład załóżyłem pierwszą swoją Vallherynkę, na silniku Santic Engine. Już mamy (ja ze znajomym[i]
) 34 graczy. Szpaaan xD
Poza tym, zacząłem robić (następną..) graficzną grę MMORPG – od zera oczywiście. Chodzisz ludzikiem, zabijasz potwory, taakie tam
Z tej okazji napisałem prostą bibliotekę JS (prawdopodobnie ją udostępnię niedługo
)do animacji sprite’ów (kto nie wie co to jest, odsyłam do Wikipedii) ułożonych w rzędy i kolumny na jednym obrazku.
Przy okazji robienia tej gry, zauważyłem, że jQuery nieposiada funkcji do szybkiego (chodzi mi tu o krótki zapis, tak jak getJSON) wywołania zapytania serwera o dane JSON. Więc napisałem baardzo prosty dodatek do jQuery implementujący funkcję postJSON
/*
* jQuery postJSON plugin.
* Do with it what you want.
*/
jQuery.postJSON = function(u,d,callback) {
return jQuery.post(u, d, callback, "json");
}
Bye.
Komentarze : Zostaw Komentarz »
Kategorie : JavaScript, jQuery
“Nasza-klasa: 11-latki terroryzują koleżankę”… Dlaczego?
22 12 2008Po krótkiej przerwie. Dzisiaj wpis nie będzie do końca “dev”, ale będzie tyczył internetu…
Nasza-klasa: 11-latki terroryzują koleżankę
Hmm.. Znalazłem pewien artukuł na Wyborczej.pl… Tyczy on kilku 11-latek wyzywających “koleżankę” na NK. Dziwi mnie, dlaczego rodzice udostępniają takim rozwydrzonym bachorom internet!?
Jednak jeden cytat mnie powalił…
- Czy zostały ukarane?
- No, nie, one się wyśmiewały anonimowo – odpowiada pedagog.
- Jak to anonimowo? Przecież w portalu musiały się zarejestrować. Podać imię, nazwisko…
– Nie wiedziałem, że to tak działa…
No przepraszam was bardzo, czy ten “pedagog” nigdy nie korzystał z żadnego portalu społecznościowego? Przecież na każdym “social network’u” trzeba podać swoje dane.
Ogólne podsumowanie… Nasza Klasa powstała po to aby organizować spotkania klasowe po latach, przypomnieć sobie “stare dobre czasy”, dowiedzieć się, czym zajmują się teraz dawni przyjaciele, a nie po to, aby takie dzieciarnie wyklinały się na około. Przecież pogadać sobie mogą w szkole. Po co to? Piękni developerzy NK powinni zamontować poprostu blokadę na zakładanie klas, które jeszcze istnieją. Wtedy nie byłoby takich sytuacji. Albo przynajmniej system “bad-words”… Ergh…
Komentarze : Komentarzy: 5 »
Tagi: dzieci, Nasza Klasa, wyborcza
Kategorie : Rozważania...
Go on!
30 11 2008Pierwszy post będzie dość okrojony
Już kilka razy próbowałem pisać bloga, ale zawsze je porzucałem, z powodu braku czasu, jak i pomysłów.
Ostatnio zająłem się “branżą” gier MMO przez przeglądarkę. Ogólnie zajmuję się tworzeniem aplikacji internetowych (czyt. gier
) w PHP. Znajomi znają mnie jako “Informatic”. Chcesz się dowiedzieć trochę więcej o mnie? Kliknij tutaj.
Na tym blogu będę rozważał różne aspekty tworzenia gier, nie tylko od strony programistycznej. Czasem może podrzucę jakiś ciekawy kawałek kodu. Kto wie..
Komentarze : Komentarzy: 3 »
Tagi: gry, PHP, początek
Kategorie : Rozważania...

Najnowsze komentarze