Blog poświęcony głównie tematyce związanej z informatyką oraz użytkowymi aspektami komputerów i Internetu.
Creative Commons License
Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 2.0 Polska

darmowe liczniki
Kategorie: Wszystkie | informatyka | przemyślenia | użytkowe
RSS
piątek, 04 maja 2012
Warsztat narzędziowy przydatny podczas pisania pracy dyplomowej cz. 1

W najbliższym czasie przedstawię kilka spostrzeżeń i wniosków związanych z narzędziami, które warto wykorzystywać podczas prac nad jakimkolwiek większym projektem. Niekoniecznie informatycznym. Niekoniecznie pracą dyplomową. Ponieważ sam dosyć długo eksperymentowałem, zanim odnalazłem (w mojej ocenie) najbardziej efektywne rozwiązania, chciałbym podzielić się wnioskami, które czytelnik mógłby bezpośrednio wykorzystać, żeby ułatwić sobie życie. Dzisiejszy post jest pierwszym w serii omawiającej 3 zagadnienia: LaTeX, system kontroli wersji, narzędzie do tworzenia kopii zapasowych.

Używanie LaTeX’a

Na wstępie dwa słowa, jeżeli ktoś z czytelników nigdy nie słyszał tej nazwy. Generalnie, wszystkie powszechnie znane edytory tekstu działają na zasadzie WYSIWYG, What You See Is What You Get. Edytuje się tekst, który jest rozmieszczony na stronie. Po wydrukowaniu uzyskuje się dokładnie to samo, co było na ekranie. LaTeX to zupełnie odmienne podejście. Wygląd dokumentu opisywany jest za pomocą komend. Za rozmieszczenie tekstu tak, jak to zostało zadeklarowane, odpowiada program kompilujący LaTeX, który jako rezultat, powiedzmy w uproszczeniu zwraca dokument PDF.

Na temat LaTeX’a istnieją jedynie skrajne opinie. Albo ktoś go nie używa i uważa za wariatów ludzi, którzy zaśmiecają sobie umysł jakimiś komendami, zamiast po prostu uruchomić Word’a; albo ktoś go używa i nie wyobraża sobie pisania dłuższych tekstów w innym narzędziu. Sam przeszedłem ewolucję od pierwszego do drugiego "typu" ludzi. W mojej ocenie, LaTeX w znaczący sposób ułatwia pracę nad długim tekstem i ma szereg zalet w porównaniu do klasycznych edytorów. Początkujący użytkownik napotyka jednak na kilka problemów, z których pierwszym jest wybór edytora.

