openssh i wiele połączeń w to samo miejsce

jeśli korzystacie z ssh z pewnością zdarzyła się wam przynajmniej jedna z tych sytuacji:

  1. musicie się gdzieś połączyć gdzie i tak już macie nawiązaną sesję, po to by wykonać jedno polecenie. np. : ssh root@maszynka uptime
  2. musicie uruchomić wiele połączeń w jedno miejsce (konto, host, port)

do tego typu sytuacji idealnie nadaje się "connection multiplexing", znany też pod nazwą "connection sharing".
jak to działa?
jedno (pierwsze, ale nie koniecznie) połączenie ssh łączy się w trybie "master". następne połączenia w to samo miejsce używają połączenia master. dzięki temu korzystają (wszystkie) z tylko jednego połączenia tcp/ip., nie tracą czasu na negocjacje tcp/ip i ssh, ani na powtórną autoryzację.
efekt? następne połączenia są znacznie szybsze. w rozumieniu – samo połączenie. praca potem już jest ze standardową prędkością – zależną od tego jak daleko jest zdalny serwer i jak obciążone jest łącze.
ale czasem to właśnie nawiązanie połączenia jest najbardziej wkurzające i powolne.
jak więc to zestawić?
w swoim katalogu domowym macie (albo nie macie, ale wtedy trzeba założyć) katalog .ssh.
w nim trzeba stworzyć plik config. i dopisać mu na początku:
Host *
    ControlPath ~/.ssh/socket-%r-%h-%p
    ControlMaster auto

co to spowoduje? pierwsza linijka mówi, że poniższe tyczą się wszystkich połączeń.
druga – mówi, że sockety unixowe do komunikacji z połączeniem master mają być tworzone w katalogu $HOME/.ssh, a nazwa pliku ma się składać z:

  • słowa "socket"
  • nazwy konta na które jest połączenie
  • nazwy hosta na które jest połączenie
  • numeru portu na które jest połączenie

oddzielone myślnikami.
czyli gdy połączę się na konto "depesz" na maszynie kotek, to pojawi mi się taki plik:
srw——- 1 depesz depesz 0 2007-01-17 11:15 /home/depesz/.ssh/socket-depesz-kotek-22
ostatnia linijka mówi ssh, że negocjowanie połączeń lub korzystanie z mastera ma być automatyczne – jak nie ma jeszcze mastera, to aktualne połączenie ma być masterem i stworzyć socket. jak już jest master, to korzystamy z niego.

co nam to daje? przeprowadzę krótki test.
najpierw, bez mastera, połączę się na maszyne w swoim lanie i wykonam uname'a:

=> time ssh kotek uname
Linux

real    0m0.532s
user    0m0.032s
sys     0m0.000s

to teraz połączę mastera i ponowię test:

=> time ssh kotek uname
Linux

real    0m0.036s
user    0m0.020s
sys     0m0.004s

nieźle, nie? a trzeba pamiętać, że im dalej tym "szybciej" całość zadziała.
np.: do kotka mam ping w okolicach 1ms. do maszyny web którą zaraz potestuję, mam ping 12ms.
efekty?
bez mastera:

=> time ssh web uname
Linux

real    0m1.579s
user    0m0.048s
sys     0m0.004s

z masterem:

=> time ssh web uname
Linux

real    0m0.154s
user    0m0.016s
sys     0m0.000s

