Hands free python setup on windows

Windows does not have package manager. Not sure why is that since Windows Marketplace is here since 2004… but that’s another story. So for silent/unattended python install you have to stick to scripting a little bit, but thanks to Powershell it’s quite simple.

(new-object System.Net.WebClient).DownloadFile("https://www.python.org/ftp/python/2.7.6/python-2.7.6.msi", "$pwdpython-2.7.6.msi"); msiexec /i python-2.7.6.msi TARGETDIR=C:Python27 /qn ALLUSERS=1
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:Python27;C:Python27Scripts", "User")
(new-object System.Net.WebClient).DownloadFile("https://raw.github.com/pypa/pip/master/contrib/get-pip.py", "$pwdget-pip.py"); C:Python27python.exe get-pip.py virtualenv

Remove /qn ALLUSERS=1 to show installer UI.

(new-object System.Net.WebClient).DownloadFile("https://www.python.org/ftp/python/2.7.6/python-2.7.6.msi", "$pwdpython-2.7.6.msi"); msiexec /i python-2.7.6.msi TARGETDIR=C:Python27
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:Python27;C:Python27Scripts", "User")
(new-object System.Net.WebClient).DownloadFile("https://raw.github.com/pypa/pip/master/contrib/get-pip.py", "$pwdget-pip.py"); C:Python27python.exe get-pip.py virtualenv

Debugging Jinja2 templates in Google App Engine

Jinja2 needs some python modules that are forbidden in the python sandbox provided by Google App Engine. Fortunately its fairly easy to white list them in the SDK local development server — currently there is no workaround for production.

PRODUCTION = not os.environ.get('SERVER_SOFTWARE', '').startswith('Dev')
if not PRODUCTION:
    # enable jinja2 debugging info in GAE SDK
    from google.appengine.tools.devappserver2.python import sandbox
    sandbox._WHITE_LIST_C_MODULES += ['_ctypes', 'gestalt']

The original workaround is not working on the new development server aka devappserver2.

Popup z informacją o ciasteczkach

Nowelizacja ustawy z dnia 16 lipca 2004 r. Prawo telekomunikacyjne w art. 173 wprowadza obowiązek informowania o przechowywaniu informacji na “urządzeniu końcowym” użytkownika, o ile nie jest to wymagane do świadczenia usług.

IMO trzeba jeszcze poczekać na pierwsze wyroki by np. czy o Google Analytics już trzeba informować, czy można je uznać za ciasteczka techniczne. Niemniej jednak jeśli chcemy dmuchać na zimne to można stosunkowo łatwo wrzucić taki mało inwazyjny popup.

Zapraszam do grzebania i dostosowania do własnych potrzeb:
http://jsfiddle.net/WDmqR/

…a poniżej art. który jest powodem zamieszania.

1. Przechowywanie informacji lub uzyskiwanie dostępu do informacji już przechowywanej w telekomunikacyjnym urządzeniu końcowym abonenta lub użytkownika końcowego jest dozwolone, pod warunkiem że:

1) abonent lub użytkownik końcowy zostanie uprzednio bezpośrednio poinformowany w sposób jednoznaczny, łatwy i zrozumiały, o:

a) celu przechowywania i uzyskiwania dostępu do tej informacji,
b) możliwości określenia przez niego warunków przechowywania lub uzyskiwania dostępu do tej informacji za pomocą ustawień oprogramowania zainstalowanego w wykorzystywanym przez niego telekomunikacyjnym urządzeniu końcowym lub konfiguracji usługi;

2) abonent lub użytkownik końcowy, po otrzymaniu informacji, o których mowa w pkt 1, wyrazi na to zgodę;
3) przechowywana informacja lub uzyskiwanie do niej dostępu nie powoduje zmian konfiguracyjnych w telekomunikacyjnym urządzeniu końcowym abonenta lub użytkownika końcowego i oprogramowaniu zainstalowanym w tym urządzeniu.

2. Abonent lub użytkownik końcowy może wyrazić zgodę, o której mowa w ust. 1 pkt 2, za pomocą ustawień oprogramowania zainstalowanego w wykorzystywanym przez niego telekomunikacyjnym urządzeniu końcowym lub konfiguracji usługi.

3. Warunków, o których mowa w ust. 1, nie stosuje się, jeżeli przechowywanie lub uzyskanie dostępu do informacji, o której mowa w ust. 1, jest konieczne do:

1) wykonania transmisji komunikatu za pośrednictwem publicznej sieci telekomunikacyjnej;
2) dostarczania usługi telekomunikacyjnej lub usługi świadczonej drogą elektroniczną, żądanej przez abonenta lub użytkownika końcowego.

