Nowy własny wspaniały szablon

Jak widać, zmieniłem sobie właśnie layout na blogu. Po latach wytężonej pracy, w końcu ukończyłem go. Możecie więc odetchnąć, a ci co we mnie wierzyli odebrać swoje wygrane u bookmacherów. W ramach ogólnego rozluźnienia i radości, postanowiłem odpowiedzieć na kilka pytań, jakie może się Wam nasunąć.

Robiłem lepsze stronki w gimnazjum

A co mnie to obchodzi? Ja nie. Oto widzisz moją pierwszą i jedyną próbę zrobienia szablonu. Jakiejkolwiek strony internetowej. Za zwyczaj zajmowałem się bebechami, lub co najwyżej implementowałem rozwiązania lepiej zorientowanych w grafice i layoutach. A ty jak już krytykujesz to rób to tak, żeby nie musiał cię wywalać 😛

Nie działa…

To prawda. Niby bazowałem na jakiś na własnych wpisach, ale jednak w chwili załadowania natychmiast powyłaziły najróżniejsze problemy – jak widać żywe dane to jeden z lepszych danych do takich rzeczy. Będę, jak tylko ochłonę z zachwytów i wysłucham wszystkich pochwał, naprawiał te różniaste problemy.

Ale to nie działa na mojej przeglądarce!

Napisz w komciu jaka przeglądarka, wersja, system itp… może mi się coś uda. Przetestowałem co prawda ten layout na najnowszych mi dostępnych (czyli Firefox, Chrome, Opera). Nie mam dostępu do jakiś niszowych typu: IE, Safari, więc tutaj najlepiej w komciach dołączać gotowe rozwiązania.

Dlaczego mimo wszystko nowy layout na joggera?

Że niby jogger umiera, że jakiś pyszczaty kolo co się obraził o należne mu zjechanie może uprzykrzać życie innym – to wszystko wiem. Po prostu chciałem w życiu choć raz coś własnymi ręcami zrobić, co ma związek z jako taką webmasterką. Akurat trafiło na ten blog. Jako, że można to poniekąd zaliczyć, to następne w kolejce jest posadzenie drzewa.

Te kolory są paskudne…

Jakie kolory? Oryginalnie całe było biało-czarne. Eee.. biadolisz!

Jest wspaniała!

Dziękuję.

Dlaczego to jest tu, a to tam…

Bo taki bym mój zamysł twórczy. Tak mi szeptał do ucha Bóg itp. Uzasadnij swoje wątpliwości, a kto wie, może staniesz się współautorem jakiejś cząstki.

No dobra, idę świętować!

Google Chrome: jak pozbyć się translatora?

Dobra wiadomość dla tych, którzy nie brzydzą się przejścia na Google Chrome: da się wyłączyć te głupie propozycje na tłumaczenie każdej strony, jaka nie jest w naszym rodzimym języku. Nie jest to łatwe, ale wykonalne.

Ja również należę do ludzi, których ten wysuwający się co chwila pasek zwyczajnie irytuje. Już nawet pomijając kwestie prywatności, bo domyślam się, że to jedyny powód dla którego obsługa tzw. tłumaczeń została domyślnie wbudowana w tą przeglądarkę. Drażni mnie to i już. Tyle na ten temat.

