Skip to content
paź 8 11

SVN: Wycofywanie (zatwierdzonych) zmian

by zergu

Wycofywanie zmian w Subversion można podzielić na dwie kategorie. Pierwsza to wycofywanie zmian lokalnych, jeszcze przed wysłaniem do repozytorium. Druga to odwracanie zmian już zatwierdzonych.

Wycofywanie lokalne

Anulowanie zmian w kopii lokalnej jest w miarę proste i intuicyjne. Wykorzystujemy tutaj podpolecenie revert, po którym podajemy nazwę pliku lub maskę. Opcją którą właściwie trzeba znać jest -R, która włącza wycofywanie rekursywne. Przykłady:

Anulowanie zmian w pliku ‘playground’:

svn revert playground

Anulowanie wszystkich zmian w projekcie (uruchamiane w głównego katalogu):

svn revert -R *

Wycofywanie zmian z repozytorium

W Subversion de facto nie da się wycofać zmiany już zatwierdzonej. Zamiast tego można jednak zatwierdzić zmiany odwrotne do wprowadzonych. Efekt będzie taki jak zamierzony, jednak „wadliwe” zmiany zostaną w historii. Dlatego konieczne jest tutaj użycie podpolecenia merge a nie revert, które, patrząc na nazwę, wydawało by się bardziej intuicyjne.

read more…

wrz 24 11

PHP: Statyczne zmienne funkcji — do czego mogą się przydać?

by zergu

Jak statyczne zmienne działają?

Wielu z nas jest przyzwyczajonych do tego, że elementy oznaczone jako statyczne to coś co występuje tylko w klasach. Jednak słówka static można również użyć w zwykłej funkcji do oznaczenia zmiennej. Czym się różni zwykła zmienna od statycznej?

Wartość statycznej zmiennej jest inicjowana za pierwszym wywołaniem funkcji i zapamiętywana pomiędzy jej kolejnymi wywołaniami. Czyli zachowuje się zupełnie podobnie do klasowych zmiennych statycznych, tyle że nie za bardzo jest do niej dostęp z zewnątrz.

Gdzie to się może przydać?

1. Licznik wywołań funkcji.

Sztandarowym przykładem wykorzystania statycznych zmiennych w funkcji jest licznik jej wywołań, raczej rzadko wykorzystywany w praktyce.

function say_hello_and_count_yourself()
{
    static $counter = 0;
    echo "Hello! I've already said this ".$counter++." time(s).";
}

read more…

wrz 20 11

Zapraszam na darmowe szkolenie DevMeeting – middle-end w oparciu o NodeJS

by Piotrek Reinmar Koszuliński

Prawie miesiąc temu zapraszałem Was na różne wydarzenia związane z JavaScriptem, które miały odbyć się tej jesieni. W dwóch z nich miałem brać udział jako uczestnik – to jest na DevMeetingach w Poznaniu i Krakowie. Poznań mamy już za sobą, a w Krakowie nastąpi mała zmiana – zamiast uczestnikiem, będę prowadzącym.

Ekipa organizująca szkolenia zwróciła się do mnie z prośbą, bym zastąpił Davida, któremu wypadły pilne sprawy. Nie mogłem odmówić i zabrałem się za przygotowania. Czego możecie się spodziewać? Na pewno szkolenie będzie kręciło się w okół Node’a i middle-endu. W związku z obserwacjami dotyczącymi problemów, jakie z SSJS mieli uczestnicy warszawskiego meetingu, postaram się wyjaśnić, jak organizować kod, radzić sobie z asynchronicznością, czy pisać przenośne moduły w standardzie CommonJS. Poruszę więc kwestię odmiennych charakterystyk przeglądarkowego i serwerowego JavaScriptu. Wstęp ten przyda się do zadań praktycznych, które tak jak na pozostałych jesiennych meetingach będą kluczowym elementem Krakowskiego szkolenia.

Rejestracja jest darmowa i jeszcze otwarta. Do zobaczenia w Krakowie :)

sie 29 11

JavaScript na jesień 2011

by Piotrek Reinmar Koszuliński

Nieubłaganie zbliżamy się do końca lata, a na pewno letniej pogody. Warto więc zaplanować sobie kilka indoorowych imprez. Oto moje propozycje:

DevMeetings – hot topics

DevMeetings - hot topics

Na początku lata ekipa z DevMeetings zorganizowała trzydniowy DevCamp, na którym wykrystalizowały się trzy ciekawe backendowe tematy. Teraz nadszedł czas, aby przyjrzeć im się dokładniej. I tak odbędą się po kolei:

read more…

sie 20 11

Co lepiej wiedzieć o JavaScriptcie cz.2.: hoisting, deklaracje funkcji i wyrażenia funkcyjne

by Piotrek Reinmar Koszuliński

W poprzednim artykule pokazałem czym się różni zasięg blokowy od funkcyjnego, jakie problemy może spowodować ten drugi i jakie są plany na przyszłość. Wspomniałem też o zasięgu statycznym, czyli o domknięciach.

W tym artykule chciałbym wyjaśnić czym jest hoisting i porównać deklaracje funkcji (function declarations) z wyrażeniami funkcyjnymi (function expressions). Zauważyłem, że są to tematy obce wielu programistom JavaScript i myślę, że o ile test z poprzedniego artykułu wielu z Was nie powinien sprawić problemu, o tyle poniższy ma szansę być małym zaskoczeniem. Taką mam przynajmniej nadzieję :).

Źródła z których korzystałem, umieściłem na końcu wpisu.

Sprawdź się!

Spróbuj rozpoznać co wydrukuje każde wywołanie console.log. Skrypt z wszystkimi pytaniami, wraz z odpowiedziami wrzuciłem na Gista.

read more…