TechLife devBlog

Listopad 2011

[CSS] Pionowo czy poziomo?

Internet, Kodowanie, Techblog 25 listopada 2011 23:51

Nie będzie to flame, chciałem przedstawić Wam tylko mój punk widzenia. Do chwili zatrudnienia się w Firmie byłem święcie przekonany, że jedynym słusznym formatowaniem jest formatowanie pionowe, gdzie elegancko mamy podane jak na tacy wszystkie atrybuty.

poziomo

W Firmie przyszedł czas bardzo intensywnego kodowania. Często pracowałem z dużymi arkuszami stylów, których ciągłe przewijanie stawało się bardzo niewygodne. Nierzadko trzeba było też wrócić do poprzednich projektów i szybko poprawić jakieś drobne niedociągnięcia. Dopiero wtedy uświadomiłem sobie, że w CSS-ie jest coś ważniejszego niż atrybuty i ich wartości. Najważniejszą rzeczą są selektory! Dopiero zrozumienie tej kwestii pozwoliło mi inaczej spojrzeć na elegancję poziomego formatowania.

poziomo

Rzeczą oczywistą jest to, że najpierw wyszukujemy obiekt, który chcemy zmodyfikować a następnie dodajemy mu kolor tła czy zmieniamy margines. Priorytetem jest więc szybkie odnajdywanie selektorów a później dopisanie czy odnalezienie potrzebnego atrybutu jest już dość proste, mimo że wszystkie atrybuty są w jednej linii. IMHO o wiele więcej czasu zajmuje znalezienie odpowiedniego selektora w rozciągniętym pliku niż odpowiedniego atrybutu w liniowym zapisie.

Aby jeszcze bardziej ułatwić sobie sprawę należy trzymać się prostej zasady: najpierw definiujemy box model: display, width, height, float, margin, padding (najlepiej zachować taką kolejność) a później całą resztę (position, background, color, font-size itp). Trzymając się tej zasady od razu wiemy czy szukamy atrybutu z końca czy początku linii.

Jeszcze raz poglądowo. Formatowanie pionowe - mało widać, dużo szukania

pionowo

Formatowanie poziome - szybkie odnajdywanie selektorów i (trzymając się zasady) w miarę szybkie odnajdywanie atrybutów.

poziomo

Strony firmowe w Google Plus

Internet 8 listopada 2011 20:59

Dzisiaj logując się na G+ zauważyłem, że zmieniła się favikona (sic!). Googlowcy nigdy nie robią drobnych zmian, więc wiedziałem już że coś dodali. Okazało się, że pojawiła się opcja zakładania kont firmowych, czyli odpowiedników Facebookowych fanpage'y.

Jak widać wygląda dość ładnie. Szkoda tylko, że w większości sprowadzało się to do skopiowania danych z Facebooka w dodatku w dość okrojonej formie. Nie można "urządzić" strony po swojemu, instalując różne grafiki czy dodatkowe aplikacje tak jak ma to miejsce na Facebooku. Dobre kilka minut szukałem też opcji przekazania innym osobom praw administracyjnym do strony, jednak jak się ostatecznie okazało taka funkcjonalność jeszcze nie istnieje...

Na reklamie oczywiście prezentuje się sweetaśnie.

Estetyka i prostota Google Plus (swoją drogą bezczelnie zerżnięta z Diaspory) wygrywają dla mnie z wyglądem Facebooka, ale uproszczona funkcjonalność już nie. Cały czas nie bardzo mogę pojąć jak się mają kręgi (G+) do grup (F). Kręgi nijak nie spełniają funkcji grup. Nie istnieje przecież pojedyncza grupa fanów np. Django, do której by można się zapisać i podyskutować, ponieważ każdy ma inny krąg znajomych.

Poza tym korzystając z G+ jako firma widzimy strumień wiadomości ludzi, których nasza firma ma w kręgu znajomych... WTF? Jak to się ma do Facebookowego firmowego Wall gdzie umieszczane są tylko wiadomości, które ktoś skierował bezpośrednio do naszej firmy?

Google, siadaj: dostateczny.

Łączenie przez SSH na dynamiczne IP

Linux, Techblog 4 listopada 2011 22:25

Kiedyś korzystałem z różnych serwisów z cyklu NO-IP. Z czasem jednak niektóre się pozamykały a inne stały się płatne. Nie miałem też ochoty rejestrować się i testować nowych rozwiązań, po których do końca nie było wiadomo czy na pewno są darmowe czy może płatne. Wymyśliłem więc prosty trick.

The story

W biurze mam stale działający komp, który służy do robienia backupów z naszych serwerów. Czasem z domu chcę coś na nim pogrzebać ale problem polega na tym, że nasz Netiowy ADSL co jakiś czas zmienia IP. Żeby więc móc za każdy razem połączyć się przez SSH muszę śledzić zmiany IP.

The trick

Metoda jest bardzo prosta. Wystarczy posiadać internetowy serwer (nazwijmy go serwerem zdalnym), który spełni rolę pseudo DNS-a, czyli zapytany o namiary na biurowy serwer (nazwijmy do serwerem lokalnym) zdradzi nam jego IP.

W tym celu na serwerze zdalnym piszemy prosty skrypt, który serwer lokalny będzie odpalał co godzinę.

nazwijmy go zapisz-ip.sh

#/bin/sh
echo $SSH_CLIENT | cut -f1 -d' ' > /tmp/ip

Tak przygotowany plik zapisujemy np. w katalogu bin w katalogu domowym użytkownika (czyli /home/tomek/bin/zapisz-ip.sh) i oczywiście dajemy mu prawa do wykonywania (chmod +x bin/zapisz-ip.sh). Jak widać skrypt ze zmiennej $SSH_CLIENT wyciąga adres IP i zapisuje go do pliku /tmp/ip.

Teraz na serwerze lokalnym (tym w biurze) ustawiamy w cronie zadanie wywoływania tego skryptu co godzinę. Czyli stukamy crontab -e i piszemy:

11 * * * *      tomek@ADRES-SERWERA-ZDALNEGO.pl ~tomek/bin/zapisz-ip.sh

Tutaj należy wspomnieć, że połączenie pomiędzy serwerem lokalnym a zdalnym powinno odbywać się poprzez autoryzację kluczem SSH. W przeciwnym wypadku skrypt zatrzyma się na etapie podawania hasła.

Mamy więc na serwerze zdalnym stale uaktualniany plik /tmp/ip zawierający bieżące IP serwera lokalnego. Żeby teraz połączyć się z serwerem lokalnym z dowolnego innego miejsca wystarczy przy łączeniu przez SSH adres IP odczytać z serwera zdalnego. Wygląda to tak:

ssh tomek@`ssh tomek@ADRES-SERWERA-ZDALNEGO.pl cat /tmp/ip`

Najlepiej oczywiście wsadzić to w jakiś skrypt i wywoływać jednym poleceniem. Taki sam efekt można uzyskać wykorzystując serwer www z obsługą np. PHP + prosty skrypt zapisujący do pliku adres IP a następnie serwujący go pod jakimś URL-em.

PS. Jeżeli trick wydaje Wam się zbyt banalny to polecam niezłą listę 100 darmowych gier na Linuksa ;-).