Sunday, May 12, 2013

Standardowe uprawnienia a SELinux (MAC vs. DAC)


Po raz pierwszy na swoim blogu publikuje nagranie, mam nadzieję że będzie użyteczne dla wielu osób. Niektóre tematy lepiej jest pokazać niż opisać, dlatego postanowiłem zrobić nagranie.

Temat "MAC vs. DAC" w kontekście SELinux jest bardzo popularny, ba zazwyczaj rozpoczyna niemal każdy dokument, książkę czy prezentację na temat SELinux. Jest to szczególny temat, bo wyjaśnia czym właściwie jest SELinux i czym różni się od tego czego używamy, czyli standardowych uprawnień systemu. Z nagrania dowiesz się czym właściwie jest SELinux.

Nazwa Security-Enhanced Linux podpowiada, że chodzi o wzmocnione bezpieczeństwo, ale nazwa modelu, który on implementuje (Mandatory Access Control) nie wiele wyjaśnia. W tym wideo wyjaśniam o co dokładnie chodzi w SELinux poprzez omówienie poniższe punktów:

1. Różnice pomiędzy MAC (Mandatory Access Control) a DAC (Discretionary Access Control)
2. Security-Enhanced Linux, co to dokładnie znaczy "wzmocniona/ulepszona"?
3. Dlaczego rozszerzony mechanizm kontroli sprawdzany jest po akceptacji standardowych uprawnień?

Sunday, March 3, 2013

LLVM i Linux

Ostatnio dużo słychać o nowościach wprowadzanych w Linuksie, głownie w jądrze. Jednak jest pewna nowość, która wprowadzi fundamentalne zmiany w kodzie całego systemu, ale dla użytkowników będzie prawie niewidoczna - przynajmniej nie w swojej naturalnej postaci. Prędzej czy później na pewno zaowocuje to ulepszeniami i nowościami, w niektórych obszarach już tak się stało ale po kolei. W tym tekście postaram się przedstawić projekt LLVM i Clang, wyjaśnić czym są, jak działają i dlaczego są lepsze od GCC, czyli tego czego obecnie używa GNU/Linux.

W informatyce wszystko zaczęło się od programowania, systemy operacyjne, aplikacje, a nawet same języki programowania. Jak to mówią niektórzy, w programowaniu prędkością światła jest C - jakkolwiek by to nie zabrzmiało, to tak czy inaczej jest to prawdą E=mc2.

Systemy operacyjne i oprogramowanie wymagające szybkości działania pisze się w C lub C++. Z czasem, gdy komputery stawały się coraz szybsze zaczęto przedkładać prostotę i szybkość programowania nad wydajność. Nie przejmowano się tym ponieważ ciągły wzrost mocy obliczeniowej obecnych komputerów to rekompensował. Wtedy zaczęły powstawać nowe odmiany języków programowania w sensie procesu przetwarzania kodu źródłowego na maszynowy. Odchodzono od kodu kompilowanego na rzecz wirtualnych maszyn i interpreterów. Wirtualne maszyny Javy VM i .NET-tu odniosły ogromny sukces. W przypadku Javy największym zyskiem była przenośność napisanych programów, koncepcja kodu pośredniego w postaci wirtualnej maszyny sprawdziła się i udowodniła swoją słuszność.

Drugą bardzo popularną gałęzią i wcale nie nową były języki interpretowane: PHP, Python i cała masa innych. Język C i C++, zwłaszcza ten drugi nadal się rozwijał, ale koncepcja generowania kodu nie zmieniła się od lat. Zwolennicy wirtualnych maszyn chwalili sobie korzyści jakie niesie ich używanie, a użytkownicy języków skryptowych chwalili sobie szybkość i prostotę pisania w tych językach. Czy to znaczy, że racja musi leżeć po jednej stronie, nie! Wojna pomiędzy zwolennikami języków statycznych i dynamicznych zawsze trwała, a w tym czasie ktoś wpadł na genialny pomysł aby najlepszy język na świecie wyposażyć w rozwiązanie hybrydowe. Okazuje się, że lepszym wyborem jest połączenie dwóch metod niż wybieranie jednej z nich. Co ciekawe, koncepcja połączenia kompilacji statycznej z dynamiczną w C/C++ nie powstała wczoraj, ale w 2000 roku w projekcie LLVM.

