wtorek, 27 marca 2012

Jak uniknąć ściągania wszystkich tłumaczeń pakietów DEB (noweDebiany/Ubuntu)

W Debianowatych niezwykle wkurzające jest ściąganie wszystkich tłumaczeń opisów pakietów. Wielu języków w wielu repozytoriach brakuje, co wydatnie zwiększa czas odświeżania listy pakietów (aptitude update). Na szczęście łatwo to wyłączyć:

1. Do pliku /etc/atp/apt.conf dopisz linię
Acquire::Languages "none";

2. Usuń wszystkie pliki tłumaczeń
rm /var/lib/apt/lists/*_i18n_Translation-*


Od tego momentu będą ściągane tylko czyste listy pakietów, bez zbędnego balastu.

piątek, 24 lutego 2012

Erlang - szybki kurs. Część 2. Funkcje, pliki, kompilacja.

Czas na pierwszy program. Przy okazji poznacie podstawy składni języka Erlang.

Na początek kilka punktów ogólnych:
  • Komentarze w listingach zaczynają się od znaku %
  • Źródła zapisujemy do plików z rozszerzeniem .erl
  • Każdy plik źródłowy musi należeć do pakietu, który nazywa się tak jak plik z pominięciem rozszerzenia. Tak więc plik test.erl powinien zawierać pakiet test. To trochę jak w Javie, gdzie każda funkcja musi należeć do klasy, a w ogólnym przypadku nazwa pliku z klasą musi się nazywać tak jak zawarta w nim klasa z rozszerzeniem .java.
  • Funkcje opisuje się jako funkcja/liczba, np node/0. Wartość po znaku łamania to liczba argumentów funkcji (tzw. arity) - tutaj na przykład mowa o funkcji node nie przyjmującej żadnych argumentów. Arity jest częścią uogólnionej nazwy funkcji (nazwałem to Fully Qualified Function Name, w skrócie FQFN), więc funkcje o tej samej nazwie bazowej a różnej ilości argumentów to zupełnie różne obiekty. test/0 i test/1 to różne funkcje, nie mające (potencjalne) nic ze sobą wspólnego. Trochę działa to na zasadzie przeciążania funkcji w C++.
  • Każda funkcja należy do pakietu i jest wywoływana (jak już wiecie) przez pakiet:funkcja(argumenty). Wyjątek stanowią tzw. funkcje wbudowane (tzw BIF-y od built-in function), które nie należą do żadnego pakietu i  wywołuje się je przez "gołą" nazwę. Poznaliście już dwa BIF-y - to funkcje node/0 i nodes/0.
  • Na początku pliku źródłowego musimy dać listę eksportowanych funkcji. Funkcje nie eksportowane dają się wywołać tylko z poziomu własnego modułu z jednym wyjątkiem - BIFy z rodziny spawn wymagają, aby funkcja będąca ich argumentem była wyeksportowana.
  • Polecenia dla samego kompilatora (i preprocesora) poprzedzamy minusem (odpowiednik # z C/C++) i kończymy kropką.

czwartek, 23 lutego 2012