Aby wyłączyć te natrętne pytania o użycie Google’owego tłumacza, należy:

  1. Uruchomić Google Chrome
  2. Po prawej od paska adresu znajdujemy przycisk “Dostosowanie i kontrola Google Chrome”, klikamy
  3. Wybieramy opcje “Ustawienia” (można też od razu wejść na adres: chrome://settings/)
  4. Klikamy na “Pokaż ustawienia zaawansowane”
  5. Wyszukujemy sekcję “Języki”
  6. Odznaczamy opcję “Oferuj tłumaczenie stron w innych językach”

Tylko tyle i aż tyle potrzeba było, aby świat (z Google Chrome włącznie) stał się dla mnie przyjemniejszym miejscem. Dlaczego nie dało się umieścić w opcjach tego całego irytnika “nie oferuj mi tłumaczeń w ogóle”? No cóż, pewnie Google nie chciało tracić danych na temat stron jakie oglądamy. Nasuwa się też pytanie: w jaki sposób przeglądarka rozpoznaje język strony? Czy ma lokalnie jakiś zaimplementowany na to algorytm, czy też może przesyła tekst strony na serwer korporacji w ramach zapytania? Mam nadzieję, że to pierwsze. A jeśli nie, to miejmy nadzieję, że wyłączenie całkowite propozycji tłumaczenia deaktywuje też sprawdzanie języka.

W kolejnym odcinku, jeśli pobawię się Chromem nieco więcej, to może zajmiemy się jakimś Adblockiem

Linki

Metro UI w jednym zdaniu

Parę osób, widać nie może żyć, bez znajomości mojego zdania w kwestii najnowszej myśli w kategorii interface’u z Microsoftu. No to miejmy to za sobą.

Tak, zdaję sobie sprawę, że następca Menu Start, zanim się zebrałem do napisania tego tekstu zdążył zmienić nazwę. Teraz to już “Modern UI”. W każdym razie wiadomo o co chodzi: kafelki.

Opinie innych

Widziałem fanbojów, którzy nowość witali z źle ulokowaną radością. Widziałem też takich, którzy namiętnie grzebali po swoich najnowszych nabytkach, aby to dziadostwo usunąć. A miałem przykład użytkownika, który na początku sklinał, a potem gdy mu je usunięto, stwierdził, że jednak lepiej było wcześniej (nie da się wrócić do pełnosprawnego Menu Start, z tego co go zrozumiałem). Ale dość o innych, czas na fachową opinię.

Moja opinia

Otóż: nowe GUI nie nadaje się pod myszkę. Jest nieergonomiczne pod tym względem. Aby np. się wylogować, trzeba przemierzyć odcinek równy niemal dwukrotnej wartości najdłuższej przekątnej ekranu. Inny przykład: aby zrobić coś niestandardowego z programem, na poziomie tej całej glazury, trzeba przejechać również przemierzyć wysokość ekranu. I nie można zrobić czegoś, co bardzo lubię: zjechać w róg ekranu, by bez patrzenia kliknąć na ikonkę chowania wszystkich okienek. Już nie wspominając, o tym, że ten kolorek ciemnoniebieski jest zwyczajnie ohydny.

Rozgrzeszenie

Może i Modern UI sprawdza się na urządzeniach mobilnych. Na konsoli użyłem go tylko raz, ale na XBoksie interface i bez tego pozostawia wiele do życzenia (co jest tematem na osobną dyskusję), więc sprawę przemilczę. Zdaję sobie sprawę, że z ekranem dotykowym to rozwalcowane podejście nawet może się sprawdzać, a problemy które wymieniłem praktycznie znikają. Tyle, że ja Windowsa używam tylko i wyłącznie na zwykłych klasycznych PC-etach. I tylko kiedy muszę.

JavaScript: Undefined vs. null

Znajomy zapytał mnie dzisiaj czy to dobry kod:

W pierwszym odruchu utwierdziłem go (pytał by się upewnić), że nie, że lepiej byłoby użyć słowa kluczowego null. Argumentowałem nawet, że undefined można sobie swobodnie nadpisać. Wyczytałem to zdaje się na Stackoverflow.

Jednak kiedy, spróbowałem sprawdzić moje własne słowa, znalazłem tą oto małą notkę:

JavaScript 1.8.5 note

Starting in JavaScript 1.8.5 (Firefox 4), undefined is non-writable, as per the ECMAScript 5 specification.

W skrócie: nie można (przynajmniej w nowszych przeglądarkach) nadpisać undefined. Operator === też działa prawidłowo z użyciem undefined. Nie ma więc nie bezpieczeństwa? Czyżbym wpuścił kolegę niechcący w maliny?

Ale dalej mi się to wszystko nie podobało. Należy pamiętać, że:

  • undefined nie jest stałą
  • nie jest też słowem kluczowym języka JavaScript (sprawdźcie sami)
  • nie jest nawet słowem zastrzeżonym pod przyszłe użycie
  • otrzymamy wyjątek jeśli napiszemy coś takiego: if (zmienna_niezadeklarowana_wcześniej === undefined) (trzeba więc użyć operatora typeof)

Czym więc jest undefined? Jest zmienną globalną (choć tylko do odczytu od jakiegoś czasu). Lokalnie (wewnątrz funkcji) możemy ją sobie swobodnie nadpisać. Więc, jeśli nawet nie widać niczego złego przy wywołaniu kodu:

{geshi lang=javascript}var a; var undefined = 42; console.log(a); // undefined console.log(undefined); // undefined console.log(a == undefined); // true

To wystarczy wstawić go do wewnątrz funkcji:

)();

Podsumowanie

Morał jest więc prosty: jeśli cenicie sobie jakość swojego dzieła, nie chcecie, aby się z was koledzy śmiali: używajcie null do inicjacji zmiennych, nie polegajcie na tych małym potworku jakim jest undefined. Jego używamy tylko do analizy np. zmiennych globalnych. Ja widzę też jeszcze powód dla którego lepiej jest użyć null: jeśli chcemy przywrócić pierwotną wartość zmiennej, bardziej naturalne jest przypisanie do niej właśnie null.

Taka jest moja opinia. Bardzo chętnie zapoznam się z jakąś dobrą argumentacją (jeśli jest takowa) przeciw.

Linki

W Windowsie 8 nie ma Menu Start!

Wpis dla tych moich czytelników, którzy domagali się wyjaśnienia mojego sformułowania Windows robi ci wodę z mózgu z notki “Wietrzę spisek na joggerze”. Mimo wszystko was pozdrawiam!

Mam paru znajomych, których pomimo wysokiego obycia z komputerami, ba, niektórzy to nawet studia informatyczne pokończyli, ze strachem w oczach, kilka miesięcy temu, głosi światu: a słyszeliście, że w nowym Windowsie… – tu pauza dla podniesienia efektu grozy – …nie będzie Menu Start?!. To nie, że słyszałem to raz, czy od tej samej osoby. Po prostu nie rozumiem tego, że ci ludzie obawiali się tych całych kafelek. Spieszę z odpowiedzią strwożony człowiecze: poradzisz sobie bez tego głupiego Menu Start! W końcu się przyzwyczaisz, wcześniej, czy później.

Teraz mam okazję obserwować tych, którzy nowy system Microsoftu już sobie zainstalowali. Jak się można domyśleć, jakoś sobie go używają (choć podobno i tak są zmuszeni siedzieć na trybie zgodności z Windows 7 – z powodów technicznych, nie problemów z obsługą). I tym optymistycznym akcentem kończę.

Dennis Ritchie nie żyje

Kilka dni temu zmarł twórca języka C (teraz już wiecie skąd jarzycie to nazwisko, wy wszyscy, którzy uczyliście się programowania z książki “Ansi C”). Był również współtwórcą systemu Unix.

Dowiedziałem się o tym przypadkiem odświeżając swoje konto Blipowe. Zastanawiające jest to, że o ile o śmierci Steve Jobsa trąbiono wszędzie, to o odejściu pana Ritchiego cisza. A szkoda. [Źródło]

openSUSE: dodawanie obsługi protokołu Tlen do Pidgina

Ta notka jest przeróbką mojej poprzedniej: “Dodanie obsługi Tlen do Pidgina“. O ile tamta była dla Ubuntu, ta jest dla openSUSE 11.4.

  1. Instalujemy Pidgina ze źródłami. Polecenie: sudo zypper install pidgin pidgin-devel (można to też oczywiście zrobić za pomocą YaST-a, ale mam już swoje przyzwyczajenia, no i tak jest szybciej).
  2. Ściągamy najnowsze źródła z ~alek/pidgin-tlen
  3. Rozpakowujemy te źródła, gdzie nie ma znaczenia.
  4. Wykonujemy polecenie make w katalogu z rozpakowanymi źródłami.
  5. Edytujemy plik Makefile, drugą linijkę zamieniamy na: LOCALBASE?= /usr (czyli usuwamy frazę /local).
  6. Dla systemów 64 bitowych: trzeba zamienić katalog lib na lib64. W Vim-ie Możemy to zrobić za pomocą polecenia: :%s/\/lib\//\/lib64\//g (około trzech wystąpień).
  7. Zmiany oczywiście zapisujemy.
  8. Teraz możemy wklepać sudo make install.

Wygląda na to, że działa, choć w sumie, openSUSE mam dopiero od kilku dni.

Z ostatniej chwili (16.10.2012):

Autor pluginiu przeniósł się na GitHub.

Bash – wybredne kopiowanie

Domyślnym katalogiem na pobieranie plików w moich przeglądarkach, jest pulpit. Stamtąd rozdzielam pliki wedle własnego widzi mi się, jednak pewną klasę plików, życzę sobie mieć zawsze w pewnym specyficznym katalogu. Do tej pory, przenosiłem je tam ręcznie, ale uświadomiłem sobie, że przecież nie jest trudno proces ten zautomatyzować. Po pięciu minutach powstała ta oto linijka:

" = "" ] && cp "$1" ""

Ten skrypt oczywiście wykorzystuje do otwierania pliku z poziomu przeglądarki. Najwięcej problemu było ze sprawdzeniem poprawności zadanego parametru ($1). Należało jednak upewnić się, czy parametr jest plikiem (to z pomocą: -f) i czy ma zadane rozszerzenie. Zamieszczam, aby mi się nie zgubiło. Na co warto zwrócić uwagę:

  • ${1##*.} – to wyrażenie zwraca rozszerzenie pliku (tutaj dla zmiennej $1). Dla nazwy np. “nazwa.z.kropkami.txt”, zwróci “txt”. Po sieci można znaleźć wersje z jednym płotkiem (#), ale wtedy wynikiem są wszystkie znaki po pierwszej kropce (szczegóły w załączonych linkach)
  • [ (...) -a (...) ] – I (ang. AND) w składni programu test, używanego przy warunkach w Bashu

Z pomocą: bash String Manipulations i Linux tip: Bash test and comparison functions.

Nieaktualny czas

Chciałbym od serca, autorowi, osobie odpowiedzialnej za stronę aktualnyczas.pl przekazać, że może ją sobie wsadzić… domyślcie się gdzie. Powód jest banalny: wbrew nazwie (domenie) oraz opisowi: Aktualny czas w Polsce strona wyświetla czas systemowy – co sobie nie ustawicie na kompie, to wyświetli. Doprawdy, istny przejaw geniuszu projektanta.

Wystarczy zajrzeć do źródła. Jest to bardzo prosty JavaScript, który co sekundę pobiera new Date(). Po co ta strona? Nie po to szukam aktualnej godziny w sieci, by widzieć to samo, co mój źle ustawiony zegarek. Nie rozumiem dlaczego w ogóle ta strona istnieje.

Uprzedzając niepotrzebne pytania: tak, wiem, co to synchronizacja i wiem też gdzie można znaleźć lepsze strony z prawdziwie aktualnym czasem.