Osobiście próbowałem używać różnych narzędzi, np. TeXnicCenter, Kile czy LEd, ale wszystkie one wydawały mi się skomplikowane i nieintuicyjne. LyX z kolei, moim zdaniem nakłada zbyt wiele ograniczeń na ogromne możliwości LaTeX’a. Wielu profesjonalistów używa po prostu Vim’a, ale moim zdaniem do wygodnej pracy potrzebnych jest wiele funkcjonalności oferowanych przez specjalistyczne edytory. Mam na myśli np. automatyczne wyświetlanie podglądu struktury dokumentu, sprawdzanie pisowni, zwijanie bloków kodu, dostępność "na wyciągnięcie ręki" najczęściej używanych komend itd. Narzędziem, które sam wybrałem i gorąco polecam jest TeXStudio. Oferuje on duży zbiór funkcjonalności, ma intuicyjny i zdumiewająco prosty w obsłudze interfejs oraz pozwala na szybką i łatwą konfigurację sprawdzania pisowni "w locie". Moim zdaniem wielką zaletą tego narzędzia jest to, iż po bardzo krótkim zapoznaniu się z nim, można rozpocząć wydajną pracę. Gdy mamy już edytor, możemy przejść do konkretów - dlaczego LaTeX jest lepszy od tradycyjnych edytorów:

  1. Bardzo precyzyjna kontrola nad strukturą dokumentu. Wszelkie zmiany typu przesunięcie rozdziału do podrozdziału czy zmiana lokalizacji w strukturze dokumentu wykonują się bezboleśnie.
  2. W ogóle bardzo precyzyjna kontrola nad formatowaniem. W przypadku edytorów klasycznych, bardzo często zdarza się, że edytor zwyczajnie odmawia wykonania tego, co byśmy chcieli, żeby zrobił. Sam widziałem sytuację gdy Microsoft Word uparł się, że w dość długim dokumencie, na każdej stronie każdy pierwszy akapit miał zmniejszone marginesy w stosunku do reszty tekstu. Nie było żadnej możliwości, aby przekonać program, żeby to zmienił. W LaTeX’u takie rzeczy się nie zdarzają.
  3. Gdy wszystko jest już ustawione, można jedynie pisać swój tekst i nie martwić się, jak to będzie wyglądać. Ty koncentrujesz się jedynie na merytorycznej stronie pracy. Resztą zajmie się LaTeX. Używanie LaTeX’a jest jak zatrudnienie specjalisty od składania tekstu, który wykonuje dla nas czarną robotę za friko. Twój tekst zostanie tak rozmieszczony na stronach, że będzie wyglądał profesjonalnie.
  4. Jeżeli potrzebujesz pisać nietypowo sformatowane rzeczy, w dodatku zagnieżdżane jedne w drugich, np. wielokrotne wypunktowania z wklejonymi wyróżnianymi fragmentami od nowej linii (np. kod), to bardzo szybko docenisz potęgę LaTeX’a. Tego typu rzeczy po prostu działają. Nigdy nie zepsują Ci układu dokumentu. Będą wyglądać dokładnie tak, jak chcesz.
  5. Gdy zapragniesz dodać ilustrację w środku tekstu, również masz gwarancję, że nic w układzie tekstu "nie rozjedzie się".
    Word
  6. Masz pełną, w dodatku bardzo szybką i wygodną kontrolę nad odnośnikami do czegokolwiek w tekście. Dzięki tekstowym etykietom odnośników, na pierwszy rzut oka wiesz, do czego prowadzi odnośnik.
  7. Dokument jest czystym plikiem tekstowym, w związku z tym można na nim wykonywać dowolne operacje klasycznymi narzędziami jak grep/sed/awk/diff.
  8. Gdy w gotowym już dokumencie musisz wprowadzić jakiekolwiek zmiany, również nie musisz obawiać się, że cokolwiek "się zepsuje".
  9. Dysponujesz gotowymi szablonami różnych typów dokumentów. Nie musisz martwić się jak powinna wyglądać książka, raport czy list. Po prostu używasz odpowiedniej klasy.
  10. Jeżeli uważasz że większość prezentacji wykonanych przy użyciu Microsoft PowerPoint wygląda mało profesjonalnie, to poczytaj sobie o klasie Beamer. To zupełnie nowa jakość jeśli chodzi o estetykę prezentacji.
  11. Dokumenty można edytować i kompilować na różnych systemach operacyjnych. TeXStudio działa bezproblemowo w systemie Microsoft Windows 7 i Linux.

Osobiście byłem pełen obaw, zanim podjąłem decyzję o pisaniu pracy magisterskiej w LaTeX’u. Mam porównanie, ponieważ pracę inżynierską pisałem w OpenOffice Writerze. Decyzja o wybraniu LaTeX’a była jednak bardzo dobra. Początkowo obawiałem się, że podczas pisania pojawią się takie rzeczy, których nie będę umiał zrobić. Nie należy się tego obawiać. W edytorach typu Microsoft Word, jeśli nie umiesz czegoś zrobić, to często nawet nie wiadomo jakie zapytanie wpisać do wyszukiwarki, aby rozwiązać problem. W LaTeX’u tak naprawdę jest dużo łatwiej. W każdym przypadku, zawsze, szybciej lub później udawało mi się znaleźć potrzebną do rozwiązania komendę.

