Bazy Danych »

[18 maja, 2008 | 2 komentarze | Poziom: 0 ]

Dawno nie pisałem - ale cóż - nie mam za dużo czasu.

SQLite w zamierzeniu jest dobrym pomysłem. Wiele aplikacji potrzebuje bazy danych ale nie potrzebuje mieć całego bagażu (typu obsługa wielu sesji naraz) bazy danych typu MySQL czy PostgreSQL - jedna z rzeczy, która mi się niespodobała w MythTV to konieczność instalacji MySQL (wolę PostgreSQL). Jednak SQLite ma kilka problemów, które są dla mnie dość denerwujące.

Czytaj dalej »

Bazy Danych, Bezpieczeństwo, Programowanie (PHP, Java...) »

[20 kwietnia, 2008 | 4 komentarze | Poziom: 0 ]

Jeśli nie korzystamy ze SQLite to trzeba wpisać hasło do konfiguracji merb/rails. Kłopot w tym, że zazwyczaj chcemy, żeby było niedostępne dla innych.

Czytaj dalej »

Bazy Danych, Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Systemy plików (NFS, ext3...) »

[09 stycznia, 2008 | 14 komentarzy | Poziom: 0 ]

Mimo że Subversion miało być lekiem na całe zło - szczególnie spowodowane przez CVS - to niestety nim nie jest. Nowoczesne systemy kontroli wersji mają wiele zalet. Dodatkowo nigdy nie spotkałem w nich błędów. W ostatnim moim projekcie mimo 34 rewizji(w tym 5 bezsensownych by obejść błąd SVN) błędy występowały kilkukrotnie.

Do popularnie wyskakujących błędów SVN u mnie należy 'SVN: out of data'. Co dziwniejsze operuje na file://, więc żadnych różnic czasowych nie powinno być. Jestem jedynym użytkownikiem tego repozytorium - zresztą wykonywałem przy tym svn update.

Bazy Danych, Programowanie (PHP, Java...) »

[06 stycznia, 2008 | 8 komentarzy | Poziom: 0 ]

Załóżmy, że mamy takie tabele:

  1. CREATE TABLE users (
  2.         id INTEGER PRIMARY KEY AUTOINCREMENT,
  3.         name VARCHAR(255) UNIQUE NOT NULL
  4. );
  5.  
  6. CREATE TABLE categories (
  7.         id INTEGER PRIMARY KEY AUTOINCREMENT,
  8.         name VARCHAR(255) UNIQUE NOT NULL
  9. );
  10.  
  11. CREATE TABLE posts (
  12.         id INTEGER PRIMARY KEY AUTOINCREMENT,
  13.         user_id INTEGER NOT NULL REFERENCES users(id),
  14.         category_id INTEGER NOT NULL REFERENCES categories(id),
  15.         title VARCHAR(255) UNIQUE NOT NULL,
  16.         visited INTEGER NOT NULL DEFAULT 0
  17. );

Teraz zadam proste pytanie: jak pobrać wszystkich użytkowników, którzy najpopularniejszy post był w danej kategori? Odpowiedź to chyba:

SELECT * FROM users WHERE id IN (SELECT user_id FROM posts WHERE (user_id, visited) IN (SELECT user_id, MAX(visited) FROM posts GROUP BY user_id) AND category_id = 1);
(z testów wynika, że jest to rozwiązanie poprawne)?

Zacznijmy od powiedzenia wprost, że:

  • Wyszukanie tego konkretnego kawałka SQL zajeło mi masę czasu.
  • Ktoś chcę ten kawałek ruszać? Będzię on kawałkiem niezrozumiałego, na pierwszy rzut oka, kodu.
  • W SQLite nie działa...

Czy ktoś wie, jak to zrobić prościej (zaczynam zastanawiać się nad widokami)? Bo w końcu nie wydaje się to tak niespodziewaną i skomplikowaną operacją...

Bazy Danych, Sieć (IP, TCP, ...) »

[16 września, 2007 | Dodaj komentarz | Poziom: 0 ]

Zmieniłem server DNS z binda na pdnsd. Pierwszym powodem było to, że serwer DNS spełnia u mnie głównie rolę proxy. Po drugie w bindzie nie da się w prosty sposób nadpisać tylko kilku rekordów (np. żeby xyz.domena i abc.domena były zdefiniowane lokalnie a domena i *.domena ściągana od ISP).

Dodatkowo okazało się, że pdnsd może zastąpić totd. To znaczy chyba mogłoby gdyby potrafił pracować w trybie IPv6 i IPv4 jednocześnie (z dokumentacji wynika, że albo jedno albo drugie). Na razie obęde się bez IPv6.

Bazy Danych, Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...), Sieć (IP, TCP, ...), Technologie W3C (XHTML, CSS...) »

[15 sierpnia, 2007 | 8 komentarzy | Poziom: 0 ]

RoR ma jeden, podstawowy problem - brak dokumentacji i ciągłe zmiany. Jest to bardzo potężny ale jednocześnie bardzo zgubny framework. Co gorsza duża część kursów pokazuje jak nie programować w Railsach

Czytaj dalej »

Bazy Danych, Bezpieczeństwo, Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Technologie W3C (XHTML, CSS...) »

[07 lipca, 2007 | 2 komentarze | Poziom: 0 ]