LLVM


Logo projektu LLVM
Pełna nazwa projektu brzmi Low Level Virtual Machine, ale nie do końca oddaje ona czym obecnie jest projekt LLVM. Przede wszystkim utworzenie wirtualnej maszyny dla kodu generowanego przez C/C++ nie było jednym celem projektu. Chciano przy okazji wzbogacić kompilator o nowe możliwości, których brakowało do tej pory głównie dla GCC. LLVM to grupa kilku podprojektów tworzących kolekcję narzędzi ułatwiających i optymalizujących proces tworzenia kodu. Modularna budowa umożliwia wygodny rozwój i widocznie gwarantuje sukces. Zanim jednak podam przykłady obecnych osiągnięć LLVM chciałbym zwrócić uwagę na coś co jest sercem każdej maszyny wirtualnej - to jej "Bitcode".

Tradycyjny kompilator języka C/C++, taki jak GCC wykonuje trzy podstawowe etapy:

  • poddaje składni leksykalnej kod źródłowy
  • generuje odpowiadający instrukcjom języka kod maszynowy, dołącza niezbędny kod używanych bibliotek i optymalizuje wszystko razem
  • tworzy ostateczny format pliku wykonywalnego z kodem maszynowym

Zwróć uwagę, że od samego początku do końca kompilator posługuje się kodem maszynowym przeznaczonym dla konkretnej architektury. Ponad to wirtualna maszyna LLVM nie zajmuje się pierwszym etapem, tym zajmuje się inny projekt zwany Clang, o którym napiszę w dalszej części tekstu.

Architektura LLVM


W celu lepszej prezentacji architektury LLVM oraz zrozumienia jakie zadania realizują poszczególne podprojekty stworzyłem poniższy schemat. Prezentuje on przepływ kodu źródłowego, aż do kodu maszynowego i nie zawiera nawet większości podprojektów LLVM.

Architektura LLVM
LLVM posiada tak zwane front-endy, są to kompilatory. Ich zadaniem jest dostarczenie kodu dla wirtualnej maszyny w specyficznym formacje, nie mającym jednak nic wspólnego z kodem maszynowym przeznaczonym dla konkretnej architektury. Standardowo GCC nie potrafi generować bitcode dla LLVM, dlatego stworzono odmianę kompilatora zwaną llvm-gcc, obecnie jest to rozszerzenie dla samego GCC zwane DragonEgg. Jego zadanie polega na analizie kodu źródłowego zgodnie ze standardami GCC, ale generowany kod jest przeznaczony dla wirtualnej maszyny LLVM, a nie architektury procesora.
Drugim kompilatorem jest Clang, to własny projekt LLVM stworzony od podstaw na jego potrzemy. To właśnie on jest jednym z powodów sukcesu LLVM i chęci kompilacji Linuksa na LLVM.

"LLVM - 2.0 and beyond!"
Chris Lattner,
Google Tech Talk July 27, 2007

Clang


Clang jest kompilatorem języka C, C++ i Objective C, który jest kompatybilny z GCC. Oczywiście jego kompatybilność dotyczy głównie składni a nie rozszerzeń, te drugie są z kolei największym problemem w procesie kompilacji jądra Linux na Clang.

Największą zaletą Clang są jego rozbudowane i przyjazne dla człowieka komunikaty o błędach, oprócz lepszego wskazywania błędów podpowiada jak je rozwiązać. W praktyce oznacza to szybsze odnajdowanie błędów i ich naprawę, czyli szybszy rozwój systemu. Ważne jest to, że często Clang szybciej wykonuje kompilację, zużywa przy tym mniej zasobów, tworzy mniejszy i bardziej zoptymalizowany kod wykonywalny niż GCC.