Innym częstym problemem jest strona tytułowa, której układ sformalizowany dla danej uczelni może być kłopotliwy do samodzielnego uzyskania. Polecam w tym przypadku poszukać gotowych szablonów, najlepiej wśród studentów uczelni. Mniej obeznany użytkownik LaTeX’a faktycznie może mieć problemy z samodzielnym wytworzeniem stron tytułowych. Przed zabraniem się do poważniejszej pracy polecam również metodę polegającą na przećwiczeniu sobie najpotrzebniejszych zadań oraz komend potrzebnych do ich zrealizowania np. tabelki, bibliografii, wypunktowania etc. Z takich ćwiczeń warto jest utworzyć sobie jeden dokument zawierający przykłady użycia komend. We właściwej pracy można wtedy posiłkować się taką ściągawką i całkowicie skupić się ma zawartości merytorycznej tekstu.

Czy LaTeX ma jakieś wady? Aby opanować LaTeX’a należy się trochę wysilić. Opanowanie całości jest raczej niemożliwe i z pewnością bardzo trudne. Osobiście uważam, że słabo znam LaTeX’a. Ciekawe jest jednak to, iż znając nawet stosunkowo niewielki podzbiór komend można już zacząć wydajnie pracować. Inną wadą może być proces dostrajania różnych drobiazgów. Czasami bywa tak, że z pewnymi komendami trzeba eksperymentować, wielokrotnie kompilować dokument i patrzeć, czy rezultat jest właściwy. W pewnych przypadkach może to być uciążliwe, ale de facto jest to częścią procesu uczenia się LaTeX’a. Jeżeli natrafimy na dobre wytłumaczenie danej komendy wraz z przykładem to, można tego uniknąć.

czwartek, 03 maja 2012
Konwersja czasu w formacie Unix

W codziennej pracy bardzo często mam do czynienia ze znacznikiem czasowym typu Unix. Konwersja pomiędzy, nazwijmy to, "naturalnym" formatem czasu, a liczbą sekund, która upłynęła od 1 stycznia 1970 roku jest stosunkowo prosta. Jednakże moja praktyka pokazuje, że również niewygodna. Środowisko baz danych, z którym pracuję nie udostępnia stosownych funkcji w każdym schemacie, co prowadzi do kłopotliwego "zgadywania" gdzie znajduje się definicja funkcji. Z kolei napisane proste skrypty shell'owe opakowujące wywołania funkcji konwertujących Perl'a wymagają, jak nietrudno się domyślić, powłoki systemu Unix, co w systemie Windows również nie jest zbyt wygodne.

Zaistniała potrzeba stworzenia narzędzia z graficznym interfejsem, działającego w systemie Windows, takiego, które pozwoli na błyskawiczną konwersję zapisanego czasu w obie strony, bez zbędnego zastanawiania się w jakiej kolejności podać "naturalne" części daty. Napisałem w tym celu bardzo prosty program, który ma następujące właściwości:

  • Konwersja czasu do i z formatu systemu Unix "w locie", tzn. podczas pisania.
  • Automatyczne zmiana fokusu na kolejne pole, po wpisaniu 4-cyfrowego roku, oraz kolejnych 2-cyfrowych fragmentów.
  • Możliwość ręcznego przełączania kolejnych pól za pomocą klawisza TAB.
  • Automatyczne wyświetlanie bieżącego czasu po uruchomieniu programu, oraz możliwość ręcznej aktualizacji do bieżącego czasu.

Należy pamiętać, że czas w formacie Unix liczony jest według czasu UTC. W związku z tym, data podawana w górnej części interfejsu mojego programu przed przeliczeniem na timestamp jest najpierw przeliczana na czas UTC według ustawień strefy czasowej systemu (dla Polski +1 godzina, w związku z tym program odejmuje 1 godzinę od podanego czasu).

UnixTime

Program do poprawnego działania potrzebuje środowiska .NET w wersji 2.0, co w praktyce pozwala założyć, iż będzie działał w każdym współczesnym systemie Windows. Możliwe jest dowolne, darmowe wykorzystanie i rozpowszechnianie jego skompilowanego pliku wykonywalnego. Poniżej link do pobrania:

UnixTime.zip

17:53, przemsen
Link Komentarze (1) »
poniedziałek, 23 stycznia 2012
Wątpliwości dot. rozwiązań open-source

Oprogramowanie o otwartym kodzie źródłowym, jak by się mogło wydawać, budzi ogromny entuzjazm zarówno wśród programistów, jak i użytkowników. Programiści przykładowo mają możliwość korzystania z potencjału drzemiącego w ogólnodostępnym dla wszystkich kodzie źródłowym. W przypadku zaś darmowych narzędzi i bibliotek -- w znaczący sposób zmniejszają one koszty wytwarzania oprogramowania. Jakby tego było mało, można liczyć na pomoc przyjaźnie nastawionej społeczności innych entuzjastów, która gotowa jest pomóc nawet w najcięższych przypadkach. Jak by się mogło wydawać, również użytkownicy oprogramowania o otwartym kodzie źródłowym powinni być wielce usatysfakcjonowani, ponieważ nie dość, że mają produkt za darmo, to jeszcze mają świadomość, iż został on stworzony przez prawdziwych specjalistów, pracujących nad rozwojem programu "z potrzeby serca".

Niestety, jak to w życiu bywa, pozory mylą i powyższy obraz jest czysto teoretyczny. Nie będę omawiać wątpliwości dot. aspektów użytkowych oprogramowania open-source, ponieważ jest to temat na oddzielny post. Chciałbym skupić się na zagadnieniach istotnych z punktu widzenia programisty oraz podać konkretny przykład, który mnie osobiście zabolał.

W ostatnim czasie spotkałem się z opinią zawodowego programisty, iż korzystanie z rozwiązań open-source w poważnym komercyjnym projekcie może być ryzykowne, kosztowne, a nawet szkodliwe. Uzasadniając swoje zdanie, programista ten przedstawił kilka konkretnych zarzutów:

  1. Nikt osobiście nie bierze odpowiedzialności za zagwarantowanie rozwoju, uaktualnień oraz wsparcia dla rozwiązań open-source. Podany został przykład sytuacji, gdy w pracach nad komercyjnym projektem szeroko wykorzystywano darmową bibliotekę. W pewnym momencie wydana została nowa wersja biblioteki, całkowicie niekompatybilna z poprzednią. Autor biblioteki całkowicie "odciął" się od starej wersji i zaprzestał jej utrzymywania. Zespół stanął przed dramatycznym wyborem: korzystać ze starej wersji narażając się na wszelkie kłopoty z tym związane, czy całkowicie przepisać projekt, tak by korzystał z nowej wersji. Wybrano to drugie rozwiązanie, co z punktu widzenia rozwoju stanowiło półroczny przestój.
  2. Wsparcie społeczności również nie jest czymś, co może być w jakikolwiek sposób zagwarantowane. Czasami bywa też tak, że projekt "umiera" i nikt, z autorem włącznie, już się nim nie interesuje. Wtedy nawet nie wiadomo do kogo zwrócić się w przypadku problemów.
  3. Otwarty kod źródłowy wcale nie oznacza szybszego reagowania na błędy. Znane są przypadki, gdy autorzy całkowicie ignorowali błędy znajdowane przez użytkowników. Programiści musieli poprawiać znaleziony przez nich samych błąd w bibliotece samodzielnie kompilując każdą kolejną jej wersję, tak aby nadawała się do użytku w ich projekcie. Skutkiem tego było to, iż zespół przeznaczony do prac nad projektem de facto pracował nad dwoma projektami: właściwym projektem + biblioteką, która była im potrzebna.
  4. Dokumentacja w przypadku open-source to jest coś, co może istnieć, ale wcale nie musi.
  5. Opublikowany przez autora kod źródłowy może być w postaci kompletnie nieutrzymywalnej. I na przykład może się wcale nie kompilować. Takie przypadki też istnieją.