4. Podmioty świadczące usługi telekomunikacyjne lub usługi drogą elektroniczną mogą instalować oprogramowanie w telekomunikacyjnym urządzeniu końcowym abonenta lub użytkownika końcowego przeznaczonym do korzystania z tych usług lub korzystać z tego oprogramowania, pod warunkiem że abonent lub użytkownik końcowy:

1) przed instalacją oprogramowania zostanie poinformowany bezpośrednio, w sposób jednoznaczny, łatwy i zrozumiały, o celu, w jakim zostanie zainstalowane oprogramowanie, oraz sposobach korzystania przez podmiot świadczący usługi z tego oprogramowania;
2) zostanie poinformowany bezpośrednio, w sposób jednoznaczny, łatwy i zrozumiały, o sposobie usunięcia oprogramowania z telekomunikacyjnego urządzenia końcowego użytkownika lub abonenta;
3) przed instalacją oprogramowania wyrazi zgodę na jego instalację i używanie.

Optymalizacja AdWords

2013-02-07 11-06-24

W AdWords płacisz za kliknięcie w reklamę, cenę tego kliknięcia ustalasz Ty — administrator kampanii reklamowej AdWords. Ustalając cenę kliknięcia bierzesz udział w aukcji dotyczącej wyświetlenia reklamy dla wybranego słowa kluczowego.

Dlatego ustalenie niskiej ceny za kliknięcie gwarantuje, że zapłacisz mało jednak nie gwarantuje, że Google wyświetli Twoją reklamę, bo być może inny administrator ustalił wyższą cenę kliknięcia i tym samym Ciebie przelicytuje.

To są podstawy konfiguracji kampanii AdWords.

Zwiększanie szansy na wygraną w licytacji bez podnoszenia ceny

Google podczas wybierania zwycięzcy aukcji na słowie kluczowym, prócz ceny, kieruje się także jakością strony docelowej i jej dopasowania do słowa kluczowego. Okazuje się, że optymalizacja pod kątem wyszukiwarek (SEO) przyczynia się także do zmniejszenia kosztów reklam. Dzięki temu możemy wygrać licytację na słowie kluczowym nawet oferując mniejszą cenę za kliknięcie niż inne stosunkowo gorsze strony.

2 grosze za kliknięcie

Prowadzę edziennik i bez wykorzystania pozycjonowania oferowanego przez rożnego rodzaju usługodawców (które większości jest black hat) udało mi się zejść z ceną za kliknięcie do 2 groszy.

Gdy dużo ruchu przychodzącego generuje AdWords to warto optymalizować swoją stronę bo dzięki temu bez ponoszenia dodatkowych kosztów w tym samym budżecie reklamowym możemy mieć większy ruch. Oczywiste, prawda?

Optymalizujemy!

Podstawy, w skrócie:

  • Strona musi być związana z tym czego dotyczą słowa kluczowe.
  • Musi być czytelna.
  • Musi być atrakcyjna.
  • Powinna mieć linki przychodzące (najlepiej o treści słów kluczowych lub zbliżonych)
  • ze stron, które same dotyczącą słów kluczowych.
  • Twój serwis powinien mieć w treści linki wewnętrzne, które pozwolą na łatwe poruszanie się odwiedzającym.
  • Tytuły stron powinny być czytelne i nie zawierać śmieci.

Optymalizację można to zrobić samemu, można korzystając z profesjonalnych usług. Jednak przy wykorzystaniu usług firm zewnętrznych należy się pytać jak zamierzają pozycjonować Twoją stronę.

Kupujemy usługi

W przy przypadku SEO trudno wciskać kit, ale pozycjonowanie zwykle jest obłożone „tajemnicą zawodową”, a pod przykrywką tajemnicy ci „profesjonaliści” zwyczajnie spamują. Takie pozycjonowanie nie jest trwałe, bo spam blogi i farmy linków mogą zostać usunięte lub oflagowane przez Google. Dlatego musimy ciągle płacić za takie pozycjonowanie (jeśli przestaniemy to nasz usługodawca skasuje spamblog/farmę linków) i ryzykujemy, że Google nas ukarze za niedozwolone praktyki, usuwając w wyników wyszukiwania w ogóle.

Jak kupujemy usługi domagajmy się kompleksowych raportów co zostało zrobione i gwarancji, że nasza pozycja w wyszukiwarce nie spadnie gwałtownie po tym jak przestaniemy płacić za usługi. Pozycjonowanie nie jest czymś co trzeba robić „ciągle”. Pozycję w wyszukiwarkach się buduje, a potem trzeba ją tylko nieznacznie pielęgnować — nie uzasadnia to płacenia po kilkaset złotych miesięcznie za to, że jesteśmy już na pierwszej stronie wyników Google.

Samodzielnie