"LLVM - 2.0 and beyond!"
Chris Lattner,
Google Tech Talk July 27, 2007
Jedną z egzotycznych możliwości Clang jest dynamiczna kompilacja JIT, tak jak ma to miejsce w przypadku np. Pythona - kompilowany kod jest od razu wykonywany na bieżąco.

Podobnie jak w LLVM budowa Clang jest modularna i Clang jest czymś więcej niż tylko kompilatorem - to kompilator z możliwością integrowania przydatnych narzędzi. Clang obsługuje wiele funkcji, które umożliwiają lepsza integrację ze środowiskami IDE. Przykładem takiego rozszerzenia jest source code refactoring (zobacz nagranie Clang MapReduce -- Automatic C++ Refactoring at Google Scale), który umożliwia zmianę nazw np. metod konkretnej klasy. Drugim przykładem może być Clang Static Analyzer, który pozwala na sprawdzenie błędów w kodzie bez kompilacji, niestety sama analiza nie jest szybsza niż sama kompilacja, ale z kompilacją byłaby o wiele dłuższa.

LLVM Optimizer


"LLVM - 2.0 and beyond!"
Chris Lattner,
Google Tech Talk July 27, 2007
Mechanizm optymalizacyjny maszyny LLVM działa na własnym formacie kodu, dzięki temu niezależnie czy kod pochodzi z C, C++ czy innego języka poddawany jest tym samym mechanizmom optymalizacji, a później jest przetłumaczany na kod maszynowy dla konkretnej architektury, czyli na tzw. back-end. To sprawia, że programiści do tej pory pracujący nad optymalizacją różnych kompilatorów teraz mogą wspólnie pracować nad jednym projektem i na dodatek na przejmować się specyfiką języka ani architektury.

Istotą bitcode jest niezależność od języka i architektury, dlatego musi on być w takiej formie, aby bez problemu można było przetłumaczyć każdą instrukcję z każdego języka na niego oraz aby każdy bitcode można było potem przetłumaczyć na dowolną architekturę. Tym pierwszym zajmują się front-end, a drugim back-end.

LLVM Intermediate Representation (IR)


IR to format języka wirtualnej maszyny LLVM (jego low-level bitcode), co ciekawe dostępny jest ona w tekstowej postaci czytelnej dla człowieka, co przyniosło dla LLVM największy sukces. Dzięki temu pisanie front-endów i back-endów jest bardzo proste w przeciwieństwie do GIMPLE z GCC.

Formą, która obsłuży każdy język i każdą architekturę okazały się krótkie instrukcje o stałej długości, jak w RISC. Opis tego kodu można zobaczyć na stronie projektu.
Z kolei na blogu LLVM został opublikowany opis dokładnie wyjaśniający cykl życia instrukcji w maszynie LLVM: Life of an instruction in LLVM.

Kto używa LLVM


Przede wszystkim Apple, LLVM jest podstawą XCode. Apple wykorzystując modularność LLVM (back-end) i możliwość kompilacji dynamicznej stworzyło OpenCL - framework, który pozwala na pisanie kodu niezależnego od środowiska sprzętowego. Jednym z przykładów jest możliwość wykonania graficznych operacji na sprzęcie nie wyposażonym w GPU.

Kolejnym dużym użytkownikiem jest Google, który używa Clang dla swoich własnych bibliotek i silnika wyszukiwań. Najbardziej jednak skorzystał na tym Android, jego Renderscript jest podstawą działania aplikacji graficznych na przeróżnych tabletach i telefonach. Zastanawiałeś się kiedyś czym jest format .apk używany przez aplikacje ściągane ze sklepu Google play? To bitcode LLVM, który został skompilowany na dowolnym urządzeniu. Podczas pierwszego uruchomienia zostanie on przetworzony przez back-end z bitcode LLVM na architekturę twojego urządzenia i po prostu działa.
Tak samo sprawa wygląda z aplikacjami w Chrome, spójrz na projekt Portable Native Client (PNaCl).