Wyżej wymieniłem najważniejsze, potencjalne problemy, jakie można na siebie sprowadzić korzystając z rozwiązań open-source. Oczywiście nie należy generalizować i postrzegać wszystkich rozwiązań przez pryzmat tego typu kłopotów. Niemniej jednak zamiast entuzjastycznie skakać z radości, warto mieć świadomość ryzyka.

Osobiście boleśnie doświadczyłem pierwszego i czwartego z opisywanych problemów. W ramach pracy magisterskiej tworzyłem proste narzędzie do symulacji błędów działające w trybie jądra systemu Linux. Nie wnikając za bardzo w szczegóły, jest to rozwiązanie zbliżone koncepcyjnie do klasycznych debugger'ów, jednakże zamiast wykorzystywać API systemu operacyjnego (kwestie wydajnościowe w przypadku narzędzi programowej symulacji błędów) implementuje własne mechanizmy modyfikujące procedury obsługi przerwań poprzez patch'owanie kodu jądra "w locie". Bazowym mechanizmem w tym rozwiązaniu jest ustawianie brakpoint'ów sprzętowych. Jądro udostępnia do tego celu elegancką funkcję register_user_hw_breakpoint. Super. Tylko, że ta funkcja, choć należy do API jądra od wersji 2.6.33 jest nieudokumentowana. Próżno szukać jej opisu na stronie dedykowanej API na kernel.org/doc. Jedynym dokumentem jest chyba artykuł z Linux Symposium dostępny w wielu miejscach w internecie (m.in. http://kernel.org/doc/ols/2009/ols2009-pages-149-158.pdf), który stanowi wstęp koncepcyjny autorstwa deweloperów odpowiedzialnych za implementację mechanizmu.

Aby funkcja utworzyła breakpoint sprzętowy na instrukcji wykonywalnej, jako wielkość należało jej podać stałą HW_BREAKPOINT_LEN_1. Tak było w wersjach jądra od 2.6.33 do 2.6.35. Problem zaczął się, gdy przetestowałem swój program na nowszych wersjach. Funkcja po prostu przestała działać. Nigdzie nie udało mi się znaleźć żadnych informacji, czy, jak i dlaczego interfejs uległ zmianie. Co gorsze, nigdzie w jądrze nie było wywołań tej funkcji z takim zestawem parametrów, jakiego używałem ja. Nie było więc niczego, na czym można by się wzorować. Przyznam, że straciłem sporo czasu analizując kod jądra w poszukiwaniu jakichkolwiek wskazówek, co mogło się stać. Miałem szczęście. Znalazłem. Okazuje się, że od wersji jądra 2.6.36 w przypadku pułapek sprzętowych, rozmiar musi być ustawiony jako sizeof(long), a nie jako wartość ww. stałej. Świetnie. Taka mała, ale niesamowicie złośliwa, nieudokumentowana, funkcjonalna zmiana w interfejsie API. Chyba jedna z gorszych rzeczy, jakie mogą spotkać programistę. Ale ja i tak miałem szczęście, moje rozwiązanie jest stosunkowo proste. Wywoływałem tę funkcję tylko 2 razy. Aż boję się pomyśleć co by było, gdyby coś takiego zdarzyło się podczas rozwoju naprawdę dużego projektu.

Zwolennicy open-source oraz członkowie społeczności deweloperów jądra mogą w tym miejscu zarzucić mi, że jestem amatorem, bo modyfikacja ta na pewno *gdzieś* jest opisana w jakimś commicie do repozytorium kodu jądra. A poza tym, to sam sobie jestem winien, bo interfejs programistyczny jądra jawnie nie gwarantuje kompatybilności pomiędzy różnymi wersjami jądra zarówno na poziomie funkcji jak i ABI. Owszem, wiem o tym. Tylko, czy to przypadkiem nie jest kolejne potwierdzenie, że stosowanie rozwiązań open-source może (oczywiście nie musi) wiązać się z dodatkowymi, nieprzewidywalnymi kłopotami?

