Programowanie

Tematy związane, czasem bardzo luźno, z programowaniem w szerokim tego słowa znaczeniu. Posty o pythonie, bashu, javascripcie itp.

Usunięcie wszystkich zadań z kolejki celery

Data publikacji: 2014-11-18 | Programowanie

Kiedy wszystko zaczyna iść źle, taski szaleją, celery odmawia współpracy i ogółem nadchodzi armagedon, wtedy jest czas na moment refleksji - trzeba przeczyścić kolejkę tasków.

więcej...


Kopiowanie obiektów modeli w Django

Data publikacji: 2014-11-12 | Programowanie

Ostatnio dopadła mnie potrzeba by skopiować obiekt modelu w Django. Zwykłe przepisanie atrybutów do nowej instancji nie wchodziło w rachubę, bo jest ich po prostu zbyt dużo.

więcej...


Django - przejście w szablonach z MEDIA_URL na templatetag static i vim

Data publikacji: 2014-11-04 | Programowanie
Od wersji 1.3 Django stara się wprowadzić nową metodę ładowania plików statycznych w szablonach. Przestajemy używać {{ MEDIA_URL }} bądź {{ STATIC_URL }} i przechodzimy na templatetag {% static 'ścieżka do pliku statycznego' %}. Łatwiej powiedzieć, niż zrobić - szablonów zatrzęsienie, w każdym jakieś pliki statyczne, a trochę strach przemielić całość za jednym zamachem bez sprawdzenia poprawności.

więcej...


Czy i jak można zmienić nazwę gałęzi w mercurialu

Data publikacji: 2014-09-19 | Programowanie
Ok, czyli założyliśmy brancha, poszły jakieś commity, aż tu nagle zdajemy sobie sprawę, że zamiast version6.5 mamy branch o nazwie varsion6.5. Co robić w takim wypadku (bo nie wygląda to zbyt estetycznie) napiszę w tym poście.

więcej...


Dzień programisty 2014

Data publikacji: 2014-09-12 | Programowanie

Dziś 256 dzień roku, więc wypada wszystkim programistom złożyć najlepsze życzenia.

więcej...


Tablica ASCII

Data publikacji: 2014-09-04 | Programowanie
Post nieodkrywczy, wtórny i nie niosący za sobą żadnej treści oprócz jednej - kodów ASCII. Wrzuciłem tabelkę, żeby mieć pod ręką i nie wyszukiwać za każdym razem, gdy jest mi potrzebna.

więcej...


Form.field.value w Django 1.2 i niższych

Data publikacji: 2014-08-12 | Programowanie
Django 1.3 wprowadziło bardzo ciekawą metodę pola formularza o nazwie value. Jej przydatność można docenić, kiedy ręcznie budujemy skomplikowany formularz i zachodzi potrzeba użycia składni:
<input type="text" name="{{ form.field.name }}" value="{{ form.field.value }}" />
W tym poście pokażę, jak zaimplementować tą metodę w Django wcześniejszym niż 1.3.

więcej...


Użycie vima jako edytora hex

Data publikacji: 2014-08-04 | Programowanie
Czasami zachodzi potrzeba, żeby podejrzeć lub wyedytować dany plik w trybie edytora hex. Komenda do tego nie jest zbyt oczywista, więc postanowiłem się nią podzielić.

więcej...


Automatyczne pobieranie presetów ze strony Line6

Data publikacji: 2014-06-30 | Programowanie
Wszyscy muzycy i jednocześnie posiadacze cyfrowych procesorów dźwięku firmy Line6 mają możliwość pobierania wybranych presetów ze strony producenta. W mgnieniu oka można uzyskać brzmienie swojego ulubionego basisty/gitarzysty. Jednak pobieranie ustawień jest męczące - trzeba założyć konto, szukać, ściągać wybrane presety, zmieniać strony itp. Oto rozwiązanie pozwalające zautomatyzować ten proces i ściągnąć za jednym zamachem wszystkie pliki dla danej kategorii urządzeń.

więcej...


MultiValueDictKeyError w Django 1.6

Data publikacji: 2014-06-22 | Programowanie
Przy migracji na nowsze Django (w moim przypadku 1.6.5) trafiłem na problem MultiValueDictKeyError przy zapisie obiektu w panelu administracyjnym. Problem wynika z nadpisania szablonów stacked inline lub tabular inline w adminie.

więcej...


Formatowanie daty w javascripcie do użytku w MySQL

Data publikacji: 2014-06-01 | Programowanie
Na temat daty w javascripcie napisać można jeszcze więcej złego, niż zostało napisane do tej pory :). Ale ten post nie będzie traktował o tym. Dziś pokażę jak uzupełnić dane zerami tak, by pasowały do np. zapytań MySQL.