Warto wspomnieć o GNOME Shell, który emuluje efekty graficzne nawet na maszynach nie wspierających akceleracji 3D, a to dzięki LLVMpipe.

Nie trudno domyślić się że Apple i Google są firmami, które rozwijają LLVM ale są też inne głównie Qualcomm Innovation Center i Intel oraz wiele instytucji naukowych i edukacyjnych. LLVM używają ośrodki naukowe, takiej jak CERN i Argonne National Laboratory. LLVM/Clang używa nawet Adobe, więcej przykładów możesz znaleźć na stronie LLVM Users.

Kto przeszedł na LLVM


Czy wiesz, że Linus Torvalds zaczął pracę nad jądrem Linux, bo zafascynował się systemem MINIX? Teraz domyślnym kompilatorem w MINIX jest Clang.

Obecnie przechodzi na niego FreeBSD, wszystko zaczęło się od tego, że projekt nie mógł zaakceptować nowej licencji GPLv3 obowiązującej nowe wersie GCC. Szukając wyjścia z sytuacji postanowił wybrać LLVM, podobnie było z Apple.

Kto nie chciałby mieć pingwina ze skrzydłami smoka?


LLVMLinux

Dotarliśmy do sedna tego tekstu, wygląda na to, że po sukcesach jakie odniósł LLVM deweloperzy chcą umożliwić kompilację jądra i całego systemu na Clang. Jeżeli chodzi o jądro to tym zajmuje się projekt LLVMLinux (llvm.linuxfoundation.org), natomiast jeżeli mowa o pierwszej dystrybucji, która zostanie skompilowana w całości na Clang to najprawdopodobniej będzie to Debian. Obecnie tylko 12% pakietów nie udało się jeszcze skompilowanych przy pomocy Clang, stan tego procesu można śledzić przez stronię clang.debian.net. Wprowadzeniem Clang do Debiana zajmuje się Sylvestre Ledru, jak pisze, robi to po to, aby przekonać się czy system GNU/Linux może skorzystać na LLVM. Więcej o procesie kompilacji Debiana dowiesz się z prezentacji Make Debian compiler agnostic - Building Debian with LLVM/Clang na FOSDEM'13.

Parę dni temu odbyła się konferencja Embedded Linux Conference 2013, na której Behan Webster prezentował obecny stan prac w procesie przystosowywania jądra do kompilacji na Clang. Pierwsza część prezentacji odpowiada na pytanie dlaczego kompilować jądro na Clang, druga część dotyczy technicznych problemów z tym związanych.



Szybki rozwój


Podczas spotkania LLVM Developer Meeting 2012 zaprezentowano jak bardzo przyśpiesza rozwój tego projektu. Sądząc po liczbach, wspomnianych wyżej osiągnięciach i możliwościach nie sposób oprzeć się wrażeniu, że LLVM i Clang w najbliższej przyszłości mogą stać się standardem w projektach open source.

LLVM Developer Meeting 2012 San Jose, November 8, 2012
LLVM Developer Meeting 2012 San Jose, November 8, 2012
Co prawda nie brakuje również negatywnych ocen dla LLVM/Clang oraz wątpliwości związanych z licencją UIUC License (BSD-style). Wiele z tych kwestii jest poruszanych w artykule Distributions looking at LLVM na LWN.net.

Mimo wszystko uważam, że uczynienie systemu Linux kompatybilnym z LLVM/Clang jest jak najbardziej słuszne, zawsze zostaje jeszcze GCC. Wierzę, że w open source, tak jak w biologii różnorodność zwiększa szanse przetrwania gatunku. Możliwość kompilacji systemu Linux na dwóch różnych kompilatorach może mu tylko pomóc, a nie zaszkodzić.


Pozostałe zasoby:
RenderScript, edu4android.com
"Mac OS X 10.5 Leopard: the Ars Technica review", arstechnica.com
"LLVM", The Architecture of Open Source Applications

Wednesday, February 20, 2013

