x86_64, wrażenia

Michał ‘mina86’ Nazarewicz | 18 lipca 2008

64-bitowe procesory x86_64, x64, amd64, intel64, czy jak je tam chcemy zwać, zdobywają coraz większą popularność. Jest również coraz więcej systemów operacyjnych wykorzystujących ich potencjalne możliwości. Nareszcie pozbyliśmy się problemu przekręcenie licznika w 2038! Nareszcie możemy zaadresować 1 TiB fizycznej pamięci (to, że nasza płyta główna obsługuje 3 GiB, a jak mamy szczęście 3,5 GiB to już szczegół). Nareszcie mamy 48-bitową (tj. 256 TiB) logiczną przestrzeń adresową! Do tego dochodzi lepsza obsługa instrukcji SIMD, więcej rejestrów, 64-bitowa arytmetyka itp.

Rzecz jasna nie ma nic za darmo. Za te udogodnienia musimy płacić i bynajmniej nie chodzi mi o pieniądze, bo to raczej najmniej istotne — istotniejszą kwestią jest większe zużycie pamięci z powodu użycia ośmiobajtowych wskaźników, czy wyrównania stosu do ośmiu bajtów nawet jeżeli zrzucamy na niego liczbę 32-bitową. Do tego dochodzi jeszcze bardziej skomplikowany, a przez to wolniejszy, proces tłumaczenia adresów logicznych na adresy fizyczne.

Czytaj dalej »

Masowe wysyłanie listów

Michał ‘mina86’ Nazarewicz | 3 lipca 2008

W tekście poniższym opiszę jak i dlaczego właśnie tak należy wysyłać masowe listy (tj. do wielu osób jednocześnie). Dość często zdarza mi się otrzymywać wiadomości z przerośniętą listą adresatów, z których połowy nawet nie znam — jest to zdecydowanie niedobry sposób na rozsyłanie korespondencji!

Czytaj dalej »

Sieci Komputerowe

Michał ‘mina86’ Nazarewicz | 16 czerwca 2008

Ponownie coś z serii „ja juz zaliczyłem na 5,0, a może komuś się przyda”. Odpowiedzi na pytania przygotowawcze przed kolokwium z przedmiotu Sieci komputerowe II. Jak w przypadku poprzedneigo wpisu, plik ten największą wartość ma dla studentów Elektroniki Politechniki Warszawskiej, ale może też ktoś inny będzie miał ochotę przejrzeć.

Systemy Operacyjne

Michał ‘mina86’ Nazarewicz | 16 czerwca 2008

Coś z serii „ja już zaliczyłem na pięć, a może komuś się przyda”, czyli przygotowany przeze mnie plik z odpowiedziami na pytania przygotowawcze do egzaminu z przedmiotu Systemy operacyjne. Zapewne największa wartość mają one dla studentów Elektroniki Politechniki Warszawskiej, niemniej jednak może ktoś się tym zainteresuje.

Czytaj dalej »

ARP ping

Michał ‘mina86’ Nazarewicz | 6 czerwca 2008

Czas jakiś temu zainstała u mnie potrzeba sprawdzenia, na komputerze bez przydzielonego adresu sieciowego, czy komputer o danym adresie istnieje. Chciałem mianowicie, zależnie od wyników sprawdzenia skonfigurować sieć statycznie lub dynamicznie. Stosunkowo szybko doszedłem do wniosku, iż szczególną uwagę należy zwrócić na protokół ARP.

W protokole Ethernet urządzenia są rozpoznawane za pomocą adresów MAC, a więc, aby móc wysłać pakiet do komputera o danym IP należy najpierw poznać jego adres sprzętowy. Do tego właśnie służy protokół ARP (gwoli ścisłości, może on być wykorzystany również przy innych protokołach warstwy drugiej i trzeciej).

Jak to działa? Pierwsza strona rozsyła do wszystkich (na adres broadcast, tj. FF:FF:FF:FF:FF:FF) zapytanie, wypełniając swój adres IPMAC oraz adres IP, o który chce się zapytać. W odpowiedzi, druga strona wysyła ramkę z oboma adresami, swoimi i komputera wysyłającego pytanie.

Nie każdy zdaje sobie sprawę, iż protokół ten można wykorzystywać nawet jeżeli nie ma się swojego adresu sieciowego — wówczas w odpowiednie pole wpisujemy same zera. W niczym to nie przeszkadza — w żadnym momencie protokół warstwy trzeciej nie jest wszak wykorzystywany.

Warto wspomnieć, iż mechanizm ten jest wykorzystywany przez klienty DHCP, do sprawdzania (na wszelki wypadek), czy adres im nadany jest faktycznie wolny — nazywa się to Adress Conflict Detection.

Dla zainteresowanych aplikacja, która próbuje wykryć adres sprzętowy urządzenia o podanym adresie sieciowym.

Double-checked locking pattern

Michał ‘mina86’ Nazarewicz | 29 kwietnia 2008