wtorek, 10 stycznia 2012
Systemu po hibernacji nie da się używać

Spotkałem się wielokrotnie z narzekaniami użytkowników systemu Windows, że po zastosowaniu hibernacji ich system zaczyna działać bardzo wolno i praktycznie nie nadaje się do użytku. Użytkownicy ci twierdzą, że problemy te są tak dokuczliwe, że nie korzystają z hibernacji w ogóle. W dzisiejszym wpisie chciałbym spojrzeć od strony technicznej na możliwe przyczyny takiego stanu rzeczy i zasugerować sposoby jeśli nie całkowitego, to przynajmniej częściowego zwalczenia problemu.

Na początku zwrócę również uwagę, że zdumiewająco mało osób korzysta z hibernacji i / lub usypiania komputera. Osobiście nie wyobrażam sobie życia bez tych dwóch opcji i nigdy (poza historyczną już wersją systemu Windows 2000, gdzie mechanizm hibernacji nie działał prawidłowo na wielu komputerach) nie doświadczyłem żadnych problemów z nimi związanych. Z użytkowego punktu widzenia często, gdy pracuję z użyciem kilkunastu aplikacji na raz, mając otwartych wiele różnych plików, to nie wyobrażam sobie codziennego uruchamiania i otwierania tego wszystkiego. Osobiście prawie nigdy nie wyłączam komputera zamykając jednocześnie system. Najczęściej usypiam komputer, w przypadku notebooka i odłączeniu go od zasilania zapewnia mu możliwość wykorzystywania akumulatorów, co jest dla nich dodatkowo korzystne. Gdy z jakichś przyczyn nie mogę uśpić komputera (akumulator jest zepsuty), a nie ma sensu usypiać laptopa podłączonego do prądu, wtedy używam hibernacji. Efekt końcowy jest w zasadzie identyczny.

W zasadzie, ponieważ, jak twierdzą niektórzy użytkownicy, po odhibernowaniu komputer zaczyna działać bardzo wolno. Kluczem do zrozumienia, dlaczego faktycznie komputer ma prawo zacząć działać wolno jest uświadomienie sobie pewnych specyficznych mechanizmów zarządzania pamięcią we współczesnych systemach operacyjnych, których działanie nie jest intuicyjne.

Hibernacja polega na zapisaniu zawartość używanej części pamięci fizycznej na dysk i wyłączeniu komputera. Wbrew pewnym opiniom, które napotkać można w Internecie, hibernacja z punktu widzenia sprzętowego powoduje takie samo wyłączenie komputera, jak opcja zamykania systemu. To system operacyjny jest odpowiedzialny za zrealizowanie całej operacji. Podczas normalnego działania systemu operacyjnego tylko część zarezerwowanej przez programy pamięci jest  faktycznie zajmowana w pamięci fizycznej. Pozostała, ta mniej używana część jest przenoszona do pliku wymiany, na dysk twardy. W razie potrzeby, rzadziej używane fragmenty pamięci są "sprowadzane" z powrotem do pamięci fizycznej. Mechanizm ten nazywa się stronicowaniem na żądanie i pozwala na zoptymalizowane wykorzystanie pamięci fizycznej. Oprócz tego, gdy system operacyjny działa przez dłuższy czas, w pamięci fizycznej znajdują się nie tylko uruchomione programy, ale również bufor (ang. cache) operacji dyskowych. Bufor ten jest częścią pamięci fizycznej używanej przez system (ang. system working set) i podczas hibernacji jest zapisywany na dysk. Pamięć, która podawana jest w systemowym menedżerze zadań jako wolna w rzeczywistości też jest używana przez system. Jest tam tzw. standby list. Gdy system decyduje o przeniesieniu nieużywanej pamięci do pliku wymiany, owszem oznacza ją jako nieużywaną, ale zachowuje jej zawartość, tak na wszelki wypadek, gdyby trzeba było z niej *szybko* skorzystać (bo skorzystać można i tak, tylko, że sprowadzenie tego obszaru z pliku wymiany jest czasochłonne). Zarządzanie systemem buforowania w Windows wykonywane jest przy użyciu tego samego mechanizmu, który zarządza pamięcią. W związku z tym, część zawartości bufora plików, która przestaje być używana, również przenoszona jest do standby list, tak na wszelki wypadek, gdyby w przyszłości była potrzebna.