Najpopularniejsze dystrybucje i oprogramowanie w 2012 roku

Już w grudniu użytkownicy największego linuksowego forum mogli oddawać swoje głosy na najpopularniejsze projekty open source w roku 2012. Wyniki zostały ogłoszone na początku lutego 2013 roku.

Poniżej przedstawię wybrane kategorie, które mnie cieszą, bo sam na nie głosowałem.

2012 LinuxQuestions.org Members Choice Award Winners:

Server Distribution of the Year - Debian (28.74%)
Najpopularniejszą dystrybucją serwerową został Debian, podobnie jak w poprzednim roku, ale spadł jego udział z 31.15%. Ja używam tego systemu również na komputerach domowych.

Database of the Year - MySQL (40.00%)
Najpopularniejszym serwerem baz danych został MySQL, podobnie jak rok temu, wtedy 49.54%. Jak widać proces migracji do MariaDB będzie bardziej ewolucyjny, niż reakcyjny na politykę Oracle po przejęciu Sun.

Virtualization Product of the Year - VirtualBox (53.79%)
Ten wybór mnie już nie cieszy, głosowałem na KVM i mam nadzieję, że mój wkład w jego popularyzację w postaci artykułu, który ukaże się już w marcu i kwietniu coś przyśpieszy. W ogóle nie wiem w jakim kontekście VirtualBox miałby występować poza zastosowaniami desktopowymi. Jeżeli chodzi o otwartą i serwerową wirtualizację to tu wygrywa KVM.

Network Security Application of the Year - Wireshark (25.79%)
Nie pamiętam, czy był do wyboru tcpdump, jeżeli był to głosowałem na niego, w przeciwnym wypadku, również głosowałem na Wireshark.

Host Security Application of the Year - SELinux (34.07%)
To kolejna z dużych radości, chociaż rok temu było 50.42%, nie wiem dlaczego. W każdym bądź razie jest to jednocześnie najlepszy i najmniej używany mechanizm bezpieczeństwa w GNU/Linux. Od dawna walczy z tym Red Hat, to on ma chyba największy wkład w jego rozwój.

Text Editor of the Year - vim (34.35%)
Tu bez komentarza, oczywiście sam na niego głosowałem i używam :)

Programming Language of the Year - Python (28.03%)
Python też mnie cieszy, widać nie tylko Perl. Mój ips_outline został napisany w Pythonie.

Web Server of the Year (NEW) - Apache httpd (74.04%)
A tu bez rewelacji, ale jako nowa kategoria otwiera drzwi dla innych projektów.

To chyba wszystkie kategorie, które mnie interesują, jeżeli chcesz zobaczyć pozostałe znajdziesz je tutaj.

Powyższe wyniki ankiet stanowią pewnego rodzaju odpowiedź na pytanie np. "Jaka dystrybucja jest najlepsza na serwer?", "Jaki tekstowy edytor jest najlepszy?" itp.. Pytanie tylko na ile społeczność LinuxQuestions.org stanowi najlepszą próbę do przeprowadzania takich badań. LQ to największe międzynarodowe forum linuksowe, które istnieje od ponad 12 lat. Lepszy przekrój dałoby tylko przeprowadzenie takich ankiet na innych forach i sumowanie wyników. Natomiast jeżeli chodzi o ankiety z tylko jednego forum, to LQ jest chyba najlepszym miejsce.

Sunday, February 17, 2013

Debian Squeeze - problem z grafiką w popularnych CMS-sach (PHP - gd bundled)

Jeżeli zainstalowałeś jeden z popularnych CMS-ów takich jak Moodle 2.3/2.4, czy Drupla na serwerze z Debian Squeeze i szukasz powodu niedziałającej grafiki, to właśnie znalazłeś rozwiązania tego problemu. Mimo iż skrypt instalacyjny informuje, że wszystkie wymagane elementy środowiska są prawidłowe, to grafika prezentowana na stronie nie jest generowana. Widać jedynie obszar, w którym powinna znajdować się jakaś grafika.

