Spisuję, bo trzeci raz natrafiam na problem i trzeci raz zapominam jak go rozwiązać.

Problem wygląda następująco - po instalacji imagecache (+imageapi jako zależność) system nie potrafi wygenerować zdjęć przetworzonych przez moduł, w miejscu zdjęć otrzymujemy komunikat:

Error loading image: http://moj-adres/do/pliku.jpg

Trzy możliwe rozwiązania:

Czytaj dalej...

Nie rozumiem dlaczego sprzedawcy tak narzekają na cały system Płacę z Allegro twierdząc, że mogą wysłać towar kilka dni później ze względu na późniejszy przelew bankowy...

Wczoraj, szukając czegoś po aukcjach, znalazłem na jednej z nich dopisek "przy płatności Płacę z Allegro do godziny 13 wysyłamy w dniu zakupu". Z ciekawości wybrałem ich ofertę, zapłaciłem, po kilku minutach otrzymałem wiadomość, że sprzedawca już otrzymał pieniądze, a po godzinie potwierdzenie od sprzedawcy, że paczka zostanie wysłana w tym samym dniu.
Dziś paczka jest już u mnie.

Można szybko i sprawnie ? Można. W czym więc tkwi problem ? Czyżby tylko ode mnie pieniądze leciały tak szybko ?

Efekt można zobaczyć np. tutaj.

Youtube udostępnił tekstowy tryb odtwarzania filmów, nazwany TEXTp. Komunikuje także, że "Za każdą sekundę używania YouTube w trybie tekstowym, pomagasz nam zaoszczędzić 1 dolara na kosztach transferu danych".

A więc nawet wielkiego G. dopadł już kryzys...

Czytaj dalej...

Za pomocą tytułowej aplikacji można łatwo stworzyć swego rodzaju autoryzację treści - odwiedzający dodaje treść, która pojawia się dopiero po potwierdzeniu przez moderatora lub po potwierdzeniu autentyczności podanego adresu email.

Skorzystałem u siebie z tego rozwiązania, bo nie widzę sensu wyważać otwartych drzwi, tym bardziej, że aplikacja wygląda na dopracowaną, a, co równie ważne - dodanie aplikacji nie wymaga praktycznie żadnych zmian w kodzie - pomijając przypadek opisany poniżej.

Podczas dodawania aplikacji do odpowiednich formularzy napotkałem drobny problem, mianowicie potrzebowałem w formularzu nadpisać metodę save(), aby dodać nowe przetworzone dane do modelu. Problem polega na tym, że metoda save() zmodyfikowanego formularza (bo nie korzystamy z ModelForm, ale ichniejszego DeferredForm) wywoływana jest w momencie tworzenia zastępczego obiektu, a w dokumentacji nie ma wzmianki o tym, co zrobić w przypadku, kiedy chcę przetworzyć dane w momencie faktycznego dodawania obiektu do bazy.

Czytaj dalej...

Korzystając z Gita nie omieszkaj commitować najmniej co godzinę, w przeciwnym razie "przejęzyczenie" typu

cd katalog
vs
rm -rf katalog

może kosztować parę dni w plecy...

Moduł Rules dla Drupala

06 listopada, 2009

Kolejny znakomity musthave dla Drupala - moduł Rules!
Potrzebujesz skomplikowanych zasad podczas utworzenia nowej treści, wyświetlania powiadomień dla użytkownika po wystąpieniu zdarzenia, lub chociażby potwierdzenia adresu email w momencie dodania go do pola CCK ?
Ten moduł rozwiąże ten i większość innych problemów związanych z uwarunkowaniem akcji od działania usera i nie tylko jego.

Ja szukałem właśnie możliwości potwierdzenia adresu email podczas tworzenia zawartości przez niezalogowanego użytkownika. W ciągu ok. godziny od poznania modułu miałem gotową akcję, wszystko działa idealnie :).

Człowiek całe życie się uczy...

27 października, 2009

Dopiero teraz wpadłem na to, że w shellu Django działa uzupełnianie składni po tabulatorze...

Google Wave - mam i ja!

14 października, 2009

Widać, Gugiel wysłał dziś nową serię zaproszeń.. Jak narazie to ciężko się w tym połapać, ale widzę wygodną obsługę z samej klawiatury.

NKwatcher™

12 października, 2009

Weekendowe testy BeautifulSoup w połączeniu z Google App Engine i w końcu
z Naszą-Klasą:

NKwatcher™

Skrypt wyświetla 'na żywo' ostatnio dodane zdjęcia na Naszej Klasie. Ostatnio gdzieś pojawił się taki skrypt do Twittera czy innego mikrobloga, więc pomyślałem, że może ktoś zechce podobne ustrojstwo do naszego rodzimego potworka ;)

