Szukałem ostatnio promocji na domeny i oto co mi się udało znaleźć:
- http://www.godaddy.com - .info za 1,19$
- http://www.resellerclub.com - .mobi za 5,88$ i .us za 4,99$
Listę aktywnych kuponów do GoDaddy mozna znaleźć pod tym adresem: http://www.cheapdomainr.com/tag/godaddy-promo-code
FireFox’owi zdarza się, że nie zwalnia pamięci, gdy powinien (szczególnie wersje 2.x). Sprawia to, że czasami po godzinie potrafi zająć nawet 150MB i zacząć działać bardzo wolno. Oto proste rozwiązanie tego problemu :
- w pasku adresu wpisujemy: about:config
- klikamy prawym, dodaj ustawienie typu ->wartość logiczna
- wpisujemy: config.trim_on_minimize
- wybieramy wartość: True
Teraz już tylko restart FF. Minus tej metody jest taki, że Firefox może trochę dłużej wstawać po zminimalizowaniu.
Przytrafiło się ostatnio wypełnić przygotowany przez klienta formularz PDF. Ot, umieścić na gotowej formie klucz identyfikacyjny, dać odwiedzającemu PDFa, który to może go wypełnić i odesłać. Formularz jest identyfikowany bardzo łatwo dzięki rzeczonemu kluczowi. Pojawił się jednak jeden zasadniczy problem - jak? Nie chcieliśmy kupować rozwiązań komercyjnych, a poszukiwania w internecie na niewiele się zdały. Rozwiązań kilka znaleźliśmy, ale żadne nie chciało działać tak “out-of-box”. Stanęło w końcu na pdf toolkit (pdftk) i ręcznym generowaniu plików fdf (plików z informacją o zawartości pól w” formularzu PDF). Miało być łatwo i przyjemnie, a przynajmniej tak się wstępnie zapowiadało. Cóż, nie do końca. Łatwo znaleźć coś, co zwie się “forge_fdf” - biblioteka w PHP do tworzenia rzeczonych plików fdf. Jej port w Pythonie też łatwo via google wyklikać. Tu jest jednak jeden, tyci problemik - sportowana biblioteka nie działa. Czemu? Bo gdzieś po drodze zniknęły jej istotne fragmenty. Zmuszeni więc byliśmy przygotować wersję działającą (a przynajmniej spełniającą nasze wymagania):
forge_fdf
Continue reading ‘Wypełnianie formularzy PDF - forge_fdf w pythonie’
Ostatnio klient zażyczył sobie logowania wszystkich zmian w bazie danych, co wprawiło nas w lekkie osłupienie. Ale zgodnie z zasadą klient nasz pan, zaczęliśmy wgryzać się w temat. Wstępnie kombinowaliśmy z własną bilioteką do łączenia sie z bazą, później z pisaniem rozszerzenia do Postgresa. Wszystko to było jednak zbyt czasochłonne, by można było sobie na to pozwolić. I przy okazji nauczka na przyszłość - zawsze dokładnie googlaj. Przypadkiem bowiem jeden z nas trafił na bibliotekę tablelog na PgFoundry. Cholerstwo jest prostym rozszerzeniem dla PostgreSQLa, które działając jako trigger dokładnie loguje wszelkie zmiany. Nie kto, gdzie, jak, ale z czego, na co, kiedy oraz jaki to był rodzaj zmiany. Poniżej krótki opis instalacji.
Continue reading ‘Logowanie zmian w PostgreSQL’
Post poniższy już się kiedyś ukazał na ówczesnym blogu Pythonized, jednak nie udało się go odzyskać - w wyniku jakiegoś błędu w WordPressie post został zniszczony przez jakiegoś spammera. O samą instalacje wciąż mnie znajomi pytają, zdecydowałem się więc przywrócić “poradnik”.
Continue reading ‘Instalacja Pylons pod Windows’
Od jakiegos czasu Google intensywnie walczy z kupowaniem/sprzedawaniem linkow. Ostatnio przejawilo sie to nowa kara “-60 penalty”. Jak sama nazwa wskazuje, nasza strona leci na okolo 60 pozycje, a dostaje sie ja za podejrzenie inwestowania kasy w sponsorowanie theme’ow do wordpressa (linki w stopkach), theme’ow do stron proxy i innych podejrzanych wynalzkow. Matt Cutts na Google Groups radzi, by w sytuacji wpadniecia w ten filtr skontaktowac sie ze wszystkimi webmasterami blogow, z ktorych mamy linki (lol) a nastepnie zglosic “reinclusion request” w google webmaster central . Zauwazylem rowniez, ze google wieksza wage zaczelo przywiazywac do nazwy domeny. Coz, ciekawe jakie rewolucje czekaja nas z kolejnym updatem…
Ostatnio musiałem skorzystać z możliwości “nieograniczonej” generacji ciągów pseudolosowych. W Linuxie sprawa jest prosta - otwieramy /dev/random i cytamy zeń wymaganą licznę znaków. Gorzej z tym pod Windowsem, który mimo, że podobne wirtualne urządzenie posiada, to nie umożliwia adekwatnego skorzystania z niego. Efekt podobny można jednak uzyskać - np. przez wywołanie, np przez win32com, funkcji CryptGenRandom z Advapi32.dll (msdn). Lub jeszcze prościej - skorzystać z random.SystemRandom. Z tym ostatnim jest jednak jeden problem - generuje n-bitowe liczby długie. Poniżej przykładowe zastosowanie z jednoczesną konwersją na ciąg znaków (coby lepiej /dev/random emulować ;)):
|
1
2
3
4
5
6
7
8
9
10
11
12
| nbit = 1024
r = random.SystemRandom().getrandbits(nbit)
devrandom = ""
char = 0
for c in xrange(1,nbit+1):
char |= r & 1
r >>= 1
if c % 8 == 0:
devrandom += chr(char)
char = 0
else:
char <<= 1 |
Po zakończeniu pętli w zmiennej devrandom znajdzie się (nbit/8) bajtowy ciąg losowych znaków.
Najświeższe komentarze