Problem leży po stronie biblioteki GD używanej w PHP. Oryginalna wersja tej biblioteki napisana jest w C (libgd), do PHP została tylko przeportowana. Ponieważ jest bardzo potrzebna w skryptach CMS-ów, to dodano do niej jeszcze kilka innych "dodatkowych" funkcji, które rozszerzają funkcjonalność biblioteki GD. Dodatkowe funkcje nie należą do oficjalnego źródła biblioteki libgd, z której korzysta pakiet php5-gd w systemie Debian Squeeze. Więcej szczegółów można znaleźć w dyskusji php5-gd: not using gd bundled with php5.

Rozwiązania są dwa, pierwszy polega na samodzielnej kompilacji PHP, opis tych czynności znajdziemy na poniższych stronach:

Making Apache use compiled PHP instead of bundled package on Debian
Tutorial: How to enable PHP5′s imageantialias on Ubuntu 10.10
GD package problems with Debian/Ubuntu: Document distro workarounds

Pamiętaj jednak, że będziesz musiał dokonywać tej kompilacji przy każdej aktualizacji. Poza tym, sama kompilacja może przysporzyć wiele problemów, o konieczności instalacji wszystkich bibliotek deweloperskich dla PHP5 nie wspomnę. Dlatego lepszym rozwiązaniem jest druga metoda.

Metodę tą można by żartobliwie nazwać "Dotdeb way". Dotdeb to repozytoria dla stabilnej wersji systemu Debian, ich zadaniem jest dostarczenie aktualnych paczek dla tzw. serwerów LAMP.

W tym przypadku interesuje nas paczka php5-gd, ale musimy zainstalować całe PHP. Oto przepis:

1. Do repozytoriów dodajemy wpisy:

# vim /etc/apt/sources.list

deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all

2. Dodajemy również klucz autoryzacyjny dla dotdeb:

# wget http://www.dotdeb.org/dotdeb.gpg
# cat dotdeb.gpg | apt-key add -

3. Teraz musimy uaktualnić spis dostępnych paczek o nowe repozytoria:

# aptitude update

4. Następnie usuniemy paczkę php5-gd:

# aptitude purge php5-gd

5. Ostateczne instalujemy tą samą paczkę, ale tym razem program wybierze tą nowszą wersję z dotdeb. Należy wybrać opcję, która zainstaluje tylko nowe GD, nie zgadzając się na rozwiązanie polegające na aktualizacji innych paczek takich jak MySQL:

# aptitude install php5-gd

To już koniec, posiadamy wersję PHP5 GD bundled, cały problem sprowadza się do tego jednego słówka :)

Jeżeli grafika zacznie Ci działać tylko po zrestartowaniu serwera Apache to jesteś szczęściarzem. W moim przypadku zaczęła działać częściowo po aktualizacji CMS-u, całościowo zaczęła działać dopiero na nowo zainstalowanym CMS-sie.
Pamiętaj również, że aktualizacja niektórych paczek (np. MySQL) obecnie jest wstrzymana, warto jakoś formalnie to gdzieś zapisać w konfiguracji, bo kiedyś może narobić problemów.

Saturday, December 22, 2012

SPDY (mod_spdy) i mod_pagespeed

Ostatnio pisałem o nowym rozszerzeniu TCP Fast Open, stworzonym przez Google w ramach inicjatywy Make the Web Faster. Teraz przedstawię dwa kolejne projekty z tego laboratorium, to protokół połączeniowy SPDY i moduł do Apache mod_pagespeed.