Chciałem zrobić check-in online. Lot był w British Airways a osoba której robiłem check-in miała nieszczęście mieć w nazwisko składające się z 21 znaków (maksymalnie może być 20). Próbowałem na różne sposoby - tylko litery (bez myślnika tak jak przysłali przez SMTP), tylko pierwszych 20 znaków. Nawet (nie wiem czy to legalne, ale nic mnie to nie obchodzi) zmieniłem firebugiem limit do 21 - ale wciąż pokazywało, że złe nazwisko. Oczywiście w końcu został przekroczony limit i zablokowało możliwość.

Oczywiście nigdzie nie jest napisane co w takiej sytłacji robić. Nigdzie nie znalazłem możliwości skontaktowania się w sprawie strony (tylko i wyłącznie w sprawie lotniska/lotu itp.). Linia telefoniczna, na którą chciałem zadzwonić, działa 9-17 od poniedziałku do piątku... też bym tak chciał - uczących się nie obowiązuje prawo pracy jeśli chodzi o naukę ;). W FAQ'u też nie ma odpowiedzi. Ktoś zna sposób na przyszłość?

Bazy Danych, Ideologie i wierzenia, Osobiste, szkoła etc., Poczta (POP3, IMAP, SMTP...), Polityka i Ekonomia, System (GNU, BSD, Windows...), Technologie W3C (XHTML, CSS...) »

[06 czerwca, 2007 | Dodaj komentarz | Poziom: 0 ]

Ostatnio zauważyłem, że znacznie chętniej zgłaszam błędy dla Gnome niż dla Gentoo. Moim zdaniem powód jest prosty - jeśli popełnie jakis błąd (na przykład wyśle duplikat) to jestem grzecznie upominany a nawet zachęcany do dalszego korzystania z Bugzill'i(Thanks for the bug report. This particular bug has already been reported into our bug tracking system, but please feel free to report any further bugs you find.) - ponieważ wygląda to przy wielu bugach identycznie sądzę, że jest to standardowy komunikat. Na Gentoo nie spotkałem się nigdy z takim komentarzem.

Czytaj dalej »

Bazy Danych, Osobiste, szkoła etc., Poczta (POP3, IMAP, SMTP...), Programowanie (Moje Projekty), Programowanie (PHP, Java...), Sieć (IP, TCP, ...), System (GNU, BSD, Windows...), Technologie W3C (XHTML, CSS...) »

[26 grudnia, 2006 | Dodaj komentarz | Poziom: 0 ]

Zaczeło się niewinnie - dlaczego nie mieć Google Calendar i Google Mail w Evolutionie 'natywnie (czyli nie przez POP3 i ro ical)? W chwili obecnej nie istnieje żadna biblioteka dla Google Calendara pod C. Instnieją natomiast pod Javę, C# i pythona.

Czytaj dalej »

Bazy Danych, Osobiste, szkoła etc., Sieć (IP, TCP, ...), System (GNU, BSD, Windows...) »

[06 grudnia, 2006 | 2 komentarze | Poziom: 0 ]

Miałem plik konfiguracyjny binda. Kłopot polegał na tym, że miałem część wirtualnych hostów (wszystkie prowadziły do serwera np. news, sql...). Mogłem wstawić coś takiego:

* IN A XXX.XXX.XXX.XXX * IN AAAA fe80:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx

Co jednak, gdy wpisałem nieistniejący host? Przekierowało do mnie (zamiast zgłaszać problemy z brakiem połączenia itp.) - wpis search, który normalnie ułatwia dość życie, teraz przeszkadzał

Czytaj dalej »

Bazy Danych, Bezpieczeństwo, Sieć (IP, TCP, ...), System (GNU, BSD, Windows...) »

[27 maja, 2006 | Dodaj komentarz | Poziom: 0 ]

Egzaminy nareszcie mam za sobą. Mam nadzieję, że będe miał więcej czasu, ale glowy nie dam.

Chciano ode mnie, żebym dodał możliwość cofnięcia wydruku (na razie działa przez ipp). Zapewne drukowanie przez sambę ma taką możliwość. Klopot w tym, że przy tamtych ustawieniach samba z chciały sie łączyć przez ppp0.

Po ustawieniu bind'a już znajdowały przwidłową drogę (przynajmniej klienci ;) ). Przy okazji bind potrzebował pewnego modułu (capset). Z powodu braku tego modulu nie chciał mi działać udev/ppp na SELinux :) .

Bazy Danych, Programowanie (PHP, Java...) »

[26 listopada, 2005 | 1 komentarz | Poziom: 0 ]

Ostatnio pracowałem trochę nad czymś w PHP + MySQL. Używałem dwóch zapytań:

Pisze przy bind_param, że za mało parametrów.

Próbuje store_result/free_result. Nic. Dodaje close reset i bóg wie co jeszcze. Nic.

Przepisuje kod i... działa. Właściwie nic nie zmieniłem poza...:

  1. +++ posts.php   2005-11-26 09:35:25.000000000 +0100
  2. --- posts.php.old       2005-11-25 22:32:45.000000000 +0100
  3. (...)
  4.                 $query = "SELECT title,text,datetime,nick FROM posts " .
  5.                          "LEFT JOIN authors ON authors.id=posts.author_id " .
  6.                          "WHERE posts.id=?";
  7. +               $stmt = $this->base->prepare($query)
  8. -               $stmt = $this->base->stmt_init();
  9. -               $stmt->prepare($query);

To dopiero jest niezaskakujące zachowywanie się klas PHP...