Poczytaj o SEO i zoptymalizuj swój serwis, a następnie dbaj o to by inne poważne serwisy coś o Tobie napisały oczywiśćie linkując do Twoich stron 🙂

Default tuple values

In python you can assign values to a number of variables using tuple unpacking:

foo, bar, baz = some_3_values_tuple

But if the tuple does not have an exact number of values the assignment will fail with ValueError:

>>> some_tuple = 1,2
>>> foo, bar, baz = some_tuple
Traceback (most recent call last):
File "", line 1, in
ValueError: need more than 2 values to unpack

In that case fill up missing values with None:

>>> foo, bar, baz = some_tuple + (None,) * (3 - len(some_tuple))

PS: I like one-liners that can supplement otherwise needed if-elif-else logic 🙂

Muffiny z malinami i białą czekoladą

Muffinki z malinami i białą czekoladą
Autor (źródełko): Ainsley Harriott
Kategoria: Ciasta.
Składniki:
300 gram mąki pszennej
2 łyżeczki proszku do pieczenia
150 gram ciemnego cukru
1 jajko
zapach waniliowy
225 ml mleka
50 gram stopionego masła
100 gram malin (świeżych, ale ja dałam mrożone prosto z zamrażalnika)
75 gram białej czekolady w kawałkach

mąka+proszek+cukier–wymieszać.
jajko+zapach+mleko+masło–wymieszać.
Składniki suche i mokre połączyć, dodać maliny i czekoladę, delikatnie
wymieszać.
Piec k. 30 minut w 200 st.

http://forum.gazeta.pl/forum/72,2.html?f=77&w=17228206&a=17438292

Embedded webapp mini profiler

If your’re ASP.NET MVC developer you should already know about MVC Mini Profiler released by Stack Overflow, if you don’t, go get it now.

Google App Engine developers have the appstats, a tool that does similar things but requires you to explicitly look for profiling info.

Now GAE has mini-profiler to — this is old news apparently 😉 — an appstats wrapper mini app that you can embed in your web app, check out Google App Engine Mini Profiler and have stats in your face, all the time.

Tak powinno być w każdej firmie

To są w skrócie moje przemyślenia w odpowiedzi na to co napisał Maciej Aniserowicz.

Po pierwsze rodzina. Mam małego syna, chcę uczestniczyć w jego rozwoju — czynnie — i dlatego odmówiłbym, gdyby mi ktoś zaoferował kontrakt za który mógłbym kupić mieszkanie, ale musiałbym spędzić w na 6 miesięcy w Chinach — trudno wracać stamtąd na weekendy ;).

Sorry, ale pierwsze kroki — które stawiał przy mnie — czy inne jego odkrycia są warte więcej od nowego mieszkania. Arogancja? Nie, zdrowy system wartości! ;P

Praca zdalna ma dla mnie ogromną wartość, nie tracę czasu na dojazdy i mam więcej czasu na do spędzania z synem.

Warsztat pracy. Od kiedy miałem wpływ na to na jakim sprzęcie i w jakich warunkach pracuje mój zespół, dbałem o to by komputer nie spowalniał naszej pracy i miał wystarczająco dużo pikseli by widzieć to co mamy widzieć. A biurko + krzesło nie powodowało u nas bólu pleców.

Przerażają mnie corpofabryki, w których ludzie ślęczą nad latopikami, tłukąc się łokciami z kolegami “konsultantami” i siedzą na rozwalających się krzesłach z makro.

Godziny pracy, testy jednostkowe, rozwój według własnych upodobań. Wszystko to składa się na jakość pracy.

PS. IMO podstawą warsztatu każdego programisty są:

  • Do pracy w drodze: porządny laptop (polecam ThinkPad T520) – z dodatkowym RAMem i dyskiem SSD
  • Do pracy na co dzień: szybki desktop z masą RAMu i 3 dużymi monitorami (np. 24″ 1920×1200)
  • Do siedzenia: dobre ergonomiczne krzesło (polecam Humanscale Freedom)
    Humanscale Freedom

e-Deklaracje bez instalacji dodatku Flash Player

Na stronach MF umożliwiających instalację programu e-Deklaracje czytamy, że do instalacji on-line niezbędna jest wtyczka Flash Player.

Prawda, że do instalacji on-line Flash Player jest niezbędny, ale nie jest to wymóg by w ogóle zainstalować e-Deklaracje. Można to zrobić bez Flash Player’a, po staroświecku pobierając pliki i instalując off-line:

  1. Instalujemy Adobe Air:
    http://get.adobe.com/air/
  2. Instalujemy e-Deklaracje:
    http://e-deklaracje.gov.pl/files/dopobrania/e-dek/app/e-DeklaracjeDesktop.air