środa, 15 lutego 2012

Google Maps - Zapisywanie dużej mapy do pliku graficznego

Zastanawiałeś się kiedyś, jak zapisać dużą mapę (np. cała Warszawa w dużym przybliżeniu) do jednego pliku graficznego? Pierwsza myśl to robienie zrzutów ekranu i sklejanie ich w programie graficznym. Praca żmudna, benedyktyńska wręcz - i wymaga dużego monitora i anielskiej cierpliwości tudzież precyzji przy sklejaniu. Przy większych mapach - porażka.
Tymczasem wykonanie tego zadania w sposób zautomatyzowany jest banalnie proste - rozwiązanie znalezione na jakimś polskim forum studentów architektury:


niedziela, 12 lutego 2012

Zdarzyło się jutro... - w PHP

Jak łatwo pobrać jutrzejszą datę w PHP? Oto najprostszy sposób:

$jutro = mktime(date("G"),date("i"),date("s"),date("m"),date("d")+1,date("Y"));

I w efekcie otrzymujemy w zmiennej $jutro datę (i czas) przesunięty w przyszłość o dokładnie 24 godziny.

P.S. Tytuł posta nawiązuje do puszczanego kiedyś w polskiej telewizji serialu "Zdarzyło się jutro". ;)

piątek, 3 lutego 2012

XML w PHP

Potrzebowałem niedawno łatwo parsować pliki XML w PHP. Narzędzi do tego trochę jest, mnie się jednak udało znaleźć narzędzie tak proste, że prostszego znaleźć chyba się nie da. I co więcej - jest ono wbudowane w PHP, nie trzeba więc nic instalować ani ściągać dodatkowych bibliotek z klasami. Gdyby ktoś był w podobnej potrzebie - oto rozwiązanie podane na tacy:

Do parsowania plików XML potrzebujemy obiektu klasy SimpleXmlElement. Konstruktor tejże w najprostszej postaci pobiera jeden argument - string, w którym zapisany jest kod XML. To wszystko. Jak teraz dostać się do konkretnych elementów drzewa dokumentu XML? To łatwiejsze niż myślisz. Po prostu poruszamy się po nim jak tak, jakbyśmy mieli wszystkie te XML-owe elementy zaimplementowane obiektowo. Poniżej wyjaśniający wszystko przykład.
Jeśli mamy taki kod XML:

<?xml version='1.0' standalone='yes'?>
<ksiazka>
 <tytul>Pan Tadeusz</tytul>
 <autor>Adam Mickiewicz</autor>
</ksiazka>
<ksiazka>
 <tytul>Dziady</tytul>
 <autor>Adam Mickiewicz</autor>
</ksiazka>

I będziemy mieć go w stringu np. $xml, to poniższy kod:

<?php
$dokument=new SimpleXmlElement($xml);
echo $dokument->ksiazka[0]->tytul;
?>

da nam w wyniku wydruk "Pan Tadeusz". Czyli składnia jest taka, jak byśmy mieli w obiekcie dokument obiekt ksiazka, a ten z kolei miałby pole tytul. Prawda, że zachwycająco proste? :)
Porada byłaby jednak niepełna, gdybym nie napisał, jak można sobie "wrzucić" XML do stringa, gdy nie chcemy go wpisywać ręcznie, ale pobrać z pliku. Otóż - tu także zostaniemy porażeni prostotą. Jeśli bowiem chcemy korzystać z pliku na naszym serwerze, to wystarczy użyć wbudowanej w PHP funkcji simplexml_load_file, jako argument podając ścieżkę do pliku. Trochę trudniej jest, gdy potrzebny plik XML znajduje się na innym serwerze - tu jednak z pomocą przychodzi nam CURL. Sprawdzałem to "na własnej skórze" - działa bezproblemowo (o ile się poprawnie przygotuje CURL-a, ale to insza inszość).

Bibliografia:
http://ditio.net/2008/06/19/using-php-curl-to-read-rss-feed-xml/
http://www.php.net/manual/en/function.simplexml-load-file.php
http://www.php.net/manual/en/simplexml.examples-basic.php