Dodanie unikalnej kolumny do istniejącej tabeli w Django

Czasami zachodzi potrzeba dodania nowej, unikalnej kolumny do istniejącego już modelu w Django. Niestety jeśli w tabelce istnieją już wpisy, otrzymamy błąd. W takim przypadku, dodanie nowej kolumny należy podzielić na 3 kroki. Stworzenie kolumny bez indeksu unikalnego, wygenerowanie unikalnych wartości, dodanie indeksu. Możemy to zrobić używając standardowego mechanizmu migracji, który znajduje się w Django. Zacznijmy od przykładowego kodu:

W przykładzie do modelu Event dodajemy kolumnę key która zawiera unikalny ciąg znaków. W pierwszym kroku tworzymy nową kolumnę. W kroku 2 przekazujemy do mechanizmu funkcje Pythona. Jako parametry otrzyma ona obiekty za pomocą których będzie mogła wykonywać operacje na bazie danych. W przykładowej funkcji wyciągamy wszystkie wiersze które znajdują się w bazie. Przechodzimy pojedynczo przez każdy element, generujemy losowy ciąg znaków i zapisujemy zmiany w bazie. Można przyjąć dowolną strategię generowania unikalnej wartości, dla liczb może to być po prostu kolejny numer. Gdy już mamy unikalne wartości w każdym wierszu tabelki, możemy na nią nałożyć indeks unikalny (krok 3).

Raspberry PI – wygaszanie ekranu

Ostatnio wpadł mi w ręce nowy Raspberry PI 3. Miał on być podpięty pod telewizor i prezentować dashboard ze statystykami, czyli cały czas miały się wyświetlać różne kolorowe wykresy. Wszystko było w porządku do momentu gdy ekran zrobił się cały czarny. Ruszenie myszką wybudziło go i znów zaczął prezentować wykresy.

Aby zapobiec wygaszaniu ekranu trzeba zmodyfikować kilka plików. Internet proponuje kilka rozwiązań, jednak następujące zmiany zadziałały w moim przypadku:

W pliku /etc/kbd/config dodajemy linijki:

W pliku /etc/xdg/lxsession/LXDE/autostart oraz /etc/X11/xinit/xinitrc

W pliku /etc/lightdm/lightdm.conf odszukujemy wpis #xserver-command= usuwamy # z początku linii i zmieniamy go następująco:

Po restarcie, ekran już nie powinien się sam wygaszać.

Pakowanie i rozpakowywanie plików z poziomu konsoli

Tworzenie archiwów:
tar cf nazwa_archiwum.tar katalog/
tar czf nazwa_archiwum.tar.gz katalog/
tar cjf nazwa_archiwum.tar.bz2 katalog/

Wypakowywanie archiwów:
tar xf nazwa_archiwum.tar
tar xzf nazwa_archiwum.tar.gz
tar xjf nazwa_archiwum.tar.bz2

Dodanie v w parametrach włącza verbose mode czyli wypisuje jakie pliki pakuje/wypakowuje:
tar cvf nazwa_archiwum.tar katalog/

Zliczanie facebookowych like (lubię to) przy pomocy PHP

Facebook udostępnia bardzo prosty mechanizm pozwalający nam pobrać liczbę facebookowych “lajków” dla naszej strony. Przy użyciu PHP można to zrobić w kilku linijkach. Przykładowy kod:

Dzięki temu możemy wyświetlić na stronie ile osób przyznało like lub udostępniło naszą stronę. Na tej podstawie można też wykonać jakiś prosty system ocen lub głosowanie, zabezpieczone przed wielokrotnym oddawaniem głosów.