Wzorzec projektowy Fabryka. Twoja szansa na zwiększenie czytelności i testowalności kodu.

Wzorzec projektowy Fabryka to Twoja przepustka do projektowania modularnego i skalowalnego kodu. Wzorzec projektowy Fabryka jest przydatny do tworzenia obiektów. Głównym celem tego wzorca jest oddzielenie logiki tworzenia obiektów od reszty aplikacji oraz umożliwienie łatwego tworzenie różnych typów obiektów. Do konkretnych zastosowań wzorca Fabryka należą: Abstrakcja tworzenia obiektów – fabryka jest odpowiedzialna za tworzenie obiektów, … Czytaj dalej „Wzorzec projektowy Fabryka. Twoja szansa na zwiększenie czytelności i testowalności kodu.”

Kombinacje bez powtórzeń zbioru liczb – zapytanie SQL

Pytanie zgłoszone przez czytelnika. W jaki sposób z zestawu liczb będących w osobnych rekordach wyświetlić kombinacje bez powtórzeń. Dla przykładu wyświetlimy kombinacje bez powtórzeń zbioru 3 elementowego ze zbioru 6 elementowego. n!/k!(n-k)! Tworzymy tabelę testową: W zapytaniu nasze dane złączamy 3 krotnie bo takiej wielkości zbiór unikalnych liczb chcemy uzyskać, złączamy z warunkiem na różne … Czytaj dalej „Kombinacje bez powtórzeń zbioru liczb – zapytanie SQL”

Sphinx, czyli szybkie i skuteczne wyszukiwanie

Sphinx to open source’owy silnik wyszukiwarki SQL. Sphinx jest dostępny na licencji GPL 2 i jest całkowicie darmowy do zastosowań webowych. Sphinx został stworzony przez rosyjskich programistów, aplikacja jest cały czas rozbudowywana i rozwijana, posiada płatny support. Zasada działania Sphinxa Sphinx jest aplikacją stand-alone, musi zostać skompilowany i zainstalowany na serwerze. Działa na zadadzie deamon-client. … Czytaj dalej „Sphinx, czyli szybkie i skuteczne wyszukiwanie”

Aktualny czas a transakcja w PostgreSQL

Ostatnio miałem ciekawy case’ik – musiałem w obrębie jednej transakcji zmienić dane rekordów. Wszystko odbywało się w kilku funkcjach plpgsql, funkcje mogły się wywoływać rekurencyjnie w triggerach a zmiany dotyczyły między innymi pól typu TIMESTAMP. Wartości pól TIMESTAMP rekordów były zmieniane i ich zmiany automatycznie wpływały na w działanie skryptu. Jakież było moje zdziwienie gdy … Czytaj dalej „Aktualny czas a transakcja w PostgreSQL”

Sortowanie względem pola nie będącego w DISTINCT ON

Problem: Chcemy wyświetlić jedynie unikalne rekordy względem konkretnego pola/pól i posortować innym polu. W naszym przykładzie chcemy otrzymać zestawienie id_user – ostatnie logowanie Posiadane dane: Tabela z datami logowań użytkowników aplikacji w tabeli postaci: CREATE TABLE logs( id SERIAL PRIMARY KEY, — unikalny klucz główny id_user INTEGER, — klucz obcy tabeli użytkowników date TIMESTAMP — … Czytaj dalej „Sortowanie względem pola nie będącego w DISTINCT ON”

Zapytanie grupujące minimalnne wartości w grupie danych

Problem: Chcemy wyświetlić miesięczne zestawienie liczby nowo zarejestrowanych użytkowników mając jedynie daty ich logowań. Posiadane dane: Tabela z datami logowań użytkowników aplikacji w tabeli postaci: CREATE TABLE logs( id SERIAL PRIMARY KEY, — unikalny klucz główny id_user INTEGER, — klucz obcy tabeli użytkowników date TIMESTAMP — data logowania ); Przykładowe rekordy: INSERT INTO logs(id_user,date) VALUES(1,’2008-01-01′); … Czytaj dalej „Zapytanie grupujące minimalnne wartości w grupie danych”

Jak usunąć zduplikowane rekody w tabeli bazy danych?

Czasami zdarza się że, poprzez nie do końca poprawną walidację danych wejściowych lub z powodu błędnego działania aplikacji stworzą nam się w bazie danych zduplikowane rekordy. Takie niepożądane zduplikowane dane w 90% będą nam przeszkadzać i w najlepszym razie mogą powodować niepotrzebny zamęt w aplikacji. Skutki mogą takżę spowodować dużo poważniejsze problemy jak chociażby rozsynchronizowanie … Czytaj dalej „Jak usunąć zduplikowane rekody w tabeli bazy danych?”