Gdy system działa przez dłuższy czas, standby list zapełnia prawie całą nieużywaną pamięć fizyczną, powodując, że wszystkie dane, które potencjalnie mogą być w każdej chwili potrzebne są obecne w pamięci fizycznej, do której dostęp jest bardzo szybki. Po długim działaniu komputera, mając uruchomione cały czas te same programy i wykonując takie same operacje, standby list w "inteligentny" sposób zapełnia pamięć komputera powodując płynne i szybkie działanie uruchomionych programów.

W tym momencie zbliżamy się do wyjaśnienia zagadki powolnego działania po odhibernowaniu. Przy hibernacji zapisywana jest tylko pamięć używana przez programy, czyli ta, która jest raportowana przez system jako faktycznie zajęta. Standby list nie jest zapisywana. Odhibernowany system musi ponownie załadować z dysku dane, które były zbuforowane w nieużywanej części pamięci. Nie ma możliwości wpłynięcia na zawartość standby list, więc w tym temacie niczego nie da się zmienić. Ale jest jeszcze jedno spostrzeżenie: gdy raportowane przez system zużycie pamięci jest duże, to zapewne plik wymiany również jest w znacznym stopniu wykorzystywany. Przed zahibernowaniem, jak wspomniałem, część danych przeniesionych na dysk do pliku wymiany znajduje się jeszcze w pamięci w standby list. Po zahibernowaniu i odhibernowaniu, wszystkie żądania sprawdzenia nieużywanych obszarów pamięci z pliku wymiany będą również skutkowały faktyczną operacją dyskową odczytu, co jest czasochłonne z punktu widzenia wykonywania programów. Jest to powód spowolnionego działania komputera po odhibernowaniu.

W jaki sposób tego uniknąć? Osobiście staram się nie hibernować systemu z bardzo dużym zużyciem pamięci. Dzięki temu przynajmniej częściowo eliminuję narzut czasowy potrzebny na sprowadzenie z pliku wymiany potrzebnych obszarów pamięci. Trudno podać mi konkretne liczbowe zalecenia, ale z moich doświadczeń wynika, że hibernowanie przy zużyciu pamięci mniejszym niż 50% nie powinno sprawiać absolutnie żadnych problemów po odhibernowaniu. Przed zahibernowaniem polecam więc użycie menedżera zadań, wybranie kilku najbardziej pamięciożernych aplikacji i zamknięcie ich. Najlepszymi, uniwersalnymi kandydatami na sam początek są przeglądarki internetowe, programy pocztowe i komunikatory. U mnie to działa.

PS. Problemy te nie dotyczą usypiania komputera, ponieważ wtedy zawartość pamięci fizycznej jest zachowywana (pamięć jest wtedy jedyną częścią komputera, która pozostaje zasilana).

piątek, 30 września 2011
Zmiany na Facebook’u – nowe nie zawsze znaczy lepsze

W związku z nadchodzącymi dość dużymi zmianami w portalu społecznościom Facebook, chciałbym zwrócić uwagę na pewien negatywny aspekt tych "nowości" związany z kolejnym ograniczaniem prywatności. Zacznijmy od rzeczowego podsumowania, o co w ogóle chodzi - artykuł w serwisie Mashable.com:

Facebook Users Beware: Facebook's New Feature Could Embarrass You

Oraz wątpliwej kwestii ciasteczek przechowywanych przez serwis nawet po wylogowaniu się - artykuł w serwisie MakeUseOf.com:

Facebook Doesn't Delete Cookies When Logging Out But Uses Them To Protect Users [News]