Jakiś czas temu w pewnych okolicznościach poruszony został wzorzec double-checked locking singleton, który jak powszechnie wiadomo nie jest do końca poprawny. Wynikła z tego krótka dyskusja, której kompilację pozwolę sobie wkleić poniżej (gdyż nie jest ona ogólnie dostępna, a nie lubię, gdy informacje się marnują).

Czytaj dalej »

Ochrona stosu

Michał ‘mina86’ Nazarewicz | 8 kwietnia 2008

Prezentacja, którą omawiałem w trakcie prelekcji na 5. Sesji linuksowej traktująca o mechanizmie ochrony stosu polegającym na dodaniu strażnika pomiędzy adresem powrotu, a zmiennymi lokalnymi funkcji. Archiwum tar zawiera również proste programy, które były prezentowane w trakcie wykładu. Na stronach serwisu TechIT dostępne jest nagranie wykładu.

Stałość fizyczna i logiczna w C++

Michał ‘mina86’ Nazarewicz | 21 marca 2008

Chciałbym zaprezentować pewien tekst, który przygotowałem na jeden z przedmiotów na studiach. Traktuje on o modyfikatorze const i mutable oraz określa pojęcie stałości logicznej czyli niezmienności zachowania obiektu, gdy patrzymy z zewnątrz. Może komuś się to przyda. Czekam również na wszelkie komentarze.

Czytaj dalej »

Irssi AI

Michał ‘mina86’ Nazarewicz | 26 lutego 2008

Skrypt implementujący zaawansowane algorytmy sztucznej inteligencji odpowiadający na pytania zadawane na kanale. Może udzielać odpowiedzi albo na wszystkie pytania albo tylko na te napisane bezpośrednio do nas (tzn. poprzedzone naszym nickiem).

bitlbee query auto

Michał ‘mina86’ Nazarewicz | 20 lutego 2008

Ciekawy patch do bitlbee pozwalający na automatyczne ignorowanie, odrzucanie lub akceptowanie żądań o autoryzację. Można np. przefiltrować wszystkie wiadomości zawierające adresy URL, co znacznie zmniejsza ilość spamu. Można też ustawić akceptowanie wszystkich pozostałych zadań.

Problem krzyczących beduinów

Michał ‘mina86’ Nazarewicz | 19 lutego 2008

Na pustyni stoją beduini (na początku każdy wie tylko jak ma na imię), z których każdy ma swoje unikalne, w skali całej pustyni, imię. Są usytuowani w ten sposób, że jeżeli jakiś beduin coś krzyknie to z pewnością, przynajmniej jeden, inny beduin go usłyszy. Beduini maja na tyle podzielną uwagę, że jeżeli słyszą głosy wielu innych beduinów to są w stanie je rozróżnić i niejako "zakolejkować" otrzymane wiadomości, ale nie są w stanie rozpoznać, z której strony ani od kogo usłyszeli konkretną informację (zarówno, gdy odbierają wiele wiadomości jednocześnie jak i gdy odbierają tylko jedną wiadomość).

Czytaj dalej »

Transmisja cyfrowa

Michał ‘mina86’ Nazarewicz | 13 lutego 2008

Zainspirowany wpisem Michała Górnego postanowiłem napisać coś o transmisji cyfrowej. Wszak wielkości w naturze rzadko kiedy występują w postaci cyfrowej--aby się takiej doszukać należy zejść aż do poziomu cząstek elementarnych i analizowanie spinów i innych niezrozumiałych dla zwykłego człowieka parametrów. Jak więc to się dzieje, że komputer operuje na bitach? Co to w ogóle ta telewizja cyfrowa?

Czytaj dalej »

Komentarz to, czy może skrypt?

Michał ‘mina86’ Nazarewicz | 12 lutego 2008

Przenosząc się na Joggera straciłem sporo czasu na dochodzenie czemu skrypty, które zamieszczałem nie działały tak jak powinny (tzn. nie działały w ogóle). Okazało się, że zależnie od typu MIME strony skrypty są różnie interpretowane. A dokładniej mechanizmy ochrony skryptów.

Ze względu na przeglądarki nie rozumiejące tagu script przyjęło się kod skryptu umieszczać w komentarzu. Przeglądarki wspierające skrypty domyślały się, że to tak naprawdę kod skryptu i jakoś sobie z tym radziły. Ku memu lekkiemu zdziwieniu odkryłem, że Opera i Firefox przestają wykonywać kod skryptu, gdy strona jest dostarczona jako application/xhtml+xml. Aby sprawę zbadać bardziej szczegółowo stworzyłem taką oto stronę testową:

Czytaj dalej »

Zabezpieczanie kodu strony WWW

Michał ‘mina86’ Nazarewicz | 12 lutego 2008

Niektórzy uważają, że użytkownik czytający ich stronę nie powinien mieć dostępu do niczego poza ostatecznym efektem renderowania strony. Najczęściej jest to spowodowane chęcią zabezpieczenia kodu HTML lub obrazków przed kopiowaniem i używaniem ich do własnych celów.