TCP Fast Open skraca czas otrzymania pierwszych danych po nawiązaniu sesji TCP, to spory zysk jeżeli ilość pakietów pomnożymy przez np. milion. Nie zmienia to faktu, że przeglądarka używając bezstanowego protokołu HTTP za każdym zapytaniem musi nawiązywać nowe połączenie TCP. Nie prawda? Racja, w HTTP 1.1  jest Keep-Alive. Mało tego, jest też HTTP Pipelining (opisywałem), który pozwala wysyłać wiele zapytań HTTP jednocześnie, bez czekania na odpowiedzi wcześniejszych zapytań.
Jednak HTTP Keep-Alive i HTTP Pipelining są pewnego rodzaju doróbkami do archaicznej architektury protokołu HTTP, na podstawie której buduje się nowoczesny Web. Tak właśnie powstał SPDY (od SPeeDY). Zadaniem protokołu SPDY jest rozbudować HTTP o mechanizm nawiązywania stałych sesji, a nawet pozwala ustalać priorytety dla każdego połączenia. W czym pomoże SPDY i jak można zobaczyć poniżej.





Jeżeli chcesz, aby Twój serwer Apache obsługiwał protokół SPDY wystarczy, że zainstalujesz mod_spdy i skonfigurujesz mod_ssl, ponieważ SPDY działa tylko z https. Należy również otworzyć port tcp/443. Na stronie projektu opisany jest proces instalacji, która jest bardzo prosta, jej poprawność w Debianie sprawdzimy komendą:
apache2ctl -M

Jeżeli chcesz sprawdzić, czy jakiś serwer obsługuje SPDY skorzystaj z spdycheck.org. Natomiast co do obsługi SPDY w przeglądarce, to najlepiej sprawdzić na stronie producenta. Firefox ma dodatek, który na pasku adresu wskazuje, czy obecna strona korzysta ze SPDY.

Drugi moduł mod_pagespeed również ma poprawić prędkość ładowania stron w przeglądarce, ale jego obszarem działania jest zupełnie co innego niż w SPDY. Tu chodzi o optymalizację budowy strony, tzn zdjęć, kodu i wszystkiego co da się poprawić, aby jej przetwarzanie trwało krócej. Np. w ostatniej wersji dodano optymalizację związaną z możliwością rozwijania adresów innych serwerów za pomocą treści otrzymanych przez pierwszy serwer. Zaoszczędza to czas czekania na odpowiedzi serwera DNS. Krótko mówiąc mod_magespeed, to silnik do automatycznego wprowadzania sztuczek w kodzie strony, aby te były szybciej interpretowane przez przeglądarki, ale co ja będę pisał, najlepiej samemu zobaczyć.






Instalacja jest prosta, jej poprawność można sprawdzić w ten sam sposób, jak w mod_spdy. Tu jednak trzeba troszkę poeksperymentować z dostępnymi filtrami.

Zasoby:

SPDY
http://googlecode.blogspot.com/2012/01/making-web-speedier-and-safer-with-spdy.html
http://www.chromium.org/spdy/spdy-whitepaper
http://code.google.com/p/mod-spdy/

mod_pagespeed
http://code.google.com/p/modpagespeed/
http://googledevelopers.blogspot.com/2012/12/new-modpagespeed-cache-advances.html

Thursday, December 13, 2012

Tradycyjne podsumowanie roku

Jak zwykle na swoim blogu prezentuję podsumowanie mijającego roku przez Google, na które czekałem z ciekawością. Niestety, w porównaniu do dwóch poprzednich lat ten klip nie zrobił na mnie takiego wrażenia. Może to nowe podejście do Zeitgeist przez Google. Oczywiście pisząc o tym, że moje oczekiwania trochę się zawiodły to konkretnie mam na myśli podkład muzyczny. Natomiast sam cel podsumowania wydarzeń minionego roku jak zwykle ma ukryty cel, chodzi o pokazanie jak te wydarzenia były relacjonowane przez sieć.

Dostępna jest również strona Zeitgeist 2012, na której można sprawdzić co w naszym kraju było najczęściej wyszukiwane w 2012 roku.




W rym roku podsumowania dokonała również fundacja Linuksa.




Jako podsumowanie roku 2012 polecam również obejrzenie Linux Kernel Report z konferencji LinuxCon Europe 2012, która odbyła się na początku listopada. Można tam usłyszeć o większość nowinek, w które jądro Linux zostało wyposażone w mijającym roku.