Skrypt pobiera zdjęcia w dopiero momencie zapytania i potem keszuje, zatem najwydajniej chodzi, kiedy ktoś przed Tobą już pobrał dane ;)

W miarę prosty sposób na boksy z linkami, jakie czasem widzi się na stronie głównej W okrojonej wersji wygląda to mniej-więcej tak:
Boksy z menu

Jak widać, box składa się z krótkiego hasła i jego rozwinięcia, myślałem więc o stworzeniu zwykłych drupalowych boksów na stronie, lecz trochę to nieintuicyjne - trzeba ręcznie edytować adresy linków oraz pamiętać o składni HTML.

Czytaj dalej...

Drupal 7 - co nowego ?

18 września, 2009

Ciekawa prezentacja nowości w Drupalu 7 do pobrania.

Najciekawsze z tego co zauważyłem:

  • CCK w core, ponadto możliwość dodawania pól CCK do praktycznie wszystkich typów informacji (segmentów, profili, taksonomii...); wszystkie pola są i18n-friendly,
  • Image API w core,
  • Jednoczesne zarządzanie publicznymi i prywatnymi plikami,
  • $content nie jest już stringiem lecz "renderowalną" listą, można ukrywać wybrane elementy lub użyć je później,

Dodatkowo sporo zmian w sposobie administracji, w warstwie DB, wprowadzono SimpleTesty i wiele innych ;)

W zasadzie od razu po publikacji można będzie złożyć podstawowy serwis bez oczekiwania na dostępność modułów - najważniejsze wszak już są. Pozostaje tylko czekać na wydanie...

Menedżer haseł

06 września, 2009

Za sprawą ostatniej afery z Wykopem wszyscy teraz grzmią na temat bezpiecznego przechowywania i tworzenia haseł. Pomyślałem, że warto podzielić się moim rozwiazaniem.

Ciekawe pomysły dotyczące zapamiętywania lub tworzenia haseł podali już m.in. Piotr Konieczny, kutek, czy zal; ja używam kombinacji kilku haseł, zależnie od stopnia "ważności" serwisu, lecz do samego zapamiętania wspomagam się menedżerem haseł. Rozwiązanie o tyle bezpieczne, że bazę haseł trzymam tylko na swoim komputerze i na prywatnym pendrive.

Podczas wyboru menedżera przetestowałem kilka rozwiązań, już nawet nie pamiętam nazw innych programów, ostatecznie jednak pozostałem przy najwygodniejszym dla mnie - KeePass. Aplikację wydano na większość popularnych systemów operacyjnych, mogę zatem korzystać z niej w domu na Linuksie, oraz w pracy, mając do dyspozycji system Windows, wystarczy, że mam pod ręką plik z bazą haseł.


Programik posiada obsługę wtyczek, możliwość importu i eksportu haseł, grupowania haseł według kategorii, dodawania własnych notatek do każdej pozycji, a także tzw. AutoType - możliwość uzupełniania hasła bezpośrednio do pól w przeglądarce jednym kliknięciem. Jest też dostępny w formie Portable - można go trzymać np. na pendrive oraz ma wbudowany generator haseł. To tylko wybrane ficzery, więcej można przeczytać na stronie domowej.

Sama baza z hasłami szyfrowana jest 256bitowym algorytmem AES/Rijndael lub Twofish, chroniona może być za pomocą hasła, pliku-klucza lub połączenia obu rozwiązań.

Moim zdaniem jest to najwygodniejszy sposób na gromadzenie wrażliwych danych, a na pewno jest bezpieczniejszy od zapamiętywania haseł w przeglądarce (nie mówię, że z tego nie korzystam:), czy zapisywania haseł w notatniku (też się zdarzało :)...

Django 1.1

29 lipca, 2009

Django 1.1 wydane! Do pobrania standardowo.

Pomimo, że korzystam z trunka, więc i tak mam wszystkie nowości, to w wolnej chwili trzeba będzie zajrzeć konkretniej co tam nowego...

Zenphoto Hint: IO Error

08 lipca, 2009

Podczas składania prostej galerii opartej o zenphoto natknąłem się na problem z wysyłaniem zdjęć domyślnie ustawionym sposobem (samo wysłanie pliku nie wymaga przeładowania strony). Otóż po wysłaniu każdego pliku galeria zwraca "wszystko mówiący" komunikat IO Error.

Problem okazał się nie być związany bezpośrednio z zenphoto, lecz ze skryptem wysyłania plików, którym to jest uploadify.

Czytaj dalej...