Czytaj dalej »

O kryptografii słów kilka

Michał ‘mina86’ Nazarewicz | 12 lutego 2008

Każdy człowiek ma jakieś tajemnice, których nie chce nikomu zdradzać. Równocześnie każdy ma sekrety, którymi chce się z kimś podzielić, ale tak, żeby nikt więcej ich nie poznał. Sytuacje takie mogą się zdarzać w codziennym życiu przeciętnego obywatela, w życiu dużej firmy lub całego państwa. Utrzymanie w tajemnicy pewnych tajemnic może się przyczynić do czyjegoś sukcesy lub porażki. Winston Churchill (1874-1965) przyznał, że złamanie kodów Enigmy przez trzech polskich matematyków (Mariana Rejewskiego (1905-1980), Jerzego Różyckiego (1906-1942) i Henryka Zygalskiego (1906-1978)) pozwoliło w znacznym stopniu skrócić czas wojny (i co za tym idzie, zmniejszyć liczbę ofiar).

Czytaj dalej »

Pierwsze kroki po zainstalowaniu Slackware’a

Michał ‘mina86’ Nazarewicz | 12 lutego 2008

W niniejszym artykule opiszę czynności, jakie zazwyczaj wykonuję zaraz po zainstalowaniu Slackware’a. Nie są to rzeczy, które doprowadzają do idealnego zabezpieczenia, olbrzymiego wzrostu wydajności, czu użyteczności systemu, ale raczej kroki wyważone pomiędzy tymi aspektami. Oczywiście, jest to opis tego co ja robję, więc niekoniecznie wszystko, co zostało tutaj opisane, będzie Ci odpowiadać.

UPDATE 18/04/08: Dodane TMOUT.

Czytaj dalej »

GNU/Linux History

Michał ‘mina86’ Nazarewicz | 12 lutego 2008

This article was prepared as presentation for my English class and since I made it I thought to put it on my homepage. As presentation it was not designed to read so please excuse me for lousy language. Moreover, I don't claim that it presents the whole history nor that it is the best source of information, however someone may find it useful.

Czytaj dalej »

Wrażenia z Gentoo

Michał ‘mina86’ Nazarewicz | 12 lutego 2008

Ostatnio, przy okazji zmiany systemu plików z Reiser4 na ext3 postanowiłem zainstalować Gentoo. Głównym motywem był jednak nie system plików, a fakt posiadania 64 bitowego procesora, który nie jest wspierany przez Slackware - dystrybucję, którą używam. Tak, wiem o istnieniu Slamd64, ale od tej dystrybucji wolę trzymać się z daleka… (Update: Na chwilę obecną, gdy dodaję ten wpis do Joggera, mogę powiedzieć, że Slamd64 12.0 nie jest wcale takie złe i działa całkiem stabilnie i przyjemnie.)

Czytaj dalej »

Przywracanie możliwości bootwania GNU/Linuksa

Michał ‘mina86’ Nazarewicz | 12 lutego 2008

W artykule poniższym zamierzam opisać jak przywrócić LILO jako bootloader w sytuacji, gdy został on zastąpiony loaderem z Windowsów NT, co w efekcie powoduje niemożność uruchomienia GNU/Linuksa. Zakładam, że na dysku zainstalowany jest zarówno GNU/Linux (którego nie można uruchomić) oraz Windows z serii NT (w szczególności Windows 2000 i Windows XP, przy pozostałych Windowsach NT sprawa może wyglądać trochę inaczej). Co więcej, opis dotyczy LILO, ale ogólna idea może zostać zastosowana również w przypadku innych bootloaderów (zmieniają się jedynie pliki konfiguracyjne i polecenie updatowania bootloadera).

Czytaj dalej »

Przesiadka na Joggera

Michał ‘mina86’ Nazarewicz | 12 lutego 2008

Zdjęcie pokrwawionej piły łańcuchowej.

Niecałe pięć godzin temu założyłem konto na Joggerze i rozpocząłem pracę nad przeniesieniem strony na tą nową… platformę. Powód jest bardzo prosty — lenistwo. Do tej pory, pomimo, że strona generowana była za pomocą skryptów napisanych w Perlu, aby dodać jakiś artykuł musiałem bawić się w przesyłanie plików za pomocą protokołu FTP.

Przez kilka godzin miałem jeszcze ambitny plan napisania czegoś samemu, jednak, gdy odkryłem, iż Jogger umożliwia podpięcie domeny plan legł w gruzach. Teraz jestem już na półmetku. Pozostaje pozmienianie wpisów w DNS-ach i przerzucenie artykułów do Joggera. Biorąc pod uwagę, że już po północy, powinienem dziś skończyć. ;)

Oczywiście zakładając, że faktycznie można podpiąć Joggera pod własną domenę, bo zaczynam mieć co do tego wątpliwości… Update: No i jest! Przy trzeciej próbie w końcu domena została podpięta.