klawiatura marzeń

daaaaawno temu, za siedmioma lasami i czymś tam jeszcze. byłem piękny i młody, i jako młody człowiek chodziłem do “centrum informatycznego uniwersytetu warszawskiego" (ciuw, znany także jako plearn).

była tam taka sala (numer 18) gdzie zamiast normalnych terminali były pecety. pecety ibm'a. niby nic, ale były one wyposażone w najlepszą klawiaturę jaką kiedykolwiek widziałem. była niezniszczalna. ciężka, klawisze klikały (nie to co te dzisiejsze cichutkie, że nawet nie wiadomo czy coś wcisnąłem czy nie). cudo. o ich odporności krążyły legendy. wiem, że sam osobiście przybijałem taką klawiaturą gwoździe.

no i się skończyło. przestałem tam chodzić, trochę mi lat przybyło. takich klawiatur już nie ma. czasem można znaleźć gdzieś u kogoś, ale to zazwyczaj też jest fan i nie odda.

myślałem, że sprawa jest przegrana, bo nowe klawiatury ibm'a nie są w żadnym stopniu podobne.

i o to … cud, nad cudy.

okazuje się, że patent na taką klawiaturę ma firma unicomp (może miała wcześniej i licencjonowała ibm'owi, może odkupiła patent od ibm'a, nie wiem). i teraz robi takie klawiatury (a nawet lepsze: czarne). i można je kupić. $69 za klawiaturę która przeżyje mnie i moje dzieci. coś pięknego.

dostępne są prznajmniej w sklepie yahoo, może gdzieś jeszcze, nie wiem, nie szukałem dalej. czekam na przypływ kasy…

anglojęzyczne książki w polsce … nice try, empik :)

empik zaczął sprzedawać na większą skalę książki anglojęzyczne.

super – czyż nie? nie.

chciałem ostatnio kupić (i finalnie kupiłem, a dokładniej kupiono mi), książkę “sql cookbook" z o'reillyego.

książkę można kupić w barnes & noble no i teraz w empiku. tyle, że w b&n kosztuje $32, a w empiku 152pln (trochę ponad $50). niezłe przebicie. co prawda – dostaje się ją za to szybciej – empik pisze, że wysyła w 2-3 dni, a barnes and noble napisał jedynie: Delivery estimate: May 17, 2006 – June 1. ale jednak wolę te kilka dni poczekać niż płacić 2 razy tyle …

wstawianie rekordu, gdy jeszcze go nie ma

kolega z pracy zapytał:

jak wstawić rekord do tabelki, ale tylko jeśli go tam jeszcze nie ma?

teoretycznie sprawa jest prosta: select, jak nic nie zwróci – insert. no ale jak będzie to działało równolegle to jest spora szansa na wysypanie się takiego kodu.

potrzebna jest więc inna metoda.

może insert i przechwycenie błędu.

w sumie to nie takie głupie:

  • BEGIN;
  • INSERT;
  • COMMIT;

jeśli insert się nie udał, no to commit zrobi to samo co rollback.

fajnie. zadziała. ale jest jakoś mało eleganckie.

a może inaczej … chwila zastanowienia i … jest. proste rozwiązanie:

INSERT INTO tabelka (pole_1, pole_2, …, pole_n)
SELECT wartosc_1, wartosc_2, …, wartosc_n
WHERE NOT EXISTS ( SELECT * FROM tabelka WHERE pole_1 = wartosc_1 AND pole_2 = wartosc_2 AND … AND pole_n = wartosc_n);

nie jest to może najśliczniejsze, ale działa na pewno. nie wywala się niezależnie od tego czy wstawiło czy nie (więc można bezpiecznie używać w transakcjach). same plusy 🙂