Krótko mówiąc, chodzi o to, że:

  • Rewelacje właśnie wprowadzane przez Facebook, mogą spowodować, że jeśli użytkownik nie ogarnia w 100% tego jak działają i jaki skutek mają opcje ustawione w jego profilu, to może dojść do sytuacji, że jego profil będzie rozgłaszał bez jego świadomości informacje o tym, jakie przegląda on strony internetowe
  • Facebook przechowuje pewne informacje o użytkowniku, w postaci ciasteczka - pliku tekstowego zapisanego w przeglądarce - nawet po jego wylogowaniu się z serwisu. Oficjalne wyjaśnienia, a jakże by inaczej, zapewniają użytkowników, że to dla ich dobra. Ale nie sposób oprzeć się konkluzji, że informacje te mogą być wykorzystywane na jeszcze inne sposoby, np. przez wszelkie rewelacyjne, ostatnio modne wtyczki na przeróżnych stronach integrujące się z Facebook'iem

W czerwcu 2010 roku opublikowałem post w którym wyjaśniam moje podejście do kwestii związanych z bezpieczeństwem przeglądania stron internetowych. Wiele osób zarzucało mi wtedy, że jestem paranoikiem i przesadzam używając na codzień dwóch przeglądarek internetowych. W kontekście opisanych wyżej "nowości", albo raczej potencjalnych kłopotów, mój pomysł odizolowania zwykłego przeglądania stron internetowych od bycia zalogowanym w wszelkiego rodzaju serwisach wydaje się jeszcze bardziej uzasadniony. Mówiąc wprost, przy zastosowaniu moich pomysłów te problemy w ogóle nie istnieją. Facebook w żaden sposób nie dowie się, co robię na innych stronach, bo robię to w innej przeglądarce.

Ponieważ wspomniany post jest napisany językiem technicznym, krótko opiszę raz jeszcze co jest istotą mojego pomysłu:

  • Zainstalowanie drugiej przeglądarki internetowej, której używa się tylko do logowania w serwisach takich jak np. Google Gmail, Facebook itd.
  • Nie można mieć uruchomionych dwóch przeglądarek obok siebie. Nowo otwierane okna należą do tej samej instancji programu. Potrzebny jest oddzielny program. Osobiście używam przeglądarki Seamonkey, ponieważ moją główną przeglądarką jest Firefox. Ale nic nie stoi na przeszkodzie, żeby były to inne kombinacje np. Firefox i Opera, Firefox i Internex Explorer albo najciekawsze: Firefox i Firefox Uśmiech - tak jest to możliwe. Istnieje program o nazwie Palemoon, ktory jest po prostu Firefox'em tylko, że skompilowanym specjalnie dla nowoczesnych komputerów. Ale jest oddzielnym programem, który może być uruchomiony obok zwykłego Firefox'a
  • Istotne jest ustawienie w obu przeglądarkach czyszczenia ciasteczek po zamknięciu programu. Tak naprawdę ciężko mi jest uzasadnić sens przechowywania ciasteczek, poza wyjątkowymi przypadkami gdy np. ktoś gra w jakieś gry online, które w ten sposób zapisują wyniki. W większości przypadków utracimy jedynie możliwość logowania bez podawania hasła w niektórych stronach, która i tak jest niebezpieczna. Z resztą to można obejść zapamiętując swoje hasło w menedżerze haseł - wychodzi na to samo. Co zyskujemy? Duże utrudnienie w identyfikowaniu nas i zbieraniu informacji o nas. Takie np. Google wyświetla inne wyniki wyszukiwania gdy pozbiera trochę informacji o tym gdzie klika użytkownik. Bardzo nie lubię sytuacji gdy komputer wie lepiej co jest dla mnie dobre, wolę za każdym razem mieć "czyste" wyniki wyszukiwania i jawić się wyszukiwarce za każdym razem jako "świeży" użytkownik
  • Istotna jest aktualność używanych przeglądarek, o którą należy dbać

Życzę szybkiego zorientowania się jak działają Facebook'owe "rewelacje" Uśmiech 

1 , 2 , 3 , 4 , 5 ... 11