więcej...


Ręczny JOIN w Django do tabel many-to-many

Data publikacji: 2014-05-28 | Programowanie
Chwila pracy z ORM Django i każdy odczuwa potęgę takiego rozwiązania. Jednak nie zawsze wszystko da się załatwić przez proste filter i exclude. A zdarzają się takie sytuacje tym częściej, im lepiej znamy framework i im bardziej chcemy go zmusić do jeszcze wydajniejszej pracy.

więcej...


Fraktal Mandelbrota w pythonie

Data publikacji: 2014-05-20 | Programowanie

Jak trudno jest pisać zaciemniony kod w pythonie wie każdy, kto chociaż trochę programował w tym języku. Wymuszanie wcięć, brak klamer otaczających funkcje, pętle i instrukcje warunkowe oraz przejrzysta składnia zachęcają do pisania kodu czystego i łatwego w czytaniu.

Jednak istnieją również w pythonie sposoby na tworzenie kodu bardzo trudnego do późniejszej analizy.

więcej...


Przeładowanie konfiguracji vima bez wychodzenia z edytora

Data publikacji: 2014-05-13 | Programowanie
Dla ludzi, którzy często podkręcają konfigurację vima bardzo ważne jest, żeby od razu widzieć zmiany wprowadzane w plikach konfiguracyjnych. Niestety zwyczajowo kroki prowadzące do zastosowania zmian wyglądają mniej więcej tak:

więcej...


Polskie znaki w czcionkach od Google

Data publikacji: 2014-05-06 | Programowanie
Problem występuje przy standardowym ładowaniu czcionek z Google - polskie znaki zastępowane są domyślną czcionką, przez co wyróżniają się w tekście na niekorzyść estetyki. Jak to poprawić? Tak wyglądają standardowe reguły ładowania czcionek: Dla html
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700' rel='stylesheet' type='text/css' />
lub analogicznie dla css
@import url(//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700);

więcej...


Niewidoczne napisy Cufon w IE9

Data publikacji: 2014-04-26 | Programowanie
Nie wiedziałem, że kiedykolwiek przyjdzie mi pisać o zmuszaniu Internet Explorera do normalnej pracy. A tu proszę - nadszedł sądny dzień i dziś podpowiem jak zmusić Cufon do działania z IE9 wtedy, gdy napisy uzyskane przy użyciu Cufon są niewidoczne.

więcej...


Vim i wzorce non-greedy

Data publikacji: 2014-04-11 | Programowanie
Załóżmy, że mamy spory plik *.html z dużą ilością tagów typu:
<span style="font-size:small;">Jakiś tekst</span>
Jak w łatwy sposób usunąć te tagi html? Przy pomocy regex możemy zbudować takie dwa wyrażenia:
/<\/span>/
/<span.*?>/
Pierwszego użyjemy do usunięcia tagu zamykającego, drugiego do tagu otwierającego. Użyjemy wzorca non-greedy (*?), który pozwoli nam usunąć tag do pierwszego napotkanego znaku >.

więcej...


Co zrobić, gdy Django wykonuje funkcje podpięte pod sygnały więcej niż raz

Data publikacji: 2013-10-22 | Programowanie
Przydarzyła mi się ostatnio następująca sytuacja: mając prosty model, podpiąłem do niego prostą funkcję przez sygnał post_save. Ku mojemu zdziwieniu, po zapisaniu modelu sygnał post_save został wysłany poprawnie, natomiast funkcja odbierająca została wykonana dwa razy. Po bezowocnych poszukiwaniach drugiego miejsca, gdzie mogła być podpięta ponownie, byłem bliski zrezygnowania z użycia sygnału. Jednak w końcu udało mi się znaleźć rozwiązanie:

więcej...


Ograniczenie ilości wyborów MultipleChoiceField w formularzach Django

Data publikacji: 2013-09-25 | Programowanie
Czasem zachodzi potrzeba ograniczenia ilości wyborów w formularzu dla pól many-to-many. Np. chcemy ograniczyć ilość kategorii, do których ma być dodany artykuł. W Django da się to zrobić w łatwy i elegancki sposób.

więcej...


Walidacja wymogów haseł przy pomocy wyrażeń regularnych

Data publikacji: 2013-08-20 | Programowanie
Pisałem już o silnych hasłach i metodach ich generowania. Niestety nie każdy z własnej woli chętnie będzie wymyślał takie hasła. Możemy takiej osobie pomóc w podjęciu decyzji przez odpowiednią walidację stopnia złożoności hasła, a pomogą nam przy tym wyrażenia regularne.

więcej...


3

IT w obrazkach: