poglądy polityczne

wszedłem dziś przypadkiem na blog wo, i znalazłem tam informacje o quizie politycznym który pokazuje gdzie na dwuwymiarowej siatce poglądów się znajduję.

test zrobiłem. i co mi wyszło?

Economic Left/Right: 5.13
Social Libertarian/Authoritarian: -1.59

wykres wyglądał mi tak:

depesz-political.jpg

jest to interesujące z dosyć śmiesznego powodu. na stronie jest mapka poglądów znanych polityków:

internationalchart.gif

zwróciliście uwagę? nie ma nikogo w “mojej" ćwiartce. czyli jako polityk byłbym bezkonkurencyjny!

depesz na prezydenta!!!

nowa “zabawka”

jeden z klientów eo, firmy gdzie pracuję, właśnie kupił nowy serwer pod bazy danych. ponieważ maszynkę trzeba przetestować, stwierdziłem, że przy okazji porównam sobie jej wydajność z innym serwerem – nieużywanym już starszym serwerem bazodanowym.

poprzednia maszynka:

  • 2 procesory amd opteron 250, 2.4ghz
  • 4 giga ramu
  • 4 dyski scsi, 15krpm, spięte sprzętowym raidem w dwie macierze raid1 po dwa dyski.
  • postawiona pod centosem z kernelem 2.6.9-22.ELsmp

czyli tak naprawdę bez przesadnych rewelacji.
testowałem przy pomocy takiego skryptu:

#!/bin/bash
export TOTAL_TRANS=1000000
for C in 1 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
do
pg_ctl -w -l logs/x.log start
dropdb bench
createdb bench
pgbench -i -s 750 -U pgdba -d bench
TRANS=$[ $TOTAL_TRANS / $C ]
pgbench -s 750 -c $C -t $TRANS -U pgdba -d bench 2> /dev/null > /home/pgdba/bench-$CC-$C.std
pg_ctl -m immediate stop
killall -9 postgres
killall -9 postmaster
killall -9 postgres
killall -9 postmaster
done