Zdarzyła mi się ostatnio potrzeba wyszukania w ORM Django obiektów o czasie utworzenia najbliższemu wybranej dacie. W czeluściach internetu nie znalazłem zbyt wiele sensownego na temat szukania najbliższych wartości, nie było też żadnej automagicznej funkcji wykonującej podobne zadanie, więc zdecydowałem się napisać do tego własny kawałek kodu SQL.

Jedynym sensownym rozwiązaniem, na jakie wpadłem jest użycie DATEDIFF jako "wyznacznika odległości" od poszukiwanej daty.

Czytaj dalej...

Dropbox confusion...

19 maja, 2009

Jak to się dzieje, że Dropbox potrafi zsynchronizować plik 20MB w ciągu kilku sekund ?

Zrobiłem 'eksperyment': wrzuciłem do folderu Dropboksa plik 20MB i po 5 sekundach był widoczny online. Myślałem, że może dosyła go powoli później, nie komunikując tego (ikonka w trayu ma fajkę, a nie kręcące strzałki), ale plik od razu jest do pobrania z sieci w całości. Wyłączyłem nawet demona Dropboksa, myśląc, że może jednak wysyła to ciągle, ale plik został pomyślnie pobrany.

Netlimiter też nie wykazuje żadnego ruchu- poza kilkoma kilobajtami w momencie, kiedy ikonka zasygnalizowała synchronizację.

Jak to jest? Może Dropbox posiada całą zawartość mojego dysku i tylko w chwili przerzucenia plików do magicznego katalogu odkrywa je online ? ;-)

Dzięki temu wpisowi nabrałem wkońcu motywacji do transferu domen. Domeny początkowo zarejestrowałem w az.pl skłoniony opinią i opisem w jakiejś gazecie (jak piszą w gazecie to oferta musi być opłacalna. ta...). Teraz wybrałem ovh.pl ze względu na cenę i możliwe późniejsze dobranie VPS'a do towarzystwa.

O dziwo operacja poszła bardzo sprawnie, wszystko załatwiłem w ciągu godziny, biorąc pod uwagę 15 minut szukania kodów authinfo (pod latarnią najciemniej). Czekam już tylko na potwierdzenie transferu domenki .net.

122 - 55 = 67 PLN w kieszeni rocznie za każdą domenę .pl.
60 - 25 = 35 PLN w kieszeni za domeny globalne.

Zaoszczędzone pieniążki pewnie pójdą na VPS. O ile nie znajdę lepszej oferty, to pewnie wybiorę najtańszą opcję w OVH, mam nadzieję, że wystarczy...

Przy obecnym (a zarazem pierwszym pisanym w django) projekcie dla klienta otrzymałem wytyczne, że wszelkie zmiany w określonych modelach powinny być archiwizowane w historii, aby później łatwo można było ustalić kto popełnił ewentualny błąd. Parę dni spędziłem na przeszukiwaniu niezbadanych czeluści internetu aby znaleźć odpowiednie rozwiązanie - bo po co pisać coś, co już prawdopodobnie zostało napisane?

Czytaj dalej...

Jako, że od pewnego czasu zgłębiam tajniki Django (najlepszą metodą - próba przeportowania aplikacji powstałej na Symfony), napotkałem ostatnio problem z aplikacją Auth i jej sposobem wyświetlania użytkownika w polach <select>.

Otóż domyślnie, metoda __unicode__ modułu User zwraca po prostu nazwę użytkownika (username). Pole to jest wymagane oraz unikalne dla każdego z użytkowników, więc zwrócony wynik zawsze będzie jednoznacznie kierował do wybranego usera.

Co jednak w przypadku większej liczby użytkowników? Ciężko będzie zapamiętać loginy wszystkich insteresujących nas osób. Można oczywiście wykorzystać dziedziczenie i stworzyć własną klasę nadpisując metodę, lecz to rozwiązanie zadziała tylko dla naszego własnego kodu - moduły aplikacji Auth nadal będą korzystały ze standardowych klas, więc np. wewnątrz administracji Jan Kowalski nadal pozostanie tylko uzytkownik-iem.

Czytaj dalej...

ClockingIT - spolszczenie

15 czerwca, 2008

Zainspirowany tym wpisem sprawdziłem o co biega w tym całym clockingIT i spodobał mi się pomysł.

Napisałem właśnie polskie tłumaczenie projektu, pierwsza wersja jest już dostępna w ustawieniach. I tutaj prośba do osób korzystających z aplikacji - potrzebne są testy tłumaczenia, trzeba wyszukać błędy lub brakujące słowa.

Jak do tej pory miałem problem z przetłumaczeniem kilku terminów:

Czytaj dalej...