czy to wszystko jest "za darmo"? nie ma wad?
ma jedną, drobną.
pierwsze połączenie automatycznie staje sie masterem. i nawet jak się wylogujemy ze zdalnego hosta, to nie odzyskamy terminala, bo połączenie musi być cały czas aktywne – do czasu aż wylogujemy się ze wszystkich sesji ssh otwartych w tym połączeniu.
czyli jeśli:
na jednej konsoli zrobię ssh kotek, to to połączenie staje się masterem
na drugiej konsoli robię ssh kotek, to korzysta z połączenia mastera. odpalam tam sobie coś trwającego długo – np. backupy. to nie mogę zamknąć połączenia 1 dopóki się 2 nie skończy.
nie jest to wada wielka. trochę gorsze jest to, że jeśli zerwę (np. kill'em) pierwsze połączenie – to padają wszystkie.
to dwie wady. zyski w/g mnie mocno przeważają.
polecam każdemu zobaczenie jak to działa. warto.

zrzut strony www do pliku graficznego

czasem zdarza się, że chcę zrobić zrzut strony do pliku graficznego. print-screen czy inny screen-grabber się nie sprawdzają, bo zrzucą tylko to co widać. a jak strona jest długa – nie pomogą.
oczywiście można zrobić kilka screenshotów, a potem je połączyć w gimpie, ale … to takie skomplikowane.
na szczęście jest plugin który zrzuca cały ekran na raz. znalazłem go przypadkiem, a że czasem jest przydatny – daję informację i wam.
plugin nazywa się "page saver" i ma dwie wersje – darmową i płatną. są różnice, ale w skrócie – darmowa wystarcza. działa szybko i skutecznie. polecam wszystkim którzy z jakiegokolwiek powodu potrzebują zrobić screenshot strony www. (aha – działa w firefoxach 1.5 i wyżej).

czy potrzebujesz bazy danych?

bazy danych. mój ulubiony typ aplikacji. wspaniałe. cudowne i maksymalnie wkurzające.
czy zawsze najlepiej jest użyć bazy danych – przy czym przez "bazę danych" rozumiemy jakiegoś dbms'a. czy może lepiej użyć czegoś innego?
pytanie to od zawsze istniało. z tym, że różni ludzie różnie na to odpowiadali.
szalę zaczęły przeważać nowoczesne wyszukiwarki. już producenci silnika wyszukiwawczego inktomi (używanego m.in. w msn-search (starym) czy hotbot'cie) zdali sobie sprawę z kilku rzeczy. po pierwsze – wyszukiwanie jako zapytanie do bazy, jest zawsze takie samo. nie ma sensu go za każdym razem parsować czy zajmować się przetwarzaniem sql'owatym. lepiej będzie to przekodować od razu na c. wynik? już pierwsze wersje searcha poza bazą danych chodziły o rząd wielkości szybciej. rząd wielkości!. a wyszukiwanie pełnotekstowe to tylko jeden z elementów.
tematyka ta okazała się na tyle rozległa, że powstał wieloosobowy zespół (w skład którego wszedł profesor michael stonebraker z m.i.t (o ile się nie mylę – to facet który daaaawno temu rozpoczął projekt który finalnie stał się postgresem)) który zajął się tą kwestią.
wyniki – można przeczytać na sieci. w skrócie – bazy danych nie nadają się. specjalizowane aplikacje są szybsze. i to dużo szybsze.
oczywiście jest to standardowy przykład na "coś za coś". zyskujemy na szybkości, tracimy na elastyczności, prostocie. ale – no cóż. czasem po prostu trzeba wiedzieć które technologie gdzie się kończą.

“koncept”?

z jakim produktem kojarzy ci się słowo "koncept"? pokazano nowy kocept firmy …
samochody? tak. ale nie tylko.
dell – firma komputerowa, przedstawił właśnie koncept nowego … monitora. 22 cale. 1920×1200 pikseli. wbudowane głośniczki, kamera i mikrofon. co w tym fajnego? jak zwykle w przypadku konceptów: wygląd:

na razie nie wiadomo czy wejdzie do produkcji 🙁

czy grozi ci śmierć przez przedawkowanie kofeiny?

kofeina pobudza. ale potencjalnie może też zabić. przedawkowana. a ile dokładnie trzeba by wypić by przedawkować?
można to sprawdzić na tej stronie. trzeba podać co się pije (np. red bull, czy coca-cola, czy coca-cola light czy cokolwiek) i masę ciała. klik i już dowiadujemy się, np. że:
486.80 cans of Cherry Coke + You = Death.
After 206.89 cans of Red Bull, you'd be pushing up daisies.
Gulp down 59.11 cans of Cocaine Energy Drink and you're history.
słodkie.

woda znikąd

my tego zazwyczaj nie doświadczamy, ale są takie regiony gdzie zwykła, pitna, woda jest trudno dostępna.
dzieje się tak oczywiście w biednych, afrykańskich państwach. ale jest też problemem wojskowych – dostarczenie wody pitnej dla żołnierzy w dalekich krajach (irak) jest skomplikowaną operacją logistyczną. dostarczanie samolotami kosztuje dużo – około $30 za galon (3.8 litra). a żołnierze muszą pić.
problem jak widać dotyczy obu "skrajów" – biedaków, i bogatych, walczących.
oczywiste było, że rozwiązania nie wymyślą biedni. i tak też się stało.
na potrzeby armii, pewne firma (aqua sciences) wyprodukowała urządzenie które potrafi dziennie "wyprodukować"  500 lub 1200 (w zależności od tego czy bierzemy małe czy duże urządzenie) galonów czystej, pijalnej wody. skąd? z powietrza.
takich urządzeń było już do tej pory sporo. cóż więc w tym jest specjalnego? to, że działa przy bardzo niskich poziomach wilgotności – od 14%!
urządzonko kosztuje od $500,000. sporo. ale się zwraca – dzięki niemu koszt tego samego galonu wody spada 100-krotnie! do 30 centów.
firma nie chce/nie może udostępnić żadnych szczegółów technicznych. wiadomo jedynie, że wygrali dwa przetargi na urządzenia do dostarczania wody, i zaczynają prace nad tego typu sprzętem do zastosowań cywilnych.
dodatkowym "bajerem" jest fakt iż po podpięciu do istniejącego źródła wody, filtry zawarte w tym urządzeniu są w stanie oczyścić do 8000 galonów na dobę! jeszcze kilka lat i może się okazać, że przynajmniej ten jeden z problemów zniknie. z wojen. a potem może z krajów biednych i z miejsc wystąpienia tragedii klimatycznych.

wirtualizacja w solarisie

w nowym solarisie ma być zintegrowany system wirtualizacyjny – taki jak xen czy kvm. muszę przyznać, że jest to interesujący ruch ze strony suna – ostatnio wieli szum na świecie robi wirtualizacja, ale ze środowisk unixowych to linuks jest głównie "na topie" (oczywiście pomijając rozwiązania typu z/os ibm'a).
ruch suna ma im dopomóc w odzyskaniu roli głównego dostarczyciela technologii dla firm "it" na świecie. czy im się uda? zobaczymy.
na razie widzę, że jest to kolejny interesujący projekt z tej stajni. zfs. fenomenalny (podobno) dtrace. java open source. teraz logical domains. czyżby solaris z powrotem miał się stać interesującą alternatywą?

wybory w nowej zelandii – sukcesem postgresa

w nowej zelandii od pewnego czasu istniał centralny system zarządzania wyborami. pracował w oparciu o oracle'a i jakoś nie dawał sobie rady.
w 2003 roku rozpoczęto prace nad nowym systemem. i właśnie ostatnio został pomyślnie wdrożony. aktualny system pracuje w oparciu o postgresa 7.4, z replikacją (system jest rozproszony) opartą o rserva. firma która się tym zajmuje przymierza się do migracji na 8.1 i slony'ego, plus kilka zmian wewnątrz bazodanowych (jak np. wprowadzenie partycjonowania).
baza zajmuje teraz około 50giga, i trzyma informacje o około 2.8 miliona osób i ich głosów.