proste i konkretne. baza bench ma około 13 giga (aha. gdybyście chcieli powtórzyć test u siebie – pgbench się wywala na -s 750 (na niższych trochę pewnie też) i trzeba go zapatchować – w pgbench.c znaleźć polecenia tworzenia tabel i zastąpić inty bigintami.

postgresql'a użyłem 8.1.4, postgresql.conf zawierał wartości domyślne, zmieniłem jedynie 2 parametry:

max_connections = 110
shared_buffers = 65536
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'

czyli jak widać nic specjalnego – chodziło mi nie o tuning postgresa, tylko o sprawdzenie o ile mi mniej więcej przyspieszy system po zmianie sprzętu.

wyniki starszego serwera:

old.png

rzuca się w oczy stabilność wydajności przy przyroście jednocześnie połączonych klientów.

nowa maszynka:

  • 4 procesory amd opteron 875, 2.2ghz
  • 32 giga ramu
  • 2 dyski sas na system, 14 dysków w zewnętrzen macierzy scsi, 15krpm, spięte w jedną dużą macierz raid10
  • postawiona pod debinanem testing z kernelem 2.6.16-2-amd64-k8-smp

test i konfiguracja postgresa – identyczne.

wyniki:

new.png

tym razem rzuca się w oczy brak stabilności wyników przy większej ilości połączeń.

ale też liczby są sporo wyższe 🙂 ponad 6 krotnie wyższe.

zakładam, że brak stabilności może wynikać z tego, że dla tej maszyny ta baza była mała. tzn. baza mająca 13 giga dla maszyny z 4giga ramu to sporo. ale dla maszyny z 32 giga ramu, to drobiazg.

zrobię jeszcze jeden test (będzie dłuższy, więc wyniki pewnie dopiero w poniedziałek) – dokonfiguruję postgresa do końca, i zrobię test na bazie danych tak ze 110 – 120 giga. postaram się zrobić testy do większej ilości klientów.

może to wyjaśni przyczynę dziwnych wahań wyników.

aha – testy nie są idealne – pgbench ma swoje standardowe problemy. dodatkowo – ta maszyna, co prawda nie jest używana normalnie, ale chodzi na niej cron który np. w nocy włącza “updatedb" to pewnie trochę zaburza wyniki.

jeszcze tylko muszę się dowiedzieć ile te maszynki kosztowały aby móc porównać “bang-for-bucks" 🙂

wkurzające konsekwencje udaremnionych zamachów

british airways, na fali obostrzeń po ostatnich (nieudanych) zamachach, zdecydowało się zakazać posiadania w samolocie kolejnych rzeczy:

  • jakiejkolwiek elektroniki w tym notebooków czy palmtopów oraz breloczków elektronicznych do kluczy
  • płynów (poza niezbędnymi lekarstwami, których brak mógłby zagrozić zdrowiu właściciela).

i to mnie osobiście boli.

jak gdzieś leciałem to zawsze miałem ze sobą lapa by móc coś poczytać/popisać, no i oczywiście butelkę coli – ilości które podają w samolocie, są może i wystarczające dla standardowych pasażerów, ale jak ktoś jest uzależniony od coli to bez 2 litrów się nie obejdzie.

oczywiście – można zamiast lapa wziąśc książkę. a i bez coli pewnie da się wytrzymać. ale wydaje mi się, że obostrzenia idą w złym kierunku.

nie mam nic przeciwko fotografowaniu ludzi na lotniskach i porównywaniu z bazami danych terrorystów. nie mam nic przeciwko kontrolom itd. ale pozbawianie mnie możliwości pracowania czy chociażby zabawy w trakcie długiego lotu – no to już jest przesada.

routing w linuksie

miałem ostatnio interesującą sytuację w firmie.

jeden z pracowników miał na swoim komputerze wersję demo nowego serwisu www. i trzeba było wystawić to dla klienta na zewnątrz.

teoretycznie trywiał – jak się okazało, nie do końca.

najpierw ogólnie.

sieć wygląda w uproszczeniu tak:

Diagram1.png

aplikacja była odpalona na komputerze “pracownik a".

na firewallu/routerze regułki były skomplikowane, ale dla uproszczenia przyjmijmy, że było tylko:

iptables -P INPUT DROP<br />
iptables -P FORWARD DROP<br />
iptables -F<br />
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
iptables -A INPUT -p icmp -j ACCEPT<br />
iptables -A FORWARD -p icmp -j ACCEPT<br />
iptables -A INPUT -i lo -j ACCEPT<br />
iptables -A FORWARD -i lo -j ACCEPT<br />
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT # eth0 TO sieć lokalna, eth1 - internet<br />
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

jak widać nic skomplikowanego.

no więc pojawia się zadanie – klient ma mieć wystawiony serwis z “pracownik a" (port 80) na dowolnym porcie.

ok. robimy:

iptables -t nat -A PREROUTING -s 243.65.193.17 -p tcp --dport 82 -j DNAT --to-destination 172.30.0.2:80

i … działa. zero zdziwień. proste i miłe.

ale jak wyżej napisałem – trywiał, ale nie do końca. jaki więc haczyk?

no cóż. następnego dnia pojawił się drugi request:

tak jak klient wchodzi na http://192.0.2.94:82/ to pracownicy z sieci (np. pracownik b) też mają móc.

i tu zaczęły się schody.

pierwszy strzał:

iptables -t nat -A PREROUTING -s 172.30.0.0/24 -d 192.0.2.94 -p tcp --dport 82 -j DNAT --to-destination 172.30.0.2:80<br />
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT

i nie działa.

chwila zastanowienia – nic prostego się nie okazuje.

tak więc rozrysowaliśmy sobie sytuację:

  1. “pracownik b" wysyła pakiet do 192.0.2.94:82. adres źródłowy pakietu: 172.30.0.3:1031 (jakiś losowy, wysoki port)
  2. ponieważ pakiet jest do innej sieci niż 172.30.0.0/24, zostaje przekazany do routera
  3. router ma regułkę która pakiet dnatuje, więc dane pakietu zmieniają się na:
    źródło: 172.30.0.3:1031, cel: 172.30.0.2:80
  4. pakiet przechodzi przez firewalla zaakceptowany i wchodzi z powrotem do lanu.
  5. pakiet trafia do komputera “pracownik a". super! ale tu zaczynają się kłopoty.
  6. “pracownik a" odpowiada. zamienia miejscami nadawcę i odbiorcę pakietu, otrzymując:
    źródło: 172.30.0.2:80, cel: 172.30.0.3:1031
  7. ponieważ cel jest w sieci 172.30.0.0/24 – wysyła pakiet bezpośrednio do odbiorcy – z pominięciem routera.
  8. do komputera “pracownik b" trafia pakiet (ack/syn), na dobry port, ale od złego ip?! “pracownik b" chciał “rozmawiać" z 192.0.2.94:82, a tu dostaje pakiet od 172.30.0.2:80 – czyli jakaś pomyłka. pakiet zostaje olany.
  9. nie bangla.

po rozrysowaniu sprawa stała się jasna.

pozostaje naprawić. pojawił się pomysł by robić DNAT'a, na “pracownik a" (przekazując pakiet do routera), ale to było brzydkie.

co finalnie zrobiliśmy?

na routerze dodaliśmy jedną regułkę:

iptables -t nat -A POSTROUTING -s 172.30.0.0/24 -d 172.30.0.2 -p tcp --dport 80 -j SNAT --to-source 172.30.0.1

i działa!

pełny przesył wygląda teraz tak:

  1. “pracownik b" wysyła pakiet do 192.0.2.94:82. adres źródłowy pakietu: 172.30.0.3:1031 (jakiś losowy, wysoki port)
  2. ponieważ pakiet jest do innej sieci niż 172.30.0.0/24, zostaje przekazany do routera
  3. router ma regułkę która pakiet dnatuje, więc dane pakietu zmieniają się na:
    źródło: 172.30.0.3:1031, cel: 172.30.0.2:80
  4. pakiet przechodzi przez firewalla zaakceptowany
  5. przed wyjściem do lanu pakiej jest snatowany, więc dane pakietu zmieniają się na:
    źródło: 172.30.0.1:1031, cel: 172.30.0.2:80
  6. pakiet trafia do komputera “pracownik a".
  7. “pracownik a" odpowiada. zamienia miejscami nadawcę i odbiorcę pakietu, otrzymując:
    źródło: 172.30.0.2:80, cel: 172.30.0.1:1031
  8. ponieważ cel jest w sieci 172.30.0.0/24 – wysyła pakiet bezpośrednio do odbiorcy – ale w tym przypadku odbiorcą jest router
  9. mechanizm conntracka na routerze dokonuje odpowiednich (odwrotnych) translacji adresów, tak, że pakiet powrotny przyjmuje postać:
    źródło: 192.0.2.94:82, cel: 172.30.0.3:1031
  10. do komputera “pracownik b" trafia pakiet (ack/syn), na dobry port, i od słusznego ip.
  11. bangla.

po zapisaniu tego wszystkiego sprawa staje się jasna i oczywista. ale nie zmienia to faktu, że kilka razy słychać było – “nie da się".

powyższy pomysł/regułki dedykuję wszystkim zdającym test na pracownika do nas 🙂 tam jest mocno podobne pytanie 🙂

naprawdę przełomowy samochód

samochody dla “zielonych" były zawsze brzydkie. czy to gm ev1, czy prius – nie są one ładne.

do tego – samochody naprawdę ekoprzyjazne – całkowicie elektryczne miały zawsze kiepskie osiągi (o ile można to nazwać osiągami), oraz fatalny zasięg – najpopularniejszy (około 1000 wyprodukowanych egzemplarzy) gm ev1, miał zasięg około 100 mil (po wymianie baterii na inne, do 150 mil).

tragedia.

w 2003 roku martin eberhard stwierdził, że chce jeździć samochodem elektrycznym, ekoprzyjaznym, ale niech on wygląda i może! czy jazda czymś takim musi być karą?

martin jest informatykiem (a przynajmniej około informatykiem). z bańki internetowej wyszedł z ponad 100 milionami dolarów i bezcennymi znajomościami.

założył firmę która miała produkować samochody elektryczne. lepsze. dużo lepsze. ładne, szybkie i mogące jeździć na większe dystanse.

zdobyli pieniądze – łącznie 60 milionów dolarów, z czego połowę dał elon musk – współzałożyciel paypala. inni inwestorzy? sergey brin i larry page. dosyć znane nazwiska 🙂

do budowy samochodów podeszli tak jak do startupów komputerowych. wybrali 4 projektantów by zaprojektowali samochoód. wygrał projekt kolesia który projektował samochody dla firmy lotus.

dzięki temu, że przemysł motoryzacyjny outsource'uje produkcję czego tylko może – praktycznie każdą część można kupić od niezależnych dostawców.

największym przełomem była zmiana zasilania. koncerny motoryzacyjne używają starych i kiepskich akumulatorów kwasowo ołowianych lub niklowo wodorowych. a kto teraz używa najlepszych dostępnych ogólnie akumulatorów? laptopy! w efekcie samochód będzie napędzany ponad 6 tysiącami ogniw typu baterie laptopowe.

samochód powstał. firma, na część znanego wynalazcy została nazwana “tesla".

jak wygląda?

tak:

body-30.jpg

co potrafi? 60 mil na godzinę w około 4 sekundy. prędkość maksymalna – około 200 kilometrów na godzinę. zasięg – 250 mil – czyli 400 kilometrów. czas “tankowania" – 3.5 godziny. baterie wystarczają na minimum 100 000 mil.
ekonomia jazdy? koszt przejechania mili to 1-2 centy. przeliczając to na 100km i złotówki, dostajemy informacje, że 100kilometrów kosztuje do 3,8 złotego!

minusy? oczywiście są. szacowana cena (szacowana, bo samochód jeszcze nie jes w sprzedaży, $80.000 (do $100.000 w/g innych źródeł).

no i jeszcze jedno – jak jesteś miłośnikiem głośnego wrrrrrrrrrrrrrrrrr przy ruszaniu – tesla ci się nie spodoba. jest cicha. mimo, że silnik kręci się do 13500 obrotów na minutę praktycznie go nie słychać.

aha. autoka ma dwa biegi do przodu i jeden do tyłu. na pierwszym biegu do przodku można jechać do 70 mil na godzinę (112km/h)!

twórcy są tak zadowoleni z efektu, że przymierzają się do zaprojektowania normalnego 4 drzwiowego sedana.

a teraz, popatrzmy jak wygląda na zewnątrz:

body-10.jpg body-20.jpgbody-50.jpgbody-40.jpgbody-30.jpgbody-60.jpgbody-91.jpgbody-90.jpgbody-80.jpgbody-70.jpgbody-94.jpgbody-95.jpgbody-96.jpgbody-97.jpgbody-99.jpgbody-100.jpgbody-101.jpgbody-102.jpgbody-103.jpgbody-105.jpgbody-191.jpgbody-192.jpgbody-193.jpgbody-401.jpgbody-402.jpgbody-404.jpgbody-408.jpgbody-5001.jpgbody-502.jpgbody-554.jpgbody-501.jpgbody-600.jpgbody-555.jpgbody-700.jpg

a tak wygląda w środku:

cockpit-10.jpg cockpit-20.jpgcockpit-30.jpgcockpit-40.jpgcockpit-200.jpgcockpit-140.jpgcockpit-220.jpgcockpit-300.jpg

nowy gt shelby

podobało mi się “60 sekund" z cage'em. wiem. powinienem się wstydzić. nie jest to film ważny, istotny, ani piękny.

ot. filmidło.

ale w tym filmie grał śliczny samochód – ford gt shelby.

wyglądało to cudo mniej więcej tak (wersja w filmie była bardziej poobijana):

1967 GT 500 Shelby Mustang.jpg

sweet.

ford wypuścił jakiś czas temu nową wersję shelby'ego, ale tylko i wyłącznie jako samochód do wypożyczalni (!). lz automatyczną skrzynią i ogólnie “be".

ale. do teraz.

teraz ford wypuścił inną wersję, i tą będzie można kupić. ma kosztować niecałe $43.000, i mieć 325 koni.

a jak wygląda? cudownie:
2007 GT Shelby Mustang.jpg

i tak, wiem, że jest to tylko przedłużenie penisa. fine. ale i tak wygląda super.

akcje/udziały w ludziach? – reality check

daaaawno temu pisałem o pomyśle shawna hogana nt. kupowania akcji ludzi.

dziś jako pewnego rodzaju kontunuację tamtych pomysłów trafiłem na interesującą aukcję.

koleś (niejaki ron steen) licytuje – z ceną początkową $100.000 – 2% wszystkich swoich zarobków jakie będzie miał.

mówi kim jest, jakie ma wyniki z testów, co robi, dlaczego i jak.

co prawa – jak sam policzył – aby inwestor wyszedł na swoje, musiałby (on, ron) pracować aktywnie przez 40 lat ze średnią pensją $125.000 rocznie.

facet oferuje udział we wszystkim co zarobi lub wygra – jako pracownik lub właściciel firmy – w tym wygrane na loteriach (z tym, że jak zaznaczył, nie gra na loterii, więc szanse są jakby niewielkie.

ma cel – dojść do 30 milionów dolarów. 2% od tego – całkiem niezła kasa.
czy znajdzie chętnych – nie wiadomo, na razie było kilka pytań, ale żadnych ofert. wydaje mi się jednak, że jeśli ktoś mu taką kasę da, to na tym zarobi – facet z takimi pomysłami nie będzie biedował.

ile czasu trwa wyszkolenie dobrego programisty?

rok? dwa? 10?

nie. 16 tygodni. 4 miesiące!

firma infosys w indiach oferuje szkolenia, które po jednym cyklu, trwającym właśnie 16 tygodni, mają zrobić z ciebie świetnego programistę, równemu umiejętnościami komukolwiek na świecie.

zbudowali w tym calu kampus, zajmujący 134 hektary. w nim mają:

  • 58 sal do zajęć praktycznych
  • 183 sale wykładowe
  • kafejkę
  • bibliotekę
  • 2350 sypialni
  • 10 osobowy szpital
  • boisko do kosza
  • 22 stoły do pingponga
  • basen
  • jakuzi
  • tor do bowlingu/kręgli
  • 4 ekranowe kino na 1500 osób
  • hall do medytacji

na miejscu uczy kadra z wielu krajów pokazując rozmaite techniki i podejścia.

czy faktycznie uda im się w 4 miesiące zrobić dobrego programistę? szczerze mówiąc wątpię. ale na pewno ludzie którzy przez to przejdą będą lepsi od przeciętnej. i moze o to właśnie chodzi?

pozytywne wiadomości dla fanów postgresql’a

możliwe, że kojarzycie firmę enterprisedb. firma ta sprzedaje “paczkowanego" postgresa z dodatkami – replikacją, debuggerem funkcji pl/*, narzędziami upraszczającymi migrację z oracle'a.

co istotne – enterprisedb bardzo aktywnie pomaga rozwijać opensource'owego postgresa – zatrudniając core-developerów, backportując swoje zmiany i ogólnie mocno się angażując.

ostatnio miały miejsce 2 sympatyczne wydarzenia związane z enterprisedb.

po pierwsze – 1 sierpnia poinformowali, że zakończyli drugą rundę zbierania finansów i mają teraz o 20 milionów dolarów więcej. kasa zostanie przeznaczona na merketing i poszerzanie rynków sprzedaży.

mimo, że pewnie wolałbym by wpakowali te 20 milionów w programistów o tyle widzę kolosalny sens tego co robią. jeśli faktycznie uda im się sprzedać więcej licencji, pakietów supportowych itd, to powstanie mocna grupa płacących użytkowników. a mając płacących uzytkowników będzie prościej o ludzi którzy będą mogli implementować nowe fajne rzeczy w postgresie – także tym open source'owym.

po drugie – sun microsystems (ta sama firma która ostatnio zwolniła 5000 ludzi), reklamował sie niedawno, że będzie oferował support do postgresa. teraz (informacja z wczoraj) okazało się, że support świadczyć będzie enterprisedb. po prostu sun podpisał z nimi umowę na świadczenie supportu w imieniu sun'a.

dzięki temu jawi się kilka rzeczy:

  • postgresql zyskuje realną, silną pomoc od suna
  • support świadczony przez suna będzie na wysokim poziomie – i nie dlatego, że sun na szybko kogoś wyszkoli, ale dlatego, że support będą świadczyli ludzie którzy na postgresie “zęby pozjadali"
  • enterprisedb na tym zarobi 🙂

to wszystko powoduje, że z coraz większym optymizmem patrzę na przyszłość swojej ulubionej bazy.

ostre dodatki – ciąg dalszy

jakiś czas temu pisałem o stronie prezentującej różne ostre sosy.

życie dopisało ciąg dalszy. businessweek napisał o kolesiu który był miłośnikiem ostrych sosów. tak duży, że założył sklep sprzedający je oraz bloga gdzie pisał o tym co nowego ciekawego można znaleźć kupić. w 2005 roku zarobił na czysto $130000. na 2006 planuje dobić do $200000.

można u niego kupić praktycznie wszystko co służy do zaostrzania smaku. od prostych buteleczek tabasco po $4.95 po słynne butelki z kryształkami “Blair's 16 million reserve" po $300 za sztukę.

czy ktoś to będzie sprowadzał do polski? jak tak – z chęcią dorzucę się do zamówienia.