triggerek

a dziś mam dla państwa zagadkę.

zagadka powstała wczoraj w firmie, i aż się zdziwiłem, że okazała się taka skuteczna 🙂

zadanie jest proste. mamy tabelkę:

create table posts (id serial primary key, paired_with int references posts (id), title text, body text);

inne kolumny są nieistotne.

i teraz – post może być sparowany lub nie. jak nie jest – w paired_with ma null'a.

jak jest – to ma tam id innego postu.

nie można być sparowanym samym z sobą.

i teraz – chcemy stworzyć trigger lub triggery które utrzymają tam porządek:

  • nie dopuszczą do parowania z samym sobą
  • pilnują by wszystkie relacje były poprawne. czyli jeśli post 1 jest sparowany z 2 to 2 musi być z 1.
  • posty mogą być wstawiane sparowane lub nie
  • posty mogą być w dowolnej chwili update'owane.

proste? pewnie, że proste.

jak masz chwilę – napisz tego triggera(y)

jako ciekawostkę mogę podać, że znajomy tworzył wczoraj coś takiego przez kilka godzin 🙂

aha – ów znajomy proszony jest o nie podsyłanie rozwiązania.

technika, technika

jakiś czas temu pisało i trąbiło w mediach, że f16 co to nam amerykanie sprzedali to złom, bo po drodze do polski musiały przymusowo lądować.

jak więc zareagować na to, że najnowsza chluba sił powietrznych usa – f22 raptor miał “buga" który zwieszał kompa od nawigacji przy przekroczeniu 180 stopnia długości geograficznej (następuje wtedy zmiana z “180 stopni wschodniej na 180 zachodniej" albo odwrotnie).

osobiście uważam, że jest to po prostu słodkie.

5 rzeczy których nie chcieliście wiedzieć i nigdy o nie nie pytaliście.

co najmniej 3 osoby mnie naznaczyły (elf, ata i tmarc), więc lecimy:

  1. w 4 czy 5 klasie podstawówki przyniosłem do szkoły penthouse'a. koledzy mieli radochę, ja opierdziel.
  2. wyrzucono mnie ze szkoły (liceum) za to że namalowałem grafitti na korytarzu. tyle, że tego nie zrobiłem.
  3. mam kilka świetnych pomysłów na zarabianie kasy. i jedynie nie potrafię się zebrać w sobie i zabrać za to by je zrealizować. i tak od kilku lat. a pomysłów przybywa.
  4. nie mam w ogóle pamięci do twarzy czy nazwisk. jestem w stanie całkowicie bezstresowo nie zauważyć bądź nie poznać na ulicy osoby z którą pracuję od lat. co gorsza – nie robię tego celowo.
  5. nie czytam książek informatycznych. żadnych. niby jako programista/bazodanowiec powinienem, ale nudzą mnie. uważam, że jest z nimi jak ze świnkami morskimi – ani to świnka ani morska.

co do kolejnych ofiar:

  1. ads
  2. arim
  3. illi
  4. jarek zabiełło
  5. smoku

nowości w postgresie 8.3 – prompt

weszlo do cvs'a, wiec już chyba mogę opisać.

rzecz jest prosta.

od jakiegoś czasu w psql'u można używać zmiennych. przykład:

# \set a 123
# \set b '''depesz'''
# select :a, ':b';
?column? | ?column?
----------+----------
123 | depesz
(1 row)

zastosowanie jest oczywiste – prostsze pisanie sql'i z jakimiś zmiennymi.

minusy są dwa – utrudniona składnia do definiowania zmiennych tekstowych (potrójne apostrofy). i dwa – skoro i tak można tu ustawić tylko w skrypcie sql to funkcjonalność znikoma.

tak było do teraz.

ostatnio pojawił się patch na psql'a (i wszedł do cvs'a) dodający polecenie \prompt.

polecenie to pyta (zadanym tekstem) po czym odpowiedź użytkownika zapisuje do podanej zmiennej.

perfekcyjna sprawa gdy chcemy np. sparametryzować patch-bazodanowy.

przykład:

# \prompt 'Numeryczny identyfikator backupu? ' backup_id
Numeryczny identyfikator backupu? 123
# \echo :backup_id
123
# create table backup_:backup_id as select * from pg_proc;
SELECT
# select count(*) from backup_123;
count
-------
2007
(1 row)

sweet 🙂

zarabianie na linuksie

firmą która nieoczekiwanie (dla niej samej też) zaczęła nieźle zarabiać na linuksie okazało się hp.

w sierpniu 2005 roku ogłosili, że debian sarge będzie w pełni supportowany na ich serwerach. efekt? w roku rozliczeniowym 2006 okazało się, że mają sprzedaż za $25 milionów – sprzedaż która jest bezpośrednio powiązana z faktem istnienia tego supportu.

szefostwo hp'ka jest dosyć mocno zadowolone (też bym był) i zamierzają to dalej rozwijać. w toku jest ewaluacja etch'a (do tej pory supportem objęty jest jedynie sarge).

co ciekawe – debian nie jest pierwsza supportowana dystrybucja – wcześniej były suse i redhat, ale debian jest pierwszą całkowicie darmową. supportem objęte były jedynie komercyjne wersje suse i redhata.

tak czy inaczej – mnie to cieszy. używamy sporo hp'ków i fakt, że poważnie podchodzą do używania debiana bardzo mnie cieszy. a że na tym zarabiają – super, w końcu nie są organizacją charytatywną.

25 startupów

panowie z “business 2.0" napisali artykuł nt. 25 startupów web 2.0 które w/g nich mają największe szanse na sukces. warto spojrzeć – można znaleźć coś czego się nie znało, a jest fajne, lub po prostu jako podpowiedź przy inwestowaniu w akcje – w końcu każda z tych firm albo upadnie albo wejdzie na giełdę.